Merge "Add Status outparam for AbortNewAccount hook to fix API error handling"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 23 Jan 2014 20:27:00 +0000 (20:27 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 23 Jan 2014 20:27:00 +0000 (20:27 +0000)
126 files changed:
RELEASE-NOTES-1.23
docs/hooks.txt
includes/Article.php
includes/AutoLoader.php
includes/DefaultSettings.php
includes/GlobalFunctions.php
includes/Metadata.php [deleted file]
includes/Preferences.php
includes/Wiki.php
includes/WikiPage.php
includes/api/ApiQueryBase.php
includes/api/ApiQueryDeletedrevs.php
includes/api/ApiQueryFilearchive.php
includes/api/ApiQueryImageInfo.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryRevisions.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiQueryWatchlist.php
includes/changes/RecentChange.php
includes/db/LoadBalancer.php
includes/filebackend/lockmanager/LSLockManager.php [deleted file]
includes/installer/Installer.i18n.php
includes/installer/Installer.php
includes/installer/PhpBugTests.php
includes/media/Bitmap.php
includes/objectcache/EmptyBagOStuff.php
includes/parser/CoreParserFunctions.php
includes/parser/Parser.php
includes/parser/ParserOptions.php
includes/resourceloader/ResourceLoader.php
includes/specials/SpecialBlock.php
includes/specials/SpecialChangeEmail.php
includes/specials/SpecialChangePassword.php
includes/specials/SpecialVersion.php
languages/messages/MessagesAeb.php
languages/messages/MessagesAr.php
languages/messages/MessagesAst.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBn.php
languages/messages/MessagesBs.php
languages/messages/MessagesCa.php
languages/messages/MessagesCe.php
languages/messages/MessagesCs.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesEgl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesEu.php
languages/messages/MessagesFa.php
languages/messages/MessagesFr.php
languages/messages/MessagesGl.php
languages/messages/MessagesGsw.php
languages/messages/MessagesHak.php
languages/messages/MessagesHe.php
languages/messages/MessagesHif_latn.php
languages/messages/MessagesHsb.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesKiu.php
languages/messages/MessagesKm.php
languages/messages/MessagesKo.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLrc.php
languages/messages/MessagesMg.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMr.php
languages/messages/MessagesMs.php
languages/messages/MessagesNb.php
languages/messages/MessagesNe.php
languages/messages/MessagesNl.php
languages/messages/MessagesOr.php
languages/messages/MessagesPfl.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesQqq.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesSh.php
languages/messages/MessagesSl.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesSv.php
languages/messages/MessagesSzl.php
languages/messages/MessagesTr.php
languages/messages/MessagesUk.php
languages/messages/MessagesVi.php
languages/messages/MessagesWar.php
languages/messages/MessagesWo.php
languages/messages/MessagesYi.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
maintenance/language/messageTypes.inc
maintenance/language/messages.inc
maintenance/locking/LockServerDaemon.php [deleted file]
maintenance/update.php
resources/Makefile
resources/mediawiki.action/mediawiki.action.history.js
resources/mediawiki.action/mediawiki.action.view.metadata.js
resources/mediawiki.api/mediawiki.api.category.js
resources/mediawiki.less/mediawiki.mixins.less
resources/mediawiki.page/mediawiki.page.gallery.js
resources/mediawiki.page/mediawiki.page.image.pagination.js
resources/mediawiki.special/mediawiki.special.javaScriptTest.js
resources/mediawiki.special/mediawiki.special.preferences.js
resources/mediawiki.special/mediawiki.special.search.js
resources/mediawiki.special/mediawiki.special.upload.js
resources/mediawiki/mediawiki.Title.js
resources/mediawiki/mediawiki.Uri.js
resources/mediawiki/mediawiki.debug.js
resources/mediawiki/mediawiki.htmlform.js
resources/mediawiki/mediawiki.jqueryMsg.js
resources/mediawiki/mediawiki.js
resources/mediawiki/mediawiki.util.js
skins/vector/components/common.less
skins/vector/components/navigation.less
skins/vector/components/notifications.less
skins/vector/images/page-fade.png [deleted file]
skins/vector/variables.less

index 9047be3..21d8548 100644 (file)
@@ -125,6 +125,24 @@ production.
 * All API modules now support an assert parameter. See the new features section
   for more details.
 * Added prop=contributors to fetch the list of contributors to the page.
+* The following API modules will now return entries where fields have been
+  revision-deleted: list=deletedrevs, list=filearchive, list=recentchanges,
+  list=watchlist. "hidden" indicators will be included, in the same style as is
+  already done for prop=revisions.
+* The following API modules will now return the content of revision-deleted
+  fields, in addition to the "hidden" indicators, if the querying user has the
+  necessary rights: list=logevents, list=usercontribs, prop=imageinfo,
+  prop=revisions.
+* The above modules, where applicable, will now return entries filtered by
+  revision-deleted fields if the querying user has the necessary rights. For
+  example, prop=revisions with rvuser or rvexcludeuser will no longer skip
+  revisions where the user was revision-deleted if the current user has the
+  deletedhistory right.
+* The 'hideuser' right, used when blocking, is no longer necessary or
+  sufficient for seeing contributions with revision-deleted in
+  list=usercontribs.
+* list=watchlist now uses the querying user's rights rather than the wlowner's
+  rights when checking whether wlprop=patrol is allowed.
 
 === Languages updated in 1.23 ===
 
@@ -174,6 +192,7 @@ changes to languages because of Bugzilla reports.
 * Option to mark hooks as deprecated has been added.
 
 ==== Removed classes ====
+* FakeMemCachedClient (deprecated in 1.18)
 * TitleDependency (unused)
 * TitleListDependency (unused)
 * WikiError (deprecated in 1.17)
@@ -233,12 +252,15 @@ changes to languages because of Bugzilla reports.
 * EditPage::spamPage() (deprecated since 1.17)
 * Exif::getFormattedData() (deprecated in 1.18)
 * Exif::makeFormattedData() (deprecated in 1.18)
+* in_string (deprecated in 1.21)
 * Language::convertLinkToAllVariants() (deprecated in 1.17)
 * LanguageConverter::convertLinkToAllVariants() (deprecated in 1.17)
 * Linker::makeBrokenLink() (deprecated in 1.16)
 * Linker::makeBrokenLinkObj() (deprecated in 1.16)
 * Linker::makeColouredLinkObj() (deprecated in 1.16)
 * Linker::makeSizeLinkObj() (deprecated in 1.17)
+* MediaWiki::articleFromTitle() (deprecated in 1.18)
+* ParserOptions::getkin() (deprecated 1.18)
 * ProfilerSimple::getCpuTime (deprecated in 1.20)
 * Revision::revText() (deprecated in 1.17)
 * SkinTemplate::jstext() (deprecated in 1.21)
@@ -270,10 +292,17 @@ changes to languages because of Bugzilla reports.
 * User::getPageRenderingHash() (deprecated in 1.17)
 * WebRequest::getFileSize() (deprecated in 1.17)
 * WebRequest::isPathInfoBad() (deprecated in 1.17)
+* wfGenerateToken (deprecated in 1.20)
+* wfStreamFile (deprecated in 1.19)
+* wfUILang (deprecated in 1.18)
+* WikiPage::createUpdates() (deprecated in 1.18)
 * WikiPage::quickEdit() (deprecated in 1.18)
 * WikiPage::useParserCache() (deprecated in 1.18)
 * WikiPage::viewUpdates() (deprecated in 1.18)
 
+==== Removed globals ====
+* $wgBetterDirectionality (deprecated in 1.18)
+
 == Compatibility ==
 
 MediaWiki 1.23 requires PHP 5.3.2 or later.
index ec04a75..3f1152b 100644 (file)
@@ -775,6 +775,7 @@ $block: Block object (which is set to be autoblocking)
 'BlockIp': Before an IP address or user is blocked.
 $block: the Block object about to be saved
 $user: the user _doing_ the block (not the one being blocked)
+&$reason: if the hook is aborted, the error message to be returned in an array
 
 'BlockIpComplete': After an IP address or user is blocked.
 $block: the Block object that was saved
index a8cdc48..85a34db 100644 (file)
@@ -1612,7 +1612,8 @@ class Article implements Page {
                $outputPage->setPageTitle( wfMessage( 'delete-confirm', $this->getTitle()->getPrefixedText() ) );
                $outputPage->addBacklinkSubtitle( $this->getTitle() );
                $outputPage->setRobotPolicy( 'noindex,nofollow' );
-               if ( $this->getTitle()->getBacklinkCache()->hasLinks( 'pagelinks' ) ) {
+               $backlinkCache = $this->getTitle()->getBacklinkCache();
+               if ( $backlinkCache->hasLinks( 'pagelinks' ) || $backlinkCache->hasLinks( 'templatelinks' ) ) {
                        $outputPage->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n",
                                'deleting-backlinks-warning' );
                }
index bab00f9..6d65a82 100644 (file)
@@ -174,7 +174,6 @@ $wgAutoloadLocalClasses = array(
        'QueryPage' => 'includes/QueryPage.php',
        'QuickTemplate' => 'includes/SkinTemplate.php',
        'RawMessage' => 'includes/Message.php',
-       'RdfMetaData' => 'includes/Metadata.php',
        'ReadOnlyError' => 'includes/Exception.php',
        'RedirectSpecialArticle' => 'includes/specialpage/RedirectSpecialPage.php',
        'RedirectSpecialPage' => 'includes/specialpage/RedirectSpecialPage.php',
@@ -559,7 +558,6 @@ $wgAutoloadLocalClasses = array(
        'ScopedLock' => 'includes/filebackend/lockmanager/ScopedLock.php',
        'FSLockManager' => 'includes/filebackend/lockmanager/FSLockManager.php',
        'DBLockManager' => 'includes/filebackend/lockmanager/DBLockManager.php',
-       'LSLockManager' => 'includes/filebackend/lockmanager/LSLockManager.php',
        'MemcLockManager' => 'includes/filebackend/lockmanager/MemcLockManager.php',
        'QuorumLockManager' => 'includes/filebackend/lockmanager/QuorumLockManager.php',
        'MySqlLockManager' => 'includes/filebackend/lockmanager/DBLockManager.php',
@@ -611,7 +609,6 @@ $wgAutoloadLocalClasses = array(
        'MysqlUpdater' => 'includes/installer/MysqlUpdater.php',
        'OracleInstaller' => 'includes/installer/OracleInstaller.php',
        'OracleUpdater' => 'includes/installer/OracleUpdater.php',
-       'PhpRefCallBugTester' => 'includes/installer/PhpBugTests.php',
        'PhpXmlBugTester' => 'includes/installer/PhpBugTests.php',
        'PostgresInstaller' => 'includes/installer/PostgresInstaller.php',
        'PostgresUpdater' => 'includes/installer/PostgresUpdater.php',
@@ -768,7 +765,6 @@ $wgAutoloadLocalClasses = array(
        'APCBagOStuff' => 'includes/objectcache/APCBagOStuff.php',
        'BagOStuff' => 'includes/objectcache/BagOStuff.php',
        'EmptyBagOStuff' => 'includes/objectcache/EmptyBagOStuff.php',
-       'FakeMemCachedClient' => 'includes/objectcache/EmptyBagOStuff.php',
        'HashBagOStuff' => 'includes/objectcache/HashBagOStuff.php',
        'MediaWikiBagOStuff' => 'includes/objectcache/SqlBagOStuff.php',
        'MemCachedClientforWiki' => 'includes/objectcache/MemcachedClient.php',
index a8f51fe..0a5dc71 100644 (file)
@@ -3056,14 +3056,6 @@ $wgVectorUseIconWatch = true;
  */
 $wgEdititis = false;
 
-/**
- * Better directionality support (bug 6100 and related).
- * Removed in 1.18, still kept here for LiquidThreads backwards compatibility.
- *
- * @deprecated since 1.18
- */
-$wgBetterDirectionality = true;
-
 /**
  * Some web hosts attempt to rewrite all responses with a 404 (not found)
  * status code, mangling or hiding MediaWiki's output. If you are using such a
@@ -4563,6 +4555,15 @@ $wgAvailableRights = array();
  */
 $wgDeleteRevisionsLimit = 0;
 
+/**
+ * The maximum number of edits a user can have and
+ * can still be hidden by users with the hideuser permission.
+ * This is limited for performance reason.
+ * Set to false to disable the limit.
+ * @since 1.23
+ */
+$wgHideUserContribLimit = 1000;
+
 /**
  * Number of accounts each IP address may create, 0 to disable.
  *
@@ -5509,10 +5510,15 @@ $wgRCMaxAge = 13 * 7 * 24 * 3600;
 $wgRCFilterByAge = false;
 
 /**
- * List of Days and Limits options to list in the Special:Recentchanges and
+ * List of Limits options to list in the Special:Recentchanges and
  * Special:Recentchangeslinked pages.
  */
 $wgRCLinkLimits = array( 50, 100, 250, 500 );
+
+/**
+ * List of Days options to list in the Special:Recentchanges and
+ * Special:Recentchangeslinked pages.
+ */
 $wgRCLinkDays = array( 1, 3, 7, 14, 30 );
 
 /**
@@ -6589,12 +6595,45 @@ $wgDebugAPI = false;
  * API module extensions.
  * Associative array mapping module name to class name.
  * Extension modules may override the core modules.
- * @todo Describe each of the variables, group them and add examples
+ *
+ * See ApiMain::$Modules for a list of the core modules.
  */
 $wgAPIModules = array();
+
+/**
+ * API format module extensions.
+ * Associative array mapping format module name to class name.
+ * Extension modules may override the core modules.
+ *
+ * See ApiMain::$Formats for a list of the core format modules.
+ */
 $wgAPIFormatModules = array();
+
+/**
+ * API Query meta module extensions.
+ * Associative array mapping meta module name to class name.
+ * Extension modules may override the core modules.
+ *
+ * See ApiQuery::$QueryMetaModules for a list of the core meta modules.
+ */
 $wgAPIMetaModules = array();
+
+/**
+ * API Query prop module extensions.
+ * Associative array mapping properties module name to class name.
+ * Extension modules may override the core modules.
+ *
+ * See ApiQuery::$QueryPropModules for a list of the core prop modules.
+ */
 $wgAPIPropModules = array();
+
+/**
+ * API Query list module extensions.
+ * Associative array mapping list module name to class name.
+ * Extension modules may override the core modules.
+ *
+ * See ApiQuery::$QueryListModules for a list of the core list modules.
+ */
 $wgAPIListModules = array();
 
 /**
index a638287..2dda695 100644 (file)
@@ -1340,19 +1340,6 @@ function wfGetLangObj( $langcode = false ) {
        return $wgContLang;
 }
 
-/**
- * Old function when $wgBetterDirectionality existed
- * All usage removed, wfUILang can be removed in near future
- *
- * @deprecated since 1.18
- * @return Language
- */
-function wfUILang() {
-       wfDeprecated( __METHOD__, '1.18' );
-       global $wgLang;
-       return $wgLang;
-}
-
 /**
  * This is the function for getting translated interface messages.
  *
@@ -2619,25 +2606,6 @@ function wfPercent( $nr, $acc = 2, $round = true ) {
        return $round ? round( $ret, $acc ) . '%' : "$ret%";
 }
 
-/**
- * Find out whether or not a mixed variable exists in a string
- *
- * @deprecated Just use str(i)pos
- * @param $needle String
- * @param $str String
- * @param $insensitive Boolean
- * @return Boolean
- */
-function in_string( $needle, $str, $insensitive = false ) {
-       wfDeprecated( __METHOD__, '1.21' );
-       $func = 'strpos';
-       if ( $insensitive ) {
-               $func = 'stripos';
-       }
-
-       return $func( $str, $needle ) !== false;
-}
-
 /**
  * Safety wrapper around ini_get() for boolean settings.
  * The values returned from ini_get() are pre-normalized for settings
@@ -3712,15 +3680,6 @@ function wfLocalFile( $title ) {
        return RepoGroup::singleton()->getLocalRepo()->newFile( $title );
 }
 
-/**
- * Stream a file to the browser. Back-compat alias for StreamFile::stream()
- * @deprecated since 1.19
- */
-function wfStreamFile( $fname, $headers = array() ) {
-       wfDeprecated( __FUNCTION__, '1.19' );
-       StreamFile::stream( $fname, $headers );
-}
-
 /**
  * Should low-performance queries be disabled?
  *
@@ -3848,23 +3807,6 @@ function wfCountDown( $n ) {
        echo "\n";
 }
 
-/**
- * Generate a random 32-character hexadecimal token.
- * @param $salt Mixed: some sort of salt, if necessary, to add to random
- *              characters before hashing.
- * @return string
- * @codeCoverageIgnore
- * @deprecated since 1.20; Please use MWCryptRand for security purposes and
- * wfRandomString for pseudo-random strings
- * @warning This method is NOT secure. Additionally it has many callers that
- * use it for pseudo-random purposes.
- */
-function wfGenerateToken( $salt = '' ) {
-       wfDeprecated( __METHOD__, '1.20' );
-       $salt = serialize( $salt );
-       return md5( mt_rand( 0, 0x7fffffff ) . $salt );
-}
-
 /**
  * Replace all invalid characters with -
  * Additional characters can be defined in $wgIllegalFileChars (see bug 20489)
diff --git a/includes/Metadata.php b/includes/Metadata.php
deleted file mode 100644 (file)
index ea89f52..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-<?php
-/**
- * Base code to format metadata.
- *
- * Copyright 2004, Evan Prodromou <evan@wikitravel.org>.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @author Evan Prodromou <evan@wikitravel.org>
- * @file
- */
-
-abstract class RdfMetaData {
-       const RDF_TYPE_PREFS = 'application/rdf+xml,text/xml;q=0.7,application/xml;q=0.5,text/rdf;q=0.1';
-
-       /**
-        * Constructor
-        * @param Page $page
-        */
-       public function __construct( Page $page ) {
-               $this->mArticle = $page;
-       }
-
-       abstract public function show();
-
-       protected function setup() {
-               global $wgOut, $wgRequest;
-
-               $httpaccept = isset( $_SERVER['HTTP_ACCEPT'] ) ? $_SERVER['HTTP_ACCEPT'] : null;
-               $rdftype = wfNegotiateType(
-                       wfAcceptToPrefs( $httpaccept ),
-                       wfAcceptToPrefs( self::RDF_TYPE_PREFS )
-               );
-
-               if ( !$rdftype ) {
-                       throw new HttpError( 406, wfMessage( 'notacceptable' ) );
-               }
-
-               $wgOut->disable();
-               $wgRequest->response()->header( "Content-type: {$rdftype}; charset=utf-8" );
-               $wgOut->sendCacheControl();
-               return true;
-       }
-
-       protected function reallyFullUrl() {
-               return $this->mArticle->getTitle()->getFullURL();
-       }
-
-       protected function basics() {
-               global $wgLanguageCode, $wgSitename;
-
-               $this->element( 'title', $this->mArticle->getTitle()->getText() );
-               $this->pageOrString( 'publisher', wfMessage( 'aboutpage' )->text(), $wgSitename );
-               $this->element( 'language', $wgLanguageCode );
-               $this->element( 'type', 'Text' );
-               $this->element( 'format', 'text/html' );
-               $this->element( 'identifier', $this->reallyFullUrl() );
-               $this->element( 'date', $this->date( $this->mArticle->getTimestamp() ) );
-
-               $lastEditor = User::newFromId( $this->mArticle->getUser() );
-               $this->person( 'creator', $lastEditor );
-
-               foreach ( $this->mArticle->getContributors() as $user ) {
-                       $this->person( 'contributor', $user );
-               }
-
-               $this->rights();
-       }
-
-       protected function element( $name, $value ) {
-               $value = htmlspecialchars( $value );
-               print "\t\t<dc:{$name}>{$value}</dc:{$name}>\n";
-       }
-
-       protected function date( $timestamp ) {
-               return substr( $timestamp, 0, 4 ) . '-'
-                       . substr( $timestamp, 4, 2 ) . '-'
-                       . substr( $timestamp, 6, 2 );
-       }
-
-       protected function pageOrString( $name, $page, $str ) {
-               if ( $page instanceof Title ) {
-                       $nt = $page;
-               } else {
-                       $nt = Title::newFromText( $page );
-               }
-
-               if ( !$nt || $nt->getArticleID() == 0 ) {
-                       $this->element( $name, $str );
-               } else {
-                       $this->page( $name, $nt );
-               }
-       }
-
-       /**
-        * @param string $name
-        * @param Title $title
-        */
-       protected function page( $name, $title ) {
-               $this->url( $name, $title->getFullURL() );
-       }
-
-       protected function url( $name, $url ) {
-               $url = htmlspecialchars( $url );
-               print "\t\t<dc:{$name} rdf:resource=\"{$url}\" />\n";
-       }
-
-       protected function person( $name, User $user ) {
-               global $wgHiddenPrefs;
-
-               if ( $user->isAnon() ) {
-                       $this->element( $name, wfMessage( 'anonymous' )->numParams( 1 )->text() );
-               } else {
-                       $real = $user->getRealName();
-                       if ( $real && !in_array( 'realname', $wgHiddenPrefs ) ) {
-                               $this->element( $name, $real );
-                       } else {
-                               $userName = $user->getName();
-                               $this->pageOrString(
-                                       $name,
-                                       $user->getUserPage(),
-                                       wfMessage( 'siteuser', $userName, $userName )->text()
-                               );
-                       }
-               }
-       }
-
-       /**
-        * Takes an arg, for future enhancement with different rights for
-        * different pages.
-        */
-       protected function rights() {
-               global $wgRightsPage, $wgRightsUrl, $wgRightsText;
-
-               if ( $wgRightsPage && ( $nt = Title::newFromText( $wgRightsPage ) )
-                       && ( $nt->getArticleID() != 0 ) ) {
-                       $this->page( 'rights', $nt );
-               } elseif ( $wgRightsUrl ) {
-                       $this->url( 'rights', $wgRightsUrl );
-               } elseif ( $wgRightsText ) {
-                       $this->element( 'rights', $wgRightsText );
-               }
-       }
-
-       protected function getTerms( $url ) {
-               global $wgLicenseTerms;
-
-               if ( $wgLicenseTerms ) {
-                       return $wgLicenseTerms;
-               } else {
-                       $known = $this->getKnownLicenses();
-                       if ( isset( $known[$url] ) ) {
-                               return $known[$url];
-                       } else {
-                               return array();
-                       }
-               }
-       }
-
-       protected function getKnownLicenses() {
-               $ccLicenses = array( 'by', 'by-nd', 'by-nd-nc', 'by-nc',
-                                                       'by-nc-sa', 'by-sa' );
-               $ccVersions = array( '1.0', '2.0' );
-               $knownLicenses = array();
-
-               foreach ( $ccVersions as $version ) {
-                       foreach ( $ccLicenses as $license ) {
-                               if ( $version == '2.0' && substr( $license, 0, 2 ) != 'by' ) {
-                                       # 2.0 dropped the non-attribs licenses
-                                       continue;
-                               }
-                               $lurl = "http://creativecommons.org/licenses/{$license}/{$version}/";
-                               $knownLicenses[$lurl] = explode( '-', $license );
-                               $knownLicenses[$lurl][] = 're';
-                               $knownLicenses[$lurl][] = 'di';
-                               $knownLicenses[$lurl][] = 'no';
-                               if ( !in_array( 'nd', $knownLicenses[$lurl] ) ) {
-                                       $knownLicenses[$lurl][] = 'de';
-                               }
-                       }
-               }
-
-               /* Handle the GPL and LGPL, too. */
-
-               $knownLicenses['http://creativecommons.org/licenses/GPL/2.0/'] =
-                       array( 'de', 're', 'di', 'no', 'sa', 'sc' );
-               $knownLicenses['http://creativecommons.org/licenses/LGPL/2.1/'] =
-                       array( 'de', 're', 'di', 'no', 'sa', 'sc' );
-               $knownLicenses['http://www.gnu.org/copyleft/fdl.html'] =
-                       array( 'de', 're', 'di', 'no', 'sa', 'sc' );
-
-               return $knownLicenses;
-       }
-}
index 5413f30..e7eab17 100644 (file)
@@ -1455,7 +1455,6 @@ class Preferences {
                        # If users have saved a value for a preference which has subsequently been disabled
                        # via $wgHiddenPrefs, we don't want to destroy that setting in case the preference
                        # is subsequently re-enabled
-                       # TODO: maintenance script to actually delete these
                        foreach ( $wgHiddenPrefs as $pref ) {
                                # If the user has not set a non-default value here, the default will be returned
                                # and subsequently discarded
index 5fab9dc..9a6e6b9 100644 (file)
@@ -154,19 +154,6 @@ class MediaWiki {
                return $action;
        }
 
-       /**
-        * Create an Article object of the appropriate class for the given page.
-        *
-        * @deprecated in 1.18; use Article::newFromTitle() instead
-        * @param $title Title
-        * @param $context IContextSource
-        * @return Article object
-        */
-       public static function articleFromTitle( $title, IContextSource $context ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return Article::newFromTitle( $title, $context );
-       }
-
        /**
         * Performs the request.
         * - bad titles
index 8c035aa..5fc5a38 100644 (file)
@@ -3334,22 +3334,6 @@ class WikiPage implements Page, IDBAccessObject {
                return $this->mTitle->getTemplateLinksFrom();
        }
 
-       /**
-        * Perform article updates on a special page creation.
-        *
-        * @param $rev Revision object
-        *
-        * @todo This is a shitty interface function. Kill it and replace the
-        * other shitty functions like doEditUpdates and such so it's not needed
-        * anymore.
-        * @deprecated since 1.18, use doEditUpdates()
-        */
-       public function createUpdates( $rev ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               global $wgUser;
-               $this->doEditUpdates( $rev, $wgUser, array( 'created' => true ) );
-       }
-
        /**
         * This function is called right before saving the wikitext,
         * so we can do things like signatures and links-in-context.
index 32a03f1..eb51095 100644 (file)
@@ -608,6 +608,15 @@ abstract class ApiQueryBase extends ApiBase {
 
                return $errors;
        }
+
+       /**
+        * Check whether the current user has permission to view revision-deleted
+        * fields.
+        * @return bool
+        */
+       public function userCanSeeRevDel() {
+               return $this->getUser()->isAllowedAny( 'deletedhistory', 'deletedtext', 'suppressrevision' );
+       }
 }
 
 /**
index 4e4b2cc..7585ba7 100644 (file)
@@ -66,6 +66,11 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                        $fld_token = false;
                }
 
+               // If user can't undelete, no tokens
+               if ( !$user->isAllowed( 'undelete' ) ) {
+                       $fld_token = false;
+               }
+
                $result = $this->getResult();
                $pageSet = $this->getPageSet();
                $titles = $pageSet->getTitles();
@@ -101,8 +106,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                }
 
                $this->addTables( 'archive' );
-               $this->addWhere( 'ar_deleted = 0' );
-               $this->addFields( array( 'ar_title', 'ar_namespace', 'ar_timestamp' ) );
+               $this->addFields( array( 'ar_title', 'ar_namespace', 'ar_timestamp', 'ar_deleted' ) );
 
                $this->addFieldsIf( 'ar_parent_id', $fld_parentid );
                $this->addFieldsIf( 'ar_rev_id', $fld_revid );
@@ -131,11 +135,13 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
 
                if ( $fld_content ) {
                        $this->addTables( 'text' );
+                       $this->addJoinConds(
+                               array( 'text' => array( 'INNER JOIN', array( 'ar_text_id=old_id' ) ) )
+                       );
                        $this->addFields( array( 'ar_text', 'ar_text_id', 'old_text', 'old_flags' ) );
-                       $this->addWhere( 'ar_text_id = old_id' );
 
                        // This also means stricter restrictions
-                       if ( !$user->isAllowed( 'undelete' ) ) {
+                       if ( !$user->isAllowedAny( 'undelete', 'deletedtext' ) ) {
                                $this->dieUsage(
                                        'You don\'t have permission to view deleted revision content',
                                        'permissiondenied'
@@ -188,6 +194,22 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                                $db->addQuotes( $params['excludeuser'] ) );
                }
 
+               if ( !is_null( $params['user'] ) || !is_null( $params['excludeuser'] ) ) {
+                       // Paranoia: avoid brute force searches (bug 17342)
+                       // (shouldn't be able to get here without 'deletedhistory', but
+                       // check it again just in case)
+                       if ( !$user->isAllowed( 'deletedhistory' ) ) {
+                               $bitmask = Revision::DELETED_USER;
+                       } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+                               $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
+                       } else {
+                               $bitmask = 0;
+                       }
+                       if ( $bitmask ) {
+                               $this->addWhere( $db->bitAnd( 'ar_deleted', $bitmask ) . " != $bitmask" );
+                       }
+               }
+
                if ( !is_null( $params['continue'] ) && ( $mode == 'all' || $mode == 'revs' ) ) {
                        $cont = explode( '|', $params['continue'] );
                        $this->dieContinueUsageIf( count( $cont ) != 3 );
@@ -243,6 +265,8 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                        }
 
                        $rev = array();
+                       $anyHidden = false;
+
                        $rev['timestamp'] = wfTimestamp( TS_ISO_8601, $row->ar_timestamp );
                        if ( $fld_revid ) {
                                $rev['revid'] = intval( $row->ar_rev_id );
@@ -250,21 +274,37 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                        if ( $fld_parentid && !is_null( $row->ar_parent_id ) ) {
                                $rev['parentid'] = intval( $row->ar_parent_id );
                        }
-                       if ( $fld_user ) {
-                               $rev['user'] = $row->ar_user_text;
-                       }
-                       if ( $fld_userid ) {
-                               $rev['userid'] = $row->ar_user;
-                       }
-                       if ( $fld_comment ) {
-                               $rev['comment'] = $row->ar_comment;
+                       if ( $fld_user || $fld_userid ) {
+                               if ( $row->ar_deleted & Revision::DELETED_USER ) {
+                                       $rev['userhidden'] = '';
+                                       $anyHidden = true;
+                               }
+                               if ( Revision::userCanBitfield( $row->ar_deleted, Revision::DELETED_USER, $user ) ) {
+                                       if ( $fld_user ) {
+                                               $rev['user'] = $row->ar_user_text;
+                                       }
+                                       if ( $fld_userid ) {
+                                               $rev['userid'] = $row->ar_user;
+                                       }
+                               }
                        }
 
-                       $title = Title::makeTitle( $row->ar_namespace, $row->ar_title );
-
-                       if ( $fld_parsedcomment ) {
-                               $rev['parsedcomment'] = Linker::formatComment( $row->ar_comment, $title );
+                       if ( $fld_comment || $fld_parsedcomment ) {
+                               if ( $row->ar_deleted & Revision::DELETED_COMMENT ) {
+                                       $rev['commenthidden'] = '';
+                                       $anyHidden = true;
+                               }
+                               if ( Revision::userCanBitfield( $row->ar_deleted, Revision::DELETED_COMMENT, $user ) ) {
+                                       if ( $fld_comment ) {
+                                               $rev['comment'] = $row->ar_comment;
+                                       }
+                                       if ( $fld_parsedcomment ) {
+                                               $title = Title::makeTitle( $row->ar_namespace, $row->ar_title );
+                                               $rev['parsedcomment'] = Linker::formatComment( $row->ar_comment, $title );
+                                       }
+                               }
                        }
+
                        if ( $fld_minor && $row->ar_minor_edit == 1 ) {
                                $rev['minor'] = '';
                        }
@@ -272,14 +312,26 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                                $rev['len'] = $row->ar_len;
                        }
                        if ( $fld_sha1 ) {
-                               if ( $row->ar_sha1 != '' ) {
-                                       $rev['sha1'] = wfBaseConvert( $row->ar_sha1, 36, 16, 40 );
-                               } else {
-                                       $rev['sha1'] = '';
+                               if ( $row->ar_deleted & Revision::DELETED_TEXT ) {
+                                       $rev['sha1hidden'] = '';
+                                       $anyHidden = true;
+                               }
+                               if ( Revision::userCanBitfield( $row->ar_deleted, Revision::DELETED_TEXT, $user ) ) {
+                                       if ( $row->ar_sha1 != '' ) {
+                                               $rev['sha1'] = wfBaseConvert( $row->ar_sha1, 36, 16, 40 );
+                                       } else {
+                                               $rev['sha1'] = '';
+                                       }
                                }
                        }
                        if ( $fld_content ) {
-                               ApiResult::setContent( $rev, Revision::getRevisionText( $row ) );
+                               if ( $row->ar_deleted & Revision::DELETED_TEXT ) {
+                                       $rev['texthidden'] = '';
+                                       $anyHidden = true;
+                               }
+                               if ( Revision::userCanBitfield( $row->ar_deleted, Revision::DELETED_TEXT, $user ) ) {
+                                       ApiResult::setContent( $rev, Revision::getRevisionText( $row ) );
+                               }
                        }
 
                        if ( $fld_tags ) {
@@ -292,11 +344,16 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                                }
                        }
 
+                       if ( $anyHidden && ( $row->ar_deleted & Revision::DELETED_RESTRICTED ) ) {
+                               $rev['suppressed'] = '';
+                       }
+
                        if ( !isset( $pageMap[$row->ar_namespace][$row->ar_title] ) ) {
                                $pageID = $newPageID++;
                                $pageMap[$row->ar_namespace][$row->ar_title] = $pageID;
                                $a['revisions'] = array( $rev );
                                $result->setIndexedTagName( $a['revisions'], 'rev' );
+                               $title = Title::makeTitle( $row->ar_namespace, $row->ar_title );
                                ApiQueryBase::addTitleInfo( $a, $title );
                                if ( $fld_token ) {
                                        $a['token'] = $token;
index e2c9964..bcbc642 100644 (file)
@@ -66,6 +66,7 @@ class ApiQueryFilearchive extends ApiQueryBase {
 
                $this->addTables( 'filearchive' );
 
+               $this->addFields( ArchivedFile::selectFields() );
                $this->addFields( array( 'fa_name', 'fa_deleted' ) );
                $this->addFieldsIf( 'fa_sha1', $fld_sha1 );
                $this->addFieldsIf( 'fa_timestamp', $fld_timestamp );
@@ -121,14 +122,16 @@ class ApiQueryFilearchive extends ApiQueryBase {
                        }
                }
 
-               if ( !$user->isAllowed( 'suppressrevision' ) ) {
-                       // Filter out revisions that the user is not allowed to see. There
-                       // is no way to indicate that we have skipped stuff because the
-                       // continuation parameter is fa_name
-
-                       // Note that this field is unindexed. This should however not be
-                       // a big problem as files with fa_deleted are rare
-                       $this->addWhereFld( 'fa_deleted', 0 );
+               // Exclude files this user can't view.
+               if ( !$user->isAllowed( 'deletedtext' ) ) {
+                       $bitmask = File::DELETED_FILE;
+               } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+                       $bitmask = File::DELETED_FILE | File::DELETED_RESTRICTED;
+               } else {
+                       $bitmask = 0;
+               }
+               if ( $bitmask ) {
+                       $this->addWhere( $this->getDB()->bitAnd( 'fa_deleted', $bitmask ) . " != $bitmask" );
                }
 
                $limit = $params['limit'];
@@ -153,16 +156,27 @@ class ApiQueryFilearchive extends ApiQueryBase {
                        $title = Title::makeTitle( NS_FILE, $row->fa_name );
                        self::addTitleInfo( $file, $title );
 
+                       if ( $fld_description &&
+                               Revision::userCanBitfield( $row->fa_deleted, File::DELETED_COMMENT, $user )
+                       ) {
+                               $file['description'] = $row->fa_description;
+                               if ( isset( $prop['parseddescription'] ) ) {
+                                       $file['parseddescription'] = Linker::formatComment(
+                                               $row->fa_description, $title );
+                               }
+                       }
+                       if ( $fld_user &&
+                               Revision::userCanBitfield( $row->fa_deleted, File::DELETED_USER, $user )
+                       ) {
+                               $file['userid'] = $row->fa_user;
+                               $file['user'] = $row->fa_user_text;
+                       }
                        if ( $fld_sha1 ) {
                                $file['sha1'] = wfBaseConvert( $row->fa_sha1, 36, 16, 40 );
                        }
                        if ( $fld_timestamp ) {
                                $file['timestamp'] = wfTimestamp( TS_ISO_8601, $row->fa_timestamp );
                        }
-                       if ( $fld_user ) {
-                               $file['userid'] = $row->fa_user;
-                               $file['user'] = $row->fa_user_text;
-                       }
                        if ( $fld_size || $fld_dimensions ) {
                                $file['size'] = $row->fa_size;
 
@@ -174,13 +188,6 @@ class ApiQueryFilearchive extends ApiQueryBase {
                                $file['height'] = $row->fa_height;
                                $file['width'] = $row->fa_width;
                        }
-                       if ( $fld_description ) {
-                               $file['description'] = $row->fa_description;
-                               if ( isset( $prop['parseddescription'] ) ) {
-                                       $file['parseddescription'] = Linker::formatComment(
-                                               $row->fa_description, $title );
-                               }
-                       }
                        if ( $fld_mediatype ) {
                                $file['mediatype'] = $row->fa_media_type;
                        }
index bf11a76..cfc858a 100644 (file)
@@ -50,11 +50,12 @@ class ApiQueryImageInfo extends ApiQueryBase {
 
                $scale = $this->getScale( $params );
 
-               $metadataOpts = array(
+               $opts = array(
                        'version' => $params['metadataversion'],
                        'language' => $params['extmetadatalanguage'],
                        'multilang' => $params['extmetadatamultilang'],
                        'extmetadatafilter' => $params['extmetadatafilter'],
+                       'revdelUser' => $this->getUser(),
                );
 
                $pageIds = $this->getPageSet()->getAllTitlesByNamespace();
@@ -78,13 +79,21 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                }
                        }
 
-                       $result = $this->getResult();
-                       //search only inside the local repo
+                       $user = $this->getUser();
+                       $findTitles = array_map( function ( $title ) use ( $user ) {
+                               return array(
+                                       'title' => $title,
+                                       'private' => $user,
+                               );
+                       }, $titles );
+
                        if ( $params['localonly'] ) {
-                               $images = RepoGroup::singleton()->getLocalRepo()->findFiles( $titles );
+                               $images = RepoGroup::singleton()->getLocalRepo()->findFiles( $findTitles );
                        } else {
-                               $images = RepoGroup::singleton()->findFiles( $titles );
+                               $images = RepoGroup::singleton()->findFiles( $findTitles );
                        }
+
+                       $result = $this->getResult();
                        foreach ( $titles as $title ) {
                                $pageId = $pageIds[NS_FILE][$title];
                                $start = $title === $fromTitle ? $fromTimestamp : $params['start'];
@@ -154,7 +163,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
 
                                        $fit = $this->addPageSubItem( $pageId,
                                                self::getInfo( $img, $prop, $result,
-                                                       $finalThumbParams, $metadataOpts
+                                                       $finalThumbParams, $opts
                                                )
                                        );
                                        if ( !$fit ) {
@@ -189,7 +198,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                        $fit = self::getTransformCount() < self::TRANSFORM_LIMIT &&
                                                $this->addPageSubItem( $pageId,
                                                        self::getInfo( $oldie, $prop, $result,
-                                                               $finalThumbParams, $metadataOpts
+                                                               $finalThumbParams, $opts
                                                        )
                                                );
                                        if ( !$fit ) {
@@ -310,25 +319,29 @@ class ApiQueryImageInfo extends ApiQueryBase {
         * @param array $prop of properties to get (in the keys)
         * @param $result ApiResult object
         * @param array $thumbParams containing 'width' and 'height' items, or null
-        * @param array|bool|string $metadataOpts Options for metadata fetching.
+        * @param array|bool|string $opts Options for data fetching.
         *   This is an array consisting of the keys:
         *    'version': The metadata version for the metadata option
         *    'language': The language for extmetadata property
         *    'multilang': Return all translations in extmetadata property
+        *    'revdelUser': User to use when checking whether to show revision-deleted fields.
         * @return Array: result array
         */
-       static function getInfo( $file, $prop, $result, $thumbParams = null, $metadataOpts = false ) {
+       static function getInfo( $file, $prop, $result, $thumbParams = null, $opts = false ) {
                global $wgContLang;
 
-               if ( !$metadataOpts || is_string( $metadataOpts ) ) {
-                       $metadataOpts = array(
-                               'version' => $metadataOpts ?: 'latest',
+               $anyHidden = false;
+
+               if ( !$opts || is_string( $opts ) ) {
+                       $opts = array(
+                               'version' => $opts ?: 'latest',
                                'language' => $wgContLang,
                                'multilang' => false,
                                'extmetadatafilter' => array(),
+                               'revdelUser' => null,
                        );
                }
-               $version = $metadataOpts['version'];
+               $version = $opts['version'];
                $vals = array();
                // Timestamp is shown even if the file is revdelete'd in interface
                // so do same here.
@@ -336,13 +349,27 @@ class ApiQueryImageInfo extends ApiQueryBase {
                        $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $file->getTimestamp() );
                }
 
+               // Handle external callers who don't pass revdelUser
+               if ( isset( $opts['revdelUser'] ) && $opts['revdelUser'] ) {
+                       $revdelUser = $opts['revdelUser'];
+                       $canShowField = function ( $field ) use ( $file, $revdelUser ) {
+                               return $file->userCan( $field, $revdelUser );
+                       };
+               } else {
+                       $canShowField = function ( $field ) use ( $file ) {
+                               return !$file->isDeleted( $field );
+                       };
+               }
+
                $user = isset( $prop['user'] );
                $userid = isset( $prop['userid'] );
 
                if ( $user || $userid ) {
                        if ( $file->isDeleted( File::DELETED_USER ) ) {
                                $vals['userhidden'] = '';
-                       } else {
+                               $anyHidden = true;
+                       }
+                       if ( $canShowField( File::DELETED_USER ) ) {
                                if ( $user ) {
                                        $vals['user'] = $file->getUser();
                                }
@@ -374,13 +401,15 @@ class ApiQueryImageInfo extends ApiQueryBase {
                if ( $pcomment || $comment ) {
                        if ( $file->isDeleted( File::DELETED_COMMENT ) ) {
                                $vals['commenthidden'] = '';
-                       } else {
+                               $anyHidden = true;
+                       }
+                       if ( $canShowField( File::DELETED_COMMENT ) ) {
                                if ( $pcomment ) {
                                        $vals['parsedcomment'] = Linker::formatComment(
-                                               $file->getDescription(), $file->getTitle() );
+                                               $file->getDescription( File::RAW ), $file->getTitle() );
                                }
                                if ( $comment ) {
-                                       $vals['comment'] = $file->getDescription();
+                                       $vals['comment'] = $file->getDescription( File::RAW );
                                }
                        }
                }
@@ -396,11 +425,20 @@ class ApiQueryImageInfo extends ApiQueryBase {
                $bitdepth = isset( $prop['bitdepth'] );
                $uploadwarning = isset( $prop['uploadwarning'] );
 
-               if ( ( $canonicaltitle || $url || $sha1 || $meta || $mime || $mediatype || $archive || $bitdepth )
-                       && $file->isDeleted( File::DELETED_FILE )
-               ) {
+               if ( $uploadwarning ) {
+                       $vals['html'] = SpecialUpload::getExistsWarning( UploadBase::getExistsWarning( $file ) );
+               }
+
+               if ( $file->isDeleted( File::DELETED_FILE ) ) {
                        $vals['filehidden'] = '';
+                       $anyHidden = true;
+               }
+
+               if ( $anyHidden && $file->isDeleted( File::DELETED_RESTRICTED ) ) {
+                       $vals['suppressed'] = true;
+               }
 
+               if ( !$canShowField( File::DELETED_FILE ) ) {
                        //Early return, tidier than indenting all following things one level
                        return $vals;
                }
@@ -458,12 +496,12 @@ class ApiQueryImageInfo extends ApiQueryBase {
                        // start with a letter, and all the values are strings.
                        // Thus there should be no issue with format=xml.
                        $format = new FormatMetadata;
-                       $format->setSingleLanguage( !$metadataOpts['multilang'] );
-                       $format->getContext()->setLanguage( $metadataOpts['language'] );
+                       $format->setSingleLanguage( !$opts['multilang'] );
+                       $format->getContext()->setLanguage( $opts['language'] );
                        $extmetaArray = $format->fetchExtendedMetadata( $file );
-                       if ( $metadataOpts['extmetadatafilter'] ) {
+                       if ( $opts['extmetadatafilter'] ) {
                                $extmetaArray = array_intersect_key(
-                                       $extmetaArray, array_flip( $metadataOpts['extmetadatafilter'] )
+                                       $extmetaArray, array_flip( $opts['extmetadatafilter'] )
                                );
                        }
                        $vals['extmetadata'] = $extmetaArray;
@@ -485,10 +523,6 @@ class ApiQueryImageInfo extends ApiQueryBase {
                        $vals['bitdepth'] = $file->getBitDepth();
                }
 
-               if ( $uploadwarning ) {
-                       $vals['html'] = SpecialUpload::getExistsWarning( UploadBase::getExistsWarning( $file ) );
-               }
-
                return $vals;
        }
 
@@ -528,6 +562,10 @@ class ApiQueryImageInfo extends ApiQueryBase {
        }
 
        public function getCacheMode( $params ) {
+               if ( $this->userCanSeeRevDel() ) {
+                       return 'private';
+               }
+
                return 'public';
        }
 
index e4ce256..1578775 100644 (file)
@@ -158,11 +158,23 @@ class ApiQueryLogEvents extends ApiQueryBase {
                }
 
                // Paranoia: avoid brute force searches (bug 17342)
-               if ( !is_null( $title ) ) {
-                       $this->addWhere( $db->bitAnd( 'log_deleted', LogPage::DELETED_ACTION ) . ' = 0' );
-               }
-               if ( !is_null( $user ) ) {
-                       $this->addWhere( $db->bitAnd( 'log_deleted', LogPage::DELETED_USER ) . ' = 0' );
+               if ( !is_null( $title ) || !is_null( $user ) ) {
+                       if ( !$this->getUser()->isAllowed( 'deletedhistory' ) ) {
+                               $titleBits = LogPage::DELETED_ACTION;
+                               $userBits = LogPage::DELETED_USER;
+                       } elseif ( !$this->getUser()->isAllowed( 'suppressrevision' ) ) {
+                               $titleBits = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
+                               $userBits = LogPage::DELETED_USER | LogPage::DELETED_RESTRICTED;
+                       } else {
+                               $titleBits = 0;
+                               $userBits = 0;
+                       }
+                       if ( !is_null( $title ) && $titleBits ) {
+                               $this->addWhere( $db->bitAnd( 'log_deleted', $titleBits ) . " != $titleBits" );
+                       }
+                       if ( !is_null( $user ) && $userBits ) {
+                               $this->addWhere( $db->bitAnd( 'log_deleted', $userBits ) . " != $userBits" );
+                       }
                }
 
                $count = 0;
@@ -296,6 +308,8 @@ class ApiQueryLogEvents extends ApiQueryBase {
        private function extractRowInfo( $row ) {
                $logEntry = DatabaseLogEntry::newFromRow( $row );
                $vals = array();
+               $anyHidden = false;
+               $user = $this->getUser();
 
                if ( $this->fld_ids ) {
                        $vals['logid'] = intval( $row->log_id );
@@ -305,16 +319,29 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        $title = Title::makeTitle( $row->log_namespace, $row->log_title );
                }
 
-               if ( $this->fld_title || $this->fld_ids ) {
+               if ( $this->fld_title || $this->fld_ids || $this->fld_details && $row->log_params !== '' ) {
                        if ( LogEventsList::isDeleted( $row, LogPage::DELETED_ACTION ) ) {
                                $vals['actionhidden'] = '';
-                       } else {
+                               $anyHidden = true;
+                       }
+                       if ( LogEventsList::userCan( $row, LogPage::DELETED_ACTION, $user ) ) {
                                if ( $this->fld_title ) {
                                        ApiQueryBase::addTitleInfo( $vals, $title );
                                }
                                if ( $this->fld_ids ) {
                                        $vals['pageid'] = intval( $row->page_id );
                                }
+                               if ( $this->fld_details && $row->log_params !== '' ) {
+                                       self::addLogParams(
+                                               $this->getResult(),
+                                               $vals,
+                                               $logEntry->getParameters(),
+                                               $logEntry->getType(),
+                                               $logEntry->getSubtype(),
+                                               $logEntry->getTimestamp(),
+                                               $logEntry->isLegacy()
+                                       );
+                               }
                        }
                }
 
@@ -323,26 +350,12 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        $vals['action'] = $row->log_action;
                }
 
-               if ( $this->fld_details && $row->log_params !== '' ) {
-                       if ( LogEventsList::isDeleted( $row, LogPage::DELETED_ACTION ) ) {
-                               $vals['actionhidden'] = '';
-                       } else {
-                               self::addLogParams(
-                                       $this->getResult(),
-                                       $vals,
-                                       $logEntry->getParameters(),
-                                       $logEntry->getType(),
-                                       $logEntry->getSubtype(),
-                                       $logEntry->getTimestamp(),
-                                       $logEntry->isLegacy()
-                               );
-                       }
-               }
-
                if ( $this->fld_user || $this->fld_userid ) {
                        if ( LogEventsList::isDeleted( $row, LogPage::DELETED_USER ) ) {
                                $vals['userhidden'] = '';
-                       } else {
+                               $anyHidden = true;
+                       }
+                       if ( LogEventsList::userCan( $row, LogPage::DELETED_USER, $user ) ) {
                                if ( $this->fld_user ) {
                                        $vals['user'] = $row->user_name === null ? $row->log_user_text : $row->user_name;
                                }
@@ -362,7 +375,9 @@ class ApiQueryLogEvents extends ApiQueryBase {
                if ( ( $this->fld_comment || $this->fld_parsedcomment ) && isset( $row->log_comment ) ) {
                        if ( LogEventsList::isDeleted( $row, LogPage::DELETED_COMMENT ) ) {
                                $vals['commenthidden'] = '';
-                       } else {
+                               $anyHidden = true;
+                       }
+                       if ( LogEventsList::userCan( $row, LogPage::DELETED_COMMENT, $user ) ) {
                                if ( $this->fld_comment ) {
                                        $vals['comment'] = $row->log_comment;
                                }
@@ -383,10 +398,17 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        }
                }
 
+               if ( $anyHidden && LogEventsList::isDeleted( $row, LogPage::DELETED_RESTRICTED ) ) {
+                       $vals['suppressed'] = '';
+               }
+
                return $vals;
        }
 
        public function getCacheMode( $params ) {
+               if ( $this->userCanSeeRevDel() ) {
+                       return 'private';
+               }
                if ( !is_null( $params['prop'] ) && in_array( 'parsedcomment', $params['prop'] ) ) {
                        // formatComment() calls wfMessage() among other things
                        return 'anon-public-user-private';
index b298003..6ccc288 100644 (file)
@@ -145,7 +145,6 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                /* Build our basic query. Namely, something along the lines of:
                 * SELECT * FROM recentchanges WHERE rc_timestamp > $start
                 *              AND rc_timestamp < $end AND rc_namespace = $namespace
-                *              AND rc_deleted = 0
                 */
                $this->addTables( 'recentchanges' );
                $index = array( 'recentchanges' => 'rc_timestamp' ); // May change
@@ -176,7 +175,6 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                ) );
 
                $this->addWhereFld( 'rc_namespace', $params['namespace'] );
-               $this->addWhereFld( 'rc_deleted', 0 );
 
                if ( !is_null( $params['type'] ) ) {
                        $this->addWhereFld( 'rc_type', $this->parseRCType( $params['type'] ) );
@@ -326,6 +324,36 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                        $this->addWhereFld( 'ct_tag', $params['tag'] );
                }
 
+               // Paranoia: avoid brute force searches (bug 17342)
+               if ( !is_null( $params['user'] ) || !is_null( $params['excludeuser'] ) ) {
+                       if ( !$user->isAllowed( 'deletedhistory' ) ) {
+                               $bitmask = Revision::DELETED_USER;
+                       } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+                               $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
+                       } else {
+                               $bitmask = 0;
+                       }
+                       if ( $bitmask ) {
+                               $this->addWhere( $this->getDB()->bitAnd( 'rc_deleted', $bitmask ) . " != $bitmask" );
+                       }
+               }
+               if ( $this->getRequest()->getCheck( 'namespace' ) ) {
+                       // LogPage::DELETED_ACTION hides the affected page, too.
+                       if ( !$user->isAllowed( 'deletedhistory' ) ) {
+                               $bitmask = LogPage::DELETED_ACTION;
+                       } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+                               $bitmask = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
+                       } else {
+                               $bitmask = 0;
+                       }
+                       if ( $bitmask ) {
+                               $this->addWhere( $this->getDB()->makeList( array(
+                                       'rc_type != ' . RC_LOG,
+                                       $this->getDB()->bitAnd( 'rc_deleted', $bitmask ) . " != $bitmask",
+                               ), LIST_OR ) );
+                       }
+               }
+
                $this->token = $params['token'];
                $this->addOption( 'LIMIT', $params['limit'] + 1 );
                $this->addOption( 'USE INDEX', $index );
@@ -389,6 +417,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
        public function extractRowInfo( $row ) {
                /* Determine the title of the page that has been changed. */
                $title = Title::makeTitle( $row->rc_namespace, $row->rc_title );
+               $user = $this->getUser();
 
                /* Our output data. */
                $vals = array();
@@ -419,32 +448,50 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                $vals['type'] = $type;
                }
 
+               $anyHidden = false;
+
                /* Create a new entry in the result for the title. */
-               if ( $this->fld_title ) {
-                       ApiQueryBase::addTitleInfo( $vals, $title );
+               if ( $this->fld_title || $this->fld_ids ) {
+                       if ( $type === RC_LOG && ( $row->rc_deleted & LogPage::DELETED_ACTION ) ) {
+                               $vals['actionhidden'] = '';
+                               $anyHidden = true;
+                       }
+                       if ( $type !== RC_LOG ||
+                               LogEventsList::userCanBitfield( $row->rc_deleted, LogPage::DELETED_ACTION, $user )
+                       ) {
+                               if ( $this->fld_title ) {
+                                       ApiQueryBase::addTitleInfo( $vals, $title );
+                               }
+                               if ( $this->fld_ids ) {
+                                       $vals['pageid'] = intval( $row->rc_cur_id );
+                                       $vals['revid'] = intval( $row->rc_this_oldid );
+                                       $vals['old_revid'] = intval( $row->rc_last_oldid );
+                               }
+                       }
                }
 
-               /* Add ids, such as rcid, pageid, revid, and oldid to the change's info. */
                if ( $this->fld_ids ) {
                        $vals['rcid'] = intval( $row->rc_id );
-                       $vals['pageid'] = intval( $row->rc_cur_id );
-                       $vals['revid'] = intval( $row->rc_this_oldid );
-                       $vals['old_revid'] = intval( $row->rc_last_oldid );
                }
 
-               /* Add user data and 'anon' flag, if use is anonymous. */
+               /* Add user data and 'anon' flag, if user is anonymous. */
                if ( $this->fld_user || $this->fld_userid ) {
-
-                       if ( $this->fld_user ) {
-                               $vals['user'] = $row->rc_user_text;
+                       if ( $row->rc_deleted & Revision::DELETED_USER ) {
+                               $vals['userhidden'] = '';
+                               $anyHidden = true;
                        }
+                       if ( Revision::userCanBitfield( $row->rc_deleted, Revision::DELETED_USER, $user ) ) {
+                               if ( $this->fld_user ) {
+                                       $vals['user'] = $row->rc_user_text;
+                               }
 
-                       if ( $this->fld_userid ) {
-                               $vals['userid'] = $row->rc_user;
-                       }
+                               if ( $this->fld_userid ) {
+                                       $vals['userid'] = $row->rc_user;
+                               }
 
-                       if ( !$row->rc_user ) {
-                               $vals['anon'] = '';
+                               if ( !$row->rc_user ) {
+                                       $vals['anon'] = '';
+                               }
                        }
                }
 
@@ -473,12 +520,20 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                }
 
                /* Add edit summary / log summary. */
-               if ( $this->fld_comment && isset( $row->rc_comment ) ) {
-                       $vals['comment'] = $row->rc_comment;
-               }
+               if ( $this->fld_comment || $this->fld_parsedcomment ) {
+                       if ( $row->rc_deleted & Revision::DELETED_COMMENT ) {
+                               $vals['commenthidden'] = '';
+                               $anyHidden = true;
+                       }
+                       if ( Revision::userCanBitfield( $row->rc_deleted, Revision::DELETED_COMMENT, $user ) ) {
+                               if ( $this->fld_comment && isset( $row->rc_comment ) ) {
+                                       $vals['comment'] = $row->rc_comment;
+                               }
 
-               if ( $this->fld_parsedcomment && isset( $row->rc_comment ) ) {
-                       $vals['parsedcomment'] = Linker::formatComment( $row->rc_comment, $title );
+                               if ( $this->fld_parsedcomment && isset( $row->rc_comment ) ) {
+                                       $vals['parsedcomment'] = Linker::formatComment( $row->rc_comment, $title );
+                               }
+                       }
                }
 
                if ( $this->fld_redirect ) {
@@ -492,23 +547,29 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                        $vals['patrolled'] = '';
                }
 
-               if ( $this->fld_patrolled && ChangesList::isUnpatrolled( $row, $this->getUser() ) ) {
+               if ( $this->fld_patrolled && ChangesList::isUnpatrolled( $row, $user ) ) {
                        $vals['unpatrolled'] = '';
                }
 
                if ( $this->fld_loginfo && $row->rc_type == RC_LOG ) {
-                       $vals['logid'] = intval( $row->rc_logid );
-                       $vals['logtype'] = $row->rc_log_type;
-                       $vals['logaction'] = $row->rc_log_action;
-                       $logEntry = DatabaseLogEntry::newFromRow( (array)$row );
-                       ApiQueryLogEvents::addLogParams(
-                               $this->getResult(),
-                               $vals,
-                               $logEntry->getParameters(),
-                               $logEntry->getType(),
-                               $logEntry->getSubtype(),
-                               $logEntry->getTimestamp()
-                       );
+                       if ( $row->rc_deleted & LogPage::DELETED_ACTION ) {
+                               $vals['actionhidden'] = '';
+                               $anyHidden = true;
+                       }
+                       if ( LogEventsList::userCanBitfield( $row->rc_deleted, LogPage::DELETED_ACTION, $user ) ) {
+                               $vals['logid'] = intval( $row->rc_logid );
+                               $vals['logtype'] = $row->rc_log_type;
+                               $vals['logaction'] = $row->rc_log_action;
+                               $logEntry = DatabaseLogEntry::newFromRow( (array)$row );
+                               ApiQueryLogEvents::addLogParams(
+                                       $this->getResult(),
+                                       $vals,
+                                       $logEntry->getParameters(),
+                                       $logEntry->getType(),
+                                       $logEntry->getSubtype(),
+                                       $logEntry->getTimestamp()
+                               );
+                       }
                }
 
                if ( $this->fld_tags ) {
@@ -522,15 +583,16 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                }
 
                if ( $this->fld_sha1 && $row->rev_sha1 !== null ) {
-                       // The RevDel check should currently never pass due to the
-                       // rc_deleted = 0 condition in the WHERE clause, but in case that
-                       // ever changes we check it here too.
                        if ( $row->rev_deleted & Revision::DELETED_TEXT ) {
                                $vals['sha1hidden'] = '';
-                       } elseif ( $row->rev_sha1 !== '' ) {
-                               $vals['sha1'] = wfBaseConvert( $row->rev_sha1, 36, 16, 40 );
-                       } else {
-                               $vals['sha1'] = '';
+                               $anyHidden = true;
+                       }
+                       if ( Revision::userCanBitfield( $row->rev_deleted, Revision::DELETED_TEXT, $user ) ) {
+                               if ( $row->rev_sha1 !== '' ) {
+                                       $vals['sha1'] = wfBaseConvert( $row->rev_sha1, 36, 16, 40 );
+                               } else {
+                                       $vals['sha1'] = '';
+                               }
                        }
                }
 
@@ -547,6 +609,10 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                        }
                }
 
+               if ( $anyHidden && ( $row->rc_deleted & Revision::DELETED_RESTRICTED ) ) {
+                       $vals['suppressed'] = '';
+               }
+
                return $vals;
        }
 
@@ -585,6 +651,9 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                if ( isset( $params['token'] ) ) {
                        return 'private';
                }
+               if ( $this->userCanSeeRevDel() ) {
+                       return 'private';
+               }
                if ( !is_null( $params['prop'] ) && in_array( 'parsedcomment', $params['prop'] ) ) {
                        // formatComment() calls wfMessage() among other things
                        return 'anon-public-user-private';
index ea992b3..bd5c512 100644 (file)
@@ -147,7 +147,7 @@ class ApiQueryRevisions extends ApiQueryBase {
                                if ( !$difftoRev ) {
                                        $this->dieUsageMsg( array( 'nosuchrevid', $params['diffto'] ) );
                                }
-                               if ( $difftoRev->isDeleted( Revision::DELETED_TEXT ) ) {
+                               if ( !$diffToRev->userCan( Revision::DELETED_TEXT, $this->getUser() ) ) {
                                        $this->setWarning( "Couldn't diff to r{$difftoRev->getID()}: content is hidden" );
                                        $params['diffto'] = null;
                                }
@@ -316,7 +316,16 @@ class ApiQueryRevisions extends ApiQueryBase {
                        }
                        if ( !is_null( $params['user'] ) || !is_null( $params['excludeuser'] ) ) {
                                // Paranoia: avoid brute force searches (bug 17342)
-                               $this->addWhere( $db->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0' );
+                               if ( !$this->getUser()->isAllowed( 'deletedhistory' ) ) {
+                                       $bitmask = Revision::DELETED_USER;
+                               } elseif ( !$this->getUser()->isAllowed( 'suppressrevision' ) ) {
+                                       $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
+                               } else {
+                                       $bitmask = 0;
+                               }
+                               if ( $bitmask ) {
+                                       $this->addWhere( $db->bitAnd( 'rev_deleted', $bitmask ) . " != $bitmask" );
+                               }
                        }
                } elseif ( $revCount > 0 ) {
                        $max = $this->getMain()->canApiHighLimits() ? $botMax : $userMax;
@@ -408,7 +417,9 @@ class ApiQueryRevisions extends ApiQueryBase {
        private function extractRowInfo( $row ) {
                $revision = new Revision( $row );
                $title = $revision->getTitle();
+               $user = $this->getUser();
                $vals = array();
+               $anyHidden = false;
 
                if ( $this->fld_ids ) {
                        $vals['revid'] = intval( $revision->getId() );
@@ -425,11 +436,13 @@ class ApiQueryRevisions extends ApiQueryBase {
                if ( $this->fld_user || $this->fld_userid ) {
                        if ( $revision->isDeleted( Revision::DELETED_USER ) ) {
                                $vals['userhidden'] = '';
-                       } else {
+                               $anyHidden = true;
+                       }
+                       if ( $revision->userCan( Revision::DELETED_USER, $user ) ) {
                                if ( $this->fld_user ) {
-                                       $vals['user'] = $revision->getUserText();
+                                       $vals['user'] = $revision->getRawUserText();
                                }
-                               $userid = $revision->getUser();
+                               $userid = $revision->getRawUser();
                                if ( !$userid ) {
                                        $vals['anon'] = '';
                                }
@@ -452,14 +465,18 @@ class ApiQueryRevisions extends ApiQueryBase {
                        }
                }
 
-               if ( $this->fld_sha1 && !$revision->isDeleted( Revision::DELETED_TEXT ) ) {
-                       if ( $revision->getSha1() != '' ) {
-                               $vals['sha1'] = wfBaseConvert( $revision->getSha1(), 36, 16, 40 );
-                       } else {
-                               $vals['sha1'] = '';
+               if ( $this->fld_sha1 ) {
+                       if ( $revision->isDeleted( Revision::DELETED_TEXT ) ) {
+                               $vals['sha1hidden'] = '';
+                               $anyHidden = true;
+                       }
+                       if ( $revision->userCan( Revision::DELETED_TEXT, $user ) ) {
+                               if ( $revision->getSha1() != '' ) {
+                                       $vals['sha1'] = wfBaseConvert( $revision->getSha1(), 36, 16, 40 );
+                               } else {
+                                       $vals['sha1'] = '';
+                               }
                        }
-               } elseif ( $this->fld_sha1 ) {
-                       $vals['sha1hidden'] = '';
                }
 
                if ( $this->fld_contentmodel ) {
@@ -469,8 +486,10 @@ class ApiQueryRevisions extends ApiQueryBase {
                if ( $this->fld_comment || $this->fld_parsedcomment ) {
                        if ( $revision->isDeleted( Revision::DELETED_COMMENT ) ) {
                                $vals['commenthidden'] = '';
-                       } else {
-                               $comment = $revision->getComment();
+                               $anyHidden = true;
+                       }
+                       if ( $revision->userCan( Revision::DELETED_COMMENT, $user ) ) {
+                               $comment = $revision->getRawComment();
 
                                if ( $this->fld_comment ) {
                                        $vals['comment'] = $comment;
@@ -507,7 +526,7 @@ class ApiQueryRevisions extends ApiQueryBase {
                $content = null;
                global $wgParser;
                if ( $this->fld_content || !is_null( $this->diffto ) || !is_null( $this->difftotext ) ) {
-                       $content = $revision->getContent();
+                       $content = $revision->getContent( Revision::FOR_THIS_USER, $this->getUser() );
                        // Expand templates after getting section content because
                        // template-added sections don't count and Parser::preprocess()
                        // will have less input
@@ -520,8 +539,14 @@ class ApiQueryRevisions extends ApiQueryBase {
                                        );
                                }
                        }
+                       if ( $revision->isDeleted( Revision::DELETED_TEXT ) ) {
+                               $vals['texthidden'] = '';
+                               $anyHidden = true;
+                       } elseif ( !$content ) {
+                               $vals['textmissing'] = '';
+                       }
                }
-               if ( $this->fld_content && $content && !$revision->isDeleted( Revision::DELETED_TEXT ) ) {
+               if ( $this->fld_content && $content ) {
                        $text = null;
 
                        if ( $this->generateXML ) {
@@ -596,21 +621,13 @@ class ApiQueryRevisions extends ApiQueryBase {
                        if ( $text !== false ) {
                                ApiResult::setContent( $vals, $text );
                        }
-               } elseif ( $this->fld_content ) {
-                       if ( $revision->isDeleted( Revision::DELETED_TEXT ) ) {
-                               $vals['texthidden'] = '';
-                       } else {
-                               $vals['textmissing'] = '';
-                       }
                }
 
-               if ( !is_null( $this->diffto ) || !is_null( $this->difftotext ) ) {
+               if ( $content && ( !is_null( $this->diffto ) || !is_null( $this->difftotext ) ) ) {
                        global $wgAPIMaxUncachedDiffs;
                        static $n = 0; // Number of uncached diffs we've had
 
-                       if ( is_null( $content ) ) {
-                               $vals['textmissing'] = '';
-                       } elseif ( $n < $wgAPIMaxUncachedDiffs ) {
+                       if ( $n < $wgAPIMaxUncachedDiffs ) {
                                $vals['diff'] = array();
                                $context = new DerivativeContext( $this->getContext() );
                                $context->setTitle( $title );
@@ -653,6 +670,10 @@ class ApiQueryRevisions extends ApiQueryBase {
                        }
                }
 
+               if ( $anyHidden && $revision->isDeleted( Revision::DELETED_RESTRICTED ) ) {
+                       $vals['suppressed'] = '';
+               }
+
                return $vals;
        }
 
@@ -660,6 +681,9 @@ class ApiQueryRevisions extends ApiQueryBase {
                if ( isset( $params['token'] ) ) {
                        return 'private';
                }
+               if ( $this->userCanSeeRevDel() ) {
+                       return 'private';
+               }
                if ( !is_null( $params['prop'] ) && in_array( 'parsedcomment', $params['prop'] ) ) {
                        // formatComment() calls wfMessage() among other things
                        return 'anon-public-user-private';
index 1c9a93c..7896a2c 100644 (file)
@@ -176,9 +176,19 @@ class ApiQueryContributions extends ApiQueryBase {
                        );
                }
 
-               if ( !$user->isAllowed( 'hideuser' ) ) {
-                       $this->addWhere( $this->getDB()->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0' );
+               // Don't include any revisions where we're not supposed to be able to
+               // see the username.
+               if ( !$user->isAllowed( 'deletedhistory' ) ) {
+                       $bitmask = Revision::DELETED_USER;
+               } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+                       $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
+               } else {
+                       $bitmask = 0;
+               }
+               if ( $bitmask ) {
+                       $this->addWhere( $this->getDB()->bitAnd( 'rev_deleted', $bitmask ) . " != $bitmask" );
                }
+
                // We only want pages by the specified users.
                if ( $this->prefixMode ) {
                        $this->addWhere( 'rev_user_text' .
@@ -299,11 +309,19 @@ class ApiQueryContributions extends ApiQueryBase {
         */
        private function extractRowInfo( $row ) {
                $vals = array();
+               $anyHidden = false;
+
+               if ( $row->rev_deleted & Revision::DELETED_TEXT ) {
+                       $vals['texthidden'] = '';
+                       $anyHidden = true;
+               }
 
+               // Any rows where we can't view the user were filtered out in the query.
                $vals['userid'] = $row->rev_user;
                $vals['user'] = $row->rev_user_text;
                if ( $row->rev_deleted & Revision::DELETED_USER ) {
                        $vals['userhidden'] = '';
+                       $anyHidden = true;
                }
                if ( $this->fld_ids ) {
                        $vals['pageid'] = intval( $row->rev_page );
@@ -340,7 +358,9 @@ class ApiQueryContributions extends ApiQueryBase {
                if ( ( $this->fld_comment || $this->fld_parsedcomment ) && isset( $row->rev_comment ) ) {
                        if ( $row->rev_deleted & Revision::DELETED_COMMENT ) {
                                $vals['commenthidden'] = '';
-                       } else {
+                               $anyHidden = true;
+                       }
+                       if ( Revision::userCanBitfield( $row->rev_deleted, Revision::DELETED_COMMENT, $this->getUser() ) ) {
                                if ( $this->fld_comment ) {
                                        $vals['comment'] = $row->rev_comment;
                                }
@@ -379,6 +399,10 @@ class ApiQueryContributions extends ApiQueryBase {
                        }
                }
 
+               if ( $anyHidden && $row->rev_deleted & Revision::DELETED_RESTRICTED ) {
+                       $vals['suppressed'] = '';
+               }
+
                return $vals;
        }
 
index 3465e48..b7dc865 100644 (file)
@@ -59,7 +59,8 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
 
                $params = $this->extractRequestParams();
 
-               $user = $this->getWatchlistUser( $params );
+               $user = $this->getUser();
+               $wlowner = $this->getWatchlistUser( $params );
 
                if ( !is_null( $params['prop'] ) && is_null( $resultPageSet ) ) {
                        $prop = array_flip( $params['prop'] );
@@ -89,6 +90,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                        'rc_title',
                        'rc_timestamp',
                        'rc_type',
+                       'rc_deleted',
                ) );
 
                if ( is_null( $resultPageSet ) ) {
@@ -120,7 +122,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                        'watchlist',
                ) );
 
-               $userId = $user->getId();
+               $userId = $wlowner->getId();
                $this->addJoinConds( array( 'watchlist' => array( 'INNER JOIN',
                        array(
                                'wl_user' => $userId,
@@ -129,10 +131,6 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                        )
                ) ) );
 
-               $this->addWhere( array(
-                       'rc_deleted' => 0,
-               ) );
-
                $db = $this->getDB();
 
                $this->addTimestampWhereRange( 'rc_timestamp', $params['dir'],
@@ -159,7 +157,6 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
 
                        // Check permissions.
                        if ( isset( $show['patrolled'] ) || isset( $show['!patrolled'] ) ) {
-                               $user = $this->getUser();
                                if ( !$user->useRCPatrol() && !$user->useNPPatrol() ) {
                                        $this->dieUsage(
                                                'You need the patrol right to request the patrolled flag',
@@ -199,6 +196,36 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                        !isset( $params['start'] ) && !isset( $params['end'] ) && $db->getType() == 'mysql'
                );
 
+               // Paranoia: avoid brute force searches (bug 17342)
+               if ( !is_null( $params['user'] ) || !is_null( $params['excludeuser'] ) ) {
+                       if ( !$user->isAllowed( 'deletedhistory' ) ) {
+                               $bitmask = Revision::DELETED_USER;
+                       } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+                               $bitmask = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
+                       } else {
+                               $bitmask = 0;
+                       }
+                       if ( $bitmask ) {
+                               $this->addWhere( $this->getDB()->bitAnd( 'rc_deleted', $bitmask ) . " != $bitmask" );
+                       }
+               }
+
+               // LogPage::DELETED_ACTION hides the affected page, too. So hide those
+               // entirely from the watchlist, or someone could guess the title.
+               if ( !$user->isAllowed( 'deletedhistory' ) ) {
+                       $bitmask = LogPage::DELETED_ACTION;
+               } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+                       $bitmask = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
+               } else {
+                       $bitmask = 0;
+               }
+               if ( $bitmask ) {
+                       $this->addWhere( $this->getDB()->makeList( array(
+                               'rc_type != ' . RC_LOG,
+                               $this->getDB()->bitAnd( 'rc_deleted', $bitmask ) . " != $bitmask",
+                       ), LIST_OR ) );
+               }
+
                $this->addOption( 'LIMIT', $params['limit'] + 1 );
 
                $ids = array();
@@ -246,6 +273,11 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
        }
 
        private function extractRowInfo( $row ) {
+               /* Determine the title of the page that has been changed. */
+               $title = Title::makeTitle( $row->rc_namespace, $row->rc_title );
+               $user = $this->getUser();
+
+               /* Our output data. */
                $vals = array();
 
                $type = intval( $row->rc_type );
@@ -274,87 +306,131 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                                $vals['type'] = $type;
                }
 
-               if ( $this->fld_ids ) {
-                       $vals['pageid'] = intval( $row->rc_cur_id );
-                       $vals['revid'] = intval( $row->rc_this_oldid );
-                       $vals['old_revid'] = intval( $row->rc_last_oldid );
-               }
+               $anyHidden = false;
 
-               $title = Title::makeTitle( $row->rc_namespace, $row->rc_title );
-
-               if ( $this->fld_title ) {
-                       ApiQueryBase::addTitleInfo( $vals, $title );
+               /* Create a new entry in the result for the title. */
+               if ( $this->fld_title || $this->fld_ids ) {
+                       // These should already have been filtered out of the query, but just in case.
+                       if ( $type === RC_LOG && ( $row->rc_deleted & LogPage::DELETED_ACTION ) ) {
+                               $vals['actionhidden'] = '';
+                               $anyHidden = true;
+                       }
+                       if ( $type !== RC_LOG ||
+                               LogEventsList::userCanBitfield( $row->rc_deleted, LogPage::DELETED_ACTION, $user )
+                       ) {
+                               if ( $this->fld_title ) {
+                                       ApiQueryBase::addTitleInfo( $vals, $title );
+                               }
+                               if ( $this->fld_ids ) {
+                                       $vals['pageid'] = intval( $row->rc_cur_id );
+                                       $vals['revid'] = intval( $row->rc_this_oldid );
+                                       $vals['old_revid'] = intval( $row->rc_last_oldid );
+                               }
+                       }
                }
 
+               /* Add user data and 'anon' flag, if user is anonymous. */
                if ( $this->fld_user || $this->fld_userid ) {
-
-                       if ( $this->fld_userid ) {
-                               $vals['userid'] = $row->rc_user;
-                               // for backwards compatibility
-                               $vals['user'] = $row->rc_user;
+                       if ( $row->rc_deleted & Revision::DELETED_USER ) {
+                               $vals['userhidden'] = '';
+                               $anyHidden = true;
                        }
+                       if ( Revision::userCanBitfield( $row->rc_deleted, Revision::DELETED_USER, $user ) ) {
+                               if ( $this->fld_userid ) {
+                                       $vals['userid'] = $row->rc_user;
+                                       // for backwards compatibility
+                                       $vals['user'] = $row->rc_user;
+                               }
 
-                       if ( $this->fld_user ) {
-                               $vals['user'] = $row->rc_user_text;
-                       }
+                               if ( $this->fld_user ) {
+                                       $vals['user'] = $row->rc_user_text;
+                               }
 
-                       if ( !$row->rc_user ) {
-                               $vals['anon'] = '';
+                               if ( !$row->rc_user ) {
+                                       $vals['anon'] = '';
+                               }
                        }
                }
 
+               /* Add flags, such as new, minor, bot. */
                if ( $this->fld_flags ) {
+                       if ( $row->rc_bot ) {
+                               $vals['bot'] = '';
+                       }
                        if ( $row->rc_type == RC_NEW ) {
                                $vals['new'] = '';
                        }
                        if ( $row->rc_minor ) {
                                $vals['minor'] = '';
                        }
-                       if ( $row->rc_bot ) {
-                               $vals['bot'] = '';
-                       }
                }
 
-               if ( $this->fld_patrol && isset( $row->rc_patrolled ) ) {
-                       $vals['patrolled'] = '';
+               /* Add sizes of each revision. (Only available on 1.10+) */
+               if ( $this->fld_sizes ) {
+                       $vals['oldlen'] = intval( $row->rc_old_len );
+                       $vals['newlen'] = intval( $row->rc_new_len );
                }
 
+               /* Add the timestamp. */
                if ( $this->fld_timestamp ) {
                        $vals['timestamp'] = wfTimestamp( TS_ISO_8601, $row->rc_timestamp );
                }
 
-               if ( $this->fld_sizes ) {
-                       $vals['oldlen'] = intval( $row->rc_old_len );
-                       $vals['newlen'] = intval( $row->rc_new_len );
-               }
-
                if ( $this->fld_notificationtimestamp ) {
                        $vals['notificationtimestamp'] = ( $row->wl_notificationtimestamp == null )
                                ? ''
                                : wfTimestamp( TS_ISO_8601, $row->wl_notificationtimestamp );
                }
 
-               if ( $this->fld_comment && isset( $row->rc_comment ) ) {
-                       $vals['comment'] = $row->rc_comment;
+               /* Add edit summary / log summary. */
+               if ( $this->fld_comment || $this->fld_parsedcomment ) {
+                       if ( $row->rc_deleted & Revision::DELETED_COMMENT ) {
+                               $vals['commenthidden'] = '';
+                               $anyHidden = true;
+                       }
+                       if ( Revision::userCanBitfield( $row->rc_deleted, Revision::DELETED_COMMENT, $user ) ) {
+                               if ( $this->fld_comment && isset( $row->rc_comment ) ) {
+                                       $vals['comment'] = $row->rc_comment;
+                               }
+
+                               if ( $this->fld_parsedcomment && isset( $row->rc_comment ) ) {
+                                       $vals['parsedcomment'] = Linker::formatComment( $row->rc_comment, $title );
+                               }
+                       }
+               }
+
+               /* Add the patrolled flag */
+               if ( $this->fld_patrol && $row->rc_patrolled == 1 ) {
+                       $vals['patrolled'] = '';
                }
 
-               if ( $this->fld_parsedcomment && isset( $row->rc_comment ) ) {
-                       $vals['parsedcomment'] = Linker::formatComment( $row->rc_comment, $title );
+               if ( $this->fld_patrol && ChangesList::isUnpatrolled( $row, $user ) ) {
+                       $vals['unpatrolled'] = '';
                }
 
                if ( $this->fld_loginfo && $row->rc_type == RC_LOG ) {
-                       $vals['logid'] = intval( $row->rc_logid );
-                       $vals['logtype'] = $row->rc_log_type;
-                       $vals['logaction'] = $row->rc_log_action;
-                       $logEntry = DatabaseLogEntry::newFromRow( (array)$row );
-                       ApiQueryLogEvents::addLogParams(
-                               $this->getResult(),
-                               $vals,
-                               $logEntry->getParameters(),
-                               $logEntry->getType(),
-                               $logEntry->getSubtype(),
-                               $logEntry->getTimestamp()
-                       );
+                       if ( $row->rc_deleted & LogPage::DELETED_ACTION ) {
+                               $vals['actionhidden'] = '';
+                               $anyHidden = true;
+                       }
+                       if ( LogEventsList::userCanBitfield( $row->rc_deleted, LogPage::DELETED_ACTION, $user ) ) {
+                               $vals['logid'] = intval( $row->rc_logid );
+                               $vals['logtype'] = $row->rc_log_type;
+                               $vals['logaction'] = $row->rc_log_action;
+                               $logEntry = DatabaseLogEntry::newFromRow( (array)$row );
+                               ApiQueryLogEvents::addLogParams(
+                                       $this->getResult(),
+                                       $vals,
+                                       $logEntry->getParameters(),
+                                       $logEntry->getType(),
+                                       $logEntry->getSubtype(),
+                                       $logEntry->getTimestamp()
+                               );
+                       }
+               }
+
+               if ( $anyHidden && ( $row->rc_deleted & Revision::DELETED_RESTRICTED ) ) {
+                       $vals['suppressed'] = '';
                }
 
                return $vals;
@@ -467,7 +543,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                        ),
                        'token' => array(
                                ApiBase::PARAM_TYPE => 'string'
-                       )
+                       ),
                );
        }
 
@@ -511,7 +587,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                        ),
                        'owner' => 'The name of the user whose watchlist you\'d like to access',
                        'token' => 'Give a security token (settable in preferences) to ' .
-                               'allow access to another user\'s watchlist'
+                               'allow access to another user\'s watchlist',
                );
        }
 
index f1f2578..e71a2d5 100644 (file)
@@ -336,14 +336,6 @@ class RecentChange {
                global $wgRCFeeds;
 
                foreach ( $wgRCFeeds as $feed ) {
-                       $engine = self::getEngine( $feed['uri'] );
-
-                       if ( isset( $this->mExtra['actionCommentIRC'] ) ) {
-                               $actionComment = $this->mExtra['actionCommentIRC'];
-                       } else {
-                               $actionComment = null;
-                       }
-
                        $omitBots = isset( $feed['omit_bots'] ) ? $feed['omit_bots'] : false;
 
                        if (
@@ -353,6 +345,14 @@ class RecentChange {
                                continue;
                        }
 
+                       $engine = self::getEngine( $feed['uri'] );
+
+                       if ( isset( $this->mExtra['actionCommentIRC'] ) ) {
+                               $actionComment = $this->mExtra['actionCommentIRC'];
+                       } else {
+                               $actionComment = null;
+                       }
+
                        /** @var $formatter RCFeedFormatter */
                        $formatter = new $feed['formatter']();
                        $line = $formatter->getLine( $feed, $this, $actionComment );
@@ -366,9 +366,9 @@ class RecentChange {
         *
         * @param string $uri URI to get the engine object for
         * @throws MWException
-        * @return object The engine object
+        * @return RCFeedEngine The engine object
         */
-       private static function getEngine( $uri ) {
+       public static function getEngine( $uri ) {
                global $wgRCEngines;
 
                $scheme = parse_url( $uri, PHP_URL_SCHEME );
index 7a49c78..c88ad05 100644 (file)
@@ -29,6 +29,8 @@
  */
 class LoadBalancer {
        private $mServers, $mConns, $mLoads, $mGroupLoads;
+
+       /** @var bool|DatabaseBase Database connection that caused a problem */
        private $mErrorConnection;
        private $mReadIndex, $mAllowLagged;
 
@@ -276,7 +278,7 @@ class LoadBalancer {
 
                                // Perform post-connection backoff
                                $threshold = isset( $this->mServers[$i]['max threads'] )
-                                       ? $this->mServers[$i]['max threads'] : false;
+                                       ? $this->mServers[$i]['max threads'] : 0;
                                $backoff = $this->getLoadMonitor()->postConnectionBackoff( $conn, $threshold );
 
                                // Decrement reference counter, we are finished with this connection.
@@ -805,7 +807,7 @@ class LoadBalancer {
        /**
         * Returns true if the specified index is a valid server index
         *
-        * @param $i
+        * @param string $i
         * @return bool
         */
        function haveIndex( $i ) {
@@ -815,7 +817,7 @@ class LoadBalancer {
        /**
         * Returns true if the specified index is valid and has non-zero load
         *
-        * @param $i
+        * @param string $i
         * @return bool
         */
        function isNonZeroLoad( $i ) {
@@ -834,7 +836,7 @@ class LoadBalancer {
        /**
         * Get the host name or IP address of the server with the specified index
         * Prefer a readable name if available.
-        * @param $i
+        * @param string $i
         * @return string
         */
        function getServerName( $i ) {
@@ -903,6 +905,7 @@ class LoadBalancer {
        function closeAll() {
                foreach ( $this->mConns as $conns2 ) {
                        foreach ( $conns2 as $conns3 ) {
+                               /** @var DatabaseBase $conn */
                                foreach ( $conns3 as $conn ) {
                                        $conn->close();
                                }
@@ -919,7 +922,7 @@ class LoadBalancer {
         * Deprecated function, typo in function name
         *
         * @deprecated in 1.18
-        * @param $conn
+        * @param DatabaseBase $conn
         */
        function closeConnecton( $conn ) {
                wfDeprecated( __METHOD__, '1.18' );
@@ -930,7 +933,7 @@ class LoadBalancer {
         * Close a connection
         * Using this function makes sure the LoadBalancer knows the connection is closed.
         * If you use $conn->close() directly, the load balancer won't update its state.
-        * @param $conn DatabaseBase
+        * @param DatabaseBase $conn
         */
        function closeConnection( $conn ) {
                $done = false;
@@ -957,6 +960,7 @@ class LoadBalancer {
        function commitAll() {
                foreach ( $this->mConns as $conns2 ) {
                        foreach ( $conns2 as $conns3 ) {
+                               /** @var DatabaseBase[] $conns3 */
                                foreach ( $conns3 as $conn ) {
                                        if ( $conn->trxLevel() ) {
                                                $conn->commit( __METHOD__, 'flush' );
@@ -976,6 +980,7 @@ class LoadBalancer {
                        if ( empty( $conns2[$masterIndex] ) ) {
                                continue;
                        }
+                       /** @var DatabaseBase $conn */
                        foreach ( $conns2[$masterIndex] as $conn ) {
                                if ( $conn->trxLevel() && $conn->writesOrCallbacksPending() ) {
                                        $conn->commit( __METHOD__, 'flush' );
@@ -1020,6 +1025,7 @@ class LoadBalancer {
                $success = true;
                foreach ( $this->mConns as $conns2 ) {
                        foreach ( $conns2 as $conns3 ) {
+                               /** @var DatabaseBase[] $conns3 */
                                foreach ( $conns3 as $conn ) {
                                        if ( !$conn->ping() ) {
                                                $success = false;
diff --git a/includes/filebackend/lockmanager/LSLockManager.php b/includes/filebackend/lockmanager/LSLockManager.php
deleted file mode 100644 (file)
index 539a780..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-<?php
-/**
- * Version of LockManager based on using lock daemon servers.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup LockManager
- */
-
-/**
- * Manage locks using a lock daemon server.
- *
- * Version of LockManager based on using lock daemon servers.
- * This is meant for multi-wiki systems that may share files.
- * All locks are non-blocking, which avoids deadlocks.
- *
- * All lock requests for a resource, identified by a hash string, will map
- * to one bucket. Each bucket maps to one or several peer servers, each
- * running LockServerDaemon.php, listening on a designated TCP port.
- * A majority of peers must agree for a lock to be acquired.
- *
- * @ingroup LockManager
- * @since 1.19
- */
-class LSLockManager extends QuorumLockManager {
-       /** @var array Mapping of lock types to the type actually used */
-       protected $lockTypeMap = array(
-               self::LOCK_SH => self::LOCK_SH,
-               self::LOCK_UW => self::LOCK_SH,
-               self::LOCK_EX => self::LOCK_EX
-       );
-
-       /** @var array Map of server names to server config */
-       protected $lockServers; // (server name => server config array)
-
-       /** @var array Map Server connections (server name => resource) */
-       protected $conns = array();
-
-       protected $connTimeout; // float number of seconds
-       protected $session = ''; // random SHA-1 string
-
-       /**
-        * Construct a new instance from configuration.
-        *
-        * @param array $config Paramaters include:
-        *   - lockServers  : Associative array of server names to configuration.
-        *                    Configuration is an associative array that includes:
-        *                      - host    : IP address/hostname
-        *                      - port    : TCP port
-        *                      - authKey : Secret string the lock server uses
-        *   - srvsByBucket : Array of 1-16 consecutive integer keys, starting from 0,
-        *                    each having an odd-numbered list of server names (peers) as values.
-        *   - connTimeout  : Lock server connection attempt timeout. [optional]
-        */
-       public function __construct( array $config ) {
-               parent::__construct( $config );
-
-               $this->lockServers = $config['lockServers'];
-               // Sanitize srvsByBucket config to prevent PHP errors
-               $this->srvsByBucket = array_filter( $config['srvsByBucket'], 'is_array' );
-               $this->srvsByBucket = array_values( $this->srvsByBucket ); // consecutive
-
-               if ( isset( $config['connTimeout'] ) ) {
-                       $this->connTimeout = $config['connTimeout'];
-               } else {
-                       $this->connTimeout = 3; // use some sane amount
-               }
-
-               $this->session = wfRandomString( 32 ); // 128 bits
-       }
-
-       /**
-        * @see QuorumLockManager::getLocksOnServer()
-        * @param string $lockSrv
-        * @param array $paths
-        * @param int $type
-        * @return Status
-        */
-       protected function getLocksOnServer( $lockSrv, array $paths, $type ) {
-               $status = Status::newGood();
-
-               // Send out the command and get the response...
-               $type = ( $type == self::LOCK_SH ) ? 'SH' : 'EX';
-               $keys = array_unique( array_map( array( $this, 'sha1Base36Absolute' ), $paths ) );
-               $response = $this->sendCommand( $lockSrv, 'ACQUIRE', $type, $keys );
-
-               if ( $response !== 'ACQUIRED' ) {
-                       foreach ( $paths as $path ) {
-                               $status->fatal( 'lockmanager-fail-acquirelock', $path );
-                       }
-               }
-
-               return $status;
-       }
-
-       /**
-        * @see QuorumLockManager::freeLocksOnServer()
-        * @param string $lockSrv
-        * @param array $paths
-        * @param int $type
-        * @return Status
-        */
-       protected function freeLocksOnServer( $lockSrv, array $paths, $type ) {
-               $status = Status::newGood();
-
-               // Send out the command and get the response...
-               $type = ( $type == self::LOCK_SH ) ? 'SH' : 'EX';
-               $keys = array_unique( array_map( array( $this, 'sha1Base36Absolute' ), $paths ) );
-               $response = $this->sendCommand( $lockSrv, 'RELEASE', $type, $keys );
-
-               if ( $response !== 'RELEASED' ) {
-                       foreach ( $paths as $path ) {
-                               $status->fatal( 'lockmanager-fail-releaselock', $path );
-                       }
-               }
-
-               return $status;
-       }
-
-       /**
-        * @see QuorumLockManager::releaseAllLocks()
-        * @return Status
-        */
-       protected function releaseAllLocks() {
-               $status = Status::newGood();
-
-               foreach ( $this->conns as $lockSrv => $conn ) {
-                       $response = $this->sendCommand( $lockSrv, 'RELEASE_ALL', '', array() );
-                       if ( $response !== 'RELEASED_ALL' ) {
-                               $status->fatal( 'lockmanager-fail-svr-release', $lockSrv );
-                       }
-               }
-
-               return $status;
-       }
-
-       /**
-        * @see QuorumLockManager::isServerUp()
-        * @param string $lockSrv
-        * @return bool
-        */
-       protected function isServerUp( $lockSrv ) {
-               return (bool)$this->getConnection( $lockSrv );
-       }
-
-       /**
-        * Send a command and get back the response
-        *
-        * @param string $lockSrv
-        * @param string $action
-        * @param string $type
-        * @param array $values
-        * @return string|bool
-        */
-       protected function sendCommand( $lockSrv, $action, $type, $values ) {
-               $conn = $this->getConnection( $lockSrv );
-               if ( !$conn ) {
-                       return false; // no connection
-               }
-               $authKey = $this->lockServers[$lockSrv]['authKey'];
-               // Build of the command as a flat string...
-               $values = implode( '|', $values );
-               $key = hash_hmac( 'sha1', "{$this->session}\n{$action}\n{$type}\n{$values}", $authKey );
-               // Send out the command...
-               if ( fwrite( $conn, "{$this->session}:$key:$action:$type:$values\n" ) === false ) {
-                       return false;
-               }
-               // Get the response...
-               $response = fgets( $conn );
-               if ( $response === false ) {
-                       return false;
-               }
-
-               return trim( $response );
-       }
-
-       /**
-        * Get (or reuse) a connection to a lock server
-        *
-        * @param string $lockSrv
-        * @return resource
-        */
-       protected function getConnection( $lockSrv ) {
-               if ( !isset( $this->conns[$lockSrv] ) ) {
-                       $cfg = $this->lockServers[$lockSrv];
-                       wfSuppressWarnings();
-                       $errno = $errstr = '';
-                       $conn = fsockopen( $cfg['host'], $cfg['port'], $errno, $errstr, $this->connTimeout );
-                       wfRestoreWarnings();
-                       if ( $conn === false ) {
-                               return null;
-                       }
-                       $sec = floor( $this->connTimeout );
-                       $usec = floor( ( $this->connTimeout - floor( $this->connTimeout ) ) * 1e6 );
-                       stream_set_timeout( $conn, $sec, $usec );
-                       $this->conns[$lockSrv] = $conn;
-               }
-
-               return $this->conns[$lockSrv];
-       }
-
-       /**
-        * Make sure remaining locks get cleared for sanity
-        */
-       function __destruct() {
-               $this->releaseAllLocks();
-               foreach ( $this->conns as $conn ) {
-                       fclose( $conn );
-               }
-       }
-}
index 3ba91d4..69fd6a3 100644 (file)
@@ -115,17 +115,15 @@ This option corrupts data input unpredictably.
 You cannot install or use MediaWiki unless this option is disabled.",
        'config-mbstring'                 => "'''Fatal: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] is active!'''
 This option causes errors and may corrupt data unpredictably.
-You cannot install or use MediaWiki unless this option is disabled.",
-       'config-ze1'                      => "'''Fatal: [http://www.php.net/manual/en/ini.core.php zend.ze1_compatibility_mode] is active!'''
-This option causes horrible bugs with MediaWiki.
 You cannot install or use MediaWiki unless this option is disabled.",
        'config-safe-mode'                => "'''Warning:''' PHP's [http://www.php.net/features.safe-mode safe mode] is active.
 It may cause problems, particularly if using file uploads and <code>math</code> support.",
        'config-xml-bad'                  => "PHP's XML module is missing.
 MediaWiki requires functions in this module and will not work in this configuration.
 If you're running Mandrake, install the php-xml package.",
-       'config-pcre'                     => 'The PCRE support module appears to be missing.
-MediaWiki requires the Perl-compatible regular expression functions to work.',
+       'config-pcre-old'                 => "'''Fatal:''' PCRE $1 or later is required.
+Your PHP binary is linked with PCRE $2.
+[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE More information].",
        'config-pcre-no-utf8'             => "'''Fatal:''' PHP's PCRE module seems to be compiled without PCRE_UTF8 support.
 MediaWiki requires UTF-8 support to function correctly.",
        'config-memory-raised'            => "PHP's <code>memory_limit</code> is $1, raised to $2.",
@@ -162,11 +160,8 @@ Installation aborted.",
 Although MediaWiki checks all uploaded files for security threats, it is highly recommended to [//www.mediawiki.org/wiki/Manual:Security#Upload_security close this security vulnerability] before enabling uploads.",
        'config-no-cli-uploads-check'     => "'''Warning:''' Your default directory for uploads (<code>$1</code>) is not checked for vulnerability
 to arbitrary script execution during the CLI install.",
-       'config-brokenlibxml'             => 'Your system has a combination of PHP and libxml2 versions which is buggy and can cause hidden data corruption in MediaWiki and other web applications.
-Upgrade to PHP 5.2.9 or later and libxml2 2.7.3 or later ([//bugs.php.net/bug.php?id=45996 bug filed with PHP]).
-Installation aborted.',
-       'config-using531'                 => 'MediaWiki cannot be used with PHP $1 due to a bug involving reference parameters to <code>__call()</code>.
-Upgrade to PHP 5.3.2 or higher, or downgrade to PHP 5.3.0 to resolve this.
+       'config-brokenlibxml'             => 'Your system has a combination of PHP and libxml2 versions that is buggy and can cause hidden data corruption in MediaWiki and other web applications.
+Upgrade to libxml2 2.7.3 or later ([https://bugs.php.net/bug.php?id=45996 bug filed with PHP]).
 Installation aborted.',
        'config-suhosin-max-value-length' => "Suhosin is installed and limits the GET parameter <code>length</code> to $1 bytes.
 MediaWiki's ResourceLoader component will work around this limit, but that will degrade performance.
@@ -651,6 +646,10 @@ Parameters:
        'config-mbstring' => '{{Related|Config-fatal}}',
        'config-ze1' => '{{Related|Config-fatal}}',
        'config-pcre' => 'PCRE is an initialism for "Perl-compatible regular expression". Perl is programming language whose [[:w:regular expression|regular expression]] syntax is popular and used in other languages using a library called PCRE.',
+       'config-pcre-old' => 'Parameters:
+* $1 - minimum PCRE version number
+* $2 - the installed version of [[wikipedia:PCRE|PCRE]]
+{{Related|Config-fatal}}',
        'config-pcre-no-utf8' => "PCRE is a name of a programmers' library for supporting regular expressions. It can probably be translated without change.
 {{Related|Config-fatal}}",
        'config-memory-raised' => 'Parameters:
index 765838b..8b15f0c 100644 (file)
@@ -41,6 +41,14 @@ abstract class Installer {
        // This is the absolute minimum PHP version we can support
        const MINIMUM_PHP_VERSION = '5.3.2';
 
+       /**
+        * The oldest version of PCRE we can support.
+        *
+        * Defining this is necessary because PHP may be linked with a system version
+        * of PCRE, which may be older than that bundled with the minimum PHP version.
+        */
+       const MINIMUM_PCRE_VERSION = '7.2';
+
        /**
         * @var array
         */
@@ -108,11 +116,9 @@ abstract class Installer {
                'envCheckDB',
                'envCheckRegisterGlobals',
                'envCheckBrokenXML',
-               'envCheckPHP531',
                'envCheckMagicQuotes',
                'envCheckMagicSybase',
                'envCheckMbstring',
-               'envCheckZE1',
                'envCheckSafeMode',
                'envCheckXML',
                'envCheckPCRE',
@@ -416,6 +422,15 @@ abstract class Installer {
                        $good = false;
                }
 
+               // Must go here because an old version of PCRE can prevent other checks from completing
+               if ( $good ) {
+                       list( $pcreVersion ) = explode( ' ', PCRE_VERSION, 2 );
+                       if ( version_compare( $pcreVersion, self::MINIMUM_PCRE_VERSION, '<' ) ) {
+                               $this->showError( 'config-pcre-old', self::MINIMUM_PCRE_VERSION, $pcreVersion );
+                               $good = false;
+                       }
+               }
+
                if ( $good ) {
                        foreach ( $this->envChecks as $check ) {
                                $status = $this->$check();
@@ -717,23 +732,6 @@ abstract class Installer {
                return true;
        }
 
-       /**
-        * Test PHP (probably 5.3.1, but it could regress again) to make sure that
-        * reference parameters to __call() are not converted to null
-        * @return bool
-        */
-       protected function envCheckPHP531() {
-               $test = new PhpRefCallBugTester;
-               $test->execute();
-               if ( !$test->ok ) {
-                       $this->showError( 'config-using531', phpversion() );
-
-                       return false;
-               }
-
-               return true;
-       }
-
        /**
         * Environment check for magic_quotes_runtime.
         * @return bool
@@ -776,20 +774,6 @@ abstract class Installer {
                return true;
        }
 
-       /**
-        * Environment check for zend.ze1_compatibility_mode.
-        * @return bool
-        */
-       protected function envCheckZE1() {
-               if ( wfIniGetBool( 'zend.ze1_compatibility_mode' ) ) {
-                       $this->showError( 'config-ze1' );
-
-                       return false;
-               }
-
-               return true;
-       }
-
        /**
         * Environment check for safe_mode.
         * @return bool
@@ -826,11 +810,6 @@ abstract class Installer {
         * @return bool
         */
        protected function envCheckPCRE() {
-               if ( !function_exists( 'preg_match' ) ) {
-                       $this->showError( 'config-pcre' );
-
-                       return false;
-               }
                wfSuppressWarnings();
                $regexd = preg_replace( '/[\x{0430}-\x{04FF}]/iu', '', '-АБВГД-' );
                // Need to check for \p support too, as PCRE can be compiled
index 5471264..0460134 100644 (file)
@@ -45,29 +45,3 @@ class PhpXmlBugTester {
                $this->parsedData .= $data;
        }
 }
-
-/**
- * Test for PHP bug #50394 (PHP 5.3.x conversion to null only, not 5.2.x)
- * @see http://bugs.php.net/bug.php?id=50394
- * @ingroup PHPBugTests
- */
-class PhpRefCallBugTester {
-       public $ok = false;
-
-       function __call( $name, $args ) {
-               $old = error_reporting( E_ALL & ~E_WARNING );
-               call_user_func_array( array( $this, 'checkForBrokenRef' ), $args );
-               error_reporting( $old );
-       }
-
-       function checkForBrokenRef( &$var ) {
-               if ( $var ) {
-                       $this->ok = true;
-               }
-       }
-
-       function execute() {
-               $var = true;
-               call_user_func_array( array( $this, 'foo' ), array( &$var ) );
-       }
-}
index 1be04a7..7f108c8 100644 (file)
@@ -187,7 +187,9 @@ class BitmapHandler extends ImageHandler {
                                        wfHostname(), $image->getName() ) );
 
                        return new MediaTransformError( 'thumbnail_error',
-                               $scalerParams['clientWidth'], $scalerParams['clientHeight'] );
+                               $scalerParams['clientWidth'], $scalerParams['clientHeight'],
+                               wfMessage( 'filemissing' )->text()
+                       );
                }
 
                # Try a hook
@@ -227,7 +229,9 @@ class BitmapHandler extends ImageHandler {
                } elseif ( $removed ) {
                        # Thumbnail was zero-byte and had to be removed
                        return new MediaTransformError( 'thumbnail_error',
-                               $scalerParams['clientWidth'], $scalerParams['clientHeight'] );
+                               $scalerParams['clientWidth'], $scalerParams['clientHeight'],
+                               wfMessage( 'unknown-error' )->text()
+                       );
                } elseif ( $mto ) {
                        return $mto;
                } else {
index 6206057..0a945a9 100644 (file)
@@ -78,10 +78,3 @@ class EmptyBagOStuff extends BagOStuff {
                return true;
        }
 }
-
-/**
- * Backwards compatibility alias for EmptyBagOStuff
- * @deprecated since 1.18
- */
-class FakeMemCachedClient extends EmptyBagOStuff {
-}
index 35e8bf8..1cc7a18 100644 (file)
@@ -679,12 +679,6 @@ class CoreParserFunctions {
         * Return the size of the given page, or 0 if it's nonexistent.  This is an
         * expensive parser function and can't be called too many times per page.
         *
-        * @todo FIXME: Title::getLength() documentation claims that it adds things
-        *   to the link cache, so the local cache here should be unnecessary, but
-        *   in fact calling getLength() repeatedly for the same $page does seem to
-        *   run one query for each call?
-        * @todo Document parameters
-        *
         * @param $parser Parser
         * @param $page String Name of page to check (Default: empty string)
         * @param $raw String Should number be human readable with commas or just number
index cdf5e98..c27c51f 100644 (file)
@@ -1988,7 +1988,7 @@ class Parser {
                        }
 
                        $ns = $nt->getNamespace();
-                       $iw = $nt->getInterWiki();
+                       $iw = $nt->getInterwiki();
                        wfProfileOut( __METHOD__ . "-title" );
 
                        if ( $might_be_img ) { # if this is actually an invalid link
index c4e9a1c..2ab1d89 100644 (file)
@@ -255,16 +255,6 @@ class ParserOptions {
        function getUser()                          { return $this->mUser; }
        function getPreSaveTransform()              { return $this->mPreSaveTransform; }
 
-       /**
-        * @param $title Title
-        * @return Skin
-        * @deprecated since 1.18 Use Linker::* instead
-        */
-       function getSkin( $title = null ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return new DummyLinker;
-       }
-
        function getDateFormat() {
                $this->optionUsed( 'dateformat' );
                if ( !isset( $this->mDateFormat ) ) {
index 08b1ac1..b6c9cec 100644 (file)
@@ -716,7 +716,9 @@ class ResourceLoader {
                $states = array();
 
                if ( !count( $modules ) && !count( $missing ) ) {
-                       return '/* No modules requested. Max made me put this here */';
+                       return "/* This file is the Web entry point for MediaWiki's ResourceLoader:
+   <https://www.mediawiki.org/wiki/ResourceLoader>. In this request,
+   no modules were requested. Max made me put this here. */";
                }
 
                wfProfileIn( __METHOD__ );
index 1aa8006..d2ee0df 100644 (file)
  * @ingroup SpecialPage
  */
 class SpecialBlock extends FormSpecialPage {
-       /** The maximum number of edits a user can have and still be hidden
-        * TODO: config setting? */
-       const HIDEUSER_CONTRIBLIMIT = 1000;
-
        /** @var User user to be blocked, as passed either by parameter (url?wpTarget=Foo)
         * or as subpage (Special:Block/Foo) */
        protected $target;
@@ -602,7 +598,7 @@ class SpecialBlock extends FormSpecialPage {
         * @return Bool|String
         */
        public static function processForm( array $data, IContextSource $context ) {
-               global $wgBlockAllowsUTEdit;
+               global $wgBlockAllowsUTEdit, $wgHideUserContribLimit;
 
                $performer = $context->getUser();
 
@@ -673,10 +669,13 @@ class SpecialBlock extends FormSpecialPage {
                        } elseif ( !in_array( $data['Expiry'], array( 'infinite', 'infinity', 'indefinite' ) ) ) {
                                # Bad expiry.
                                return array( 'ipb_expiry_temp' );
-                       } elseif ( $user->getEditCount() > self::HIDEUSER_CONTRIBLIMIT ) {
+                       } elseif ( $wgHideUserContribLimit !== false
+                               && $user->getEditCount() > $wgHideUserContribLimit
+                       ) {
                                # Typically, the user should have a handful of edits.
                                # Disallow hiding users with many edits for performance.
-                               return array( 'ipb_hide_invalid' );
+                               return array( array( 'ipb_hide_invalid',
+                                       Message::numParam( $wgHideUserContribLimit ) ) );
                        } elseif ( !$data['Confirm'] ) {
                                return array( 'ipb-confirmhideuser', 'ipb-confirmaction' );
                        }
@@ -695,8 +694,9 @@ class SpecialBlock extends FormSpecialPage {
                $block->isAutoblocking( $data['AutoBlock'] );
                $block->mHideName = $data['HideUser'];
 
-               if ( !wfRunHooks( 'BlockIp', array( &$block, &$performer ) ) ) {
-                       return array( 'hookaborted' );
+               $reason = array( 'hookaborted' );
+               if ( !wfRunHooks( 'BlockIp', array( &$block, &$performer, &$reason ) ) ) {
+                       return $reason;
                }
 
                # Try to insert block. Is there a conflicting block?
index d9ef5d7..e678259 100644 (file)
@@ -232,7 +232,7 @@ class SpecialChangeEmail extends UnlistedSpecialPage {
                $throttleCount = LoginForm::incLoginThrottle( $user->getName() );
                if ( $throttleCount === true ) {
                        $lang = $this->getLanguage();
-                       $this->error( array( 'login-throttled', $lang->formatDuration( $wgPasswordAttemptThrottle['seconds'] ) ) );
+                       $this->error( array( 'changeemail-throttled', $lang->formatDuration( $wgPasswordAttemptThrottle['seconds'] ) ) );
 
                        return false;
                }
index d54828a..484e00c 100644 (file)
@@ -205,7 +205,7 @@ class SpecialChangePassword extends FormSpecialPage {
                $throttleCount = LoginForm::incLoginThrottle( $this->mUserName );
                if ( $throttleCount === true ) {
                        $lang = $this->getLanguage();
-                       throw new PasswordError( $this->msg( 'login-throttled' )
+                       throw new PasswordError( $this->msg( 'changepassword-throttled' )
                                ->params( $lang->formatDuration( $wgPasswordAttemptThrottle['seconds'] ) )
                                ->text()
                        );
index 8d7bd54..e8aa9b4 100644 (file)
@@ -57,9 +57,9 @@ class SpecialVersion extends SpecialPage {
 
                // Explode the sub page information into useful bits
                $parts = explode( '/', (string)$par );
+               $extNode = null;
                if ( isset( $parts[1] ) ) {
                        $extName = str_replace( '_', ' ', $parts[1] );
-                       $extNode = null;
                        // Find it!
                        foreach ( $wgExtensionCredits as $group => $extensions ) {
                                foreach ( $extensions as $ext ) {
index 331f3ae..0ea1fe4 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Abanima
  * @author Csisc
+ * @author Malekbr
  */
 
 $fallback = 'ar';
@@ -84,50 +85,50 @@ $messages = array(
 'thu' => 'el5mis',
 'fri' => 'ejjom3a',
 'sat' => 'essibt',
-'january' => 'janfi',
-'february' => 'fivri',
-'march' => 'mars',
-'april' => 'avril',
-'may_long' => 'mai',
-'june' => 'juin',
-'july' => 'juillia',
-'august' => 'août',
-'september' => 'septembre',
-'october' => 'octobre',
-'november' => 'novembre',
-'december' => 'décembre',
-'january-gen' => 'janfi',
-'february-gen' => 'fivri',
-'march-gen' => 'mars',
-'april-gen' => 'avril',
-'may-gen' => 'mai',
-'june-gen' => 'juin',
-'july-gen' => 'juillia',
-'august-gen' => 'août',
-'september-gen' => 'septembre',
-'october-gen' => 'octobre',
-'november-gen' => 'novembre',
-'december-gen' => 'décembre',
-'jan' => 'Janvi',
-'feb' => 'fivri',
-'mar' => 'mars',
-'apr' => 'avril',
-'may' => 'mai',
+'january' => 'Janvi',
+'february' => 'Fivri',
+'march' => 'Mars',
+'april' => 'Avril',
+'may_long' => 'Mai',
+'june' => 'Juin',
+'july' => 'Juilia',
+'august' => 'Août',
+'september' => 'Septembre',
+'october' => 'Octobre',
+'november' => 'Novembre',
+'december' => 'Décembre',
+'january-gen' => 'Janvi',
+'february-gen' => 'Fivri',
+'march-gen' => 'Mars',
+'april-gen' => 'Avril',
+'may-gen' => 'Mai',
+'june-gen' => 'Juin',
+'july-gen' => 'Juilia',
+'august-gen' => 'Août',
+'september-gen' => 'Septembre',
+'october-gen' => 'Octobre',
+'november-gen' => 'Novembre',
+'december-gen' => 'Décembre',
+'jan' => 'Janv',
+'feb' => 'Fivr',
+'mar' => 'Mars',
+'apr' => 'Avrl',
+'may' => 'Mai',
 'jun' => 'Juin',
-'jul' => 'juillia',
-'aug' => 'août',
-'sep' => 'septembre',
-'oct' => 'octobre',
-'nov' => 'novembre',
-'dec' => 'décembre',
+'jul' => 'Juil',
+'aug' => 'Août',
+'sep' => 'Sept',
+'oct' => 'Oct',
+'nov' => 'Nov',
+'dec' => 'Déc',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|لا تصنيف|تصنيف|تصنيفان|تصنيفات}}',
+'pagecategories' => '{{PLURAL:Catégorie weħed|Zouz catégories|$1 catégories|$1 en catégorie}}',
 'category_header' => 'صفحات تصنيف "$1"',
 'subcategories' => 'التصنيفات الفرعية',
 'category-media-header' => 'الوسائط في التصنيف "$1"',
 'category-empty' => "''هذا التصنيف لا يحتوي حاليا على صفحات أو وسائط.''",
-'hidden-categories' => '{{PLURAL:$1|لا تصنيف مخفيا|تصنيف مخفي|تصنيفان مخفيان|تصنيفات مخفية}}',
+'hidden-categories' => '{{PLURAL:Catégorie mkhabia waħda|Zouz catégories mkhabbin|$1 catégories mkhabbin|$1 en catégorie mkhabia}}',
 'hidden-category-category' => 'تصنيفات مخفية',
 'category-subcat-count' => '{{PLURAL:$2|لا تصانيف فرعية في هذا التصنيف|هذا التصنيف فيه التصنيف الفرعي التالي فقط.|هذا التصنيف فيه {{PLURAL:$1||هذا التصنيف الفرعي|هذين التصنيفين الفرعيين|هذه ال$1 تصانيف الفرعية|هذه ال$1 تصنيفا فرعيا|هذه ال$1 تصنيف فرعي}}، من إجمالي $2.}}',
 'category-subcat-count-limited' => 'هذا التصنيف فيه {{PLURAL:$1||التصنيف الفرعي التالي|التصنيفين الفرعيين التاليين|$1 تصانيف فرعية تالية|$1 تصنيفا فرعيا تاليا|$1 تصنيف فرعي تالي}}.',
@@ -148,7 +149,7 @@ $messages = array(
 'mypage' => 'صفحتي',
 'mytalk' => 'نقاشي',
 'anontalk' => 'النقاش لعنوان الأيبي هذا',
-'navigation' => 'إبحار',
+'navigation' => 'Navigui',
 'and' => '&#32;و',
 
 # Cologne Blue skin
@@ -169,30 +170,30 @@ $messages = array(
 'vector-action-unprotect' => 'غير الحماية',
 'vector-simplesearch-preference' => 'مكّن مقترحات البحث المُحسّنة (لواجهة فكتور فقط)',
 'vector-view-create' => 'أنشئ',
-'vector-view-edit' => 'modifi el page (baddelha)',
-'vector-view-history' => 'اعرض التاريخ',
-'vector-view-view' => 'اقرأ',
+'vector-view-edit' => 'Baddel',
+'vector-view-history' => "Warri l'historique",
+'vector-view-view' => 'Aqra',
 'vector-view-viewsource' => 'اعرض المصدر',
-'actions' => 'أفعال',
-'namespaces' => 'النطاقات',
-'variants' => 'المتغيرات',
+'actions' => 'Aεmel',
+'namespaces' => 'El espaces de noms',
+'variants' => 'Anweε',
 
 'errorpagetitle' => 'ghalath',
 'returnto' => 'ارجع إلى $1.',
-'tagline' => 'عن {{SITENAME}}',
-'help' => '3awenni ya3chek',
-'search' => 'lawwej',
-'searchbutton' => 'lawwej',
+'tagline' => 'Fima ykhoss {{SITENAME}}',
+'help' => 'Mouεawna',
+'search' => 'Lawwej',
+'searchbutton' => 'Lawwej',
 'go' => 'اذهب',
 'searcharticle' => 'اذهب',
 'history' => 'teri5 el milaf',
-'history_short' => 'تاريخ',
+'history_short' => 'Historique',
 'updatedmarker' => 'تم تحديثها منذ زيارتي الأخيرة',
-'printableversion' => 'نسخة للطباعة',
-'permalink' => 'وصلة دائمة',
+'printableversion' => 'Copie bech tetetbaε',
+'permalink' => 'Lien deyem',
 'print' => 'itthba3',
 'view' => 'عرض',
-'edit' => 'modifi el page (baddelha)',
+'edit' => 'Baddel',
 'create' => 'أنشئ',
 'editthispage' => 'modifi hal page',
 'create-this-page' => 'أنشئ هذه الصفحة',
@@ -207,14 +208,14 @@ $messages = array(
 'unprotectthispage' => 'غير حماية هذه الصفحة',
 'newpage' => 'صفحات جديدة',
 'talkpage' => 'ناقش هذه الصفحة',
-'talkpagelinktext' => 'نقاش',
+'talkpagelinktext' => 'Ħdith',
 'specialpage' => 'صفحة خاصة',
-'personaltools' => 'أدوات شخصية',
+'personaltools' => 'Outils mteεek',
 'postcomment' => 'قسم جديد',
 'articlepage' => 'عرض صفحة المحتوى',
-'talk' => 'نقاش',
-'views' => 'معاينة',
-'toolbox' => 'صندوق الأدوات',
+'talk' => 'Ħdith',
+'views' => 'Affichages',
+'toolbox' => 'Outils',
 'userpage' => 'عرض صفحة المستخدم',
 'projectpage' => 'عرض صفحة المشروع',
 'imagepage' => 'عرض صفحة الملف',
@@ -223,15 +224,15 @@ $messages = array(
 'viewhelppage' => 'عرض صفحة المساعدة',
 'categorypage' => 'عرض صفحة التصنيف',
 'viewtalkpage' => 'عرض النقاش',
-'otherlanguages' => 'بلغات أخرى',
+'otherlanguages' => 'Bloughat okhra',
 'redirectedfrom' => '(تم التحويل من $1)',
 'redirectpagesub' => 'صفحة تحويل',
-'lastmodifiedat' => 'آخر تعديل لهذه الصفحة في $2، $1.',
+'lastmodifiedat' => 'Ekher tabdil elhassafħa nhar $2, mεa $1.',
 'viewcount' => '{{PLURAL:$1|لم تعرض هذه الصفحة أبدا|تم عرض هذه الصفحة مرة واحدة|تم عرض هذه الصفحة مرتين|تم عرض هذه الصفحة $1 مرات|تم عرض هذه الصفحة $1 مرة}}.',
 'protectedpage' => 'صفحة محمية',
-'jumpto' => 'اذهب إلى:',
-'jumptonavigation' => 'إبحار',
-'jumptosearch' => 'lawwej',
+'jumpto' => 'Emchi el:',
+'jumptonavigation' => 'Navigation',
+'jumptosearch' => 'Lawwej',
 'view-pool-error' => 'عذرا، الخوادم منهكة حاليا.
 يحاول مستخدمون كثر الوصول إلى هذه الصفحة.
 من فضلك انتظر قليلا قبل أن تحاول الوصول إلى هذه الصفحة مجددا.
@@ -242,23 +243,23 @@ $1',
 'pool-errorunknown' => 'خطأ غير معروف',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
-'aboutsite' => 'عن {{SITENAME}}',
-'aboutpage' => 'Project:عن',
+'aboutsite' => 'Fima ykhoss {{SITENAME}}',
+'aboutpage' => 'Project:Fima ykhoss',
 'copyright' => 'المحتوى متوفر تحت $1.',
 'copyrightpage' => '{{ns:project}}:حقوق النسخ',
-'currentevents' => 'الأحداث الجارية',
-'currentevents-url' => 'Project:الأحداث الجارية',
-'disclaimers' => 'عدم مسؤولية',
-'disclaimerpage' => 'Project:عدم مسؤولية عام',
+'currentevents' => 'Laħdeth mtaε tawa',
+'currentevents-url' => 'Project:Laħdeth mtaε tawa',
+'disclaimers' => "Ɛadam mas'ouliya",
+'disclaimerpage' => "Project:Ɛadam mas'ouliya bsifa εamma",
 'edithelp' => 'مساعدة التحرير',
-'helppage' => 'Help:محتويات',
-'mainpage' => 'الصفحة الرئيسية',
-'mainpage-description' => 'الصفحة الرئيسية',
+'helppage' => 'Help:Contenu',
+'mainpage' => 'Elpage principale',
+'mainpage-description' => 'Elpage principale',
 'policy-url' => 'Project:سياسة',
-'portal' => 'بوابة المجتمع',
-'portal-url' => 'Project:بوابة المجتمع',
-'privacy' => 'سÙ\8aاسة Ø§Ù\84خصÙ\88صÙ\8aØ©',
-'privacypage' => 'Project:سÙ\8aاسة Ø§Ù\84خصÙ\88صÙ\8aØ©',
+'portal' => 'Mojtamaε',
+'portal-url' => 'Project:Mojtamaε',
+'privacy' => 'Syeset elconfidentialité',
+'privacypage' => 'Project:Syeset elconfidentialité',
 
 'badaccess' => 'خطأ في السماح',
 'badaccess-group0' => 'ليس من المسموح لك تنفيذ الفعل الذي طلبته.',
@@ -268,16 +269,16 @@ $1',
 'versionrequiredtext' => 'تلزم النسخة $1 من ميدياويكي لاستعمال هذه الصفحة. انظر [[Special:Version|صفحة النسخة]]',
 
 'ok' => 'ok',
-'retrievedfrom' => 'تم الاسترجاع من "$1"',
+'retrievedfrom' => 'Tekhdhet men "$1"',
 'youhavenewmessages' => 'توجد لديك $1 ($2).',
 'youhavenewmessagesmulti' => 'لديك رسائل جديدة على $1',
-'editsection' => 'modifi el page (baddelha)',
-'editold' => 'modifi el page (baddelha)',
+'editsection' => 'Baddel essafħa',
+'editold' => 'Baddel',
 'viewsourceold' => 'اعرض المصدر',
 'editlink' => 'modifi el page (baddelha)',
-'viewsourcelink' => 'اعرض المصدر',
-'editsectionhint' => 'حرر القسم: $1',
-'toc' => 'ta3li9at',
+'viewsourcelink' => 'Warri essource',
+'editsectionhint' => 'Baddel essection: $1',
+'toc' => 'Contenu',
 'showtoc' => 'اعرض',
 'hidetoc' => 'أخف',
 'collapsible-collapse' => 'اطو',
@@ -289,20 +290,20 @@ $1',
 'feed-invalid' => 'نوع اشتراك التلقيم غير صحيح.',
 'feed-unavailable' => 'التلقيمات غير متوفرة',
 'site-rss-feed' => '$1 تلقيم أر إس إس',
-'site-atom-feed' => '$1 تلقيم أتوم',
+'site-atom-feed' => 'Flux Atom mtaε $1',
 'page-rss-feed' => '"$1" تلقيم أر إس إس',
 'page-atom-feed' => '$1 تلقيم أتوم',
-'red-link-title' => '$1 (الصفحة غير موجودة)',
+'red-link-title' => '$1 (Essafħa mouch mawjouda)',
 'sort-descending' => 'ترتيب تنازلي',
 'sort-ascending' => 'ترتيب تصاعدي',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => "ss'af7a",
+'nstab-main' => 'Safħa',
 'nstab-user' => 'صفحة مستخدم',
 'nstab-media' => 'صفحة وسيط',
-'nstab-special' => 'صفحة خاصة',
+'nstab-special' => 'Safħa spéciale',
 'nstab-project' => 'صفحة مشروع',
-'nstab-image' => 'milaf (Fichier)',
+'nstab-image' => 'Fichier',
 'nstab-mediawiki' => 'رسالة',
 'nstab-template' => 'قالب',
 'nstab-help' => 'صفحة مساعدة',
@@ -327,12 +328,12 @@ $1',
 'readonlytext' => 'قاعدة البيانات مغلقة حاليا أمام المدخلات الجديدة والتعديلات الأخرى، السبب غالبا ما يكون الصيانة، وستعود قاعدة البيانات للوضع الطبيعي قريبا.
 
 الإداري الذي أغلق قاعدة البيانات أعطى التفسير التالي: $1',
-'missing-article' => 'لم تجد قاعدة البيانات النص الخاص بصفحة كان يجب أن تجدها، واسمها "$1" $2.
+'missing-article' => 'Elbase de données malqatech ettexte mtaε essafħa elli supposée talqaha, welli esmha "$1" $2.
 
-عادة ما يحدث هذا عند اتباع فرق قديم أو وصلة تاريخ تؤدي إلى صفحة حذفت.
+Hedha elli ysir elεada waqtelli tħel farq qdim walla lien mtaε l\'historique mtaε safħa tnaħħat.
 
-إذا لم تكن هذه هي الحالة، فالمحتمل أنك وجدت خللا في البرنامج.
-من فضلك أبلغ أحد [[Special:ListUsers/sysop|الإداريين]]، وأعطه وصلة إلى مسار هذه الصفحة.',
+Idha ken mouch hedheka li sar, rak momken lqit mochkla fel programme.
+Aman qoul elweħeb mel les [[Special:ListUsers/sysop|administrateurs]], waεtih ellien elli ħabit temchilou.',
 'missingarticle-rev' => '(رقم المراجعة: $1)',
 'missingarticle-diff' => '(فرق: $1، $2)',
 'readonly_lag' => 'تم إغلاق قاعدة البيانات تلقائيا حتى تستطيع الخواديم التابعة ملاحقة الخادوم الرئيسي',
@@ -406,7 +407,7 @@ $2',
 'yourdomainname' => 'نطاقك:',
 'externaldberror' => 'هناك إما خطأ في دخول قاعدة البيانات الخارجية أو أنه غير مسموح لك بتحديث حسابك الخارجي.',
 'login' => 'ادخل',
-'nav-login-createaccount' => 'ادخل / أنشئ حسابا',
+'nav-login-createaccount' => 'Connecti / aεmel compte',
 'loginprompt' => 'يجب أن تكون الكوكيز لديك مفعلة لتسجل الدخول إلى {{SITENAME}}.',
 'userlogin' => 'ادخل / أنشئ حسابا',
 'userloginnocreate' => 'دخول',
@@ -646,10 +647,9 @@ $2
 لذا فيجب علينا استعمال رقم الأيبي للتعرف عليه/عليها.
 مثل هذا العنوان يمكن أن يشترك فيه عدة مستخدمين.
 لو كنت مستخدما مجهولا وتشعر بأن تعليقات لا تخصك تم توجيهها إليك، من فضلك [[Special:UserLogin/signup|أنشئ حسابا]] أو [[Special:UserLogin|سجل الدخول]] لتجنب الارتباك المستقبلي مع مستخدمين مجهولين آخرين.''",
-'noarticletext' => 'لا يوجد حاليا أي نص في هذه الصفحة.
-يمكنك [[Special:Search/{{PAGENAME}}|البحث عن عنوان هذه الصفحة]] في الصفحات الأخرى،
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} البحث في السجلات المتعلقة]،
-أو [{{fullurl:{{FULLPAGENAME}}|action=edit}} تعديل هذه الصفحة]</span>.',
+'noarticletext' => 'Mafamma ħatta texte tawa f\'essafħa hedhi.
+Tnajjem [[Special:Search/{{PAGENAME}}|tfarkes εal titre mtaε essafħa]] fi safħat okhrine, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tfarkes f\'elhistoriques elli εandhom εaleqa], 
+walla [{{fullurl:{{FULLPAGENAME}}|action=edit}} tbaddel essafħa hedhi]</span>',
 'noarticletext-nopermission' => 'لا يوجد حاليا أي نص في هذه الصفحة.يمكنك [[Special:Search/{{PAGENAME}}|البحث عن عنوان هذه الصفحة]] في الصفحات الأخرى,أو <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} بحث السجلات المتصلة]</span>.',
 'userpage-userdoesnotexist' => 'حساب المستخدم "<nowiki>$1</nowiki>" غير مسجل.
 من فضلك تأكد أنك تريد إنشاء/تعديل هذه الصفحة.',
@@ -734,7 +734,7 @@ $2
 'templatesused' => '{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذه الصفحة:',
 'templatesusedpreview' => '{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذه المعاينة:',
 'templatesusedsection' => '{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذا القسم:',
-'template-protected' => '(Ø­Ù\85اÙ\8aØ© Ù\83اÙ\85Ù\84Ø©)',
+'template-protected' => '(protégé)',
 'template-semiprotected' => '(حماية جزئية)',
 'hiddencategories' => '{{PLURAL:$1|هذه الصفحة غير موجودة في أي تصنايف مخفية|هذه الصفحة موجودة في تصنيف مخفي واحد|هذه الصفحة موجودة في تصنيفين مخفيين|هذه الصفحة موجودة في $1 تصانيف مخفية|هذه الصفحة موجودة في $1 تصنيفا مخفيا|هذه الصفحة موجودة في $1 تصنيف مخفي}}:',
 'nocreatetext' => 'قام {{SITENAME}} بتحديد القدرة على إنشاء صفحات جديدة.
@@ -801,7 +801,7 @@ $2
 'nohistory' => 'لا يوجد تاريخ للتعديلات لهذه الصفحة.',
 'currentrev' => 'المراجعة الحالية',
 'currentrev-asof' => 'المراجعة الحالية بتاريخ $1',
-'revisionasof' => 'مراجعة $1',
+'revisionasof' => 'Version mtaε $1',
 'revision-info' => 'مراجعة $1 بواسطة $2',
 'previousrevision' => '→ مراجعة أقدم',
 'nextrevision' => 'مراجعة أحدث ←',
@@ -960,41 +960,41 @@ $1",
 'difference-title' => '«$1»: الفرق بين المراجعتين',
 'difference-title-multipage' => '«$1» و«$2»: الفرق بين الصفحتين',
 'difference-multipage' => '(الفرق بين الصفحتين)',
-'lineno' => 'سطر $1:',
+'lineno' => 'Star $1:',
 'compareselectedversions' => 'قارن بين النسختين المختارتين',
 'showhideselectedversions' => 'أظهر/أخف المراجعات المختارة',
-'editundo' => 'تراجع',
+'editundo' => 'Rajjaε',
 'diff-multi' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتين أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} {{PLURAL:$2||مستخدم واحد|مستخدمان|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
 'diff-multi-manyusers' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتان أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} أكثر من {{PLURAL:$2||مستخدم واحد|مستخدمين|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
 
 # Search results
-'searchresults' => 'el resultats',
-'searchresults-title' => 'نتائج البحث عن "$1"',
+'searchresults' => 'Elrésultats mtaε elrecherche',
+'searchresults-title' => 'Elrésultats mtaε elrecherche εla "$1"',
 'prevn' => '{{PLURAL:$1|$1}} السابقة',
 'nextn' => '{{PLURAL:$1|$1}} التالية',
 'prevn-title' => '$1 {{PLURAL:$1|نتيجة|نتيجة}} سابقة',
 'nextn-title' => '$1 {{PLURAL:$1|نتيجة|نتيجة}} سابقة',
-'shown-title' => 'عرض $1 {{PLURAL:$1|نتيجة|نتيجة}} لكل صفحة',
-'viewprevnext' => 'عرض ($1 {{int:pipe-separator}} $2) ($3).',
+'shown-title' => ' Warri{{PLURAL:Résultat weħed|Zouz résultats|$1  résultats|$1 en résultat}} men kol safħa',
+'viewprevnext' => 'Chouf ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''famma ss'af7a ismha \"[[:\$1]]\" fi hedha el wiki.'''",
 'searchmenu-new' => "'''أنشئ الصفحة \"[[:\$1]]\" في هذا الويكي!'''",
-'searchprofile-articles' => 'صفحات المحتوى',
-'searchprofile-project' => 'صفحات المساعدة والمشروع',
-'searchprofile-images' => 'الوسائط المتعددة',
-'searchprofile-everything' => 'كل شيء',
-'searchprofile-advanced' => 'متقدم',
-'searchprofile-articles-tooltip' => 'ابحث في $1',
-'searchprofile-project-tooltip' => 'ابحث في $1',
-'searchprofile-images-tooltip' => 'ابحث عن ملفات',
-'searchprofile-everything-tooltip' => 'ابحث في كل المحتوى (شاملا صفحات النقاش)',
-'searchprofile-advanced-tooltip' => 'ابحث في النطاقات المخصصة',
-'search-result-size' => '$1 ({{PLURAL:$2|لا كلمات|كلمة واحدة|كلمتان|$2 كلمات|$2 كلمة}})',
+'searchprofile-articles' => 'Safħat mtaε contenu',
+'searchprofile-project' => 'Safħat mtaε elmouεawna w les projets',
+'searchprofile-images' => 'Multimédia',
+'searchprofile-everything' => 'Kol chay',
+'searchprofile-advanced' => 'Avancé',
+'searchprofile-articles-tooltip' => 'Farkes fi $1',
+'searchprofile-project-tooltip' => 'Farkis fi $1',
+'searchprofile-images-tooltip' => "Farkes f'elfichiers",
+'searchprofile-everything-tooltip' => 'Farkes kol chay (ħatta safħat leħdith)',
+'searchprofile-advanced-tooltip' => 'Ekhtar les espaces de noms elli bech tfarkes εlihom',
+'search-result-size' => '$1 ({{PLURAL:Ħatta kelma|Kelma waħda|Kelmtin|$2 kelmat|$2 en kelma}})',
 'search-result-category-size' => '{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوًا|$1 عضو}} ({{PLURAL:$2|لا تصانيف فرعية|تصنيف فرعي واحد|تصنيفان فرعيان|$2 تصنيفات فرعية|$2 تصنيفًا فرعيًا|$2 تصنيف فرعي}} و{{PLURAL:$3|لا ملفات|ملف واحد|ملفان|$3 ملفات|$3 ملفًا|$3 ملف}})',
 'search-redirect' => '(تحويلة $1)',
-'search-section' => '(قسم $1)',
+'search-section' => '(section $1)',
 'search-suggest' => 'هل كنت تقصد: $1',
 'searchrelated' => 'مرتبطة',
-'searchall' => 'الكل',
+'searchall' => 'Elkol',
 'showingresultsheader' => "{{PLURAL:$5|النتيجة '''$1''' من'''$3'''|النتائج '''$1 - $2''' من'''$3'''}} ل'''$4'''",
 'search-nonefound' => 'لا توجد نتائج تطابق الاستعلام.',
 
@@ -1013,7 +1013,7 @@ $1",
 
 # Recent changes
 'nchanges' => '{{PLURAL:$1|لا تغييرات|تغيير واحد|تغييران|$1 تغييرات|$1 تغييرا|$1 تغيير}}',
-'recentchanges' => 'أحدث التغييرات',
+'recentchanges' => 'Ajad tabdilet',
 'recentchanges-legend' => 'خيارات أحدث التغييرات',
 'recentchanges-summary' => 'تابع أحدث التغييرات للويكي عبر هذه التلقيمة.',
 'recentchanges-feed-description' => 'تابع أحدث التغييرات للويكي عبر هذه التلقيمة.',
@@ -1030,8 +1030,8 @@ $1",
 'rcshowhidepatr' => '$1 التعديلات المراجعة',
 'rcshowhidemine' => '$1 تعديلاتي',
 'rclinks' => 'أظهر آخر $1 تعديل في آخر $2 يوم<br />$3',
-'diff' => 'فرق',
-'hist' => 'تاريخ',
+'diff' => 'Farq',
+'hist' => 'Hist',
 'hide' => 'أخف',
 'show' => 'اعرض',
 'minoreditletter' => 'thafif',
@@ -1042,7 +1042,7 @@ $1",
 
 # Recent changes linked
 'recentchangeslinked' => 'تغييرات ذات علاقة',
-'recentchangeslinked-toolbox' => 'تغييرات ذات علاقة',
+'recentchangeslinked-toolbox' => 'Tabdilet them',
 'recentchangeslinked-title' => 'التغييرات المرتبطة ب "$1"',
 'recentchangeslinked-summary' => "هذه قائمة بالتغييرات التي تمت حديثا للصفحات الموصولة من صفحة معينة (أو إلى الأعضاء ضمن تصنيف معين).
 الصفحات في [[Special:Watchlist|قائمة مراقبتك]] '''عريضة'''",
@@ -1050,7 +1050,7 @@ $1",
 'recentchangeslinked-to' => 'أظهر التغييرات للصفحات الموصولة للصفحة المعطاة عوضا عن ذلك',
 
 # Upload
-'upload' => 'ارفع ملفات',
+'upload' => "Abεeth des fichiers l'esserveur",
 'uploadlogpage' => 'سجل الرفع',
 'filedesc' => 'ملخص:',
 'uploadedimage' => 'رفع "[[$1]]"',
@@ -1077,17 +1077,17 @@ $1",
 الوصف على [$2 صفحة وصف الملف] هناك معروض بالأسفل.',
 
 # Random page
-'randompage' => 'صفحة عشوائية',
+'randompage' => 'Safħa elli tji',
 
 # Statistics
 'statistics' => 'إحصاءات',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|بايت|بايت}}',
+'nbytes' => '{{PLURAL:Octet weħed|Zouz octets|$1 octets|$1 en octet}}',
 'nmembers' => '{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوا|$1 عضو}}',
 'prefixindex' => 'كل الصفحات بالبادئة',
 'usercreated' => '{{GENDER:$3|أنشأه|أنشأته}} في $1 الساعة $2',
-'newpages' => 'صفحات جديدة',
+'newpages' => 'Safħat jdod',
 'move' => 'انقل',
 'pager-newer-n' => '{{PLURAL:$1|أقدم 1|أقدم $1}}',
 'pager-older-n' => '{{PLURAL:$1|أقدم 1|أقدم $1}}',
@@ -1134,7 +1134,7 @@ $1",
 'dellogpage' => 'سجل الحذف',
 
 # Rollback
-'rollbacklink' => 'استرجع',
+'rollbacklink' => 'rajjaε',
 
 # Protect
 'protectlogpage' => 'سجل الحماية',
@@ -1147,7 +1147,7 @@ $1",
 # Namespace form on various pages
 'namespace' => 'النطاق',
 'invert' => 'اعكس الاختيار',
-'blanknamespace' => '(رئيسي)',
+'blanknamespace' => '(Principal)',
 
 # Contributions
 'contributions' => 'مساهماتي',
@@ -1169,7 +1169,7 @@ $1",
 'sp-contributions-submit' => 'lawwej',
 
 # What links here
-'whatlinkshere' => 'ماذا يصل هنا',
+'whatlinkshere' => 'Chnowa elli ywassel elhouni',
 'whatlinkshere-title' => 'الصفحات التي تصل إلى "$1"',
 'whatlinkshere-page' => "ss'af7a:",
 'linkshere' => "الصفحات التالية تصل إلى '''[[:$1]]''':",
@@ -1189,10 +1189,10 @@ $1",
 # Block/unblock
 'ipboptions' => 'ساعتين:2 hours,يوم واحد:1 day,3 أيام:3 days,أسبوع واحد:1 week,أسبوعين:2 weeks,شهر واحد:1 month,3 أشهر:3 months,6 أشهر:6 months,سنة واحدة:1 year,دائم:infinite',
 'ipblocklist' => 'المستخدمون الممنوعون',
-'blocklink' => 'امنع',
+'blocklink' => 'Bloqui',
 'unblocklink' => 'ارفع المنع',
 'change-blocklink' => 'تغيير المنع',
-'contribslink' => 'مساهمات',
+'contribslink' => 'Mousehmet',
 'blocklogpage' => 'سجل المنع',
 'blocklogentry' => 'منع "[[$1]]" لفترة زمنية مدتها $2 $3',
 'block-log-flags-nocreate' => 'إنشاء الحسابات ممنوع',
@@ -1209,7 +1209,7 @@ $1",
 'allmessagesdefault' => 'النص الافتراضي',
 
 # Thumbnails
-'thumbnail-more' => 'كبّر',
+'thumbnail-more' => 'Kabber',
 'thumbnail_error' => 'خطأ في إنشاء صورة مصغرة: $1',
 
 # Tooltip help for the actions
@@ -1218,41 +1218,40 @@ $1",
 'tooltip-pt-preferences' => 'تفضيلاتي',
 'tooltip-pt-watchlist' => 'قائمة الصفحات التي تراقب التغييرات التي تحدث بها',
 'tooltip-pt-mycontris' => 'قائمة مساهماتك',
-'tooltip-pt-login' => 'يفضل أن تسجل الدخول، لكنه ليس إلزاميا.',
+'tooltip-pt-login' => 'Madhabina ken tconnecti, ama mouch bessif',
 'tooltip-pt-logout' => 'خروج',
-'tooltip-ca-talk' => 'نقاش عن صفحة المحتوى',
-'tooltip-ca-edit' => 'يمكنك تعديل هذه الصفحة.
-من فضلك استخدم زر العرض المسبق قبل الحفظ.',
+'tooltip-ca-talk' => 'Discussion εal contenu mtaε essafħa',
+'tooltip-ca-edit' => 'Tannjem tbaddel essafħa hedhi. Aman enzel εal bouton mtaε elvue el msabqa qbal matsajjel.',
 'tooltip-ca-addsection' => 'ابدأ قسما جديدا',
-'tooltip-ca-viewsource' => 'هذه الصفحة محمية.
-يمكنك رؤية مصدرها.',
-'tooltip-ca-history' => 'النسخ السابقة لهذه الصفحة',
+'tooltip-ca-viewsource' => 'El safħa protégée.
+Tnajjem tchouf essource mteεha.',
+'tooltip-ca-history' => 'Copiet qdom mtaε essafħa hedhi',
 'tooltip-ca-protect' => 'احم هذه الصفحة',
 'tooltip-ca-delete' => 'احذف هذه الصفحة',
 'tooltip-ca-move' => 'علم هذه الصفحة',
 'tooltip-ca-watch' => 'أضف هذه الصفحة إلى قائمة مراقبتك',
 'tooltip-ca-unwatch' => 'أزل هذه الصفحة من قائمة مراقبتك',
-'tooltip-search' => 'lawwej fi {{SITENAME}}',
+'tooltip-search' => 'Lawwej fi {{SITENAME}}',
 'tooltip-search-go' => 'اذهب إلى صفحة بالاسم نفسه إن وجدت',
-'tooltip-search-fulltext' => 'ابحث في الصفحات عن هذا النص',
-'tooltip-p-logo' => "ara ess'af7a elraïssia",
-'tooltip-n-mainpage' => "ara ess'af7a elraïssia",
-'tooltip-n-mainpage-description' => "ara ess'af7a elraïssia",
-'tooltip-n-portal' => 'حول المشروع، ماذا يمكن أن تفعل، أين يمكن أن تجد ما تحتاجه',
-'tooltip-n-currentevents' => 'مطالعة سريعة لأهم الأحداث الجارية',
-'tooltip-n-recentchanges' => 'قائمة أحدث التغييرات في الويكي.',
-'tooltip-n-randompage' => 'حمل صفحة عشوائية',
-'tooltip-n-help' => 'المكان للمساعدة',
-'tooltip-t-whatlinkshere' => 'قائمة بكل صفحات الويكي التي تصل هنا',
-'tooltip-t-recentchangeslinked' => 'أحدث التغييرات في الصفحات الموصولة من هذه الصفحة',
+'tooltip-search-fulltext' => "Farkes f'essafħat εattexte hedha",
+'tooltip-p-logo' => "Emchi l'elpage principale",
+'tooltip-n-mainpage' => "Emchi l'elpage principale",
+'tooltip-n-mainpage-description' => "Emchi l'elpage principale",
+'tooltip-n-portal' => "Ɛ'almachrouε, chnowa tnajem taεmel, win talqa elli ħajtek bih",
+'tooltip-n-currentevents' => ' Alqa information εla aham laħdeth mtaε tawa',
+'tooltip-n-recentchanges' => "Lista mtaε ajad ettabdilat f'elwiki",
+'tooltip-n-randompage' => 'Ħell safħa elli tji',
+'tooltip-n-help' => 'Mouεawna',
+'tooltip-t-whatlinkshere' => 'Lista mtaε safħat elwiki elkol elli twassel elhouni',
+'tooltip-t-recentchangeslinked' => "Aham ettabldilet f'essafħat elli ywaslou l'essafħa hedhi",
 'tooltip-feed-atom' => 'تلقيم أتوم لهذه الصفحة',
 'tooltip-t-contributions' => 'رؤية قائمة مساهمات هذا المستخدم',
 'tooltip-t-emailuser' => 'أرسل رسالة لهذا المستخدم',
-'tooltip-t-upload' => 'ارفع ملفات',
-'tooltip-t-specialpages' => 'قائمة بكل الصفحات الخاصة',
-'tooltip-t-print' => 'نسخة للطباعة لهذه الصفحة',
-'tooltip-t-permalink' => 'وصلة دائمة لهذه النسخة من الصفحة',
-'tooltip-ca-nstab-main' => 'رؤية صفحة المحتوى',
+'tooltip-t-upload' => "Abεeth des fichiers l'esserveur",
+'tooltip-t-specialpages' => 'Lista mtaε essafħat esspéciales elkol',
+'tooltip-t-print' => "Version l'ettabεan mtaε essafħa hedhi.",
+'tooltip-t-permalink' => "Lien dayem l'elversion hedhi mtaε essafħa",
+'tooltip-ca-nstab-main' => 'Chouf elcontenu mtaε essafħa',
 'tooltip-ca-nstab-user' => 'اعرض صفحة المستخدم',
 'tooltip-ca-nstab-special' => 'هذه صفحة خاصة، لا تستطيع أن تعدل الصفحة نفسها',
 'tooltip-ca-nstab-project' => 'رؤية صفحة المحتوى',
@@ -1265,8 +1264,9 @@ $1",
 'tooltip-diff' => 'اعرض التغييرات التي قمت بها للنص.',
 'tooltip-compareselectedversions' => 'شاهد الفروق بين النسختين المختارتين من هذه الصفحة.',
 'tooltip-watch' => 'أضف هذه الصفحة إلى قائمة مراقبتك',
-'tooltip-rollback' => '"استرجاع" تسترجع التعديل (التعديلات)  في هذه الصفحة للمساهم الأخير بضغطة واحدة.',
-'tooltip-undo' => '"رجوع" تسترجع هذا التعديل وتفتح نافذة التعديل في نمط العرض المسبق. تسمح بإضافة سبب في الملخص.',
+'tooltip-rollback' => '"Rajjaε" yrajjeε ettabdilet f\'hassafħa el\'ekher weħed baddel fi nazla waħda.',
+'tooltip-undo' => '"رجوع" تسترجع هذا التعديل وتفتح نافذة التعديل في نمط العرض المسبق. تسمح بإضافة سبب في الملخص.
+"Annuler" trajjeε eltabdila lekhra w tħel fenêtre mtaε  el tabdil mtaε elvue el msabqa. Tnajjem tqoul εlech f\'ettalkhis.',
 'tooltip-summary' => 'أدخل ملخصا قصيرا',
 
 # Browsing diffs
@@ -1280,11 +1280,10 @@ $1",
 'show-big-image' => 'دقة كاملة',
 
 # Bad image list
-'bad_image_list' => 'الصيغة كالتالي:
-
-فقط عناصر القائمة (السطور التي تبدأ ب *) تؤخذ في الاعتبار.
-يجب أن تكون أول وصلة في السطر وصلة لملف سيىء.
-أي وصلات تالية في السطر نفسه تعتبر استثناءات، أي صفحات قد يكون الملف فيها سطريا.',
+'bad_image_list' => "Elformat kima hakka:
+Les élements mtaε lista (lostra elli yabdew b' *) yetħesbou.
+Ellien lowel fi star yelzmou ykoun lien el fichier khayeb.
+Ay lien ekher fi nafs estar yetħseb exception, maħneha des pages win elfichier ynajem ykoun fi star.",
 
 # Metadata
 'metadata' => 'بيانات ميتا',
@@ -1320,7 +1319,7 @@ $1",
 'duplicate-defaultsort' => '\'\'\'تحذير:\'\'\' مفتاح الترتيب الافتراضي "$2" يتجاوز مفتاح الترتيب الافتراضي السابق "$1".',
 
 # Special:SpecialPages
-'specialpages' => 'الصفحات الخاصة',
+'specialpages' => 'Safħat spéciales',
 
 # External image whitelist
 'external_image_whitelist' => ' #<pre>اترك هذا السطر تماما كما هو
index cfc52a6..1d36195 100644 (file)
@@ -1591,6 +1591,7 @@ $1",
 'search-result-score' => 'الارتباط: $1%',
 'search-redirect' => '(تحويلة $1)',
 'search-section' => '(قسم $1)',
+'search-file-match' => '(يطابق محتوى الملف)',
 'search-suggest' => 'أتقصد: $1',
 'search-interwiki-caption' => 'المشاريع الشقيقة',
 'search-interwiki-default' => '$1 نتيجة:',
@@ -2653,17 +2654,16 @@ $PAGEINTRO $NEWPAGE
 
 ملخص التعديل: $PAGESUMMARY $PAGEMINOREDIT
 
لاتصال بالمحرر:
تصل بالمحرر:
 البريد: $PAGEEDITOR_EMAIL
 ويكي: $PAGEEDITOR_WIKI
 
-لن يكون هناك إخطارات أخرى في حالة حدوث مزيد من التغييرات إلا إذا قمت بزيارة تلك الصفحة.
-يمكنك أيضاً إزالة العلامات عن جميع الصفحات في قائمة مراقبتك.
+لن يكون هناك إخطارات أخرى في حالة حدوث مزيد من التغييرات إلا إذا قمت بزيارة تلك الصفحة أثناء تواجدك. يمكنك أيضاً إزالة العلامات عن جميع الصفحات في قائمة مراقبتك.
 
-                   نظام {{SITENAME}} للإعلام بالبريد الإلكتروني
+نظام {{SITENAME}} للإشعار
 
 --
\84تغÙ\8aÙ\8aر Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø§Ù\84إعÙ\84اÙ\85 بالبريد الإلكتروني الخاص بك، قم بزيارة
\84تغÙ\8aÙ\8aر Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø§Ù\84إشعار بالبريد الإلكتروني الخاص بك، قم بزيارة
 {{canonicalurl:{{#special:Preferences}}}}
 
 لتغيير إعدادات قائمة مراقبتك، قم بزيارة
@@ -2672,7 +2672,7 @@ $PAGEINTRO $NEWPAGE
 لحذف الصفحة من قائمة مراقبتك، قم بزيارة
 $UNWATCHURL
 
-للمقترحات والحصول على مساعدة إضافية:
+للمقترحات وللحصول على مساعدة إضافية:
 {{canonicalurl: {{MediaWiki:Helppage}}}}',
 'created' => 'أنشئت',
 'changed' => 'غيرت',
@@ -3018,7 +3018,7 @@ $1',
 'range_block_disabled' => 'إمكانية مدير النظام لمنع نطاق معطلة.',
 'ipb_expiry_invalid' => 'تاريخ الانتهاء غير صحيح.',
 'ipb_expiry_temp' => 'عمليات منع أسماء المستخدمين المخفية يجب أن تكون دائمة.',
-'ipb_hide_invalid' => 'غير قادر على إخفاء هذا الحساب؛ ربما يكون قد قام بالكثير من التعديلات.',
+'ipb_hide_invalid' => 'غير قادر على منع الحساب؛ لديه أكثر من {{PLURAL:$1|تعديل واحد|$1 تعديل}}.',
 'ipb_already_blocked' => '"$1" ممنوع حالياً',
 'ipb-needreblock' => '$1 ممنوع حالياً. هل تريد تغيير الإعدادات؟',
 'ipb-otherblocks-header' => '{{PLURAL:$1||المنع الآخر|المنعان الآخران|المنوعات الأخرى}}',
@@ -4113,6 +4113,7 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(اللغة الافتراضية)',
+'img-lang-info' => 'ترجم هذه الصورة إلى $1. $2',
 'img-lang-go' => 'اذهب',
 
 # Table pager
@@ -4277,7 +4278,17 @@ $5
 'version-hook-subscribedby' => 'يستخدم بواسطة',
 'version-version' => '(نسخة $1)',
 'version-svn-revision' => 'ن$1',
-'version-license' => 'الرخصة',
+'version-license' => 'ترخيص ميدياويكي',
+'version-ext-license' => 'ترخيص',
+'version-ext-colheader-name' => 'امتداد',
+'version-ext-colheader-version' => 'نسخة',
+'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/ ميدياويكي]'''، حقوق النشر © 2001-$1 $2.",
 'version-poweredby-others' => 'آخرون',
 'version-poweredby-translators' => 'مترجمو translatewiki.net',
@@ -4297,13 +4308,14 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath مسار السكريبت]',
 
 # Special:Redirect
-'redirect' => 'تحÙ\88Ù\8aÙ\84 Ø¨Ø§Ø³Ù\85 Ù\85Ù\84Ù\81 Ø£Ù\88 Ø§Ø³Ù\85 Ù\85ستخدÙ\85 أو رقم مراجعة',
+'redirect' => 'تحÙ\88Ù\8aÙ\84 Ø­Ø³Ø¨ Ø±Ù\82Ù\85 Ø§Ù\84Ù\85Ù\84Ù\81 Ø£Ù\88 Ø±Ù\82Ù\85 Ø§Ù\84Ù\85ستخدÙ\85 Ø£Ù\88 Ø±Ù\82Ù\85 Ø§Ù\84صÙ\81حة أو رقم مراجعة',
 'redirect-legend' => 'تحويل إلى ملف أو صفحة',
 'redirect-summary' => 'هذه الصفحة الخاصة تحوّل إلى ملف (باسمه) أو صفحة (برقم إحدى مراجعاتها) أو إلى صفحة مستخدم (برقمه التعريفي). الاستخدام [[{{#Special:Redirect}}/file/Example.jpg]] أو [[{{#Special:Redirect}}/revision/328429]] أو [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'حوّل',
 'redirect-lookup' => 'ابحث في:',
 'redirect-value' => 'الوجهة',
 'redirect-user' => 'رقم مستخدم',
+'redirect-page' => 'معرف الصفحة',
 'redirect-revision' => 'مراجعة صفحة',
 'redirect-file' => 'اسم ملف',
 'redirect-not-exists' => 'المطلوب غير موجود',
@@ -4497,6 +4509,7 @@ $5
 'api-error-overwrite' => 'لا يسمح بالكتابة فوق ملف موجود.',
 'api-error-stashfailed' => 'خطأ داخلي: فشل الملقم في تخزين الملفات المؤقتة.',
 'api-error-publishfailed' => 'خطأ داخلي: لم ينجح الخادوم في نشر ملف مؤقت',
+'api-error-stasherror' => 'حدث خطأ أثناء رفع الملف لتخزينه.',
 'api-error-timeout' => 'لم يستجب الملقم في الوقت المتوقع.',
 'api-error-unclassified' => 'حدث خطأ غير معروف',
 'api-error-unknown-code' => 'خطأ غير معروف : " $1 "',
@@ -4521,12 +4534,19 @@ $5
 'rotate-comment' => 'تدوير الصورة  {{PLURAL:$1||درجة واحدة|درجتان|$1 درجات|$1 درجة}} باتجاه عقارب الساعة',
 
 # Limit report
+'limitreport-title' => 'محلل سمات البيانات:',
 'limitreport-cputime' => 'زمن المعالجة المستغرق',
 'limitreport-cputime-value' => '{{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتان|$1 ثوان|$1 ثانية}}',
 'limitreport-walltime' => 'الزمن الحقيقي المستغرق',
 'limitreport-walltime-value' => '{{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتان|$1 ثوان|$1 ثانية}}',
+'limitreport-ppvisitednodes' => 'زار المعالج عقدة إحصاء',
+'limitreport-ppgeneratednodes' => 'أحدث المعالج عقدة إحصاء',
+'limitreport-postexpandincludesize' => 'بعد توسيع المساحة الشاملة',
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|بايت|بايت}}',
-'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|بايت|بايت}}',
+'limitreport-templateargumentsize' => 'حجم نقاش القالب',
+'limitreport-templateargumentsize-value' => '$1/$2',
+'limitreport-expansiondepth' => 'أكثر عمق توسعي',
+'limitreport-expensivefunctioncount' => 'تحليل إحصاء وظيفة مكلف',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'فرد القوالب',
@@ -4539,10 +4559,14 @@ $5
 'expand_templates_input' => 'النص المدخل:',
 'expand_templates_output' => 'النتيجة',
 '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 parse',
+'expand_templates_generate_rawhtml' => 'أظهر خام HTML',
 'expand_templates_preview' => 'عرض مسبق',
 
+# Unknown messages
+'uploadinvalidxml' => 'تعذر تحليل XML في الملف المرفوع.',
 );
index e72b676..ab2518c 100644 (file)
@@ -1170,6 +1170,7 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'search-result-score' => 'Relevancia: $1%',
 'search-redirect' => '(redireición de $1)',
 'search-section' => '(seición $1)',
+'search-file-match' => '(casa col conteníu del ficheru)',
 'search-suggest' => 'Quixisti dicir: $1',
 'search-interwiki-caption' => 'Proyeutos hermanos',
 'search-interwiki-default' => '$1 resultaos:',
@@ -2283,7 +2284,7 @@ Restrinxóse l'esborráu d'estes páxines pa evitar perturbaciones accidentales
 'delete-warning-toobig' => "Esta páxina tien un historial d'ediciones grande, más de $1 {{PLURAL:$1|revisión|revisiones}}.
 Esborralu pue perturbar les operaciones de la base de datos de {{SITENAME}};
 obra con precaución.",
-'deleting-backlinks-warning' => "'''Avisu:''' Otres páxines enllacen a la páxina que ta a piques de desaniciar.",
+'deleting-backlinks-warning' => "'''Avisu:''' Otres páxines enllacen a, o trescluyen de, la páxina que ta a piques de desaniciar.",
 
 # Rollback
 'rollback' => 'Revertir ediciones',
@@ -2584,7 +2585,7 @@ Pa ver los bloqueos qu'hai agora mesmo, mira na [[Special:BlockList|llista de bl
 'range_block_disabled' => "La capacidá d'alministrador pa crear bloqueos d'intervalos ta desactivada.",
 'ipb_expiry_invalid' => 'Tiempu incorrectu.',
 'ipb_expiry_temp' => "Los bloqueos de nome d'usuariu escondíos han ser permanentes.",
-'ipb_hide_invalid' => 'Nun se pue desaniciar esta cuenta; seique tenga demasiaes ediciones.',
+'ipb_hide_invalid' => "Nun se pue desaniciar esta cuenta; tien más {{PLURAL:$1|d'una edición|de $1 ediciones}}.",
 'ipb_already_blocked' => '"$1" yá ta bloquiáu',
 'ipb-needreblock' => '$1 yá ta bloquiáu. ¿Quies camudar los parámetros?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Otru bloquéu|Otros bloqueos}}',
@@ -4002,4 +4003,6 @@ En realidá cuasi tolo qu'apaeza ente llaves dobles.",
 'expand_templates_generate_rawhtml' => 'Ver el HTML en bruto',
 'expand_templates_preview' => 'Vista previa',
 
+# Unknown messages
+'uploadinvalidxml' => "Nun pudo interpretase'l XML del ficheru cargáu.",
 );
index 09cbae9..336b797 100644 (file)
@@ -264,8 +264,8 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Падкрэсьліваць спасылкі:',
 'tog-justify' => 'Выраўноўваць тэкст па шырыні старонкі',
-'tog-hideminor' => 'ХаваÑ\86Ñ\8c Ð´Ñ\80обнÑ\8bÑ\8f Ð·Ñ\8cменÑ\8b ў сьпісе апошніх зьменаў',
-'tog-hidepatrolled' => 'ХаваÑ\86Ñ\8c Ð¿Ð°Ñ\82Ñ\80Ñ\83лÑ\8fванÑ\8bÑ\8f Ð·Ñ\8cменÑ\8b ў сьпісе апошніх зьменаў',
+'tog-hideminor' => 'ХаваÑ\86Ñ\8c Ð´Ñ\80обнÑ\8bÑ\8f Ð¿Ñ\80аÑ\9eкÑ\96 ў сьпісе апошніх зьменаў',
+'tog-hidepatrolled' => 'ХаваÑ\86Ñ\8c Ð¿Ð°Ñ\82Ñ\80Ñ\83лÑ\8fванÑ\8bÑ\8f Ð¿Ñ\80аÑ\9eкÑ\96 ў сьпісе апошніх зьменаў',
 'tog-newpageshidepatrolled' => 'Хаваць патруляваныя старонкі ў сьпісе новых старонак',
 'tog-extendwatchlist' => 'Пашырыць сьпіс назіраньня, каб ён паказваў усе зьмены, а ня толькі апошнія',
 'tog-usenewrc' => 'Групаваць зьмены па старонках у апошніх зьменах і сьпісе назіраньня',
@@ -784,7 +784,7 @@ $2',
 У выніку, наведвальнікі, якія карыстаюцца гэтым ІР-адрасам, ня могуць стварыць зараз болей рахункаў.',
 'emailauthenticated' => 'Ваш адрас электроннай пошты быў пацьверджаны $2 у $3.',
 'emailnotauthenticated' => 'Ваш адрас электроннай пошты яшчэ не пацьверджаны.
­Ð»ÐµÐºÑ\82Ñ\80оннаÑ\8f Ð¿Ð¾Ñ\88Ñ\82а Ð´Ð»Ñ\8f Ð½Ð°Ñ\81Ñ\82Ñ\83пнÑ\8bÑ\85 Ð¼Ð°Ð³Ñ\87Ñ\8bмаÑ\81Ñ\8cÑ\86Ñ\8fÑ\9e Ð´Ð°Ñ\81Ñ\8bлаÑ\86Ñ\86а Ð½Ñ\8f Ð±Ñ\83дзе.',
\9bÑ\96Ñ\81Ñ\82Ñ\8b Ñ\8dлекÑ\82Ñ\80оннай Ð¿Ð¾Ñ\88Ñ\82ай Ð´Ð»Ñ\8f Ð½Ð°Ñ\81Ñ\82Ñ\83пнÑ\8bÑ\85 Ð¼Ð°Ð³Ñ\87Ñ\8bмаÑ\81Ñ\8cÑ\86Ñ\8fÑ\9e Ð´Ð°Ñ\81Ñ\8bлаÑ\86Ñ\86а Ð½Ñ\8f Ð±Ñ\83дÑ\83Ñ\86Ñ\8c.',
 'noemailprefs' => 'Пазначце адрас электроннай пошты ў Вашых наладах, каб актывізаваць гэтыя магчымасьці.',
 'emailconfirmlink' => 'Пацьвердзіць Ваш адрас электроннай пошты',
 'invalidemailaddress' => 'Уведзены адрас электроннай пошты не адпавядае фармату адрасоў электроннай пошты.
@@ -833,7 +833,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'Ачыстка паролю',
 'passwordreset-text-one' => 'Запоўніце гэтую форму, каб скінуць пароль.',
-'passwordreset-text-many' => '{{PLURAL:$1|Ð\97апоÑ\9eнÑ\96Ñ\86е Ð°Ð´Ð½Ð¾ Ð· Ð³Ñ\8dÑ\82Ñ\8bÑ\85 Ð¿Ð°Ð»Ñ\91Ñ\9e, ÐºÐ°Ð± Ñ\81кÑ\96нÑ\83Ñ\86Ñ\8c Ð¿Ð°Ñ\80олÑ\8c.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Ð\97апоÑ\9eнÑ\96Ñ\86е Ð°Ð´Ð½Ð¾ Ð· Ð¿Ð°Ð»Ñ\91Ñ\9e, ÐºÐ°Ð± Ð°Ñ\82Ñ\80Ñ\8bмаÑ\86Ñ\8c Ñ\87аÑ\81овÑ\8b Ð¿Ð°Ñ\80олÑ\8c Ð¿Ñ\80аз Ñ\8dлекÑ\82Ñ\80оннÑ\83Ñ\8e Ð¿Ð¾Ñ\88Ñ\82Ñ\83.}}',
 'passwordreset-legend' => 'Ачысьціць пароль',
 'passwordreset-disabled' => 'Магчымасьць ачысткі паролю была забароненая ў {{GRAMMAR:месны|{{SITENAME}}}}.',
 'passwordreset-emaildisabled' => 'Функцыі e-mail у гэтай вікі былі адключаныя.',
@@ -843,22 +843,18 @@ $2',
 'passwordreset-capture-help' => 'Калі Вы пазначыце гэтае поле, электронны ліст (з часовым паролем), будзе паказаны Вам як толькі ён будзе дасланы ўдзельніку.',
 'passwordreset-email' => 'Адрас электроннай пошты:',
 'passwordreset-emailtitle' => 'Падрабязнасьці рахунку ў {{GRAMMAR:месны|{{SITENAME}}}}',
-'passwordreset-emailtext-ip' => 'Нехта (магчыма Вы, з IP-адрасу $1) зрабіў запыт на вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|1=Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
+'passwordreset-emailtext-ip' => 'Нехта (магчыма Вы, з IP-адрасу $1) зрабіў запыт на скіданьне вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
 
 $2
 
-{{PLURAL:$3|1=Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:|дзень|дні|дзён}}.
-Цяпер Вам неабходна ўвайсьці і выбраць новы пароль. Калі нехта іншы зрабіў гэты запыт,
-ці Вы ўспомнілі Ваш пачатковы пароль, які ня хочаце мяняць,
-Вы можаце праігнараваць гэтае паведамленьне, і працягваць выкарыстоўваць стары пароль.',
-'passwordreset-emailtext-user' => 'Удзельнік $1 зрабіў запыт на скіданьне вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|1=Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
+{{PLURAL:$3|Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:$5|дзень|дзён|дні}}.
+Цяпер Вам неабходна ўвайсьці і выбраць новы пароль. Калі нехта іншы зрабіў гэты запыт, ці Вы ўспомнілі Ваш пачатковы пароль, які ня хочаце мяняць, Вы можаце праігнараваць гэтае паведамленьне, і працягваць выкарыстоўваць стары пароль.',
+'passwordreset-emailtext-user' => 'Удзельнік $1 зрабіў запыт на скіданьне вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
 
 $2
 
-{{PLURAL:$3|1=Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:|дзень|дні|дзён}}.
-Цяпер Вам неабходна ўвайсьці і выбраць новы пароль. Калі нехта іншы зрабіў гэты запыт,
-ці Вы ўспомнілі Ваш пачатковы пароль, які ня хочаце мяняць,
-Вы можаце праігнараваць гэтае паведамленьне, і працягваць выкарыстоўваць стары пароль.',
+{{PLURAL:$3|Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:$5|дзень|дзён|дні}}.
+Цяпер Вам неабходна ўвайсьці і выбраць новы пароль. Калі нехта іншы зрабіў гэты запыт, ці Вы ўспомнілі Ваш пачатковы пароль, які ня хочаце мяняць, Вы можаце праігнараваць гэтае паведамленьне, і працягваць выкарыстоўваць стары пароль.',
 'passwordreset-emailelement' => 'Імя ўдзельніка: $1
 Часовы пароль: $2',
 'passwordreset-emailsent' => 'Ліст пра скіданьне паролю быў дасланы.',
@@ -1053,23 +1049,23 @@ $2
 Апошні запіс з журнала пададзены ніжэй для даведкі:",
 'semiprotectedpagewarning' => "'''Заўвага:''' Гэтая старонка была абароненая, і рэдагаваць яе могуць толькі зарэгістраваныя ўдзельнікі.
 Апошні запіс з журнала пададзены ніжэй для даведкі:",
-'cascadeprotectedwarning' => "'''Ð\9fапÑ\8fÑ\80Ñ\8dджанÑ\8cне:''' Ð\93Ñ\8dÑ\82аÑ\8f Ñ\81Ñ\82аÑ\80онка Ð°Ð±Ð°Ñ\80оненаÑ\8f, Ñ\82олÑ\8cкÑ\96 Ñ\9eдзелÑ\8cнÑ\96кÑ\96 Ð· Ð¿Ñ\80авамÑ\96 Ð°Ð´Ð¼Ñ\96нÑ\96Ñ\81Ñ\82Ñ\80аÑ\82аÑ\80аÑ\9e Ð¼Ð¾Ð³Ñ\83Ñ\86Ñ\8c Ñ\80Ñ\8dдагаваÑ\86Ñ\8c Ñ\8fе, Ñ\82амÑ\83 Ñ\88Ñ\82о Ñ\8fна Ñ\9eклÑ\8eÑ\87анаÑ\8f Ñ\9e {{PLURAL:$1|1=наÑ\81Ñ\82Ñ\83пнÑ\83Ñ\8e ÐºÐ°Ñ\81кадна-абаÑ\80оненÑ\83Ñ\8e Ñ\81Ñ\82аÑ\80онкÑ\83|наÑ\81Ñ\82Ñ\83пнÑ\8bÑ\8f ÐºÐ°Ñ\81кадна-абаÑ\80оненÑ\8bÑ\8f Ñ\81Ñ\82аÑ\80онкÑ\96}}:",
+'cascadeprotectedwarning' => "'''Ð\9fапÑ\8fÑ\80Ñ\8dджанÑ\8cне:''' Ð³Ñ\8dÑ\82аÑ\8f Ñ\81Ñ\82аÑ\80онка Ð°Ð±Ð°Ñ\80оненаÑ\8f, Ñ\82олÑ\8cкÑ\96 Ñ\9eдзелÑ\8cнÑ\96кÑ\96 Ð· Ð¿Ñ\80авамÑ\96 Ð°Ð´Ð¼Ñ\96нÑ\96Ñ\81Ñ\82Ñ\80аÑ\82аÑ\80аÑ\9e Ð¼Ð¾Ð³Ñ\83Ñ\86Ñ\8c Ñ\80Ñ\8dдагаваÑ\86Ñ\8c Ñ\8fе, Ñ\82амÑ\83 Ñ\88Ñ\82о Ñ\8fна Ñ\9eклÑ\8eÑ\87анаÑ\8f Ñ\9e {{PLURAL:$1|наÑ\81Ñ\82Ñ\83пнÑ\83Ñ\8e Ñ\81Ñ\82аÑ\80онкÑ\83|наÑ\81Ñ\82Ñ\83пнÑ\8bÑ\8f Ñ\81Ñ\82аÑ\80онкÑ\96}} Ð· ÐºÐ°Ñ\81каднай Ð°Ð±Ð°Ñ\80онай:",
 'titleprotectedwarning' => "'''Папярэджаньне: гэтая старонка была абароненая і для яе стварэньня патрабуюцца [[Special:ListGroupRights|адпаведныя правы]].'''
 Апошні запіс з журнала пададзены ніжэй для даведкі:",
 'templatesused' => '{{PLURAL:$1|Шаблён, які ўжываецца|Шаблёны, якія ўжываюцца}} на гэтай старонцы:',
-'templatesusedpreview' => 'У гэтым папярэднім праглядзе {{PLURAL:$1|1=выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
-'templatesusedsection' => 'У гэтай сэкцыі {{PLURAL:$1|1=выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
+'templatesusedpreview' => 'У гэтым папярэднім праглядзе {{PLURAL:$1|выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
+'templatesusedsection' => 'У гэтай сэкцыі {{PLURAL:$1|выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
 'template-protected' => '(абаронены)',
 'template-semiprotected' => '(часткова абароненая)',
-'hiddencategories' => 'Гэтая старонка належыць да $1 {{PLURAL:$1|1=схаванай катэгорыі|схаваных катэгорыяў}}:',
+'hiddencategories' => 'Гэтая старонка належыць да $1 {{PLURAL:$1|схаванай катэгорыі|схаваных катэгорыяў}}:',
 'nocreatetext' => 'У {{GRAMMAR:месны|{{SITENAME}}}} абмежаванае стварэньне новых старонак.
 Вы можаце вярнуцца і рэдагаваць існуючую старонку, альбо [[Special:UserLogin|ўвайсьці ў сыстэму ці стварыць рахунак]].',
 'nocreate-loggedin' => 'Вы ня маеце дазволу на стварэньне новых старонак.',
 'sectioneditnotsupported-title' => 'Рэдагаваньне сэкцыяў не падтрымліваецца',
 'sectioneditnotsupported-text' => 'Рэдагаваньне сэкцыяў не падтрымліваецца ў гэтай старонцы рэдагаваньня',
 'permissionserrors' => 'Памылка дазволу',
-'permissionserrorstext' => 'Ð\92Ñ\8b Ð½Ñ\8f Ð¼Ð°ÐµÑ\86е Ð´Ð°Ð·Ð²Ð¾Ð»Ñ\83 Ð½Ð° Ð³Ñ\8dÑ\82ае Ð´Ð·ÐµÑ\8fнÑ\8cне Ð¿Ð° {{PLURAL:$1|1=наÑ\81Ñ\82Ñ\83пнай Ð¿Ñ\80Ñ\8bÑ\87Ñ\8bне|наÑ\81Ñ\82Ñ\83пнÑ\8bÑ\85 Ð¿Ñ\80Ñ\8bÑ\87Ñ\8bнаÑ\85}}:',
-'permissionserrorstext-withaction' => 'Ð\92Ñ\8b Ð½Ñ\8f Ð¼Ð°ÐµÑ\86е Ð´Ð°Ð·Ð²Ð¾Ð»Ñ\83 Ð½Ð° $2 Ð¿Ð° {{PLURAL:$1|1=наÑ\81Ñ\82Ñ\83пнай Ð¿Ñ\80Ñ\8bÑ\87Ñ\8bне|наÑ\81Ñ\82Ñ\83пнÑ\8bÑ\85 Ð¿Ñ\80Ñ\8bÑ\87Ñ\8bнаÑ\85}}:',
+'permissionserrorstext' => 'Ð\92Ñ\8b Ð½Ñ\8f Ð¼Ð°ÐµÑ\86е Ð´Ð°Ð·Ð²Ð¾Ð»Ñ\83 Ð½Ð° Ð³Ñ\8dÑ\82ае Ð´Ð·ÐµÑ\8fнÑ\8cне Ð· {{PLURAL:$1|наÑ\81Ñ\82Ñ\83пнай Ð¿Ñ\80Ñ\8bÑ\87Ñ\8bнÑ\8b|наÑ\81Ñ\82Ñ\83пнÑ\8bÑ\85 Ð¿Ñ\80Ñ\8bÑ\87Ñ\8bнаÑ\9e}}:',
+'permissionserrorstext-withaction' => 'Ð\92Ñ\8b Ð½Ñ\8f Ð¼Ð°ÐµÑ\86е Ð´Ð°Ð·Ð²Ð¾Ð»Ñ\83 Ð½Ð° $2 Ð· {{PLURAL:$1|наÑ\81Ñ\82Ñ\83пнай Ð¿Ñ\80Ñ\8bÑ\87Ñ\8bнÑ\8b|наÑ\81Ñ\82Ñ\83пнÑ\8bÑ\85 Ð¿Ñ\80Ñ\8bÑ\87Ñ\8bнаÑ\9e}}:',
 'recreate-moveddeleted-warn' => "'''Увага: Вы ствараеце старонку, якая раней была выдаленая.'''
 
 Упэўніцеся, што стварэньне гэтай старонкі неабходнае.
index 2fee72c..06c6375 100644 (file)
@@ -23,6 +23,7 @@
  * @author Samritmaity
  * @author Sayak Sarkar
  * @author Sm faysal
+ * @author Tauhid16
  * @author Usarker
  * @author Wikitanvir
  * @author Zaheen
@@ -1141,6 +1142,7 @@ $1",
 'search-result-score' => 'মিলেছে: $1%',
 'search-redirect' => '(পুনর্নিদেশনা $1)',
 'search-section' => '(অনুচ্ছেদ $1)',
+'search-file-match' => '(নথির বিষয়বস্তু মিলে যায়)',
 'search-suggest' => 'আপনি সম্ভবত বুঝাতে চাইছেন: $1',
 'search-interwiki-caption' => 'সহপ্রকল্পসমূহ',
 'search-interwiki-default' => '$1 ফলাফলসমূহ:',
@@ -1953,6 +1955,7 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 'protectedpages' => 'সুরক্ষিত পাতাসমূহ',
 'protectedpages-indef' => 'শুধুমাত্র অসীম সুরক্ষা',
 'protectedpages-cascade' => 'শুধুমাত্র প্রপাতাকার সুরক্ষা',
+'protectedpages-noredirect' => 'পুনর্নির্দেশনাগুলো লুকাও',
 'protectedpagesempty' => 'কোন পাতা বর্তমানে এই প্যারামিটারগুলিসহ সুরক্ষিত নয়।',
 'protectedtitles' => 'সুরক্ষিত শিরোনামগুলি',
 'protectedtitlesempty' => 'কোন শিরোনাম বর্তমানে এই প্যারামিটারগুলিসহ সুরক্ষিত নয়।',
@@ -2204,7 +2207,7 @@ $UNWATCHURL
 'exblank' => 'পাতাটি খালি ছিল',
 'delete-confirm' => '"$1" অপসারণ',
 'delete-legend' => 'অপসারণ',
-'historywarning' => "'''সতরà§\8dà¦\95à§\80à¦\95রণ:''' à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦®à§\81à¦\9bà§\87 à¦«à§\87লা à¦¹à¦¬à§\87 à¦¯à¦¾à¦° à¦\87তিহাস à¦¸à¦\82à¦\96à§\8dযা à¦ªà§\8dরায় $1 {{PLURAL:$1|সংশোধন|সংশোধন}}:",
+'historywarning' => "'''সতরà§\8dà¦\95à§\80à¦\95রণ:''' à¦¯à§\87 à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦\86পনি à¦®à§\81à¦\9bà§\87 à¦«à§\87লতà§\87 à¦¯à¦¾à¦\9aà§\8dà¦\9bà§\87ন à¦¤à¦¾à¦° à¦\87তিহাসà§\87র à¦¸à¦\82à¦\96à§\8dযা à¦ªà§\8dরায় $1à¦\9fি {{PLURAL:$1|সংশোধন|সংশোধন}}:",
 'confirmdeletetext' => 'আপনি একটি পাতা সেটির সমস্ত ইতিহাসসহ মুছে ফেলতে যাচ্ছেন।
 অনুগ্রহ করে নিশ্চিত করুন আপনি আসলেই এটি করতে চান, আপনি এর ফলাফল সম্পর্কে অবহিত, এবং আপনি [[{{MediaWiki:Policy-url}}|নীতিমালা]] মেনে এটি করছেন।',
 'actioncomplete' => 'কাজটি নিষ্পন্ন হয়েছে',
@@ -2229,6 +2232,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'এই পাতাটির একটি বৃহৎ সম্পাদনা ইতিহাস রয়েছে, যা $1 {{PLURAL:$1|সংস্করণেরও|সংস্করণেরও}} বেশি।
 এই পাতাটি মুছে ফেললে তা {{SITENAME}} সাইটের ডেটাবেজ সমস্যার কারণ হতে পারে;
 সাবধানতার সাথে এগিয়ে যান।',
+'deleting-backlinks-warning' => "'''সতর্কীকরণ:''' আপনি যেটি মুছে ফেলতে যাচ্ছেন তা অন্যান্য পাতাসমূহের সাথে সংযুক্ত আছে।",
 
 # Rollback
 'rollback' => 'সম্পাদনা ফিরিয়ে নিন',
@@ -3657,6 +3661,12 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'version-hook-subscribedby' => 'সাবস্ক্রাইব করেছেন',
 'version-version' => '(সংস্করণ $1)',
 'version-license' => 'মিডিয়াউইকি লাইসেন্স',
+'version-ext-license' => 'লাইসেন্স',
+'version-ext-colheader-name' => 'এক্সটেনশন',
+'version-ext-colheader-version' => 'সংস্করণ',
+'version-ext-colheader-license' => 'লাইসেন্স',
+'version-ext-colheader-description' => 'বিবরণ',
+'version-ext-colheader-credits' => 'লেখক',
 'version-poweredby-credits' => "এইক উইকিটি পরিচালিত হচ্ছে '''[https://www.mediawiki.org/ মিডিয়াউইকি]'''-এর মাধ্যমে, কপিরাইট © ২০০১-$1 $2।",
 'version-poweredby-others' => 'অন্যান্য',
 'version-poweredby-translators' => 'translatewiki.net অনুবাদকগণ',
@@ -3674,13 +3684,14 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'version-entrypoints-header-url' => 'ইউআরএল',
 
 # Special:Redirect
-'redirect' => 'ফাà¦\87ল, à¦¬à§\8dযবহারà¦\95রà§\80, à¦\85থবা à¦°à¦¿à¦­à¦¿à¦¶ন আইডি দ্বারা পুনঃনির্দেশ করা হয়েছে',
+'redirect' => 'পাতা, à¦«à¦¾à¦\87ল, à¦¬à§\8dযবহারà¦\95রà§\80, à¦\85থবা à¦¸à¦\82শà§\8bধন আইডি দ্বারা পুনঃনির্দেশ করা হয়েছে',
 'redirect-legend' => 'একটি ফাইল অথবা পাতায় পুনঃনির্দেশ করা হয়েছে',
 'redirect-summary' => 'এই বিশেষ পাতাটি পুনঃনির্দেশিত হয়েছে একটি ফাইলে (ফাইলের নাম), একটি পাতা (রিভিশন আইডি), অথবা একটি ব্যবহারকরী পাতায় (সংখ্যায় লেখা ব্যবহারকারী আইডি)। ব্যবহার: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]]।',
 'redirect-submit' => 'যাও',
 'redirect-lookup' => 'দেখুন:',
 'redirect-value' => 'মান:',
 'redirect-user' => 'ব্যবহারকারী আইডি',
+'redirect-page' => 'পাতার আইডি',
 'redirect-revision' => 'পাতা সংস্করণ',
 'redirect-file' => 'ফাইলের নাম',
 'redirect-not-exists' => 'মান পাওয়া যায়নি',
index 3bbbbdc..b7af611 100644 (file)
@@ -408,7 +408,7 @@ $messages = array(
 'category-empty' => "''Ova kategorija trenutno ne sadrži članke ni medije.''",
 'hidden-categories' => '{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}}',
 'hidden-category-category' => 'Sakrivene kategorije',
-'category-subcat-count' => '{{PLURAL:$2|Ova kategorija ima sljedeću podkategoriju.|Ova kategorija ima {{PLURAL:$1|sljedeće podkategorije|sljedećih $1 podkategorija}}, od $2 ukupno.}}',
+'category-subcat-count' => '{{PLURAL:$2|Ova kategorija ima sljedeću podkategoriju.|Ova kategorija ima {{PLURAL:$1|sljedeću podkategoriju|sljedeće $1 podkategorije|sljedećih $1 podkategorija}}, od $2 ukupno.}}',
 'category-subcat-count-limited' => 'Ova kategorija sadrži {{PLURAL:$1|slijedeću $1 podkategoriju|slijedeće $1 podkategorije|slijedećih $1 podkategorija}}.',
 'category-article-count' => '{{PLURAL:$2|U ovoj kategoriji se nalazi $1 članak.|{{PLURAL:$1|Prikazan je $1 članak|Prikazana su $1 članka|Prikazano je $1 članaka}} od ukupno $2 u ovoj kategoriji.}}',
 'category-article-count-limited' => '{{PLURAL:$1|Slijedeća $1 stranica je|Slijedeće $1 stranice su|Slijedećih $1 stranica je}} u ovoj kategoriji.',
@@ -3104,6 +3104,7 @@ Ovo je vjerovatno izazvao vezom ka vanjskoj nepoželjnoj stranici.',
 'pageinfo-length' => 'Dužina stranice (u bajtovima)',
 'pageinfo-article-id' => 'ID stranice',
 'pageinfo-language' => 'Jezik sadržaja stranice',
+'pageinfo-content-model' => 'Model sadržaj stranice',
 'pageinfo-robot-policy' => 'Indeksiranje od strane robota',
 'pageinfo-robot-index' => 'Dozvoljeno',
 'pageinfo-robot-noindex' => 'Nije dozvoljeno',
index fdf3ec0..1fbf159 100644 (file)
@@ -1025,6 +1025,8 @@ Ja existeix.",
 'content-not-allowed-here' => 'No és permés el contingut "$1" a la pàgina [[$2]]',
 'editwarning-warning' => "Si sortiu d'aquesta pàgina perdreu tots els canvis que hàgiu fet.
 Si teniu un compte d'usuari, podeu eliminar aquest avís a la secció «Caixa d'edició» de les vostres preferències.",
+'editpage-notsupportedcontentformat-title' => "No s'admet el format del contingut",
+'editpage-notsupportedcontentformat-text' => "No s'admet el format del contingut $1 pel model de contingut $2.",
 
 # Content models
 'content-model-wikitext' => 'wikitext',
@@ -1275,6 +1277,7 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-result-score' => 'Rellevància: $1%',
 'search-redirect' => '(redirigit des de $1)',
 'search-section' => '(secció $1)',
+'search-file-match' => '(coincideix amb el contingut del fitxer)',
 'search-suggest' => 'Volíeu dir: $1',
 'search-interwiki-caption' => 'Projectes germans',
 'search-interwiki-default' => '$1 resultats:',
@@ -1717,6 +1720,7 @@ Si us plau, torneu enrere i carregueu aquest fitxer sota un altre nom. [[File:$1
 Si us plau, si encara desitgeu carregar el vostre fitxer, torneu enrera i carregueu-ne una còpia amb un altre nom. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Aquest fitxer és un duplicat {{PLURAL:$1|del fitxer |dels següents fitxers:}}',
 'file-deleted-duplicate' => "S'ha suprimit anteriorment un fitxer idèntic a aquest ([[:$1]]). Hauríeu de comprovar el registre de supressions del fitxer abans de tornar-lo a carregar.",
+'file-deleted-duplicate-notitle' => 'Un fitxer idèntic a aquest fitxer havia estat suprimit abans, i també el títol. Hauríeu de demanar a algú que pugui veure les dades suprimides del fitxer que revisi la situació abans de procedir a tornar a carregar-lo.',
 'uploadwarning' => 'Avís de càrrega',
 'uploadwarning-text' => 'Modifiqueu la descripció de la imatge i torneu a intentar-ho.',
 'savefile' => 'Desa el fitxer',
@@ -1747,7 +1751,7 @@ Si us plau, si encara desitgeu carregar el vostre fitxer, torneu enrera i carreg
 
 $1',
 'upload-warning-subj' => 'Avís de càrrega',
-'upload-warning-msg' => 'Hi ha hagut un problema amb la teva càrrega de [$2]. Pots tornar a [[Special:Upload/stash/$1|formulari de càrrega]] per corregir aquest problema.',
+'upload-warning-msg' => 'Hi ha hagut un problema amb la càrrega de [$2]. Podeu tornar a [[Special:Upload/stash/$1|formulari de càrrega]] per corregir aquest problema.',
 
 'upload-proto-error' => 'El protocol és incorrecte',
 'upload-proto-error-text' => 'Per a les càrregues remotes cal que els URL comencin amb <code>http://</code> o <code>ftp://</code>.',
@@ -1994,7 +1998,7 @@ Potser voleu modificar-ne la descripció en la seva [$2 pàgina de descripció].
 'statistics-pages' => 'Pàgines',
 'statistics-pages-desc' => 'Totes les pàgines del wiki, incloent les pàgines de discussió, redireccions, etc.',
 'statistics-files' => 'Fitxers carregats',
-'statistics-edits' => 'Edicions en pàgines des que el projecte {{SITENAME}} fou instaŀlat',
+'statistics-edits' => 'Edicions en pàgines des que el projecte {{SITENAME}} fou instalat',
 'statistics-edits-average' => 'Edicions per pàgina de mitjana',
 'statistics-views-total' => 'Visualitzacions totals',
 'statistics-views-total-desc' => "No hom inclou l'accès a pàgines inexistents o pàgines especials",
@@ -2353,7 +2357,7 @@ Vegeu $2 per a un registre dels esborrats més recents.",
 'delete-edit-reasonlist' => "Edita els motius d'eliminació",
 'delete-toobig' => "Aquesta pàgina té un historial d'edicions molt gran, amb més de $1 {{PLURAL:$1|canvi|canvis}}. L'eliminació d'aquestes pàgines està restringida per a prevenir que hi pugui haver un desajustament seriós de la base de dades de tot el projecte {{SITENAME}} per accident.",
 'delete-warning-toobig' => "Aquesta pàgina té un historial d'edicions molt gran, amb més de $1 {{PLURAL:$1|canvi|canvis}}. Eliminar-la podria suposar un seriós desajustament de la base de dades de tot el projecte {{SITENAME}}; aneu en compte abans dur a terme l'acció.",
-'deleting-backlinks-warning' => "'''Avís:''' Altres pàgines enllacen a la pàgina que esteu a punt de suprimir.",
+'deleting-backlinks-warning' => "'''Avís:''' Altres pàgines enllacen o transclouen de la pàgina que esteu a punt de suprimir.",
 
 # Rollback
 'rollback' => 'Reverteix edicions',
@@ -2592,6 +2596,7 @@ quines pàgines en concret estan sent vandalitzades).",
 Vegeu la [[Special:BlockList|llista de bloqueigs]] per revisar-los.",
 'ipb-blockingself' => 'Esteu a punt de blocar-vos a vós mateix! Esteu segurs de voler-ho fer?',
 'ipb-confirmhideuser' => "Esteu a punt de bloquejar un usuari que està marcat amb l'opció «amaga l'usuari». Això suprimirà el seu nom a totes les llistes i registres. Esteu segurs de voler-ho fer?",
+'ipb-confirmaction' => 'Si esteu segur que voleu fer-ho, marqueu el camp «{{int:ipb-confirm}}» a la part inferior.',
 'ipb-edit-dropdown' => 'Edita les raons per a blocar',
 'ipb-unblock-addr' => 'Desbloca $1',
 'ipb-unblock' => 'Desbloca un usuari o una adreça IP',
@@ -2655,7 +2660,7 @@ Per més detalls, a sota es mostra el registre de supressions:",
 'range_block_disabled' => 'La facultat dels administradors per a crear bloquejos de rang està desactivada.',
 'ipb_expiry_invalid' => "Data d'acabament no vàlida.",
 'ipb_expiry_temp' => "Els blocatges amb ocultació de nom d'usuari haurien de ser permanents.",
-'ipb_hide_invalid' => "No s'ha pogut eliminar el compte; potser té massa edicions.",
+'ipb_hide_invalid' => "No s'ha pogut eliminar el compte; té més {{PLURAL:$1|d'una edició|de $1 edicions}}.",
 'ipb_already_blocked' => '«$1» ja està blocat',
 'ipb-needreblock' => "L'usuari $1 ja està blocat. Voleu canviar-ne els paràmetres del blocatge?",
 'ipb-otherblocks-header' => 'Altres {{PLURAL:$1|bloquejos|bloquejos}}',
@@ -3765,7 +3770,17 @@ També podeu [[Special:EditWatchlist|utilitzar l'editor estàndard]].",
 'version-hook-name' => 'Nom del lligam',
 'version-hook-subscribedby' => 'Subscrit per',
 'version-version' => '(Versió $1)',
-'version-license' => 'Llicència',
+'version-license' => 'Llicència del MediaWiki',
+'version-ext-license' => 'Llicència',
+'version-ext-colheader-name' => 'Extensió',
+'version-ext-colheader-version' => 'Versió',
+'version-ext-colheader-license' => 'Llicència',
+'version-ext-colheader-description' => 'Descripció',
+'version-ext-colheader-credits' => 'Autors',
+'version-license-title' => 'Llicència de $1',
+'version-license-not-found' => "No s'ha trobat cap informació detallada de la llicència d'aquesta extensió.",
+'version-credits-title' => 'Crèdits de $1',
+'version-credits-not-found' => "No s'ha trobat cap informació detallada dels crèdits d'aquesta extensió.",
 'version-poweredby-credits' => "El wiki funciona gràcies a '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'altres',
 'version-poweredby-translators' => 'Traductors de translatewiki.net',
@@ -3775,7 +3790,7 @@ També podeu [[Special:EditWatchlist|utilitzar l'editor estàndard]].",
 MediaWiki es distribueix en l'esperança de ser d'utilitat, però SENSE CAP GARANTIA; ni tan sols la garantia implícita de COMERCIALITZACIÓ o ADEQUACIÓ A UNA FINALITAT DETERMINADA. En trobareu més detalls a  la Llicència Pública General GNU.
 
 Amb aquest programa heu d'haver rebut [{{SERVER}}{{SCRIPTPATH}}/COPYING una còpia de la Llicència Pública General GNU]; si no és així, adreceu-vos a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o bé [//www.gnu.org/licenses/old-licenses/gpl-2.0.html llegiu-la en línia].",
-'version-software' => 'Programari instaŀlat',
+'version-software' => 'Programari instalat',
 'version-software-product' => 'Producte',
 'version-software-version' => 'Versió',
 'version-entrypoints' => "URL de punts d'entrada",
@@ -3984,6 +3999,7 @@ Altrament, podeu fer servir un senzill formulari a continuació. El vostre comen
 'api-error-overwrite' => 'No està permès sobreescriure un fitxer existent.',
 'api-error-stashfailed' => 'Error intern: el servidor no ha pogut emmagatzemar fitxers temporals.',
 'api-error-publishfailed' => 'Error intern: el servidor no ha pogut publicar el fitxer temporal.',
+'api-error-stasherror' => "S'ha produït un error en carregar el fitxer al dipòsit.",
 'api-error-timeout' => 'El servidor no ha respost en el temps esperat.',
 'api-error-unclassified' => "S'ha produït un error desconegut",
 'api-error-unknown-code' => 'Error desconegut: «$1»',
@@ -4038,4 +4054,6 @@ També expandeix les funcions sintàctiques, com ara <code><nowiki>{{</nowiki>#l
 'expand_templates_generate_rawhtml' => "Mostra l'HTML sense filtrar",
 'expand_templates_preview' => 'Previsualitza',
 
+# Unknown messages
+'uploadinvalidxml' => "No s'ha pogut analitzar l'XML del fitxer carregat.",
 );
index 452900e..7d90b0a 100644 (file)
@@ -736,7 +736,7 @@ URL язъеш гӀалат даьлла хила мега.
 'userlogin-yourpassword-ph' => 'Язъе хьай пароль',
 'createacct-yourpassword-ph' => 'Язъе пароль',
 'yourpasswordagain' => 'Юха язъе пароль:',
-'createacct-yourpasswordagain' => 'Бакъе пароль',
+'createacct-yourpasswordagain' => 'Бакъ йе пароль',
 'createacct-yourpasswordagain-ph' => 'Кхин цкъа язъе пароль',
 'remembermypassword' => 'Даглаца сан дӀаяздар хӀокху компьютеран тӀехь (цхьан $1 {{PLURAL:$1|динахь}})',
 'userlogin-remembermypassword' => 'Дагахь латт ве/е со',
@@ -767,10 +767,10 @@ URL язъеш гӀалат даьлла хила мега.
 'userlogin-createanother' => 'Кхолла декъашхочун кхин дӀаяздар',
 'createacct-join' => 'ДӀаязбе лахахь хай хаам.',
 'createacct-another-join' => 'Язбе лахахь керлачу декъашхочун дӀаяздаран хаам.',
-'createacct-emailrequired' => 'ЭлекÑ\82Ñ\80онни почтан адрес',
-'createacct-emailoptional' => 'ЭлекÑ\82Ñ\80онни почтан адрес (ца яздича мега)',
-'createacct-email-ph' => 'Ð\94Ó\80аÑ\8fзде Ñ\8dлекÑ\82Ñ\80онни почтан адрес',
-'createacct-another-email-ph' => 'Ð\94Ó\80аÑ\8fзде Ñ\8dлекÑ\82Ñ\80онни почтан адрес',
+'createacct-emailrequired' => 'ЭлекÑ\82Ñ\80онан почтан адрес',
+'createacct-emailoptional' => 'ЭлекÑ\82Ñ\80онан почтан адрес (ца яздича мега)',
+'createacct-email-ph' => 'Ð\94Ó\80аÑ\8fзде Ñ\8dлекÑ\82Ñ\80онан почтан адрес',
+'createacct-another-email-ph' => 'Ð\94Ó\80аÑ\8fзде Ñ\8dлекÑ\82Ñ\80онан почтан адрес',
 'createaccountmail' => 'хааман зӀене хула',
 'createacct-realname' => 'Хьан цӀе (ца язйича мега)',
 'createaccountreason' => 'Бахьан:',
@@ -807,9 +807,9 @@ URL язъеш гӀалат даьлла хила мега.
 'password-login-forbidden' => 'Иштта декъашхочун цӀе а пароль а лелаян цамаго.',
 'mailmypassword' => 'Пароль кхоссар',
 'passwordremindertitle' => 'Декъашхочун {{grammar:genitive|{{SITENAME}}}}  пароль дагайаийтар',
-'noemail' => 'ЦÓ\80е $1 Ð¹Ð¾Ð»Ñ\83 Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н Ñ\8dлекÑ\82Ñ\80онни адрес яздина дац.',
-'noemailcreate' => 'Ð\90Ñ\85Ñ\8cа Ð½Ð¸Ð¹Ñ\81а Ñ\8dлекÑ\82Ñ\80онни почтан адрес дӀаяздан деза',
-'passwordsent' => 'Ð\9aеÑ\80ла Ð¿Ð°Ñ\80олÑ\8c Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н $1 Ñ\8dлекÑ\82Ñ\80онни адрес тӀе дӀахьажина. Дехар до, керла пароль еъча юху системин чугӀо.',
+'noemail' => 'ЦÓ\80е $1 Ð¹Ð¾Ð»Ñ\83 Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н Ñ\8dлекÑ\82Ñ\80онан адрес яздина дац.',
+'noemailcreate' => 'Ð\90Ñ\85Ñ\8cа Ð½Ð¸Ð¹Ñ\81а Ñ\8dлекÑ\82Ñ\80онан почтан адрес дӀаяздан деза',
+'passwordsent' => 'Ð\9aеÑ\80ла Ð¿Ð°Ñ\80олÑ\8c Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н $1 Ñ\8dлекÑ\82Ñ\80онан адрес тӀе дӀахьажина. Дехар до, керла пароль еъча юху системин чугӀо.',
 'blocked-mailpassword' => 'Хьан IP-адрес ца тадарш дан магийна дац, цуьндела пароль меттахӀотош йолу функци блоктоьхна ю.',
 'eauthentsent' => 'ДӀаяздинчу электронан адрес тӀе хаам баийтина.
 Даиман хаамаш баийта хааман чохь де бохург дан деза адрес хьай хилар бакъдеш.',
@@ -853,7 +853,7 @@ URL язъеш гӀалат даьлла хила мега.
 'passwordreset-username' => 'Декъашхочун цӀе:',
 'passwordreset-domain' => 'Домен:',
 'passwordreset-capture' => 'Хьажа беанчу хааме?',
-'passwordreset-email' => 'ЭлекÑ\82Ñ\80онни почтан адрес:',
+'passwordreset-email' => 'ЭлекÑ\82Ñ\80онан почтан адрес:',
 'passwordreset-emailtitle' => '{{SITENAME}}: декъашхочун дӀаяздарх лаьцна хаам',
 'passwordreset-emailelement' => 'Декъашхочун цӀе: $1
 Ханна йолу пароль: $2',
@@ -863,11 +863,11 @@ URL язъеш гӀалат даьлла хила мега.
 
 # Special:ChangeEmail
 'changeemail' => 'Хийца электрони почт',
-'changeemail-header' => 'ЭлекÑ\82Ñ\80они почтан адрес хийцар',
-'changeemail-text' => 'Юза Ñ\85Ó\80аÑ\80а Ñ\84оÑ\80ма Ñ\85Ñ\8cайн Ñ\8dлекÑ\82Ñ\80они почтан адрес хуьйцуш. Ахьа хийцар бакъдан язъян еза пароль.',
+'changeemail-header' => 'ЭлекÑ\82Ñ\80онан почтан адрес хийцар',
+'changeemail-text' => 'Юза Ñ\85Ó\80аÑ\80а Ñ\84оÑ\80ма Ñ\85Ñ\8cайн Ñ\8dлекÑ\82Ñ\80онан почтан адрес хуьйцуш. Ахьа хийцар бакъдан язъян еза пароль.',
 'changeemail-no-info' => 'ХӀара агӀо лело системин чугӀо.',
-'changeemail-oldemail' => 'Ð\9aаÑ\80аÑ\80а Ñ\8dлекÑ\82Ñ\80онни почтан адрес:',
-'changeemail-newemail' => 'ЭлекÑ\82Ñ\80они почтан керла адрес:',
+'changeemail-oldemail' => 'Ð\9aаÑ\80аÑ\80а Ñ\8dлекÑ\82Ñ\80онан почтан адрес:',
+'changeemail-newemail' => 'ЭлекÑ\82Ñ\80онан почтан керла адрес:',
 'changeemail-none' => '(яц)',
 'changeemail-password' => 'Хьан пароль «{{SITENAME}}» проектан:',
 'changeemail-submit' => 'Хийца email',
@@ -1287,7 +1287,7 @@ $1",
 'prefs-help-gender' => 'ТӀехь доцург: и хаам лелош бу цхьайолу хаамаш чохь декъашхочун пол гучуйоккхуш.
 И хаам массарна гуш хир бу.',
 'email' => 'Email',
-'prefs-help-email' => 'ЭлекÑ\82Ñ\80они Ð¿Ð¾Ñ\87Ñ\82ан Ð°Ð´Ñ\80еÑ\81 Ñ\86аÑ\85lоÑ\82Ñ\82ийÑ\87а Ð°Ñ\8a Ñ\85lумма дац, амма иза оьшар ю, нагахь хьуна хьай пароль йицлахь.',
+'prefs-help-email' => 'ЭлекÑ\82Ñ\80онан Ð¿Ð¾Ñ\87Ñ\82ан Ð°Ð´Ñ\80еÑ\81 Ñ\86аÑ\85Ó\80оÑ\82Ñ\82ийÑ\87а Ð° Ñ\85Ó\80умма дац, амма иза оьшар ю, нагахь хьуна хьай пароль йицлахь.',
 'prefs-help-email-others' => 'Кхин дӀа цо кхечу декъашхошна йиш хуьлуьйту хьога электронан кехат даийта хьан агӀона чохь йолу хьажориган гӀоьнца.',
 'prefs-info' => 'Коьрта хаам',
 'prefs-i18n' => 'Юкъардекъа мотт',
@@ -2499,6 +2499,7 @@ PICT # тайп тайпан
 'exif-originaltransmissionref' => 'ДӀадолалун меттиган код',
 'exif-label' => 'Билгало',
 'exif-datetimemetadata' => 'ТӀехьара метахаамаш хийцина терахь',
+'exif-copyrightowner' => 'Авторийн бакъонаш ерг',
 'exif-usageterms' => 'Лелоран хьал',
 'exif-pngfilecomment' => 'PNG-файлан билгалдаккхар',
 'exif-giffilecomment' => 'GIF-файлан билгалдаккхар',
@@ -2608,7 +2609,11 @@ PICT # тайп тайпан
 'version-parser-function-hooks' => 'Cинтаксисан къасторан функци схьалоцурш',
 'version-version' => '(Верси $1)',
 'version-license' => 'Бакъо',
+'version-ext-license' => 'Лицензи',
+'version-ext-colheader-name' => 'Шордарш',
 'version-ext-colheader-version' => 'Верси',
+'version-ext-colheader-license' => 'Лицензи',
+'version-ext-colheader-credits' => 'Автораш',
 'version-poweredby-credits' => "ХӀара вики болх беш ю '''[https://www.mediawiki.org/ MediaWiki]''' движок тӀехь, copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'кхин',
 'version-license-info' => 'MediaWiki ю маьрша программин латораг, шу йиш ю фондас арахецна йолу GNU General Public License лицензица и яржо я хийца а.
@@ -2636,7 +2641,7 @@ MediaWiki яржош ю и шуна пайдане хир яц те аьлла,
 'fileduplicatesearch-legend' => 'Цхьатера ерш лахар',
 'fileduplicatesearch-filename' => 'Файлан цӀе:',
 'fileduplicatesearch-submit' => 'Лаха',
-'fileduplicatesearch-info' => '$1 × $2 {{PLURAL:$2|пиксель|пикселш|пикселш}}<br />Файлан барам: $3<br />MIME-тайп: $4',
+'fileduplicatesearch-info' => '$1 × $2 пиксель<br />Файлан барам: $3<br />MIME-тайп: $4',
 
 # Special:SpecialPages
 'specialpages' => 'Леррина агlонаш',
index 70e5219..621b495 100644 (file)
@@ -1439,6 +1439,7 @@ Podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'search-result-score' => 'Relevantnost: $1 %',
 'search-redirect' => '(přesměrování $1)',
 'search-section' => '(část $1)',
+'search-file-match' => '(odpovídá obsah souboru)',
 'search-suggest' => 'Mysleli jste: $1',
 'search-interwiki-caption' => 'Sesterské projekty',
 'search-interwiki-default' => 'Výsledky z $1:',
@@ -2828,7 +2829,7 @@ Vizte též [[Special:BlockList|seznam všech probíhajících bloků]].',
 'range_block_disabled' => 'Blokování rozsahů IP adres je zakázáno.',
 'ipb_expiry_invalid' => 'Neplatný čas vypršení.',
 'ipb_expiry_temp' => 'Blokování skrytých uživatelských jmen by měla být trvalá.',
-'ipb_hide_invalid' => 'Tento účet nelze utajit; možná má příliš mnoho editací.',
+'ipb_hide_invalid' => 'Tento účet nelze utajit; má více než $1 {{PLURAL:$1|editaci|editace|editací}}.',
 'ipb_already_blocked' => '„$1“ již je zablokován.',
 'ipb-needreblock' => '$1 je již zablokován(a). Chcete změnit nastavení bloku?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Jiné zablokování|Jiná zablokování}}',
index 7a6c6a3..b912f5f 100644 (file)
@@ -1503,6 +1503,7 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'search-result-score' => 'Relevanz: $1 %',
 'search-redirect' => '(Weiterleitung von „$1“)',
 'search-section' => '(Abschnitt $1)',
+'search-file-match' => '(treffende Dateiinhalte)',
 'search-suggest' => 'Meintest du „$1“?',
 'search-interwiki-caption' => 'Schwesterprojekte',
 'search-interwiki-default' => '$1 Ergebnisse:',
@@ -2598,7 +2599,7 @@ Rückmeldungen und weitere Hilfe: {{canonicalurl:{{MediaWiki:Helppage}}}}',
 'delete-edit-reasonlist' => 'Löschgründe bearbeiten',
 'delete-toobig' => 'Diese Seite hat mit mehr als $1 {{PLURAL:$1|Version|Versionen}} eine sehr lange Versionsgeschichte. Das Löschen solcher Seiten wurde eingeschränkt, um eine versehentliche Überlastung der Server zu verhindern.',
 'delete-warning-toobig' => 'Diese Seite hat mit mehr als $1 {{PLURAL:$1|Version|Versionen}} eine sehr lange Versionsgeschichte. Das Löschen kann zu Störungen im Datenbankbetrieb führen.',
-'deleting-backlinks-warning' => "'''Warnung:''' Es verweisen noch andere Seiten auf die zu löschende Seite.",
+'deleting-backlinks-warning' => "'''Warnung:''' Es verweisen noch andere Seiten auf die zu löschende Seite oder diese Seite ist noch woanders eingebunden.",
 
 # Rollback
 'rollback' => 'Zurücksetzen der Änderungen',
@@ -2894,7 +2895,7 @@ Siehe die [[Special:BlockList|Liste der gesperrten IP-Adressen und Benutzernamen
 'range_block_disabled' => 'Die Möglichkeit, ganze Adressräume zu sperren, ist nicht aktiviert.',
 'ipb_expiry_invalid' => 'Die eingegebene Dauer ist ungültig.',
 'ipb_expiry_temp' => 'Benutzernamens-Sperren mit der Verstecken-Option müssen permanent sein.',
-'ipb_hide_invalid' => 'Dieses Konto kann nicht unterdrückt werden, da es zu viele Bearbeitungen aufweist.',
+'ipb_hide_invalid' => 'Dieses Konto kann nicht unterdrückt werden, da es mehr als {{PLURAL:$1|eine Bearbeitung|$1 Bearbeitungen}} aufweist.',
 'ipb_already_blocked' => '„$1“ ist bereits gesperrt',
 'ipb-needreblock' => '„$1“ ist bereits gesperrt. Möchtest du die Sperrparameter ändern?',
 'ipb-otherblocks-header' => 'Andere {{PLURAL:$1|Sperre|Sperren}}',
@@ -3280,7 +3281,7 @@ Hier '''NICHTS''' eintragen!",
 'pageinfo-article-id' => 'Seitenkennnummer',
 'pageinfo-language' => 'Seiteninhaltssprache',
 'pageinfo-content-model' => 'Seiteninhaltsmodell',
-'pageinfo-robot-policy' => 'Indexierung durch Robots',
+'pageinfo-robot-policy' => 'Indizierung durch Suchmaschinen',
 'pageinfo-robot-index' => 'Erlaubt',
 'pageinfo-robot-noindex' => 'Nicht erlaubt',
 'pageinfo-views' => 'Anzahl der Seitenaufrufe',
@@ -4067,7 +4068,7 @@ Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License'']
 # Special:Redirect
 'redirect' => 'Weiterleitung auf Benutzerseite, Seite, Seitenversion oder Datei',
 'redirect-legend' => 'Weiterleitung auf eine Benutzerseite, Seite, Seitenversion oder Datei',
-'redirect-summary' => 'Diese Spezialseite leitet auf eine Benutzerseite (numerische Benutzerkennung angegeben), Seite (Seitenkennung angeben), Seitenversion (Versionskennung angegeben) oder Datei (Dateiname angegeben) weiter. Benutzung: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] oder [[{{#Special:Redirect}}/file/Example.jpg]].',
+'redirect-summary' => 'Diese Spezialseite leitet auf eine Benutzerseite (numerische Benutzerkennung angegeben), Seite (Seitenkennung angegeben), Seitenversion (Versionskennung angegeben) oder Datei (Dateiname angegeben) weiter. Benutzung: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] oder [[{{#Special:Redirect}}/file/Example.jpg]].',
 'redirect-submit' => 'Los',
 'redirect-lookup' => 'Suchen:',
 'redirect-value' => 'Kennung oder Dateiname:',
index b60fd18..236734a 100644 (file)
@@ -337,7 +337,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Vurnayışanê qontrolkerdeyan pela vurnayışê peyêni de bınımne',
 'tog-newpageshidepatrolled' => 'Pelanê qontrolkerdeyan lista pelanê neweyan de bınımne',
 'tog-extendwatchlist' => 'Lista seyrkerdışi hera bıke ke vurnayışi pêro basê, tenya tewr peyêni nê',
-'tog-usenewrc' => 'Pera vurnayışanê grube de vurnayışê peyêni u lista seyrkerdışi (JavaScript lazımo)',
+'tog-usenewrc' => 'Vurnayışê ke pela vurnayışanê peyênan û lista seyrkerdışi derê inan grube ke.',
 'tog-numberheadings' => 'Sernuşteyan be xo numre cı şane',
 'tog-showtoolbar' => 'Toolbar virnayisi bivin (JavaScript lazımo)',
 'tog-editondblclick' => 'Per virnayisi di dilet klik bike (JavaScript lazımo)',
@@ -357,10 +357,10 @@ $messages = array(
 'tog-enotifminoredits' => 'Pelan de vurnayışanê qıckekan u dosyan de ki mı rê e-mail bırışe',
 'tog-enotifrevealaddr' => 'Adresa e-posteyê mı posteyê xeberan de bımocne',
 'tog-shownumberswatching' => 'Amarê karberanê seyrkerdoğan bımocne',
-'tog-oldsig' => 'İmzaya mewcude:',
+'tog-oldsig' => 'İmza mewcude:',
 'tog-fancysig' => 'İmza rê mameleyê wikimeqaley bıke (bê gıreyo otomatik)',
-'tog-uselivepreview' => 'Verqayt di weseye  karneno (JavaScript lazım o) (Cerbino)',
-'tog-forceeditsummary' => 'Mı ke xulasa kerde cı vira, hay be mı ser de',
+'tog-uselivepreview' => 'Verqayto cınde (giyane) bıgureyne (cerrebane)',
+'tog-forceeditsummary' => 'Mı ke xulasa thal/veng verdae, hay a mı ser de (iqaz ke)',
 'tog-watchlisthideown' => 'Vurnayışanê mı lista mına seyrkerdışi de bınımne',
 'tog-watchlisthidebots' => 'Lista seyrkerdışi ra vurnayışanê boti bınımne',
 'tog-watchlisthideminor' => 'Vurnayışanê qıckekan lista mına seyrkerdışi de bınımne',
@@ -521,7 +521,7 @@ $messages = array(
 'history' => 'Verora perer',
 'history_short' => 'Verén',
 'updatedmarker' => 'cıkewtena mına peyêne ra dıme biyo rocane',
-'printableversion' => 'Versiyona Nusnayışi',
+'printableversion' => 'Asayışê çapkerdışi',
 'permalink' => 'Gıreyo jûqere',
 'print' => 'Nusten ke',
 'view' => 'Bıvin',
@@ -1410,7 +1410,7 @@ Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'searchrelated' => 'eleqeyın',
 'searchall' => 'pêro',
 'showingresults' => "#$2 netican ra {{PLURAL:$1|'''1''' netica|'''$1''' neticey}} cêr deyê.",
-'showingresultsnum' => "'''$2''' netican ra nata  {{PLURAL:$3|'''1''' netice|'''$3''' neticeyê}} cêrde liste biyê.",
+'showingresultsnum' => "'''$2''' netican ra {{PLURAL:$3|'''1''' netice|'''$3''' neticey}} cêr derê.",
 'showingresultsheader' => "{{PLURAL:$5|Neticeyê '''$1''' of '''$3'''|Neticeyanê '''$1 - $2''' hetê '''$3'''}} qe '''$4'''",
 'search-nonefound' => 'Zey perskerdışê şıma netice nêvêniya.',
 'powersearch-legend' => 'Cıgeyrayışo hera',
@@ -1431,7 +1431,7 @@ Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'prefs-skin' => 'Çerme',
 'skin-preview' => 'Verasayış',
 'datedefault' => 'Tercih çıniyo',
-'prefs-beta' => 'Xacetê beta',
+'prefs-beta' => 'Hacetê beta',
 'prefs-datetime' => 'Tarix u wext',
 'prefs-labs' => 'Xacetê labs',
 'prefs-user-pages' => 'Pela Karberi',
index b5dfcbc..cc27075 100644 (file)
@@ -1206,6 +1206,7 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-result-score' => 'Relewanca: $1 %',
 'search-redirect' => '(pśesměrowanje $1)',
 'search-section' => '(sekcija $1)',
+'search-file-match' => '(wótpowědujo datajowemu wopśimjeśeju)',
 'search-suggest' => 'Měnjašo $1?',
 'search-interwiki-caption' => 'Sotšine projekty',
 'search-interwiki-default' => '$1 wuslědki:',
@@ -2297,7 +2298,7 @@ Pšašanja a dalšna pomoc:
 'delete-toobig' => 'Toś ten bok ma z wěcej nježli $1 {{PLURAL:$1|wersiju|wersijomaj|wersijami|wersijami}} dłujku historiju. Lašowanje takich bokow bu wobgranicowane, aby wobškoźenju {{GRAMMAR:genitiw|{{SITENAME}}}} z pśigódy zajźowało.',
 'delete-warning-toobig' => 'Toś ten bok ma z wěcej ako $1 {{PLURAL:$1|wersiju|wersijomaj|wersijami|wersijami}} dłujke stawizny. Jich wulašowanje móžo źěło datoweje banki na {{SITENAME}} kazyś;
 póstupujśo z glědanim.',
-'deleting-backlinks-warning' => "'''Warnowanje:''' Druge boki wótkazuju k bokoju, kótaryž coš wulašowaś.",
+'deleting-backlinks-warning' => "'''Warnowanje:''' Druge boki wótkazuju k bokoju abo bok jo hynźi zapśěgnjony, kótaryž coš wulašowaś.",
 
 # Rollback
 'rollback' => 'Wobźěłanja slědk wześ',
@@ -2585,7 +2586,7 @@ Glědaj do [[Special:BlockList|lisćiny blokěrowanjow]], aby blokěrowanja pśe
 'range_block_disabled' => 'Móžnosć administratora, blokěrowaś cełe adresowe rumy, njejo aktiwěrowana.',
 'ipb_expiry_invalid' => 'Pódany cas jo njepłaśecy.',
 'ipb_expiry_temp' => 'Blokěrowanja schowanych wužywarskich mjenjow deje permanentne byś.',
-'ipb_hide_invalid' => 'Njejo móžno toś to konto pódtłocyś; jo snaź pśewjele změnow.',
+'ipb_hide_invalid' => 'Njejo móžno toś to konto pódtłocyś; ma wěcej ako {{PLURAL:$1|jadnu změnu|$1 změnje|$1 změny|$1 změnow}}.',
 'ipb_already_blocked' => '"$1" jo južo blokěrowany.',
 'ipb-needreblock' => '$1 jo južo zablokěrowany. Coš nastajenja změniś?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Druge blokěrowanje|Drugej blokěrowani|Druge blokěrowanja|Druge blokěrowanja}}',
index 9537d79..613077a 100644 (file)
@@ -408,13 +408,35 @@ L\'aministradōr ch\' al l\'à bluchê l\'à dê cla spiegasiòun ché:"$3".',
 'invalidtitle-unknownnamespace' => 'Tétol mìa vâlid cun spâsi di nòm mìa cgnusû "$1" e tèst "$2"',
 'exception-nologin' => "An t'é mìa gnû dèinter",
 'exception-nologin-text' => "Per andêr dèinter a cla pàgina ché o fêr còl ch'ét pèins ét gh'ê da [[Special:Userlogin|fêr l'ingrès]].",
-'exception-nologin-text-manual' => 'Per prèir andêr dèinter a cla pàgina ché o fêr còl ch\'ét peins ét gh\'ê da "$1".',
+'exception-nologin-text-manual' => 'Per prèir andêr dèinter a cla pàgina ché o fêr còl ch\'ét pèins ét gh\'ê da "$1".',
+
+# Virus scanner
+'virus-badscanner' => 'Erōr \'d impustasiòun: antivîrus mìa cgnusû:"$1"',
+'virus-scanfailed' => "Al cuntròl antivìrus l'é andê mêl (côdis $1)",
+'virus-unknownscanner' => 'Antivìrus scgnusû:',
 
 # Login and logout pages
+'logouttext' => "'''An t'é pió coleghê.'''
+
+Guêrda che soquânti pàgini a prén vèdres incòra cme s'ét fós incòra coleghê, còst fintânt ch' an vîn mìa pulî la memôria dal tó navigadōr.",
+'welcomeuser' => 'Beinvgnû, $1',
+'welcomecreation-msg' => "Al j infurmasiòun per l'ingrès în stêdi dêdi  'n mōd gióst. An scurdêret mìa 'd dîr quèl' în al [[Special:Preferences|preferèinsi in {{SITENAME}}]].",
 'yourname' => 'Nòm utèint:',
+'userlogin-yourname' => 'Nòm utèint',
+'userlogin-yourname-ph' => 'Mèt dèinter al tó nòm utèint',
+'createacct-another-username-ph' => 'Mèt dèinter al nòm utèint',
 'yourpassword' => "Cêva 'd ingrès:",
+'userlogin-yourpassword' => "Cêva 'd ingrès",
+'userlogin-yourpassword-ph' => "Mèt dèinter la tó cêva 'd ingrès",
+'createacct-yourpassword-ph' => "Mèt dèinter 'na cêva 'd ingrès",
 'yourpasswordagain' => "Scrév incòra la cêva 'd ingrès:",
+'createacct-yourpasswordagain' => "Cunfērma la cêva 'd ingrès",
+'createacct-yourpasswordagain-ph' => "Tōrna mèter dèinter la cêva 'd ingrès",
 'remembermypassword' => "Tîn a mèint la cêva 'd ingrès insém a cól navigadōr ché (per un mâsim ed $1{{PLURAL:$1|dé}}).",
+'userlogin-remembermypassword' => 'Tînom coleghê',
+'userlogin-signwithsecure' => 'Drōva un colegamèint sicûr',
+'password-change-forbidden' => "An n'é mìa pusébil mudifichêr la cêva 'd ingrès insém a sté wiki.",
+'externaldberror' => "È sucès un erōr cun al terminêl ed certificasiòun ed validitê d'ed fōra, opór an 's gh'à mìa al j autorişasiòun necesâri per arnuvêr l' ingrès d'ed fōra.",
 'login' => 'Và dèinter',
 'nav-login-createaccount' => 'Và dèinter / Fà la tó inscrisiòun',
 'loginprompt' => "Per andêr dèinter a {{SITENAME}} l'é necesâri permèter i cookie.",
@@ -423,14 +445,42 @@ L\'aministradōr ch\' al l\'à bluchê l\'à dê cla spiegasiòun ché:"$3".',
 'logout' => 'Và fōra',
 'userlogout' => 'Và fōra',
 'notloggedin' => "An t'é mìa gnû dèinter",
+'userlogin-noaccount' => 'Ét mìa incòra fât la registrasiòun?',
+'userlogin-joinproject' => 'Da {{SITENAME}}',
 'nologin' => "An gh'èt mìa incòra un ingrès? $1",
 'nologinlink' => 'Fà la tó inscrisiòun',
 'createaccount' => 'Fà la tó inscrisiòun',
 'gotaccount' => "Gh'èt bèle un ingrès? $1",
 'gotaccountlink' => 'Và dèinter',
 'userlogin-resetlink' => "T'ét scurdê j elemèint p'r al tó ingrès?",
+'userlogin-resetpassword-link' => "T' ét scurdê la cêva 'd ingrès?",
+'helplogin-url' => "Help: Per l'ingrès",
+'userlogin-helplink' => "[[{{MediaWiki:helplogin-url}}|Ajót cun l' ingrès]]",
+'userlogin-loggedin' => "T'ét bèle coleghê {{GENDER:$1|$1}}. 
+Drōva al mōdul ché sòta cme un êter utèint.",
+'userlogin-createanother' => "Fà 'n' êtra utèinsa.",
+'createacct-join' => 'Mèt dèinter al tō infurmasiòun ché sòta.',
+'createacct-another-join' => 'Mèt dèinter al j infurmasiòun per la registrasiòun ché sòta.',
+'createacct-emailrequired' => 'Indirés pôsta eletrônica',
+'createacct-emailoptional' => "Indirés pôsta eletrônica (se 's vōl)",
+'createacct-email-ph' => 'Scrév al tó indirés ed pôsta eletrônica',
+'createacct-another-email-ph' => "Scrév l'indirés ed pôsta eletrônica",
 'createaccountmail' => "Drōva 'na cêva 'd ingrès a chêş pruvişôria e spidésla a l'indirés ed pôsta eletrônica sgnê.",
+'createacct-realname' => "Al nòm vèira (se 's vōl)",
 'createaccountreason' => 'Mutîv:',
+'createacct-reason' => 'Mutîv',
+'createacct-reason-ph' => "Perchè ét drē fêr 'n' êtra utèinsa",
+'createacct-captcha' => "Cuntròl 'd sicurèsa",
+'createacct-imgcaptcha-ph' => "Mèt dèinter al tèst ch'é vèd ché sōver",
+'createacct-submit' => 'Fà la tó utèinsa',
+'createacct-another-submit' => "Fà 'n' êtra utèinsa.",
+'createacct-benefit-heading' => '{{SITENAME}} crès grâsia a persòuni cme té.',
+'createacct-benefit-body1' => '{{PLURAL:$1|mudéfica|mudéfichi}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|pàgina|pàgini}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|iscrét nōv}}',
+'badretype' => "Al cêvi 'd ingrès scréti an cumbînen tra 'd lōr.",
+'userexists' => "Al nòm utèint scrét l'é bèle druvê.
+Siēlier 'n' êter nòm utèint.",
 'loginerror' => "Erōr 'd ingrès",
 'mailmypassword' => "Tōrna mèter la cêva 'd ingrès",
 'accountcreated' => 'Ingrès fât',
index dbda298..f9ea261 100644 (file)
@@ -1268,6 +1268,8 @@ If you choose to provide it, this will be used for giving the user attribution f
 # Change password dialog
 'changepassword'            => 'Change password',
 'changepassword-summary'    => '', # do not translate or duplicate this message to other languages
+'changepassword-throttled'  => 'You have made too many recent login attempts.
+Please wait $1 before trying again.',
 'resetpass_announce'        => 'You logged in with a temporary emailed code.
 To finish logging in, you must set a new password here:',
 'resetpass_text'            => '<!-- Add text here -->', # only translate this message to other languages if you have to change it
@@ -1338,6 +1340,8 @@ Temporary password: $2',
 'changeemail-password' => 'Your {{SITENAME}} password:',
 'changeemail-submit'   => 'Change email',
 'changeemail-cancel'   => 'Cancel',
+'changeemail-throttled' => 'You have made too many login attempts.
+Please wait $1 before trying again.',
 
 # Special:ResetTokens
 'resettokens'                 => 'Reset tokens',
@@ -3035,7 +3039,7 @@ Feedback and further assistance:
 'historywarning'         => "'''Warning:''' The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:",
 'confirmdeletetext'      => 'You are about to delete a page along with all of its history.
 Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
-'deleting-backlinks-warning' => "'''Warning:''' Other pages link to the page you are about to delete.",
+'deleting-backlinks-warning' => "'''Warning:''' Other pages link to or transclude from the page you are about to delete.",
 'actioncomplete'         => 'Action complete',
 'actionfailed'           => 'Action failed',
 'deletedtext'            => '"$1" has been deleted.
@@ -3377,7 +3381,7 @@ See the [[Special:BlockList|block list]] for the list of currently operational b
 'range_block_disabled'            => 'The administrator ability to create range blocks is disabled.',
 'ipb_expiry_invalid'              => 'Expiry time invalid.',
 'ipb_expiry_temp'                 => 'Hidden username blocks must be permanent.',
-'ipb_hide_invalid'                => 'Unable to suppress this account; it may have too many edits.',
+'ipb_hide_invalid'                => 'Unable to suppress this account; it has more than {{PLURAL:$1|one edit|$1 edits}}.',
 'ipb_already_blocked'             => '"$1" is already blocked.',
 'ipb-needreblock'                 => '$1 is already blocked. Do you want to change the settings?',
 'ipb-otherblocks-header'          => 'Other {{PLURAL:$1|block|blocks}}',
index a36e5e0..c0d2945 100644 (file)
@@ -1472,6 +1472,7 @@ Los detalles pueden encontrarse en el [{{fullurl:{{#Special:Log}}/delete|page={{
 'search-result-score' => 'Relevancia: $1%',
 'search-redirect' => '(redirige desde $1)',
 'search-section' => '(sección $1)',
+'search-file-match' => '(coincide con el contenido del archivo)',
 'search-suggest' => 'Quizás quieres buscar: $1',
 'search-interwiki-caption' => 'Proyectos hermanos',
 'search-interwiki-default' => 'Resultados de $1:',
@@ -4287,4 +4288,6 @@ También expande las funciones sintácticas como <code><nowiki>{{</nowiki>#langu
 'expand_templates_generate_rawhtml' => 'Mostrar HTML en crudo',
 'expand_templates_preview' => 'Previsualización',
 
+# Unknown messages
+'uploadinvalidxml' => 'No se pudo analizar el XML del archivo cargado.',
 );
index 6161972..c82452f 100644 (file)
@@ -668,10 +668,11 @@ Sellisel juhul tuleks teavitada [[Special:ListUsers/sysop|administraatorit]], ed
 'cannotdelete' => 'Lehekülge või faili "$1" ei saa kustutada.
 Võimalik, et keegi on selle juba kustutanud.',
 'cannotdelete-title' => 'Lehekülge "$1" ei saa kustutada',
+'no-null-revision' => 'Lehekülje "$1" nullredaktsiooni ei õnnestunud teha.',
 'badtitle' => 'Vigane pealkiri',
 'badtitletext' => 'Soovitud lehekülje pealkiri oli vigane, tühi või teisest keeleversioonist või vikist valesti lingitud.
 See võib sisaldada ühte või enamat märki, mida ei saa pealkirjades kasutada.',
-'perfcached' => 'Järgnevad andmed on puhverdatud ja ei pruugi olla kõige värskemad. Puhvris on saadaval kuni {{PLURAL:$1|üks tulemus|$1 tulemust}}.',
+'perfcached' => 'Järgmised andmed on puhverdatud ja ei pruugi olla kõige värskemad. Puhvris on saadaval kuni {{PLURAL:$1|üks tulemus|$1 tulemust}}.',
 'perfcachedts' => 'Järgmised andmed on vahemälus. Viimane uuendamisaeg: $2, kell $3. Puhvris on saadaval kuni {{PLURAL:$4|üks tulemus|$4 tulemust}}.',
 'querypage-no-updates' => 'Lehekülje uuendamine ei ole hetkel lubatud ning andmeid ei värskendata.',
 'viewsource' => 'Vaata lähteteksti',
@@ -752,7 +753,7 @@ Pane tähele, et seni kuni sa pole oma võrgulehitseja puhvrit tühjendanud, võ
 'gotaccount' => "Kui sul on juba konto, '''$1'''.",
 'gotaccountlink' => 'logi sisse',
 'userlogin-resetlink' => 'Kas oled unustanud oma sisselogimisandmed?',
-'userlogin-resetpassword-link' => 'Unustasid parooli?',
+'userlogin-resetpassword-link' => 'Kas unustasid parooli?',
 'helplogin-url' => 'Help:Sisselogimine',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Sisselogimisabi]]',
 'userlogin-loggedin' => 'Oled juba sisse logitud nimega {{GENDER:$1|$1}}.
@@ -820,8 +821,8 @@ Väärtarvitamise vältimiseks saadetakse {{PLURAL:$1|tunni|$1 tunni}} jooksul a
 Seetõttu ei saa seda IP-aadressi kasutades hetkel rohkem kontosid luua.',
 'emailauthenticated' => 'Sinu e-posti aadressi kinnitamisaeg: $2 kell $3.',
 'emailnotauthenticated' => 'Sinu e-posti aadress pole veel kinnitatud.
-Järgnevate funktsioonidega seotud e-kirju ei saadeta.',
-'noemailprefs' => 'Järgnevate võimaluste toimimiseks on vaja sisestada e-posti aadress.',
+Järgmiste funktsioonidega seotud e-kirju ei saadeta.',
+'noemailprefs' => 'Järgmiste võimaluste toimimiseks on vaja määrata e-posti aadress.',
 'emailconfirmlink' => 'Kinnita oma e-posti aadress',
 'invalidemailaddress' => 'E-posti aadress ei ole aktsepteeritav, sest see on vigaselt kirjutatud.
 Ole hea ja sisesta õige e-posti aadress või jäta väli tühjaks.',
@@ -1095,7 +1096,7 @@ Allpool on toodud uusim logisissekanne:",
 'cascadeprotectedwarning' => "'''Hoiatus:''' See lehekülg on nii lukustatud, et ainult administraatori õigustega kasutajad saavad seda redigeerida, sest lehekülg on osa {{PLURAL:$1|järgmisest|järgmisest}} kaskaadkaitsega {{PLURAL:$1|leheküljest|lehekülgedest}}:",
 'titleprotectedwarning' => "'''Hoiatus: See lehekülg on nii lukustatud, et selle loomiseks on tarvis [[Special:ListGroupRights|eriõigusi]].'''
 Allpool on toodud uusim logisissekanne:",
-'templatesused' => 'Sellel leheküljel on kasutusel {{PLURAL:$1|järgnev mall|järgnevad mallid}}:',
+'templatesused' => 'Sellel leheküljel on kasutusel {{PLURAL:$1|järgmine mall|järgmised mallid}}:',
 'templatesusedpreview' => 'Eelvaates {{PLURAL:$1|kasutatav mall|kasutatavad mallid}}:',
 'templatesusedsection' => 'Selles alaosas {{PLURAL:$1|kasutatav mall|kasutatavad mallid}}:',
 'template-protected' => '(kaitstud)',
@@ -1108,7 +1109,7 @@ Võid pöörduda tagasi ja toimetada olemasolevat lehekülge või [[Special:User
 'sectioneditnotsupported-text' => 'Sellel leheküljel pole alaosa redigeerimine lubatud.',
 'permissionserrors' => 'Loatõrge',
 'permissionserrorstext' => 'Sul pole õigust seda teha {{PLURAL:$1|järgmisel põhjusel|järgmistel põhjustel}}:',
-'permissionserrorstext-withaction' => 'Sul pole lubatud {{lcfirst:$2}} {{PLURAL:$1|järgneval põhjusel|järgnevatel põhjustel}}:',
+'permissionserrorstext-withaction' => 'Sul pole lubatud {{lcfirst:$2}} {{PLURAL:$1|järgmisel põhjusel|järgmistel põhjustel}}:',
 'recreate-moveddeleted-warn' => "'''Hoiatus: Lood uuesti lehekülge, mis on varem kustutatud.'''
 
 Kaalu, kas lehekülje uuesti loomine on kohane.
@@ -1130,6 +1131,8 @@ See on juba olemas.',
 'content-not-allowed-here' => 'Lehekülg [[$2]] ei või sisaldada $1i.',
 'editwarning-warning' => 'Sellelt leheküljelt lahkumise tõttu võivad tehtud muudatused kaotsi minna.
 Kui oled sisse loginud, saad selle hoiatuse eelistuste alaosas "Toimetamine" keelata.',
+'editpage-notsupportedcontentformat-title' => 'Sisuvormingu tugi puudub',
+'editpage-notsupportedcontentformat-text' => 'Sisumudelil $2 puudub sisuvormingu $1 tugi.',
 
 # Content models
 'content-model-wikitext' => 'vikitekst',
@@ -1152,6 +1155,7 @@ Need argumendid on välja jäetud.",
 'node-count-exceeded-warning' => 'Lehekülg ületas sõlmemäära.',
 'expansion-depth-exceeded-category' => 'Ületatud hõrendussügavusega leheküljed',
 'expansion-depth-exceeded-warning' => 'Lehekülg ületas hõrendussügavuse.',
+'converter-manual-rule-error' => 'Tõrge keelevariandi käsivahetusreeglis',
 
 # "Undo" feature
 'undo-success' => 'Selle redaktsiooni käigus tehtud muudatusi saab eemaldada. Palun kontrolli allolevat võrdlust veendumaks, et tahad need muudatused tõepoolest eemaldada. Seejärel saad lehekülje salvestada.',
@@ -1244,9 +1248,9 @@ Saad seda muudatust vaadata. [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAG
 'revdelete-text' => "'''Kustutatud redaktsioonid ja sündmused kajastuvad endiselt lehekülje ajaloos ja logides, kuid osa nende sisust pole avalikult nähtav.'''
 {{GRAMMAR:genitive|{{SITENAME}}}} administraatorid saavad peidetud sisu siiski vaadata ning seda vajadusel selle liidese kaudu taastada, kui see pole just täiendavalt keelatud.",
 'revdelete-confirm' => 'Kinnita, et soovid tõesti seda teha ning et saad aru tagajärgedest ja tegevus on kooskõlas [[{{MediaWiki:Policy-url}}|siinsete kokkulepetega]].',
-'revdelete-suppress-text' => "Andmed tuleks varjata '''ainult''' järgnevatel juhtudel:
-* Võimalik laim
-* Sobimatu isiklik teave
+'revdelete-suppress-text' => "Andmed tuleks varjata '''ainult''' järgmistel juhtudel:
+* võimalik laim
+* sobimatu isiklik teave
 *: ''kodune aadress ja telefoninumber, isikukood jne''",
 'revdelete-legend' => 'Nähtavuse piirangute seadmine',
 'revdelete-hide-text' => 'Redaktsiooni tekst',
@@ -1375,6 +1379,7 @@ Harilikult tähendab see seda, et sind siia juhatanud link on vananenud ja siin
 'search-result-score' => 'Vastavus: $1%',
 'search-redirect' => '(ümbersuunamine $1)',
 'search-section' => '(alaosa $1)',
+'search-file-match' => '(vastab faili sisule)',
 'search-suggest' => 'Kas mõtlesid: $1',
 'search-interwiki-caption' => 'Sõsarprojektid',
 'search-interwiki-default' => '$1 tulemused:',
@@ -1750,14 +1755,14 @@ Sinu [[Special:Watchlist|jälgimisloendi]] leheküljed on  '''rasvaselt''' esile
 'upload-recreate-warning' => "'''Hoiatus: Sellise nimega fail on kustutatud või teisaldatud.'''
 
 Selle lehe kustutamis- ja teisaldamislogi on kuvatud siin:",
-'uploadtext' => "Kasuta allpool olevat vormi failide üleslaadimiseks.
-Et näha või leida eelnevalt üles laaditud faile vaata [[Special:FileList|failide loendit]].
+'uploadtext' => "Kasuta allpool olevat vormi, et faile üles laadida.
+Et näha või leida varem üles laaditud faile, vaata [[Special:FileList|failide loendit]].
 Üleslaadimiste ajalugu saab uurida [[Special:Log/upload|üleslaadimislogist]], kustutamiste ajalugu [[Special:Log/delete|kustutamislogist]].
 
-Faili lisamiseks artiklile kasuta linki ühel kujul järgnevatest.
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fail.jpg]]</nowiki></code>''', et lisada täissuuruses pilt.
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fail.png|200px|thumb|left|kirjeldus]]</nowiki></code>''', et lisada lehekülje vasakusse serva raamiga 200 piksli laiune pisipilt koos pildiallkirjaga (''kirjeldus'').
-* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Fail.ogg]]</nowiki></code>''', et linkida otse failile ilma seda kuvamata.",
+Et lisada fail artiklile, kasuta üht järgmistest süntaksitest:
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fail.jpg]]</nowiki></code>''', et lisada täissuuruses pilt
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fail.png|200px|thumb|left|kirjeldus]]</nowiki></code>''', et lisada lehekülje vasakusse serva raamiga 200 piksli laiune pisipilt koos pildiallkirjaga (''kirjeldus'')
+* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Fail.ogg]]</nowiki></code>''', et linkida otse failile ilma seda kuvamata",
 'upload-permitted' => 'Lubatud failitüübid: $1.',
 'upload-preferred' => 'Eelistatud failitüübid: $1.',
 'upload-prohibited' => 'Keelatud failitüübid: $1.',
@@ -1822,7 +1827,7 @@ Palun pöörduge tagasi ja laadige fail üles mõne teise nime all. [[File:$1|th
 'fileexists-shared-forbidden' => 'Samanimeline fail on juba olemas jagatud meediavaramus.
 Kui soovid siiski oma faili üles laadida, siis palun mine tagasi ja kasuta teist failinime.
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'See fail on {{PLURAL:$1|järgneva faili|järgnevate failide}} duplikaat:',
+'file-exists-duplicate' => 'See fail on {{PLURAL:$1|järgmise faili|järgmiste failide}} duplikaat:',
 'file-deleted-duplicate' => 'Selle failiga ([[:$1]]) identne fail on hiljuti kustutatud.
 Vaata selle faili kustutamise ajalugu enne jätkamist.',
 'file-deleted-duplicate-notitle' => 'Selle failiga identne fail on varem kustutatud ja pealkiri on varjatud.
@@ -1921,6 +1926,7 @@ Selle turvalisust ei saa kontrollida.',
 'uploadstash-badtoken' => 'Toiming ebaõnnestus; võib-olla redigeerimisloa aegumise tõttu. Proovi uuesti.',
 'uploadstash-errclear' => 'Failide kustutamine ebaõnnestus.',
 'uploadstash-refresh' => 'Värskenda faililoendit',
+'invalid-chunk-offset' => 'Tüki vigane nihe',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Juurdepääs keelatud',
@@ -2002,13 +2008,13 @@ Samuti võid proovida siis, kui võrgukoht on vähem hõivatud.',
 'filehist-missing' => 'Fail puudub',
 'imagelinks' => 'Failikasutus',
 'linkstoimage' => 'Sellele pildile {{PLURAL:$1|viitab järgmine lehekülg|viitavad järgmised leheküljed}}:',
-'linkstoimage-more' => 'Sellele failile viitab enam kui $1 {{PLURAL:$1|lehekülg|lehekülge}}.
-Järgnevas loetelus on kuvatud ainult {{PLURAL:$1|esimene viitav lehekülg|esimesed $1 viitavat lehekülge}}.
+'linkstoimage-more' => 'Sellele failile viitab enam kui {{PLURAL:$1|üks lehekülg|$1 lehekülge}}.
+Järgmises loendis on näidatud ainult {{PLURAL:$1|esimene viitav lehekülg|esimesed $1 viitavat lehekülge}}.
 [[Special:WhatLinksHere/$2|Kogu loetelu]] on saadaval.',
 'nolinkstoimage' => 'Sellele pildile ei viita ükski lehekülg.',
 'morelinkstoimage' => 'Vaata [[Special:WhatLinksHere/$1|veel linke]], mis sellele failile viitavad.',
 'linkstoimage-redirect' => '$1 (failiümbersuunamine) $2',
-'duplicatesoffile' => '{{PLURAL:$1|Järgnev fail|Järgnevad $1 faili}} on selle faili {{PLURAL:$1|duplikaat|duplikaadid}} ([[Special:FileDuplicateSearch/$2|üksikasjad]]):',
+'duplicatesoffile' => '{{PLURAL:$1|Järgmine fail|Järgmised $1 faili}} on selle faili {{PLURAL:$1|duplikaat|duplikaadid}} ([[Special:FileDuplicateSearch/$2|üksikasjad]]):',
 'sharedupload' => 'See fail pärineb allikast $1 ning võib olla kasutusel ka teistes projektides.',
 'sharedupload-desc-there' => 'See fail pärineb kesksest failivaramust $1. Palun vaata [$2 faili kirjelduse lehekülge], et saada rohkem teavet.',
 'sharedupload-desc-here' => 'See on jagatud fail allikast $1 ja seda saab kasutada ka teistes projektides. Faili sealne [$2 kirjeldus] on kuvatud allpool.',
@@ -2195,7 +2201,7 @@ Igal real on ära toodud esimene ja teine ümbersuunamisleht ning samuti teise 
 'ancientpages' => 'Vanimad leheküljed',
 'move' => 'Teisalda',
 'movethispage' => 'Muuda pealkirja',
-'unusedimagestext' => 'Järgnevad failid on olemas, aga pole ühelegi leheküljele lisatud.
+'unusedimagestext' => 'Järgmised failid on olemas, aga pole ühelegi leheküljele lisatud.
 Pane tähele, et teised võrgukohad võivad viidata failile otselingiga ja seega võivad siin toodud failid olla ikkagi aktiivses kasutuses.',
 'unusedcategoriestext' => 'Need kategooriad pole ühelgi leheküljel ega teises kategoorias kasutuses.',
 'notargettitle' => 'Puudub sihtlehekülg',
@@ -2455,7 +2461,7 @@ Palun kinnita, et tahad seda tõepoolest teha, et sa mõistad tagajärgi ja et s
 Selle kustutamine on keelatud, et ära hoida ekslikku {{GRAMMAR:genitive|{{SITENAME}}}} töö häirimist.',
 'delete-warning-toobig' => 'See lehekülg on pika redigeerimislooga – üle {{PLURAL:$1|ühe muudatuse|$1 muudatuse}}.
 Ettevaatust, selle kustutamine võib esile kutsuda häireid {{GRAMMAR:genitive|{{SITENAME}}}} andmebaasi töös.',
-'deleting-backlinks-warning' => "'''Hoiatus:''' Teised leheküljed viitavad leheküljele, mida oled kustutamas.",
+'deleting-backlinks-warning' => "'''Hoiatus:''' Teised leheküljed viitavad leheküljele, mida oled kustutamas, või see lehekülg on kasutuses mallina.",
 
 # Rollback
 'rollback' => 'Tühista muudatused',
@@ -2553,7 +2559,8 @@ Sa saad muuta selle lehekülje kaitse staatust, kuid see ei mõjuta kaskaadkaits
 'undeletepage' => 'Kustutatud lehekülgede vaatamine ja taastamine',
 'undeletepagetitle' => "'''Kustutatud redaktsioonid leheküljest [[:$1|$1]]'''.",
 'viewdeletedpage' => 'Kustutatud lehekülgede vaatamine',
-'undeletepagetext' => '{{PLURAL:$1|Järgnev lehekülg on kustutatud|Järgnevad leheküljed on kustutatud}}, kuid arhiivis veel olemas ja taastatavad. Arhiivi sisu kustutatakse perioodiliselt.',
+'undeletepagetext' => '{{PLURAL:$1|Järgmine lehekülg|Järgmised leheküljed}} on kustutatud, kuid arhiivis veel olemas ja taastatavad.
+Arhiivi sisu võidakse perioodiliselt kustutada.',
 'undelete-fieldset-title' => 'Redaktsioonide taastamine',
 'undeleteextrahelp' => "Kogu lehe ja selle ajaloo taastamiseks jäta kõik linnukesed tühjaks ja vajuta '''''{{int:undeletebtn}}'''''.
 Et taastada valikuliselt, tee linnukesed kastidesse, mida soovid taastada ja vajuta '''''{{int:undeletebtn}}'''''.",
@@ -2754,7 +2761,7 @@ Praegu jõus olevad blokeeringud ja redigeerimiskeelud leiad [[Special:BlockList
 'range_block_disabled' => 'Administraatori õigus blokeerida IP-aadresside vahemik on ära võetud.',
 'ipb_expiry_invalid' => 'Vigane aegumise tähtaeg.',
 'ipb_expiry_temp' => 'Peidetud kasutajanime blokeeringud peavad olema alalised.',
-'ipb_hide_invalid' => 'Selle konto varjamine ei õnnestunud. Sellelt võib olla tehtud liiga palju redigeerimisi.',
+'ipb_hide_invalid' => 'Seda kontot ei saa varjata, sest sellega on tehtud üle {{PLURAL:$1|ühe|$1}} muudatuse.',
 'ipb_already_blocked' => '"$1" on juba blokeeritud.',
 'ipb-needreblock' => '$1 on juba blokeeritud.
 Kas soovid muuta blokeeringu sätteid?',
@@ -2771,6 +2778,7 @@ See kuulub aga blokeeritud IP-vahemikku $2, mille blokeeringut saab eemaldada.',
 'sorbsreason' => 'Sinu IP-aadress on {{GRAMMAR:genitive|{{SITENAME}}}} kasutatavas DNS-põhises mustas nimekirjas märgitud kui avatud proksi.',
 'sorbs_create_account_reason' => 'Sinu IP-aadress on {{GRAMMAR:genitive|{{SITENAME}}}} kasutatavas DNS-põhises mustas nimekirjas märgitud kui avatud proksi.
 Sa ei saa kasutajakontot luua.',
+'xffblockreason' => 'X-Forwarded-Fori päises esinev IP-aadress, mis kuulub kas sulle või proksiserverile, mida kasutad, on blokeeritud. Blokeerimise algne põhjus oli: $1',
 'cant-see-hidden-user' => 'Kasutaja, keda blokeerida üritad, on juba blokeeritud ning peidetud. Kuna sul pole õigust blokeerida kasutajanimesid, peites need avalikkuse eest, ei saa sa selle kasutaja blokeeringut vaadata ega muuta.',
 'ipbblocked' => 'Sa ei saa teisi blokeerida ega nende blokeeringuid eemaldada, sest oled ise blokeeritud.',
 'ipbnounblockself' => 'Sul pole lubatud enda blokeeringut eemaldada.',
@@ -3107,7 +3115,7 @@ Samuti võimaldab see resümee reale põhjenduse lisamist.',
 'spamprotectiontitle' => 'Spämmitõrjefilter',
 'spamprotectiontext' => 'Rämpspostifilter oli lehekülje, mida sa salvestada tahtsid, blokeerinud.
 See on ilmselt põhjustatud linkimisest mustas nimekirjas olevasse välisvõrgukohta.',
-'spamprotectionmatch' => 'Järgnev tekst vallandas meie rämpspostifiltri: $1',
+'spamprotectionmatch' => 'Järgmine tekst vallandas meie rämpspostifiltri: $1',
 'spambot_username' => 'MediaWiki spämmieemaldus',
 'spam_reverting' => 'Taastan viimase versiooni, mis ei sisalda linke aadressile $1.',
 'spam_blanking' => 'Kõik versioonid sisaldasid linke veebilehele $1. Lehekülg tühjendatud.',
@@ -3228,8 +3236,7 @@ Selle avamine võib su arvutit kahjustada.",
 
 # Special:NewFiles
 'newimages' => 'Uute failide galerii',
-'imagelisttext' => "
-Järgnevas loendis, mis on sorteeritud $2, on '''$1''' {{PLURAL:$1|fail|faili}}.",
+'imagelisttext' => "Allpool on {{PLURAL:$1|'''ühe''' fail|'''$1''' faili}} $2 järjestatud loend.",
 'newimages-summary' => 'Sellel erilehel on viimati üles laaditud failid.',
 'newimages-legend' => 'Filter',
 'newimages-label' => 'Failinimi (või selle osa):',
@@ -3710,11 +3717,11 @@ Võid nüüd [[Special:UserLogin|sisse logida]].',
 'confirmemail_subject' => '{{GRAMMAR:genitive|{{SITENAME}}}} e-posti aadressi kinnitamine',
 'confirmemail_body' => 'Keegi IP-aadressilt $1, ilmselt sa ise, registreeris selle e-posti aadressiga {{GRAMMAR:inessive|{{SITENAME}}}} konto "$2".
 
-Kinnitamaks, et see kasutajakonto tõepoolest kuulub sulle ning e-posti teenuste aktiveerimiseks, ava oma võrgulehitsejas järgnev link:
+Kinnitamaks, et see kasutajakonto tõepoolest kuulub sulle ning e-posti teenuste aktiveerimiseks, ava oma võrgulehitsejas järgmine link:
 
 $3
 
-Kui see *pole* sinu loodud konto, ava järgnev link kinnituse tühistamiseks:
+Kui see *pole* sinu loodud konto, ava järgmine link kinnituse tühistamiseks:
 
 $5
 
@@ -3722,11 +3729,11 @@ Kinnituskood aegub kuupäeval $4.',
 'confirmemail_body_changed' => 'Keegi IP-aadressilt $1, ilmselt sa ise,
 muutis {{GRAMMAR:inessive|{{SITENAME}}}} konto "$2" e-posti aadressiks selle aadressi.
 
-Kinnitamaks, et see konto tõepoolest kuulub sulle ja e-posti teenuste taasaktiveerimiseks, ava oma veebilehitsejas järgnev link:
+Kinnitamaks, et see konto tõepoolest kuulub sulle ja e-posti teenuste taasaktiveerimiseks, ava oma veebilehitsejas järgmine link:
 
 $3
 
-Kui see *pole* sinu konto, ava järgnev link
+Kui see *pole* sinu konto, ava järgmine link
 kinnituse tühistamiseks:
 
 $5
@@ -3748,6 +3755,8 @@ Selle kinnituskoodi aegumistähtaeg on $4.',
 
 # Scary transclusion
 'scarytranscludedisabled' => '[Vikidevaheline mallina kasutamine on keelatud]',
+'scarytranscludefailed' => '[Malli $1 hankimine ebaõnnestus]',
+'scarytranscludefailed-httpstatus' => '[Malli $1 hankimine ebaõnnestus: HTTP $2]',
 'scarytranscludetoolong' => '[URL on liiga pikk]',
 
 # Delete conflict
@@ -3980,7 +3989,7 @@ GNU Üldise Avaliku Litsentsi [{{SERVER}}{{SCRIPTPATH}}/COPYING eksemplar] peaks
 
 # HTML forms
 'htmlform-invalid-input' => 'Osaga sinu sisestatust on probleeme',
-'htmlform-select-badoption' => 'Antud number ei ole kõlbulik.',
+'htmlform-select-badoption' => 'Antud väärtus ei sobi.',
 'htmlform-int-invalid' => 'Antud väärtus ei ole täisarv.',
 'htmlform-float-invalid' => 'Määratud väärtus ei ole arvuline.',
 'htmlform-int-toolow' => 'Antud suurus on väiksem kui minimaalne $1',
@@ -4140,8 +4149,10 @@ Samuti hõrendab see parserifunktsioonid nagu
 'expand_templates_ok' => 'Hõrenda',
 'expand_templates_remove_comments' => 'Eemalda selgitavad märkused',
 'expand_templates_remove_nowiki' => 'Ära näita tulemuses <nowiki>-silte',
-'expand_templates_generate_xml' => 'Näita XML sõelumispuud',
+'expand_templates_generate_xml' => 'Näita XML-liigenduspuud',
 'expand_templates_generate_rawhtml' => 'Näita toor-HTMLi',
 'expand_templates_preview' => 'Eelvaade',
 
+# Unknown messages
+'uploadinvalidxml' => 'Üleslaaditud failis sisalduvat XMLi ei õnnestunud liigendada.',
 );
index 66b6696..4ebebb7 100644 (file)
@@ -492,7 +492,7 @@ Baliteke beste norbaitek ezabatu izana.',
 Ez du arrazoirik eman.',
 'no-null-revision' => 'Ezin izan da "$1" orrialdearen berrikuspen huts bat sortu',
 'badtitle' => 'Izenburu ezegokia',
-'badtitletext' => 'Eskatutako orrialde izenburua ez da baliozkoa, hutsik dago, edo gaizki lotutako hizkuntzen arteko lotura da. Baliteke izenburuetan erabili ezin den karaktereren bat izatea.',
+'badtitletext' => 'Eskatutako orri izenburua ez da baliozkoa, hutsik dago, edo gaizki lotutako hizkuntzen arteko lotura da. Baliteke izenburuetan erabili ezin den karaktereren bat edukitzea.',
 'perfcached' => 'Hurrengo datuak katxean gordeta daude eta litekeena da guztiz eguneratuta ez egotea. Gehienez {{PLURAL:$1|emaitza 1 dago|$1 emaitza daude}} eskuragarri katxean.',
 'perfcachedts' => 'Hurrengo datuak katxean daude, $1 eguneratu zen azkenekoz. {{PLURAL:$4|emaitza 1 dago|$4 emaitza daude}} eskuragarri katxean.',
 'querypage-no-updates' => 'Orrialde honen berritzeak ez dira baimentzen. Hemen dagoen data ez da zuzenean berrituko.',
@@ -989,9 +989,10 @@ $3(e)k emandako arrazoia: ''$2''",
 'last' => 'azkena',
 'page_first' => 'lehena',
 'page_last' => 'azkena',
-'histlegend' => 'Diff hautapena: hautatu alderatu nahi dituzun bi bertsioak eta beheko botoian klik egin.<br />
-Legenda: (orain) = oraingo bertsioarekiko ezberdintasuna,
-(azkena) = aurreko bertsioarekiko ezberdintasuna, t = aldaketa txikia.',
+'histlegend' => "Alderaketa hautatzea: marka itzazu alderatu nahi dituzun bi bertsioak, eta saka ezazu «Enter» edo klika ezazu beheko botoia.<br />
+Azalpenak: '''({{int:cur}})''' = oraingo bertsioarekiko aldeak,
+'''({{int:last}})''' = aurreko bertsioarekiko aldeak, 
+'''{{int:minoreditletter}}''' = aldaketa txikia.",
 'history-fieldset-title' => 'Historia erakutsi',
 'history-show-deleted' => 'Ezabatuak soilik',
 'histfirst' => 'zaharrena',
@@ -1134,8 +1135,8 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 # Diffs
 'history-title' => '«$1» orrialdearen historia berrikuspena',
 'difference-title' => '«$1»: berrikuspenen arteko aldeak',
-'difference-title-multipage' => '"$1" eta "$2" orrialdeen arteko ezberditasunak',
-'difference-multipage' => '(Orrialdeen arteko ezberdintasunak)',
+'difference-title-multipage' => '«$1» eta «$2» orrien arteko aldeak',
+'difference-multipage' => '(Orrien arteko aldeak)',
 'lineno' => '$1. lerroa:',
 'compareselectedversions' => 'Hautatutako bertsioak alderatu',
 'showhideselectedversions' => 'Erakutsi/ezkutatu aukeratutako berrikuspenak',
@@ -1524,7 +1525,7 @@ Informazio hau publikoa da.',
 'recentchangeslinked' => 'Lotutako orrietako aldaketak',
 'recentchangeslinked-feed' => 'Lotutako orrietako aldaketak',
 'recentchangeslinked-toolbox' => 'Lotutako orrietako aldaketak',
-'recentchangeslinked-title' => '"$1"(e)kin harremanetan dauden aldaketak',
+'recentchangeslinked-title' => '«$1»(e)kin harremanetan dauden aldaketak',
 'recentchangeslinked-summary' => "Zerrenda honetan zehazturiko orrialde bati (edo kategoria berezi bateko azkeneko kideei) lotura duten orrietan eginiko azken aldaketak agertzen dira.
 [[Special:Watchlist|Zurre jarraitze zerrenda]]n agertzen diren orrialdeak '''beltze'''z agertzen dira.",
 'recentchangeslinked-page' => 'Orriaren izena:',
@@ -1993,7 +1994,8 @@ Erregistro mota, erabiltzailearen izena edota orrialdearen izena iragaziz bistar
 'allinnamespace' => 'Orrialde guztiak ($1 izen-tartea)',
 'allpagessubmit' => 'Joan',
 'allpagesprefix' => 'Aurrizki hau duten orrialdeak bistaratu:',
-'allpagesbadtitle' => 'Orrialdearen izena baliogabekoa da edo interwiki edo hizkuntzen arteko aurrizkia dauka. Izenburuetan erabili ezin daitezkeen karaktere bat edo gehiago izan ditzake.',
+'allpagesbadtitle' => 'Orriaren izena baliogabea da, edo interwiki edo hizkuntzen arteko aurrizkia dauka. 
+Baliteke izenburuetan erabili ezin daitekeen karaktere bat edo gehiago edukitzea.',
 'allpages-bad-ns' => '{{SITENAME}}(e)k ez dauka "$1" izeneko izen-tarterik.',
 'allpages-hide-redirects' => 'Birzuzenketak ezkutatu',
 
@@ -2238,7 +2240,7 @@ Ikus [[Special:ProtectedPages|orri babestuen zerrenda]], orain indarrean dauden
 'modifiedarticleprotection' => '"[[$1]]"(r)en babes maila aldatu da',
 'unprotectedarticle' => '"[[$1]]"-(r)i babesa kendu zaio',
 'movedarticleprotection' => 'babes hobespenak "[[$2]]"tik "[[$1]]"(e)ra mugitu dira',
-'protect-title' => '"$1" babesten',
+'protect-title' => '«$1» babesten',
 'protect-title-notallowed' => '"$1"en babes maila ikusi',
 'prot_1movedto2' => '$1 izenburua $2(r)engatik aldatu da',
 'protect-badnamespace-title' => 'Izen-tarte ez babesgarria',
@@ -2682,7 +2684,7 @@ $2',
 'importnotext' => 'Hutsik dago edo testurik gabe',
 'importsuccess' => 'Inportazioa burutu da!',
 'importhistoryconflict' => 'Gatazka sortzen ari den berrikuspen historia dago (baliteke orrialdea lehenago inportatu izana)',
-'importnosources' => 'Ez dago wikien arteko inportazio iturririk eta historialak zuzenean igotzea ezgaituta dago.',
+'importnosources' => 'Ez dago wikien arteko inportazio iturririk definituta, eta historialak zuzenean igotzea ezgaituta dago.',
 'importnofile' => 'Ez da inportazio fitxategirik igo.',
 'importuploaderrorsize' => 'Inportatutako artxiboaren igoera-porrota.
 Artxiboa onartutako igoera-tamaina baino handiagoa da.',
@@ -2781,7 +2783,7 @@ Fitxategiaren atal bat baino ez zen igo.',
 'tooltip-save' => 'Zure aldaketak gorde',
 'tooltip-preview' => 'Zure aldaketak aurreikusi, mesedez gorde aurretik erabili!',
 'tooltip-diff' => 'Testuari egindako aldaketak erakutsi.',
-'tooltip-compareselectedversions' => 'Orrialde honen bi hautatutako bertsioen arteko ezberdintasunak ikusi.',
+'tooltip-compareselectedversions' => 'Ikusi orri honen bi bertsio hautatuen arteko aldeak.',
 'tooltip-watch' => 'Orrialde hau zure segimendu zerrendan gehitu',
 'tooltip-watchlistedit-normal-submit' => 'Izenburuak kendu',
 'tooltip-watchlistedit-raw-submit' => 'Jarraipen zerrenda gaurkotu',
@@ -3588,7 +3590,7 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 
 # Special:SpecialPages
 'specialpages' => 'Orri bereziak',
-'specialpages-note-top' => 'Legenda',
+'specialpages-note-top' => 'Azalpenak',
 'specialpages-note' => '* Orri berezi arruntak.
 * <strong class="mw-specialpagerestricted">Mugatutako orri bereziak.</strong>',
 'specialpages-group-maintenance' => 'Mantentze-oharrak',
index 3c20048..0becf98 100644 (file)
@@ -1553,6 +1553,7 @@ $1",
 'search-result-score' => 'ارتباط: $1٪',
 'search-redirect' => '(تغییرمسیر $1)',
 'search-section' => '(بخش $1)',
+'search-file-match' => '(تشابه محتوی پرونده)',
 'search-suggest' => 'آیا منظورتان این بود: $1',
 'search-interwiki-caption' => 'پروژه‌های خواهر',
 'search-interwiki-default' => '$1 نتیجه:',
@@ -2664,7 +2665,7 @@ $PAGEINTRO $NEWPAGE
 'delete-warning-toobig' => 'این صفحه تاریخچهٔ ویرایشی بزرگی دارد، که شامل بیش از $1 {{PLURAL:$1|نسخه|نسخه}} است.
 حذف آن ممکن است که عملکرد پایگاه دادهٔ {{SITENAME}} را مختل کند;
 با احتیاط ادامه دهید.',
-'deleting-backlinks-warning' => "''' هشدار:''' صفحات دیگر پیوند به صفحه شما  درباره حذف هستند.",
+'deleting-backlinks-warning' => "''' هشدار:''' صفحات دیگر پیوند یا تراگنجایش به صفحه شما  برای حذف هستند.",
 
 # Rollback
 'rollback' => 'واگردانی ویرایش‌ها',
@@ -2972,7 +2973,7 @@ $1',
 'range_block_disabled' => 'بستن یک بازه توسط مدیران غیر فعال است.',
 'ipb_expiry_invalid' => 'زمان سرآمدن نامعتبر.',
 'ipb_expiry_temp' => 'قطع دسترسی کاربرهای پهنان باید همیشگی باشد.',
-'ipb_hide_invalid' => 'Ù\86اتÙ\88اÙ\86 Ø§Ø² Ù\81رÙ\88Ù\86شاÙ\86دÙ\86 Ø§Û\8cÙ\86 Ø­Ø³Ø§Ø¨Ø\9b Ø´Ø§Û\8cد Ù\88Û\8cراÛ\8cØ´â\80\8cÙ\87اÛ\8c Ø²Û\8cادÛ\8c دارد.',
+'ipb_hide_invalid' => 'Ù\82ادر Ø¨Ù\87 Ø³Ø±Ú©Ù\88ب Ø§Û\8cÙ\86 Ø­Ø³Ø§Ø¨ Ù\86Û\8cست; Ø§Û\8cÙ\86 Ø¨Û\8cشتر Ø§Ø² {{PLURAL:$1|Û\8cÚ© Ù\88Û\8cراÛ\8cØ´|$1 Ù\88Û\8cراÛ\8cØ´â\80\8cÙ\87ا}} دارد.',
 'ipb_already_blocked' => '«$1» همین الان هم بسته‌است',
 'ipb-needreblock' => 'دسترسی $1 از قبل بسته است. آیا می‌خواهید تنظیمات آن را تغییر دهید؟',
 'ipb-otherblocks-header' => 'سایر {{PLURAL:$1|قطع دسترسی‌ها|قطع دسترسی‌ها}}',
index bd5eca6..e6d3393 100644 (file)
@@ -687,8 +687,8 @@ $1",
 
 'ok' => 'Valider',
 'retrievedfrom' => 'Récupérée de « $1 »',
-'youhavenewmessages' => 'Vous avez $1 ($2).',
-'youhavenewmessagesfromusers' => "Vous avez $1 {{PLURAL:$3|d'un autre utilisateur|de $3 autres utilisateurs}} ($2).",
+'youhavenewmessages' => '{{PLURAL:$3|Vous avez}} $1 ($2).',
+'youhavenewmessagesfromusers' => "{{PLURAL:$4|Vous avez}} $1 {{PLURAL:$3|d'un autre utilisateur|de $3 autres utilisateurs}} ($2).",
 'youhavenewmessagesmanyusers' => 'Vous avez $1 de nombreux utilisateurs ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|un nouveau message|de nouveaux messages}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|dernière modification|dernières modifications}}',
@@ -1119,8 +1119,8 @@ Elle a peut-être été déplacée ou supprimée depuis que vous avez lu cette p
 'accmailtext' => "Un mot de passe généré aléatoirement pour [[User talk:$1|$1]] a été envoyé à $2.
 Il peut être modifié sur la page ''[[Special:ChangePassword|Changement de mot de passe]]'' après s’être connecté{{GENDER:$1||e|(e)}}.",
 'newarticle' => '(Nouveau)',
-'newarticletext' => "Vous avez suivi un lien vers une page qui n'existe pas encore ou qui a été [{{fullurl:Special:Log|type=delete&page={{FULLPAGENAMEE}}}} effacée].
-Pour créer cette page, entrez votre texte dans la boîte ci-dessous (vous pouvez consulter [[{{MediaWiki:Helppage}}|la page d'aide]] pour plus d'informations).
+'newarticletext' => "Vous avez suivi un lien vers une page qui n’existe pas encore ou qui a été [{{fullurl:Special:Log|type=delete&page={{FULLPAGENAMEE}}}} effacée]. 
+Pour créer cette page, entrez votre texte dans la boîte ci-après (vous pouvez consulter [[{{MediaWiki:Helppage}}|la page d’aide]] pour plus d’informations). 
 Si vous êtes arrivé{{GENDER:||e|(e)}} ici par erreur, cliquez sur le bouton '''retour''' de votre navigateur.",
 'anontalkpagetext' => "---- ''Vous êtes sur la page de discussion d'un utilisateur anonyme qui n'a pas encore créé de compte ou qui n'en utilise pas. Pour cette raison, nous devons utiliser son adresse IP pour l'identifier. Une adresse IP peut être partagée par plusieurs utilisateurs. Si vous êtes un{{GENDER:||e|}} utilisat{{GENDER:|eur|rice|eur}} anonyme et si vous constatez que des commentaires qui ne vous concernent pas vous ont été adressés, vous pouvez [[Special:UserLogin/signup|créer un compte]] ou [[Special:UserLogin|vous connecter]] afin d'éviter toute confusion future avec d'autres contributeurs anonymes.''",
 'noarticletext' => 'Il n’y a pour l’instant aucun texte sur cette page.
@@ -1470,8 +1470,8 @@ Vous pouvez trouver des détails dans le [{{fullurl:{{#Special:Log}}/delete|page
 'nextn-title' => '$1 {{PLURAL:$1|résultat suivant|résultats suivants}}',
 'shown-title' => 'Afficher $1 résultat{{PLURAL:$1||s}} par page',
 'viewprevnext' => 'Voir ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-exists' => "'''Il existe une page nommée « [[:$1]] » sur ce wiki'''",
-'searchmenu-new' => "'''Créer la page « [[:$1|$1]] » sur ce wiki !'''",
+'searchmenu-exists' => "'''Il existe une page nommée « [[:$1]] » sur ce wiki.''' {{PLURAL:$2|0=|Voyez également les autres résultats de votre recherche.}}",
+'searchmenu-new' => "'''Créer la page « [[:$1|$1]] » sur ce wiki !''' {{PLURAL:$2|0=|Voyez également la page trouvée avec votre recherche.|Voyez également les résultats de votre recherche.}}",
 'searchprofile-articles' => 'Pages de contenu',
 'searchprofile-project' => "Pages d'aide et de projet",
 'searchprofile-images' => 'Multimédia',
@@ -1487,6 +1487,7 @@ Vous pouvez trouver des détails dans le [{{fullurl:{{#Special:Log}}/delete|page
 'search-result-score' => 'Pertinence : $1%',
 'search-redirect' => '(redirection depuis $1)',
 'search-section' => '(section $1)',
+'search-file-match' => '(correspond au contenu du fichier)',
 'search-suggest' => 'Essayez avec cette orthographe : $1',
 'search-interwiki-caption' => 'Projets frères',
 'search-interwiki-default' => 'Résultats sur $1 :',
@@ -2596,7 +2597,7 @@ La suppression de telles pages a été restreinte pour prévenir des perturbatio
 'delete-warning-toobig' => "Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}.
 La supprimer peut perturber le fonctionnement de la base de données de {{SITENAME}} ;
 veuiller ne procéder qu'avec prudence.",
-'deleting-backlinks-warning' => "'''Attention :''' D’autres pages ont un lien vers la page que vous allez supprimer.",
+'deleting-backlinks-warning' => "'''Attention :''' D’autres pages ont un lien vers ou incorporent la page que vous allez supprimer.",
 
 # Rollback
 'rollback' => 'Révoquer les modifications',
@@ -2900,7 +2901,7 @@ Consultez la [[Special:BlockList|liste des blocages]] pour voir les bannissement
 'range_block_disabled' => 'Le droit administrateur de créer des blocages de plages IP est désactivé.',
 'ipb_expiry_invalid' => "Durée d'expiration incorrecte.",
 'ipb_expiry_temp' => "Les blocages de noms d'utilisateurs cachés doivent être permanents.",
-'ipb_hide_invalid' => 'Impossible de supprimer ce compte ; il semble avoir trop de modifications.',
+'ipb_hide_invalid' => 'Impossible de supprimer ce compte ; il semble avoir plus {{PLURAL:$1|d’une modification|de $1 modifications}}.',
 'ipb_already_blocked' => '« $1 » est déjà bloqué',
 'ipb-needreblock' => '$1 est déjà bloqué. Voulez-vous modifier les paramètres ?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Autre blocage|Autres blocages}}',
index 80b66a9..c7f7597 100644 (file)
@@ -2509,7 +2509,7 @@ Limitouse a eliminación destas páxinas para previr problemas de funcionamento
 'delete-warning-toobig' => 'Esta páxina conta cun historial de edicións longo, de máis {{PLURAL:$1|dunha revisión|de $1 revisións}}.
 Ao eliminala pódense provocar problemas de funcionamento nas operacións da base de datos de {{SITENAME}};
 proceda con coidado.',
-'deleting-backlinks-warning' => "'''Atención:''' Outras páxinas ligan á páxina que vostede quere borrar.",
+'deleting-backlinks-warning' => "'''Atención:''' Outras páxinas conteñen unha ligazón ou unha transclusión da páxina que está a piques de borrar.",
 
 # Rollback
 'rollback' => 'Reverter as edicións',
@@ -4174,7 +4174,7 @@ En caso contrario, pode empregar o formulario sinxelo inferior. O seu comentario
 'api-error-overwrite' => 'Non está permitido sobrescribir un ficheiro existente.',
 'api-error-stashfailed' => 'Erro interno: O servidor non puido almacenar o ficheiro temporal.',
 'api-error-publishfailed' => 'Erro interno: O servidor non puido publicar o ficheiro temporal.',
-'api-error-stasherror' => 'Houbo un erro mentras se subía o ficheiro a stash.',
+'api-error-stasherror' => 'Houbo un erro ao subir o ficheiro ao depósito.',
 'api-error-timeout' => 'O servidor non respondeu no tempo esperado.',
 'api-error-unclassified' => 'Houbo un erro descoñecido.',
 'api-error-unknown-code' => 'Erro descoñecido: "$1"',
index 18e996a..4ea2c4a 100644 (file)
@@ -1297,7 +1297,7 @@ Des cha nimmi ruckgängig gmacht wäre.',
 'youremail' => 'E-Mail-Adräss:',
 'username' => '{{GENDER:$1|Benutzername}}:',
 'uid' => '{{GENDER:$1|Benutzernummere}}:',
-'prefs-memberingroups' => '{{GENDER:$2|Mitglid}} vu dr {{PLURAL:$1|Benutzergruppe|Benutzergruppe}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Mitglid}} vu dr {{PLURAL:$1|Benutzergruppe}}:',
 'prefs-registration' => 'Aamäldzyt:',
 'yourrealname' => 'Echte Name:',
 'yourlanguage' => 'Sproch:',
@@ -1311,7 +1311,9 @@ Des cha nimmi ruckgängig gmacht wäre.',
 'gender-unknown' => 'Ich wett doderzue kei Aagab mache',
 'gender-male' => 'Är schafft an Syte',
 'gender-female' => 'Si schafft an Syte',
-'prefs-help-gender' => 'Optional: bruucht fir gschlächtsspezifischi Adrässierig dur d Software. Die Information isch effentlig.',
+'prefs-help-gender' => 'Optional: bruucht fir gschlächtsspezifischi Adrässierig dur d Software. Die Information isch effentlig.
+
+Des isch e frejwilligi Aagab. D Software brucht si go Di aarede un as Hiiwys fir anderi dur d Verwändig vum grammatische Gschlächt. Die Information isch effetli.',
 'email' => 'E-Mail',
 'prefs-help-realname' => '* <strong>Dyy ächte Name</strong> (optional): Wänn du wetsch, ass Dyyni Änderige uf Dii chenne zruckgfierd wäre.',
 'prefs-help-email' => 'D Aagab vun ere E-Mail isch optional, macht aber s Zueschicke vun eme Ersatzpasswort meglig, wänn Du dyy Passwort vergässe hesch.',
@@ -1322,7 +1324,7 @@ Des cha nimmi ruckgängig gmacht wäre.',
 'prefs-signature' => 'Unterschrift',
 'prefs-dateformat' => 'Datumsformat',
 'prefs-timeoffset' => 'Zytunterschid',
-'prefs-advancedediting' => 'Erwytereti Optione',
+'prefs-advancedediting' => 'Allgmeini Optione',
 'prefs-advancedrc' => 'Erwytereti Optione',
 'prefs-advancedrendering' => 'Erwytereti Optione',
 'prefs-advancedsearchoptions' => 'Erwytereti Optione',
@@ -1353,7 +1355,7 @@ Des cha nimmi ruckgängig gmacht wäre.',
 'userrights-no-interwiki' => 'Du hesch nit d Berächtigung, Benutzerrächt in andere Wiki z ändere.',
 'userrights-nodatabase' => 'D Datebank $1 git s nit oder si isch nit lokal.',
 'userrights-nologin' => 'Du muesch Di mit eme Ammanne-Benutzerkonto [[Special:UserLogin|aamälde]], zum Benutzerrächt z ändere.',
-'userrights-notallowed' => 'Du hesch nit d Berächtigung zum Benutzerrächt vergee.',
+'userrights-notallowed' => 'Du hesch nit d Berächtigung zum Benutzerrächt vergee oder ewägnee.',
 'userrights-changeable-col' => 'Gruppezuegherigkeit, wu Du chasch ändere',
 'userrights-unchangeable-col' => 'Gruppezuegherigkeit, wu Du nit chasch ändere',
 
@@ -1399,7 +1401,7 @@ Des cha nimmi ruckgängig gmacht wäre.',
 'right-reupload-shared' => 'Lokals Iberschryybe vun ere Datei, wu in eme gmeinsam gnutzte Repositorium vorhanden isch',
 'right-upload_by_url' => 'E Datei uffelade vun ere URL-Adräss',
 'right-purge' => 'Sytecache lääre ohni Ruckfrog',
-'right-autoconfirmed' => 'Halbgschitzti Syte bearbeite',
+'right-autoconfirmed' => 'Kei Bschränkig dur IP-basierti Limit',
 'right-bot' => 'Behandlig as automatische Prozess',
 'right-nominornewtalk' => 'Chleini Bearbeitige an Diskussionssyte fiehre nit zuen ere „Neiji Nochrichte“-Aazeig',
 'right-apihighlimits' => 'Hecheri Limit in API-Abfroge',
@@ -1420,7 +1422,7 @@ Des cha nimmi ruckgängig gmacht wäre.',
 'right-ipblock-exempt' => 'Uusnahm vu IP-Sperrine, Autoblock und Rangesperre',
 'right-proxyunbannable' => 'Uusnahm vu automatische Proxysperrine',
 'right-unblockself' => 'Sich sälber entsperre',
-'right-protect' => 'Syteschutzstatus änderen un gschitzti Syte bearbeite',
+'right-protect' => 'Syteschutzstatus änderen un kaskadegschitzti Syte bearbeite',
 'right-editprotected' => 'Gschitzti Syte bearbeite (ohni Kaskadeschutz)',
 'right-editinterface' => 'Benutzerinterface bearbeite',
 'right-editusercssjs' => 'Bearbeite vu CSS- und JS-Dateie vu andere Benutzer',
@@ -1494,17 +1496,17 @@ Des cha nimmi ruckgängig gmacht wäre.',
 'recentchanges-legend' => 'Optione vu dr Aazeig',
 'recentchanges-summary' => 'Uf däre Syte chasch di letschte Änderige in däm Wiki aaluege.',
 'recentchanges-feed-description' => 'Di letschten Änderige vo {{SITENAME}} i däm Feed abonniere.',
-'recentchanges-label-newpage' => 'Die Bearbeitig het e neji Syte aagleit',
+'recentchanges-label-newpage' => 'Mit däre Bearbeitig isch e neji Syte aagleit wore',
 'recentchanges-label-minor' => 'Des isch e chleini Änderig',
 'recentchanges-label-bot' => 'Die Bearbeitig isch dur e Bott uusgfiert wore',
 'recentchanges-label-unpatrolled' => 'Die Bearbeitig isch nonig vun eme Fäldhieter aagluegt wore',
 'recentchanges-label-plusminus' => 'Di gänderet Sytegreßi (Aazahl in Byte)',
-'recentchanges-legend-newpage' => '$1 - neji Syte',
+'recentchanges-legend-newpage' => '(lueg au d [[Special:NewPages|Lischt vu neie Syte]])',
 'rcnotefrom' => 'Des sin d Ändrige syter <b>$2</b> (bis zem <b>$1</b> zeigt).',
 'rclistfrom' => '<small>Nöji Änderige ab $1 aazeige (UTC)</small>',
 'rcshowhideminor' => 'Chlynigkeite $1',
 'rcshowhidebots' => 'Bots $1',
-'rcshowhideliu' => 'Aagmoldene Benützer $1',
+'rcshowhideliu' => 'Regischtrierti Benutzer $1',
 'rcshowhideanons' => 'Nid aagmäldete Benutzer $1',
 'rcshowhidepatr' => 'Vum Fäldhieter aagluegti Änderige $1',
 'rcshowhidemine' => 'Eigeni Änderige $1',
@@ -1677,6 +1679,7 @@ Wänn s Problem alno uftritt, informier e [[Special:ListUsers/sysop|Ammann]].',
 'backend-fail-notsame' => 'S git scho ne Datei $1, wu nit idäntisch isch.',
 'backend-fail-invalidpath' => '$1 isch kei giltige Pfad zum Spychere.',
 'backend-fail-delete' => 'D Datei $1 het nit glöscht werre kinne.',
+'backend-fail-describe' => 'D Metadate fir d Datei „$1“ hän nit chenne gänderet wäre.',
 'backend-fail-alreadyexists' => 'D Datei „$1“ git s scho.',
 'backend-fail-store' => 'D Datei $1 het nit chenne unter em Name $2 gspycheret wäre.',
 'backend-fail-copy' => 'D Datei $1 het nit no $2 chenne kopiert wäre.',
@@ -1771,7 +1774,7 @@ Us Sicherheitsgrinde isch img_auth.php deaktiviert.',
 'upload_source_file' => ' (e Datei uf Dyynem Computer)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Die Spezialsyte lischtet alli uffegladene Dateie uf. Wänn noch eme bstimmte Benutzer gfilteret wird, wäre nume die Dateie zeigt, wun er di letschte Version uffeglade het.',
+'listfiles-summary' => 'Die Spezialsyte lischtet alli uffegladene Dateie uf.',
 'listfiles_search_for' => 'Suech noch Datei:',
 'imgfile' => 'Datei',
 'listfiles' => 'Lischte vo Bilder',
@@ -1900,6 +1903,12 @@ Iberprief anderi Link zue dr Vorlage, voreb Du die leschesch.',
 'statistics-users-active-desc' => 'Benutzer mit Bearbeitige {{PLURAL:$1|in dr letschte 24 Stund|in dr letschte $1 Täg}}',
 'statistics-mostpopular' => 'Am meischte aagluegti Syte',
 
+'pageswithprop' => 'Syte mit ere Syteneigeschaft',
+'pageswithprop-legend' => 'Syte mit ere Syteneigeschaft',
+'pageswithprop-text' => 'Die Spezialsyte lischet Syten auf, wu ne bstimmti Syteneigeschaft bruche.',
+'pageswithprop-prop' => 'Eigeschaftsname:',
+'pageswithprop-submit' => 'Gang ane',
+
 'doubleredirects' => 'Doppleti Wyterleitige (Redirects)',
 'doubleredirectstext' => 'Die Lischt zeigt Wyterleitige, wu uf anderi Wyterleitige verwyyse.
 In jedere Zyylete het s Link zue dr erschte un dr zwote Wyterleitig un s Ziil vu dr zwote Wyterleitig, wu normalerwys di gwinscht Ziilsyten isch. Do sott eigetli scho di erscht Wyterleitig druf zeige.
@@ -2045,7 +2054,7 @@ Lueg au d Lischt vu dr [[Special:WantedCategories|gwinschte Kategorie]].',
 'linksearch-pat' => 'Suechmuschter:',
 'linksearch-ns' => 'Namensruum:',
 'linksearch-ok' => 'Sueche',
-'linksearch-text' => 'Die Spezialsyte macht d Suechi no Syte megli, wu s bstimmti Weblink din het. Doderby chenne Platzhalter wie zem Byschpel <code>*.byschpel.de</code> brucht wäre. S mueß zmindecht ei Top-Level-Domain, z. B. „*.org“. aagee wäre. <br />Unterstitzti Protokoll: <code>$1</code> (Standard isch http, wänn kei Protokoll aagee isch).',
+'linksearch-text' => 'Die Spezialsyte macht d Suechi no Syte megli, wu s bstimmti Weblink din het. Doderby chenne Platzhalter wie zem Byschpel <code>*.byschpel.de</code> brucht wäre. S mueß zmindecht ei Top-Level-Domain, z. B. „*.org“. aagee wäre. <br />{{PLURAL:$2|Unterstitzt Protokoll|Unterstitzti Protokoll}}: <code>$1</code> (Standard isch http, wänn kei Protokoll aagee isch.)',
 'linksearch-line' => '$1 isch vo $2 verknüpft',
 'linksearch-error' => 'Platzhalter chönne numme am Aafang verwändet werre.',
 
@@ -2058,7 +2067,7 @@ Lueg au d Lischt vu dr [[Special:WantedCategories|gwinschte Kategorie]].',
 # Special:ActiveUsers
 'activeusers' => 'Lischt vu dr aktive Benutzer',
 'activeusers-intro' => 'Des isch e Lischt vu Benutzer, wu irgedebis bearbeitet hän {{PLURAL:$1|am letschte Tag|in dr letschte $1 Täg}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|Bearbeitig|Bearbeitige}} {{PLURAL:$3|am letschte Tag|in dr letschte $3 Täg}}',
+'activeusers-count' => '$1 {{PLURAL:$1|Aktion|Aktione}} {{PLURAL:$3|am letschte Tag|in dr letschte $3 Täg}}',
 'activeusers-from' => 'Zeig Benutzer ab:',
 'activeusers-hidebots' => 'Bötli uusblände',
 'activeusers-hidesysops' => 'Ammanne (Administratore) uusblände',
@@ -2129,10 +2138,8 @@ As Absender wird d E-Mail-Adräss us Dyyne [[Special:Preferences|Yystellige]] yy
 'watchnologin' => 'Du bisch nit aagmäldet',
 'watchnologintext' => 'Du muesch [[Special:UserLogin|aagmäldet]] syy, zum Dyyni Beobachtigssyte z bearbeite.',
 'addwatch' => 'zue de Beobachtigslischte derzue tue',
-'addedwatchtext' => "D Syte \"[[:\$1]]\" stoht jetz uf Dyyre [[Special:Watchlist|Beobachtigslischt]].
-Neji Änderige an dr Syte oder dr Diskussionssyte drvo chasch jetz dert säh. Usserdem sin die Änderige uf dr [[Special:RecentChanges|letschte Änderige]] '''fett''' gschribe, ass De si schnäller findsch.
-
-Wänn Du d Syte speter wider vu dr Lischt witt stryyche, deno druck eifach uf „{{int:Unwatch}}“.",
+'addedwatchtext' => 'D Syte "[[:$1]]" stoht jetz uf Dyyre [[Special:Watchlist|Beobachtigslischt]].
+Neji Änderige an dr Syte oder dr Diskussionssyte drvo chasch jetz dert säh.',
 'removewatch' => 'Us der Beobachtigsliste usegnuu',
 'removedwatchtext' => 'D Syte «[[:$1]]» isch us dyre [[Special:Watchlist|Beobachtigsliste]] glösche worde.',
 'watch' => 'Beobachte',
@@ -2160,24 +2167,31 @@ Wänn Du d Syte speter wider vu dr Lischt witt stryyche, deno druck eifach uf 
 'enotif_mailer' => '{{SITENAME}} E-Mail-Benochrichtigungsdienscht',
 'enotif_reset' => 'Alli Syte as aagluegt markiere',
 'enotif_impersonal_salutation' => '{{SITENAME}}-Benutzer',
+'enotif_subject_deleted' => '{{SITENAME}}-Syte $1 isch vu {{GENDER:$2|$2}} glescht wore',
+'enotif_subject_created' => '{{SITENAME}}-Syte $1 isch vu {{GENDER:$2|$2}} aagleit wore',
+'enotif_subject_moved' => '{{SITENAME}}-Syte $1 isch vu {{GENDER:$2|$2}} verschobe wore',
+'enotif_subject_restored' => '{{SITENAME}}-Syte $1 isch vu {{GENDER:$2|$2}} widerhärgstellt wore',
+'enotif_subject_changed' => '{{SITENAME}}-Syte $1 isch vu {{GENDER:$2|$2}} gänderet',
+'enotif_body_intro_deleted' => 'D {{SITENAME}}-Syte $1 isch am $PAGEEDITDATE vu {{GENDER:$2|$2}} glescht wore. Lueg $3.',
+'enotif_body_intro_created' => 'D {{SITENAME}}-Syte $1 isch am $PAGEEDITDATE vu {{GENDER:$2|$2}} aagleit wore. Lueg $3 fir di aktuäll Version.',
+'enotif_body_intro_moved' => 'D {{SITENAME}}-Syte $1 isch am $PAGEEDITDATE vu {{GENDER:$2|$2}} verschobe wore. Lueg $3 fir di aktuäll Version.',
+'enotif_body_intro_restored' => 'D {{SITENAME}}-Syte $1 isch am $PAGEEDITDATE vu {{GENDER:$2|$2}} widerhärgstellt wore. Lueg $3 fir di aktuäll Version.',
+'enotif_body_intro_changed' => 'D {{SITENAME}}-Syte $1 isch am $PAGEEDITDATE vu {{GENDER:$2|$2}} verschobe wore. Lueg $3 fir di aktuäll Version.',
 'enotif_lastvisited' => '$1 zeigt alli Änderige uf s Mol.',
 'enotif_lastdiff' => 'Lueg $1 no däre Änderig.',
 'enotif_anon_editor' => 'Anonyme Benutzer $1',
-'enotif_body' => 'Liebe/Liebi $WATCHINGUSERNAME,
-
-d {{SITENAME}}-Syte $PAGETITLE isch vum $PAGEEDITOR am $PAGEEDITDATE $CHANGEDORCREATED wore, di aktuell Version isch: $PAGETITLE_URL
-
+'enotif_body' => 'Sali $WATCHINGUSERNAME,
 
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Zämmenfassig vum Autor: $PAGESUMMARY $PAGEMINOREDIT
+
 Kontakt zum Autor:
 Mail $PAGEEDITOR_EMAIL
 Wiki $PAGEEDITOR_WIKI
 
 
-Es wird kei wyteri Nochricht iber Änderige gschickt, bis Du uf sälli Syte gohsch.
-Uf Dyyre Beobachtigssyte chasch d Beobachtigsmarker fir alli Syte zrucksetze, wu Du beobachte tuesch.
+Es wird kei wyteri Nochricht iber Änderige gschickt, bis Du uf sälli Syte gohsch un di aamäldsch. Uf Dyyre Beobachtigssyte chasch d Beobachtigsmarker fir alli Syte zrucksetze, wu Du beobachte tuesch.
 
              Dyy fryndli {{SITENAME}}-Nochrichtesyschtem
 
@@ -2216,9 +2230,11 @@ Im $2 het s e Lischt vu dr letschte Leschige.',
 'deleteotherreason' => 'Andere/zuesätzleche Grund:',
 'deletereasonotherlist' => 'Andere Grund',
 'deletereason-dropdown' => '* Allgmeini Leschgrind
+** Spam
 ** Wunsch vum Autor
 ** Urheberrächtsverletzig
-** Vandalismus',
+** Vandalismus
+** Defekti Wyterleitung',
 'delete-edit-reasonlist' => 'Leschgrind bearbeite',
 'delete-toobig' => 'Die Syte het e arg langi Versionsgschicht mit meh as $1 {{PLURAL:$1|Version|Versione}}. S Lesche vu sonige Syte isch yygschränkt wore go verhindere, ass dr Server vu {{SITENAME}} us Versäh zytwys iberlaschtet wird.',
 'delete-warning-toobig' => 'Die Syte het e arg langi Versionsgschicht mit meh as $1 {{PLURAL:$1|Version|Versione}}. S Lesche cha dr Datebankbetriib vu {{SITENAME}} stere.',
@@ -2236,7 +2252,7 @@ Im $2 het s e Lischt vu dr letschte Leschige.',
 Di letscht Änderig het [[User:$3|$3]] ([[User talk:$3|Diskussion]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) gmacht.',
 'editcomment' => "D Änderigszämmefassig isch: „''$1''“.",
 'revertpage' => 'Ruckgängig gmacht zue dr letschte Änderig vo [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussion]]) mit de letzte Version vo [[User:$1|$1]] widerhergstellt',
-'revertpage-nouser' => 'Bearbeitige ruckgängig gmacht vu (Benutzername uusegnuu), letschti Fassig vu [[User:$1|$1]] widerhärgstellt',
+'revertpage-nouser' => 'Bearbeitige ruckgängig gmacht vu (Benutzername uusegnuu), letschti Fassig vu {{GENDER:$1|[[User:$1|$1]]}} widerhärgstellt',
 'rollback-success' => 'D Änderige vu $1 sin ruckgängig gmacht wore un di letscht Version vu $2 isch widerhärgstellt wore.',
 
 # Edit tokens
@@ -2258,6 +2274,8 @@ Lueg d [[Special:ProtectedPages|Lischt vu dr gschitzte Syte]] fir alli zurzyt gs
 'prot_1movedto2' => '[[$1]] isch uf [[$2]] verschobe worde.',
 'protect-badnamespace-title' => 'Nit-schitzbare Namensruum',
 'protect-badnamespace-text' => 'Syte in däm Namensruum chenne nit gschitzt wäre.',
+'protect-norestrictiontypes-text' => 'Die Syte cha nit gschitzt wäre, wel kei Bschränkigstype verfiegbar sin.',
+'protect-norestrictiontypes-title' => 'Nit schitzbari Syte',
 'protect-legend' => 'Syteschutzstatus ändere',
 'protectcomment' => 'Grund:',
 'protectexpiry' => 'Gsperrt bis:',
@@ -2272,9 +2290,9 @@ Hie sy di aktuelle Schutzystellige vor Syte '''$1''':",
 'protect-cascadeon' => 'Die Syten isch gschützt, wil si {{PLURAL:$1|zur folgende Syte|zu de folgende Syte}} ghört, wo derfür e Kaskadesperrig gilt.
 Der Schutzstatus vo dere Syte lat sech la ändere, aber das het kei Yfluss uf d Kaskadesperrig.',
 'protect-default' => 'Alle Benutzer',
-'protect-fallback' => '«$1»-Berächtigung nötig',
-'protect-level-autoconfirmed' => 'Neji un nit regischtrierti Benutzer sperre',
-'protect-level-sysop' => 'Numme Ammanne',
+'protect-fallback' => 'Nume Benutzer mit dr „$1“-Berächtigung erlaube.',
+'protect-level-autoconfirmed' => 'Nume automatisch bstetigte Benutzer erlaube',
+'protect-level-sysop' => 'Numme Ammanne erlaube',
 'protect-summary-cascade' => 'Kaskade',
 'protect-expiring' => 'bis $1 (UTC)',
 'protect-expiring-local' => 'bis $1',
@@ -2512,7 +2530,7 @@ Go d Sperri ufhebe lueg d [[Special:BlockList|Lisch vu allene aktive Sperrine]].
 'range_block_disabled' => 'D Megligkeit, ganzi Adrässryym z sperre, isch nit aktiviert.',
 'ipb_expiry_invalid' => 'D Duur, wu yygee woren isch, isch nit giltig.',
 'ipb_expiry_temp' => 'Versteckti Benutzername-Sperrine solle permanent syy.',
-'ipb_hide_invalid' => 'S isch nit megli des Benutzerkonto z unterdrucke; villicht het s viili Bearbeitige.',
+'ipb_hide_invalid' => 'S isch nit megli des Benutzerkonto z unterdrucke, wel s meh wie {{PLURAL:$1|ei Bearbeitig|$1 Bearbeitige}} ufwyst.',
 'ipb_already_blocked' => '„$1“ isch scho gsperrt wore.',
 'ipb-needreblock' => '{{GENDER:|De|D|}} „$1“ isch scho gsperrt. Mechtsch d Sperrparameter ändere?',
 'ipb-otherblocks-header' => 'Anderi {{PLURAL:$1|Sperri|Sperrine}}',
@@ -2550,7 +2568,18 @@ Go d Sperri ufhebe lueg d [[Special:BlockList|Lisch vu allene aktive Sperrine]].
 # Move page
 'move-page' => '„$1“ verschiebe',
 'move-page-legend' => 'Artikel verschiebe',
-'movepagetext' => 'Mit däm Formular chasch du en Artikel verschiebe, u zwar mit syre komplette Versionsgschicht. Der alt Titel leitet zum nöie wyter, aber Links ufen alt Titel blyben unveränderet.',
+'movepagetext' => "Mit däm Formular chasch e Syte umnänne, indäm Du si mitsamt allne Versionen uf e neje Titel verschiebsch.
+Dr alt Titel wird derno zum eje wyterleite.
+Du chasch Wyterleitige, wu uf dr Originaltitel verwyse, automatisch korrigiere loo.
+Stell sicher, dass Du im Aaschluss alli [[Special:DoubleRedirects|dopplete]] oder [[Special:BrokenRedirects|defekte Wyterleitige]] iberpriefsch.
+Du bisch derfir verantwortlig, ass Link wyter uf s korräkt Ziil verwyse.
+
+D Syte wird '''nit''' verschobe, wänn s scho ne Syte mit em vorgsähne Titel git, usser s isch e Wyterleitig ohni Versionsgschicht.
+Des heißt, ass Du d Umnännig chasch ruckgängig mache, wänn e Fähler gmacht hesch. Du chasch dergege kei Syte, wu s scho git, iberschrybe.
+
+'''Warnig!'''
+D Verschiebig cha wyteri un nit erwarteti Folge fir vylmol bsuechti Syte haa.
+Du sottsch wäge däm d Konsequänze verstande haa, vorbe jetz wyter machsch.",
 'movepagetext-noredirectfixer' => "Mit däm Formular unte chasch e Syte umnänne, indäm Du si mitsamt allene Versione uf e neje Titel verschiebsch.
 Dr alt Titel leitet derno zum neje wyter.
 Stell sicher, ass Du im Aaschluss alli [[Special:DoubleRedirects|dopplete]] oder [[Special:BrokenRedirects|kaputtige Wyterleitige]] iberpriefsch.
@@ -2719,6 +2748,7 @@ Die uf em lokale Rächner spychere un derno do uffelade.',
 'import-error-interwiki' => 'D Syte „$1“ isch nit importiert wore, wel dr Name vun ere fir externi Link (Interwiki) reserviert isch.',
 'import-error-special' => 'D Syte „$1“ isch nit importiert wore, wel si zuen eme bsundere Namensruum ghert, wu kei Syte megli sin.',
 'import-error-invalid' => 'Syte „$1“ isch nit importiert wore, wel dr Name vun ere nit giltig isch.',
+'import-error-unserialize' => 'D Version $2 vu dr Syte „$1“ het nit chenne deserialisiert wäre. D Version isch fir d Verwändig vum Inhaltsmodäll $3 gmäldet wore, wu as $4 serialisiert isch.',
 'import-options-wrong' => 'Falschi {{PLURAL:$2|Option|Optione}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Dää Stammsytename isch nit giltig.',
 'import-rootpage-nosubpage' => 'Im Namensruum „$1“ vu dr Stammsyte sin kei Untersyte erlaubt.',
@@ -2847,12 +2877,13 @@ Die uf em lokale Rächner spychere un derno do uffelade.',
 'pageinfo-length' => 'Sytelengi (in Byte)',
 'pageinfo-article-id' => 'Syten-ID',
 'pageinfo-language' => 'Syteninhaltssproch',
-'pageinfo-robot-policy' => 'Suechmaschinestatus',
-'pageinfo-robot-index' => 'Indexierbar',
-'pageinfo-robot-noindex' => 'Nit indexierbar',
+'pageinfo-robot-policy' => 'Indexierig dur Suechmaschine',
+'pageinfo-robot-index' => 'Erlaubt',
+'pageinfo-robot-noindex' => 'Nit erlaubt',
 'pageinfo-views' => 'Aazahl Sytenufruef',
 'pageinfo-watchers' => 'Aazahl vu Beobachter',
-'pageinfo-redirects-name' => 'Wyterleitige zue däre Syte',
+'pageinfo-few-watchers' => 'Weniger wie {{PLURAL:$1|ei|$1}} Beobachter',
+'pageinfo-redirects-name' => 'Zahl vu dr Wyterleitige zue däre Syte',
 'pageinfo-subpages-name' => 'Untersyte vu däre Syte',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|Wyterleitig|Wyterleitige}}; $3 {{PLURAL:$3|anderi Syte}})',
 'pageinfo-firstuser' => 'Aagleit vu',
@@ -2866,6 +2897,7 @@ Die uf em lokale Rächner spychere un derno do uffelade.',
 'pageinfo-magic-words' => '{{PLURAL:$1|Magischs Wort|Magischi Werter}} ($1)',
 'pageinfo-hidden-categories' => 'Versteckti {{PLURAL:$1|Kategori|Kategorie}} ($1)',
 'pageinfo-templates' => 'Yybundeni {{PLURAL:$1|Vorlag|Vorlage}} ($1)',
+'pageinfo-transclusions' => 'Yybunden in {{PLURAL:$1|1 Syte|$1 Syte}}',
 'pageinfo-toolboxlink' => 'Informatione zue dr Syte',
 'pageinfo-redirectsto' => 'Weiterleitung nach',
 'pageinfo-redirectsto-info' => 'Information',
@@ -2874,6 +2906,10 @@ Die uf em lokale Rächner spychere un derno do uffelade.',
 'pageinfo-protect-cascading' => 'Syte mit Kaskadeschutz vu do',
 'pageinfo-protect-cascading-yes' => 'Jo',
 'pageinfo-protect-cascading-from' => 'Syte mit Kaskadeschutz vu',
+'pageinfo-category-info' => 'Kategoriinformatione',
+'pageinfo-category-pages' => 'Aazahl vu dr Syte',
+'pageinfo-category-subcats' => 'Aazahl vu dr Unterkategorie',
+'pageinfo-category-files' => 'Aazahl vu dr Dateie',
 
 # Patrolling
 'markaspatrolleddiff' => 'Als patrulyrt markyre',
@@ -3163,7 +3199,7 @@ Andri wäre standardmäßig nit aazeigt.
 'exif-compression-4' => 'CCITT Gruppe 4 Faxkodierig',
 
 'exif-copyrighted-true' => 'Gschitzt',
-'exif-copyrighted-false' => 'Public Domain',
+'exif-copyrighted-false' => 'Urheberrächtsstatus nit feschtgleit',
 
 'exif-unknowndate' => 'Nit bekannt Datum',
 
@@ -3295,8 +3331,8 @@ Andri wäre standardmäßig nit aazeigt.
 'exif-gpslongitude-w' => 'weschtl. Längi',
 
 # Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|Meter|Meter}} iber em Meeresspiegel',
-'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|Meter|Meter}} unter em Meeresspiegel',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|Meter}} iber em Meeresspiegel',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|Meter}} unter em Meeresspiegel',
 
 'exif-gpsstatus-a' => 'Mässig lauft',
 'exif-gpsstatus-v' => 'Interoperabilität vu Mässige',
@@ -3583,7 +3619,7 @@ E [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopi vu dr GNU General Public-Lizänz] sott
 'specialpages-group-highuse' => 'Syte wo oft bruucht werde',
 'specialpages-group-pages' => 'Lischte vo Syte',
 'specialpages-group-pagetools' => 'Sytewerchzüüg',
-'specialpages-group-wiki' => 'Syschtemdate un Wärchzüüg',
+'specialpages-group-wiki' => 'Date un Wärchzyyg',
 'specialpages-group-redirects' => 'Spezialsyte wo wyterleite',
 'specialpages-group-spam' => 'Spam-Wärchzüüg',
 
@@ -3770,4 +3806,6 @@ Sunscht chasch au s eifach Formular unte nutze. Dyy Kommentar wird, zämme mit D
 'expand_templates_generate_xml' => 'Zeig XML-Parser-Baum',
 'expand_templates_preview' => 'Vorschou',
 
+# Unknown messages
+'uploadinvalidxml' => 'S XML in dr uffegladene Datei het nit chenne parst wäre.',
 );
index 20d961f..a1338dc 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Anson2812
  * @author Dream hot
+ * @author EagerLin
  * @author Hakka
  * @author Jetlag
  * @author Mnemonic kek
@@ -234,7 +235,7 @@ $messages = array(
 'articlepage' => '查看內容頁面',
 'talk' => '討論',
 'views' => '查看數',
-'toolbox' => '工具箱',
+'toolbox' => 'Kûng-khí-siông',
 'userpage' => '查看用戶頁面',
 'projectpage' => '查看項目頁面',
 'imagepage' => '查看文件頁面',
@@ -291,8 +292,8 @@ $1',
 'youhavenewmessages' => '汝有$1($2)。',
 'youhavenewmessagesfromusers' => '汝有來自{{PLURAL:$3|另一位用戶|$3位用戶}}嘅$1($2)。',
 'youhavenewmessagesmanyusers' => '汝有來自多位用戶嘅$1( $2 )。',
-'newmessageslinkplural' => '{{PLURAL:$1|一條新信息|新信息}}',
-'newmessagesdifflinkplural' => '最新{{PLURAL:$1|更改|更改}}',
+'newmessageslinkplural' => '{{PLURAL:$1|yit-thiàu sîn sêu-sit|999=sîn sêu-sit}}',
+'newmessagesdifflinkplural' => 'chui-khiun{{PLURAL:$1|kiên-kói|kiên-kói}}',
 'youhavenewmessagesmulti' => '汝在$1肚有新消息',
 'editsection' => '編寫',
 'editold' => '編寫',
@@ -346,6 +347,10 @@ $1',
 'databaseerror' => '數據庫差錯',
 'databaseerror-text' => '出現資料庫查詢錯誤。
 邇可能表示軟件肚存在錯誤。',
+'databaseerror-textcl' => 'chṳ̂-liau-ku chhà-chhìm chho-ngu',
+'databaseerror-query' => 'chhà-chhìm:$1',
+'databaseerror-function' => 'kûng-nèn:$1',
+'databaseerror-error' => 'chho-ngu:$1',
 'laggedslavemode' => "'''警告:'''頁面可能毋包含最近嘅更新。",
 'readonly' => '數據庫分人鎖定',
 'enterlockreason' => '請撳入禁止訪問原因, 包括估計重新開放嘅時間',
@@ -379,6 +384,7 @@ $1',
 'cannotdelete-title' => '無辦法刪除頁面「$1」',
 'delete-hook-aborted' => '刪除分勾仔中止。
 其毋曾提供任何解釋。',
+'no-null-revision' => 'mò-fap chhóng-kien "$1" ya̍p-mien sîn-ke khûng-pa̍k siû-thin',
 'badtitle' => '有錯嘅標題',
 'badtitletext' => '所請求頁面嘅標題是無效嘅、毋存在嘅,跨語言或跨wiki鏈接嘅標題有錯。其可能包含一隻或還較多做毋得用於標題嘅字符。',
 'perfcached' => '下列係緩存數據,因此可能毋係最新嘅。最多{{PLURAL:$1|單淨有1嘅結果|$1嘅結果}}可用。',
@@ -899,7 +905,6 @@ Liá-chhṳ chhà-fûng he yù $1 só fûng ke. Tông-chûng ke ngièn-yîn he '
 'rows' => '行数:',
 'columns' => '列:',
 'searchresultshead' => '搜尋',
-'resultsperpage' => '每頁顯示鏈接數:',
 'stub-threshold' => '<a href="#" class="stub">短頁面鏈接</a>格式門檻值(字節):',
 'recentchangesdays' => '最近更改肚嘅顯示日數:',
 'recentchangescount' => 'Chui-khiûn kiên-kói chûng ke phiên-siá chúng-su:',
@@ -1528,6 +1533,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'block-log-flags-noautoblock' => '禁用自動查封',
 'range_block_disabled' => '單淨管理員正做得創建禁止查封嘅範圍。',
 'ipb_expiry_invalid' => '無效嘅終止時間。',
+'ipb_hide_invalid' => 'Put-tet yit-chak yung-fu; Kì yû chhêu-ko {{PLURAL:$1|$1}} chhṳ-su phiên-siá',
 'ipb_already_blocked' => 'Yí-kîn fûng-só "$1"',
 'ipb_cant_unblock' => '差錯: 尋毋到查封ID$1。可能已經解除封禁。',
 'ip_range_invalid' => '無效嘅IP範圍。',
index c70efba..dba9aab 100644 (file)
@@ -1464,6 +1464,7 @@ $1",
 'search-result-score' => 'רלוונטיוּת: $1%',
 'search-redirect' => '(הפניה $1)',
 'search-section' => '(פסקה $1)',
+'search-file-match' => '(התאמה בתוכן הקובץ)',
 'search-suggest' => 'האם התכוונת ל: $1',
 'search-interwiki-caption' => 'מיזמי אחות',
 'search-interwiki-default' => 'תוצאות ב{{GRAMMAR:תחילית|$1}}:',
@@ -2556,7 +2557,7 @@ $UNWATCHURL
 'exblank' => 'הדף היה ריק',
 'delete-confirm' => 'מחיקת $1',
 'delete-legend' => 'מחיקה',
-'historywarning' => "'''אזהרה:''' לדף שאתם עומדים למחוק יש היסטוריית שינויים של בערך {{PLURAL:$1|גרסה אחת|$1 גרסאות}}:",
+'historywarning' => "'''אזהרה:''' לדף שאתם עומדים למחוק יש היסטוריית שינויים של {{PLURAL:$1|גרסה אחת|$1 גרסאות}}:",
 'confirmdeletetext' => 'אתם עומדים למחוק דף יחד עם כל ההיסטוריה שלו.
 
 אנא אשרו שזה אכן מה שאתם מתכוונים לעשות, שאתם מבינים את התוצאות של מעשה כזה, ושהמעשה מבוצע בהתאם ל[[{{MediaWiki:Policy-url}}|נוהלי האתר]].',
@@ -2580,7 +2581,7 @@ $UNWATCHURL
 'delete-edit-reasonlist' => 'עריכת סיבות המחיקה',
 'delete-toobig' => 'דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקת דפים כאלה הוגבלה כדי למנוע פגיעה בביצועי האתר.',
 'delete-warning-toobig' => 'דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקה שלו עלולה להפריע לפעולות בבסיס הנתונים; אנא שקלו שנית את המחיקה.',
-'deleting-backlinks-warning' => "'''אזהרה:''' דפים אחרים מקשרים לדף שאתם עומדים למחוק.",
+'deleting-backlinks-warning' => "'''אזהרה:''' דפים אחרים מקשרים לדף שאתם עומדים למחוק או מכלילים אותו.",
 
 # Rollback
 'rollback' => 'שחזור עריכות',
@@ -2881,7 +2882,7 @@ $1',
 'range_block_disabled' => 'האפשרות לחסום טווח כתובות אינה פעילה.',
 'ipb_expiry_invalid' => 'זמן פקיעת החסימה אינו תקין.',
 'ipb_expiry_temp' => 'חסימות הכוללות הסתרת שם משתמש חייבות להיות לזמן בלתי מוגבל.',
-'ipb_hide_invalid' => 'לא ניתן להסתיר שם משתמש זה; ייתכן שבוצעו ממנו יותר מדי עריכות.',
+'ipb_hide_invalid' => 'לא ניתן להסתיר שם משתמש זה; {{PLURAL:$1|בוצעה ממנו יותר מעריכה אחת|בוצעו ממנו יותר מ‏‏֫־$1 עריכות}}.',
 'ipb_already_blocked' => 'המשתמש "$1" כבר נחסם.',
 'ipb-needreblock' => '$1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסימה?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|חסימה אחרת|חסימות אחרות}}',
index aa01dbe..0993a16 100644 (file)
@@ -1172,7 +1172,6 @@ Yaad rakhna ki uu log ke {{SITENAME}} ke index saait purana hoi.',
 'rows' => 'Line:',
 'columns' => 'Column:',
 'searchresultshead' => 'Khojo',
-'resultsperpage' => 'Panna ke ketna dafe dekha gais hai:',
 'stub-threshold' => 'Threshold ke khatir <a href="#" class="stub">stub link</a> formatting (bytes):',
 'stub-threshold-disabled' => 'Band kar dewa gais hae',
 'recentchangesdays' => 'Nawaa badlao me ketna roj dekhawa jaae:',
index f51cb94..65fa44d 100644 (file)
@@ -1208,6 +1208,7 @@ Podrobnosće móžeš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'search-result-score' => 'Relewanca: $1 %',
 'search-redirect' => '(Daleposrědkowanje $1)',
 'search-section' => '(wotrězk $1)',
+'search-file-match' => '(wotpowěduje datajowemu wobsahej)',
 'search-suggest' => 'Měnješe ty $1?',
 'search-interwiki-caption' => 'Sotrowske projekty',
 'search-interwiki-default' => '$1 wuslědki:',
@@ -2303,7 +2304,7 @@ Prošu potwjerdź, zo maš wotpohlad to činić, zo rozumiš sćěwki a zo to wo
 'delete-edit-reasonlist' => 'Přičiny za wušmórnjenje wobdźěłać',
 'delete-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje tajkich stronow bu wobmjezowane, zo by připadne přetorhnjenje {{SITENAME}} wobešło.',
 'delete-warning-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje móže operacije datoweje banki {{SITENAME}} přetorhnyć; pokročuj z kedźbliwosću.',
-'deleting-backlinks-warning' => "'''Warnowanje:''' Druhe strony wotkazuja k stronje, kotruž chceš zhašeć.",
+'deleting-backlinks-warning' => "'''Warnowanje:''' Druhe strony wotkazuja k stronje abo strona je druhdźe zapřijata, kotruž chceš zhašeć.",
 
 # Rollback
 'rollback' => 'Změny cofnyć',
@@ -2590,7 +2591,7 @@ Hlej [[Special:BlockList|lisćinu blokowanjow]], zo by zablokowanjow pruwował.'
 'range_block_disabled' => 'Kmanosć administratorow, cyłe wobłuki IP-adresow blokować, je znjemóžnjena.',
 'ipb_expiry_invalid' => 'Čas spadnjenja je njepłaćiwy.',
 'ipb_expiry_temp' => 'Blokowanja schowanych wužiwarskich mjenow maja permanentne być.',
-'ipb_hide_invalid' => 'Njeje móžno tute konto potłóčić; ma snano přewjele změnow.',
+'ipb_hide_invalid' => 'Njeje móžno tute konto potłóčić; ma přez {{PLURAL:$1|jednu změnu|$1 změnje|$1 změny|$1 změnow}}.',
 'ipb_already_blocked' => 'Wužiwar „$1” je hižo zablokowany.',
 'ipb-needreblock' => '$1 je hižo zablokowany. Chceš nastajenja změnić?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Druhe blokowanje|Druhej blokowani|Druhe blokowanja|Druhe blokowanja}}',
index 64b0e80..dde5212 100644 (file)
@@ -367,7 +367,7 @@ $messages = array(
 'listingcontinuesabbrev' => 'frh.',
 'index-category' => 'Raðaðar skrár',
 'noindex-category' => 'Óraðaðar skrár',
-'broken-file-category' => 'Síður með brotna myndatengla',
+'broken-file-category' => 'Síður með brotna skráartengla',
 
 'about' => 'Um',
 'article' => 'Efnissíða',
index 947000e..7dbd1a7 100644 (file)
@@ -1355,6 +1355,7 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 'search-result-score' => 'Rilevanza: $1%',
 'search-redirect' => '(redirect $1)',
 'search-section' => '(sezione $1)',
+'search-file-match' => '(corrispondenza nel contenuto del file)',
 'search-suggest' => 'Forse cercavi: $1',
 'search-interwiki-caption' => 'Progetti fratelli',
 'search-interwiki-default' => 'Risultati da $1:',
@@ -2443,7 +2444,7 @@ Consultare il log delle $2 per un elenco delle pagine cancellate di recente.',
 'delete-edit-reasonlist' => 'Modifica i motivi di cancellazione',
 'delete-toobig' => 'La cronologia di questa pagina è molto lunga (oltre $1 {{PLURAL:$1|revisione|revisioni}}). La sua cancellazione è stata limitata per evitare di creare accidentalmente dei problemi di funzionamento al database di {{SITENAME}}.',
 'delete-warning-toobig' => 'La cronologia di questa pagina è molto lunga (oltre $1 {{PLURAL:$1|revisione|revisioni}}). La sua cancellazione può creare dei problemi di funzionamento al database di {{SITENAME}}; procedere con cautela.',
-'deleting-backlinks-warning' => "'''Attenzione:''' altre pagine contengono collegamenti alla pagina che stai per cancellare.",
+'deleting-backlinks-warning' => "'''Attenzione:''' altre pagine contengono collegamenti o inclusioni alla pagina che stai per cancellare.",
 
 # Rollback
 'rollback' => 'Annulla le modifiche',
@@ -2738,7 +2739,7 @@ Consultare l'[[Special:BlockList|elenco dei blocchi]] per l'elenco dei bandi o b
 'range_block_disabled' => 'La possibilità di bloccare intervalli di indirizzi IP non è attiva al momento.',
 'ipb_expiry_invalid' => 'Durata o scadenza del blocco non valida.',
 'ipb_expiry_temp' => 'I blocchi dei nomi utenti nascosti dovrebbero essere infiniti',
-'ipb_hide_invalid' => "Impossibile cancellare l'account; potrebbe avere troppe modifiche.",
+'ipb_hide_invalid' => 'Impossibile sopprimere questa utenza; ha più di {{PLURAL:$1|una modifica|$1 modifiche}}.',
 'ipb_already_blocked' => 'L\'utente "$1" è già bloccato',
 'ipb-needreblock' => "L'utente $1 è già bloccato. Modificare le impostazioni?",
 'ipb-otherblocks-header' => '{{PLURAL:$1|Altro blocco|Altri blocchi}}',
index 47c488f..e20da5b 100644 (file)
@@ -1489,6 +1489,7 @@ $1",
 'search-result-score' => '関連度: $1%',
 'search-redirect' => '($1からのリダイレクト)',
 'search-section' => '($1の節)',
+'search-file-match' => '(ファイルの内容との一致)',
 'search-suggest' => 'もしかして: $1',
 'search-interwiki-caption' => '姉妹プロジェクト',
 'search-interwiki-default' => '$1の結果:',
@@ -2628,7 +2629,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'このページには、 $1版を超える編集履歴があります。
 削除すると、{{SITENAME}}のデータベース処理に大きな負荷がかかります。
 十分に注意してください。',
-'deleting-backlinks-warning' => "'''警告:''' 削除しようとしているページは、他のページからリンクされています。",
+'deleting-backlinks-warning' => "'''è­¦å\91\8a:''' å\89\8aé\99¤ã\81\97ã\82\88ã\81\86ã\81¨ã\81\97ã\81¦ã\81\84ã\82\8bã\83\9aã\83¼ã\82¸ã\81¯ã\80\81ä»\96ã\81®ã\83\9aã\83¼ã\82¸ã\81\8bã\82\89ã\83ªã\83³ã\82¯ã\81¾ã\81\9fã\81¯å\8f\82ç\85§èª­ã\81¿è¾¼ã\81¿ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ã\80\82",
 
 # Rollback
 'rollback' => '編集を巻き戻し',
@@ -2937,7 +2938,7 @@ $1 のブロックの理由は「''$2''」です。",
 'range_block_disabled' => '範囲ブロックを作成する管理者機能は無効化されています。',
 'ipb_expiry_invalid' => '有効期限が無効です。',
 'ipb_expiry_temp' => '利用者名秘匿のブロックは、無期限ブロックになります。',
-'ipb_hide_invalid' => 'このアカウントを秘匿できません。編集回数が非常に多いためだと思われます。',
+'ipb_hide_invalid' => 'このアカウントを秘匿できません。編集回数が{{PLURAL:$1|$1回}}を超えています。',
 'ipb_already_blocked' => '「$1」は既にブロックされています。',
 'ipb-needreblock' => '$1 は既にブロックされています。設定を変更しますか?',
 'ipb-otherblocks-header' => 'その他の{{PLURAL:$1|ブロック}}',
index 5676a99..1022534 100644 (file)
@@ -55,13 +55,13 @@ $namespaceAliases = array(
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'Bınê girey de xete bıonce:',
-'tog-justify' => 'Paragrafu ayar ke',
+'tog-underline' => 'Bınê gırey de xete bonce:',
+'tog-justify' => 'Paragrafu eyar ke',
 'tog-hideminor' => 'Vurnayisunê senıku pela vurnayisunê peyênu de wedare',
 'tog-hidepatrolled' => 'Vurnayisunê qontrolkerdu pela vurnayisê peyêni de wedare',
 'tog-newpageshidepatrolled' => 'Pelunê qontrolkerdu lista pelunê newu de wedare',
-'tog-extendwatchlist' => 'Lista şêrkerdene hira bıke ke vurnayişi pêro bıasê, teyna tewr peyêni nê',
-'tog-usenewrc' => 'Pele be vurnayisunê grube de vurnayisê peyêni u lista şêrkerdişi (JavaScript lazımo)',
+'tog-extendwatchlist' => 'Lista şêrkerdene hira bıke ke vurnayişi pêro basê, teyna tewr peyêni nê',
+'tog-usenewrc' => 'Vurnayisê ke pela vurnayisunê peyênun u lista şêrkerdişi derê inu grube ke.',
 'tog-numberheadings' => 'Sernustu be ho numra cı sane',
 'tog-showtoolbar' => 'Gozagunê hacetunê vurnayişi bıasne (JavaScript lazımo)',
 'tog-editondblclick' => 'Pê dı rey teqnayene pele sero bıguriye (JavaScript lazımo)',
index 31f4bd2..1120938 100644 (file)
@@ -1910,7 +1910,7 @@ $1',
 
 អ្នកគួរតែសាកល្បងនៅពេលដែលវិបសាយនេះមិនសូវរវល់។',
 
-'license' => 'á\9e¢á\9e¶á\9e\87á\9f\92á\9e\89á\9e¶á\9e\94á\9f\90á\9e\8eá\9f\92á\9e\8e',
+'license' => 'អាជ្ញាបណ្ណ',
 'license-header' => 'ការដាក់​អាជ្ញាប័ណ្ណ',
 'nolicense' => 'គ្មាន',
 'license-nopreview' => '(មិនទាន់មានការបង្ហាញការមើលជាមុនទេ)',
@@ -3248,8 +3248,8 @@ $1',
 'exif-copyrightowner' => 'ម្ចាស់កម្មសិទ្ធិបញ្ញា',
 'exif-usageterms' => 'លក្ខខណ្ឌប្រើប្រាស់',
 'exif-webstatement' => 'សេចក្ដីប្រកាសកម្មសិទ្ធបញ្ញាលើអ៊ីនធើណិត',
-'exif-licenseurl' => 'URL á\9e\9fá\9f\86á\9e\9aá\9e¶á\9e\94á\9f\8bá\9e¢á\9e¶á\9e\87á\9f\92á\9e\89á\9e¶á\9e\94á\9e\8eá\9f\92á\9e\8cá\9e\80á\9e\98á\9f\92á\9e\98á\9e\9fá\9e·á\9e\91á\9f\92á\9e\92បញ្ញា',
-'exif-morepermissionsurl' => 'ព័ត៌មានអាជ្ញាបណ្ឌជំនួស',
+'exif-licenseurl' => 'URL á\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bâ\80\8bá\9e¢á\9e¶á\9e\87á\9f\92á\9e\89á\9e¶á\9e\94á\9e\8eá\9f\92á\9e\8eâ\80\8bá\9e\80á\9e\98á\9f\92á\9e\98á\9e\9fá\9e·á\9e\91á\9f\92á\9e\92á\9e·â\80\8bបញ្ញា',
+'exif-morepermissionsurl' => 'ព័ត៌មាន​អាជ្ញាបណ្ណ​ជំនួស',
 'exif-attributionurl' => 'នៅពេលកែច្នៃស្នាដៃនេះយកទៅប្រើ សូមដាក់តំណភ្ជាប់ទៅ',
 'exif-preferredattributionname' => 'នៅពេលកែច្នៃស្នាដៃនេះយកទៅប្រើ សូមថ្លែងអំណរគុណដល់ម្ចាស់ដើម',
 'exif-pngfilecomment' => 'វិចារលើឯកសារ PNG',
@@ -3596,7 +3596,7 @@ $5
 'version-hook-name' => 'ឈ្មោះ​ Hook',
 'version-hook-subscribedby' => 'បានជាវ ជាប្រចាំ ដោយ',
 'version-version' => '(កំណែ $1)',
-'version-license' => 'អាជ្ញាបណ្ណ មេឌាវិគី',
+'version-license' => 'អាជ្ញាបណ្ណមេឌាវិគី',
 'version-ext-license' => 'អាជ្ញាបណ្ណ',
 'version-ext-colheader-version' => 'កំណែ',
 'version-ext-colheader-license' => 'អាជ្ញាបណ្ណ',
index 409f006..44c1efe 100644 (file)
@@ -369,26 +369,26 @@ $messages = array(
 'tog-hidepatrolled' => '최근 바뀜에서 검토한 편집을 숨기기',
 'tog-newpageshidepatrolled' => '새 문서 목록에서 검토한 문서를 숨기기',
 'tog-extendwatchlist' => '주시문서 목록에서 가장 최근의 편집만이 아닌 모든 편집을 보기',
-'tog-usenewrc' => 'ìµ\9cê·¼ ë°\94ë\80\9cê³¼ ì£¼ì\8b\9c문ì\84\9c ëª©ë¡\9dì\97\90ì\84\9c 문서별 그룹 바뀜',
-'tog-numberheadings' => '머릿글 번호 매기기',
+'tog-usenewrc' => 'ìµ\9cê·¼ ë°\94ë\80\9cê³¼ ì£¼ì\8b\9c문ì\84\9c ëª©ë¡\9dì\9d\98 문서별 그룹 바뀜',
+'tog-numberheadings' => '자동으로 머릿글 번호 매기기',
 'tog-showtoolbar' => '편집에 툴바 보이기',
 'tog-editondblclick' => '더블 클릭으로 문서 편집하기',
 'tog-editsection' => '[편집] 링크로 부분 편집하기',
 'tog-editsectiononrightclick' => '제목을 오른쪽 클릭해서 문단 편집하기 활성화',
 'tog-showtoc' => '문서의 목차 보여주기 (머릿글이 4개 이상인 경우)',
-'tog-rememberpassword' => '이 브라우저에서 로그인 상태를 저장하기 (최대 $1{{PLURAL:$1|일}})',
+'tog-rememberpassword' => '이 브라우저에 로그인 상태를 저장하기(최대 $1{{PLURAL:$1|일}})',
 'tog-watchcreations' => '내가 만드는 문서와 내가 올린 파일을 주시문서 목록에 추가',
 'tog-watchdefault' => '내가 편집하는 문서와 파일을 주시문서 목록에 추가',
 'tog-watchmoves' => '내가 이동하는 문서와 파일을 주시문서 목록에 추가',
 'tog-watchdeletion' => '내가 삭제하는 문서와 파일을 주시문서 목록에 추가',
-'tog-minordefault' => '사소한 편집을 기본적으로 선택하기',
-'tog-previewontop' => '편집 상자 앞에 미리 보기 보기',
-'tog-previewonfirst' => '처음 편집할 때 미리 보기 보기',
+'tog-minordefault' => '모든 편집에 기본적으로 사소한 편집을 표시',
+'tog-previewontop' => '편집 상자 앞에 미리 보기 보기',
+'tog-previewonfirst' => '처음 편집할 때 미리 보기 보기',
 'tog-enotifwatchlistpages' => '주시문서 목록에 속한 문서나 파일이 바뀌면 이메일로 알림',
 'tog-enotifusertalkpages' => '내 토론 문서가 바뀌면 이메일로 알림',
 'tog-enotifminoredits' => '문서나 파일의 사소한 편집도 이메일로 알림',
 'tog-enotifrevealaddr' => '알림 메일에 내 이메일 주소를 밝히기',
-'tog-shownumberswatching' => '주시 ì\82¬ì\9a©ì\9e\90 ì\88\98 ë³´ê¸°',
+'tog-shownumberswatching' => '주시í\95\98ë\8a\94 ì\82¬ì\9a©ì\9e\90 ì\88\98 ë³´ì\9d´ê¸°',
 'tog-oldsig' => '현재 서명:',
 'tog-fancysig' => '서명을 위키텍스트로 취급 (자동으로 링크를 걸지 않음)',
 'tog-uselivepreview' => '실시간 미리 보기 사용하기 (실험 기능)',
@@ -401,22 +401,22 @@ $messages = array(
 'tog-watchlisthidepatrolled' => '주시문서 목록에서 검토한 편집을 숨기기',
 'tog-ccmeonemails' => '이메일을 보낼 때 내 이메일로 복사본을 보내기',
 'tog-diffonly' => '편집 차이를 비교할 때 문서 내용을 보지 않기',
-'tog-showhiddencats' => '숨은 분류 보기',
+'tog-showhiddencats' => '숨은 분류 보기',
 'tog-noconvertlink' => '링크 제목 변환을 비활성화',
-'tog-norollbackdiff' => 'ë\90\98ë\8f\8c리기 í\9b\84 ì°¨ì\9d´ë¥¼ ë³´ì\9d´ì§\80 ì\95\8a기',
+'tog-norollbackdiff' => '되돌리기 후 차이를 보지 않기',
 'tog-useeditwarning' => '바꾼 내용을 저장하지 않고 편집 페이지를 벗어날 때 알림',
 'tog-prefershttps' => '로그인할 때 항상 보안 연결 사용',
 
 'underline-always' => '항상',
-'underline-never' => '치지 않음',
-'underline-default' => '스킨 또는 브라우저 설정을 따르기',
+'underline-never' => '항상 치지 않기',
+'underline-default' => '스킨 또는 브라우저 기본 값을 따르기',
 
 # Font style option in Special:Preferences
-'editfont-style' => '편집창의 글꼴:',
-'editfont-default' => '브라우저 설정을 따르기',
+'editfont-style' => '편집 창의 글꼴:',
+'editfont-default' => '브라우저 기본 값을 따르기',
 'editfont-monospace' => '고정폭 글꼴',
-'editfont-sansserif' => '산세리프ì²´',
-'editfont-serif' => '세리프ì²´',
+'editfont-sansserif' => '산세리프 ê¸\80ê¼´',
+'editfont-serif' => '세리프 ê¸\80ê¼´',
 
 # Dates
 'sunday' => '일요일',
@@ -499,7 +499,7 @@ $messages = array(
 'listingcontinuesabbrev' => '(계속)',
 'index-category' => '색인된 문서',
 'noindex-category' => '색인에서 제외되는 문서',
-'broken-file-category' => '잘못된 파일 링크가 포함된 문서',
+'broken-file-category' => '깨진 파일 링크가 포함된 문서',
 
 'about' => '소개',
 'article' => '본문',
@@ -509,7 +509,7 @@ $messages = array(
 'morenotlisted' => '이 목록은 완성되지 않았습니다.',
 'mypage' => '문서',
 'mytalk' => '토론',
-'anontalk' => '익명 사용자 토론',
+'anontalk' => '익명 사용자 토론',
 'navigation' => '둘러보기',
 'and' => ',',
 
@@ -562,8 +562,8 @@ $messages = array(
 'delete' => '삭제',
 'deletethispage' => '이 문서 삭제하기',
 'undeletethispage' => '이 문서를 되살리기',
-'undelete_short' => '{{PLURAL:$1|편집 $1개}} 되살리기',
-'viewdeleted_short' => '{{PLURAL:$1|삭제된 편집 $1개}} 보기',
+'undelete_short' => '{{PLURAL:$1|편집}} $1개 되살리기',
+'viewdeleted_short' => '{{PLURAL:$1|삭제된 편집}} $1개 보기',
 'protect' => '보호',
 'protect_change' => '보호 수준 바꾸기',
 'protectthispage' => '이 문서 보호하기',
@@ -596,13 +596,13 @@ $messages = array(
 'jumpto' => '이동:',
 'jumptonavigation' => '둘러보기',
 'jumptosearch' => '검색',
-'view-pool-error' => '서버가 과부하에 걸렸습니다.
+'view-pool-error' => '현재 서버에 과부하가 걸렸습니다.
 너무 많은 사용자가 이 문서를 보려고 하고 있습니다.
 이 문서를 다시 열기 전에 잠시만 기다려주세요.
 
 $1',
 'pool-timeout' => '잠금 대기 중 타임아웃',
-'pool-queuefull' => '풀 큐가 가득 찼습니다',
+'pool-queuefull' => '풀 대기열이 가득 찼습니다',
 'pool-errorunknown' => '알 수 없는 오류',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
@@ -625,8 +625,8 @@ $1',
 'privacypage' => 'Project:개인 정보 정책',
 
 'badaccess' => '권한 오류',
-'badaccess-group0' => 'ì\9a\94ì²­í\95\9c ë\8f\99ì\9e\91을 실행할 권한이 없습니다.',
-'badaccess-groups' => 'ì\9a\94ì²­í\95\9c ë\8f\99ì\9e\91은 {{PLURAL:$2|다음|다음 중 하나의}} 권한을 가진 사용자에게만 가능합니다: $1',
+'badaccess-group0' => 'ì\9a\94ì²­í\95\9c ëª\85ë ¹을 실행할 권한이 없습니다.',
+'badaccess-groups' => 'ì\9a\94ì²­í\95\9c ëª\85ë ¹은 {{PLURAL:$2|다음|다음 중 하나의}} 권한을 가진 사용자에게만 가능합니다: $1',
 
 'versionrequired' => '미디어위키 $1 버전 필요',
 'versionrequiredtext' => '이 문서를 사용하려면 $1 버전 미디어위키가 필요합니다.
@@ -634,9 +634,9 @@ $1',
 
 'ok' => '확인',
 'retrievedfrom' => '원본 주소 "$1"',
-'youhavenewmessages' => '다른 사용자가 남긴 $1가 있습니다. ($2)',
-'youhavenewmessagesfromusers' => '{{PLURAL:$3|다른 사용자가|사용자 $3명이}} 남긴 $1가 있습니다. ($2)',
-'youhavenewmessagesmanyusers' => '여러 사용자가 남긴 $1가 있습니다. ($2)',
+'youhavenewmessages' => '다른 사용자가 $1를 {{PLURAL:$3|남겼습니다}}. ($2)',
+'youhavenewmessagesfromusers' => '{{PLURAL:$3|다른 사용자가|사용자 $3명이}} $1를 {{PLURAL:$4|남겼습니다}}. ($2)',
+'youhavenewmessagesmanyusers' => '여러 사용자가 $1를 남겼습니다. ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|새 메시지}}',
 'newmessagesdifflinkplural' => '마지막으로 {{PLURAL:$1|바뀐 내용}}',
 'youhavenewmessagesmulti' => '다른 사용자가 $1에 남긴 새 메시지가 있습니다',
@@ -653,10 +653,10 @@ $1',
 'collapsible-expand' => '펼치기',
 'thisisdeleted' => '$1 문서를 보거나 되살리겠습니까?',
 'viewdeleted' => '$1 문서를 보겠습니까?',
-'restorelink' => '{{PLURAL:$1|삭제된 편집 $1개}}',
+'restorelink' => '{{PLURAL:$1|삭제된 편집}} $1개',
 'feedlinks' => '피드:',
 'feed-invalid' => '잘못된 구독 피드 방식입니다.',
-'feed-unavailable' => 'í\94¼ë\93\9c ì\84\9cë¹\84ì\8a¤ë\8a\94 ì \9cê³µí\95\98ì§\80 ì\95\8a습니다',
+'feed-unavailable' => 'í\94¼ë\93\9c ì\84\9cë¹\84ì\8a¤ë¥¼ ì\82¬ì\9a©í\95  ì\88\98 ì\97\86습니다',
 'site-rss-feed' => '$1 RSS 피드',
 'site-atom-feed' => '$1 Atom 피드',
 'page-rss-feed' => '"$1" RSS 피드',
@@ -678,8 +678,8 @@ $1',
 'nstab-category' => '분류',
 
 # Main script and global functions
-'nosuchaction' => 'í\95´ë\8b¹í\95\98ë\8a\94 ë\8f\99ì\9e\91이 없습니다.',
-'nosuchactiontext' => 'URL로 요청한 동작이 잘못되었습니다.
+'nosuchaction' => 'í\95´ë\8b¹í\95\98ë\8a\94 ëª\85ë ¹이 없습니다.',
+'nosuchactiontext' => 'URL이 지정한 명령이 잘못되었습니다.
 URL을 잘못 입력하였거나, 잘못된 링크를 따라갔을 수 있습니다.
 {{SITENAME}}의 버그일 수도 있습니다.',
 'nosuchspecialpage' => '해당하는 특수 문서가 없습니다.',
@@ -691,12 +691,12 @@ URL을 잘못 입력하였거나, 잘못된 링크를 따라갔을 수 있습니
 'error' => '오류',
 'databaseerror' => '데이터베이스 오류',
 'databaseerror-text' => '데이터베이스 쿼리에 오류가 발생했습니다.
\86\8cí\94\84í\8a¸ì\9b¨ì\96´ì\9d\98 버그가 있을 수 있습니다.',
\86\8cí\94\84í\8a¸ì\9b¨ì\96´ì\97\90 버그가 있을 수 있습니다.',
 'databaseerror-textcl' => '데이터베이스 쿼리에 오류가 발생했습니다.',
 'databaseerror-query' => '쿼리: $1',
 'databaseerror-function' => '함수: $1',
 'databaseerror-error' => '오류: $1',
-'laggedslavemode' => "'''경고:''' ë¬¸ì\84\9cê°\80 ìµ\9cê·¼ì\97\90 ë°\94ë\80\90 ë\82´ì\9a©ì\9d´ ì\95\84ë\8b\90 수도 있습니다.",
+'laggedslavemode' => "'''경고:''' ë¬¸ì\84\9cê°\80 ìµ\9cê·¼ì\97\90 ë°\94ë\80\90 ë\82´ì\9a©ì\9d\84 í\8f¬í\95¨í\95\98ì§\80 ì\95\8aì\9d\84 수도 있습니다.",
 'readonly' => '데이터베이스 잠김',
 'enterlockreason' => '데이터베이스를 잠그는 이유와 예상되는 기간을 적어 주세요.',
 'readonlytext' => '데이터베이스가 잠겨 있어서 문서를 편집할 수 없습니다. 데이터베이스 관리가 끝난 후에는 정상으로 돌아올 것입니다.
@@ -713,17 +713,17 @@ URL을 잘못 입력하였거나, 잘못된 링크를 따라갔을 수 있습니
 'readonly_lag' => '슬레이브 데이터베이스가 마스터 서버의 자료를 새로 고치는 중입니다. 데이터베이스가 자동으로 잠겨 있습니다.',
 'internalerror' => '내부 오류',
 'internalerror_info' => '내부 오류: $1',
-'fileappenderrorread' => 'ë\82´ì\9a©ì\9d\84 ë\8d§ë¶\99ì\9d´ë\8b¤ê°\80 "$1" í\8c\8cì\9d¼ì\9d\84 ì\9d½ì\9d\84 ì\88\98 ì\97\86습니다.',
+'fileappenderrorread' => 'ë\82´ì\9a©ì\9d\84 ë\8d§ë¶\99ì\9d´ë\8a\94 ë\8f\84ì¤\91 "$1" í\8c\8cì\9d¼ì\9d\84 ì\9d½ì\9d\84 ì\88\98 ì\97\86ì\97\88습니다.',
 'fileappenderror' => '"$1" 파일을 "$2"에 덧붙일 수 없습니다.',
 'filecopyerror' => '"$1" 파일을 "$2"로 복사할 수 없습니다.',
 'filerenameerror' => '"$1" 파일을 "$2"로 옮길 수 없습니다.',
 'filedeleteerror' => '"$1" 파일을 삭제할 수 없습니다.',
 'directorycreateerror' => '"$1" 디렉터리를 만들 수 없습니다.',
 'filenotfound' => '"$1" 파일을 찾을 수 없습니다.',
-'fileexistserror' => '"$1" 파일이 이미 있어 여기에 쓸 수 없습니다.',
-'unexpected' => '예상되지 않은 값: "$1"="$2"',
+'fileexistserror' => '"$1" 파일이 이미 있어 쓸 수 없습니다.',
+'unexpected' => '예기치 못한 값: "$1"="$2"',
 'formerror' => '오류: 양식을 제출할 수 없습니다.',
-'badarticleerror' => '지금의 명령은 이 문서에서는 실행할 수 없습니다.',
+'badarticleerror' => '해당 명령은 이 문서에서 실행할 수 없습니다.',
 'cannotdelete' => '"$1" 문서나 파일을 삭제할 수 없습니다.
 이미 삭제되었을 수도 있습니다.',
 'cannotdelete-title' => '"$1" 문서를 삭제할 수 없습니다.',
@@ -768,19 +768,19 @@ $2',
 'invalidtitle-knownnamespace' => '제목 오류: "$2" 이름공간과 "$3" 텍스트',
 'invalidtitle-unknownnamespace' => '제목 오류: 알 수 없는 $1 이름공간 번호와, "$2" 텍스트',
 'exception-nologin' => '로그인하지 않음',
-'exception-nologin-text' => '이 행동을 하거나 이 문서에 접근하려면 [[Special:Userlogin|로그인]]하십시오.',
-'exception-nologin-text-manual' => '이 문서에 접근하거나 이 행동을 하려면 $1하십시오.',
+'exception-nologin-text' => '이 문서에 접근하거나 이 명령을 수행하려면 [[Special:Userlogin|로그인]]하세요.',
+'exception-nologin-text-manual' => '이 문서에 접근하거나 이 명령을 수행하려면 $1하세요.',
 
 # Virus scanner
 'virus-badscanner' => "잘못된 설정: 알 수 없는 바이러스 검사기: '''$1'''",
 'virus-scanfailed' => '검사 실패 (코드 $1)',
-'virus-unknownscanner' => '알려지지 않은 백신:',
+'virus-unknownscanner' => '알 수 없는 백신 소프트웨어:',
 
 # Login and logout pages
 'logouttext' => "'''지금 로그아웃했습니다.'''
 
-브라우저 캐시를 지우지 않으면 일부 문서에서 로그인이 되어 있는 것처럼 보일 수 있다는 점을 참고하세요.",
-'welcomeuser' => '$1, 환영합니다!',
+브라우저 캐시를 지우지 않으면 일부 문서에서 로그인이 되어 있는 것처럼 보일 수 있습니다.",
+'welcomeuser' => '$1 님, 환영합니다!',
 'welcomecreation-msg' => '계정이 만들어졌습니다.
 [[Special:Preferences|{{SITENAME}} 사용자 환경 설정]]을 바꿀 수 있습니다.',
 'yourname' => '사용자 이름:',
@@ -819,7 +819,7 @@ $2',
 'userlogin-resetpassword-link' => '비밀번호를 잊으셨나요?',
 'helplogin-url' => 'Help:로그인',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|로그인에 관한 도움말]]',
-'userlogin-loggedin' => 'ì\9d´ë¯¸ $1ë¡\9c ë¡\9cê·¸ì\9d¸ë\90\98ì\96´ ì\9e\88ì\8aµë\8b\88ë\8b¤. ì\95\84ë\9e\98ì\9d\98 ì\96\91ì\8b\9dì\9c¼ë¡\9c 다른 계정으로 로그인하세요.',
+'userlogin-loggedin' => 'ì\9d´ë¯¸ $1ë¡\9c ë¡\9cê·¸ì\9d¸ë\90\98ì\96´ ì\9e\88ì\8aµë\8b\88ë\8b¤. ì\95\84ë\9e\98ì\9d\98 ì\96\91ì\8b\9dì\9d\84 ì\82¬ì\9a©í\95\98ì\97¬ 다른 계정으로 로그인하세요.',
 'userlogin-createanother' => '다른 계정 만들기',
 'createacct-join' => '아래에 정보를 입력하세요.',
 'createacct-another-join' => '아래에 새 계정의 정보를 입력하세요.',
@@ -837,8 +837,8 @@ $2',
 'createacct-submit' => '계정 만들기',
 'createacct-another-submit' => '다른 계정 만들기',
 'createacct-benefit-heading' => '{{SITENAME}}(은)는 여러분과 같은 사람으로 이루어집니다.',
-'createacct-benefit-body1' => '{{PLURAL:$1|편집 수}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|문서 수}}',
+'createacct-benefit-body1' => '{{PLURAL:$1|편집}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|문서}}',
 'createacct-benefit-body3' => '최근 {{PLURAL:$1|기여자}}',
 'badretype' => '입력한 비밀번호가 일치하지 않습니다.',
 'userexists' => '입력하신 사용자 이름이 이미 등록되어 있습니다.
@@ -1472,6 +1472,7 @@ $1",
 'search-result-score' => '유사도: $1%',
 'search-redirect' => '($1에서 넘어옴)',
 'search-section' => '($1 문단)',
+'search-file-match' => '(내용이 일치하는 파일 있음)',
 'search-suggest' => '$1 문서를 찾고 있으신가요?',
 'search-interwiki-caption' => '자매 프로젝트',
 'search-interwiki-default' => '$1 결과:',
@@ -1503,7 +1504,7 @@ $1",
 'prefsnologintext2' => '사용자 환경 설정을 설정하려면 $1하십시오.',
 'prefs-skin' => '스킨',
 'skin-preview' => '미리 보기',
-'datedefault' => '기본값',
+'datedefault' => '기본 값',
 'prefs-beta' => '베타 기능',
 'prefs-datetime' => '날짜와 시각',
 'prefs-labs' => '실험 중인 기능',
@@ -1540,7 +1541,7 @@ $1",
 'savedprefs' => '설정을 저장했습니다.',
 'timezonelegend' => '시간대:',
 'localtime' => '현지 시각:',
-'timezoneuseserverdefault' => '위키 기본값($1)을 사용',
+'timezoneuseserverdefault' => '위키 기본 값($1)을 사용',
 'timezoneuseoffset' => '기타 (시차를 입력해주세요)',
 'servertime' => '서버 시각:',
 'guesstimezone' => '웹 브라우저 설정에서 가져오기',
@@ -1558,7 +1559,7 @@ $1",
 'prefs-searchoptions' => '검색',
 'prefs-namespaces' => '이름공간',
 'defaultns' => '다음 이름공간에서 검색:',
-'default' => '기본값',
+'default' => '기본 값',
 'prefs-files' => '파일',
 'prefs-custom-css' => '사용자 CSS',
 'prefs-custom-js' => '사용자 자바스크립트',
@@ -2600,7 +2601,7 @@ $UNWATCHURL
 'delete-warning-toobig' => '이 문서에는 {{PLURAL:$1|편집 역사}}가 $1개 있습니다.
 편집 역사가 긴 문서를 삭제하면 {{SITENAME}} 데이터베이스 동작에 큰 영향을 줄 수 있습니다.
 주의해 주세요.',
-'deleting-backlinks-warning' => "'''경고:''' ì\82­ì \9cí\95\98ë ¤ë\8a\94 ë¬¸ì\84\9cë¡\9cì\9d\98 ë§\81í\81¬ë¥¼ ê°\80ì§\84 ë\8b¤ë¥¸ ë¬¸ì\84\9cê°\80 있습니다.",
+'deleting-backlinks-warning' => "'''경고:''' ì\82­ì \9cí\95\98ë ¤ë\8a\94 ë¬¸ì\84\9cë\8a\94 ë\8b¤ë¥¸ ë¬¸ì\84\9cì\97\90 ì\97°ê²°ë\90\98ê±°ë\82\98 ì\82½ì\9e\85ë\90\98ì\96´ 있습니다.",
 
 # Rollback
 'rollback' => '편집 되돌리기',
@@ -2908,7 +2909,7 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 'range_block_disabled' => 'IP 범위 차단 기능이 비활성화되어 있습니다.',
 'ipb_expiry_invalid' => '차단 기간이 잘못되었습니다.',
 'ipb_expiry_temp' => '사용자 이름을 숨기는 차단은 반드시 무기한이어야 합니다.',
-'ipb_hide_invalid' => '해당 계정은 막을 수 없습니다. 기여량이 너무 많습니다.',
+'ipb_hide_invalid' => '해당 계정은 막을 수 없습니다. {{PLURAL:$1|1회|$1회}} 이상 편집했습니다.',
 'ipb_already_blocked' => '"$1" 사용자는 이미 차단되었습니다',
 'ipb-needreblock' => '$1 사용자는 이미 차단되었습니다. 차단 설정을 바꾸시겠습니까?',
 'ipb-otherblocks-header' => '다른 {{PLURAL:$1|차단}} 기록',
index 76c998e..249fe27 100644 (file)
@@ -369,7 +369,7 @@ $messages = array(
 'history' => 'La istoria de la hoja',
 'history_short' => 'Istoria',
 'updatedmarker' => 'trocado desde mi visita de alcavo',
-'printableversion' => 'Forma apropiada para imprimir',
+'printableversion' => 'La forma parâ imprimir',
 'permalink' => 'Atamiento permanente',
 'print' => 'Imprimir',
 'view' => 'Ver',
@@ -396,7 +396,7 @@ $messages = array(
 'articlepage' => 'Ver el artícůlo de contenido',
 'talk' => 'Diskusyón',
 'views' => 'Vistas',
-'toolbox' => 'Aparatos',
+'toolbox' => 'Aparates',
 'userpage' => 'Ver la hoja del usador',
 'projectpage' => 'Ver la hoja del projeto',
 'imagepage' => 'Ver la hoja de la dosya',
@@ -408,7 +408,7 @@ $messages = array(
 'otherlanguages' => 'En otras linguas',
 'redirectedfrom' => '(Redirigido desde $1)',
 'redirectpagesub' => 'Hoja redirigida',
-'lastmodifiedat' => 'Esta hoja fue trocada por la dal cavo vez el $1, a las $2.',
+'lastmodifiedat' => 'Esta hoja fue trocada por la vez dalcavo en el $1, a las $2.',
 'viewcount' => 'Este pajina fue vijitado {{PLURAL:$1|una vez|$1 vezes}}.',
 'protectedpage' => 'Hoja guardada',
 'jumpto' => 'Saltar a:',
@@ -431,7 +431,7 @@ $1',
 'currentevents' => 'Novedades',
 'currentevents-url' => 'Project:Novedades',
 'disclaimers' => 'Refuzo de responsabilitá',
-'disclaimerpage' => 'Project:Refuso de responsabilitá jeneral',
+'disclaimerpage' => 'Project:Refuzo de responsabilitá jeneral',
 'edithelp' => '¿Cómo se la troca?',
 'helppage' => 'Help:Contènidos',
 'mainpage' => 'La Primera Hoja',
@@ -440,7 +440,7 @@ $1',
 'portal' => 'Portal de la komunitá',
 'portal-url' => 'Project:Portal de la komunitá',
 'privacy' => 'Prencipio de partikolaridad',
-'privacypage' => 'Project:Principio de particòlaridad',
+'privacypage' => 'Project:Prencipio de partikolaridad',
 
 'badaccess' => 'Yerro de permissión',
 'badaccess-group0' => 'No estas autorizado a egzekutir el aksyon que a demandado.',
@@ -450,7 +450,7 @@ $1',
 'versionrequiredtext' => 'Se nesesita versyon $1 de MediaWiki para uzar este pajina. Ver [[Special:Version|La pajina de versyon]].',
 
 'ok' => 'DE ACORDDO',
-'retrievedfrom' => 'Acòjido del adhresso "$1"',
+'retrievedfrom' => 'Acòjido del adresso "$1"',
 'youhavenewmessages' => '{{PLURAL:$3|Tienes}} $1 ($2).',
 'youhavenewmessagesfromusers' => '{{PLURAL:$4|Tiene}} $1 de {{PLURAL:$3|otro usuario|$3 usuarios}}($2).',
 'youhavenewmessagesmanyusers' => 'Tiene $1 de munchos usuarios ($2).',
@@ -475,7 +475,7 @@ $1',
 'feed-invalid' => 'Tipo de kanal de subskripsyon es invalido.',
 'feed-unavailable' => 'Kanales de subskripsyon no estan disponibles',
 'site-rss-feed' => 'Fuente de RSS de $1',
-'site-atom-feed' => 'Kanal Atom de $1',
+'site-atom-feed' => 'Canal Atomo de $1',
 'page-rss-feed' => '"$1" Fuente RSS',
 'page-atom-feed' => '"$1" Subscripción Atom',
 'red-link-title' => '$1 (la hoja no egziste)',
@@ -519,12 +519,12 @@ Esto puede indikar un yerro en la programa.',
 'readonlytext' => 'La base de datos esta blokeada a muevas entradas i otras modifikasyones,probablemente para mantenemento rutinas, Kuando akava se enkontra dispozible.
 
 El administrador ke blokeo dio esta esplikasyon: $1',
-'missing-article' => 'La basa de dados no topó el teksto de la hoja llamada "$1" $2.
+'missing-article' => 'La basa de dados no topó el teksto de una hoja llamada "$1" $2.
 
-En lo mas muncho, esto se cavsa de un "dif" anakróniko u de un atamiento de la istoria de una hoja que se efaçó.
+En lo mas muncho esto passa por cavsa de un atamiento (link) istoriko a una hoja efaçada.
 
-Si esto no es el cavso, puede ser que topates una chincha en el lojikal.
-Alora, avisa un [[Special:ListUsers/sysop|administrador]] si puede ser, también escriviéndolo la URL.',
+Si esto no es el cavso, puede ser que topates una chincha (un yerro) en el lojikal (la proǵrama).
+Alora, házemos el plazer de avisar un [[Special:ListUsers/sysop|administrador]] y también escrivirlo la URL (el adresso). Mercí muncho.',
 'missingarticle-rev' => '(nº. de revisión: $1)',
 'missingarticle-diff' => '(Dif.: $1, $2)',
 'readonly_lag' => 'La base de datos se a blokeado mientres los servidores se sinkronizan',
@@ -587,7 +587,7 @@ Para anyadir o kambiar traduksyones para todos los vikis, uza [//translatewiki.n
 'yourdomainname' => 'Tu dominyo:',
 'password-change-forbidden' => 'No se puede kambiar contrasenyas en este viki.',
 'login' => 'Entrar',
-'nav-login-createaccount' => 'Entrar / criar un kuento',
+'nav-login-createaccount' => 'Entrar / criar un cuento',
 'loginprompt' => 'Kale tener "cookies" aktivadas enel navegador para enrejistrarse en {{SITENAME}}',
 'userlogin' => 'Entrar / Criar cuento',
 'logout' => 'Salir',
@@ -833,7 +833,7 @@ Leyenda: (act) = diferencias con la versión actual,
 'searchprofile-articles-tooltip' => 'Buxcar en $1',
 'searchprofile-project-tooltip' => 'Buxcar en $1',
 'searchprofile-images-tooltip' => 'Buxcar dosyas',
-'searchprofile-everything-tooltip' => 'Bushkar en todo el kontenido (i mismo en las hojas de diskusyón)',
+'searchprofile-everything-tooltip' => 'Buxca en todo el contènido (y mismo en las hojas de diskusyón)',
 'searchprofile-advanced-tooltip' => 'Buxcar en espacios de nombres particòlares',
 'search-result-size' => '$1 ({{PLURAL:$2|1 biervo|$2 biervos}})',
 'search-result-category-size' => '{{PLURAL:$1|1 miembro|$1 miembros}} ({{PLURAL:$2|1 basho-kateggoria|$2 basho-kateggoria}}, {{PLURAL:$3|1 dossia|$3 dossias}})',
@@ -985,7 +985,7 @@ Leyenda: (act) = diferencias con la versión actual,
 # Recent changes linked
 'recentchangeslinked' => 'Trocamientos conectados',
 'recentchangeslinked-feed' => 'Trocamientos conectados',
-'recentchangeslinked-toolbox' => 'Trocamientos relatados',
+'recentchangeslinked-toolbox' => 'Trocamientos atados',
 'recentchangeslinked-title' => 'Los trocamientos relacionados con "$1"',
 'recentchangeslinked-summary' => "Esto es la lista de los trocamientos dalcavo de las hojas que relatan a una hoja particòlar (o de los miembros de la kategoría particòlar).
 Las hojas en tu [[Special:Watchlist|lista de akavidamiento]] son '''reforçadas'''.",
@@ -1211,7 +1211,7 @@ Mira $2 para un registro de los efassados nuevos.',
 ** Redireksyon rota',
 
 # Rollback
-'rollbacklink' => 'aboltar',
+'rollbacklink' => 'hazer aboltar',
 
 # Protect
 'protectlogpage' => 'Protecciones de las hojas',
@@ -1253,7 +1253,7 @@ A continuación se mostran las opciones actuales de la hoja '''$1''':",
 # Namespace form on various pages
 'namespace' => 'Espacio de nombres:',
 'invert' => 'Invertir selección',
-'blanknamespace' => '(Principal)',
+'blanknamespace' => '(Prencipal)',
 
 # Contributions
 'contributions' => 'Ajustamientos {{GENDER:$1|del kullaneador|de la kullaneadera}}',
@@ -1364,7 +1364,7 @@ Si puede ser, escoge otro nombre.',
 'allmessages-filter-submit' => 'Ir',
 
 # Thumbnails
-'thumbnail-more' => 'Engrandece',
+'thumbnail-more' => 'Engrandecer',
 'thumbnail_error' => 'Yerro kriando la minyatura: $1',
 
 # Special:Import
@@ -1381,11 +1381,11 @@ Si puede ser, escoge otro nombre.',
 'tooltip-pt-login' => 'Te encorajamos de entrar ma no estás obligado',
 'tooltip-pt-logout' => 'Sal de tu cuento',
 'tooltip-ca-talk' => 'Diskusyón encima del artíkolo',
-'tooltip-ca-edit' => 'Puedes trocar esta hoja. Te rogamos, antes de enrejistrarla, echa una ojada en kullaneando el botón de previsteo',
+'tooltip-ca-edit' => 'Puedes trocar esta hoja. Ma te rogamos para que eches una ojada (previsteo) antes de enrezhistrarla.',
 'tooltip-ca-addsection' => 'Empeça a un muevo kapítolo',
 'tooltip-ca-viewsource' => 'Esta hoja está guadrada.
 Puedes ver su manadero',
-'tooltip-ca-history' => 'Enderechamientos passados de esta hoja',
+'tooltip-ca-history' => 'Enderechamientos passados desta hoja',
 'tooltip-ca-protect' => 'Guardar esta hoja',
 'tooltip-ca-delete' => 'Efassar esta hoja',
 'tooltip-ca-move' => 'Taxirea (renombra) esta hoja',
@@ -1395,24 +1395,24 @@ Puedes ver su manadero',
 'tooltip-search-go' => 'Ir a la hoja con este nombre egzakto, si egziste.',
 'tooltip-search-fulltext' => 'Buxca este teksto en las hojas',
 'tooltip-p-logo' => 'Vijita la primera hoja',
-'tooltip-n-mainpage' => 'Vijitar la primera hoja',
-'tooltip-n-mainpage-description' => 'Vijitar la primera hoja',
+'tooltip-n-mainpage' => 'Vijita la primera hoja',
+'tooltip-n-mainpage-description' => 'Vijita la primera hoja',
 'tooltip-n-portal' => 'Encima del projeto, lo que puedes hazer y ande topar todo',
-'tooltip-n-currentevents' => 'Jhaberes y acontècimientos de oy día',
+'tooltip-n-currentevents' => 'Jhaberes de oy día en ancho',
 'tooltip-n-recentchanges' => 'Lista de los trocamientos dalcavo en el viki',
 'tooltip-n-randompage' => 'Carga una hoja por azardo',
 'tooltip-n-help' => 'Ambézate y topa ayudo',
 'tooltip-t-whatlinkshere' => 'Una lista de todas las hojas del viki que tienen atamientos a esta hoja',
-'tooltip-t-recentchangeslinked' => 'Los trocamientos muevos en las hojas atadas con esta hoja',
+'tooltip-t-recentchangeslinked' => 'Los trocamientos dalcavo de las hojas atadas a ésta',
 'tooltip-feed-rss' => 'Sindicación RSS de esta hoja',
 'tooltip-feed-atom' => "Fuente de Atom d'esta hoja",
 'tooltip-t-contributions' => 'Ver la lista de ajustamientos de este usuario',
 'tooltip-t-emailuser' => 'A este usuario, mándale una letra electrόnica (ímey)',
 'tooltip-t-upload' => 'Suve dosyas',
 'tooltip-t-specialpages' => 'Lista de todas las hojas especiales',
-'tooltip-t-print' => 'Forma apropiada para imprimir esta hoja',
-'tooltip-t-permalink' => 'Atamiento permanente a este enderechamiento de la hoja',
-'tooltip-ca-nstab-main' => 'Ve el artíkolo de contènido',
+'tooltip-t-print' => 'La forma apropiada parâ imprimir esta hoja',
+'tooltip-t-permalink' => 'Atamiento permanente (fikso) a este enderechamiento de la hoja',
+'tooltip-ca-nstab-main' => 'Ve el artíkolo',
 'tooltip-ca-nstab-user' => 'Ver la pajina de usuario',
 'tooltip-ca-nstab-special' => 'Esta es una hoja especial, la hoja ya no se puede trocar',
 'tooltip-ca-nstab-project' => 'Ver la hoja del prodjekto',
@@ -1425,8 +1425,8 @@ Puedes ver su manadero',
 'tooltip-diff' => 'Mostra los trocamientos que él/ella hizo en el texhto.',
 'tooltip-compareselectedversions' => 'Ve las diferencias entre las dos versiones escogidas de esta hoja.',
 'tooltip-watch' => 'Ajusta esta hoja a tu lista de escojidas',
-'tooltip-rollback' => '«Abolta» abolta todos los trocamientos del kullaneador dalcavo, sólo en klikando una vez.',
-'tooltip-undo' => '«Des-hazer» abolta este trocamiento y la avre en el modo de previsteo. Permete ajustar una razón en el somario.',
+'tooltip-rollback' => '«Hazer aboltar» haze aboltar todos los trocamientos del usador dalcavo, sólo en klikando una vez.',
+'tooltip-undo' => '«Des-hazer» abolta este trocamiento y lo avre en el modo de previsteo. Permete ajustar una razón en el somario.',
 'tooltip-summary' => 'Entrar un somaryo kurto',
 
 # Attribution
index 540d1b0..46b5ee0 100644 (file)
@@ -1020,6 +1020,7 @@ Si gouf anscheinend geläscht.",
 'content-not-allowed-here' => '"$1"-Inhalt ass op der Säit [[$2]] net erlaabt',
 'editwarning-warning' => 'Wann Dir dës Säit verloosst kann dat dozou féieren datt Dir all Ännerungen, déi Dir gemaach hutt, verléiert.
 Wann Dir ageloggt sidd, kënnt Dir dës Warnung an der Sektioun "Änneren" vun Ären Astellungen ausschalten.',
+'editpage-notsupportedcontentformat-title' => 'Format vum Inhalt gëtt net ënnerstëtzt',
 'editpage-notsupportedcontentformat-text' => 'De Format vum Inhalt $1 gëtt net vum Modell vum Inhalt $2 ënnerstëtzt.',
 
 # Content models
@@ -2359,7 +2360,7 @@ D'Läsche vu sou Säite gouf limitéiert fir ongewollte Stéierungen op {{SITENA
 'delete-warning-toobig' => "Dës Säit huet eng laang Versiounsgeschicht, méi wéi $1 {{PLURAL:$1|Versioun|Versiounen}}.
 D'Läschen dovu kann zu Stéierungen am Fonctionnement vun {{SITENAME}} féieren;
 dës Aktioun soll mat Virsiicht gemaach ginn.",
-'deleting-backlinks-warning' => "'''Opgepasst:''' Aner Säite linken op d'Säit déi Dir am Gaang sidd ze läschen.",
+'deleting-backlinks-warning' => "'''Opgepasst:''' Aner Säite linken op déi Säit déi Dir am Gaang sidd ze läschen oder déi säit Déi Dir am Gaang sidd ze läschen ass an aner Säiten agebonn.",
 
 # Rollback
 'rollback' => 'Ännerungen zrécksetzen',
@@ -2655,7 +2656,7 @@ Kuckt d'[[Special:BlockList|Spärlëscht]] fir déi aktuell Spären.",
 'range_block_disabled' => 'Dem Administrateur seng Fähegkeet fir ganz Adressberäicher ze spären ass ausser Kraaft.',
 'ipb_expiry_invalid' => "D'Dauer déi Dir uginn hutt ass ongülteg.",
 'ipb_expiry_temp' => 'Verstoppt Späre vu Benotzernimm solle permanent sinn.',
-'ipb_hide_invalid' => 'Dëse Benotzerkont kann net geläscht ginn; et ka sinn datt zevill Ännerunge vun deem Benotzer gemaach goufen.',
+'ipb_hide_invalid' => 'Dëse Benotzerkont kann net geläscht ginn; de Benotzer huet méi wéi {{PLURAL:$1|eng Ännerung|$1 Ännerunge}} gemaach.',
 'ipb_already_blocked' => '"$1" ass scho gespaart.',
 'ipb-needreblock' => "$1 ass scho gespaart. Wëllt Dir d'Parametere vun der Spär änneren?",
 'ipb-otherblocks-header' => 'Aner  {{PLURAL:$1|Spär|Spären}}',
index 3d38cf9..be72ea4 100644 (file)
@@ -146,7 +146,7 @@ $messages = array(
 'category-article-count' => '{{جمی:$2|ای دسه شومل بلگه نهاییه .| {{جمی:$1| بلگه هئ|$1 بلگیا هئن}} د ای دسه, خارج د $2 کل.}}',
 'category-article-count-limited' => 'نها {{جمی:$1|بلگه هئ|$1بلگیا هئن}} د دسه ایسنی .',
 'category-file-count' => '{{جمی:$2|ای دسه فقط شامل فایل نهایی هئ file.| نهایی {{جمی:$1|فایل هئ|$1 فایلیا هئن}} د ای دسه, وه در د کل $2 .}}',
-'category-file-count-limited' => ' {{جمی:$1|فایل هئ|1$فایلیا هئن}}نهایی هان د دسه ایسنی.',
+'category-file-count-limited' => ' {{جمی:$1|[جانیا هئ|1$جانیایا هئن}}نهایی هان د دسه ایسنی.',
 'listingcontinuesabbrev' => 'دماله',
 'index-category' => 'بلگيا سيائه دار',
 'noindex-category' => 'بلگيا بی سيائه',
@@ -637,6 +637,7 @@ $1 لطفن سی تلاش هنی صبر بکید',
 پاک بیئن و جمشت سی ای بلگه سی راحتی تو فراهم بیه:",
 'moveddeleted-notice' => 'ای بلگه پاک بیه.
 پاک بین و جمشت ای بلگه سی سرچشمه دئین فراهم بیه',
+'log-fulllog' => 'دیئن همه پهرستنومه یا',
 'edit-conflict' => 'مخالفت نه ویرایشت بکید',
 'postedit-confirmation' => 'ویرایشتتو ذخیره بی',
 'edit-already-exists' => 'نبوئه یه گل بلگه تازه راس بکید.
@@ -700,6 +701,7 @@ $2',
 # Revision deletion
 'rev-deleted-comment' => '(ویرایشت چکسته جا وه جا بیه)',
 'rev-deleted-user' => '(نوم کاروری جا وه جا بیه)',
+'rev-deleted-event' => '(انجوم گر پهرستنومه جا وه جا بیه)',
 'rev-deleted-user-contribs' => '[نوم کاروری یا نشونی آی پی جا وه جا بیه - چیا قام بیه د ور هوم یاریانه ویرایشت بکید]',
 'rev-delundel' => 'آلشت وضئيت ديئن',
 'rev-showdeleted' => 'نشو دائن',
@@ -750,6 +752,7 @@ $2',
 'mergehistory-reason' => 'دليل:',
 
 # Merge log
+'mergelog' => 'سریک سازی پهرستنومه',
 'pagemerge-logentry' => ' [[$1]] وا [[$2]] سریک سازی بی (وانیریا که د $3 فره تر هئن)',
 'revertmerge' => 'بی لوئه',
 
@@ -789,9 +792,10 @@ $2',
 'searchprofile-everything-tooltip' => 'همه محتوا نه پی جوری كو (شاملا بلگيا چك چنه)',
 'searchprofile-advanced-tooltip' => 'نوم جايا نوم ديار بگرد',
 'search-result-size' => '$1 ({{جمی:$2|بی واچه يل|واچه تكی|واچه يل|$2 واچه يل|$2 واچه}})',
-'search-result-category-size' => '{{جمی:$1|1 اندوم|$1 اندومیا}} ({{جمی:$2|1 زیردسه|$2 زیردسه یا}}, {{جمی:$3|1 فایل|$3 فایلیا}}',
+'search-result-category-size' => '{{جمی:$1|1 اندوم|$1 اندومیا}} ({{جمی:$2|1 زیردسه|$2 زیردسه یا}}, {{جمی:$3|1 جانیا|$3 جانیایا}}',
 'search-redirect' => '(ورگشتن $1)',
 'search-section' => '(بشق $1)',
+'search-file-match' => '(یکی کردن مینونه جانیا)',
 'search-suggest' => 'منظورت يه بی:$1',
 'search-interwiki-caption' => 'پروجه یا خوئر',
 'search-interwiki-default' => '$1 نتیجه یا:',
@@ -835,6 +839,7 @@ $2',
 'stub-threshold-disabled' => 'د كار ونن',
 'recentchangesdays' => 'روزیا آلشتیا تازه باو نه نشو بیه:',
 'recentchangesdays-max' => 'فره ترین $1 {{جمی:$1|روز|روزیا}}',
+'prefs-help-recentchangescount' => 'یه شامل آلشتیا تازه،ویرگاریا بلگه و پهرستنومه یا هئ.',
 'savedprefs' => 'ویجه گیا هنی تو ذخیره بیه.',
 'timezonelegend' => 'وخت راساگه',
 'localtime' => 'وخت ولاتی:',
@@ -933,6 +938,7 @@ $2',
 'right-delete' => 'بلگیا نه پاک کو',
 'right-browsearchive' => 'بلگه یا پاک بیه نه پی جوری کو',
 'right-undelete' => 'ای بلگه نه حذف نكيد',
+'right-suppressionlog' => 'دیئن پهرستنومه یا خصوصی',
 'right-unblockself' => 'خوشه قلف نکید',
 'right-editinterface' => 'راوط کارور نه ویرایشت کو',
 'right-editusercssjs' => 'فایلیا جاوا اسکریپت و سی اس اس کاروریا هنی نه ویرایشت کو',
@@ -943,12 +949,17 @@ $2',
 'right-viewmywatchlist' => 'سیل برگ خوتونه بوینیت',
 'right-viewmyprivateinfo' => 'دونسمنیا شصقی خوتونه بوینیت(چی نشونی ایمیل،نوم راستکی)',
 'right-editmyprivateinfo' => 'دونسمنیا شصقی خوتونه ویرایشت بکید(چی نشونی ایمیل،نوم راستکی)',
+'right-importupload' => 'دئن بلگه یا د یه گل جانیا سوار بیه',
 'right-siteadmin' => 'پاگا دونسمنی نه قلف بکید یا نکید',
 'right-sendemail' => 'سی کاروریا هنی ایمیل کل بکید',
 'right-passwordreset' => 'پاسورد ایمیلیا د نو دئه بیه نه بوینیت',
 
 # Special:Log/newusers
 'newuserlogpage' => 'راس بیه وا کارور',
+'newuserlogpagetext' => 'یه پهرستنومه راس بیئن کارور هئ.',
+
+# User rights log
+'rightslogtext' => 'یه پهرستنومه آلشتیا حقوق کارور هئ.',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ای بلگه نه بحون',
@@ -969,7 +980,9 @@ $2',
 'action-deletedhistory' => 'ویرگار پاک بیه ای بلگه نه بوینیت',
 'action-browsearchive' => 'بلگه یا پاک بیه نه پی جوری بکید',
 'action-undelete' => 'ای بلگه نه پاک نکو',
+'action-suppressionlog' => 'ای پهرستنومه خصوصی نه بوینیت',
 'action-block' => 'ای کارور نه د ویرایشت کردن منع کو',
+'action-protect' => 'ریترازیا حفاظت د ای بلگه نه آلشت بکید',
 'action-import' => 'بلگه یا نه د ویکی هنی وارد بکید',
 'action-importupload' => 'بلگه یا نه د فایل سوار بیه وارد بکید',
 'action-siteadmin' => 'پاگا دونسمنی نه قلف بکید یا نکید',
@@ -1032,6 +1045,7 @@ $2',
 'uploadnologin' => 'وارد نبیه',
 'uploadnologintext' => 'لطفن $1 سی سوارکرد فایلیا.',
 'uploaderror' => 'خطا د سوار کردن',
+'uploadlog' => 'پهرستنومه سوارکرد',
 'uploadlogpage' => 'سوارکرد',
 'filename' => 'نوم فایل',
 'filedesc' => 'چكسته',
@@ -1039,6 +1053,7 @@ $2',
 'filereuploadsummary' => 'آلشتیا فایل:',
 'filesource' => 'سرچشمه:',
 'uploadedfiles' => 'فایلیا سواربیه',
+'badfilename' => 'نوم جانیا د "$1" آلشت بیه.',
 'empty-file' => 'فایلی که دئی ته حالی بیه.',
 'file-too-large' => 'فایلی که دئی ته فره گپ بی.',
 'filename-tooshort' => 'نوم فایل فره کؤچکه.',
@@ -1065,6 +1080,20 @@ $2',
 
 # File backend
 'backend-fail-notexists' => 'فایل $1 وجود ناره.',
+'backend-fail-delete' => 'نبوئه جانیا $1 پاک بوئه',
+'backend-fail-describe' => 'نبوئه گپ دونسمنیا سی جانیا"$1" آلشت بوئه.',
+'backend-fail-store' => 'نبوئه جانیا "$1" د "$2" امبار بوئه.',
+'backend-fail-move' => 'نبوئه جانیا "$1" د "$2" جا وه جا بوئه',
+'backend-fail-opentemp' => 'نبوئه جانیا موقتی وا بوئه.',
+'backend-fail-writetemp' => 'نبوئه د جانیا موقتی چی بنیسیت.',
+'backend-fail-read' => 'نبوئه جانیا"$1" حنه بوئه.',
+
+# Lock manager
+'lockmanager-fail-closelock' => 'نبوئه قلف جانیا سی "$1" بسه بوئه.',
+'lockmanager-fail-openlock' => 'نبوئه قلف جانیا سی "$1" وا بوئه.',
+
+# Special:UploadStash
+'uploadstash-refresh' => 'نومه گه جانیایا نه د نو تازه کو',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'دسرسی منع بی',
@@ -1110,6 +1139,7 @@ $2',
 'filehist-dimensions' => 'بعديا',
 'filehist-filesize' => 'انازه فایل',
 'filehist-comment' => 'نظر',
+'filehist-missing' => 'گم بیئن جانیا',
 'imagelinks' => 'استفاده د فايل',
 'linkstoimage' => 'دمال بيه {{PLURAL:$1|ديس ونيا بلگه|$1 ديس ون بلگيا}} دای فایل:',
 'nolinkstoimage' => 'ایچه هیژ بلگه ای سی هوم پیوند بیئن وا ای فایل نی',
@@ -1117,6 +1147,7 @@ $2',
 'sharedupload-desc-here' => 'فایلی که د $1 شایت د مئن پروجیا هنی استفاده بیه.
 توضی دباره[$2 file description page] د هار نشو دئئه بیه',
 'filepage-nofile' => 'چنو فایلی وا ای نوم نئ.',
+'uploadnewversion-linktext' => 'یه گل نسقه تازه د ای جانیا سوار بکید',
 'shared-repo-from' => 'د $1',
 
 # File reversion
@@ -1164,6 +1195,7 @@ $2',
 'statistics-header-hooks' => 'آماریا هنی',
 'statistics-articles' => 'بلگه یا مینونه',
 'statistics-pages' => 'بلگیا',
+'statistics-files' => 'جانیا یا سوار بیه',
 'statistics-views-total' => 'همه نه بوینیت',
 'statistics-views-peredit' => 'هر ویرایشت نه بوینیت',
 'statistics-users-active' => 'کاروریا کارکو',
@@ -1222,6 +1254,7 @@ $2',
 
 # Special:Log
 'log' => 'نیسنن رخ ونیا',
+'all-logs-page' => 'همه پهرستنومه یا عمومی',
 
 # Special:AllPages
 'allpages' => 'همه بلگيا',
@@ -1229,6 +1262,8 @@ $2',
 $2',
 'allarticles' => 'همه بلگيا',
 'allpagessubmit' => 'رو',
+'allpagesbadtitle' => 'عنوان بلگه حاسته بیه معتور نی،یا  یه گل مئن زونی یا مئن ویکی عنوان غلطه.
+یه شایت شومل یکی با یا بیشتر کاراکتریا نبوئه که سی ای موضوعیا استفاده بوئن',
 
 # Special:Categories
 'categories' => 'دسه يا',
@@ -1246,6 +1281,8 @@ $2',
 'watchlist' => 'سیل برگ',
 'mywatchlist' => 'سیل برگ',
 'watchlistfor2' => 'سي $1 $2',
+'watchnologin' => 'وارد نبیه',
+'watchnologintext' => 'شما سی آلشت دئن سیل برگتو با [[ویجه:وامین اومائن کارور|وامین اومائه]]',
 'watch' => 'سيل كردن',
 'unwatch' => 'ديه نبيه',
 'watchlist-details' => '{{جمی:$1|$1 بلگه|$1 بلگیا}} د سیل برگتو هیش بلگه قسه کردن نی .',
@@ -1256,17 +1293,27 @@ $2',
 'actioncomplete' => 'عملكرد كامل بيه',
 'actionfailed' => 'عملكرد شكست حرده',
 'dellogpage' => 'لاگ پاك كردن',
+'deletionlog' => 'پهرستنومه پاک بیئن',
 
 # Rollback
 'rollbacklink' => 'ورگشتن',
 
+# Edit tokens
+'sessionfailure-title' => 'شکست حردن نشینگه',
+
 # Protect
 'protectlogpage' => 'حفاظت کردن',
 'protectedarticle' => 'حفاظت بيه [[$1]]',
+'modifiedarticleprotection' => 'ریتراز حفاظت د "[[$1]]" آلشت بیه',
+'protect-title' => 'ریتراز حفاظت د "$1" آلشت بیه',
+
+# Restriction levels
+'restriction-level-all' => 'هر ریترازی',
 
 # Undelete
 'undeletelink' => 'بوين/دوواره آماده با',
 'undeleteviewlink' => 'ديئن',
+'undelete-error-short' => 'خطا پاک نبیئن جانیا:$1',
 
 # Namespace form on various pages
 'namespace' => 'نوم جا:',
@@ -1327,15 +1374,29 @@ $2',
 
 # Export
 'export' => 'وه صحرا ديئن بلگيا',
+'export-download' => 'ذخیره کردن جانیا',
 
 # Namespace 8 related
 'allmessagesname' => 'نوم',
 'allmessagesdefault' => 'سفارشت متنی پيش فرض',
+'allmessages-language' => 'زون:',
 
 # Thumbnails
 'thumbnail-more' => 'گپ كردن',
+'filemissing' => 'گم بیئن جانیا',
 'thumbnail_error' => 'خطا د راس بیئن بن کلئکی:$1',
 
+# Special:Import
+'import-upload-filename' => 'نوم جانیا:',
+'import-comment' => 'ویر و باور:',
+'importcantopen' => 'نبوئه جانیا دئه بیه نه وا بکید',
+'importnofile' => 'هیچ جانیا دئه بیه ای سوار نبیه.',
+'import-token-mismatch' => 'کمبود د دونسمنیا نشینگه.
+لطفن هنی کوششت بکید.',
+
+# Import log
+'importlogpage' => 'پهرستنومه دئن',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'بلگه كارورتو',
 'tooltip-pt-mytalk' => 'بلگه قسه كردن شما',
@@ -1343,6 +1404,7 @@ $2',
 'tooltip-pt-watchlist' => 'نوم نوشت د بلگه يايی كه شما آلشتاشونه پيگئری  ميكيد',
 'tooltip-pt-mycontris' => 'يه گل د هومياريا شما',
 'tooltip-pt-login' => 'توصيه بو كه وارد بوئين، اما مجبوری ني',
+'tooltip-pt-anonlogin' => 'توصيه بو كه وارد بوئين، اما مجبوری ني',
 'tooltip-pt-logout' => 'د سيستم دراومائن',
 'tooltip-ca-talk' => 'قسه دباره محتوا بلگه',
 'tooltip-ca-edit' => 'شما تونيد ای  بلگه نه ويرايشت بكيد. لطف بكيد د دگمه پيش ديئن پيش د ذخيره كردن استفاده بكيد',
@@ -1393,6 +1455,16 @@ $2',
 'tooltip-summary' => 'يه چكسته كؤچك وارد بكيد',
 'interlanguage-link-title' => '$1-$2',
 
+# Info page
+'pageinfo-language' => 'بلگه مینونه زون',
+'pageinfo-category-files' => 'شماره جانیایا',
+
+# Patrol log
+'patrol-log-page' => 'پهرستنومه گشتن',
+
+# Image deletion
+'filedeleteerror-short' => 'خطا پاک نبیئن جانیا:$1',
+
 # Browsing diffs
 'previousdiff' => '← ويرايشت كۈهنه تر',
 'nextdiff' => 'ويرايشت تازه تر',
@@ -1403,6 +1475,11 @@ $2',
 'svg-long-desc' => 'اس وی جی فايل.نومنا $1 $2 پيكسل',
 'show-big-image' => 'فایل اصلی',
 
+# Special:NewFiles
+'newimages' => 'عسگدونی جانیایا تازه',
+'newimages-label' => 'نوم جانیا(یا بشقی د وه):',
+'sp-newimages-showfrom' => 'جانیایا تازه نه که $2 ، $2 شرو بینه نشو بیه',
+
 # Bad image list
 'bad_image_list' => 'دونسمنديانه وه ای شلگ وارد بكيت:
 
@@ -1427,6 +1504,20 @@ $2',
 *جی پی اس گپ حالت
 *جی پی اس همه حالت',
 
+# Exif tags
+'exif-datetime' => 'آلشت دئن وخت و دمون جانیا',
+'exif-usercomment' => 'ویر و باوریا کارور',
+'exif-relatedsoundfile' => 'جانیا دنگ دار مرتوط',
+'exif-filesource' => 'سرچشمه جانیا',
+'exif-jpegfilecomment' => 'ویر و باور فایل پی ان جی',
+'exif-languagecode' => 'زون',
+'exif-pngfilecomment' => 'ویر و باور فایل جی پی ان جی',
+'exif-giffilecomment' => 'ویر و باور فایل جی آی اف',
+
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{جمی:$1|متر|متریا}} وارؤ د ریتراز دریا',
+'exif-gpsaltitude-below-sealevel' => '$1 {{جمی:$1|متر|متریا}} وارؤ د ریتراز دریا',
+
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'همه شو',
 'namespacesall' => 'همه شو',
@@ -1446,8 +1537,15 @@ $2',
 'version-ext-colheader-license' => 'ليسانس',
 'version-ext-colheader-credits' => 'نیسنه یا',
 
+# Special:Redirect
+'redirect-file' => 'نوم جانیا',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch-filename' => 'نوم جانیا:',
+
 # Special:SpecialPages
 'specialpages' => 'بلگيا ويجه',
+'specialpages-group-changes' => 'آلشتیا تازه و پهرستنومه یا',
 
 # External image whitelist
 'external_image_whitelist' => 'یه خط نه ول بکید چی وه<pre>',
@@ -1455,4 +1553,12 @@ $2',
 # Special:Tags
 'tag-filter' => 'فيلتر [[Special:Tags|Tag]]:',
 
+# API errors
+'api-error-filename-tooshort' => 'نوم جانیا فره کؤچکه.',
+'api-error-illegal-filename' => 'نوم جانیا اجازه دئه نئ.',
+'api-error-mustbeloggedin' => 'شما سی سوارکردن فایلیا با بیایت وامین',
+
+# Special:ExpandTemplates
+'expand_templates_remove_comments' => 'جا وه جا بیئن ویر و باوریا',
+
 );
index 9a71666..05c0377 100644 (file)
@@ -221,7 +221,7 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Hanipika ny rohy:',
 'tog-justify' => 'Hanitsy ny andiany',
-'tog-hideminor' => "Hanitsika ny fiovana madinika ao amin'ny fanovana farany",
+'tog-hideminor' => "Hanitsika ny fiovana madinika ao amin'ny fiovana farany",
 'tog-hidepatrolled' => "Hanitrika ny fiovana voaara-maso ao amin'ny fiovana farany",
 'tog-newpageshidepatrolled' => "Hanitsika ny pejy voaara-maso ao amin'ny pejy vaovao",
 'tog-extendwatchlist' => 'Hanitatra ny lisitra fanaraham-pejy mba haneho ny fanovana rehetra fa tsy ny vaovao indrindra fotsiny',
@@ -493,7 +493,7 @@ Mitaky version $1-n'i MediaWiki",
 'youhavenewmessages' => 'Manana $1 ($2).',
 'youhavenewmessagesfromusers' => "Manana $1 avy amin'ny mpikambana {{PLURAL:$3|hafa|$3}} ($2).",
 'youhavenewmessagesmanyusers' => "Manana $1 avy amin'ny mpikambana maro ($2).",
-'newmessageslinkplural' => '{{PLURAL:$1|hafatra iray|hafatra maro}}',
+'newmessageslinkplural' => '{{PLURAL:$1|hafatra iray |hafatra maro}} vaovao',
 'newmessagesdifflinkplural' => 'fiovana {{PLURAL:$1|farany|999=farany}}',
 'youhavenewmessagesmulti' => "Manana hafatra vaovao ianao eo amin'ny $1.",
 'editsection' => 'hanova',
@@ -623,7 +623,7 @@ Ny antony nomen\'ny mpandrindra nanidy azy: "$3".',
 'invalidtitle-knownnamespace' => 'Lohateny tsy miady amin\'ny fepetra miaraka amin\'ny anaram-balam-pejy "$2" ary soratra "$3"',
 'invalidtitle-unknownnamespace' => 'Lohateny tsy ekena miaraka amin\'ny laharana anaran-tsehatra $1 ary soratra "$2"',
 'exception-nologin' => 'Tsy tafiditra',
-'exception-nologin-text' => "Mila tafiditra eo amin'ilay wiki vao afaka manao ilay tao.",
+'exception-nologin-text' => '[[Special:Userlogin|Midira]]  mba hahafahanao manao ilay asa na hahafahanao mijery ity pejy ity',
 
 # Virus scanner
 'virus-badscanner' => "Diso : Tsy fantatray ny mpitady virus ''$1''",
@@ -671,7 +671,7 @@ Mila manaiky cookies ianao raha te hiditra amin'ny {{SITENAME}}.",
 'gotaccount' => "Efa manana kaonty? '''$1'''.",
 'gotaccountlink' => 'Midira',
 'userlogin-resetlink' => "Adinonavo ve ny antsipihan'ny fidiranao ?",
-'userlogin-resetpassword-link' => 'Hamerina ny tenimiafinao',
+'userlogin-resetpassword-link' => 'Hadino ny tenimiafina?',
 'helplogin-url' => 'Help:Fidirana',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Fanoroana mikasika ny fidirana]]',
 'userlogin-createanother' => 'Hamorona kaonty hafa',
@@ -720,7 +720,7 @@ Marino tsara raha mahazo mametraka cookie ao amin'ny kompioteranao ny sehata, di
 Farafahakeliny tokony hisy litera $1 ny tenimiafina.',
 'password-name-match' => 'Tsy maintsy samihafa ny solonanaranao sy ny tenimiafinao tompoko.',
 'password-login-forbidden' => 'Norarana ny fampiasana io anaram-pikambana ary io tenimiafina io.',
-'mailmypassword' => 'Alefaso imailaka ny tenimiafiko',
+'mailmypassword' => 'Hamerina ny tenimiafina',
 'passwordremindertitle' => "Fampatsiahivana tenimiafina avy amin'i {{SITENAME}}",
 'passwordremindertext' => 'Nisy olona, izay ianao ihany angamba, avy tamin\'ny adiresy IP $1, nangataka
 ny handefasanay tenimiafina vaovao ho an\'ny sehatra {{SITENAME}} ao amin\'ny
@@ -2487,7 +2487,7 @@ $1',
 'contributions' => "Fandraisan'anjaran'ny mpikambana{{GENDER:$1}}",
 'contributions-title' => "Fandraisan'anjaran'i $1",
 'mycontris' => "Fandraisan'anjara",
-'contribsub2' => "Ho an'ny $1 ($2)",
+'contribsub2' => "Ho an'i {{GENDER:$3|$1}} ($2)",
 'nocontribs' => "Tsy misy fanovana mifanaraka amin'ireo critères ireo.",
 'uctop' => '(ankehitriny)',
 'month' => "Tamin'ny volana (sy teo aloha) :",
@@ -3044,7 +3044,7 @@ Raha alefanao ilay izy, mety ho simban'io renifango io ny solosainao.",
 'file-nohires' => 'Tsy misy sary lehiba noho io.',
 'svg-long-desc' => 'rakitra SVG, habe $1 × $2 teboka, habe : $3',
 'svg-long-error' => 'Rakitra SVG tsy ekena : $1',
-'show-big-image' => "Hijery ny tena haben'ny sary",
+'show-big-image' => 'Rakitra niaviana',
 'show-big-image-preview' => "Haben'ny topi-maso: $1.",
 'show-big-image-other' => 'Habe hafa: $1{{PLURAL:$2}}',
 'show-big-image-size' => '$1 × $2 teboka',
index e433c2d..cab348a 100644 (file)
@@ -1180,6 +1180,7 @@ $2
 'template-semiprotected' => '(полузаштитен)',
 'hiddencategories' => 'Оваа страница припаѓа на {{PLURAL:$1|1 скриена категорија|$1 скриени категории}}:',
 'edittools' => '<!-- Овој текст ќе се прикаже под обрасците за уредување и подигање. -->',
+'edittools-upload' => '-',
 'nocreatetext' => '{{SITENAME}} ја има ограничено можноста за создавање нови страници.
 Можете да се вратите назад и да уредувате постоечка страница или [[Special:UserLogin|најавете се или создајте нова корисничка сметка]].',
 'nocreate-loggedin' => 'Немате дозвола да создавате нови страници.',
@@ -1460,6 +1461,7 @@ $1",
 'search-result-score' => 'Релевантност: $1%',
 'search-redirect' => '(пренасочување $1)',
 'search-section' => '(пасус $1)',
+'search-file-match' => '(се совпаѓа со содржината на податотеката)',
 'search-suggest' => 'Дали мислевте на: $1',
 'search-interwiki-caption' => 'Збратимени проекти',
 'search-interwiki-default' => 'Најдено на $1:',
@@ -2586,7 +2588,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'Оваа страница има долга историја на уредување, преку $1 {{PLURAL:$1|ревизија|ревизии}}.
 Бришењето може да предизвика проблеми при работењето на базата на податоци на {{SITENAME}};
 продолжете доколку сте сигруни дека треба тоа да го сторите.',
-'deleting-backlinks-warning' => "'''Предупредување:''' До страницата што сакате да ја избришете водат други страници.",
+'deleting-backlinks-warning' => "'''Предупредување:''' До страницата што сакате да ја избришете водат други страници или се превметнуваат во неа.",
 
 # Rollback
 'rollback' => 'Отповикај промени',
@@ -2893,7 +2895,7 @@ $1',
 'range_block_disabled' => 'Администраторската можност да блокираат IP групи е исклучена.',
 'ipb_expiry_invalid' => 'Погрешен рок на истекување.',
 'ipb_expiry_temp' => 'Скриените блокирања на корисникот мора да бидат перманентни.',
-'ipb_hide_invalid' => 'Ð\9eваа Ñ\81меÑ\82ка Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¿Ð¾Ñ\82иÑ\81не; Ð¼Ð¾Ð¶ÐµÐ±Ð¸ Ð¸Ð¼Ð° Ð¿Ñ\80емногÑ\83 Ñ\83Ñ\80едÑ\83ваÑ\9aа.',
+'ipb_hide_invalid' => 'Ð\9eваа Ñ\81меÑ\82ка Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð¿Ð¾Ñ\82иÑ\81не; Ð¸Ð¼Ð° {{PLURAL:$1|повеÑ\9cе Ð¾Ð´ ÐµÐ´Ð½Ð¾ Ñ\83Ñ\80едÑ\83ваÑ\9aе|пÑ\80екÑ\83 $1 Ñ\83Ñ\80едÑ\83ваÑ\9aа}}..',
 'ipb_already_blocked' => '„$1“ е веќе блокиран',
 'ipb-needreblock' => '$1 е веќе блокиран. Дали сакате да направите промена?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Друго блокирање|Други блокирања}}',
@@ -3232,6 +3234,7 @@ $2',
 'print.css' => '/* Тука поставениот CSS ќе се применува во верзијата за печатење */',
 'noscript.css' => '/* Тука поставениот CSS се однесува на корисниците што имаат оневозможено JavaScript */',
 'group-autoconfirmed.css' => '/* Тука поставениот CSS ќе се применува само на автопотврдените корисници */',
+'group-user.css' => '/* Тука поставениот CSS ќе се применува само врз регистрираните корисници */',
 'group-bot.css' => '/* Тука поставениот CSS ќе се применува само врз ботовите */',
 'group-sysop.css' => '/* Тука поставениот CSS ќе се применува само врз системските оператори */',
 'group-bureaucrat.css' => '/* Тука поставениот CSS ќе се применува само врз бирократите */',
@@ -3243,6 +3246,7 @@ $2',
 'modern.js' => '/* Било која Јава скрипта поставена овде ќе биде вчитана за сите корисници што го користат рувото Современо */',
 'vector.js' => '/* Тука поставениот JavaScript  ќе им се вчитува на корисниците што го користат рувото „Векторско“ */',
 'group-autoconfirmed.js' => '/* Тука поставениот JavaScript  ќе им се вчитува само на автопотврдените корисници */',
+'group-user.js' => '/* Тука поставениот JavaScript  ќе им се вчитува само на регистрираните корисници */',
 'group-bot.js' => '/* Тука поставениот JavaScript  ќе им се вчитува само на ботовите */',
 'group-sysop.js' => '/* Тука поставениот JavaScript  ќе им се вчитува само на системските оператори */',
 'group-bureaucrat.js' => '/* Тука поставениот JavaScript  ќе им се вчитува само на бирократите */',
@@ -4167,12 +4171,13 @@ $5
 
 # Special:Version
 'version' => 'Верзија',
-'version-extensions' => 'Ð\98нÑ\81Ñ\82алиÑ\80ани додатоци',
+'version-extensions' => 'Ð\92оÑ\81поÑ\81Ñ\82авени додатоци',
 'version-specialpages' => 'Специјални страници',
 'version-parserhooks' => 'Парсерски куки',
 'version-variables' => 'Променливи',
 'version-antispam' => 'Спречување на спам',
 'version-skins' => 'Рува',
+'version-api' => 'Прилози',
 'version-other' => 'Друго',
 'version-mediahandlers' => 'Ракувачи со мултимедијални содржини',
 'version-hooks' => 'Куки',
@@ -4202,7 +4207,7 @@ $5
 МедијаВики се нуди со надеж дека ќе биде од корист, но БЕЗ БИЛО КАКВА ГАРАНЦИЈА; дури и без подразбраната гаранција за ПРОДАЖНА ВРЕДНОСТ или ПОГОДНОСТ ЗА ДАДЕНА ЦЕЛ. За повеќе информации, погледајте ја ГНУ-овата општа јавна лиценца.
 
 Заедно со програмов треба да имате добиено [{{SERVER}}{{SCRIPTPATH}}/COPYING примерок од ГНУ-овата општа јавна лиценца]; ако немате добиено примерок, пишете на Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA или [//www.gnu.org/licenses/old-licenses/gpl-2.0.html прочитајте ја тука].',
-'version-software' => 'Ð\98нÑ\81Ñ\82алиÑ\80ана програмска опрема',
+'version-software' => 'Ð\92оÑ\81поÑ\81Ñ\82авена програмска опрема',
 'version-software-product' => 'Производ',
 'version-software-version' => 'Верзија',
 'version-entrypoints' => 'URL-а на влезните точки',
index f686417..8673a5c 100644 (file)
@@ -1163,6 +1163,8 @@ $1 ആണ് ഈ തടയൽ നടത്തിയത്. ''$2'' എന്ന
 'content-not-allowed-here' => '"$1" ഉള്ളടക്കം [[$2]] താളിൽ അനുവദിക്കുന്നില്ല',
 'editwarning-warning' => 'ഈ താളിൽ നിന്നും പോകുന്നത് താങ്കൾ വരുത്തിയ മാറ്റങ്ങൾ നഷ്ടപ്പെടാൻ ഇടയാക്കും.
 താങ്കൾ ലോഗിൻ ചെയ്തിട്ടുണ്ടെങ്കിൽ, താങ്കളുടെ ക്രമീകരണങ്ങളിൽ "തിരുത്തൽ" എന്ന ഭാഗത്ത് ചെന്ന് ഈ അറിയിപ്പ് പ്രദർശിപ്പിക്കുന്നത് ഒഴിവാക്കാവുന്നതാണ്.',
+'editpage-notsupportedcontentformat-title' => 'ഉള്ളടക്ക ഫോർമാറ്റ് പിന്തുണയ്ക്കുന്നില്ല',
+'editpage-notsupportedcontentformat-text' => 'ഉള്ളടക്കത്തിന്റെ ഫോർമാറ്റ് ആയ $1 ഉള്ളടക്ക രീതിയായ $2 പിന്തുണയ്ക്കുന്നില്ല.',
 
 # Content models
 'content-model-wikitext' => 'വിക്കിഎഴുത്ത്',
@@ -1415,6 +1417,7 @@ $1",
 'search-result-score' => 'സാംഗത്യം: $1%',
 'search-redirect' => '(തിരിച്ചുവിടൽ താൾ $1)',
 'search-section' => '(വിഭാഗം $1)',
+'search-file-match' => '(പ്രമാണ ഉള്ളടക്കവുമായി ഒത്തുപോകുന്നുണ്ട്)',
 'search-suggest' => 'താങ്കൾ ഉദ്ദേശിച്ചത് $1 എന്നാണോ',
 'search-interwiki-caption' => 'സഹോദര സംരംഭങ്ങൾ',
 'search-interwiki-default' => '$1 ഫലങ്ങൾ:',
@@ -2806,7 +2809,7 @@ $1',
 'range_block_disabled' => 'സിസോപ്പിനു റേഞ്ച് ബ്ലോക്കു ചെയ്യാനുള്ള സൗകര്യം ദുർബലപ്പെടുത്തുക.',
 'ipb_expiry_invalid' => 'കാലാവധി സമയം അസാധുവാണ്‌.',
 'ipb_expiry_temp' => 'മറയ്ക്കപ്പെട്ട ഉപയോക്തൃനാമങ്ങളിലുള്ള തടയൽ സ്ഥിരമായിരിക്കണം.',
-'ipb_hide_invalid' => 'ഈ അംഗത്വം ഒതുക്കാൻ കഴിയില്ല; അതിന് വളരെയധികം തിരുത്തലുകൾ ഉണ്ട്.',
+'ipb_hide_invalid' => 'ഈ അംഗത്വം ഒതുക്കാൻ കഴിയില്ല; അതിന് {PLURAL:$1|ഒരു തിരുത്ത്|$1 തിരുത്തുകൾ}} ഉണ്ട്.',
 'ipb_already_blocked' => '"$1" ഇതിനകം തന്നെ തടയപ്പെട്ടിരിക്കുന്നു.',
 'ipb-needreblock' => '$1 നിലവിൽ തടയപ്പെട്ടതാണ്.<br />
 താങ്കൾ സജ്ജീകരണത്തിൽ മാറ്റം വരുത്തുവാൻ ഉദ്ദേശിക്കുന്നുണ്ടോ?',
index 4479717..a27a2b0 100644 (file)
@@ -1393,6 +1393,7 @@ $1",
 'preferences' => 'पसंतीक्रम',
 'mypreferences' => 'पसंतीक्रम',
 'prefs-edits' => 'संपादनांची संख्या:',
+'prefsnologintext2' => 'आपला पसंतीक्रम बदलण्यास $1 करा',
 'prefs-skin' => 'त्वचा',
 'skin-preview' => 'झलक',
 'datedefault' => 'प्राथमिकता नाही',
@@ -2122,6 +2123,7 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'ninterwikis' => '$1 {{PLURAL:$1|आंतरविकि|आंतरविकि दुवे}}',
 'nlinks' => '$1 {{PLURAL:$1|दुवा|दुवे}}',
 'nmembers' => '$1 {{PLURAL:$1|सदस्य}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|सदस्य}}',
 'nrevisions' => '$1 {{PLURAL:$1|आवर्तन|आवर्तने}}',
 'nviews' => '$1 {{PLURAL:$1|दृषीपथ|दृषीपथ}}',
 'nimagelinks' => '$1{{PLURAL:$1|पानावर|पानांवर}}',
@@ -3726,6 +3728,10 @@ $5
 'imgmultigo' => 'चला!',
 'imgmultigoto' => '$1 पानावर जा',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(अविचल भाषा)',
+'img-lang-go' => 'जा',
+
 # Table pager
 'ascending_abbrev' => 'चढ',
 'descending_abbrev' => 'उतर',
@@ -3813,6 +3819,9 @@ $5
 'version-ext-colheader-version' => 'आवृत्ती',
 'version-ext-colheader-license' => 'परवाना',
 'version-ext-colheader-description' => 'वर्णन',
+'version-ext-colheader-credits' => 'लेखक',
+'version-license-title' => '$1 साठी परवाना',
+'version-license-not-found' => 'या विस्तारकासाठी विस्तृत परवाना माहिती सापडली नाही.',
 'version-poweredby-credits' => "हा विकी '''[https://www.mediawiki.org/ मीडियाविकी]'''द्वारे संचालित आहे, प्रताधिकारित © २००१-$1 $2.",
 'version-poweredby-others' => 'इतर',
 'version-poweredby-translators' => 'ट्रांसलेटविकि.नेट वरील भाषांतरकार',
@@ -3838,6 +3847,7 @@ $5
 'redirect-lookup' => 'बघा:',
 'redirect-value' => 'मुल्य:',
 'redirect-user' => 'सदस्यनाम',
+'redirect-page' => 'पृष्ठ-परिचय',
 'redirect-revision' => 'पानाची आवृत्ती',
 'redirect-file' => 'संचिकानाम',
 'redirect-not-exists' => '(योग्य)मुल्य (व्हॅल्यु) सापडले नाही',
@@ -4028,6 +4038,7 @@ $5
 'api-error-overwrite' => 'अस्तित्वात असलेल्या संचिकेवर पुनर्लेखन प्रतिबंधित आहे.',
 'api-error-stashfailed' => 'इन्तरिक त्रुटी : विदादाता तात्पुरत्या स्वरूपाच्या संचिका जमा करण्यात अयशस्वी',
 'api-error-publishfailed' => 'अंतर्गत त्रूटी:विदादात्यास, या तात्पुरत्या संचिकेच्या प्रकाशनास अपयश आले.',
+'api-error-stasherror' => 'स्टॅचला ही संचिका अपभारणात त्रूटी आली.',
 'api-error-timeout' => 'अपेक्षित वेळेत विदागार (server)ने प्रतिसाद दिला नाही.',
 'api-error-unclassified' => 'एक अज्ञात चूक उद्भवली.',
 'api-error-unknown-code' => 'अज्ञात त्रुटी: "$1"',
@@ -4056,6 +4067,7 @@ $5
 'limitreport-cputime-value' => '$1 {{PLURAL:$1|सेकंद}}',
 'limitreport-walltime-value' => '$1 {{PLURAL:$1|सेकंद}}',
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|बाइट|बाइट्स}}',
+'limitreport-templateargumentsize' => 'साचा विधानाचा आकार',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|बाइट|बाइट्स}}',
 
 # Special:ExpandTemplates
index b79a9fd..9b4ae9b 100644 (file)
@@ -19,6 +19,7 @@
  * @author Kurniasan
  * @author Meno25
  * @author Putera Luqman Tunku Andre
+ * @author SNN95
  * @author Urhixidur
  * @author Yosri
  * @author Zamwan
@@ -198,7 +199,7 @@ $specialPageAliases = array(
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'Gariskan pautan:',
+'tog-underline' => 'Garis bawah pautan:',
 'tog-justify' => 'Laraskan perenggan',
 'tog-hideminor' => 'Sembunyikan suntingan kecil dalam laman perubahan terkini',
 'tog-hidepatrolled' => 'Sorokkan suntingan yang telah dironda daripada senarai perubahan terkini',
@@ -1016,6 +1017,8 @@ Log penghapusan bagi laman ini dilampirkan di bawah untuk rujukan.',
 'content-not-allowed-here' => 'Kandungan "$1" tidak dibenarkan di halaman [[$2]]',
 'editwarning-warning' => 'Meninggalkan laman ini mungkin akan menyebabkan sebarang perubahan yang telah anda lakukan hilang.
 Jika anda sudah log masuk, anda boleh melumpuhkan amaran ini di bahagian "Menyunting" dalam keutamaan anda.',
+'editpage-notsupportedcontentformat-title' => 'Format kandungan tidak disokong',
+'editpage-notsupportedcontentformat-text' => 'Format kandungan $1 tidak disokong oleh model kandungan $2.',
 
 # Content models
 'content-model-wikitext' => 'wikiteks',
@@ -1268,6 +1271,7 @@ Butirannya boleh didapati di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGEN
 'search-result-score' => 'Kaitan: $1%',
 'search-redirect' => '(pelencongan $1)',
 'search-section' => '(bahagian $1)',
+'search-file-match' => '(sepadan dengan kandungan fail)',
 'search-suggest' => 'Maksud anda, $1?',
 'search-interwiki-caption' => 'Projek-projek lain',
 'search-interwiki-default' => 'Keputusan daripada $1:',
@@ -1708,6 +1712,7 @@ Jika anda memiliki imej ini dalam leraian penuh, sila muat naik fail tersebut. J
 'fileexists-shared-forbidden' => 'Sebuah fail dengan nama ini telah pun wujud dalam gedung fail kongsi. Jika anda masih mahu memuat naik fail ini, sila kembali ke borang muat naik dan gunakan nama lain. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Fail ini adalah salinan bagi {{PLURAL:$1|fail|fail-fail}} berikut:',
 'file-deleted-duplicate' => 'Sebuah fail yang serupa dengan fail ini ([[:$1]]) telah pun dihapuskan sebelum ini. Anda seharusnya memeriksa sejarah penghapusan fail itu terlebih dahulu sebelum memuat naiknya sekali lagi.',
+'file-deleted-duplicate-notitle' => 'Satu fail yang seiras dengan fail ini telah dihapuskan dahulu, maka judulnya telah disekat. Anda harus meminta sesiapa yang boleh melihat data fail yang disekat untuk meneliti situasinya sebelum cuba memuat naiknya semula.',
 'uploadwarning' => 'Amaran muat naik',
 'uploadwarning-text' => 'Sila ubah keterangan fail di bawah dan cuba lagi.',
 'savefile' => 'Simpan fail',
@@ -2085,6 +2090,7 @@ Masukan yang <del>dipotong</del> telah diselesaikan.',
 'protectedpages' => 'Laman dilindungi',
 'protectedpages-indef' => 'Perlindungan tanpa had sahaja',
 'protectedpages-cascade' => 'Perlindungan separa sahaja',
+'protectedpages-noredirect' => 'Sorokkan lencongan',
 'protectedpagesempty' => 'Tiada laman yang dilindungi dengan kriteria ini.',
 'protectedtitles' => 'Tajuk dilindungi',
 'protectedtitlesempty' => 'Tiada tajuk yang dilindungi yang sepadan dengan kriteria yang diberikan.',
@@ -2362,7 +2368,7 @@ Sila lihat $2 untuk rekod penghapusan terkini.',
 '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 pada halaman yang hendak anda hapus itu.",
+'deleting-backlinks-warning' => "'''Amaran:''' Terdapat halaman-halaman lain yang berpaut atau bertransklusi dengan halaman yang hendak anda hapus itu.",
 
 # Rollback
 'rollback' => 'Undurkan suntingan.',
@@ -2598,6 +2604,7 @@ dirosakkan).',
 <br />Sila lihat [[Special:BlockList|senarai sekatan]] untuk menyemak sekatan.',
 'ipb-blockingself' => 'Anda akan menyekat diri sendiri! Pastikah anda mahu berbuat demikian?',
 'ipb-confirmhideuser' => 'Anda akan menyekat seorang pengguna yang menghidupkan "sorokkan pengguna". Ini akan menindaskan nama pengguna itu di semua senarai dan entri log. Pastikah anda mahu berbuat demikian?',
+'ipb-confirmaction' => 'Jika anda benar-benar ingin melakukannya, sila tanda ruangan "{{int:ipb-confirm}}" di bawah.',
 'ipb-edit-dropdown' => 'Sunting sebab sekatan',
 'ipb-unblock-addr' => 'Nyahsekat $1',
 'ipb-unblock' => 'Nyahsekat nama pengguna atau alamat IP',
@@ -2660,7 +2667,7 @@ Sila lihat juga [[Special:BlockList|senarai sekatan]] untuk senarai larangan dan
 'range_block_disabled' => 'Kebolehan penyelia untuk membuat sekatan julat dimatikan.',
 'ipb_expiry_invalid' => 'Waktu tamat tidak sah.',
 'ipb_expiry_temp' => 'Sekatan nama pengguna terselindung sepatutnya kekal.',
-'ipb_hide_invalid' => 'Tidak dapat menahan akaun ini; ia mungkin mempunyai terlalu banyak suntingan.',
+'ipb_hide_invalid' => 'Akaun ini tidak dapat disekat kerana mempunyai lebih daripada $1 suntingan.',
 'ipb_already_blocked' => '"$1" sudah disekat',
 'ipb-needreblock' => '$1 telah pun disekat Adakah anda mahu menukar tetapan sekatan pengguna ini?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Sekatan|Sekatan-sekatan}} lain',
@@ -3777,7 +3784,17 @@ Anda juga boleh [[Special:EditWatchlist|menggunakan penyunting piawai]].',
 'version-hook-name' => 'Nama penyangkuk',
 'version-hook-subscribedby' => 'Dilanggan oleh',
 'version-version' => '(Versi $1)',
-'version-license' => 'Lesen',
+'version-license' => 'Lesen MediaWiki',
+'version-ext-license' => 'Lesen',
+'version-ext-colheader-name' => 'Sambungan',
+'version-ext-colheader-version' => 'Versi',
+'version-ext-colheader-license' => 'Lesen',
+'version-ext-colheader-description' => 'Keterangan',
+'version-ext-colheader-credits' => 'Pengarang',
+'version-license-title' => 'Lesen untuk $1',
+'version-license-not-found' => 'Tidak terdapat maklumat lesen yang terperinci untuk sambungan ini.',
+'version-credits-title' => 'Kredit untuk$1',
+'version-credits-not-found' => 'Tidak terdapat maklumat penghargaan yang terperinci untuk sambungan ini.',
 'version-poweredby-credits' => "Wiki ini dikuasakan oleh '''[https://www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
 'version-poweredby-others' => 'penyumbang-penyumbang lain',
 'version-poweredby-translators' => 'para penterjemah translatewiki.net',
@@ -3998,6 +4015,7 @@ Ataupun, anda boleh menggunakan borang yang mudah di bawah. Ulasan anda akan dic
 'api-error-overwrite' => 'Menulis ganti fail yang telah wujud adalah tidak dibenarkan.',
 'api-error-stashfailed' => 'Ralat dalaman: pelayan tidak dapat menyimpan fail sementara.',
 'api-error-publishfailed' => 'Ralat dalaman: Pelayan tidak dapat menerbitkan fail sementara.',
+'api-error-stasherror' => 'Terdapat ralat ketika menyimpan fail yang dimuat naik.',
 'api-error-timeout' => 'Pelayan tidak bergerak balas dalam tempoh yang diharapkan.',
 'api-error-unclassified' => 'Berlakunya ralat yang tidak diketahui',
 'api-error-unknown-code' => 'Ralat tidak diketahui: "$1"',
@@ -4055,4 +4073,6 @@ Sebenarnya, ia mengembangkan segalanya dalam tanda kurung panah berganda.',
 'expand_templates_generate_rawhtml' => 'Paparkan HTML mentah',
 'expand_templates_preview' => 'Pralihat',
 
+# Unknown messages
+'uploadinvalidxml' => 'XML dalam fail yang dimuat naik ini tidak dapat dihuraikan.',
 );
index 795aef5..fc01408 100644 (file)
@@ -852,8 +852,8 @@ Skriv inn en fungerende e-postadresse eller tøm feltet.',
 
 Du kan ignorere denne beskjeden dersom kontoen ble opprettet ved en feil.',
 'usernamehasherror' => 'Brukernavn kan ikke inneholde nummertegn.',
-'login-throttled' => 'Du har nylig prøvd for mange ganger å logge inn.
-Vær vennlig å vente $1 før du prøver igjen.',
+'login-throttled' => 'Du har prøvd å logge inn for mange ganger.
+Vent $1 før du prøver på nytt.',
 'login-abort-generic' => 'Innleggingen ble avbrutt.',
 'loginlanguagelabel' => 'Språk: $1',
 'suspicious-userlogout' => 'Din forespørsel om å logge ut ble nektet fordi den så ut til å ha bli sendt av en ødelagt nettleser eller en mellomtjener.',
@@ -1402,6 +1402,7 @@ Detaljer kan finnes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-result-score' => 'Relevans: $1&nbsp;%',
 'search-redirect' => '(omdirigering $1)',
 'search-section' => '(avsnitt $1)',
+'search-file-match' => '(matcher filinnhold)',
 'search-suggest' => 'Mente du: $1',
 'search-interwiki-caption' => 'Søsterprosjekter',
 'search-interwiki-default' => '$1-resultater:',
@@ -2500,7 +2501,7 @@ Se $2 for en oversikt over de siste slettingene.',
 'delete-edit-reasonlist' => 'Rediger begrunnelser for sletting',
 'delete-toobig' => 'Denne siden har en stor redigeringshistorikk, med over {{PLURAL:$1|$1&nbsp;revisjon|$1&nbsp;revisjoner}}. Muligheten til å slette slike sider er begrenset for å unngå utilsiktet forstyrring av {{SITENAME}}.',
 'delete-warning-toobig' => 'Denne siden har en stor redigeringshistorikk, med over {{PLURAL:$1|$1&nbsp;revisjon|$1&nbsp;revisjoner}}. Sletting av denne siden kan forstyrre databasen til {{SITENAME}}; vær varsom.',
-'deleting-backlinks-warning' => "'''Advarsel:''' Andre sider har lenker til den siden du skal til å slette.",
+'deleting-backlinks-warning' => "'''Advarsel:''' Andre sider linker til eller inkluderer siden du er i ferd med å slette.",
 
 # Rollback
 'rollback' => 'Fjern redigeringer',
@@ -2791,7 +2792,7 @@ Skjulingsloggen vises nedenfor.',
 'range_block_disabled' => 'Muligheten til å blokkere flere IP-adresser om gangen er slått av.',
 'ipb_expiry_invalid' => 'Ugyldig utløpstid.',
 'ipb_expiry_temp' => 'For å skjule brukernavnet må blokkeringen være permanent.',
-'ipb_hide_invalid' => 'Kan ikke skjule denne kontoen. Den kan ha for mange redigeringer.',
+'ipb_hide_invalid' => 'Denne kontoen kan ikke skjules; den har mer enn {{PLURAL:$1|én redigering|$1 redigeringer}}.',
 'ipb_already_blocked' => '«$1» er allerede blokkert',
 'ipb-needreblock' => '$1 er blokkert fra før. Vil du endre innstillingene?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Annen blokkering|Andre blokkeringer}}',
index 3d7a017..ef2d672 100644 (file)
@@ -189,8 +189,8 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|यो श्रेणीमा निम्न फाइल मात्र छ ।|निम्न श्रेणीमा {{PLURAL:$1|फाइल|$1 फाइलहरु}} , कुल  $2 मध्ये रहेको ।}}',
 'category-file-count-limited' => 'निम्न  {{PLURAL:$1|फाइल|$1 फाइलहरु}} यस श्रेणीमा रहेको ।',
 'listingcontinuesabbrev' => 'निरन्तरता...',
-'index-category' => 'à¤\95à¥\8dरमाà¤\99à¥\8dà¤\95ित à¤ªà¥\83षà¥\8dठहरà¥\81',
-'noindex-category' => 'à¤\95à¥\8dरमाà¤\82à¤\95न à¤¨à¤\97रिà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81',
+'index-category' => 'à¤\95à¥\8dरमाà¤\99à¥\8dà¤\95ित à¤ªà¥\83षà¥\8dठहरà¥\82',
+'noindex-category' => 'à¤\95à¥\8dरमाà¤\82à¤\95न à¤¨à¤\97रिà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82',
 'broken-file-category' => 'टुटेको फाइल लिंकसितको पृष्ठ',
 
 'about' => 'बारेमा',
@@ -806,8 +806,8 @@ $2
 'editingold' => "''चेतावनी: तपाईं यस पृष्ठको अति पुरनो अप्रचलित संशोधनको सम्पादन गर्नुहुँदैछ।'''
 यदि तपाईंले यस परिवर्तनलाई संग्रह गर्नु भयो भनें यस पछिका संशोधनहरु नष्ट हुनेछन्।",
 'yourdiff' => 'भिन्नताहरु',
-'copyrightwarning' => "à¤\95à¥\83पया à¤§à¥\8dयान à¤¦à¤¿à¤¨à¥\81हà¥\8bसà¥\8d à¤¯à¤¸ {{SITENAME}}मा à¤¦à¤¿à¤\87à¤\8fà¤\95ा à¤¯à¥\8bà¤\97दानहरà¥\81 $2à¤\95à¥\8b à¤¤à¤¹à¤¤ à¤¸à¤®à¥\8dपादन à¤° à¤ªà¥\81नरà¥\8dवितरणà¤\95à¥\8bलाà¤\97ि à¤®à¥\81à¤\95à¥\8dत à¤®à¤¾à¤¨à¤¿à¤¨à¥\87à¤\9b (विवरणà¤\95à¥\8bलाà¤\97ि $1 à¤¹à¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d) à¥¤ à¤¯à¤¦à¤¿  à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤²à¥\87à¤\96लाà¤\88 à¤¸à¤®à¥\8dपादन à¤\85थवा à¤ªà¥\81नà¤\83 à¤µà¤¿à¤¤à¤°à¤£ à¤\97राà¤\89न à¤\9aाहनà¥\81 à¤¹à¥\81नà¥\8dन à¤­à¤¨à¥\87à¤\82  à¤\95à¥\83पया à¤¯à¤¹à¤¾à¤\81  तपाईंको लेख प्रस्तुत नगर्नुहोस् ।<br />       
-यदि à¤¤à¤ªà¤¾à¤\88à¤\82 à¤\95िà¤\9fानसाथ à¤­à¤¨à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¤\95ि à¤\95à¥\81नà¥\88 à¤²à¥\87à¤\96 à¤®à¥\88लà¥\87 à¤²à¥\87à¤\96à¥\87à¤\95à¥\8b à¤¹à¥\8b à¤\85थवा à¤¸à¤¾à¤°à¥\8dवà¤\9cनिà¤\95 à¤\9cà¥\8dà¤\9eानà¤\95à¥\8dषà¥\87तà¥\8dर à¤\85थवा à¤®à¥\81à¤\95à¥\8dत à¤¸à¤\82साधनबाà¤\9f à¤²à¤¿à¤\87à¤\8fà¤\95à¥\8b à¤¹à¥\8b, '''यसà¥\8dतà¥\8b à¤²à¥\87à¤\96 à¤¬à¤¿à¤¨à¤¾ à¤\95पà¥\80राà¤\87à¤\9f à¤¯à¤¹à¤¾à¤\81 à¤¨à¤¦à¤¿नुहोस्!'''",
+'copyrightwarning' => "à¤\95à¥\83पया à¤§à¥\8dयान à¤¦à¤¿à¤¨à¥\81हà¥\8bसà¥\8d à¤¯à¤¸ {{SITENAME}}मा à¤¦à¤¿à¤\87à¤\8fà¤\95ा à¤¯à¥\8bà¤\97दानहरà¥\82 $2à¤\95à¥\8b à¤\85नà¥\81सार à¤¸à¤®à¥\8dपादन à¤° à¤ªà¥\81नरà¥\8dवितरणà¤\95à¥\8bलाà¤\97ि à¤\96à¥\81ला à¤®à¤¾à¤¨à¤¿à¤¨à¥\87à¤\9b (विवरणà¤\95à¥\8bलाà¤\97ि $1 à¤¹à¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d) à¥¤ à¤¯à¤¦à¤¿ à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤²à¥\87à¤\96लाà¤\88 à¤¸à¤®à¥\8dपादन à¤\85थवा à¤ªà¥\81नà¤\83 à¤µà¤¿à¤¤à¤°à¤£ à¤\97राà¤\89न à¤\9aाहनà¥\81हà¥\81नà¥\8dन à¤­à¤¨à¥\87 à¤\95à¥\83पया à¤¯à¤¹à¤¾à¤\81 तपाईंको लेख प्रस्तुत नगर्नुहोस् ।<br />       
+यदि à¤¤à¤ªà¤¾à¤\88à¤\82 à¤\95िà¤\9fानसाथ à¤­à¤¨à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¤\95ि à¤\95à¥\81नà¥\88 à¤²à¥\87à¤\96 à¤®à¥\88लà¥\87 à¤²à¥\87à¤\96à¥\87à¤\95à¥\8b à¤¹à¥\8b à¤\85थवा à¤¸à¤¾à¤°à¥\8dवà¤\9cनिà¤\95 à¤\9cà¥\8dà¤\9eानà¤\95à¥\8dषà¥\87तà¥\8dर à¤\85थवा à¤®à¥\81à¤\95à¥\8dत à¤¸à¤\82साधनबाà¤\9f à¤²à¤¿à¤\87à¤\8fà¤\95à¥\8b à¤¹à¥\8b, '''यसà¥\8dतà¥\8b à¤²à¥\87à¤\96 à¤\95पिराà¤\87à¤\9fबिना à¤¯à¤¹à¤¾à¤\81 à¤¨à¤°à¤¾à¤\96à¥\8dनुहोस्!'''",
 'copyrightwarning2' => "कृपया ध्यान दिनुहोस् यस {{SITENAME}}मा दिइएका योगदानहरुलाई अन्य योगदाताहरुद्वारा सम्पादन गरिनेछ, परिवर्तन गरिनेछ अथवा हटाइनेछ। यदि  तपाईंको लेखलाई निर्दयता पूर्वक सम्पादन गरेको चाहनुहुन्न भनें त्यो यहाँ नदिनुहोस्।<br />
 यदि तपाईं किटानसाथ भन्नुहुन्छ कि यो लेख तपाईं आफै लेखेको हो अथवा सार्वजनिक ज्ञानक्षेत्र अथवा मुक्त संसाधनबाट लिइएको हो (विवरणकोलागि हेर्नुहोस् $1 ). 
 '''कपीराइट भएको रचना अनुमति बिना  यहाँ नदिनुहोस्!'''",
@@ -871,7 +871,7 @@ $2
 'post-expand-template-inclusion-category' => 'पृष्ठहरु जहाँ  समेटिएको टेम्पलेट आकार हुनुपर्ने भन्दा बढि छ ।',
 'post-expand-template-argument-warning' => "'''चेतावनी:''' यो पृष्ठकमा कम्तिमा एक टेम्प्लेट मान रहेको छ जसको धेरै ठूलो बढोत्तरी आकार रहेको छ।
 यस्ता मानहरु हटाइएका छन् ।",
-'post-expand-template-argument-category' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा à¤¢à¤¾à¤\81à¤\9aाहरà¥\81सà¤\81à¤\97 à¤¸à¤®à¥\8dबनà¥\8dध à¤°à¤¹à¥\87à¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81',
+'post-expand-template-argument-category' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा à¤¢à¤¾à¤\81à¤\9aाहरà¥\82सà¤\81à¤\97 à¤¸à¤®à¥\8dबनà¥\8dध à¤°à¤¹à¥\87à¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82',
 'parser-template-loop-warning' => 'ढाँचागत ग़ाँठो पर्‍यो : [[$1]]',
 'parser-template-recursion-depth-warning' => 'ढाँचा पुन:चक्र गहिराई सिमा ($1) भन्दा बढि भयो',
 'language-converter-depth-warning' => 'भाषा परिवर्तनकर्ता गहिराई  ($1) नाघेको छ',
@@ -1077,13 +1077,13 @@ $1",
 'search-section' => '(खण्ड $1)',
 'search-suggest' => 'के तपाईको खोजाई : $1 हो?',
 'search-interwiki-caption' => 'भगिनी आयोजना',
-'search-interwiki-default' => '$1 à¤¨à¤¤à¤¿à¤\9cाहरà¥\81:',
+'search-interwiki-default' => '$1 à¤¨à¤¤à¤¿à¤\9cाहरà¥\82:',
 'search-interwiki-more' => '(अझै)',
 'search-relatedarticle' => 'सम्बन्धित',
 'searcheverything-enable' => 'सबै नेमस्पेसेजहरुमा खोज्नुहोस्',
 'searchrelated' => 'सम्बन्धित',
 'searchall' => 'सबै',
-'showingresults' => "दà¥\87à¤\96ाà¤\89दà¥\88  {{PLURAL:$1|'''१''' à¤¨à¤¤à¤¿à¤\9cा|'''$1''' à¤¨à¤¤à¤¿à¤\9cाहरà¥\81 }} , #'''$2''' बाट सुरुहुने ।",
+'showingresults' => "दà¥\87à¤\96ाà¤\89à¤\81दà¥\88  {{PLURAL:$1|'''१''' à¤¨à¤¤à¤¿à¤\9cा|'''$1''' à¤¨à¤¤à¤¿à¤\9cाहरà¥\82 }} , #'''$2''' बाट सुरुहुने ।",
 'showingresultsnum' => "तल देखाउदै  {{PLURAL:$3|'''१''' नतिजा|'''$3''' नतिजाहरु }}, #'''$2''' बाट सुरुहुने ।",
 'showingresultsheader' => "{{PLURAL:$5|नतिजा '''$1''' को '''$3'''|नतिजाहरु '''$1 - $2''' को'''$3'''}}  ,'''$4''' को लागि",
 'search-nonefound' => 'तपाईँको क्वेरीसँग मेल खाने नतिजाहरू भेटिएनन्',
@@ -1268,7 +1268,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
 'right-createtalk' => 'छलफल पृष्ठ सृजना गर्नुहोस्',
 'right-createaccount' => 'नयाँ प्रयोगकर्ता खाता सृजना गर्नुहोस्।',
 'right-minoredit' => 'सम्पादनलाई सामान्य चिनो लगाउने',
-'right-move' => 'पà¥\83षà¥\8dठहरà¥\81 सार्ने',
+'right-move' => 'पà¥\83षà¥\8dठहरà¥\82 सार्ने',
 'right-move-subpages' => 'तिनीहरुको सह-पृष्ठसहित पृष्ठहरु सार्ने',
 'right-move-rootuserpages' => 'मूल(root) प्रयोगकर्ताको पृष्ठहरु सार्ने',
 'right-movefile' => 'फाइलहरु सार्ने',
@@ -1283,12 +1283,12 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
 'right-bot' => 'स्वाचालित कार्यको रुपमा व्यवहार गर्ने',
 'right-apihighlimits' => 'API खोजको लागि उच्च सीमा प्रयोग गर्नुहोस्',
 'right-writeapi' => 'लेखन API प्रयोग गर्ने',
-'right-delete' => 'पà¥\83षà¥\8dठहरà¥\81 मेट्ने',
+'right-delete' => 'पà¥\83षà¥\8dठहरà¥\82 मेट्ने',
 'right-bigdelete' => 'लामो इतिहासहरु भएको पृष्ठहरु मेट्ने',
 'right-deleterevision' => 'खुलाइएको पृष्ठहरु मेटाउने र मेटाएको रद्द गर्ने',
 'right-deletedhistory' => 'मेटाइएको इतिहास प्रविष्टीहरु हेर्ने, तिनीहरुसँग सम्बद्ध पाठ बिना',
 'right-deletedtext' => 'मेटाइएका संशोधन बीचका मेटाइएका पाठ र परिवर्तनहरु हेर्ने',
-'right-browsearchive' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81 खोज्ने',
+'right-browsearchive' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82 खोज्ने',
 'right-undelete' => 'मेटेको पृष्ठ फिर्तागर्ने',
 'right-suppressrevision' => 'प्रबन्धकहरुबाट लुकाइएको पुनरावलोकनहरु पूर्वालोकन गर्ने र पुरानो स्थितिमा फर्काउने',
 'right-suppressionlog' => 'व्यक्तिगत लगहरु हेर्ने',
@@ -1337,7 +1337,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
 'action-minoredit' => 'यस सम्पादनलाई साधारणको रुपमा चिनो लगाउने',
 'action-move' => 'यो पृष्ठलाई सर्ने',
 'action-move-subpages' => 'यो पृष्ठ र यसका सह पृष्ठहरुलाई सर्ने',
-'action-move-rootuserpages' => 'मà¥\82ल à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤ªà¥\83षà¥\8dठहरà¥\81 सार्ने',
+'action-move-rootuserpages' => 'मà¥\82ल à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤ªà¥\83षà¥\8dठहरà¥\82 सार्ने',
 'action-movefile' => 'यो फाइल सार्ने',
 'action-upload' => 'यो फाइल अपलोड गर्ने',
 'action-reupload' => 'रहिआएको फाइल अधिलेखन गर्ने',
@@ -1347,7 +1347,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
 'action-delete' => 'यो पृष्ठ मेट्ने',
 'action-deleterevision' => 'यो पुनरावलोकन मेट्ने',
 'action-deletedhistory' => 'यो पृष्ठको मेटाइएको इतिहास हेर्ने',
-'action-browsearchive' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81 खोज्ने',
+'action-browsearchive' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82 खोज्ने',
 'action-undelete' => 'यो पृष्ठ लाइ पुन:स्थापना गर्ने',
 'action-suppressrevision' => 'यो लुकाइएको पुनरावलोकनको पुर्वालोकन गर्ने र पुनरावृत्ति गर्ने',
 'action-suppressionlog' => 'यो व्यक्तिगत लग हेर्ने',
@@ -1405,9 +1405,9 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
 'rc-old-title' => 'मौलिक तौरमा "$1" रुपमा बनाइएको',
 
 # Recent changes linked
-'recentchangeslinked' => 'सà¤\82बनà¥\8dधित à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\81',
-'recentchangeslinked-feed' => 'सà¤\82बनà¥\8dधित à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\81',
-'recentchangeslinked-toolbox' => 'सà¤\82बनà¥\8dधित à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\81',
+'recentchangeslinked' => 'समà¥\8dबनà¥\8dधित à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\82',
+'recentchangeslinked-feed' => 'समà¥\8dबनà¥\8dधित à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\82',
+'recentchangeslinked-toolbox' => 'समà¥\8dबनà¥\8dधित à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\82',
 'recentchangeslinked-title' => '"$1"सम्वन्धित परिवर्तनसँग',
 'recentchangeslinked-summary' => "यो सूची निर्दिष्ट पृष्ठ (वा निर्दिष्ट श्रेणी)सित जोड़िएका  भर्खरै परिवर्तन भएका पृष्ठको  हो। [[Special:Watchlist|तपाईँको निगरानी सूची]]का पृष्ठहरु '''गाढा अक्षरमा''' छन्।",
 'recentchangeslinked-page' => 'पृष्ठ नाम:',
@@ -1426,13 +1426,13 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
 'upload-recreate-warning' => "'''चेतावनी: त्यस नाममा रहेका फाइलहरु सारिएको या हटाइएको छ।'''
 
 यस पृष्ठको सारिएको र हटाइएको लग तपाईको सहजताको लागि दिइएको छ।",
-'uploadtext' => "फाà¤\87ल à¤\89रà¥\8dधà¥\8dवभरण गर्न निम्न फारम प्रयोग गर्नुहोस्।
-हà¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d- à¤ªà¤¹à¤¿à¤²à¤¾ à¤\89रà¥\8dधà¥\8dवभरण à¤\97रिà¤\8fà¤\95ा [[Special:FileList|फाà¤\87लहरà¥\81à¤\95à¥\8b à¤¸à¥\82à¤\9aà¥\80]] , à¤ªà¥\81नà¤\83 à¤\89रà¥\8dधà¥\8dवभरण à¤\97रिà¤\8fà¤\95ा [[Special:Log/upload|à¤\89रà¥\8dधà¥\8dवभरण à¤²à¤\97]]मा , à¤®à¥\87à¤\9fिà¤\8fà¤\95ा à¤«à¤¾à¤\87लहरà¥\81 [[Special:Log/delete|मेटिएको लग]]मा।
+'uploadtext' => "फाà¤\87ल à¤\85पलà¥\8bड गर्न निम्न फारम प्रयोग गर्नुहोस्।
+हà¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d- à¤ªà¤¹à¤¿à¤²à¤¾ à¤\85पलà¥\8bड à¤\97रिà¤\8fà¤\95ा [[Special:FileList|फाà¤\87लहरà¥\82à¤\95à¥\8b à¤¸à¥\82à¤\9aà¥\80]] , à¤ªà¥\81नà¤\83 à¤\85पलà¥\8bड à¤\97रिà¤\8fà¤\95ा [[Special:Log/upload|à¤\85पलà¥\8bड à¤²à¤\97]]मा, à¤®à¥\87à¤\9fिà¤\8fà¤\95ा à¤«à¤¾à¤\87लहरà¥\82 [[Special:Log/delete|मेटिएको लग]]मा।
 
-पà¥\83षà¥\8dठमा à¤«à¤¾à¤\87ल à¤¸à¤\82लà¤\97à¥\8dन à¤\97रà¥\8dन à¤¤à¤² à¤¦à¤¿à¤\8fà¤\95ा à¤«à¤¾à¤°à¤®à¤¹à¤°à¥\81मध्ये एउटामा लिङ्क गराउनुहोस्:
+पà¥\83षà¥\8dठमा à¤«à¤¾à¤\87ल à¤¸à¤\82लà¤\97à¥\8dन à¤\97रà¥\8dन à¤¤à¤² à¤¦à¤¿à¤\8fà¤\95ा à¤«à¤¾à¤°à¤®à¤¹à¤°à¥\82मध्ये एउटामा लिङ्क गराउनुहोस्:
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>'''पूर्ण आकारको फाइल प्रयोग गर्न
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' 200 पिक्सलको देब्रेपटि मार्जिन गरेर फाइलको बर्णनसहित प्रयोग गर्न
-* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' à¤«à¤¾à¤\87ल à¤¨à¤¦à¥\87à¤\96ाà¤\88 à¤¸à¤¿à¤§à¥\88 à¤«à¤¾à¤\87लसित à¤²à¤¿à¤\99à¥\8dà¤\95 à¤\97रि प्रयोग गर्न",
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' 200 à¤ªà¤¿à¤\95à¥\8dसलà¤\95à¥\8b à¤¦à¥\87बà¥\8dरà¥\87पà¤\9fà¥\8dà¤\9fि à¤®à¤¾à¤°à¥\8dà¤\9cिन à¤\97रà¥\87र à¤«à¤¾à¤\87लà¤\95à¥\8b à¤¬à¤°à¥\8dणनसहित à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dन
+* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' à¤«à¤¾à¤\87ल à¤¨à¤¦à¥\87à¤\96ाà¤\88 à¤¸à¤¿à¤\82धà¥\88 à¤«à¤¾à¤\87लसित à¤²à¤¿à¤\99à¥\8dà¤\95 à¤\97रà¥\80 प्रयोग गर्न",
 'upload-permitted' => 'अनुमति पाएका फ़ाइल प्रकार:$1.',
 'upload-preferred' => 'चाहिएका फ़ाइल प्रकार:$1.',
 'upload-prohibited' => 'निषिद्ध फ़ाइल प्रकार:$1.',
@@ -1645,7 +1645,7 @@ $1',
 'download' => 'डाउनलोड',
 
 # Unwatched pages
-'unwatchedpages' => 'धà¥\8dयान à¤¨à¤¦à¤¿à¤\87à¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81',
+'unwatchedpages' => 'धà¥\8dयान à¤¨à¤¦à¤¿à¤\87à¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82',
 
 # List redirects
 'listredirects' => 'अनुप्रेषित सूची',
@@ -1673,8 +1673,8 @@ $1',
 'statistics-header-users' => 'प्रयोगकर्ता तथ्याङ्कहरु',
 'statistics-header-hooks' => 'अन्य तथ्याङ्कहरु',
 'statistics-articles' => 'सामग्री पृष्ठहरू',
-'statistics-pages' => 'पà¥\83षà¥\8dठहरà¥\81',
-'statistics-pages-desc' => 'विà¤\95िà¤\95ा à¤¸à¤¬à¥\88 à¤ªà¥\83षà¥\8dठहरà¥\81 , à¤µà¤¾à¤°à¥\8dतापà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81 à¤¸à¤®à¥\87त , à¤°à¤¿à¤¡à¤¾à¤\87रà¥\87à¤\95à¥\8dà¤\9f , इत्यादि ।',
+'statistics-pages' => 'पà¥\83षà¥\8dठहरà¥\82',
+'statistics-pages-desc' => 'विà¤\95िà¤\95ा à¤¸à¤¬à¥\88 à¤ªà¥\83षà¥\8dठहरà¥\82, à¤µà¤¾à¤°à¥\8dतापà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82समà¥\87त, à¤°à¤¿à¤¡à¤¾à¤\87रà¥\87à¤\95à¥\8dà¤\9f, इत्यादि ।',
 'statistics-files' => 'उर्ध्वभरण गरिएका फाइलहरु',
 'statistics-edits' => '{{SITENAME}} स्थापना भए देखिको पृष्ठ सम्पादन',
 'statistics-edits-average' => 'प्रतिपृष्ठ औसत सम्पादन',
@@ -1696,12 +1696,12 @@ $1',
 'brokenredirects-edit' => 'सम्पादन',
 'brokenredirects-delete' => 'मेट्ने',
 
-'withoutinterwiki' => 'भाषा à¤¨à¤­à¤\8fà¤\95à¥\8b à¤ªà¥\83षà¥\8dठहरà¥\81',
+'withoutinterwiki' => 'भाषा à¤¨à¤­à¤\8fà¤\95à¥\8b à¤ªà¥\83षà¥\8dठहरà¥\82',
 'withoutinterwiki-summary' => 'यी पानाहरूले अन्य भाषाका संस्करणहरूमा संबन्ध राखेका छैनन्:',
 'withoutinterwiki-legend' => 'पहिले आउने',
 'withoutinterwiki-submit' => 'देखाउने',
 
-'fewestrevisions' => 'थà¥\8bरà¥\88 à¤ªà¥\81नरावलà¥\8bà¤\95न à¤­à¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81',
+'fewestrevisions' => 'थà¥\8bरà¥\88 à¤ªà¥\81नरावलà¥\8bà¤\95न à¤­à¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|बाइट|बाइटहरू}}',
@@ -1714,7 +1714,7 @@ $1',
 'ntransclusions' => '$1 {{PLURAL:$1पृष्ठमा प्रयोग गरिएको|पृष्ठहरुमा प्रयोग गरिएका}}',
 'specialpage-empty' => 'यो पृष्ठ खाली छ।',
 'lonelypages' => 'अनाथ पृष्ठहरू',
-'uncategorizedpages' => 'शà¥\8dरà¥\87णà¥\80à¤\95रण à¤¨à¤­à¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81',
+'uncategorizedpages' => 'शà¥\8dरà¥\87णà¥\80à¤\95रण à¤¨à¤­à¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82',
 'uncategorizedcategories' => 'श्रेणीकरण नभएका श्रेणीहरू',
 'uncategorizedimages' => 'श्रेणीकरण नभएका फाइलहरु',
 'uncategorizedtemplates' => 'श्रेणीकरण नभएका टेम्प्लेटहरु',
@@ -1734,8 +1734,8 @@ $1',
 'mostrevisions' => 'सबैभन्दा बढी संशोधित लेखहरू',
 'prefixindex' => 'प्रिफिक्स सहितका पृष्ठहरु',
 'shortpages' => 'छोटा पृष्ठहरू',
-'longpages' => 'लामà¥\8b à¤ªà¥\83षà¥\8dठहरà¥\81',
-'deadendpages' => 'हदà¥\88-à¤\85नà¥\8dतà¤\95ि à¤ªà¥\83षà¥\8dठहरà¥\81',
+'longpages' => 'लामा à¤ªà¥\83षà¥\8dठहरà¥\82',
+'deadendpages' => 'मà¥\8dयाद à¤¸à¤\95िà¥\87à¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82',
 'deadendpagestext' => 'निम्न पृष्ठहरु {{SITENAME}}मा रहेका अरु पृष्ठहरुसँग जोडिदैनन् ।',
 'protectedpages' => 'संरक्षित पृष्ठहरू',
 'protectedpages-indef' => 'नखुलेको सुरक्षा मात्र',
@@ -1779,9 +1779,9 @@ $1',
 'nextpage' => 'अर्को पृष्ठ ($1)',
 'prevpage' => 'पहिलो पृष्ठ ($1)',
 'allpagesfrom' => 'यहाँदेखि शुरु हुने पृष्ठहरू देखाउनुहोस्:',
-'allpagesto' => 'निमà¥\8dनमा à¤\85नà¥\8dतहà¥\81नà¥\87 à¤ªà¥\83षà¥\8dठहरà¥\81 देखाउने:',
-'allarticles' => 'सबà¥\88 à¤²à¥\87à¤\96हरà¥\81',
-'allinnamespace' => 'सबà¥\88 à¤ªà¥\83षà¥\8dठहरà¥\81 ($1 नेमस्पेस)',
+'allpagesto' => 'निमà¥\8dनमा à¤\85नà¥\8dतहà¥\81नà¥\87 à¤ªà¥\83षà¥\8dठहरà¥\82 देखाउने:',
+'allarticles' => 'सबà¥\88 à¤²à¥\87à¤\96हरà¥\82',
+'allinnamespace' => 'सबà¥\88 à¤ªà¥\83षà¥\8dठहरà¥\82 ($1 नेमस्पेस)',
 'allpagessubmit' => 'जाने',
 'allpagesprefix' => 'यी सुरुका अक्षरसहितका पृष्ठहरु हेर्ने:',
 'allpagesbadtitle' => 'दिएको पृष्ठ शीर्षक अमान्य, खाली वा गलत रुपमा अन्तर भाषा वा अन्तर विकी सम्बन्ध गरिएको थियो।  
@@ -1796,9 +1796,9 @@ $1',
 'special-categories-sort-abc' => 'वर्णानुक्रम अनुसार मिलाउने',
 
 # Special:DeletedContributions
-'deletedcontributions' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा à¤®à¥\87à¤\9fिà¤\8fà¤\95ा à¤¯à¥\8bà¤\97दानहरà¥\81',
-'deletedcontributions-title' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा à¤®à¥\87à¤\9fाà¤\87à¤\8fà¤\95ा à¤¯à¥\8bà¤\97दानहरà¥\81',
-'sp-deletedcontributions-contribs' => 'यà¥\8bà¤\97दानहरà¥\81',
+'deletedcontributions' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा à¤®à¥\87à¤\9fिà¤\8fà¤\95ा à¤¯à¥\8bà¤\97दानहरà¥\82',
+'deletedcontributions-title' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा à¤®à¥\87à¤\9fाà¤\87à¤\8fà¤\95ा à¤¯à¥\8bà¤\97दानहरà¥\82',
+'sp-deletedcontributions-contribs' => 'यà¥\8bà¤\97दानहरà¥\82',
 
 # Special:LinkSearch
 'linksearch' => 'बाह्य लिंक खोज',
@@ -2054,7 +2054,7 @@ proceed with caution.',
 'restriction-level-all' => 'कुनै स्तर',
 
 # Undelete
-'undelete' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81 à¤¹à¥\87रà¥\8dनà¥\81हà¥\8bस',
+'undelete' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82 à¤¹à¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d',
 'undeletepage' => 'मेटाइएका पृष्ठहरु हेर्ने अनि पुनर्स्थापित गर्ने',
 'undeletepagetitle' => "'''[[:$1|$1]]का मेटाइएका पुनरावलोकनहरु यसभित्र  छन् '''।",
 'viewdeletedpage' => 'मेटिएका पृष्ठहरू हेर्नुहोस्',
@@ -2090,8 +2090,8 @@ $3द्वारा $1को ($4को  समय $5 मा) मेटाइए
 'undeletedpage' => "'''$1लाई पूर्वावस्थामा ल्याइयो'''
 भर्खरै मेटाइएको रिकर्डहरु र पुनर्स्थापनाहरु हेर्न [[Special:Log/delete|मेटाइएको लग]]मा जानुहोस्।",
 'undelete-header' => 'भर्खर मेटिएका पृष्ठहरु हेर्न [[Special:Log/delete|मेटाइएका लग]]मा जानुहोस्।',
-'undelete-search-title' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81 à¤\96à¥\8bà¤\9cà¥\8dनà¥\81हà¥\8bस',
-'undelete-search-box' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81 à¤\96à¥\8bà¤\9cà¥\8dनà¥\81हà¥\8bस',
+'undelete-search-title' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82 à¤\96à¥\8bà¤\9cà¥\8dनà¥\81हà¥\8bसà¥\8d',
+'undelete-search-box' => 'मà¥\87à¤\9fिà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82 à¤\96à¥\8bà¤\9cà¥\8dनà¥\81हà¥\8bसà¥\8d',
 'undelete-search-prefix' => 'बाट सुरु हुने  पृष्ठहरु देखाउनुहोस :',
 'undelete-search-submit' => 'खोजी गर्नुहोस्',
 'undelete-no-results' => 'मेटिएका पृष्ठहरुको अभिलेखमा कुनै पनि मिल्दो पृष्ठहरु भेटिएन ।',
@@ -2116,19 +2116,19 @@ $3द्वारा $1को ($4को  समय $5 मा) मेटाइए
 
 # Contributions
 'contributions' => '{{GENDER:$1|प्रयोगकर्ता}}का योगदानहरू',
-'contributions-title' => '$1à¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¯à¥\8bà¤\97दानहरà¥\81',
-'mycontris' => 'यà¥\8bà¤\97दानहरà¥\81',
+'contributions-title' => '$1à¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¯à¥\8bà¤\97दानहरà¥\82',
+'mycontris' => 'यà¥\8bà¤\97दानहरà¥\82',
 'contribsub2' => ' {{GENDER:$3|$1}} ($2)को लागि',
 'nocontribs' => 'यस मापदण्ड अनुसार परिवर्त पाइएन।',
 'uctop' => '(वर्तमान)',
 'month' => 'महिना देखि (र पहिले):',
 'year' => 'वर्ष देखि( र पहिले):',
 
-'sp-contributions-newbies' => 'नयाà¤\81 à¤\96ाताà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤®à¤¾à¤¤à¥\8dर à¤¯à¥\8bà¤\97दानहरà¥\81 देखाउने',
+'sp-contributions-newbies' => 'नयाà¤\81 à¤\96ाताà¤\95à¥\8b à¤¯à¥\8bà¤\97दानहरà¥\82 à¤®à¤¾à¤¤à¥\8dर देखाउने',
 'sp-contributions-newbies-sub' => 'नयाँ खाताहरुको लागि',
-'sp-contributions-newbies-title' => 'नयाà¤\81 à¤\96ाताहरà¥\81à¤\95à¥\8b à¤²à¤¾à¤\97ि à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा à¤¯à¥\8bà¤\97दानहरà¥\81',
+'sp-contributions-newbies-title' => 'नयाà¤\81 à¤\96ाताहरà¥\82à¤\95à¥\8b à¤²à¤¾à¤\97ि à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा à¤¯à¥\8bà¤\97दानहरà¥\82',
 'sp-contributions-blocklog' => 'रोकावट लग',
-'sp-contributions-deleted' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा à¤¯à¥\8bà¤\97दानहरà¥\81 मेटाइयो',
+'sp-contributions-deleted' => 'पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95ा à¤¯à¥\8bà¤\97दानहरà¥\82 मेटाइयो',
 'sp-contributions-uploads' => 'उर्ध्वभरणहरु',
 'sp-contributions-logs' => 'लगहरु',
 'sp-contributions-talk' => 'वार्ता',
@@ -2137,7 +2137,7 @@ $3द्वारा $1को ($4को  समय $5 मा) मेटाइए
 नवीनतम रोकाइ गरेको लग प्रविष्टि सन्दर्भको निम्ति तल दिएकोछ:',
 'sp-contributions-blocked-notice-anon' => 'यो IP ठेगानालाई अहिले रोक लगाइएको छ।
 नवीनतम रोकाइ गरेको लग प्रविष्टि सन्दर्भको निम्ति तल दिएकोछ:',
-'sp-contributions-search' => 'यà¥\8bà¤\97दानहरà¥\81 खोज्नुहोस्',
+'sp-contributions-search' => 'यà¥\8bà¤\97दानहरà¥\82 खोज्नुहोस्',
 'sp-contributions-username' => 'IP ठेगाना वा प्रयोगकर्ता नाम :',
 'sp-contributions-toponly' => 'नवीनतम संशोधनका सम्पादनहरु देखाउनुहोस्',
 'sp-contributions-submit' => 'खोज',
@@ -2238,7 +2238,7 @@ $3द्वारा $1को ($4को  समय $5 मा) मेटाइए
 'blocklink' => 'रोक्ने',
 'unblocklink' => 'रोक फुकुवा गर्ने',
 'change-blocklink' => 'रोकमा परिवर्तन गर्ने',
-'contribslink' => 'यà¥\8bà¤\97दानहरà¥\81',
+'contribslink' => 'यà¥\8bà¤\97दानहरà¥\82',
 'emaillink' => 'इमेल पठाउने',
 'autoblocker' => 'तपाईंको आई पी ठेगाना  "[[User:$1|$1]]" द्वारा  भर्खरै प्रयोग गरिएकोले स्वत: बन्देज गरिएको।
 $1को बन्देजको कारण : "$2" हो',
@@ -2371,8 +2371,8 @@ $1को बन्देजको कारण : "$2" हो',
 'move-leave-redirect' => 'अनुप्रेषण (redirect) छोडिराख्ने',
 
 # Export
-'export' => 'पà¥\83षà¥\8dठहरà¥\81 à¤ªà¤ à¤¾à¤\87ने',
-'exportall' => 'सबà¥\88 à¤ªà¥\83षà¥\8dठहरà¥\81 निर्यात गर्ने',
+'export' => 'पà¥\83षà¥\8dठहरà¥\82 à¤¨à¤¿à¤°à¥\8dयात à¤\97रà¥\8dने',
+'exportall' => 'सबà¥\88 à¤ªà¥\83षà¥\8dठहरà¥\82 निर्यात गर्ने',
 'exportcuronly' => 'हालको संस्करण मात्र थप्ने ,पूरा इतिहास हैन',
 'export-submit' => 'निर्यात',
 'export-addcattext' => 'श्रेणीबाट पृष्ठ थप्ने :',
@@ -2489,7 +2489,7 @@ $1को बन्देजको कारण : "$2" हो',
 'tooltip-feed-atom' => 'यो पृष्ठको लागि Atom फिड',
 'tooltip-t-contributions' => 'यस प्रयोगकर्ताका योगदानहरूको सूची हेर्नुहोस्',
 'tooltip-t-emailuser' => 'यो प्रयोगकर्तालाई इमेल पठाउनुहोस्',
-'tooltip-t-upload' => 'फाà¤\87ल à¤\89रà¥\8dधà¥\8dवभरण(upload) गर्ने',
+'tooltip-t-upload' => 'फाà¤\87ल à¤\85पलà¥\8bड गर्ने',
 'tooltip-t-specialpages' => 'सबै विशेष पृष्ठहरूको सूची',
 'tooltip-t-print' => 'यो पृष्ठको मुद्रण योग्य संस्करण',
 'tooltip-t-permalink' => 'पृष्ठको यो पुनरावलोकनको लागि स्थाई लिङ्क',
@@ -2512,7 +2512,7 @@ $1को बन्देजको कारण : "$2" हो',
 'tooltip-watchlistedit-normal-submit' => 'शीर्षकहरू हटाउने',
 'tooltip-watchlistedit-raw-submit' => 'निगरानी सूची अध्यावधि गर्ने',
 'tooltip-recreate' => 'मेटिएको भए ता पनि यो पृष्ट पुन:निर्माण गर्नुहोस् ।',
-'tooltip-upload' => 'à¤\89रà¥\8dधà¥\8dवभरण(upload) सुरुगर्ने',
+'tooltip-upload' => 'à¤\85पलà¥\8bड सुरुगर्ने',
 'tooltip-rollback' => '"पूर्वरुप" ले यो पृष्ठको सम्पादन(हरू) खारेज गरी पृष्ठलाई एक क्लिकमा पछिल्लो सम्पादनमा पुर्‍याइदिन्छ',
 'tooltip-undo' => '"रद्द"ले पछिल्लो सम्पादन खारेज गरी पूर्वावलोकनमा देखाउँछ ।
 यसले सारांशमा कारण राख्न दिनेछ।',
@@ -3339,12 +3339,12 @@ $5
 * <span class="mw-specialpagerestricted">निषेधित विशेष पृष्ठहरु।</span>
 * <span class="mw-specialpagecached">क्याश गरिएका विशेष पृष्ठहरु (अध्यावधिक नहुन सक्छ)।</span>',
 'specialpages-group-maintenance' => 'मर्मत प्रतिवेदनहरु',
-'specialpages-group-other' => 'à¤\85रà¥\81 à¤µà¤¿à¤¶à¥\87ष à¤ªà¥\83षà¥\8dठहरà¥\81',
+'specialpages-group-other' => 'à¤\85रà¥\82 à¤µà¤¿à¤¶à¥\87ष à¤ªà¥\83षà¥\8dठहरà¥\82',
 'specialpages-group-login' => 'प्रवेशगर्नुहोस/खाता शृजना गर्नुहोस',
 'specialpages-group-changes' => 'भर्खरैका परिवर्तन र लगहरु',
 'specialpages-group-media' => 'मेडिया प्रतिवेदन र उर्ध्वभरणहरु',
 'specialpages-group-users' => 'प्रयोगकर्ता र अधिकारहरु',
-'specialpages-group-highuse' => 'à¤\89à¤\9aà¥\8dà¤\9a à¤ªà¥\8dरयà¥\8bà¤\97 à¤­à¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81',
+'specialpages-group-highuse' => 'à¤\89à¤\9aà¥\8dà¤\9a à¤ªà¥\8dरयà¥\8bà¤\97 à¤­à¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82',
 'specialpages-group-pages' => 'पृष्ठहरूको सूची:',
 'specialpages-group-pagetools' => 'पृष्ठ उपकरणहरू',
 'specialpages-group-wiki' => 'विकि डाटा र औजारहरु',
@@ -3352,7 +3352,7 @@ $5
 'specialpages-group-spam' => 'स्पाम उपकरणहरु',
 
 # Special:BlankPage
-'blankpage' => 'à¤\96ालà¥\80 à¤ªà¥\83षà¥\8dठहरà¥\81',
+'blankpage' => 'à¤\96ालà¥\80 à¤ªà¥\83षà¥\8dठहरà¥\82',
 'intentionallyblankpage' => 'यो पृष्ठ जानी जानी खाली राखिएको हो ।',
 
 # External image whitelist
@@ -3379,7 +3379,7 @@ $5
 'tags-hitcount' => '$1 {{PLURAL:$1|परिवर्तन|परिवर्तनहरु}}',
 
 # Special:ComparePages
-'comparepages' => 'पà¥\83षà¥\8dठहरà¥\81 à¤¦à¤¾ज्ने',
+'comparepages' => 'पà¥\83षà¥\8dठहरà¥\82 à¤¦à¤¾à¤\81ज्ने',
 'compare-page1' => 'पृष्ठ 1',
 'compare-page2' => 'पृष्ठ 2',
 'compare-rev1' => 'संशोधन 1',
@@ -3395,7 +3395,7 @@ $5
 'dberr-again' => 'केही समय पर्खिएर पुन: लोड हुन दिनुहोस् ।',
 'dberr-info' => '(डेटाबेस सर्वर $1सित सम्पर्क साध्न सकिंदैन)',
 'dberr-usegoogle' => 'तपाईले अहिले गुगलबाट खोज गर्न प्रयास गर्न सक्नुहुन्छ।',
-'dberr-outofdate' => 'कृपय स्मरणमा राख्नुहोस हाम्रा लेखहरुको सुची जुन उनीहरुले राखेका छन् त्यो अद्यावधिक नहुन सक्छ ।',
+'dberr-outofdate' => 'कृपया स्मरणमा राख्नुहोस् हाम्रा लेखहरूको सूची जुन उनीहरूले राखेका छन् त्यो अद्यावधिक नहुन सक्छ ।',
 'dberr-cachederror' => 'यो अनुरोध गरिएको पृष्ठको क्याशमा रहेका प्रतिलिपी हो , र अद्यावधिक नहुन सक्छ ।',
 
 # HTML forms
index deb2b3b..63e7512 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Annabel
+ * @author Arent
  * @author AvatarTeam
  * @author B4bol4t
  * @author Basvb
@@ -1493,6 +1494,7 @@ Probeer een andere zoekopdracht.',
 'search-result-score' => 'Relevantie: $1%',
 'search-redirect' => '(doorverwijzing $1)',
 'search-section' => '(subkop $1)',
+'search-file-match' => '(komt overeen met de inhoud van het bestand)',
 'search-suggest' => 'Bedoelde u: $1',
 'search-interwiki-caption' => 'Zusterprojecten',
 'search-interwiki-default' => '$1 resultaten:',
@@ -2629,7 +2631,7 @@ Het verwijderen van dit soort pagina's is met rechten beperkt om het per ongeluk
 'delete-warning-toobig' => 'Deze pagina heeft een lange bewerkingsgeschiedenis, meer dan $1 {{PLURAL:$1|versie|versies}}.
 Het verwijderen van deze pagina kan de werking van de database van {{SITENAME}} verstoren.
 Wees voorzichtig.',
-'deleting-backlinks-warning' => "'''Waarschuwing:''' andere pagina's verwijzen naar de pagina die u wilt verwijderen.",
+'deleting-backlinks-warning' => "'''Waarschuwing:''' andere pagina's gebruiken of verwijzen naar de pagina die u wilt verwijderen.",
 
 # Rollback
 'rollback' => 'Wijzigingen ongedaan maken',
@@ -2934,7 +2936,7 @@ Zie ook de [[Special:BlockList|blokkadelijst]] voor de op dit moment actieve blo
 'range_block_disabled' => 'De mogelijkheid voor beheerders om een groep IP-adressen te blokkeren is uitgeschakeld.',
 'ipb_expiry_invalid' => 'Ongeldige duur.',
 'ipb_expiry_temp' => 'Blokkades voor verborgen gebruikers moeten permanent zijn.',
-'ipb_hide_invalid' => 'Het is niet mogelijk deze gebruiker te verbergen; mogelijk heeft deze te veel bewerkingen gemaakt.',
+'ipb_hide_invalid' => 'Het is niet mogelijk deze gebruiker te verbergen;  deze heeft meer dan {{PLURAL:$1|een bewerking|$1 bewerkingen}} gedaan.',
 'ipb_already_blocked' => '"$1" is al geblokkeerd',
 'ipb-needreblock' => '$1 is al geblokkeerd.
 Wilt u de instellingen wijzigen?',
@@ -4381,4 +4383,6 @@ Vrijwel alle tekst tussen dubbele accolades wordt gesubstitueerd.',
 'expand_templates_generate_rawhtml' => 'Ruwe HTML weergeven',
 'expand_templates_preview' => 'Voorvertoning',
 
+# Unknown messages
+'uploadinvalidxml' => 'De XML in het geüploade bestand kon niet worden geparst.',
 );
index 060dd3d..987d00f 100644 (file)
@@ -942,10 +942,10 @@ $1 ଦ୍ଵାରା ପ୍ରତିରୋଧ କରାଯାଇଛି
 'newarticletext' => "ଆପଣ ଖୋଲିଥିବା ଲିଙ୍କଟିରେ ଏଯାଏଁ କିଛିବି ପୃଷ୍ଠା ନାହିଁ ।
 ଏହି ପୃଷ୍ଠାଟିକୁ ତିଆରି କରିବା ପାଇଁ ତଳ ବାକ୍ସରେ ଟାଇପ କରନ୍ତୁ (ଅଧିକ ଜାଣିବା ପାଇଁ [[{{MediaWiki:Helppage}}|ସାହାଯ୍ୟ ପୃଷ୍ଠା]] ଦେଖନ୍ତୁ) ।
 ଯଦି ଆପଣ ଏଠାକୁ ଭୁଲରେ ଆସିଯାଇଥାନ୍ତି ତେବେ ଆପଣଙ୍କ ବ୍ରାଉଜରର '''Back''' ପତିଟି ଦବାନ୍ତୁ ।",
-'anontalkpagetext' => "----''ଏହା ଏକ IP ଖାତା ଖୋଲିନଥିବା ବା ଖାତା ବ୍ୟବହାର କରିନଥିବା ଜଣେ ବେନାମି ସଭ୍ୟଙ୍କର ଆଲୋଚନା ପୃଷ୍ଠା ।
-ତà­\87ଣà­\81 à¬\86ମà­\8dଭà­\87 à¬¸à¬\82à¬\96à­\8dà­\9fା à¬¦à­\87à¬\87 à¬¸à­\82à¬\9aà­\80ତ IP à¬ à¬¿à¬\95ଣା à¬¦à­\87à¬\87 à¬¤à¬¾à¬¹à¬¾à¬\99à­\8dà¬\95à­\81 à¬\9cାଣିବା à¥¤
-ଏହି ପ୍ରକାରର IP ଠିକଣା ବହୁ ସଭ୍ୟଙ୍କ ଦେଇ ବଣ୍ଟା ବି ଯାଇପାରେ ।
-ଯଦି à¬\86ପଣ à¬\9cଣà­\87 à¬\85à¬\9cଣା à¬¸à¬­à­\8dà­\9f à¬\93 à¬­à¬¾à¬¬à­\81à¬\9bନà­\8dତି à¬\87à¬\86ଡà­\81 à¬¸à¬¿à¬\86ଡà­\81 à¬®à¬¤à¬¾à¬®à¬¤ à¬¸à¬¬à­\81 à¬\86ପଣà¬\99à­\8dà¬\95 à¬\89ପରà­\87 à¬¦à¬¿à¬\86ଯାà¬\87à¬\9bି à¬¤à­\87ବà­\87 à¬¦à­\9fାà¬\95ରି [[Special:UserLogin/signup|ନà­\82à¬\86 à¬\96ାତାà¬\9fିà¬\8f à¬\96à­\8bଲନà­\8dତà­\81]] à¬\95ିମà­\8dବା [[Special:UserLogin|à¬\86à¬\97ରà­\81 à¬¥à¬¿à¬¬à¬¾ à¬\96ାତାରà­\87 à¬²à¬\97 à¬\87ନ à¬\95ରନà­\8dତà­\81]] à¬¯à¬¾à¬¹à¬¾ à¬¬à­\87ନାମି à¬¸à¬­à­\8dà­\9fà¬\99à­\8dà¬\95à­\81 à¬¨à­\87à¬\87 à¬\89ପà­\81à¬\9cିଥିବା à¬¦à­\8dଵନà­\8dଦର à¬¸à¬®à¬¾à¬§à¬¾à¬¨ à¬\95ରିବ à¥¤''",
+'anontalkpagetext' => "----''ଏହା ଏକ ଖାତା ଖୋଲିନଥିବା ବା ଖାତା ବ୍ୟବହାର କରିନଥିବା ଜଣେ ବେନାମି ସଭ୍ୟଙ୍କର ଆଲୋଚନା ପୃଷ୍ଠା ।''
+ତେଣୁ ଆମ୍ଭେ ସଂଖ୍ୟା ଦେଇ ସୂଚୀତ IP ଠିକଣା ଦେଇ ତାଙ୍କୁ ଜାଣିବା ।
+ଏହି ପ୍ରକାରର ଗୋଟିଏ IP ଠିକଣା ବହୁ ସଭ୍ୟଙ୍କ ଦେଇ ବ୍ୟବହାର କରାଯାଇପାରେ । 
+ଯଦି à¬\86ପଣ à¬\9cଣà­\87 à¬\85à¬\9cଣା à¬¸à¬­à­\8dà­\9f à¬\93 à¬­à¬¾à¬¬à­\81à¬\9bନà­\8dତି à¬\87à¬\86ଡà­\81 à¬¸à¬¿à¬\86ଡà­\81 à¬®à¬¤à¬¾à¬®à¬¤ à¬¸à¬¬à­\81 à¬\86ପଣà¬\99à­\8dà¬\95 à¬ªà¬¾à¬\87à¬\81 à¬¦à¬¿à¬\86ଯାà¬\87à¬\9bି à¬¤à­\87ବà­\87 à¬¦à­\9fାà¬\95ରି [[Special:UserLogin/signup|ନà­\82à¬\86 à¬\96ାତାà¬\9fିà¬\8f à¬\96à­\8bଲନà­\8dତà­\81]] à¬\95ିମà­\8dବା [[Special:UserLogin|à¬\86à¬\97ରà­\81 à¬¥à¬¿à¬¬à¬¾ à¬\96ାତାରà­\87 à¬²à¬\97 à¬\87ନ à¬\95ରନà­\8dତà­\81]] à¬¯à¬¾à¬¹à¬¾ à¬¬à­\87ନାମି à¬¸à¬­à­\8dà­\9fà¬\99à­\8dà¬\95à­\81 à¬¨à­\87à¬\87 à¬\89ପà­\81à¬\9cିଥିବା à¬¦à­\8dଵନà­\8dଦର à¬¸à¬®à¬¾à¬§à¬¾à¬¨ à¬\95ରିବ à¥¤",
 'noarticletext' => 'ଏହି ପୃଷ୍ଠାଟିରେ କିଛି ବି ଲେଖା ନାହିଁ ।
 ଆପଣ [[Special:Search/{{PAGENAME}}|ଏହି ଲେଖାଟିର ନାଆଁ]] ବାକି ପୃଷ୍ଠାମାନଙ୍କରେ ଖୋଜି ପାରନ୍ତି,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}ରେ ଯୋଡ଼ାଯାଇଥିବା ବାକି ପୃଷ୍ଠାସବୁକୁ ଖୋଜି ପାରନ୍ତି],
@@ -1368,7 +1368,7 @@ $1",
 'prefs-email' => 'ଇ-ମେଲ ବିକଳ୍ପମାନ',
 'prefs-rendering' => 'ଦେଖଣା',
 'saveprefs' => 'ସାଇତିବେ [Save]',
-'restoreprefs' => 'ଆପେଆପେ ଥିବା ମୂଳ ସଜାଣିକୁ ଫେରିଯିବେ',
+'restoreprefs' => '(ସମସ୍ତ ସ୍ଥାନରେ) ଆରମ୍ଭରୁ ଥିବା ମୂଳ ସଜାଣିକୁ ଫେରିଯିବେ',
 'prefs-editing' => 'ସମ୍ପାଦନା',
 'rows' => 'ଧାଡ଼ି:',
 'columns' => 'ସ୍ତମ୍ଭସବୁ:',
@@ -2235,8 +2235,7 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 'emailuser-title-target' => '{{GENDER:$1|user}}କୁ ଇ-ମେଲ କରନ୍ତୁ',
 'emailuser-title-notarget' => 'ବ୍ୟବହାରକାରୀ କୁ ଇ-ମେଲ',
 'emailpage' => 'ଇ-ମେଲ ବ୍ୟବହାରକାରୀ',
-'emailpagetext' => 'ଥିବା ଫର୍ମ ବ୍ୟବହାର କରି ଆପଣ ଏହି {{GENDER:$1|user}} ଇ-ମେଲ କରିପାରିବେ ।
-[[Special:Preferences|ଆପଣଙ୍କ ପସନ୍ଦ]]ରେ ଥିବା ଇ-ମେଲ ଠିକଣା ପ୍ରେରକ ଭାବରେ ଦେଖାଯିବ, ତେଣୁ ଚିଠି ପାଇଥିବା ସଭ୍ୟ ଆପଣଙ୍କୁ ସିଧା ସଳଖ ଉତ୍ତର ଦେଇପାରିବ ।',
+'emailpagetext' => 'ଆପଣ ତଳେ ଥିବା ଫର୍ମ ବ୍ୟବହାର କରି ଏହି {{GENDER:$1|ସଭ୍ୟ}}ଙ୍କୁ ଇମେଲ କରିପାରିବେ । [[Special:Preferences|ଆପଣଙ୍କ ପସନ୍ଦ]]ରେ ଥିବା ଇମେଲ ଠିକଣା "ପ୍ରେରକ" ଭାବରେ ଦେଖାଯିବ, ତେଣୁ ଇମେଲ ପାଇଥିବା ସଭ୍ୟ ଆପଣଙ୍କୁ ସିଧା ସଳଖ ଉତ୍ତର ଦେଇପାରିବେ ।',
 'usermailererror' => 'ମେଲ ଭିତରେ କିଛି ଅସୁବିଧା ଅଛି ବୋଲି ଜାଣିବାକୁ ମିଳିଲା:',
 'defemailsubject' => '{{SITENAME}} "$1" ସଭ୍ୟଙ୍କ ଠାରୁ ଇ-ମେଲ କରିବେ',
 'usermaildisabled' => 'ବ୍ୟବହାରକାରୀଙ୍କ ଈ-ମେଲ ଅଚଳ କରାଗଲା',
index 6d52eaf..36de77f 100644 (file)
@@ -140,9 +140,9 @@ $messages = array(
 'category-empty' => '"Die Sachgrubb hodd kä Said odda Medje."',
 'hidden-categories' => '{{PLURAL:$1|Vaschdegldi Sachgrubb|Vaschdeglde Sachgrubbe}}',
 'hidden-category-category' => 'Verschdegelde Grubbe',
-'category-subcat-count' => '{{PLURAL:$2|Die Sachgrubb hod die Unnagrubb.|Die Sachgrubb hod {{PLURAL:$1|Unnagrubb|$1 Unnagrubbe}}, vun gsomd $2.}}',
+'category-subcat-count' => '{{PLURAL:$2|Die Sachgrubb hodd die Unnagrubb.|Die Sachgrubb hodd {{PLURAL:$1|Unnagrubb|$1 Unnagrubbe}}, vun gsomd $2.}}',
 'category-subcat-count-limited' => 'Die Sachgrubb hod die {{PLURAL:$1|Unagrubb|$1 Unagrubbe}}.',
-'category-article-count' => '{{PLURAL:$2|Indɐ Sachgrubb hodds die Said.|Die {{PLURAL:$1|Said|$1 Saide}} gibbds inde Sachgrubb, vun gsomd $2.}}',
+'category-article-count' => '{{PLURAL:$2|Die Sachgrubb hodd bloß die Said.|Die {{PLURAL:$1|Said|$1 Saide}} gibbds inde Sachgrubb, vun gsomd $2.}}',
 'category-article-count-limited' => 'Die {{PLURAL:$1|Said|$1 Saide}} hodds inde Sachgrubb.',
 'category-file-count' => "{{PLURAL:$2|Die Sachgrubb hodd ä Said.|Die {{PLURAL:$1|Said isch änni vun $2 Saide:|S'werren $1 vun gsomd $2 Saide gzaischd:}}}}",
 'category-file-count-limited' => 'Die {{PLURAL:$1|Dadai|$1 Dadije}} hodds inde Sachgrubb.',
@@ -217,7 +217,7 @@ $messages = array(
 'articlepage' => 'Inhald õgugge',
 'talk' => 'Dischbediere',
 'views' => 'Uffruf',
-'toolbox' => 'Wergzaischkischd',
+'toolbox' => 'Wergzaisch',
 'userpage' => 'Middawaidasaid õgugge',
 'projectpage' => 'Brojegdsaid õgugge',
 'imagepage' => 'Dadaisaid õgugge',
@@ -348,7 +348,7 @@ S konn soi, dasses ä odda mea Zaische drin hodd, wu im Tidl vunde Said nedd gbr
 'yourname' => 'Middawaidanõme:',
 'yourpassword' => 'Kennword:',
 'yourpasswordagain' => 'Kennword nomol oigewe:',
-'remembermypassword' => 'Moi Kennword uffm Rechna merge (hegschdns fa $1 {{PLURAL:$1|Daach|Daach}})',
+'remembermypassword' => 'Moi Kennword uffm Brausa merge (hegschdns fa $1 {{PLURAL:$1|Daach|Daach}})',
 'login' => 'Õmelde',
 'nav-login-createaccount' => 'Õmelde / Kondo õleesche',
 'loginprompt' => 'Cookies mugschd fa {{SITENAME}} schun õhawe.',
@@ -374,7 +374,7 @@ Nemmen onnare.',
 'passwordtooshort' => 'Kennword muss {{PLURAL:$1|1 Zaische|$1 Zaische}} hawe.',
 'password-name-match' => 'Doi Kennword deaf nedd so heese wie du.',
 'password-login-forbidden' => 'De Nõme uns Kennword sinn fabode.',
-'mailmypassword' => 'Naijs Kennword iwwa E-Mail schigge',
+'mailmypassword' => 'Kennword zriggsedze',
 'accountcreated' => 'Kondo õgleeschd',
 'login-abort-generic' => 'Hodd nedd gklabbd - Abgbroche',
 'loginlanguagelabel' => 'Schbrooch: $1',
@@ -500,8 +500,8 @@ Ealaidarung: '''({{int:cur}})''' = Unnaschied zu jezd,
 '''({{int:last}})''' = Unnaschied zude vorischi Ausgab, '''{{int:minoreditletter}}''' = gleni Ännarung.",
 'history-fieldset-title' => 'Gugg die Gschischd',
 'history-show-deleted' => 'Bloß gleschdi Saide zaische',
-'histfirst' => 'Ã\84ldschde',
-'histlast' => 'Naijschde',
+'histfirst' => 'äldschde',
+'histlast' => 'naijschde',
 'historyempty' => '(lea)',
 
 # Revision feed
@@ -542,6 +542,7 @@ Ealaidarung: '''({{int:cur}})''' = Unnaschied zu jezd,
 'compareselectedversions' => 'Ausgawe midnonna vaglaische',
 'showhideselectedversions' => 'Zaisch/Vaschdeggl gwehldi Ausgawe',
 'editundo' => 'zriggnemme',
+'diff-multi' => '({{PLURAL:$1|Ä dzwische lischndi Ännarung|$1 dzwische lischende Ännarunge}} by {{PLURAL:$2|än Middawaida|$2 Middawaida}} nedd gzaischd)',
 
 # Search results
 'searchresults' => 'Eagewnis nochgugge',
@@ -549,8 +550,8 @@ Ealaidarung: '''({{int:cur}})''' = Unnaschied zu jezd,
 'notextmatches' => 'Kä Iwwaoinschdimmunge midm Tegschd',
 'prevn' => 'ledschda {{PLURAL:$1|$1}}',
 'nextn' => 'negschd {{PLURAL:$1|$1}}',
-'prevn-title' => 'Frijari $1 {{PLURAL:$1|Eagewnis|Eagewnis}}',
-'nextn-title' => 'Negschdi $1 {{PLURAL:$1|Eagewnis|Eagewnis}}',
+'prevn-title' => 'Frijari $1 {{PLURAL:$1|Eagewniss|Eagewnisse}}',
+'nextn-title' => 'Negschdi $1 {{PLURAL:$1|Eagewniss|Eagewnisse}}',
 'shown-title' => 'Zaisch $1 {{PLURAL:$1|Eagewnis}} bro Said',
 'viewprevnext' => 'Gugg ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Dohods ä Said \"[[:\$1]]\".'''",
@@ -600,7 +601,6 @@ Ealaidarung: '''({{int:cur}})''' = Unnaschied zu jezd,
 'rows' => 'Zaile',
 'columns' => 'Schbalde',
 'searchresultshead' => 'Nochgugge',
-'resultsperpage' => 'Dreffa bro Said',
 'stub-threshold-disabled' => 'Abgschdeld',
 'guesstimezone' => 'Aus em Browser iwwernemme',
 'timezoneregion-africa' => 'Afrika',
@@ -684,7 +684,7 @@ Doi Address werd ned gzaischd, wõnse midda babbln.',
 'rclistfrom' => 'Zaisch die ledschde Ännarunge ab $1',
 'rcshowhideminor' => 'Glenni Ännarunge $1',
 'rcshowhidebots' => 'Bots $1',
-'rcshowhideliu' => 'Õgmelda Middawaida $1',
+'rcshowhideliu' => 'Õgmelde Middawaida $1',
 'rcshowhideanons' => 'Ned õgmelda Middawaida $1',
 'rcshowhidepatr' => '$1 iwabriefde Ännarunge',
 'rcshowhidemine' => 'Moi Beawaidunge $1',
@@ -698,7 +698,7 @@ Doi Address werd ned gzaischd, wõnse midda babbln.',
 'boteditletter' => 'B',
 'rc_categories' => 'Oigschrengd uff Sachgrubbe (abgdeeld middm "|")',
 'rc_categories_any' => 'Ebbes',
-'rc-enhanced-expand' => 'Änzlhaide zaische (dozu brauchds JavaScript)',
+'rc-enhanced-expand' => 'Änzlhaide zaische',
 'rc-enhanced-hide' => 'Õgawe vaschdeggle',
 
 # Recent changes linked
@@ -941,7 +941,7 @@ Der Schutzstatus vun derre Said kannscht ännere, awwer des hot kää Aifluss uf
 'contributions' => '{{GENDER:$1|Wassa gemachd hodd}}',
 'contributions-title' => 'Middawaidabaidräsch vun $1',
 'mycontris' => 'Baidräsch',
-'contribsub2' => 'Fa $1 ($2)',
+'contribsub2' => 'Fa {{GENDER:$3|$1}} ($2)',
 'uctop' => '(geschewedisch)',
 'month' => 'än Monad (un frieja):',
 'year' => 'Abm Johr (un frieja):',
@@ -1117,7 +1117,7 @@ Konnschdn Grund inde Zommefassung õgewwe.",
 'file-info-size' => '$1 × $2 Pixels, Dadaigreß: $3, MIME-Type: $4',
 'file-nohires' => 'Ke heheri Ufflesung vafieschba.',
 'svg-long-desc' => 'SVG-Datei, Grundgreß $1 × $2 Pixels, Dadaigreß: $3',
-'show-big-image' => 'Volli Ufflesung',
+'show-big-image' => 'Uaschbringlischi Dadai',
 
 # Special:NewFiles
 'showhidebots' => '(Bots $1)',
@@ -1175,6 +1175,16 @@ Wonn die Dadai vaännad worre isch, donn konns soi, daß zusedzlischi Õgawe fa
 'specialpages-group-pagetools' => 'Wergzaisch fa Saide',
 'specialpages-group-wiki' => 'Daade un Wergzaisch',
 
+# External image whitelist
+'external_image_whitelist' => " #Loss die Zail wiese isch.<pre>
+#Geb unne Deel vunde regulere Ausdrigg (de Deel zwischede //) oi.
+#Die werren midde URLs vun aissare Bilda vaglische.
+#Die wu passen werren gzaischd un schunschd sieschdn n'Ling'g.
+#Zaile, wu midd # ofongen sinnen Kommenda.
+#Glä- odda Großschraiwung isch do egal.
+
+#Deel vun regulere Ausdrigg nochde Zeil oidrache. Loss die Zail do uuvaännad.</pre>",
+
 # Special:Tags
 'tag-filter' => '[[Special:Tags|Bschildarungs]]-Filda:',
 'tags-edit' => 'bearwaide',
index 601896c..6f8474f 100644 (file)
@@ -2818,7 +2818,7 @@ By przejrzeć listę obecnie aktywnych blokad, przejdź na stronę [[Special:Blo
 'range_block_disabled' => 'Możliwość blokowania zakresu adresów IP została wyłączona.',
 'ipb_expiry_invalid' => 'Błędny czas wygaśnięcia blokady.',
 'ipb_expiry_temp' => 'Ukryte blokowanie nazwy użytkownika należy wykonać trwale.',
-'ipb_hide_invalid' => 'Ukrycie konta tego użytkownika nie jest możliwe, prawdopodobnie wykonał on zbyt wiele edycji.',
+'ipb_hide_invalid' => 'Ukrycie konta tego użytkownika nie jest możliwe, wykonał on więcej niż {{PLURAL:$1|jedną edycję|$1 edycje|$1 edycji}}.',
 'ipb_already_blocked' => '„$1” jest już zablokowany',
 'ipb-needreblock' => '$1 jest już zablokowany. Czy chcesz zmienić ustawienia blokady?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Inna blokada|Inne blokady}}',
@@ -4008,7 +4008,10 @@ Możesz także użyć [[Special:EditWatchlist|standardowego edytora obserwowanyc
 'version-ext-colheader-license' => 'Licencja',
 'version-ext-colheader-description' => 'Opis',
 'version-ext-colheader-credits' => 'Autorzy',
+'version-license-title' => 'Licencja dla $1',
 'version-license-not-found' => 'Nie znaleziono szczegółowych informacji licencyjnych dla tego rozszerzenia.',
+'version-credits-title' => 'Lista autorów dla $1',
+'version-credits-not-found' => 'Dla tego rozszerzenia nie ma szczegółowych informacji o autorach.',
 'version-poweredby-credits' => "Ta wiki korzysta z oprogramowania '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001‐$1 $2.",
 'version-poweredby-others' => 'inni',
 'version-poweredby-translators' => 'tłumacze translatewiki.net',
index 4862297..0cc1760 100644 (file)
@@ -1123,6 +1123,7 @@ Sòn a l'é normalment causà da l'andèje dapress a na veja liura stòrica a na
 'search-result-score' => 'Arlevansa: $1%',
 'search-redirect' => '(ridiression $1)',
 'search-section' => '(session $1)',
+'search-file-match' => "(a corëspond al contnù d'archivi)",
 'search-suggest' => 'Vorìi-lo pa dì: $1',
 'search-interwiki-caption' => 'Proget frej',
 'search-interwiki-default' => 'Arzultà da $1:',
@@ -2238,7 +2239,7 @@ Lë scancelassion ëd pàgine parèj a l'é stàita limità për evité ch'as fa
 'delete-warning-toobig' => "Sta pàgina-sì a l'ha na stòria motobin longa, bele pì che $1 {{PLURAL:$1|revision|revision}}.
 A scancelela as peul fesse darmagi a j'operassion dla base ëd dat ëd {{SITENAME}};
 ch'a daga da ment a lòn ch'a fa.",
-'deleting-backlinks-warning' => "'''Avis:''' D'àutre pàgine a l'han na liura a la pàgina che chiel a veul ëscancelé.",
+'deleting-backlinks-warning' => "'''Avis:''' D'àutre pàgine a l'han na liurao a transcludo a la pàgina che chiel a veul ëscancelé.",
 
 # Rollback
 'rollback' => 'Gavé via le modìfiche',
@@ -2537,7 +2538,7 @@ coj che sio ij blocagi ativ al dì d'ancheuj.",
 'range_block_disabled' => "La possibilità che n'aministrator a fasa dij blocagi a ragg a l'é disabilità.",
 'ipb_expiry_invalid' => 'Temp dë scadensa nen bon.',
 'ipb_expiry_temp' => 'Ij blocagi djë stranòm ëstërmà a devo esse përmanent.',
-'ipb_hide_invalid' => 'Impossìbil scancelé ës cont; a podrìa avèj tròpe modìfiche.',
+'ipb_hide_invalid' => "Impossìbil scancelé ës cont; a l'ha pi ëd {{PLURAL:$1|na modìfica|$1 modìfiche}}.",
 'ipb_already_blocked' => "«$1» a l'é già blocà",
 'ipb-needreblock' => "$1 a l'é già blocà. Veul-lo cambié j'ampostassion?",
 'ipb-otherblocks-header' => '{{PLURAL:$1|Àutr|Àutri}} blocagi',
index 575b40c..e45f38d 100644 (file)
@@ -58,6 +58,7 @@
  * @author Iniquity
  * @author Iwan Novirion
  * @author Jon Harald Søby
+ * @author Joseph
  * @author Karduelis
  * @author Kazu89
  * @author Kghbln
@@ -1557,7 +1558,7 @@ Parameters:
 * $3 - a password (randomly generated)
 * $4 - a URL to the wiki ('<' + server name + script name + '>')
 * $5 - (Unused) number of days to password expiry date",
-'login-throttled' => 'Error message shown at [[Special:UserLogin]] after the user has tried to login with incorrect password too many times; also used by [[Special:ChangeEmail]] and [[Special:ChangePassword]].
+'login-throttled' => 'Error message shown at [[Special:UserLogin]] after the user has tried to login with incorrect password too many times.
 
 The user has to wait a certain time before trying to log in again.
 
@@ -1575,7 +1576,8 @@ Parameters:
 
 This is a protection against robots trying to find the password by trying lots of them.
 The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].
-This message is used in html.',
+This message is used in html.
+{{identical|Login throttled}}',
 'login-abort-generic' => 'The generic unsuccessful login message is used unless otherwise specified by hook writers',
 'loginlanguagelabel' => 'Used on [[Special:UserLogin]] if $wgLoginLanguageSelector is true. Parameters:
 * $1 - a pipe-separated list built from the names that appear in the message {{msg-mw|Loginlanguagelinks}}.
@@ -1616,7 +1618,26 @@ Parameters:
 'resetpass-wrong-oldpass' => 'Error message shown on [[Special:ChangePassword]] when the old password is not valid.',
 'resetpass-temp-password' => 'The label of the input box for the temporary password (received by email) on the form displayed after logging in with a temporary password.',
 'resetpass-abort-generic' => 'Generic error message shown on [[Special:ChangePassword]] when an extension aborts a password change from a hook.',
+'changepassword-throttled' => 'Error message shown at [[Special:ChangePassword]] after the user has tried to login with incorrect password too many times.
+
+The user has to wait a certain time before trying to log in again.
+
+Parameters:
+* $1 - the time to wait before the next login attempt. Automatically formatted using the following duration messages:
+** {{msg-mw|Duration-millennia}}
+** {{msg-mw|Duration-centuries}}
+** {{msg-mw|Duration-decades}}
+** {{msg-mw|Duration-years}}
+** {{msg-mw|Duration-weeks}}
+** {{msg-mw|Duration-days}}
+** {{msg-mw|Duration-hours}}
+** {{msg-mw|Duration-minutes}}
+** {{msg-mw|Duration-seconds}}
 
+This is a protection against robots trying to find the password by trying lots of them.
+The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].
+This message is used in html.
+{{identical|Login throttled}}',
 # Special:PasswordReset
 'passwordreset' => 'Title of [[Special:PasswordReset]].
 {{Identical|Reset password}}',
@@ -1692,7 +1713,26 @@ Parameters:
 'changeemail-cancel' => 'Cancel button on [[Special:ChangeEmail]]
 
 {{Identical|Cancel}}',
+'changeemail-throttled' => 'Error message shown at [[Special:ChangeEmail]] after the user has tried to login with incorrect password too many times.
 
+The user has to wait a certain time before trying to log in again.
+
+Parameters:
+* $1 - the time to wait before the next login attempt. Automatically formatted using the following duration messages:
+** {{msg-mw|Duration-millennia}}
+** {{msg-mw|Duration-centuries}}
+** {{msg-mw|Duration-decades}}
+** {{msg-mw|Duration-years}}
+** {{msg-mw|Duration-weeks}}
+** {{msg-mw|Duration-days}}
+** {{msg-mw|Duration-hours}}
+** {{msg-mw|Duration-minutes}}
+** {{msg-mw|Duration-seconds}}
+
+This is a protection against robots trying to find the password by trying lots of them.
+The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].
+This message is used in html.
+{{identical|Login throttled}}',
 # Special:ResetTokens
 'resettokens' => '{{doc-special|ResetTokens}}
 In this case "token" may be translated as "key", or similar.
@@ -3612,7 +3652,8 @@ Preceded by legend example {{msg-mw|Recentchanges-legend-plusminus}}.',
 'recentchanges-legend-heading' => 'Used as a heading for legend box on [[Special:RecentChanges]] and [[Special:Watchlist]].
 {{Identical|Legend}}',
 'recentchanges-legend-newpage' => 'Used as legend in [[Special:RecentChanges]]. Preceded by {{msg-mw|Recentchanges-label-newpage}}.',
-'recentchanges-legend-plusminus' => 'A plus/minus sign with a number for the legend.',
+'recentchanges-legend-plusminus' => '{{optional}}
+A plus/minus sign with a number for the legend.',
 'rcnotefrom' => 'This message is displayed at [[Special:RecentChanges]] when viewing recentchanges from some specific time.
 
 The corresponding message is {{msg-mw|Rclistfrom}} (without split of date and time, [[bugzilla:19104|Bug 19104]]).
@@ -5615,7 +5656,7 @@ See also:
 * $1 - the upper limit of number of revisions
 See also:
 * {{msg-mw|Delete-toobig}}',
-'deleting-backlinks-warning' => 'A warning shown when a page that is being deleted has links to it.',
+'deleting-backlinks-warning' => 'A warning shown when a page that is being deleted has at least one link to it or is transcluded in at least one page.',
 
 # Rollback
 'rollback' => '{{Identical|Rollback}}',
@@ -6597,7 +6638,8 @@ See also:
 * {{msg-mw|Ip range toolarge}}',
 'ipb_expiry_invalid' => 'Used as error message in [[Special:Block]].',
 'ipb_expiry_temp' => 'Warning message displayed on [[Special:BlockIP]] if the option "hide username" is selected but the expiry time is not infinite.',
-'ipb_hide_invalid' => 'Used as error message in [[Special:Block]].',
+'ipb_hide_invalid' => 'Used as error message in [[Special:Block]].
+* $1 - Number of edits (Value of [[mw:Manual:$wgHideUserContribLimit]])',
 'ipb_already_blocked' => '{{Identical|$1 is already blocked}}',
 'ipb-needreblock' => 'Used in [[Special:Block]].
 * $1 - target username',
@@ -9565,7 +9607,9 @@ Most languages use a space, but some Asian languages, such as Thai and Chinese,
 'percent' => '{{optional}}',
 'parentheses' => '{{optional}}',
 'brackets' => '{{Optional}}',
-'quotation-marks' => 'Quotation marks, for quoting, sometimes titles etc., depending on the language.
+'quotation-marks' => '{{optional}}
+
+Quotation marks, for quoting, sometimes titles etc., depending on the language.
 
 See: [[w:Non-English usage of quotation marks|Non-English usage of quotation marks on Wikipedia]].
 
index a8347e0..41b4d33 100644 (file)
@@ -1385,6 +1385,7 @@ Detalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'search-result-score' => 'Relevanță: $1%',
 'search-redirect' => '(redirecționare către $1)',
 'search-section' => '(secțiunea $1)',
+'search-file-match' => '(se regăsește în conținutul fișierului)',
 'search-suggest' => 'V-ați referit la: $1',
 'search-interwiki-caption' => 'Proiecte înrudite',
 'search-interwiki-default' => '$1 rezultate:',
@@ -2490,7 +2491,7 @@ Accesați $2 pentru o listă cu elementele recent șterse.',
 'delete-warning-toobig' => 'Această pagină are un istoric al modificărilor mult prea mare, cu mai mult de $1 {{PLURAL:$1|versiune|versiuni|de versiuni}}.
 Ștergerea sa poate afecta baza de date a sitului {{SITENAME}};
 acționați cu precauție.',
-'deleting-backlinks-warning' => "'''Atenție:''' Alte pagini se leagă de pagina pe care doriți să o ștergeți.",
+'deleting-backlinks-warning' => "'''Atenție:''' Alte pagini se leagă sau sunt transcluse din pagina pe care doriți să o ștergeți.",
 
 # Rollback
 'rollback' => 'Editări de revenire',
@@ -2788,7 +2789,7 @@ Jurnalul suprimărilor este indicat mai jos:',
 'range_block_disabled' => 'Abilitatea dezvoltatorilor de a bloca serii de adrese este dezactivată.',
 'ipb_expiry_invalid' => 'Dată de expirare invalidă.',
 'ipb_expiry_temp' => 'Blocarea numelor de utilizator ascunse trebuie să fie permanentă.',
-'ipb_hide_invalid' => 'Imposibil de a suprima acest cont; acesta poate avea prea multe modificări.',
+'ipb_hide_invalid' => 'Imposibil de suprimat acest cont; acesta are mai mult de {{PLURAL:$1|o modificare|$1 modificări|$1 de modificări}}.',
 'ipb_already_blocked' => '„$1” este deja blocat',
 'ipb-needreblock' => '$1 este deja blocat. Doriți să modificați parametrii?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Altă blocare|Alte blocări}}',
index a013382..2e9ce96 100644 (file)
@@ -241,7 +241,7 @@ $messages = array(
 'articlepage' => "Vide 'a pàgene de le condenute",
 'talk' => "'Ngazzaminde",
 'views' => 'Visite',
-'toolbox' => 'Cascette de le struminde',
+'toolbox' => 'Struminde',
 'userpage' => "Vide a pàgene de l'utende",
 'projectpage' => 'Vide a pàgene de le pruggette',
 'imagepage' => 'Vide a pàgene de le file',
@@ -436,7 +436,7 @@ L\'amministratore ca l\'ha bloccate dèje sta spiegazione: "$3".',
 'invalidtitle-knownnamespace' => 'Titole invalide cu \'u namespace "$2" e teste "$3"',
 'invalidtitle-unknownnamespace' => 'Titele invalide cu numere de namespace scanusciute $1 e teste "$2"',
 'exception-nologin' => 'Non ge sì collegate',
-'exception-nologin-text' => "Sta pàgene o azione richiede ca a trasè jndr'à sta uicchi.",
+'exception-nologin-text' => "Pe piacere [[Special:Userlogin|tràse]] pe avè l'accesse a sta pàgene o a sta azione.",
 
 # Virus scanner
 'virus-badscanner' => "Configurazione ca fece schife: Virus scanner scanusciute: ''$1''",
@@ -540,7 +540,7 @@ Mitta n'otra vota.",
 'passwordtooshort' => 'Le password onne a essere almene {{PLURAL:$1|1 carattere|$1 carattere}}.',
 'password-name-match' => "'A password toje adda essere diverse da 'u nome utende tue.",
 'password-login-forbidden' => "L'ause de stu nome utende e passuord onne state vietate.",
-'mailmypassword' => 'Passuord nova pe e-mail',
+'mailmypassword' => "Azzere 'a passuord",
 'passwordremindertitle' => 'Passuord temboranea nova pe {{SITENAME}}',
 'passwordremindertext' => "Quacchedune (pò essere tu, da quiste indirizze IP \$1) ha cerchete 'na nova password pe {{SITENAME}} (\$4).
 'Na password temboranea pe l'utende \"\$2\" ha state ccrejete e ha state 'mbostete a \"\$3\".
@@ -553,16 +553,16 @@ Ce quacche otre 'nvece ha fatte sta rechieste, o ce tu t'è recurdate 'a passwor
 'passwordsent' => "'Na nova passuord ha state mannete a l'indirizze e-mail reggistrete pe \"\$1\".
 Pe piacere, colleghete n'otra vota quanne l'è ricevute.",
 'blocked-mailpassword' => "L'indirizze IP tue jè blocchete pe le cangiaminde e accussì tu non ge puè ausà 'a funzione de recupere d'a password pe prevenìe l'abbuse.",
-'eauthentsent' => "'N'e-mail de conferme ha state mannete a l'indirizze ca tu è ditte.
-Apprime ca otre e-mail avènene mannete a 'u cunde tue, tu ha seguì le 'struzione ca stonne jndr'à l'e-mail, pe confermà l'iscrizione.",
+'eauthentsent' => "'N'e-mail de conferme ha state mannate a l'indirizze ca tu è ditte.
+Apprime ca otre e-mail avènene mannate a 'u cunde tune, tu ha seguì le 'struzione ca stonne jndr'à l'e-mail, pe confermà ca 'u cunde jè une de le tune.",
 'throttled-mailpassword' => "'Nu arrecordatore de passuord ha stete già mannate jndr'à {{PLURAL:$1|l'urtema ore|l'urteme $1 ore}}.
 Pe prevenì l'abbuse, sulamende 'nu arrecordatore de passuord avene mannate ogne {{PLURAL:$1|ore|$1 ore}}.",
 'mailerror' => "Errore mannanne 'a mail: $1",
 'acct_creation_throttle_hit' => "Le visitature de sta Uicchi ca stonne ausene stu indirizze IP onne ccrejete {{PLURAL:$1|'nu cunde utende|$1 cunde utinde}} jndr'à l'urteme giurne, e onne raggiunde 'u numere massime ca se pò fà jndr'à stu periode.
 'U resultete jè ca le visitature ca stonne ausene stu indirizze IP non ge ponne ccrejà otre cunde utinde nuève jndr'à stu mumende.",
-'emailauthenticated' => "L'indirizze e-mail ca ne date ha state autendichete 'u sciurne $2 a le $3.",
-'emailnotauthenticated' => "L'indirizze e-mail tue non g'a state angore autendichete.
-Nisciuna mail t'avène mannete pe tutte le seguende dettaglie.",
+'emailauthenticated' => "L'indirizze e-mail ca ne date ha state confermate 'u sciurne $2 a le $3.",
+'emailnotauthenticated' => "L'indirizze e-mail tune non g'a state angore confermate.
+Nisciuna mail t'avène mannate pe tutte le seguende dettaglie.",
 'noemailprefs' => "Specifiche 'n'indirizze e-mail pe ste dettaglie ca onne essere fatiete.",
 'emailconfirmlink' => "Conferme l'indirizze e-mail tue",
 'invalidemailaddress' => "L'indirizze e-mail non ge pò essere accettete cumme l'è scritte purcè tène 'nu formete invalide.
@@ -1004,18 +1004,19 @@ Tu puè vedè ste differenze; pò essere ca stonne cchiù 'mbormaziune jndr'à l
 Otre amministrature sus a {{SITENAME}}ponne angore trasè jndr'à 'u condenute scunnute e 'u ponne scangellà 'n'otra vote ausanne st'inderfacce, senze 'mbostà otre restriziune.",
 'revdelete-confirm' => 'Pe piacere conferme ca tu vuè ccu face sta cose, ce tu è capite le conseguenze e ce quidde ca ste face jè in accorde cu le [[{{MediaWiki:Policy-url}}|reghele]] de Uicchipèdie.',
 'revdelete-suppress-text' => "'A soppressione adda essere ausate '''sulamende''' jndr'à le case seguende:
+* 'Mbormaziune potenzialmende offenzive
 * Date personale inopportune
-*: ''indirizze, numere de telefono, codice fiscale, ecc.''",
+*: ''indirizze, numere de telefono, codece fiscale, ecc.''",
 'revdelete-legend' => "'Mboste le restriziune sus 'a visibbilità",
-'revdelete-hide-text' => "Scunne 'u teste d'a revisione",
+'revdelete-hide-text' => "Teste d'a revisione",
 'revdelete-hide-image' => "Scunne 'u codenute d'u fail",
 'revdelete-hide-name' => 'Scunne azione e obbiettive',
-'revdelete-hide-comment' => 'Scunne le commende de le cangiaminde',
-'revdelete-hide-user' => "Scunne 'u nome utende/IP de quidde ca ha fatte 'u cangiamende",
+'revdelete-hide-comment' => "Cange 'u riepiloghe",
+'revdelete-hide-user' => "Nome utende/IP de quidde ca ha fatte 'u cangiamende",
 'revdelete-hide-restricted' => "Live le date da l'amministratore cumme pe l'otre utinde",
 'revdelete-radio-same' => '(non scè cangianne)',
-'revdelete-radio-set' => 'Sine',
-'revdelete-radio-unset' => 'None',
+'revdelete-radio-set' => 'Scunnute',
+'revdelete-radio-unset' => 'Visibbile',
 'revdelete-suppress' => "Live le date da l'amministrature cumme pe l'otre",
 'revdelete-unsuppress' => 'Live le restriziune sus a le revisiune repristinate',
 'revdelete-log' => 'Mutive:',
@@ -1465,7 +1466,7 @@ Ce tu 'u mitte, a fatje ca è fatte t'avène ricanusciute.",
 'rclistfrom' => 'Fà vedè le urteme cangiaminde partenne da $1',
 'rcshowhideminor' => '$1 cangiaminde stuèdeche',
 'rcshowhidebots' => '$1 bot',
-'rcshowhideliu' => '$1 utende reggistrete',
+'rcshowhideliu' => '$1 utinde reggistrate',
 'rcshowhideanons' => '$1 utende scanusciute',
 'rcshowhidepatr' => '$1 cangiaminde condrollete',
 'rcshowhidemine' => '$1 cangiaminde mie',
@@ -2417,7 +2418,7 @@ $1",
 'contributions' => "Condrebbute de l'{{GENDER:$1|utende}}",
 'contributions-title' => "Condrebbute de l'utende pe $1",
 'mycontris' => 'Condrebbute mie',
-'contribsub2' => 'Pe $1 ($2)',
+'contribsub2' => 'Pe {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Nisciune cangiamende ha state acchiate cu ste criterie.',
 'uctop' => '(de mò)',
 'month' => "Da 'u mese (e cchiù recende):",
@@ -2561,7 +2562,7 @@ Vide 'a [[Special:BlockList|liste de le IP bloccate]] pa liste de le operaziune
 'range_block_disabled' => "L'abbilità de le amministrature de ccrejà blocche a indervalle jè disabbilitate.",
 'ipb_expiry_invalid' => "L'orarije de scadenze non g'è valide.",
 'ipb_expiry_temp' => "Le blocche sus a le nome de l'utinde scunnute onna essere permanende.",
-'ipb_hide_invalid' => 'Non ge se pò scangellà stu cunde utende; tène troppe cangiaminde.',
+'ipb_hide_invalid' => "Non ge se pò scangellà stu cunde utende; tène cchiù de troppe  {{PLURAL:$1|'nu cangiamede|$1 cangiaminde}}.",
 'ipb_already_blocked' => '"$1" jè ggià blocchete',
 'ipb-needreblock' => "$1 ha state già blocchete. Vuè cu cange le 'mbostaziune?",
 'ipb-otherblocks-header' => 'Otre {{PLURAL:$1|blocche|blocche}}',
@@ -3046,7 +3047,7 @@ Ce l'esegue sus a 'u sisteme tue pò essere ca se combromette.",
 'svg-long-desc' => "Fail SVG, nominalmende sonde $1 × $2 pixel, dimenzione d'u fail: $3",
 'svg-long-desc-animated' => "File SVG animate, nominalmende sonde $1 × $2 pixel, dimenzione d'u file: $3",
 'svg-long-error' => 'File SVG invalide: $1',
-'show-big-image' => 'Risoluzione chiena chiena',
+'show-big-image' => 'File origgenale',
 'show-big-image-preview' => 'Dimenziune de sta andeprime: $1.',
 'show-big-image-other' => 'Otre {{PLURAL:$2|resoluzione|resoluziune}}: $1.',
 'show-big-image-size' => '$1 x $2 pixel',
@@ -4114,10 +4115,10 @@ Ce nò, tu puè ausà 'u module facile aqquà sotte. 'U commende tune avène agg
 # Durations
 'duration-seconds' => '{{PLURAL:$1|seconde|seconde}}',
 'duration-minutes' => '{{PLURAL:$1|minute|minute}}',
-'duration-hours' => '{{PLURAL:$1|ore|ore}}',
+'duration-hours' => '$1 {{PLURAL:$1|ore}}',
 'duration-days' => '$1 {{PLURAL:$1|sciurne|sciurne}}',
-'duration-weeks' => '{{PLURAL:$1|sumàne|sumàne}}',
-'duration-years' => '{{PLURAL:$1|anne|anne}}',
+'duration-weeks' => '$1 {{PLURAL:$1|sumàne}}',
+'duration-years' => '$1 {{PLURAL:$1|anne}}',
 'duration-decades' => '$1 {{PLURAL:$1|decade|decade}}',
 'duration-centuries' => '$1 {{PLURAL:$1|sechele|sechele}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennie|millennie}}',
index c24ca8c..6b8d7b8 100644 (file)
@@ -863,7 +863,7 @@ $2',
 'yourname' => 'Имя учётной записи:',
 'userlogin-yourname' => 'Имя учётной записи',
 'userlogin-yourname-ph' => 'Введите имя вашей учётной записи',
-'createacct-another-username-ph' => 'Введите имя вашей учётной записи',
+'createacct-another-username-ph' => 'Введите имя учётной записи',
 'yourpassword' => 'Пароль:',
 'userlogin-yourpassword' => 'Пароль',
 'userlogin-yourpassword-ph' => 'Введите свой пароль',
@@ -1539,6 +1539,7 @@ $1",
 'search-result-score' => 'Релевантность: $1%.',
 'search-redirect' => '(перенаправление с $1)',
 'search-section' => '(раздел «$1»)',
+'search-file-match' => '(совпадает с содержимым файла)',
 'search-suggest' => 'Возможно, вы имели в виду «$1».',
 'search-interwiki-caption' => 'Родственные проекты',
 'search-interwiki-default' => '$1 результ.:',
@@ -2645,7 +2646,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий}}.
 Её удаление может привести к нарушению нормальной работы базы данных сайта «{{SITENAME}}»;
 действуйте с осторожностью.',
-'deleting-backlinks-warning' => "'''Ð\9fÑ\80едÑ\83пÑ\80еждение.''' Ð\9dекоÑ\82оÑ\80Ñ\8bе Ð´Ñ\80Ñ\83гие Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b Ñ\81Ñ\81Ñ\8bлаÑ\8eÑ\82Ñ\81Ñ\8f Ð½Ð° Ð´Ð°Ð½Ð½Ñ\83Ñ\8e Ñ\83далÑ\8fемÑ\83Ñ\8e Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83.",
+'deleting-backlinks-warning' => "'''Ð\9fÑ\80едÑ\83пÑ\80еждение.''' Ð\94Ñ\80Ñ\83гие Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b Ñ\81Ñ\81Ñ\8bлаÑ\8eÑ\82Ñ\81Ñ\8f Ð¸Ð»Ð¸ Ñ\81одеÑ\80жаÑ\82 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, ÐºÐ¾Ñ\82оÑ\80Ñ\83Ñ\8e Ð²Ñ\8b Ñ\81обиÑ\80аеÑ\82еÑ\81Ñ\8c Ñ\83далиÑ\82Ñ\8c.",
 
 # Rollback
 'rollback' => 'Откатить изменения',
@@ -2941,7 +2942,7 @@ $1',
 'range_block_disabled' => 'Администраторам запрещено блокировать диапазоны.',
 'ipb_expiry_invalid' => 'Недопустимый период действия.',
 'ipb_expiry_temp' => 'Блокировки с сокрытием имени участника должны быть бессрочными.',
-'ipb_hide_invalid' => 'Ð\9dевозможно Ñ\81кÑ\80Ñ\8bÑ\82Ñ\8c Ñ\83Ñ\87Ñ\91Ñ\82нÑ\83Ñ\8e Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c, Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, Ñ\81 Ð½ÐµÑ\91 Ñ\81делано Ñ\81лиÑ\88ком Ð¼Ð½Ð¾Ð³Ð¾ Ð¿Ñ\80авок.',
+'ipb_hide_invalid' => 'Ð\9dевозможно Ñ\81кÑ\80Ñ\8bÑ\82Ñ\8c Ñ\8dÑ\82Ñ\83 Ñ\83Ñ\87Ñ\91Ñ\82нÑ\83Ñ\8e Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c, Ñ\81 Ð½ÐµÑ\91 Ñ\81делано Ð±Ð¾Ð»ÐµÐµ {{PLURAL:$1|одной Ð¿Ñ\80авки|$1 Ð¿Ñ\80авок}}.',
 'ipb_already_blocked' => '«$1» уже заблокирован.',
 'ipb-needreblock' => '$1 уже {{GENDER:$1|заблокирован|заблокирована}}. Хотите изменить параметры блокировки?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|1=Другая блокировка|Другие блокировки}}',
index 035f28f..37bd098 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Kaganer
+ * @author Kolega2357
  * @author Nemo bis
  * @author OC Ripper
  * @author לערי ריינהארט
@@ -262,7 +263,7 @@ $messages = array(
 
 # Dates
 'sunday' => 'nedjelja',
-'monday' => 'ponedjeljak',
+'monday' => 'Ponedjeljak / Понедељак',
 'tuesday' => 'utorak',
 'wednesday' => 'srijeda',
 'thursday' => 'četvrtak',
@@ -346,18 +347,18 @@ $messages = array(
 'about' => 'O...',
 'article' => 'Stranica sadržaja (članak)',
 'newwindow' => '(otvara se u novom prozoru)',
-'cancel' => 'Poništi',
+'cancel' => 'Odustani - Одустани',
 'moredotdotdot' => 'Još...',
 'morenotlisted' => 'Više nije prikazano...',
 'mypage' => 'Stranica',
-'mytalk' => 'Razgovor',
+'mytalk' => 'Moj razgovor / Мој разговор',
 'anontalk' => 'Razgovor za ovu IP adresu',
 'navigation' => 'Navigacija',
 'and' => '&#32;i',
 
 # Cologne Blue skin
 'qbfind' => 'Pronađite',
-'qbbrowse' => 'Prelistajte',
+'qbbrowse' => 'Pregledaj - Прегледај',
 'qbedit' => 'Uredi',
 'qbpageoptions' => 'Opcije stranice',
 'qbmyoptions' => 'Moje opcije',
@@ -382,18 +383,18 @@ $messages = array(
 'variants' => 'Varijante',
 
 'navigation-heading' => 'Navigacijski meni',
-'errorpagetitle' => 'Greška',
+'errorpagetitle' => 'Greška - Грешка',
 'returnto' => 'Povratak na $1.',
 'tagline' => 'Izvor: {{SITENAME}}',
 'help' => 'Pomoć',
-'search' => 'Pretraga',
+'search' => 'Traži / Тражи',
 'searchbutton' => 'Traži',
-'go' => 'Idi',
+'go' => 'Idi - Иди',
 'searcharticle' => 'Idi',
 'history' => 'Historija stranice',
 'history_short' => 'Historija',
 'updatedmarker' => 'promjene od moje zadnje posjete',
-'printableversion' => 'Verzija za ispis',
+'printableversion' => 'Za štampanje / За штампање',
 'permalink' => 'Trajni link',
 'print' => 'Štampa',
 'view' => 'Vidi',
@@ -401,22 +402,22 @@ $messages = array(
 'create' => 'Napravi',
 'editthispage' => 'Uredite ovu stranicu',
 'create-this-page' => 'Stvori ovu stranicu',
-'delete' => 'Obriši',
+'delete' => 'Obrisati - Обрисати',
 'deletethispage' => 'Obriši ovu stranicu',
 'undeletethispage' => 'Vrati ovu stranicu',
 'undelete_short' => 'Vrati obrisanih {{PLURAL:$1|$1 izmjenu|$1 izmjene|$1 izmjena}}',
 'viewdeleted_short' => 'Pogledaj {{PLURAL:$1|jednu obrisanu izmjenu|$1 obrisane izmjene|$1 obrisanih izmjena}}',
-'protect' => 'Zaštiti',
+'protect' => 'Zaštiti / Заштити',
 'protect_change' => 'promijeni',
 'protectthispage' => 'Zaštiti ovu stranicu',
 'unprotect' => 'Promijeni zaštitu',
 'unprotectthispage' => 'Promijeni zaštitu za ovu stranicu',
-'newpage' => 'Nova stranica',
+'newpage' => 'Nova stranica / Нова страница',
 'talkpage' => 'Razgovaraj o ovoj stranici',
 'talkpagelinktext' => 'Razgovor',
 'specialpage' => 'Posebna stranica',
 'personaltools' => 'Lični alati',
-'postcomment' => 'Nova sekcija',
+'postcomment' => 'Pošaljite komentar - Пошаљите коментар',
 'articlepage' => 'Pogledaj stranicu sa sadržajem (članak)',
 'talk' => 'Razgovor',
 'views' => 'Pregledi',
@@ -429,7 +430,7 @@ $messages = array(
 'viewhelppage' => 'Pogledajte stranicu za pomoć',
 'categorypage' => 'Pogledajte stranicu kategorije',
 'viewtalkpage' => 'Pogledajte raspravu',
-'otherlanguages' => 'Na drugim jezicima',
+'otherlanguages' => 'Drugi jezici / Други језици',
 'redirectedfrom' => '(Preusmjereno sa $1)',
 'redirectpagesub' => 'Preusmjeri stranicu',
 'lastmodifiedat' => 'Ova stranica je posljednji put izmijenjena $1, $2.',
@@ -458,8 +459,8 @@ $1',
 'disclaimerpage' => 'Project:Uslovi korištenja, pravne napomene i odricanje odgovornosti',
 'edithelp' => 'Pomoć pri uređivanju',
 'helppage' => 'Help:Sadržaj',
-'mainpage' => 'Glavna strana',
-'mainpage-description' => 'Glavna strana',
+'mainpage' => 'Glavna stranica / Главна страница',
+'mainpage-description' => 'Glavna stranica / Главна страница',
 'policy-url' => 'Project:Pravila',
 'portal' => 'Portal zajednice',
 'portal-url' => 'Project:Portal_zajednice',
@@ -487,8 +488,8 @@ $1',
 'editlink' => 'uredi',
 'viewsourcelink' => 'pogledaj kod',
 'editsectionhint' => 'Uredi sekciju: $1',
-'toc' => 'Sadržaj',
-'showtoc' => 'prikaži',
+'toc' => 'Sadržaj / Садржај',
+'showtoc' => 'prikaži / прикажи',
 'hidetoc' => 'sakrij',
 'collapsible-collapse' => 'Sakrij',
 'collapsible-expand' => 'Proširi',
@@ -507,13 +508,13 @@ $1',
 'sort-ascending' => 'Poredaj rastuće',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Stranica',
-'nstab-user' => 'Korisnička stranica',
+'nstab-main' => 'Članak / Чланак',
+'nstab-user' => 'Korisnik / Корисник',
 'nstab-media' => 'Mediji',
 'nstab-special' => 'Posebna stranica',
 'nstab-project' => 'Stranica projekta',
 'nstab-image' => 'Datoteka',
-'nstab-mediawiki' => 'Poruka',
+'nstab-mediawiki' => 'Poruka / Порука',
 'nstab-template' => 'Šablon',
 'nstab-help' => 'Stranica pomoći',
 'nstab-category' => 'Kategorija',
@@ -529,7 +530,7 @@ Moguće je i da je ovo greška u softveru koji koristi {{SITENAME}}.',
 Lista valjanih posebnih stranica se može naći na [[Special:SpecialPages|{{int:specialpages}}]].',
 
 # General errors
-'error' => 'Greška',
+'error' => 'Greška - Грешка',
 'databaseerror' => 'Greška u bazi podataka',
 'laggedslavemode' => "'''Upozorenje''': Stranica ne mora sadržavati posljednja ažuriranja.",
 'readonly' => 'Baza podataka je zaključana',
@@ -632,21 +633,21 @@ Ne zaboravite izmijeniti vlastite [[Special:Preferences|{{SITENAME}} postavke]].
 'yourdomainname' => 'Vaš domen:',
 'password-change-forbidden' => 'Ne možete da promenite lozinku na ovom vikiju.',
 'externaldberror' => 'Došlo je do greške pri vanjskoj autorizaciji baze podataka ili vam nije dopušteno osvježavanje Vašeg vanjskog korisničkog računa.',
-'login' => 'Prijavi se',
+'login' => 'Prijavi me - Пријави ме',
 'nav-login-createaccount' => 'Prijavi se / Registruj se',
 'loginprompt' => "Morate imati kolačiće ('''cookies''') omogućene da biste se prijavili na {{SITENAME}}.",
 'userlogin' => 'Prijavi se / stvori korisnički račun',
 'userloginnocreate' => 'Prijavi se',
-'logout' => 'Odjavi me',
+'logout' => 'Odjavi se - Одјави се',
 'userlogout' => 'Odjava',
 'notloggedin' => 'Niste prijavljeni',
 'userlogin-noaccount' => 'Nemate račun?',
 'userlogin-joinproject' => 'Pridružite se {{SITENAME}}',
 'nologin' => "Nemate korisničko ime? '''$1'''.",
 'nologinlink' => 'Otvorite račun',
-'createaccount' => 'Napravi korisnički račun',
+'createaccount' => 'Napraviti novi nalog / Направити нови налог',
 'gotaccount' => "Imate račun? '''$1'''.",
-'gotaccountlink' => 'Prijavi se',
+'gotaccountlink' => 'Prijavite se - Пријавите се',
 'userlogin-resetlink' => 'Zaboravili ste detalje vaše prijave?',
 'userlogin-resetpassword-link' => 'Resetirajte svoju lozinku/zaporku',
 'helplogin-url' => 'Help:Logiranje',
@@ -687,7 +688,7 @@ Molimo Vas da ih omogućite i da pokušate ponovo sa prijavom.",
 Provjerite da li su cookies omogućeni, ponovo učitajte ovu stranicu i pokušajte ponovo.',
 'noname' => 'Niste izabrali ispravno korisničko ime.',
 'loginsuccesstitle' => 'Prijavljivanje uspješno',
-'loginsuccess' => "'''Sad ste prijavljeni na {{SITENAME}} kao \"\$1\".'''",
+'loginsuccess' => 'Trenutno ste prijavljeni na {{SITENAME}} kao "$1".',
 'nosuchuser' => 'Ne postoji korisnik sa imenom "$1".
 Korisnička imena razlikuju velika i mala slova.
 Provjerite vaše kucanje ili [[Special:UserLogin/signup|napravite novi korisnički račun]].',
@@ -730,7 +731,7 @@ Molimo vas da unesete ispravnu adresu ili ostavite prazno polje.',
 'cannotchangeemail' => 'Na ovom wikiju ne možete promeniti e-mail adresu računa.',
 'emaildisabled' => 'Ova web-stranica ne može da šalje e-poruke.',
 'accountcreated' => 'Korisnički račun je napravljen',
-'accountcreatedtext' => 'Korisnički račun za [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|razgovor]]) je napravljen.',
+'accountcreatedtext' => 'Korisnički račun za $1 je kreiran. Кориснички налог за $1 је креиран.',
 'createaccount-title' => 'Pravljenje korisničkog računa za {{SITENAME}}',
 'createaccount-text' => 'Neko je napravio korisnički račun za vašu e-mail adresu na {{SITENAME}} ($4) sa imenom "$2", i sa šifrom "$3".
 Trebali biste se prijaviti i promjeniti šifru.
@@ -837,13 +838,13 @@ Privremena šifra: $2',
 # Edit pages
 'summary' => 'Sažetak:',
 'subject' => 'Tema/naslov:',
-'minoredit' => 'Ovo je manja izmjena',
+'minoredit' => 'Mala izmjena - Мала измена',
 'watchthis' => 'Prati ovu stranicu',
-'savearticle' => 'Snimi stranicu',
-'preview' => 'Pretpregled',
-'showpreview' => 'Prikaži izgled',
+'savearticle' => 'Sačuvaj - Сачувај',
+'preview' => 'Pretpregled / Претпреглед',
+'showpreview' => 'Pretpregled - Претпреглед',
 'showlivepreview' => 'Pretpregled uživo',
-'showdiff' => 'Prikaži izmjene',
+'showdiff' => 'Prikaži izmjene - Прикажи измене',
 'anoneditwarning' => "'''Upozorenje:''' Niste prijavljeni.
 Vaša IP adresa će biti zabilježena u historiji ove stranice.",
 'anonpreviewwarning' => "''Niste prijavljeni. Vaša IP adresa će biti zabilježena u historiji ove stranice.''",
@@ -891,13 +892,17 @@ Molimo da postavite i verifikujete Vašu e-mail adresu putem Vaših [[Special:Pr
 'nosuchsectiontitle' => 'Ne mogu pronaći sekciju',
 'nosuchsectiontext' => 'Pokušali ste uređivati sekciju koja ne postoji.
 Možda je premještena ili obrisana dok ste pregledavali stranicu.',
-'loginreqtitle' => 'Potrebno je prijavljivanje',
+'loginreqtitle' => 'Potrebno je da se [[{{ns:-1}}:Userlogin|prijavite]]',
 'loginreqlink' => 'prijavi se',
 'loginreqpagetext' => 'Morate $1 da bi ste vidjeli druge stranice.',
-'accmailtitle' => 'Lozinka poslana.',
-'accmailtext' => "Nasumično odabrana lozinka za nalog [[User talk:$1|$1]] je poslata na adresu $2.
+'accmailtitle' => 'Šifra je poslana!
 
-Lozinka za ovaj novi račun može biti promijenjena na stranici ''[[Special:ChangePassword|izmjene šifre]]'' nakon prijave.",
+
+Шифра је послата!',
+'accmailtext' => "Šifra za nalog '$1' je poslana na adresu $2.
+
+
+Шифра за налог '$1' је послата на адресу $2.",
 'newarticle' => '(Novi)',
 'newarticletext' => "Preko linka ste došli na stranicu koja još uvijek ne postoji.
 * Ako želite stvoriti stranicu, počnite tipkati u okviru dolje (v. [[{{MediaWiki:Helppage}}|stranicu za pomoć]] za više informacija).
@@ -971,7 +976,7 @@ Moraćete da unesete svoje promjene u postojeći tekst.
 Molimo Vas promijenite ga prije sljedećeg uređivanja članaka. Znakovi koji nisu po ASCII standardu će se u prozoru za izmjene pojaviti kao heksadecimalni kodovi.'''",
 'editingold' => "'''PAŽNJA:  Vi mijenjate stariju reviziju ove stranice.
 Ako je snimite, sve promjene učinjene od ove revizije će biti izgubljene.'''",
-'yourdiff' => 'Razlike',
+'yourdiff' => 'Razlike / Разлике',
 'copyrightwarning' => "Molimo da uzmete u obzir kako se smatra da su svi doprinosi u {{SITENAME}} izdani pod $2 (v. $1 za detalje).
 Ukoliko ne želite da vaše pisanje bude nemilosrdno uređivano i redistribuirano po tuđoj volji, onda ga nemojte ovdje objavljivati.<br />
 Također obećavate kako ste ga napisali sami ili kopirali iz izvora u javnoj domeni ili sličnog slobodnog izvora.
@@ -981,10 +986,13 @@ Također nam garantujete da ste ovo Vi napisali, ili da ste ga kopirali iz javne
 '''NE ŠALJITE DJELA ZAŠTIĆENA AUTORSKIM PRAVOM BEZ DOZVOLE!'''",
 'longpageerror' => "'''Greška: tekst koji ste uneli je veličine {{PLURAL:$1|jedan kilobajt|$1 kilobajta|$1 kilobajta}}, što je veće od {{PLURAL:$2|dozvoljenog jednog kilobajta|dozvoljena $2 kilobajta|dozvoljenih $2 kilobajta}}.'''
 Stranica ne može biti sačuvana.",
-'readonlywarning' => "'''PAŽNJA: Baza je zaključana zbog održavanja, tako da nećete moći da sačuvate svoje izmjene za sada.'''
-Možda želite da kopirate i nalijepite tekst u tekst editor i sačuvate ga za kasnije.
-
-Administrator koji je zaključao bazu je naveo slijedeće objašnjenje: $1",
+'readonlywarning' => "<font color=\"#FF0000\">'''PAŽNJA:'''</font> Baza je upravo zaključana zbog održavanja,
+tako da nećete moći da snimite svoje izmene upravo sada. Možda želite da iskopirate i nalepite
+tekst u tekst editor i snimite ga za kasnije.
+<br>
+<font color=\"#FF0000\">'''ПАЖЊА:'''</font> База је управо закључана због одржавања,
+тако да нећете моћи да снимите своје измене управо сада. Можда желите да ископирате и налепите
+текст у текст едитор и снимите га за касније.",
 'protectedpagewarning' => "'''PAŽNJA: Ova stranica je zaključana tako da samo korisnici sa administratorskim privilegijama mogu da je mijenjaju.'''
 Posljednja stavka u registru je prikazana ispod kao referenca:",
 'semiprotectedpagewarning' => "'''Pažnja:''' Ova stranica je zaključana tako da je samo registrovani korisnici mogu uređivati.
@@ -1083,7 +1091,7 @@ Razlog koji je naveo $3 je ''$2''",
 'currentrevisionlink' => 'Trenutna verzija',
 'cur' => 'tren',
 'next' => 'slijed',
-'last' => 'preth',
+'last' => 'preth - претх',
 'page_first' => 'prva',
 'page_last' => 'zadnja',
 'histlegend' => "Odabir razlika: označite radio dugme verzija za usporedbu i pritisnite enter ili dugme na dnu.<br />
@@ -1156,7 +1164,7 @@ Drugi administratori projekta {{SITENAME}} će i dalje moći pristupiti sakriven
 'revdelete-hide-image' => 'Sakrij sadržaj datoteke',
 'revdelete-hide-name' => 'Sakrij akciju i cilj',
 'revdelete-hide-comment' => 'Sakrij izmjene komentara',
-'revdelete-hide-user' => 'Sakrij korisničko ime urednika/IP',
+'revdelete-hide-user' => 'Sakrij korisničko ime / IP adresu korisnika koji je uređivao stranicu',
 'revdelete-hide-restricted' => 'Ograniči podatke za administratore kao i za druge korisnike',
 'revdelete-radio-same' => '(ne mijenjaj)',
 'revdelete-radio-set' => 'Da',
@@ -1238,7 +1246,7 @@ Korištenje navigacionih linkova će resetovati ovaj stupac.',
 'lineno' => 'Linija $1:',
 'compareselectedversions' => 'Uporedite označene verzije',
 'showhideselectedversions' => 'Pokaži/sakrij odabrane verzije',
-'editundo' => 'ukloni ovu izmjenu',
+'editundo' => 'ukloni ovu izmjenu - уклони ову измену',
 'diff-empty' => '(nema razlike)',
 'diff-multi' => '({{PLURAL:$1|Nije prikazana jedna međuverzija|Nisu prikazane $1 međuverzije|Nije prikazano $1 međuverzija}}) od strane {{PLURAL:$2|korisnika|korisnika}}',
 'diff-multi-manyusers' => '({{PLURAL:$1|Nije prikazana jedna međuverzija|Nisu prikazane $1 međuverzije|Nije prikazano $1 međuverzija}}) od strane {{PLURAL:$2|korisnika|korisnika}}',
@@ -1302,8 +1310,8 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
 'search-error' => 'Dogodila se pogreška prilikom pretraživanja: $1',
 
 # Preferences page
-'preferences' => 'Postavke',
-'mypreferences' => 'Postavke',
+'preferences' => 'Postavke / Подешавања',
+'mypreferences' => 'Moje postavke / Моја подешавања',
 'prefs-edits' => 'Broj izmjena:',
 'prefs-skin' => 'Izgled (skin)',
 'skin-preview' => 'Pretpregled',
@@ -1314,7 +1322,7 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
 'prefs-user-pages' => 'Korisničke stranice',
 'prefs-personal' => 'Korisnički profil',
 'prefs-rc' => 'Podešavanje nedavnih izmjena',
-'prefs-watchlist' => 'Praćene stranice',
+'prefs-watchlist' => 'Praćene stranice / Списак надгледања',
 'prefs-watchlist-days' => 'Broj dana za prikaz u spisku praćenja:',
 'prefs-watchlist-days-max' => '(najviše $1 {{PLURAL:$1|dan|dana}})',
 'prefs-watchlist-edits' => 'Najveći broj izmjena za prikaz u proširenom spisku praćenja:',
@@ -1339,7 +1347,7 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
 'recentchangescount' => 'Broj uređivanja za prikaz po pretpostavkama:',
 'prefs-help-recentchangescount' => 'Ovo uključuje nedavne izmjene, historije stranice i registre.',
 'savedprefs' => 'Vaša postavke su snimljene.',
-'timezonelegend' => 'Vremenska zona:',
+'timezonelegend' => 'Vremenska zona / Временска зона',
 'localtime' => 'Lokalno vrijeme:',
 'timezoneuseserverdefault' => 'Koristi postavke wikija ($1)',
 'timezoneuseoffset' => 'Ostalo (odredi odstupanje)',
@@ -1367,7 +1375,7 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
 'prefs-reset-intro' => 'Možete koristiti ovu stranicu da poništite Vaše postavke na ovom sajtu na pretpostavljene vrijednosti.
 Ovo se ne može vratiti unazad.',
 'prefs-emailconfirm-label' => 'E-mail potvrda:',
-'youremail' => 'E-mail:',
+'youremail' => 'Vaša e-pošta / Ваша е-пошта*',
 'username' => 'Ime {{GENDER:$1|korisnika|korisnice}}:',
 'uid' => '{{GENDER:$1|Korisnički}} ID:',
 'prefs-memberingroups' => '{{GENDER:$2|Korisnik|Korisnica}} je član {{PLURAL:$1|grupe|grupâ}}:',
@@ -1419,7 +1427,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje Vašeg rada.',
 'userrights' => 'Postavke korisničkih prava',
 'userrights-lookup-user' => 'Menadžment korisničkih prava',
 'userrights-user-editname' => 'Unesi korisničko ime:',
-'editusergroup' => 'Uredi korisničke grupe',
+'editusergroup' => 'Menjaj Grupe Korisnika',
 'editinguser' => "Mijenjate korisnička prava {{GENDER:$1|korisnika|korisnice|korisnika}} '''[[User:$1|$1]]''' $2",
 'userrights-editusergroup' => 'Uredi korisničke grupe',
 'saveusergroups' => 'Snimi korisničke grupe',
@@ -1447,7 +1455,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje Vašeg rada.',
 'group-sysop' => 'Administratori',
 'group-bureaucrat' => 'Birokrati',
 'group-suppress' => 'Nadzornici',
-'group-all' => '(sve)',
+'group-all' => '(svi)',
 
 'group-user-member' => '{{GENDER:$1|korisnik|korisnica|korisnik}}',
 'group-autoconfirmed-member' => '{{GENDER:$1|automatski potvrđen korisnik|automatski potvrđena korisnica|automatski potvrđen korisnik}}',
@@ -1584,7 +1592,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje Vašeg rada.',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|izmjena|izmjene|izmjena}}',
-'recentchanges' => 'Nedavne izmjene',
+'recentchanges' => 'Nedavne izmjene / Скорашње измене',
 'recentchanges-legend' => 'Postavke za Nedavne promjene',
 'recentchanges-summary' => 'Na ovoj stranici možete pratiti nedavne izmjene.',
 'recentchanges-noresult' => 'Bez promjena tokom cijelog perioda koji ispunjava ove kriterije.',
@@ -1595,18 +1603,23 @@ Ako izaberete da date ime, biće korišteno za pripisivanje Vašeg rada.',
 'recentchanges-label-unpatrolled' => 'Ova izmjena još nije patrolirana',
 'recentchanges-legend-newpage' => '$1 - nova stranica',
 'rcnotefrom' => "Ispod {{PLURAL:$1|je '''$1''' izmjena|su '''$1''' zadnje izmjene|su '''$1''' zadnjih izmjena}} u {{PLURAL:$2|posljednjem '''$2''' danu|posljednja '''$2''' dana|posljednjih '''$2''' dana}}, od $4, $5.",
-'rclistfrom' => 'Prikaži nove izmjene počevši od $1',
-'rcshowhideminor' => '$1 male izmjene',
-'rcshowhidebots' => '$1 botove',
+'rclistfrom' => 'Prikaži nove poruke od / Прикажи нове поруке од $1',
+'rcshowhideminor' => '$1 male izmjene / мале измене',
+'rcshowhidebots' => '$1 botove / ботове',
 'rcshowhideliu' => '$1 prijavljene korisnike',
-'rcshowhideanons' => '$1 anonimne korisnike',
-'rcshowhidepatr' => '$1 patrolirane izmjene',
-'rcshowhidemine' => '$1 moje izmjene',
-'rclinks' => 'Prikaži najskorijih $1 izmjena u posljednjih $2 dana<br />$3',
+'rcshowhideanons' => '$1 anonimne / анонимне',
+'rcshowhidepatr' => '$1 označene / означене',
+'rcshowhidemine' => '$1 vlastite izmjene / сопствене измене',
+'rclinks' => '<br>
+Prikaži zadnjih / Прикажи последњих $1 promjena / промена<br>
+u zadnjih / у последњних $2 dana / дана<br />
+<br>
+$3
+<br>',
 'diff' => 'razl',
 'hist' => 'hist',
 'hide' => 'Sakrij',
-'show' => 'Prikaži',
+'show' => 'prikaži / прикажи',
 'minoreditletter' => 'm',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
@@ -1620,7 +1633,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje Vašeg rada.',
 'rc-old-title' => 'prvobitno kreirano kao "$1"',
 
 # Recent changes linked
-'recentchangeslinked' => 'Srodne izmjene',
+'recentchangeslinked' => 'Srodne izmjene / Сродне измене',
 'recentchangeslinked-feed' => 'Srodne izmjene',
 'recentchangeslinked-toolbox' => 'Srodne izmjene',
 'recentchangeslinked-title' => 'Srodne promjene sa "$1"',
@@ -1657,11 +1670,11 @@ Da bi ste prikazali datoteku na stranici, koristite link na jedan od slijedećih
 'uploadlogpagetext' => 'Ispod je popis najnovijih postavljanja datoteka.
 Vidi [[Special:NewFiles|galeriju novih datoteka]] za slikovitiji pregled.',
 'filename' => 'Ime datoteke',
-'filedesc' => 'Sažetak',
+'filedesc' => 'Sažetak - Сажетак',
 'fileuploadsummary' => 'Sažetak:',
 'filereuploadsummary' => 'Izmjene datoteke:',
 'filestatus' => 'Status autorskih prava:',
-'filesource' => 'Izvor:',
+'filesource' => 'Izvor - Извор',
 'uploadedfiles' => 'Postavljene datoteke',
 'ignorewarning' => 'Zanemari upozorenja i sačuvaj datoteku',
 'ignorewarnings' => 'Zanemari sva upozorenja',
@@ -1866,7 +1879,7 @@ Molimo ponovno provjerite da li je URL ispravan i da li stranica radi.',
 Molimo provjerite da li je stranica postavljena, malo pričekajte i pokušajte ponovno.
 Možda možete pokušati kada bude manje opterećenje.',
 
-'license' => 'Licenca:',
+'license' => 'Licenca - Лиценца',
 'license-header' => 'Licenciranje',
 'nolicense' => 'Ništa nije odabrano',
 'license-nopreview' => '(Pregled nije dostupan)',
@@ -1979,11 +1992,11 @@ Prije brisanja provjerite da li druge stranice vode na te šablone.',
 'unusedtemplateswlh' => 'ostali linkovi',
 
 # Random page
-'randompage' => 'Slučajna stranica',
+'randompage' => 'Slučajna stranica / Случајна страница',
 'randompage-nopages' => 'Nema stranica u {{PLURAL:$2|slijedećem imenskom prostoru|slijedećim imenskim prostorima}}: "$1".',
 
 # Random redirect
-'randomredirect' => 'Slučajno preusmjerenje',
+'randomredirect' => 'Slučajno preusmjerenje / Случајно преусмјерење',
 'randomredirect-nopages' => 'Nema preusmjerenja u imenskom prostoru "$1".',
 
 # Statistics
@@ -2046,8 +2059,8 @@ Svaki red sadrži veze na prvo i drugo preusmjerenje, kao i na prvu liniju tekst
 'specialpage-empty' => 'Ne postoje rezultati za ovaj izvještaj.',
 'lonelypages' => 'Stranice - siročići',
 'lonelypagestext' => 'Slijedeće stranice nemaju linkove na ostalim stranicama na ovoj {{SITENAME}}.',
-'uncategorizedpages' => 'Nekategorisane stranice',
-'uncategorizedcategories' => 'Nekategorisane kategorije',
+'uncategorizedpages' => 'Nekategorisane stranice / Некатегорисане странице',
+'uncategorizedcategories' => 'Nekategorisane kategorije / Некатегорисане категорије',
 'uncategorizedimages' => 'Slike bez kategorije',
 'uncategorizedtemplates' => 'Šabloni bez kategorije',
 'unusedcategories' => 'Neiskorištene kategorije',
@@ -2060,20 +2073,20 @@ Svaki red sadrži veze na prvo i drugo preusmjerenje, kao i na prvu liniju tekst
 'wantedfiletext-cat' => 'Sledeće datoteke se koriste, ali ne postoje. Datoteke iz drugih spremnika mogu biti navedene iako ne postoje. Takve datoteke će biti <del>izbačene</del> sa spiska. Pored toga, stranice koje sadrže nepostojeće datoteke se nalaze [[:$1|ovde]].',
 'wantedfiletext-nocat' => 'Sledeće datoteke se koriste, ali ne postoje. Datoteke iz drugih spremnika mogu biti navedene iako ne postoje. Takve datoteke će biti <del>izbačene</del> sa spiska.',
 'wantedtemplates' => 'Potrebni šabloni',
-'mostlinked' => 'Stranice sa najviše linkova',
-'mostlinkedcategories' => 'Kategorije sa najviše linkova',
+'mostlinked' => 'Najviše povezanih sa člancima / Највише повезаних са чланцима',
+'mostlinkedcategories' => 'Najviše povezanih sa kategorijama / Највише повезаних са категоријама',
 'mostlinkedtemplates' => 'Šabloni sa najviše linkova',
 'mostcategories' => 'Stranice sa najviše kategorija',
-'mostimages' => 'Datoteke sa najviše linkova',
+'mostimages' => 'Najviše povezanih sa slikama / Највише повезаних са сликама',
 'mostinterwikis' => 'Stranice s najviše međuwiki poveznica',
 'mostrevisions' => 'Stranice sa najviše izmjena',
 'prefixindex' => 'Sve stranice sa prefiksom',
 'prefixindex-namespace' => 'Sve stranice s predmetkom (imenski prostor $1)',
 'shortpages' => 'Kratke stranice',
-'longpages' => 'Dugačke stranice',
-'deadendpages' => 'Stranice bez internih linkova',
+'longpages' => 'Duge stranice / Дуге странице',
+'deadendpages' => 'Članci bez internih linkova / Чланци без интерних линкова',
 'deadendpagestext' => 'Slijedeće stranice nisu povezane s drugim stranicama na {{SITENAME}}.',
-'protectedpages' => 'Zaštićene stranice',
+'protectedpages' => 'Zaštićene stranice / Заштићене странице',
 'protectedpages-indef' => 'Samo neograničena zaštićenja',
 'protectedpages-cascade' => 'Samo prenosive zaštite',
 'protectedpagesempty' => 'Trenutno nijedna stranica nije zaštićena s ovim parametrima.',
@@ -2084,9 +2097,9 @@ Svaki red sadrži veze na prvo i drugo preusmjerenje, kao i na prvu liniju tekst
 'listusers-creationsort' => 'Sortiraj po datumu pravljenja',
 'usereditcount' => '$1 {{PLURAL:$1|izmjena|izmjene}}',
 'usercreated' => '{{GENDER:$3|je napravio|je napravila|je napravio}} dana $1 u $2',
-'newpages' => 'Nove stranice',
+'newpages' => 'Nove stranice / Нове странице',
 'newpages-username' => 'Korisničko ime:',
-'ancientpages' => 'Najstarije stranice',
+'ancientpages' => 'Najstarije stranice / Најстарије странице',
 'move' => 'Premjesti',
 'movethispage' => 'Premjesti ovu stranicu',
 'unusedimagestext' => 'Slijedeće datoteke postoje ali nisu uključene ni u jednu stranicu.
@@ -2112,8 +2125,8 @@ na kome bi se izvela ova funkcija.',
 # Special:Log
 'specialloguserlabel' => 'Izvršilac:',
 'speciallogtitlelabel' => 'Cilj (naslov ili korisnik):',
-'log' => 'Registri',
-'all-logs-page' => 'Svi javni registri',
+'log' => 'Evidencije',
+'all-logs-page' => 'Sve evidencije - Све евиденције',
 'alllogstext' => 'Zajednički prikaz svih dostupnih evidencija sa {{SITENAME}}.
 Možete specificirati prikaz izabiranjem specifičnog spiska, korisničkog imena ili promjenjenog članka (razlikovati velika slova).',
 'logempty' => 'Ne postoji takav zapis.',
@@ -2127,9 +2140,9 @@ Možete specificirati prikaz izabiranjem specifičnog spiska, korisničkog imena
 'prevpage' => 'Prethodna stranica ($1)',
 'allpagesfrom' => 'Prikaži stranice koje počinju od:',
 'allpagesto' => 'Pokaži stranice koje završavaju na:',
-'allarticles' => 'Sve stranice',
+'allarticles' => 'Svi članci / Сви чланци',
 'allinnamespace' => 'Sve stranice (imenski prostor $1)',
-'allpagessubmit' => 'Idi',
+'allpagessubmit' => 'Idi / Иди',
 'allpagesprefix' => 'Prikaži stranice sa prefiksom:',
 'allpagesbadtitle' => 'Dati naziv stranice je nepravilan ili ima međujezički ili interwiki prefiks.
 Možda sadrži jedan ili više znakova koji se ne mogu koristiti u naslovima.',
@@ -2168,7 +2181,7 @@ Podržani {{PLURAL:$2|protokol|protokoli}}: <code>$1</code> (default je http://
 
 # Special:ListUsers
 'listusersfrom' => 'Prikaži korisnike počev od:',
-'listusers-submit' => 'Pokaži',
+'listusers-submit' => 'Prikaži - Прикажи',
 'listusers-noresult' => 'Nije pronađen korisnik.',
 'listusers-blocked' => '(blokiran)',
 
@@ -2227,7 +2240,7 @@ E-mail koju ste uneli u vašim [[Special:Preferences|postavkama]] će se prikaza
 'emailsubject' => 'Tema:',
 'emailmessage' => 'Poruka:',
 'emailsend' => 'Pošalji',
-'emailccme' => 'Pošalji mi kopiju moje poruke.',
+'emailccme' => 'Pošalji mi e-mailom kopiju moje poruke.',
 'emailccsubject' => 'Kopiranje Vaše poruke za $1: $2',
 'emailsent' => 'E-mail poruka poslata',
 'emailsenttext' => 'Vaša poruka je poslata e-poštom.',
@@ -2239,7 +2252,7 @@ E-mail koju ste uneli u vašim [[Special:Preferences|postavkama]] će se prikaza
 
 # Watchlist
 'watchlist' => 'Spisak praćenja',
-'mywatchlist' => 'Spisak praćenja',
+'mywatchlist' => 'Moj popis praćenja / Списак надгледања',
 'watchlistfor2' => 'Za $1 $2',
 'nowatchlist' => 'Nemate ništa na svom spisku praćenih članaka.',
 'watchlistanontext' => 'Molimo da $1 da možete vidjeti ili urediti stavke na Vašem spisku praćenja.',
@@ -2315,7 +2328,7 @@ $UNWATCHURL
 
 Povratne informacije i daljnja pomoć:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
-'created' => 'napravljena',
+'created' => 'Napravljen - Направљен',
 'changed' => 'promijenjena',
 
 # Delete
@@ -2330,13 +2343,15 @@ Povratne informacije i daljnja pomoć:
 'historywarning' => "'''Upozorenje''':  Stranica koju želite da obrišete ima historiju sa otprilike $1 {{PLURAL:$1|revizijom|revizije|revizija}}:",
 'confirmdeletetext' => 'Upravo ćete obrisati stranicu sa svom njenom historijom.
 Molimo da potvrdite da ćete to učiniti, da razumijete posljedice te da to činite u skladu sa [[{{MediaWiki:Policy-url}}|pravilima]].',
-'actioncomplete' => 'Akcija završena',
+'actioncomplete' => 'Akcija završena
+
+Акција завршена',
 'actionfailed' => 'Akcija nije uspjela',
 'deletedtext' => '"$1" je obrisan/a.
 V. $2 za registar nedavnih brisanja.',
-'dellogpage' => 'Registar brisanja',
+'dellogpage' => 'Evidencija brisanja',
 'dellogpagetext' => 'Ispod je spisak najskorijih brisanja.',
-'deletionlog' => 'registar brisanja',
+'deletionlog' => 'Evidencija brisanja',
 'reverted' => 'Vraćeno na prijašnju reviziju',
 'deletecomment' => 'Razlog:',
 'deleteotherreason' => 'Ostali/dodatni razlog/zi:',
@@ -2473,8 +2488,7 @@ Možda ste unijeli pogrešan link, ili je revizija vraćena ili uklonjena iz arh
 'undeletedrevisions' => '{{PLURAL:$1|$1 revizija vraćena|$1 revizije vraćene|$1 revizija vraćeno}}',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 revizija|$1 revizije|$1 revizija}} i {{PLURAL:$2|1 datoteka|$2 datoteke|$2 datoteka}} vraćeno',
 'undeletedfiles' => '{{PLURAL:$1|1 datoteka vraćena|$1 datoteke vraćene|$1 datoteka vraćeno}}',
-'cannotundelete' => 'Vraćanje nije uspelo:
-$1',
+'cannotundelete' => 'Vraćanje nije uspelo; moguće je da je neko drugi vratio stranu pre vas.',
 'undeletedpage' => "'''$1 je vraćena'''
 
 Provjerite [[Special:Log/delete|evidenciju brisanja]] za zapise najskorijih brisanja i vraćanja.",
@@ -2498,7 +2512,7 @@ $1',
 'undelete-show-file-submit' => 'Da',
 
 # Namespace form on various pages
-'namespace' => 'Imenski prostor:',
+'namespace' => 'Imenski prostor - Именски простор:',
 'invert' => 'Sve osim odabranog',
 'tooltip-invert' => 'Označite ovu kutiju za sakrivanje promjena na stranicama u odabranom imenskom prostoru (i povezanim imenskim prostorima ako je označeno)',
 'namespace_association' => 'Povezan imenski prostor',
@@ -2506,9 +2520,9 @@ $1',
 'blanknamespace' => '(Glavno)',
 
 # Contributions
-'contributions' => 'Doprinosi {{GENDER:|korisnika|korisnice|korisnika}} $1',
+'contributions' => 'Doprinosi korisnika / Доприноси корисника',
 'contributions-title' => 'Korisnički doprinosi od $1',
-'mycontris' => 'Doprinosi',
+'mycontris' => 'Doprinosi / Доприноси',
 'contribsub2' => 'Za $1 ($2)',
 'nocontribs' => 'Nisu nađene promjene koje zadovoljavaju ove uslove.',
 'uctop' => '(trenutno)',
@@ -2534,8 +2548,8 @@ Posljednje stavke zapisnika blokiranja možete pogledati ispod:',
 'sp-contributions-submit' => 'Traži',
 
 # What links here
-'whatlinkshere' => 'Šta je povezano ovdje',
-'whatlinkshere-title' => 'Stranice koje vode na "$1"',
+'whatlinkshere' => 'Što vodi ovdje / Шта води овде',
+'whatlinkshere-title' => 'Stranice koje vode / Странице које воде до $1',
 'whatlinkshere-page' => 'Stranica:',
 'linkshere' => "Sljedeće stranice vode na '''[[:$1]]''':",
 'nolinkshere' => "Nema linkova na '''[[:$1]]'''.",
@@ -2584,7 +2598,7 @@ Unesite konkretan razlog ispod (na primjer, navodeći koje konkretne stranice su
 'ipb-disableusertalk' => 'Onemogući ovog korisnika da uređuje svoju vlastitu stranicu za razgovor dok je blokiran',
 'ipb-change-block' => 'Ponovno blokiraj korisnika sa ovim postavkama',
 'ipb-confirm' => 'Potvrdite blokiranje',
-'badipaddress' => 'Nevaljana IP adresa',
+'badipaddress' => 'Neodgovarajuća IP adresa / Неодговарајућа ИП адреса',
 'blockipsuccesssub' => 'Blokiranje je uspjelo',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] je {{GENDER:$1|blokiran|blokirana|blokiran}}.<br />
 Blokiranja možete da pogledate [[Special:BlockList|ovde]].',
@@ -2595,7 +2609,7 @@ Blokiranja možete da pogledate [[Special:BlockList|ovde]].',
 'ipb-unblock' => 'Deblokiraj korisničko ime ili IP adresu',
 'ipb-blocklist' => 'Vidi postojeće blokade',
 'ipb-blocklist-contribs' => 'Doprinosi za $1',
-'unblockip' => 'Odblokiraj korisnika',
+'unblockip' => 'Odblokiraj korisnika / Одблокирај корисника',
 'unblockiptext' => 'Upotrebite donji upitnik da bi ste vratili pravo pisanja ranije blokiranoj IP adresi ili korisničkom imenu.',
 'ipusubmit' => 'Ukloni ovu blokadu',
 'unblocked' => '[[User:$1|$1]] je deblokiran',
@@ -2627,7 +2641,7 @@ Blokiranja možete da pogledate [[Special:BlockList|ovde]].',
 'ipblocklist-empty' => 'Spisak blokiranja je prazan.',
 'ipblocklist-no-results' => 'Tražena IP adresa ili korisničko ime nisu blokirani.',
 'blocklink' => 'blokirajte',
-'unblocklink' => 'deblokiraj',
+'unblocklink' => 'Odblokiraj / Одблокирај',
 'change-blocklink' => 'promijeni blokadu',
 'contribslink' => 'doprinosi',
 'emaillink' => 'pošalji e-mail',
@@ -2643,7 +2657,7 @@ Evidencija sakrivanja je prikazana ispod kao referenca:',
 'blocklogtext' => 'Ovo je historija akcija blokiranja i deblokiranja korisnika.
 Automatski blokirane IP adrese nisu navedene ovdje.
 Pogledajte [[Special:BlockList|spisak blokiranja]] za spisak trenutnih zabrana i blokiranja.',
-'unblocklogentry' => 'deblokiran $1',
+'unblocklogentry' => 'Odblokiran / Одблокиран "$1"',
 'block-log-flags-anononly' => 'samo anonimni korisnici',
 'block-log-flags-nocreate' => 'pravljenje računa onemogućeno',
 'block-log-flags-noautoblock' => 'automatsko blokiranje onemogućeno',
@@ -2731,15 +2745,15 @@ drastična i neočekivana promjena za korisnike; molimo budite sigurni da ste sh
 *Odznačite donju kutiju.
 
 U tim slučajevima, moraćete ručno da premjestite stranicu ukoliko to želite.",
-'movearticle' => 'Premjestite stranicu:',
+'movearticle' => 'Premjesti stranicu – Премјести страницу',
 'moveuserpage-warning' => "'''Upozorenje:''' Premještate korisničku stranicu. Molimo da zapamtite da će se samo stranica premjestiti a korisnik se ''neće'' preimenovati.",
 'movenologintext' => 'Morate biti registrovani korisnik i [[Special:UserLogin|prijavljeni]] da biste premjestili stranicu.',
 'movenotallowed' => 'Nemate dopuštenje za premještanje stranica.',
 'movenotallowedfile' => 'Nemate dopuštenja da premještate datoteke.',
 'cant-move-user-page' => 'Nemate dopuštenje da premještate korisničke stranice (osim podstranica).',
 'cant-move-to-user-page' => 'Nemate dopuštenje da premjestite stranicu na korisničku stranicu (osim na korisničku podstranicu).',
-'newtitle' => 'novi naslov:',
-'move-watch' => 'Prati ovu stranicu',
+'newtitle' => 'Novi naziv - Нови назив',
+'move-watch' => 'Prati ovu stranicu - Прати ову страницу',
 'movepagebtn' => 'premjestite stranicu',
 'pagemovedsub' => 'Premještanje uspjelo',
 'movepage-moved' => '\'\'\'"$1" je premještena na "$2"\'\'\'',
@@ -2755,18 +2769,18 @@ Molimo Vas da izaberete drugo ime.',
 'movepage-page-moved' => 'Stranica $1 je premještena na $2.',
 'movepage-page-unmoved' => 'Stranica $1 ne može biti premještena na $2.',
 'movepage-max-pages' => 'Maksimum od $1 {{PLURAL:$1|stranice|stranice|stranica}} je premješteno i više nije moguće premjestiti automatski.',
-'movelogpage' => 'Registar premještanja',
+'movelogpage' => 'Evidencija premještanja',
 'movelogpagetext' => 'Ispod je spisak stranica koje su premještene.',
 'movesubpage' => '{{PLURAL:$1|Podstranica|Podstranice}}',
 'movesubpagetext' => 'Ova stranica ima $1 {{PLURAL:$1|podstranicu|podstranice|podstranica}} prikazanih ispod.',
 'movenosubpage' => 'Ova stranica nema podstranica.',
 'movereason' => 'Razlog:',
-'revertmove' => 'vrati',
+'revertmove' => 'vrati - врати',
 'delete_and_move' => 'Brisanje i premještanje',
 'delete_and_move_text' => '==Brisanje neophodno==
 Odredišna stranica "[[:$1]]" već postoji.
 Da li je želite obrisati kako bi ste mogli izvršiti premještanje?',
-'delete_and_move_confirm' => 'Da, obriši stranicu',
+'delete_and_move_confirm' => 'Da, izbriši stranicu - Да, избриши страницу',
 'delete_and_move_reason' => 'Obrisano da se oslobodi mjesto za premještanje iz „[[$1]]“',
 'selfmove' => 'Izvorni i ciljani naziv su isti; strana ne može da se premjesti preko same sebe.',
 'immobile-source-namespace' => 'Ne mogu premjestiti stranice u imenski prostor "$1"',
@@ -2854,7 +2868,7 @@ Sve akcije vezane uz transwiki uvoz su zabilježene u [[Special:Log/import|regis
 'import-interwiki-source' => 'Izvorna wiki/stranica:',
 'import-interwiki-history' => 'Kopiraj sve verzije historije za ovu stranicu',
 'import-interwiki-templates' => 'Uključi sve šablone',
-'import-interwiki-submit' => 'Uvoz',
+'import-interwiki-submit' => 'Uvezi - Увези',
 'import-interwiki-namespace' => 'Odredišni imenski prostor:',
 'import-interwiki-rootpage' => 'Odredišna osnovna stranica (neobavezno):',
 'import-upload-filename' => 'Naziv datoteke:',
@@ -3118,7 +3132,7 @@ Njegovim izvršavanjem možete da ugrozite Vaš sistem.",
 'file-no-thumb-animation-gif' => "'''Napomena: zbog tehničkih ograničenja, minijature GIF slika visoke rezolucije kao što je ova neće se animirati.'''",
 
 # Special:NewFiles
-'newimages' => 'Galerija novih slika',
+'newimages' => 'Galerija novih fajlova / Галерија нових фајлова',
 'imagelisttext' => "Ispod je spisak od '''$1''' {{PLURAL:$1|datoteke|datoteke|datoteka}} poredanih $2.",
 'newimages-summary' => 'Ova posebna stranica prikazuje posljednje postavljene datoteke.',
 'newimages-legend' => 'Filter',
@@ -3231,7 +3245,7 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
 'exif-spectralsensitivity' => 'Spektralna osjetljivost',
 'exif-isospeedratings' => 'Rejting ISO brzine',
 'exif-shutterspeedvalue' => 'Brzina APEX okidača',
-'exif-aperturevalue' => 'APEX otvor',
+'exif-aperturevalue' => 'Otvor blende',
 'exif-brightnessvalue' => 'APEX osvijetljenost',
 'exif-exposurebiasvalue' => 'Kompozicija ekspozicije',
 'exif-maxaperturevalue' => 'Najveći broj otvora blende',
@@ -3794,21 +3808,21 @@ Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] z
 'fileduplicatesearch-noresults' => 'Nije pronađena datoteka sa imenom "$1".',
 
 # Special:SpecialPages
-'specialpages' => 'Posebne stranice',
+'specialpages' => 'Posebno / Посебно',
 'specialpages-note' => '* Normalne posebne stranice.
 * <span class="mw-specialpagerestricted">Ograničene posebne stranice.</span>
 * <span class="mw-specialpagecached">Keširane posebne stranice (mogu biti zastarjele).</span>',
-'specialpages-group-maintenance' => 'Izvještaji za održavanje',
-'specialpages-group-other' => 'Ostale posebne stranice',
-'specialpages-group-login' => 'Prijava / Otvaranje računa',
+'specialpages-group-maintenance' => 'Izvještaji o održavanju / Извјештаји о одржавању',
+'specialpages-group-other' => 'Ostale posebne stranice - Остале посебне странице',
+'specialpages-group-login' => 'Prijava / Пријава',
 'specialpages-group-changes' => 'Nedavne izmjene i registri',
-'specialpages-group-media' => 'Mediji i postavljanje datoteka',
-'specialpages-group-users' => 'Korisnici i korisnička prava',
-'specialpages-group-highuse' => 'Često korištene stranice',
+'specialpages-group-media' => 'Multimedijalne datoteke \\ fajlovi i njihovo postavljanje / Мултимедијалне датотеке \\ фајлови и њихово постављање',
+'specialpages-group-users' => 'Korisnici i njihova prava / Корисници и њихова права',
+'specialpages-group-highuse' => 'Najčešće korištene stranice / Најчешће кориштене странице',
 'specialpages-group-pages' => 'Spiskovi stranica',
 'specialpages-group-pagetools' => 'Alati za stranice',
 'specialpages-group-wiki' => 'Podaci i alati',
-'specialpages-group-redirects' => 'Preusmjeravanje posebnih stranica',
+'specialpages-group-redirects' => 'Posebne stranice za preusmjeravanje / Посебне стране за преусмеравање',
 'specialpages-group-spam' => 'Spam alati',
 
 # Special:BlankPage
@@ -3990,4 +4004,7 @@ U suprotnom, poslužite se jednostavnim obrascem ispod. Vaš komentar će stajat
 # Image rotation
 'rotate-comment' => 'Slika rotirana za $1 {{PLURAL:$1|stepeni}} u smjeru kazaljke na satu',
 
+# Special:ExpandTemplates
+'expand_templates_input' => 'Unos - Унос',
+
 );
index 381b4c7..2c658c7 100644 (file)
@@ -1034,6 +1034,7 @@ Izgleda, da je bila izbrisana.',
 'content-not-allowed-here' => 'Vsebina »$1« ni dovoljena na strani [[$2]]',
 'editwarning-warning' => 'Če zapustite stran, boste morda izgubili vse spremembe, ki ste jih naredili.
 Če ste prijavljeni, lahko to opozorilo onemogočite v razdelku »Urejanje« v svojih nastavitvah.',
+'editpage-notsupportedcontentformat-title' => 'Oblika vsebine ni podprta',
 
 # Content models
 'content-model-wikitext' => 'wikibesedilo',
@@ -1427,8 +1428,8 @@ Ko vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo ra
 'prefs-tabs-navigation-hint' => 'Namig: Za krmarjenje med zavihki na seznamu zavihkov lahko uporabite levo in desno smerno tipko.',
 
 # User preference: email validation using jQuery
-'email-address-validity-valid' => 'Izgleda veljaven',
-'email-address-validity-invalid' => 'Obvezen je veljaven naslov!',
+'email-address-validity-valid' => 'E-poštni naslov je videti veljaven',
+'email-address-validity-invalid' => 'Vnesite veljaven e-poštni naslov',
 
 # User rights
 'userrights' => 'Upravljanje s pravicami uporabnikov',
@@ -4113,4 +4114,6 @@ Pravzaprav razširi skoraj vse v dvojnih zavitih oklepajih.',
 'expand_templates_generate_rawhtml' => 'Prikaži surovi HTML',
 'expand_templates_preview' => 'Predogled',
 
+# Unknown messages
+'uploadinvalidxml' => 'XML v naloženi datoteki ne moremo razčleniti.',
 );
index c7bc020..0bae5dd 100644 (file)
@@ -981,18 +981,18 @@ $2',
 'passwordreset-email' => 'Е-адреса:',
 'passwordreset-emailtitle' => 'Детаљи налога на викију {{SITENAME}}',
 'passwordreset-emailtext-ip' => 'Неко, вероватно Ви, са ИП адресе $1 је затражио нову лозинку на викију {{SITENAME}} ($4).
-Следећи {{PLURAL:$3|1=кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
+Следећи {{PLURAL:$3|кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
 
 $2
 
-{{PLURAL:$3|1=Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|1=један дан|$5 дана}}.
+{{PLURAL:$3|Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана}}.
 Пријавите се и изаберите нову лозинку. Ако је неко други захтевао ову радњу или сте се сетили лозинке и не желите да је мењате, занемарите ову поруку и наставите користити стару лозинку.',
-'passwordreset-emailtext-user' => '{{GENDER:$1|Корисник|Корисница|Корисник}} је затражио подсетник о подацима за пријаву на викију {{SITENAME}} ($4).
-Следећи {{PLURAL:$3|1=кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
+'passwordreset-emailtext-user' => '{{GENDER:$1|Корисник је затражио|Корисница је затражила}} подсетник о подацима за пријаву на викију {{SITENAME}} ($4).
+Следећи {{PLURAL:$3|кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
 
 $2
 
-{{PLURAL:$3|1=Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана|$5 дана}}.
+{{PLURAL:$3|Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана}}.
 Пријавите се и изаберите нову лозинку. Ако је неко други захтевао ову радњу или сте се сетили лозинке и не желите да је мењате, занемарите ову поруку.',
 'passwordreset-emailelement' => 'Корисничко име: $1
 Привремена лозинка: $2',
@@ -1186,7 +1186,7 @@ $2
 Последња ставка у историји је приказана испод:",
 'semiprotectedpagewarning' => "'''Напомена:''' ова страница је заштићена, тако да само регистровани корисници могу да је уређују.
 Последњи запис у дневнику је приказан испод:",
-'cascadeprotectedwarning' => "<div style=\"background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;\">'''Упозорење:''' Ова страница је заштићена тако да је могу уређивати само администратори, јер је она укључена у {{PLURAL:\$1|1=следећу страницу која је|следеће странице које су}} заштићене „преносивом“ заштитом:</div>",
+'cascadeprotectedwarning' => "<div style=\"background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;\">'''Упозорење:''' Ова страница је заштићена тако да је могу уређивати само администратори, јер је она укључена у {{PLURAL:\$1|следећу страницу која је|следеће странице које су}} заштићене „преносивом“ заштитом:</div>",
 'titleprotectedwarning' => "'''Упозорење: ова страница је заштићена тако да је могу направити само корисници [[Special:ListGroupRights|с одређеним правима]].'''",
 'templatesused' => '{{PLURAL:$1|1=Шаблон|Шаблони}} на овој страници:',
 'templatesusedpreview' => '{{PLURAL:$1|1=Шаблон|Шаблони}} у овом прегледу:',
@@ -1202,8 +1202,8 @@ $2
 'sectioneditnotsupported-title' => 'Уређивање одељка није подржано',
 'sectioneditnotsupported-text' => 'Уређивање одељка није подржано на овој страници.',
 'permissionserrors' => 'Грешка у дозволи',
-'permissionserrorstext' => 'Немате овлашћење за ту радњу из {{PLURAL:$1|1=следећег|следећих}} разлога:',
-'permissionserrorstext-withaction' => 'Немате дозволу за $2 из {{PLURAL:$1|1=следећег|следећих}} разлога:',
+'permissionserrorstext' => 'Немате овлашћење за ту радњу из {{PLURAL:$1|следећег|следећих}} разлога:',
+'permissionserrorstext-withaction' => 'Немате дозволу за $2 из {{PLURAL:$1|следећег|следећих}} разлога:',
 'recreate-moveddeleted-warn' => "'''Упозорење: поново правите страницу која је претходно обрисана.'''
 
 Размотрите да ли је прикладно да наставите с уређивањем ове странице.
@@ -1341,7 +1341,7 @@ $2
 'revdelete-show-file-confirm' => 'Желите ли да видите обрисану измену датотеке „<nowiki>$1</nowiki>“ од $2; $3?',
 'revdelete-show-file-submit' => 'Да',
 'revdelete-selected' => "'''{{PLURAL:$2|1=Изабрана измена|Изабране измене}} странице '''[[:$1]]''''''",
-'logdelete-selected' => "'''{{PLURAL:$1|1=Изабрана ставка у историји|Изабране ставке у историји}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Изабрана ставка у историји|Изабране ставке у историји}}:'''",
 'revdelete-text' => "'''Обрисане измене ће и даље бити приказане у историји страница и записима, али делови њиховог садржаја неће бити доступни јавности.'''
 Други администратори на овом викију ће и даље имати приступ сакривеном садржају, а они ће тај садржај моћи да врате путем овог сучеља, осим ако нису постављена додатна ограничења.",
 'revdelete-confirm' => 'Потврдите да намеравате ово урадити, да разумете последице и да то чините у складу с [[{{MediaWiki:Policy-url}}|правилима]].',
@@ -1871,9 +1871,9 @@ $1",
 'filetype-badmime' => 'Датотеке MIME типа „$1“ није дозвољено слати.',
 'filetype-bad-ie-mime' => 'Ова датотека се не може послати зато што би је Интернет експлорер уочио као „$1“, а то је забрањена и опасна врста датотеке.',
 'filetype-unwanted-type' => '„.$1“ је непожељна врста датотеке.
-{{PLURAL:$3|1=Пожељна врста датотеке је|Пожељне врсте датотека су}} $2.',
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|1=је забрањена врста датотеке|су забрањене врсте датотека}}.
-{{PLURAL:$3|1=Дозвољена врста датотеке је|Дозвољене врсте датотека су}} $2.',
+{{PLURAL:$3|Пожељна врста датотеке је|Пожељне врсте датотека су}} $2.',
+'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|је забрањена врста датотеке|су забрањене врсте датотека}}.
+{{PLURAL:$3|Дозвољена врста датотеке је|Дозвољене врсте датотека су}} $2.",
 'filetype-missing' => 'Ова датотека нема екстензију.',
 'empty-file' => 'Послата датотека је празна.',
 'file-too-large' => 'Послата датотека је превелика.',
@@ -1915,7 +1915,7 @@ $1",
 'fileexists-shared-forbidden' => 'Датотека с овим називом већ постоји у заједничком складишту.
 Вратите се и пошаљите датотеку с другим називом.
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Ово је дупликат {{PLURAL:$1|1=следеће датотеке|следећих датотека}}:',
+'file-exists-duplicate' => 'Ово је дупликат {{PLURAL:$1|следеће датотеке|следећих датотека}}:',
 'file-deleted-duplicate' => 'Датотека истоветна овој ([[:$1]]) је претходно обрисана.
 Погледајте историју брисања пре поновног слања.',
 'uploadwarning' => 'Упозорење при отпремању',
@@ -2322,7 +2322,7 @@ $1',
 'nopagetitle' => 'Не постоји таква страница',
 'nopagetext' => 'Тражена страница не постоји.',
 'pager-newer-n' => '{{PLURAL:$1|новији 1|новија $1|новијих $1}}',
-'pager-older-n' => '{{PLURAL:$1|1=старији 1|старијих $1}}',
+'pager-older-n' => '{{PLURAL:$1|старији 1|старијих $1}}',
 'suppress' => 'Надзор',
 'querypage-disabled' => 'Ова посебна страница је онемогућена ради побољшања перформанси.',
 
@@ -2368,7 +2368,7 @@ $1',
 
 # Special:Categories
 'categories' => 'Категоријe',
-'categoriespagetext' => '{{PLURAL:$1|1=Следећа категорија садржи|Следеће категорије садрже}} странице или датотеке.
+'categoriespagetext' => '{{PLURAL:$1|Следећа категорија садржи|Следеће категорије садрже}} странице или датотеке.
 [[Special:UnusedCategories|Некоришћене категорије]] нису приказане овде.
 Погледајте и [[Special:WantedCategories|тражене категорије]].',
 'categoriesfrom' => 'Прикажи категорије почев од:',
@@ -2387,7 +2387,7 @@ $1',
 'linksearch-ok' => 'Претражи',
 'linksearch-text' => 'Могу се користити џокери попут „*.wikipedia.org“.
 Потребан је највиши домен, као „*.org“.<br />
-{{PLURAL:$2|1=Подржан протокол|Подржани протоколи}}: <code>$1</code> (задаје http:// ако не наведете протокол).',
+{{PLURAL:$2|Подржан протокол|Подржани протоколи}}: <code>$1</code> (задаје http:// ако не наведете протокол).',
 'linksearch-line' => '$1 веза у $2',
 'linksearch-error' => 'Џокери се могу појавити само на почетку адресе.',
 
@@ -2419,12 +2419,12 @@ $1',
 'listgrouprights-members' => '(списак чланова)',
 'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <code>($2)</code></span>',
 'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <code>($2)</code></span>',
-'listgrouprights-addgroup' => 'додаје {{PLURAL:$2|1=следећу групу|следеће групе}}: $1',
-'listgrouprights-removegroup' => 'брише {{PLURAL:$2|1=следећу групу|следеће групе}}: $1',
+'listgrouprights-addgroup' => 'додаје {{PLURAL:$2|следећу групу|следеће групе}}: $1',
+'listgrouprights-removegroup' => 'брише {{PLURAL:$2|следећу групу|следеће групе}}: $1',
 'listgrouprights-addgroup-all' => 'додавање свих група',
 'listgrouprights-removegroup-all' => 'брисање свих група',
-'listgrouprights-addgroup-self' => 'додавање {{PLURAL:$2|1=групе|група}} на свој налог: $1',
-'listgrouprights-removegroup-self' => 'уклањање {{PLURAL:$2|1=групе|група}} са свог налога: $1',
+'listgrouprights-addgroup-self' => 'додавање {{PLURAL:$2|групе|група}} на свој налог: $1',
+'listgrouprights-removegroup-self' => 'уклањање {{PLURAL:$2|групе|група}} са свог налога: $1',
 'listgrouprights-addgroup-self-all' => 'Додај све групе на сопствени налог',
 'listgrouprights-removegroup-self-all' => 'Уклони све групе са сопственог налога',
 
@@ -2775,8 +2775,8 @@ $1',
 'isredirect' => 'преусмерење',
 'istemplate' => 'укључивање',
 'isimage' => 'веза до датотеке',
-'whatlinkshere-prev' => '{{PLURAL:$1|1=претходни|претходних $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|1=следећи|следећих $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|претходни|претходних $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|следећи|следећих $1}}',
 'whatlinkshere-links' => '← везе',
 'whatlinkshere-hideredirs' => '$1 преусмерења',
 'whatlinkshere-hidetrans' => '$1 укључивања',
@@ -2848,7 +2848,7 @@ $1',
 'blocklist-reason' => 'Разлог',
 'ipblocklist-submit' => 'Претражи',
 'ipblocklist-localblock' => 'Локално блокирање',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Друго блокирање|Друга блокирања}}',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Друго блокирање|Друга блокирања}}',
 'infiniteblock' => 'трајно',
 'expiringblock' => 'истиче дана $1 у $2',
 'anononlyblock' => 'само анонимни',
@@ -2870,7 +2870,7 @@ $1',
 Историја блокирања се налази испод:',
 'blocklog-showsuppresslog' => '{{GENDER:|Овај корисник је раније блокиран и сакривен|Ова корисница је раније блокирана и сакривена|Овај корисник је раније блокиран и сакривен}}.
 Историја сакривања се налази испод:',
-'blocklogentry' => '{{GENDER:|је блокирао|је блокирала}} [[$1]] с роком истицања од $2 $3',
+'blocklogentry' => 'је блокирао [[$1]] с роком истицања од $2 $3',
 'reblock-logentry' => '{{GENDER:|је променио|је променила|је променио}} подешавања за блокирање {{GENDER:$1|корисника|кориснице|корисника}} [[$1]] с роком истека од $2 ($3)',
 'blocklogtext' => 'Ово је дневник блокирања и деблокирања корисника.
 Аутоматски блокиране ИП адресе нису наведене.
@@ -2889,7 +2889,7 @@ $1',
 'ipb_hide_invalid' => 'Не могу да потиснем овај налог. Можда има превише измена.',
 'ipb_already_blocked' => '„$1“ је већ блокиран',
 'ipb-needreblock' => '$1 је већ блокиран. Желите ли да промените подешавања?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|1=Друга блокада|Друге блокаде}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Друга блокада|Друге блокаде}}',
 'unblock-hideuser' => 'Не можете деблокирати овог корисника јер је његово корисничко име сакривено.',
 'ipb_cant_unblock' => 'Грешка: блокада $1 не постоји. Можда је корисник деблокиран.',
 'ipb_blocked_as_range' => 'Грешка: ИП адреса $1 није директно блокирана и не може да се деблокира.
@@ -2987,7 +2987,7 @@ $1',
 'movepage-max-pages' => 'Највише $1 {{PLURAL:$1|страница је премештена|странице су премештене|страница је премештено}}, и више не може да буде аутоматски премештено.',
 'movelogpage' => 'Дневник премештања',
 'movelogpagetext' => 'Испод се налази списак премештања страница.',
-'movesubpage' => '{{PLURAL:$1|1=Подстраница|Подстранице}}',
+'movesubpage' => '{{PLURAL:$1|Подстраница|Подстранице}}',
 'movesubpagetext' => 'Ова страница има $1 {{PLURAL:$1|подстраницу приказану|подстранице приказане|подстраница приказаних}} испод.',
 'movenosubpage' => 'Ова страница нема подстрана.',
 'movereason' => 'Разлог:',
@@ -3124,7 +3124,7 @@ $1',
 'import-error-special' => 'Не могу да увезем страницу „$1“ јер она припада посебном именском простору које не прихвата странице.',
 'import-error-invalid' => 'Не могу да увезем страницу „$1“ јер је њен назив неисправан.',
 'import-error-unserialize' => 'Верзија $2 странице $1 не може бити прочитана/увезена. Записано је да верзија користи $3 тип садржаја у $4 формату.',
-'import-options-wrong' => '{{PLURAL:$2|1=Погрешна опција|Погрешне опције}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => '{{PLURAL:$2|Погрешна опција|Погрешне опције}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Наведена основна страница има неисправан наслов.',
 'import-rootpage-nosubpage' => 'Именски простор „$1“ основне странице не дозвољава подстранице.',
 
@@ -3243,14 +3243,14 @@ $1',
 'notacceptable' => 'Сервер не може да направи податке у формату погодном за ваш клијент.',
 
 # Attribution
-'anonymous' => 'Анонимни {{PLURAL:$1|1=корисник|корисници}} на пројекту {{SITENAME}}',
+'anonymous' => 'Анонимни {{PLURAL:$1|корисник|корисници}} на пројекту {{SITENAME}}',
 'siteuser' => '{{SITENAME}} корисник $1',
 'anonuser' => '{{SITENAME}} анониман корисник $1',
 'lastmodifiedatby' => 'Ову страницу је последњи пут {{GENDER:$4|изменио|изменила|изменио}} $3, $1 у $2.',
-'othercontribs' => 'Засновано на раду корисникâ $1.',
+'othercontribs' => 'Засновано на раду корисника $1.',
 'others' => 'други',
 'siteusers' => '{{PLURAL:$2|1=корисник|корисници}} на пројекту {{SITENAME}} $1',
-'anonusers' => '{{PLURAL:$2|1=анониман корисник|анонимни корисници}} на пројекту {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2|анониман корисник|анонимни корисници}} на пројекту {{SITENAME}} $1',
 'creditspage' => 'Аутори странице',
 'nocredits' => 'Не постоје подаци о аутору ове странице.',
 
@@ -3258,7 +3258,7 @@ $1',
 'spamprotectiontitle' => 'Филтер за заштиту од непожељних порука',
 'spamprotectiontext' => 'Страница коју желите да сачувате је блокирана од филтера против непожељних порука.
 Ово је вероватно изазвано везом до спољашњег сајта који се налази на црној листи.',
-'spamprotectionmatch' => 'СледеÑ\9bи Ñ\82екÑ\81Ñ\82 Ñ\98е Ð¸Ð·Ð°Ð·Ð²Ð°Ð¾ Ð½Ð°Ñ\88 Ñ\84илÑ\82еÑ\80 Ð·Ð° Ð½ÐµÐ¿Ð¾Ð¶ÐµÑ\99не поруке: $1',
+'spamprotectionmatch' => 'СледеÑ\9bи Ñ\82екÑ\81Ñ\82 Ñ\98е Ð¸Ð·Ð°Ð·Ð²Ð°Ð¾ Ð½Ð°Ñ\88 Ñ\84илÑ\82еÑ\80 Ð·Ð° Ð½ÐµÐ¶ÐµÑ\99ене поруке: $1',
 'spambot_username' => 'Чишћење непожељних порука у Медијавикији',
 'spam_reverting' => 'Враћам на последњу измену која не садржи везе до $1',
 'spam_blanking' => 'Све измене садрже везе до $1. Чистим',
@@ -3282,7 +3282,7 @@ $1',
 'pageinfo-robot-noindex' => 'Није дозвољено',
 'pageinfo-views' => 'Број прегледа',
 'pageinfo-watchers' => 'Број надгледача страница',
-'pageinfo-few-watchers' => 'Мање од $1 {{PLURAL:$1|1=пратиоца|пратилаца}}',
+'pageinfo-few-watchers' => 'Мање од $1 {{PLURAL:$1|пратиоца|пратилаца}}',
 'pageinfo-redirects-name' => 'Број преусмерења на ову страницу',
 'pageinfo-subpages-name' => 'Подстранице ове странице',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|преусмерење|преусмерења|преусмерења}}; $3 {{PLURAL:$3|непреусмерење|непреусмерења|непреусмерења}})',
@@ -3294,10 +3294,10 @@ $1',
 'pageinfo-authors' => 'Број засебних аутора',
 'pageinfo-recent-edits' => 'Број скорашњих измена (у последњих $1)',
 'pageinfo-recent-authors' => 'Број скорашњих засебних аутора',
-'pageinfo-magic-words' => '{{PLURAL:$1|1=Магична реч|Магичне речи}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Сакривена категорија|Сакривене категорије}} ($1)',
-'pageinfo-templates' => '{{PLURAL:$1|1=Укључени шаблон|Укључени шаблони}} ($1)',
-'pageinfo-transclusions' => '{{PLURAL:$1|1=Страница|Странице}} укључене у ($1)',
+'pageinfo-magic-words' => '{{PLURAL:$1|Магична реч|Магичне речи}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|Сакривена категорија|Сакривене категорије}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|Укључени шаблон|Укључени шаблони}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Страница|Странице}} укључене у ($1)',
 'pageinfo-toolboxlink' => 'Подаци о страници',
 'pageinfo-redirectsto' => 'Преусмерава на',
 'pageinfo-redirectsto-info' => 'подаци',
@@ -3399,15 +3399,15 @@ $1',
 'hours' => '{{PLURAL:$1|$1 сат|$1 сата|$1 сати}}',
 'days' => '{{PLURAL:$1|$1 дан|$1 дана|$1 дана}}',
 'weeks' => '{{PLURAL:$1|$1 седмица}}',
-'months' => '{{PLURAL:$1|1=$1 месец|$1 месеци}}',
-'years' => '{{PLURAL:$1|1=$1 година|$1 године}}',
+'months' => '{{PLURAL:$1|$1 месец|$1 месеци}}',
+'years' => '{{PLURAL:$1|$1 година|$1 године}}',
 'ago' => 'пре $1',
 'just-now' => 'управо сад',
 
 # Human-readable timestamps
-'hours-ago' => 'Пре $1 {{PLURAL:$1|1=сат|сати}}',
-'minutes-ago' => 'Пре $1 {{PLURAL:$1|1=минут|минута}}',
-'seconds-ago' => 'Пре $1 {{PLURAL:$1|1=секунда|секунди}}',
+'hours-ago' => 'Пре $1 {{PLURAL:$1|сат|сата|сати}}',
+'minutes-ago' => 'Пре $1 {{PLURAL:$1|минут|минута}}',
+'seconds-ago' => 'Пре $1 {{PLURAL:$1|секунда|секунди}}',
 'monday-at' => 'Понедељак у $1',
 'tuesday-at' => 'Уторак у $1',
 'wednesday-at' => 'Среда у $1',
@@ -4077,7 +4077,7 @@ $5
 
 # Friendlier slave lag warnings
 'lag-warn-normal' => 'Измене новије од $1 {{PLURAL:$1|секунде|секунде|секунди}} неће бити приказане.',
-'lag-warn-high' => 'Због преоптерећења базе података, измене новије од $1 {{PLURAL:$1|1=секунда|секунде}} неће бити приказане.',
+'lag-warn-high' => 'Због преоптерећења базе података, измене новије од $1 {{PLURAL:$1|секунда|секунде}} неће бити приказане.',
 
 # Watchlist editor
 'watchlistedit-numitems' => 'Ваш списак надгледања садржи {{PLURAL:$1|један наслов|$1 наслова|$1 наслова}}, без страница за разговор.',
@@ -4099,7 +4099,7 @@ $5
 'watchlistedit-raw-submit' => 'Ажурирај списак',
 'watchlistedit-raw-done' => 'Ваш списак надгледања је ажуриран.',
 'watchlistedit-raw-added' => '{{PLURAL:$1|Додат је један наслов|Додата су $1 наслова|Додато је $1 наслова}}:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|Уклоњен је један наслов|Уклоњена су $1 наслова|Уклоњено је $1 наслова}}:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 наслов је уклоњен|Уклоњена су $1 наслова|Уклоњено је $1 наслова}}:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'прикажи сродне измене',
@@ -4315,15 +4315,15 @@ $5
 'sqlite-no-fts' => '$1 без подршке претраге целог текста',
 
 # New logging system
-'logentry-delete-delete' => '$1 је {{GENDER:|обрисао|обрисала}} страницу $3',
+'logentry-delete-delete' => '$1 је {{GENDER:$2|обрисао|обрисала}} страницу $3',
 'logentry-delete-restore' => '$1 је {{GENDER:$2|вратио|вратила}} страницу $3',
-'logentry-delete-event' => '$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=догађаја|$5 догађаја}} у дневнику на $3: $4',
-'logentry-delete-revision' => '$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=измене|$5 измена}} на страници $3: $4',
+'logentry-delete-event' => '$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|догађаја|$5 догађаја}} у дневнику на $3: $4',
+'logentry-delete-revision' => '$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|измене|$5 измена}} на страници $3: $4',
 'logentry-delete-event-legacy' => '$1 је {{GENDER:$2|променио|променила}} видљивост догађаја у дневнику на $3',
 'logentry-delete-revision-legacy' => '$1 је {{GENDER:$2|променио|променила}} видљивост измена на страници $3',
 'logentry-suppress-delete' => '$1 је {{GENDER:$2|потиснуо|потиснула}} страницу $3',
-'logentry-suppress-event' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=догађаја|$5 догађаја}} у дневнику на $3: $4',
-'logentry-suppress-revision' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=измене|$5 измена}} на страници $3: $4',
+'logentry-suppress-event' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|догађаја|$5 догађаја}} у дневнику на $3: $4',
+'logentry-suppress-revision' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|измене|$5 измена}} на страници $3: $4',
 'logentry-suppress-event-legacy' => '$1 је потајно {{GENDER:$2|променио|променила}} видљивост догађаја у дневнику на $3',
 'logentry-suppress-revision-legacy' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост измена на страници $3',
 'revdelete-content-hid' => 'садржај је сакривен',
@@ -4374,10 +4374,10 @@ $5
 'api-error-badaccess-groups' => 'Није вам дозвољено да отпремате датотеке на овај вики.',
 'api-error-badtoken' => 'Унутрашња грешка: неисправан жетон.',
 'api-error-copyuploaddisabled' => 'Отпремање путем адресе је онемогућено на овом серверу.',
-'api-error-duplicate' => 'Већ {{PLURAL:$1|1=постоји [$2 друга датотека]|постоје [$2 друге датотеке]}} с истим садржајем.',
-'api-error-duplicate-archive' => '{{PLURAL:$1|1=Постојала је [$2 друга датотека]|Постојале су [$2 друге датотеке]}} с истим садржајем, али {{PLURAL:$1|1=је обрисана|су обрисане}}.',
-'api-error-duplicate-archive-popup-title' => '{{PLURAL:$1|1=Дуплирана датотека која је већ обрисана|Дуплиране датотеке које су већ обрисане}}',
-'api-error-duplicate-popup-title' => '{{PLURAL:$1|1=Дуплирана датотека|Дуплиране датотеке}}',
+'api-error-duplicate' => 'Већ {{PLURAL:$1|постоји [$2 друга датотека]|постоје [$2 друге датотеке]}} с истим садржајем.',
+'api-error-duplicate-archive' => '{{PLURAL:$1|Постојала је [$2 друга датотека]|Постојале су [$2 друге датотеке]}} с истим садржајем, али {{PLURAL:$1|је обрисана|су обрисане}}.',
+'api-error-duplicate-archive-popup-title' => '{{PLURAL:$1|Дуплирана датотека која је већ обрисана|Дуплиране датотеке које су већ обрисане}}',
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|Дуплирана датотека|Дуплиране датотеке}}',
 'api-error-empty-file' => 'Послата датотека је празна.',
 'api-error-emptypage' => 'Стварање нових празних страница није дозвољено.',
 'api-error-fetchfileerror' => 'Унутрашња грешка: дошло је до грешке при добављању датотеке.',
@@ -4386,7 +4386,7 @@ $5
 'api-error-file-too-large' => 'Послата датотека је превелика.',
 'api-error-filename-tooshort' => 'Назив датотеке је прекратак.',
 'api-error-filetype-banned' => 'Ова врста датотеке је забрањена.',
-'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|1=је забрањена врста датотеке|су забрањене врсте датотека}}. {{PLURAL:$3|1=Дозвољена је|Дозвољене су}} $2.',
+'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|је забрањена врста датотеке|су забрањене врсте датотека}}. {{PLURAL:$3|Дозвољена је|Дозвољене су}} $2.',
 'api-error-filetype-missing' => 'Датотеци недостаје наставак.',
 'api-error-hookaborted' => 'Измена је одбачена од куке за проширења.',
 'api-error-http' => 'Унутрашња грешка: не могу да се повежем са сервером.',
@@ -4427,7 +4427,7 @@ $5
 'rotate-comment' => 'Слика је ротирана у смеру казаљке на сату за {{PLURAL:$1|степени}}',
 
 # Limit report
-'limitreport-walltime-value' => '$1 {{PLURAL:$1|1=секунда|секунди}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунда|секунди}}',
 'limitreport-postexpandincludesize-value' => '$1/$2 бајтова',
 'limitreport-templateargumentsize-value' => '$1/$2 бајтова',
 
index b6b2341..cd4b35a 100644 (file)
@@ -867,19 +867,19 @@ Možda ste već promenili lozinku ili ste zatražili novu privremenu lozinku.',
 'passwordreset-capture-help' => 'Ako označite ovu kućicu, e-poruka s privremenom lozinkom će biti prikazana i poslata korisniku.',
 'passwordreset-email' => 'E-adresa:',
 'passwordreset-emailtitle' => 'Detalji naloga na vikiju {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Neko, verovatno vi, sa IP adrese $1 je zatražio novu lozinku na vikiju {{SITENAME}} ($4).
-Sledeći {{PLURAL:$3|1=korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:
+'passwordreset-emailtext-ip' => 'Neko, verovatno Vi, sa IP adrese $1 je zatražio novu lozinku na vikiju {{SITENAME}} ($4).
+Sledeći {{PLURAL:$3|korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:
 
 $2
 
-{{PLURAL:$3|1=Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.
-Prijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku.',
-'passwordreset-emailtext-user' => '{{GENDER:$1|Korisnik|Korisnica|Korisnik}} $1 je zatražio podsetnik o podacima za prijavu na vikiju {{SITENAME}} ($4).
-Sledeći {{PLURAL:$3|1=korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:
+{{PLURAL:$3|Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana}}.
+Prijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku i nastavite koristiti staru lozinku.',
+'passwordreset-emailtext-user' => '{{GENDER:$1|Korisnik je zatražio|Korisnica je zatražila}} podsetnik o podacima za prijavu na vikiju {{SITENAME}} ($4).
+Sledeći {{PLURAL:$3|korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:
 
 $2
 
-{{PLURAL:$3|1=Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.
+{{PLURAL:$3|Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana}}.
 Prijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku.',
 'passwordreset-emailelement' => 'Korisničko ime: $1
 Privremena lozinka: $2',
@@ -1072,7 +1072,7 @@ Administrator koji je zaključao bazu podataka je naveo sledeće objašnjenje: $
 Poslednja stavka u istoriji je prikazana ispod:",
 'semiprotectedpagewarning' => "'''Napomena:''' ova stranica je zaštićena, tako da samo registrovani korisnici mogu da je uređuju.
 Poslednji zapis u dnevniku je prikazan ispod:",
-'cascadeprotectedwarning' => "<div style=\"background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;\">'''Upozorenje:''' Ova stranica je zaštićena tako da je mogu uređivati samo administratori, jer je ona uključena u {{PLURAL:\$1|1=sledeću stranicu koja je|sledeće stranice koje su}} zaštićene „prenosivom“ zaštitom:</div>",
+'cascadeprotectedwarning' => "<div style=\"background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;\">'''Upozorenje:''' Ova stranica je zaštićena tako da je mogu uređivati samo administratori, jer je ona uključena u {{PLURAL:\$1|sledeću stranicu koja je|sledeće stranice koje su}} zaštićene „prenosivom“ zaštitom:</div>",
 'titleprotectedwarning' => "'''Upozorenje: ova stranica je zaštićena tako da je mogu napraviti samo korisnici [[Special:ListGroupRights|s određenim pravima]].'''",
 'templatesused' => '{{PLURAL:$1|1=Šablon|Šabloni}} na ovoj stranici:',
 'templatesusedpreview' => '{{PLURAL:$1|1=Šablon|Šabloni}} u ovom pregledu:',
@@ -1088,8 +1088,8 @@ Možete se vratiti i urediti postojeću stranicu, ili se [[Special:UserLogin|pri
 'sectioneditnotsupported-title' => 'Uređivanje odeljka nije podržano',
 'sectioneditnotsupported-text' => 'Uređivanje odeljka nije podržano na ovoj stranici.',
 'permissionserrors' => 'Greška u dozvoli',
-'permissionserrorstext' => 'Nemate ovlašćenje za tu radnju iz {{PLURAL:$1|1=sledećeg|sledećih}} razloga:',
-'permissionserrorstext-withaction' => 'Nemate dozvolu za $2 iz {{PLURAL:$1|1=sledećeg|sledećih}} razloga:',
+'permissionserrorstext' => 'Nemate ovlašćenje za tu radnju iz {{PLURAL:$1|sledećeg|sledećih}} razloga:',
+'permissionserrorstext-withaction' => 'Nemate dozvolu za $2 iz {{PLURAL:$1|sledećeg|sledećih}} razloga:',
 'recreate-moveddeleted-warn' => "'''Upozorenje: ponovo pravite stranicu koja je prethodno obrisana.'''
 
 Razmotrite da li je prikladno da nastavite s uređivanjem ove stranice.
@@ -1226,7 +1226,7 @@ Ipak možete da vidite ovu razliku; više detalja možete naći u [{{fullurl:{{#
 'revdelete-show-file-confirm' => 'Želite li da vidite obrisanu izmenu datoteke „<nowiki>$1</nowiki>“ od $2; $3?',
 'revdelete-show-file-submit' => 'Da',
 'revdelete-selected' => "'''{{PLURAL:$2|1=Izabrana izmena|Izabrane izmene}} stranice '''[[:$1]]''''''",
-'logdelete-selected' => "'''{{PLURAL:$1|1=Izabrana stavka u istoriji|Izabrane stavke u istoriji}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Izabrana stavka u istoriji|Izabrane stavke u istoriji}}:'''",
 'revdelete-text' => "'''Obrisane izmene će i dalje biti prikazane u istoriji stranica i zapisima, ali delovi njihovog sadržaja neće biti dostupni javnosti.'''
 Drugi administratori na ovom vikiju će i dalje imati pristup sakrivenom sadržaju, a oni će taj sadržaj moći da vrate putem ovog sučelja, osim ako nisu postavljena dodatna ograničenja.",
 'revdelete-confirm' => 'Potvrdite da nameravate ovo uraditi, da razumete posledice i da to činite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].',
@@ -1747,9 +1747,9 @@ Promenite naziv datoteke i ponovo je pošaljite.',
 'filetype-badmime' => 'Datoteke MIME tipa „$1“ nije dozvoljeno slati.',
 'filetype-bad-ie-mime' => 'Ova datoteka se ne može poslati zato što bi je Internet eksplorer uočio kao „$1“, a to je zabranjena i opasna vrsta datoteke.',
 'filetype-unwanted-type' => '„.$1“ je nepoželjna vrsta datoteke.
-{{PLURAL:$3|1=Poželjna vrsta datoteke je|Poželjne vrste datoteka su}} $2.',
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|1=je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}.
-{{PLURAL:$3|1=Dozvoljena vrsta datoteke je|Dozvoljene vrste datoteka su}} $2.',
+{{PLURAL:$3|Poželjna vrsta datoteke je|Poželjne vrste datoteka su}} $2.',
+'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}.
+{{PLURAL:$3|Dozvoljena vrsta datoteke je|Dozvoljene vrste datoteka su}} $2.",
 'filetype-missing' => 'Ova datoteka nema ekstenziju.',
 'empty-file' => 'Poslata datoteka je prazna.',
 'file-too-large' => 'Poslata datoteka je prevelika.',
@@ -1791,7 +1791,7 @@ Ako i dalje želite da pošaljete datoteku, vratite se i izaberite drugi naziv.
 'fileexists-shared-forbidden' => 'Datoteka s ovim nazivom već postoji u zajedničkom skladištu.
 Vratite se i pošaljite datoteku s drugim nazivom.
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Ovo je duplikat {{PLURAL:$1|1=sledeće datoteke|sledećih datoteka}}:',
+'file-exists-duplicate' => 'Ovo je duplikat {{PLURAL:$1|sledeće datoteke|sledećih datoteka}}:',
 'file-deleted-duplicate' => 'Datoteka istovetna ovoj ([[:$1]]) je prethodno obrisana.
 Pogledajte istoriju brisanja pre ponovnog slanja.',
 'uploadwarning' => 'Upozorenje pri otpremanju',
@@ -2191,7 +2191,7 @@ Druge veb stranice mogu koristiti sliku preko direktne adrese, tako da i pored t
 'nopagetitle' => 'Ne postoji takva stranica',
 'nopagetext' => 'Tražena stranica ne postoji.',
 'pager-newer-n' => '{{PLURAL:$1|noviji 1|novija $1|novijih $1}}',
-'pager-older-n' => '{{PLURAL:$1|1=stariji 1|starijih $1}}',
+'pager-older-n' => '{{PLURAL:$1|stariji 1|starijih $1}}',
 'suppress' => 'Nadzor',
 'querypage-disabled' => 'Ova posebna stranica je onemogućena radi poboljšanja performansi.',
 
@@ -2237,7 +2237,7 @@ Možda sadrži znakove koji se ne mogu koristiti u naslovima.',
 
 # Special:Categories
 'categories' => 'Kategorije',
-'categoriespagetext' => '{{PLURAL:$1|1=Sledeća kategorija sadrži|Sledeće kategorije sadrže}} stranice ili datoteke.
+'categoriespagetext' => '{{PLURAL:$1|Sledeća kategorija sadrži|Sledeće kategorije sadrže}} stranice ili datoteke.
 [[Special:UnusedCategories|Nekorišćene kategorije]] nisu prikazane ovde.
 Pogledajte i [[Special:WantedCategories|tražene kategorije]].',
 'categoriesfrom' => 'Prikaži kategorije počev od:',
@@ -2256,7 +2256,7 @@ Pogledajte i [[Special:WantedCategories|tražene kategorije]].',
 'linksearch-ok' => 'Pretraži',
 'linksearch-text' => 'Mogu se koristiti džokeri poput „*.wikipedia.org“.
 Potreban je najviši domen, kao „*.org“.<br />
-{{PLURAL:$2|1=Podržan protokol|Podržani protokoli}}: <code>$1</code> (zadaje http:// ako ne navedete protokol).',
+{{PLURAL:$2|Podržan protokol|Podržani protokoli}}: <code>$1</code> (zadaje http:// ako ne navedete protokol).',
 'linksearch-line' => '$1 veza u $2',
 'linksearch-error' => 'Džokeri se mogu pojaviti samo na početku adrese.',
 
@@ -2288,12 +2288,12 @@ Pogledajte [[{{MediaWiki:Listgrouprights-helppage}}|više detalja]] o pojedinač
 'listgrouprights-members' => '(spisak članova)',
 'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <code>($2)</code></span>',
 'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <code>($2)</code></span>',
-'listgrouprights-addgroup' => 'dodaje {{PLURAL:$2|1=sledeću grupu|sledeće grupe}}: $1',
-'listgrouprights-removegroup' => 'briše {{PLURAL:$2|1=sledeću grupu|sledeće grupe}}: $1',
+'listgrouprights-addgroup' => 'dodaje {{PLURAL:$2|sledeću grupu|sledeće grupe}}: $1',
+'listgrouprights-removegroup' => 'briše {{PLURAL:$2|sledeću grupu|sledeće grupe}}: $1',
 'listgrouprights-addgroup-all' => 'dodavanje svih grupa',
 'listgrouprights-removegroup-all' => 'brisanje svih grupa',
-'listgrouprights-addgroup-self' => 'dodavanje {{PLURAL:$2|1=grupe|grupa}} na svoj nalog: $1',
-'listgrouprights-removegroup-self' => 'uklanjanje {{PLURAL:$2|1=grupe|grupa}} sa svog naloga: $1',
+'listgrouprights-addgroup-self' => 'dodavanje {{PLURAL:$2|grupe|grupa}} na svoj nalog: $1',
+'listgrouprights-removegroup-self' => 'uklanjanje {{PLURAL:$2|grupe|grupa}} sa svog naloga: $1',
 'listgrouprights-addgroup-self-all' => 'Dodaj sve grupe na sopstveni nalog',
 'listgrouprights-removegroup-self-all' => 'Ukloni sve grupe sa sopstvenog naloga',
 
@@ -2634,8 +2634,8 @@ Izveštaj o blokiranim korisnicima se nalazi ispod:',
 'isredirect' => 'preusmerenje',
 'istemplate' => 'uključivanje',
 'isimage' => 'veza ka datoteci',
-'whatlinkshere-prev' => '{{PLURAL:$1|1=prethodni|prethodnih $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|1=sledeći|sledećih $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|prethodni|prethodnih $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|sledeći|sledećih $1}}',
 'whatlinkshere-links' => '← veze',
 'whatlinkshere-hideredirs' => '$1 preusmerenja',
 'whatlinkshere-hidetrans' => '$1 uključivanja',
@@ -2707,7 +2707,7 @@ Blokiranja možete da pogledate [[Special:BlockList|ovde]].',
 'blocklist-reason' => 'Razlog',
 'ipblocklist-submit' => 'Pretraži',
 'ipblocklist-localblock' => 'Lokalno blokiranje',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Drugo blokiranje|Druga blokiranja}}',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Drugo blokiranje|Druga blokiranja}}',
 'infiniteblock' => 'trajno',
 'expiringblock' => 'ističe dana $1 u $2',
 'anononlyblock' => 'samo anonimni',
@@ -2729,7 +2729,7 @@ Razlog blokiranja: „$2“',
 Istorija blokiranja se nalazi ispod:',
 'blocklog-showsuppresslog' => '{{GENDER:|Ovaj korisnik je ranije blokiran i sakriven|Ova korisnica je ranije blokirana i sakrivena|Ovaj korisnik je ranije blokiran i sakriven}}.
 Istorija sakrivanja se nalazi ispod:',
-'blocklogentry' => '{{GENDER:|je blokirao|je blokirala}} [[$1]] s rokom isticanja od $2 $3',
+'blocklogentry' => 'je blokirao [[$1]] s rokom isticanja od $2 $3',
 'reblock-logentry' => '{{GENDER:|je promenio|je promenila|je promenio}} podešavanja za blokiranje {{GENDER:$1|korisnika|korisnice|korisnika}} [[$1]] s rokom isteka od $2 ($3)',
 'blocklogtext' => 'Ovo je dnevnik blokiranja i deblokiranja korisnika.
 Automatski blokirane IP adrese nisu navedene.
@@ -2748,7 +2748,7 @@ Tekuće zabrane i blokiranja možete naći [[Special:BlockList|ovde]].',
 'ipb_hide_invalid' => 'Ne mogu da potisnem ovaj nalog. Možda ima previše izmena.',
 'ipb_already_blocked' => '„$1“ je već blokiran',
 'ipb-needreblock' => '$1 je već blokiran. Želite li da promenite podešavanja?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|1=Druga blokada|Druge blokade}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Druga blokada|Druge blokade}}',
 'unblock-hideuser' => 'Ne možete deblokirati ovog korisnika jer je njegovo korisničko ime sakriveno.',
 'ipb_cant_unblock' => 'Greška: blokada $1 ne postoji. Možda je korisnik deblokiran.',
 'ipb_blocked_as_range' => 'Greška: IP adresa $1 nije direktno blokirana i ne može da se deblokira.
@@ -2846,7 +2846,7 @@ Izaberite drugo ime.',
 'movepage-max-pages' => 'Najviše $1 {{PLURAL:$1|stranica je premeštena|stranice su premeštene|stranica je premešteno}}, i više ne može da bude automatski premešteno.',
 'movelogpage' => 'Dnevnik premeštanja',
 'movelogpagetext' => 'Ispod se nalazi spisak premeštanja stranica.',
-'movesubpage' => '{{PLURAL:$1|1=Podstranica|Podstranice}}',
+'movesubpage' => '{{PLURAL:$1|Podstranica|Podstranice}}',
 'movesubpagetext' => 'Ova stranica ima $1 {{PLURAL:$1|podstranicu prikazanu|podstranice prikazane|podstranica prikazanih}} ispod.',
 'movenosubpage' => 'Ova stranica nema podstrana.',
 'movereason' => 'Razlog:',
@@ -2982,7 +2982,7 @@ Pokušajte ponovo.',
 'import-error-interwiki' => 'Ne mogu da uvezem stranicu „$1“ jer je njen naziv rezervisan za spoljno povezivanje (međuviki).',
 'import-error-special' => 'Ne mogu da uvezem stranicu „$1“ jer ona pripada posebnom imenskom prostoru koje ne prihvata stranice.',
 'import-error-invalid' => 'Ne mogu da uvezem stranicu „$1“ jer je njen naziv neispravan.',
-'import-options-wrong' => '{{PLURAL:$2|1=Pogrešna opcija|Pogrešne opcije}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => '{{PLURAL:$2|Pogrešna opcija|Pogrešne opcije}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Navedena osnovna stranica ima neispravan naslov.',
 'import-rootpage-nosubpage' => 'Imenski prostor „$1“ osnovne stranice ne dozvoljava podstranice.',
 
@@ -3101,14 +3101,14 @@ Pokušajte ponovo.',
 'notacceptable' => 'Server ne može da napravi podatke u formatu pogodnom za vaš klijent.',
 
 # Attribution
-'anonymous' => 'Anonimni {{PLURAL:$1|1=korisnik|korisnici}} na projektu {{SITENAME}}',
+'anonymous' => 'Anonimni {{PLURAL:$1|korisnik|korisnici}} na projektu {{SITENAME}}',
 'siteuser' => '{{SITENAME}} korisnik $1',
 'anonuser' => '{{SITENAME}} anoniman korisnik $1',
 'lastmodifiedatby' => 'Ovu stranicu je poslednji put {{GENDER:$4|izmenio|izmenila|izmenio}} $3, $1 u $2.',
-'othercontribs' => 'Zasnovano na radu korisnikâ $1.',
+'othercontribs' => 'Zasnovano na radu korisnika $1.',
 'others' => 'drugi',
 'siteusers' => '{{PLURAL:$2|1=korisnik|korisnici}} na projektu {{SITENAME}} $1',
-'anonusers' => '{{PLURAL:$2|1=anoniman korisnik|anonimni korisnici}} na projektu {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2|anoniman korisnik|anonimni korisnici}} na projektu {{SITENAME}} $1',
 'creditspage' => 'Autori stranice',
 'nocredits' => 'Ne postoje podaci o autoru ove stranice.',
 
@@ -3116,7 +3116,7 @@ Pokušajte ponovo.',
 'spamprotectiontitle' => 'Filter za zaštitu od nepoželjnih poruka',
 'spamprotectiontext' => 'Stranica koju želite da sačuvate je blokirana od filtera protiv nepoželjnih poruka.
 Ovo je verovatno izazvano vezom do spoljašnjeg sajta koji se nalazi na crnoj listi.',
-'spamprotectionmatch' => 'Sledeći tekst je izazvao naš filter za nepoželjne poruke: $1',
+'spamprotectionmatch' => 'Sledeći tekst je izazvao naš filter za neželjene poruke: $1',
 'spambot_username' => 'Čišćenje nepoželjnih poruka u Medijavikiji',
 'spam_reverting' => 'Vraćam na poslednju izmenu koja ne sadrži veze do $1',
 'spam_blanking' => 'Sve izmene sadrže veze do $1. Čistim',
@@ -3140,7 +3140,7 @@ Ovo je verovatno izazvano vezom do spoljašnjeg sajta koji se nalazi na crnoj li
 'pageinfo-robot-noindex' => 'Nije dozvoljeno',
 'pageinfo-views' => 'Broj pregleda',
 'pageinfo-watchers' => 'Broj nadgledača stranica',
-'pageinfo-few-watchers' => 'Manje od $1 {{PLURAL:$1|1=pratioca|pratilaca}}',
+'pageinfo-few-watchers' => 'Manje od $1 {{PLURAL:$1|pratioca|pratilaca}}',
 'pageinfo-redirects-name' => 'Broj preusmerenja na ovu stranicu',
 'pageinfo-subpages-name' => 'Podstranice ove stranice',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|preusmerenje|preusmerenja|preusmerenja}}; $3 {{PLURAL:$3|nepreusmerenje|nepreusmerenja|nepreusmerenja}})',
@@ -3152,10 +3152,10 @@ Ovo je verovatno izazvano vezom do spoljašnjeg sajta koji se nalazi na crnoj li
 'pageinfo-authors' => 'Broj zasebnih autora',
 'pageinfo-recent-edits' => 'Broj skorašnjih izmena (u poslednjih $1)',
 'pageinfo-recent-authors' => 'Broj skorašnjih zasebnih autora',
-'pageinfo-magic-words' => '{{PLURAL:$1|1=Magična reč|Magične reči}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Sakrivena kategorija|Sakrivene kategorije}} ($1)',
-'pageinfo-templates' => '{{PLURAL:$1|1=Uključeni šablon|Uključeni šabloni}} ($1)',
-'pageinfo-transclusions' => '{{PLURAL:$1|1=Stranica|Stranice}} uključene u ($1)',
+'pageinfo-magic-words' => '{{PLURAL:$1|Magična reč|Magične reči}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|Uključeni šablon|Uključeni šabloni}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Stranica|Stranice}} uključene u ($1)',
 'pageinfo-toolboxlink' => 'Podaci o stranici',
 'pageinfo-redirectsto' => 'Preusmerava na',
 'pageinfo-redirectsto-info' => 'podaci',
@@ -3256,9 +3256,13 @@ Ako ga pokrenete, vaš računar može biti ugrožen.",
 'minutes' => '{{PLURAL:$1|$1 minut|$1 minuta|$1 minuta}}',
 'hours' => '{{PLURAL:$1|$1 sat|$1 sata|$1 sati}}',
 'days' => '{{PLURAL:$1|$1 dan|$1 dana|$1 dana}}',
+'years' => '{{PLURAL:$1|$1 godina|$1 godine}}',
 'ago' => 'pre $1',
 'just-now' => 'upravo sad',
 
+# Human-readable timestamps
+'minutes-ago' => 'Pre $1 {{PLURAL:$1|minut|minuta}}',
+
 # Bad image list
 'bad_image_list' => 'Format je sledeći:
 
@@ -3915,7 +3919,7 @@ Probajte običan prikaz.',
 
 # Friendlier slave lag warnings
 'lag-warn-normal' => 'Izmene novije od $1 {{PLURAL:$1|sekunde|sekunde|sekundi}} neće biti prikazane.',
-'lag-warn-high' => 'Zbog preopterećenja baze podataka, izmene novije od $1 {{PLURAL:$1|sekunde|sekunde|sekundi}} neće biti prikazane.',
+'lag-warn-high' => 'Zbog preopterećenja baze podataka, izmene novije od $1 {{PLURAL:$1|sekunde|sekundi}} neće biti prikazane.',
 
 # Watchlist editor
 'watchlistedit-numitems' => 'Vaš spisak nadgledanja sadrži {{PLURAL:$1|jedan naslov|$1 naslova|$1 naslova}}, bez stranica za razgovor.',
@@ -3937,7 +3941,7 @@ Možete da [[Special:EditWatchlist|koristite i običan uređivač]].',
 'watchlistedit-raw-submit' => 'Ažuriraj spisak',
 'watchlistedit-raw-done' => 'Vaš spisak nadgledanja je ažuriran.',
 'watchlistedit-raw-added' => '{{PLURAL:$1|Dodat je jedan naslov|Dodata su $1 naslova|Dodato je $1 naslova}}:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|Uklonjen je jedan naslov|Uklonjena su $1 naslova|Uklonjeno je $1 naslova}}:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 naslov je uklonjen|Uklonjena su $1 naslova|Uklonjeno je $1 naslova}}:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'prikaži srodne izmene',
@@ -4152,13 +4156,13 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 # New logging system
 'logentry-delete-delete' => '$1 je {{GENDER:$2|obrisao|obrisala}} stranicu $3',
 'logentry-delete-restore' => '$1 je {{GENDER:$2|vratio|vratila}} stranicu $3',
-'logentry-delete-event' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=događaja|$5 daogađaja}} u dnevniku na $3: $4',
-'logentry-delete-revision' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=izmene|$5 izmena}} na stranici $3: $4',
+'logentry-delete-event' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|događaja|$5 daogađaja}} u dnevniku na $3: $4',
+'logentry-delete-revision' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|izmene|$5 izmena}} na stranici $3: $4',
 'logentry-delete-event-legacy' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost događaja u dnevniku na $3',
 'logentry-delete-revision-legacy' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost izmena na stranici $3',
 'logentry-suppress-delete' => '$1 je {{GENDER:$2|potisnuo|potisnula}} stranicu $3',
-'logentry-suppress-event' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=događaja|$5 događaja}} u dnevniku na $3: $4',
-'logentry-suppress-revision' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=izmene|$5 izmena}} na stranici $3: $4',
+'logentry-suppress-event' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|događaja|$5 događaja}} u dnevniku na $3: $4',
+'logentry-suppress-revision' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|izmene|$5 izmena}} na stranici $3: $4',
 'logentry-suppress-event-legacy' => '$1 је tajno {{GENDER:$2|promenio|promenila}} vidljivost događaj u dnevniku na $3',
 'logentry-suppress-revision-legacy' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost izmena na stranici $3',
 'revdelete-content-hid' => 'sadržaj je sakriven',
@@ -4209,10 +4213,10 @@ U suprotnom, poslužite se jednostavnim obrascem ispod. Vaš komentar će stajat
 'api-error-badaccess-groups' => 'Nije vam dozvoljeno da otpremate datoteke na ovaj viki.',
 'api-error-badtoken' => 'Unutrašnja greška: neispravan žeton.',
 'api-error-copyuploaddisabled' => 'Otpremanje putem adrese je onemogućeno na ovom serveru.',
-'api-error-duplicate' => 'Već {{PLURAL:$1|1=postoji [$2 druga datoteka]|postoje [$2 druge datoteke]}} s istim sadržajem.',
-'api-error-duplicate-archive' => '{{PLURAL:$1|1=Postojala je [$2 druga datoteka]|Postojale su [$2 druge datoteke]}} s istim sadržajem, ali {{PLURAL:$1|1=je obrisana|su obrisane}}.',
-'api-error-duplicate-archive-popup-title' => '{{PLURAL:$1|1=Duplirana datoteka koja je već obrisana|Duplirane datoteke koje su već obrisane}}',
-'api-error-duplicate-popup-title' => '{{PLURAL:$1|1=Duplirana datoteka|Duplirane datoteke}}',
+'api-error-duplicate' => 'Već {{PLURAL:$1|postoji [$2 druga datoteka]|postoje [$2 druge datoteke]}} s istim sadržajem.',
+'api-error-duplicate-archive' => '{{PLURAL:$1|Postojala je [$2 druga datoteka]|Postojale su [$2 druge datoteke]}} s istim sadržajem, ali {{PLURAL:$1|je obrisana|su obrisane}}.',
+'api-error-duplicate-archive-popup-title' => '{{PLURAL:$1|Duplirana datoteka koja je već obrisana|Duplirane datoteke koje su već obrisane}}',
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|Duplirana datoteka|Duplirane datoteke}}',
 'api-error-empty-file' => 'Poslata datoteka je prazna.',
 'api-error-emptypage' => 'Stvaranje novih praznih stranica nije dozvoljeno.',
 'api-error-fetchfileerror' => 'Unutrašnja greška: došlo je do greške pri dobavljanju datoteke.',
@@ -4221,7 +4225,7 @@ U suprotnom, poslužite se jednostavnim obrascem ispod. Vaš komentar će stajat
 'api-error-file-too-large' => 'Poslata datoteka je prevelika.',
 'api-error-filename-tooshort' => 'Naziv datoteke je prekratak.',
 'api-error-filetype-banned' => 'Ova vrsta datoteke je zabranjena.',
-'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|1=je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}. {{PLURAL:$3|1=Dozvoljena je|Dozvoljene su}} $2.',
+'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}. {{PLURAL:$3|Dozvoljena je|Dozvoljene su}} $2.',
 'api-error-filetype-missing' => 'Datoteci nedostaje nastavak.',
 'api-error-hookaborted' => 'Izmena je odbačena od kuke za proširenja.',
 'api-error-http' => 'Unutrašnja greška: ne mogu da se povežem sa serverom.',
index 8aff5ab..49ab945 100644 (file)
@@ -1155,7 +1155,7 @@ Den finns redan.',
 'content-not-allowed-here' => 'innehåll av "$1" är inte tillåtet på sidan [[$2]]',
 'editwarning-warning' => 'Om du lämnar den här sidan kommer du att förlora alla ändringar du har gjort.
 Om du är inloggad kan du slå av den här varningen under "Redigering" i dina inställningar.',
-'editpage-notsupportedcontentformat-title' => 'Innehållsformat som inte stöds',
+'editpage-notsupportedcontentformat-title' => 'Innehållsformat stöds inte',
 'editpage-notsupportedcontentformat-text' => 'Innehållsformatet $1 stöds inte av innehållsmodellen $2.',
 
 # Content models
@@ -1410,6 +1410,7 @@ Detaljer kan hittas i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-result-score' => 'Relevans: $1%',
 'search-redirect' => '(omdirigering $1)',
 'search-section' => '(avsnitt $1)',
+'search-file-match' => '(överensstämmer filens innehåll)',
 'search-suggest' => 'Menade du: $1',
 'search-interwiki-caption' => 'Systerprojekt',
 'search-interwiki-default' => 'Resultat i $1:',
index 15b7ec0..008b0d8 100644 (file)
@@ -67,7 +67,7 @@ $namespaceGenderAliases = array();
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Podsztrychńyńcy linkůw:',
-'tog-justify' => 'Wyrůwnowej tekst we akapitach (justowańy)',
+'tog-justify' => 'Wyrůwnywej tekst we akapitach (justowańy)',
 'tog-hideminor' => 'Schow drobne pomjyńańa we ńydowno pomjyńanych',
 'tog-hidepatrolled' => 'Schow sprowdzůne sprowjyńa we ńydowno pomjyńanych',
 'tog-newpageshidepatrolled' => 'Schow sprawdzůne zajty na wykoźe nowych zajtůw',
@@ -591,7 +591,7 @@ Kej bydźesz chćoł je podoć, bydům użyte, coby dokůmyntowoć Twoje autorst
 'user-mail-no-body' => 'Bůła průba posłańo e-brifa uo blank abo krůtkim tekśće.',
 
 # Change password dialog
-'changepassword' => 'Zmjana hasua',
+'changepassword' => 'Zmiana hasła',
 'resetpass_announce' => 'Zalůgowołżeś śe ze tymczasowym kodym uotrzimanym bez e-brif. Coby zakůńczyć proces logůwańo muśisz nasztalować nowe hasło:',
 'resetpass_header' => 'Zmjyń hasło lů swojygo kůnta',
 'oldpassword' => 'Stare hasło',
@@ -745,12 +745,12 @@ Mogesz [[Special:Search/{{PAGENAME}}|wysznupać ta titla]] we treśćach inkszyc
 'session_fail_preview' => "'''Pozůr! Serwer ńy może przetworzić tyj edycyji, beztuż co dane sesyji uostoły utracůne.
 Poprůbuj jeszcze roz.
 Eli to tyż ńy do podpory – [[Special:UserLogout|wyloguj śe]] a zaloguj jeszcze roz.'''",
-'session_fail_preview_html' => "'''Přeprašomy! Serwer ńy može přetwořyć tygo sprowjyńo skuli utraty danych ze sesyji.'''
+'session_fail_preview_html' => "'''Przepraszomy! Serwer ńy może przetworzić tygo sprowjyńo skuli utraty danych ze sesyji.'''
 
-''Jako iže na {{GRAMMAR:MS.lp|{{SITENAME}}}} wuůnÄ\8dono zostoua uopcyjo \"raw HTML\", podglůnd zostou schrůÅ\84ony coby zabezpjeÄ\8d\87 pÅ\99ed atakami JavaScript.''
+''Jako iże na {{GRAMMAR:MS.lp|{{SITENAME}}}} wÅ\82ůnczono zostoÅ\82a uopcyjo \"raw HTML\", podglůnd zostoÅ\82 schrůÅ\84ony coby zabezpjeczyÄ\87 przed atakami JavaScript.''
 
 '''Jeli to je prawiduowo průba sprowjańo, sprůbuj ješče roz. Kejby to ńy pomoguo - wylůguj śe a zalůguj na nowo.'''",
-'token_suffix_mismatch' => "'''Twoje sprowjyńy zostouo uodćepńynte skuli tego, co twůj klijynt pomjyšou znaki uod interpůnkcyji w žetůńe sprowjyń. Twoje sprowjyńy zostouo uodćepńynte coby zapobjec zńyščyńu tekstu zajty. Take průblymy zdořajům śe w roźe kůřistańo s felernych anůnimowych śećowych usuůg proxy.'''",
+'token_suffix_mismatch' => "'''Twoje sprowjyńy zostoło uodćepane skuli tego, co twůj klijynt pomjyszoł znaki uod interpůnkcyji we żetůńe sprowjyń. Twoje sprowjyńy zostoło uodćepane coby zapobjec zńyszczyńu tekstu zajty. Take felery zdorzajům śe w roźe korzistańo ze felernych anůnimowych śećowych usłůg proxy.'''",
 'editing' => 'Sprowjosz $1',
 'creating' => 'Tworzyńy $1',
 'editingsection' => 'Sprowjosz $1 (sekcyjo)',
@@ -766,7 +766,7 @@ wciśńesz knefel \"{{int:savearticle}}\".",
 'storedversion' => 'Naszkryflano wersyjo',
 'nonunicodebrowser' => "'''Pozůr! Twoja přeglůndorka ńy umje poprowńy rozpoznować kodowańo UTF-8 (Unicode). Bestož wšyjske znoki, kerych Twoja přeglůndorka ńy umje rozpoznować, zamjeńůno na jejich kody heksadecymalne.'''",
 'editingold' => "'''Dej pozůr: Sprowjoš inkšo wersyjo zajty kej bježůnco. Jeli jům naškryfloš, wšyjske půźńyjše pomjyńańa bydům wyćepane.'''",
-'yourdiff' => 'Růžńice',
+'yourdiff' => 'Růżńice',
 'copyrightwarning' => "Pamjyntej uo tym, aże cołki wkłod do {{SITENAME}} udostympńůmy wedle zasad $2 (dokładńij we $1). Jak ńy chcesz, coby kożdy můg go půmjyńać a dalij rozpowszychńoć, ńy wćepuj uůnygo sam. Szkryflajůnc sam tukej pośwjadczosz tyż, co te pisańy je twoje własne, abo żeś go wźůn(a) ze materjołůw kere sům na ''public domain'', abo kůmpatybilne.<br />
 '''PROSZA ŃY WĆEPYWAĆ SAM MATYRJOŁŮW KERE SŮM CHRŮŃONE AUTORSKIM PRAWYM BEZ DOZWOLEŃO WŁAŚĆIĆELA!'''",
 'copyrightwarning2' => "Pamjyntej uo tym, aże cołki wkłod do {{GRAMMAR:MS.lp|{{SITENAME}}}} może być sprowjany, pomjyńany abo wyćepany bez inkszych użytkownikůw. Jak ńy chcysz, coby kożdy můg uůnygo zmjyńać a dalij rozpowszychńoć bez uograniczyń, ńy wćepuj go sam.<br />
@@ -808,33 +808,33 @@ Rejer wyćepań tyj zajty je podany půńiżej, cobyś mioł wygoda:",
 'edit-gone-missing' => 'Ńy idźe zaktualizować zajty.
 Zdowo śe, co zostoła wyćepano.',
 'edit-conflict' => 'Kůnflikt sprowjyń.',
-'edit-no-change' => 'Twoje sprowjyńe uostouo zignorowane pů takymu, co ńic žeś we tekśće ńy zmjyńiu.',
+'edit-no-change' => 'Twoje sprowjyńe uostoło zignorowane pů takymu, aże ńic żeś we tekśće ńy zmjyńůł.',
 'postedit-confirmation' => 'Spamjyntano twoje sprowjyńe.',
-'edit-already-exists' => 'Ńy idźe utwořić nowyj zajty.
-Tako zajta juž sam je.',
+'edit-already-exists' => 'Ńy idźe utworzić nowyj zajty.
+Tako zajta już sam je.',
 'defaultmessagetext' => 'Tekst důmyślny',
 
 # Parser/template warnings
-'expensive-parserfunction-warning' => 'Dej pozůr: ta zajta mo za dužo uodwouaÅ\84 do funkcyji parsera, kere mocno uobÄ\87ůnžajům systym.
+'expensive-parserfunction-warning' => 'Dej pozůr: ta zajta mo za dużo uodwouaÅ\84 do funkcyji parsera, kere mocno uobÄ\87ůnżajům systym.
 
-Powinno być myńi jak $2 {{PLURAL:$2|wywouańy|wywouańo|wywouań}}, a terozki {{PLURAL:$1|je $1 wywouańy|sům $1 wywouańo|je $1 wywouań}}.',
-'expensive-parserfunction-category' => 'Zajty kere majům za dužo uodwouaÅ\84 do funkcyji parsera, kere mocno uobÄ\87ůnžajům systym.',
+Powinno być myńi jak $2 {{PLURAL:$2|wywołańy|wywołańo|wywołań}}, a terozki {{PLURAL:$1|je $1 wywołańy|sům $1 wywołańo|je $1 wywołań}}.',
+'expensive-parserfunction-category' => 'Zajty kere majům za dużo uodwoÅ\82\84 do funkcyji parsera, kere mocno uobÄ\87ůnżajům systym.',
 'post-expand-template-inclusion-warning' => 'Dej pozůr: Dokuplowane mustry sům moc wjelge.
 Ńykere mustry ńy bydům dokuplowane.',
 'post-expand-template-inclusion-category' => 'Zajty, na kerych dokuplowane mustry sům moc wjelge',
-'post-expand-template-argument-warning' => 'Dej pozůr: Ta zajta zawjyro přinojmyńi jedyn argument we šablůńe kery powoduje co je ůun za wjelgi. Te argumynty bydům pomińynte.',
+'post-expand-template-argument-warning' => 'Dej pozůr: Ta zajta zawjyro przinojmyńi jedyn argument we mustrze, kery powoduje co je ůun za wjelgi. Te argumynty bydům pomińynte.',
 'post-expand-template-argument-category' => 'Zajty na kerych sům šablůny s pomińyntymi argumyntůma.',
 'parser-template-loop-warning' => 'Wykryto muster zapyntlyńo: [[$1]]',
-'parser-template-recursion-depth-warning' => 'Przekroczůno limit głymbokośći rekurencyji szablona ($1)',
+'parser-template-recursion-depth-warning' => 'Przekroczůno limit głymbokośći rekurencyji mustru ($1)',
 
 # "Undo" feature
 'undo-success' => 'Sprowjyńy zostouo wycůfane. Proša pomjarkować ukozane půnižyj dyferencyje mjyndzy wersyjami, coby zweryfikować jejich poprawność, potym zaś naškryflać pomjyńańo coby zakońčyć uoperacyjo.',
-'undo-failure' => 'Sprowjyńo ńy idźe wycofać skuli kůnflikta ze wersyjůma postřednimi.',
-'undo-norev' => 'Sprowjyńo ńy idźe cofnůńć skuli tego, co ńy istńije abo zostouo wyćepane.',
+'undo-failure' => 'Sprowjyńo ńy idźe wycofać skuli kůnflikta ze wersyjůma postrzedńimi.',
+'undo-norev' => 'Sprowjyńo ńy idźe cofnůńć skuli tego, co ńy istńije abo uostoło wyćepane.',
 'undo-summary' => 'Wycůfańy wersyji $1 naszkryflanej bez [[Special:Contributions/$2|$2]] ([[User talk:$2|godka]])',
 
 # Account creation failure
-'cantcreateaccounttitle' => 'Ńy idźe utwořić kůnta',
+'cantcreateaccounttitle' => 'Ńy do śe utworzić kůnta',
 'cantcreateaccount-text' => "Tworzyńy kůnta s tygo adresu IP ('''$1''') zostoło zawarte bez użytkowńika [[User:$3|$3]].
 
 Skuli: ''$2''",
@@ -842,8 +842,8 @@ Skuli: ''$2''",
 # History pages
 'viewpagelogs' => 'Uoboč rejery uoperacyji lo tyj zajty',
 'nohistory' => 'Ta zajta ńy mo swojij historyje sprowjyń.',
-'currentrev' => 'Aktualno wersyjo',
-'currentrev-asof' => 'Aktualno wersyjo na dźyń $1',
+'currentrev' => 'Aktuelno wersyjo',
+'currentrev-asof' => 'Aktuelno wersyjo na dźyń $1',
 'revisionasof' => 'Wersyjo ze dńa $1',
 'revision-info' => 'Wersyjo s dńa $1; $2',
 'previousrevision' => '← starszo wersyjo',
@@ -852,7 +852,7 @@ Skuli: ''$2''",
 'cur' => 'akt.',
 'next' => 'nastympno',
 'last' => 'poprz.',
-'page_first' => 'počůnek',
+'page_first' => 'poczůnek',
 'page_last' => 'kůńec',
 'histlegend' => 'Wybůr růżńic do porůwnańo: postow kropki we boksach a naćiś enter abo knefel na dole.<br />
 Legynda: (akt.) - růżńice s wersyjům bjeżůncům, (poprz.) - růżńice s wersyjům poprzedzajůncům, d - drobne zmjany',
@@ -868,13 +868,13 @@ Legynda: (akt.) - růżńice s wersyjům bjeżůncům, (poprz.) - růżńice s w
 'history-feed-description' => 'Historyjo wersyje tyj zajty wiki',
 'history-feed-item-nocomment' => '$1 uo $2',
 'history-feed-empty' => 'Wybrano zajta ńy istńije.
-Můgua zostać wyćepano abo přećepano pod inkše mjano.
-MožeÅ¡ tyž [[Special:Search|Å¡nupać]] za tům zajtům.',
+Můgła uostać wyćepano abo przećepano pod inksze mjano.
+Możesz tyż [[Special:Search|sznupać]] za tům zajtům.',
 
 # Revision deletion
 'rev-deleted-comment' => '(kůmyntorz wyćepany)',
-'rev-deleted-user' => '(užytkowńik wyćepany)',
-'rev-deleted-event' => '(škryflańy wyćepane)',
+'rev-deleted-user' => '(użytkowńik wyćepany)',
+'rev-deleted-event' => '(szkryflańy wyćepane)',
 'rev-deleted-text-permission' => 'Wersyjo tyj zajty uostoua wyćepano a ńy je dostympna publičńy. Ščygůuy idźe znejść we [{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} rejeře wyćepań].',
 'rev-deleted-text-view' => 'Ta wersyjo zajty uostoua wyćepano a ńy je dostympna publičńy.
 Atoli kej admińistrator {{GRAMMAR:MS.lp|{{SITENAME}}}} možeš jům uobejřeć.
@@ -887,15 +887,15 @@ Powody wyćepańo idźe znejść we [{{fullurl:{{#Special:Log}}/suppress|page={{
 'revdelete-no-file' => 'Ńy mo tygo plika.',
 'revdelete-show-file-confirm' => 'Jeżeś echt pewny co chcesz uobejzdrzeć wyćepano wersyjo plika „<nowiki>$1</nowiki>” s $2 $3?',
 'revdelete-show-file-submit' => 'Ja',
-'revdelete-selected' => "'''{{PLURAL:$2|Wybrano wersyja|Wybrane wersyje}} zajty [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Wybrane zdařyńy s rejeru|Wybrane zdařyńa s rejeru}}:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|Wybrano wersyjo|Wybrane wersyje}} zajty [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Wybrane zdarzyńy ze rejeru|Wybrane zdarzyńa ze rejeru}}:'''",
 'revdelete-text' => "'''Wyćepane wersyje bydům dali widoczne w historyji zajty, nale jejich treść ńy bydźe publiczńy dostympna.'''
 
 Inkśi admińistratorzi {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp do schrůńůnych wersyji a bydům můgli je wćepać nazod, chyba aże uoperator serwisu nouożůł dodatkowe uograńiczyńo.",
 'revdelete-legend' => 'Naštaluj uograńičyńo lo wersyji:',
 'revdelete-hide-text' => 'Schrůń tekst wersyji',
 'revdelete-hide-image' => 'Schrůń zawartość plika',
-'revdelete-hide-name' => 'Schrůń akcyjo a cyl',
+'revdelete-hide-name' => 'Schrůń akcyjo a cwek',
 'revdelete-hide-comment' => 'Schrůń kůmyntoř sprowjyńo',
 'revdelete-hide-user' => 'Schrůń mjano użytkowńika/adres IP',
 'revdelete-hide-restricted' => 'Schrůń informacyje zarůwno przed admińistratorůma jak i przed inkszymi',
@@ -906,15 +906,15 @@ Inkśi admińistratorzi {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp
 'revdelete-unsuppress' => 'Usůń uograńičyńo lo wćepanej nazod historyje pomjyńań',
 'revdelete-log' => 'Czymu:',
 'revdelete-submit' => 'Zaakceptuj do wybrany{{PLURAL:$1|j wersyji|ch wersyji}}',
-'revdelete-success' => 'Půmyślńy zmjyńůno widoczność wersyji.',
-'revdelete-failure' => 'Feler przi zmjyńůńu widoczności wersyji.
-$1',
-'logdelete-success' => 'Půmyślńy půmjyńůno widočność zdařyń',
-'logdelete-failure' => 'Feler przi zmjyńe widoczości rejera.
-$1',
+'revdelete-success' => "'''Půmyślńy zmjyńůno widoczność wersyji.'''",
+'revdelete-failure' => "'''Feler przi pomjyńańu widocznośći wersyji:'''
+$1",
+'logdelete-success' => "'''Půmyślńy půmjyńůno widoczność zdarzyń.'''",
+'logdelete-failure' => "'''Feler przi pomjańe widoczości rejera.'''
+$1",
 'revdel-restore' => 'půmjyń widoczność',
 'pagehist' => 'Historyjo sprowjyń zajty',
-'deletedhist' => 'Wyćepano historyjo sprowjyń',
+'deletedhist' => 'Wyćepano gyszichta sprowjyń',
 'revdelete-hide-current' => 'Feler przi wyćepywańu wersyji $2, $1.',
 'revdelete-show-no-access' => 'Feler przy ukozoniu wersyji $2, $1. Ńy mosz uprawńyń lo njygo.',
 'revdelete-modify-no-access' => 'Feler przy zmjyńe widoczności wersyji $2, $1. Ńy mosz uprawńeń lo njygo.',
@@ -1017,11 +1017,11 @@ $1',
 'search-nonefound' => 'Ńy mo wynikůw, kere uodpadajům kryterjům zapytańo.',
 'powersearch-legend' => 'Sznupańy zaawansowane',
 'powersearch-ns' => 'Sznupej we przestrzyńach mjan:',
-'powersearch-redir' => 'Pokož pÅ\99ekerowańa',
-'powersearch-togglelabel' => 'Zaznocz:',
+'powersearch-redir' => 'Pokoż przekerowańa',
+'powersearch-togglelabel' => 'Uoznocz:',
 'powersearch-toggleall' => 'Wszyjsko',
 'powersearch-togglenone' => 'żodno',
-'search-external' => 'Šnupańy zewnyntřne',
+'search-external' => 'Zewnyntrzne sznupańy',
 'searchdisabled' => 'Šnupańy we {{GRAMMAR:MS.lp|{{SITENAME}}}} zostouo zawarte. Zańim go zouůnčům, možeš sprůbować šnupańo bez Google. Ino zauwaž, co informacyje uo treśći {{GRAMMAR:MS.lp|{{SITENAME}}}} můgům być we Google ńyakuratne.',
 'search-error' => 'Wystůmpjůł feler przi sznupańu: $1',
 
@@ -1040,22 +1040,22 @@ $1',
 'prefs-rc' => 'Ńydowno pomjyńane',
 'prefs-watchlist' => 'Pozůrlista',
 'prefs-watchlist-days' => 'Ličba dńi widočnych na liśće artikli, na kere dowoš pozůr:',
-'prefs-watchlist-days-max' => 'Max $1 {{PLURAL:$1|dźień|dńi}}',
+'prefs-watchlist-days-max' => 'Max $1 {{PLURAL:$1|dźyń|dńi}}',
 'prefs-watchlist-edits' => 'Ličba půmjyńań pokazywanych we rozšyřůnyj liśće artiklůw, na kere dowoš pozůr:',
 'prefs-watchlist-edits-max' => 'Maksymalno liczba: 1000',
-'prefs-watchlist-token' => 'ID půzorlisty:',
+'prefs-watchlist-token' => 'ID pozůrlisty:',
 'prefs-misc' => 'Roztůmajte',
 'prefs-resetpass' => 'Zmjyń hasło',
 'prefs-changeemail' => 'Pomjyno ausdruka e-brif',
 'prefs-setemail' => 'Nastow e-brif',
-'prefs-email' => 'E-brif',
+'prefs-email' => 'Uopcyje e-brifa',
 'prefs-rendering' => 'Wyglůnd',
 'saveprefs' => 'Spamjyntej',
 'restoreprefs' => 'Wćep wszyjskie důmyślne preferencyje',
 'prefs-editing' => 'Sprowjańy',
-'rows' => 'Wjerše:',
-'columns' => 'Kůlumny:',
-'searchresultshead' => 'Šnupańy',
+'rows' => 'Wjyrsze:',
+'columns' => 'Kolůmny:',
+'searchresultshead' => 'Sznupańy',
 'stub-threshold' => 'Maksymalny rozmjar artikla uoznačanygo kej <a href="#" class="stub">stub (kůnsek)</a>',
 'stub-threshold-disabled' => 'Uodymkńynte',
 'recentchangesdays' => 'Ličba dńi do pokazańo we půmjyńanych na uostatku:',
@@ -1063,23 +1063,23 @@ $1',
 'recentchangescount' => 'Liczba pozycyji na liśće půmjyńanych na uostatku, we historyje zajtůw a zajtach rejerůw:',
 'prefs-help-recentchangescount' => 'Ze listům ńydawnych pomjyńan, gyszichta zajt a rejer.',
 'savedprefs' => 'Twoje štalowańo we preferyncyjach zostouy naškryflane.',
-'timezonelegend' => 'Strefa czasowo',
+'timezonelegend' => 'Czasowo sztrefa',
 'localtime' => 'Lokalny czas:',
 'timezoneuseserverdefault' => 'Użyj domyślnygo czasu serwera ($1)',
 'timezoneuseoffset' => 'Inkszo (uokryśl różnica czasu)',
 'servertime' => 'Czas serwera:',
-'guesstimezone' => 'Pobjer z přeglůndarki',
+'guesstimezone' => 'Pobjer ze przeglůndarki',
 'timezoneregion-africa' => 'Afrika',
 'timezoneregion-america' => 'Ameryka',
 'timezoneregion-antarctica' => 'Antarktyda',
 'timezoneregion-arctic' => 'Arktyka',
 'timezoneregion-asia' => 'Azyjo',
 'timezoneregion-atlantic' => 'Uoceon Atlantycki',
-'timezoneregion-australia' => 'Australyjo',
+'timezoneregion-australia' => 'Australijo',
 'timezoneregion-europe' => 'Ojropa',
 'timezoneregion-indian' => 'Ocean Indyjski',
 'timezoneregion-pacific' => 'Uocean Spokojny',
-'allowemail' => 'Inkśi užytkowńicy můgům přesyuać mje e-brify',
+'allowemail' => 'Inksze użytkowńiki můgům posyłać mje e-brify',
 'prefs-searchoptions' => 'Sznupańe',
 'prefs-namespaces' => 'Raumy mjan',
 'defaultns' => 'Důmyślńy sznupej we nastympujůncych przystrzyńach mjan:',
@@ -1092,9 +1092,9 @@ $1',
 'prefs-registration' => 'Czas twůrzyńa kůnta:',
 'yourrealname' => 'Prawdźiwe mjano',
 'yourlanguage' => 'Godka interfejsu',
-'yournick' => 'Twoja šrajba:',
-'badsig' => 'Felerno šrajba, sprowdź značńiki HTML.',
-'badsiglength' => 'Twůj szrajbůng je za dugi. Maksymalno jego dugość to $1 {{PLURAL:$1|buchsztaby|buchsztabůw}}',
+'yournick' => 'Twoja szrajbka:',
+'badsig' => 'Felerno szrajbka, sprawdź znaczńiki HTML.',
+'badsiglength' => 'Twojo szrajbka je za dugo. Ji maksymalno dugość to $1 {{PLURAL:$1|buchsztaby|buchsztabůw}}',
 'yourgender' => 'Płeć:',
 'gender-unknown' => 'ńyznano',
 'gender-male' => 'chop',
@@ -1102,27 +1102,27 @@ $1',
 'email' => 'E-brif',
 'prefs-help-realname' => '* Mjano a nazwisko (uopcjůnalńy): jak żeś zdecydowoł aże je podosz, bydům użyte, coby Twoja robota mjoła atrybucyjo.',
 'prefs-help-email' => 'Ukozańy e-brifowygo adresu ńy je powinne, nale nutne, coby resetować ausdruk, eli zapomńisz.',
-'prefs-help-email-others' => 'Mogesz tyż uůmożnić inkszym używoczům posłać ci e-brif bez twojo zajta używocza abo zajta dyskusyje. Twůj e-brifowy adres śe ńy ukoże.',
+'prefs-help-email-others' => 'Mogesz tyż doć mogebność inkszym używoczům posłać ci e-brif bez twojo zajta używocza abo zajta dyskusyje. Twůj e-brifowy adres śe ńy ukoże.',
 'prefs-help-email-required' => 'Wymogany je adres e-brifa.',
 'prefs-diffs' => 'Diffy',
 
 # User rights
-'userrights' => 'Zařůndzańy prowami užytkowńikůw',
-'userrights-lookup-user' => 'Zařůndzej prowami užytkownika',
-'userrights-user-editname' => 'Wklepej sam nazwa užytkowńika:',
-'editusergroup' => 'Sprowjej grupy užytkowńika',
+'userrights' => 'Zarzůndzańy prowami użytkowńikůw',
+'userrights-lookup-user' => 'Zarzůndzej prowami użytkownika',
+'userrights-user-editname' => 'Wkludź sam mjano użytkowńika:',
+'editusergroup' => 'Sprowjej grupy użytkowńika',
 'editinguser' => "Zmjana uprawńyń užytkowńika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Sprowjej grupy užytkowńika',
-'saveusergroups' => 'Zapisz',
-'userrights-groupsmember' => 'Noležy do:',
-'userrights-groups-help' => 'MožeÅ¡ půmjyÅ\84\87 pÅ\99inoležnoÅ\9bÄ\87 tygo užytkowÅ\84ika do podanych grup.
-*Zaznačůne pole uoznačo přinoležność užytkowńika do danej grupy.
-*Ńy zaznačůne pole uoznačo, aže užytkowńik ńy noležy do danej grupy.
-* Gwjozdka * infomuje, co ńy možeš wyćepać s grupy po dodańu do ńij abo dodać po wyćepańu s grupy.',
+'userrights-editusergroup' => 'Sprowjej grupy użytkowńika',
+'saveusergroups' => 'Spamjyntej',
+'userrights-groupsmember' => 'Noleżi do:',
+'userrights-groups-help' => 'Możesz zmjyÅ\84\87 przinależnoÅ\9bÄ\87 tego użytkowÅ\84ika do půdanych grup:
+* Uoznaczůne pole uoznoczo przinależność użytkowńika do danyj grupy.
+* Ńyuoznaczůne pole uoznoczo, aże użytkowńik ńy noleżi do danyj grupy.
+* Gwjozdka * pado, aże ńy możesz wyćepać użytkownika ze grupy po wkludzyńo uůnygo do ńij abo wkludzić po wyćepańu.',
 'userrights-reason' => 'Czymu:',
-'userrights-no-interwiki' => 'Ńy moš dostympu do sprowjańo uprawńyń.',
+'userrights-no-interwiki' => 'Ńy mosz dostympu do sprowjańo uprawńyń.',
 'userrights-nodatabase' => 'Baza danych $1 ńy istńije abo ńy je lokalno.',
-'userrights-nologin' => 'Muśiš [[Special:UserLogin|zalůgować śe]] na kůnto admińistratora, coby nadować uprawńyńo užytkowńikům.',
+'userrights-nologin' => 'Muśisz [[Special:UserLogin|zalůgować śe]] na kůnto admińistratora, coby nadować uprawńyńo użytkowńikům.',
 'userrights-notallowed' => 'Ńy mosz dostympu do nadawańo uprawńyń używaczom.',
 'userrights-changeable-col' => 'Grupy, kere možeš wybrać',
 'userrights-unchangeable-col' => 'Grupy, kerych ńy možeš wybrać',
@@ -1159,8 +1159,8 @@ $1',
 'right-createaccount' => 'Utwořůne nowe kůnta užytkowńikůw',
 'right-minoredit' => 'Uoznocz půmjyńańo kej drobne',
 'right-move' => 'Przećepane zajty',
-'right-move-subpages' => 'Przećep zajty wroz s jejich podzajtůma',
-'right-move-rootuserpages' => 'Překludzańy zajtůw uod užytkowńikůw',
+'right-move-subpages' => 'Przećep zajty wroz ze jejich podzajtůma',
+'right-move-rootuserpages' => 'Przekludzańy zajtůw uod użytkowńikůw',
 'right-movefile' => 'Przećepańe plikůw',
 'right-suppressredirect' => 'Ńy twůrz przekerowańo ze starygo mjana jak przećepujesz zajta',
 'right-upload' => 'Wćepane pliki',
@@ -1178,7 +1178,7 @@ $1',
 'right-bigdelete' => 'Wyćep zajty s dugům historyjům půmjyńań',
 'right-deleterevision' => 'Wyćepywańy a wćepywańy nazod wskazanych sprowjyń zajtůw',
 'right-deletedhistory' => 'Pokazuj historyjo usuńyntych sprowjyń, bez tekstu uopisu',
-'right-browsearchive' => 'Šnupej za wyćepanymi zajtůma',
+'right-browsearchive' => 'Sznupej za wyćepanymi zajtůma',
 'right-undelete' => 'Wćepej nazod wyćepano zajta',
 'right-suppressrevision' => 'Přyglůndańy i uodtwařańy sprowjyń schrůńůnych před admińistratorami',
 'right-suppressionlog' => 'Pokož prywatne lůgi',
index e45ef40..96ab664 100644 (file)
@@ -54,6 +54,7 @@
  * @author Szoszv
  * @author Tarikozket
  * @author Tarkovsky
+ * @author Trncmvsr
  * @author Universal Life
  * @author Urhixidur
  * @author Uğur Başak
@@ -1433,6 +1434,7 @@ Ayrıntılar [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} silme g
 'search-result-score' => 'Uygunluk: $1%',
 'search-redirect' => '($1 sayfasından yönlendirme)',
 'search-section' => '($1 bölümü)',
+'search-file-match' => '(dosya içeriğiyle eşleşiyor)',
 'search-suggest' => 'Bunu mu demek istediniz: $1',
 'search-interwiki-caption' => 'Kardeş projeler',
 'search-interwiki-default' => '$1 sonuçlar:',
@@ -2535,7 +2537,7 @@ Böyle sayfaların silinmesi, {{SITENAME}} sitesini bozmamak için sınırlanmak
 'delete-warning-toobig' => 'Bu sayfanın büyük bir değişiklik geçmişi var, $1 {{PLURAL:$1|revizyonun|revizyonun}} üzerinde.
 Bunu silmek {{SITENAME}} işlemlerini aksatabilir;
 dikkatle devam edin.',
-'deleting-backlinks-warning' => "'''Uyarı:''' Silmek üzere olduğunuz sayfaya başka sayfalardan bağlantılar var.",
+'deleting-backlinks-warning' => "'''Uyarı:''' Silmek üzere olduğunuz sayfaya başka sayfalardan bağlantıları var veya sayfanın bazı bölümleri başka sayfalar tarafından alıntı olarak kullanılıyor.",
 
 # Rollback
 'rollback' => 'değişiklikleri geri al',
@@ -2834,7 +2836,7 @@ Gizleme günlüğü referans için aşağıda sağlanmıştır:',
 'range_block_disabled' => 'Hizmetliler için aralık engellemesi oluşturma yeteneği devre dışı.',
 'ipb_expiry_invalid' => 'Geçersiz bitiş zamanı.',
 'ipb_expiry_temp' => 'Gizli kullanıcı adı engellemeleri kalıcı olmalı.',
-'ipb_hide_invalid' => 'Kullanıcı hesabı gizlenemiyor; çok fazla değişikliği olabilir.',
+'ipb_hide_invalid' => 'Kullanıcı hesabı gizlenemiyor;  {{PLURAL:$1|Bir düzenleme|$1 düzenleme}}den daha fazla düzenlemesi var.',
 'ipb_already_blocked' => '"$1" zaten engellenmiş',
 'ipb-needreblock' => '$1 zaten engellenmiş. Ayarları değiştirmek istiyor musunuz?',
 'ipb-otherblocks-header' => 'Diğer {{PLURAL:$1|engelleme|engellemeler}}',
@@ -3976,7 +3978,7 @@ Ayrıca [[Special:EditWatchlist|standart düzenleme sayfasını]] da kullanabili
 'version-parser-function-hooks' => 'Derleyici fonksiyon çengelleri',
 'version-hook-name' => 'Çengel adı',
 'version-hook-subscribedby' => 'Abone olan',
-'version-version' => '(Sürüm $1)',
+'version-version' => '($1 sürümü)',
 'version-license' => 'MediaWiki Lisansı',
 'version-ext-license' => 'Lisans',
 'version-ext-colheader-name' => 'Uzantı',
index 22e6674..c3cb510 100644 (file)
@@ -1464,6 +1464,7 @@ $1",
 'search-result-score' => 'Відповідність: $1 %',
 'search-redirect' => '(перенаправлення $1)',
 'search-section' => '(розділ $1)',
+'search-file-match' => '(збігається із вмістом файлу)',
 'search-suggest' => 'Можливо, ви мали на увазі: $1',
 'search-interwiki-caption' => 'Братні проекти',
 'search-interwiki-default' => '$1 результати:',
@@ -2884,7 +2885,7 @@ $1',
 'range_block_disabled' => 'Адміністраторам заборонено блокувати діапазони.',
 'ipb_expiry_invalid' => 'Невірно вказано термін.',
 'ipb_expiry_temp' => 'Блокування із приховуванням імені користувача мають бути безстроковими.',
-'ipb_hide_invalid' => 'Ð\9dеможливо Ð¿Ñ\80иÑ\85оваÑ\82и Ð¾Ð±Ð»Ñ\96ковий Ð·Ð°Ð¿Ð¸Ñ\81; Ð· Ð½Ñ\8cого Ð·Ñ\80облено Ð´Ñ\83же Ð±Ð°Ð³Ð°Ñ\82о Ñ\80едагÑ\83ванÑ\8c.',
+'ipb_hide_invalid' => 'Ð\9dеможливо Ð¿Ñ\80иÑ\85оваÑ\82и Ð¾Ð±Ð»Ñ\96ковий Ð·Ð°Ð¿Ð¸Ñ\81; Ð· Ð½Ñ\8cого Ð·Ñ\80облено Ð¿Ð¾Ð½Ð°Ð´{{PLURAL:$1|одне Ñ\80едагÑ\83ваннÑ\8f|$1 Ñ\80едагÑ\83ваннÑ\8f|$1 Ñ\80едагÑ\83ванÑ\8c}}.',
 'ipb_already_blocked' => '«$1» уже заблоковано. Для того, щоб призначити новий термін блокування, спочатку розблокуйте його.',
 'ipb-needreblock' => 'Користувач $1 вже заблокований. Хочете змінити параметри блокування?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|1=Інше блокування|Інші блокування}}',
index cfc2fe7..d24722c 100644 (file)
@@ -1408,6 +1408,7 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'search-result-score' => 'Độ phù hợp: $1%',
 'search-redirect' => '(đổi hướng $1)',
 'search-section' => '(đề mục $1)',
+'search-file-match' => '(khớp nội dung tập tin)',
 'search-suggest' => 'Có phải bạn muốn tìm: $1',
 'search-interwiki-caption' => 'Các dự án liên quan',
 'search-interwiki-default' => '$1 kết quả:',
@@ -2513,7 +2514,7 @@ Việc xóa các trang như vậy bị hạn chế để ngăn ngừa phá hoạ
 'delete-warning-toobig' => 'Trang này có lịch sử sửa đổi lớn, đến hơn {{PLURAL:$1|lần|lần}} sửa đổi.
 Việc xóa các trang có thể làm tổn hại đến hoạt động của cơ sở dữ liệu {{SITENAME}};
 hãy cẩn trọng khi thực hiện.',
-'deleting-backlinks-warning' => "'''Cảnh báo:''' Có trang khác liên kết đến trang mà bạn sắp xóa.",
+'deleting-backlinks-warning' => "'''Cảnh báo:''' Có trang khác liên kết đến hoặc nhúng trang mà bạn sắp xóa.",
 
 # Rollback
 'rollback' => 'Lùi tất cả sửa đổi',
@@ -2808,7 +2809,7 @@ Xem lại những lần cấm tại [[Special:BlockList|danh sách cấm]].',
 'range_block_disabled' => 'Đã tắt khả năng cấm hàng loạt của quản lý.',
 'ipb_expiry_invalid' => 'Thời điểm hết hạn không hợp lệ.',
 'ipb_expiry_temp' => 'Cấm tên người dùng ẩn nên là cấm vô hạn.',
-'ipb_hide_invalid' => 'Không thể ẩn tài khoản này; có thể do nó có quá nhiều sửa đổi.',
+'ipb_hide_invalid' => 'Không thể ẩn tài khoản này; nó đã sửa đổi hơn {{PLURAL:$1|một lần|$1 lần}}.',
 'ipb_already_blocked' => '“$1” đã bị cấm rồi',
 'ipb-needreblock' => '$1 đã bị cấm. Bạn có muốn thay đổi các thiết lập?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Tác vụ cấm|Các tác vụ cấm}} khác',
index 0db027e..974749f 100644 (file)
@@ -273,7 +273,7 @@ $messages = array(
 'talkpage' => 'Pakighimangraw hiunong hini nga pakli',
 'talkpagelinktext' => 'Hiruhimangraw',
 'specialpage' => 'Ispisyal nga Pakli',
-'personaltools' => 'Kalugaringon nga mga garamiton',
+'personaltools' => 'Mga pankalugaring nga garamiton',
 'postcomment' => 'Bag-o nga bahin',
 'articlepage' => 'Kitaa in may sulod nga pakli',
 'talk' => 'Hiruhimangraw',
index 48e7bee..ea2ca49 100644 (file)
@@ -911,7 +911,6 @@ Soo jëfandikoo lëkkalekaayu joow yi day neenal boyot yi nga jotoon a fal.',
 'rows' => 'Rëdd:',
 'columns' => 'Kenu :',
 'searchresultshead' => 'Seet',
-'resultsperpage' => 'Limu ngérte ci xët wu ne :',
 'recentchangesdays' => 'Limu bes yi nga koy wone ci coppite yu mujj yi :',
 'recentchangesdays-max' => '(bi ëpp $1 {{PLURAL:$1|bés|bés}})',
 'recentchangescount' => 'Limu coppite yi ngay wone ci coppite yu mujj yi cig wàccaale:',
index 81a1a63..5336bb3 100644 (file)
@@ -2350,7 +2350,7 @@ $UNWATCHURL
 'delete-edit-reasonlist' => 'רעדאַקטירן די אויסמעקן סיבות',
 'delete-toobig' => 'דער בלאַט האט א גרויסע רעדאקטירונג היסטאריע, מער ווי $1 {{PLURAL:$1|רעוויזיע|רעוויזיעס}}. אויסמעקן אזעלכע בלעטער איז באַגרענעצט געווארן בכדי צו פֿאַרמײַדן א צופֿעליגע פֿאַרשטערונג פֿון  {{SITENAME}}.',
 'delete-warning-toobig' => 'דער בלאַט האט א גרויסע רעדאקטירונג היסטאריע, מער ווי $1 {{PLURAL:$1|רעוויזיע|רעוויזיעס}}. אויסמעקן אים קען פֿאַרשטערן דאַטנבאַזע אפעראַציעס פֿון {{SITENAME}}; זײַט פֿארזיכטיג איידער איר מעקט אויס.',
-'deleting-backlinks-warning' => "'''ווארענוג:''' אנדערע בלעטער פארבינדן צום בלאט איר האלט ביי אויסמעקן.",
+'deleting-backlinks-warning' => "'''×\95×\95×\90רענ×\95×\92:''' ×\90× ×\93ערע ×\91×\9c×¢×\98ער ×¤×\90ר×\91×\99× ×\93×\9f ×¦×\95×\9d ×\91×\9c×\90×\98 ×\90×\93ער ×\90ר×\99×\91ערש×\9c×\99ס×\9f ×¤×\95× ×¢×\9d ×\91×\9c×\90×\98 ×\90×\99ר ×\94×\90×\9c×\98 ×\91×\99×\99 ×\90×\95×\99ס×\9eעק×\9f.",
 
 # Rollback
 'rollback' => 'צוריקדרייען רעדאַקטירונגען',
@@ -2648,7 +2648,7 @@ $1',
 'range_block_disabled' => 'די סיסאפ מעגליכקייט צו בלאקירן רענזש בלאקס איז אומ-ערמעגליכט.',
 'ipb_expiry_invalid' => 'אויסגיין צײַט אומגילטיג.',
 'ipb_expiry_temp' => 'בלאקירן מיט פאַרבאָרגן באַניצער נאָמען מוז זייַן אויף אייביק.',
-'ipb_hide_invalid' => 'נישט געקענט פֿאַרשטיקן די קאנטע; זי האט מעגלעך צופיל רעדאַקטירונגען.',
+'ipb_hide_invalid' => 'נישט געקענט פֿאַרשטיקן די קאנטע; זי האט {{PLURAL:$1|איין רעדאקטירונג|$1 רעדאַקטירונגען}}.',
 'ipb_already_blocked' => '"$1" איז שוין בלאקירט',
 'ipb-needreblock' => '$1 איז שוין בלאקירט. צי ווילט איר טוישן די באַצייכנונגען?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|אנדער בלאקירונג|אנדערע בלאקירונגען}}',
index ac674e4..9ffe494 100644 (file)
@@ -73,6 +73,7 @@
  * @author Xiaomingyan
  * @author Yfdyh000
  * @author 乌拉跨氪
+ * @author 御坂美琴
  * @author 燃玉
  * @author 阿pp
  */
@@ -517,7 +518,7 @@ $messages = array(
 'category-file-count-limited' => '以下{{PLURAL:$1|文件|$1个文件}}属于当前分类。',
 'listingcontinuesabbrev' => '续',
 'index-category' => '可索引页面',
-'noindex-category' => '不可索引页面',
+'noindex-category' => '禁止索引的页面',
 'broken-file-category' => '有受损文件链接的页面',
 'categoryviewer-pagedlinks' => '($1)($2)',
 
@@ -1389,6 +1390,7 @@ $1",
 'search-result-score' => '相关度:$1%',
 'search-redirect' => '(重定向自“$1”)',
 'search-section' => '(“$1”段落)',
+'search-file-match' => '(匹配文件内容)',
 'search-suggest' => '您是不是要找:$1',
 'search-interwiki-caption' => '姊妹项目',
 'search-interwiki-default' => '$1项结果:',
@@ -2440,7 +2442,7 @@ $UNWATCHURL
 'delete-edit-reasonlist' => '编辑删除原因',
 'delete-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除此类页面的动作已经被限制,以防止在{{SITENAME}}上的意外扰乱。',
 'delete-warning-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除它可能会扰乱{{SITENAME}}的数据库操作;在继续此动作前请小心。',
-'deleting-backlinks-warning' => "'''警告:'''有其他页面链接到你要删除的页面。",
+'deleting-backlinks-warning' => "'''警告:'''有其他页面链接至或transclude自您要删除的页面。",
 
 # Rollback
 'rollback' => '回退编辑',
@@ -2730,7 +2732,7 @@ $1被封禁的理由是:“$2”',
 'range_block_disabled' => '管理员执行段封禁的权限已被禁用。',
 'ipb_expiry_invalid' => '无效的终止时间。',
 'ipb_expiry_temp' => '隐藏用户名的封禁必须是永久性的。',
-'ipb_hide_invalid' => '无法隐藏此账户,它可能有太多编辑。',
+'ipb_hide_invalid' => '无法封禁此账户;它拥有多于$1次编辑。',
 'ipb_already_blocked' => '“$1”已被封禁',
 'ipb-needreblock' => '$1已被封禁。您是否想更改封禁设置?',
 'ipb-otherblocks-header' => '其他{{PLURAL:$1|封禁}}',
index 5e6f7d3..15bd1eb 100644 (file)
@@ -1322,6 +1322,7 @@ $1",
 'search-result-score' => '相關度: $1%',
 'search-redirect' => '(重定向 $1)',
 'search-section' => '(段落 $1)',
+'search-file-match' => '(匹配檔案內容)',
 'search-suggest' => '{{GENDER:|你|妳|你}}是不是要找:$1',
 'search-interwiki-caption' => '姊妹計劃',
 'search-interwiki-default' => '$1 項結果:',
@@ -2399,7 +2400,7 @@ $UNWATCHURL
 'delete-edit-reasonlist' => '編輯刪除理由',
 'delete-toobig' => '這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除此類頁面的動作已經被限制,以防止在{{SITENAME}}上的意外擾亂。',
 'delete-warning-toobig' => '這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除它可能會擾亂{{SITENAME}}的資料庫操作;在繼續此動作前請小心。',
-'deleting-backlinks-warning' => "'''警告:'''您要刪除的頁面有其他頁面連接至此。",
+'deleting-backlinks-warning' => "'''警告:'''您要刪除的頁面有其他頁面連接至此或從此頁面transclude。",
 
 # Rollback
 'rollback' => '回退編輯',
@@ -2694,7 +2695,7 @@ $1被封禁的理由是“$2”',
 'range_block_disabled' => '只有管理員才能創建禁止查封的範圍。',
 'ipb_expiry_invalid' => '無效的終止時間。',
 'ipb_expiry_temp' => '隱藏用戶名封鎖必須是永久性的。',
-'ipb_hide_invalid' => '不能壓止這個賬戶;它可能有太多編輯。',
+'ipb_hide_invalid' => '不能抑制此賬戶;它擁有多於$1次編輯。',
 'ipb_already_blocked' => '已經封鎖「$1」',
 'ipb-needreblock' => '$1已經被封鎖。您是否想更改這個設定?',
 'ipb-otherblocks-header' => '其他{{PLURAL:$1|封鎖}}',
index 77ffe79..e0dd8ee 100644 (file)
@@ -499,6 +499,8 @@ $wgOptionalMessages = array(
        'limitreport-expensivefunctioncount-value',
        'interlanguage-link-title',
        'img-lang-opt',
+       'quotation-marks',
+       'recentchanges-legend-plusminus',
 );
 
 /** Exif messages, which may be set as optional in several checks, but are generally mandatory */
index 8b76a6b..d51cdd0 100644 (file)
@@ -581,6 +581,7 @@ $wgMessageStructure = array(
                'retypenew',
                'resetpass_submit',
                'changepassword-success',
+               'changepassword-throttled',
                'resetpass_forbidden',
                'resetpass-no-info',
                'resetpass-submit-loggedin',
@@ -621,6 +622,7 @@ $wgMessageStructure = array(
                'changeemail-password',
                'changeemail-submit',
                'changeemail-cancel',
+               'changeemail-throttled'
        ),
        'resettokens' => array(
                'resettokens',
diff --git a/maintenance/locking/LockServerDaemon.php b/maintenance/locking/LockServerDaemon.php
deleted file mode 100644 (file)
index d98654e..0000000
+++ /dev/null
@@ -1,640 +0,0 @@
-<?php
-/**
- * Simple lock server daemon that accepts lock/unlock requests.
- *
- * This code should not require MediaWiki setup or PHP files.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup LockManager Maintenance
- */
-
-if ( PHP_SAPI !== 'cli' ) {
-       die( "This is not a valid entry point.\n" );
-}
-error_reporting( E_ALL );
-
-// Run the server...
-set_time_limit( 0 );
-LockServerDaemon::init(
-       getopt( '', array(
-               'address:', 'port:', 'authKey:',
-               'lockTimeout::', 'maxClients::', 'maxBacklog::', 'maxLocks::',
-       ) )
-)->main();
-
-/**
- * Simple lock server daemon that accepts lock/unlock requests
- *
- * @ingroup LockManager Maintenance
- */
-class LockServerDaemon {
-       /** @var resource */
-       protected $sock; // socket to listen/accept on
-       /** @var Array */
-       protected $sessions = array(); // (session => resource)
-       /** @var Array */
-       protected $deadSessions = array(); // (session => UNIX timestamp)
-
-       /** @var LockHolder */
-       protected $lockHolder;
-
-       protected $address; // string IP address
-       protected $port; // integer
-       protected $authKey; // string key
-       protected $lockTimeout; // integer number of seconds
-       protected $maxBacklog; // integer
-       protected $maxClients; // integer
-
-       protected $startTime; // integer UNIX timestamp
-       protected $ticks = 0; // integer counter
-
-       /* @var LockServerDaemon */
-       protected static $instance = null;
-
-       /**
-        * @params $config Array
-        * @param array $config
-        * @throws Exception
-        * @return LockServerDaemon
-        */
-       public static function init( array $config ) {
-               if ( self::$instance ) {
-                       throw new Exception( 'LockServer already initialized.' );
-               }
-               foreach ( array( 'address', 'port', 'authKey' ) as $par ) {
-                       if ( !isset( $config[$par] ) ) {
-                               die( "Usage: php LockServerDaemon.php " .
-                                       "--address <address> --port <port> --authKey <key> " .
-                                       "[--lockTimeout <seconds>] " .
-                                       "[--maxLocks <integer>] [--maxClients <integer>] [--maxBacklog <integer>]\n"
-                               );
-                       }
-               }
-               self::$instance = new self( $config );
-               return self::$instance;
-       }
-
-       /**
-        * @params $config Array
-        */
-       protected function __construct( array $config ) {
-               // Required parameters...
-               $this->address = $config['address'];
-               $this->port = $config['port'];
-               $this->authKey = $config['authKey'];
-               // Parameters with defaults...
-               $this->lockTimeout = isset( $config['lockTimeout'] )
-                       ? (int)$config['lockTimeout']
-                       : 60;
-               $this->maxClients = isset( $config['maxClients'] )
-                       ? (int)$config['maxClients']
-                       : 1000; // less than default FD_SETSIZE
-               $this->maxBacklog = isset( $config['maxBacklog'] )
-                       ? (int)$config['maxBacklog']
-                       : 100;
-               $maxLocks = isset( $config['maxLocks'] )
-                       ? (int)$config['maxLocks']
-                       : 10000;
-
-               $this->lockHolder = new LockHolder( $maxLocks );
-       }
-
-       /**
-        * @throws Exception
-        * @return void
-        */
-       protected function setupServerSocket() {
-               if ( !function_exists( 'socket_create' ) ) {
-                       throw new Exception( "PHP sockets extension missing from PHP CLI mode." );
-               }
-               $sock = socket_create( AF_INET, SOCK_STREAM, SOL_TCP );
-               if ( $sock === false ) {
-                       throw new Exception( "socket_create(): " . socket_strerror( socket_last_error() ) );
-               }
-               socket_set_option( $sock, SOL_SOCKET, SO_REUSEADDR, 1 ); // bypass 2MLS
-               socket_set_nonblock( $sock ); // don't block on accept()
-               if ( socket_bind( $sock, $this->address, $this->port ) === false ) {
-                       throw new Exception( "socket_bind(): " .
-                               socket_strerror( socket_last_error( $sock ) ) );
-               } elseif ( socket_listen( $sock, $this->maxBacklog ) === false ) {
-                       throw new Exception( "socket_listen(): " .
-                               socket_strerror( socket_last_error( $sock ) ) );
-               }
-               $this->sock = $sock;
-               $this->startTime = time();
-       }
-
-       /**
-        * Entry-point function that listens to the server socket, accepts
-        * new clients, and recieves/responds to requests to lock resources.
-        */
-       public function main() {
-               $this->setupServerSocket(); // setup listening socket
-               $socketArray = new SocketArray(); // sockets being serviced
-               $socketArray->addSocket( $this->sock ); // add listening socket
-               do {
-                       list( $read, $write ) = $socketArray->socketsForSelect();
-                       if ( socket_select( $read, $write, $except = null, null ) < 1 ) {
-                               continue; // wait
-                       }
-                       // Check if there is a client trying to connect...
-                       if ( in_array( $this->sock, $read ) && $socketArray->size() < $this->maxClients ) {
-                               $newSock = socket_accept( $this->sock );
-                               if ( $newSock ) {
-                                       socket_set_option( $newSock, SOL_SOCKET, SO_KEEPALIVE, 1 );
-                                       socket_set_nonblock( $newSock ); // don't block on read()/write()
-                                       $socketArray->addSocket( $newSock );
-                               }
-                       }
-                       // Loop through all the clients that have data to read...
-                       foreach ( $read as $read_sock ) {
-                               if ( $read_sock === $this->sock ) {
-                                       continue; // skip listening socket
-                               }
-                               // Avoids PHP_NORMAL_READ per https://bugs.php.net/bug.php?id=33471
-                               $data = socket_read( $read_sock, 65535 );
-                               // Check if the client is disconnected
-                               if ( $data === false || $data === '' ) {
-                                       $socketArray->closeSocket( $read_sock );
-                                       $this->recordDeadSocket( $read_sock ); // remove session
-                               // Check if we reached the end of a message
-                               } elseif ( substr( $data, -1 ) === "\n" ) {
-                                       // Newline is the last char (given ping-pong message usage)
-                                       $cmd = $socketArray->readRcvBuffer( $read_sock ) . $data;
-                                       // Perform the requested command...
-                                       $response = $this->doCommand( rtrim( $cmd ), $read_sock );
-                                       // Send the response to the client...
-                                       $socketArray->appendSndBuffer( $read_sock, $response . "\n" );
-                               // Otherwise, we just have more message data to append
-                               } elseif ( !$socketArray->appendRcvBuffer( $read_sock, $data ) ) {
-                                       $socketArray->closeSocket( $read_sock ); // too big
-                                       $this->recordDeadSocket( $read_sock ); // remove session
-                               }
-                       }
-                       // Loop through all the clients that have data to write...
-                       foreach ( $write as $write_sock ) {
-                               $bytes = socket_write( $write_sock, $socketArray->readSndBuffer( $write_sock ) );
-                               // Check if the client is disconnected
-                               if ( $bytes === false ) {
-                                       $socketArray->closeSocket( $write_sock );
-                                       $this->recordDeadSocket( $write_sock ); // remove session
-                               // Otherwise, truncate these bytes from the start of the write buffer
-                               } else {
-                                       $socketArray->consumeSndBuffer( $write_sock, $bytes );
-                               }
-                       }
-                       // Prune dead locks every few socket events...
-                       if ( ++$this->ticks >= 9 ) {
-                               $this->ticks = 0;
-                               $this->purgeExpiredLocks();
-                       }
-               } while ( true );
-       }
-
-       /**
-        * @param $data string
-        * @param $sourceSock resource
-        * @return string
-        */
-       protected function doCommand( $data, $sourceSock ) {
-               $cmdArr = $this->getCommand( $data );
-               if ( is_string( $cmdArr ) ) {
-                       return $cmdArr; // error
-               }
-               list( $function, $session, $type, $resources ) = $cmdArr;
-               // On first command, track the session => sock correspondence
-               if ( !isset( $this->sessions[$session] ) ) {
-                       $this->sessions[$session] = $sourceSock;
-                       unset( $this->deadSessions[$session] ); // renew if dead
-               }
-               if ( $function === 'ACQUIRE' ) {
-                       return $this->lockHolder->lock( $session, $type, $resources );
-               } elseif ( $function === 'RELEASE' ) {
-                       return $this->lockHolder->unlock( $session, $type, $resources );
-               } elseif ( $function === 'RELEASE_ALL' ) {
-                       return $this->lockHolder->release( $session );
-               } elseif ( $function === 'STAT' ) {
-                       return $this->stat();
-               }
-               return 'INTERNAL_ERROR';
-       }
-
-       /**
-        * @param $data string
-        * @return Array
-        */
-       protected function getCommand( $data ) {
-               $m = explode( ':', $data ); // <session, key, command, type, values>
-               if ( count( $m ) == 5 ) {
-                       list( $session, $key, $command, $type, $values ) = $m;
-                       $goodKey = hash_hmac( 'sha1',
-                               "{$session}\n{$command}\n{$type}\n{$values}", $this->authKey );
-                       if ( $goodKey !== $key ) {
-                               return 'BAD_KEY';
-                       } elseif ( strlen( $session ) !== 32 ) {
-                               return 'BAD_SESSION';
-                       }
-                       $values = explode( '|', $values );
-                       if ( $command === 'ACQUIRE' ) {
-                               $needsLockArgs = true;
-                       } elseif ( $command === 'RELEASE' ) {
-                               $needsLockArgs = true;
-                       } elseif ( $command === 'RELEASE_ALL' ) {
-                               $needsLockArgs = false;
-                       } elseif ( $command === 'STAT' ) {
-                               $needsLockArgs = false;
-                       } else {
-                               return 'BAD_COMMAND';
-                       }
-                       if ( $needsLockArgs ) {
-                               if ( $type !== 'SH' && $type !== 'EX' ) {
-                                       return 'BAD_TYPE';
-                               }
-                               foreach ( $values as $value ) {
-                                       if ( strlen( $value ) !== 31 ) {
-                                               return 'BAD_FORMAT';
-                                       }
-                               }
-                       }
-                       return array( $command, $session, $type, $values );
-               }
-               return 'BAD_FORMAT';
-       }
-
-       /**
-        * Remove a socket's corresponding session from tracking and
-        * store it in the dead session tracking if it still has locks.
-        *
-        * @param $socket resource
-        * @return bool
-        */
-       protected function recordDeadSocket( $socket ) {
-               $session = array_search( $socket, $this->sessions );
-               if ( $session !== false ) {
-                       unset( $this->sessions[$session] );
-                       // Record recently killed sessions that still have locks
-                       if ( $this->lockHolder->sessionHasLocks( $session ) ) {
-                               $this->deadSessions[$session] = time();
-                       }
-                       return true;
-               }
-               return false;
-       }
-
-       /**
-        * Clear locks for sessions that have been dead for a while
-        *
-        * @return integer Number of sessions purged
-        */
-       protected function purgeExpiredLocks() {
-               $count = 0;
-               $now = time();
-               foreach ( $this->deadSessions as $session => $timestamp ) {
-                       if ( ( $now - $timestamp ) > $this->lockTimeout ) {
-                               $this->lockHolder->release( $session );
-                               unset( $this->deadSessions[$session] );
-                               ++$count;
-                       }
-               }
-               return $count;
-       }
-
-       /**
-        * Get the current timestamp and memory usage
-        *
-        * @return string
-        */
-       protected function stat() {
-               return ( time() - $this->startTime ) . ':' . memory_get_usage();
-       }
-}
-
-/**
- * LockServerDaemon helper class that keeps track socket states
- */
-class SocketArray {
-       /* @var Array */
-       protected $clients = array(); // array of client sockets
-       /* @var Array */
-       protected $rBuffers = array(); // corresponding socket read buffers
-       /* @var Array */
-       protected $wBuffers = array(); // corresponding socket write buffers
-
-       const BUFFER_SIZE = 65535;
-
-       /**
-        * @return Array (list of sockets to read, list of sockets to write)
-        */
-       public function socketsForSelect() {
-               $rSockets = array();
-               $wSockets = array();
-               foreach ( $this->clients as $key => $socket ) {
-                       if ( $this->wBuffers[$key] !== '' ) {
-                               $wSockets[] = $socket; // wait for writing to unblock
-                       } else {
-                               $rSockets[] = $socket; // wait for reading to unblock
-                       }
-               }
-               return array( $rSockets, $wSockets );
-       }
-
-       /**
-        * @return integer Number of client sockets
-        */
-       public function size() {
-               return count( $this->clients );
-       }
-
-       /**
-        * @param $sock resource
-        * @return bool
-        */
-       public function addSocket( $sock ) {
-               $this->clients[] = $sock;
-               $this->rBuffers[] = '';
-               $this->wBuffers[] = '';
-               return true;
-       }
-
-       /**
-        * @param $sock resource
-        * @return bool
-        */
-       public function closeSocket( $sock ) {
-               $key = array_search( $sock, $this->clients );
-               if ( $key === false ) {
-                       return false;
-               }
-               socket_close( $sock );
-               unset( $this->clients[$key] );
-               unset( $this->rBuffers[$key] );
-               unset( $this->wBuffers[$key] );
-               return true;
-       }
-
-       /**
-        * @param $sock resource
-        * @param $data string
-        * @return bool
-        */
-       public function appendRcvBuffer( $sock, $data ) {
-               $key = array_search( $sock, $this->clients );
-               if ( $key === false ) {
-                       return false;
-               } elseif ( ( strlen( $this->rBuffers[$key] ) + strlen( $data ) ) > self::BUFFER_SIZE ) {
-                       return false;
-               }
-               $this->rBuffers[$key] .= $data;
-               return true;
-       }
-
-       /**
-        * @param $sock resource
-        * @return string|bool
-        */
-       public function readRcvBuffer( $sock ) {
-               $key = array_search( $sock, $this->clients );
-               if ( $key === false ) {
-                       return false;
-               }
-               $data = $this->rBuffers[$key];
-               $this->rBuffers[$key] = ''; // consume data
-               return $data;
-       }
-
-       /**
-        * @param $sock resource
-        * @param $data string
-        * @return bool
-        */
-       public function appendSndBuffer( $sock, $data ) {
-               $key = array_search( $sock, $this->clients );
-               if ( $key === false ) {
-                       return false;
-               } elseif ( ( strlen( $this->wBuffers[$key] ) + strlen( $data ) ) > self::BUFFER_SIZE ) {
-                       return false;
-               }
-               $this->wBuffers[$key] .= $data;
-               return true;
-       }
-
-       /**
-        * @param $sock resource
-        * @return bool
-        */
-       public function readSndBuffer( $sock ) {
-               $key = array_search( $sock, $this->clients );
-               if ( $key === false ) {
-                       return false;
-               }
-               return $this->wBuffers[$key];
-       }
-
-       /**
-        * @param $sock resource
-        * @param $bytes integer
-        * @return bool
-        */
-       public function consumeSndBuffer( $sock, $bytes ) {
-               $key = array_search( $sock, $this->clients );
-               if ( $key === false ) {
-                       return false;
-               }
-               $this->wBuffers[$key] = (string)substr( $this->wBuffers[$key], $bytes );
-               return true;
-       }
-}
-
-/**
- * LockServerDaemon helper class that keeps track of the locks
- */
-class LockHolder {
-       /** @var Array */
-       protected $shLocks = array(); // (key => session => 1)
-       /** @var Array */
-       protected $exLocks = array(); // (key => session)
-
-       /** @var Array */
-       protected $sessionIndexSh = array(); // (session => key => 1)
-       /** @var Array */
-       protected $sessionIndexEx = array(); // (session => key => 1)
-       protected $lockCount = 0; // integer
-
-       protected $maxLocks; // integer
-
-       /**
-        * @params $maxLocks integer Maximum number of locks to allow
-        */
-       public function __construct( $maxLocks ) {
-               $this->maxLocks = $maxLocks;
-       }
-
-       /**
-        * @param $session string
-        * @return bool
-        */
-       public function sessionHasLocks( $session ) {
-               return isset( $this->sessionIndexSh[$session] )
-                       || isset( $this->sessionIndexEx[$session] );
-       }
-
-       /**
-        * @param $session string
-        * @param $type string
-        * @param $keys Array
-        * @return string
-        */
-       public function lock( $session, $type, array $keys ) {
-               if ( ( $this->lockCount + count( $keys ) ) > $this->maxLocks ) {
-                       return 'TOO_MANY_LOCKS';
-               }
-               if ( $type === 'SH' ) {
-                       // Check if any keys are already write-locked...
-                       foreach ( $keys as $key ) {
-                               if ( isset( $this->exLocks[$key] ) && $this->exLocks[$key] !== $session ) {
-                                       return 'CANT_ACQUIRE';
-                               }
-                       }
-                       // Acquire the read-locks...
-                       foreach ( $keys as $key ) {
-                               $this->set_sh_lock( $key, $session );
-                       }
-                       return 'ACQUIRED';
-               } elseif ( $type === 'EX' ) {
-                       // Check if any keys are already read-locked or write-locked...
-                       foreach ( $keys as $key ) {
-                               if ( isset( $this->exLocks[$key] ) && $this->exLocks[$key] !== $session ) {
-                                       return 'CANT_ACQUIRE';
-                               }
-                               if ( isset( $this->shLocks[$key] ) ) {
-                                       foreach ( $this->shLocks[$key] as $otherSession => $x ) {
-                                               if ( $otherSession !== $session ) {
-                                                       return 'CANT_ACQUIRE';
-                                               }
-                                       }
-                               }
-                       }
-                       // Acquire the write-locks...
-                       foreach ( $keys as $key ) {
-                               $this->set_ex_lock( $key, $session );
-                       }
-                       return 'ACQUIRED';
-               }
-               return 'INTERNAL_ERROR';
-       }
-
-       /**
-        * @param $session string
-        * @param $type string
-        * @param $keys Array
-        * @return string
-        */
-       public function unlock( $session, $type, array $keys ) {
-               if ( $type === 'SH' ) {
-                       foreach ( $keys as $key ) {
-                               $this->unset_sh_lock( $key, $session );
-                       }
-                       return 'RELEASED';
-               } elseif ( $type === 'EX' ) {
-                       foreach ( $keys as $key ) {
-                               $this->unset_ex_lock( $key, $session );
-                       }
-                       return 'RELEASED';
-               }
-               return 'INTERNAL_ERROR';
-       }
-
-       /**
-        * @param $session string
-        * @return string
-        */
-       public function release( $session ) {
-               if ( isset( $this->sessionIndexSh[$session] ) ) {
-                       foreach ( $this->sessionIndexSh[$session] as $key => $x ) {
-                               $this->unset_sh_lock( $key, $session );
-                       }
-               }
-               if ( isset( $this->sessionIndexEx[$session] ) ) {
-                       foreach ( $this->sessionIndexEx[$session] as $key => $x ) {
-                               $this->unset_ex_lock( $key, $session );
-                       }
-               }
-               return 'RELEASED_ALL';
-       }
-
-       /**
-        * @param $key string
-        * @param $session string
-        * @return void
-        */
-       protected function set_sh_lock( $key, $session ) {
-               if ( !isset( $this->shLocks[$key][$session] ) ) {
-                       $this->shLocks[$key][$session] = 1;
-                       $this->sessionIndexSh[$session][$key] = 1;
-                       ++$this->lockCount; // we are adding a lock
-               }
-       }
-
-       /**
-        * @param $key string
-        * @param $session string
-        * @return void
-        */
-       protected function set_ex_lock( $key, $session ) {
-               if ( !isset( $this->exLocks[$key][$session] ) ) {
-                       $this->exLocks[$key] = $session;
-                       $this->sessionIndexEx[$session][$key] = 1;
-                       ++$this->lockCount; // we are adding a lock
-               }
-       }
-
-       /**
-        * @param $key string
-        * @param $session string
-        * @return void
-        */
-       protected function unset_sh_lock( $key, $session ) {
-               if ( isset( $this->shLocks[$key][$session] ) ) {
-                       unset( $this->shLocks[$key][$session] );
-                       if ( !count( $this->shLocks[$key] ) ) {
-                               unset( $this->shLocks[$key] );
-                       }
-                       unset( $this->sessionIndexSh[$session][$key] );
-                       if ( !count( $this->sessionIndexSh[$session] ) ) {
-                               unset( $this->sessionIndexSh[$session] );
-                       }
-                       --$this->lockCount;
-               }
-       }
-
-       /**
-        * @param $key string
-        * @param $session string
-        * @return void
-        */
-       protected function unset_ex_lock( $key, $session ) {
-               if ( isset( $this->exLocks[$key] ) && $this->exLocks[$key] === $session ) {
-                       unset( $this->exLocks[$key] );
-                       unset( $this->sessionIndexEx[$session][$key] );
-                       if ( !count( $this->sessionIndexEx[$session] ) ) {
-                               unset( $this->sessionIndexEx[$session] );
-                       }
-                       --$this->lockCount;
-               }
-       }
-}
index beed720..85364ee 100644 (file)
@@ -57,25 +57,27 @@ class UpdateMediaWiki extends Maintenance {
        }
 
        function compatChecks() {
-               $test = new PhpXmlBugTester();
-               if ( !$test->ok ) {
+               // Avoid syntax error in PHP4
+               $minimumPcreVersion = constant( 'Installer::MINIMUM_PCRE_VERSION' );
+
+               list( $pcreVersion ) = explode( ' ', PCRE_VERSION, 2 );
+               if ( version_compare( $pcreVersion, $minimumPcreVersion, '<' ) ) {
                        $this->error(
-                               "Your system has a combination of PHP and libxml2 versions which is buggy\n" .
-                               "and can cause hidden data corruption in MediaWiki and other web apps.\n" .
-                               "Upgrade to PHP 5.2.9 or later and libxml2 2.7.3 or later!\n" .
-                               "ABORTING (see http://bugs.php.net/bug.php?id=45996).\n",
+                               "PCRE $minimumPcreVersion or later is required.\n" .
+                               "Your PHP binary is linked with PCRE $pcreVersion.\n\n" .
+                               "More information:\n" .
+                               "https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE\n\n" .
+                               "ABORTING.\n",
                                true );
                }
 
-               $test = new PhpRefCallBugTester;
-               $test->execute();
+               $test = new PhpXmlBugTester();
                if ( !$test->ok ) {
-                       $ver = phpversion();
                        $this->error(
-                               "PHP $ver is not compatible with MediaWiki due to a bug involving\n" .
-                               "reference parameters to __call. Upgrade to PHP 5.3.2 or higher, or \n" .
-                               "downgrade to PHP 5.3.0 to fix this.\n" .
-                               "ABORTING (see http://bugs.php.net/bug.php?id=50394 for details)\n",
+                               "Your system has a combination of PHP and libxml2 versions that is buggy\n" .
+                               "and can cause hidden data corruption in MediaWiki and other web apps.\n" .
+                               "Upgrade to libxml2 2.7.3 or later.\n" .
+                               "ABORTING (see https://bugs.php.net/bug.php?id=45996).\n",
                                true );
                }
        }
index 4de5c2f..0d9608f 100644 (file)
@@ -1,9 +1,17 @@
+MEDIAWIKI_LOAD_URL ?= http://localhost/w/load.php
+
 kss: nodecheck
 # FIXME: Use more up-to-date Ruby version
-       @node_modules/.bin/kss-node mediawiki.ui mediawiki.ui/docs -l mediawiki.ui/vector.less -t styleguide-template
+
+# Generates CSS of mediawiki.ui and mediawiki.ui.button using ResourceLoader, then applies it to the
+# KSS style guide
+       $(eval KSS_RL_TMP := $(shell mktemp /tmp/tmp.XXXXXXXXXX))
+       @curl -sG "${MEDIAWIKI_LOAD_URL}?modules=mediawiki.ui|mediawiki.ui.button&only=styles" > $(KSS_RL_TMP)
+       @node_modules/.bin/kss-node mediawiki.ui mediawiki.ui/docs --css $(KSS_RL_TMP) -t styleguide-template
        @echo Opening the generated style guide...
        @command -v xdg-open >/dev/null 2>&1 || { open ${PWD}/mediawiki.ui/docs/index.html; exit 1; }
        @xdg-open ${PWD}/mediawiki.ui/docs/index.html
+       @rm $(KSS_RL_TMP)
 
 nodecheck:
        @scripts/nodecheck.sh
index 04f045a..500a47a 100644 (file)
@@ -21,10 +21,10 @@ jQuery( function ( $ ) {
                $lis
                .removeClass( 'selected' )
                .each( function () {
-                       var     $li = $(this),
+                       var     $li = $( this ),
                                $inputs = $li.find( 'input[type="radio"]' ),
-                               $oldidRadio = $inputs.filter( '[name="oldid"]' ).eq(0),
-                               $diffRadio = $inputs.filter( '[name="diff"]' ).eq(0);
+                               $oldidRadio = $inputs.filter( '[name="oldid"]' ).eq( 0 ),
+                               $diffRadio = $inputs.filter( '[name="diff"]' ).eq( 0 );
 
                        if ( !$oldidRadio.length || !$diffRadio.length ) {
                                return true;
@@ -60,7 +60,7 @@ jQuery( function ( $ ) {
                                        $oldidRadio.css( 'visibility', 'hidden' );
                                }
                        }
-               });
+               } );
 
                return true;
        }
@@ -77,7 +77,7 @@ jQuery( function ( $ ) {
        // Ideally we'd use e.target instead of $historySubmitter, but e.target points
        // to the form element for submit actions, so.
        $historyCompareForm.find( '.historysubmit' ).click( function () {
-               $historySubmitter = $(this);
+               $historySubmitter = $( this );
        } );
 
        // On submit we clone the form element, remove unneeded fields in the clone
@@ -92,7 +92,7 @@ jQuery( function ( $ ) {
                if ( $historySubmitter ) {
                        $copyForm = $historyCompareForm.clone();
                        $copyRadios = $copyForm.find( '#pagehistory > li' ).find( 'input[name="diff"], input[name="oldid"]' );
-                       $copyAction = $copyForm.find( '> [name="action"]');
+                       $copyAction = $copyForm.find( '> [name="action"]' );
 
                        // Remove action=historysubmit and ids[..]=..
                        if ( $historySubmitter.hasClass( 'mw-history-compareselectedversions-button' ) ) {
@@ -110,8 +110,8 @@ jQuery( function ( $ ) {
                        // Also remove potentially conflicting id attributes that we don't need anyway
                        $copyForm
                                .css( 'display', 'none' )
-                               .find('[id]')
-                                       .removeAttr('id')
+                               .find( '[id]' )
+                                       .removeAttr( 'id' )
                                .end()
                                .insertAfter( $historyCompareForm )
                                .submit();
index 9b27e24..d23a937 100644 (file)
@@ -26,7 +26,7 @@
                $link = $( '<a>', {
                        text: showText,
                        href: '#'
-               }).click(function () {
+               } ).click( function () {
                        if ( $table.hasClass( 'collapsed' ) ) {
                                $( this ).text( hideText );
                        } else {
@@ -34,7 +34,7 @@
                        }
                        $table.toggleClass( 'expanded collapsed' );
                        return false;
-               });
+               } );
 
                $col.append( $link );
                $row.append( $col );
index 98a9c54..d61c1c6 100644 (file)
@@ -34,7 +34,7 @@
                                                } );
                                        }
                                        d.resolve( exists );
-                               })
+                               } )
                                .fail( d.reject );
 
                        return d.promise( { abort: apiPromise.abort } );
@@ -61,7 +61,7 @@
                        apiPromise = this.get( {
                                        list: 'allpages',
                                        apprefix: prefix,
-                                       apnamespace: mw.config.get('wgNamespaceIds').category
+                                       apnamespace: mw.config.get( 'wgNamespaceIds' ).category
                                } )
                                .done( function ( data ) {
                                        var texts = [];
@@ -71,7 +71,7 @@
                                                } );
                                        }
                                        d.resolve( texts );
-                               })
+                               } )
                                .fail( d.reject );
 
                        return d.promise( { abort: apiPromise.abort } );
index c55c25c..5d2c271 100644 (file)
        background-image: url(@url);
 }
 
+.vertical-gradient ( @startColor: gray, @endColor: white, @startPos: 0, @endPos: 100% ) {
+       background-color: @endColor;
+       background-image: -moz-linear-gradient( top, @startColor @startPos, @endColor @endPos ); // Firefox 3.6+
+       background-image: -webkit-gradient( linear, left top, left bottom, color-stop( @startPos, @startColor ), color-stop( @endPos, @endColor ) ); // Safari 4+, Chrome 2+
+       background-image: -webkit-linear-gradient( top, @startColor @startPos, @endColor @endPos ); // Safari 5.1+, Chrome 10+
+       background-image: linear-gradient( @startColor @startPos, @endColor @endPos ); // Standard
+}
+
 /* Note gzip compression means that it is okay to embed twice */
 .background-image-svg(@svg, @fallback) {
        background-image: url(@fallback);
index 147a869..64efbb9 100644 (file)
@@ -29,7 +29,7 @@
                // Now on to justification.
                // We may still get ragged edges if someone resizes their window. Could bind to
                // that event, otoh do we really want to constantly be resizing galleries?
-               $( galleries ).each( function() {
+               $( galleries ).each( function () {
                        var lastTop,
                                $img,
                                imgWidth,
@@ -37,9 +37,9 @@
                                rows = [],
                                $gallery = $( this );
 
-                       $gallery.children( 'li' ).each( function() {
+                       $gallery.children( 'li' ).each( function () {
                                // Math.floor to be paranoid if things are off by 0.00000000001
-                               var top = Math.floor( $(this ).position().top ),
+                               var top = Math.floor( $( this ).position().top ),
                                        $this = $( this );
 
                                if ( top !== lastTop ) {
@@ -74,9 +74,9 @@
                                        captionWidth: $this.children().children( 'div.gallerytextwrapper' ).width(),
                                        height: imgHeight
                                };
-                       });
+                       } );
 
-                       (function () {
+                       ( function () {
                                var maxWidth,
                                        combinedAspect,
                                        combinedPadding,
                                                        $outerDiv.width( newWidth + padding );
                                                        $innerDiv.width( newWidth + padding );
                                                        $imageDiv.width( newWidth );
-                                                       $caption.width( curRow[j].captionWidth + (newWidth - curRow[j].imgWidth ) );
+                                                       $caption.width( curRow[j].captionWidth + ( newWidth - curRow[j].imgWidth ) );
                                                }
 
                                                hookInfo = {
index 3c93de0..8a4d526 100644 (file)
@@ -3,7 +3,7 @@
  * without a page reload. Currently, the only image formats that can be multi-page images are
  * PDF and DjVu files
  */
-( function (mw, $) {
+( function ( mw, $ ) {
 
        // Initialize ajax request variable
        var xhr;
@@ -71,7 +71,7 @@
                } );
        }
 
-       $( document ).ready( function() {
+       $( document ).ready( function () {
                // The presence of table.multipageimage signifies that this file is a multi-page image
                if ( mw.config.get( 'wgNamespaceNumber' ) === 6 && $( 'table.multipageimage' ).length !== 0 ) {
                        ajaxifyPageNavigation();
@@ -86,7 +86,7 @@
                                        if ( state ) {
                                                loadPage( state.url, true );
                                        }
-                               });
+                               } );
                        }
                }
        } );
index a560ca9..2c7421b 100644 (file)
@@ -25,7 +25,7 @@
                        // Bind onchange event handler and append to form
                        $html.append(
                                $( select ).change( function () {
-                                       window.location = QUnit.url( { useskin: $(this).val() } );
+                                       window.location = QUnit.url( { useskin: $( this ).val() } );
                                } )
                        );
 
index 3302ec6..19a8844 100644 (file)
@@ -11,7 +11,7 @@ jQuery( function ( $ ) {
        };
 
        $( '#prefsubmit' ).attr( 'id', 'prefcontrol' );
-       $preftoc = $('<ul id="preftoc"></ul>')
+       $preftoc = $( '<ul id="preftoc"></ul>' )
                .attr( 'role', 'tablist' );
        $preferences = $( '#preferences' )
                .addClass( 'jsprefs' )
@@ -34,7 +34,7 @@ jQuery( function ( $ ) {
        $( '<div>' ).addClass( 'mw-navigation-hint' )
                .text( mediaWiki.msg( 'prefs-tabs-navigation-hint' ) )
                .attr( 'tabIndex', 0 )
-               .on( 'focus blur', function( e ) {
+               .on( 'focus blur', function ( e ) {
                        if ( e.type === 'blur' || e.type === 'focusout' ) {
                                $( this ).css( 'height', '0' );
                        } else {
@@ -81,7 +81,7 @@ jQuery( function ( $ ) {
 
        // Populate the prefToc
        $legends.each( function ( i, legend ) {
-               var $legend = $(legend),
+               var $legend = $( legend ),
                        ident, $li, $a;
                if ( i === 0 ) {
                        $legend.parent().show();
@@ -106,7 +106,7 @@ jQuery( function ( $ ) {
        } );
 
        // Enable keyboard users to use left and right keys to switch tabs
-       $preftoc.on( 'keydown', function( event ) {
+       $preftoc.on( 'keydown', function ( event ) {
                var keyLeft = 37,
                        keyRight = 39,
                        $el;
@@ -139,14 +139,14 @@ jQuery( function ( $ ) {
        if ( 'onhashchange' in window &&
                ( document.documentMode === undefined || document.documentMode >= 8 )
        ) {
-               $(window).on( 'hashchange' , function () {
+               $( window ).on( 'hashchange' , function () {
                        var hash = window.location.hash;
                        if ( hash.match( /^#mw-prefsection-[\w\-]+/ ) ) {
                                switchPrefTab( hash.replace( '#mw-prefsection-', '' ) );
                        } else if ( hash === '' ) {
                                switchPrefTab( 'personal', 'noHash' );
                        }
-               });
+               } );
        // In older browsers we'll bind a click handler as fallback.
        // We must not have onhashchange *and* the click handlers, other wise
        // the click handler calls switchPrefTab() which sets the hash value,
@@ -155,7 +155,7 @@ jQuery( function ( $ ) {
                $preftoc.on( 'click', 'li a', function ( e ) {
                        switchPrefTab( $( this ).attr( 'href' ).replace( '#mw-prefsection-', '' ) );
                        e.preventDefault();
-               });
+               } );
        }
 
        /**
index 035252b..b847f7d 100644 (file)
                }
 
                // Create check all/none button
-               $checkboxes = $('#powersearch input[id^=mw-search-ns]');
-               $('#mw-search-togglebox').append(
-                       $('<label>')
-                               .text(mw.msg('powersearch-togglelabel'))
+               $checkboxes = $( '#powersearch input[id^=mw-search-ns]' );
+               $( '#mw-search-togglebox' ).append(
+                       $( '<label>' )
+                               .text( mw.msg( 'powersearch-togglelabel' ) )
                ).append(
-                       $('<input type="button" />')
+                       $( '<input type="button" />' )
                                .attr( 'id', 'mw-search-toggleall' )
-                               .prop( 'value', mw.msg('powersearch-toggleall' ) )
+                               .prop( 'value', mw.msg( 'powersearch-toggleall' ) )
                                .click( function () {
-                                       $checkboxes.prop('checked', true);
+                                       $checkboxes.prop( 'checked', true );
                                } )
                ).append(
-                       $('<input type="button" />')
+                       $( '<input type="button" />' )
                                .attr( 'id', 'mw-search-togglenone' )
-                               .prop( 'value', mw.msg('powersearch-togglenone' ) )
-                               .click( function() {
+                               .prop( 'value', mw.msg( 'powersearch-togglenone' ) )
+                               .click( function () {
                                        $checkboxes.prop( 'checked', false );
                                } )
                );
                // Change the header search links to what user entered
                $headerLinks = $( '.search-types a' );
                $( '#searchText, #powerSearchText' ).change( function () {
-                       var searchterm = $(this).val();
+                       var searchterm = $( this ).val();
                        $headerLinks.each( function () {
-                               var parts = $(this).attr('href').split( 'search=' ),
+                               var parts = $( this ).attr( 'href' ).split( 'search=' ),
                                        lastpart = '',
                                        prefix = 'search=';
-                               if ( parts.length > 1 && parts[1].indexOf('&') >= 0 ) {
-                                       lastpart = parts[1].substring( parts[1].indexOf('&') );
+                               if ( parts.length > 1 && parts[1].indexOf( '&' ) >= 0 ) {
+                                       lastpart = parts[1].substring( parts[1].indexOf( '&' ) );
                                } else {
                                        prefix = '&search=';
                                }
                                this.href = parts[0] + prefix + encodeURIComponent( searchterm ) + lastpart;
-                       });
-               }).trigger( 'change' );
+                       } );
+               } ).trigger( 'change' );
 
        } );
 
index 3f40c54..4ee3de3 100644 (file)
@@ -57,7 +57,7 @@
                        thumb.find( '.filename' ).text( file.name ).end()
                                .find( '.fileinfo' ).text( prettySize( file.size ) ).end();
 
-                       $canvas = $('<canvas width="' + previewSize + '" height="' + previewSize + '" ></canvas>');
+                       $canvas = $( '<canvas width="' + previewSize + '" height="' + previewSize + '" ></canvas>' );
                        ctx = $canvas[0].getContext( '2d' );
                        $( '#mw-htmlform-source' ).parent().prepend( thumb );
 
@@ -93,8 +93,8 @@
                                                width = img.width / img.height * previewSize;
                                        }
                                        // Determine the offset required to center the image
-                                       dx = (180 - width) / 2;
-                                       dy = (180 - height) / 2;
+                                       dx = ( 180 - width ) / 2;
+                                       dy = ( 180 - height ) / 2;
                                        switch ( rotation ) {
                                                // If a rotation is applied, the direction of the axis
                                                // changes as well. You can derive the values below by
                                        ctx.clearRect( 0, 0, 180, 180 );
                                        ctx.rotate( rotation / 180 * Math.PI );
                                        ctx.drawImage( img, x, y, width, height );
-                                       thumb.find('.mw-small-spinner').replaceWith($canvas);
+                                       thumb.find( '.mw-small-spinner' ).replaceWith( $canvas );
 
                                        // Image size
                                        info = mw.msg( 'widthheight', logicalWidth, logicalHeight ) +
                        if ( callbackBinary && 'readAsBinaryString' in reader ) {
                                // To fetch JPEG metadata we need a binary string; start there.
                                // todo:
-                               reader.onload = function() {
+                               reader.onload = function () {
                                        callbackBinary( reader.result );
 
                                        // Now run back through the regular code path.
                                // readAsArrayBuffer replaces readAsBinaryString
                                // However, our JPEG metadata library wants a string.
                                // So, this is going to be an ugly conversion.
-                               reader.onload = function() {
+                               reader.onload = function () {
                                        var i,
                                                buffer = new Uint8Array( reader.result ),
                                                string = '';
                }
 
                for ( i = $rows.length; i; i-- ) {
-                       $row = $rows.eq(i - 1);
+                       $row = $rows.eq( i - 1 );
                        $row
                                .find( 'input[name="wpSourceType"]' )
                                .change( createHandler( $row ) );
index 51770fd..32c3f1e 100644 (file)
 
                /**
                 * Example to declare existing titles:
-                *     Title.exist.set(['User:John_Doe', ...]);
+                *     Title.exist.set( ['User:John_Doe', ...] );
                 * Eample to declare titles nonexistent:
-                *     Title.exist.set(['File:Foo_bar.jpg', ...], false);
+                *     Title.exist.set( ['File:Foo_bar.jpg', ...], false );
                 *
                 * @static
                 * @property exist.set
index a1eed48..a750106 100644 (file)
                 */
                Uri.encode = function ( s ) {
                        return encodeURIComponent( s )
-                               .replace( /!/g, '%21').replace( /'/g, '%27').replace( /\(/g, '%28')
-                               .replace( /\)/g, '%29').replace( /\*/g, '%2A')
+                               .replace( /!/g, '%21' ).replace( /'/g, '%27' ).replace( /\(/g, '%28' )
+                               .replace( /\)/g, '%29' ).replace( /\*/g, '%2A' )
                                .replace( /%20/g, '+' );
                };
 
index 986917a..04cfbb0 100644 (file)
@@ -54,7 +54,7 @@
                 */
                switchPane: function ( e ) {
                        var currentPaneId = debug.$container.data( 'currentPane' ),
-                               requestedPaneId = $(this).prop( 'id' ).substr( 9 ),
+                               requestedPaneId = $( this ).prop( 'id' ).substr( 9 ),
                                $currentPane = $( '#mw-debug-pane-' + currentPaneId ),
                                $requestedPane = $( '#mw-debug-pane-' + requestedPaneId ),
                                hovDone = false;
@@ -69,8 +69,8 @@
                        // Skip hash fragment handling. Prevents screen from jumping.
                        e.preventDefault();
 
-                       $( this ).addClass( 'current ');
-                       $( '.mw-debug-panelink' ).not( this ).removeClass( 'current ');
+                       $( this ).addClass( 'current ' );
+                       $( '.mw-debug-panelink' ).not( this ).removeClass( 'current ' );
 
                        // Hide the current pane
                        if ( requestedPaneId === currentPaneId ) {
                         * @return {jQuery}
                         */
                        function bitDiv( id ) {
-                               return $( '<div>' ).prop({
+                               return $( '<div>' ).prop( {
                                        id: 'mw-debug-' + id,
                                        className: 'mw-debug-bit'
-                               })
+                               } )
                                .appendTo( $bits );
                        }
 
                         */
                        function paneLabel( id, text ) {
                                return $( '<a>' )
-                                       .prop({
+                                       .prop( {
                                                className: 'mw-debug-panelabel',
                                                href: '#mw-debug-pane-' + id
-                                       })
+                                       } )
                                        .text( text );
                        }
 
                                if ( count ) {
                                        text = text + ' (' + count + ')';
                                }
-                               return $( '<div>' ).prop({
+                               return $( '<div>' ).prop( {
                                        id: 'mw-debug-' + id,
                                        className: 'mw-debug-bit mw-debug-panelink'
-                               })
+                               } )
                                .append( paneLabel( id, text ) )
                                .appendTo( $bits );
                        }
                                }
 
                                $( '<div>' )
-                                       .prop({
+                                       .prop( {
                                                className: 'mw-debug-pane',
                                                id: 'mw-debug-pane-' + id
-                                       })
+                                       } )
                                        .append( panes[id] )
                                        .appendTo( $container );
                        }
index de06859..7315677 100644 (file)
@@ -11,9 +11,9 @@
         */
        $.fn.goIn = function ( instantToggle ) {
                if ( instantToggle === true ) {
-                       return $(this).show();
+                       return $( this ).show();
                }
-               return $(this).stop( true, true ).fadeIn();
+               return $( this ).stop( true, true ).fadeIn();
        };
 
        /**
@@ -24,9 +24,9 @@
         */
        $.fn.goOut = function ( instantToggle ) {
                if ( instantToggle === true ) {
-                       return $(this).hide();
+                       return $( this ).hide();
                }
-               return $(this).stop( true, true ).fadeOut();
+               return $( this ).stop( true, true ).fadeOut();
        };
 
        /**
@@ -35,8 +35,8 @@
         * @param {Function} callback Takes one parameter, which is {true} when the
         *  event is called immediately, and {jQuery.Event} when triggered from an event.
         */
-       $.fn.liveAndTestAtStart = function ( callback ){
-               $(this)
+       $.fn.liveAndTestAtStart = function ( callback ) {
+               $( this )
                        .live( 'change', callback )
                        .each( function () {
                                callback.call( this, true );
                // Animate the SelectOrOther fields, to only show the text field when
                // 'other' is selected.
                $( '.mw-htmlform-select-or-other' ).liveAndTestAtStart( function ( instant ) {
-                       var $other = $( '#' + $(this).attr( 'id' ) + '-other' );
+                       var $other = $( '#' + $( this ).attr( 'id' ) + '-other' );
                        $other = $other.add( $other.siblings( 'br' ) );
-                       if ( $(this).val() === 'other' ) {
+                       if ( $( this ).val() === 'other' ) {
                                $other.goIn( instant );
                        } else {
                                $other.goOut( instant );
                        }
-               });
+               } );
 
        } );
 
@@ -72,7 +72,7 @@
                        'class': 'htmlform-chzn-select mw-input ' + oldClass
                } );
                $oldContainer.find( 'input' ).each( function () {
-                       var $oldInput = $(this),
+                       var $oldInput = $( this ),
                        checked = $oldInput.prop( 'checked' ),
                        $option = $( '<option>' );
                        $option.prop( 'value', $oldInput.prop( 'value' ) );
index 70b9be9..3322ad9 100644 (file)
 
                /**
                 * N.B. replacements are variadic arguments or an array in second parameter. In other words:
-                *    somefunction(a, b, c, d)
+                *    somefunction( a, b, c, d )
                 * is equivalent to
-                *    somefunction(a, [b, c, d])
+                *    somefunction( a, [b, c, d] )
                 *
                 * @param {string} key Message key.
                 * @param {Array|mixed} replacements Optional variable replacements (variadically or an array).
                var failableParserFn = getFailableParserFn( options );
                /**
                 * N.B. replacements are variadic arguments or an array in second parameter. In other words:
-                *    somefunction(a, b, c, d)
+                *    somefunction( a, b, c, d )
                 * is equivalent to
-                *    somefunction(a, [b, c, d])
+                *    somefunction( a, [b, c, d] )
                 *
                 * We append to 'this', which in a jQuery plugin context will be the selected elements.
                 * @param {string} key Message key.
                        // This may be because, to save code, memoization was removed
 
                        regularLiteral = makeRegexParser( /^[^{}\[\]$<\\]/ );
-                       regularLiteralWithoutBar = makeRegexParser(/^[^{}\[\]$\\|]/);
-                       regularLiteralWithoutSpace = makeRegexParser(/^[^{}\[\]$\s]/);
+                       regularLiteralWithoutBar = makeRegexParser( /^[^{}\[\]$\\|]/ );
+                       regularLiteralWithoutSpace = makeRegexParser( /^[^{}\[\]$\s]/ );
                        regularLiteralWithSquareBrackets = makeRegexParser( /^[^{}$\\]/ );
 
                        backslash = makeStringParser( '\\' );
                        // Used to define "literals" without spaces, in space-delimited situations
                        function literalWithoutSpace() {
                                var result = nOrMore( 1, escapedOrLiteralWithoutSpace )();
-                               return result === null ? null : result.join('');
+                               return result === null ? null : result.join( '' );
                        }
                        // Used to define "literals" within template parameters. The pipe character is the parameter delimeter, so by default
                        // it is not a literal in the parameter
                        function literalWithoutBar() {
                                var result = nOrMore( 1, escapedOrLiteralWithoutBar )();
-                               return result === null ? null : result.join('');
+                               return result === null ? null : result.join( '' );
                        }
 
                        // Used for wikilink page names.  Like literalWithoutBar, but
                        // without allowing escapes.
                        function unescapedLiteralWithoutBar() {
                                var result = nOrMore( 1, regularLiteralWithoutBar )();
-                               return result === null ? null : result.join('');
+                               return result === null ? null : result.join( '' );
                        }
 
                        function literal() {
                                var result = nOrMore( 1, escapedOrRegularLiteral )();
-                               return result === null ? null : result.join('');
+                               return result === null ? null : result.join( '' );
                        }
 
                        function curlyBraceTransformExpressionLiteral() {
                                var result = nOrMore( 1, regularLiteralWithSquareBrackets )();
-                               return result === null ? null : result.join('');
+                               return result === null ? null : result.join( '' );
                        }
 
                        asciiAlphabetLiteral = makeRegexParser( /[A-Za-z]+/ );
                                        whitespace,
                                        asciiAlphabetLiteral,
                                        htmlAttributeEquals,
-                                       choice( [
+                                       choice( [
                                                doubleQuotedHtmlAttributeValue,
                                                singleQuotedHtmlAttributeValue
                                        ] )
                                endTagName = parsedCloseTagResult[1];
                                wrappedAttributes = parsedOpenTagResult[2];
                                attributes = wrappedAttributes.slice( 1 );
-                               if ( isAllowedHtml( startTagName, endTagName, attributes) ) {
+                               if ( isAllowedHtml( startTagName, endTagName, attributes ) ) {
                                        result = [ 'HTMLELEMENT', startTagName, wrappedAttributes ].concat( parsedHtmlContents );
                                } else {
                                        // HTML is not allowed, so contents will remain how
                                ] );
                                return result === null ? null : [ result[0], result[2] ];
                        }
-                       colon = makeStringParser(':');
+                       colon = makeStringParser( ':' );
                        templateContents = choice( [
                                function () {
                                        var res = sequence( [
                                        return [ res[0] ].concat( res[1] );
                                }
                        ] );
-                       openTemplate = makeStringParser('{{');
-                       closeTemplate = makeStringParser('}}');
+                       openTemplate = makeStringParser( '{{' );
+                       closeTemplate = makeStringParser( '}}' );
                        nonWhitespaceExpression = choice( [
                                template,
                                wikilink,
                 * Transform parsed structure into external link
                 * If the href is a jQuery object, treat it as "enclosing" the link text.
                 *              ... function, treat it as the click handler
-                *              ... string, treat it as a URI
+                *              ... string, treat it as a URI
                 * TODO: throw an error if nodes.length > 2 ?
                 * @param {Array} of two elements, {jQuery|Function|String} and {String}
                 * @return {jQuery}
                extlinkparam: function ( nodes, replacements ) {
                        var replacement,
                                index = parseInt( nodes[0], 10 );
-                       if ( index < replacements.length) {
+                       if ( index < replacements.length ) {
                                replacement = replacements[index];
                        } else {
                                replacement = '$' + ( index + 1 );
                plural: function ( nodes ) {
                        var forms, count;
                        count = parseFloat( this.language.convertNumber( nodes[0], true ) );
-                       forms = nodes.slice(1);
+                       forms = nodes.slice( 1 );
                        return forms.length ? this.language.convertPlural( count, forms ) : '';
                },
 
                // Caching is somewhat problematic, because we do need different message functions for different maps, so
                // we'd have to cache the parser as a member of this.map, which sounds a bit ugly.
                // Do not use mw.jqueryMsg unless required
-               if ( this.format === 'plain' || !/\{\{|[\[<>]/.test(this.map.get( this.key ) ) ) {
+               if ( this.format === 'plain' || !/\{\{|[\[<>]/.test( this.map.get( this.key ) ) ) {
                        // Fall back to mw.msg's simple parser
                        return oldParser.apply( this );
                }
index f6b5bf3..e3aae9e 100644 (file)
@@ -1876,38 +1876,6 @@ var mw = ( function ( $, undefined ) {
                                        // Cache hit stats
                                        stats: { hits: 0, misses: 0, expired: 0 },
 
-                                       // Experiment data
-                                       experiment: ( function () {
-                                               var start = ( new Date() ).getTime(), id = 0, seed = 0;
-
-                                               try {
-                                                       id = JSON.parse( localStorage.getItem( 'moduleStorageExperiment2' ) );
-                                                       if ( typeof id !== 'number' ) {
-                                                               id = Math.floor( Math.random() * Math.random() * 1e16 );
-                                                               localStorage.setItem( 'moduleStorageExperiment2', id );
-                                                       }
-                                                       seed = id % 2000;
-                                               } catch ( e ) {}
-
-                                               return {
-                                                       // Unique identifier for this browser. This allows us to group all
-                                                       // datapoints generated by a particular browser, which in turn allows us
-                                                       // to see how the initial load compares to subsequent page loads.
-                                                       id: id,
-
-                                                       // Group assignment may be 0 (not in experiment), 1 (control group), or 2
-                                                       // (experimental group). Browsers that don't implement all the prerequisite APIs
-                                                       // (JSON and Web Storage) are ineligible. Eligible browsers have a 0.1% chance
-                                                       // of being included in the experiment, in which case they are equally likely to
-                                                       // be assigned to either the experimental or control group.
-                                                       group: seed === 1 ? 1 : ( seed === 2 ? 2 : 0 ),
-
-                                                       // Assess module storage performance by measuring the time between this
-                                                       // reference point and the window load event.
-                                                       start: start
-                                               };
-                                       }() ),
-
                                        /**
                                         * Construct a JSON-serializable object representing the content of the store.
                                         * @return {Object} Module store contents.
@@ -1968,8 +1936,7 @@ var mw = ( function ( $, undefined ) {
                                                        return;
                                                }
 
-                                               if ( ( !mw.config.get( 'wgResourceLoaderStorageEnabled' ) && mw.loader.store.experiment.group !== 2 )
-                                                       || mw.config.get( 'debug' ) ) {
+                                               if ( !mw.config.get( 'wgResourceLoaderStorageEnabled' ) || mw.config.get( 'debug' ) ) {
                                                        // Disabled by configuration, or because debug mode is set
                                                        mw.loader.store.enabled = false;
                                                        return;
index 86f06b8..820cd0a 100644 (file)
                        } )();
 
                        // Table of contents toggle
-                       mw.hook( 'wikipage.content' ).add( function () {
+                       mw.hook( 'wikipage.content' ).add( function ( $content ) {
                                var $tocTitle, $tocToggleLink, hideTocCookie;
-                               $tocTitle = $( '#toctitle' );
-                               $tocToggleLink = $( '#togglelink' );
+                               $tocTitle = $content.find( '#toctitle' );
+                               $tocToggleLink = $content.find( '#togglelink' );
                                // Only add it if there is a TOC and there is no toggle added already
-                               if ( $( '#toc' ).length && $tocTitle.length && !$tocToggleLink.length ) {
+                               if ( $content.find( '#toc' ).length && $tocTitle.length && !$tocToggleLink.length ) {
                                        hideTocCookie = $.cookie( 'mw_hidetoc' );
                                        $tocToggleLink = $( '<a href="#" class="internal" id="togglelink"></a>' )
                                                .text( mw.msg( 'hidetoc' ) )
                                                .click( function ( e ) {
                                                        e.preventDefault();
-                                                       util.toggleToc( $(this) );
+                                                       util.toggleToc( $( this ) );
                                                } );
                                        $tocTitle.append(
                                                $tocToggleLink
                 * This function returns the styleSheet object for convience (due to cross-browsers
                 * difference as to where it is located).
                 *
-                *     var sheet = mw.util.addCSS('.foobar { display: none; }');
-                *     $(foo).click(function () {
+                *     var sheet = mw.util.addCSS( '.foobar { display: none; }' );
+                *     $( foo ).click( function () {
                 *         // Toggle the sheet on and off
                 *         sheet.disabled = !sheet.disabled;
-                *     });
+                *     } );
                 *
                 * @param {string} text CSS to be appended
                 * @return {CSSStyleSheet} Use .ownerNode to get to the `<style>` element.
                        // the ABNF:
                        //      1 * ( atext / "." ) "@" ldh-str 1*( "." ldh-str )
                        // With:
-                       // - atext      : defined in RFC 5322 section 3.2.3
+                       // - atext   : defined in RFC 5322 section 3.2.3
                        // - ldh-str : defined in RFC 1034 section 3.5
                        //
                        // (see STD 68 / RFC 5234 http://tools.ietf.org/html/std68)
                                // RegExp is case insensitive
                                'i'
                        );
-                       return (null !== mailtxt.match( html5EmailRegexp ) );
+                       return ( null !== mailtxt.match( html5EmailRegexp ) );
                },
 
                /**
index b70066a..cb89a7b 100644 (file)
@@ -23,7 +23,7 @@ body {
        font-family: @content-font-family;
 }
 body {
-       background-color: #f6f6f6;
+       background-color: @menu-background-color;
        font-size: @body-font-size;
 }
 
@@ -33,11 +33,11 @@ div#content {
        margin-left: 10em;
        padding: @content-padding;
        /* Border on top, left, and bottom side */
-       border: 1px solid #a7d7f9;
+       border: 1px solid @content-border-color;
        border-right-width: 0;
        /* Merge the border with tabs' one (in their background image) */
        margin-top: -1px;
-       background-color: white;
+       background-color: @body-background-color;
        color: @content-font-color;
        direction: ltr;
 }
index 4512efa..e2942d7 100644 (file)
 /* Head */
 #mw-page-base {
        height: 5em;
-       background-color: white;
-       .background-image('images/page-fade.png');
        background-position: bottom left;
        background-repeat: repeat-x;
+       .vertical-gradient(@body-background-color, @menu-background-color, 40%, 100%);
 }
 
 #mw-head-base {
index 43b9882..cadb61c 100644 (file)
@@ -12,7 +12,7 @@
                background-color: #fff;
                background-color: rgba(255, 255, 255, 0.93);
                padding: 0.75em 1.5em;
-               border: solid 1px #a7d7f9;
+               border: solid 1px @content-border-color;
                border-radius: 0.75em;
                -webkit-box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
                box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
diff --git a/skins/vector/images/page-fade.png b/skins/vector/images/page-fade.png
deleted file mode 100644 (file)
index b4a6034..0000000
Binary files a/skins/vector/images/page-fade.png and /dev/null differ
index f818401..c2d0b92 100644 (file)
@@ -3,6 +3,8 @@
 @body-font-size: 1em;
 
 // Page content
+// FIXME: Use global variable since Echo and CentralNotice use this variable
+@content-border-color: #a7d7f9;
 @content-font-family: sans-serif;
 @content-font-color: black;
 @content-font-size: 0.8em;
 @content-padding: 1.25em 1.5em 1.5em 1.5em;
 @content-heading-font-size: 1.6em;
 @content-heading-font-family: sans-serif;
+@body-background-color: #fff;
+
+// Navigation
+@menu-background-color: #f6f6f6;
 
 // Common menu
 @menu-link-color: #0645ad;