Merge "Declare visibility on class properties of CdbPHP.php"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sat, 10 May 2014 07:59:51 +0000 (07:59 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 10 May 2014 07:59:51 +0000 (07:59 +0000)
227 files changed:
RELEASE-NOTES-1.23
RELEASE-NOTES-1.24
includes/Collation.php
includes/DefaultSettings.php
includes/Linker.php
includes/Namespace.php
includes/Setup.php
includes/Title.php
includes/User.php
includes/api/ApiQuerySiteinfo.php
includes/api/ApiWatch.php
includes/content/CssContent.php
includes/content/JavaScriptContent.php
includes/content/TextContent.php
includes/filerepo/file/File.php
includes/filerepo/file/ForeignDBFile.php
includes/installer/OracleUpdater.php
includes/installer/i18n/pl.json
includes/installer/i18n/ro.json
includes/installer/i18n/zh-hant.json
includes/media/Bitmap.php
includes/media/Jpeg.php
includes/parser/Parser.php
includes/rcfeed/MachineReadableRCFeedFormatter.php
includes/resourceloader/ResourceLoaderModule.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/revisiondelete/RevisionDelete.php
includes/site/MediaWikiSite.php
includes/site/Site.php
includes/site/SiteList.php
includes/site/SiteSQLStore.php
includes/specialpage/ChangesListSpecialPage.php
includes/specials/SpecialActiveusers.php
includes/specials/SpecialBlock.php
includes/specials/SpecialBlockList.php
includes/specials/SpecialBooksources.php
includes/specials/SpecialBrokenRedirects.php
includes/specials/SpecialCachedPage.php
includes/specials/SpecialChangeEmail.php
includes/specials/SpecialChangePassword.php
includes/specials/SpecialContributions.php
includes/specials/SpecialCreateAccount.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialUserlogin.php
includes/templates/NoLocalSettings.php
includes/templates/Usercreate.php
includes/templates/Userlogin.php
includes/upload/UploadBase.php
includes/upload/UploadFromChunks.php
includes/upload/UploadFromFile.php
includes/upload/UploadFromStash.php
includes/upload/UploadFromUrl.php
includes/upload/UploadStash.php
languages/LanguageConverter.php
languages/i18n/af.json
languages/i18n/am.json
languages/i18n/an.json
languages/i18n/ar.json
languages/i18n/arz.json
languages/i18n/as.json
languages/i18n/ast.json
languages/i18n/avk.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/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/co.json
languages/i18n/crh-cyrl.json
languages/i18n/crh-latn.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/egl.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/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/ga.json
languages/i18n/gan-hans.json
languages/i18n/gan-hant.json
languages/i18n/gl.json
languages/i18n/grc.json
languages/i18n/gsw.json
languages/i18n/gu.json
languages/i18n/gv.json
languages/i18n/hak.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/hy.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/ilo.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jv.json
languages/i18n/ka.json
languages/i18n/kab.json
languages/i18n/kiu.json
languages/i18n/kk-cyrl.json
languages/i18n/km.json
languages/i18n/ko.json
languages/i18n/krc.json
languages/i18n/ksh.json
languages/i18n/ku-latn.json
languages/i18n/la.json
languages/i18n/lb.json
languages/i18n/li.json
languages/i18n/lt.json
languages/i18n/lv.json
languages/i18n/lzh.json
languages/i18n/mai.json
languages/i18n/mdf.json
languages/i18n/mg.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/nah.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/oc.json
languages/i18n/or.json
languages/i18n/pam.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/pnb.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/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/sdc.json
languages/i18n/sgs.json
languages/i18n/sh.json
languages/i18n/si.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/so.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/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/uz.json
languages/i18n/vec.json
languages/i18n/vep.json
languages/i18n/vi.json
languages/i18n/vo.json
languages/i18n/vro.json
languages/i18n/wa.json
languages/i18n/yi.json
languages/i18n/yo.json
languages/i18n/yue.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
maintenance/language/messageTypes.inc
maintenance/language/messages.inc
maintenance/oracle/archives/patch-page_links_updated.sql [new file with mode: 0644]
maintenance/oracle/archives/patch-rc_source.sql [new file with mode: 0644]
maintenance/oracle/archives/patch-user_password_expire.sql
maintenance/oracle/tables.sql
resources/Resources.php
resources/lib/jquery/jquery.migrate.js [new file with mode: 0644]
resources/lib/oojs-ui/i18n/krc.json
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/oojs-ui.svg.css
resources/src/mediawiki.api/mediawiki.api.js
tests/parser/parserTest.inc
tests/phpunit/includes/MWNamespaceTest.php
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/includes/parser/ParserMethodsTest.php

index 37e304d..5326e23 100644 (file)
@@ -39,9 +39,12 @@ production.
 * $wgPasswordSenderName has been removed and is no longer functional. To set a
   custom mailer name, the system message 'emailsender' should be modified
   (default: "{{SITENAME}}").
-* If you customized [[MediaWiki:Enotif body]] (the text of email notifications),
+* (bug 63269) Email notifications were not correctly handling the
+  [[MediaWiki:Helppage]] message being set to a full URL (the default).
+  If you customized [[MediaWiki:Enotif body]] (the text of email notifications),
   you'll need to edit it locally to include the URL via the new variable
-  $HELPPAGE instead of the parser functions fullurl and canonicalurl.
+  $HELPPAGE instead of the parser functions fullurl and canonicalurl; otherwise
+  you don't have to do anything.
 * $wgDBAhandler was removed as the only class using it was also removed
 * The 'max threads' setting was removed from $wgDBservers.
 * Support for AdminSettings.php has been completely removed. All configuration
index 189c5f1..2e969c7 100644 (file)
@@ -9,6 +9,8 @@ MediaWiki 1.24 is an alpha-quality branch and is not recommended for use in
 production.
 
 === Configuration changes in 1.24 ===
+* The server's canonical hostname is available as $wgServerName, which is
+  exposed in both mw.config and ApiQuerySiteInfo.
 
 === New features in 1.24 ===
 * Added a new hook, "WhatLinksHereProps", to allow extensions to annotate
@@ -30,6 +32,7 @@ production.
   which used to collapse some sidebar elements by default.
 * (bug 890) Links in Special:RecentChanges and Special:Watchlist no longer
   follow redirects to their target pages.
+* Parser now dies early if called recursively, instead of producing subtle bugs.
 
 === Web API changes in 1.24 ===
 * action=parse API now supports prop=modules, which provides the list of
@@ -75,7 +78,7 @@ The supported versions are:
 
 == Upgrading ==
 
-1.24 has several database changes since 1.22, and will not work without schema
+1.24 has several database changes since 1.23, and will not work without schema
 updates. Note that due to changes to some very large tables like the revision
 table, the schema update may take quite long (minutes on a medium sized site,
 many hours on a large site).
index 071a278..4c85e52 100644 (file)
@@ -208,10 +208,15 @@ class IcuCollation extends Collation {
                // Verified by native speakers
                'be' => array( "Ё" ),
                'be-tarask' => array( "Ё" ),
+               'cy' => array( "Ch", "Dd", "Ff", "Ng", "Ll", "Ph", "Rh", "Th" ),
                'en' => array(),
+               'fa' => array( "آ", "ء", "ه" ),
                'fi' => array( "Å", "Ä", "Ö" ),
+               'fr' => array(),
                'hu' => array( "Cs", "Dz", "Dzs", "Gy", "Ly", "Ny", "Ö", "Sz", "Ty", "Ü", "Zs" ),
+               'is' => array( "Á", "Ð", "É", "Í", "Ó", "Ú", "Ý", "Þ", "Æ", "Ö", "Å" ),
                'it' => array(),
+               'lv' => array( "Č", "Ģ", "Ķ", "Ļ", "Ņ", "Š", "Ž" ),
                'pl' => array( "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ź", "Ż" ),
                'pt' => array(),
                'ru' => array(),
@@ -229,7 +234,6 @@ class IcuCollation extends Collation {
                'ca' => array(),
                'co' => array(),
                'cs' => array( "Č", "Ch", "Ř", "Š", "Ž" ),
-               'cy' => array( "Ch", "Dd", "Ff", "Ng", "Ll", "Ph", "Rh", "Th" ),
                'da' => array( "Æ", "Ø", "Å" ),
                'de' => array(),
                'dsb' => array( "Č", "Ć", "Dź", "Ě", "Ch", "Ł", "Ń", "Ŕ", "Š", "Ś", "Ž", "Ź" ),
@@ -238,9 +242,7 @@ class IcuCollation extends Collation {
                'es' => array( "Ñ" ),
                'et' => array( "Š", "Ž", "Õ", "Ä", "Ö", "Ü" ),
                'eu' => array( "Ñ" ),
-               'fa' => array( "آ", "ء", "ه" ),
                'fo' => array( "Á", "Ð", "Í", "Ó", "Ú", "Ý", "Æ", "Ø", "Å" ),
-               'fr' => array(),
                'fur' => array( "À", "Á", "Â", "È", "Ì", "Ò", "Ù" ),
                'fy' => array(),
                'ga' => array(),
@@ -248,7 +250,6 @@ class IcuCollation extends Collation {
                'gl' => array( "Ch", "Ll", "Ñ" ),
                'hr' => array( "Č", "Ć", "Dž", "Đ", "Lj", "Nj", "Š", "Ž" ),
                'hsb' => array( "Č", "Dź", "Ě", "Ch", "Ł", "Ń", "Ř", "Š", "Ć", "Ž" ),
-               'is' => array( "Á", "Ð", "É", "Í", "Ó", "Ú", "Ý", "Þ", "Æ", "Ö", "Å" ),
                'kk' => array( "Ү", "І" ),
                'kl' => array( "Æ", "Ø", "Å" ),
                'ku' => array( "Ç", "Ê", "Î", "Ş", "Û" ),
@@ -256,7 +257,6 @@ class IcuCollation extends Collation {
                'la' => array(),
                'lb' => array(),
                'lt' => array( "Č", "Š", "Ž" ),
-               'lv' => array( "Č", "Ģ", "Ķ", "Ļ", "Ņ", "Š", "Ž" ),
                'mk' => array(),
                'mo' => array( "Ă", "Â", "Î", "Ş", "Ţ" ),
                'mt' => array( "Ċ", "Ġ", "Għ", "Ħ", "Ż" ),
index c281893..5d35c42 100644 (file)
@@ -104,6 +104,13 @@ $wgServer = WebRequest::detectServer();
  */
 $wgCanonicalServer = false;
 
+/**
+ * Server name. This is automatically computed by parsing the bare
+ * hostname out of $wgCanonicalServer. It should not be customized.
+ * @since 1.24
+ */
+$wgServerName = false;
+
 /************************************************************************//**
  * @name   Script path settings
  * @{
@@ -1304,21 +1311,22 @@ $wgDjvuOutputExtension = 'jpg';
  * @{
  */
 
-$serverName = substr( $wgServer, strrpos( $wgServer, '/' ) + 1 );
 
 /**
  * Site admin email address.
+ *
+ * Defaults to "wikiadmin@{$wgServerName}".
  */
-$wgEmergencyContact = 'wikiadmin@' . $serverName;
+$wgEmergencyContact = false;
 
 /**
  * Password reminder email address.
  *
  * The address we should use as sender when a user is requesting his password.
+ *
+ * Defaults to "apache@{$wgServerName}".
  */
-$wgPasswordSender = 'apache@' . $serverName;
-
-unset( $serverName ); # Don't leak local variables to global scope
+$wgPasswordSender = false;
 
 /**
  * Password reminder name
@@ -3605,6 +3613,9 @@ $wgNamespacesWithSubpages = array(
  * Tracking categories allow pages with certain characteristics to be tracked.
  * It works by adding any such page to a category automatically.
  *
+ * A message with the suffix '-desc' should be added as a description message
+ * to have extra information on Special:TrackingCategories.
+ *
  * @since 1.23
  */
 $wgTrackingCategories = array(
@@ -4252,6 +4263,7 @@ $wgGroupPermissions['*']['editmyoptions'] = true;
 $wgGroupPermissions['user']['move'] = true;
 $wgGroupPermissions['user']['move-subpages'] = true;
 $wgGroupPermissions['user']['move-rootuserpages'] = true; // can move root userpages
+$wgGroupPermissions['user']['move-categorypages'] = true;
 $wgGroupPermissions['user']['movefile'] = true;
 $wgGroupPermissions['user']['read'] = true;
 $wgGroupPermissions['user']['edit'] = true;
@@ -4299,6 +4311,7 @@ $wgGroupPermissions['sysop']['importupload'] = true;
 $wgGroupPermissions['sysop']['move'] = true;
 $wgGroupPermissions['sysop']['move-subpages'] = true;
 $wgGroupPermissions['sysop']['move-rootuserpages'] = true;
+$wgGroupPermissions['sysop']['move-categorypages'] = true;
 $wgGroupPermissions['sysop']['patrol'] = true;
 $wgGroupPermissions['sysop']['autopatrol'] = true;
 $wgGroupPermissions['sysop']['protect'] = true;
index 6433d19..a912fde 100644 (file)
@@ -530,7 +530,7 @@ class Linker {
         *
         * @param array $handlerParams Associative array of media handler parameters, to be passed
         *       to transform(). Typical keys are "width" and "page".
-        * @param string $time Timestamp of the file, set as false for current
+        * @param string|bool $time Timestamp of the file, set as false for current
         * @param string $query Query params for desc url
         * @param int|null $widthOption Used by the parser to remember the user preference thumbnailsize
         * @since 1.20
index 45c2da9..4edddbc 100644 (file)
@@ -67,7 +67,7 @@ class MWNamespace {
        public static function isMovable( $index ) {
                global $wgAllowImageMoving;
 
-               $result = !( $index < NS_MAIN || ( $index == NS_FILE && !$wgAllowImageMoving ) || $index == NS_CATEGORY );
+               $result = !( $index < NS_MAIN || ( $index == NS_FILE && !$wgAllowImageMoving ) );
 
                /**
                 * @since 1.20
index b155f90..18d1e33 100644 (file)
@@ -43,6 +43,7 @@ if ( !isset( $wgVersion ) ) {
 }
 
 // Set various default paths sensibly...
+
 if ( $wgScript === false ) {
        $wgScript = "$wgScriptPath/index$wgScriptExtension";
 }
@@ -420,6 +421,29 @@ require_once "$IP/includes/normal/UtfNormalDefines.php";
 wfProfileOut( $fname . '-includes' );
 
 wfProfileIn( $fname . '-defaults2' );
+
+if ( $wgCanonicalServer === false ) {
+       $wgCanonicalServer = wfExpandUrl( $wgServer, PROTO_HTTP );
+}
+
+// Set server name
+$serverParts = wfParseUrl( $wgCanonicalServer );
+if ( $wgServerName !== false ) {
+       wfWarn( '$wgServerName should be derived from $wgCanonicalServer, not customized. Overwriting $wgServerName.' );
+}
+$wgServerName = $serverParts['host'];
+unset( $serverParts );
+
+// Set defaults for configuration variables
+// that are derived from the server name by default
+if ( $wgEmergencyContact === false ) {
+       $wgEmergencyContact = 'wikiadmin@' . $wgServerName;
+}
+
+if ( $wgPasswordSender === false ) {
+       $wgPasswordSender = 'apache@' . $wgServerName;
+}
+
 if ( $wgSecureLogin && substr( $wgServer, 0, 2 ) !== '//' ) {
        $wgSecureLogin = false;
        wfWarn( 'Secure login was enabled on a server that only supports HTTP or HTTPS. Disabling secure login.' );
@@ -433,10 +457,6 @@ if ( $wgTmpDirectory === false ) {
        wfProfileOut( $fname . '-tempDir' );
 }
 
-if ( $wgCanonicalServer === false ) {
-       $wgCanonicalServer = wfExpandUrl( $wgServer, PROTO_HTTP );
-}
-
 // $wgHTCPMulticastRouting got renamed to $wgHTCPRouting in MediaWiki 1.22
 // ensure back compatibility.
 if ( !$wgHTCPRouting && $wgHTCPMulticastRouting ) {
index 70d2baa..b9451be 100644 (file)
@@ -1924,6 +1924,11 @@ class Title {
                                $errors[] = array( 'movenotallowedfile' );
                        }
 
+                       // Check if user is allowed to move category pages if it's a category page
+                       if ( $this->mNamespace == NS_CATEGORY && !$user->isAllowed( 'move-categorypages' ) ) {
+                               $errors[] = array( 'cant-move-category-page' );
+                       }
+
                        if ( !$user->isAllowed( 'move' ) ) {
                                // User can't move anything
                                $userCanMove = User::groupHasPermission( 'user', 'move' );
@@ -1943,6 +1948,10 @@ class Title {
                                        && $this->mNamespace == NS_USER && !$this->isSubpage() ) {
                                // Show user page-specific message only if the user can move other pages
                                $errors[] = array( 'cant-move-to-user-page' );
+                       } elseif ( !$user->isAllowed( 'move-categorypages' )
+                                       && $this->mNamespace == NS_CATEGORY ) {
+                               // Show category page-specific message only if the user can move other pages
+                               $errors[] = array( 'cant-move-to-category-page' );
                        }
                } elseif ( !$user->isAllowed( $action ) ) {
                        $errors[] = $this->missingPermissionError( $action, $short );
@@ -3812,9 +3821,14 @@ class Title {
                }
 
                if ( $createRedirect ) {
-                       $contentHandler = ContentHandler::getForTitle( $this );
-                       $redirectContent = $contentHandler->makeRedirectContent( $nt,
-                               wfMessage( 'move-redirect-text' )->inContentLanguage()->plain() );
+                       if ( $this->getNamespace() == NS_CATEGORY && !wfMessage( 'category-move-redirect-override' )->isDisabled() ) {
+                               $redirectContent = new WikitextContent(
+                                       wfMessage( 'category-move-redirect-override' )->params( $nt->getPrefixedText() )->inContentLanguage()->plain() );
+                       } else {
+                               $contentHandler = ContentHandler::getForTitle( $this );
+                               $redirectContent = $contentHandler->makeRedirectContent( $nt,
+                                       wfMessage( 'move-redirect-text' )->inContentLanguage()->plain() );
+                       }
 
                        // NOTE: If this page's content model does not support redirects, $redirectContent will be null.
                } else {
index f5768af..8228f1c 100644 (file)
@@ -143,6 +143,7 @@ class User {
                'minoredit',
                'move',
                'movefile',
+               'move-categorypages',
                'move-rootuserpages',
                'move-subpages',
                'nominornewtalk',
index 636d798..2124dc3 100644 (file)
@@ -241,6 +241,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                $data['script'] = $GLOBALS['wgScript'];
                $data['variantarticlepath'] = $GLOBALS['wgVariantArticlePath'];
                $data['server'] = $GLOBALS['wgServer'];
+               $data['servername'] = $GLOBALS['wgServerName'];
                $data['wikiid'] = wfWikiID();
                $data['time'] = wfTimestamp( TS_ISO_8601, time() );
 
index 6dfb1b4..953df58 100644 (file)
@@ -47,26 +47,49 @@ class ApiWatch extends ApiBase {
                // by default we use pageset to extract the page to work on.
                // title is still supported for backward compatibility
                if ( !isset( $params['title'] ) ) {
-                       $pageSet->execute();
-                       $res = $pageSet->getInvalidTitlesAndRevisions( array(
-                               'invalidTitles',
-                               'special',
-                               'missingIds',
-                               'missingRevIds',
-                               'interwikiTitles'
-                       ) );
-
-                       foreach ( $pageSet->getMissingTitles() as $title ) {
-                               $r = $this->watchTitle( $title, $user, $params );
-                               $r['missing'] = 1;
-                               $res[] = $r;
+                       if ( $params['entirewatchlist'] && $pageSet->getDataSource() !== null ) {
+                               $this->dieUsage(
+                                       "Cannot use 'entirewatchlist' at the same time as '{$pageSet->getDataSource()}'",
+                                       'multisource'
+                               );
                        }
 
-                       foreach ( $pageSet->getGoodTitles() as $title ) {
-                               $r = $this->watchTitle( $title, $user, $params );
-                               $res[] = $r;
+                       if ( $params['entirewatchlist'] ) {
+                               if ( !$params['unwatch'] ) {
+                                       $this->dieUsage(
+                                               "'entirewatchlist' option can only be used with 'unwatch' parameter.",
+                                               'invalidparammix'
+                                       );
+                               } else {
+                                       // We're going to do this in the database as a bulk operation
+                                       // instead of one at a time, so it doesn't time out on largeish lists.
+                                       $dbw = wfGetDB( DB_MASTER );
+                                       $dbw->delete( 'watchlist', array( 'wl_user' => $user->getId() ), __METHOD__ );
+                                       $user->invalidateCache();
+                                       $res = array();
+                               }
+                       } else {
+                               $pageSet->execute();
+                               $res = $pageSet->getInvalidTitlesAndRevisions( array(
+                                       'invalidTitles',
+                                       'special',
+                                       'missingIds',
+                                       'missingRevIds',
+                                       'interwikiTitles'
+                               ) );
+
+                               foreach ( $pageSet->getMissingTitles() as $title ) {
+                                       $r = $this->watchTitle( $title, $user, $params );
+                                       $r['missing'] = 1;
+                                       $res[] = $r;
+                               }
+
+                               foreach ( $pageSet->getGoodTitles() as $title ) {
+                                       $r = $this->watchTitle( $title, $user, $params );
+                                       $res[] = $r;
+                               }
+                               $this->getResult()->setIndexedTagName( $res, 'w' );
                        }
-                       $this->getResult()->setIndexedTagName( $res, 'w' );
                } else {
                        // dont allow use of old title parameter with new pageset parameters.
                        $extraParams = array_keys( array_filter( $pageSet->extractRequestParams(), function ( $x ) {
@@ -175,6 +198,7 @@ class ApiWatch extends ApiBase {
                                ApiBase::PARAM_DEPRECATED => true
                        ),
                        'unwatch' => false,
+                       'entirewatchlist' => false,
                        'uselang' => null,
                        'token' => array(
                                ApiBase::PARAM_TYPE => 'string',
@@ -194,6 +218,7 @@ class ApiWatch extends ApiBase {
                return $psModule->getParamDescription() + array(
                        'title' => 'The page to (un)watch. use titles instead',
                        'unwatch' => 'If set the page will be unwatched rather than watched',
+                       'entirewatchlist' => 'Work on all watched pages without returning a list; can only be used together with \'unwatch\' option.',
                        'uselang' => 'Language to show the message in',
                        'token' => 'A token previously acquired via prop=info',
                );
index 5fc2c9f..2673084 100644 (file)
@@ -67,7 +67,7 @@ class CssContent extends TextContent {
        protected function getHtml() {
                $html = "";
                $html .= "<pre class=\"mw-code mw-css\" dir=\"ltr\">\n";
-               $html .= $this->getHighlightHtml();
+               $html .= htmlspecialchars( $this->getNativeData() );
                $html .= "\n</pre>\n";
 
                return $html;
index 11a470e..442b705 100644 (file)
@@ -66,7 +66,7 @@ class JavaScriptContent extends TextContent {
        protected function getHtml() {
                $html = "";
                $html .= "<pre class=\"mw-code mw-js\" dir=\"ltr\">\n";
-               $html .= $this->getHighlightHtml();
+               $html .= htmlspecialchars( $this->getNativeData() );
                $html .= "\n</pre>\n";
 
                return $html;
index 0c6b06f..4c95d3c 100644 (file)
@@ -242,10 +242,12 @@ class TextContent extends AbstractContent {
         * Generates an HTML version of the content, for display. Used by
         * getParserOutput() to construct a ParserOutput object.
         *
-        * This default implementation just calls getHighlightHtml(). Content
-        * models that have another mapping to HTML (as is the case for markup
-        * languages like wikitext) should override this method to generate the
-        * appropriate HTML.
+        * Subclasses may override this to provide a custom HTML rendering.
+        * If further information is to be derived from the content (such as
+        * categories), the getParserOutput() method can be overridden instead.
+        *
+        * For backwards-compatibility, this default implementation just calls
+        * getHighlightHtml().
         *
         * @return string An HTML representation of the content
         */
@@ -254,13 +256,22 @@ class TextContent extends AbstractContent {
        }
 
        /**
-        * Generates a syntax-highlighted version of the content, as HTML.
-        * Used by the default implementation of getHtml().
+        * Generates an HTML version of the content, for display.
+        *
+        * This default implementation returns an HTML-escaped version
+        * of the raw text content.
+        *
+        * @note: The functionality of this method should really be implemented
+        * in getHtml(), and subclasses should override getHtml() if needed.
+        * getHighlightHtml() is kept around for backward compatibility with
+        * extensions that already override it.
         *
-        * @return string A HTML representation of the content's markup
+        * @deprecated since 1.24. Use getHtml() instead. In particular, subclasses overriding
+        *     getHighlightHtml() should override getHtml() instead.
+        *
+        * @return string An HTML representation of the content
         */
        protected function getHighlightHtml() {
-               # TODO: make Highlighter interface, use highlighter here, if available
                return htmlspecialchars( $this->getNativeData() );
        }
 
index a9af1e8..5895dda 100644 (file)
@@ -1652,11 +1652,12 @@ abstract class File {
         *
         * @param string $reason
         * @param bool $suppress Hide content from sysops?
+        * @param User|null $user
         * @return bool Boolean on success, false on some kind of failure
         * STUB
         * Overridden by LocalFile
         */
-       function delete( $reason, $suppress = false ) {
+       function delete( $reason, $suppress = false, $user = null ) {
                $this->readOnlyError();
        }
 
index c5ff4a7..561ead7 100644 (file)
@@ -94,10 +94,11 @@ class ForeignDBFile extends LocalFile {
        /**
         * @param string $reason
         * @param bool $suppress
+        * @param User|null $user
         * @return FileRepoStatus
         * @throws MWException
         */
-       function delete( $reason, $suppress = false ) {
+       function delete( $reason, $suppress = false, $user = null ) {
                $this->readOnlyError();
        }
 
index 68a5519..0ef41fa 100644 (file)
@@ -97,6 +97,8 @@ class OracleUpdater extends DatabaseUpdater {
                        array( 'addIndex', 'logging', 'i06', 'patch-logging_user_text_type_time_index.sql' ),
                        array( 'addIndex', 'logging', 'i07', 'patch-logging_user_text_time_index.sql' ),
                        array( 'addField', 'user', 'user_password_expires', 'patch-user_password_expire.sql' ),
+                       array( 'addField', 'page', 'page_links_updated', 'patch-page_links_updated.sql' ),
+                       array( 'addField', 'recentchanges', 'rc_source', 'patch-rc_source.sql' ),
 
                        //1.24
 
index 4b2bdbe..b875181 100644 (file)
        "config-mysql-charset-help": "W '''trybie binarnym''', MediaWiki zapisuje tekst UTF-8 do bazy danych w polach binarnych.\nJest on bardziej wydajny niż tryb UTF-8 w MySQL i pozwala na używanie znaków pełnego zakresu Unicode.\n\nW '''trybie UTF-8''', MySQL będzie znać zestaw znaków w jakim zakodowano dane, można też przedstawić i przekonwertuj je odpowiednio, ale nie pozwoli Ci przechowywać znaków spoza [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes podstawowej płaszczyzny wielojęzyczności].",
        "config-mssql-auth": "Typ uwierzytelniania:",
        "config-mssql-install-auth": "Wybierz typ uwierzytelniania, który będzie używany do łączenia się z bazą danych w trakcie procesu instalacji.\nJeśli wybierzesz „{{int:config-mssql-windowsauth}}”, będą wykorzystywane dane konta użytkownika, pod którym działa serwer www.",
+       "config-mssql-web-auth": "Wybierz typ uwierzytelniania, który będzie używany przez serwer www do łączenia się z bazą danych podczas normalnego funkcjonowania wiki.\nJeśli wybierzesz „{{int:config-mssql-windowsauth}}”, użyte zostaną dane konta użytkownika, pod którym działa serwer www.",
        "config-mssql-sqlauth": "Uwierzytelnianie serwera SQL",
        "config-mssql-windowsauth": "Autoryzacja Windows",
        "config-site-name": "Nazwa wiki:",
index beb96c9..2fcf9a5 100644 (file)
        "config-information": "Informații",
        "config-localsettings-key": "Cheie de actualizare:",
        "config-localsettings-badkey": "Cheia furnizată este incorectă.",
+       "config-upgrade-key-missing": "S-a detectat o instalare existentă de MediaWiki.\nPentru a efectua un upgrade în cazul acestei instalări, vă rugăm să introduceți următorul rând în partea de jos a fișierului <code>LocalSettings.php</code>:\n\n$1",
+       "config-localsettings-incomplete": "Fișierul <code>LocalSettings.php</code> deja existent pare a fi incomplet.\nVariabila $1 nu este definită.\nModificați fișierul <code>LocalSettings.php</code> astfel încât această variabilă să fie definită, după care apăsați pe „{{int:Config-continue}}”.",
+       "config-localsettings-connection-error": "A apărut o eroare în timpul conectării la baza de date utilizând setările specificate în <code>LocalSettings.php</code>. Vă rugăm să ajustați aceste setări și încercați din nou.\n\n$1",
        "config-session-error": "Eroare la pornirea sesiunii: $1",
+       "config-session-expired": "Este posibil ca datele sesiunii dumnevoastră să fi expirat.\nSesiunile sunt configurate pentru o durată de viață de $1.\nO puteți mări configurând parametrul <code>session.gc_maxlifetime</code> din fișierul php.ini.\nReporniți procesul de instalare.",
+       "config-no-session": "Datele sesiunii dumneavoastră s-au pierdut!\nVerificați-vă fișierul php.ini și asigurați-vă că <code>session.save_path</code> conține calea către un director corespunzător.",
        "config-your-language": "Limba ta:",
        "config-your-language-help": "Alege o limbă pentru a o utiliza în timpul procesului de instalare.",
        "config-wiki-language": "Limbă wiki:",
index 63c92bb..ed986c0 100644 (file)
@@ -50,7 +50,7 @@
        "config-help-restart": "是否要清除所有已輸入且儲存的資料,並重新開始安裝程序嗎?",
        "config-restart": "是的,重新開始",
        "config-welcome": "=== 環境檢查 ===\n現在會做基本的檢查,檢查環境是否符合 MediaWiki 安裝所需。\n若您要尋求如何完成安裝的協助,請記得提供以下訊息。",
-       "config-copyright": "=== 版權聲明與授權條款 ===\n\n$1\n\n本程式為自由軟體;您可依據自由軟體基金會所發表的 GNU 通用公共授權條款規定,將本程式重新發佈與/或修改;無論您依據的是本授權條款的第二版或 (您可自行選擇) 之後的任何版本。\n\n本程式發佈的目的是希望可以提供幫助,但 <strong>不負任何擔保責任</strong>;亦無隱含對 <strong>適售性</strong> 或 <strong>特定用途的適用性</strong> 的情形擔保。詳情請參照GNU 通用公共授權。\n\n您應已隨本程式收到 <doclink href=\"Copying\">GNU 通用公共授權條款</doclink>;如果沒有,請信件通知自由軟體基金會,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,或 [http://www.gnu.org/copyleft/gpl.html 線上閱讀]。",
+       "config-copyright": "=== 版權聲明與授權條款 ===\n\n$1\n\n本程式為自由軟體;您可依據自由軟體基金會所發表的 GNU 通用公共授權條款規定,將本程式重新發佈與/或修改;無論您依據的是本授權條款的第二版或 (您可自行選擇) 之後的任何版本。\n\n本程式發佈的目的是希望可以提供幫助,但 <strong>不負任何擔保責任</strong>;亦無隱含對 <strong>適售性</strong> 或 <strong>特定用途的適用性</strong> 的情形擔保。詳情請參照 GNU 通用公共授權。\n\n您應已隨本程式收到 <doclink href=\"Copying\">GNU 通用公共授權條款的副本</doclink>;如果沒有,請信件通知自由軟體基金會,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,或 [http://www.gnu.org/copyleft/gpl.html 線上閱讀]。",
        "config-sidebar": "* [www.mediawiki.org/wiki/MediaWiki/zh-hant MediaWiki 首頁]\n* [www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents/zh 使用者指南]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents/zh 管理者指南]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/zh-hant 常見問題集]\n----\n* <doclink href=Readme>讀我說明</doclink>\n* <doclink href=ReleaseNotes>發行說明</doclink>\n* <doclink href=Copying>版權聲明</doclink>\n* <doclink href=UpgradeDoc>升級</doclink>",
        "config-env-good": "環境檢查已完成。\n您可以安裝 MediaWiki。",
        "config-env-bad": "環境檢查已完成。\n您無法安裝 MediaWiki。",
index 607c4e5..44be178 100644 (file)
@@ -138,6 +138,10 @@ class BitmapHandler extends ImageHandler {
                        'dstUrl' => $dstUrl,
                );
 
+               if ( isset( $params['quality'] ) && $params['quality'] === 'low' ) {
+                       $scalerParams['quality'] = 30;
+               }
+
                # Determine scaler type
                $scaler = self::getScalerType( $dstPath );
 
@@ -147,6 +151,7 @@ class BitmapHandler extends ImageHandler {
                if ( !$image->mustRender() &&
                        $scalerParams['physicalWidth'] == $scalerParams['srcWidth']
                        && $scalerParams['physicalHeight'] == $scalerParams['srcHeight']
+                       && !isset( $scalerParams['quality'] )
                ) {
 
                        # normaliseParams (or the user) wants us to return the unscaled image
@@ -163,12 +168,14 @@ class BitmapHandler extends ImageHandler {
 
                if ( $flags & self::TRANSFORM_LATER ) {
                        wfDebug( __METHOD__ . ": Transforming later per flags.\n" );
-                       $params = array(
+                       $newParams = array(
                                'width' => $scalerParams['clientWidth'],
                                'height' => $scalerParams['clientHeight']
                        );
-
-                       return new ThumbnailImage( $image, $dstUrl, false, $params );
+                       if ( isset( $params['quality'] ) ) {
+                               $newParams['quality'] = $params['quality'];
+                       }
+                       return new ThumbnailImage( $image, $dstUrl, false, $newParams );
                }
 
                # Try to make a target path for the thumbnail
@@ -235,12 +242,14 @@ class BitmapHandler extends ImageHandler {
                } elseif ( $mto ) {
                        return $mto;
                } else {
-                       $params = array(
+                       $newParams = array(
                                'width' => $scalerParams['clientWidth'],
                                'height' => $scalerParams['clientHeight']
                        );
-
-                       return new ThumbnailImage( $image, $dstUrl, $dstPath, $params );
+                       if ( isset( $params['quality'] ) ) {
+                               $newParams['quality'] = $params['quality'];
+                       }
+                       return new ThumbnailImage( $image, $dstUrl, $dstPath, $newParams );
                }
        }
 
@@ -314,7 +323,8 @@ class BitmapHandler extends ImageHandler {
                $animation_post = array();
                $decoderHint = array();
                if ( $params['mimeType'] == 'image/jpeg' ) {
-                       $quality = array( '-quality', '80' ); // 80%
+                       $qualityVal = isset( $params['quality'] ) ? (string) $params['quality'] : null;
+                       $quality = array( '-quality', $qualityVal ?: '80' ); // 80%
                        # Sharpening, see bug 6193
                        if ( ( $params['physicalWidth'] + $params['physicalHeight'] )
                                / ( $params['srcWidth'] + $params['srcHeight'] )
@@ -419,7 +429,8 @@ class BitmapHandler extends ImageHandler {
                                        list( $radius, $sigma ) = explode( 'x', $wgSharpenParameter );
                                        $im->sharpenImage( $radius, $sigma );
                                }
-                               $im->setCompressionQuality( 80 );
+                               $qualityVal = isset( $params['quality'] ) ? (string) $params['quality'] : null;
+                               $im->setCompressionQuality( $qualityVal ?: 80 );
                        } elseif ( $params['mimeType'] == 'image/png' ) {
                                $im->setCompressionQuality( 95 );
                        } elseif ( $params['mimeType'] == 'image/gif' ) {
@@ -531,13 +542,14 @@ class BitmapHandler extends ImageHandler {
                # input routine for this.
 
                $typemap = array(
-                       'image/gif' => array( 'imagecreatefromgif', 'palette', 'imagegif' ),
-                       'image/jpeg' => array( 'imagecreatefromjpeg', 'truecolor',
+                       'image/gif' => array( 'imagecreatefromgif', 'palette', false, 'imagegif' ),
+                       'image/jpeg' => array( 'imagecreatefromjpeg', 'truecolor', true,
                                array( __CLASS__, 'imageJpegWrapper' ) ),
-                       'image/png' => array( 'imagecreatefrompng', 'bits', 'imagepng' ),
-                       'image/vnd.wap.wbmp' => array( 'imagecreatefromwbmp', 'palette', 'imagewbmp' ),
-                       'image/xbm' => array( 'imagecreatefromxbm', 'palette', 'imagexbm' ),
+                       'image/png' => array( 'imagecreatefrompng', 'bits', false, 'imagepng' ),
+                       'image/vnd.wap.wbmp' => array( 'imagecreatefromwbmp', 'palette', false, 'imagewbmp' ),
+                       'image/xbm' => array( 'imagecreatefromxbm', 'palette', false, 'imagexbm' ),
                );
+
                if ( !isset( $typemap[$params['mimeType']] ) ) {
                        $err = 'Image type not supported';
                        wfDebug( "$err\n" );
@@ -545,7 +557,7 @@ class BitmapHandler extends ImageHandler {
 
                        return $this->getMediaTransformError( $params, $errMsg );
                }
-               list( $loader, $colorStyle, $saveType ) = $typemap[$params['mimeType']];
+               list( $loader, $colorStyle, $useQuality, $saveType ) = $typemap[$params['mimeType']];
 
                if ( !function_exists( $loader ) ) {
                        $err = "Incomplete GD library configuration: missing function $loader";
@@ -597,7 +609,12 @@ class BitmapHandler extends ImageHandler {
 
                imagesavealpha( $dst_image, true );
 
-               call_user_func( $saveType, $dst_image, $params['dstPath'] );
+               $funcParams = array( $dst_image, $params['dstPath'] );
+               if ( $useQuality && isset( $params['quality'] ) ) {
+                       $funcParams[] = $params['quality'];
+               }
+               call_user_func_array( $saveType, $funcParams );
+
                imagedestroy( $dst_image );
                imagedestroy( $src_image );
 
@@ -730,9 +747,10 @@ class BitmapHandler extends ImageHandler {
                return $cache;
        }
 
-       static function imageJpegWrapper( $dst_image, $thumbPath ) {
+       // FIXME: transformImageMagick() & transformImageMagickExt() uses JPEG quality 80, here it's 95?
+       static function imageJpegWrapper( $dst_image, $thumbPath, $quality = 95 ) {
                imageinterlace( $dst_image );
-               imagejpeg( $dst_image, $thumbPath, 95 );
+               imagejpeg( $dst_image, $thumbPath, $quality );
        }
 
        /**
index 9ed626f..a0f7acb 100644 (file)
  * @ingroup Media
  */
 class JpegHandler extends ExifBitmapHandler {
+
+       function normaliseParams( $image, &$params ) {
+               if ( !parent::normaliseParams( $image, $params ) ) {
+                       return false;
+               }
+               if ( isset( $params['quality'] ) && !self::validateQuality( $params['quality'] ) ) {
+                       return false;
+               }
+               return true;
+       }
+
+       function validateParam( $name, $value ) {
+               if ( $name === 'quality' ) {
+                       return self::validateQuality( $value );
+               } else {
+                       return parent::validateParam( $name, $value );
+               }
+       }
+
+       /** Validate and normalize quality value to be between 1 and 100 (inclusive).
+        * @param int $value quality value, will be converted to integer or 0 if invalid
+        * @return bool true if the value is valid
+        */
+       private static function validateQuality( $value ) {
+               return $value === 'low';
+       }
+
+       function makeParamString( $params ) {
+               // Prepend quality as "qValue-". This has to match parseParamString() below
+               $res = parent::makeParamString( $params );
+               if ( $res && isset( $params['quality'] ) ) {
+                       $res = "q{$params['quality']}-$res";
+               }
+               return $res;
+       }
+
+       function parseParamString( $str ) {
+               // $str contains "qlow-200px" or "200px" strings because thumb.php would strip the filename
+               // first - check if the string begins with "qlow-", and if so, treat it as quality.
+               // Pass the first portion, or the whole string if "qlow-" not found, to the parent
+               // The parsing must match the makeParamString() above
+               $res = false;
+               $m = false;
+               if ( preg_match( '/q([^-]+)-(.*)$/', $str, $m ) ) {
+                       $v = $m[1];
+                       if ( self::validateQuality( $v ) ) {
+                               $res = parent::parseParamString( $m[2] );
+                               if ( $res ) {
+                                       $res['quality'] = $v;
+                               }
+                       }
+               } else {
+                       $res = parent::parseParamString( $str );
+               }
+               return $res;
+       }
+
+       function getScriptParams( $params ) {
+               $res = parent::getScriptParams( $params );
+               if ( isset( $params['quality'] ) ) {
+                       $res['quality'] = $params['quality'];
+               }
+               return $res;
+       }
+
        function getMetadata( $image, $filename ) {
                try {
                        $meta = BitmapMetadataHandler::Jpeg( $filename );
index 7423006..227937a 100644 (file)
@@ -211,6 +211,12 @@ class Parser {
         */
        var $mLangLinkLanguages;
 
+       /**
+        * @var boolean Recursive call protection.
+        * This variable should be treated as if it were private.
+        */
+       public $mInParse = false;
+
        /**
         * Constructor
         *
@@ -254,6 +260,7 @@ class Parser {
         * Allow extensions to clean up when the parser is cloned
         */
        function __clone() {
+               $this->mInParse = false;
                wfRunHooks( 'ParserCloned', array( $this ) );
        }
 
@@ -364,6 +371,10 @@ class Parser {
                wfProfileIn( __METHOD__ );
                wfProfileIn( $fname );
 
+               if ( $clearState ) {
+                       $magicScopeVariable = $this->lock();
+               }
+
                $this->startParse( $title, $options, self::OT_HTML, $clearState );
 
                $this->mInputSize = strlen( $text );
@@ -615,6 +626,7 @@ class Parser {
         */
        function preprocess( $text, Title $title = null, ParserOptions $options, $revid = null ) {
                wfProfileIn( __METHOD__ );
+               $magicScopeVariable = $this->lock();
                $this->startParse( $title, $options, self::OT_PREPROCESS, true );
                if ( $revid !== null ) {
                        $this->mRevisionId = $revid;
@@ -662,6 +674,7 @@ class Parser {
                $text = $msg->params( $params )->plain();
 
                # Parser (re)initialisation
+               $magicScopeVariable = $this->lock();
                $this->startParse( $title, $options, self::OT_PLAIN, true );
 
                $flags = PPFrame::NO_ARGS | PPFrame::NO_TEMPLATES;
@@ -2731,7 +2744,7 @@ class Parser {
         * @return string
         */
        function getVariableValue( $index, $frame = false ) {
-               global $wgContLang, $wgSitename, $wgServer;
+               global $wgContLang, $wgSitename, $wgServer, $wgServerName;
                global $wgArticlePath, $wgScriptPath, $wgStylePath;
 
                if ( is_null( $this->mTitle ) ) {
@@ -3032,8 +3045,7 @@ class Parser {
                        case 'server':
                                return $wgServer;
                        case 'servername':
-                               $serverParts = wfParseUrl( $wgServer );
-                               return $serverParts && isset( $serverParts['host'] ) ? $serverParts['host'] : $wgServer;
+                               return $wgServerName;
                        case 'scriptpath':
                                return $wgScriptPath;
                        case 'stylepath':
@@ -4593,6 +4605,9 @@ class Parser {
         * @return string The altered wiki markup
         */
        public function preSaveTransform( $text, Title $title, User $user, ParserOptions $options, $clearState = true ) {
+               if ( $clearState ) {
+                       $magicScopeVariable = $this->lock();
+               }
                $this->startParse( $title, $options, self::OT_WIKI, $clearState );
                $this->setUser( $user );
 
@@ -4767,6 +4782,7 @@ class Parser {
        public function cleanSig( $text, $parsing = false ) {
                if ( !$parsing ) {
                        global $wgTitle;
+                       $magicScopeVariable = $this->lock();
                        $this->startParse( $wgTitle, new ParserOptions, self::OT_PREPROCESS, true );
                }
 
@@ -5627,6 +5643,8 @@ class Parser {
         */
        private function extractSections( $text, $section, $mode, $newText = '' ) {
                global $wgTitle; # not generally used but removes an ugly failure mode
+
+               $magicScopeVariable = $this->lock();
                $this->startParse( $wgTitle, new ParserOptions, self::OT_PLAIN, true );
                $outText = '';
                $frame = $this->getPreprocessor()->newFrame();
@@ -5972,6 +5990,7 @@ class Parser {
         * @return string
         */
        function testSrvus( $text, Title $title, ParserOptions $options, $outputType = self::OT_HTML ) {
+               $magicScopeVariable = $this->lock();
                $this->startParse( $title, $options, $outputType, true );
 
                $text = $this->replaceVariables( $text );
@@ -6149,4 +6168,27 @@ class Parser {
                }
                return $parsedWidthParam;
        }
+
+       /**
+        * Lock the current instance of the parser.
+        *
+        * This is meant to stop someone from calling the parser
+        * recursively and messing up all the strip state.
+        *
+        * @throws MWException If parser is in a parse
+        * @return ScopedCallback The lock will be released once the return value goes out of scope.
+        */
+       protected function lock() {
+               if ( $this->mInParse ) {
+                       throw new MWException( "Parser state cleared while parsing. Did you call Parser::parse recursively?" );
+               }
+               $this->mInParse = true;
+
+               $that = $this;
+               $recursiveCheck = new ScopedCallback( function() use ( $that ) {
+                       $that->mInParse = false;
+               } );
+
+               return $recursiveCheck;
+       }
 }
index e5077a2..3f17bcd 100644 (file)
@@ -38,7 +38,7 @@ abstract class MachineReadableRCFeedFormatter implements RCFeedFormatter {
         * @see RCFeedFormatter::getLine
         */
        public function getLine( array $feed, RecentChange $rc, $actionComment ) {
-               global $wgCanonicalServer, $wgScriptPath;
+               global $wgCanonicalServer, $wgServerName, $wgScriptPath;
                $attrib = $rc->getAttributes();
 
                $packet = array(
@@ -120,6 +120,8 @@ abstract class MachineReadableRCFeedFormatter implements RCFeedFormatter {
                }
 
                $packet['server_url'] = $wgCanonicalServer;
+               $packet['server_name'] = $wgServerName;
+
                $packet['server_script_path'] = $wgScriptPath ?: '/';
                $packet['wiki'] = wfWikiID();
 
index 819bf5a..0996a33 100644 (file)
@@ -441,6 +441,8 @@ abstract class ResourceLoaderModule {
        /**
         * Helper method for calculating when this module's definition summary was last changed.
         *
+        * @since 1.23
+        *
         * @return int UNIX timestamp or 0 if no definition summary was provided
         *  by getDefinitionSummary()
         */
@@ -505,6 +507,8 @@ abstract class ResourceLoaderModule {
         * contain arrays and scalars as values (avoid object instances) which means
         * it requires abstraction.
         *
+        * @since 1.23
+        *
         * @return array|null
         */
        public function getDefinitionSummary( ResourceLoaderContext $context ) {
index d0f0541..f9c5057 100644 (file)
@@ -44,8 +44,8 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                }
 
                global $wgLoadScript, $wgScript, $wgStylePath, $wgScriptExtension,
-                       $wgArticlePath, $wgScriptPath, $wgServer, $wgContLang,
-                       $wgVariantArticlePath, $wgActionPaths, $wgVersion,
+                       $wgArticlePath, $wgScriptPath, $wgServer, $wgServerName,
+                       $wgContLang, $wgVariantArticlePath, $wgActionPaths, $wgVersion,
                        $wgEnableAPI, $wgEnableWriteAPI, $wgDBname,
                        $wgSitename, $wgFileExtensions, $wgExtensionAssetsPath,
                        $wgCookiePrefix, $wgResourceLoaderMaxQueryLength,
@@ -85,6 +85,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        // becoming [] instead of {} in JS (bug 34604)
                        'wgActionPaths' => (object)$wgActionPaths,
                        'wgServer' => $wgServer,
+                       'wgServerName' => $wgServerName,
                        'wgUserLanguage' => $context->getLanguage(),
                        'wgContentLanguage' => $wgContLang->getCode(),
                        'wgVersion' => $wgVersion,
index dcec5dd..3c68feb 100644 (file)
@@ -80,7 +80,7 @@ class RevDel_RevisionList extends RevDel_List {
                }
 
                // Check if any requested revisions are available fully deleted.
-               $archived = $db->select( array( 'archive' ), '*',
+               $archived = $db->select( array( 'archive' ), Revision::selectArchiveFields(),
                        array(
                                'ar_rev_id' => $ids
                        ),
@@ -326,7 +326,7 @@ class RevDel_ArchiveList extends RevDel_RevisionList {
                foreach ( $this->ids as $id ) {
                        $timestamps[] = $db->timestamp( $id );
                }
-               return $db->select( 'archive', '*',
+               return $db->select( 'archive', Revision::selectArchiveFields(),
                                array(
                                        'ar_namespace' => $this->title->getNamespace(),
                                        'ar_title' => $this->title->getDBkey(),
@@ -921,7 +921,20 @@ class RevDel_LogList extends RevDel_List {
         */
        public function doQuery( $db ) {
                $ids = array_map( 'intval', $this->ids );
-               return $db->select( 'logging', '*',
+               return $db->select( 'logging', array(
+                               'log_id',
+                               'log_type',
+                               'log_action',
+                               'log_timestamp',
+                               'log_user',
+                               'log_user_text',
+                               'log_namespace',
+                               'log_title',
+                               'log_page',
+                               'log_comment',
+                               'log_params',
+                               'log_deleted'
+                       ),
                        array( 'log_id' => $ids ),
                        __METHOD__,
                        array( 'ORDER BY' => 'log_id DESC' )
index 2a86b31..4854bcb 100644 (file)
@@ -33,7 +33,6 @@
  * @ingroup Site
  */
 class MediaWikiSite extends Site {
-
        const PATH_FILE = 'file_path';
        const PATH_PAGE = 'page_path';
 
@@ -76,14 +75,16 @@ class MediaWikiSite extends Site {
        }
 
        /**
-        * Returns the normalized form of the given page title, using the normalization rules of the given site.
-        * If the given title is a redirect, the redirect weill be resolved and the redirect target is returned.
+        * Returns the normalized form of the given page title, using the
+        * normalization rules of the given site. If the given title is a redirect,
+        * the redirect weill be resolved and the redirect target is returned.
         *
-        * @note  : This actually makes an API request to the remote site, so beware that this function is slow and depends
-        *          on an external service.
+        * @note This actually makes an API request to the remote site, so beware
+        *   that this function is slow and depends on an external service.
         *
-        * @note  : If MW_PHPUNIT_TEST is defined, the call to the external site is skipped, and the title
-        *          is normalized using the local normalization rules as implemented by the Title class.
+        * @note If MW_PHPUNIT_TEST is defined, the call to the external site is
+        *   skipped, and the title is normalized using the local normalization
+        *   rules as implemented by the Title class.
         *
         * @see Site::normalizePageName
         *
@@ -103,8 +104,10 @@ class MediaWikiSite extends Site {
 
                // Go on call the external site
                if ( defined( 'MW_PHPUNIT_TEST' ) ) {
-                       // If the code is under test, don't call out to other sites, just normalize locally.
-                       // Note: this may cause results to be inconsistent with the actual normalization used by the respective remote site!
+                       // If the code is under test, don't call out to other sites, just
+                       // normalize locally.
+                       // Note: this may cause results to be inconsistent with the actual
+                       // normalization used by the respective remote site!
 
                        $t = Title::newFromText( $pageName );
                        return $t->getPrefixedText();
@@ -152,12 +155,14 @@ class MediaWikiSite extends Site {
                $page = static::extractPageRecord( $data, $pageName );
 
                if ( isset( $page['missing'] ) ) {
-                       wfDebugLog( "MediaWikiSite", "call to <$url> returned a marker for a missing page title! " . $ret );
+                       wfDebugLog( "MediaWikiSite", "call to <$url> returned a marker for a missing page title! "
+                               . $ret );
                        return false;
                }
 
                if ( isset( $page['invalid'] ) ) {
-                       wfDebugLog( "MediaWikiSite", "call to <$url> returned a marker for an invalid page title! " . $ret );
+                       wfDebugLog( "MediaWikiSite", "call to <$url> returned a marker for an invalid page title! "
+                               . $ret );
                        return false;
                }
 
@@ -348,5 +353,4 @@ class MediaWikiSite extends Site {
 
                return $filePath;
        }
-
 }
index 59230c7..e3559f5 100644 (file)
@@ -27,7 +27,6 @@
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
 class Site implements Serializable {
-
        const TYPE_UNKNOWN = 'unknown';
        const TYPE_MEDIAWIKI = 'mediawiki';
 
@@ -340,11 +339,12 @@ class Site implements Serializable {
        }
 
        /**
-        * Returns the main path type, that is the type of the path that should generally be used to construct links
-        * to the target site.
+        * Returns the main path type, that is the type of the path that should
+        * generally be used to construct links to the target site.
         *
-        * This default implementation returns Site::PATH_LINK as the default path type. Subclasses can override this
-        * to define a different default path type, or return false to disable site links.
+        * This default implementation returns Site::PATH_LINK as the default path
+        * type. Subclasses can override this to define a different default path
+        * type, or return false to disable site links.
         *
         * @since 1.21
         *
@@ -541,7 +541,9 @@ class Site implements Serializable {
         * @return string[]
         */
        public function getInterwikiIds() {
-               return array_key_exists( self::ID_INTERWIKI, $this->localIds ) ? $this->localIds[self::ID_INTERWIKI] : array();
+               return array_key_exists( self::ID_INTERWIKI, $this->localIds )
+                       ? $this->localIds[self::ID_INTERWIKI]
+                       : array();
        }
 
        /**
@@ -553,7 +555,9 @@ class Site implements Serializable {
         * @return string[]
         */
        public function getNavigationIds() {
-               return array_key_exists( self::ID_EQUIVALENT, $this->localIds ) ? $this->localIds[self::ID_EQUIVALENT] : array();
+               return array_key_exists( self::ID_EQUIVALENT, $this->localIds )
+                       ? $this->localIds[self::ID_EQUIVALENT] :
+                       array();
        }
 
        /**
@@ -693,10 +697,10 @@ class Site implements Serializable {
                $this->setForward( $fields['forward'] );
                $this->setInternalId( $fields['internalid'] );
        }
-
 }
 
 /**
  * @deprecated
  */
-class SiteObject extends Site {}
+class SiteObject extends Site {
+}
index 6992450..dfe4ec5 100644 (file)
@@ -27,7 +27,6 @@
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
 class SiteList extends GenericArrayObject {
-
        /**
         * Internal site identifiers pointing to their sites offset value.
         *
@@ -350,10 +349,10 @@ class SiteList extends GenericArrayObject {
 
                return $serializationData;
        }
-
 }
 
 /**
  * @deprecated
  */
-class SiteArray extends SiteList {}
+class SiteArray extends SiteList {
+}
index d14569a..f382d98 100644 (file)
@@ -29,7 +29,6 @@
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
 class SiteSQLStore implements SiteStore {
-
        /**
         * @since 1.21
         *
@@ -169,7 +168,10 @@ class SiteSQLStore implements SiteStore {
                }
 
                if ( $siteRow->hasField( 'language' ) ) {
-                       $site->setLanguageCode( $siteRow->getField( 'language' ) === '' ? null : $siteRow->getField( 'language' ) );
+                       $site->setLanguageCode( $siteRow->getField( 'language' ) === ''
+                               ? null
+                               : $siteRow->getField( 'language' )
+                       );
                }
 
                if ( $siteRow->hasField( 'source' ) ) {
@@ -504,5 +506,4 @@ class Sites extends SiteSQLStore {
        public function getSiteGroup( $group ) {
                return $this->getSites()->getGroup( $group );
        }
-
 }
index 7e108af..f7c95d1 100644 (file)
@@ -405,42 +405,42 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                global $wgRecentChangesFlags;
                $user = $context->getUser();
                # The legend showing what the letters and stuff mean
-               $legend = Xml::openElement( 'dl' ) . "\n";
+               $legend = Html::openElement( 'dl' ) . "\n";
                # Iterates through them and gets the messages for both letter and tooltip
                $legendItems = $wgRecentChangesFlags;
-               if ( !$user->useRCPatrol() ) {
+               if ( !( $user->useRCPatrol() || $user->useNPPatrol() ) ) {
                        unset( $legendItems['unpatrolled'] );
                }
-               foreach ( $legendItems as $key => $legendInfo ) { # generate items of the legend
-                       $label = $legendInfo['title'];
-                       $letter = $legendInfo['letter'];
-                       $cssClass = isset( $legendInfo['class'] ) ? $legendInfo['class'] : $key;
+               foreach ( $legendItems as $key => $item ) { # generate items of the legend
+                       $label = $item['title'];
+                       $letter = $item['letter'];
+                       $cssClass = isset( $item['class'] ) ? $item['class'] : $key;
 
-                       $legend .= Xml::element( 'dt',
+                       $legend .= Html::element( 'dt',
                                array( 'class' => $cssClass ), $context->msg( $letter )->text()
                        ) . "\n";
                        if ( $key === 'newpage' ) {
-                               $legend .= Xml::openElement( 'dd' );
+                               $legend .= Html::openElement( 'dd' );
                                $legend .= $context->msg( $label )->escaped();
                                $legend .= ' ' . $context->msg( 'recentchanges-legend-newpage' )->parse();
-                               $legend .= Xml::closeElement( 'dd' ) . "\n";
+                               $legend .= Html::closeElement( 'dd' ) . "\n";
                        } else {
-                               $legend .= Xml::element( 'dd', array(),
+                               $legend .= Html::element( 'dd', array(),
                                        $context->msg( $label )->text()
                                ) . "\n";
                        }
                }
                # (+-123)
-               $legend .= Xml::tags( 'dt',
+               $legend .= Html::rawElement( 'dt',
                        array( 'class' => 'mw-plusminus-pos' ),
                        $context->msg( 'recentchanges-legend-plusminus' )->parse()
                ) . "\n";
-               $legend .= Xml::element(
+               $legend .= Html::element(
                        'dd',
                        array( 'class' => 'mw-changeslist-legend-plusminus' ),
                        $context->msg( 'recentchanges-label-plusminus' )->text()
                ) . "\n";
-               $legend .= Xml::closeElement( 'dl' ) . "\n";
+               $legend .= Html::closeElement( 'dl' ) . "\n";
 
                # Collapsibility
                $legend =
index d963677..c42c089 100644 (file)
@@ -31,7 +31,6 @@
  * @ingroup SpecialPage
  */
 class ActiveUsersPager extends UsersPager {
-
        /**
         * @var FormOptions
         */
@@ -194,20 +193,31 @@ class ActiveUsersPager extends UsersPager {
                $self = $this->getTitle();
                $limit = $this->mLimit ? Html::hidden( 'limit', $this->mLimit ) : '';
 
-               $out = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ); # Form tag
+               # Form tag
+               $out = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
                $out .= Xml::fieldset( $this->msg( 'activeusers' )->text() ) . "\n";
                $out .= Html::hidden( 'title', $self->getPrefixedDBkey() ) . $limit . "\n";
 
+               # Username field
                $out .= Xml::inputLabel( $this->msg( 'activeusers-from' )->text(),
-                       'username', 'offset', 20, $this->requestedUser, array( 'tabindex' => 1 ) ) . '<br />';# Username field
+                       'username', 'offset', 20, $this->requestedUser, array( 'tabindex' => 1 ) ) . '<br />';
 
                $out .= Xml::checkLabel( $this->msg( 'activeusers-hidebots' )->text(),
                        'hidebots', 'hidebots', $this->opts->getValue( 'hidebots' ), array( 'tabindex' => 2 ) );
 
-               $out .= Xml::checkLabel( $this->msg( 'activeusers-hidesysops' )->text(),
-                       'hidesysops', 'hidesysops', $this->opts->getValue( 'hidesysops' ), array( 'tabindex' => 3 ) ) . '<br />';
-
-               $out .= Xml::submitButton( $this->msg( 'allpagessubmit' )->text(), array( 'tabindex' => 4 ) ) . "\n";# Submit button and form bottom
+               $out .= Xml::checkLabel(
+                       $this->msg( 'activeusers-hidesysops' )->text(),
+                       'hidesysops',
+                       'hidesysops',
+                       $this->opts->getValue( 'hidesysops' ),
+                       array( 'tabindex' => 3 )
+               ) . '<br />';
+
+               # Submit button and form bottom
+               $out .= Xml::submitButton(
+                       $this->msg( 'allpagessubmit' )->text(),
+                       array( 'tabindex' => 4 )
+               ) . "\n";
                $out .= Xml::closeElement( 'fieldset' );
                $out .= Xml::closeElement( 'form' );
 
index 716bf80..007850b 100644 (file)
@@ -84,7 +84,8 @@ class SpecialBlock extends FormSpecialPage {
                        $this->getSkin()->setRelevantUser( $this->target );
                }
 
-               list( $this->previousTarget, /*...*/ ) = Block::parseTarget( $request->getVal( 'wpPreviousTarget' ) );
+               list( $this->previousTarget, /*...*/ ) =
+                       Block::parseTarget( $request->getVal( 'wpPreviousTarget' ) );
                $this->requestedHideUser = $request->getBool( 'wpHideUser' );
        }
 
@@ -361,7 +362,10 @@ class SpecialBlock extends FormSpecialPage {
 
                # Link to unblock the specified user, or to a blank unblock form
                if ( $this->target instanceof User ) {
-                       $message = $this->msg( 'ipb-unblock-addr', wfEscapeWikiText( $this->target->getName() ) )->parse();
+                       $message = $this->msg(
+                               'ipb-unblock-addr',
+                               wfEscapeWikiText( $this->target->getName() )
+                       )->parse();
                        $list = SpecialPage::getTitleFor( 'Unblock', $this->target->getName() );
                } else {
                        $message = $this->msg( 'ipb-unblock' )->parse();
@@ -451,7 +455,7 @@ class SpecialBlock extends FormSpecialPage {
 
        /**
         * Determine the target of the block, and the type of target
-        * TODO: should be in Block.php?
+        * @todo Should be in Block.php?
         * @param string $par subpage parameter passed to setup, or data value from
         *     the HTMLForm
         * @param WebRequest $request Optionally try and get data from a request too
@@ -765,7 +769,11 @@ class SpecialBlock extends FormSpecialPage {
 
                # Can't watch a rangeblock
                if ( $type != Block::TYPE_RANGE && $data['Watch'] ) {
-                       WatchAction::doWatch( Title::makeTitle( NS_USER, $target ), $performer, WatchedItem::IGNORE_USER_RIGHTS );
+                       WatchAction::doWatch(
+                               Title::makeTitle( NS_USER, $target ),
+                               $performer,
+                               WatchedItem::IGNORE_USER_RIGHTS
+                       );
                }
 
                # Block constructor sanitizes certain block options on insert
index 4c9a682..9170e3e 100644 (file)
@@ -27,8 +27,9 @@
  * @ingroup SpecialPage
  */
 class SpecialBlockList extends SpecialPage {
+       protected $target;
 
-       protected $target, $options;
+       protected $options;
 
        function __construct() {
                parent::__construct( 'BlockList' );
@@ -203,7 +204,11 @@ class SpecialBlockList extends SpecialPage {
                        foreach ( $otherBlockLink as $link ) {
                                $list .= Html::rawElement( 'li', array(), $link ) . "\n";
                        }
-                       $out->addHTML( Html::rawElement( 'ul', array( 'class' => 'mw-ipblocklist-otherblocks' ), $list ) . "\n" );
+                       $out->addHTML( Html::rawElement(
+                               'ul',
+                               array( 'class' => 'mw-ipblocklist-otherblocks' ),
+                               $list
+                       ) . "\n" );
                }
        }
 
@@ -471,11 +476,15 @@ class HTMLBlockedUsersItemSelect extends HTMLSelectField {
                }
 
                // Let folks pick an explicit limit not from our list, as long as it's a real numbr.
-               if ( !in_array( $value, $this->mParams['options'] ) && $value == intval( $value ) && $value > 0 ) {
+               if ( !in_array( $value, $this->mParams['options'] )
+                       && $value == intval( $value )
+                       && $value > 0
+               ) {
                        // This adds the explicitly requested limit value to the drop-down,
                        // then makes sure it's sorted correctly so when we output the list
                        // later, the custom option doesn't just show up last.
-                       $this->mParams['options'][$this->mParent->getLanguage()->formatNum( $value )] = intval( $value );
+                       $this->mParams['options'][$this->mParent->getLanguage()->formatNum( $value )] =
+                               intval( $value );
                        asort( $this->mParams['options'] );
                }
 
index 79636b1..581619f 100644 (file)
@@ -30,7 +30,6 @@
  * @ingroup SpecialPage
  */
 class SpecialBookSources extends SpecialPage {
-
        /**
         * ISBN passed to the page, if any
         */
@@ -55,7 +54,10 @@ class SpecialBookSources extends SpecialPage {
                $this->getOutput()->addHTML( $this->makeForm() );
                if ( strlen( $this->isbn ) > 0 ) {
                        if ( !self::isValidISBN( $this->isbn ) ) {
-                               $this->getOutput()->wrapWikiMsg( "<div class=\"error\">\n$1\n</div>", 'booksources-invalid-isbn' );
+                               $this->getOutput()->wrapWikiMsg(
+                                       "<div class=\"error\">\n$1\n</div>",
+                                       'booksources-invalid-isbn'
+                               );
                        }
                        $this->showList();
                }
@@ -118,10 +120,21 @@ class SpecialBookSources extends SpecialPage {
                global $wgScript;
 
                $form = Html::openElement( 'fieldset' ) . "\n";
-               $form .= Html::element( 'legend', array(), $this->msg( 'booksources-search-legend' )->text() ) . "\n";
+               $form .= Html::element(
+                       'legend',
+                       array(),
+                       $this->msg( 'booksources-search-legend' )->text()
+               ) . "\n";
                $form .= Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) . "\n";
                $form .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) . "\n";
-               $form .= '<p>' . Xml::inputLabel( $this->msg( 'booksources-isbn' )->text(), 'isbn', 'isbn', 20, $this->isbn, array( 'autofocus' => true ) );
+               $form .= '<p>' . Xml::inputLabel(
+                       $this->msg( 'booksources-isbn' )->text(),
+                       'isbn',
+                       'isbn',
+                       20,
+                       $this->isbn,
+                       array( 'autofocus' => true )
+               );
                $form .= '&#160;' . Xml::submitButton( $this->msg( 'booksources-go' )->text() ) . "</p>\n";
                $form .= Html::closeElement( 'form' ) . "\n";
                $form .= Html::closeElement( 'fieldset' ) . "\n";
index b2ddc22..1bbdbea 100644 (file)
@@ -28,7 +28,6 @@
  * @ingroup SpecialPage
  */
 class BrokenRedirectsPage extends QueryPage {
-
        function __construct( $name = 'BrokenRedirects' ) {
                parent::__construct( $name );
        }
@@ -148,7 +147,8 @@ class BrokenRedirectsPage extends QueryPage {
                        );
                }
 
-               $out .= $this->msg( 'parentheses' )->rawParams( $this->getLanguage()->pipeList( $links ) )->escaped();
+               $out .= $this->msg( 'parentheses' )->rawParams( $this->getLanguage()
+                       ->pipeList( $links ) )->escaped();
                $out .= " {$arr} {$to}";
 
                return $out;
index 7763166..cb9b07c 100644 (file)
@@ -38,7 +38,6 @@
  * @since 1.20
  */
 abstract class SpecialCachedPage extends SpecialPage implements ICacheHelper {
-
        /**
         * CacheHelper object to which we forward the non-SpecialPage specific caching work.
         * Initialized in startCache.
@@ -142,7 +141,11 @@ abstract class SpecialCachedPage extends SpecialPage implements ICacheHelper {
         * @param string|null $key
         */
        public function addCachedHTML( $computeFunction, $args = array(), $key = null ) {
-               $this->getOutput()->addHTML( $this->cacheHelper->getCachedValue( $computeFunction, $args, $key ) );
+               $this->getOutput()->addHTML( $this->cacheHelper->getCachedValue(
+                       $computeFunction,
+                       $args,
+                       $key
+               ) );
        }
 
        /**
@@ -158,7 +161,8 @@ abstract class SpecialCachedPage extends SpecialPage implements ICacheHelper {
        }
 
        /**
-        * Sets the time to live for the cache, in seconds or a unix timestamp indicating the point of expiry.
+        * Sets the time to live for the cache, in seconds or a unix timestamp
+        * indicating the point of expiry.
         *
         * @since 1.20
         *
index 07a2a86..c57e33b 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup SpecialPage
  */
 class SpecialChangeEmail extends UnlistedSpecialPage {
-
        /**
         * Users password
         * @var string
@@ -233,13 +232,19 @@ class SpecialChangeEmail extends UnlistedSpecialPage {
                $throttleCount = LoginForm::incLoginThrottle( $user->getName() );
                if ( $throttleCount === true ) {
                        $lang = $this->getLanguage();
-                       $this->error( array( 'changeemail-throttled', $lang->formatDuration( $wgPasswordAttemptThrottle['seconds'] ) ) );
+                       $this->error( array(
+                               'changeemail-throttled',
+                               $lang->formatDuration( $wgPasswordAttemptThrottle['seconds'] )
+                       ) );
 
                        return false;
                }
 
                global $wgRequirePasswordforEmailChange;
-               if ( $wgRequirePasswordforEmailChange && !$user->checkTemporaryPassword( $pass ) && !$user->checkPassword( $pass ) ) {
+               if ( $wgRequirePasswordforEmailChange
+                       && !$user->checkTemporaryPassword( $pass )
+                       && !$user->checkPassword( $pass )
+               ) {
                        $this->error( 'wrongpassword' );
 
                        return false;
index 8afbf4b..f4ce882 100644 (file)
@@ -27,8 +27,8 @@
  * @ingroup SpecialPage
  */
 class SpecialChangePassword extends FormSpecialPage {
-
-       protected $mUserName, $mDomain;
+       protected $mUserName;
+       protected $mDomain;
 
        // Optional Wikitext Message to show above the password change form
        protected $mPreTextMessage = null;
@@ -178,7 +178,6 @@ class SpecialChangePassword extends FormSpecialPage {
                        return false;
                }
 
-
                if ( $request->getCheck( 'wpCancel' ) ) {
                        $titleObj = Title::newFromText( $request->getVal( 'returnto' ) );
                        if ( !$titleObj instanceof Title ) {
index 6a4467c..0571d0d 100644 (file)
@@ -1055,7 +1055,8 @@ class ContribsPager extends ReverseChronologicalPager {
                        # Show user names for /newbies as there may be different users.
                        # Note that we already excluded rows with hidden user names.
                        if ( $this->contribs == 'newbie' ) {
-                               $userlink = ' . . ' . $lang->getDirMark() . Linker::userLink( $rev->getUser(), $rev->getUserText() );
+                               $userlink = ' . . ' . $lang->getDirMark()
+                                       . Linker::userLink( $rev->getUser(), $rev->getUserText() );
                                $userlink .= ' ' . $this->msg( 'parentheses' )->rawParams(
                                        Linker::userTalkLink( $rev->getUser(), $rev->getUserText() ) )->escaped() . ' ';
                        } else {
index d781e6d..448637e 100644 (file)
  */
 class SpecialCreateAccount extends SpecialRedirectToSpecial {
        function __construct() {
-               parent::__construct( 'CreateAccount', 'Userlogin', 'signup', array( 'returnto', 'returntoquery', 'uselang' ) );
+               parent::__construct(
+                       'CreateAccount',
+                       'Userlogin',
+                       'signup',
+                       array( 'returnto', 'returntoquery', 'uselang' )
+               );
        }
 
        // No reason to hide this link on Special:Specialpages
index 91ef797..14d671c 100644 (file)
@@ -163,6 +163,11 @@ class MovePageForm extends UnlistedSpecialPage {
                                        "<div class=\"error mw-moveuserpage-warning\">\n$1\n</div>",
                                        'moveuserpage-warning'
                                );
+                       } elseif ( $this->oldTitle->getNamespace() == NS_CATEGORY ) {
+                               $out->wrapWikiMsg(
+                                       "<div class=\"error mw-movecategorypage-warning\">\n$1\n</div>",
+                                       'movecategorypage-warning'
+                               );
                        }
 
                        $out->addWikiMsg( $wgFixDoubleRedirects ?
index 4006e49..5ce2812 100644 (file)
@@ -435,7 +435,11 @@ class LoginForm extends SpecialPage {
 
                // Normalize the name so that silly things don't cause "invalid username"
                // errors. User::newFromName does some rather strict checking, rejecting
-               // e.g. leading/trailing/multiple spaces.
+               // e.g. leading/trailing/multiple spaces. But first we need to reject
+               // usernames that would be treated as titles with a fragment part.
+               if ( strpos( $this->mUsername, '#' ) !== false ) {
+                       return Status::newFatal( 'noname' );
+               }
                $title = Title::makeTitleSafe( NS_USER, $this->mUsername );
                if ( !is_object( $title ) ) {
                        return Status::newFatal( 'noname' );
index d5b8d8b..33b2400 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+// @codingStandardsIgnoreFile
 /**
  * Template used when there is no LocalSettings.php file.
  *
index 1c8bbd1..9118701 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+// @codingStandardsIgnoreFile
 /**
  * Html form for account creation (since 1.22 with VForm appearance).
  *
@@ -22,7 +23,6 @@
  */
 
 class UsercreateTemplate extends BaseTemplate {
-
        /**
         * Extensions (AntiSpoof and TitleBlacklist) call this in response to
         * UserCreateForm hook to add checkboxes to the create account form.
index 29908d7..0aad07d 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+// @codingStandardsIgnoreFile
 /**
  * Html form for user login (since 1.22 with VForm appearance).
  *
index 746c16d..9d56479 100644 (file)
@@ -120,6 +120,7 @@ abstract class UploadBase {
                                return $permission;
                        }
                }
+
                return true;
        }
 
@@ -167,6 +168,7 @@ abstract class UploadBase {
                $handler = new $className;
 
                $handler->initializeFromRequest( $request );
+
                return $handler;
        }
 
@@ -179,7 +181,8 @@ abstract class UploadBase {
                return false;
        }
 
-       public function __construct() {}
+       public function __construct() {
+       }
 
        /**
         * Returns the upload type. Should be overridden by child classes
@@ -267,6 +270,7 @@ abstract class UploadBase {
                        $path = $srcPath;
                }
                wfProfileOut( __METHOD__ );
+
                return $path;
        }
 
@@ -282,6 +286,7 @@ abstract class UploadBase {
                 */
                if ( $this->isEmptyFile() ) {
                        wfProfileOut( __METHOD__ );
+
                        return array( 'status' => self::EMPTY_FILE );
                }
 
@@ -291,6 +296,7 @@ abstract class UploadBase {
                $maxSize = self::getMaxUploadSize( $this->getSourceType() );
                if ( $this->mFileSize > $maxSize ) {
                        wfProfileOut( __METHOD__ );
+
                        return array(
                                'status' => self::FILE_TOO_LARGE,
                                'max' => $maxSize,
@@ -305,6 +311,7 @@ abstract class UploadBase {
                $verification = $this->verifyFile();
                if ( $verification !== true ) {
                        wfProfileOut( __METHOD__ );
+
                        return array(
                                'status' => self::VERIFICATION_ERROR,
                                'details' => $verification
@@ -317,6 +324,7 @@ abstract class UploadBase {
                $result = $this->validateName();
                if ( $result !== true ) {
                        wfProfileOut( __METHOD__ );
+
                        return $result;
                }
 
@@ -325,10 +333,12 @@ abstract class UploadBase {
                        array( $this->mDestName, $this->mTempPath, &$error ) )
                ) {
                        wfProfileOut( __METHOD__ );
+
                        return array( 'status' => self::HOOK_ABORTED, 'error' => $error );
                }
 
                wfProfileOut( __METHOD__ );
+
                return array( 'status' => self::OK );
        }
 
@@ -351,6 +361,7 @@ abstract class UploadBase {
                                        $result['blacklistedExt'] = $this->mBlackListedExtensions;
                                }
                        }
+
                        return $result;
                }
                $this->mDestName = $this->getLocalFile()->getName();
@@ -374,6 +385,7 @@ abstract class UploadBase {
                        global $wgMimeTypeBlacklist;
                        if ( $this->checkFileExtension( $mime, $wgMimeTypeBlacklist ) ) {
                                wfProfileOut( __METHOD__ );
+
                                return array( 'filetype-badmime', $mime );
                        }
 
@@ -388,12 +400,14 @@ abstract class UploadBase {
                        foreach ( $ieTypes as $ieType ) {
                                if ( $this->checkFileExtension( $ieType, $wgMimeTypeBlacklist ) ) {
                                        wfProfileOut( __METHOD__ );
+
                                        return array( 'filetype-bad-ie-mime', $ieType );
                                }
                        }
                }
 
                wfProfileOut( __METHOD__ );
+
                return true;
        }
 
@@ -409,6 +423,7 @@ abstract class UploadBase {
                $status = $this->verifyPartialFile();
                if ( $status !== true ) {
                        wfProfileOut( __METHOD__ );
+
                        return $status;
                }
 
@@ -419,6 +434,7 @@ abstract class UploadBase {
                        # XXX: Missing extension will be caught by validateName() via getTitle()
                        if ( $this->mFinalExtension != '' && !$this->verifyExtension( $mime, $this->mFinalExtension ) ) {
                                wfProfileOut( __METHOD__ );
+
                                return array( 'filetype-mime-mismatch', $this->mFinalExtension, $mime );
                        }
                }
@@ -429,6 +445,7 @@ abstract class UploadBase {
                        if ( !$handlerStatus->isOK() ) {
                                $errors = $handlerStatus->getErrorsArray();
                                wfProfileOut( __METHOD__ );
+
                                return reset( $errors );
                        }
                }
@@ -436,11 +453,13 @@ abstract class UploadBase {
                wfRunHooks( 'UploadVerifyFile', array( $this, $mime, &$status ) );
                if ( $status !== true ) {
                        wfProfileOut( __METHOD__ );
+
                        return $status;
                }
 
                wfDebug( __METHOD__ . ": all clear; passing.\n" );
                wfProfileOut( __METHOD__ );
+
                return true;
        }
 
@@ -466,6 +485,7 @@ abstract class UploadBase {
                $status = $this->verifyMimeType( $mime );
                if ( $status !== true ) {
                        wfProfileOut( __METHOD__ );
+
                        return $status;
                }
 
@@ -473,12 +493,14 @@ abstract class UploadBase {
                if ( !$wgDisableUploadScriptChecks ) {
                        if ( self::detectScript( $this->mTempPath, $mime, $this->mFinalExtension ) ) {
                                wfProfileOut( __METHOD__ );
+
                                return array( 'uploadscripted' );
                        }
                        if ( $this->mFinalExtension == 'svg' || $mime == 'image/svg+xml' ) {
                                $svgStatus = $this->detectScriptInSvg( $this->mTempPath );
                                if ( $svgStatus !== false ) {
                                        wfProfileOut( __METHOD__ );
+
                                        return $svgStatus;
                                }
                        }
@@ -495,11 +517,13 @@ abstract class UploadBase {
                                $error = reset( $errors );
                                if ( $error[0] !== 'zip-wrong-format' ) {
                                        wfProfileOut( __METHOD__ );
+
                                        return $error;
                                }
                        }
                        if ( $this->mJavaDetected ) {
                                wfProfileOut( __METHOD__ );
+
                                return array( 'uploadjava' );
                        }
                }
@@ -508,10 +532,12 @@ abstract class UploadBase {
                $virus = $this->detectVirus( $this->mTempPath );
                if ( $virus ) {
                        wfProfileOut( __METHOD__ );
+
                        return array( 'uploadvirus', $virus );
                }
 
                wfProfileOut( __METHOD__ );
+
                return true;
        }
 
@@ -581,6 +607,7 @@ abstract class UploadBase {
                if ( $permErrors || $permErrorsUpload || $permErrorsCreate ) {
                        $permErrors = array_merge( $permErrors, wfArrayDiff2( $permErrorsUpload, $permErrors ) );
                        $permErrors = array_merge( $permErrors, wfArrayDiff2( $permErrorsCreate, $permErrors ) );
+
                        return $permErrors;
                }
 
@@ -670,6 +697,7 @@ abstract class UploadBase {
                }
 
                wfProfileOut( __METHOD__ );
+
                return $warnings;
        }
 
@@ -705,6 +733,7 @@ abstract class UploadBase {
                }
 
                wfProfileOut( __METHOD__ );
+
                return $status;
        }
 
@@ -733,6 +762,7 @@ abstract class UploadBase {
                if ( strlen( $this->mFilteredName ) > 240 ) {
                        $this->mTitleError = self::FILENAME_TOO_LONG;
                        $this->mTitle = null;
+
                        return $this->mTitle;
                }
 
@@ -747,6 +777,7 @@ abstract class UploadBase {
                if ( is_null( $nt ) ) {
                        $this->mTitleError = self::ILLEGAL_FILENAME;
                        $this->mTitle = null;
+
                        return $this->mTitle;
                }
                $this->mFilteredName = $nt->getDBkey();
@@ -789,13 +820,16 @@ abstract class UploadBase {
                if ( $this->mFinalExtension == '' ) {
                        $this->mTitleError = self::FILETYPE_MISSING;
                        $this->mTitle = null;
+
                        return $this->mTitle;
                } elseif ( $blackListedExtensions ||
-                               ( $wgCheckFileExtensions && $wgStrictFileExtensions &&
-                                       !$this->checkFileExtension( $this->mFinalExtension, $wgFileExtensions ) ) ) {
+                       ( $wgCheckFileExtensions && $wgStrictFileExtensions &&
+                               !$this->checkFileExtension( $this->mFinalExtension, $wgFileExtensions ) )
+               ) {
                        $this->mBlackListedExtensions = $blackListedExtensions;
                        $this->mTitleError = self::FILETYPE_BADTYPE;
                        $this->mTitle = null;
+
                        return $this->mTitle;
                }
 
@@ -803,6 +837,7 @@ abstract class UploadBase {
                if ( wfIsWindows() && !preg_match( '/^[\x0-\x7f]*$/', $nt->getText() ) ) {
                        $this->mTitleError = self::WINDOWS_NONASCII_FILENAME;
                        $this->mTitle = null;
+
                        return $this->mTitle;
                }
 
@@ -817,10 +852,12 @@ abstract class UploadBase {
                if ( strlen( $partname ) < 1 ) {
                        $this->mTitleError = self::MIN_LENGTH_PARTNAME;
                        $this->mTitle = null;
+
                        return $this->mTitle;
                }
 
                $this->mTitle = $nt;
+
                return $this->mTitle;
        }
 
@@ -834,6 +871,7 @@ abstract class UploadBase {
                        $nt = $this->getTitle();
                        $this->mLocalFile = is_null( $nt ) ? null : wfLocalFile( $nt );
                }
+
                return $this->mLocalFile;
        }
 
@@ -858,6 +896,7 @@ abstract class UploadBase {
                $this->mLocalFile = $file;
 
                wfProfileOut( __METHOD__ );
+
                return $file;
        }
 
@@ -906,6 +945,7 @@ abstract class UploadBase {
        public static function splitExtensions( $filename ) {
                $bits = explode( '.', $filename );
                $basename = array_shift( $bits );
+
                return array( $basename, $bits );
        }
 
@@ -947,10 +987,12 @@ abstract class UploadBase {
                        if ( !$magic->isRecognizableExtension( $extension ) ) {
                                wfDebug( __METHOD__ . ": passing file with unknown detected mime type; " .
                                        "unrecognized extension '$extension', can't verify\n" );
+
                                return true;
                        } else {
                                wfDebug( __METHOD__ . ": rejecting file with unknown detected mime type; " .
                                        "recognized extension '$extension', so probably invalid file\n" );
+
                                return false;
                        }
                }
@@ -960,9 +1002,11 @@ abstract class UploadBase {
                if ( $match === null ) {
                        if ( $magic->getTypesForExtension( $extension ) !== null ) {
                                wfDebug( __METHOD__ . ": No extension known for $mime, but we know a mime for $extension\n" );
+
                                return false;
                        } else {
                                wfDebug( __METHOD__ . ": no file extension known for mime type $mime, passing file\n" );
+
                                return true;
                        }
                } elseif ( $match === true ) {
@@ -970,9 +1014,9 @@ abstract class UploadBase {
 
                        #TODO: if it's a bitmap, make sure PHP or ImageMagic resp. can handle it!
                        return true;
-
                } else {
                        wfDebug( __METHOD__ . ": mime type $mime mismatches file extension $extension, rejecting file\n" );
+
                        return false;
                }
        }
@@ -1007,6 +1051,7 @@ abstract class UploadBase {
 
                if ( !$chunk ) {
                        wfProfileOut( __METHOD__ );
+
                        return false;
                }
 
@@ -1031,6 +1076,7 @@ abstract class UploadBase {
                # check for HTML doctype
                if ( preg_match( "/<!DOCTYPE *X?HTML/i", $chunk ) ) {
                        wfProfileOut( __METHOD__ );
+
                        return true;
                }
 
@@ -1039,6 +1085,7 @@ abstract class UploadBase {
                if ( $extension == 'svg' || strpos( $mime, 'image/svg' ) === 0 ) {
                        if ( self::checkXMLEncodingMissmatch( $file ) ) {
                                wfProfileOut( __METHOD__ );
+
                                return true;
                        }
                }
@@ -1062,7 +1109,7 @@ abstract class UploadBase {
                        '<a href',
                        '<body',
                        '<head',
-                       '<html',   #also in safari
+                       '<html', #also in safari
                        '<img',
                        '<pre',
                        '<script', #also in safari
@@ -1077,6 +1124,7 @@ abstract class UploadBase {
                        if ( false !== strpos( $chunk, $tag ) ) {
                                wfDebug( __METHOD__ . ": found something that may make it be mistaken for html: $tag\n" );
                                wfProfileOut( __METHOD__ );
+
                                return true;
                        }
                }
@@ -1092,6 +1140,7 @@ abstract class UploadBase {
                if ( preg_match( '!type\s*=\s*[\'"]?\s*(?:\w*/)?(?:ecma|java)!sim', $chunk ) ) {
                        wfDebug( __METHOD__ . ": found script types\n" );
                        wfProfileOut( __METHOD__ );
+
                        return true;
                }
 
@@ -1099,6 +1148,7 @@ abstract class UploadBase {
                if ( preg_match( '!(?:href|src|data)\s*=\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk ) ) {
                        wfDebug( __METHOD__ . ": found html-style script urls\n" );
                        wfProfileOut( __METHOD__ );
+
                        return true;
                }
 
@@ -1106,11 +1156,13 @@ abstract class UploadBase {
                if ( preg_match( '!url\s*\(\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk ) ) {
                        wfDebug( __METHOD__ . ": found css-style script urls\n" );
                        wfProfileOut( __METHOD__ );
+
                        return true;
                }
 
                wfDebug( __METHOD__ . ": no scripts found\n" );
                wfProfileOut( __METHOD__ );
+
                return false;
        }
 
@@ -1131,16 +1183,19 @@ abstract class UploadBase {
                                && !in_array( strtoupper( $encMatch[1] ), self::$safeXmlEncodings )
                        ) {
                                wfDebug( __METHOD__ . ": Found unsafe XML encoding '{$encMatch[1]}'\n" );
+
                                return true;
                        }
                } elseif ( preg_match( "!<\?xml\b!si", $contents ) ) {
                        // Start of XML declaration without an end in the first $wgSVGMetadataCutoff
                        // bytes. There shouldn't be a legitimate reason for this to happen.
                        wfDebug( __METHOD__ . ": Unmatched XML declaration start\n" );
+
                        return true;
                } elseif ( substr( $contents, 0, 4 ) == "\x4C\x6F\xA7\x94" ) {
                        // EBCDIC encoded XML
                        wfDebug( __METHOD__ . ": EBCDIC Encoded XML\n" );
+
                        return true;
                }
 
@@ -1151,17 +1206,19 @@ abstract class UploadBase {
                        wfSuppressWarnings();
                        $str = iconv( $encoding, 'UTF-8', $contents );
                        wfRestoreWarnings();
-                       if ( $str != '' && preg_match( "!<\?xml\b(.*?)\?>!si", $str, $matches ) ) {
+                       if ( $str != '' && preg_match( "!<\?xml\b(.*?)\?>!si", $str, $matches ) ) {
                                if ( preg_match( $encodingRegex, $matches[1], $encMatch )
                                        && !in_array( strtoupper( $encMatch[1] ), self::$safeXmlEncodings )
                                ) {
                                        wfDebug( __METHOD__ . ": Found unsafe XML encoding '{$encMatch[1]}'\n" );
+
                                        return true;
                                }
                        } elseif ( $str != '' && preg_match( "!<\?xml\b!si", $str ) ) {
                                // Start of XML declaration without an end in the first $wgSVGMetadataCutoff
                                // bytes. There shouldn't be a legitimate reason for this to happen.
                                wfDebug( __METHOD__ . ": Unmatched XML declaration start\n" );
+
                                return true;
                        }
                }
@@ -1188,8 +1245,10 @@ abstract class UploadBase {
                        if ( $this->mSVGNSError ) {
                                return array( 'uploadscriptednamespace', $this->mSVGNSError );
                        }
+
                        return array( 'uploadscripted' );
                }
+
                return false;
        }
 
@@ -1204,6 +1263,7 @@ abstract class UploadBase {
                if ( preg_match( '/xml-stylesheet/i', $target ) ) {
                        return true;
                }
+
                return false;
        }
 
@@ -1257,6 +1317,7 @@ abstract class UploadBase {
                        wfDebug( __METHOD__ . ": Non-svg namespace '$namespace' in uploaded file.\n" );
                        // @TODO return a status object to a closure in XmlTypeCheck, for MW1.21+
                        $this->mSVGNSError = $namespace;
+
                        return true;
                }
 
@@ -1265,24 +1326,28 @@ abstract class UploadBase {
                 */
                if ( $strippedElement == 'script' ) {
                        wfDebug( __METHOD__ . ": Found script element '$element' in uploaded file.\n" );
+
                        return true;
                }
 
                # e.g., <svg xmlns="http://www.w3.org/2000/svg"> <handler xmlns:ev="http://www.w3.org/2001/xml-events" ev:event="load">alert(1)</handler> </svg>
                if ( $strippedElement == 'handler' ) {
                        wfDebug( __METHOD__ . ": Found scriptable element '$element' in uploaded file.\n" );
+
                        return true;
                }
 
                # SVG reported in Feb '12 that used xml:stylesheet to generate javascript block
                if ( $strippedElement == 'stylesheet' ) {
                        wfDebug( __METHOD__ . ": Found scriptable element '$element' in uploaded file.\n" );
+
                        return true;
                }
 
                # Block iframes, in case they pass the namespace check
                if ( $strippedElement == 'iframe' ) {
                        wfDebug( __METHOD__ . ": iframe in uploaded file.\n" );
+
                        return true;
                }
 
@@ -1292,48 +1357,56 @@ abstract class UploadBase {
 
                        if ( substr( $stripped, 0, 2 ) == 'on' ) {
                                wfDebug( __METHOD__ . ": Found event-handler attribute '$attrib'='$value' in uploaded file.\n" );
+
                                return true;
                        }
 
                        # href with javascript target
                        if ( $stripped == 'href' && strpos( strtolower( $value ), 'javascript:' ) !== false ) {
                                wfDebug( __METHOD__ . ": Found script in href attribute '$attrib'='$value' in uploaded file.\n" );
+
                                return true;
                        }
 
                        # href with embedded svg as target
                        if ( $stripped == 'href' && preg_match( '!data:[^,]*image/svg[^,]*,!sim', $value ) ) {
                                wfDebug( __METHOD__ . ": Found href to embedded svg \"<$strippedElement '$attrib'='$value'...\" in uploaded file.\n" );
+
                                return true;
                        }
 
                        # href with embedded (text/xml) svg as target
                        if ( $stripped == 'href' && preg_match( '!data:[^,]*text/xml[^,]*,!sim', $value ) ) {
                                wfDebug( __METHOD__ . ": Found href to embedded svg \"<$strippedElement '$attrib'='$value'...\" in uploaded file.\n" );
+
                                return true;
                        }
 
                        # use set/animate to add event-handler attribute to parent
                        if ( ( $strippedElement == 'set' || $strippedElement == 'animate' ) && $stripped == 'attributename' && substr( $value, 0, 2 ) == 'on' ) {
                                wfDebug( __METHOD__ . ": Found svg setting event-handler attribute with \"<$strippedElement $stripped='$value'...\" in uploaded file.\n" );
+
                                return true;
                        }
 
                        # use set to add href attribute to parent element
                        if ( $strippedElement == 'set' && $stripped == 'attributename' && strpos( $value, 'href' ) !== false ) {
                                wfDebug( __METHOD__ . ": Found svg setting href attribute '$value' in uploaded file.\n" );
+
                                return true;
                        }
 
                        # use set to add a remote / data / script target to an element
                        if ( $strippedElement == 'set' && $stripped == 'to' && preg_match( '!(http|https|data|script):!sim', $value ) ) {
                                wfDebug( __METHOD__ . ": Found svg setting attribute to '$value' in uploaded file.\n" );
+
                                return true;
                        }
 
                        # use handler attribute with remote / data / script
                        if ( $stripped == 'handler' && preg_match( '!(http|https|data|script):!sim', $value ) ) {
                                wfDebug( __METHOD__ . ": Found svg setting handler with remote/data/script '$attrib'='$value' in uploaded file.\n" );
+
                                return true;
                        }
 
@@ -1343,6 +1416,7 @@ abstract class UploadBase {
                                foreach ( $matches[1] as $match ) {
                                        if ( !preg_match( '!(?:font|clip-path|fill|filter|marker|marker-end|marker-mid|marker-start|mask|stroke)\s*:\s*url\s*\(\s*(#|\'#|"#)!sim', $match ) ) {
                                                wfDebug( __METHOD__ . ": Found svg setting a style with remote url '$attrib'='$value' in uploaded file.\n" );
+
                                                return true;
                                        }
                                }
@@ -1351,9 +1425,9 @@ abstract class UploadBase {
                        # image filters can pull in url, which could be svg that executes scripts
                        if ( $strippedElement == 'image' && $stripped == 'filter' && preg_match( '!url\s*\(!sim', $value ) ) {
                                wfDebug( __METHOD__ . ": Found image filter with url: \"<$strippedElement $stripped='$value'...\" in uploaded file.\n" );
+
                                return true;
                        }
-
                }
 
                return false; //No scripts detected
@@ -1369,6 +1443,7 @@ abstract class UploadBase {
                $parts = explode( ':', strtolower( $element ) );
                $name = array_pop( $parts );
                $ns = implode( ':', $parts );
+
                return array( $ns, $name );
        }
 
@@ -1379,6 +1454,7 @@ abstract class UploadBase {
        private function stripXmlNamespace( $name ) {
                // 'http://www.w3.org/2000/svg:script' -> 'script'
                $parts = explode( ':', strtolower( $name ) );
+
                return array_pop( $parts );
        }
 
@@ -1399,6 +1475,7 @@ abstract class UploadBase {
                if ( !$wgAntivirus ) {
                        wfDebug( __METHOD__ . ": virus scanner disabled\n" );
                        wfProfileOut( __METHOD__ );
+
                        return null;
                }
 
@@ -1407,6 +1484,7 @@ abstract class UploadBase {
                        $wgOut->wrapWikiMsg( "<div class=\"error\">\n$1\n</div>",
                                array( 'virus-badscanner', $wgAntivirus ) );
                        wfProfileOut( __METHOD__ );
+
                        return wfMessage( 'virus-unknownscanner' )->text() . " $wgAntivirus";
                }
 
@@ -1478,6 +1556,7 @@ abstract class UploadBase {
                }
 
                wfProfileOut( __METHOD__ );
+
                return $output;
        }
 
@@ -1589,7 +1668,7 @@ abstract class UploadBase {
 
                // Check for files with the same name but a different extension
                $similarFiles = RepoGroup::singleton()->getLocalRepo()->findFilesByPrefix(
-                               "{$partname}.", 1 );
+                       "{$partname}.", 1 );
                if ( count( $similarFiles ) ) {
                        return array(
                                'warning' => 'exists-normalized',
@@ -1639,11 +1718,12 @@ abstract class UploadBase {
        public static function isThumbName( $filename ) {
                $n = strrpos( $filename, '.' );
                $partname = $n ? substr( $filename, 0, $n ) : $filename;
+
                return (
-                                       substr( $partname, 3, 3 ) == 'px-' ||
-                                       substr( $partname, 2, 3 ) == 'px-'
-                               ) &&
-                               preg_match( "/[0-9]{2}/", substr( $partname, 0, 2 ) );
+                       substr( $partname, 3, 3 ) == 'px-' ||
+                       substr( $partname, 2, 3 ) == 'px-'
+               ) &&
+               preg_match( "/[0-9]{2}/", substr( $partname, 0, 2 ) );
        }
 
        /**
@@ -1670,6 +1750,7 @@ abstract class UploadBase {
                                $blacklist[] = trim( $line );
                        }
                }
+
                return $blacklist;
        }
 
@@ -1694,6 +1775,7 @@ abstract class UploadBase {
                        $imParam = ApiQueryImageInfo::getPropertyNames();
                        $info = ApiQueryImageInfo::getInfo( $file, array_flip( $imParam ), $result );
                }
+
                return $info;
        }
 
@@ -1704,6 +1786,7 @@ abstract class UploadBase {
        public function convertVerifyErrorToStatus( $error ) {
                $code = $error['status'];
                unset( $code['status'] );
+
                return Status::newFatal( $this->getVerificationErrorCode( $code ), $error );
        }
 
index d15ae43..6f90280 100644 (file)
@@ -87,6 +87,7 @@ class UploadFromChunks extends UploadFromFile {
 
                // Update db table to reflect initial "chunk" state
                $this->updateChunkStatus();
+
                return $this->mLocalFile;
        }
 
@@ -154,6 +155,7 @@ class UploadFromChunks extends UploadFromFile {
                if ( $ret['status'] !== UploadBase::OK ) {
                        wfDebugLog( 'fileconcatenate', "Verification failed for chunked upload" );
                        $status->fatal( $this->getVerificationErrorCode( $ret['status'] ) );
+
                        return $status;
                }
 
@@ -178,6 +180,7 @@ class UploadFromChunks extends UploadFromFile {
         */
        public function performUpload( $comment, $pageText, $watch, $user ) {
                $rv = parent::performUpload( $comment, $pageText, $watch, $user );
+
                return $rv;
        }
 
@@ -188,11 +191,11 @@ class UploadFromChunks extends UploadFromFile {
         */
        function getVirtualChunkLocation( $index ) {
                return $this->repo->getVirtualUrl( 'temp' ) .
-                               '/' .
-                               $this->repo->getHashPath(
-                                       $this->getChunkFileKey( $index )
-                               ) .
-                               $this->getChunkFileKey( $index );
+                       '/' .
+                       $this->repo->getHashPath(
+                               $this->getChunkFileKey( $index )
+                       ) .
+                       $this->getChunkFileKey( $index );
        }
 
        /**
@@ -234,6 +237,7 @@ class UploadFromChunks extends UploadFromFile {
                                $status = Status::newFatal( 'invalid-chunk-offset' );
                        }
                }
+
                return $status;
        }
 
@@ -242,7 +246,7 @@ class UploadFromChunks extends UploadFromFile {
         */
        private function updateChunkStatus() {
                wfDebug( __METHOD__ . " update chunk status for {$this->mFileKey} offset:" .
-                                       $this->getOffset() . ' inx:' . $this->getChunkIndex() . "\n" );
+                       $this->getOffset() . ' inx:' . $this->getChunkIndex() . "\n" );
 
                $dbw = $this->repo->getMasterDb();
                // Use a quick transaction since we will upload the full temp file into shared
@@ -294,6 +298,7 @@ class UploadFromChunks extends UploadFromFile {
                if ( $this->mChunkIndex !== null ) {
                        return $this->mChunkIndex;
                }
+
                return 0;
        }
 
@@ -305,6 +310,7 @@ class UploadFromChunks extends UploadFromFile {
                if ( $this->mOffset !== null ) {
                        return $this->mOffset;
                }
+
                return 0;
        }
 
@@ -325,19 +331,20 @@ class UploadFromChunks extends UploadFromFile {
                        $this->repo->getZonePath( 'temp' ) . "/{$hashPath}{$fileKey}" );
 
                // Check for error in stashing the chunk:
-               if ( ! $storeStatus->isOK() ) {
+               if ( !$storeStatus->isOK() ) {
                        $error = $storeStatus->getErrorsArray();
                        $error = reset( $error );
-                       if ( ! count( $error ) ) {
+                       if ( !count( $error ) ) {
                                $error = $storeStatus->getWarningsArray();
                                $error = reset( $error );
-                               if ( ! count( $error ) ) {
+                               if ( !count( $error ) ) {
                                        $error = array( 'unknown', 'no error recorded' );
                                }
                        }
                        throw new UploadChunkFileException( "Error storing file in '$chunkPath': " .
                                implode( '; ', $error ) );
                }
+
                return $storeStatus;
        }
 
@@ -345,6 +352,7 @@ class UploadFromChunks extends UploadFromFile {
                if ( $index === null ) {
                        $index = $this->getChunkIndex();
                }
+
                return $this->mFileKey . '.' . $index;
        }
 
index 5bc040c..3a1e8bd 100644 (file)
@@ -28,7 +28,6 @@
  * @author Bryan Tong Minh
  */
 class UploadFromFile extends UploadBase {
-
        /**
         * @var WebRequestUpload
         */
index a67fc57..b4e815f 100644 (file)
@@ -157,6 +157,7 @@ class UploadFromStash extends UploadBase {
                // replace mLocalFile with an instance of UploadStashFile, which adds some methods
                // that are useful for stashed files.
                $this->mLocalFile = parent::stashFile( $user );
+
                return $this->mLocalFile;
        }
 
@@ -187,6 +188,7 @@ class UploadFromStash extends UploadBase {
        public function performUpload( $comment, $pageText, $watch, $user ) {
                $rv = parent::performUpload( $comment, $pageText, $watch, $user );
                $this->unsaveUploadedFile();
+
                return $rv;
        }
 }
index 9ebd7a9..b605640 100644 (file)
@@ -49,6 +49,7 @@ class UploadFromUrl extends UploadBase {
                if ( !$user->isAllowed( 'upload_by_url' ) ) {
                        return 'upload_by_url';
                }
+
                return parent::isAllowed( $user );
        }
 
@@ -58,6 +59,7 @@ class UploadFromUrl extends UploadBase {
         */
        public static function isEnabled() {
                global $wgAllowCopyUploads;
+
                return $wgAllowCopyUploads && parent::isEnabled();
        }
 
@@ -103,6 +105,7 @@ class UploadFromUrl extends UploadBase {
                        }
                        */
                }
+
                return $valid;
        }
 
@@ -118,6 +121,7 @@ class UploadFromUrl extends UploadBase {
                        wfRunHooks( 'IsUploadAllowedFromUrl', array( $url, &$allowed ) );
                        self::$allowedUrls[$url] = $allowed;
                }
+
                return self::$allowedUrls[$url];
        }
 
@@ -169,6 +173,7 @@ class UploadFromUrl extends UploadBase {
                global $wgUser;
 
                $url = $request->getVal( 'wpUploadFileURL' );
+
                return !empty( $url )
                        && Http::isValidURI( $url )
                        && $wgUser->isAllowed( 'upload_by_url' );
@@ -202,6 +207,7 @@ class UploadFromUrl extends UploadBase {
                if ( !$this->mAsync ) {
                        return $this->reallyFetchFile( $httpOptions );
                }
+
                return Status::newGood();
        }
 
@@ -213,6 +219,7 @@ class UploadFromUrl extends UploadBase {
        protected function makeTemporaryFile() {
                $tmpFile = TempFSFile::factory( 'URL' );
                $tmpFile->bind( $this );
+
                return $tmpFile->getPath();
        }
 
@@ -259,12 +266,12 @@ class UploadFromUrl extends UploadBase {
                $this->mRemoveTempFile = true;
                $this->mFileSize = 0;
 
-               $options = $httpOptions + array(
-                       'followRedirects' => true,
-               );
+               $options = $httpOptions + array( 'followRedirects' => true );
+
                if ( $wgCopyUploadProxy !== false ) {
                        $options['proxy'] = $wgCopyUploadProxy;
                }
+
                if ( $wgCopyUploadTimeout && !isset( $options['timeout'] ) ) {
                        $options['timeout'] = $wgCopyUploadTimeout;
                }
@@ -297,6 +304,7 @@ class UploadFromUrl extends UploadBase {
                if ( $this->mAsync ) {
                        return array( 'status' => UploadBase::OK );
                }
+
                return parent::verifyUpload();
        }
 
@@ -308,8 +316,10 @@ class UploadFromUrl extends UploadBase {
        public function checkWarnings() {
                if ( $this->mAsync ) {
                        $this->mIgnoreWarnings = false;
+
                        return array();
                }
+
                return parent::checkWarnings();
        }
 
@@ -323,6 +333,7 @@ class UploadFromUrl extends UploadBase {
                if ( $this->mAsync ) {
                        return true;
                }
+
                return parent::verifyTitlePermissions( $user );
        }
 
@@ -367,7 +378,7 @@ class UploadFromUrl extends UploadBase {
                ) );
                $job->initializeSessionData();
                JobQueueGroup::singleton()->push( $job );
+
                return $sessionKey;
        }
-
 }
index 33cb0db..51efdca 100644 (file)
@@ -26,7 +26,7 @@
  *   - enable applications to temporarily stash files without publishing them to the wiki.
  *      - Several parts of MediaWiki do this in similar ways: UploadBase, UploadWizard, and FirefoggChunkedExtension
  *        And there are several that reimplement stashing from scratch, in idiosyncratic ways. The idea is to unify them all here.
- *       Mostly all of them are the same except for storing some custom fields, which we subsume into the data array.
+ *     Mostly all of them are the same except for storing some custom fields, which we subsume into the data array.
  *   - enable applications to find said files later, as long as the db table or temp files haven't been purged.
  *   - enable the uploading user (and *ONLY* the uploading user) to access said files, and thumbnails of said files, via a URL.
  *     We accomplish this using a database table, with ownership checking as you might expect. See SpecialUploadStash, which
@@ -42,7 +42,6 @@
  * @ingroup Upload
  */
 class UploadStash {
-
        // Format of the key for files -- has to be suitable as a filename itself (e.g. ab12cd34ef.jpg)
        const KEY_FORMAT_REGEX = '/^[\w-\.]+\.\w*$/';
 
@@ -106,7 +105,7 @@ class UploadStash {
         * @return UploadStashFile
         */
        public function getFile( $key, $noAuth = false ) {
-               if ( ! preg_match( self::KEY_FORMAT_REGEX, $key ) ) {
+               if ( !preg_match( self::KEY_FORMAT_REGEX, $key ) ) {
                        throw new UploadStashBadPathException( "key '$key' is not in a proper format" );
                }
 
@@ -138,7 +137,7 @@ class UploadStash {
                        }
                }
 
-               if ( ! $this->files[$key]->exists() ) {
+               if ( !$this->files[$key]->exists() ) {
                        wfDebug( __METHOD__ . " tried to get file at $key, but it doesn't exist\n" );
                        throw new UploadStashBadPathException( "path doesn't exist" );
                }
@@ -160,6 +159,7 @@ class UploadStash {
         */
        public function getMetadata( $key ) {
                $this->getFile( $key );
+
                return $this->fileMetadata[$key];
        }
 
@@ -171,6 +171,7 @@ class UploadStash {
         */
        public function getFileProps( $key ) {
                $this->getFile( $key );
+
                return $this->fileProps[$key];
        }
 
@@ -215,7 +216,7 @@ class UploadStash {
 
                $this->fileProps[$key] = $fileProps;
 
-               if ( ! preg_match( self::KEY_FORMAT_REGEX, $key ) ) {
+               if ( !preg_match( self::KEY_FORMAT_REGEX, $key ) ) {
                        throw new UploadStashBadPathException( "key '$key' is not in a proper format" );
                }
 
@@ -224,7 +225,7 @@ class UploadStash {
                // if not already in a temporary area, put it there
                $storeStatus = $this->repo->storeTemp( basename( $pathWithGoodExtension ), $path );
 
-               if ( ! $storeStatus->isOK() ) {
+               if ( !$storeStatus->isOK() ) {
                        // It is a convention in MediaWiki to only return one error per API exception, even if multiple errors
                        // are available. We use reset() to pick the "first" thing that was wrong, preferring errors to warnings.
                        // This is a bit lame, as we may have more info in the $storeStatus and we're throwing it away, but to fix it means
@@ -232,10 +233,10 @@ class UploadStash {
                        // $storeStatus->value just contains the virtual URL (if anything) which is probably useless to the caller
                        $error = $storeStatus->getErrorsArray();
                        $error = reset( $error );
-                       if ( ! count( $error ) ) {
+                       if ( !count( $error ) ) {
                                $error = $storeStatus->getWarningsArray();
                                $error = reset( $error );
-                               if ( ! count( $error ) ) {
+                               if ( !count( $error ) ) {
                                        $error = array( 'unknown', 'no error recorded' );
                                }
                        }
@@ -451,6 +452,7 @@ class UploadStash {
                        // put it in a web accesible directory.
                        return '';
                }
+
                return $extension;
        }
 
@@ -502,6 +504,7 @@ class UploadStash {
                        throw new UploadStashZeroLengthFileException( "File is zero length" );
                }
                $this->files[$key] = $file;
+
                return true;
        }
 }
@@ -528,17 +531,17 @@ class UploadStashFile extends UnregisteredLocalFile {
                if ( $repo->isVirtualUrl( $path ) ) {
                        $path = $repo->resolveVirtualUrl( $path );
                } else {
-
                        // check if path appears to be sane, no parent traversals, and is in this repo's temp zone.
                        $repoTempPath = $repo->getZonePath( 'temp' );
-                       if ( ( ! $repo->validateFilename( $path ) ) ||
-                                       ( strpos( $path, $repoTempPath ) !== 0 ) ) {
+                       if ( ( !$repo->validateFilename( $path ) ) ||
+                               ( strpos( $path, $repoTempPath ) !== 0 )
+                       ) {
                                wfDebug( "UploadStash: tried to construct an UploadStashFile from a file that should already exist at '$path', but path is not valid\n" );
                                throw new UploadStashBadPathException( 'path is not valid' );
                        }
 
                        // check if path exists! and is a plain file.
-                       if ( ! $repo->fileExists( $path ) ) {
+                       if ( !$repo->fileExists( $path ) ) {
                                wfDebug( "UploadStash: tried to construct an UploadStashFile from a file that should already exist at '$path', but path is not found\n" );
                                throw new UploadStashFileNotFoundException( 'cannot find path, or not a plain file' );
                        }
@@ -574,6 +577,7 @@ class UploadStashFile extends UnregisteredLocalFile {
                if ( $thumbName !== false ) {
                        $path .= "/$thumbName";
                }
+
                return $path;
        }
 
@@ -610,6 +614,7 @@ class UploadStashFile extends UnregisteredLocalFile {
         */
        public function getThumbUrl( $thumbName = false ) {
                wfDebug( __METHOD__ . " getting for $thumbName \n" );
+
                return $this->getSpecialUrl( 'thumb/' . $this->getUrlName() . '/' . $thumbName );
        }
 
@@ -620,9 +625,10 @@ class UploadStashFile extends UnregisteredLocalFile {
         * @return string Base url name, like '120px-123456.jpg'
         */
        public function getUrlName() {
-               if ( ! $this->urlName ) {
+               if ( !$this->urlName ) {
                        $this->urlName = $this->fileKey;
                }
+
                return $this->urlName;
        }
 
@@ -636,6 +642,7 @@ class UploadStashFile extends UnregisteredLocalFile {
                if ( !isset( $this->url ) ) {
                        $this->url = $this->getSpecialUrl( 'file/' . $this->getUrlName() );
                }
+
                return $this->url;
        }
 
@@ -674,15 +681,32 @@ class UploadStashFile extends UnregisteredLocalFile {
        public function exists() {
                return $this->repo->fileExists( $this->path );
        }
+}
+
+class UploadStashException extends MWException {
+}
+
+class UploadStashNotAvailableException extends UploadStashException {
+}
+
+class UploadStashFileNotFoundException extends UploadStashException {
+}
+
+class UploadStashBadPathException extends UploadStashException {
+}
+
+class UploadStashFileException extends UploadStashException {
+}
+
+class UploadStashZeroLengthFileException extends UploadStashException {
+}
+
+class UploadStashNotLoggedInException extends UploadStashException {
+}
+
+class UploadStashWrongOwnerException extends UploadStashException {
+}
 
+class UploadStashNoSuchKeyException extends UploadStashException {
 }
 
-class UploadStashException extends MWException {};
-class UploadStashNotAvailableException extends UploadStashException {};
-class UploadStashFileNotFoundException extends UploadStashException {};
-class UploadStashBadPathException extends UploadStashException {};
-class UploadStashFileException extends UploadStashException {};
-class UploadStashZeroLengthFileException extends UploadStashException {};
-class UploadStashNotLoggedInException extends UploadStashException {};
-class UploadStashWrongOwnerException extends UploadStashException {};
-class UploadStashNoSuchKeyException extends UploadStashException {};
index 98938b2..65d74e9 100644 (file)
@@ -754,6 +754,9 @@ class LanguageConverter {
                global $wgDisableLangConversion, $wgDisableTitleConversion, $wgRequest;
                $isredir = $wgRequest->getText( 'redirect', 'yes' );
                $action = $wgRequest->getText( 'action' );
+               if ( $action == 'edit' && $wgRequest->getBool( 'redlink' ) ) {
+                       $action = 'view';
+               }
                $linkconvert = $wgRequest->getText( 'linkconvert', 'yes' );
                $disableLinkConversion = $wgDisableLangConversion
                        || $wgDisableTitleConversion;
index a3e5f02..18c115c 100644 (file)
        "newimages-summary": "Die spesiale bladsy wys die nuutste lêers wat na die wiki opgelaai is.",
        "newimages-legend": "Filter",
        "newimages-label": "Lêernaam (of deel daarvan):",
-       "showhidebots": "($1 robotte)",
        "noimages": "Niks te sien nie.",
        "ilsubmit": "Soek",
        "bydate": "volgens datum",
index e5b1221..3752ef0 100644 (file)
        "newimages": "የአዳዲስ ሥዕሎች ማሳያ አዳራሽ",
        "imagelisttext": "$1 የተጨመሩ ሥእሎች ወይም ፋይሎች ከታች ይዘረዝራሉ ($2)።",
        "newimages-legend": "ማጣሪያ",
-       "showhidebots": "(«bots» $1)",
        "noimages": "ምንም የለም!",
        "ilsubmit": "ፍለጋ",
        "bydate": "በተጨመሩበት ወቅት",
index 61a5bcb..1c2bcae 100644 (file)
        "newimages-summary": "Ista pachina especial amuestra os zaguers fichers cargatos.",
        "newimages-legend": "Filtro",
        "newimages-label": "Nombre d'o fichero (u bella parte d'el):",
-       "showhidebots": "($1 bots)",
        "noimages": "No bi ha cosa a veyer.",
        "ilsubmit": "Mirar",
        "bydate": "por a calendata",
index 65290dd..8771207 100644 (file)
        "newimages-summary": "هذه الصفحة الخاصة تعرض آخر الملفات المرفوعة.",
        "newimages-legend": "المرشح",
        "newimages-label": "اسم الملف (أو جزء منه):",
-       "showhidebots": "($1 بوتات)",
        "noimages": "لا شيء للعرض.",
        "ilsubmit": "بحث",
        "bydate": "حسب التاريخ",
index d2e2328..ae9538a 100644 (file)
        "newimages-summary": "الصفحةالمخصوصة دى بتعرض آخر الملفات المتحملة",
        "newimages-legend": "اسم الملف",
        "newimages-label": "اسم الملف (او حتة منه):",
-       "showhidebots": "($1 بوتات)",
        "noimages": "مافيش حاجة للعرض.",
        "ilsubmit": "تدوير",
        "bydate": "على حسب التاريخ",
index 639129c..b7bf121 100644 (file)
        "accmailtext": "[[User talk:$1|$1]]-ৰ কাৰণে যাদৃচ্ছিকভাৱে উৎপন্ন কৰা গুপ্তশব্দ $2লৈ পঠোৱা হ'ল । \nএই নতুন একাউন্টত প্ৰৱেশ কৰি ''[[Special:ChangePassword|গুপ্তশব্দ সলনি কৰক]]'' পৃষ্ঠাখনত শব্দতো সলনি কৰি ল’ব পাৰিব ।",
        "newarticle": "(নতুন)",
        "newarticletext": "আপুনি বিচৰা প্ৰবন্ধটো বিচাৰি পোৱা নগ'ল।\n\nইচ্ছা কৰিলে আপুনিয়েই এই প্ৰবন্ধটো লিখা আৰম্ভ কৰিব পাৰে। [$1 ইয়াত] সহায় পাব।\n\nআপুনি যদি ইয়ালৈ ভুলতে আহিছে, তেনেহলে আপোনাৰ ব্ৰাওজাৰৰ '''BACK''' বুটামত টিপা মাৰক।",
-       "anontalkpagetext": "----''à¦\8fà¦\87à¦\96ন à¦\86লà§\8bà¦\9aনা à¦ªà§\83ষà§\8dঠা à¦¬à§\87নামà§\80 à¦¸à¦¦à¦¸à§\8dযৰ à¦¬à¦¾à¦¬à§\87, à¦¯à¦¿à¦¯à¦¼à§\87 à¦¨à¦¿à¦\9cা à¦\8fà¦\95াà¦\89নà§\8dà¦\9f  à¦¸à§\83ষà§\8dà¦\9fি à¦\95ৰা à¦¨à¦¾à¦\87 à¦¬à¦¾ à¦¯à¦¿à¦¯à¦¼à§\87 à¦¸à§\87à¦\87 à¦\8fà¦\95াà¦\89নà§\8dà¦\9f à¦¬à§\8dযৱহাৰ à¦¨à¦\95ৰà§\87 à¥¤\nà¦\8fতà§\87à¦\95à§\87 à¦\86মি à¦¤à§\87à¦\96à§\87তসà¦\95লà¦\95 à¦\86à¦\87-পি à¦ à¦¿à¦\95নাৰà§\87 à¦\9aিনাà¦\95à§\8dত à¦\95ৰিবলà§\88 à¦¬à¦¾à¦§à§\8dয à¥¤\nসà§\87à¦\87 à¦\8fà¦\95à§\87à¦\87 à¦\86à¦\87-পি à¦ à¦¿à¦\95না à¦\85নà§\87à¦\95à§\87à¦\87 à¦¬à§\8dযৱহাৰ à¦\95ৰিব à¦ªà¦¾à§°à§\87 ।\nআপুনি যদি এজন বেনামী সদস্য আৰু যদি আপুনি অনুভৱ কৰে যে আপোনাৰ প্ৰতি অপ্ৰাসঙ্গিক মন্তব্য কৰা হৈছে, তেনেহলে আন বেনামী সদস্যৰ পৰা পৃথক কৰিবলৈ \n[[Special:UserLogin/signup|একাউন্ট সৃষ্টি কৰক]] বা [[Special:UserLogin|প্ৰৱেশ কৰক]] ।''",
+       "anontalkpagetext": "----''à¦\8fà¦\87à¦\96ন à¦\86লà§\8bà¦\9aনা à¦ªà§\83ষà§\8dঠা à¦¬à§\87নামà§\80 à¦¸à¦¦à¦¸à§\8dযৰ à¦¬à¦¾à¦¬à§\87, à¦¯à¦¿à¦¯à¦¼à§\87 à¦¨à¦¿à¦\9cা à¦\8fà¦\95াà¦\89ণà§\8dà¦\9f  à¦¸à§\83ষà§\8dà¦\9fি à¦\95ৰা à¦¨à¦¾à¦\87 à¦¬à¦¾ à¦¯à¦¿à¦¯à¦¼à§\87 à¦¸à§\87à¦\87 à¦\8fà¦\95াà¦\89ণà§\8dà¦\9f à¦¬à§\8dযৱহাৰ à¦¨à¦\95ৰà§\87।\nà¦\8fতà§\87à¦\95à§\87 à¦\86মি à¦¤à§\87à¦\96à§\87তসà¦\95লà¦\95 à¦\86à¦\87-পি à¦ à¦¿à¦\95নাৰà§\87 à¦\9aিনাà¦\95à§\8dত à¦\95ৰিবলà§\88 à¦¬à¦¾à¦§à§\8dয।\nসà§\87à¦\87 à¦\8fà¦\95à§\87à¦\87 à¦\86à¦\87-পি à¦ à¦¿à¦\95না à¦\85নà§\87à¦\95à§\87à¦\87 à¦¬à§\8dযৱহাৰ à¦\95ৰিব à¦ªà¦¾à§°à§\87।\nআপুনি যদি এজন বেনামী সদস্য আৰু যদি আপুনি অনুভৱ কৰে যে আপোনাৰ প্ৰতি অপ্ৰাসঙ্গিক মন্তব্য কৰা হৈছে, তেনেহলে আন বেনামী সদস্যৰ পৰা পৃথক কৰিবলৈ \n[[Special:UserLogin/signup|একাউন্ট সৃষ্টি কৰক]] বা [[Special:UserLogin|প্ৰৱেশ কৰক]] ।''",
        "noarticletext": "এই পৃষ্ঠাত বৰ্তমান কোনো পাঠ্য নাই ।\nআপুনি আন পৃষ্ঠাত [[Special:Search/{{PAGENAME}}| এই শিৰোনামা অনুসন্ধান কৰিব পাৰে]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} সম্পৰ্কীয় অভিলেখ অনুসন্ধান কৰিব পাৰে],\nবা [{{fullurl:{{FULLPAGENAME}}|action=edit}} এই পৃষ্ঠা সম্পাদনা কৰিব পাৰে]</span>",
        "noarticletext-nopermission": "এই পৃষ্ঠাত বৰ্তমান কোনো পাঠ্য নাই।\nআপুনি আন পৃষ্ঠাত [[Special:Search/{{PAGENAME}}|এই শিৰোনামা অনুসন্ধান কৰিব পাৰে]],\nবা <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} সম্পৰ্কীয় অভিলেখ অনুসন্ধান কৰিব পাৰে]</span>, কিন্তু এই পৃষ্ঠা সৃষ্টি কৰিবলৈ আপোনাৰ অনুমতি নাই।",
        "missing-revision": "\"{{FULLPAGENAME}}\" নামৰ পৃষ্ঠাৰ #$1 সংশোধনৰ অস্তিত্ব নাই।\n\nসাধাৰণতে বিলোপ কৰা এখন পৃষ্ঠাৰ পুৰণা ইতিহাস লিংক অনুসৰণ কৰিলে এনে হয়।\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} বিলোপন ল'গ]ত অধিক তথ্য পাব।",
        "action-edit": "এই পৃষ্ঠা সম্পাদনা কৰক",
        "action-createpage": "পৃষ্ঠা সৃষ্টি কৰক",
        "action-createtalk": "কথাবতৰা পৃষ্ঠা সৃষ্টি কৰক",
-       "action-createaccount": "à¦\8fà¦\87 à¦¸à¦¦à¦¸à§\8dয à¦\8fà¦\95াà¦\89নà§\8dà¦\9f  সৃষ্টি কৰক",
+       "action-createaccount": "à¦\8fà¦\87 à¦¸à¦¦à¦¸à§\8dয à¦\8fà¦\95াà¦\89ণà§\8dà¦\9f সৃষ্টি কৰক",
        "action-minoredit": "সম্পাদনা অগুৰুত্বপূৰ্ণ বুলি চিহ্নিত কৰক",
        "action-move": "এই পৃষ্ঠা স্থানান্তৰ কৰক",
        "action-move-subpages": "এই পৃষ্ঠা আৰু ইয়াৰ উপপৃষ্ঠাসমূহ আঁতৰাওক",
        "blocklogtext": "এই অভিলেখ অৱৰোধ কৰা আৰু অৱৰোধ আঁতৰ কৰা সদস্য সম্পৰ্কীয়।\nস্বয়ংক্ৰিয়ভাৱে প্ৰতিবন্ধক পোৱা আই.পি. ঠিকনাবোৰ ইয়াত তালিকাভুক্ত কৰা হোৱা নাই।\nসাম্প্ৰতিক কাৰ্যৰত নিষেধ আৰু প্ৰতিবন্ধকৰ বাবে [[Special:BlockList|প্ৰতিবন্ধক তালিকা]] চাওক।",
        "unblocklogentry": "$1 বাৰণ উঠাই লোৱা হ’ল",
        "block-log-flags-anononly": "কেৱল বেনামী সদস্য",
-       "block-log-flags-nocreate": "à¦\8fà¦\95াà¦\89ন্ট সৃষ্টি নিষ্ক্ৰিয় কৰা হৈছে",
+       "block-log-flags-nocreate": "à¦\8fà¦\95াà¦\89ণ্ট সৃষ্টি নিষ্ক্ৰিয় কৰা হৈছে",
        "block-log-flags-noautoblock": "স্বয়ংক্ৰিয়-প্ৰতিবন্ধক নিষ্ক্ৰিয় কৰা হৈছে",
        "block-log-flags-noemail": "ই-মেইল অৱৰোধ কৰা হৈছে",
        "block-log-flags-nousertalk": "নিজৰ কথা-বতৰা পৃষ্ঠা সম্পাদনা কৰিব নোৱাৰি",
        "block-log-flags-angry-autoblock": "বৰ্ধিত স্বয়ংক্ৰিয়-প্ৰতিবন্ধক সক্ৰিয় কৰা হৈছে",
        "block-log-flags-hiddenname": "সদস্যনাম গোপন কৰা হ’ল",
-       "range_block_disabled": "প্ৰশাসকৰ পৰিসীমা প্ৰতিবন্ধক সৃষ্টি কৰিব পৰা ক্ষমতা নিষ্ক্ৰিয় কৰা হৈছে ।",
+       "range_block_disabled": "প্ৰশাসকৰ পৰিসীমা প্ৰতিবন্ধক সৃষ্টি কৰিব পৰা ক্ষমতা নিষ্ক্ৰিয় কৰা হৈছে।",
        "ipb_expiry_invalid": "অবৈধ ম্যাদ উকলা সময়",
        "ipb_expiry_temp": "গুপ্ত সদস্যনাম অৱৰোধ স্থায়ী হ’ব লাগিব ।",
        "ipb_hide_invalid": "এই বিষয়বস্তু নিবাৰণ কৰিব পৰা নগ’ল; ইয়াত {{PLURAL:$1|এটা সম্পাদনা|$1টা সম্পাদনা}} আছে ।",
        "newimages-summary": "এই বিশেষ পৃষ্ঠাখনত সৰ্বশেষত আপল'ড কৰা ফাইলসমূহ দেখিব ।",
        "newimages-legend": "ছেকনী",
        "newimages-label": "নথিৰ নাম (বা তাৰ এটা অংশ)",
-       "showhidebots": "(বট $1)",
        "noimages": "চাবলৈ একো নাই ।",
        "ilsubmit": "সন্ধান কৰক",
        "bydate": "তাৰিখ অনুযায়ী",
index ab26a63..5ce286e 100644 (file)
        "jumptonavigation": "navegación",
        "jumptosearch": "buscar",
        "view-pool-error": "Sentímoslo, los sirvidores tán sobrecargaos nestos momentos.\nHai demasiaos usuarios intentando ver esta páxina.\nPor favor espera un ratu enantes d'intentar otra vuelta entrar a esta páxina.\n\n$1",
+       "generic-pool-error": "Sentímoslo, los sirvidores tán sobrecargaos nestos momentos.\nHai demasiaos usuarios intentando ver esti recursu.\nPor favor espera un momentu enantes d'intentar otra vuelta acceder a esti recursu.",
        "pool-timeout": "Tiempu escosáu esperando pal bloquéu",
        "pool-queuefull": "La cola de trabayu ta enllena",
        "pool-errorunknown": "Fallu desconocíu",
        "edit-gone-missing": "Nun se pudo actualizar la páxina.\nPaez que se desanició.",
        "edit-conflict": "Conflictu d'edición.",
        "edit-no-change": "S'inoró la to edición, porque nun se fizo nengún cambéu nel testu.",
+       "postedit-confirmation-created": "Creóse la páxina.",
+       "postedit-confirmation-restored": "Restauróse la páxina.",
        "postedit-confirmation-saved": "Guardose la edición.",
        "edit-already-exists": "Nun pudo crease una páxina nueva.\nEsta yá esiste.",
        "defaultmessagetext": "Testu predetermináu",
        "action-createpage": "crear páxines",
        "action-createtalk": "crear páxines d'alderique",
        "action-createaccount": "crear esta cuenta d'usuariu",
+       "action-history": "ver l'historial d'esta páxina",
        "action-minoredit": "marcar esta edición como menor",
        "action-move": "treslladar esta páxina",
        "action-move-subpages": "treslladar esta páxina y les sos subpáxines",
        "pageswithprop-prophidden-binary": "valor de propiedá binaria tapecíu ($1)",
        "doubleredirects": "Redireiciones dobles",
        "doubleredirectstext": "Esta páxina llista páxines que redireicionen a otres páxines de redireición.\nCada filera contién enllaces a la primer y segunda redireición, asina como al oxetivu de la segunda redireición, que de vezu ye la páxina oxetivu \"real\", onde tendría d'empobinar la primer redireición.\nLes entraes <del>tachaes</del> tan resueltes.",
-       "double-redirect-fixed-move": "[[$1]] foi treslladáu, agora ye una redireición haza [[$2]]",
-       "double-redirect-fixed-maintenance": "Iguando la doble redireición de [[$1]] a [[$2]].",
+       "double-redirect-fixed-move": "[[$1]] treslladóse.\nAnovóse automáticamente y agora redirixe haza [[$2]].",
+       "double-redirect-fixed-maintenance": "Iguando automáticamente la doble redireición de [[$1]] a [[$2]] nuna xera de mantenimientu.",
        "double-redirect-fixer": "Iguador de redireiciones",
        "brokenredirects": "Redireiciones rotes",
        "brokenredirectstext": "Les siguientes redireiciones enllacien a páxines non esistentes:",
        "newimages-summary": "Esta páxina especial amuesa los caberos archivos xubíos.",
        "newimages-legend": "Peñera",
        "newimages-label": "Nome d'archivu (o una parte d'él):",
-       "showhidebots": "($1 bots)",
        "noimages": "Nun hai nada que ver.",
        "ilsubmit": "Buscar",
        "bydate": "por fecha",
        "htmlform-no": "Non",
        "htmlform-yes": "Sí",
        "htmlform-chosen-placeholder": "Seleicione una opción",
+       "htmlform-cloner-create": "Amestar más",
+       "htmlform-cloner-delete": "Desaniciar",
+       "htmlform-cloner-required": "Necesítase polo menos un valor.",
        "sqlite-has-fts": "$1 con sofitu pa busca de testu completu",
        "sqlite-no-fts": "$1 ensin sofitu pa busca de testu completu",
        "logentry-delete-delete": "$1 {{GENDER:$2|desanició}} la páxina $3",
index 502055f..a93e2de 100644 (file)
        "newimages-summary": "Batu aptafu bu va ironokaf kalvajayan iyeltakeem nedir.",
        "newimages-legend": "Espara",
        "newimages-label": "Iyeltak (ok ki) :",
-       "showhidebots": "($1 stiernik)",
        "noimages": "Mecoba rowina",
        "ilsubmit": "Aneyara",
        "bydate": "kan evla",
index 8f10133..bd8c2bf 100644 (file)
        "newimages": "Yeni faylların siyahısı",
        "newimages-legend": "Filtrlər",
        "newimages-label": "Faylın (və ya onun bir hissəsinin) adı:",
-       "showhidebots": "($1 bot redaktə)",
        "noimages": "Heç nəyi görməmək.",
        "ilsubmit": "Axtar",
        "bydate": "tarixə görə",
index ce002ab..66a889a 100644 (file)
                        "아라"
                ]
        },
-       "tog-underline": "باغلانتیلارین آلتینی خطله:",
-       "tog-hideminor": "سÙ\88Ù\86 Ø¯Û\8cÛ\8cØ´Û\8cÚ©Ù\84Û\8cÚ©Ù\84ردÙ\87 Ú©Û\8cÚ\86Û\8cÚ©â\80\8cلری گیزلت",
-       "tog-hidepatrolled": "نظارتلنمیش دَییشیکلیکلری سون دییشیکلیکلرده گیزلت",
-       "tog-newpageshidepatrolled": "نظارتلنمیش صحیفه‌لری یئنی صحیفه‌لر سیاهی‌سیندان گیزلت",
-       "tog-extendwatchlist": "ایزله‌دیکلری، بوتون دیشیکلیکلری گؤسترمک اوچون گئنیشلندیر",
+       "tog-underline": "باغلانتیلارین آلتینی خطله:",
+       "tog-hideminor": "سÙ\88Ù\92Ù\86 Ø¯Û\8cÛ\8cØ´Û\8cÚ©Ù\84Û\8cÚ©Ù\84ردÙ\87 Ú©Û\8cÚ\86Û\8cÚ©لری گیزلت",
+       "tog-hidepatrolled": "سوْن دییشیکلیکلرده نظارتلنمیش دَییشیکلیکلری گیزلت",
+       "tog-newpageshidepatrolled": "نظارتلنمیش صحیفه‌لری یئنی صحیفه‌لر لیستین‌دن گیزلت",
+       "tog-extendwatchlist": "گؤزله‌دیکلری، یالنیز یئنیلر اۆچون یوْخ، بۆتون دییشیکلیکلری گؤسترمک اۆچون، گئنیشلندیر.",
        "tog-usenewrc": "دَییشیکلیکلری سون دَییشیکلیکلر صحیفه‌سینده ایزله‌دیکلر صحیفه‌سینده گروپ‌لا (جاوااسکریپت لازیم‌دیر)",
-       "tog-numberheadings": "باشلیق‌لاری اوتوماتیک نومره‌له",
-       "tog-showtoolbar": "دَییشدیرمه آراج چوبوغونو گؤستر",
-       "tog-editondblclick": "صحیفه‌‌لری ایکی کلیک‌ده دَییشدیر",
-       "tog-editsectiononrightclick": "بؤلوم‌لرین دیشدیرمه‌سینی، باشلیقلارین اوزرینده ساغ‌کلیک ائتمک‌له ایجازه وئر",
-       "tog-watchcreations": "ياراتدیغیم صحیفه‌‌لری و يوکله‌دیگیم فايل‌لاری ایزله‌مه‌لریمه آرتیر",
-       "tog-watchdefault": "دَییشدیردیگیم صحیفه‌‌لری و فايل‌لاری ایزله‌دیکلریمه آرتیر",
-       "tog-watchmoves": "داشیدیغیم صحیفه‌‌لری و فايل‌لاری ایزله‌دیکلریمه آرتیر",
-       "tog-watchdeletion": "سیلدیگیم صحیفه‌‌لری و فايل‌لاری ایزله‌دیکلریمه آرتیر",
-       "tog-minordefault": "دیفالت اولاراق بوتون دَییشدیر‌مه‌لریمی کیچیک دَییشدیر کیمی نیشانلا",
-       "tog-previewontop": "اؤن‌گؤستریشی يازماق قوتوسوندان قاباق گؤستر",
+       "tog-numberheadings": "باشلیقلاری اوْتوماتیک نۆمره‌له",
+       "tog-showtoolbar": "دَییشدیرمک آراج-چۇبوغونو گؤستر",
+       "tog-editondblclick": "صحیفه‌‌لری ایکی کیلیک‌ده دَییشدیر",
+       "tog-editsectiononrightclick": "بؤلوم‌لرین دَییشدیرمه‌سینی، باشلیقلارین اۆزرینده ساغ‌کلیک ائتمک‌له ایجازه وئر",
+       "tog-watchcreations": "ياراتدیغیم صحیفه‌‌لری و يۆکله‌دیگیم فايل‌لاری، گؤزله‌دیکلریمه آرتیر",
+       "tog-watchdefault": "دَییشدیردیگیم صحیفه‌‌لری و فايل‌لاری، گؤزله‌دیکلریمه آرتیر",
+       "tog-watchmoves": "داشیدیغیم صحیفه‌‌لری و فايل‌لاری گؤزله‌دیکلریمه آرتیر",
+       "tog-watchdeletion": "سیلدیگیم صحیفه‌‌لری و فايل‌لاری گؤزله‌دیکلریمه آرتیر",
+       "tog-minordefault": "وارساییلان اوْلاراق، بۆتون دَییشدیر‌مه‌لری کیچیک کیمی نیشانلا",
+       "tog-previewontop": "اؤن‌گؤستریشی، يازماق قۇتوسوندان قاباق گؤستر",
        "tog-previewonfirst": "ایلک دَییشدیرمه‌ده اؤن‌گؤستریشی گؤستر",
-       "tog-enotifwatchlistpages": "ایزله‌دیکلریم‌ده اولان صحیفه یوخسا فایل دَییشدیریلنده، منه ایمیل گؤندر",
+       "tog-enotifwatchlistpages": "گؤزله‌دیکلریم‌ده اولان بیر صحیفه یا فایل دَییشدیریلنده، منه ایمیل گؤندر",
        "tog-enotifusertalkpages": "دانیشیق صحیفه‌‌م دَییشدیریلنده منه ایمیل گؤندر",
        "tog-enotifminoredits": "صحیفه‌لرده و فایل‌لاردا کیچیک دَییشیکلیکلر اولسا دا منه ایمیل گؤندر",
-       "tog-enotifrevealaddr": "Ù\85Ù\86Û\8cÙ\85 Ø§Û\8cÙ\85Û\8cÙ\84 Ø¢Ø¯Ø±Ø³Û\8cÙ\85Û\8c Ø®Ø¨Ø± Ù\88ئرÙ\85Ù\87 ایمیل‌لرینده گؤستر",
-       "tog-shownumberswatching": "ایزله‌ين ایستیفاده‌چیلرین سایینی گؤستر",
+       "tog-enotifrevealaddr": "Ù\85Ù\86Û\8cÙ\85 Ø§Û\8cÙ\85Û\8cÙ\84 Ø¢Ø¯Ø±Ø³Û\8cÙ\85Û\8c Ø¨Û\8cÙ\84دÛ\8cرÛ\8cØ´ ایمیل‌لرینده گؤستر",
+       "tog-shownumberswatching": "گؤزله‌ین ایستیفاده‌چیلرین سایینی گؤستر",
        "tog-oldsig": "ایندی‌کی ایمضا:",
-       "tog-fancysig": "ویکی متن کیمی ایمضا (اوتوماتیک باغلانتی‌سیز)",
-       "tog-uselivepreview": "دیری اؤن‌گؤستریش ایشلت (تست مرحله‌سینده)",
+       "tog-fancysig": "ایمضانی ویکی-متن کیمی نظره آل (اوْتوماتیک باغلانتی‌سیز)",
+       "tog-uselivepreview": "دیری اؤن‌گؤستریش ایشلت (تِست مرحله‌سینده)",
        "tog-forceeditsummary": "دَییشیکلیک قیساسی بوش قالاندا منی بیلدیر",
-       "tog-watchlisthideown": "منیم دَییشیکلیکلریمی ایزله‌دیکلردن گیزلت",
-       "tog-watchlisthidebots": "بوت دَییشیکلیکلرینی ایزله‌دیکلردن گیزلت",
-       "tog-watchlisthideminor": "کیچیک دَییشیکلیکلری ایزله‌دیکلردن گیزلت",
-       "tog-watchlisthideliu": "گیرمیش ایستیفاده‌چیلرین دَییشیکلیکلرینی ایزله‌دیکلردن گیزلت",
-       "tog-watchlisthideanons": "تانینمامیش ایستیفاده‌چیلرین دَییشیکلیکلرینی ایزله‌دیکلردن گیزلت",
-       "tog-watchlisthidepatrolled": "نظارتلنمیش دَییشیکلیکلری ایزله‌دیکلردن گیزلت",
-       "tog-ccmeonemails": "باشÙ\82ا Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cÙ\84رÙ\87 Ú¯Ø¤Ù\86دردÛ\8cÚ¯Û\8cÙ\85 Ø§Û\8cÙ\85Û\8cÙ\84â\80\8cÙ\84رÛ\8cÙ\86 Ú©Ù\88پیلرینی منه گؤندر",
-       "tog-diffonly": "موقاییسه‌لر آلیتندا صحیفه‌لرین ایچینده‌کیلرینی گؤسترمه",
+       "tog-watchlisthideown": "منیم دَییشیکلیکلریمی گؤزله‌دیکلردن گیزلت",
+       "tog-watchlisthidebots": "بوْت دَییشیکلیکلرینی گؤزله‌دیکلردن گیزلت",
+       "tog-watchlisthideminor": "کیچیک دَییشیکلیکلری گؤزله‌دیکلردن گیزلت",
+       "tog-watchlisthideliu": "گیرمیش ایستیفاده‌چیلرین دَییشیکلیکلرینی گؤزله‌دیکلردن گیزلت",
+       "tog-watchlisthideanons": "تانینمامیش ایستیفاده‌چیلرین دَییشیکلیکلرینی گؤزله‌دیکلردن گیزلت",
+       "tog-watchlisthidepatrolled": "نظارتلنمیش دَییشیکلیکلری گؤزله‌دیکلردن گیزلت",
+       "tog-ccmeonemails": "Ø¢Û\8cرÛ\8c Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cÙ\84رÙ\87 Ú¯Ø¤Ù\86دردÛ\8cÚ¯Û\8cÙ\85 Ø§Û\8cÙ\85Û\8cÙ\84â\80\8cÙ\84رÛ\8cÙ\86 Ú©Ù\88Ù\92پیلرینی منه گؤندر",
+       "tog-diffonly": "مۇقاییسه‌لر آلیتندا صحیفه‌لرین ایچینده‌کیلرینی گؤسترمه",
        "tog-showhiddencats": "گیزلی بؤلمه‌لری گؤستر",
        "tog-norollbackdiff": "قایتاراندان سونرا موقاییسه گؤسترمه",
-       "tog-useeditwarning": "دÙ\8eÛ\8cÛ\8cشدÛ\8cرÙ\85Ù\87 ØµØ­Û\8cÙ\81Ù\87â\80\8cسÛ\8cÙ\86دÙ\87 Ú\86Û\8cØ®Û\8cØ´ Ø²Ø§Ù\85اÙ\86Û\8cØ\8c Ø¢Ú\86Û\8cÙ\82 Ù\88 Ù\82ئÛ\8cد Ø§Ù\88Ù\84Ù\85اÛ\8cاÙ\86 Ø¯Ù\8eÛ\8cÛ\8cشدÛ\8cرÙ\85Ù\87 ØµØ­Û\8cÙ\81Ù\87 Ù\88ارسا Ù\85Ù\86Ù\87 Ù\87شدار Ù\88ئرÛ\8cÙ\84سÛ\8cÙ\86",
+       "tog-useeditwarning": "دÙ\8eÛ\8cÛ\8cشدÛ\8cرÙ\85Ù\87 ØµØ­Û\8cÙ\81Ù\87â\80\8cسÛ\8cÙ\86دÙ\86 Ú\86Û\8cخاÙ\86داØ\8c Ù\82ئÛ\8cد Ø§Ø¦Ø¯Û\8cÙ\84Ù\85Ù\87â\80\8cÙ\85Û\8cØ´ Ø¯Ù\8eÛ\8cÛ\8cشدÛ\8cرÙ\85Ù\87 Ø§Ù\88Ù\92Ù\84ساØ\8c Ù\85Ù\86Ù\87 Ù\87شدار Ù\88ئر",
        "tog-prefershttps": "هر زامان گیریش ائتمگه امن باغلانتی ایشلت",
-       "underline-always": "همیشه",
+       "underline-always": "هر زامان",
        "underline-never": "هئچ واخت",
-       "underline-default": "دیفالت قابیق یوخسا براوزر",
-       "editfont-style": "دَییشدیرمه قوتوطونون فونت نؤوعو:",
-       "editfont-default": "براوزر دیفالتی",
-       "editfont-monospace": "ثابیت آرالی فونت",
-       "editfont-sansserif": "بوجاق‌سیز فونت",
-       "editfont-serif": "بوجاق‌لی فونت",
-       "sunday": "سود گونو(یکشنبه)",
-       "monday": "دوزگونو(دوشنبه)",
-       "tuesday": "آرا گون(سه‌شنبه)",
-       "wednesday": "اوْدگونو(چهارشنبه)",
-       "thursday": "سوگونو(پنجشنبه)",
-       "friday": "جÙ\88Ù\85ا(Ø¢Û\8cÙ\86Û\8câ\80\8cÚ¯Ù\88Ù\86)",
-       "saturday": "يئل‌گونو(شنبه)",
-       "sun": "سود گونو(یکشنبه)",
-       "mon": "دوزگونو(دوشنبه)",
-       "tue": "سÙ\87â\80\8cØ´Ù\86بÙ\87(آرا Ú¯Ù\88Ù\86)",
+       "underline-default": "وارساییلان قابیق یا براوزِر",
+       "editfont-style": "دَییشدیرمه قۇتوسونون فوْنتی:",
+       "editfont-default": "براوزِر وارساییلانی",
+       "editfont-monospace": "ثابÛ\8cت Ø¢Ø±Ø§Ù\84Û\8c Ù\81Ù\88Ù\92Ù\86ت",
+       "editfont-sansserif": "بۇجاق‌سیز فوْنت",
+       "editfont-serif": "بۇجاق‌لی فوْنت",
+       "sunday": "سۆدگونو (یکشنبه)",
+       "monday": "دۇزگونو (دوشنبه)",
+       "tuesday": "آراگون (سه‌شنبه)",
+       "wednesday": "اوْدگونو (چهارشنبه)",
+       "thursday": "سۇگونو (پنجشنبه)",
+       "friday": "Ø¢Û\8cÙ\86Û\8câ\80\8cÚ¯Ù\88Ù\86 (جÛ\86Ù\85عÙ\87)",
+       "saturday": "يئل‌گونو (شنبه)",
+       "sun": "سۆدگونو (یکشنبه)",
+       "mon": "دۇزگونو (دوشنبه)",
+       "tue": "آراگÙ\88Ù\86 (سÙ\87â\80\8cØ´Ù\86بÙ\87)",
        "wed": "اوْدگونو (چهارشنبه)",
-       "thu": "سوگونو(پنجشنبه)",
-       "fri": "آینی‌گون(جوما)",
-       "sat": "يئل‌گونو(شنبه)",
+       "thu": "سۇگونو (پنجشنبه)",
+       "fri": "آینی‌گون (جۆمعه)",
+       "sat": "يئل‌گونو (شنبه)",
        "january": "ژانویه",
        "february": "فئوریه",
        "march": "مارس",
        "july": "ژولای",
        "august": "آقوست",
        "september": "سئپتامبر",
-       "october": "اوکتوبر",
-       "november": "نووامبر",
+       "october": "اوْکتوبر",
+       "november": "Ù\86Ù\88Ù\92Ù\88اÙ\85بر",
        "december": "دئسامبر",
        "january-gen": "ژانویه",
-       "february-gen": "فوریه",
+       "february-gen": "فئوریه",
        "march-gen": "مارس",
        "april-gen": "آوریل",
-       "may-gen": "مِی",
+       "may-gen": "مئی",
        "june-gen": "ژوئن",
        "july-gen": "جولای",
        "august-gen": "آقوست",
        "jul": "ژولای",
        "aug": "آقوست",
        "sep": "سئپتامبر",
-       "oct": "اوکتوبر",
-       "nov": "نووامبر",
+       "oct": "اوْکتوبر",
+       "nov": "Ù\86Ù\88Ù\92Ù\88اÙ\85بر",
        "dec": "دئسامبر",
        "january-date": "ژانویه‌نین $1-ی",
-       "february-date": "$1 فئوریه",
+       "february-date": "فئوریه‌نین $1-ی",
        "march-date": "مارسین $1-ی",
        "april-date": "آوریلین $1-ی",
-       "may-date": "$1 مئی",
+       "may-date": "مئیین $1-ی",
        "june-date": "ژوئنین $1-ی",
-       "july-date": "$1 ژولای",
-       "august-date": "$1 آقوست",
-       "september-date": "$1 سئپتامبر",
-       "october-date": "$1 اوکتوبر",
-       "november-date": "$1 نووامبر",
-       "december-date": "$1 دئسامبر",
+       "july-date": "ژولایین $1-ی",
+       "august-date": "آقوستون $1-ی",
+       "september-date": "سئپتامبرین $1-ی",
+       "october-date": "اوْکتوبرون $1-ی",
+       "november-date": "نوْوامبرین $1-ی",
+       "december-date": "دئسامبرین $1-ی",
        "pagecategories": "{{PLURAL:$1|بؤلمه|بؤلمه‌لر}}",
-       "category_header": "«$1» بؤلمه‌سین‌ده‌کی مقاله‌لر",
-       "subcategories": "آلت بؤلمه‌لر",
-       "category-media-header": "«$1» بؤلمه‌سینده مئدیا",
-       "category-empty": "''بو بؤلمه‌نین ایندی فایل یوخسا مئدیاسی یوخدور.''",
+       "category_header": "«$1» بؤلمه‌سین‌ده صحیفه‌لر",
+       "subcategories": "آلتبؤلمه‌لر",
+       "category-media-header": "«$1» بؤلمه‌سینده مئدیا",
+       "category-empty": "<em>بو بؤلمه‌ده ایندی فایل یا مئدیا یوْخدور.</em>",
        "hidden-categories": "{{PLURAL:$1|گیزلی بؤلمه|گیزلی بؤلمه‌لر}}",
        "hidden-category-category": "گیزلی بؤلمه‌لر",
-       "category-subcat-count": "بو بؤلمه‌ده {{PLURAL:$2|یالنیز|}} آشاغیداکی {{PLURAL:$1|بیر|$1}} آلت‌بؤلمه وار؛ بو بؤلمه‌نین جمعاً $2 آلت‌بؤلمه‌سی وار.",
-       "category-subcat-count-limited": "بو بؤلمه‌ده آشاغیداکی {{PLURAL:$1|آلت‌بؤلمه|$1 آلت‌بؤلمه}} واردیر.",
-       "category-article-count": "بو بؤلمه‌ده {{PLURAL:$2|یالنیز|}} آشاغیداکی {{PLURAL:$1|بیر|$1}} صحیفه وار؛ بو بؤلمه‌نین جمعاً $2 صحیفه‌سی وار.",
-       "category-article-count-limited": "بو بؤلمه‌ده، آشاغیداکی {{PLURAL:$1|یارپاق|$1 یارپاق}} واردیر.",
-       "category-file-count": "بو بؤلمه‌ده {{PLURAL:$2|یالنیز|}} آشاغیداکی {{PLURAL:$1|بیر|$1}} فایل وار؛ بو بؤلمه‌نین جمعاً $2 فایلی وار.",
-       "category-file-count-limited": "بؤلمه‌ده، بو {{PLURAL:$1|فایل|$1 فایل}} واردیر.",
+       "category-subcat-count": "{{PLURAL:$2|بۇ بؤلمه‌ده یالنیز آشاغیداکی آلت‌بؤلمه واردیر.|بۇ بؤلمه‌ده، توپلام $2-دن، آشاغیداکی {{PLURAL:$1|آلت‌بؤلمه|$1 آلت‌بؤلمه}} واردیر.}}",
+       "category-subcat-count-limited": "بۇ بؤلمه‌ده آشاغیداکی {{PLURAL:$1|آلت‌بؤلمه|$1 آلت‌بؤلمه}} واردیر.",
+       "category-article-count": "{{PLURAL:$2|بۇ بؤلمه‌ده یالنیز آشاغیداکی صحیفه واردیر.|بۇ بؤلمه‌ده توْپلام $2 صحیفه‌دن، آشاغیداکی {{PLURAL:$1|صحیفه|$1 صحیفه}} واردیر.}}",
+       "category-article-count-limited": "بۇ بؤلمه‌ده، آشاغیداکی {{PLURAL:$1|صحیفه|$1 صحیفه}} واردیر.",
+       "category-file-count": "{{PLURAL:$2|بۇ بؤلمه‌ده یالنیز آشاغیداکی فایل واردیر.|بۇ بؤلمه‌ده توْپلام $1-دن، آشاغیداکی {{PLURAL:$1|فایل|$1 فایل}} واردیر.}}",
+       "category-file-count-limited": "بۇ بؤلمه‌ده، آشاغیداکی {{PLURAL:$1|فایل|$1 فایل}} واردیر.",
        "listingcontinuesabbrev": "(قالانی)",
-       "index-category": "ایندئکس‌لشدیریلمیش یارپاقلار",
-       "noindex-category": "ایندئکس‌لشدیریلمه‌ین یارپاقلار",
-       "broken-file-category": "Ù\81اÛ\8cÙ\84â\80\8cÙ\84ارا Ù\82Û\8cرÛ\8cÙ\84Ù\85Û\8cØ´ Ø¨Ø§ØºÙ\84اÙ\86تÛ\8cÙ\84ارÛ\8c Ø§Ù\88Ù\84اÙ\86 Û\8cارپاÙ\82Ù\84ار",
-       "about": "گؤره",
-       "article": "ایچری‌لی یارپاق",
+       "index-category": "ایندئکس‌لشدیریلمیش صحیفه‌لر",
+       "noindex-category": "ایندئکس‌لشدیریلمه‌میش صحیفه‌لر",
+       "broken-file-category": "Ù\82Û\8cرÛ\8cÙ\84Ù\85Û\8cØ´ Ù\81اÛ\8cÙ\84 Ø¨Ø§ØºÙ\84اÙ\86تÛ\8cÙ\84ارÛ\8c Ø§Ù\88Ù\92Ù\84اÙ\86 ØµØ­Û\8cÙ\81Ù\87â\80\8cÙ\84ر",
+       "about": "حاقیندا",
+       "article": "ایچری‌لی صحیفه",
        "newwindow": "(یئنی پنجره‌ده آچیلیر)",
-       "cancel": "Ù\84غÙ\88 Ø§Ø¦Øª",
+       "cancel": "Ù\88ازگئÚ\86",
        "moredotdotdot": "داها...",
-       "morenotlisted": "بو لیست کامل دئییل.",
-       "mypage": "مقاله",
+       "morenotlisted": "بۇ لیست کامل دئییل.",
+       "mypage": "صحیفه",
        "mytalk": "دانیشیق",
        "anontalk": "بو آی‌پی آدرسینه دانیشیق",
-       "navigation": "دولانماق",
+       "navigation": "دÙ\88Ù\92Ù\84اÙ\86Ù\85اÙ\82",
        "and": "&#32;و",
        "qbfind": "تاپ",
-       "qbbrowse": "گؤزدÙ\86 Ú¯Ø¦Ú\86Û\8cد",
+       "qbbrowse": "گؤزدÙ\86 Ú¯Ø¦Ú\86Û\8cرت",
        "qbedit": "دَییشدیر",
-       "qbpageoptions": "بو صحیفه‌‌",
-       "qbmyoptions": "منیم صحیفه‌‌لریم",
-       "faq": "چوخ سوروشولان سواللار",
-       "faqpage": "Project:چوخلو سوروشولان سورغولار",
-       "vector-action-addsection": "قونو آرتیر",
+       "qbpageoptions": "بۇ صحیفه‌‌",
+       "qbmyoptions": "صحیفه‌‌لریم",
+       "faq": "چوْخ سوْروشولان سوْال‌لار",
+       "faqpage": "Project:چوْخ سوْروشولان سوْال‌لار",
+       "vector-action-addsection": "Ù\82Ù\88Ù\92Ù\86Ù\88 Ø¢Ø±ØªÛ\8cر",
        "vector-action-delete": "سیل",
-       "vector-action-move": "آدÛ\8cÙ\86Û\8c Ø¯Ù\8aÙ\8eÛ\8cشدÛ\8cر",
-       "vector-action-protect": "قورو",
+       "vector-action-move": "داشÛ\8c",
+       "vector-action-protect": "قوْرو",
        "vector-action-undelete": "سیلمگی قایتار",
-       "vector-action-unprotect": "قوروماغی دَییشدیر",
+       "vector-action-unprotect": "قوْروماغی دَییشدیر",
        "vector-view-create": "یارات",
        "vector-view-edit": "دَییشدیر",
        "vector-view-history": "گئچمیشه باخ",
-       "vector-view-view": "اوخو",
+       "vector-view-view": "اوْخو",
        "vector-view-viewsource": "قایناغا باخ",
-       "actions": "ایشلر",
-       "namespaces": "آدلار فضاسی",
+       "actions": "چالیشمالار",
+       "namespaces": "آد فضالاری",
        "variants": "واریانتلار",
-       "navigation-heading": "دولانماق مِنوسو",
+       "navigation-heading": "دÙ\88Ù\92Ù\84اÙ\86Ù\85اÙ\82 Ù\85Ù\90Ù\86Ù\88سÙ\88",
        "errorpagetitle": "خطا",
        "returnto": "$1-ه قاییت.",
        "tagline": "{{SITENAME}} سایتیندان",
        "searcharticle": "گئت",
        "history": "صحیفه‌‌نین گئچمیشی",
        "history_short": "گئچمیش",
-       "updatedmarker": "سÙ\88Ù\86 Ø¨Ø§Ø®Û\8cØ´Û\8cÙ\85داÙ\86 Ø¨Ù\88Û\8cاÙ\86اØ\8c Û\8cئÙ\86Û\8câ\80\8cÙ\84Ø´یب‌دیر",
-       "printableversion": "چاپ ائتمه‌لی نوسخه",
+       "updatedmarker": "سÙ\88Ù\92Ù\86 Ø¨Ø§Ø®Û\8cØ´Û\8cÙ\85داÙ\86 Ø³Ù\88Ù\92Ù\86را Û\8cئÙ\86Û\8câ\80\8cÙ\84Ù\86یب‌دیر",
+       "printableversion": "یازدیریرا بیلن نۆسخه",
        "permalink": "قالان باغلانتی",
        "print": "یازدیر",
        "view": "باخ",
        "edit": "دَییشدیر",
        "create": "یارات",
-       "editthispage": "بو صحیفه‌‌نی دَییشدیر",
-       "create-this-page": "بو صحیفه‌‌نی يارات",
+       "editthispage": "بۇ صحیفه‌‌نی دَییشدیر",
+       "create-this-page": "بۇ صحیفه‌‌نی يارات",
        "delete": "سیل",
-       "deletethispage": "بو صحیفه‌‌نی سیل",
-       "undeletethispage": "بو صحیفه‌نی دیریلت",
-       "undelete_short": "{{PLURAL:$1|بیر دَییشیکلیگی|$1 دَییشیکلیگی}} برپا ائت",
-       "viewdeleted_short": "{{PLURAL:$1|بیر|$1}} سیلینمیش دَییشیکلیگی گؤستر",
-       "protect": "قوروماق",
+       "deletethispage": "بۇ صحیفه‌‌نی سیل",
+       "undeletethispage": "بۇ صحیفه‌نی دیریلت",
+       "undelete_short": "{{PLURAL:$1|بیر دَییشیکلیگی|$1 دَییشیکلیگی}} قایتار",
+       "viewdeleted_short": "{{PLURAL:$1|بیر|$1}} سیلینمیش دَییشیکلیگه باخ",
+       "protect": "قوْرو",
        "protect_change": "ديَیشدیر",
-       "protectthispage": "بو صحیفه‌‌نی قورو",
-       "unprotect": "قوروماغی دَییشدیر",
-       "unprotectthispage": "بو یارپاغین قوروماسینی دَییشدیر",
+       "protectthispage": "بۇ صحیفه‌‌نی قوْرو",
+       "unprotect": "قوْروماغی دَییشدیر",
+       "unprotectthispage": "بۇ صحیفه‌نین قوْروماسینی دَییشدیر",
        "newpage": "يئنی صحیفه‌‌",
-       "talkpage": "بو صحیفه‌یه گؤره دانیشیق آپارین",
+       "talkpage": "بۇ صحیفه‌نی دانیش",
        "talkpagelinktext": "دانیشیق",
        "specialpage": "اؤزل صحیفه",
        "personaltools": "شخصی آراجلار",
        "postcomment": "يئنی بؤلوم",
-       "articlepage": "مقاله‌یه باخین",
+       "articlepage": "ایچری‌لی صحیفه‌یه باخ",
        "talk": "دانیشیق",
        "views": "گؤرونوشلر",
        "toolbox": "آراجلار",
-       "userpage": "ایستیفاده‌چی صحیفه‌‌سینی باخین",
-       "projectpage": "پروژه صحیفه‌سینه باخین",
-       "imagepage": "فایل صحیفه‌سینه باخین",
-       "mediawikipage": "مئساژ صحیفه‌سینه باخین",
-       "templatepage": "شابلون صحیفه‌سینه باخین",
-       "viewhelppage": "یاردیم صحیفه‌سینه باخین",
-       "categorypage": "بؤلمه صحیفه‌‌سینی گؤستر",
-       "viewtalkpage": "دانیشیغا باخین",
+       "userpage": "ایستیفاده‌چی صحیفه‌‌سینه باخ",
+       "projectpage": "پروژه صحیفه‌سینه باخ",
+       "imagepage": "فایل صحیفه‌سینه باخ",
+       "mediawikipage": "مئساژ صحیفه‌سینه باخ",
+       "templatepage": "شابلون صحیفه‌سینه باخ",
+       "viewhelppage": "یاردیم صحیفه‌سینه باخ",
+       "categorypage": "بؤلمه صحیفه‌‌سینه باخ",
+       "viewtalkpage": "دانیشیغا باخ",
        "otherlanguages": "آیری دیل‌لرده",
-       "redirectedfrom": "($1 صحیفه‌‌سیندن يؤنلن‌دیریلمیش‌دیر)",
-       "redirectpagesub": "Û\8cÙ\88Ù\84لاندیرما صحیفه‌سی",
-       "lastmodifiedat": "بو صحیفه‌‌ سون دفعه‌‌ $1، $2 چاغیندا دَییشیلیب‌دیر.",
-       "viewcount": "بو یارپاق {{PLURAL:$1|بیر|$1}} دفعه گؤرونوب‌دور.",
-       "protectedpage": "قورونموش یارپاق",
-       "jumpto": "آتلان:",
-       "jumptonavigation": "دولانماق",
+       "redirectedfrom": "($1-دن يوْل‌لاندیریلمیش)",
+       "redirectpagesub": "Û\8cÙ\88Ù\92Ù\84â\80\8cلاندیرما صحیفه‌سی",
+       "lastmodifiedat": "بۇ صحیفه‌‌ سوْن دفعه‌‌ $1، $2 چاغیندا دَییشیلمیشدیر.",
+       "viewcount": "بۇ صحیفه {{PLURAL:$1|بیر|$1}} دفعه گؤرولوبدور.",
+       "protectedpage": "قوْرونموش صحیفه",
+       "jumpto": "آتیل:",
+       "jumptonavigation": "دÙ\88Ù\92Ù\84اÙ\86Ù\85اÙ\82",
        "jumptosearch": "آختار",
-       "view-pool-error": "باغیشلایین، ایندی خیدمت‌چیلر آرتیق یوک آلتیندادیلار.\nچوخلو ایشلدنلر بو یارپاغی گؤرمک ایسته‌ییرلر.\nلوطفاً یئنی‌دن بو یارپاغا ال تاپماغا چالیشماقدان اؤنجه، بیر آز دؤزون.\n\n$1",
-       "pool-timeout": "قیفیلا دؤزمک واختی قورتاردی",
-       "pool-queuefull": "مخزن صفی دولودور",
-       "pool-errorunknown": "تاÙ\86Û\8cÙ\86Ù\85اÙ\85Û\8cØ´ خطا",
-       "aboutsite": "{{SITENAME}}-ا گؤره",
+       "view-pool-error": "باغیشلایین، ایندی خیدمت‌چیلر آرتیق یۆک آلتیندادیلار.\nچوْخلو ایستیفاده‌چیلر بۇ صحیفه‌نی گؤرمک ایسته‌ییرلر.\nلۆطفاً یئنی‌دن بۇ صحیفه‌یه ال تاپماغا چالیشماقدان اؤنجه، بیر آز دؤزون.\n\n$1",
+       "pool-timeout": "قیفیلا دؤزماغین واختی بیتیردی",
+       "pool-queuefull": "Ù\85خزÙ\86 ØµÙ\81Û\8c Ø¯Ù\88Ù\92Ù\84Ù\88دÙ\88ر",
+       "pool-errorunknown": "بÛ\8cÙ\84Û\8cÙ\86Ù\85Ù\87â\80\8cÛ\8cÙ\86 خطا",
+       "aboutsite": "{{SITENAME}} حاقیندا",
        "aboutpage": "Project:حاقیندا",
        "copyright": "ایچینده‌کیلر $1 لیسانسی احاطه‌سینده‌دیلر.",
-       "copyrightpage": "{{ns:project}}:Ú©Ù\88Ù¾Û\8c Ø­Ø§Ù\82ی",
+       "copyrightpage": "{{ns:project}}:Ú©Ù\88Ù\92Ù¾Û\8c Ø­Ø§Ù\82Ù\84اری",
        "currentevents": "ایندیکی اولایلار",
        "currentevents-url": "Project:ایندیکی اولایلار",
        "disclaimers": "رد ائتمک",
        "disclaimerpage": "Project:عمومی رد ائتمک",
-       "edithelp": "ديَیشیکلیک‌لر اوچون یاردیم",
+       "edithelp": "ديَیشتیرمک یاردیمی",
        "mainpage": "آنا صحیفه",
        "mainpage-description": "آنا صحیفه",
        "policy-url": "Project:قایدالار",
-       "portal": "تÙ\88Ù¾Ù\84Ù\88Ù\85 Ù¾Ù\88رتالی",
-       "portal-url": "Project:تÙ\88Ù¾Ù\84Ù\88Ù\85 Ù¾Ù\88رتالی",
+       "portal": "تÙ\88Ù\92Ù¾Ù\84Ù\88Ù\85 Ù¾Ù\88Ù\92رتالی",
+       "portal-url": "Project:تÙ\88Ù\92Ù¾Ù\84Ù\88Ù\85 Ù¾Ù\88Ù\92رتالی",
        "privacy": "گیزلیلیک سیاستی",
        "privacypage": "Project:گیزلیلیک سیاستی",
-       "badaccess": "یول وئرمه خطاسی",
-       "badaccess-group0": "ایسته‌دیگینیز ایشه ایجازه‌نیز یوخدور.",
-       "badaccess-groups": "ایسته‌دیگینیز ایشین ایجازه‌سی، تکجه بو {{PLURAL:$2|قروپ|قروپلار}}داکی ایشلدنلره وئریلیب‌دیر: $1.",
-       "versionrequired": "مدئدیاویکی یازیلیمینین $1 نوسخه‌سی لازیم‌دیر",
-       "versionrequiredtext": "بو یارپاغی ایشلتدماغا، مئدیاویکی یازیلیمینین $1 نوسخه‌سی لازیم‌دیر.\n[[Special:Version|نوسخه یارپاغینا]] باخین.",
-       "ok": "اÙ\88Ù\84دÙ\88",
+       "badaccess": "ایجازه خطاسی",
+       "badaccess-group0": "ایسته‌دیگینیز ایشه ایجازه‌نیز یوْخدور.",
+       "badaccess-groups": "ایسته‌دیگینیز ایشین ایجازه‌سی، یالنیز بۇ {{PLURAL:$2|قروپ‌داکی|قروپلارین بیرینده‌کی}} ایستیفاده‌چیلره وئریلیب‌دیر: $1.",
+       "versionrequired": "مِدیاویکی یازیلیمینین $1 نۆسخه‌سی لازیمدیر",
+       "versionrequiredtext": "بۇ صحیفه‌نی ایشلتمک اۆچون، مِدیاویکی یازیلیمینین $1 نۆسخه‌سی لازیم‌دیر.\n[[Special:Version|نۆسخه صحیفه‌سینه]] باخ.",
+       "ok": "اÙ\88Ù\92Ù\84سÙ\88Ù\86",
        "retrievedfrom": "«$1»-دن آلینمیشدیر",
        "youhavenewmessages": "سیزین $1 ($2) وارینیزدیر.",
        "youhavenewmessagesfromusers": "سیزین {{PLURAL:$3|بیر آیری ایستیفاده‌چی‌دن|$3 ایستیفاده‌چی‌دن}} $1 وارینیزدیر ($2).",
-       "youhavenewmessagesmanyusers": "سیزین چوخلو ایشلدنلردن $1 وارینیزدیر ($2).",
+       "youhavenewmessagesmanyusers": "سیزین چوْخلو ایستیفاده‌چیلردن $1 وارینیزدیر ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|بیر یئنی مئساژ|999=یئنی مئساژلار}}",
        "newmessagesdifflinkplural": "سون {{PLURAL:$1|دَییشیکلیک|999=دَییشیکلیکلر}}",
-       "youhavenewmessagesmulti": "$1-دا یئنی بیلدیرینیز وار.",
+       "youhavenewmessagesmulti": "$1-ده یئنی مئساژینیز وار.",
        "editsection": "دَییشدیر",
        "editold": "دَییشدیر",
        "viewsourceold": "قایناغا باخ",
        "toc": "ایچینده‌کیلر",
        "showtoc": "گؤستر",
        "hidetoc": "گیزلت",
-       "collapsible-collapse": "گیزلت",
-       "collapsible-expand": "گئنیشلندیر",
-       "thisisdeleted": "$1-نا باخ یا اونو قایتار؟",
+       "collapsible-collapse": "ییغیشلات",
+       "collapsible-expand": "گئنیشلت",
+       "thisisdeleted": "$1-Ù\86ا Ø¨Ø§Ø® Û\8cا Ø§Ù\88Ù\92Ù\86Ù\88 Ù\82اÛ\8cتارØ\9f",
        "viewdeleted": "$1 گؤستریلسین؟",
-       "restorelink": "{{PLURAL:$1|بیر سیلینمیش دَییشیکلیک|$1 سیلینمیش دَییشیکلیکلر}}",
-       "feedlinks": "بسÙ\84Ù\85Ù\87",
-       "feed-invalid": "گئچرسیز آبونه کانال جورو.",
-       "feed-unavailable": "سیندیکاسیا خطلری ال‌ده دئییل‌لر",
+       "restorelink": "{{PLURAL:$1|بیر|$1}} سیلینمیش دَییشیکلیک",
+       "feedlinks": "بسÙ\84Ù\87â\80\8cÙ\85Ù\87:",
+       "feed-invalid": "گئچرسیز آبونه بسله‌مه جۆرو.",
+       "feed-unavailable": "سیندیکالاشما خطلری ال‌ده دئییل‌لر",
        "site-rss-feed": "$1 آراِس‌اِس فید",
        "site-atom-feed": "$1 آتوم فید",
        "page-rss-feed": "«$1» آراِس‌اِس فید",
        "page-atom-feed": "«$1» آتوم فید",
-       "red-link-title": "$1 (صحیفه یوخدور)",
+       "red-link-title": "$1 (صحیفه یوْخدور)",
        "sort-descending": "آزالان سیرالاماق",
-       "sort-ascending": "چوخالان سیرالاماق",
-       "nstab-main": "مقاله",
+       "sort-ascending": "چوْخالان سیرالاماق",
+       "nstab-main": "صحیفه",
        "nstab-user": "ایستیفاده‌چی صحیفه‌سی",
        "nstab-media": "مئدیا صحیفه‌سی",
        "nstab-special": "اؤزل صحیفه",
        "nstab-template": "شابلون",
        "nstab-help": "یاردیم صحیفه‌سی",
        "nstab-category": "بؤلمه",
-       "nosuchaction": "بئله چالیشما یوخدور",
-       "nosuchactiontext": "URL-ده گؤستریلن ایش گئچرسیزدیر.\nاولا بیلر کی URL-ی یانلیش یازیب یوخسا یانلیش باغلانتی‌لا گلمیشسینیز.\nهمده بو، {{SITENAME}} سایتی ایشلدن یازیلیمین خطاسینی گؤستره بیلر.",
-       "nosuchspecialpage": "بئله اؤزل یارپاق یوخدور",
-       "nospecialpagetext": "<strong>سیز بیر یانلیش اؤزل یارپاغینی ایسته‌میسینیز.</strong>\nدوزگون اؤزل یارپاق‌لارین سیاهی‌سینی [[Special:SpecialPages|{{int:specialpages}}]]-ده گؤره بیلرسینیز.",
+       "nosuchaction": "بئله چالیشما یوْخدور",
+       "nosuchactiontext": "URL طرفیندن بیلینن ایش گئچرسیزدیر.\nURL-ی یانلیش یازمیش، یا یانلیش بیر باغلانتی ایله گلمیش، اوْلابیلرسیز.\nهم‌ده بۇ، {{SITENAME}} سایتی ایشلدن یازیلیمین خطاسینی گؤستره بیلر.",
+       "nosuchspecialpage": "بئله اؤزل صحیفه یوْخدور",
+       "nospecialpagetext": "<strong>سیز بیر یانلیش اؤزل صحیفه ایسته‌میسینیز.</strong>\n\nدۆزگون اؤزل صحیفه‌لرین لیستینی [[Special:SpecialPages|{{int:specialpages}}]]-ده گؤره بیلرسینیز.",
        "error": "خطا",
-       "databaseerror": "دیتابیس خطاسی",
+       "databaseerror": "دِیتابِیس خطاسی",
        "laggedslavemode": "'''دیقت:''' یارپاق‌دا، سون دَییشیکلیکلرین اولماماسی ایمکانی وار.",
        "readonly": "دیتابیس باغلانیب",
        "enterlockreason": "باغلاما نَدَن‌لیگی و آچیلماغین تخمینی واختینی یازین",
        "action-viewmyprivateinfo": "گیزلی بیلگیلرینی گؤر",
        "action-editmyprivateinfo": "گیزلی بیلگیلرینی دَییشدیر",
        "nchanges": "$1 {{PLURAL:$1|دَییشیکلیک}}",
+       "enhancedrc-history": "گئچمیش",
        "recentchanges": "سون دَییشیکلیکلر",
        "recentchanges-legend": "سون دَییشیکلیکلر سئچمه‌لری",
        "recentchanges-summary": "بو صحیفه‌ده، بو ویکی‌ده وئریلن ان سون دَییشیکلیکلری ایزله‌یین.",
        "rcnotefrom": "آشاغیدا '''$2'''-دن ('''$1'''-ه قدر) ديَیشیکلیکلر گلیبلر.",
        "rclistfrom": "$3 $2 واختیندان باشلایاراق یئنی دییشیکلری گؤستر",
        "rcshowhideminor": "کیچیک دَییشیکلری $1",
+       "rcshowhideminor-show": "گؤستر",
+       "rcshowhideminor-hide": "گیزلت",
        "rcshowhidebots": "بوتلاری $1",
-       "rcshowhideliu": "ایچری گیرمیش ایستیفاده‌چیلری $1",
+       "rcshowhidebots-show": "گؤستر",
+       "rcshowhidebots-hide": "گیزلت",
+       "rcshowhideliu": "یازیلمیش ایستفاده‌چیلری $1",
+       "rcshowhideliu-show": "گؤستر",
+       "rcshowhideliu-hide": "گیزلت",
        "rcshowhideanons": "تانینمامیش ایستیفاده‌چیلری $1",
+       "rcshowhideanons-show": "گؤستر",
+       "rcshowhideanons-hide": "گیزلت",
        "rcshowhidepatr": "نظارت ائدیلن دَییشیکلیکلری $1",
+       "rcshowhidepatr-show": "گؤستر",
+       "rcshowhidepatr-hide": "گیزلت",
        "rcshowhidemine": "منیم دَییشیکلریمی $1",
+       "rcshowhidemine-show": "گؤستر",
+       "rcshowhidemine-hide": "گیزلت",
        "rclinks": "سون $2 گون عرضینده‌کی سون  $1 ديَیشیکلیگی گؤستر <br />$3",
        "diff": "فرق",
        "hist": "گئچمیش",
        "rc_categories_any": "هر",
        "rc-change-size-new": "دَییشیکلیک‌دن سونرا {{PLURAL:|بیر|$1}} بایت",
        "newsectionsummary": "/* $1 */ یئنی بؤلمه",
-       "rc-enhanced-expand": "تفصیلاتی گؤستر (جاوااسکریپت لازیم‌دیر)",
+       "rc-enhanced-expand": "تفصیل‌لری گؤستر",
        "rc-enhanced-hide": "تفصیل‌لری گیزلت",
        "rc-old-title": "ایلک‌جه «$1» آدی‌له یارانمیشدیر",
        "recentchangeslinked": "ایلگیلی دَییشیکلیکلر",
        "fileexists-shared-forbidden": "بو آددا بیر فايل اورتاق آمباردا مؤوجود دیر. \nفايلینیزی يئنه ده يوکله‌مک ایسته‌يیرسینیزسه، خاهیش ائدیریک گئری گئدیب يئنی بیر آد ایستیفاده ائدین. \n[[File:$1|thumb|center|$1]]",
        "file-exists-duplicate": "بو فایل آشاغی‌داکی {{PLURAL:$1 | فایلین | فایل‌لارین}} تکراری سی‌دیر:",
        "file-deleted-duplicate": "بو فایلین عینی اولان باشقا بیر فایل([[:$1]])داها اول‌دن سیلیندی. بو فای‌لی یئنی‌دن یوکلمه‌دن اول دیگر فایلین سیلینمه‌سی قئیدلرینی ایداره ائتملیسینیز.",
+       "file-deleted-duplicate-notitle": "قاباقجا بۇ فایلا عینی اولان بیر فایل سیلینمیشدیر، و بۇ فایل آدی قاداغان اوْلموشدور.\nاوْنی یئنی‌دن یۆکله‌مک‌دن اؤنجه، قاداغان اوْلونموش فایل‌لارا باخماق ایجازه‌سی اوْلان بیر ایستیفاده‌چی‌دن، وضعیتی گؤزدن گئچیرمگی ایسته‌مه‌لیسینیز.",
        "uploadwarning": "يوکله‌مه خبردارلیغی",
        "uploadwarning-text": "خاهیش ائدیریک آشاغی‌داکی فایل شرحینی دییش‌دیرین و یئنی‌دن جهد ائدین.",
        "savefile": "فايلی قئيد ائت",
        "uploaddisabledtext": "فايل يوکلنمه‌سی باش توتمادی.",
        "php-uploaddisabledtext": "پی اچ پی فایل یوکلملری دؤوره خاریجی‌دیر. خاهیش ائدیریک file_uploads تنظیم لرین یئنی دن بیر باخین.",
        "uploadscripted": "بو فایل بیر اینتئرنئت آختاریش برنامه سی طرفین‌دن سهو چئوریلبیلجک بیر HTML و یا ایسکریپت کودو عبارت‌دیر.",
+       "uploadscriptednamespace": "بۇ SVG فایلیندا بیر یاساق آدفضاسی ($1) واردیر.",
+       "uploadinvalidxml": "یۆکله‌نیلن فایل‌دا XML تحلیل اولونانمادی.",
        "uploadvirus": "فايلدا ویروس وار!  \nدئتاللار: $1",
        "uploadjava": "فایل، بیر جاوا. نوع ‎‎class ائهتیوا ائدن بیر زیپ فایلی‌دیر.\nجاوا فایل‌لارینین یوکلنمه‌سینه ایجازه وئریلمیر، چونکی تهلوکه‌سیزلیک محدودلاشدیرما‌لارینین آتلانماسینا سبب اولا بیلمکده‌دیرلر.",
        "upload-source": "قایناق فايلی",
        "license-nopreview": "(اؤن‌گؤستریش یوخدور)",
        "upload_source_url": "(بیر گئچرلی و عموم گؤره بیلن اینترنت آدرسی)",
        "upload_source_file": "(بیلگی‌سایارینیزدا بیر فایل)",
-       "listfiles-summary": "بو اؤزل صحیفه، بوتون یوکله‌نیلن فایل‌لاری گؤستریر.\nایستیفاده‌چیه فیلتر اولوناندا، یالنیز او ایستیفاده‌چی سون نوسخه‌لرینی یوکله‌ین فایل‌لار گؤستریلیر.",
+       "listfiles-summary": "بۇ اؤزل صحیفه، بۆتون یۆکله‌نیلن فایل‌لاری گؤستریر.",
        "listfiles_search_for": "مئدیا آدی اوچون آختار:",
        "imgfile": "فایل",
        "listfiles": "فایل لیستی",
        "listfiles_size": "اؤلچو",
        "listfiles_description": "شرح",
        "listfiles_count": "نوسخه‌لر",
+       "listfiles-show-all": "عکسلرین اسکی نۆسخه‌لرینی ایچینه آل.",
+       "listfiles-latestversion": "ایندیکی نۆسخه",
+       "listfiles-latestversion-yes": "بلی",
+       "listfiles-latestversion-no": "یوخ",
        "file-anchor-link": "فایل",
        "filehist": "فايل گئچمیشی",
        "filehist-help": "فايلین اول‌کی وئرسیياسینی گؤرمک اۆچون گۆن/تاریخ بؤلمه‌سینده‌کی تاریخلری تێقلايین.",
        "download": "اندیر",
        "unwatchedpages": "ایزلنمه‌میش صحیفه‌لر",
        "listredirects": "یول‌لاندیرمالارین لیستی",
+       "listduplicatedfiles": "کوْپی‌لری اولان فایل‌لاری لیستی",
+       "listduplicatedfiles-summary": "بۇرا، سوْن نۆسخه‌لری آیری بیر فایلین سوْن نۆسخه‌سی‌نین کوْپی‌سی اوْلان فایل‌لارین لیستیدیر. یالنیز یئرلی فایل‌لار گؤز آلتینا آلینیبلار.",
+       "listduplicatedfiles-entry": "[[:File:$1|$1]]-ین [[$3|{{PLURAL:$2|بیر کوْپی‌سی|$2 کوْپی‌سی}}]] واردیر.",
        "unusedtemplates": "ایشلدیلمه‌میش شابلونلار",
        "unusedtemplatestext": "بو صحیفه بوتون، {{ns:template}} آدفضاسیندا اولان و باشقا صحیفه‌لرده اولمایان صحیفه‌لری لیست ائدیر.\nشابلونلاری سیلمک‌دن اؤنجه، لوطفاً اونلارا اولان باشقا باغلانتیلاری یوخلایین.",
        "unusedtemplateswlh": "باشقا باغلانتیلار",
        "randompage": "راست‌گله صحیفه",
        "randompage-nopages": "بو {{PLURAL:$2|آدفضاسیندا|آدفضالاریندا}} هئچ صحیفه یوخدور: $1.",
+       "randomincategory": "بؤلمه‌ده راست‌گله صحیفه",
+       "randomincategory-invalidcategory": "«$1» بیر گئچرلی بؤلمه آدی دئییل.",
+       "randomincategory-nopages": "[[:Category:$1|$1]] بؤلمه‌سین‌ده، هئچ صحیفه یوخدور.",
+       "randomincategory-selectcategory": "بؤلمه‌دن آلیناجاق راست‌گله صحیفه: $1 $2.",
+       "randomincategory-selectcategory-submit": "گئت",
        "randomredirect": "راست‌گله یول‌لاندیرما",
        "randomredirect-nopages": "«$1» آدفضاسیندا هئچ بیر یول‌لاندیرما یوخدور.",
        "statistics": "آمارلار",
        "pageswithprop-text": "بو صحیفه‌ده، بیر خاص صحیفه اؤزل‌لیگی ایشلدن صحیفه‌لرین لیستی واردیر.",
        "pageswithprop-prop": "اؤزل‌لیک آدی:",
        "pageswithprop-submit": "گئت",
+       "pageswithprop-prophidden-long": "اۇزون یازی اؤزل‌لیک دَیَری گیزلی ($1)",
+       "pageswithprop-prophidden-binary": "ایکی‌لی اؤزل‌لیک دَیَری گیزلی ($1)",
        "doubleredirects": "ایکی‌قات یول‌لاندیرمالار",
        "doubleredirectstext": "بو صحیفه دیگر ایستیقامتلندیرمه صحیفه‌لرینه ایستیقامتلندیرمه ائدن صحیفه‌لری سیاهی‌لار.\nهر سطرین ائهتیوا ائتدیگی کئچیدلر؛ بیرینجی و ایکینجی ایستیقامتلندیرمه، هم‌چی‌نین ایکینجی ایستیقامتلن‌دیرمک هدفی، کی بو عمومیتله بیرینجی ایستیقامتلن‌دیرمک گؤسترمه‌سی لازیم اولان \"گئرچک\" هدف صحیفه‌سی‌دیر.\n<del> اوستو خط لنیب </del> دوزلمیش دیر.",
-       "double-redirect-fixed-move": "[[$1]] Ø¯Û\8cÛ\8cشدÛ\8cرÛ\8cÙ\84Û\8cب.\nحاضردا [[$2]]-Û\8cÙ\87 Ø§Û\8cستÛ\8cÙ\82اÙ\85تÙ\84Ù\86Û\8cب.",
-       "double-redirect-fixed-maintenance": "[[$1]]-دن [[$2]]-یه ایکی‌قات ایستیقامتلنمه دوزلدیلیر.",
+       "double-redirect-fixed-move": "[[$1]] Ø¢Ù¾Ø§Ø±Û\8cÙ\84Ù\85Û\8cØ´â\80\8cدÛ\8cر.\nاÙ\88Ù\92تÙ\88Ù\85اتÛ\8cÚ© Ø§Ù\88Ù\92Ù\84اراÙ\82 Ú¯Û\86Ù\86جÙ\84â\80\8cÙ\84Ù\87â\80\8cÙ\86Û\8cبدÛ\8cر Ù\88 Ø§Û\8cÙ\86دÛ\8c [[$2]]-Ù\87 Û\8cÙ\88Ù\92Ù\84â\80\8cÙ\84اÙ\86دÛ\8cرÛ\8cر.",
+       "double-redirect-fixed-maintenance": "[[$1]]-دن [[$2]]-ه ایکی‌قات یوْل‌لاندیرما، بیر ساخلاما ایشین‌ده، اوْتوماتیک اوْلاراق دۆزلدیلیر.",
        "double-redirect-fixer": "يؤنلندیرمه تعمیرجیسی",
        "brokenredirects": "خطالی ایستیقامتلندیرمه",
        "brokenredirectstext": "آشاغی‌داکی ایستیقامتلندیرمه‌لر مؤوجود اولمایان صحیفه‌لره کئچید وئریر:",
        "ninterwikis": "{{PLURAL:$1|بیر|$1}} ویکی‌آراسی",
        "nlinks": "{{PLURAL:$1|بیر|$1}} باغلانتی",
        "nmembers": "{{PLURAL:$1|بیر|$1}} عوضو",
+       "nmemberschanged": "$1 → $2 {{PLURAL:$2|عۆضو}}",
        "nrevisions": "{{PLURAL:$1|بیر|$1}} نوسخه",
        "nviews": "{{PLURAL:$1|بیر|$1}} گؤرونوش",
        "nimagelinks": "$1 ده{{PLURAL:$1|صحیفه‌ده}}ایستیفاده اولونمور",
        "mostrevisions": "ان چوخ نظردن کئچیریلمیش (وئرسیا‌لی) مقاله‌لر",
        "prefixindex": "بوتون اؤن‌اَکلی صحیفه‌لر",
        "prefixindex-namespace": "بوتون صفحه لر (آد فضاسی$1) قاباق دان یاپیشیقی وار",
+       "prefixindex-strip": "لیست‌ده، اؤن‌اَکی قوْپارت",
        "shortpages": "قیسا صحیفه‌‌لر",
        "longpages": "اوزون صحیفه‌‌لر",
        "deadendpages": "کئچید وئرمه‌ين صحیفه‌‌لر",
        "deadendpagestext": "آشاغیداکی صحیفه‌‌لردن بو ویکیپئدیياداکی دیگر صحیفه‌‌لره هئچ بیر کئچید يوخدور.",
        "protectedpages": "محافظه‌‌لی صحیفه‌‌لر",
        "protectedpages-indef": "يالنیز مدتسیز محافظه‌‌لر",
+       "protectedpages-summary": "بۇ صحیفه، ایندیکی قوْرونان موْجود اوْلان صحیفه‌لری لیست ائدیر. یارانماق‌دان قوْرونان باشلیقلارین لیستینی گؤرمک اۆچون [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]]-ه باخین.",
        "protectedpages-cascade": "یالنیز کاسکاد محافظه‌لر",
+       "protectedpages-noredirect": "یوْل‌لاندیرمالاری گیزلت",
        "protectedpagesempty": "حال-حاضردا بو پارامئتره اویغون هئچ بیر محافظه‌لی صحیفه یوخ‌دور",
+       "protectedpages-timestamp": "واخت دامغاسی",
+       "protectedpages-page": "صحیفه",
+       "protectedpages-expiry": "بیتمک تاریخی",
+       "protectedpages-performer": "قوْرویان ایستیفاده‌چی",
+       "protectedpages-params": "قوْروماق پارامئترلری",
+       "protectedpages-reason": "نَدَن‌لیگی",
+       "protectedpages-unknown-timestamp": "بیلینمه‌ین",
+       "protectedpages-unknown-performer": "بیلینمه‌ین ایستیفاده‌چی",
        "protectedtitles": "محافظه‌لی باش‌لیق‌لار",
+       "protectedtitles-summary": "بۇ صحیفه، ایندیکی یارانماق‌دان قوْرونان باشلیقلاری لیست ائدیر. ایندیکی قوْرونان موْجود اوْلان صحیفه‌لرین لیستینی گؤرمک اۆچون، [[{{#special:ProtectedPages}}|{{int:protectedpages}}]]-ه باخین.",
        "protectedtitlesempty": "حال-حاضردا، بو پارامئترلری قورونان هئچ بیر موضوع یوخ‌دور.",
        "listusers": "ایستیفاده‌چی سیياهیسی",
        "listusers-editsonly": "يالنیز دَییشدیرمه ائدن ایستیفاده‌چیلری گؤستر",
        "listusers-creationsort": "يارانما تاریخینه گؤره سیرالا",
+       "listusers-desc": "آزالان سیرادا سیرالا",
        "usereditcount": "$1 {{PLURAL:$1|دَییشدیرمه}}",
        "usercreated": "$1 تاریخینده، ساعات $2-ده {{GENDER:$3|یارانیب‌دیر}}",
        "newpages": "يئنی صحیفه‌‌‌لر",
        "activeusers-noresult": "هئچ ایستیفاده‌چی تاپیلمادی.",
        "listgrouprights": "ایستیفاده‌چی قروپ حاقلاری",
        "listgrouprights-summary": "آشاغیدا، بو ویکی‌ده تانیلان ایستیفاده‌چی گروپلاری و اونلارین حاقلاری گؤستریلیر.\nتک حاقلار اوچون ده، [[{{MediaWiki:Listgrouprights-helppage}}|آرتیق بیلگیلر]] اولا بیلر.",
-       "listgrouprights-key": "* <span class=\"listgrouprights-granted\">وئریلمیش حاق</span>\n* <span class=\"listgrouprights-revoked\">قایتاریلمیش حاق</span>",
+       "listgrouprights-key": "یوْل گؤستری:\n* <span class=\"listgrouprights-granted\">وئریلمیش حاق</span>\n* <span class=\"listgrouprights-revoked\">قایتاریلمیش حاق</span>",
        "listgrouprights-group": "قروپ",
        "listgrouprights-rights": "حاقلار",
        "listgrouprights-helppage": "Help:قروپ حاقلاری",
        "listgrouprights-removegroup-self": "{{PLURAL:$2|گروپو|گروپلاری}} اؤز حسابیندان سیل: $1",
        "listgrouprights-addgroup-self-all": "بوتون گروپلاری اؤز حسابینا آرتیر",
        "listgrouprights-removegroup-self-all": "بوتون گروپلاری اؤز حسابیندان سیل",
+       "listgrouprights-namespaceprotection-header": "آدفضاسی محدودیتلری",
+       "listgrouprights-namespaceprotection-namespace": "آدفضاسی",
+       "listgrouprights-namespaceprotection-restrictedto": "ایستیفاده‌چی‌نین بۇنلاری دَییشدیرمک حاق(لار)ی",
+       "trackingcategories": "ایزله‌مک بؤلمه‌لری",
+       "trackingcategories-msg": "ایزله‌مک بؤلومو",
+       "trackingcategories-name": "مئساژ آدی",
+       "trackingcategories-desc": "بؤلمه ایچری آلماق معیارلاری",
        "mailnologin": "گؤندرمه آدرسی یوخدور",
        "mailnologintext": "باشقا ایستیفاده‌چیلره ایمیل گؤندرک اوچون، [[Special:UserLogin|گیریش]] ائدیب و [[Special:Preferences|ترجیحلر]]ینیزده گئچرلی ایمیل آدرسی وئرمه‌لیسینیز.",
        "emailuser": "بو ایستیفاده‌چی‌یه ایمیل گؤندر",
        "allmessages-prefix": "اؤنک ایله فیلترلی:",
        "allmessages-language": "دیل:",
        "allmessages-filter-submit": "گئت",
+       "allmessages-filter-translate": "چئویر",
        "thumbnail-more": "بؤیوت",
        "filemissing": "فایل تاپیلمادی",
        "thumbnail_error": "کیچیک شکیل یاراتما خطاسی: $1",
        "newimages-summary": "بو خصوصی صحیفه، ان سون یوک‌لنن فایل‌لاری گؤستریر.",
        "newimages-legend": "سۆزگَج",
        "newimages-label": "فایلین (و یا اونون بیر حیسه‌سی‌نین) آدی:",
-       "showhidebots": "($1 روبات دییشدیر)",
        "noimages": "هئچ نیی گؤرممک.",
        "ilsubmit": "آختار",
        "bydate": "تاریخین اوستوندن",
        "imgmultipagenext": "سونراکی صحیفه‌‌ &rarr;",
        "imgmultigo": "گئت!",
        "imgmultigoto": "$1 صحیفه‌‌يه گئت",
+       "img-lang-default": "(وارساییلان دیل)",
+       "img-lang-go": "گئت",
        "ascending_abbrev": "آرتما سیراسینا گؤره",
        "descending_abbrev": "آزالما سیراسینا گؤره",
        "table_pager_next": "سونراکی صحیفه",
        "version-hook-name": "چنگه‌لین آدی",
        "version-hook-subscribedby": "طرفیندن گیریش‌‌میش",
        "version-version": "(نسخه $1)",
-       "version-license": "لیسانس",
+       "version-license": "مِدیاویکی لیسانسی",
+       "version-ext-license": "لیسانس",
        "version-poweredby-credits": "بو wیکی ' ''[https://www.mediawiki.org/ مئدیاwیکی]'ع' پروقرامی ایستیفاده ائدیله‌رک يارادیلمیشدیر، یاازارلار © 2001-$1 $2.",
        "version-poweredby-others": "آیریلار",
        "version-credits-summary": "بو ایستفاده چیلر دییشدیر لرینه گوره [[Special:Version|مئدیاویکی]] تانیش ائدیرم.",
        "tags-tag": "یاپیشقان آدی",
        "tags-display-header": "ديَیشیکلیک لیستئلئریندئکی گؤرونوش",
        "tags-description-header": "آنلامینین تام آچیقلاماسی",
+       "tags-active-header": "چالیشقلان؟",
        "tags-hitcount-header": "یاپیشقانلی دییشیک‌لیک‌لر",
+       "tags-active-yes": "بلی",
+       "tags-active-no": "یوْخ",
        "tags-edit": "دَییشدیر",
        "tags-hitcount": "$1 {{PLURAL:$1|دییشیکلیک|دییشیک‌لیک}}",
        "comparepages": "صحیفه‌لری قارشی‌لاش‌دیر",
        "duration-decades": "{{PLURAL:$1|بیر|$1}} اون‌ایل",
        "duration-centuries": "{{PLURAL:$1|بیر|$1}} یوز-ایل",
        "duration-millennia": "{{PLURAL:$1|بیر|$1}} مین‌ایل",
-       "rotate-comment": "عکس $1 {{PLURAL:$1|درجه}} ساعات عقربه‌لری ایستیقامتینده فیرلاندیریلب‌دیر"
+       "rotate-comment": "عکس $1 {{PLURAL:$1|درجه}} ساعات عقربه‌لری ایستیقامتینده فیرلاندیریلب‌دیر",
+       "expand_templates_generate_rawhtml": "چیی اچ‌تی‌ام‌ال گؤستر",
+       "expand_templates_preview": "اؤن‌گؤستریش"
 }
index 16dafb1..65c22ab 100644 (file)
        "newimages-summary": "Был махсус бит һуңғы тейәлгән файлдарҙы күрһәтә.",
        "newimages-legend": "Һайлау",
        "newimages-label": "Файл исеме (йәки өлөшө):",
-       "showhidebots": "(боттарҙы $1)",
        "noimages": "Рәсемдәр юҡ.",
        "ilsubmit": "Эҙләү",
        "bydate": "булдырыу көнө буйынса",
index 9823fe4..f98f58a 100644 (file)
        "newimages-summary": "ای حاصین صفحه اهرین آپلود بوتگین فایلان پیشداریت",
        "newimages-legend": "فیلتر",
        "newimages-label": "نام فایل ( یا چنڈی چه آيی):",
-       "showhidebots": "(روباتان $1 )",
        "noimages": "هیچی په دیستن",
        "ilsubmit": "گردگ",
        "bydate": "گون تاریح",
index f2541e1..2a84873 100644 (file)
        "newimages-summary": "Ining espesyal na pahina minaphiling kan huring pinagkargang mga sagunson.",
        "newimages-legend": "An saraan",
        "newimages-label": "Ngaran nin sagunson (o sarong parte kaini):",
-       "showhidebots": "($1 na bots)",
        "noimages": "Mayong mahihilíng.",
        "ilsubmit": "Hanápon",
        "bydate": "sa petsa",
index afdbc1a..84593ce 100644 (file)
        "post-expand-template-inclusion-category-desc": "Пасьля разгортваньня ўсіх шаблёнаў, памер старонкі перавысіў <code>$wgMaxArticleSize</code>, таму некаторыя шаблёны не былі паказаныя цалкам.",
        "post-expand-template-argument-category-desc": "Пасьля раскрыцьця аргумэнту шаблёну (нешта ў трайных дужках, напрыклад, <code>{{{Foo}}}</code>), старонка перавышае памер <code>$wgMaxArticleSize</code>.",
        "expensive-parserfunction-category-desc": "На старонцы ўжываецца зашмат рэсурсаёмістых функцыяў парсэру (такіх, як <code>#ifexist</code>). Глядзіце [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+       "broken-file-category-desc": "Катэгорыя дадаецца, калі старонка ўтрымлівае няслушную спасылку на файл (спасылку на файл, які не існуе).",
+       "hidden-category-category-desc": "Гэта катэгорыя з дададзенай меткай <code><nowiki>__HIDDENCAT__</nowiki></code> у ёй, што па змоўчаньні не адлюстроўвае яе на старонках у сьпісе катэгорыяў.",
        "mailnologin": "Няма адрасу атрымальніка",
        "mailnologintext": "Вам неабходна [[Special:UserLogin|ўвайсьці ў сыстэму]] і мець пацьверджаны адрас электроннай пошты ў Вашых [[Special:Preferences|наладах]], каб дасылаць лісты іншым удзельнікам.",
        "emailuser": "Даслаць ліст",
        "newimages-summary": "Гэтая спэцыяльная старонка паказвае нядаўна загружаныя файлы.",
        "newimages-legend": "Фільтар",
        "newimages-label": "Назва файла (альбо яе частка):",
-       "showhidebots": "($1 робатаў)",
        "noimages": "Выявы адсутнічаюць.",
        "ilsubmit": "Шукаць",
        "bydate": "па даце",
index 6d9bce4..25f6b13 100644 (file)
        "newimages-summary": "Тут паказаныя нядаўна ўкладзеныя файлы.",
        "newimages-legend": "Фільтр",
        "newimages-label": "Назва файла (або яе частка):",
-       "showhidebots": "($1 робатаў)",
        "noimages": "Тут нічога няма.",
        "ilsubmit": "Знайсці",
        "bydate": "п. датаў",
index 568a00a..1763074 100644 (file)
        "newimages-summary": "Тази специална страница показва последно качените файлове.",
        "newimages-legend": "Име на файл",
        "newimages-label": "Име на файл (или част от него):",
-       "showhidebots": "($1 на ботове)",
        "noimages": "Няма нищо.",
        "ilsubmit": "Търсене",
        "bydate": "по дата",
index d4c14f3..290cdbb 100644 (file)
        "newimages-summary": "Tungkaran istimiwa ngini manampaikan babarakas nang hahanyar dihunggah.",
        "newimages-legend": "Saringan",
        "newimages-label": "Ngaran barakas (atawa sapalihnya):",
-       "showhidebots": "($1 bot)",
        "noimages": "Kadada nang dijanaki.",
        "ilsubmit": "Gagai",
        "bydate": "ulih tanggal",
index 3de126c..4c1ab8e 100644 (file)
        "newimages-summary": "এই বিশেষ পাতা সর্বশেষ আপলোডকৃত ফাইল দেখাবে।",
        "newimages-legend": "ছাকনী",
        "newimages-label": "ফাইলের নাম (অথবা এর কোন অংশ):",
-       "showhidebots": "($1 বট)",
        "noimages": "দেখার মত কিছু নেই।",
        "ilsubmit": "অনুসন্ধান",
        "bydate": "তারিখ অনুযায়ী",
index 4c1c0dd..3c36737 100644 (file)
        "edit-gone-missing": "Dibosupl hizivaat ar bajenn.\nDiverket eo bet evit doare.",
        "edit-conflict": "Tabut kemmañ.",
        "edit-no-change": "N'eo ket bet kemeret ho tegasadenn e kont rak ne oa ket bet kemmet netra en destenn.",
+       "postedit-confirmation-created": "Krouet eo bet ar bajenn.",
+       "postedit-confirmation-restored": "Adsavet eo bet ar bajenn.",
        "postedit-confirmation-saved": "Enrollet eo bet ho kemmoù.",
        "edit-already-exists": "N'eus ket bet gallet krouiñ ur bajenn nevez.\nKrouet e oa bet c'hoazh.",
        "defaultmessagetext": "Testenn dre ziouer",
        "newimages-summary": "Diskouez a ra ar bajenn dibar-mañ roll ar restroù diwezhañ bet enporzhiet.",
        "newimages-legend": "Sil",
        "newimages-label": "Anv ar restr (pe darn anezhi) :",
-       "showhidebots": "($1 bot)",
        "noimages": "Netra da welet.",
        "ilsubmit": "Klask",
        "bydate": "dre an deiziad anezho",
        "htmlform-no": "Ket",
        "htmlform-yes": "Ya",
        "htmlform-chosen-placeholder": "Diuzañ un dibarzh",
+       "htmlform-cloner-create": "Ouzhpennañ muioc'h",
+       "htmlform-cloner-delete": "Dilemel",
+       "htmlform-cloner-required": "Un dalvoudenn a zo ret da vihanañ.",
        "sqlite-has-fts": "$1 gant enklask eus an destenn a-bezh embreget",
        "sqlite-no-fts": "$1 hep enklask eus an destenn a-bezh embreget",
        "logentry-delete-delete": "Diverket eo bet ar bajenn $3 gant $1",
index 0dd6da2..2310ae3 100644 (file)
        "newimages-summary": "Ova specijalna stranica prikazuje posljednje postavljene datoteke.",
        "newimages-legend": "Filter",
        "newimages-label": "Ime datoteke (ili dio imena):",
-       "showhidebots": "($1 botove)",
        "noimages": "Ništa za prikazati.",
        "ilsubmit": "Traži",
        "bydate": "po datumu",
index f89d77f..6052d7d 100644 (file)
        "sp-contributions-blocklog": "Registre de bloquejos",
        "sp-contributions-suppresslog": "contribucions suprimides de l'usuari",
        "sp-contributions-deleted": "contribucions d'usuari esborrades",
-       "sp-contributions-uploads": "pujades",
+       "sp-contributions-uploads": "càrregues",
        "sp-contributions-logs": "registres",
        "sp-contributions-talk": "discussió",
        "sp-contributions-userrights": "gestió de drets d'usuari",
        "newimages-summary": "Aquesta pàgina especial mostra els darrers fitxers carregats.",
        "newimages-legend": "Nom del fitxer",
        "newimages-label": "Nom de fitxer (o part d'ell):",
-       "showhidebots": "($1 bots)",
        "noimages": "Res per veure.",
        "ilsubmit": "Cerca",
        "bydate": "per data",
index 201ef6a..d92253f 100644 (file)
        "listingcontinuesabbrev": "(кхин дlа)",
        "index-category": "Меттигтерахьйо агlонаш",
        "noindex-category": "ДӀахьушйоцу агӀонаш",
-       "broken-file-category": "{{#switch:{{NAMESPACE}}\n |{{ns:0}}=Ð\91олÑ\85 Ñ\86абеÑ\88 Ñ\84айлийн Ñ\85Ñ\8cажоÑ\80агаÑ\88 Ð¹Ð¾Ð»Ñ\83 Ð°Ð³Ó\80онаÑ\88}}",
+       "broken-file-category": "{{#switch:{{NAMESPACE}}\n |{{ns:0}}=Болх цабеш файлийн хьажоргаш йолу агӀонаш}}",
        "about": "Цуьнах лаьцна",
        "article": "Яззам",
        "newwindow": "(керлачу корехь)",
        "rows": "МогӀанаш:",
        "columns": "БӀогӀамаш:",
        "searchresultshead": "Лаха",
-       "stub-threshold": "Ð\9aеÑ\87 Ñ\8fÑ\80ан Ð´Ð¾Ð·Ð° <a href=\"#\" class=\"stub\">коÑ\8cÑ\80Ñ\82амогÓ\80амна Ñ\85Ñ\8cажоÑ\80агаÑ\88</a> (байÑ\82аÑ\88каÑ\85):",
+       "stub-threshold": "Кеч яран доза <a href=\"#\" class=\"stub\">коьртамогӀамна хьажоргаш</a> (байташках):",
        "stub-threshold-disabled": "ДӀадайина",
        "recentchangesdays": "Керла нисдар гайта динахь:",
        "recentchangesdays-max": "Къезиг $1 {{PLURAL:$1|дена}}",
        "brokenredirectstext": "Лахара дӀасахьажийнарш ю йоцучу агӀонийн тӀе хьажийна:",
        "brokenredirects-edit": "нисъе",
        "brokenredirects-delete": "дӀаяккха",
-       "withoutinterwiki": "ЮкÑ\8aаÑ\80вики-Ñ\85Ñ\8cажоÑ\80агаÑ\88 Ð¹Ð¾Ñ\86Ñ\83 Ð°Ð³Ó\80онаÑ\88",
+       "withoutinterwiki": "Юкъарвики-хьажоргаш йоцу агӀонаш",
        "withoutinterwiki-summary": "Лахара агӀонийн юкъарвики-хьажоргаш яц:",
        "withoutinterwiki-submit": "Гайта",
        "fewestrevisions": "ЧIогIа кIезиг башхонаш йолу агIонаш",
        "whatlinkshere-hideredirs": "$1 дӀасахьажорш",
        "whatlinkshere-hidetrans": "$1 латораш",
        "whatlinkshere-hidelinks": "$1 хьажоргаш",
-       "whatlinkshere-hideimages": "$1 Ñ\84айлийн Ñ\85Ñ\8cажоÑ\80агаÑ\88",
+       "whatlinkshere-hideimages": "$1 файлийн хьажоргаш",
        "whatlinkshere-filters": "Литтарш",
        "autoblockid": "Ша блоккхетар #$1",
        "block": "Декъашхочун блоктохар",
        "newimages": "Керлачу файлийн галерей",
        "newimages-summary": "ХӀокху белхан агӀона чохь гойтуш ю дукха хан йоццуш чуйаьхна файлаш.",
        "newimages-legend": "Литтар",
-       "showhidebots": "$1 боташ",
        "noimages": "Суьрташ дац.",
        "ilsubmit": "Лаха",
        "bydate": "терахьашца",
index 5e1d51f..0f786c4 100644 (file)
        "protectedpages": "پەڕە پارێزراوەکان",
        "protectedpages-indef": "تەنیا پاراستنە بێسنوورەکان",
        "protectedpages-cascade": "تەنیا پاراستنە زنجیرییەکان",
+       "protectedpages-noredirect": "ڕەوانەکەرەکان بشارەوە",
        "protectedpagesempty": "هیچ لاپەڕەیک ئێستا بەم دیاریکراوانە نەپارێزراوە.",
        "protectedpages-page": "پەڕە",
+       "protectedpages-params": "پارامەترەکانی پاراستن",
+       "protectedpages-reason": "ھۆکار",
        "protectedtitles": "سەرناوە پارێزراوەکان",
        "protectedtitlesempty": "ھیچ سەرناوێک بەم سنوورانەوە ئێستا نەپارێزراوە.",
        "listusers": "پێرستی بەکارھێنەران",
        "newimages-summary": "ئەم پەڕە تایبەتە دوایین پەڕگە بارکراوەکان نیشان دەدات.",
        "newimages-legend": "پاڵاوتن",
        "newimages-label": "ناوی پەڕگە (یان بەشێکیی):",
-       "showhidebots": "(بۆتەکان $1)",
        "noimages": "هیچ بۆ بینین نییە.",
        "ilsubmit": "بگەڕێ",
        "bydate": "بەپێی ڕێکەوت",
index 7a1d270..42671bb 100644 (file)
        "whatlinkshere-links": "$1 ligami",
        "whatlinkshere-hidetrans": "inclusione",
        "whatlinkshere-hidelinks": "$1 ligami",
-       "ipadressorusername": "Adrizzu IP o nome di cuntributore",
+       "ipaddressorusername": "Adrizzu IP o nome di cuntributore",
        "ipbreason": "Mutivu:",
        "ipboptions": "2 ore:2 hours,1 ghjornu:1 day,3 ghjorni:3 days,1 sittimana:1 week,2 sittimane:2 weeks,1 mese:1 month,3 mesi:3 months,6 mesi:6 months,1 annu:1 year,infinitu:infinite",
        "ipblocklist": "Cuntributori bluccati",
        "file-nohires": "Una diversione incù una risoluzione più alta ùn hè micca dispunibile.",
        "show-big-image": "Schedariu originale",
        "show-big-image-other": "{{PLURAL:$2|Altra risuluzione|Altre risuluzioni}}: $1.",
-       "showhidebots": "($1 boti)",
        "noimages": "Nulla da vede.",
        "ilsubmit": "Ricerca",
        "bydate": "per data",
        "table_pager_limit_label": "Risultati per pagina:",
        "table_pager_limit_submit": "Invià",
        "table_pager_empty": "Micca risultati",
+       "autosumm-replace": "Pagina sustituita incù '$1'",
        "autoredircomment": "Reindirizzamentu à [[$1]]",
        "autosumm-new": "Pagina nova: $1",
        "watchlistedit-raw-titles": "Pagine:",
        "tags-edit": "mudificà",
        "logentry-delete-delete": "$1 ha cancellatu a pagina $3",
        "logentry-move-move": "$1 {{GENDER:$2|hà spustatu}} a pagina $3 à $4",
+       "logentry-newusers-create": "U participante $3 hè statu creatu da $1",
        "rightsnone": "(nessunu)",
        "expand_templates_output": "Risultatu"
 }
index 280e7e9..f3eb3bc 100644 (file)
        "newimages-summary": "Бу махсус саифе сонъки юкленген файлларны косьтере.",
        "newimages-legend": "Сюзгюч",
        "newimages-label": "Файл ады (я да онынъ бир парчасы):",
-       "showhidebots": "(ботларны $1)",
        "noimages": "Ресим ёкъ.",
        "ilsubmit": "Къыдыр",
        "bydate": "хронологик сыранен",
index 26ee352..1bc4ccf 100644 (file)
        "newimages-summary": "Bu mahsus saife soñki yüklengen fayllarnı köstere.",
        "newimages-legend": "Süzgüç",
        "newimages-label": "Fayl adı (ya da onıñ bir parçası):",
-       "showhidebots": "(botlarnı $1)",
        "noimages": "Resim yoq.",
        "ilsubmit": "Qıdır",
        "bydate": "hronologik sıranen",
index 22f2365..e2c451a 100644 (file)
        "newimages-summary": "Na této speciální stránce se zobrazují poslední načtené soubory.",
        "newimages-legend": "Filtr",
        "newimages-label": "Název souboru (nebo jeho část):",
-       "showhidebots": "($1 roboty)",
        "noimages": "Není co zobrazit.",
        "ilsubmit": "Hledat",
        "bydate": "podle data",
index a76a0f4..db82d56 100644 (file)
        "newimages-summary": "Mae'r dudalen arbennig hon yn dangos y ffeiliau a uwchlwythwyd yn ddiweddar.",
        "newimages-legend": "Hidlo",
        "newimages-label": "Enw'r ffeil (neu ran ohono):",
-       "showhidebots": "($1 botiau)",
        "noimages": "Does dim byd i'w weld.",
        "ilsubmit": "Chwilio",
        "bydate": "yn ôl dyddiad",
index 0df3887..f4749fb 100644 (file)
        "newimages-summary": "Denne specialside viser de senest oplagte filer.",
        "newimages-legend": "Filter",
        "newimages-label": "Filnavn (eller en del af det):",
-       "showhidebots": "($1 botter)",
        "noimages": "Ingen filer fundet.",
        "ilsubmit": "Søg",
        "bydate": "efter dato",
index 33d4edb..99d8414 100644 (file)
        "newimages-summary": "Diese Spezialseite zeigt die zuletzt hochgeladenen Dateien an.",
        "newimages-legend": "Filter",
        "newimages-label": "Dateiname (oder ein Teil davon):",
-       "showhidebots": "(Bots $1)",
+       "newimages-showbots": "Uploads von Bots anzeigen",
        "noimages": "Keine Dateien gefunden.",
        "ilsubmit": "Suchen",
        "bydate": "nach Datum",
index bbbbff3..20a78da 100644 (file)
        "october-date": "Tışrino Verên $1",
        "november-date": "Tışrino Peyên $1",
        "december-date": "Kanun $1",
-       "pagecategories": "{{PLURAL:$1|Kategori|Kategoriy}}",
+       "pagecategories": "{{PLURAL:$1|Kategoriye|Kategoriy}}",
        "category_header": "Pelê ke kategoriya \"$1\" derê",
        "subcategories": "Kategoriyê bınêni",
        "category-media-header": "Dosyeyê ke kategoriya \"$1\" derê",
        "withoutinterwiki-submit": "Bımocne",
        "fewestrevisions": "Pelê be senık çımraviyarnayışi",
        "nbytes": "$1 {{PLURAL:$1|bayt|bayti}}",
-       "ncategories": "$1 {{PLURAL:$1|Kategori|Kategoriy}}",
+       "ncategories": "$1 {{PLURAL:$1|Kategoriye|Kategoriy}}",
        "ninterwikis": "$1 {{PLURAL:$1|interwiki|interwikiy}}",
        "nlinks": "$1 {{PLURAL:$1|link|linkî}}",
        "nmembers": "$1 {{PLURAL:$1|eza|ezayan}}",
        "specialpage-empty": "Seba na rapore netice çıniyo.",
        "lonelypages": "Pelê seyi",
        "lonelypagestext": "Ena pelî link nibiyê ya zi pelanê binî {{SITENAME}} de transclude biy.",
-       "uncategorizedpages": "Pelayanê ke kategorî nibiye",
-       "uncategorizedcategories": "Kategoriyê ke bêkategoriyê",
+       "uncategorizedpages": "Pelê ke kategorize nêbiyê",
+       "uncategorizedcategories": "Kategoriyê ke kategorize nêbiyê",
        "uncategorizedimages": "Dosyayê ke bê kategoriyê",
        "uncategorizedtemplates": "Şablonê ke bêkategoriyê",
-       "unusedcategories": "Kategoriyê ke nê xebtênê",
+       "unusedcategories": "Kategoriyê ke nêgureniyê",
        "unusedimages": "Dosyeyê ke nê xebtênê",
        "popularpages": "Pelî ke populer o.",
-       "wantedcategories": "Kategoriye ke waziyayê",
+       "wantedcategories": "Kategoriyê ke waziyayê",
        "wantedpages": "Peleye ke waştênê",
        "wantedpages-badtitle": "sernuşte meqbul niyo: $1",
        "wantedfiles": "Dosyeyê cıgeyriyayey",
        "wantedfiletext-nocat": "Dosyeyê cêrêni estê lekin karnêvıstê. Dosyeyê xeribi liste benê. bo babeta dano <del>ateber</del>",
        "wantedtemplates": "Şablonê ke waziyenê",
        "mostlinked": "Pelî ke tewr zafî lînk bîy.",
-       "mostlinkedcategories": "Kategoriyê ke tewr zaf wesiqa rê gıreyê",
+       "mostlinkedcategories": "Kategoriyê ke tewr zehf meqaley tede estê",
        "mostlinkedtemplates": "Şablonê ke tewr zafî pela re gıre bîye.",
        "mostcategories": "Pelan ke tewr zaf kategorî estê.",
        "mostimages": "Dosyayan ke tewr zaf link estê.",
        "move": "Bere",
        "movethispage": "Ena pele bere",
        "unusedimagestext": "Enê dosyey estê, feqet zerrey yew pele de wedardey niyê.\nXo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gırê bê, u wına şenê verba gurênayışo feal de tiya hewna lista bê.",
-       "unusedcategoriestext": "kategoriyê ke cêrdeyê estê lakin qet ju wesiqa yana kategori de nexebtênê.",
+       "unusedcategoriestext": "Kategoriyê ke cêr derê, nê bıbê zi, terefê qet madeyan ya zi kategoriyan ra nêgureniyenê.",
        "notargettitle": "Hedef çini yo",
        "notargettext": "qey xebıtnayişê ney fonksiyoni şıma yew hedef nişane nêkerd.",
        "nopagetitle": "wina yew pelê hedefi çin o.",
        "activeusers-count": "$1 peyni {{PLURAL:$3|roz de|$3 rozan de}} $1 {{PLURAL:$1|hereket|hereketi}} kerdê",
        "activeusers-from": "Enê karberi ra tepya bımocne:",
        "activeusers-hidebots": "Botan bınımne",
-       "activeusers-hidesysops": "İdarekerdoğan bınımne",
+       "activeusers-hidesysops": "İdarekaran bınımne",
        "activeusers-noresult": "Karberi nêdiyayê.",
        "listgrouprights": "heqê grubê karberi",
        "listgrouprights-summary": "wikiya cêrın a ke tede grubê karberi nişane biyê, listeya heqê cıresayişê inan o.\nqey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed]] belka esto.",
        "listgrouprights-addgroup-self-all": "şıma eşkeni hesabê xo re heme gruban têare bıkerî",
        "listgrouprights-removegroup-self-all": "şıma hesabê xo ra eşkeni heme gruban bıveci",
        "listgrouprights-namespaceprotection-namespace": "Caynami",
-       "trackingcategories": "Kategoriye taqiban",
-       "trackingcategories-msg": "Kategoriya taqibi",
+       "trackingcategories": "Kategoriyê teqibi",
+       "trackingcategories-msg": "Kategoriya teqibi",
        "trackingcategories-name": "Namey mesaci",
        "trackingcategories-desc": "Kriterê definayışê kategoriye",
        "trackingcategories-disabled": "Kategoriya feal niya",
        "nowatchlist": "listeya temaşa kerdıişê şıma de yew madde zi çina.",
        "watchlistanontext": "qey vurnayişê maddeya listeya temaşakerdişi $1.",
        "watchnologin": "Şıma cıkewtış nêvıraşto",
-       "addwatch": "Listeyê seyri deke",
+       "addwatch": "Lista seyrkerdışi ke",
        "addedwatchtext": "Ma pele \"[[:$1]]\" zerri [[Special:Watchlist|watchlist]]ê tı kerd de.\nEna deme ra, ma qe vurnayışan ser ena pele tı haberdar keni.",
-       "removewatch": "Listedê mınê seyr kerdışi ra hewad",
+       "removewatch": "Lista seyrkerdışi ra wedare",
        "removedwatchtext": "Ena pela \"[[:$1]]\" biya wedariya [[Special:Watchlist|listeyê seyr-kerdışi şıma]].",
        "watch": "Seyr ke",
        "watchthispage": "Ena pele seyr ke",
        "tooltip-compareselectedversions": "Ena per de ferqê rewziyonan de dı weçinaya bıvinê",
        "tooltip-watch": "Ena pele lista xoya seyrkerdışi ke",
        "tooltip-watchlistedit-normal-submit": "Sernuşteyan wedare",
-       "tooltip-watchlistedit-raw-submit": "Listeyê seyri newen ke",
+       "tooltip-watchlistedit-raw-submit": "Lista seyrkerdışi newe ke",
        "tooltip-recreate": "pel hewn a bışiyo zi tepiya biya",
        "tooltip-upload": "Sergen de bari be",
        "tooltip-rollback": "\"Peyser bia\" be yew tık pela iştıraq(an)ê peyên|i(an) peyser ano.",
        "pageinfo-recent-edits": "Amariya vurnayışan ($1 ra nata)",
        "pageinfo-recent-authors": "Amarina nuştekaran pêro",
        "pageinfo-magic-words": "{{PLURAL:$1|Çekuya|Çekuyê}} ($1) sihırini",
-       "pageinfo-hidden-categories": "($1) {{PLURAL:$1|Kategoriyer|Kategoriyan}} bınımne",
+       "pageinfo-hidden-categories": "{{PLURAL:$1|Kategoriya nımıtiye|Kategoriyê nımıtey}} ($1)",
        "pageinfo-templates": "{{PLURAL:$1|Şablono|Şablonê}} ke mocniyenê ($1)",
        "pageinfo-transclusions": "{{PLURAL:$1|1 Pele|$1 Pelan}} de bestiya pıra",
        "pageinfo-toolboxlink": "Melumatê pele",
        "newimages-summary": "Ena pela xasi dosyayi ke peni de bar biyayeyi mocnane.",
        "newimages-legend": "Avrêc",
        "newimages-label": "Nameyê dosya ( ya zi parçe ey)",
-       "showhidebots": "(bota $1)",
        "noimages": "Çik çini yo.",
        "ilsubmit": "Cı geyre",
        "bydate": "goreyê zemani",
        "exif-languagecode": "Zıwan",
        "exif-iimversion": "Verqaydê IIM",
        "exif-iimcategory": "Kategoriye",
-       "exif-iimsupplementalcategory": "Kategoriyê temam kerdışi",
+       "exif-iimsupplementalcategory": "Kategoriyê temamkerdışi",
        "exif-datetimeexpires": "No peyra mekarênê",
        "exif-datetimereleased": "Bıroşe",
        "exif-originaltransmissionref": "Oricinal pusula da kodê açarnayışi",
        "bitrate-yottabits": "$1Ybps",
        "lag-warn-normal": "Vurnayîşî ke {{PLURAL:$1|seniye|seniyeyî}} ra newiyerî belki inan nimucneno.",
        "lag-warn-high": "Eka serverê databaseyî zaf hebitiyeno, ayra vurnayîşî ke {{PLURAL:$1|seniye|seniyeyî}} ra newiyerî belki inan nimucneno.",
-       "watchlistedit-normal-title": "Listeyê seyirkerdişi bivurne",
-       "watchlistedit-normal-legend": "Listeya seyri ra sername wedarne.",
+       "watchlistedit-normal-title": "Lista seyrkerdışi bıvurne",
+       "watchlistedit-normal-legend": "Lista seyrkerdışi ra sernameyan wedare",
        "watchlistedit-normal-explain": "Listeyê seyr kerdîşî ti de serogî cor de mucnayiyo.\nEka ti wazeno seroğ biwedarne, kuti ke kistê de, ay işaret bike u \"{{int:Watchlistedit-normal-submit}}\" klik bike.\nTi hem zi eşkeno [[Special:EditWatchlist/raw|edit the raw list]].",
        "watchlistedit-normal-submit": "Sernuşteyan wedare",
        "watchlistedit-normal-done": "{{PLURAL:$1|1 seroğ|$1 seroğî}} seyr kerdişê tu ra wedarno.",
-       "watchlistedit-raw-title": "Listeyê seyirkerdişi ye hami bivurne",
-       "watchlistedit-raw-legend": "Listeyê seyirkerdişi ye hami bivurne",
+       "watchlistedit-raw-title": "Lista seyrkerdışia xame bıvurne",
+       "watchlistedit-raw-legend": "Lista seyrkerdışia xame bıvurne",
        "watchlistedit-raw-explain": "Listeyê seyr kerdîşî ti de serogî cor de mucnayiyo u ti eşkeno pê dekerdiş u wedarnayîş liste bivurne.\nEka vurnayîşê ti qediyo, Listeyê Seyr Kerdişî Rocaniye Bike \"{{int:Watchlistedit-raw-submit}}\" klik bike.\nTi hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].",
        "watchlistedit-raw-titles": "Seroğî:",
-       "watchlistedit-raw-submit": "Listeyê seyri newen ke",
+       "watchlistedit-raw-submit": "Lista seyrkerdışi newe ke",
        "watchlistedit-raw-done": "Listeyê tuyê seyrkerdişi rocaniye biyo",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 seroğ|$1 seroğî}} de kerd:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 seroğ|$1 seroği}} besteriyaye:",
-       "watchlisttools-view": "vurnayışanê eleqadari bıvin",
-       "watchlisttools-edit": "Lista seyrkerdışi bıvênên u bıvurnên",
-       "watchlisttools-raw": "Listeyê seyr-kerdışi bıvin",
+       "watchlisttools-view": "Vurnayışanê elaqedaran bıvêne",
+       "watchlisttools-edit": "Lista seyrkerdışi bıvêne û bıvurne",
+       "watchlisttools-raw": "Lista seyrkerdışia xame bıvurne",
        "iranian-calendar-m1": "Farvardin",
        "iranian-calendar-m2": "Ordibeheşt",
        "iranian-calendar-m3": "Xordad",
index 68327d6..250ee94 100644 (file)
        "newimages-summary": "Toś ten specialny bok pokazujo dataje, kótarež su se ako slědne nagrali.",
        "newimages-legend": "Filter",
        "newimages-label": "Datajowe mě (abo źěl z togo):",
-       "showhidebots": "(awtomatiske programy (boty) $1)",
        "noimages": "Žedne dataje njejsu se namakali.",
        "ilsubmit": "Pytaś",
        "bydate": "pó datumje",
index db7a2ec..3342411 100644 (file)
        "file-info-gif-looped": "A ripetisiòun",
        "file-info-png-looped": "A ripetisiòun",
        "newimages-legend": "Fîltra",
-       "showhidebots": "($1 i bot)",
        "ilsubmit": "Sērca",
        "bydate": "per dâta",
        "ago": "$1 fa",
index 6c483f8..87fe5ba 100644 (file)
        "newimages-summary": "Αυτή η ειδική σελίδα δείχνει τα πιο πρόσφατα φορτωμένα αρχεία.",
        "newimages-legend": "Φίλτρο",
        "newimages-label": "Όνομα αρχείου (ή μέρος αυτού):",
-       "showhidebots": "($1 bots)",
        "noimages": "Δεν υπάρχουν εικόνες.",
        "ilsubmit": "Αναζήτηση",
        "bydate": "ημερομηνίας",
index 28fd2ae..78b484a 100644 (file)
        "right-move": "Move pages",
        "right-move-subpages": "Move pages with their subpages",
        "right-move-rootuserpages": "Move root user pages",
+       "right-move-categorypages": "Move category pages",
        "right-movefile": "Move files",
        "right-suppressredirect": "Not create redirects from source pages when moving pages",
        "right-upload": "Upload files",
        "action-move": "move this page",
        "action-move-subpages": "move this page, and its subpages",
        "action-move-rootuserpages": "move root user pages",
+       "action-move-categorypages": "move category pages",
        "action-movefile": "move this file",
        "action-upload": "upload this file",
        "action-reupload": "overwrite this existing file",
        "movepagetalktext": "The associated talk page will be automatically moved along with it <strong>unless:</strong>\n*A non-empty talk page already exists under the new name, or\n*You uncheck the box below.\n\nIn those cases, you will have to move or merge the page manually if desired.",
        "movearticle": "Move page:",
        "moveuserpage-warning": "<strong>Warning:</strong> You are about to move a user page. Please note that only the page will be moved and the user will <em>not</em> be renamed.",
+       "movecategorypage-warning": "<strong>Warning:</strong> You are about to move a category page. Please note that only the page will be moved and any pages in the old category will <em>not</em> be recategorized into the new one.",
        "movenologintext": "You must be a registered user and [[Special:UserLogin|logged in]] to move a page.",
        "movenotallowed": "You do not have permission to move pages.",
        "movenotallowedfile": "You do not have permission to move files.",
        "cant-move-user-page": "You do not have permission to move user pages (apart from subpages).",
        "cant-move-to-user-page": "You do not have permission to move a page to a user page (except to a user subpage).",
+       "cant-move-category-page": "You do not have permission to move category pages.",
+       "cant-move-to-category-page": "You do not have permission to move a page to a category page.",
        "newtitle": "To new title:",
        "move-watch": "Watch source page and target page",
        "movepagebtn": "Move page",
        "movenosubpage": "This page has no subpages.",
        "movereason": "Reason:",
        "move-redirect-text": "",
+       "category-move-redirect-override": "-",
        "revertmove": "revert",
        "delete_and_move": "Delete and move",
        "delete_and_move_text": "== Deletion required ==\nThe destination page \"[[:$1]]\" already exists.\nDo you want to delete it to make way for the move?",
        "variantname-shi-tfng": "shi-Tfng",
        "variantname-shi-latn": "shi-Latn",
        "variantname-shi": "shi",
+       "variantname-uz": "uz",
+       "variantname-uz-latn": "uz-Latn",
+       "variantname-uz-cyrl": "uz-Cyrl",
        "metadata": "Metadata",
        "metadata-help": "This file contains additional information, probably added from the digital camera or scanner used to create or digitize it.\nIf the file has been modified from its original state, some details may not fully reflect the modified file.",
        "metadata-expand": "Show extended details",
index af7c8c3..dd696b5 100644 (file)
        "newimages-summary": "Ĉi tiu speciala paĝo montras la lastajn alŝutitajn dosierojn.",
        "newimages-legend": "Dosiernomo",
        "newimages-label": "Dosiernomo (aŭ parto de ĝi):",
-       "showhidebots": "($1 robotojn)",
        "noimages": "Nenio videbla.",
        "ilsubmit": "Serĉi",
        "bydate": "laŭ dato",
index c8261b4..fe16945 100644 (file)
        "tog-watchlisthideliu": "Ocultar las ediciones de los usuarios registrados en la lista de seguimiento",
        "tog-watchlisthideanons": "Ocultar las ediciones de los usuarios anónimos en la lista de seguimiento",
        "tog-watchlisthidepatrolled": "Ocultar las ediciones patrulladas en la lista de seguimiento",
-       "tog-ccmeonemails": "Recibir copias de los correos que envío a otros usuarios",
+       "tog-ccmeonemails": "Recibir copias de los mensajes que envíe a otros usuarios",
        "tog-diffonly": "No mostrar bajo las ''diferencias'' el contenido de la página",
        "tog-showhiddencats": "Mostrar las categorías escondidas",
        "tog-norollbackdiff": "Omitir la diferencia después de revertir",
        "nospecialpagetext": "<strong>Ha solicitado una página especial inexistente.</strong>\n\nPuedes ver una lista de las páginas especiales en [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Error",
        "databaseerror": "Error de la base de datos",
-       "databaseerror-text": "Se ha producido un error en la base de datos.\nEsto puede indicar un bug en el software.",
+       "databaseerror-text": "Ocurrió un error de consulta de la base de datos.\nEsto puede indicar un fallo en el software.",
        "databaseerror-textcl": "Se ha producido un error en la base de datos.",
        "databaseerror-query": "Consulta: $1",
        "databaseerror-function": "Función: $1",
        "viewsourcetext": "Puedes ver y copiar el código fuente de esta página:",
        "viewyourtext": "Puedes ver y copiar el código de '''tus ediciones''' a esta página:",
        "protectedinterface": "Esta página proporciona el texto de la interfaz del software en este wiki, y está protegida para prevenir el abuso.\nPara agregar o cambiar las traducciones para todos los wikis, por favor, usa [//translatewiki.net/ translatewiki.net], el proyecto de localización de MediaWiki.",
-       "editinginterface": "'''Aviso:''' Estás editando una página usada para proporcionar el texto de la interfaz para el software. \nLos cambios en esta página afectarán a la apariencia de la interfaz para los demás usuarios de este wiki. \nPara añadir o cambiar las traducciones, por favor considera usar [//translatewiki.net/ translatewiki.net], el proyecto de localización de MediaWiki.",
+       "editinginterface": "<strong>Aviso:</strong> Estás editando una página usada para proporcionar el texto de la interfaz para el software. \nLos cambios en esta página afectarán la apariencia de la interfaz para los demás usuarios de este wiki. \nPara añadir o cambiar las traducciones utiliza [//translatewiki.net/ translatewiki.net], el proyecto de localización de MediaWiki.",
        "cascadeprotected": "Esta página ha sido protegida para su edición, porque está incluida en {{PLURAL:$1|la siguiente página|las siguientes páginas}}, que están protegidas con la opción de «cascada»:\n$2",
        "namespaceprotected": "No tienes permiso para editar las páginas del espacio de nombres '''$1'''.",
        "customcssprotected": "No tienes permiso para editar esta página CSS, porque contiene configuraciones personales de otro usuario.",
        "mycustomjsprotected": "No tienes permiso para editar esta página JavaScript.",
        "myprivateinfoprotected": "No tienes permiso para editar tu información privada.",
        "mypreferencesprotected": "No tienes permiso para editar tus preferencias.",
-       "ns-specialprotected": "Las páginas especiales no se pueden editar",
+       "ns-specialprotected": "No se pueden editar las páginas especiales.",
        "titleprotected": "Esta página ha sido protegida contra creación por [[User:$1|$1]].\nEl motivo dado fue: \"''$2''\".",
        "filereadonlyerror": "No se puede modificar el archivo \"$1\" porque el repositorio de archivos \"$2\" está en modo de sólo lectura.\nEl administrador que lo ha bloqueado ofrece esta explicación: \"$3\".",
        "invalidtitle-knownnamespace": "Título no válido con el espacio de nombres \"$2\" y el texto \"$3\"",
        "exception-nologin": "No has iniciado sesión",
        "exception-nologin-text": "[[Special:Userlogin|Inicia sesión]] para acceder a esta página o acción.",
        "exception-nologin-text-manual": "Necesitas $1 para acceder a esta página o acción.",
-       "virus-badscanner": "Error de configuración: Antivirus desconocido: ''$1''",
+       "virus-badscanner": "Configuración incorrecta: antivirus desconocido: <em>$1</em>",
        "virus-scanfailed": "falló el análisis (código $1)",
        "virus-unknownscanner": "antivirus desconocido:",
-       "logouttext": "\"'Usted está ahora desconectado.\"'\nTenga en cuenta que algunas páginas pueden continuar mostrándose como si todavía estuviera conectado, hasta que borres la caché de tu navegador.",
+       "logouttext": "<strong>Ha finalizado tu sesión.</strong>\n\nPuede que algunas páginas continúen mostrándose como si la sesión estuviera iniciada hasta que vacíes la memoria caché del navegador.",
        "welcomeuser": "¡Te damos la bienvenida, $1!",
        "welcomecreation-msg": "Se ha creado tu cuenta.\nNo olvides personalizar tus [[Special:Preferences|preferencias de {{SITENAME}}]].",
        "yourname": "Nombre de usuario:",
        "remembermypassword": "Mantenerme conectado en este navegador (hasta $1 {{PLURAL:$1|día|días}})",
        "userlogin-remembermypassword": "Mantener mi sesión iniciada",
        "userlogin-signwithsecure": "Usar conexión segura",
-       "yourdomainname": "Dominio",
+       "yourdomainname": "Tu dominio:",
        "password-change-forbidden": "No puedes cambiar las contraseñas de este wiki.",
        "externaldberror": "Hubo un error de autenticación externa de la base de datos o bien no tienes autorización para actualizar tu cuenta externa.",
        "login": "Acceder",
        "pt-login": "Iniciar sesión",
        "pt-login-button": "Iniciar sesión",
        "pt-createaccount": "Crear una cuenta",
-       "pt-userlogout": "Cerrar sesión",
+       "pt-userlogout": "Salir",
        "php-mail-error-unknown": "Error desconocido en la función mail() de PHP.",
        "user-mail-no-addy": "Se ha intentado enviar correo electrónico sin una dirección de correo electrónico.",
        "user-mail-no-body": "Trató de enviar un correo electrónico con un cuerpo vacío o excesivamente corto.",
        "trackingcategories-disabled": "La categoría está desactivada",
        "mailnologin": "Ninguna dirección de envio",
        "mailnologintext": "Debes [[Special:UserLogin|iniciar sesión]] y tener una dirección electrónica válida en tus [[Special:Preferences|preferencias]] para enviar un correo electrónico a otros usuarios.",
-       "emailuser": "Enviar un correo electrónico a {{GENDER:{{BASEPAGENAME}}|este usuario|esta usuaria}}",
-       "emailuser-title-target": "Enviar un correo electrónico a {{GENDER:$1|este usuario|esta usuaria}}",
+       "emailuser": "Enviar un mensaje de correo a {{GENDER:{{BASEPAGENAME}}|este usuario|esta usuaria}}",
+       "emailuser-title-target": "Enviar un mensaje a {{GENDER:$1|este usuario|esta usuaria}}",
        "emailuser-title-notarget": "Enviar un correo electrónico al usuario",
-       "emailpage": "Enviar un correo electrónico a un usuario",
+       "emailpage": "Enviar mensaje al usuario",
        "emailpagetext": "Puedes usar el formulario de abajo para enviar un correo electrónico a {{GENDER:$1|este usuario|esta usuaria}}.\nLa dirección de correo electrónico que indicaste en [[Special:Preferences|tus preferencias de usuario]] aparecerá en el campo \"Remitente\" o \"De\" para que el destinatario pueda responderte.",
        "defemailsubject": "Correo electrónico enviado por el usuario «$1» desde {{SITENAME}}",
        "usermaildisabled": "Correo electrónico del usuario deshabilitado",
        "newimages-summary": "Esta página especial muestra una galería de los últimos archivos subidos.",
        "newimages-legend": "Nombre del fichero",
        "newimages-label": "Nombre del fichero (o una parte):",
-       "showhidebots": "($1 bots)",
        "noimages": "No hay nada que ver.",
        "ilsubmit": "Buscar",
        "bydate": "por fecha",
        "specialpages-note": "* Páginas especiales normales\n* <span class=\"mw-specialpagerestricted\">Páginas especiales restringidas.</span>\n* <span class=\"mw-specialpagecached\">Páginas especiales en caché (podrían ser obsoletas).</span>",
        "specialpages-group-maintenance": "Reportes de mantenimiento",
        "specialpages-group-other": "Otras páginas especiales",
-       "specialpages-group-login": "Iniciar sesión / Crear cuenta",
+       "specialpages-group-login": "Acceder/crear cuenta",
        "specialpages-group-changes": "Cambios recientes y registros",
        "specialpages-group-media": "Páginas sobre archivos",
        "specialpages-group-users": "Usuarios y permisos",
index 7e0b8a3..592287c 100644 (file)
        "newimages-summary": "Sellel erilehel on viimati üles laaditud failid.",
        "newimages-legend": "Filter",
        "newimages-label": "Failinimi (või selle osa):",
-       "showhidebots": "($1 robotite kaastööd)",
        "noimages": "Uusi pilte ei ole.",
        "ilsubmit": "Otsi",
        "bydate": "kuupäeva järgi",
index 20a25a8..154799f 100644 (file)
        "searchbutton": "Bilatu",
        "go": "Joan",
        "searcharticle": "Joan",
-       "history": "Orrialdearen historia",
+       "history": "Orriaren historia",
        "history_short": "Historia",
        "updatedmarker": "nire azkeneko bisitaz geroztik eguneratuta",
        "printableversion": "Inprimatzeko bertsioa",
        "pagemerge-logentry": "[[$1]] [[$2]](r)ekin batu da ($3(e)raino berrikuspenak)",
        "revertmerge": "Bereiztu",
        "mergelogpagetext": "Jarraian dagoen zerrendak orrialde baten historiatik beste batera egindako azken bateratzeak erakusten ditu.",
-       "history-title": "«$1» orrialdearen historia berrikuspena",
+       "history-title": "«$1» orriaren historia berrikuspena",
        "difference-title": "«$1»: berrikuspenen arteko aldeak",
        "difference-title-multipage": "«$1» eta «$2» orrien arteko aldeak",
        "difference-multipage": "(Orrien arteko aldeak)",
        "newimages-summary": "Orrialde berezi honek igotako azkeneko fitxategiak erakusten ditu.",
        "newimages-legend": "Iragazkia",
        "newimages-label": "Fitxategia (edo bere zati bat):",
-       "showhidebots": "($1 bot-ak)",
        "noimages": "Ez dago ezer ikusteko.",
        "ilsubmit": "Bilatu",
        "bydate": "dataren arabera",
index 5246791..46d5017 100644 (file)
        "imagelisttext": "Embahu ai una lista con '''$1''' {{PLURAL:$1|archivu|archivus}} ordenaus $2.",
        "newimages-legend": "Filtru",
        "newimages-label": "Nombri el archivu (u parti):",
-       "showhidebots": "($1 bots)",
        "noimages": "Nu ai ná pa vel.",
        "ilsubmit": "Landeal",
        "bydate": "pol fecha",
index ebf22ba..e2d3cfa 100644 (file)
        "showhideselectedversions": "نمایش/نهفتن نسخه‌های انتخاب شده",
        "editundo": "خنثی‌سازی",
        "diff-empty": "(بدون تفاوت)",
-       "diff-multi-sameuser": "({{PLURAL:$1|یک نسخهٔ متوسط|$1 نسخه‌های متوسط}} توسط کاربر مشابهی که نشان داده نشده)",
+       "diff-multi-sameuser": "({{PLURAL:$1|یک نسخهٔ میانی|$1 نسخهٔ میانی}} توسط کاربر مشابهی که نشان داده نشده)",
        "diff-multi-otherusers": "({{PLURAL:$1|یک نسخهٔ متوسط|$1 نسخه‌های متوسط}} توسط {{PLURAL:$2|کاربر دیگری|$2 کاربران}} نشان داده نشده)",
        "diff-multi-manyusers": "({{PLURAL:$1|یک|$1}} ویرایش میانی توسط بیش از {{PLURAL:$2|یک|$2}} کاربر نشان داده نشده‌است)",
        "difference-missing-revision": "{{PLURAL:$2|یک ویرایش|$2 ویرایش}}  از تفاوت نسخه‌ها ($1) {{PLURAL:$2|یافت|یافت}}  نشد.\n\nمعمولاً در اثر پیوند به تاریخچهٔ به‌روز نشدهٔ صفحهٔ حذف شده است.\nمی‌توانید جزئیات بیشتر را در [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] بیابید.",
        "newimages-summary": "این صفحهٔ ویژه آخرین پرونده‌های بارگذاری شده را نمایش می‌دهد",
        "newimages-legend": "پالودن",
        "newimages-label": "نام پرونده (یا قسمتی از آن):",
-       "showhidebots": "($1 ربات‌ها)",
        "noimages": "چیزی برای دیدن نیست.",
        "ilsubmit": "جستجو",
        "bydate": "از روی تاریخ",
index af1a85e..5e20fa2 100644 (file)
        "edit": "Muokkaa",
        "edit-local": "Muokkaa paikallista kuvausta",
        "create": "Luo sivu",
-       "create-local": "Lisää paikallinen kuvaus",
+       "create-local": "Luo paikallinen kuvaus",
        "editthispage": "Muokkaa tätä sivua",
        "create-this-page": "Luo tämä sivu",
        "delete": "Poista",
        "newimages": "Uudet tiedostot",
        "imagelisttext": "Alla on {{PLURAL:$1|1 tiedosto|$1 tiedostoa}} lajiteltuna <strong>$2</strong>.",
        "newimages-summary": "Tällä toimintosivulla on viimeisimmät tallennetut tiedostot.",
-       "newimages-legend": "Suodin",
+       "newimages-legend": "Suodatin",
        "newimages-label": "Tiedostonimi (tai osa siitä)",
-       "showhidebots": "($1 botit)",
+       "newimages-showbots": "Näytä bottien tekemät tallennukset",
        "noimages": "Ei uusia tiedostoja.",
        "ilsubmit": "Hae",
        "bydate": "päiväyksen mukaan",
index cb81d99..c4aa775 100644 (file)
        "newimages-summary": "Cette page spéciale affiche les derniers fichiers importés.",
        "newimages-legend": "Nom du fichier",
        "newimages-label": "Nom du fichier (ou une partie de celui-ci) :",
-       "showhidebots": "($1 robots)",
+       "newimages-showbots": "Afficher les imports par des robots",
        "noimages": "Aucune image à afficher.",
        "ilsubmit": "Rechercher",
        "bydate": "par date",
index 2c07dfb..1d41451 100644 (file)
        "newimages-summary": "Ceta pâge spèciâla montre los dèrriérs fichiérs tèlèchargiês.",
        "newimages-legend": "Nom du fichiér",
        "newimages-label": "Nom du fichiér (ou ben una partia de ceti) :",
-       "showhidebots": "($1 los bots)",
        "noimages": "Gins de fichiér a fâre vêre.",
        "ilsubmit": "Rechèrchiér",
        "bydate": "per dâta",
index 7af11ad..624a890 100644 (file)
        "newimages-summary": "Detdiar spezial-sidj wiset a tuleetst huuchschüürd datein uun.",
        "newimages-legend": "Filter",
        "newimages-label": "Dateinööm (of en dial diarfaan):",
-       "showhidebots": "(Bots $1)",
        "noimages": "Niks tu sen.",
        "ilsubmit": "Schük",
        "bydate": "efter dootem",
index b2e4b26..ece00d8 100644 (file)
        "newimages": "Nije ôfbylden",
        "imagelisttext": "Dit is in list fan '''$1''' {{PLURAL:$1|triem|triemen}}, op $2.",
        "newimages-legend": "Filter",
-       "showhidebots": "(Bots $1)",
        "noimages": "Neat te sjen.",
        "ilsubmit": "Sykje",
        "bydate": "datum",
index 72e62e4..97b3acb 100644 (file)
        "newimages": "Gailearaí na n-íomhánna nua",
        "imagelisttext": "Tá liosta thíos de {{PLURAL:$1|comhad amháin|$1 comhaid $2}}.",
        "newimages-label": "Comhadainm (nó cuid de):",
-       "showhidebots": "($1 róbónna)",
        "noimages": "Tada le feiceáil.",
        "ilsubmit": "Cuardaigh",
        "bydate": "de réir dáta",
index 3884d60..747f40c 100644 (file)
        "show-big-image": "完整分辨率",
        "newimages": "新建图像画廊",
        "imagelisttext": "底下系按$2排列𠮶$1只档案列表。",
-       "showhidebots": "($1机器人)",
        "noimages": "冇什哩可望。",
        "ilsubmit": "寻",
        "bydate": "按日子",
index 344bb1e..d98fe23 100644 (file)
        "show-big-image": "完整解析度",
        "newimages": "新建圖像畫廊",
        "imagelisttext": "底下係按$2排列嗰$1隻檔案列表。",
-       "showhidebots": "($1機器人)",
        "noimages": "冇什哩可望。",
        "ilsubmit": "尋",
        "bydate": "按日子",
index f88ab0d..3072722 100644 (file)
        "newimages-summary": "Esta páxina especial mostra os últimos ficheiros cargados.",
        "newimages-legend": "Filtro",
        "newimages-label": "Nome do ficheiro (ou parte del):",
-       "showhidebots": "($1 os bots)",
        "noimages": "Non hai imaxes para ver.",
        "ilsubmit": "Procurar",
        "bydate": "por data",
index 178a132..95e9f9b 100644 (file)
        "newimages-summary": "Ἥδε ἡ εἰδικὴ δέλτος δεικνύει τὰ πλέον πρόσφατα ἐπιπεφορτισμένα ἀρχεῖα.",
        "newimages-legend": "Διηθητήριον",
        "newimages-label": "Ἀρχειώνυμον (ἢ μέρος οὗ):",
-       "showhidebots": "($1 αὐτόματα)",
        "noimages": "Οὐδεμία εἰκών.",
        "ilsubmit": "Ζητεῖν",
        "bydate": "κατὰ χρονολογίαν",
index 1007997..a3ec3ba 100644 (file)
        "newimages-summary": "Die Spezialsyte zeigt di zletscht uffegladene Dateie aa.",
        "newimages-legend": "Filter",
        "newimages-label": "Dateiname (oder e Teil devu):",
-       "showhidebots": "(Bötli $1)",
        "noimages": "Kei Dateie gfunde.",
        "ilsubmit": "Suech",
        "bydate": "noch Datum",
index 322e8b4..bc124ce 100644 (file)
        "newimages-summary": "આ ખાસ પાનું છેવટની  ચડાવેલા વફાઈલા બતાવે છે",
        "newimages-legend": "ચાળણી",
        "newimages-label": "ફાઈલનામ (કે તેનો ભાગ)",
-       "showhidebots": "($1 બોટ)",
        "noimages": "જોવા માટે કશું નથી.",
        "ilsubmit": "શોધો",
        "bydate": "તારીખ પ્રમાણે",
index 82e2a75..cb5b009 100644 (file)
        "svg-long-desc": "coadan SVG, $1 × {{PLURAL:$2|$2 pixel|$2 phixel|$2 phixel|$2 pixelyn}} dy ennymagh, mooadys y choadan: $3",
        "show-big-image": "Jeeskeaylley ymlane",
        "newimages": "Laaragh coadanyn noa",
-       "showhidebots": "($1 botyn)",
        "ilsubmit": "Ronsee",
        "bydate": "rere date",
        "bad_image_list": "Shoh yn aght:\n\nCha nel agh meeryn ayns rolley (linnaghyn as * ec y toshiaght) ta goll er smooinaghtyn er.\nShegin da'n chied chiangley er linney ve ny chiangley da drogh choadan.\nKianglaghyn eiyrtyssagh erbee er yn linney shoh, t'ad goll er loaghtey myr lhimmaghyn, shen gra, duillagyn as ta'n coadan ayns-linney, foddee.",
index f00846c..63e467b 100644 (file)
        "show-big-image": "完整分辨率",
        "newimages": "Sîn-kien thù-chhiong ke va̍k-lòng",
        "imagelisttext": "Yî-ha he on $2 phài-lie̍t ke $1-ke tóng-on lie̍t-péu.",
-       "showhidebots": "($1 kî-hi-ngìn)",
        "noimages": "Mò-khó kiám-sṳ thù-chhiong.",
        "ilsubmit": "Chhìm-cháu",
        "bydate": "on-cheu ngit-khì",
index 81621ed..6842c20 100644 (file)
        "newimages-summary": "דף זה מציג את הקבצים האחרונים שהועלו",
        "newimages-legend": "מסנן",
        "newimages-label": "שם הקובץ (או חלק ממנו):",
-       "showhidebots": "($1 בוטים)",
+       "newimages-showbots": "הצגת העלאות שבוצעו על־ידי בוטים",
        "noimages": "אין קבצים.",
        "ilsubmit": "חיפוש",
        "bydate": "לפי תאריך",
index 368b549..5aea0f6 100644 (file)
        "newimages-summary": "यह विशेष पृष्ठ हाल ही में अपलोड की गयी फ़ाइलें दिखाता है।",
        "newimages-legend": "छननी",
        "newimages-label": "संचिका नाम (या उसका अंश):",
-       "showhidebots": "(बोट्स $1)",
        "noimages": "देखने के लिए कुछ नहीं है।",
        "ilsubmit": "खोजें",
        "bydate": "तिथि अनुसार",
index bb2bc8e..caa8d29 100644 (file)
        "newimages-summary": "Ii khaas panna pahile waala upload karaa gais file ke dekhae hai.",
        "newimages-legend": "Chaalo",
        "newimages-label": "Filename (nai to iske ek hissa):",
-       "showhidebots": "($1 bots)",
        "noimages": "Koi chij dekhe ke nai hai.",
        "ilsubmit": "Khojo",
        "bydate": "tarik se",
index d63da89..204d5b0 100644 (file)
        "newimages-summary": "Ova posebna stranica pokazuje posljednje nedavno postavljene datoteke.",
        "newimages-legend": "Filtar",
        "newimages-label": "Naziv datoteke (ili njen dio):",
-       "showhidebots": "($1 botova)",
        "noimages": "Nema slika.",
        "ilsubmit": "Traži",
        "bydate": "po datumu",
index 292c687..583721f 100644 (file)
        "edit-gone-missing": "Die Seit konnt net aktualisiert sin.\nDie woard oonscheinend gelöscht.",
        "edit-conflict": "Beoorbeitungskonflikt.",
        "edit-no-change": "Dein Beoorbeitung woard ignoriert, do ken Ännrung an dem Text voargenomm  woard.",
+       "postedit-confirmation-created": "Die Seit woard erstellt.",
+       "postedit-confirmation-restored": "Die Seit woard wiederhergestellt.",
        "postedit-confirmation-saved": "Dein Beoorbeitung woard gespeichert.",
        "edit-already-exists": "Die neie Seit konnt net erstellt werre, do sie bereits voarhand ist.",
        "defaultmessagetext": "Standardtext",
        "action-createpage": "Seite zu erstelle",
        "action-createtalk": "Diskussionsseite erstelle",
        "action-createaccount": "der Benutzerkonto erstelle",
+       "action-history": "die Versionsgeschichte von der Seit oonsiehen",
        "action-minoredit": "die Beoorbeitung als klen markiere",
        "action-move": "die Seit verschiebe",
        "action-move-subpages": "die Seit und zugehöriche Unnerseite verschiebe",
        "pageswithprop-prophidden-binary": "Binäreichenschaftsweart versteckt ($1)",
        "doubleredirects": "Doppelte Weiterleitunge",
        "doubleredirectstext": "Diese Liste enthält Weiterleitungen, die auf Weiterleitungen verlinken.\nJede Zeile enthält Links zur ersten und zweiten Weiterleitung sowie dem Ziel der zweiten Weiterleitung, welches für gewöhnlich die gewünschte Zielseite ist, auf die bereits die erste Weiterleitung zeigen sollte.\n<del>Durchgestrichene</del> Einträge wurden bereits erfolgreich bearbeitet.",
-       "double-redirect-fixed-move": "[[$1]] woard verschub und leitet jetzt noh [[$2]] weiter.",
-       "double-redirect-fixed-maintenance": "Bereinichung von der doppelte Weiterleitung von [[$1]] noh [[$2]].",
+       "double-redirect-fixed-move": "[[$1]] woard verschub. Die Seit woard automatisch aktualisiert und leitet jetzt noh [[$2]] weiter.",
+       "double-redirect-fixed-maintenance": "Automatische Bereinichung von der doppelte Weiterleitung von [[$1]] noh [[$2]] in enem Woortungsufftrooch.",
        "double-redirect-fixer": "RedirectBot",
        "brokenredirects": "Defekte Weiterleitunge",
        "brokenredirectstext": "Die Spezialseit listiert Weiterleitung uff net existierende Seite uff.",
        "newimages-summary": "Die Spezialseit tut die zuletzt hochgeloodne Dateie oonzeiche.",
        "newimages-legend": "Filter",
        "newimages-label": "Dateinoome (orrer ein Tel davon):",
-       "showhidebots": "(Bots $1)",
        "noimages": "Kene Dateie gefund.",
        "ilsubmit": "Suche",
        "bydate": "noh Datum",
        "htmlform-no": "Ne, nein",
        "htmlform-yes": "Jo",
        "htmlform-chosen-placeholder": "Wähl ein Option",
+       "htmlform-cloner-create": "Weitre dozu tun",
+       "htmlform-cloner-delete": "Entferne",
+       "htmlform-cloner-required": "Es ist minschtens en Weart erforderlich.",
        "sqlite-has-fts": "Version $1 mit Unnerstützung für die Volltextsuch",
        "sqlite-no-fts": "Version $1 ohne Unnerstützung für die Volltextsuch",
        "logentry-delete-delete": "$1 {{GENDER:$2|löschte}} Seit $3",
index 6e9b7e0..1951eaf 100644 (file)
        "newimages-summary": "Tuta specialna strona naliči aktualnje nahrate wobrazy a druhe dataje.",
        "newimages-legend": "Filter",
        "newimages-label": "Datajowe mjeno (abo dźěl z njeho):",
-       "showhidebots": "(bots $1)",
        "noimages": "Žane dataje.",
        "ilsubmit": "Pytać",
        "bydate": "datumje",
index 15e6bde..81a3c5b 100644 (file)
        "newimages-summary": "Ezen a speciális lapon láthatóak a legutóbb feltöltött fájlok.",
        "newimages-legend": "Fájlnév",
        "newimages-label": "Fájlnév (vagy annak részlete):",
-       "showhidebots": "(botok szerkesztéseinek $1)",
        "noimages": "Nem tekinthető meg semmi.",
        "ilsubmit": "Keresés",
        "bydate": "dátum szerint",
index 31d93ca..ce10d7e 100644 (file)
        "newimages": "Նոր նիշքերի սրահ",
        "imagelisttext": "Ստորև բերված է '''$1''' {{PLURAL:$1|նիշքի}} ցանկ՝ դասավորված ըստ $2։",
        "newimages-legend": "Ֆիլտր",
-       "showhidebots": "($1 բոտերին)",
        "noimages": "Տեսնելու բան չկա։",
        "ilsubmit": "Որոնել",
        "bydate": "ըստ ամսաթվի",
index 0c479de..bd1d41e 100644 (file)
        "newimages-summary": "Iste pagina special detalia le recente files incargate.",
        "newimages-legend": "Filtro",
        "newimages-label": "Nomine del file (o un parte de illo):",
-       "showhidebots": "($1 bots)",
        "noimages": "Nihil a vider.",
        "ilsubmit": "Cercar",
        "bydate": "per data",
index 522304a..06614e1 100644 (file)
        "newimages-summary": "Halaman istimewa berikut menampilkan daftar berkas yang terakhir dimuat",
        "newimages-legend": "Penyaring",
        "newimages-label": "Nama berkas (atau sebagian dari nama berkas):",
-       "showhidebots": "($1 bot)",
        "noimages": "Tidak ada yang dilihat.",
        "ilsubmit": "Cari",
        "bydate": "berdasarkan tanggal",
index 628184f..715a939 100644 (file)
        "newimages-summary": "Daytoy nga espesial a panid ket ipakitana ti kinaudi a pinag-ipan kadagiti papeles.",
        "newimages-legend": "Sagat",
        "newimages-label": "Nagan ti papeles (wenno paset na) :",
-       "showhidebots": "($1 dagiti bot)",
        "noimages": "Awan ti makita.",
        "ilsubmit": "Biruken",
        "bydate": "babaen ti petsa",
index 4b2bd77..d7a1e69 100644 (file)
        "newimages-summary": "Þessi kerfissíða sýnir nýlega innhlaðnar skrár.",
        "newimages-legend": "Sía",
        "newimages-label": "Skráarnafn (eða hluti þess):",
-       "showhidebots": "($1 vélmenni)",
        "noimages": "Ekkert að sjá.",
        "ilsubmit": "Leita",
        "bydate": "eftir dagsetningu",
index 841d3b1..7daf6f8 100644 (file)
        "newimages-summary": "Questa pagina speciale mostra i file caricati più di recente.",
        "newimages-legend": "Filtra",
        "newimages-label": "Nome file (o una parte di esso):",
-       "showhidebots": "($1 i bot)",
+       "newimages-showbots": "Mostra caricamenti di bot",
        "noimages": "Non c'è nulla da vedere.",
        "ilsubmit": "Ricerca",
        "bydate": "per data",
        "compare-submit": "Confronta",
        "compare-invalid-title": "Il titolo che hai specificato non è valido.",
        "compare-title-not-exists": "Il titolo che hai specificato non esiste.",
-       "compare-revision-not-exists": "La revisione che hai specificato non esiste.",
+       "compare-revision-not-exists": "La versione che hai specificato non esiste.",
        "dberr-problems": "Questo sito sta avendo dei problemi tecnici.",
        "dberr-again": "Prova ad attendere qualche minuto e ricaricare.",
        "dberr-info": "(Impossibile contattare il server del database: $1)",
index 297ce05..4572762 100644 (file)
        "doubleredirects": "二重転送",
        "doubleredirectstext": "このページでは、転送ページへの転送ページを列挙します。\n最初の転送ページ、その転送先にある転送ページ、さらにその転送先にあるページ、それぞれへのリンクを各行に表示しています。多くの場合は最終的な転送先が「正しい」転送先であり、最初の転送ページの転送先は最終的な転送先に直接向けるべきです。\n<del>取り消し線</del>が入った項目は解決済みです。",
        "double-redirect-fixed-move": "[[$1]]を移動しました。\n今後は[[$2]]に転送されます。",
-       "double-redirect-fixed-maintenance": "[[$1]]から[[$2]]への二重転送を修正します。",
+       "double-redirect-fixed-maintenance": "メンテナンス作業の一環として[[$1]]から[[$2]]への二重転送を自動的に修正します。",
        "double-redirect-fixer": "転送修正係",
        "brokenredirects": "迷子のリダイレクト",
        "brokenredirectstext": "以下は、存在しないページへのリダイレクトの一覧です:",
        "broken-file-category-desc": "リンク切れしたファイルを含むページ (ファイルを埋め込むリンクがあり、そのファイルが存在しない) に追加されるカテゴリ",
        "hidden-category-category-desc": "<code><nowiki>__HIDDENCAT__</nowiki></code> を含むカテゴリ。このカテゴリは、既定ではページのカテゴリ リンク ボックス内に表示されません。",
        "trackingcategories-nodesc": "説明はありません。",
+       "trackingcategories-disabled": "このカテゴリは無効化されています",
        "mailnologin": "送信アドレスがありません",
        "mailnologintext": "他の利用者宛にメールを送信するためには、[[Special:UserLogin|ログイン]]し、[[Special:Preferences|個人設定]]で有効なメールアドレスを設定する必要があります。",
        "emailuser": "この利用者にメールを送信",
        "newimages-summary": "この特別ページでは、最近アップロードされたファイルを表示します。",
        "newimages-legend": "絞り込み",
        "newimages-label": "ファイル名 (またはその一部):",
-       "showhidebots": "(ボットを$1)",
+       "newimages-showbots": "ボットによるアップロードを表示",
        "noimages": "表示できるものがありません。",
        "ilsubmit": "検索",
        "bydate": "日付順",
index ba3b827..dc61e25 100644 (file)
        "newimages-summary": "Kaca astaméwa utawa kusus iki nuduhaké daftar berkas anyar dhéwé sing diunggahaké.",
        "newimages-legend": "Filter",
        "newimages-label": "Jeneng berkas (utawa sapérangan seka jeneng berkas):",
-       "showhidebots": "($1 bot)",
        "noimages": "Ora ana sing dideleng.",
        "ilsubmit": "Golek",
        "bydate": "miturut tanggal",
index 4b4a81c..4c8999e 100644 (file)
        "newimages-summary": "ეს სპეცგვერდი აჩვენებს ბოლო დროს ატვირთულ ფაილებს.",
        "newimages-legend": "ფილტრი",
        "newimages-label": "ფაილის (ან მისი სახელის) ნაწილი",
-       "showhidebots": "(რობოტების $1)",
        "noimages": "გადასახედი არაფერია.",
        "ilsubmit": "ძიება",
        "bydate": "თარიღით",
index e5b78f9..7737c39 100644 (file)
        "newimages-summary": "Asebtar agi uslig yebeqqeḍ ifuyla ineggura i kteren.",
        "newimages-legend": "Tastayt",
        "newimages-label": "Isem n ufaylu (naɣ aḥric ines) :",
-       "showhidebots": "($1 iṛubuten)",
        "noimages": "Tugna ulac-itt.",
        "ilsubmit": "Nadi",
        "bydate": "s uzemz",
index fb7fe5a..f4b783c 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|eza|ezay}}",
        "nrevisions": "$1 {{PLURAL:$1|çım-ra-viarnais|çım-ra-viarnaişi}}",
        "nviews": "$1 {{PLURAL:$1|vênais|vênaişi}}",
-       "uncategorizedpages": "Pelê kategorizenêkerdey",
+       "uncategorizedpages": "Pelê ke kategorize nêbiyê",
        "prefixindex": "Peli pêro be verbend",
        "shortpages": "Pelê kılmi",
        "longpages": "Pelê dergi",
index 4147f1a..8f5d536 100644 (file)
        "pageinfo-length": "Бет ұзындығы (байтпен)",
        "pageinfo-article-id": "Бет ID-і",
        "pageinfo-language": "Бет мәлімет тілі",
-       "pageinfo-content-model": "Бет мағұлымат қалпы",
+       "pageinfo-content-model": "Бет мағлұмат қалпы",
        "pageinfo-robot-policy": "Индекстеуді робот жүргізеді",
        "pageinfo-robot-index": "Рұқсат берілген",
        "pageinfo-robot-noindex": "Рұқсат етілмеген",
        "imagelisttext": "Төменде $2 сұрыпталған '''$1''' файл тізімі.",
        "newimages-summary": "Бұл арнайы бетте соңғы жүктелген файлдар көрсетіледі",
        "newimages-legend": "Сүзгі",
-       "showhidebots": "(боттарды $1)",
        "noimages": "Көретін ештеңе жоқ.",
        "ilsubmit": "Іздеу",
        "bydate": "күн-айымен",
        "logentry-delete-event": "$1 $3 бетіндегі {{PLURAL:$5|журнал оқиғасы|$5 журнал оқиғасы}} көрінісін {{GENDER:$2|өзгертті}}: $4",
        "logentry-delete-revision": "$1 $3 бетіндегі {{PLURAL:$5|нұсқа|$5 нұсқа}} көрінісін {{GENDER:$2|өзгертті}}: $4",
        "logentry-suppress-event": "$1 $3 бетіндегі {{PLURAL:$5|журнал оқиғасы|$5 журнал оқиғасы}} көрінісін құпия түрде {{GENDER:$2|өзгертті}}: $4",
-       "revdelete-content-hid": "мағұлымат жасырылған",
+       "revdelete-content-hid": "мағлұмат жасырылған",
        "revdelete-summary-hid": "өңдеу түйіндемесі жасырылған",
        "revdelete-uname-hid": "қатысушы есімі жасырылған",
        "revdelete-content-unhid": "мағлұматы жасырылмаған",
index 7f2f1ea..fa16fff 100644 (file)
        "newimages-summary": "ទំព័រពិសេសនេះបង្ហាញឯកសារដែលផ្ទុកឡើងចុងក្រោយគេ។",
        "newimages-legend": "តម្រងការពារ",
        "newimages-label": "ឈ្មោះរូបភាព៖",
-       "showhidebots": "($1រូបយន្ត)",
        "noimages": "គ្មានអ្វីសំរាប់មើលទេ។",
        "ilsubmit": "ស្វែងរក",
        "bydate": "តាមកាលបរិច្ឆេទ",
index 8f5de99..ecf9516 100644 (file)
        "username": "{{GENDER:$1|사용자 이름}}:",
        "uid": "{{GENDER:$1|사용자}} ID:",
        "prefs-memberingroups": "{{GENDER:$2|소속}} {{PLURAL:$1|그룹}}:",
-       "prefs-registration": "ë\93±ë¡\9d ì\9d¼ì\8b\9c:",
+       "prefs-registration": "ë\93±ë¡\9d ì\8b\9cê°\84:",
        "yourrealname": "실명:",
        "yourlanguage": "언어:",
        "yourvariant": "언어 변종:",
        "newimages-summary": "이 특수 문서는 최근에 올라온 파일을 나열하고 있습니다.",
        "newimages-legend": "필터",
        "newimages-label": "파일 이름 (또는 그 일부분):",
-       "showhidebots": "(봇을 $1)",
+       "newimages-showbots": "봇이 올린 것 보기",
        "noimages": "그림이 없습니다.",
        "ilsubmit": "검색",
        "bydate": "날짜",
index 5f9281e..039f4c9 100644 (file)
        "view": "Къарау",
        "view-foreign": "$1 сайтда къара",
        "edit": "Тюрлендир",
+       "edit-local": "Локал айгъакълауну тюрлендириу",
        "create": "Къура",
        "editthispage": "Бу бетни тюрлендир",
        "create-this-page": "Бу бетни къура",
        "resettokens-tokens": "Токенле:",
        "bold_sample": "Къалын джазыу",
        "bold_tip": "Къалын джазыу",
-       "italic_sample": "Ð\9aÑ\83Ñ\80Ñ\81ив джазыу",
-       "italic_tip": "Ð\9aÑ\83Ñ\80Ñ\81ив джазыу",
+       "italic_sample": "СÑ\91дегей джазыу",
+       "italic_tip": "СÑ\91дегей джазыу",
        "link_sample": "Джибериуню башлыгъы",
        "link_tip": "Ич джибериу",
        "extlink_sample": "http://www.example.com линкни ачыкълауу",
        "newimages-summary": "Бу къуллукъ бет, кёб болмай джюкленнген файлланы кёргюзеди.",
        "newimages-legend": "Фильтр",
        "newimages-label": "Файлны аты (неда кесеги):",
-       "showhidebots": "($1 бот)",
        "noimages": "Кёрюр зат джокъду",
        "ilsubmit": "Таб",
        "bydate": "Хронологиягъа кёре",
index 755adcf..504c102 100644 (file)
        "newimages-summary": "Heh die Sigg zeig die zoletz huhjeladene Belder un Dateie aan.",
        "newimages-legend": "Ußwähle",
        "newimages-label": "Dä Dattei ier Name udder e Stöck dofun:",
-       "showhidebots": "(Bots $1)",
        "noimages": "Kein Dateie jefunge.",
        "ilsubmit": "Söhk",
        "bydate": "nohm Datum",
index 881b9ed..b9b62ad 100644 (file)
        "imagelisttext": "Jêr lîsteyek ji $1 file'an heye, duxrekirin $2.",
        "newimages-summary": "Ev rûpela taybet dosyeyên ku herî dawî hatine barkirin, nîşan dide.",
        "newimages-legend": "Parzûn",
-       "showhidebots": "(Bot'an $1)",
        "noimages": "Ne tiştek tê dîtin.",
        "ilsubmit": "Lêgerîn",
        "bydate": "li gor dîrokê",
index ffc925f..c48b946 100644 (file)
        "newimages-summary": "Haec pagina specialis monstrat fasciculos impositos ultimos.",
        "newimages-legend": "Filtrum",
        "newimages-label": "Nomen fasciculi (vel pars eius):",
-       "showhidebots": "($1 automata)",
        "noimages": "Nullum videndum.",
        "ilsubmit": "Quaerere",
        "bydate": "ex die",
index 9210407..ba9ce95 100644 (file)
        "newimages-summary": "Dës Spezialsäit weist eng Lëscht mat de Fichieren déi als lescht eropgeluede goufen.",
        "newimages-legend": "Filter",
        "newimages-label": "Numm vum Fichier (oder en Deel dovun):",
-       "showhidebots": "($1 Botten)",
        "noimages": "Keng Biller fonnt.",
        "ilsubmit": "Sichen",
        "bydate": "no Datum",
index 7c5dae3..743e9cf 100644 (file)
        "newimages-summary": "Op dees speciaal pazjena waere de meis recènt toegevoogde bestenj weergegaeve.",
        "newimages-legend": "Bestandjsnaam",
        "newimages-label": "Bestandjsnaam (of deel daarvan):",
-       "showhidebots": "($1 Bots)",
        "noimages": "Niks te zeen.",
        "ilsubmit": "Zeuk",
        "bydate": "op datum",
index 138d47e..8d9bae3 100644 (file)
        "newimages-summary": "Šis specialus puslapis rodo paskiausiai įkeltus failus.",
        "newimages-legend": "Filtras",
        "newimages-label": "Failo vardas (ar jo dalis):",
-       "showhidebots": "($1 robotus)",
        "noimages": "Nėra ką parodyti.",
        "ilsubmit": "Ieškoti",
        "bydate": "pagal datą",
index 51e7667..781b149 100644 (file)
        "newimages-summary": "Šeit var apskatīties pēdējos šeit augšuplādētos failus.",
        "newimages-legend": "Filtrs",
        "newimages-label": "Faila nosaukums (vai tā daļa):",
-       "showhidebots": "($1 botus)",
        "noimages": "Nav nekā ko redzēt.",
        "ilsubmit": "Meklēt",
        "bydate": "<b>pēc datuma</b>",
index 73e8cb9..cab767d 100644 (file)
        "newimages-summary": "此奇頁示最後呈上之檔也。",
        "newimages-legend": "濾",
        "newimages-label": "名(或其部):",
-       "showhidebots": "($1僕)",
        "noimages": "無可見。",
        "ilsubmit": "尋檔",
        "bydate": "時序",
index 4f661fb..2baf3b1 100644 (file)
        "newimages-summary": "ऐ विशेष पन्नामे उपारोपित संचिका सभ देखाएल गेल अछि।",
        "newimages-legend": "चलनी",
        "newimages-label": "संचिका नाम (वा ओकर अंश):",
-       "showhidebots": "($1 स्वचालक सभ)",
        "noimages": "किछु देखबा योग्य नै |",
        "ilsubmit": "ताकू",
        "bydate": "तारीख सं",
index 022a709..5bc4044 100644 (file)
        "newimages-summary": "Тя башка тевонь лопась няфнесыне мекольце тонкф файлхт.",
        "newimages-legend": "Педяма",
        "newimages-label": "Файллем (эли сонь пакшец):",
-       "showhidebots": "($1 робот програпт)",
        "noimages": "Мезеге аш.",
        "ilsubmit": "Вешендемс",
        "bydate": "ши коряс",
index d8c9ed8..bc2ad0f 100644 (file)
        "imagelisttext": "{{PLURAL:}}Eto ambany ny lisitran'ny rakitra $1 milahatra araka ny $2.",
        "newimages-legend": "Anaran-drakitra",
        "newimages-label": "Anaran-drakitra (na singan'izy io) :",
-       "showhidebots": "(rôbô $1)",
        "noimages": "Tsy misy sary ato.",
        "ilsubmit": "Karohy",
        "bydate": "araka ny daty",
index 2b34f50..e6b13ed 100644 (file)
        "newimages-summary": "Оваа специјална страница ги покажува скоро подигнатите податотеки.",
        "newimages-legend": "Филтрирај",
        "newimages-label": "Име на податотека (или дел од името):",
-       "showhidebots": "($1 ботови)",
+       "newimages-showbots": "Прикажувај подигања од ботови",
        "noimages": "Нема ништо.",
        "ilsubmit": "Барај",
        "bydate": "по датум",
        "exif-subsectime": "Дел од секундата во кој е сликано",
        "exif-subsectimeoriginal": "Дел од секундата во кој е фотографирано",
        "exif-subsectimedigitized": "Дел од секундата во кој е дигитализирано",
-       "exif-exposuretime": "Ð\95кÑ\81позиÑ\86иÑ\98а",
+       "exif-exposuretime": "Ð\92Ñ\80еме Ð½Ð° Ð¸Ð·Ð»Ð¾Ð¶ÐµÐ½Ð¾Ñ\81Ñ\82",
        "exif-exposuretime-format": "$1 сек ($2)",
        "exif-fnumber": "F-бр.",
        "exif-fnumber-format": "f/$1",
-       "exif-exposureprogram": "Режим Ð½Ð° ÐµÐºÑ\81позиÑ\86иÑ\98а",
+       "exif-exposureprogram": "Ð\9fÑ\80огÑ\80ам Ð½Ð° Ð¸Ð·Ð»Ð¾Ð¶Ñ\83ваÑ\9aе",
        "exif-spectralsensitivity": "Спектрална осетливост",
        "exif-isospeedratings": "Светлоосетливост по ISO",
        "exif-shutterspeedvalue": "APEX-брзина на затворачот",
        "exif-aperturevalue": "APEX-oтвор",
        "exif-brightnessvalue": "APEX-светлост",
-       "exif-exposurebiasvalue": "Ð\9dадомеÑ\81Ñ\82ок Ð½Ð° ÐµÐºÑ\81позиÑ\86иÑ\98аÑ\82а",
+       "exif-exposurebiasvalue": "Ð\9dадомеÑ\81Ñ\82ок Ð½Ð° Ð¸Ð·Ð»Ð¾Ð¶Ñ\83ваÑ\9aеÑ\82о",
        "exif-maxaperturevalue": "Макс. отвореност на блендата",
        "exif-subjectdistance": "Оддалеченост до објектот",
        "exif-meteringmode": "Режим на мерачот",
        "exif-focalplaneyresolution": "Разложеност на жаришната рамнина Y",
        "exif-focalplaneresolutionunit": "Единица за разложеност на жаришната рамнина",
        "exif-subjectlocation": "Положба на субјектот",
-       "exif-exposureindex": "Ð\98ндекÑ\81 Ð½Ð° ÐµÐºÑ\81позиÑ\86иÑ\98аÑ\82а",
+       "exif-exposureindex": "Ð\9fоказаÑ\82ел Ð½Ð° Ð¸Ð·Ð»Ð¾Ð¶Ñ\83ваÑ\9aеÑ\82о",
        "exif-sensingmethod": "Метод на сензорот",
        "exif-filesource": "Извор на податотеката",
        "exif-scenetype": "Тип на сцена",
        "exif-customrendered": "Дополнитела обработка на сликата",
-       "exif-exposuremode": "Режим Ð½Ð° ÐµÐºÑ\81позиÑ\86иÑ\98а",
+       "exif-exposuremode": "Режим Ð½Ð° Ð¸Ð·Ð»Ð¾Ð¶Ñ\83ваÑ\9aе",
        "exif-whitebalance": "Рамнотежа на бело",
        "exif-digitalzoomratio": "Сооднос на дигиталното приближување (зум)",
        "exif-focallengthin35mmfilm": "Жаришно растојание кај 35 мм филм",
        "exif-scenetype-1": "Директно фотографирана слика",
        "exif-customrendered-0": "Нормален процес",
        "exif-customrendered-1": "Нестандарден процес",
-       "exif-exposuremode-0": "Ð\90вÑ\82омаÑ\82Ñ\81ка ÐµÐºÑ\81позиÑ\86иÑ\98а",
-       "exif-exposuremode-1": "РаÑ\87на ÐµÐºÑ\81позиÑ\86иÑ\98а",
+       "exif-exposuremode-0": "Ð\90вÑ\82омаÑ\82Ñ\81ко Ð¸Ð·Ð»Ð¾Ð¶Ñ\83ваÑ\9aе",
+       "exif-exposuremode-1": "РаÑ\87но Ð¸Ð·Ð»Ð¾Ð¶Ñ\83ваÑ\9aе",
        "exif-exposuremode-2": "Автоматски со зададен распон",
        "exif-whitebalance-0": "Автоматска рамнотежа на бело",
        "exif-whitebalance-1": "Рачна рамнотежа на бело",
index caa5f3f..059cdf5 100644 (file)
        "jumptonavigation": "വഴികാട്ടി",
        "jumptosearch": "തിരയൂ",
        "view-pool-error": "ക്ഷമിക്കണം, ഈ നിമിഷം സെർവറുകൾ അമിതഭാരം കൈകാര്യം ചെയ്യുകയാണ്.\nധാരാളം ഉപയോക്താക്കൾ ഈ താൾ കാണുവാൻ ശ്രമിച്ചുകൊണ്ടിരിക്കുകയാണ്.\nഇനിയും താൾ ലഭ്യമാക്കുവാൻ താങ്കൾ ശ്രമിക്കുന്നതിന് മുൻപ് ദയവായി അല്പസമയം കാത്തിരിക്കുക.\n\n$1",
+       "generic-pool-error": "ക്ഷമിക്കണം, ഈ നിമിഷം സെർവറുകൾ അമിതഭാരം കൈകാര്യം ചെയ്യുകയാണ്.\nധാരാളം ഉപയോക്താക്കൾ ഈ സ്രോതസ്സുകൾ കാണുവാൻ ശ്രമിച്ചുകൊണ്ടിരിക്കുകയാണ്.\nഇനിയും ഇത് ലഭ്യമാക്കുവാൻ താങ്കൾ ശ്രമിക്കുന്നതിന് മുൻപ് ദയവായി അല്പസമയം കാത്തിരിക്കുക.",
        "pool-timeout": "പൂട്ട് മാറാനുള്ള കാത്തിരിപ്പ് സമയം",
        "pool-queuefull": "പൂൾ ക്യൂ നിറഞ്ഞിരിക്കുന്നു",
        "pool-errorunknown": "അപരിചിതമായ പിഴവ്",
        "newimages-summary": "ചുരുക്കം",
        "newimages-legend": "അരിപ്പ",
        "newimages-label": "പ്രമാണത്തിന്റെ പേര്‌ (അഥവാ പേരിന്റെ ഭാഗം)",
-       "showhidebots": "(യന്ത്രങ്ങളെ $1)",
        "noimages": "ഒന്നും കാണാനില്ല.",
        "ilsubmit": "തിരയൂ",
        "bydate": "ദിനക്രമത്തിൽ",
index fa0f820..a184e82 100644 (file)
        "newimages-summary": "Энэ тусгай хуудсанд хамгийн сүүлд оруулагдсан файлуудыг үзүүлнэ.",
        "newimages-legend": "Шүүлтүүр",
        "newimages-label": "Файлын нэр (эсвэл түүний нэг хэсэг):",
-       "showhidebots": "(Роботуудыг $1)",
        "noimages": "Харах юмгүй.",
        "ilsubmit": "Хайлт",
        "bydate": "Огноогоор",
index 929fc89..418cbb6 100644 (file)
        "newimages-summary": "हे विशेष पान शेवटी चढविलेल्या संचिका दर्शविते.",
        "newimages-legend": "गाळक",
        "newimages-label": "संचिकानाम (किंवा त्याचा भाग):",
-       "showhidebots": "(सांगकामे $1)",
        "noimages": "बघण्यासारखे येथे काही नाही.",
        "ilsubmit": "शोधा",
        "bydate": "तारखेनुसार",
index 7d347c9..8642cf4 100644 (file)
@@ -23,7 +23,7 @@
        },
        "tog-underline": "Garis bawah pautan:",
        "tog-hideminor": "Sembunyikan suntingan kecil dalam laman perubahan terkini",
-       "tog-hidepatrolled": "Sorokkan suntingan yang telah dironda daripada senarai perubahan terkini",
+       "tog-hidepatrolled": "Sorokkan suntingan yang telah dironda daripada laman perubahan terkini",
        "tog-newpageshidepatrolled": "Sorokkan laman yang telah dironda daripada senarai laman baru",
        "tog-extendwatchlist": "Kembangkan senarai pantau untuk memaparkan semua perubahan, bukan hanya yang terkini",
        "tog-usenewrc": "Perubahan kumpulan mengikut laman dalam perubahan terkini dan senarai pantau",
        "expensive-parserfunction-warning": "Amaran: Laman ini mengandungi terlalu banyak panggilan fungsi penghurai yang intensif.\n\nHad panggilan ialah $2, sekarang terdapat $1 panggilan.",
        "expensive-parserfunction-category": "Laman yang mengandungi terlalu banyak panggilan fungsi penghurai yang intensif",
        "post-expand-template-inclusion-warning": "Amaran: Saiz penyertaan templat terlalu besar.\nSesetengah templat tidak akan disertakan.",
-       "post-expand-template-inclusion-category": "Laman-laman yang melebihi had saiz penyertaan templat",
+       "post-expand-template-inclusion-category": "Laman yang melebihi had saiz penyertaan templat",
        "post-expand-template-argument-warning": "Amaran: Laman ini mengandungi sekurang-kurangnya satu argumen templat yang mempunyai saiz pengembangan yang terlalu besar.\nArgumen-argumen ini telah ditinggalkan.",
        "post-expand-template-argument-category": "Laman yang mengandungi templat dengan argumen yang tidak lengkap",
        "parser-template-loop-warning": "Gelung templat dikesan: [[$1]]",
        "mergelog": "Log penggabungan",
        "pagemerge-logentry": "menggabungkan [[$1]] ke dalam [[$2]] (semakan sehingga $3)",
        "revertmerge": "Pisahkan",
-       "mergelogpagetext": "Yang berikut ialah senarai terkini bagi penggabungan sejarah sesebuah laman ke dalam lamana yang lain.",
+       "mergelogpagetext": "Yang berikut ialah senarai terkini bagi penggabungan sejarah sesebuah laman ke dalam laman yang lain.",
        "history-title": "Sejarah semakan bagi \"$1\"",
        "difference-title": "Perbezaan antara semakan-semakan \"$1\"",
        "difference-title-multipage": "Perbezaan antara laman \"$1\" dan \"$2\"",
        "recentchanges-label-minor": "Ini ialah suntingan kecil",
        "recentchanges-label-bot": "Suntingan ini dilakukan oleh bot",
        "recentchanges-label-unpatrolled": "Suntingan ini belum dirondai",
-       "recentchanges-label-plusminus": "Saiz halaman telah berubah sebanyak jumlah bait ini",
+       "recentchanges-label-plusminus": "Saiz laman telah berubah sebanyak jumlah bait ini",
        "recentchanges-legend-heading": "'''Petunjuk:'''",
-       "recentchanges-legend-newpage": "(lihat juga [[Special:NewPages|senarai halaman baru]])",
+       "recentchanges-legend-newpage": "(lihat juga [[Special:NewPages|senarai laman baru]])",
        "rcnotefrom": "Yang berikut adalah semua suntingan sejak <b>$2</b> (yang dipaparkan sehingga <b>$1</b>).",
        "rclistfrom": "Paparkan perubahan sejak $3 $2",
        "rcshowhideminor": "$1 suntingan kecil",
        "unusedtemplateswlh": "pautan-pautan lain",
        "randompage": "Laman rawak",
        "randompage-nopages": "Tiada laman dalam {{PLURAL:$2|ruang|ruang-ruang}} nama berikut: $1.",
-       "randomincategory": "Halaman pilihan rawak dalam kategori",
+       "randomincategory": "Laman rawak dalam kategori",
        "randomincategory-invalidcategory": "\"$1\" bukan nama kategori yang sah.",
        "randomincategory-nopages": "Tiada halaman di [[:Category:$1]].",
        "randomincategory-selectcategory": "Dapatkan halaman pilihan rawak dari kategori: $1 $2.",
        "statistics-users-active": "Pengguna aktif",
        "statistics-users-active-desc": "Pengguna yang aktif sejak {{PLURAL:$1|semalam|$1 hari lalu}}",
        "statistics-mostpopular": "Laman dilihat terbanyak",
-       "pageswithprop": "Halaman dengan sifat halaman",
-       "pageswithprop-legend": "Halaman dengan sifat halaman",
+       "pageswithprop": "Laman dengan sifat laman",
+       "pageswithprop-legend": "Laman dengan sifat laman",
        "pageswithprop-text": "Halaman ini menyenaraikan halaman-halaman yang menggunakan sifat halaman yang tertentu.",
        "pageswithprop-prop": "Nama sifat:",
        "pageswithprop-submit": "Pergi",
        "mostlinkedtemplates": "Templat dipaut terbanyak",
        "mostcategories": "Rencana dengan kategori terbanyak",
        "mostimages": "Imej dipaut terbanyak",
-       "mostinterwikis": "Halaman yang paling banyak pautan antara wiki",
+       "mostinterwikis": "Laman yang paling banyak pautan interwiki",
        "mostrevisions": "Rencana dengan semakan terbanyak",
        "prefixindex": "Indeks awalan",
        "prefixindex-namespace": "Semua laman dengan awalan (ruang nama $1)",
        "cachedspecial-viewing-cached-ts": "Anda sedang melihat versi dalam cache laman ini yang mungkin tidak lengkap sepenuhnya.",
        "cachedspecial-refresh-now": "Lihat yang terkini.",
        "categories": "Kategori",
-       "categoriespagetext": "{{PLURAL:$1|Kategori|Kategori-kategori}} berikut mengandungi laman-laman atau media.\n[[Special:UnusedCategories|Kategori yang tidak digunakan]] tidak dipaparkan di sini.\nLihat juga [[Special:WantedCategories|kategori yang dikehendaki]].",
+       "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",
        "listgrouprights-removegroup-self": "Keluar daripada {{PLURAL:$2|kumpulan|kumpulan-kumpulan}}: $1",
        "listgrouprights-addgroup-self-all": "Menyertai semua kumpulan",
        "listgrouprights-removegroup-self-all": "Keluar daripada semua kumpulan",
+       "listgrouprights-namespaceprotection-header": "Sekatan ruang nama",
        "listgrouprights-namespaceprotection-namespace": "Ruang nama",
+       "trackingcategories": "Kategori penjejak",
+       "trackingcategories-msg": "Kategori penjejak",
+       "trackingcategories-name": "Nama pesanan",
+       "trackingcategories-nodesc": "Tiada keterangan tersedia.",
        "mailnologin": "Tiada alamat e-mel",
        "mailnologintext": "Anda perlu [[Special:UserLogin|log masuk]]\nterlebih dahulu dan mempunyai alamat e-mel yang sah dalam\n[[Special:Preferences|laman keutamaan]] untuk mengirim e-mel kepada pengguna lain.",
        "emailuser": "Kirim e-mel kepada pengguna ini",
        "unwatchthispage": "Berhenti memantau",
        "notanarticle": "Bukan laman kandungan",
        "notvisiblerev": "Semakan ini telah dihapuskan",
-       "watchlist-details": "$1 laman dipantau (tidak termasuk laman perbincangan).",
+       "watchlist-details": "$1 laman dipantau ,tidak termasuk laman perbincangan.",
        "wlheader-enotif": "Pemberitahuan melalui e-mel dibolehkan.",
        "wlheader-showupdated": "Laman-laman yang telah diubah sejak kunjungan terakhir anda dipaparkan dalam '''teks tebal'''.",
        "wlnote2": "Yang berikut adalah perubahan dalam {{PLURAL:$1|sejam|<strong>$1</strong> jam}} yang lepas, setakat $2, $3.",
        "delete-edit-reasonlist": "Ubah sebab-sebab hapus",
        "delete-toobig": "Laman ini mempunyai sejarah yang besar, iaitu melebihi $1 jumlah semakan. Oleh itu, laman ini dilindungi daripada dihapuskan untuk mengelak kerosakan di {{SITENAME}} yang tidak disengajakan.",
        "delete-warning-toobig": "Laman ini mempunyai sejarah yang besar, iaitu melebihi $1 jumlah semakan. Menghapuskannya boleh mengganggu perjalanan pangkalan data {{SITENAME}}. Sila berhati-hati.",
-       "deleting-backlinks-warning": "'''Amaran:''' Terdapat halaman-halaman lain yang berpaut atau bertransklusi dengan halaman yang hendak anda hapus itu.",
+       "deleting-backlinks-warning": "'''Amaran:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Terdapat laman lain]] yang berpaut atau bertransklusi dengan laman yang hendak anda hapus ini.",
        "rollback": "Undurkan suntingan.",
        "rollback_short": "Undur",
        "rollbacklink": "undur",
        "protect-locked-blocked": "Anda telah disekat, justeru tidak boleh menukar peringkat perlindungan.\nIni adalah tetapan semasa bagi laman '''$1''':",
        "protect-locked-dblock": "Anda tidak boleh menukar peringkat perlindungan kerana pangkalan data sedang dikunci.\nIni adalah tetapan semasa bagi laman '''$1''':",
        "protect-locked-access": "Anda tidak mempunyai keizinan untuk menukar peringkat perlindungan.\nIni adalah tetapan semasa bagi laman '''$1''':",
-       "protect-cascadeon": "Laman ini dilindungi kerana ia terkandung dalam {{PLURAL:$1|laman|laman-laman}} berikut, yang dilindungi secara melata. Anda boleh menukar peringkat perlindunan laman ini, akan tetapi ia tidak akan menjejaskan perlindungan melata tersebut.",
+       "protect-cascadeon": "Laman ini dilindungi kerana ia terkandung dalam {{PLURAL:$1|laman|laman-laman}} berikut, yang dilindungi secara melata. Penukaran peringkat perlindungan laman ini tidak akan menjejaskan perlindungan melata tersebut.",
        "protect-default": "Benarkan semua pengguna",
        "protect-fallback": "Benarkan pengguna yang berizin \"$1\" sahaja",
        "protect-level-autoconfirmed": "Benarkan pengguna yang diautosahkan sahaja",
        "contributions-title": "Sumbangan oleh $1",
        "mycontris": "Sumbangan",
        "contribsub2": "Untuk {{GENDER:$3|$1}} ($2)",
+       "contributions-userdoesnotexist": "Akaun pengguna \"$1\" tidak berdaftar.",
        "nocontribs": "Tiada sebarang perubahan yang sepadan dengan kriteria-kriteria ini.",
        "uctop": "(terkini)",
        "month": "Sebelum bulan:",
        "sp-contributions-newbies": "Tunjukkan sumbangan daripada akaun baru sahaja",
        "sp-contributions-newbies-sub": "Bagi akaun-akaun baru",
        "sp-contributions-newbies-title": "Sumbangan oleh pengguna baru",
-       "sp-contributions-blocklog": "Log sekatan",
+       "sp-contributions-blocklog": "log sekatan",
        "sp-contributions-deleted": "sumbangan dihapuskan",
        "sp-contributions-uploads": "muat naik",
        "sp-contributions-logs": "log",
        "sp-contributions-search": "Cari sumbangan",
        "sp-contributions-username": "Alamat IP atau nama pengguna:",
        "sp-contributions-toponly": "Hanya paparkan suntingan yang merupakan semakan terkini",
+       "sp-contributions-newonly": "Hanya paparkan suntingan yang merupakan ciptaan laman",
        "sp-contributions-submit": "Cari",
        "whatlinkshere": "Pautan ke laman ini",
        "whatlinkshere-title": "Laman yang mengandungi pautan ke \"$1\"",
        "pageinfo-hidden-categories": "Kategori tersembunyi ($1)",
        "pageinfo-templates": "Templat tertransklusi ($1)",
        "pageinfo-transclusions": "{{PLURAL:$1|Halaman|Halaman-halaman}} yang tertransklusi pada ($1)",
-       "pageinfo-toolboxlink": "Maklumat halaman",
+       "pageinfo-toolboxlink": "Maklumat laman",
        "pageinfo-redirectsto": "Melencong ke",
        "pageinfo-redirectsto-info": "maklumat",
        "pageinfo-contentpage": "Dikira sebagai halaman kandungan",
        "newimages-summary": "Laman khas ini memaparkan senarai fail muat naik terakhir.",
        "newimages-legend": "Penapis",
        "newimages-label": "Nama fail (atau sebahagian daripadanya):",
-       "showhidebots": "($1 bot)",
        "noimages": "Tiada imej.",
        "ilsubmit": "Cari",
        "bydate": "mengikut tarikh",
        "htmlform-chosen-placeholder": "Pilih satu pilihan",
        "sqlite-has-fts": "$1 dengan sokongan carian teks penuh",
        "sqlite-no-fts": "$1 tanpa sokongan carian teks penuh",
-       "logentry-delete-delete": "$1 telah {{GENDER:$2|menghapuskan}} halaman $3",
-       "logentry-delete-restore": "$1 telah {{GENDER:$2|memulihkan}} halaman $3",
+       "logentry-delete-delete": "$1 telah {{GENDER:$2|menghapuskan}} laman $3",
+       "logentry-delete-restore": "$1 telah {{GENDER:$2|memulihkan}} laman $3",
        "logentry-delete-event": "$1 telah {{GENDER:$2|mengubah}} keterlihatan $5 peristiwa log di $3: $4",
        "logentry-delete-revision": "$1 telah {{GENDER:$2|mengubah}} keterlihatan $5 semakan di halaman $3: $4",
        "logentry-delete-event-legacy": "$1 telah {{GENDER:$2|mengubah}} keterlihatan peristiwa log di $3",
        "revdelete-uname-unhid": "nama pengguna terdedah",
        "revdelete-restricted": "mengenakan sekatan pada penyelia",
        "revdelete-unrestricted": "menarik sekatan daripada penyelia",
-       "logentry-move-move": "$1 telah {{GENDER:$2|memindahkan}} halaman $3 ke $4",
-       "logentry-move-move-noredirect": "$1 telah {{GENDER:$2|memindahkan}} halaman $3 ke $4 tanpa meninggalkan lencongan",
-       "logentry-move-move_redir": "$1 telah {{GENDER:$2|memindahkan}} halaman $3 ke $4 melalui lencongan",
-       "logentry-move-move_redir-noredirect": "$1 telah {{GENDER:$2|memindahkan}} halaman $3 ke $4 melalui lencongan tanpa meninggalkan lencongan",
+       "logentry-move-move": "$1 telah {{GENDER:$2|memindahkan}} laman $3 ke $4",
+       "logentry-move-move-noredirect": "$1 telah {{GENDER:$2|memindahkan}} laman $3 ke $4 tanpa meninggalkan lencongan",
+       "logentry-move-move_redir": "$1 telah {{GENDER:$2|memindahkan}} laman $3 ke $4 melalui lencongan",
+       "logentry-move-move_redir-noredirect": "$1 telah {{GENDER:$2|memindahkan}} laman $3 ke $4 melalui lencongan tanpa meninggalkan lencongan",
        "logentry-patrol-patrol": "$1 telah {{GENDER:$2|menanda}} semakan $4 di halaman $3 sebagai dironda",
        "logentry-patrol-patrol-auto": "$1 telah {{GENDER:$2|menanda}} semakan $4 di halaman $3 sebagai dironda secara automatik",
        "logentry-newusers-newusers": "Akaun pengguna $1 telah {{GENDER:$2|dibuka}}",
index 2720a32..19b30e3 100644 (file)
@@ -7,7 +7,8 @@
                        "Malafaya",
                        "Roderick Mallia",
                        "Urhixidur",
-                       "아라"
+                       "아라",
+                       "CharlieTheCabbie"
                ]
        },
        "tog-underline": "Ħoloq sottolinjati:",
@@ -34,7 +35,7 @@
        "tog-shownumberswatching": "Uri n-numru ta' utenti li qegħdin isegwu din il-paġna",
        "tog-oldsig": "Firma attwali:",
        "tog-fancysig": "Interpreta l-firma bħala test tal-wiki (mingħajr ħolqa awtomatika)",
-       "tog-uselivepreview": "Attiva l-funzjoni ''Live preview'' (bżonn tal-JavaScript; sperimentali)",
+       "tog-uselivepreview": "Attiva l-funzjoni ''Previżjoni jgħixu'' (bżonn tal-JavaScript; sperimentali)",
        "tog-forceeditsummary": "Nebbaħni meta ndaħħal taqsira tal-modifika vojta",
        "tog-watchlisthideown": "Aħbi l-modifiki tiegħi mil-lista ta' osservazzjoni",
        "tog-watchlisthidebots": "Aħbi l-modifiki tal-bots mil-lista ta' osservazzjoni",
@@ -50,7 +51,7 @@
        "tog-prefershttps": "Dejjem uża l-konnessjoni sigura meta tidħol fil-kont",
        "underline-always": "Dejjem",
        "underline-never": "Qatt",
-       "underline-default": "Żomm l-issettjar tal-browser",
+       "underline-default": "Jżommu tieghek l-issettjar għal tal-browser jew tas-ġilda",
        "editfont-style": "Stil tat-tipa tal-kaxxa tal-editjar:",
        "editfont-default": "Żomm l-issettjar tal-browser",
        "editfont-monospace": "Tipa monospazja",
        "newwindow": "(tinfetaħ f'tieqa ġdida)",
        "cancel": "Annulla",
        "moredotdotdot": "Aktar...",
-       "morenotlisted": "Oħrajn mhux imniżżla...",
+       "morenotlisted": "Oħrajn mhux imniżżla.",
        "mypage": "Paġna",
        "mytalk": "Diskussjoni",
        "anontalk": "Diskussjoni għal dan l-IP",
        "permalink": "Ħolqa permanenti",
        "print": "Ipprintja",
        "view": "Dehra",
+       "view-foreign": "Tara fuq $1",
        "edit": "Editja",
+       "edit-local": "Timmodifika deskrizzjoni lokali",
        "create": "Oħloq",
+       "create-local": "Żid deskrizzjoni lokali",
        "editthispage": "Immodifika din il-paġna",
        "create-this-page": "Oħloq din il-paġna",
        "delete": "Ħassar",
        "newimages-summary": "Din il-paġna speċjali turi l-aħħar fajls li ġew mtella' riċentament.",
        "newimages-legend": "Filtru",
        "newimages-label": "Isem tal-fajl (jew parti minnu):",
-       "showhidebots": "($1 bots)",
        "noimages": "M'hawn xejn x'tara.",
        "ilsubmit": "Fittex",
        "bydate": "data",
index fd2d2f3..e17ea9c 100644 (file)
        "show-big-image": "Mochi cuallōtl",
        "newimages": "Yancuīc īxipcān",
        "imagelisttext": "Nicān {{PLURAL:$1|mopiya|mopiyah}} '''$1''' īxiptli $2 iuhcopa.",
-       "showhidebots": "($1 tepoztlācah)",
        "noimages": "Ahtlein ic tlatta.",
        "ilsubmit": "Tlatēmōz",
        "bydate": "tōnalcopa",
index ff6e10c..ec11620 100644 (file)
        "newimages-summary": "Denne spesialsiden viser de sist opplastede filene.",
        "newimages-legend": "Filnavn",
        "newimages-label": "Filnavn (helt eller delvis):",
-       "showhidebots": "($1 roboter)",
        "noimages": "Ingenting å se.",
        "ilsubmit": "Søk",
        "bydate": "etter dato",
index 0c93caf..be69979 100644 (file)
        "newimages-summary": "Op disse spesiale zied staon de bestaanden die der as lest bie-ekeumen bin.",
        "newimages-legend": "Bestaandsnaam",
        "newimages-label": "Bestaandsnaam (of deel dervan):",
-       "showhidebots": "(Bots $1)",
        "noimages": "Niks te zien.",
        "ilsubmit": "Zeuk",
        "bydate": "op daotum",
index a31c1e9..477a9e0 100644 (file)
        "newimages-summary": "यस विशेष पृष्ठले अन्तिम उर्ध्वभरण गरिका फाइलहरु देखाउँछ ।",
        "newimages-legend": "फिल्टर",
        "newimages-label": "फाइल अथवा (यसको एउटा अंश)को नाम:",
-       "showhidebots": "($1 बोटहरु)",
        "noimages": "हेर्नको लागि केही छैन.",
        "ilsubmit": "खोज्नुहोस्",
        "bydate": "मिति अनुसार",
index f978672..8098a39 100644 (file)
        "newimages-summary": "Op deze speciale pagina worden de meest recent toegevoegde bestanden weergegeven.",
        "newimages-legend": "Bestandsnaam",
        "newimages-label": "Bestandsnaam (of deel daarvan):",
-       "showhidebots": "(Bots $1)",
        "noimages": "Er is niets te zien.",
        "ilsubmit": "Zoeken",
        "bydate": "op datum",
index a5eb7b2..73132c3 100644 (file)
        "newimages-summary": "Denne spesialsida syner dei sist opplasta filene.",
        "newimages-legend": "Filnamn",
        "newimages-label": "Filnamn (eller ein del av det):",
-       "showhidebots": "($1 robotar)",
        "noimages": "Her er ingen filer som kan visast.",
        "ilsubmit": "Søk",
        "bydate": "etter dato",
index e4ae4c7..fb98376 100644 (file)
        "newimages-summary": "Aquesta pagina especiala aficha los darrièrs fichièrs importats.",
        "newimages-legend": "Filtre",
        "newimages-label": "Nom del fichièr (o una partida d'aqueste) :",
-       "showhidebots": "($1 bòts)",
        "noimages": "Cap d'imatge d'afichar pas.",
        "ilsubmit": "Cercar",
        "bydate": "per data",
index 054bcaa..46be876 100644 (file)
        "newimages-summary": "ଏହି ବିଶେଷ ପୃଷ୍ଠାଟି ଶେଷ ଅପଲୋଡ଼ ହୋଇଥିବା ଫାଇଲମାନ ଦେଖାଇଥାଏ ।",
        "newimages-legend": "ଛାଣିବା",
        "newimages-label": "ଫାଇଲ ନାମ (କିମ୍ବା ତାହାର ଏକ ଭାଗ):",
-       "showhidebots": "($1 ଜଣ ବଟ)",
        "noimages": "ଦେଖିବାକୁ କିଛି ନାହିଁ ।",
        "ilsubmit": "ଖୋଜିବା",
        "bydate": "ତାରିଖ ଅନୁସାରେ",
index 0e24496..9b49369 100644 (file)
        "newimages": "Pirinan kareng bayung simpan (new files)",
        "imagelisttext": "Ing makatuki tala yang '''$1''' {{PLURAL:$1|simpan|simpan}} a misamasan $2.",
        "newimages-summary": "Ining bulung a makabukud papakit no reng simpan (file) a tauling milulan.",
-       "showhidebots": "($1 bot)",
        "noimages": "Ala kang akit.",
        "ilsubmit": "Manintun",
        "bydate": "agpang keng aldo",
index e349cb9..2430843 100644 (file)
        "newimages-summary": "Na tej stronie specjalnej prezentowane są ostatnio przesłane pliki.",
        "newimages-legend": "Filtruj",
        "newimages-label": "Nazwa pliku (lub jej fragment)",
-       "showhidebots": "($1 boty)",
        "noimages": "Brak plików do pokazania.",
        "ilsubmit": "Szukaj",
        "bydate": "według daty",
index 4e1d493..64e3008 100644 (file)
        "newimages-summary": "Sta pàgina special-sì a la smon j'ùltim archivi carià.",
        "newimages-legend": "Filtror",
        "newimages-label": "Nòm ëd l'archivi (o na soa part):",
-       "showhidebots": "($1 trigomiro)",
        "noimages": "Pa gnente da vëdde.",
        "ilsubmit": "Arserché",
        "bydate": "për data",
index ef1aa43..941ef81 100644 (file)
        "newimages-summary": "اے خاص صفہ آخری چڑھائیاں فائلاں دسدا اے۔",
        "newimages-legend": "فلٹر",
        "newimages-label": "ففائل ناں (یا ایدا انگ)",
-       "showhidebots": "(بوٹ $1)",
        "noimages": "ویکھن آسطے کج نئیں۔",
        "ilsubmit": "کھوجو",
        "bydate": "تریخ نال",
index d090034..29d8b44 100644 (file)
        "newimages-summary": "همدا ځانگړی مخ، وروستنۍ پورته شوې دوتنې ښکاره کوي.",
        "newimages-legend": "چاڼگر",
        "newimages-label": "د دوتنې نوم (يا د دې برخه):",
-       "showhidebots": "($1 روباټ)",
        "noimages": "د کتلو لپاره څه نشته.",
        "ilsubmit": "پلټل",
        "bydate": "د نېټې له مخې",
index d75a1df..044e8aa 100644 (file)
        "emailuser": "Enviar-lhe um e-mail",
        "emailuser-title-target": "Enviar e-mail para {{GENDER:$1|este usuário|esta usuária}}",
        "emailuser-title-notarget": "Enviar e-mail",
-       "emailpage": "Contactar usuário",
+       "emailpage": "Enviar e-mail ao usuário",
        "emailpagetext": "Você pode usar o formulário a seguir para enviar um e-mail para {{GENDER:$1|este usuário|esta usuária}}.\nO endereço de e-mail que você inseriu em [[Special:Preferences|suas preferências de usuário]] irá aparecer como o endereço do remetente da mensagem, com o destinatário podendo responder diretamente para você.",
        "defemailsubject": "E-mail do usuário \"$1\" da {{SITENAME}}",
        "usermaildisabled": "O e-mail do usuário foi desativado",
        "emailccsubject": "Cópia de sua mensagem para $1: $2",
        "emailsent": "E-mail enviado",
        "emailsenttext": "Sua mensagem foi enviada.",
-       "emailuserfooter": "Este e-mail foi enviado por $1 para $2 através da opção de \"contactar usuário\" da {{SITENAME}}.",
+       "emailuserfooter": "Este e-mail foi enviado por $1 para $2 através da opção de \"enviar e-mail ao usuário\" da {{SITENAME}}.",
        "usermessage-summary": "Deixar mensagem de sistema.",
        "usermessage-editor": "Mensagens de sistema",
        "watchlist": "Páginas vigiadas",
        "newimages-summary": "Esta página especial mostra os arquivos mais recentemente enviados",
        "newimages-legend": "Filtrar",
        "newimages-label": "Nome de arquivo (ou parte dele):",
-       "showhidebots": "($1 robôs)",
        "noimages": "Nada para ver.",
        "ilsubmit": "Pesquisar",
        "bydate": "por data",
        "compare-revision-not-exists": "A revisão que você especificou não existe.",
        "dberr-problems": "Desculpe! Este sítio está passando por dificuldades técnicas.",
        "dberr-again": "Experimente esperar alguns minutos e atualizar.",
-       "dberr-info": "(Não foi possível contactar o servidor de base de dados: $1)",
+       "dberr-info": "(Não foi possível contatar o servidor de base de dados: $1)",
        "dberr-info-hidden": "(Não foi possível contatar o banco de dados do servidor)",
        "dberr-usegoogle": "Você pode tentar pesquisar no Google entretanto.",
        "dberr-outofdate": "Note que os seus índices relativos ao nosso conteúdo podem estar desatualizados.",
index 106c553..259ed09 100644 (file)
        "newimages-summary": "Esta página especial mostra os ficheiros mais recentemente enviados.",
        "newimages-legend": "Filtrar",
        "newimages-label": "Nome de ficheiro (ou parte dele):",
-       "showhidebots": "($1 robôs)",
        "noimages": "Nada para ver.",
        "ilsubmit": "Pesquisar",
        "bydate": "por data",
index adf6044..958f4af 100644 (file)
        "right-move": "{{doc-right|move}}\nThe right to move any page that is not protected from moving.\n{{Identical|Move page}}",
        "right-move-subpages": "{{doc-right|move-subpages}}",
        "right-move-rootuserpages": "{{doc-right|move-rootuserpages}}",
+       "right-move-categorypages": "{{doc-right|move-categorypages}}",
        "right-movefile": "{{doc-right|movefile}}",
        "right-suppressredirect": "{{doc-right|suppressredirect}}",
        "right-upload": "{{doc-right|upload}}\nThe right to [[Special:Upload|upload]] a file (this includes images, media, audio, ...).\n{{Identical|Upload file}}",
        "action-move": "{{Doc-action|move}}",
        "action-move-subpages": "{{Doc-action|move-subpages}}",
        "action-move-rootuserpages": "{{Doc-action|move-rootuserpages}}",
+       "action-move-categorypages": "{{Doc-action|move-categorypages}}",
        "action-movefile": "{{doc-action|movefile}}",
        "action-upload": "{{Doc-action|upload}}",
        "action-reupload": "{{Doc-action|reupload}}",
        "movepagetalktext": "Text on the special 'Move page'. This text only appears if the talk page is not empty.",
        "movearticle": "The text before the name of the page that you are moving. Can be translated as \"Page that is going to be moved\". Used in [[Special:MovePage]].\n\nSee also:\n* {{msg-mw|move-page-legend|legend for the form}}\n* {{msg-mw|newtitle|label for new title}}\n* {{msg-mw|movereason|label for textarea}}\n* {{msg-mw|movetalk|label for checkbox}}\n* {{msg-mw|move-leave-redirect|label for checkbox}}\n* {{msg-mw|fix-double-redirects|label for checkbox}}\n* {{msg-mw|move-subpages|label for checkbox}}\n* {{msg-mw|move-talk-subpages|label for checkbox}}\n* {{msg-mw|move-watch|label for checkbox}}\n{{Identical|Move page}}",
        "moveuserpage-warning": "Used as warning in [[Special:MovePage]], when moving a user page.",
-       "movenologintext": "Text of message on special page 'Permissions Errors', which appears when somebody tries to move a page without being logged in.\n\nSee also:\n* {{msg-mw|cant-move-user-page}}\n* {{msg-mw|cant-move-to-user-page}}\n* {{msg-mw|movenotallowedfile}}\n* {{msg-mw|movenotallowed}}",
-       "movenotallowed": "Used as error message.\n\nSee also:\n* {{msg-mw|cant-move-user-page}}\n* {{msg-mw|cant-move-to-user-page}}\n* {{msg-mw|movenotallowedfile}}\n* {{msg-mw|movenologintext}}",
-       "movenotallowedfile": "Used as error message.\n\nSee also:\n* {{msg-mw|cant-move-user-page}}\n* {{msg-mw|cant-move-to-user-page}}\n* {{msg-mw|movenotallowed}}\n* {{msg-mw|movenologintext}}",
-       "cant-move-user-page": "Used as error message.\n\nSee also:\n* {{msg-mw|cant-move-to-user-page}}\n* {{msg-mw|movenotallowedfile}}\n* {{msg-mw|movenotallowed}}\n* {{msg-mw|movenologintext}}",
-       "cant-move-to-user-page": "Used as error message.\n\nSee also:\n* {{msg-mw|cant-move-user-page}}\n* {{msg-mw|movenotallowedfile}}\n* {{msg-mw|movenotallowed}}\n* {{msg-mw|movenologintext}}",
+       "movecategorypage-warning": "Used as warning in [[Special:MovePage]], when moving a category page.",
+       "movenologintext": "Text of message on special page 'Permissions Errors', which appears when somebody tries to move a page without being logged in.\n\nSee also:\n* {{msg-mw|cant-move-user-page}}\n* {{msg-mw|cant-move-to-user-page}}\n* {{msg-mw|cant-move-category-page}}\n* {{msg-mw|cant-move-to-category-page}}\n* {{msg-mw|movenotallowedfile}}\n* {{msg-mw|movenotallowed}}",
+       "movenotallowed": "Used as error message.\n\nSee also:\n* {{msg-mw|cant-move-user-page}}\n* {{msg-mw|cant-move-to-user-page}}\n* {{msg-mw|cant-move-category-page}}\n* {{msg-mw|cant-move-to-category-page}}\n* {{msg-mw|movenotallowedfile}}\n* {{msg-mw|movenologintext}}",
+       "movenotallowedfile": "Used as error message.\n\nSee also:\n* {{msg-mw|cant-move-user-page}}\n* {{msg-mw|cant-move-to-user-page}}\n* {{msg-mw|cant-move-category-page}}\n* {{msg-mw|cant-move-to-category-page}}\n* {{msg-mw|movenotallowed}}\n* {{msg-mw|movenologintext}}",
+       "cant-move-user-page": "Used as error message.\n\nSee also:\n* {{msg-mw|cant-move-to-user-page}}\n* {{msg-mw|cant-move-category-page}}\n* {{msg-mw|cant-move-to-category-page}}\n* {{msg-mw|movenotallowedfile}}\n* {{msg-mw|movenotallowed}}\n* {{msg-mw|movenologintext}}",
+       "cant-move-to-user-page": "Used as error message.\n\nSee also:\n* {{msg-mw|cant-move-user-page}}\n* {{msg-mw|cant-move-category-page}}\n* {{msg-mw|cant-move-to-category-page}}\n* {{msg-mw|movenotallowedfile}}\n* {{msg-mw|movenotallowed}}\n* {{msg-mw|movenologintext}}",
+       "cant-move-category-page": "Used as error message.\n\nSee also:\n* {{msg-mw|cant-move-user-page}}\n* {{msg-mw|cant-move-to-user-page}}\n* {{msg-mw|cant-move-to-category-page}}\n* {{msg-mw|movenotallowedfile}}\n* {{msg-mw|movenotallowed}}\n* {{msg-mw|movenologintext}}",
+       "cant-move-to-category-page": "Used as error message.\n\nSee also:\n* {{msg-mw|cant-move-user-page}}\n* {{msg-mw|cant-move-to-user-page}}\n* {{msg-mw|cant-move-category-page}}\n* {{msg-mw|movenotallowedfile}}\n* {{msg-mw|movenotallowed}}\n* {{msg-mw|movenologintext}}",
        "newtitle": "Used in the special page \"[[Special:MovePage]]\". The text for the inputbox to give the new page title.\n\nSee also:\n* {{msg-mw|Move-page-legend|legend for the form}}\n* {{msg-mw|Movearticle|label for old title}}\n* {{msg-mw|Movereason|label for textarea}}\n* {{msg-mw|Movetalk|label for checkbox}}\n* {{msg-mw|Move-leave-redirect|label for checkbox}}\n* {{msg-mw|Fix-double-redirects|label for checkbox}}\n* {{msg-mw|Move-subpages|label for checkbox}}\n* {{msg-mw|Move-talk-subpages|label for checkbox}}\n* {{msg-mw|Move-watch|label for checkbox}}",
        "move-watch": "The text of the checkbox to watch the pages you are moving from and to. If checked, both the destination page and the original page will be added to the watchlist, even if you decide not to leave a redirect behind.\n\nSee also:\n* {{msg-mw|Move-page-legend|legend for the form}}\n* {{msg-mw|Movearticle|label for old title}}\n* {{msg-mw|Newtitle|label for new title}}\n* {{msg-mw|Movereason|label for textarea}}\n* {{msg-mw|Movetalk|label for checkbox}}\n* {{msg-mw|Move-leave-redirect|label for checkbox}}\n* {{msg-mw|Fix-double-redirects|label for checkbox}}\n* {{msg-mw|Move-subpages|label for checkbox}}\n* {{msg-mw|Move-talk-subpages|label for checkbox}}",
        "movepagebtn": "Button label on the special 'Move page'.\n\n{{Identical|Move page}}",
        "movenosubpage": "See also:\n* {{msg-mw|movesubpage|section header}}\n* {{msg-mw|movenosubpage|without subpage}}\n* {{msg-mw|movesubpagetext|with subpages}}",
        "movereason": "Used in [[Special:MovePage]]. The text for the inputbox to give a reason for the page move.\n\nSee also:\n* {{msg-mw|Move-page-legend|legend for the form}}\n* {{msg-mw|Movearticle|label for old title}}\n* {{msg-mw|Newtitle|label for new title}}\n* {{msg-mw|Movetalk|label for checkbox}}\n* {{msg-mw|Move-leave-redirect|label for checkbox}}\n* {{msg-mw|Fix-double-redirects|label for checkbox}}\n* {{msg-mw|Move-subpages|label for checkbox}}\n* {{msg-mw|Move-talk-subpages|label for checkbox}}\n* {{msg-mw|Move-watch|label for checkbox}}\n{{Identical|Reason}}",
        "move-redirect-text": "{{ignored}}The text that's added to a redirected page when that redirect is created.",
+       "category-move-redirect-override": "{{ignored}}The text that's added to a redirected category page when that redirect is created.",
        "revertmove": "{{Identical|Revert}}",
        "delete_and_move": "Button text on the move page when the target page already exists.",
        "delete_and_move_text": "Used when moving a page, but the destination page already exists and needs deletion.\n\nThis message is to confirm that you really want to delete the page.\n\nParameters:\n* $1 - the destination page title\n\nSee also:\n* {{msg-mw|Delete and move confirm}}",
        "variantname-shi-tfng": "{{optional}}",
        "variantname-shi-latn": "{{optional}}",
        "variantname-shi": "{{optional}}",
+       "variantname-uz": "{{optional}}",
+       "variantname-uz-latn": "{{optional}}",
+       "variantname-uz-cyrl": "{{optional}}",
        "metadata": "The title of a section on an image description page, with information and data about the image. For example of message in use see [[commons:File:Titan-crystal_bar.JPG|Commons]].\n{{Identical|Metadata}}",
        "metadata-help": "This message is followed by a table with metadata.",
        "metadata-expand": "On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on this link, you can see more data and information. For the link to hide back the less important data, see {{msg-mw|Metadata-collapse}}.",
        "exif-gpsdifferential": "Label for EXIF information. Indicates whether differential correction is applied to the GPS receiver.",
        "exif-coordinate-format": "{{optional}}\nFor formatting GPS latitude coordinates. Parameters:\n* $1 - degrees\n* $2 - minutes\n* $3 - seconds (up to two decimal places)\n* $4 - direction (N, S, W, or E)\n* $5 - (Unused) coordinate as a single positive or negative real number",
        "exif-jpegfilecomment": "This is not a true exif tag, but the contents of the JPEG COM segment. This often contains a file source, but can potentially contain any comment about the file. This is similar to {{msg-mw|exif-usercomment}}, {{msg-mw|exif-pngfilecomment}}, and {{msg-mw|exif-giffilecomment}}.",
-       "exif-keywords": "List of keywords for the photograph (or other media).\n\nThis can come from IPTC-iim 2:25 keyword field, or XMP's dc:subject field.",
+       "exif-keywords": "List of keywords for the photograph (or other media).\n\nThis can come from IPTC-iim 2:25 keyword field, or XMP's dc:subject field.\n{{Identical|Keyword}}",
        "exif-worldregioncreated": "The world region (generally that means continent, but could also include 'World' as a whole) where the media was created.",
        "exif-countrycreated": "Country that the picture was taken in. Note this is where it was taken, not what country is depicted in the picture.",
        "exif-countrycodecreated": "ISO Code for the country that the picture was taken in. Note this is where it was taken, not what country is depicted in the picture.",
        "descending_abbrev": "Abbreviation of descending order.\nSee also:\n* {{msg-mw|Ascending abbrev}}\n* {{msg-mw|Descending abbrev}}",
        "table_pager_next": "Used as image button text of pager. See [[Support|example]] (the bottom of the page).\n{{Identical|Next page}}",
        "table_pager_prev": "Used as image button text of pager. See [[Support|example]] (the bottom of the page).\n{{Identical|Previous page}}",
-       "table_pager_first": "Used as image button text of pager. See [[Support|example]] (the bottom of the page).",
-       "table_pager_last": "Used as image button text of pager. See [[Support|example]] (the bottom of the page).",
+       "table_pager_first": "Used as image button text of pager. See [[Support|example]] (the bottom of the page).\n{{Identical|First page}}",
+       "table_pager_last": "Used as image button text of pager. See [[Support|example]] (the bottom of the page).\n{{Identical|Last page}}",
        "table_pager_limit": "Do not use PLURAL in this message, because ''$1'' is not the actual number. ''$1'' is a limit selector drop-down list.",
        "table_pager_limit_label": "Used as label for input field.",
        "table_pager_limit_submit": "{{Identical|Go}}",
index e9f9974..22ea287 100644 (file)
@@ -8,7 +8,8 @@
                        "Reedy",
                        "The Evil IP address",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Fitoschido"
                ]
        },
        "tog-underline": "T'inkikunata uranpi sikwiy",
        "pagemerge-logentry": "[[$1]]-ta [[$2]]-man huñusqa (llamk'apusqakuna $3-kama)",
        "revertmerge": "Huñusqata kutichiy",
        "mergelogpagetext": "Kay qatiqpiqa aswan ñaqha huk p'anqa wiñay kawsaymanta huk p'anqa wiñay kawsayman huñusqakunatam rikunki.",
-       "history-title": "\"$1\" p'anqata hukchasqakunap wiñay kawsaynin",
+       "history-title": "«$1» p’anqata hukchasqakunap wiñay kawsaynin",
        "difference-title": "$1 nisqapaq musuqchasqapura wakin kaynin",
        "difference-title-multipage": "$1, $2 sutiyuq willañiqipura wakin kaynin",
        "difference-multipage": "(P'anqakunaqa manam kaqllachu)",
        "newimages-summary": "Kay sapaq p'anqapiqa ñaqha churkusqa willañiqikunatam rikunki.",
        "newimages-legend": "Ch'illchina",
        "newimages-label": "Willañiqip sutin (icha sutinpa rakin):",
-       "showhidebots": "($1 rurana antacha)",
        "noimages": "Manam ima rikunallapas kanchu.",
        "ilsubmit": "Maskay",
        "bydate": "p'unchawkama",
index 103336c..b1b19df 100644 (file)
        "newimages-summary": "Questa pagina speziala mussa las davosas datotecas ch'èn vegnidas chargiadas si.",
        "newimages-legend": "Filter",
        "newimages-label": "Num da la datoteca (u ina part da quel):",
-       "showhidebots": "($1 bots)",
        "noimages": "Chattà naginas datotecas.",
        "ilsubmit": "Tschertgar",
        "bydate": "tenor data",
index 7c5bedb..98c3b7f 100644 (file)
        "pool-timeout": "Timpul alocat așteptării pentru blocare a expirat",
        "pool-queuefull": "Coada de așteptare este plină",
        "pool-errorunknown": "Eroare necunoscută",
+       "pool-servererror": "Serviciul de contorizare a rezervei nu este disponibil ($1).",
        "aboutsite": "Despre {{SITENAME}}",
        "aboutpage": "Project:Despre",
        "copyright": "Conținutul este disponibil sub $1, exceptând cazurile în care se specifică altfel.",
        "listgrouprights-namespaceprotection-namespace": "Spațiu de nume",
        "listgrouprights-namespaceprotection-restrictedto": "Drept(uri) care permit(e) utilizatorului modificări",
        "trackingcategories": "Categorii de urmărire",
-       "trackingcategories-summary": "Această pagină conține categorii de urmărire care sunt populate în mod automat de către software-ul MediaWiki. Numele acestora se pot schimba modificând mesajele de sistem relevante din spațiul de nume {{ns:8}}.",
+       "trackingcategories-summary": "Această pagină conține categorii de urmărire care sunt populate în mod automat de către software-ul MediaWiki. Numele acestora se poate schimba modificând mesajele de sistem relevante din spațiul de nume {{ns:8}}.",
        "trackingcategories-msg": "Categorie de urmărire",
        "trackingcategories-name": "Numele mesajului",
        "trackingcategories-desc": "Criteriile de includere în categorie",
        "noindex-category-desc": "Pagina conține cuvântul magic <code><nowiki>__NOINDEX__</nowiki></code> (aflându-se într-un spațiu de nume care permite acest marcaj) și, drept urmare, nu este indexată de roboți.",
        "index-category-desc": "Pagina conține cuvântul magic <code><nowiki>__INDEX__</nowiki></code> (aflându-se într-un spațiu de nume care permite acest marcaj) și, ca urmare, este indexată de roboți, deși în mod normal acest lucru nu s-ar fi întâmplat.",
        "post-expand-template-inclusion-category-desc": "După extinderea tuturor formatelor, dimensiunea paginii a depășit <code>$wgMaxArticleSize</code>, astfel că anumite formate nu au fost extinse.",
-       "post-expand-template-argument-category-desc": "După extinderea argumentului unui format (ceva plasat între acolade triple, precum <code>{{{Foo}}})</code>, pagina a depășit <code>$wgMaxArticleSize</code>.",
+       "post-expand-template-argument-category-desc": "După extinderea argumentului unui format (ceva plasat între acolade triple, precum <code>{{{Foo}}}</code>), pagina a depășit <code>$wgMaxArticleSize</code>.",
+       "expensive-parserfunction-category-desc": "Prea multe funcții costisitoare de analiză (precum <code>#ifexist</code>) incluse într-o pagină. Vedeți [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
        "broken-file-category-desc": "Categorie adăugată dacă pagina conține o legătură întreruptă către un fișier (o legătură folosită pentru încorporarea unui fișier atunci când fișierul nu există).",
        "hidden-category-category-desc": "Această categorie conține <code><nowiki>__HIDDENCAT__</nowiki></code>, ceea ce împiedică în mod implicit afișarea ei în zona cu legături către categorii din cadrul paginilor.",
        "trackingcategories-nodesc": "Nicio descriere disponibilă.",
        "newimages-summary": "Această pagină specială arată ultimele fișiere încărcate.",
        "newimages-legend": "Filtru",
        "newimages-label": "Numele fișierului (sau parte din el):",
-       "showhidebots": "($1 roboți)",
+       "newimages-showbots": "Arată încărcările roboților",
        "noimages": "Nimic de văzut.",
        "ilsubmit": "Caută",
        "bydate": "după dată",
index 7c191b2..dca8ad2 100644 (file)
        "newimages-summary": "Sta pàgena speciale face vedè l'urteme file carecate.",
        "newimages-legend": "Filtre",
        "newimages-label": "Nome d'u fail (o 'nu stuezze de jidde):",
-       "showhidebots": "($1 bot)",
        "noimages": "Non ge stè ninde da vedè.",
        "ilsubmit": "Cirche",
        "bydate": "pe date",
index 65b1021..f685a32 100644 (file)
        "newimages-summary": "На этой служебной странице показаны недавно загруженные файлы.",
        "newimages-legend": "Фильтр",
        "newimages-label": "Имя файла (или его часть):",
-       "showhidebots": "($1 ботов)",
+       "newimages-showbots": "Показать загрузки ботов",
        "noimages": "Изображения отсутствуют.",
        "ilsubmit": "Найти",
        "bydate": "по дате",
index 3ada920..4fdf3dc 100644 (file)
        "newimages-summary": "На тій шпеціалній сторінцї ся зображують остатнї наладованы файлы.",
        "newimages-legend": "Філтер",
        "newimages-label": "Назва файлу (або єй часть):",
-       "showhidebots": "($1 ботів)",
        "noimages": "Не є што зобразити.",
        "ilsubmit": "Глядати",
        "bydate": "за датумом",
index f5ac37c..c52f4df 100644 (file)
        "stub-threshold-disabled": "निष्क्रियः",
        "recentchangesdays": "नूतनपरिवर्तनेषु प्रदर्शनीयानि दिनानि :",
        "recentchangesdays-max": "$1 अधिकतम{{PLURAL:$1|दिनं|दिनानि}}",
-       "recentchangescount": "सम्पादन संख्यकानि व्यवस्थानुसारेण दृश्यतु:",
-       "prefs-help-recentchangescount": "अत्र सद्यः परिवर्तनानि, पुटेतिहासाः, प्रवेशाः च अन्तर्गताः ।",
-       "savedprefs": "आद्यताः संरक्षिताः ।",
-       "timezonelegend": "समय मण्डल:",
-       "localtime": "स्थानीय समय:",
-       "timezoneuseserverdefault": "विकिनिश्चितं ($1) उपयुज्यताम् ।",
-       "timezoneuseoffset": "अन्ये (समयान्तरं निर्दिशतु )",
-       "servertime": "वितारकसमयः ।",
-       "guesstimezone": "जालदर्शिकातः पूरयतु ।",
-       "timezoneregion-africa": "कालद्वीप",
+       "recentchangescount": "फलकेषु सामान्यतया यानि परिवर्तनानि अभवन्, तेषां सङ्ख्या :",
+       "prefs-help-recentchangescount": "अत्र नूतनपरिवर्तनानि, पृष्ठेतिहासः, संरक्षितावल्यश्च अन्तर्भवन्ति ।",
+       "prefs-help-watchlist-token2": "भवतः/भवत्याः अवेक्षणावल्याः वेब-करस्य (web feed) गुप्तकुञ्चिका अस्त्येषा । \nएषा कुञ्चिका यस्य पार्श्वे भविष्यति, सः तव अवेक्षणावलिं द्रष्टुं प्रभविष्यति । अतः एनां गुप्ततया स्थाप्यताम् ।\n[[Special:ResetTokens|गुप्तकुञ्चिकां परिवर्तयितुम् अत्र नुद्यताम् ।]]।",
+       "savedprefs": "भवतः/भवत्याः इष्टतमानि रक्षितानि ।",
+       "timezonelegend": "समयवलयः (time zone) :",
+       "localtime": "स्थानीयसमय:",
+       "timezoneuseserverdefault": "विकि-मूलविकल्पान् स्थापयन्तु ($1)",
+       "timezoneuseoffset": "अन्यम् (समयान्तरं निर्दिशतु )",
+       "servertime": "वितरकसमयः :",
+       "guesstimezone": "गवेक्षणे पूरयतु",
+       "timezoneregion-africa": "कालद्वीपः",
        "timezoneregion-america": "अमेरिका",
-       "timezoneregion-antarctica": "à¤\85à¤\82टार्कटिका",
+       "timezoneregion-antarctica": "à¤\85णà¥\8dटार्कटिका",
        "timezoneregion-arctic": "आर्कटिक",
-       "timezoneregion-asia": "जम्बुमहाद्वीप",
-       "timezoneregion-atlantic": "à¤\8fà¤\9fलाà¤\82à¤\9fिà¤\95 à¤®à¤¹à¤¾à¤¸à¤¾à¤\97र",
+       "timezoneregion-asia": "जम्बुमहाद्वीप",
+       "timezoneregion-atlantic": "à¤\8fà¤\9fलाणà¥\8dà¤\9fिà¤\95-महासाà¤\97रà¤\83",
        "timezoneregion-australia": "ऑस्ट्रेलिया",
        "timezoneregion-europe": "यूरोप",
-       "timezoneregion-indian": "हिà¤\82द à¤®à¤¹à¤¾à¤¸à¤¾à¤\97र",
-       "timezoneregion-pacific": "पà¥\8dरशाà¤\82त à¤®à¤¹à¤¾à¤¸à¤¾à¤\97र",
-       "allowemail": "à¤\85नà¥\8dयà¥\8bपयà¥\8bà¤\9cà¤\95ानाà¤\82 à¤µà¤¿à¤¦à¥\8dयà¥\81नà¥\8dमानसà¤\99à¥\8dà¤\95à¥\87तà¤\82 à¤¨à¤¿à¤·à¥\8dà¤\95ियà¤\82 à¤\95रà¥\8bतà¥\81 à¥¤",
-       "prefs-searchoptions": "à¤\85नà¥\8dवà¥\87षणविà¤\95लà¥\8dपाà¤\83",
-       "prefs-namespaces": "नामाà¤\95ाशà¤\83 :",
-       "defaultns": "अन्यथा एतेषु नामाकाशेषु अन्विषतु ",
-       "default": "यदभावà¥\87",
-       "prefs-files": "सञ्चिका",
-       "prefs-custom-css": "सि.à¤\8fसà¥\8d.à¤\8fसà¥\8d.रà¤\9aयतà¥\81 à¥¤",
-       "prefs-custom-js": "à¤\9cावालिपिà¤\82 à¤°à¤\9aयतà¥\81 à¥¤",
-       "prefs-common-css-js": "सरà¥\8dवावरणानाà¤\82 à¤\95à¥\83तà¥\87 à¤µà¤¿à¤­à¤\95à¥\8dत à¤¸à¤¿.à¤\8fसà¥\8d.à¤\8fसà¥\8d./ à¤\9cावालिपिà¤\83 à¥¤",
-       "prefs-reset-intro": "à¤\86दà¥\8dयतानाà¤\82 à¤ªà¥\81नरà¥\8dनिदà¥\87शारà¥\8dथमà¥\8d à¤\8fततà¥\8dपà¥\81à¤\9fमà¥\8d à¤\89पयà¥\8bà¤\95à¥\8dतà¥\81à¤\82 à¤¶à¤\95à¥\8bति à¥¤ à¤\8fततà¥\8d à¤\85à¤\95à¥\83तà¤\82 à¤¨ à¤­à¤µति ।",
-       "prefs-emailconfirm-label": "विदà¥\8dयà¥\81नà¥\8dमानसà¤\99à¥\8dà¤\95à¥\87तसà¥\8dय à¤¦à¥\83ढà¥\80à¤\95रणमà¥\8d à¥¤",
-       "youremail": "ई-पत्रसङ्केतः",
-       "username": "योजकनामन्:",
-       "uid": "प्रयोक्तृ-क्रमांकः :",
-       "prefs-memberingroups": "{{PLURAL:$1|समूहस्य|समूहानां}}  सदस्यः:",
-       "prefs-registration": "पà¤\82à¤\9cà¥\80à¤\95रण à¤\95ालà¤\83:",
-       "yourrealname": "वास्तविकनाम:",
-       "yourlanguage": "भाषा:",
-       "yourvariant": "भाषासामà¤\97à¥\8dरà¥\80णाà¤\82 à¤¸à¤\82सà¥\8dà¤\95रणमà¥\8d à¥¤",
+       "timezoneregion-indian": "हिनà¥\8dद-महासाà¤\97रà¤\83",
+       "timezoneregion-pacific": "पà¥\8dरशानà¥\8dत-महासाà¤\97रà¤\83",
+       "allowemail": "à¤\85नà¥\8dययà¥\8bà¤\9cà¤\95à¥\88à¤\83 à¤ªà¥\8dरà¥\87षितानि à¤\88-पतà¥\8dराणि à¤\85नà¥\81मतिà¤\82 à¤¦à¤¦à¤¾à¤¤à¥\81",
+       "prefs-searchoptions": "à¤\85नà¥\8dविषà¥\8dयतामà¥\8d",
+       "prefs-namespaces": "नामाà¤\95ाशाà¤\83",
+       "defaultns": "अन्यथा एतेषु नामाकाशेषु अन्विषतु :",
+       "default": "पà¥\82रà¥\8dवनिरà¥\8dदिषà¥\8dà¤\9fमà¥\8d",
+       "prefs-files": "सञ्चिका:",
+       "prefs-custom-css": "सà¥\8dवानà¥\81à¤\95à¥\81लसमà¥\8dपादितà¤\82 CSS",
+       "prefs-custom-js": "सà¥\8dवानà¥\81à¤\95à¥\81लसमà¥\8dपादितà¤\82 JavaScript",
+       "prefs-common-css-js": "सरà¥\8dवासाà¤\82 à¤¤à¥\8dवà¤\9aाà¤\82 (of skins) à¤\95à¥\83तà¥\87 CSS/JavaScript:",
+       "prefs-reset-intro": "भवानà¥\8d/भवतà¥\80 à¤\85सà¥\8dय à¤ªà¥\83षà¥\8dठसà¥\8dय à¤¸à¤¾à¤¹à¤¾à¤¯à¥\8dयà¥\87न à¤¸à¥\8dवसà¥\8dय à¤\87षà¥\8dà¤\9fतमविà¤\95लà¥\8dपानà¥\8d à¤®à¥\82लविà¤\95ि-विà¤\95लà¥\8dपसदà¥\83शà¤\82 à¤¸à¥\8dथापयितà¥\81à¤\82 (à¤\95रà¥\8dतà¥\81à¤\82) à¤¶à¤\95à¥\8dनà¥\8bति à¥¤\nपरनà¥\8dतà¥\81 à¤¤à¤¤à¤\83 à¤­à¤µà¤¾à¤¨à¥\8d/भवतà¥\80 à¤ªà¥\82रà¥\8dववतà¥\8d à¤¸à¥\8dथितिà¤\82 à¤ªà¥\8dरापà¥\8dतà¥\81à¤\82 à¤¨ à¤¶à¤\95à¥\8dषà¥\8dयति ।",
+       "prefs-emailconfirm-label": "à¤\88-पतà¥\8dरà¤\82 à¤¦à¥\83ढà¥\80à¤\95à¥\8dरियतामà¥\8d :",
+       "youremail": "ई-पत्रसङ्केतः :",
+       "username": "{{GENDER:$1|योजकनाम}} :",
+       "uid": "{{GENDER:$1|प्रयोकतृनाम}} :",
+       "prefs-memberingroups": "{{PLURAL:$1|समूहस्य|समूहानां}} {{GENDER:$2|सदस्यः/सदस्याः}} :",
+       "prefs-registration": "पà¤\9eà¥\8dà¤\9cà¥\80à¤\95रणसà¥\8dय à¤\95ालà¤\83 :",
+       "yourrealname": "वास्तविकनाम :",
+       "yourlanguage": "भाषा :",
+       "yourvariant": "भाषायाà¤\83 à¤¸à¤¾à¤®à¤\97à¥\8dरà¥\80वà¥\88विधà¥\8dयमà¥\8d :",
        "prefs-help-variant": " विक्यां प्रदर्शितुं भवति ।",
-       "yournick": "नà¥\82तनाà¤\83 à¤¹à¤¸à¥\8dताà¤\95à¥\8dषराà¤\83:",
-       "prefs-help-signature": "सà¤\82भाषणपà¥\83षà¥\8dठà¤\97ताà¤\83 à¤¸à¤\82वादाà¤\83 \"<nowiki>~~~~</nowiki>\" à¤\87ति à¤²à¤¿à¤\96ितà¥\8dवा à¤¹à¤¸à¥\8dताà¤\95à¥\8dषरà¥\8bपà¥\87ताà¤\83 à¤\95रà¥\8dतà¥\8dतवà¥\8dयाà¤\83। à¤\8fतानि à¤\9aिहà¥\8dनानि à¤ªà¥\83षà¥\8dठरà¤\95à¥\8dषणपशà¥\8dà¤\9aातà¥\8d à¤­à¤µà¤¤à¤\83 à¤¹à¤¸à¥\8dताà¤\95à¥\8dषरानà¥\8d à¤¸à¤®à¤¯à¤®à¥\81दà¥\8dराà¤\82 à¤\9a à¤ªà¥\8dरदरà¥\8dशयिषà¥\8dयनà¥\8dति।",
-       "badsig": "à¤\85मानà¥\8dयाà¤\83 (तà¥\8dरà¥\81à¤\9fिपà¥\82रà¥\8dणाà¤\83) à¤¹à¤¿ à¤\8fतà¥\87 à¤\85पà¤\95à¥\8dवाà¤\83 à¤¹à¤¸à¥\8dताà¤\95à¥\8dषराà¤\83।\nà¤\8fà¤\9aà¤\9fà¥\80à¤\8fमà¤\8fलà¥\8d-à¤\9fà¥\88à¤\97 à¤\87तà¥\8dयà¥\87तानि à¤ªà¥\81नरà¥\80à¤\95à¥\8dषितवà¥\8dयानि à¤­à¤µà¤¤à¤¾।",
-       "badsiglength": "भवतà¤\83 à¤¹à¤¸à¥\8dताà¤\95à¥\8dषराà¤\83 à¤¤à¥\81 à¤\85तà¥\80व à¤¦à¥\80रà¥\8dà¤\98ाà¤\83।\nà¤\8fतà¥\87 $1 {{PLURAL:$1|à¤\85à¤\95à¥\8dषरातà¥\8d|à¤\85à¤\95à¥\8dषरà¥\87भà¥\8dयà¤\83}} à¤¦à¥\80रà¥\8dà¤\98ाà¤\83 à¤¨ à¤­à¤µà¤¿à¤¤à¤µà¥\8dयाà¤\83।",
-       "yourgender": "लिà¤\82à¤\97मà¥\8d (Gender):",
-       "gender-unknown": "à¤\85निरà¥\8dदिषà¥\8dà¤\9fमà¥\8d",
-       "gender-male": "पà¥\81रà¥\81ष",
-       "gender-female": "सà¥\8dतà¥\8dरà¥\80",
-       "prefs-help-gender": "वà¥\88à¤\95लà¥\8dपिà¤\95à¤\83 : à¤\85यà¤\82 à¤¤à¤¨à¥\8dतà¥\8dराà¤\82शà¤\83 à¤²à¤¿à¤\99à¥\8dà¤\97ानà¥\81सारसमà¥\8dबà¥\8bधनसà¥\8dय à¤\89पयà¥\8bà¤\9cà¤\95à¤\83 ।",
-       "email": "विदà¥\8dयà¥\81तà¥\8dपतà¥\8dरवà¥\8dयवसà¥\8dथा",
+       "yournick": "नà¥\82तनहसà¥\8dताà¤\95à¥\8dषरमà¥\8d :",
+       "prefs-help-signature": "समà¥\8dभाषणपà¥\83षà¥\8dठà¥\87षà¥\81 à¤\9fिपà¥\8dपणà¥\80à¤\82 à¤²à¤¿à¤\96ितà¥\8dवा à¤\85नà¥\8dतà¥\87 \"<nowiki>~~~~</nowiki>\" à¤²à¤¿à¤\96तà¥\81 à¥¤ à¤\85नà¥\87न à¤¸à¥\8dवसà¥\8dय à¤¹à¤¸à¥\8dताà¤\95à¥\8dषरà¥\87ण à¤¸à¤¹ à¤\9fिपà¥\8dपणà¥\80लà¥\87à¤\96नà¤\95ालसà¥\8dयापि à¤\89लà¥\8dलà¥\87à¤\96à¤\83 à¤­à¤µà¤¿à¤·à¥\8dयति ।",
+       "badsig": "à¤\85यà¥\8bà¤\97à¥\8dयà¤\82 à¤ªà¥\8dरारà¥\82परहितà¤\82 (raw) à¤¹à¤¸à¥\8dताà¤\95à¥\8dषरमà¥\8d à¥¤\nHTML à¤\9aिहà¥\8dनà¤\82 à¤ªà¤¶à¥\8dयतà¥\81 ।",
+       "badsiglength": "हसà¥\8dताà¤\95à¥\8dषरà¤\82 à¤¬à¤¹à¥\81लमà¥\8dबमानमà¥\8d à¤\85सà¥\8dति à¥¤\nहसà¥\8dताà¤\95à¥\8dषरà¤\82 $1 {{PLURAL:$1|à¤\85à¤\95à¥\8dषरातà¥\8d|à¤\85à¤\95à¥\8dषरà¥\87भà¥\8dयà¤\83}} à¤¦à¥\80रà¥\8dà¤\98à¤\82 à¤¨ à¤­à¤µà¥\87तà¥\8d ।",
+       "yourgender": "सà¥\8dवपरिà¤\9aयà¤\82 à¤\95थà¤\82 à¤¦à¤¾à¤¤à¥\81मà¥\8d à¤\87à¤\9aà¥\8dà¤\9bति ?",
+       "gender-unknown": "सà¥\8dवपरिà¤\9aयà¤\82 à¤¦à¤¾à¤¤à¥\81à¤\82 à¤¨à¥\87à¤\9aà¥\8dà¤\9bामि",
+       "gender-male": "सà¤\83 à¤µà¤¿à¤\95ि-पà¥\83षà¥\8dठानि à¤¸à¤®à¥\8dपादयति",
+       "gender-female": "सा à¤µà¤¿à¤\95ि-पà¥\83षà¥\8dठानि à¤¸à¤®à¥\8dपादयति",
+       "prefs-help-gender": "à¤\8fततà¥\8d à¤µà¤¿à¤µà¤°à¤£à¤®à¥\8d à¤\90à¤\9aà¥\8dà¤\9bिà¤\95मà¥\8d à¤\85सà¥\8dति à¥¤ à¤\8fतसà¥\8dमिनà¥\8d à¤¤à¤¨à¥\8dतà¥\8dराà¤\82शà¥\87\nलिà¤\99à¥\8dà¤\97ाधारà¥\87ण à¤­à¤µà¤¤à¤\83/भवतà¥\8dयाà¤\83 à¤¸à¤®à¥\8dबà¥\8bधनारà¥\8dथमà¥\8d à¤\85सà¥\8dयà¥\8bपयà¥\8bà¤\97à¤\83 à¤­à¤µà¤¤à¤¿ à¥¤\nà¤\8fततà¥\8d à¤µà¤¿à¤µà¤°à¤£à¤\82 à¤¸à¤¾à¤°à¥\8dवà¤\9cनिà¤\95à¤\82 à¤­à¤µà¤¿à¤·à¥\8dयति ।",
+       "email": "à¤\88पतà¥\8dरमà¥\8d",
        "prefs-help-realname": "निजनामधेयस्य उल्लेखः आवश्यकः नास्ति । \nयदि ददाति तर्हि अस्य प्रयोगः भवतः योगदानार्थं भवते श्रेयं दातुम् उपयुक्तः भवति ।",
        "prefs-help-email": "ई-पत्रसङ्केतः अनिवार्यः नास्ति । किन्तु कूटशब्दः विस्मर्यते चेत् तस्य परिवर्तनाय आवश्यकः भवति ।",
        "prefs-help-email-others": "योजकपृष्ठ-सम्भाषणपृष्ठयोः माध्यमेन,  ई-पत्रमाध्यमेन वा अन्ये योजकाः भवतः/भवत्याः सम्पर्कं कर्तुं शक्नुयुः ।\nसम्पर्केऽस्मिन् भवतः/भवत्याः ई-पत्रसङ्केतम् अन्ययोजकाः ज्ञातुं न प्रभवतन्ति ।",
        "newimages-summary": "एतत् विशेषपुटम् सद्यः उत्तारितसञ्चिकाः दर्शयति ।",
        "newimages-legend": "शोधनी ।",
        "newimages-label": "सञ्चिकानाम (अथवा अस्य भागः)",
-       "showhidebots": "(स्वयं चालकः $1)",
        "noimages": "शून्यदर्शनम् ।",
        "ilsubmit": "अन्वेषणम्",
        "bydate": "दिनाङ्कानुगुणम्",
index c9a79b6..e7e9581 100644 (file)
                        "아라"
                ]
        },
-       "tog-underline": "ЫйÑ\8bннÑ\8cÑ\8bкÑ\82аÑ\80Ñ\8b аннынан тардыы:",
+       "tog-underline": "СигÑ\8dлÑ\8dÑ\80и аннынан тардыы:",
        "tog-hideminor": "Кыра көннөрүүлэри көрдөрбөккө",
        "tog-hidepatrolled": "Ботурууллааччы көрбүт көннөрүүтүн саҥа көннөрүүлэр тиһиктэригэр көрдөрүмэ",
        "tog-newpageshidepatrolled": "Ботуруулламмыт сирэйдэри саҥа сирэйдэр тиһиктэригэр көрдөрүмэ",
-       "tog-extendwatchlist": "Кэтээһин тупсарыллыбыт испииһэгэ. Бары уларытыылар көстөллөр (бүтэһиктэр эрэ буолбатах)",
+       "tog-extendwatchlist": "Кэтээһин тупсарыллыбыт тиһигэ. Бары уларытыылар көстөллөр (бүтэһиктэр эрэ буолбатах)",
        "tog-usenewrc": "Саҥа уларытыы уонна кэтэбил тиһиктэригэр уларыйыылары бөлөхтүүргэ",
-       "tog-numberheadings": "Ð\91аÑ\81 Ñ\82Ñ\8bллаÑ\80Ñ\8b нүөмэрдээ",
-       "tog-showtoolbar": "Көннөрүү үстүрүмүөннэрин көрдөр",
-       "tog-editondblclick": "ХоһÑ\83лаÑ\82ан Ð¸ÐºÐºÐ¸Ñ\82Ñ\8d Ð±Ð°Ñ\82Ñ\82аан Ñ\81иÑ\80Ñ\8dйи Ñ\83лаÑ\80Ñ\8bÑ\82Ñ\8bÑ\8b",
-       "tog-editsectiononrightclick": "СиÑ\8dкÑ\81ийÑ\8d Ð±Ð°Ò»Ñ\8bгаÑ\80 Ñ\83ҥа Ñ\82имÑ\8dÒ\95инÑ\8dн Ð±Ð°Ñ\82Ñ\82аан Ñ\81иÑ\8dкÑ\81ийÑ\8dни ÐºÓ©Ð½Ð½Ó©Ñ\80Ò¯Ò¯",
+       "tog-numberheadings": "ТүһүмÑ\8dÑ\85Ñ\82Ñ\8dÑ\80 Ð°Ð°Ñ\82Ñ\82аÑ\80Ñ\8bн нүөмэрдээ",
+       "tog-showtoolbar": "Көннөрүү хапталын көрдөр",
+       "tog-editondblclick": "Хоһулатан баттаан сирэйи уларытыы",
+       "tog-editsectiononrightclick": "ТүһүмÑ\8dÑ\85 Ð±Ð°Ò»Ñ\8bн Ñ\83ҥа Ñ\82имÑ\8dÒ\95инÑ\8dн Ð±Ð°Ñ\82Ñ\82аан Ñ\82үһүмÑ\8dÒ\95и Ñ\83лаÑ\80Ñ\8bÑ\82Ñ\8bÑ\8b",
        "tog-watchcreations": "Суруйбут ыстатыйаларбын уонна укпут билэлэрбин кэтээн көрүүгэ киллэрэн ис",
        "tog-watchdefault": "Уларыппыт сирэйдэрбин уонна билэлэрбин кэтээн көрүү тиһигэр киллэрэн ис",
-       "tog-watchmoves": "Аатын уларыппыт сирэйдэрбин уонна билэлэрбин кэтээн көрүү испииһэгэр киллэрэн ис",
+       "tog-watchmoves": "Аатын уларыппыт сирэйдэрбин уонна билэлэрбин кэтээн көрүү тиһигэр киллэрэн ис",
        "tog-watchdeletion": "Соппут сирэйдэрбин уонна билэлэрбин кэтээн көрүү тиһигэр киллэрэн ис",
        "tog-minordefault": "Уларытыылары атын этиллибэтэҕинэ кыра уларытыы курдук бэлиэтээ",
        "tog-previewontop": "Хайдах буоларын уларытар түннүк үрдүнэн (иннигэр) көрдөр",
        "tog-enotifminoredits": "Кыра да уларытыы киирдэҕинэ эл. почтанан биллэрээр",
        "tog-enotifrevealaddr": "Мин почтам аадырыһын биллэриилэргэ көрдөр",
        "tog-shownumberswatching": "Сирэйи кэтээн көрөр дьон ахсаанын көрдөр",
-       "tog-oldsig": "Ð\91ааÑ\80 илии баттааһын:",
-       "tog-fancysig": "Ð\91Ñ\8dйÑ\8d Ð¸Ð»Ð¸Ð¸ Ð±Ð°Ñ\82Ñ\82ааһÑ\8bна (Ñ\8bйÑ\8bннÑ\8cÑ\8bга суох)",
+       "tog-oldsig": "Ð\91илиҥҥи илии баттааһын:",
+       "tog-fancysig": "Ð\91Ñ\8dйÑ\8d Ð¸Ð»Ð¸Ð¸ Ð±Ð°Ñ\82Ñ\82ааһÑ\8bна (Ñ\81игÑ\8dÑ\82Ñ\8d суох)",
        "tog-uselivepreview": "Хайдах буолуохтааҕын тутатына эрдэ көрүү (тургутуу быһыытынан)",
        "tog-forceeditsummary": "Тугу уларыппытым туһунан суруйбатахпына сэрэт",
-       "tog-watchlisthideown": "Кэтээн көрүү испииһэгэр бэйэм уларытыыларбын көрдөрүмэ",
-       "tog-watchlisthidebots": "Кэтээн көрүү испииһэгэр робот уларытыытын көрдөрүмэ",
+       "tog-watchlisthideown": "Кэтээн көрүү тиһигэр бэйэм уларытыыларбын көрдөрүмэ",
+       "tog-watchlisthidebots": "Кэтээн көрүү тиһигэр робот уларытыытын көрдөрүмэ",
        "tog-watchlisthideminor": "Кыра уларытыылары кэтээмэ",
-       "tog-watchlisthideliu": "Бэлиэтэммит кыттааччылар уларытыыларын кэтиир испииһэккэ көрдөрүмэ",
+       "tog-watchlisthideliu": "Бэлиэтэммит кыттааччылар уларытыыларын кэтиир тиһиккэ көрдөрүмэ",
        "tog-watchlisthideanons": "Ааттарын эппэтэх кыттааччылар уларытыыларын кэтээһин испииһэгэр көрдөрүмэ",
        "tog-watchlisthidepatrolled": "Ботурууллааччы көрбүт көннөрүүтүн кэтээһин испииһэгэр көрдөрүмэ",
        "tog-ccmeonemails": "Атын кыттааччыларга суруйбут суруктарбын бэйэбэр эмиэ ыыт",
        "category-article-count": "{{PLURAL:$2|Бу категория манна эрэ көстүбүт субкатегориялаах.|$2 категорияттан {{PLURAL:$1|субкатегорията|$1 субкатегориялара}} көрдөрүлүннүлэр.}}",
        "category-article-count-limited": "Бу категорияҕа {{PLURAL:$1|1 эрэ сирэй|$1 сирэй}} баар.",
        "category-file-count": "{{PLURAL:$2|Бу категория манна эрэ көстүбүт билэлээх.|$2 категорияттан {{PLURAL:$1|билэтэ|$1 билэлэрэ}} көрдөрүлүннүлэр.}}",
-       "category-file-count-limited": "Бу категорияҕа  {{PLURAL:$1|биир билэ|$1 билэ}} баар.",
+       "category-file-count-limited": "Бу категорияҕа  {{PLURAL:$1|соҕотох билэ|$1 билэ}} баар.",
        "listingcontinuesabbrev": "(салгыыта)",
-       "index-category": "Индекстаммыт сирэйдэр",
+       "index-category": "Индекстэммит сирэйдэр",
        "noindex-category": "Индексктаммыт сирэйдэр суохтар",
        "broken-file-category": "Билэҕэ сигэлэрэ алҕастаах сирэйдэр",
        "about": "Бу туһунан",
        "talkpagelinktext": "Ырытыы",
        "specialpage": "Анал сирэй",
        "personaltools": "Тус бэйэ туттар туруоруулара",
-       "postcomment": "Саҥа Ñ\81алаа",
+       "postcomment": "Саҥа Ñ\82үһүмÑ\8dÑ\85",
        "articlepage": "Ыстатыйаны көр",
        "talk": "Ырытыы",
        "views": "Көрүүлэр",
        "badaccess": "Сатаан киирбэтэ",
        "badaccess-group0": "Эн бу дьайыыны оҥорор кыаҕыҥ суох.",
        "badaccess-groups": "Дьайыыны $1 {{PLURAL:$2|бөлөххө|бөлөхтөртөн биирдэстэригэр}} киирэр кыттааччыларылар эрэ оҥорор кыахтаахтар.",
-       "versionrequired": "MediaWiki $1 -Ñ\81 Ð±Ð¸Ñ\8dÑ\80Ñ\81ийÑ\8dÑ\82Ñ\8d Ð½Ð°Ð°Ð´Ð°",
+       "versionrequired": "MediaWiki $1 -Ñ\81 Ð±Ð°Ñ\80Ñ\8bла Ð¸Ñ\80дÑ\8dнÑ\8dÑ\80",
        "versionrequiredtext": "Бу сирэйи туттарга MediaWiki $1 -с барыла наада. [[Special:Version|Барыллар тустарынан сирэйи]] көр.",
        "ok": "Сөп",
        "retrievedfrom": "\"$1\" -н кэллэ",
        "newimages-summary": "Бу анал сирэй киллэриллибит билэлэр испииһэктэрин көрдөрөр.",
        "newimages-legend": "Фильтр",
        "newimages-label": "Билэ аата (эбэтэр сорҕото):",
-       "showhidebots": "($1 робот)",
        "noimages": "Ойуу суох.",
        "ilsubmit": "Көрдөт",
        "bydate": "айыллыбыт кэминэн",
index bcb9357..3cbd84d 100644 (file)
        "newimages-summary": "Sta pàggina spiciali ammustra li file caricati di cchiù picca tempu.",
        "newimages-legend": "Nomu file",
        "newimages-label": "Nomu file (o nu pezzu d'iddu):",
-       "showhidebots": "($1 li bot)",
        "noimages": "Nenti a vìdiri.",
        "ilsubmit": "Va' cerca",
        "bydate": "pi data",
index e550ff0..67d9eab 100644 (file)
        "show-big-image": "File d'orìgini",
        "newimages": "Galleria di li file nobi",
        "imagelisttext": "Inogghi una listha di '''$1''' {{PLURAL:$1|file|file}} ordhinaddi pa $2.",
-       "showhidebots": "($1 li bot)",
        "noimages": "Nò v'è nudda da vidé.",
        "ilsubmit": "Zercha",
        "bydate": "data",
index 3429490..c091cc0 100644 (file)
        "protectedpagetext": "Šėts poslapis īr ožrakints, saugont anū nū redagavėma.",
        "viewsourcetext": "Tomsta galėt veizietė ėr kopėjoutė poslapė kuoda:",
        "protectedinterface": "Šėtom poslapi īr pruogramėnės ironguos sasajuos teksts katros īr apsauguots, kū neprietelē anū nasogadėntu.",
-       "editinginterface": "'''Diemesė:''' Tamsta keitat poslapi, katros īr nauduojams programėnės irongas sōsajės tekstė. Pakeitėmā tamė poslapū tēpuogi pakeis nauduotuojė sōsajės ėšruoda ė kėtėims nauduotujams. Jēgo nuorėt pargoldītė, siūluom pasėnauduotė [//translatewiki.net/wiki/Main_Page?setlang=bat-smg „translatewiki.net“], „MediaWiki“ lokalėzacėjės pruojėktu.",
+       "editinginterface": "<strong>Diemesė:</strong> Tamsta keitat poslapi, katros īr nauduojams programėnės irongas sōsajės tekstė. Pakeitėmā tamė poslapū tēpuogi pakeis nauduotuojė sōsajės ėšruoda ė kėtėims nauduotujams. Jēgo nuorėt pargoldītė, siūluom pasėnauduotė [//translatewiki.net „translatewiki.net“], „MediaWiki“ lokalėzacėjės pruojėktu.",
        "namespaceprotected": "Tamsta netorėt teisiu keistė poslapiu '''$1''' srėtī.",
        "ns-specialprotected": "Specēlė̅ jė poslapē negal būtė keitamė.",
        "logouttext": "'''Daba Tamsta esat atsėjongės.'''\n\nGalat ė tuoliau nauduotė {{SITENAME}} anuonimėškā aba <span class='plainlinks'>[$1 prisėjonkat]</span> ėš naujė šėtuo patiu a kėto nauduotuojė vardu.\nPastebiejims: katruos nekatruos poslapiuos ė tuoliau gal ruodītė būktā būtomiet prisėjongės lėgė tuol, kumet ėšvalīsėt sava naršīklės dietovė (''cache'').",
        "recreate-moveddeleted-warn": "'''Parspiejėms: Tamsta ikeliat faila, katros onkstiau bova ėštrėnts.'''\n\nTamsta torietomiet nusprēstė, a īr naudėnga tuoliau ikeldinietė ta faila.\nTuo faila pašalinėma istuorėjė īr pateikta dielē patuogoma:",
        "moveddeleted-notice": "Tas poslapis bova ėštrėnts.\nĖštrėnta poslapė versėju sārašos īr pateikts paveiziejėmō žemiau.",
        "edit-conflict": "Redagavėma kuonflėktos",
-       "postedit-confirmation": "Tamstas padėrbts pakeitėms ėšsauguots īr.",
+       "postedit-confirmation-saved": "Tamstas padėrbts pakeitėms ėšsauguots īr.",
        "post-expand-template-inclusion-warning": "Perspiejėms: Šabluonu īterpėma dėdoms īr par dėdelis.\nKāp katrėi šabluonā nebus ītrauktė.",
        "post-expand-template-inclusion-category": "Poslapē, kur šabluonu īterpėma dėdoms viršėjams",
        "post-expand-template-argument-warning": "Perspiejėms: Tas poslapis tor nuors vėina šabluona argomenta, katros tor per dėdli ėšplietėma dėdoma.\nTė argomentā bova praleistė.",
        "blockip": "Ožblokoutė nauduotuoja",
        "blockip-legend": "Blokoutė nauduotuoja",
        "blockiptext": "Nauduokėt šėta fuorma noriedamė oždraustė redagavėma teises nuruodīto IP adreso a nauduotuojo. Tas torietu būt atlėikama tam, kū sostabdītomiet vandalėzma, ė vagol [[{{ns:project}}:Puolitėka|puolitėka]].\nŽemiau nuruodīkėt tėkslē prižastė.",
-       "ipadressorusername": "IP adresos a nauduotuojė vards",
+       "ipaddressorusername": "IP adresos a nauduotuojė vards",
        "ipbexpiry": "Galiuojėma čiesos",
        "ipbreason": "Prīžastis:",
        "ipbreason-dropdown": "*Dažniausės bluokavėma prižastīs\n** Melagėngas infuormacėjės rašīms\n** Torėnė trīnims ėš poslapiu\n** Spaminims\n** Zaunu/bikuo rašīms i poslapios\n** Gondinėmā/Pėktžuodiavėmā\n** Pėktnaudžiavėms paskėruomis\n** Netėnkams nauduotuojė vards",
        "newimages": "Naujausiu abruozdieliu galerėjė",
        "imagelisttext": "Žemiau īr '''$1''' failu sārašos, sorūšiouts $2.",
        "newimages-label": "Faila vards (ar anuo dalis):",
-       "showhidebots": "($1 robotos)",
        "ilsubmit": "Ėiškoutė",
        "bydate": "palē data",
        "sp-newimages-showfrom": "Ruodītė naujus abruozdielius pradedant nū $2, $1",
index 987badd..118f7cf 100644 (file)
        "newimages-summary": "Ova posebna stranica prikazuje posljednje postavljene datoteke.",
        "newimages-legend": "Filter",
        "newimages-label": "Ime datoteke (ili dio imena):",
-       "showhidebots": "($1 botove)",
        "noimages": "Ništa za prikazati.",
        "ilsubmit": "Traži / Тражи",
        "bydate": "po datumu",
index b251b5b..8c05695 100644 (file)
        "newimages-summary": "මෙම විශේෂ පිටුව, අවසානයට උඩුගත කෙරුණු ගොනු පෙන්වයි.",
        "newimages-legend": "පෙරහන",
        "newimages-label": "ගොනු නාමය (හෝ එයින් කොටසක්):",
-       "showhidebots": "(රොබෝ $1 දෙනෙක්)",
        "noimages": "පෙනෙන්නට කිසිවක් නොමැත.",
        "ilsubmit": "ගවේෂණය",
        "bydate": "දිනය මගිනි",
index d32938a..e278a4f 100644 (file)
        "newimages-summary": "Táto špeciálna stránka zobrazuje posledné nahrané súbory.",
        "newimages-legend": "Filter",
        "newimages-label": "Názov súboru (alebo jeho časť):",
-       "showhidebots": "($1 botov)",
        "noimages": "Niet čo zobraziť.",
        "ilsubmit": "Hľadať",
        "bydate": "podľa dátumu",
index 7dddd80..8c4d412 100644 (file)
        "newimages-summary": "Ta posebna stran prikazuje najnovejše naložene datoteke.",
        "newimages-legend": "Filter",
        "newimages-label": "Ime datoteke (ali njen del):",
-       "showhidebots": "($1 bote)",
+       "newimages-showbots": "Prikaži nalaganja botov",
        "noimages": "Nič ni videti.",
        "ilsubmit": "Išči",
        "bydate": "po datumu",
index aca2189..b6d76c1 100644 (file)
        "grouppage-sysop": "{{ns:project}}:Maamulada",
        "right-read": "Akhri maqaalada",
        "right-edit": "Wax ka bedel bogyaalo",
+       "right-createpage": "Samaynta bogag (taasoo aan lahayn bogag wadahadal)",
+       "right-createtalk": "Samaynta bogagga wadahadalka",
+       "right-createaccount": "Samaynta akoon isticmaale cusub",
        "right-move": "Wareeji maqaalada",
        "right-upload": "Soo geli fayl",
+       "right-writeapi": "Adeegsiga API ee qorista",
        "right-delete": "Tirtir maqaalada",
        "right-bigdelete": "Tirtir maqaalada taariikhda dheer leh",
        "right-browsearchive": "Raadi maqaalada la tirtiray",
        "right-undelete": "Ha tirtirin bog",
+       "right-editmyusercss": "Bedel galalka CSS ee isticmaalaha laftiisa",
+       "right-editmyuserjs": "Bedel galalka JavaScript ee isticmaalaha laftiisa",
+       "right-editmywatchlist": "Bedel liiska waardiyaha. Eeg qaybo ka mid ah dhaqdhaqaaqa in aan weli lagu kordhin haddi uusan jirin xitaa xaqaan.",
+       "right-editmyprivateinfo": "Bedel macluumaadka gaarka ah (sida. ciwaanka e-mail-ka , iyo magaca saxda ah)",
+       "right-editmyoptions": "Bedelka dooqyada",
        "newuserlogpage": "Gudagalaha Isticmaale sameeyay",
        "action-read": "akhri boggaan",
        "action-edit": "wax ka bedel boggaan",
        "action-createpage": "sameey bogyaalo",
+       "action-createtalk": "Samaynta bogagga wadahadalka",
        "action-upload": "soo geli file'kaan",
        "action-delete": "tirtir boggaan",
        "action-browsearchive": "Raadi maqaalada la tirtiray",
        "listusers-submit": "I'tus",
        "listusers-noresult": "Lama helin isticmaale.",
        "listusers-blocked": "(waa la mamnuucay)",
+       "listgrouprights": "Xuquuqaha koox isticmaalada",
+       "listgrouprights-summary": "Kani waa liiska koox isticmaale yaal ah ee la aqoonsaday wikigaan, in ay leeyihiin xuquuqdaan.\nWaxaa laga yaabaa in ay halkaan ku jiraan [[{{MediaWiki:Listgrouprights-helppage}}|macluumaad dheeraad ah]] ee ku saabsan xuquuqaha kala gadisan.",
+       "listgrouprights-key": "Ciwaanka:\n* <span class=\"listgrouprights-granted\">Xuquuq la siiyey</span>\n* <span class=\"listgrouprights-revoked\">Xuquuq laga qaaday</span>",
+       "listgrouprights-group": "Kooxda",
+       "listgrouprights-rights": "Xuquuqaha",
        "listgrouprights-members": "(Inta ka mid ah liiskooda)",
        "mailnologin": "Ma'jiro cinwaan wax lagu diro",
        "mailnologintext": "Waa in aad [[Special:UserLogin|gudaha ku jirtaa]]\nkuna haysatid E-boosto sax ah [[Special:Preferences|dooqyadaada]],\nsi aad ugu dirto E-boosto isticmaalayaasha kale.",
        "metadata-help": "Faylkaan wuxuu leeyahay  faah faahin dheeraad ah,waxaa laga yaabaa in lagu  isticmaalay digital kaamiro ama skanner oo lagu sameeyo sawir ama lagu digitilays gareeyay.\nHadii faylka wax laga badalay sida oo markiisa hore ahaa, waxaa laga yaabaa in ee  faah faahinta faylkaan eesan dhameestirneen.",
        "metadata-fields": "Sawirka qeybihiisa metadata oo ku tixan fariintaan waxaa lagu dari doonaa bogga sawirka meesha laga arko markii miiska metadata la qariyo.Kuwa kale waxaa loo qarinaa sida default.\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-iimcategory": "Qeybta",
+       "exif-dc-rights": "Xuquuqaha",
        "watchlistall2": "dhamaan",
        "namespacesall": "dhamaan",
        "monthsall": "Dhamaan",
        "fileduplicatesearch-legend": "Raadi mid tusaale ah",
        "fileduplicatesearch-submit": "Raadi",
        "specialpages": "bogagga khaaska ah",
+       "specialpages-note-top": "Furaha",
        "specialpages-group-pages": "liiska maqaalada",
        "blankpage": "Bog masaxan",
        "tag-filter": "[[Special:Tags|Filtaraha]] tag:",
index 505a1b1..ae8507d 100644 (file)
        "newimages-summary": "Kjo faqe speciale tregon skedat e ngarkuara së fundmi.",
        "newimages-legend": "Filtrues",
        "newimages-label": "Emri i skedës (ose një pjesë e tij):",
-       "showhidebots": "($1 robotët)",
        "noimages": "S'ka gjë për të parë.",
        "ilsubmit": "Kërko",
        "bydate": "datës",
index 9a91644..bca9286 100644 (file)
        "watchlistanontext": "Морате бити $1 да бисте гледали и уређивали ставке на вашем списку надгледања.",
        "watchnologin": "Нисте пријављени",
        "addwatch": "Додај на списак надгледања",
-       "addedwatchtext": "Страница „[[:$1]]“ је додата на ваш [[Special:Watchlist|списак надгледања]].\nБудуће измене ове странице и њене странице за разговор биће наведене овде.",
+       "addedwatchtext": "Страница „[[:$1]]“ је додата на ваш [[Special:Watchlist|списак надгледања]].\nБудуће измене ове странице и њене странице за разговор биће наведене тамо.",
        "removewatch": "Уклони са списка надгледања",
        "removedwatchtext": "Страница „[[:$1]]“ је уклоњена с вашег [[Special:Watchlist|списка надгледања]].",
        "watch": "Надгледај",
        "newimages-summary": "Ова посебна страница приказује последње послате датотеке.",
        "newimages-legend": "Филтер",
        "newimages-label": "Назив датотеке (или њен део):",
-       "showhidebots": "($1 ботове)",
        "noimages": "Нема ништа.",
        "ilsubmit": "Претражи",
        "bydate": "по датуму",
index cb42678..98fd6e9 100644 (file)
        "watchlistanontext": "Morate biti $1 da biste gledali i uređivali stavke na vašem spisku nadgledanja.",
        "watchnologin": "Niste prijavljeni",
        "addwatch": "Dodaj na spisak nadgledanja",
-       "addedwatchtext": "Stranica „[[:$1]]“ je dodata na vaš [[Special:Watchlist|spisak nadgledanja]].\nBuduće izmene ove stranice i njene stranice za razgovor biće navedene ovde.",
+       "addedwatchtext": "Stranica „[[:$1]]“ je dodata na vaš [[Special:Watchlist|spisak nadgledanja]].\nBuduće izmene ove stranice i njene stranice za razgovor biće navedene tamo.",
        "removewatch": "Ukloni sa spiska nadgledanja",
        "removedwatchtext": "Stranica „[[:$1]]“ je uklonjena s vašeg [[Special:Watchlist|spiska nadgledanja]].",
        "watch": "Nadgledaj",
        "newimages-summary": "Ova posebna stranica prikazuje poslednje poslate datoteke.",
        "newimages-legend": "Filter",
        "newimages-label": "Naziv datoteke (ili njen deo):",
-       "showhidebots": "($1 botove)",
        "noimages": "Nema ništa.",
        "ilsubmit": "Pretraži",
        "bydate": "po datumu",
index 37ed035..cedcb88 100644 (file)
        "newimages-summary": "Disse Spezioalsiede wiest do toulääst hoochleedene Doatäie an.",
        "newimages-legend": "Filter",
        "newimages-label": "Doatäinoome (of n Paat deerfon):",
-       "showhidebots": "(Bots $1)",
        "noimages": "neen Bielden fuunen.",
        "ilsubmit": "Säik",
        "bydate": "ätter Doatum",
index 265f54d..be38bf4 100644 (file)
        "imagelisttext": "Di handap ieu daptar '''$1''' {{PLURAL:$1|gambar|gambar}} nu disusun $2.",
        "newimages-summary": "Ieu kaca husus ngabéréndélkeun koropak nu alanyar dimuat.",
        "newimages-label": "Ngaran berkas (atawa sawaréh tina ngaranna):",
-       "showhidebots": "($1 bot)",
        "noimages": "Taya nanaon.",
        "ilsubmit": "Sungsi",
        "bydate": "dumasar titimangsa",
index e8c506a..5360a0f 100644 (file)
        "newimages-summary": "Den här specialsidan visar de senast uppladdade filerna.",
        "newimages-legend": "Filter",
        "newimages-label": "Filnamn (eller en del av det):",
-       "showhidebots": "($1 robotar)",
        "noimages": "Ingenting att se.",
        "ilsubmit": "Sök",
        "bydate": "efter datum",
index a32256e..bfcea2b 100644 (file)
        "newimages-summary": "Ukurasa maalum huu unaonyesha mafaili yaliyopakiwa hivi karibuni.",
        "newimages-legend": "Chuja",
        "newimages-label": "Jina la faili (au sehemu yake):",
-       "showhidebots": "(roboti $1)",
        "noimages": "Hakuna picha.",
        "ilsubmit": "Tafuta",
        "bydate": "kwa tarehe",
index 6edd8a0..64158b3 100644 (file)
        "newimages-summary": "Na tyj ekstra zajće prezyntowane sům uostatńo wćepńynte pliki.",
        "newimages-legend": "Filtruj",
        "newimages-label": "Mjano plika (abo jygo tajla):",
-       "showhidebots": "($1 boty)",
        "noimages": "Brak plikůw do pokozańo.",
        "ilsubmit": "Šnupej",
        "bydate": "wedle daty",
index 10d9de5..7117def 100644 (file)
        "newimages-summary": "இச்சிறப்புப் பக்கம் கடைசியாக பதிவேற்றப்பட்ட பக்கங்களைப் பட்டியலிடுகிறது.",
        "newimages-legend": "வடிகட்டி",
        "newimages-label": "கோப்பின் பெயர் (அல்லது அதன் பகுதி):",
-       "showhidebots": "(தானியங்கிகளை $1)",
        "noimages": "பார்வைக்கு ஓன்றுமில்லை.",
        "ilsubmit": "தேடுக",
        "bydate": "நாள் வழி",
index 0e1514c..3bce197 100644 (file)
        "newimages-summary": "ఇటీవలే ఎగుమతైన ఫైళ్ళను ఈ ప్రత్యేక పేజీ చూపిస్తుంది.",
        "newimages-legend": "పడపోత",
        "newimages-label": "ఫైలుపేరు (లేదా దానిలోని భాగం):",
-       "showhidebots": "($1 బాట్లు)",
        "noimages": "చూసేందుకు ఏమీ లేదు.",
        "ilsubmit": "వెతుకు",
        "bydate": "తేదీ వారీగ",
index ca201fb..1d84b32 100644 (file)
        "imagelisttext": "Дар зер феҳристи '''$1''' {{PLURAL:$1|парвандаи|парвандаҳои}} ба тартиб оварда шуда, омадааст $2.",
        "newimages-summary": "Ин саҳифаи вижа охирин парвандаҳои боршударо намоиш медиҳад.",
        "newimages-legend": "Филтр",
-       "showhidebots": "($1 ботҳо)",
        "noimages": "Чизе барои дидан нест.",
        "ilsubmit": "Ҷустуҷӯи",
        "bydate": "аз рӯи сана",
index 576bf6c..d32cf1b 100644 (file)
        "action-createpage": "สร้างหน้า",
        "action-createtalk": "สร้างหน้าอภิปราย",
        "action-createaccount": "สร้างบัญชีผู้ใช้นี้",
+       "action-history": "ดูประวัติของหน้านี้",
        "action-minoredit": "ทำเครื่องหมายการแก้ไขนี้เป็นการแก้ไขเล็กน้อย",
        "action-move": "ย้ายหน้านี้",
        "action-move-subpages": "ย้ายหน้านี้ รวมทั้งหน้าย่อย",
        "spam_reverting": "ย้อนกลับไปรุ่นก่อนหน้าที่ไม่มีลิงก์ไปยังเว็บ $1",
        "spam_blanking": "รุ่นการปรับปรุงทุกรุ่นประกอบไปด้วยลิงก์ไปยังเว็บ $1 (ทำหน้าว่าง)",
        "spam_deleting": "ทุกรุ่นที่มีลิงก์ไปยัง $1 กำลังลบ",
+       "simpleantispam-label": "การตรวจสอบสแปม\n<strong>อย่า</strong>กรอกช่องนี้!",
        "pageinfo-title": "ข้อมูลสำหรับ \"$1\"",
        "pageinfo-not-current": "ขออภัย ไม่สามารถให้ข้อมูลนี้สำหรับรุ่นเก่าได้",
        "pageinfo-header-basic": "ข้อมูลเบื้องต้น",
        "newimages-summary": "หน้าพิเศษนี้แสดงไฟล์ที่ถูกอัปโหลดล่าสุด",
        "newimages-legend": "ตัวกรอง",
        "newimages-label": "ชื่อไฟล์ (หรือส่วนหนึ่งของชื่อ):",
-       "showhidebots": "($1 บอต)",
+       "newimages-showbots": "แสดงไฟล์ที่บอตอัปโหลด",
        "noimages": "ไม่มีให้ดู",
        "ilsubmit": "สืบค้น",
        "bydate": "ตามวันที่",
index 769e2eb..9a27692 100644 (file)
        "newimages-summary": "Bu ýörite sahypa iň soňky ýüklenen faýllary görkezýär.",
        "newimages-legend": "Filtr",
        "newimages-label": "Faýlyň ady (ýa-da bir bölegi):",
-       "showhidebots": "(botlary $1)",
        "noimages": "Görmäge zat ýok.",
        "ilsubmit": "Gözle",
        "bydate": "sene boýunça",
index ed08be2..fce92b4 100644 (file)
        "newimages-summary": "Nagpapakita ang natatanging pahinang ito ng huling naikargang mga talaksan.",
        "newimages-legend": "Pansala",
        "newimages-label": "Pangalan ng talaksan (o bahagi nito):",
-       "showhidebots": "($1 mga ''bot'')",
        "noimages": "Walang makikita dito.",
        "ilsubmit": "Hanapin",
        "bydate": "ayon sa petsa",
index d6d5221..4bfb2d8 100644 (file)
        "newimages-summary": "Bu özel sayfa, en son yüklenen dosyaları göstermektedir.",
        "newimages-legend": "Filtre",
        "newimages-label": "Dosya adı (ya da bir parçası):",
-       "showhidebots": "(botları $1)",
        "noimages": "Görecek bir şey yok.",
        "ilsubmit": "Ara",
        "bydate": "kronolojik sırayla",
index e5c021e..3812afb 100644 (file)
        "show-big-image": "Тулы ачыклык",
        "newimages": "Яңа сүрәтләр җыелмасы",
        "newimages-legend": "Фильтр",
-       "showhidebots": "($1 бот)",
        "ilsubmit": "Эзләү",
        "bad_image_list": "Киләчәк рәвеш кирәк:\n\nИсемлек кисәкләре генә (* символыннан башланучы юллар) саналырлар.\nЮлның беренче сылтамасы куйма өчен тыелган рәсемгә сылтама булырга тиеш.\nШул ук юлның киләчәк сылтамалары чыгармалар, рәсемгә тыелмаган битләре, саналырлар.",
        "metadata": "Мета мәгълүматлар",
index 634117f..206af30 100644 (file)
        "show-big-image": "Tulı açıqlıq",
        "newimages": "Yaña sürätlär cıyılması",
        "newimages-legend": "Filtr",
-       "showhidebots": "($1 bot)",
        "ilsubmit": "Ezläw",
        "bydate": "waqıt buyınça",
        "bad_image_list": "Kiläçäk räweş kiräk:\n\nİsemlek kisäkläre genä (* simvolınnan başlanuçı yullar) sanalırlar.\nYulnıñ berençe sıltaması quyma öçen tıyılğan räsemgä sıltama bulırğa tieş.\nŞul uq yulnıñ kiläçäk sıltamaları çığarmalar, räsemgä tıyılmağan bitläre, sanalırlar.",
index d9277ce..2e329dc 100644 (file)
        "newimages-summary": "بۇ ئالاھىدە بەتتە ئەڭ ئاخىرىدا يۈكلەنگەن ھۆججەت كۆرسىتىلىدۇ.",
        "newimages-legend": "سۈزگۈچ",
        "newimages-label": "ھۆججەت ئاتى (ياكى ئۇنىڭ پارچىسى):",
-       "showhidebots": "($1 ماشىنا ئادەم)",
        "noimages": "كۆرۈدىغان ھېچنېمە يوق.",
        "ilsubmit": "ئىزدەش",
        "bydate": "چېسلا بويىچە",
index 83d42e1..10b7901 100644 (file)
        "newimages-summary": "Ця спеціальна сторінка показує останні завантажені файли.",
        "newimages-legend": "Фільтр",
        "newimages-label": "Назва файлу (або її частина):",
-       "showhidebots": "($1 ботів)",
        "noimages": "Файли відсутні.",
        "ilsubmit": "Шукати",
        "bydate": "за датою",
index 903e062..6ae2b30 100644 (file)
        "show-big-image": "Toʻliq hajmdagi tasvir",
        "noimages": "Tasvir mavjud emas.",
        "ilsubmit": "Qidirish",
+       "variantname-uz-latn": "lotincha",
+       "variantname-uz-cyrl": "кириллча",
        "metadata": "Metama’lumot",
        "metadata-expand": "Batafsil axborotni koʻrsatish",
        "metadata-collapse": "Batafsil axborotni yashirish",
index cb6915b..23d8abd 100644 (file)
        "newimages-summary": "Sta pagina speciale la mostra i file cargà piassè reçentemente.",
        "newimages-legend": "Filtro",
        "newimages-label": "Nome del file (o na parte de élo):",
-       "showhidebots": "($1 i bot)",
        "noimages": "No ghè gnente da vardare.",
        "ilsubmit": "Serca",
        "bydate": "data",
index 18bcc82..dcb3994 100644 (file)
        "newimages-summary": "Necil specialižel lehtpolel ozutadas tantoi jügutoittud failoid.",
        "newimages-legend": "Fil'tr",
        "newimages-label": "Failan nimi (vai sen pala):",
-       "showhidebots": "($1 botad)",
        "noimages": "Ei ole uzid kuvid.",
        "ilsubmit": "Ectä",
        "bydate": "datan mödhe",
index 5a77e86..f793264 100644 (file)
        "newimages-summary": "Trang đặc biệt này hiển thị các tập tin được tải lên gần đây nhất.",
        "newimages-legend": "Bộ lọc",
        "newimages-label": "Tên tập tin (hoặc một phần tên):",
-       "showhidebots": "($1 robot)",
        "noimages": "Chưa có hình.",
        "ilsubmit": "Tìm kiếm",
        "bydate": "theo ngày",
index 2bd297c..ecc53f1 100644 (file)
        "newimages-summary": "Pad patik at lisedon ragivis pelöpüköl lätik.",
        "newimages-legend": "Sul",
        "newimages-label": "Ragivanem (u dil ona):",
-       "showhidebots": "($1 mäikamenis)",
        "noimages": "Nos ad logön.",
        "ilsubmit": "Sukolöd",
        "bydate": "ma dät",
index 005f970..19909f8 100644 (file)
        "show-big-image": "Algteedüstü",
        "newimages": "Vahtsõq pildiq",
        "imagelisttext": "Pilte nimekirän $1 (sordiduq $2).",
-       "showhidebots": "($1 robodiq)",
        "noimages": "Olõ-i vahtsit pilte.",
        "ilsubmit": "Otsminõ",
        "bydate": "kuupäävä perrä",
index 6615cd8..13ea5e4 100644 (file)
        "show-big-image": "Imådje a si grandeur d' oridjinne",
        "newimages": "Galreye des nouvès imådjes",
        "imagelisttext": "Chal pa dzo c' est ene djivêye di '''$1''' {{PLURAL:$1|imådje relîte|imådjes relîtes}} $2.",
-       "showhidebots": "($1 robots)",
        "noimages": "I n' a rén a vey.",
        "ilsubmit": "Cweri",
        "bydate": "pazès dates",
index f76364d..d33aa0d 100644 (file)
        "newimages-summary": "דער באַזונדערער בלאַט ווײַזט די לעצטע ארויפֿגעלאָדענע טעקעס.",
        "newimages-legend": "פֿילטער",
        "newimages-label": "טעקע נאָמען (אדער אַ טײל דערפֿון):",
-       "showhidebots": "($1 ראָבאָטן)",
        "noimages": "נישטא קיין בילדער.",
        "ilsubmit": "זוכן",
        "bydate": "לויטן דאטום",
index 7cfd361..5be55de 100644 (file)
        "newimages-summary": "Ojúewé pàtàkì yìí ṣe àfihàn àwọn fáìlì ìrùsókè gbẹ̀yìn.",
        "newimages-legend": "Ajọ̀",
        "newimages-label": "Orúkọ faili (tàbí apá kan rẹ̀):",
-       "showhidebots": "(àwọn bot $1)",
        "noimages": "Kò sí àwòrán.",
        "ilsubmit": "Ṣàwárí",
        "bydate": "bíi ọjọ́ọdún",
index 9fa042b..4c37bd6 100644 (file)
        "newimages-summary": "呢個特別頁顯示最後上載咗嘅檔案。",
        "newimages-legend": "過濾",
        "newimages-label": "檔名(或佢嘅一部份):",
-       "showhidebots": "($1 機械人)",
        "noimages": "冇嘢去睇。",
        "ilsubmit": "搵嘢",
        "bydate": "以時間",
index f5dc04d..ddbdbb6 100644 (file)
        "newimages-summary": "本特殊页面展示最后上传的文件。",
        "newimages-legend": "过滤",
        "newimages-label": "文件名(或它的一部份):",
-       "showhidebots": "($1机器人)",
+       "newimages-showbots": "显示机器人上传",
        "noimages": "无可查看文件。",
        "ilsubmit": "搜索",
        "bydate": "按日期",
index 89ad75c..62f58b2 100644 (file)
        "parser-unstrip-loop-warning": "檢測到迴圈",
        "parser-unstrip-recursion-limit": "遞歸超過限制 ($1)",
        "converter-manual-rule-error": "手動語言轉換規則中檢測到錯誤",
-       "undo-success": "該編輯可以被撤銷。請檢查以下對比以核實這正是您想做的,然後儲存以下更改以完成撤銷編輯。",
-       "undo-failure": "由於中途的編輯不一致,此編輯不能撤銷。",
+       "undo-success": "此編輯可以被還原。\n請檢查以下比較表,確認您是否要還原,然後儲存以下變更以完成編輯還原。",
+       "undo-failure": "由於編輯的修訂間有衝突,此編輯不能還原。",
        "undo-norev": "由於其修訂版本不存在或已刪除,此編輯不能撤銷。",
-       "undo-nochange": "æ\98¯æ¬¡ç·¨è¼¯ä¼¼ä¹\8eå·²ç¶\93被æ\92¤é\8a·。",
+       "undo-nochange": "此編輯å\8f¯è\83½å·²è¢«é\82\84å\8e\9f。",
        "undo-summary": "取消由 [[Special:Contributions/$2|$2]] ([[User talk:$2|對話]]) 所作出的修訂 $1",
        "undo-summary-username-hidden": "還原隱藏使用者的修訂 $1",
        "cantcreateaccounttitle": "無法建立帳號",
        "lineno": "行 $1:",
        "compareselectedversions": "比較已選擇的修訂",
        "showhideselectedversions": "顯示/隱藏已選擇的修訂",
-       "editundo": "原",
+       "editundo": "原",
        "diff-empty": "(無差異)",
        "diff-multi-sameuser": "(未顯示相同使用者於中間所作的 $1 次修訂)",
        "diff-multi-otherusers": "(未顯示由 $2 位使用者於中間所作的 $1 次修訂)",
        "prefs-rc": "最近變更",
        "prefs-watchlist": "監視列表",
        "prefs-watchlist-days": "監視列表中顯示的天數:",
-       "prefs-watchlist-days-max": "最多$1{{PLURAL:$1|天}}",
-       "prefs-watchlist-edits": "擴充監視列表中顯示變更次數的上限:",
+       "prefs-watchlist-days-max": "最多 $1 {{PLURAL:$1|天}}",
+       "prefs-watchlist-edits": "展開的監視列表中顯示變更次數上限:",
        "prefs-watchlist-edits-max": "最大數量:1000",
        "prefs-watchlist-token": "監視列表密鑰:",
        "prefs-misc": "雜項",
        "editinguser": "變更使用者 '''[[User:$1|$1]]''' 的使用者權限 $2",
        "userrights-editusergroup": "編輯使用者群組",
        "saveusergroups": "儲存使用者群組",
-       "userrights-groupsmember": "屬於:",
-       "userrights-groupsmember-auto": "固有屬於:",
-       "userrights-groups-help": "您可以更改此使用者所屬的群組:\n* 已勾選的核選方塊代表該使用者屬於該群組。\n* 勾選的核選方塊代表該使用者不屬於該群組。\n* 有 * 號標示代表一旦加入該群組後便不能移除,反之亦然。",
+       "userrights-groupsmember": "所屬群組:",
+       "userrights-groupsmember-auto": "所屬隱含群組:",
+       "userrights-groups-help": "您可以更改此使用者所屬的群組:\n* 已勾選的核選方塊代表該使用者屬於該群組。\n* 勾選的核選方塊代表該使用者不屬於該群組。\n* 有 * 號標示代表一旦加入該群組後便不能移除,反之亦然。",
        "userrights-reason": "原因:",
        "userrights-no-interwiki": "您沒有權限去編輯其它使用者在 Wiki 上的權限。",
        "userrights-nodatabase": "資料庫$1不存在或並非為本地的。",
        "userrights-nologin": "您必須 [[Special:UserLogin|登入]] 管理員帳號以指定使用者權限。",
        "userrights-notallowed": "你無權加入或刪除使用者權限。",
-       "userrights-changeable-col": "您可以更改的群組",
-       "userrights-unchangeable-col": "您不可以更改的群組",
+       "userrights-changeable-col": "您可變更的群組",
+       "userrights-unchangeable-col": "您不可變更的群組",
        "userrights-conflict": "使用者權限更改發生衝突!請重新檢視並確認你的更改。",
        "userrights-removed-self": "您已成功移除自己的權限,故此您沒法再次訪問此頁。",
        "group": "群組:",
        "right-createpage": "建立頁面 (不含討論頁面)",
        "right-createtalk": "建立討論頁面",
        "right-createaccount": "建立新的使用者帳號",
-       "right-minoredit": "標示編輯為小修訂",
+       "right-minoredit": "標示編輯為小修訂",
        "right-move": "移動頁面",
        "right-move-subpages": "移動頁面與其子頁面",
        "right-move-rootuserpages": "移動根使用者頁面",
        "right-reupload-own": "覆蓋由同一位上載的檔案",
        "right-reupload-shared": "於本地無視共用媒體檔案庫上的檔案",
        "right-upload_by_url": "由一個URL上載檔案",
-       "right-purge": "不需要確認之下清除網站快取",
-       "right-autoconfirmed": "不受基於IP的頻率限制",
+       "right-purge": "不確認清除網站快取",
+       "right-autoconfirmed": "不受以 IP 為基礎的註冊頻率限制",
        "right-bot": "視為一個自動程序",
        "right-nominornewtalk": "若討論頁面為小修訂,則不顯示新訊息提示",
-       "right-apihighlimits": "在API查詢中使用更高的上限",
-       "right-writeapi": "使用API編寫",
+       "right-apihighlimits": "API 查詢中可使用較高上限值",
+       "right-writeapi": "使用寫入 API",
        "right-delete": "刪除頁面",
        "right-bigdelete": "刪除大量歷史之頁面",
        "right-deletelogentry": "刪除及恢復特定的日誌項目",
        "right-protect": "更改保護等級以及編輯被連鎖保護的頁面",
        "right-editprotected": "編輯保護層級為「{{int:protect-level-sysop}}」的頁面",
        "right-editsemiprotected": "編輯保護層級為「{{int:protect-level-autoconfirmed}}」的頁面",
-       "right-editinterface": "編輯使用者面",
+       "right-editinterface": "編輯使用者面",
        "right-editusercssjs": "編輯其他使用者的 CSS 和 JavaScript 檔案",
        "right-editusercss": "編輯其他使用者的 CSS 檔案",
        "right-edituserjs": "編輯其他使用者的 JavaScript 檔案",
        "listduplicatedfiles-summary": "以下列表中某檔案之最新版本與其他檔案之最新版本重複。進包含本地檔案",
        "listduplicatedfiles-entry": "檔案[[:File:$1|$1]]與[[$3|其他$2個重複]]。",
        "unusedtemplates": "未使用的樣版",
-       "unusedtemplatestext": "此頁列出所有於 {{ns:template}} 命名空間下未被其他頁面引用的頁面。\n請在刪除這些樣版前檢查其他使用該樣版的頁面。",
+       "unusedtemplatestext": "此頁面列出所有於 {{ns:template}} 命名空間下未被其他頁面引用的樣版。\n在刪除前,仍需檢查是否有連結這些樣版的其他頁面。",
        "unusedtemplateswlh": "其他連結",
        "randompage": "隨機頁面",
        "randompage-nopages": "在{{PLURAL:$2|命名空間}}中沒有任何頁面:$1。",
        "statistics-views-total-desc": "不存在頁面和特殊頁面的查看數未計入",
        "statistics-views-peredit": "每次編輯檢視數",
        "statistics-users": "已註冊的 [[Special:ListUsers|使用者]]",
-       "statistics-users-active": "活使用者",
+       "statistics-users-active": "活使用者",
        "statistics-users-active-desc": "在最近 $1 天操作過的使用者",
        "statistics-mostpopular": "被查閱次數最多的頁面",
        "pageswithprop": "擁有屬性的頁面",
        "brokenredirects-edit": "編輯",
        "brokenredirects-delete": "刪除",
        "withoutinterwiki": "未有語言連結的頁面",
-       "withoutinterwiki-summary": "以ä¸\8bç\9a\84é \81é\9d¢æ\98¯æ\9cªæ\9c\89èª\9eè¨\80é\80£çµ\90å\88°å\85¶å®\83èª\9eè¨\80ç\89\88æ\9c¬。",
+       "withoutinterwiki-summary": "ä¸\8bå\88\97æ\98¯æ²\92æ\9c\89é\80£çµ\90å\88°å\85¶å®\83èª\9eè¨\80ç\89\88æ\9c¬ç\9a\84é \81é\9d¢。",
        "withoutinterwiki-legend": "字首",
        "withoutinterwiki-submit": "顯示",
        "fewestrevisions": "最少修訂的頁面",
        "protectedtitlesempty": "在這些參數之下並無標題正在保護。",
        "listusers": "使用者清單",
        "listusers-editsonly": "只顯示有編輯的使用者",
-       "listusers-creationsort": "建立日期排序",
+       "listusers-creationsort": "建立日期排序",
        "listusers-desc": "使用降冪排序",
        "usereditcount": "$1 次{{PLURAL:$1|編輯}}",
        "usercreated": "於 $1 $2 {{GENDER:$3|建立}}",
        "ancientpages": "最舊頁面",
        "move": "移動",
        "movethispage": "移動本頁",
-       "unusedimagestext": "下列檔案未有嵌入任何頁面但它仍然存在。\n請注意其它網站可能直接透過 URL 連結此檔案,所以這裡列出的圖片有可能依然被使用。",
-       "unusedcategoriestext": "é\9b\96ç\84¶æ²\92æ\9c\89被å\85¶å®\83é \81é\9d¢æ\88\96è\80\85å\88\86é¡\9eæ\89\80æ\8e¡ç\94¨ï¼\8cä½\86å\88\97表中ç\9a\84å\88\86é¡\9eé \81ä¾\9dç\84¶å­\98å\9c¨ã\80\82",
+       "unusedimagestext": "下列為未被任何頁面使用的檔案。\n請注意,其它網站可能直接透過 URL 連結至檔案,所以這裡列出的檔案仍有可能被使用。",
+       "unusedcategoriestext": "ä¸\8bå\88\97å\88\86é¡\9eæ²\92æ\9c\89被å\85¶å®\83é \81é\9d¢æ\88\96è\80\85å\88\86é¡\9eæ\89\80使ç\94¨ã\80\82",
        "notargettitle": "無目標",
        "notargettext": "您尚未指定目標頁面或使用者以進行此項操作。",
        "nopagetitle": "無目標頁面",
        "pager-older-n": "較舊 $1 筆",
        "suppress": "監督",
        "querypage-disabled": "此特殊頁面基於效能的原因已經被停用。",
-       "booksources": "網路書源",
-       "booksources-search-legend": "尋找網路書源",
+       "booksources": "圖書資源",
+       "booksources-search-legend": "尋找圖書資源",
        "booksources-isbn": "國際標準書號:",
        "booksources-go": "送出",
        "booksources-text": "以下是一份銷售新書或二手書的列表,並可能有{{GENDER:|你|妳|你}}正尋找的書的進一步訊息:",
        "cachedspecial-viewing-cached-ts": "您正在閱讀此頁的緩存版本,這可能不是完整的版本。",
        "cachedspecial-refresh-now": "查看最新。",
        "categories": "頁面分類",
-       "categoriespagetext": "以ä¸\8bç\9a\84{{PLURAL:$1|å\88\86é¡\9e}}中å\8c\85å\90«äº\86é \81é\9d¢æ\88\96åª\92é«\94ã\80\82\n[[Special:UnusedCategories|æ\9cªç\94¨å\88\86é¡\9e]]ä¸\8dæ\9c\83å\9c¨é\80\99è£\8få\88\97示ã\80\82\nè«\8bå\90\8cæ\99\82å\8f\83é\96±[[Special:WantedCategories|需要的分類]]。",
+       "categoriespagetext": "ä¸\8bå\88\97ç\82ºå\8c\85å\90«é \81é\9d¢æ\88\96åª\92é«\94ç\9a\84{{PLURAL:$1|å\88\86é¡\9e}}ã\80\82\n[[Special:UnusedCategories|æ\9cªä½¿ç\94¨ç\9a\84å\88\86é¡\9e]] ä¸\8dæ\9c\83å\9c¨æ­¤é¡¯ç¤ºã\80\82\nè«\8bå\8f\83è\80\83 [[Special:WantedCategories|需要的分類]]。",
        "categoriesfrom": "顯示由此項起之分類:",
        "special-categories-sort-count": "按數量排列",
        "special-categories-sort-abc": "按字母排列",
        "listusers-submit": "顯示",
        "listusers-noresult": "查無使用者。",
        "listusers-blocked": "(已封鎖)",
-       "activeusers": "æ\9c\89æ´»å\8b\95ç\9a\84使ç\94¨è\80\85æ¸\85å\96®",
+       "activeusers": "活動的使用者清單",
        "activeusers-intro": "此清單為最近 $1 天有活動的使用者。",
-       "activeusers-count": "最近$3天內有$1次編輯",
+       "activeusers-count": "最近 $3 天內有 $1 次動作",
        "activeusers-from": "顯示使用者開始自:",
        "activeusers-hidebots": "隱藏機器人",
        "activeusers-hidesysops": "隱藏管理員",
        "activeusers-noresult": "查無使用者。",
        "listgrouprights": "使用者群組權限",
        "listgrouprights-summary": "以下為此 Wiki 的使用者群組清單,以及相關的存取權限。\n您可以在 [[{{MediaWiki:Listgrouprights-helppage}}|詳細資訊]] 找到有關個別權限的資訊。",
-       "listgrouprights-key": "* <span class=\"listgrouprights-granted\">已授予的權限</span>\n* <span class=\"listgrouprights-revoked\">被吊銷的權限</span>",
+       "listgrouprights-key": "說明:\n* <span class=\"listgrouprights-granted\">已授予的權限</span>\n* <span class=\"listgrouprights-revoked\">已撤銷的權限</span>",
        "listgrouprights-group": "群組",
        "listgrouprights-rights": "權限",
        "listgrouprights-helppage": "Help:群組權限",
        "unblocklink": "解除封鎖",
        "change-blocklink": "變更封鎖",
        "contribslink": "貢獻",
-       "emaillink": "傳送電郵",
+       "emaillink": "發送電子郵件",
        "autoblocker": "您的 IP 位址因最近被 [[User:$1|$1]] 使用過而被自動封鎖。\n封鎖 $1 的原因為 \"$2\"",
        "blocklogpage": "查封日誌",
        "blocklog-showlog": "此使用者先前被封鎖過。\n以下為封鎖紀錄以供參考:",
        "tooltip-recreate": "重建該頁面,無論是否被刪除。",
        "tooltip-upload": "開始上傳",
        "tooltip-rollback": "點選 \"還原\" 還原至上位貢獻者對此頁面的編輯",
-       "tooltip-undo": "「復原」可以在編輯模式上開啟編輯表格以便恢復。它容許在摘要中加入原因。",
+       "tooltip-undo": "\"還原\" 可還原此編輯並以預覽模式開啟編輯表單,讓您可在摘要中加入原因。",
        "tooltip-preferences-save": "儲存偏好設定",
        "tooltip-summary": "輸入一個簡短的摘要",
        "interlanguage-link-title": "$1 – $2",
        "filedelete-old-unregistered": "所指定的檔案修訂「$1」在資料庫中不存在。",
        "filedelete-current-unregistered": "所指定的檔案「$1」在資料庫中不存在。",
        "filedelete-archive-read-only": "存檔目錄「$1」在網頁伺服器中不可寫。",
-       "previousdiff": "←上一版本",
-       "nextdiff": "下一版本→",
+       "previousdiff": "← 較舊編輯",
+       "nextdiff": "較新編輯 →",
        "mediawarning": "<strong>警告</strong>:此檔案類型可能包含惡意代碼。\n若執行可能對您的系統造成損害。",
        "imagemaxsize": "圖片大小限制:<br /><em>(用於檔案描述頁面)</em>",
        "thumbsize": "縮圖大小:",
        "newimages-summary": "此特殊頁面中顯示最新上傳的檔案。",
        "newimages-legend": "搜尋",
        "newimages-label": "檔案名稱 (或部份):",
-       "showhidebots": "($1 機器人)",
+       "newimages-showbots": "顯示機械人上載",
        "noimages": "無可檢視圖片。",
        "ilsubmit": "搜尋",
        "bydate": "按日期",
        "comma-separator": "、",
        "colon-separator": ":",
        "word-separator": "",
-       "parentheses": "($1)",
+       "parentheses": " ($1)",
        "quotation-marks": "「$1」",
        "imgmultipageprev": "← 上一頁",
        "imgmultipagenext": "下一頁 →",
        "table_pager_first": "第一頁",
        "table_pager_last": "最末頁",
        "table_pager_limit": "每頁顯示 $1 筆記錄",
-       "table_pager_limit_label": "每頁項目數︰",
+       "table_pager_limit_label": "每頁數︰",
        "table_pager_limit_submit": "送出",
        "table_pager_empty": "沒有結果",
        "autosumm-blank": "清空頁面",
        "unknown_extension_tag": "不明的擴展標籤「$1」",
        "duplicate-defaultsort": "警告: 預設的排序鍵「$2」覆蓋先前的預設排序鍵「$1」。",
        "version": "版本",
-       "version-extensions": "已經安裝的擴展",
+       "version-extensions": "已安裝的擴充套件",
        "version-specialpages": "特殊頁面",
-       "version-parserhooks": "èª\9eæ³\95é\88\8e",
+       "version-parserhooks": "èª\9eæ³\95é\80£çµ\90(Hook)",
        "version-variables": "變數",
-       "version-antispam": "垃圾防止",
+       "version-antispam": "垃圾訊息防止",
        "version-skins": "外觀",
        "version-other": "其他",
        "version-mediahandlers": "媒體處理器",
-       "version-hooks": "é\88\8e",
-       "version-parser-extensiontags": "èª\9eæ³\95æ\93´å±\95標籤",
-       "version-parser-function-hooks": "èª\9eæ³\95å\87½æ\95¸é\88\8e",
-       "version-hook-name": "é\88\8eå\90\8d",
-       "version-hook-subscribedby": "利用於",
+       "version-hooks": "é\80£çµ\90(Hooks)",
+       "version-parser-extensiontags": "èª\9eæ³\95æ\93´å\85\85標籤",
+       "version-parser-function-hooks": "èª\9eæ³\95å\87½æ\95¸é\80£çµ\90",
+       "version-hook-name": "é\80£çµ\90å\90\8d稱",
+       "version-hook-subscribedby": "署名",
        "version-version": "(版本 $1)",
-       "version-license": "MediaWiki許可證",
-       "version-ext-license": "授權",
-       "version-ext-colheader-name": "æ\93´å±\95",
+       "version-license": "MediaWiki 授權條款",
+       "version-ext-license": "授權條款",
+       "version-ext-colheader-name": "æ\93´å\85\85å¥\97件",
        "version-ext-colheader-version": "版本",
-       "version-ext-colheader-license": "許可證",
+       "version-ext-colheader-license": "授權條款",
        "version-ext-colheader-description": "說明",
        "version-ext-colheader-credits": "作者",
-       "version-license-title": "用於$1之許可證",
-       "version-license-not-found": "並無與此拓展相關之許可證資訊。",
-       "version-credits-title": "用於$1之信用",
-       "version-credits-not-found": "並無與此拓展相關之信用資訊。",
-       "version-poweredby-credits": "此維基由'''[https://www.mediawiki.org/ MediaWiki]'''驅動,版權所有 © 2001-$1 $2。",
+       "version-license-title": "$1 的授權條款",
+       "version-license-not-found": "查無此擴充套件的詳細授權條款資訊。",
+       "version-credits-title": "$1 的製作群",
+       "version-credits-not-found": "查無此擴充套件的詳細製作群資訊。",
+       "version-poweredby-credits": "此 Wiki 由 <strong>[https://www.mediawiki.org/ MediaWiki]</strong> 開發,版權所有 © 2001-$1 $2。",
        "version-poweredby-others": "其他",
-       "version-poweredby-translators": "translatewiki.net 上的翻譯者",
-       "version-credits-summary": "我們感謝以下人士為[[Special:Version|MediaWiki]]作出的貢獻。",
-       "version-license-info": "MediaWiki為自由軟件;您可依據自由軟件基金會所發表的GNU通用公共授權條款規定,就本程式再為發佈與/或修改;無論您依據的是本授權的第二版或(您自行選擇的)任一日後發行的版本。\n\nMediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任;亦無對適售性或特定目的適用性所為的默示性擔保。詳情請參照GNU通用公共授權。\n\n您應已收到附隨於本程式的[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU通用公共授權的副本];如果沒有,請寫信至自由軟件基金會:51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,或[//www.gnu.org/licenses/old-licenses/gpl-2.0.html 線上閱讀]。",
-       "version-software": "已經安裝的軟",
+       "version-poweredby-translators": " translatewiki.net 翻譯人員",
+       "version-credits-summary": "我們感謝以下人士為 [[Special:Version|MediaWiki]] 作出的貢獻。",
+       "version-license-info": "MediaWiki 為自由軟體;您可依據自由軟體基金會所發表的 GNU 通用公共授權條款規定,將本程式重新發佈與/或修改;無論您依據的是本授權條款的第二版或 (您可自行選擇) 之後的任何版本。\n\n本程式發佈的目的是希望可以提供幫助,但不負任何擔保責任;亦無隱含對適售性或 特定用途的適用性的情形擔保。詳情請參照 GNU 通用公共授權。\n\n您應已隨本程式收到 [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU 通用公共授權條款的副本];如果沒有,請信件通知自由軟體基金會,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,或 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html 線上閱讀]。",
+       "version-software": "已經安裝的軟",
        "version-software-product": "產品",
        "version-software-version": "版本",
-       "version-entrypoints": "入口URL",
-       "version-entrypoints-header-entrypoint": "入口",
+       "version-entrypoints": "入口 URL",
+       "version-entrypoints-header-entrypoint": "入口",
        "version-entrypoints-header-url": "URL",
        "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath 條目路徑]",
        "redirect": "依檔案、使用者、頁面或修訂 ID 重新導向",
        "redirect-lookup": "尋找:",
        "redirect-value": "值:",
        "redirect-user": "使用者 ID",
-       "redirect-page": "頁面ID",
-       "redirect-revision": "頁面修訂ID",
+       "redirect-page": "頁面 ID",
+       "redirect-revision": "頁面修訂 ID",
        "redirect-file": "檔案名稱",
        "redirect-not-exists": "找不到",
-       "fileduplicatesearch": "選擇重覆檔案",
-       "fileduplicatesearch-summary": "用重覆檔案的切細值去找出檔案是否重覆。",
-       "fileduplicatesearch-legend": "æ\89¾重覆",
+       "fileduplicatesearch": "搜尋重覆檔案",
+       "fileduplicatesearch-summary": "依據雜湊值(Hash)來搜尋重複的檔案。",
+       "fileduplicatesearch-legend": "æ\90\9cå°\8b重覆",
        "fileduplicatesearch-filename": "檔案名稱:",
        "fileduplicatesearch-submit": "搜尋",
        "fileduplicatesearch-info": "$1 × $2 像素<br />檔案大小:$3<br />MIME 類型:$4",
-       "fileduplicatesearch-result-1": "檔案「$1」無完全相同的重覆。",
-       "fileduplicatesearch-result-n": "檔案「$1」有$2項完全相同的重覆。",
-       "fileduplicatesearch-noresults": "æ²\92æ\9c\89ç\99¼ç\8f¾å\90\8dç\82ºã\80\8c$1ã\80\8dç\9a\84æ\96\87件。",
+       "fileduplicatesearch-result-1": "檔案 $1 無重覆的檔案。",
+       "fileduplicatesearch-result-n": "檔案 $1 有 $2 筆重覆的檔案。",
+       "fileduplicatesearch-noresults": "æ\9f¥ç\84¡å\90\8d稱ç\82º \"$1\" ç\9a\84æª\94æ¡\88。",
        "specialpages": "特殊頁面",
-       "specialpages-note-top": "圖例",
-       "specialpages-note": "* 標準特殊頁面。\n* <span class=\"mw-specialpagerestricted\">用於重新整理的特殊頁面(可能過時)。</span>",
-       "specialpages-group-maintenance": "維護報",
+       "specialpages-note-top": "說明",
+       "specialpages-note": "* 一般特殊頁面。\n* <span class=\"mw-specialpagerestricted\">受限制的特殊頁面。</span>",
+       "specialpages-group-maintenance": "維護報",
        "specialpages-group-other": "其它特殊頁面",
        "specialpages-group-login": "登入/建立新帳號",
        "specialpages-group-changes": "最近變更與日誌",
-       "specialpages-group-media": "媒體報告和上傳",
+       "specialpages-group-media": "媒體上傳與報表",
        "specialpages-group-users": "使用者與權限",
        "specialpages-group-highuse": "常用頁面",
        "specialpages-group-pages": "頁面清單",
        "specialpages-group-pagetools": "頁面工具",
        "specialpages-group-wiki": "資料和工具",
-       "specialpages-group-redirects": "重新導向特殊頁面",
-       "specialpages-group-spam": "反垃圾工具",
+       "specialpages-group-redirects": "重新導向相關特殊頁面",
+       "specialpages-group-spam": "反垃圾訊息工具",
        "blankpage": "空白頁面",
-       "intentionallyblankpage": "這個頁面是為空白",
+       "intentionallyblankpage": "此頁面被故意設為空白。",
        "external_image_whitelist": " #留下這行一樣的文字<pre>\n#在下面(//之中間部份)輸入正規表達式\n#這些將會跟外部(已超連結的)圖片配合\n#那些配合到出來的會顯示成圖片,否則就只會顯示成連結\n#有 # 開頭的行會當成註解\n#大小寫並無區分\n\n#在這行上面輸入所有的regex。留下這行一樣的文字</pre>",
-       "tags": "有效標籤",
-       "tag-filter": "[[Special:Tags|標籤]]過濾器:",
+       "tags": "有效變更標籤",
+       "tag-filter": "[[Special:Tags|標籤]]搜尋:",
        "tag-filter-submit": "搜尋",
        "tag-list-wrapper": "([[Special:Tags|標籤]]:$2)",
        "tags-title": "標籤",
        "tags-intro": "這個頁面列示出在軟件中已標示的編輯,以及它們的解釋。",
        "tags-tag": "標籤名稱",
        "tags-display-header": "在更改清單中的出現方式",
-       "tags-description-header": "解釋完整描述",
+       "tags-description-header": "完整含意說明",
        "tags-active-header": "存檔?",
        "tags-hitcount-header": "已加上標籤的更改",
        "tags-active-yes": "是",
        "tags-active-no": "否",
        "tags-edit": "編輯",
-       "tags-hitcount": "$1次更改",
+       "tags-hitcount": "$1 次變更",
        "comparepages": "比較頁面",
-       "compare-page1": "第1頁",
-       "compare-page2": "第2頁",
-       "compare-rev1": "修訂版本1",
-       "compare-rev2": "修訂版本2",
+       "compare-page1": "第 1 頁",
+       "compare-page2": "第 2 頁",
+       "compare-rev1": "修訂 1",
+       "compare-rev2": "修訂 2",
        "compare-submit": "比較",
        "compare-invalid-title": "所指定標題無效。",
        "compare-title-not-exists": "所指定的話題不存在。",
        "htmlform-int-toohigh": "您所指定的值高於最大值$1",
        "htmlform-required": "此值是必填項",
        "htmlform-submit": "提交",
-       "htmlform-reset": "撤銷更改",
+       "htmlform-reset": "還原更改",
        "htmlform-selectorother-other": "其他",
        "htmlform-no": "否",
        "htmlform-yes": "是",
        "duration-millennia": "$1 千年",
        "rotate-comment": "順時針旋轉圖像$1{{PLURAL:$1|度}}",
        "limitreport-title": "分析器分析資料:",
-       "limitreport-cputime": "CPU使用時間",
-       "limitreport-cputime-value": "$1秒",
+       "limitreport-cputime": "CPU 使用時間",
+       "limitreport-cputime-value": "$1 秒",
        "limitreport-walltime": "實際使用時間",
-       "limitreport-walltime-value": "$1秒",
-       "limitreport-ppvisitednodes": "預處理器訪問節點數",
-       "limitreport-ppgeneratednodes": "é \90è\99\95ç\90\86å\99¨ç\94\9fæ\88\90ç¯\80é»\9eè¨\88數",
-       "limitreport-postexpandincludesize": "展開後大小",
+       "limitreport-walltime-value": "$1 秒",
+       "limitreport-ppvisitednodes": "預處理器訪問節點數",
+       "limitreport-ppgeneratednodes": "é \90è\99\95ç\90\86å\99¨ç\94¢ç\94\9fç¯\80é»\9e次數",
+       "limitreport-postexpandincludesize": "展開後的引用大小",
        "limitreport-postexpandincludesize-value": "$1/$2 個{{PLURAL:$2|位元組}}",
        "limitreport-templateargumentsize": "樣版參數大小",
        "limitreport-templateargumentsize-value": "$1/$2 個{{PLURAL:$2|位元組}}",
        "limitreport-expansiondepth": "最高展開深度",
-       "limitreport-expensivefunctioncount": "高開銷分析函數數位",
+       "limitreport-expensivefunctioncount": "高分析函數次數",
        "expandtemplates": "展開樣版",
        "expand_templates_intro": "本特殊頁面會將文字中的樣版展開,可以包含支援的分析程式語法,如 <code><nowiki>{{</nowiki>#language:…}}</code> 與變數如 <code><nowiki>{{</nowiki>CURRENTDAY}}</code>。\n實際上,絕大部分在雙括號中的內容都會被展開。",
        "expand_templates_title": "上下文標題,用於 {{FULLPAGENAME}} 等:",
        "expand_templates_input": "輸入文字:",
        "expand_templates_output": "結果:",
-       "expand_templates_xml_output": "XML輸出",
-       "expand_templates_html_output": "原始HTML輸出",
+       "expand_templates_xml_output": "XML 輸出",
+       "expand_templates_html_output": "原始 HTML 輸出",
        "expand_templates_ok": "確定",
        "expand_templates_remove_comments": "移除評論",
        "expand_templates_remove_nowiki": "在結果中禁止顯示 <nowiki> 標籤",
-       "expand_templates_generate_xml": "顯示XML語法樹",
-       "expand_templates_generate_rawhtml": "顯示原始HTML",
+       "expand_templates_generate_xml": "顯示 XML 解析樹",
+       "expand_templates_generate_rawhtml": "顯示原始 HTML",
        "expand_templates_preview": "預覽"
 }
index 9f73c80..10a3745 100644 (file)
@@ -271,6 +271,7 @@ $wgIgnoredMessages = array(
        'helplogin-url',
        'autocomment-prefix',
        'move-redirect-text',
+       'category-move-redirect-override',
        'interlanguage-link-title-langonly',
        'createaccount-hook-abort',
 );
index 62d1fa6..b53130b 100644 (file)
@@ -1201,6 +1201,7 @@ $wgMessageStructure = array(
                'right-move',
                'right-move-subpages',
                'right-move-rootuserpages',
+               'right-move-categorypages',
                'right-movefile',
                'right-suppressredirect',
                'right-upload',
@@ -1279,6 +1280,7 @@ $wgMessageStructure = array(
                'action-move',
                'action-move-subpages',
                'action-move-rootuserpages',
+               'action-move-categorypages',
                'action-movefile',
                'action-upload',
                'action-reupload',
@@ -2432,11 +2434,14 @@ $wgMessageStructure = array(
                'movepagetalktext',
                'movearticle',
                'moveuserpage-warning',
+               'movecategorypage-warning',
                'movenologintext',
                'movenotallowed',
                'movenotallowedfile',
                'cant-move-user-page',
                'cant-move-to-user-page',
+               'cant-move-category-page',
+               'cant-move-to-category-page',
                'newtitle',
                'move-watch',
                'movepagebtn',
@@ -2460,6 +2465,7 @@ $wgMessageStructure = array(
                'movenosubpage',
                'movereason',
                'move-redirect-text',
+               'category-move-redirect-override',
                'revertmove',
                'delete_and_move',
                'delete_and_move_text',
diff --git a/maintenance/oracle/archives/patch-page_links_updated.sql b/maintenance/oracle/archives/patch-page_links_updated.sql
new file mode 100644 (file)
index 0000000..5360329
--- /dev/null
@@ -0,0 +1,4 @@
+define mw_prefix='{$wgDBprefix}';
+
+ALTER TABLE &mw_prefix.page ADD page_links_updated TIMESTAMP(6) WITH TIME ZONE;
+
diff --git a/maintenance/oracle/archives/patch-rc_source.sql b/maintenance/oracle/archives/patch-rc_source.sql
new file mode 100644 (file)
index 0000000..0c80afa
--- /dev/null
@@ -0,0 +1,3 @@
+define mw_prefix='{$wgDBprefix}';
+
+ALTER TABLE &mw_prefix.recentchanges ADD rc_source VARCHAR2(16);
index 8e752da..824cc82 100644 (file)
@@ -1,3 +1,3 @@
 define mw_prefix='{$wgDBprefix}';
 
-ALTER TABLE &mw_prefix.mwuser ADD user_password_expires TIMESTAMP(6) WITH TIME ZONE NULL DEFAULT NULL;
+ALTER TABLE &mw_prefix.mwuser ADD user_password_expires TIMESTAMP(6) WITH TIME ZONE;
index f05c0cc..ff84858 100644 (file)
@@ -19,7 +19,7 @@ CREATE TABLE &mw_prefix.mwuser ( -- replace reserved word 'user'
   user_touched              TIMESTAMP(6) WITH TIME ZONE,
   user_registration         TIMESTAMP(6) WITH TIME ZONE,
   user_editcount            NUMBER,
-  user_password_expires     TIMESTAMP(6) WITH TIME ZONE NULL DEFAULT NULL
+  user_password_expires     TIMESTAMP(6) WITH TIME ZONE
 );
 ALTER TABLE &mw_prefix.mwuser ADD CONSTRAINT &mw_prefix.mwuser_pk PRIMARY KEY (user_id);
 CREATE UNIQUE INDEX &mw_prefix.mwuser_u01 ON &mw_prefix.mwuser (user_name);
@@ -28,7 +28,8 @@ CREATE INDEX &mw_prefix.mwuser_i02 ON &mw_prefix.mwuser (user_email, user_name);
 
 -- Create a dummy user to satisfy fk contraints especially with revisions
 INSERT INTO &mw_prefix.mwuser
-  VALUES (0,'Anonymous',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, '', current_timestamp, current_timestamp, 0);
+  (user_id, user_name, user_options, user_touched, user_registration, user_editcount)
+  VALUES (0,'Anonymous','', current_timestamp, current_timestamp,0);
 
 CREATE TABLE &mw_prefix.user_groups (
   ug_user   NUMBER      DEFAULT 0 NOT NULL,
@@ -73,6 +74,7 @@ CREATE TABLE &mw_prefix.page (
   page_is_new        CHAR(1)           DEFAULT '0' NOT NULL,
   page_random        NUMBER(15,14) NOT NULL,
   page_touched       TIMESTAMP(6) WITH TIME ZONE,
+  page_links_updated TIMESTAMP(6) WITH TIME ZONE,
   page_latest        NUMBER        DEFAULT 0 NOT NULL, -- FK?
   page_len           NUMBER        DEFAULT 0 NOT NULL,
   page_content_model VARCHAR2(32)
@@ -85,7 +87,7 @@ CREATE INDEX &mw_prefix.page_i03 ON &mw_prefix.page (page_is_redirect, page_name
 
 -- Create a dummy page to satisfy fk contraints especially with revisions
 INSERT INTO &mw_prefix.page
-  VALUES (0, 0, ' ', NULL, 0, 0, 0, 0, current_timestamp, 0, 0, NULL);
+  VALUES (0, 0, ' ', NULL, 0, 0, 0, 0, current_timestamp, NULL, 0, 0, NULL);
 
 /*$mw$*/
 CREATE TRIGGER &mw_prefix.page_set_random BEFORE INSERT ON &mw_prefix.page
@@ -403,7 +405,7 @@ CREATE SEQUENCE recentchanges_rc_id_seq;
 CREATE TABLE &mw_prefix.recentchanges (
   rc_id              NUMBER      NOT NULL,
   rc_timestamp       TIMESTAMP(6) WITH TIME ZONE  NOT NULL,
-  rc_cur_time        TIMESTAMP(6) WITH TIME ZONE  NOT NULL,
+  rc_cur_time        TIMESTAMP(6) WITH TIME ZONE,
   rc_user            NUMBER          DEFAULT 0 NOT NULL,
   rc_user_text       VARCHAR2(255)         NOT NULL,
   rc_namespace       NUMBER     DEFAULT 0 NOT NULL,
@@ -416,6 +418,7 @@ CREATE TABLE &mw_prefix.recentchanges (
   rc_this_oldid      NUMBER      DEFAULT 0 NOT NULL,
   rc_last_oldid      NUMBER      DEFAULT 0 NOT NULL,
   rc_type            CHAR(1)         DEFAULT '0' NOT NULL,
+  rc_source                                     VARCHAR2(16),
   rc_patrolled       CHAR(1)         DEFAULT '0' NOT NULL,
   rc_ip              VARCHAR2(15),
   rc_old_len         NUMBER,
index 93022b2..3a6f5e3 100644 (file)
@@ -191,6 +191,7 @@ return array(
 
        'jquery' => array(
                'scripts' => 'resources/lib/jquery/jquery.js',
+               'debugScripts' => 'resources/lib/jquery/jquery.migrate.js',
                'debugRaw' => false,
                'targets' => array( 'desktop', 'mobile' ),
        ),
diff --git a/resources/lib/jquery/jquery.migrate.js b/resources/lib/jquery/jquery.migrate.js
new file mode 100644 (file)
index 0000000..25b6c81
--- /dev/null
@@ -0,0 +1,521 @@
+/*!
+ * jQuery Migrate - v1.2.1 - 2013-05-08
+ * https://github.com/jquery/jquery-migrate
+ * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; Licensed MIT
+ */
+(function( jQuery, window, undefined ) {
+// See http://bugs.jquery.com/ticket/13335
+// "use strict";
+
+
+var warnedAbout = {};
+
+// List of warnings already given; public read only
+jQuery.migrateWarnings = [];
+
+// Set to true to prevent console output; migrateWarnings still maintained
+// jQuery.migrateMute = false;
+
+// Show a message on the console so devs know we're active
+if ( !jQuery.migrateMute && window.console && window.console.log ) {
+       window.console.log("JQMIGRATE: Logging is active");
+}
+
+// Set to false to disable traces that appear with warnings
+if ( jQuery.migrateTrace === undefined ) {
+       jQuery.migrateTrace = true;
+}
+
+// Forget any warnings we've already given; public
+jQuery.migrateReset = function() {
+       warnedAbout = {};
+       jQuery.migrateWarnings.length = 0;
+};
+
+function migrateWarn( msg) {
+       var console = window.console;
+       if ( !warnedAbout[ msg ] ) {
+               warnedAbout[ msg ] = true;
+               jQuery.migrateWarnings.push( msg );
+               if ( console && console.warn && !jQuery.migrateMute ) {
+                       console.warn( "JQMIGRATE: " + msg );
+                       if ( jQuery.migrateTrace && console.trace ) {
+                               console.trace();
+                       }
+               }
+       }
+}
+
+function migrateWarnProp( obj, prop, value, msg ) {
+       if ( Object.defineProperty ) {
+               // On ES5 browsers (non-oldIE), warn if the code tries to get prop;
+               // allow property to be overwritten in case some other plugin wants it
+               try {
+                       Object.defineProperty( obj, prop, {
+                               configurable: true,
+                               enumerable: true,
+                               get: function() {
+                                       migrateWarn( msg );
+                                       return value;
+                               },
+                               set: function( newValue ) {
+                                       migrateWarn( msg );
+                                       value = newValue;
+                               }
+                       });
+                       return;
+               } catch( err ) {
+                       // IE8 is a dope about Object.defineProperty, can't warn there
+               }
+       }
+
+       // Non-ES5 (or broken) browser; just set the property
+       jQuery._definePropertyBroken = true;
+       obj[ prop ] = value;
+}
+
+if ( document.compatMode === "BackCompat" ) {
+       // jQuery has never supported or tested Quirks Mode
+       migrateWarn( "jQuery is not compatible with Quirks Mode" );
+}
+
+
+var attrFn = jQuery( "<input/>", { size: 1 } ).attr("size") && jQuery.attrFn,
+       oldAttr = jQuery.attr,
+       valueAttrGet = jQuery.attrHooks.value && jQuery.attrHooks.value.get ||
+               function() { return null; },
+       valueAttrSet = jQuery.attrHooks.value && jQuery.attrHooks.value.set ||
+               function() { return undefined; },
+       rnoType = /^(?:input|button)$/i,
+       rnoAttrNodeType = /^[238]$/,
+       rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+       ruseDefault = /^(?:checked|selected)$/i;
+
+// jQuery.attrFn
+migrateWarnProp( jQuery, "attrFn", attrFn || {}, "jQuery.attrFn is deprecated" );
+
+jQuery.attr = function( elem, name, value, pass ) {
+       var lowerName = name.toLowerCase(),
+               nType = elem && elem.nodeType;
+
+       if ( pass ) {
+               // Since pass is used internally, we only warn for new jQuery
+               // versions where there isn't a pass arg in the formal params
+               if ( oldAttr.length < 4 ) {
+                       migrateWarn("jQuery.fn.attr( props, pass ) is deprecated");
+               }
+               if ( elem && !rnoAttrNodeType.test( nType ) &&
+                       (attrFn ? name in attrFn : jQuery.isFunction(jQuery.fn[name])) ) {
+                       return jQuery( elem )[ name ]( value );
+               }
+       }
+
+       // Warn if user tries to set `type`, since it breaks on IE 6/7/8; by checking
+       // for disconnected elements we don't warn on $( "<button>", { type: "button" } ).
+       if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) && elem.parentNode ) {
+               migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8");
+       }
+
+       // Restore boolHook for boolean property/attribute synchronization
+       if ( !jQuery.attrHooks[ lowerName ] && rboolean.test( lowerName ) ) {
+               jQuery.attrHooks[ lowerName ] = {
+                       get: function( elem, name ) {
+                               // Align boolean attributes with corresponding properties
+                               // Fall back to attribute presence where some booleans are not supported
+                               var attrNode,
+                                       property = jQuery.prop( elem, name );
+                               return property === true || typeof property !== "boolean" &&
+                                       ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
+
+                                       name.toLowerCase() :
+                                       undefined;
+                       },
+                       set: function( elem, value, name ) {
+                               var propName;
+                               if ( value === false ) {
+                                       // Remove boolean attributes when set to false
+                                       jQuery.removeAttr( elem, name );
+                               } else {
+                                       // value is true since we know at this point it's type boolean and not false
+                                       // Set boolean attributes to the same name and set the DOM property
+                                       propName = jQuery.propFix[ name ] || name;
+                                       if ( propName in elem ) {
+                                               // Only set the IDL specifically if it already exists on the element
+                                               elem[ propName ] = true;
+                                       }
+
+                                       elem.setAttribute( name, name.toLowerCase() );
+                               }
+                               return name;
+                       }
+               };
+
+               // Warn only for attributes that can remain distinct from their properties post-1.9
+               if ( ruseDefault.test( lowerName ) ) {
+                       migrateWarn( "jQuery.fn.attr('" + lowerName + "') may use property instead of attribute" );
+               }
+       }
+
+       return oldAttr.call( jQuery, elem, name, value );
+};
+
+// attrHooks: value
+jQuery.attrHooks.value = {
+       get: function( elem, name ) {
+               var nodeName = ( elem.nodeName || "" ).toLowerCase();
+               if ( nodeName === "button" ) {
+                       return valueAttrGet.apply( this, arguments );
+               }
+               if ( nodeName !== "input" && nodeName !== "option" ) {
+                       migrateWarn("jQuery.fn.attr('value') no longer gets properties");
+               }
+               return name in elem ?
+                       elem.value :
+                       null;
+       },
+       set: function( elem, value ) {
+               var nodeName = ( elem.nodeName || "" ).toLowerCase();
+               if ( nodeName === "button" ) {
+                       return valueAttrSet.apply( this, arguments );
+               }
+               if ( nodeName !== "input" && nodeName !== "option" ) {
+                       migrateWarn("jQuery.fn.attr('value', val) no longer sets properties");
+               }
+               // Does not return so that setAttribute is also used
+               elem.value = value;
+       }
+};
+
+
+var matched, browser,
+       oldInit = jQuery.fn.init,
+       oldParseJSON = jQuery.parseJSON,
+       // Note: XSS check is done below after string is trimmed
+       rquickExpr = /^([^<]*)(<[\w\W]+>)([^>]*)$/;
+
+// $(html) "looks like html" rule change
+jQuery.fn.init = function( selector, context, rootjQuery ) {
+       var match;
+
+       if ( selector && typeof selector === "string" && !jQuery.isPlainObject( context ) &&
+                       (match = rquickExpr.exec( jQuery.trim( selector ) )) && match[ 0 ] ) {
+               // This is an HTML string according to the "old" rules; is it still?
+               if ( selector.charAt( 0 ) !== "<" ) {
+                       migrateWarn("$(html) HTML strings must start with '<' character");
+               }
+               if ( match[ 3 ] ) {
+                       migrateWarn("$(html) HTML text after last tag is ignored");
+               }
+               // Consistently reject any HTML-like string starting with a hash (#9521)
+               // Note that this may break jQuery 1.6.x code that otherwise would work.
+               if ( match[ 0 ].charAt( 0 ) === "#" ) {
+                       migrateWarn("HTML string cannot start with a '#' character");
+                       jQuery.error("JQMIGRATE: Invalid selector string (XSS)");
+               }
+               // Now process using loose rules; let pre-1.8 play too
+               if ( context && context.context ) {
+                       // jQuery object as context; parseHTML expects a DOM object
+                       context = context.context;
+               }
+               if ( jQuery.parseHTML ) {
+                       return oldInit.call( this, jQuery.parseHTML( match[ 2 ], context, true ),
+                                       context, rootjQuery );
+               }
+       }
+       return oldInit.apply( this, arguments );
+};
+jQuery.fn.init.prototype = jQuery.fn;
+
+// Let $.parseJSON(falsy_value) return null
+jQuery.parseJSON = function( json ) {
+       if ( !json && json !== null ) {
+               migrateWarn("jQuery.parseJSON requires a valid JSON string");
+               return null;
+       }
+       return oldParseJSON.apply( this, arguments );
+};
+
+jQuery.uaMatch = function( ua ) {
+       ua = ua.toLowerCase();
+
+       var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
+               /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
+               /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
+               /(msie) ([\w.]+)/.exec( ua ) ||
+               ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
+               [];
+
+       return {
+               browser: match[ 1 ] || "",
+               version: match[ 2 ] || "0"
+       };
+};
+
+// Don't clobber any existing jQuery.browser in case it's different
+if ( !jQuery.browser ) {
+       matched = jQuery.uaMatch( navigator.userAgent );
+       browser = {};
+
+       if ( matched.browser ) {
+               browser[ matched.browser ] = true;
+               browser.version = matched.version;
+       }
+
+       // Chrome is Webkit, but Webkit is also Safari.
+       if ( browser.chrome ) {
+               browser.webkit = true;
+       } else if ( browser.webkit ) {
+               browser.safari = true;
+       }
+
+       jQuery.browser = browser;
+}
+
+// Warn if the code tries to get jQuery.browser
+migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" );
+
+jQuery.sub = function() {
+       function jQuerySub( selector, context ) {
+               return new jQuerySub.fn.init( selector, context );
+       }
+       jQuery.extend( true, jQuerySub, this );
+       jQuerySub.superclass = this;
+       jQuerySub.fn = jQuerySub.prototype = this();
+       jQuerySub.fn.constructor = jQuerySub;
+       jQuerySub.sub = this.sub;
+       jQuerySub.fn.init = function init( selector, context ) {
+               if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
+                       context = jQuerySub( context );
+               }
+
+               return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
+       };
+       jQuerySub.fn.init.prototype = jQuerySub.fn;
+       var rootjQuerySub = jQuerySub(document);
+       migrateWarn( "jQuery.sub() is deprecated" );
+       return jQuerySub;
+};
+
+
+// Ensure that $.ajax gets the new parseJSON defined in core.js
+jQuery.ajaxSetup({
+       converters: {
+               "text json": jQuery.parseJSON
+       }
+});
+
+
+var oldFnData = jQuery.fn.data;
+
+jQuery.fn.data = function( name ) {
+       var ret, evt,
+               elem = this[0];
+
+       // Handles 1.7 which has this behavior and 1.8 which doesn't
+       if ( elem && name === "events" && arguments.length === 1 ) {
+               ret = jQuery.data( elem, name );
+               evt = jQuery._data( elem, name );
+               if ( ( ret === undefined || ret === evt ) && evt !== undefined ) {
+                       migrateWarn("Use of jQuery.fn.data('events') is deprecated");
+                       return evt;
+               }
+       }
+       return oldFnData.apply( this, arguments );
+};
+
+
+var rscriptType = /\/(java|ecma)script/i,
+       oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;
+
+jQuery.fn.andSelf = function() {
+       migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()");
+       return oldSelf.apply( this, arguments );
+};
+
+// Since jQuery.clean is used internally on older versions, we only shim if it's missing
+if ( !jQuery.clean ) {
+       jQuery.clean = function( elems, context, fragment, scripts ) {
+               // Set context per 1.8 logic
+               context = context || document;
+               context = !context.nodeType && context[0] || context;
+               context = context.ownerDocument || context;
+
+               migrateWarn("jQuery.clean() is deprecated");
+
+               var i, elem, handleScript, jsTags,
+                       ret = [];
+
+               jQuery.merge( ret, jQuery.buildFragment( elems, context ).childNodes );
+
+               // Complex logic lifted directly from jQuery 1.8
+               if ( fragment ) {
+                       // Special handling of each script element
+                       handleScript = function( elem ) {
+                               // Check if we consider it executable
+                               if ( !elem.type || rscriptType.test( elem.type ) ) {
+                                       // Detach the script and store it in the scripts array (if provided) or the fragment
+                                       // Return truthy to indicate that it has been handled
+                                       return scripts ?
+                                               scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :
+                                               fragment.appendChild( elem );
+                               }
+                       };
+
+                       for ( i = 0; (elem = ret[i]) != null; i++ ) {
+                               // Check if we're done after handling an executable script
+                               if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {
+                                       // Append to fragment and handle embedded scripts
+                                       fragment.appendChild( elem );
+                                       if ( typeof elem.getElementsByTagName !== "undefined" ) {
+                                               // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
+                                               jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );
+
+                                               // Splice the scripts into ret after their former ancestor and advance our index beyond them
+                                               ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
+                                               i += jsTags.length;
+                                       }
+                               }
+                       }
+               }
+
+               return ret;
+       };
+}
+
+var eventAdd = jQuery.event.add,
+       eventRemove = jQuery.event.remove,
+       eventTrigger = jQuery.event.trigger,
+       oldToggle = jQuery.fn.toggle,
+       oldLive = jQuery.fn.live,
+       oldDie = jQuery.fn.die,
+       ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",
+       rajaxEvent = new RegExp( "\\b(?:" + ajaxEvents + ")\\b" ),
+       rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
+       hoverHack = function( events ) {
+               if ( typeof( events ) !== "string" || jQuery.event.special.hover ) {
+                       return events;
+               }
+               if ( rhoverHack.test( events ) ) {
+                       migrateWarn("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'");
+               }
+               return events && events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
+       };
+
+// Event props removed in 1.9, put them back if needed; no practical way to warn them
+if ( jQuery.event.props && jQuery.event.props[ 0 ] !== "attrChange" ) {
+       jQuery.event.props.unshift( "attrChange", "attrName", "relatedNode", "srcElement" );
+}
+
+// Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7
+if ( jQuery.event.dispatch ) {
+       migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" );
+}
+
+// Support for 'hover' pseudo-event and ajax event warnings
+jQuery.event.add = function( elem, types, handler, data, selector ){
+       if ( elem !== document && rajaxEvent.test( types ) ) {
+               migrateWarn( "AJAX events should be attached to document: " + types );
+       }
+       eventAdd.call( this, elem, hoverHack( types || "" ), handler, data, selector );
+};
+jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){
+       eventRemove.call( this, elem, hoverHack( types ) || "", handler, selector, mappedTypes );
+};
+
+jQuery.fn.error = function() {
+       var args = Array.prototype.slice.call( arguments, 0);
+       migrateWarn("jQuery.fn.error() is deprecated");
+       args.splice( 0, 0, "error" );
+       if ( arguments.length ) {
+               return this.bind.apply( this, args );
+       }
+       // error event should not bubble to window, although it does pre-1.7
+       this.triggerHandler.apply( this, args );
+       return this;
+};
+
+jQuery.fn.toggle = function( fn, fn2 ) {
+
+       // Don't mess with animation or css toggles
+       if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {
+               return oldToggle.apply( this, arguments );
+       }
+       migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");
+
+       // Save reference to arguments for access in closure
+       var args = arguments,
+               guid = fn.guid || jQuery.guid++,
+               i = 0,
+               toggler = function( event ) {
+                       // Figure out which function to execute
+                       var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+                       jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+                       // Make sure that clicks stop
+                       event.preventDefault();
+
+                       // and execute the function
+                       return args[ lastToggle ].apply( this, arguments ) || false;
+               };
+
+       // link all the functions, so any of them can unbind this click handler
+       toggler.guid = guid;
+       while ( i < args.length ) {
+               args[ i++ ].guid = guid;
+       }
+
+       return this.click( toggler );
+};
+
+jQuery.fn.live = function( types, data, fn ) {
+       migrateWarn("jQuery.fn.live() is deprecated");
+       if ( oldLive ) {
+               return oldLive.apply( this, arguments );
+       }
+       jQuery( this.context ).on( types, this.selector, data, fn );
+       return this;
+};
+
+jQuery.fn.die = function( types, fn ) {
+       migrateWarn("jQuery.fn.die() is deprecated");
+       if ( oldDie ) {
+               return oldDie.apply( this, arguments );
+       }
+       jQuery( this.context ).off( types, this.selector || "**", fn );
+       return this;
+};
+
+// Turn global events into document-triggered events
+jQuery.event.trigger = function( event, data, elem, onlyHandlers  ){
+       if ( !elem && !rajaxEvent.test( event ) ) {
+               migrateWarn( "Global events are undocumented and deprecated" );
+       }
+       return eventTrigger.call( this,  event, data, elem || document, onlyHandlers  );
+};
+jQuery.each( ajaxEvents.split("|"),
+       function( _, name ) {
+               jQuery.event.special[ name ] = {
+                       setup: function() {
+                               var elem = this;
+
+                               // The document needs no shimming; must be !== for oldIE
+                               if ( elem !== document ) {
+                                       jQuery.event.add( document, name + "." + jQuery.guid, function() {
+                                               jQuery.event.trigger( name, null, elem, true );
+                                       });
+                                       jQuery._data( this, name, jQuery.guid++ );
+                               }
+                               return false;
+                       },
+                       teardown: function() {
+                               if ( this !== document ) {
+                                       jQuery.event.remove( document, name + "." + jQuery._data( this, name ) );
+                               }
+                               return false;
+                       }
+               };
+       }
+);
+
+
+})( jQuery, window );
index dfb3d22..18c66e9 100644 (file)
@@ -6,5 +6,7 @@
        },
        "ooui-dialog-action-close": "Джаб",
        "ooui-outline-control-move-down": "Элементни тюбюне кёчюр",
-       "ooui-outline-control-move-up": "Элементни башына кёчюр"
+       "ooui-outline-control-move-up": "Элементни башына кёчюр",
+       "ooui-outline-control-remove": "Пунктну кетер",
+       "ooui-toolbar-more": "Энтда"
 }
index b5f8824..495056f 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (7d2507b267)
+ * OOjs UI v0.1.0-pre (7b3672591f)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Mon May 05 2014 14:13:13 GMT-0700 (PDT)
+ * Date: Fri May 09 2014 13:27:04 GMT+0200 (CEST)
  */
 ( function ( OO ) {
 
index 0c2cfaf..68d73d9 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (7d2507b267)
+ * OOjs UI v0.1.0-pre (7b3672591f)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Mon May 05 2014 14:13:12 GMT-0700 (PDT)
+ * Date: Fri May 09 2014 13:27:04 GMT+0200 (CEST)
  */
 
 /* Textures */
index 9962534..6444d93 100644 (file)
 
                        // Return the Promise
                        return apiDeferred.promise( { abort: xhr.abort } ).fail( function ( code, details ) {
-                               mw.log( 'mw.Api error: ', code, details );
+                               if ( code !== 'abort' ) {
+                                       mw.log( 'mw.Api error: ', code, details );
+                               }
                        } );
                },
 
index b4e903d..1875ac5 100644 (file)
@@ -763,6 +763,7 @@ class ParserTest {
 
                $settings = array(
                        'wgServer' => 'http://example.org',
+                       'wgServerName' => 'example.org',
                        'wgScript' => '/index.php',
                        'wgScriptPath' => '/',
                        'wgArticlePath' => '/wiki/$1',
index 49fdd48..350e83f 100644 (file)
@@ -36,7 +36,7 @@ class MWNamespaceTest extends MediaWikiTestCase {
         * @covers MWNamespace::isMovable
         */
        public function testIsMovable() {
-               $this->assertFalse( MWNamespace::isMovable( NS_CATEGORY ) );
+               $this->assertFalse( MWNamespace::isMovable( NS_SPECIAL ) );
                # @todo FIXME: Write more tests!!
        }
 
index 66ed020..14bcac0 100644 (file)
@@ -65,6 +65,7 @@ class NewParserTest extends MediaWikiTestCase {
                $tmpGlobals['wgContLang'] = Language::factory( 'en' );
                $tmpGlobals['wgSitename'] = 'MediaWiki';
                $tmpGlobals['wgServer'] = 'http://example.org';
+               $tmpGlobals['wgServerName'] = 'example.org';
                $tmpGlobals['wgScript'] = '/index.php';
                $tmpGlobals['wgScriptPath'] = '/';
                $tmpGlobals['wgArticlePath'] = '/wiki/$1';
index 229eeb4..4ea8fc6 100644 (file)
@@ -29,6 +29,26 @@ class ParserMethodsTest extends MediaWikiLangTestCase {
                $this->assertEquals( $expected, $text );
        }
 
+       /**
+        * @expectedException MWException
+        * @expectedExceptionMessage Parser state cleared while parsing. Did you call Parser::parse recursively?
+        * @covers Parser::lock
+        */
+       public function testRecursiveParse() {
+               global $wgParser;
+               $title = Title::newFromText( 'foo' );
+               $po = new ParserOptions;
+               $wgParser->setHook( 'recursivecallparser', array( $this, 'helperParserFunc' ) );
+               $wgParser->parse( '<recursivecallparser>baz</recursivecallparser>', $title, $po );
+       }
+
+       public function helperParserFunc( $input, $args, $parser) {
+               $title = Title::newFromText( 'foo' );
+               $po = new ParserOptions;
+               $parser->parse( $input, $title, $po );
+               return 'bar';
+       }
+
        /**
         * @covers Parser::callParserFunction
         */