Merge "Add option to rebuild message files on a different folder. It also creates...
authorSiebrand <s.mazeland@xs4all.nl>
Mon, 16 Apr 2012 09:30:24 +0000 (09:30 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 16 Apr 2012 09:30:24 +0000 (09:30 +0000)
162 files changed:
.gitreview
INSTALL
RELEASE-NOTES-1.20
docs/code-coverage/README
img_auth.php
includes/AutoLoader.php
includes/Block.php
includes/ChangeTags.php
includes/DefaultSettings.php
includes/Exception.php
includes/Export.php
includes/GitInfo.php
includes/GlobalFunctions.php
includes/HTMLForm.php
includes/Import.php
includes/PathRouter.php
includes/Setup.php
includes/Title.php
includes/actions/HistoryAction.php
includes/api/ApiComparePages.php
includes/api/ApiMain.php
includes/api/ApiQueryCategories.php
includes/api/ApiQueryCategoryMembers.php
includes/api/ApiQueryDeletedrevs.php
includes/api/ApiQueryDuplicateFiles.php
includes/api/ApiQueryIWLinks.php
includes/api/ApiQueryImages.php
includes/api/ApiQueryLangLinks.php
includes/api/ApiQueryLinks.php
includes/api/ApiUpload.php
includes/cache/GenderCache.php
includes/db/DatabasePostgres.php
includes/debug/Debug.php
includes/filerepo/FileRepo.php
includes/filerepo/backend/FileBackendStore.php
includes/installer/DatabaseUpdater.php
includes/installer/PostgresInstaller.php
includes/installer/PostgresUpdater.php
includes/parser/CoreParserFunctions.php
includes/resourceloader/ResourceLoaderLanguageDataModule.php [new file with mode: 0644]
includes/resourceloader/ResourceLoaderUserGroupsModule.php
includes/resourceloader/ResourceLoaderUserModule.php
includes/specials/SpecialAllpages.php
includes/specials/SpecialDeletedContributions.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialListgrouprights.php
includes/specials/SpecialListusers.php
includes/specials/SpecialMergeHistory.php
includes/specials/SpecialPrefixindex.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialVersion.php
languages/Language.php
languages/LanguageConverter.php
languages/messages/MessagesAs.php
languages/messages/MessagesAst.php
languages/messages/MessagesAvk.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBr.php
languages/messages/MessagesCa.php
languages/messages/MessagesCs.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesEl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesFa.php
languages/messages/MessagesFr.php
languages/messages/MessagesGd.php
languages/messages/MessagesGl.php
languages/messages/MessagesHe.php
languages/messages/MessagesHif_latn.php
languages/messages/MessagesHsb.php
languages/messages/MessagesHu.php
languages/messages/MessagesHy.php
languages/messages/MessagesIa.php
languages/messages/MessagesInh.php
languages/messages/MessagesIt.php
languages/messages/MessagesKa.php
languages/messages/MessagesKab.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKo.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKw.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLez.php
languages/messages/MessagesLi.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMn.php
languages/messages/MessagesMr.php
languages/messages/MessagesMs.php
languages/messages/MessagesMt.php
languages/messages/MessagesNan.php
languages/messages/MessagesNds_nl.php
languages/messages/MessagesNe.php
languages/messages/MessagesNl.php
languages/messages/MessagesOr.php
languages/messages/MessagesOs.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesSi.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSq.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesSv.php
languages/messages/MessagesSw.php
languages/messages/MessagesTly.php [new file with mode: 0644]
languages/messages/MessagesTr.php
languages/messages/MessagesTyv.php
languages/messages/MessagesUk.php
languages/messages/MessagesVep.php
languages/messages/MessagesVi.php
languages/messages/MessagesVo.php
languages/messages/MessagesZh_hans.php
maintenance/Maintenance.php
maintenance/archives/patch-filejournal.sql
maintenance/language/messages.inc
maintenance/mergeMessageFileList.php
maintenance/postgres/archives/patch-add_interwiki.sql [new file with mode: 0644]
maintenance/postgres/archives/patch-category.sql
maintenance/postgres/archives/patch-external_user.sql [new file with mode: 0644]
maintenance/postgres/archives/patch-ipb_address_unique.sql
maintenance/postgres/archives/patch-log_search.sql
maintenance/postgres/archives/patch-module_deps.sql
maintenance/postgres/archives/patch-msg_resource.sql
maintenance/postgres/archives/patch-msg_resource_links.sql
resources/Resources.php
resources/mediawiki.language/mediawiki.language.js
resources/mediawiki/mediawiki.Uri.js
resources/mediawiki/mediawiki.debug.js
resources/mediawiki/mediawiki.jqueryMsg.js
resources/startup.js
tests/TestsAutoLoader.php
tests/jasmine/spec/mediawiki.Uri.spec.js
tests/parser/parserTests.txt
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/BlockTest.php
tests/phpunit/includes/GlobalFunctions/GlobalTest.php
tests/phpunit/includes/MockOutputPage.php [new file with mode: 0644]
tests/phpunit/includes/media/ExifRotationTest.php
tests/phpunit/languages/LanguageSrTest.php
tests/phpunit/maintenance/DumpTestCase.php
tests/phpunit/phpunit.php
tests/phpunit/suite.xml
tests/qunit/QUnitTestResources.php
tests/qunit/data/testrunner.js
tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js [new file with mode: 0644]
tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js
thumb.php

index f6438d5..0ec44b8 100644 (file)
@@ -3,3 +3,4 @@ host=gerrit.wikimedia.org
 port=29418
 project=mediawiki/core.git
 defaultbranch=master
+defaultrebase=0
diff --git a/INSTALL b/INSTALL
index 1f226fe..3a2860f 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -8,9 +8,10 @@ Starting with MediaWiki 1.2.0, it's possible to install and configure the wiki
 Required software:
 * Web server with PHP 5.2.3 or higher.
 * A SQL server, the following types are supported
-** MySQL 4.0.14 or higher
+** MySQL 5.0.2 or higher
 ** PostgreSQL 8.3 or higher
-** SQLite
+** SQLite 3.3.7 or higher
+** Oracle 9.0.1 or higher
 
 MediaWiki is developed and tested mainly on Unix/Linux platforms, but should
 work on Windows as well.
index 92e8367..07145ae 100644 (file)
@@ -76,6 +76,11 @@ production.
 * (bug 35705) QUnit upgraded from 1.2.0 to 1.5.0
 * (bug 35749) Updated maintenance/checkSyntax.php to use Git instead of
   Subversion when invoked with the --modified option.
+* (bug 35069) On history pages, the " . . " separator after the number of
+  characters changed in a revision is now suppressed if no text would follow.
+* (bug 18704) Add a unique CSS class or ID to the tagfilter table row at RecentChanges
+* (bug 33564) transwiki import sometimes result in invalid title.
+* (bug 35572) Blocks appear to succeed even if query fails due to wrong DB structure
 
 === API changes in 1.20 ===
 * (bug 34316) Add ability to retrieve maximum upload size from MediaWiki API.
@@ -85,6 +90,7 @@ production.
 * (bug 31883) Limit of bkusers of list=blocks and titles of action=query is not documented in API help.
 * (bug 32492) API now allows editing using pageid
 * (bug 32497) API now allows changing of protection level using pageid
+* (bug 32498) API now allows comparing pages using pageids
 
 === Languages updated in 1.20 ===
 
index 7bc55ce..76ce9bd 100644 (file)
@@ -1,2 +1,2 @@
 This directory is for the auto-generated phpunit code coverage.
-Run 'make coverage' in the maintenance/tests/phpunit subdirectory to build.
+Run 'make coverage' in the tests/phpunit subdirectory to build.
index 82afef2..a51e5ca 100644 (file)
@@ -92,7 +92,7 @@ function wfImageAuthMain() {
        }
 
        // Check to see if the file exists
-       if ( !$repo->fileExists( $filename, FileRepo::FILES_ONLY ) ) {
+       if ( !$repo->fileExists( $filename ) ) {
                wfForbidden( 'img-auth-accessdenied','img-auth-nofile', $filename );
                return;
        }
index eaeda49..a1bbc3c 100644 (file)
@@ -739,6 +739,7 @@ $wgAutoloadLocalClasses = array(
        'ResourceLoaderUserModule' => 'includes/resourceloader/ResourceLoaderUserModule.php',
        'ResourceLoaderUserOptionsModule' => 'includes/resourceloader/ResourceLoaderUserOptionsModule.php',
        'ResourceLoaderUserTokensModule' => 'includes/resourceloader/ResourceLoaderUserTokensModule.php',
+       'ResourceLoaderLanguageDataModule' => 'includes/resourceloader/ResourceLoaderLanguageDataModule.php',
        'ResourceLoaderWikiModule' => 'includes/resourceloader/ResourceLoaderWikiModule.php',
 
        # includes/revisiondelete
index 522316f..dff1a5d 100644 (file)
@@ -33,6 +33,9 @@ class Block {
        /// @var User|String
        protected $target;
 
+       // @var Integer Hack for foreign blocking (CentralAuth)
+       protected $forcedTargetID;
+
        /// @var Block::TYPE_ constant.  Can only be USER, IP or RANGE internally
        protected $type;
 
@@ -72,7 +75,7 @@ class Block {
 
                $this->setTarget( $address );
                if ( $this->target instanceof User && $user ) {
-                       $this->target->setId( $user ); // needed for foreign users
+                       $this->forcedTargetID = $user; // needed for foreign users
                }
                if ( $by ) { // local user
                        $this->setBlocker( User::newFromID( $by ) );
@@ -483,9 +486,15 @@ class Block {
                }
                $expiry = $db->encodeExpiry( $this->mExpiry );
 
+               if ( $this->forcedTargetID ) {
+                       $uid = $this->forcedTargetID;
+               } else {
+                       $uid = $this->target instanceof User ? $this->target->getID() : 0;
+               }
+
                $a = array(
                        'ipb_address'          => (string)$this->target,
-                       'ipb_user'             => $this->target instanceof User ? $this->target->getID() : 0,
+                       'ipb_user'             => $uid,
                        'ipb_by'               => $this->getBy(),
                        'ipb_by_text'          => $this->getByName(),
                        'ipb_reason'           => $this->mReason,
index 63d3732..0dbaac6 100644 (file)
@@ -210,7 +210,7 @@ class ChangeTags {
                        return $fullForm ? '' : array();
 
                $data = array( Html::rawElement( 'label', array( 'for' => 'tagfilter' ), wfMsgExt( 'tag-filter', 'parseinline' ) ),
-                       Xml::input( 'tagfilter', 20, $selected ) );
+                       Xml::input( 'tagfilter', 20, $selected, array( 'class' => 'mw-tagfilter-input' ) ) );
 
                if ( !$fullForm ) {
                        return $data;
@@ -219,7 +219,7 @@ class ChangeTags {
                $html = implode( '&#160;', $data );
                $html .= "\n" . Xml::element( 'input', array( 'type' => 'submit', 'value' => wfMsg( 'tag-filter-submit' ) ) );
                $html .= "\n" . Html::hidden( 'title', $title->getPrefixedText() );
-               $html = Xml::tags( 'form', array( 'action' => $title->getLocalURL(), 'method' => 'get' ), $html );
+               $html = Xml::tags( 'form', array( 'action' => $title->getLocalURL(), 'class' => 'mw-tagfilter-form', 'method' => 'get' ), $html );
 
                return $html;
        }
index 48995a4..6788984 100644 (file)
@@ -1555,12 +1555,21 @@ $wgMessageCacheType = CACHE_ANYTHING;
  */
 $wgParserCacheType = CACHE_ANYTHING;
 
+/**
+ * The cache type for storing language conversion tables,
+ * which are used when parsing certain text and interface messages.
+ *
+ * For available types see $wgMainCacheType.
+ */
+$wgLanguageConverterCacheType = CACHE_ANYTHING;
+
 /**
  * Advanced object cache configuration.
  *
  * Use this to define the class names and constructor parameters which are used
  * for the various cache types. Custom cache types may be defined here and
- * referenced from $wgMainCacheType, $wgMessageCacheType or $wgParserCacheType.
+ * referenced from $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType,
+ * or $wgLanguageConverterCacheType.
  *
  * The format is an associative array where the key is a cache identifier, and
  * the value is an associative array of parameters. The "class" parameter is the
@@ -4257,7 +4266,7 @@ $wgParserTestFiles = array(
  * );
  */
 $wgParserTestRemote = false;
+
 /**
  * Allow running of javascript test suites via [[Special:JavaScriptTest]] (such as QUnit).
  */
index e7700b5..c75da5a 100644 (file)
@@ -270,7 +270,6 @@ class ErrorPageError extends MWException {
        function report() {
                global $wgOut;
 
-
                $wgOut->showErrorPage( $this->title, $this->msg, $this->params );
                $wgOut->output();
        }
@@ -373,7 +372,7 @@ class ThrottledError extends ErrorPageError {
        public function report(){
                global $wgOut;
                $wgOut->setStatusCode( 503 );
-               return parent::report();
+               parent::report();
        }
 }
 
index 48fbc47..73b07c3 100644 (file)
@@ -103,7 +103,7 @@ class WikiExporter {
         * the most recent version.
         */
        public function allPages() {
-               return $this->dumpFrom( '' );
+               $this->dumpFrom( '' );
        }
 
        /**
@@ -118,7 +118,7 @@ class WikiExporter {
                if ( $end ) {
                        $condition .= ' AND page_id < ' . intval( $end );
                }
-               return $this->dumpFrom( $condition );
+               $this->dumpFrom( $condition );
        }
 
        /**
@@ -133,14 +133,14 @@ class WikiExporter {
                if ( $end ) {
                        $condition .= ' AND rev_id < ' . intval( $end );
                }
-               return $this->dumpFrom( $condition );
+               $this->dumpFrom( $condition );
        }
 
        /**
         * @param $title Title
         */
        public function pageByTitle( $title ) {
-               return $this->dumpFrom(
+               $this->dumpFrom(
                        'page_namespace=' . $title->getNamespace() .
                        ' AND page_title=' . $this->db->addQuotes( $title->getDBkey() ) );
        }
@@ -150,7 +150,7 @@ class WikiExporter {
                if ( is_null( $title ) ) {
                        throw new MWException( "Can't export invalid title" );
                } else {
-                       return $this->pageByTitle( $title );
+                       $this->pageByTitle( $title );
                }
        }
 
@@ -161,7 +161,7 @@ class WikiExporter {
        }
 
        public function allLogs() {
-               return $this->dumpFrom( '' );
+               $this->dumpFrom( '' );
        }
 
        public function logsByRange( $start, $end ) {
@@ -169,7 +169,7 @@ class WikiExporter {
                if ( $end ) {
                        $condition .= ' AND log_id < ' . intval( $end );
                }
-               return $this->dumpFrom( $condition );
+               $this->dumpFrom( $condition );
        }
 
        # Generates the distinct list of authors of an article
index 595043a..0dfd48d 100644 (file)
@@ -29,12 +29,12 @@ class GitInfo {
         * full SHA-1 of the HEAD revision.
         */
        protected $viewers = array(
-               'https://gerrit.wikimedia.org/r/p/(.*)' => 'https://gerrit.wikimedia.org/r/gitweb?p=$1;h=%h',
-               'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)' => 'https://gerrit.wikimedia.org/r/gitweb?p=$1;h=%h',
+               'https://gerrit.wikimedia.org/r/p/(.*)' => 'https://gerrit.wikimedia.org/r/gitweb?p=$1;h=%H',
+               'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)' => 'https://gerrit.wikimedia.org/r/gitweb?p=$1;h=%H',
        );
 
        /**
-        * @param $dir The root directory of the repo where the .git dir can be found
+        * @param $dir string The root directory of the repo where the .git dir can be found
         */
        public function __construct( $dir ) {
                $this->basedir = "{$dir}/.git/";
@@ -55,7 +55,7 @@ class GitInfo {
        /**
         * Check if a string looks like a hex encoded SHA1 hash
         *
-        * @param $str The string to check
+        * @param $str string The string to check
         * @return bool Whether or not the string looks like a SHA1
         */
        public static function isSHA1( $str ) {
@@ -121,7 +121,7 @@ class GitInfo {
        /**
         * Get an URL to a web viewer link to the HEAD revision.
         *
-        * @return string|false string if an URL is available or false otherwise.
+        * @return string|bool string if an URL is available or false otherwise.
         */
        public function getHeadViewUrl() {
                $config = "{$this->basedir}/config";
@@ -152,7 +152,6 @@ class GitInfo {
                        $url .= '.git';
                }
                foreach( $this->viewers as $repo => $viewer ) {
-                       $m = array();
                        $pattern = '#^' . $repo . '$#';
                        if ( preg_match( $pattern, $url ) ) {
                                $viewerUrl = preg_replace( $pattern, $viewer, $url );
@@ -169,6 +168,7 @@ class GitInfo {
 
        /**
         * @see self::getHeadSHA1
+        * @return string
         */
        public static function headSHA1() {
                return self::repo()->getHeadSHA1();
@@ -176,9 +176,17 @@ class GitInfo {
 
        /**
         * @see self::getCurrentBranch
+        * @return string
         */
        public static function currentBranch() {
                return self::repo()->getCurrentBranch();
        }
 
+       /**
+        * @see self::getHeadViewUrl()
+        * @return bool|string
+        */
+       public static function headViewUrl() {
+               return self::repo()->getHeadViewUrl();
+       }
 }
index 7237b53..8764783 100644 (file)
@@ -3920,6 +3920,16 @@ function wfGetParserCacheStorage() {
        return ObjectCache::getInstance( $wgParserCacheType );
 }
 
+/**
+ * Get the cache object used by the language converter
+ *
+ * @return BagOStuff
+ */
+function wfGetLangConverterCacheStorage() {
+       global $wgLanguageConverterCacheType;
+       return ObjectCache::getInstance( $wgLanguageConverterCacheType );
+}
+
 /**
  * Call hook functions defined in $wgHooks
  *
index 74174b5..ebaac3c 100644 (file)
@@ -664,7 +664,7 @@ class HTMLForm extends ContextSource {
         * @param $msg String message key
         */
        public function setSubmitTextMsg( $msg ) {
-               return $this->setSubmitText( $this->msg( $msg )->escaped() );
+               return $this->setSubmitText( $this->msg( $msg )->text() );
        }
 
        /**
index 607d878..9ebc34c 100644 (file)
@@ -786,7 +786,9 @@ class WikiImporter {
                $origTitle = Title::newFromText( $workTitle );
 
                if( !is_null( $this->mTargetNamespace ) && !is_null( $origTitle ) ) {
-                       $title = Title::makeTitle( $this->mTargetNamespace,
+                       # makeTitleSafe, because $origTitle can have a interwiki (different setting of interwiki map)
+                       # and than dbKey can begin with a lowercase char
+                       $title = Title::makeTitleSafe( $this->mTargetNamespace,
                                $origTitle->getDBkey() );
                } else {
                        $title = Title::newFromText( $workTitle );
index 29df4b4..9700b90 100644 (file)
@@ -123,7 +123,7 @@ class PathRouter {
        /**
         * Add a new path pattern to the path router
         *
-        * @param $path string The path pattern to add
+        * @param $path string|array The path pattern to add
         * @param $params array The params for this path pattern
         * @param $options array The options for this path pattern
         */
@@ -348,4 +348,4 @@ class PathRouterPatternReplacer {
                }
        }
 
-}
\ No newline at end of file
+}
index fd35a60..68a715f 100644 (file)
@@ -448,6 +448,7 @@ wfProfileIn( $fname . '-memcached' );
 $wgMemc = wfGetMainCache();
 $messageMemc = wfGetMessageCacheStorage();
 $parserMemc = wfGetParserCacheStorage();
+$wgLangConvMemc = wfGetLangConverterCacheStorage();
 
 wfDebug( 'CACHES: ' . get_class( $wgMemc ) . '[main] ' .
        get_class( $messageMemc ) . '[message] ' .
@@ -467,11 +468,9 @@ if ( !wfIniGetBool( 'session.auto_start' ) ) {
 
 if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
        if ( $wgRequest->checkSessionCookie() || isset( $_COOKIE[$wgCookiePrefix . 'Token'] ) ) {
-               wfIncrStats( 'request_with_session' );
                wfSetupSession();
                $wgSessionStarted = true;
        } else {
-               wfIncrStats( 'request_without_session' );
                $wgSessionStarted = false;
        }
 }
index 769adb9..1876d75 100644 (file)
@@ -317,6 +317,10 @@ class Title {
         * @return Title the new object, or NULL on an error
         */
        public static function makeTitleSafe( $ns, $title, $fragment = '', $interwiki = '' ) {
+               if ( !MWNamespace::exists( $ns ) ) {
+                       return null;
+               }
+
                $t = new Title();
                $t->mDbkeyform = Title::makeName( $ns, $title, $fragment, $interwiki );
                if ( $t->secureAndSplit() ) {
index dbc1ac0..c49d232 100644 (file)
@@ -611,12 +611,13 @@ class HistoryPager extends ReverseChronologicalPager {
                        : 0;
                $sDiff = ChangesList::showCharacterDifference( $prevSize, $rev->getSize() );
                $fSize = Linker::formatRevisionSize($rev->getSize());
-               $s .= " . . $fSize $sDiff . . ";
+               $s .= " . . $fSize $sDiff";
 
-               $s .= Linker::revComment( $rev, false, true );
+               # Text following the character difference is added just before running hooks
+               $s2 = Linker::revComment( $rev, false, true );
 
                if ( $notificationtimestamp && ( $row->rev_timestamp >= $notificationtimestamp ) ) {
-                       $s .= ' <span class="updatedmarker">' .  $this->msg( 'updatedmarker' )->escaped() . '</span>';
+                       $s2 .= ' <span class="updatedmarker">' .  $this->msg( 'updatedmarker' )->escaped() . '</span>';
                }
 
                $tools = array();
@@ -653,13 +654,20 @@ class HistoryPager extends ReverseChronologicalPager {
                }
 
                if ( $tools ) {
-                       $s .= ' '. $this->msg( 'parentheses' )->rawParams( $lang->pipeList( $tools ) )->escaped();
+                       $s2 .= ' '. $this->msg( 'parentheses' )->rawParams( $lang->pipeList( $tools ) )->escaped();
                }
 
                # Tags
                list( $tagSummary, $newClasses ) = ChangeTags::formatSummaryRow( $row->ts_tags, 'history' );
                $classes = array_merge( $classes, $newClasses );
-               $s .= " $tagSummary";
+               if ( $tagSummary !== '' ) {
+                       $s2 .= " $tagSummary";
+               }
+
+               # Include separator between character difference and following text
+               if ( $s2 !== '' ) {
+                       $s .= " . . $s2";
+               }
 
                wfRunHooks( 'PageHistoryLineEnding', array( $this, &$row , &$s, &$classes ) );
 
index 4bb94c4..87f0967 100644 (file)
@@ -32,8 +32,8 @@ class ApiComparePages extends ApiBase {
        public function execute() {
                $params = $this->extractRequestParams();
 
-               $rev1 = $this->revisionOrTitle( $params['fromrev'], $params['fromtitle'] );
-               $rev2 = $this->revisionOrTitle( $params['torev'], $params['totitle'] );
+               $rev1 = $this->revisionOrTitleOrId( $params['fromrev'], $params['fromtitle'], $params['fromid'] );
+               $rev2 = $this->revisionOrTitleOrId( $params['torev'], $params['totitle'], $params['toid'] );
 
                $de = new DifferenceEngine( $this->getContext(),
                        $rev1,
@@ -46,10 +46,16 @@ class ApiComparePages extends ApiBase {
                if ( isset( $params['fromtitle'] ) ) {
                        $vals['fromtitle'] = $params['fromtitle'];
                }
+               if ( isset( $params['fromid'] ) ) {
+                       $vals['fromid'] = $params['fromid'];
+               }
                $vals['fromrevid'] = $rev1;
                if ( isset( $params['totitle'] ) ) {
                        $vals['totitle'] = $params['totitle'];
                }
+               if ( isset( $params['toid'] ) ) {
+                       $vals['toid'] = $params['toid'];
+               }
                $vals['torevid'] = $rev2;
 
                $difftext = $de->getDiffBody();
@@ -67,9 +73,10 @@ class ApiComparePages extends ApiBase {
        /**
         * @param $revision int
         * @param $titleText string
+        * @param $titleId int
         * @return int
         */
-       private function revisionOrTitle( $revision, $titleText ) {
+       private function revisionOrTitleOrId( $revision, $titleText, $titleId ) {
                if( $revision ){
                        return $revision;
                } elseif( $titleText ) {
@@ -78,17 +85,29 @@ class ApiComparePages extends ApiBase {
                                $this->dieUsageMsg( array( 'invalidtitle', $titleText ) );
                        }
                        return $title->getLatestRevID();
+               } elseif ( $titleId ) {
+                       $title = Title::newFromID( $titleId );
+                       if( !$title ) {
+                               $this->dieUsageMsg( array( 'nosuchpageid', $titleId ) );
+                       }
+                       return $title->getLatestRevID();
                }
-               $this->dieUsage( 'inputneeded', 'A title or a revision number is needed for both the from and the to parameters' );
+               $this->dieUsage( 'inputneeded', 'A title, a page ID, or a revision number is needed for both the from and the to parameters' );
        }
 
        public function getAllowedParams() {
                return array(
                        'fromtitle' => null,
+                       'fromid' => array(
+                               ApiBase::PARAM_TYPE => 'integer'
+                       ),
                        'fromrev' => array(
                                ApiBase::PARAM_TYPE => 'integer'
                        ),
                        'totitle' => null,
+                       'toid' => array(
+                               ApiBase::PARAM_TYPE => 'integer'
+                       ),
                        'torev' => array(
                                ApiBase::PARAM_TYPE => 'integer'
                        ),
@@ -98,15 +117,17 @@ class ApiComparePages extends ApiBase {
        public function getParamDescription() {
                return array(
                        'fromtitle' => 'First title to compare',
+                       'fromid' => 'First page ID to compare',
                        'fromrev' => 'First revision to compare',
                        'totitle' => 'Second title to compare',
+                       'toid' => 'Second page ID to compare',
                        'torev' => 'Second revision to compare',
                );
        }
        public function getDescription() {
                return array(
                        'Get the difference between 2 pages',
-                       'You must pass a revision number or a page title for each part (1 and 2)'
+                       'You must pass a revision number or a page title or a page ID id for each part (1 and 2)'
                );
        }
 
@@ -114,6 +135,7 @@ class ApiComparePages extends ApiBase {
                return array_merge( parent::getPossibleErrors(), array(
                        array( 'code' => 'inputneeded', 'info' => 'A title or a revision is needed' ),
                        array( 'invalidtitle', 'title' ),
+                       array( 'nosuchpageid', 'pageid' ),
                        array( 'code' => 'baddiff', 'info' => 'The diff cannot be retrieved. Maybe one or both revisions do not exist or you do not have permission to view them.' ),
                ) );
        }
index 2105b81..8c035dc 100644 (file)
@@ -595,8 +595,14 @@ class ApiMain extends ApiBase {
                $moduleParams = $module->extractRequestParams();
 
                // Die if token required, but not provided (unless there is a gettoken parameter)
+               if ( isset( $moduleParams['gettoken'] ) ) {
+                       $gettoken = $moduleParams['gettoken'];
+               } else {
+                       $gettoken = false;
+               }
+
                $salt = $module->getTokenSalt();
-               if ( $salt !== false && isset( $moduleParams['gettoken'] ) && !$moduleParams['gettoken'] ) {
+               if ( $salt !== false && !$gettoken ) {
                        if ( !isset( $moduleParams['token'] ) ) {
                                $this->dieUsageMsg( array( 'missingparam', 'token' ) );
                        } else {
index 1c1f155..243d1ac 100644 (file)
@@ -89,12 +89,13 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
                                $this->dieUsage( "Invalid continue param. You should pass the " .
                                        "original value returned by the previous query", "_badcontinue" );
                        }
+                       $op = $params['dir'] == 'descending' ? '<' : '>';
                        $clfrom = intval( $cont[0] );
-                       $clto = $this->getDB()->strencode( $this->titleToKey( $cont[1] ) );
+                       $clto = $this->getDB()->addQuotes( $this->titleToKey( $cont[1] ) );
                        $this->addWhere(
-                               "cl_from > $clfrom OR " .
+                               "cl_from $op $clfrom OR " .
                                "(cl_from = $clfrom AND " .
-                               "cl_to >= '$clto')"
+                               "cl_to $op= $clto)"
                        );
                }
 
index 4b19b7e..fb1237f 100644 (file)
@@ -107,7 +107,7 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
                        $this->addWhereFld( 'page_namespace', $params['namespace'] );
                }
 
-               $dir = $params['dir'] == 'asc' ? 'newer' : 'older';
+               $dir = in_array( $params['dir'], array( 'asc', 'ascending', 'newer' ) ) ? 'newer' : 'older';
 
                if ( $params['sort'] == 'timestamp' ) {
                        $this->addWhereRange( 'cl_timestamp',
@@ -313,10 +313,15 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
                                )
                        ),
                        'dir' => array(
-                               ApiBase::PARAM_DFLT => 'asc',
+                               ApiBase::PARAM_DFLT => 'ascending',
                                ApiBase::PARAM_TYPE => array(
                                        'asc',
-                                       'desc'
+                                       'desc',
+                                       // Normalising with other modules
+                                       'ascending',
+                                       'descending',
+                                       'newer',
+                                       'older',
                                )
                        ),
                        'start' => array(
index 0a0cc93..397bdc4 100644 (file)
@@ -334,8 +334,8 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
 
        public function getParamDescription() {
                return array(
-                       'start' => 'The timestamp to start enumerating from (1,2)',
-                       'end' => 'The timestamp to stop enumerating at (1,2)',
+                       'start' => 'The timestamp to start enumerating from (1, 2)',
+                       'end' => 'The timestamp to stop enumerating at (1, 2)',
                        'dir' => $this->getDirectionDescription( $this->getModulePrefix(), ' (1, 3)' ),
                        'from' => 'Start listing at this title (3)',
                        'to' => 'Stop listing at this title (3)',
index beca587..0132d67 100644 (file)
@@ -80,17 +80,27 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
                                $this->dieUsage( 'Invalid continue param. You should pass the ' .
                                        'original value returned by the previous query', '_badcontinue' );
                        }
-                       $orig = $this->getDB()->strencode( $this->titleTokey( $cont[0] ) );
-                       $dup = $this->getDB()->strencode( $this->titleToKey( $cont[1] ) );
+                       $op = $params['dir'] == 'descending' ? '<' : '>';
+                       $db = $this->getDB();
+                       $orig = $db->addQuotes( $this->titleTokey( $cont[0] ) );
+                       $dup = $db->addQuotes( $this->titleToKey( $cont[1] ) );
                        $this->addWhere(
-                               "i1.img_name > '$orig' OR " .
-                               "(i1.img_name = '$orig' AND " .
-                               "i2.img_name >= '$dup')"
+                               "i1.img_name $op $orig OR " .
+                               "(i1.img_name = $orig AND " .
+                               "i2.img_name $op= $dup)"
                        );
                }
 
                $dir = ( $params['dir'] == 'descending' ? ' DESC' : '' );
-               $this->addOption( 'ORDER BY', 'i1.img_name' . $dir );
+               // Don't order by i1.img_name if it's constant in the WHERE clause
+               if ( count( $this->getPageSet()->getGoodTitles() ) == 1 ) {
+                       $this->addOption( 'ORDER BY', 'i2.img_name' . $dir );
+               } else {
+                       $this->addOption( 'ORDER BY', array(
+                                       'i1.img_name' . $dir,
+                                       'i2.img_name' . $dir
+                       ));
+               }
                $this->addOption( 'LIMIT', $params['limit'] + 1 );
 
                $res = $this->select( __METHOD__ );
index 13256ad..bc42fe0 100644 (file)
@@ -62,15 +62,17 @@ class ApiQueryIWLinks extends ApiQueryBase {
                                $this->dieUsage( 'Invalid continue param. You should pass the ' .
                                        'original value returned by the previous query', '_badcontinue' );
                        }
+                       $op = $params['dir'] == 'descending' ? '<' : '>';
+                       $db = $this->getDB();
                        $iwlfrom = intval( $cont[0] );
-                       $iwlprefix = $this->getDB()->strencode( $cont[1] );
-                       $iwltitle = $this->getDB()->strencode( $this->titleToKey( $cont[2] ) );
+                       $iwlprefix = $db->addQuotes( $cont[1] );
+                       $iwltitle = $db->addQuotes( $this->titleToKey( $cont[2] ) );
                        $this->addWhere(
-                               "iwl_from > $iwlfrom OR " .
+                               "iwl_from $op $iwlfrom OR " .
                                "(iwl_from = $iwlfrom AND " .
-                               "(iwl_prefix > '$iwlprefix' OR " .
-                               "(iwl_prefix = '$iwlprefix' AND " .
-                               "iwl_title >= '$iwltitle')))"
+                               "(iwl_prefix $op $iwlprefix OR " .
+                               "(iwl_prefix = $iwlprefix AND " .
+                               "iwl_title $op= $iwltitle)))"
                        );
                }
 
index f03b287..64d7ff4 100644 (file)
@@ -65,12 +65,13 @@ class ApiQueryImages extends ApiQueryGeneratorBase {
                                $this->dieUsage( 'Invalid continue param. You should pass the ' .
                                        'original value returned by the previous query', '_badcontinue' );
                        }
+                       $op = $params['dir'] == 'descending' ? '<' : '>';
                        $ilfrom = intval( $cont[0] );
-                       $ilto = $this->getDB()->strencode( $this->titleToKey( $cont[1] ) );
+                       $ilto = $this->getDB()->addQuotes( $this->titleToKey( $cont[1] ) );
                        $this->addWhere(
-                               "il_from > $ilfrom OR " .
+                               "il_from $op $ilfrom OR " .
                                "(il_from = $ilfrom AND " .
-                               "il_to >= '$ilto')"
+                               "il_to $op= $ilto)"
                        );
                }
 
index fdba846..d505d72 100644 (file)
@@ -60,12 +60,13 @@ class ApiQueryLangLinks extends ApiQueryBase {
                                $this->dieUsage( 'Invalid continue param. You should pass the ' .
                                        'original value returned by the previous query', '_badcontinue' );
                        }
+                       $op = $params['dir'] == 'descending' ? '<' : '>';
                        $llfrom = intval( $cont[0] );
-                       $lllang = $this->getDB()->strencode( $cont[1] );
+                       $lllang = $this->getDB()->addQuotes( $cont[1] );
                        $this->addWhere(
-                               "ll_from > $llfrom OR " .
+                               "ll_from $op $llfrom OR " .
                                "(ll_from = $llfrom AND " .
-                               "ll_lang >= '$lllang')"
+                               "ll_lang $op= $lllang)"
                        );
                }
 
index 0377edd..6e6da53 100644 (file)
@@ -116,15 +116,16 @@ class ApiQueryLinks extends ApiQueryGeneratorBase {
                                $this->dieUsage( 'Invalid continue param. You should pass the ' .
                                        'original value returned by the previous query', '_badcontinue' );
                        }
+                       $op = $params['dir'] == 'descending' ? '<' : '>';
                        $plfrom = intval( $cont[0] );
                        $plns = intval( $cont[1] );
-                       $pltitle = $this->getDB()->strencode( $this->titleToKey( $cont[2] ) );
+                       $pltitle = $this->getDB()->addQuotes( $this->titleToKey( $cont[2] ) );
                        $this->addWhere(
-                               "{$this->prefix}_from > $plfrom OR " .
+                               "{$this->prefix}_from $op $plfrom OR " .
                                "({$this->prefix}_from = $plfrom AND " .
-                               "({$this->prefix}_namespace > $plns OR " .
+                               "({$this->prefix}_namespace $op $plns OR " .
                                "({$this->prefix}_namespace = $plns AND " .
-                               "{$this->prefix}_title >= '$pltitle')))"
+                               "{$this->prefix}_title $op= $pltitle)))"
                        );
                }
 
index 67165b9..5040c70 100644 (file)
@@ -187,15 +187,28 @@ class ApiUpload extends ApiBase {
                                $this->dieUsage( $status->getWikiText(), 'stashfailed' );
                                return ;
                        }
-                       $result['filekey'] = $this->mParams['filekey'];
+
                        // Check we added the last chunk: 
                        if( $this->mParams['offset'] + $chunkSize == $this->mParams['filesize'] ) {
                                $status = $this->mUpload->concatenateChunks();
+
                                if ( !$status->isGood() ) {
                                        $this->dieUsage( $status->getWikiText(), 'stashfailed' );
                                        return ;
                                }
+
+                               // We have a new filekey for the fully concatenated file.
+                               $result['filekey'] =  $this->mUpload->getLocalFile()->getFileKey();
+
+                               // Remove chunk from stash. (Checks against user ownership of chunks.)
+                               $this->mUpload->stash->removeFile( $this->mParams['filekey'] );
+
                                $result['result'] = 'Success';
+
+                       } else {
+
+                               // Continue passing through the filekey for adding further chunks.
+                               $result['filekey'] = $this->mParams['filekey'];
                        }
                }
                $result['offset'] = $this->mParams['offset'] + $chunkSize;
index 342f8db..2cc1061 100644 (file)
@@ -37,13 +37,17 @@ class GenderCache {
 
        /**
         * Returns the gender for given username.
-        * @param $username String: username
+        * @param $username String or User: username
         * @param $caller String: the calling method
         * @return String
         */
        public function getGenderOf( $username, $caller = '' ) {
                global $wgUser;
 
+               if( $username instanceof User ) {
+                       $username = $username->getName();
+               }
+
                $username = strtr( $username, '_', ' ' );
                if ( !isset( $this->cache[$username] ) ) {
 
index 6e0a145..fc9c65a 100644 (file)
@@ -7,7 +7,8 @@
  */
 
 class PostgresField implements Field {
-       private $name, $tablename, $type, $nullable, $max_length, $deferred, $deferrable, $conname;
+       private $name, $tablename, $type, $nullable, $max_length, $deferred, $deferrable, $conname,
+               $has_default, $default;
 
        /**
         * @param $db DatabaseBase
@@ -19,6 +20,8 @@ class PostgresField implements Field {
                $q = <<<SQL
 SELECT
  attnotnull, attlen, conname AS conname,
+ atthasdef,
+ adsrc,
  COALESCE(condeferred, 'f') AS deferred,
  COALESCE(condeferrable, 'f') AS deferrable,
  CASE WHEN typname = 'int2' THEN 'smallint'
@@ -31,6 +34,7 @@ JOIN pg_namespace n ON (n.oid = c.relnamespace)
 JOIN pg_attribute a ON (a.attrelid = c.oid)
 JOIN pg_type t ON (t.oid = a.atttypid)
 LEFT JOIN pg_constraint o ON (o.conrelid = c.oid AND a.attnum = ANY(o.conkey) AND o.contype = 'f')
+LEFT JOIN pg_attrdef d on c.oid=d.adrelid and a.attnum=d.adnum
 WHERE relkind = 'r'
 AND nspname=%s
 AND relname=%s
@@ -58,6 +62,8 @@ SQL;
                $n->deferrable = ( $row->deferrable == 't' );
                $n->deferred = ( $row->deferred == 't' );
                $n->conname = $row->conname;
+               $n->has_default = ( $row->atthasdef === 't' );
+               $n->default = $row->adsrc;
                return $n;
        }
 
@@ -92,6 +98,16 @@ SQL;
        function conname() {
                return $this->conname;
        }
+       /**
+        * @since 1.19
+        */
+       function defaultValue() {
+               if( $this->has_default ) {
+                       return $this->default;
+               } else {
+                       return false;
+               }
+       }
 
 }
 
@@ -99,14 +115,14 @@ SQL;
  * Used to debug transaction processing
  * Only used if $wgDebugDBTransactions is true
  *
- * @since 1.20
+ * @since 1.19
  * @ingroup Database
  */
 class PostgresTransactionState {
 
        static $WATCHED = array(
                array(
-                       "desc" => "Connection state changed from %s -> %s\n",  
+                       "desc" => "Connection state changed from %s -> %s\n",
                        "states" => array(
                                PGSQL_CONNECTION_OK       => "OK",
                                PGSQL_CONNECTION_BAD      => "BAD"
@@ -131,7 +147,7 @@ class PostgresTransactionState {
        }
 
        public function update() {
-               $this->mNewState = array( 
+               $this->mNewState = array(
                        pg_connection_status( $this->mConn ),
                        pg_transaction_status( $this->mConn )
                );
@@ -166,7 +182,7 @@ class PostgresTransactionState {
        }
 
        protected function log_changed( $old, $new, $watched ) {
-               wfDebug(sprintf($watched["desc"], 
+               wfDebug(sprintf($watched["desc"],
                        $this->describe_changed( $old, $watched["states"] ),
                        $this->describe_changed( $new, $watched["states"] ))
                );
@@ -319,16 +335,48 @@ class DatabasePostgres extends DatabaseBase {
                        $sql = mb_convert_encoding( $sql, 'UTF-8' );
                }
                $this->mTransactionState->check();
-               $this->mLastResult = pg_query( $this->mConn, $sql );
+               if( pg_send_query( $this->mConn, $sql ) === false ) {
+                       throw new DBUnexpectedError( $this, "Unable to post new query to PostgreSQL\n" );
+               }
+               $this->mLastResult = pg_get_result( $this->mConn );
                $this->mTransactionState->check();
                $this->mAffectedRows = null;
+               if ( pg_result_error( $this->mLastResult ) ) {
+                       return false;
+               }
                return $this->mLastResult;
        }
 
+       protected function dumpError () {
+               $diags = array( PGSQL_DIAG_SEVERITY,
+                               PGSQL_DIAG_SQLSTATE,
+                               PGSQL_DIAG_MESSAGE_PRIMARY,
+                               PGSQL_DIAG_MESSAGE_DETAIL,
+                               PGSQL_DIAG_MESSAGE_HINT,
+                               PGSQL_DIAG_STATEMENT_POSITION,
+                               PGSQL_DIAG_INTERNAL_POSITION,
+                               PGSQL_DIAG_INTERNAL_QUERY,
+                               PGSQL_DIAG_CONTEXT,
+                               PGSQL_DIAG_SOURCE_FILE,
+                               PGSQL_DIAG_SOURCE_LINE,
+                               PGSQL_DIAG_SOURCE_FUNCTION );
+               foreach ( $diags as $d ) {
+                       wfDebug( sprintf("PgSQL ERROR(%d): %s\n", $d, pg_result_error_field( $this->mLastResult, $d ) ) );
+               }
+       }
+
        function reportQueryError( $error, $errno, $sql, $fname, $tempIgnore = false ) {
                /* Transaction stays in the ERROR state until rolledback */
+               if ( $tempIgnore ) {
+                       /* Check for constraint violation */
+                       if ( $errno === '23505' ) {
+                               parent::reportQueryError( $error, $errno, $sql, $fname, $tempIgnore );
+                               return;
+                       }
+               }
+               /* Don't ignore serious errors */
                $this->rollback( __METHOD__ );
-               parent::reportQueryError( $error, $errno, $sql, $fname, $tempIgnore );
+               parent::reportQueryError( $error, $errno, $sql, $fname, false );
        }
 
 
@@ -422,13 +470,21 @@ class DatabasePostgres extends DatabaseBase {
 
        function lastError() {
                if ( $this->mConn ) {
-                       return pg_last_error();
+                       if ( $this->mLastResult ) {
+                               return pg_result_error( $this->mLastResult );
+                       } else {
+                               return pg_last_error();
+                       }
                } else {
                        return 'No database connection';
                }
        }
        function lastErrno() {
-               return pg_last_error() ? 1 : 0;
+               if ( $this->mLastResult ) {
+                       return pg_result_error_field( $this->mLastResult, PGSQL_DIAG_SQLSTATE );
+               } else {
+                       return false;
+               }
        }
 
        function affectedRows() {
@@ -483,6 +539,68 @@ class DatabasePostgres extends DatabaseBase {
                return false;
        }
 
+       /**
+        * Returns is of attributes used in index
+        *
+        * @since 1.19
+        * @return Array
+        */
+       function indexAttributes ( $index, $schema = false ) {
+               if ( $schema === false )
+                       $schema = $this->getCoreSchema();
+               /*
+                * A subquery would be not needed if we didn't care about the order
+                * of attributes, but we do
+                */
+               $sql = <<<__INDEXATTR__
+
+                       SELECT opcname,
+                               attname,
+                               i.indoption[s.g] as option,
+                               pg_am.amname
+                       FROM
+                               (SELECT generate_subscripts(isub.indkey, 1) AS g
+                                       FROM
+                                               pg_index isub
+                                       JOIN pg_class cis
+                                               ON cis.oid=isub.indexrelid
+                                       JOIN pg_namespace ns
+                                               ON cis.relnamespace = ns.oid
+                                       WHERE cis.relname='$index' AND ns.nspname='$schema') AS s,
+                               pg_attribute,
+                               pg_opclass opcls,
+                               pg_am,
+                               pg_class ci
+                               JOIN pg_index i
+                                       ON ci.oid=i.indexrelid
+                               JOIN pg_class ct
+                                       ON ct.oid = i.indrelid
+                               JOIN pg_namespace n
+                                       ON ci.relnamespace = n.oid
+                               WHERE
+                                       ci.relname='$index' AND n.nspname='$schema'
+                                       AND     attrelid = ct.oid
+                                       AND     i.indkey[s.g] = attnum
+                                       AND     i.indclass[s.g] = opcls.oid
+                                       AND     pg_am.oid = opcls.opcmethod
+__INDEXATTR__;
+               $res = $this->query($sql, __METHOD__);
+               $a = array();
+               if ( $res ) {
+                       foreach ( $res as $row ) {
+                               $a[] = array(
+                                       $row->attname,
+                                       $row->opcname,
+                                       $row->amname,
+                                       $row->option);
+                       }
+               } else {
+                       return null;
+               }
+               return $a;
+       }
+
+
        function indexUnique( $table, $index, $fname = 'DatabasePostgres::indexUnique' ) {
                $sql = "SELECT indexname FROM pg_indexes WHERE tablename='{$table}'".
                        " AND indexdef LIKE 'CREATE UNIQUE%(" .
@@ -795,7 +913,7 @@ class DatabasePostgres extends DatabaseBase {
                return wfTimestamp( TS_POSTGRES, $ts );
        }
 
-       /* 
+       /*
         * Posted by cc[plus]php[at]c2se[dot]com on 25-Mar-2009 09:12
         * to http://www.php.net/manual/en/ref.pgsql.php
         *
@@ -806,7 +924,7 @@ class DatabasePostgres extends DatabaseBase {
         *
         * This should really be handled by PHP PostgreSQL module
         *
-        * @since 1.20
+        * @since 1.19
         * @param $text   string: postgreql array returned in a text form like {a,b}
         * @param $output string
         * @param $limit  int
@@ -826,8 +944,8 @@ class DatabasePostgres extends DatabaseBase {
                                preg_match( "/(\\{?\"([^\"\\\\]|\\\\.)*\"|[^,{}]+)+([,}]+)/",
                                        $text, $match, 0, $offset );
                                $offset += strlen( $match[0] );
-                               $output[] = ( '"' != $match[1]{0} 
-                                               ? $match[1] 
+                               $output[] = ( '"' != $match[1]{0}
+                                               ? $match[1]
                                                : stripcslashes( substr( $match[1], 1, -1 ) ) );
                                if ( '},' == $match[3] ) {
                                        return $output;
@@ -858,7 +976,7 @@ class DatabasePostgres extends DatabaseBase {
         * Return current schema (executes SELECT current_schema())
         * Needs transaction
         *
-        * @since 1.20
+        * @since 1.19
         * @return string return default schema for the current session
         */
        function getCurrentSchema() {
@@ -874,7 +992,7 @@ class DatabasePostgres extends DatabaseBase {
         *
         * @seealso getSearchPath()
         * @seealso setSearchPath()
-        * @since 1.20
+        * @since 1.19
         * @return array list of actual schemas for the current sesson
         */
        function getSchemas() {
@@ -891,7 +1009,7 @@ class DatabasePostgres extends DatabaseBase {
         * (like "$user").
         * Needs transaction
         *
-        * @since 1.20
+        * @since 1.19
         * @return array how to search for table names schemas for the current user
         */
        function getSearchPath() {
@@ -904,7 +1022,7 @@ class DatabasePostgres extends DatabaseBase {
        /**
         * Update search_path, values should already be sanitized
         * Values may contain magic keywords like "$user"
-        * @since 1.20
+        * @since 1.19
         *
         * @param $search_path array list of schemas to be searched by default
         */
@@ -922,8 +1040,8 @@ class DatabasePostgres extends DatabaseBase {
         *
         * This will be also called by the installer after the schema is created
         *
-        * @since 1.20
-        * @param desired_schema string 
+        * @since 1.19
+        * @param desired_schema string
         */
        function determineCoreSchema( $desired_schema ) {
                $this->begin( __METHOD__ );
@@ -933,14 +1051,14 @@ class DatabasePostgres extends DatabaseBase {
                                wfDebug("Schema \"" . $desired_schema . "\" already in the search path\n");
                        } else {
                                /**
-                                * Append our schema (e.g. 'mediawiki') in front
+                                * Prepend our schema (e.g. 'mediawiki') in front
                                 * of the search path
-                                * Fixes bug 15816 
+                                * Fixes bug 15816
                                 */
                                $search_path = $this->getSearchPath();
-                               array_unshift( $search_path, 
+                               array_unshift( $search_path,
                                        $this->addIdentifierQuotes( $desired_schema ));
-                               $this->setSearchPath( $search_path );   
+                               $this->setSearchPath( $search_path );
                                $this->mCoreSchema = $desired_schema;
                                wfDebug("Schema \"" . $desired_schema . "\" added to the search path\n");
                        }
@@ -955,7 +1073,7 @@ class DatabasePostgres extends DatabaseBase {
        /**
         * Return schema name fore core MediaWiki tables
         *
-        * @since 1.20
+        * @since 1.19
         * @return string core schema name
         */
        function getCoreSchema() {
index 418eede..10905f2 100644 (file)
@@ -260,6 +260,7 @@ class MWDebug {
                        'phpVersion' => PHP_VERSION,
                        'gitRevision' => GitInfo::headSHA1(),
                        'gitBranch' => GitInfo::currentBranch(),
+                       'gitViewUrl' => GitInfo::headViewUrl(),
                        'time' => microtime( true ) - $wgRequestTime,
                        'log' => self::$log,
                        'debugLog' => self::$debug,
index d121454..dcc9610 100644 (file)
@@ -483,13 +483,26 @@ class FileRepo {
         * Get a relative path including trailing slash, e.g. f/fa/
         * If the repo is not hashed, returns an empty string
         *
-        * @param $name string
+        * @param $name string Name of file
         * @return string
         */
        public function getHashPath( $name ) {
                return self::getHashPathForLevel( $name, $this->hashLevels );
        }
 
+       /**
+        * Get a relative path including trailing slash, e.g. f/fa/
+        * If the repo is not hashed, returns an empty string
+        *
+        * @param $suffix string Basename of file from FileRepo::storeTemp()
+        * @return string
+        */
+       public function getTempHashPath( $suffix ) {
+               $parts = explode( '!', $suffix, 2 ); // format is <timestamp>!<name> or just <name>
+               $name = isset( $parts[1] ) ? $parts[1] : $suffix; // hash path is not based on timestamp
+               return self::getHashPathForLevel( $name, $this->hashLevels );
+       }
+
        /**
         * @param $name
         * @param $levels
@@ -1404,6 +1417,36 @@ class FileRepo {
                return call_user_func_array( 'wfMemcKey', $args );
        }
 
+       /**
+        * Get an temporary FileRepo associated with this repo.
+        * Files will be created in the temp zone of this repo and
+        * thumbnails in a /temp subdirectory in thumb zone of this repo.
+        * It will have the same backend as this repo.
+        *
+        * @return TempFileRepo
+        */
+       public function getTempRepo() {
+               return new TempFileRepo( array(
+                       'name'      => "{$this->name}-temp",
+                       'backend'   => $this->backend,
+                       'zones'     => array(
+                               'public' => array(
+                                       'container' => $this->zones['temp']['container'],
+                                       'directory' => $this->zones['temp']['directory']
+                               ),
+                               'thumb'  => array(
+                                       'container' => $this->zones['thumb']['container'],
+                                       'directory' => ( $this->zones['thumb']['directory'] == '' )
+                                               ? 'temp'
+                                               : $this->zones['thumb']['directory'] . '/temp'
+                               )
+                       ),
+                       'url'        => $this->getZoneUrl( 'temp' ),
+                       'thumbUrl'   => $this->getZoneUrl( 'thumb' ) . '/temp',
+                       'hashLevels' => $this->hashLevels // performance
+               ) );
+       }
+
        /**
         * Get an UploadStash associated with this repo.
         *
@@ -1422,3 +1465,12 @@ class FileRepo {
         */
        protected function assertWritableRepo() {}
 }
+
+/**
+ * FileRepo for temporary files created via FileRepo::getTempRepo()
+ */
+class TempFileRepo extends FileRepo {
+       public function getTempRepo() {
+               throw new MWException( "Cannot get a temp repo from a temp repo." );
+       }
+}
index 8c849ca..55dedc1 100644 (file)
@@ -579,7 +579,7 @@ abstract class FileBackendStore extends FileBackend {
                wfProfileIn( __METHOD__ . '-' . $this->name );
                $path = $params['src'];
                if ( isset( $this->expensiveCache[$path]['localRef'] ) ) {
-                       $this->pingExpensiveCache();
+                       $this->pingExpensiveCache( $path );
                        wfProfileOut( __METHOD__ . '-' . $this->name );
                        wfProfileOut( __METHOD__ );
                        return $this->expensiveCache[$path]['localRef'];
index 6ff0af9..fee4b2a 100644 (file)
@@ -272,6 +272,7 @@ abstract class DatabaseUpdater {
        public function doUpdates( $what = array( 'core', 'extensions', 'purge', 'stats' ) ) {
                global $wgLocalisationCacheConf, $wgVersion;
 
+               $this->db->begin( __METHOD__ );
                $what = array_flip( $what );
                if ( isset( $what['core'] ) ) {
                        $this->runUpdates( $this->getCoreUpdateList(), false );
@@ -294,6 +295,7 @@ abstract class DatabaseUpdater {
                                $this->rebuildLocalisationCache();
                        }
                }
+               $this->db->commit( __METHOD__ );
        }
 
        /**
index cd83c46..5144686 100644 (file)
@@ -541,7 +541,7 @@ class PostgresInstaller extends DatabaseInstaller {
                 */
                $conn = $status->value;
 
-               if( $conn->tableExists( 'user' ) ) {
+               if( $conn->tableExists( 'archive' ) ) {
                        $status->warning( 'config-install-tables-exist' );
                        $this->enableLB();
                        return $status;
index f5f8c41..0d27c5a 100644 (file)
@@ -29,23 +29,29 @@ class PostgresUpdater extends DatabaseUpdater {
                return array(
                        # rename tables 1.7.3
                        # r15791 Change reserved word table names "user" and "text"
-                       array( 'renameTable', 'user', 'mwuser'),
-                       array( 'renameTable', 'text', 'pagecontent'),
-
-                       # new sequences
-                       array( 'addSequence', 'logging_log_id_seq'          ),
-                       array( 'addSequence', 'page_restrictions_pr_id_seq' ),
+                       array( 'renameTable', 'user', 'mwuser' ),
+                       array( 'renameTable', 'text', 'pagecontent' ),
+                       array( 'renameIndex', 'mwuser', 'user_pkey', 'mwuser_pkey'),
+                       array( 'renameIndex', 'mwuser', 'user_user_name_key', 'mwuser_user_name_key' ),
+                       array( 'renameIndex', 'pagecontent','text_pkey', 'pagecontent_pkey' ),
 
                        # renamed sequences
                        array( 'renameSequence', 'ipblocks_ipb_id_val', 'ipblocks_ipb_id_seq'         ),
                        array( 'renameSequence', 'rev_rev_id_val',      'revision_rev_id_seq'         ),
                        array( 'renameSequence', 'text_old_id_val',     'text_old_id_seq'             ),
-                       array( 'renameSequence', 'category_id_seq',     'category_cat_id_seq'         ),
                        array( 'renameSequence', 'rc_rc_id_seq',        'recentchanges_rc_id_seq'     ),
                        array( 'renameSequence', 'log_log_id_seq',      'logging_log_id_seq'          ),
                        array( 'renameSequence', 'pr_id_val',           'page_restrictions_pr_id_seq' ),
                        array( 'renameSequence', 'us_id_seq',           'uploadstash_us_id_seq' ),
 
+                       # since r58263
+                       array( 'renameSequence', 'category_id_seq', 'category_cat_id_seq'),
+
+                       # new sequences if not renamed above
+                       array( 'addSequence', 'logging', false, 'logging_log_id_seq' ),
+                       array( 'addSequence', 'page_restrictions', false, 'page_restrictions_pr_id_seq' ),
+                       array( 'addSequence', 'filearchive', 'fa_id', 'filearchive_fa_id_seq' ),
+
                        # new tables
                        array( 'addTable', 'category',          'patch-category.sql' ),
                        array( 'addTable', 'page',              'patch-page.sql' ),
@@ -69,11 +75,13 @@ class PostgresUpdater extends DatabaseUpdater {
                        array( 'addTable', 'uploadstash',       'patch-uploadstash.sql' ),
                        array( 'addTable', 'user_former_groups','patch-user_former_groups.sql' ),
                        array( 'addTable', 'config',            'patch-config.sql' ),
+                       array( 'addTable', 'external_user',     'patch-external_user.sql' ),
 
                        # Needed before new field
                        array( 'convertArchive2' ),
 
                        # new fields
+                       array( 'addPgField', 'updatelog',     'ul_value',             'TEXT' ),
                        array( 'addPgField', 'archive',       'ar_deleted',           'SMALLINT NOT NULL DEFAULT 0' ),
                        array( 'addPgField', 'archive',       'ar_len',               'INTEGER' ),
                        array( 'addPgField', 'archive',       'ar_page_id',           'INTEGER' ),
@@ -140,7 +148,7 @@ class PostgresUpdater extends DatabaseUpdater {
                        array( 'changeField', 'image',         'img_size',        'integer',  '' ),
                        array( 'changeField', 'image',         'img_width',       'integer',  '' ),
                        array( 'changeField', 'image',         'img_height',      'integer',  '' ),
-                       array( 'changeField', 'interwiki',     'iw_local',        'smallint', 'iw_local::smallint DEFAULT 0' ),
+                       array( 'changeField', 'interwiki',     'iw_local',        'smallint', 'iw_local::smallint' ),
                        array( 'changeField', 'interwiki',     'iw_trans',        'smallint', 'iw_trans::smallint DEFAULT 0' ),
                        array( 'changeField', 'ipblocks',      'ipb_auto',        'smallint', 'ipb_auto::smallint DEFAULT 0' ),
                        array( 'changeField', 'ipblocks',      'ipb_anon_only',   'smallint', "CASE WHEN ipb_anon_only=' ' THEN 0 ELSE ipb_anon_only::smallint END DEFAULT 0" ),
@@ -177,6 +185,11 @@ class PostgresUpdater extends DatabaseUpdater {
                        array( 'changeNullableField', 'oldimage', 'oi_timestamp',  'NULL' ),
                        array( 'changeNullableField', 'oldimage', 'oi_major_mime', 'NULL' ),
                        array( 'changeNullableField', 'oldimage', 'oi_minor_mime', 'NULL' ),
+                       array( 'setDefault', 'image', 'img_metadata', '\'\x\'::bytea'),
+                       array( 'changeNullableField', 'image', 'img_metadata', 'NOT NULL'),
+                       array( 'setDefault', 'filearchive', 'fa_metadata', '\'\x\'::bytea'),
+                       array( 'changeNullableField', 'filearchive', 'fa_metadata', 'NOT NULL'),
+                       array( 'changeNullableField', 'recentchanges', 'rc_cur_id', 'NULL' ),
 
                        array( 'checkOiDeleted' ),
 
@@ -195,12 +208,78 @@ class PostgresUpdater extends DatabaseUpdater {
                        array( 'addPgIndex', 'iwlinks',       'iwl_prefix_title_from',  '(iwl_prefix, iwl_title, iwl_from)' ),
                        array( 'addPgIndex', 'job',           'job_timestamp_idx',      '(job_timestamp)' ),
 
+                       array( 'checkIndex', 'pagelink_unique', array(
+                               array('pl_from', 'int4_ops', 'btree', 0),
+                               array('pl_namespace', 'int2_ops', 'btree', 0),
+                               array('pl_title', 'text_ops', 'btree', 0),
+                       ),
+                       'CREATE UNIQUE INDEX pagelink_unique ON pagelinks (pl_from,pl_namespace,pl_title)' ),
+                       array( 'checkIndex', 'cl_sortkey', array(
+                               array('cl_to', 'text_ops', 'btree', 0),
+                               array('cl_sortkey', 'text_ops', 'btree', 0),
+                               array('cl_from', 'int4_ops', 'btree', 0),
+                       ),
+                       'CREATE INDEX cl_sortkey ON "categorylinks" USING "btree" ("cl_to", "cl_sortkey", "cl_from")' ),
+                       array( 'checkIndex', 'logging_times', array(
+                               array('log_timestamp', 'timestamptz_ops', 'btree', 0),
+                       ),
+                       'CREATE INDEX "logging_times" ON "logging" USING "btree" ("log_timestamp")' ),
+                       array( 'dropIndex', 'oldimage', 'oi_name' ),
+                       array( 'checkIndex', 'oi_name_archive_name', array(
+                               array('oi_name', 'text_ops', 'btree', 0),
+                               array('oi_archive_name', 'text_ops', 'btree', 0),
+                       ),
+                       'CREATE INDEX "oi_name_archive_name" ON "oldimage" USING "btree" ("oi_name", "oi_archive_name")' ),
+                       array( 'checkIndex', 'oi_name_timestamp', array(
+                               array('oi_name', 'text_ops', 'btree', 0),
+                               array('oi_timestamp', 'timestamptz_ops', 'btree', 0),
+                       ),
+                       'CREATE INDEX "oi_name_timestamp" ON "oldimage" USING "btree" ("oi_name", "oi_timestamp")' ),
+                       array( 'checkIndex', 'page_main_title', array(
+                               array('page_title', 'text_pattern_ops', 'btree', 0),
+                       ),
+                       'CREATE INDEX "page_main_title" ON "page" USING "btree" ("page_title" "text_pattern_ops") WHERE ("page_namespace" = 0)' ),
+                       array( 'checkIndex', 'page_mediawiki_title', array(
+                               array('page_title', 'text_pattern_ops', 'btree', 0),
+                       ),
+                       'CREATE INDEX "page_mediawiki_title" ON "page" USING "btree" ("page_title" "text_pattern_ops") WHERE ("page_namespace" = 8)' ),
+                       array( 'checkIndex', 'page_project_title', array(
+                               array('page_title', 'text_pattern_ops', 'btree', 0),
+                       ),
+                       'CREATE INDEX "page_project_title" ON "page" USING "btree" ("page_title" "text_pattern_ops") WHERE ("page_namespace" = 4)' ),
+                       array( 'checkIndex', 'page_talk_title', array(
+                               array('page_title', 'text_pattern_ops', 'btree', 0),
+                       ),
+                       'CREATE INDEX "page_talk_title" ON "page" USING "btree" ("page_title" "text_pattern_ops") WHERE ("page_namespace" = 1)' ),
+                       array( 'checkIndex', 'page_user_title', array(
+                               array('page_title', 'text_pattern_ops', 'btree', 0),
+                       ),
+                       'CREATE INDEX "page_user_title" ON "page" USING "btree" ("page_title" "text_pattern_ops") WHERE ("page_namespace" = 2)' ),
+                       array( 'checkIndex', 'page_utalk_title', array(
+                               array('page_title', 'text_pattern_ops', 'btree', 0),
+                       ),
+                       'CREATE INDEX "page_utalk_title" ON "page" USING "btree" ("page_title" "text_pattern_ops") WHERE ("page_namespace" = 3)' ),
+                       array( 'checkIndex', 'ts2_page_text', array(
+                               array('textvector', 'tsvector_ops', 'gist', 0),
+                       ),
+                       'CREATE INDEX "ts2_page_text" ON "pagecontent" USING "gist" ("textvector")' ),
+                       array( 'checkIndex', 'ts2_page_title', array(
+                               array('titlevector', 'tsvector_ops', 'gist', 0),
+                       ),
+                       'CREATE INDEX "ts2_page_title" ON "page" USING "gist" ("titlevector")' ),
+
                        array( 'checkOiNameConstraint' ),
                        array( 'checkPageDeletedTrigger' ),
-                       array( 'checkRcCurIdNullable' ),
-                       array( 'checkPagelinkUniqueIndex' ),
                        array( 'checkRevUserFkey' ),
-                       array( 'checkIpbAdress' ),
+                       array( 'dropIndex', 'ipblocks', 'ipb_address'),
+                       array( 'checkIndex', 'ipb_address_unique', array(
+                               array('ipb_address', 'text_ops', 'btree', 0),
+                               array('ipb_user',    'int4_ops', 'btree', 0),
+                               array('ipb_auto',    'int2_ops', 'btree', 0),
+                               array('ipb_anon_only', 'int2_ops', 'btree', 0),
+                       ),
+                       'CREATE UNIQUE INDEX ipb_address_unique ON ipblocks (ipb_address,ipb_user,ipb_auto,ipb_anon_only)' ),
+
                        array( 'checkIwlPrefix' ),
 
                        # All FK columns should be deferred
@@ -232,6 +311,8 @@ class PostgresUpdater extends DatabaseUpdater {
                        array( 'changeFkeyDeferrable', 'user_properties',  'up_user',         'mwuser(user_id) ON DELETE CASCADE' ),
                        array( 'changeFkeyDeferrable', 'watchlist',        'wl_user',         'mwuser(user_id) ON DELETE CASCADE' ),
 
+                       # r81574
+                       array( 'addInterwikiType' ),
                        # end
                        array( 'tsearchFixes' ),
                );
@@ -392,10 +473,13 @@ END;
                return $d;
        }
 
-       protected function addSequence( $ns ) {
+       protected function addSequence( $table, $pkey, $ns ) {
                if ( !$this->db->sequenceExists( $ns ) ) {
                        $this->output( "Creating sequence $ns\n" );
                        $this->db->query( "CREATE SEQUENCE $ns" );
+                       if( $pkey !== false ) {
+                               $this->setDefault( $table,  $pkey, '"nextval"(\'"' . $ns . '"\'::"regclass")' );
+                       }
                }
        }
 
@@ -410,12 +494,22 @@ END;
                }
        }
 
-       protected function renameTable( $old, $new ) {
+       protected function renameTable( $old, $new, $patch = false ) {
                if ( $this->db->tableExists( $old ) ) {
                        $this->output( "Renaming table $old to $new\n" );
                        $old = $this->db->realTableName( $old, "quoted" );
                        $new = $this->db->realTableName( $new, "quoted" );
                        $this->db->query( "ALTER TABLE $old RENAME TO $new" );
+                       if( $patch !== false ) {
+                               $this->applyPatch( $patch );
+                       }
+               }
+       }
+
+       protected function renameIndex( $table, $old, $new ) {
+               if ( $this->db->indexExists( $table, $old ) ) {
+                       $this->output( "Renaming index $old to $new\n" );
+                       $this->db->query( "ALTER INDEX $old RENAME TO $new" );
                }
        }
 
@@ -451,13 +545,20 @@ END;
                                }
                                $sql .= " USING $default";
                        }
-                       $this->db->begin( __METHOD__ );
                        $this->db->query( $sql );
-                       $this->db->commit( __METHOD__ );
                }
        }
 
-       protected function changeNullableField( $table, $field, $null ) {
+       protected function setDefault( $table, $field, $default ) {
+
+               $info = $this->db->fieldInfo( $table, $field );
+               if ( $info->defaultValue() !== $default ) {
+                       $this->output( "Changing '$table.$field' default value\n" );
+                       $this->db->query( "ALTER TABLE $table ALTER $field SET DEFAULT " . $default );
+               }
+       }
+
+       protected function changeNullableField( $table, $field, $null) {
                $fi = $this->db->fieldInfo( $table, $field );
                if ( is_null( $fi ) ) {
                        $this->output( "...ERROR: expected column $table.$field to exist\n" );
@@ -581,31 +682,28 @@ END;
                }
        }
 
-       protected function checkRcCurIdNullable(){
-               $fi = $this->db->fieldInfo( 'recentchanges', 'rc_cur_id' );
-               if ( !$fi->isNullable() ) {
-                       $this->output( "Removing NOT NULL constraint from 'recentchanges.rc_cur_id'\n" );
-                       $this->applyPatch( 'patch-rc_cur_id-not-null.sql' );
-               } else {
-                       $this->output( "...column 'recentchanges.rc_cur_id' has a NOT NULL constraint\n" );
+       protected function dropIndex( $table, $index ) {
+               if ( $this->db->indexExists( $table, $index ) ) {
+                       $this->output( "Dropping obsolete index '$index'\n" );
+                       $this->db->query( "DROP INDEX \"". $index ."\"" );
                }
        }
 
-       protected function checkPagelinkUniqueIndex() {
-               $pu = $this->describeIndex( 'pagelink_unique' );
-               if ( !is_null( $pu ) && ( $pu[0] != 'pl_from' || $pu[1] != 'pl_namespace' || $pu[2] != 'pl_title' ) ) {
-                       $this->output( "Dropping obsolete version of index 'pagelink_unique index'\n" );
-                       $this->db->query( 'DROP INDEX pagelink_unique' );
-                       $pu = null;
+       protected function checkIndex( $index, $should_be, $good_def ) {
+               $pu = $this->db->indexAttributes( $index );
+               if ( !empty( $pu ) && $pu != $should_be ) {
+                       $this->output( "Dropping obsolete version of index '$index'\n" );
+                       $this->db->query( "DROP INDEX \"". $index ."\"" );
+                       $pu = array();
                } else {
-                       $this->output( "...obsolete version of index 'pagelink_unique index' does not exist\n" );
+                       $this->output( "...no need to drop index '$index'\n" );
                }
 
-               if ( is_null( $pu ) ) {
-                       $this->output( "Creating index 'pagelink_unique index'\n" );
-                       $this->db->query( 'CREATE UNIQUE INDEX pagelink_unique ON pagelinks (pl_from,pl_namespace,pl_title)' );
+               if ( empty( $pu ) ) {
+                       $this->output( "Creating index '$index'\n" );
+                       $this->db->query( $good_def );
                } else {
-                       $this->output( "...index 'pagelink_unique_index' already exists\n" );
+                       $this->output( "...index '$index' exists\n" );
                }
        }
 
@@ -618,19 +716,6 @@ END;
                }
        }
 
-       protected function checkIpbAdress() {
-               if ( $this->db->indexExists( 'ipblocks', 'ipb_address' ) ) {
-                       $this->output( "Removing deprecated index 'ipb_address'...\n" );
-                       $this->db->query( 'DROP INDEX ipb_address' );
-               }
-               if ( $this->db->indexExists( 'ipblocks', 'ipb_address_unique' ) ) {
-                       $this->output( "...have ipb_address_unique\n" );
-               } else {
-                       $this->output( "Adding ipb_address_unique index\n" );
-                       $this->applyPatch( 'patch-ipb_address_unique.sql' );
-               }
-       }
-
        protected function checkIwlPrefix() {
                if ( $this->db->indexExists( 'iwlinks', 'iwl_prefix' ) ) {
                        $this->output( "Replacing index 'iwl_prefix' with 'iwl_prefix_from_title'...\n" );
@@ -638,6 +723,11 @@ END;
                }
        }
 
+       protected function addInterwikiType() {
+               $this->output( "Refreshing add_interwiki()...\n" );
+               $this->applyPatch( 'patch-add_interwiki.sql' );
+       }
+
        protected function tsearchFixes() {
                # Tweak the page_title tsearch2 trigger to filter out slashes
                # This is create or replace, so harmless to call if not needed
index 35d03c4..8be9946 100644 (file)
@@ -308,9 +308,9 @@ class CoreParserFunctions {
                // check parameter, or use the ParserOptions if in interface message
                $user = User::newFromName( $username );
                if ( $user ) {
-                       $gender = $user->getOption( 'gender' );
+                       $gender = GenderCache::singleton()->getGenderOf( $user, __METHOD__ );
                } elseif ( $username === '' && $parser->getOptions()->getInterfaceMessage() ) {
-                       $gender = $parser->getOptions()->getUser()->getOption( 'gender' );
+                       $gender = GenderCache::singleton()->getGenderOf( $parser->getOptions()->getUser(), __METHOD__ );
                }
                $ret = $parser->getFunctionLang()->gender( $gender, $forms );
                wfProfileOut( __METHOD__ );
diff --git a/includes/resourceloader/ResourceLoaderLanguageDataModule.php b/includes/resourceloader/ResourceLoaderLanguageDataModule.php
new file mode 100644 (file)
index 0000000..e1d6fb4
--- /dev/null
@@ -0,0 +1,79 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Santhosh Thottingal
+ * @author Timo Tijhof
+ */
+
+/**
+ * ResourceLoader module for populating language specific data.
+ */
+class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
+
+       /**
+        * Get the grammer forms for the site content language.
+        *
+        * @return array
+        */
+       protected function getSiteLangGrammarForms() {
+               global $wgContLang;
+               return $wgContLang->getGrammarForms();
+       }
+
+       /**
+        * @param $context ResourceLoaderContext
+        * @return string Javascript code
+        */
+       public function getScript( ResourceLoaderContext $context ) {
+               global $wgContLang;
+
+               return Xml::encodeJsCall( 'mw.language.setData', array(
+                       $wgContLang->getCode(),
+                       array( 'grammarForms' => $this->getSiteLangGrammarForms() )
+               ) );
+       }
+
+       /**
+        * @param $context ResourceLoaderContext
+        * @return array|int|Mixed
+        */
+       public function getModifiedTime( ResourceLoaderContext $context ) {
+               $cache = wfGetCache( CACHE_ANYTHING );
+               $key = wfMemcKey( 'resourceloader', 'langdatamodule', 'changeinfo' );
+
+               $forms = $this->getSiteLangGrammarForms();
+               $hash = md5( serialize( $forms ) );
+
+               $result = $cache->get( $key );
+               if ( is_array( $result ) ) {
+                       if ( $result['hash'] === $hash ) {
+                               return $result['timestamp'];
+                       }
+               }
+               $timestamp = wfTimestamp();
+               $cache->set( $key, array( 'hash' => $hash, 'timestamp' => $timestamp ) );
+               return $timestamp;
+       }
+
+       /**
+        * @return array
+        */
+       public function getDependencies() {
+               return array( 'mediawiki.language' );
+       }
+}
index 733dfa0..b5d96ca 100644 (file)
@@ -31,21 +31,32 @@ class ResourceLoaderUserGroupsModule extends ResourceLoaderWikiModule {
         * @return array
         */
        protected function getPages( ResourceLoaderContext $context ) {
-               if ( $context->getUser() ) {
-                       $user = User::newFromName( $context->getUser() );
-                       if ( $user instanceof User ) {
-                               $pages = array();
-                               foreach( $user->getEffectiveGroups() as $group ) {
-                                       if ( in_array( $group, array( '*', 'user' ) ) ) {
-                                               continue;
-                                       }
-                                       $pages["MediaWiki:Group-$group.js"] = array( 'type' => 'script' );
-                                       $pages["MediaWiki:Group-$group.css"] = array( 'type' => 'style' );
-                               }
-                               return $pages;
+               global $wgUser;
+
+               $userName = $context->getUser();
+               if ( !$userName ) {
+                       return array();
+               }
+
+               // Use $wgUser is possible; allows to skip a lot of code
+               if ( is_object( $wgUser ) && $wgUser->getName() == $userName ) {
+                       $user = $wgUser;
+               } else {
+                       $user = User::newFromName( $userName );
+                       if ( !$user instanceof User ) {
+                               return array();
+                       }
+               }
+
+               $pages = array();
+               foreach( $user->getEffectiveGroups() as $group ) {
+                       if ( in_array( $group, array( '*', 'user' ) ) ) {
+                               continue;
                        }
+                       $pages["MediaWiki:Group-$group.js"] = array( 'type' => 'script' );
+                       $pages["MediaWiki:Group-$group.css"] = array( 'type' => 'style' );
                }
-               return array();
+               return $pages;
        }
 
        /* Methods */
index 338b632..9fa9bce 100644 (file)
@@ -33,33 +33,40 @@ class ResourceLoaderUserModule extends ResourceLoaderWikiModule {
         * @return array
         */
        protected function getPages( ResourceLoaderContext $context ) {
-               if ( $context->getUser() ) {
-                       // Get the normalized title of the user's user page
-                       $username = $context->getUser();
-                       $userpageTitle = Title::makeTitleSafe( NS_USER, $username );
-                       $userpage = $userpageTitle->getPrefixedDBkey(); // Needed so $excludepages works
+               $username = $context->getUser();
 
-                       $pages = array(
-                               "$userpage/common.js" => array( 'type' => 'script' ),
-                               "$userpage/" . $context->getSkin() . '.js' =>
-                                       array( 'type' => 'script' ),
-                               "$userpage/common.css" => array( 'type' => 'style' ),
-                               "$userpage/" . $context->getSkin() . '.css' =>
-                                       array( 'type' => 'style' ),
-                       );
+               if ( !$username ) {
+                       return array();
+               }
+
+               // Get the normalized title of the user's user page
+               $userpageTitle = Title::makeTitleSafe( NS_USER, $username );
+
+               if ( !$userpageTitle instanceof Title ) {
+                       return array();
+               }
+
+               $userpage = $userpageTitle->getPrefixedDBkey(); // Needed so $excludepages works
+
+               $pages = array(
+                       "$userpage/common.js" => array( 'type' => 'script' ),
+                       "$userpage/" . $context->getSkin() . '.js' =>
+                               array( 'type' => 'script' ),
+                       "$userpage/common.css" => array( 'type' => 'style' ),
+                       "$userpage/" . $context->getSkin() . '.css' =>
+                               array( 'type' => 'style' ),
+               );
 
-                       // Hack for bug 26283: if we're on a preview page for a CSS/JS page,
-                       // we need to exclude that page from this module. In that case, the excludepage
-                       // parameter will be set to the name of the page we need to exclude.
-                       $excludepage = $context->getRequest()->getVal( 'excludepage' );
-                       if ( isset( $pages[$excludepage] ) ) {
-                               // This works because $excludepage is generated with getPrefixedDBkey(),
-                               // just like the keys in $pages[] above
-                               unset( $pages[$excludepage] );
-                       }
-                       return $pages;
+               // Hack for bug 26283: if we're on a preview page for a CSS/JS page,
+               // we need to exclude that page from this module. In that case, the excludepage
+               // parameter will be set to the name of the page we need to exclude.
+               $excludepage = $context->getRequest()->getVal( 'excludepage' );
+               if ( isset( $pages[$excludepage] ) ) {
+                       // This works because $excludepage is generated with getPrefixedDBkey(),
+                       // just like the keys in $pages[] above
+                       unset( $pages[$excludepage] );
                }
-               return array();
+               return $pages;
        }
 
        /* Methods */
index bf30dc8..31a3994 100644 (file)
@@ -148,7 +148,7 @@ class SpecialAllpages extends IncludableSpecialPage {
                                array( 'name' => 'namespace', 'id' => 'namespace' )
                        ) . ' ' .
                        Xml::checkLabel(
-                               wfMsg( 'allpages-hide-redirects' ),
+                               $this->msg( 'allpages-hide-redirects' )->text(),
                                'hideredirects',
                                'hideredirects',
                                $hideredirects
index 40856ca..ff2a901 100644 (file)
@@ -390,6 +390,13 @@ class DeletedContributionsPage extends SpecialPage {
                                        )
                                );
                        }
+
+                       # Uploads
+                       $tools[] = Linker::linkKnown(
+                               SpecialPage::getTitleFor( 'Listfiles', $userObj->getName() ),
+                               $this->msg( 'sp-contributions-uploads' )->escaped()
+                       );
+
                        # Other logs link
                        $tools[] = Linker::linkKnown(
                                SpecialPage::getTitleFor( 'Log' ),
index 296c98f..fa48317 100644 (file)
@@ -273,7 +273,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
         *
         * @param Title $title
         * @param int $namespace
-        * @param String $dbKey 
+        * @param String $dbKey
         * @return bool: Whether this item is valid
         */
        private function checkTitle( $title, $namespace, $dbKey ) {
@@ -409,7 +409,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
 
                foreach( $data as $titles ) {
                        $this->unwatchTitles( $titles );
-                       $removed += $titles;
+                       $removed = array_merge( $removed, $titles );
                }
 
                if( count( $removed ) > 0 ) {
index ca8f3db..1f95c22 100644 (file)
@@ -183,7 +183,7 @@ class SpecialListGroupRights extends SpecialPage {
                        $r[] = $this->msg( 'listgrouprights-removegroup-all' )->escaped();
                } elseif( is_array( $remove ) && count( $remove ) ) {
                        $remove = array_values( array_unique( $remove ) );
-                       $r[] = $this->msg( 'listgrouprights-removegroup', array( 'parseinline' ),
+                       $r[] = $this->msg( 'listgrouprights-removegroup',
                                $lang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $remove ) ),
                                count( $remove )
                        )->parse();
@@ -192,7 +192,7 @@ class SpecialListGroupRights extends SpecialPage {
                        $r[] = $this->msg( 'listgrouprights-addgroup-self-all' )->escaped();
                } elseif( is_array( $addSelf ) && count( $addSelf ) ) {
                        $addSelf = array_values( array_unique( $addSelf ) );
-                       $r[] = $this->msg( 'listgrouprights-addgroup-self', array( 'parseinline' ),
+                       $r[] = $this->msg( 'listgrouprights-addgroup-self',
                                $lang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $addSelf ) ),
                                count( $addSelf )
                        )->parse();
@@ -201,7 +201,7 @@ class SpecialListGroupRights extends SpecialPage {
                        $r[] = $this->msg( 'listgrouprights-removegroup-self-all' )->parse();
                } elseif( is_array( $removeSelf ) && count( $removeSelf ) ) {
                        $removeSelf = array_values( array_unique( $removeSelf ) );
-                       $r[] = $this->msg( 'listgrouprights-removegroup-self', array( 'parseinline' ),
+                       $r[] = $this->msg( 'listgrouprights-removegroup-self',
                                $lang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $removeSelf ) ),
                                count( $removeSelf )
                        )->parse();
index 0b8959e..75be397 100644 (file)
@@ -129,6 +129,11 @@ class UsersPager extends AlphabeticPager {
                if ($row->user_id == 0) #Bug 16487
                        return '';
 
+               $userName = $row->user_name;
+
+               $ulinks = Linker::userLink( $row->user_id, $userName );
+               $ulinks .= Linker::userToolLinks( $row->user_id, $userName );
+
                $userPage = Title::makeTitle( NS_USER, $row->user_name );
                $name = Linker::link( $userPage, htmlspecialchars( $userPage->getText() ) );
 
@@ -138,13 +143,13 @@ class UsersPager extends AlphabeticPager {
                if( count( $groups_list ) > 0 ) {
                        $list = array();
                        foreach( $groups_list as $group )
-                               $list[] = self::buildGroupLink( $group, $userPage->getText() );
+                               $list[] = self::buildGroupLink( $group, $userName );
                        $groups = $lang->commaList( $list );
                } else {
                        $groups = '';
                }
 
-               $item = $lang->specialList( $name, $groups );
+               $item = $lang->specialList( $ulinks, $groups );
                if( $row->ipb_deleted ) {
                        $item = "<span class=\"deleted\">$item</span>";
                }
@@ -156,10 +161,6 @@ class UsersPager extends AlphabeticPager {
                        $edits = '';
                }
 
-               $userTalkPage = $userPage->getTalkPage();
-               $talk = Linker::link( $userTalkPage, $this->msg( 'talkpagelinktext' )->escaped() );
-               $talk = ' ' . $this->msg( 'parentheses' )->rawParams( $talk )->escaped();
-
                $created = '';
                # Some rows may be NULL
                if( $row->creation ) {
@@ -171,21 +172,18 @@ class UsersPager extends AlphabeticPager {
                }
 
                wfRunHooks( 'SpecialListusersFormatRow', array( &$item, $row ) );
-               return "<li>{$item}{$edits}{$talk}{$created}</li>";
+               return "<li>{$item}{$edits}{$created}</li>";
        }
 
-       function getBody() {
-               if( !$this->mQueryDone ) {
-                       $this->doQuery();
-               }
-               $this->mResult->rewind();
-               $batch = new LinkBatch;
+       function doBatchLookups() {
+               $batch = new LinkBatch();
+               # Give some pointers to make user links
                foreach ( $this->mResult as $row ) {
-                       $batch->addObj( Title::makeTitleSafe( NS_USER, $row->user_name ) );
+                       $batch->add( NS_USER, $row->user_name );
+                       $batch->add( NS_USER_TALK, $row->user_name );
                }
                $batch->execute();
                $this->mResult->rewind();
-               return parent::getBody();
        }
 
        function getPageHeader( ) {
index fc75b2b..f43b8f7 100644 (file)
@@ -76,7 +76,7 @@ class SpecialMergeHistory extends SpecialPage {
        function preCacheMessages() {
                // Precache various messages
                if( !isset( $this->message ) ) {
-                       $this->message['last'] = wfMsgExt( 'last', array( 'escape' ) );
+                       $this->message['last'] = $this->msg( 'last' )->escaped();
                }
        }
 
@@ -100,23 +100,23 @@ class SpecialMergeHistory extends SpecialPage {
 
                $errors = array();
                if ( !$this->mTargetObj instanceof Title ) {
-                       $errors[] = wfMsgExt( 'mergehistory-invalid-source', array( 'parse' ) );
+                       $errors[] = $this->msg( 'mergehistory-invalid-source' )->parseAsBlock();
                } elseif( !$this->mTargetObj->exists() ) {
-                       $errors[] = wfMsgExt( 'mergehistory-no-source', array( 'parse' ),
+                       $errors[] = $this->msg( 'mergehistory-no-source', array( 'parse' ),
                                wfEscapeWikiText( $this->mTargetObj->getPrefixedText() )
-                       );
+                       )->parseAsBlock();
                }
 
                if ( !$this->mDestObj instanceof Title ) {
-                       $errors[] = wfMsgExt( 'mergehistory-invalid-destination', array( 'parse' ) );
+                       $errors[] = $this->msg( 'mergehistory-invalid-destination' )->parseAsBlock();
                } elseif( !$this->mDestObj->exists() ) {
-                       $errors[] = wfMsgExt( 'mergehistory-no-destination', array( 'parse' ),
+                       $errors[] = $this->msg( 'mergehistory-no-destination', array( 'parse' ),
                                wfEscapeWikiText( $this->mDestObj->getPrefixedText() )
-                       );
+                       )->parseAsBlock();
                }
 
                if ( $this->mTargetObj && $this->mDestObj && $this->mTargetObj->equals( $this->mDestObj ) ) {
-                       $errors[] = wfMsgExt( 'mergehistory-same-destination', array( 'parse' ) );
+                       $errors[] = $this->msg( 'mergehistory-same-destination' )->parseAsBlock();
                }
 
                if ( count( $errors ) ) {
@@ -139,19 +139,19 @@ class SpecialMergeHistory extends SpecialPage {
                                'action' => $wgScript ) ) .
                        '<fieldset>' .
                        Xml::element( 'legend', array(),
-                               wfMsg( 'mergehistory-box' ) ) .
+                               $this->msg( 'mergehistory-box' )->text() ) .
                        Html::hidden( 'title', $this->getTitle()->getPrefixedDbKey() ) .
                        Html::hidden( 'submitted', '1' ) .
                        Html::hidden( 'mergepoint', $this->mTimestamp ) .
                        Xml::openElement( 'table' ) .
                        '<tr>
-                               <td>' . Xml::label( wfMsg( 'mergehistory-from' ), 'target' ) . '</td>
+                               <td>' . Xml::label( $this->msg( 'mergehistory-from' )->text(), 'target' ) . '</td>
                                <td>' . Xml::input( 'target', 30, $this->mTarget, array( 'id' => 'target' ) ) . '</td>
                        </tr><tr>
-                               <td>' . Xml::label( wfMsg( 'mergehistory-into' ), 'dest' ) . '</td>
+                               <td>' . Xml::label( $this->msg( 'mergehistory-into' )->text(), 'dest' ) . '</td>
                                <td>' . Xml::input( 'dest', 30, $this->mDest, array( 'id' => 'dest' ) ) . '</td>
                        </tr><tr><td>' .
-                       Xml::submitButton( wfMsg( 'mergehistory-go' ) ) .
+                       Xml::submitButton( $this->msg( 'mergehistory-go' )->text() ) .
                        '</td></tr>' .
                        Xml::closeElement( 'table' ) .
                        '</fieldset>' .
@@ -187,12 +187,12 @@ class SpecialMergeHistory extends SpecialPage {
                        # in a nice little table
                        $table =
                                Xml::openElement( 'fieldset' ) .
-                               wfMsgExt( 'mergehistory-merge', array( 'parseinline' ),
-                                       $this->mTargetObj->getPrefixedText(), $this->mDestObj->getPrefixedText() ) .
+                               $this->msg( 'mergehistory-merge', $this->mTargetObj->getPrefixedText(),
+                                       $this->mDestObj->getPrefixedText() )->parse() .
                                Xml::openElement( 'table', array( 'id' => 'mw-mergehistory-table' ) ) .
                                        '<tr>
                                                <td class="mw-label">' .
-                                                       Xml::label( wfMsg( 'mergehistory-reason' ), 'wpComment' ) .
+                                                       Xml::label( $this->msg( 'mergehistory-reason' )->text(), 'wpComment' ) .
                                                '</td>
                                                <td class="mw-input">' .
                                                        Xml::input( 'wpComment', 50, $this->mComment, array( 'id' => 'wpComment' ) ) .
@@ -201,7 +201,7 @@ class SpecialMergeHistory extends SpecialPage {
                                        <tr>
                                                <td>&#160;</td>
                                                <td class="mw-submit">' .
-                                                       Xml::submitButton( wfMsg( 'mergehistory-submit' ), array( 'name' => 'merge', 'id' => 'mw-merge-submit' ) ) .
+                                                       Xml::submitButton( $this->msg( 'mergehistory-submit' )->text(), array( 'name' => 'merge', 'id' => 'mw-merge-submit' ) ) .
                                                '</td>
                                        </tr>' .
                                Xml::closeElement( 'table' ) .
@@ -212,7 +212,7 @@ class SpecialMergeHistory extends SpecialPage {
 
                $out->addHTML(
                        '<h2 id="mw-mergehistory">' .
-                       wfMsgHtml( 'mergehistory-list' ) . "</h2>\n"
+                       $this->msg( 'mergehistory-list' )->escaped() . "</h2>\n"
                );
 
                if( $haveRevisions ) {
@@ -355,18 +355,18 @@ class SpecialMergeHistory extends SpecialPage {
                );
                if( !$haveRevisions ) {
                        if( $this->mComment ) {
-                               $comment = wfMsgForContent(
+                               $comment = $this->msg(
                                        'mergehistory-comment',
                                        $targetTitle->getPrefixedText(),
                                        $destTitle->getPrefixedText(),
                                        $this->mComment
-                               );
+                               )->inContentLanguage()->text();
                        } else {
-                               $comment = wfMsgForContent(
+                               $comment = $this->msg(
                                        'mergehistory-autocomment',
                                        $targetTitle->getPrefixedText(),
                                        $destTitle->getPrefixedText()
-                               );
+                               )->inContentLanguage()->text();
                        }
                        $mwRedir = MagicWord::get( 'redirect' );
                        $redirectText = $mwRedir->getSynonym( 0 ) . ' [[' . $destTitle->getPrefixedText() . "]]\n";
@@ -404,9 +404,8 @@ class SpecialMergeHistory extends SpecialPage {
                        array( $destTitle->getPrefixedText(), $timestampLimit )
                );
 
-               $this->getOutput()->addHTML(
-                       wfMsgExt( 'mergehistory-success', array('parseinline'),
-                       $targetTitle->getPrefixedText(), $destTitle->getPrefixedText(), $count ) );
+               $this->getOutput()->addWikiMsg( 'mergehistory-success',
+                       $targetTitle->getPrefixedText(), $destTitle->getPrefixedText(), $count );
 
                wfRunHooks( 'ArticleMergeComplete', array( $targetTitle, $destTitle ) );
 
index fca1748..730969d 100644 (file)
@@ -94,11 +94,11 @@ class SpecialPrefixindex extends SpecialAllpages {
                $out .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
                $out .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() );
                $out .= Xml::openElement( 'fieldset' );
-               $out .= Xml::element( 'legend', null, wfMsg( 'allpages' ) );
+               $out .= Xml::element( 'legend', null, $this->msg( 'allpages' )->text() );
                $out .= Xml::openElement( 'table', array( 'id' => 'nsselect', 'class' => 'allpages' ) );
                $out .= "<tr>
                                <td class='mw-label'>" .
-                               Xml::label( wfMsg( 'allpagesprefix' ), 'nsfrom' ) .
+                               Xml::label( $this->msg( 'allpagesprefix' )->text(), 'nsfrom' ) .
                                "</td>
                                <td class='mw-input'>" .
                                        Xml::input( 'prefix', 30, str_replace('_',' ',$from), array( 'id' => 'nsfrom' ) ) .
@@ -106,7 +106,7 @@ class SpecialPrefixindex extends SpecialAllpages {
                        </tr>
                        <tr>
                                <td class='mw-label'>" .
-                                       Xml::label( wfMsg( 'namespace' ), 'namespace' ) .
+                                       Xml::label( $this->msg( 'namespace' )->text(), 'namespace' ) .
                                "</td>
                                <td class='mw-input'>" .
                                Html::namespaceSelector( array(
@@ -117,12 +117,12 @@ class SpecialPrefixindex extends SpecialAllpages {
                                                'class' => 'namespaceselector',
                                ) ) .
                                Xml::checkLabel(
-                                       wfMsg( 'allpages-hide-redirects' ),
+                                       $this->msg( 'allpages-hide-redirects' )->text(),
                                        'hideredirects',
                                        'hideredirects',
                                        $hideredirects
                                ) . ' ' .
-                               Xml::submitButton( wfMsg( 'allpagessubmit' ) ) .
+                               Xml::submitButton( $this->msg( 'allpagessubmit' )->text() ) .
                                "</td>
                        </tr>";
                $out .= Xml::closeElement( 'table' );
@@ -150,10 +150,10 @@ class SpecialPrefixindex extends SpecialAllpages {
                $namespaces = $wgContLang->getNamespaces();
 
                if ( !$prefixList || !$fromList ) {
-                       $out = wfMsgExt( 'allpagesbadtitle', 'parse' );
+                       $out = $this->msg( 'allpagesbadtitle' )->parseAsBlock();
                } elseif ( !in_array( $namespace, array_keys( $namespaces ) ) ) {
                        // Show errormessage and reset to NS_MAIN
-                       $out = wfMsgExt( 'allpages-bad-ns', array( 'parseinline' ), $namespace );
+                       $out = $this->msg( 'allpages-bad-ns', $namespace )->parse();
                        $namespace = NS_MAIN;
                } else {
                        list( $namespace, $prefixKey, $prefix ) = $prefixList;
@@ -247,7 +247,7 @@ class SpecialPrefixindex extends SpecialAllpages {
                                }
                                $nextLink = Linker::linkKnown(
                                                $self,
-                                               wfMsgHtml( 'nextpage', str_replace( '_',' ', htmlspecialchars( $s->page_title ) ) ),
+                                               $this->msg( 'nextpage', str_replace( '_',' ', $s->page_title ) )->escaped(),
                                                array(),
                                                $query
                                        );
index bfc5248..c05aaad 100644 (file)
@@ -568,14 +568,14 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                $submit = ' ' . Xml::submitbutton( wfMsg( 'allpagessubmit' ) );
 
                $out = Xml::openElement( 'table', array( 'class' => 'mw-recentchanges-table' ) );
-               foreach( $extraOpts as $optionRow ) {
+               foreach( $extraOpts as $name => $optionRow ) {
                        # Add submit button to the last row only
                        ++$count;
-                       $addSubmit = $count === $extraOptsCount ? $submit : '';
+                       $addSubmit = ( $count === $extraOptsCount ) ? $submit : '';
 
                        $out .= Xml::openElement( 'tr' );
                        if( is_array( $optionRow ) ) {
-                               $out .= Xml::tags( 'td', array( 'class' => 'mw-label' ), $optionRow[0] );
+                               $out .= Xml::tags( 'td', array( 'class' => 'mw-label mw-' . $name . '-label' ), $optionRow[0] );
                                $out .= Xml::tags( 'td', array( 'class' => 'mw-input' ), $optionRow[1] . $addSubmit );
                        } else {
                                $out .= Xml::tags( 'td', array( 'class' => 'mw-input', 'colspan' => 2 ), $optionRow . $addSubmit );
index 2e2b003..d0e7ed9 100644 (file)
@@ -168,7 +168,7 @@ class SpecialVersion extends SpecialPage {
                        $shortSha1 = substr( $gitInfo, 0, 7 );
                        $version = "$wgVersion ($shortSha1)";
                } elseif ( $flags === 'nodb' ) {
-                       $version = "$wgVersion (r{$info['checkout-rev']})";
+                       $version = "$wgVersion (r{$svnInfo['checkout-rev']})";
                } else {
                        $version = $wgVersion . ' ' .
                                wfMsg(
index 8db7e84..463ea19 100644 (file)
@@ -3233,7 +3233,18 @@ class Language {
                }
                return $word;
        }
-
+       /**
+        * Get the grammar forms for the content language
+        * @return array of grammar forms
+        * @since 1.20
+        */
+       function getGrammarForms() {
+               global $wgGrammarForms;
+               if ( isset( $wgGrammarForms[$this->getCode()] ) && is_array( $wgGrammarForms[$this->getCode()] ) ) {
+                        return $wgGrammarForms[$this->getCode()];
+               }
+               return array();
+       }
        /**
         * Provides an alternative text depending on specified gender.
         * Usage {{gender:username|masculine|feminine|neutral}}.
index 2b9cc8e..18d1dbc 100644 (file)
@@ -576,7 +576,7 @@ class LanguageConverter {
         */
        public function convertTo( $text, $variant ) {
                global $wgDisableLangConversion;
-               if ( $wgDisableLangConversion || $this->guessVariant( $text, $variant ) ) {
+               if ( $wgDisableLangConversion ) {
                        return $text;
                }
                return $this->recursiveConvertTopLevel( $text, $variant );
@@ -595,18 +595,22 @@ class LanguageConverter {
                $startPos = 0;
                $out = '';
                $length = strlen( $text );
+               $shouldConvert = !$this->guessVariant( $text, $variant );
+
                while ( $startPos < $length ) {
                        $pos = strpos( $text, '-{', $startPos );
 
                        if ( $pos === false ) {
                                // No more markup, append final segment
-                               $out .= $this->autoConvert( substr( $text, $startPos ), $variant );
+                               $fragment = substr( $text, $startPos );
+                               $out .= $shouldConvert? $this->autoConvert( $fragment, $variant ): $fragment;
                                return $out;
                        }
 
                        // Markup found
                        // Append initial segment
-                       $out .= $this->autoConvert( substr( $text, $startPos, $pos - $startPos ), $variant );
+                       $fragment = substr( $text, $startPos, $pos - $startPos );
+                       $out .= $shouldConvert? $this->autoConvert( $fragment, $variant ): $fragment;
 
                        // Advance position
                        $startPos = $pos;
@@ -810,16 +814,18 @@ class LanguageConverter {
         * @param $fromCache Boolean: load from memcached? Defaults to true.
         */
        function loadTables( $fromCache = true ) {
+               global $wgLangConvMemc;
+
                if ( $this->mTablesLoaded ) {
                        return;
                }
-               global $wgMemc;
+
                wfProfileIn( __METHOD__ );
                $this->mTablesLoaded = true;
                $this->mTables = false;
                if ( $fromCache ) {
                        wfProfileIn( __METHOD__ . '-cache' );
-                       $this->mTables = $wgMemc->get( $this->mCacheKey );
+                       $this->mTables = $wgLangConvMemc->get( $this->mCacheKey );
                        wfProfileOut( __METHOD__ . '-cache' );
                }
                if ( !$this->mTables
@@ -837,7 +843,7 @@ class LanguageConverter {
                        $this->postLoadTables();
                        $this->mTables[self::CACHE_VERSION_KEY] = true;
 
-                       $wgMemc->set( $this->mCacheKey, $this->mTables, 43200 );
+                       $wgLangConvMemc->set( $this->mCacheKey, $this->mTables, 43200 );
                        wfProfileOut( __METHOD__ . '-recache' );
                }
                wfProfileOut( __METHOD__ );
index b2174de..7d48725 100644 (file)
@@ -1638,6 +1638,7 @@ URL টোৰ বৈধতা বিচাৰ কৰি পুনৰ চেষ
 'backend-fail-contenttype' => '"$1"ত সাঁচি থ\'বলৈ ফাইলটোৰ সমল প্ৰকাৰ স্থিৰ কৰিব পৰা নগ\'ল।',
 'backend-fail-batchsize' => "$1টা ফাইল {{PLURAL:$1|কাৰ্যৰ|কাৰ্যৰ}} ষ্ট'ৰেজ বেকএ'ণ্ড দিয়া হৈছে; সীমা হৈছে $2টা {{PLURAL:$2|কাৰ্য|কাৰ্য}}।",
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'ষ্ট\'ৰেজ বেকএ\'ণ্ড "$1"ৰ বাবে জাৰ্ণাল তথ্যকোষৰ লগত সংযোগ স্থাপন নহ\'ল।',
 'filejournal-fail-dbquery' => 'ষ্ট\'ৰেজ বেকএ\'ণ্ড "$1"ৰ বাবে জাৰ্ণাল তথ্যকোষ আপডেট কৰিব পৰা নগ\'ল।',
 
index b9798f4..d8dd929 100644 (file)
@@ -448,7 +448,7 @@ $2',
 El motivu conseñáu ye ''$2''.",
 'filereadonlyerror' => "Nun se pudo camudar el ficheru «$1» porque l'almacén de ficheros «$2» ta en mou de sólo llectura.
 
-El motivu dau ye «''$3''».",
+L'alministrador que lu bloquió dió esti motivu: «$3».",
 
 # Virus scanner
 'virus-badscanner' => "Error de configuración: escáner de virus desconocíu: ''$1''",
@@ -828,6 +828,7 @@ Paez que se desanició.',
 'edit-no-change' => "S'inoró la to edición, porque nun se fizo nengún cambéu nel testu.",
 'edit-already-exists' => 'Nun se pudo crear una páxina nueva.
 Yá esiste.',
+'defaultmessagetext' => 'Testu predetermináu',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Avisu:''' Esta páxina contién demasiaes llamaes costoses a funciones d'análisis sintáuticu.
@@ -1602,6 +1603,7 @@ Si'l problema persiste, contauta con un [[Special:ListUsers/sysop|alministrador]
 'backend-fail-contenttype' => 'Non se pudo determinar la triba de conteníu de ficheru a guardar en "$1".',
 'backend-fail-batchsize' => "El motor d'almacenamientu dio un llote de $1 {{PLURAL:$1|operación|operaciones}} en ficheros; el llímite ye de $2 {{PLURAL:$2|operación|operaciones}}.",
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Nun se pudo coneutar cola base de datos del diariu pal sofitu d\'almacenamientu "$1".',
 'filejournal-fail-dbquery' => 'Nun se pudo anovar la base de datos del diariu pal sofitu d\'almacenamientu "$1".',
 
index e7f4dae..95235bb 100644 (file)
@@ -103,15 +103,17 @@ $messages = array(
 'tog-underline' => 'Levconhani gluyasiki se',
 'tog-justify' => 'Emaven kuparkieem',
 'tog-hideminor' => 'Palsera va <i>Noeltaf betakseem</i> mezolonaf',
+'tog-hidepatrolled' => 'Palsera va fieyen betaks div noeltaf betakseem',
+'tog-newpageshidepatrolled' => 'Palsera va fieyenu bu mal vexala dem warzafu bu',
 'tog-extendwatchlist' => 'Divatcera va suzdasiki ta nedira va kot rorewan betaks',
-'tog-usenewrc' => 'Noeltaf betakseem tulogijayan<br /> (anton abic exulesik)',
+'tog-usenewrc' => 'Noeltaf betakseem tulogijayan (kucilas va Javascript)',
 'tog-numberheadings' => 'Mivaskafa vergumveltotukara',
 'tog-showtoolbar' => 'Nedira va tidexekak ke betararude',
 'tog-editondblclick' => 'Ta bubetara tolon vulegal (JavaScript tir adraf)',
 'tog-editsection' => 'Betara va gabot kan "[Betara]" gluyasiki',
 'tog-editsectiononrightclick' => 'Betara va gabot talton vulegason<br /> va gabotvergumvelt',
 'tog-showtoc' => 'Nedira va ugak<br /> (icde teliz dem lo 3 gabot)',
-'tog-rememberpassword' => 'Va jinaf remravlem setiker (cookie) (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'tog-rememberpassword' => 'Mo bati nedisiki va jinaf remravlem setiker (cugon $1 {{PLURAL:$1|viel|viel}})',
 'tog-watchcreations' => 'Kosuzdasikira va jinon betayan bueem',
 'tog-watchdefault' => 'Va jinon reduyun ik betayan telizeem suzdá',
 'tog-watchmoves' => 'Kosuzdasikira va jinon arrundayan bueem',
@@ -125,7 +127,8 @@ $messages = array(
 'tog-enotifminoredits' => 'Icde bubetamara dere zo staksá !',
 'tog-enotifrevealaddr' => 'Divnedira va jinaf email mane koe staksara',
 'tog-shownumberswatching' => 'Va ota va rupes favesik nedir !',
-'tog-fancysig' => 'Rilaf sugdaks (a mivaskafi gluyasiki)',
+'tog-oldsig' => 'Tisa sugdara',
+'tog-fancysig' => 'Krafiara va sugdaks wetce wikitext (a mivaskafi gluyasiki)',
 'tog-externaleditor' => 'Favera va divefi betasiki (anton gan aptacik, moe vusiko va yona aptafa vertara olegar)',
 'tog-externaldiff' => 'Omavafa favera va divefa "diff" xeka (anton gan aptacik, moe vusiko va yona aptafa vertara olegar)',
 'tog-showjumplinks' => 'Tutegirara va "grablera" vansarafi gluyasiki',
@@ -164,7 +167,7 @@ $messages = array(
 'may_long' => 'alubeaksat',
 'june' => 'teveaksat',
 'july' => 'pereaksat',
-'august' => 'anhusteaksat',
+'august' => 'anyusteaksat',
 'september' => 'lerdeaksat',
 'october' => 'saneaksat',
 'november' => 'santaneaksat',
@@ -176,7 +179,7 @@ $messages = array(
 'may-gen' => 'Alubeaksat',
 'june-gen' => 'Teveaksat',
 'july-gen' => 'Pereaksat',
-'august-gen' => 'Anhusteaksat',
+'august-gen' => 'Anyusteaksat',
 'september-gen' => 'Lerdeaksat',
 'october-gen' => 'Saneaksat',
 'november-gen' => 'Santaneaksat',
@@ -209,6 +212,7 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|Bata loma va bat iyeltak anton ruldar.|Bat iyeltak {{PLURAL:$1|tir|$1 tid}} koe bata loma, ke $2 varon.}}',
 'category-file-count-limited' => 'Bat iyeltak {{PLURAL:$1|tir|$1 tid}} koe noeltafa loma.',
 'listingcontinuesabbrev' => 'loon',
+'noindex-category' => 'Mejlayeyenu bu',
 
 'about' => 'Icdeuca',
 'article' => 'Teliz',
@@ -232,6 +236,20 @@ $messages = array(
 'faq' => 'NEB',
 'faqpage' => 'Project:FAQ',
 
+# Vector skin
+'vector-action-addsection' => 'Loplekura va detce',
+'vector-action-delete' => 'Sulara',
+'vector-action-move' => 'Arrundara',
+'vector-action-protect' => 'Nendara',
+'vector-view-create' => 'Redura',
+'vector-view-edit' => 'Betara',
+'vector-view-history' => 'Wira va izvot',
+'vector-view-view' => 'Belira',
+'vector-view-viewsource' => 'klitawira',
+'actions' => 'Tegira',
+'namespaces' => 'Yoltxo',
+'variants' => 'Arapeniks',
+
 'errorpagetitle' => 'Rokla',
 'returnto' => 'Dimgrablera va $1 bu.',
 'tagline' => 'Teliz mal {{SITENAME}}.',
@@ -244,7 +262,7 @@ $messages = array(
 'history_short' => 'Izvot',
 'updatedmarker' => 'nuskeyen mali jinafa ironokafa worara',
 'printableversion' => 'Rorubian siatos',
-'permalink' => 'Elubkafi gluyasiki',
+'permalink' => 'Elupkafi gluyasiki',
 'print' => 'Rubiara',
 'edit' => 'Betara',
 'create' => 'Redura',
@@ -256,13 +274,13 @@ $messages = array(
 'protect' => 'Nendara',
 'protect_change' => 'betara',
 'protectthispage' => 'Bunendara',
-'unprotect' => 'Dimnendara',
-'unprotectthispage' => 'Dimnendara va batu bu',
+'unprotect' => 'Betara va nendara',
+'unprotectthispage' => 'Betara va nendara va batu bu',
 'newpage' => 'Warzafu bu',
 'talkpage' => 'Prilarabu',
 'talkpagelinktext' => 'Keyaksera',
 'specialpage' => 'Aptafu bu',
-'personaltools' => 'Weltafa xeka se',
+'personaltools' => 'Weltafa xeka',
 'postcomment' => 'Warzaf gabot',
 'articlepage' => 'Telizwira',
 'talk' => 'Keyaksera',
@@ -276,7 +294,7 @@ $messages = array(
 'viewhelppage' => 'Rupera va pomara bu',
 'categorypage' => 'Rupera va loma bu',
 'viewtalkpage' => 'Prilarabu',
-'otherlanguages' => 'Ara ava se',
+'otherlanguages' => 'Ara ava',
 'redirectedfrom' => '(Graskan mal $1)',
 'redirectpagesub' => 'Bugraskara',
 'lastmodifiedat' => 'Ironakafa betara va bu tir ba $2, $1.',
@@ -291,10 +309,10 @@ $messages = array(
 'aboutpage' => 'Project:Icdeuca',
 'copyright' => 'Deraykan cek kare $1.',
 'copyrightpage' => '{{ns:project}}:Digirarokeem',
-'currentevents' => 'Noelaca yo',
-'currentevents-url' => 'Project:Noelaf bif yo',
-'disclaimers' => 'Walzera se',
-'disclaimerpage' => 'Project:Jadifa walzera se',
+'currentevents' => 'Noelaca',
+'currentevents-url' => 'Project:Noelafa bifa',
+'disclaimers' => 'Walzera',
+'disclaimerpage' => 'Project:Jadif walzereem',
 'edithelp' => 'Pomara',
 'edithelppage' => 'Help:Tokinde bubetat',
 'helppage' => 'Help:Pomara',
@@ -315,7 +333,7 @@ $messages = array(
 
 'ok' => 'Tuenara',
 'retrievedfrom' => 'Dimnarin mal « $1 »',
-'youhavenewmessages' => 'Rin dil va $1 ($2).',
+'youhavenewmessages' => 'Va $1 ($2) al kazawal.',
 'newmessageslink' => 'warzafa staksa',
 'newmessagesdifflink' => 'amid- gu ironokaf siatos',
 'youhavenewmessagesmulti' => 'Rin dil va warzafa staksa moe $1',
@@ -357,7 +375,9 @@ $messages = array(
 URL lanon tir ordajaf ok gluyajan.
 Batcoba va zvak koe talpeyot ke {{SITENAME}} dere robazer.',
 'nosuchspecialpage' => 'Mekruldesu aptafu bu',
-'nospecialpagetext' => 'Rin va aptafu bu mekagrupenu gan wiki al erul.',
+'nospecialpagetext' => '<strong>Rin va aptafu bu mekagrupenu gan wiki su erul.</strong>
+
+Vexala dem enafu aptafu bu tir rotrasina dene [[Special:SpecialPages|{{int:specialpages}}]].',
 
 # General errors
 'error' => 'Rokla',
@@ -380,6 +400,8 @@ MySQL va « $3 : $4 » rokla al dimstakser.',
 'readonly_lag' => 'La base de donnée a été automatiquement bloquée pendant que les serveurs secondaires rattrapent leur retard avec le serveur principal',
 'internalerror' => 'Koefa rokla',
 'internalerror_info' => 'Koefa rokla : $1',
+'fileappenderrorread' => 'Bal loplekura, va "$1" me robelir.',
+'fileappenderror' => 'Va "$1" gu "$2" me roloplekur.',
 'filecopyerror' => 'Ksudara va « $1 » van « $2 » tir merotisa.',
 'filerenameerror' => 'Tolyoltara va « $1 » ton « $2 » tir merotisa.',
 'filedeleteerror' => 'Sulara va « $1 » tir merotisa.',
@@ -389,7 +411,9 @@ MySQL va « $3 : $4 » rokla al dimstakser.',
 'unexpected' => 'Volkena voda : « $1 » = « $2 ».',
 'formerror' => 'Rokla : Levplekura va valdig tir merotisa',
 'badarticleerror' => 'Bata tegira mo batu bu tir merotisa.',
-'cannotdelete' => 'Sulara va bazenu bu oku ewava tir merotisa.',
+'cannotdelete' => '"$1" bu oku iyeltak me zo rosular.
+Rotir artan ixam al sular.',
+'cannotdelete-title' => 'Va "$1" bu me rosular.',
 'badtitle' => 'Rotaf vergumvelt',
 'badtitletext' => 'Vergumvelt ke erunu bu tir volenafu ok vlardafu ike walavafi gluyasiki me tir enafi',
 'perfcached' => 'Vlevef orig yo tid koe palsexo nume me zo ronusked. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
@@ -399,10 +423,12 @@ MySQL va « $3 : $4 » rokla al dimstakser.',
 Fliok : $1<br />
 Erura : $2',
 'viewsource' => 'Wira va klitakrent',
+'viewsource-title' => 'Wira va klita ke $1',
 'actionthrottled' => 'Tulokaliana tegira',
 'actionthrottledtext' => 'Wetce sabega kev staksavamolavara, rin ta bata skura gemeltamon slikviele zo kimar voxe va bata kimara al kaikayal. Vay artimon lwil !',
 'protectedpagetext' => 'Batu bu betaradjison zo nendar.',
 'viewsourcetext' => 'Va buklita rowil nume roksudal :',
+'viewyourtext' => "Rowil va klita ke '''rinafa betara''' ise ko batu bu roksudal :",
 'protectedinterface' => 'Batu bu va walasikikrent ke talpeyot dafur nume ta djira va favejera zo ixatcar.',
 'editinginterface' => "'''Obral !''' Rin va bu favenu koe talpeyotwalasiki betal. Betara va batu bu va laviuca ke favesikafi walasiki dolge ar favesik vanolatar. Kalavason, va [//translatewiki.net/wiki/Main_Page?setlang=avk translatewiki.net], va MediaWiki abdumimaks va tulizukara, vay favel.",
 'sqlhidden' => '(SQL kucilara palsena)',
@@ -424,13 +450,14 @@ Me vulkul da rupeson va "Lodamaceem" bu va intaf {{SITENAME}} rotuilkal.',
 'yourname' => 'Rinaf favesikyolt',
 'yourpassword' => 'Rinaf remravlem',
 'yourpasswordagain' => 'Va rinaf remravlem tolon bazel',
-'remembermypassword' => 'Setikera va jinaf remravlem (cookie) (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'remembermypassword' => 'Setikera va jinaf remravlem koe bati nedisiki (kali cugon $1 {{PLURAL:$1|viel|viel}})',
 'yourdomainname' => 'Rinaf ind',
 'externaldberror' => 'Ont divefa origakrokla va pilkomodara ont va rinafa divefa pata me ronuskel.',
 'login' => 'Pilkomodá',
 'nav-login-createaccount' => 'Pataredú oke va int dogluyá',
-'loginprompt' => 'Ta dogluyara va {{SITENAME}} va cookie se gotutegiral.',
-'userlogin' => 'Pataredú oke va int dogluyá',
+'loginprompt' => 'Ta dogluyara va {{SITENAME}} va koti "cookie" talpeyki gotutegiral.',
+'userlogin' => 'Va int dogluyá / pataredú',
+'userloginnocreate' => 'Dogluyara',
 'logout' => 'Dimgluyá',
 'userlogout' => 'Dimgluyara',
 'notloggedin' => 'Dogluyariskaf',
@@ -439,11 +466,14 @@ Me vulkul da rupeson va "Lodamaceem" bu va intaf {{SITENAME}} rotuilkal.',
 'createaccount' => 'Warzon pataredú',
 'gotaccount' => "Kas va pata ixam digil ? '''$1'''.",
 'gotaccountlink' => 'Dogluyara',
+'userlogin-resetlink' => 'Rinafa "login" pinta vulkuna ?',
 'createaccountmail' => 'kan e-mail',
+'createaccountreason' => 'Lazava :',
 'badretype' => 'Toloy suteyen remravlem tid menuxaf.',
-'userexists' => 'Favesikyolt rinon suteyen ixam zo faver.
-Va amidaf yolt gokiblal.',
+'userexists' => 'Favesikyolt suteyen ixam zo faver.
+Va amidaf yolt vay gonaral.',
 'loginerror' => 'Pilkomodajara',
+'createaccounterror' => 'Va $1 me ropataredur.',
 'nocookiesnew' => "Le compte utilisateur a été créé, mais vous n'êtes pas connecté. {{SITENAME}} utilise des cookies pour la connexion mais vous avez les cookies désactives. Merci de les activer et de vous reconnecter.",
 'nocookieslogin' => '{{SITENAME}} utilise des cookies pour la connexion mais vous avez les cookies désactives. Merci de les activer et de vous reconnecter.',
 'noname' => 'Va favesikyolt gobazel.',
@@ -454,9 +484,12 @@ Sutera va favesikyolt gotir eltaykoranhafa.
 Ageltal va rinaf suteks oke [[Special:UserLogin/signup|pataredura]].',
 'nosuchusershort' => 'Me tir favesik digis va « $1 » yolt. Va sutekaks ageltal.',
 'nouserspecified' => 'Va favesikyolt gobazel !',
+'login-userblocked' => 'Bat webesik tir elekayan. Dogluyara menovena.',
 'wrongpassword' => 'Remravlem tir volenaf. Tollwil !',
 'wrongpasswordempty' => 'Remravlem bazeyen tir vlardaf.Vay tolon bazel !',
 'passwordtooshort' => 'Rinaf remravlem tir meenaf ok lotrelaf. Va {{PLURAL:$1|1 staa|$1 staa}} leon goruldar ise gotir amidaf gu favesikyolt.',
+'password-name-match' => 'Remravlem gotir amidaf gu favesikyolt.',
+'password-login-forbidden' => 'Favera va bat favesikyolt isu remravlem al zukud.',
 'mailmypassword' => 'Warzaf staksaremravlem',
 'passwordremindertitle' => 'Rinaf warzaf remravlem moe {{SITENAME}}',
 'passwordremindertext' => 'Kontan (lanon rin, male $1 IP mane) eruyur da pu rin va warzaf remravlem tori {{SITENAME}} staksev ($4).
@@ -465,6 +498,7 @@ Va int rodogluyal aze va remravlem robetal.
 
 Ede artan va bata erura al skur oke va rinaf remravlem setikeyel nume mea djubetal, va bata staksa rotafanal nume va rinaf guazaf remravlem wan favel.',
 'noemail' => 'Meke internetmane icde « $1 » favesik al zo koverter.',
+'noemailcreate' => 'Va enafe e-mail mane gobazel',
 'passwordsent' => "Un nouveau mot de passe a été envoyé à l'adresse électronique de l'utilisateur « $1 ».
 Veuillez vous identifier dès que vous l'aurez reçu.",
 'blocked-mailpassword' => 'Rinafe IP mane icde betara zo elekar nume ta rofaveradjira va fli ta dimplekura va remravlem me rofavel.',
@@ -495,8 +529,28 @@ Ta da wan zo pilkomodal, va warzaf remravlem batlize gobazel :",
 'resetpass_success' => 'Rinaf remravlem kiewatcon su zo betar ! Nume rinafa dogluyara tir...',
 'resetpass_forbidden' => 'Kona beksa tir merobetana',
 'resetpass-submit-loggedin' => 'Betara va remravlem',
+'resetpass-submit-cancel' => 'Kuidera',
 'resetpass-temp-password' => 'Ugaloraf remravlem :',
 
+# Special:PasswordReset
+'passwordreset' => 'Va remravlem tolbazel',
+'passwordreset-legend' => 'Va remravlem tolbazel',
+'passwordreset-username' => 'Favesikyolt :',
+'passwordreset-domain' => 'Ind',
+'passwordreset-email' => 'E-mail mane',
+'passwordreset-emailtitle' => 'Pinta va pata dene {{SITENAME}}',
+'passwordreset-emailelement' => 'Favesikyolt : $1
+Ugaloraf remravlem : $2',
+
+# Special:ChangeEmail
+'changeemail' => 'Betara va e-mail mane',
+'changeemail-header' => 'Betara va patafe e-mail mane',
+'changeemail-oldemail' => 'Noelafe e-mail mane',
+'changeemail-newemail' => 'Warzafe e-mail mane',
+'changeemail-none' => '(mek)',
+'changeemail-submit' => 'Betara va e-mail mane',
+'changeemail-cancel' => 'Kuidera',
+
 # Edit page toolbar
 'bold_sample' => 'Bold krent',
 'bold_tip' => 'Bold krent',
@@ -555,12 +609,17 @@ Rinaf tise IP mane tir $3 ise ID elekara tir #$5. Va bate ik bane mane ko kota e
 'accmailtitle' => 'Stakseyen remravlem.',
 'accmailtext' => 'Remravlem ke « $1 » al zo stakser pu $2.',
 'newarticle' => '(Warzaf)',
-'newarticletext' => 'Va rinaf teliz batliz geltsutel !',
+'newarticletext' => "Va gluyasiki va metisu bu su vulegal.
+Ta buredura, ko vlevef bor toz geltsutel (va [[{{MediaWiki:Helppage}}|pomarabu]] ta loa giva wil).
+Ede batlize roklason tigil, va '''back''' uzadjo ke nedisiki vulegal.",
 'anontalkpagetext' => "---- ''Vous êtes sur la page de discussion d'un utilisateur anonyme qui n'a pas encore créé un compte ou qui ne l'utilise pas. Pour cette raison, nous devons utiliser l'adresse IP numérique pour l'identifier. Une adresse de ce type peut être partagée entre plusieurs utilisateurs. Si vous êtes un utilisateur anonyme et si vous constatez que des commentaires qui ne vous concernent pas vous ont été adressés, vous pouvez [[Special:UserLogin|créer un compte ou vous connecter]] afin d'éviter toute future confusion.''",
 'noarticletext' => 'Moe batu bu mek krent dure tir.
 Vanmiae yonaru bu [[Special:Search/{{PAGENAME}}|va man buvergumvelt rotaneyal]],
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} va gluyan log robetal],
 oke [{{fullurl:{{FULLPAGENAME}}|action=edit}} va batu bu robetal]</span>.',
+'noarticletext-nopermission' => 'Dure me krent koe batu bu.
+Vanmia yonaru bu [[Special:Search/{{PAGENAME}}|va batu bu rotaneyal]],
+oke <span class="plainlinks">[{{fullurl:{{#Special:Log}}|bu={{FULLPAGENAMEE}}}} va icdef logs rotaneyal]</span>.',
 'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" favesikpata me tir vuesteyena. Vay stujel ede va batu bu roredul ike robetal.',
 'clearyourcache' => "'''Note :''' Après avoir sauvegardé, vous devez forcer le rechargement de la page pour voir les changements : '''Mozilla / Konqueror / Firefox''' : ''ctrl-shift-r'', '''IE''' : ''ctrl-f5'', '''Safari''' : ''cmd-shift-r''; '''Konqueror''' : ''f5''.",
 'usercssyoucanpreview' => "'''Astuce :''' utilisez le bouton '''Prévisualisation''' pour tester votre nouvelle feuille css/js avant de l'enregistrer.",
@@ -569,7 +628,8 @@ oke [{{fullurl:{{FULLPAGENAME}}|action=edit}} va batu bu robetal]</span>.',
 'userjspreview' => "'''Rappelez-vous que vous êtes en train de visualiser ou de tester votre code javascript et qu'il n'a pas encore été enregistré !'''",
 'updated' => '(Nuskeyen)',
 'note' => "'''Straga :'''",
-'previewnote' => "'''Obral, bat krent anton tir abdinediks ise men tir giwayan !'''",
+'previewnote' => "'''Obral, bat krent anton tir abdinedik.'''
+Rinafa betara men tid giwayan ! [[#editform|→ Continue editing]]",
 'previewconflict' => 'Abdinedira nedir va krent ke batu bu inde in giwayanon titir.',
 'editing' => 'betara va $1',
 'editingsection' => 'betara va $1 (gabot)',
@@ -596,7 +656,7 @@ Rin dere abdiplekul da va webeks miv suteyel ike mal sangiskafa ok gundafa nuyaf
 'semiprotectedpagewarning' => "'''Straga :''' Batu bu tir ixatcayanu nume antaf vertokayan favesik robetar.",
 'cascadeprotectedwarning' => "'''Obral !''' Batu bu tir elekayanu enide anton ristus favesik robetar, kire in stoyakoron rupter. {{PLURAL:$1|stoyafu bu|stoyafu bu se}}",
 'titleprotectedwarning' => "'''WALZERA : Batu bu zo ixatcar nume [[Special:ListGroupRights|aptarokeem]] tir adraf gu redura.'''",
-'templatesused' => 'Teza yo favena koe batu bu',
+'templatesused' => '{{PLURAL:$1|Teza|Teza}} favena koe batu bu',
 'templatesusedpreview' => 'Faven tezeem koe bata abdinedira :',
 'templatesusedsection' => 'Faven tezeem koe bat gabot :',
 'template-protected' => '(nendana)',
@@ -611,7 +671,7 @@ Rodimal aze va tisu bu robetal oke [[Special:UserLogin|va int rodogluyal oke rop
 'permissionserrorstext-withaction' => 'Rin icde $2 me zo rictal, {{PLURAL:$1|yoke|yoke}} :',
 'recreate-moveddeleted-warn' => "'''Obral: Rin va sulayanu bu djutolredul.'''
 
-Gokrafial ede tolredura va batu bu tir vodanhaf.
+Gokrafial ede tolredura va batu bu tir vodanyaf.
 Sulara \"log\" va batu bu krafiason batlize zo nedir :",
 'moveddeleted-notice' => 'Sulayanu bu.
 "Log" sulara va batu bu vleveon vuesteson zo nedir.',
@@ -621,6 +681,11 @@ Bu ixam krulder.',
 
 # Parser/template warnings
 'expensive-parserfunction-category' => 'Bu dem slika rozara va exulerafli',
+'post-expand-template-inclusion-warning' => "'''Obral !:''' Lum ke toefa teza mantarsaf.
+Konaka teza me di zo kodoplekud.",
+'post-expand-template-inclusion-category' => 'Bu dem lumars ke dofa teza',
+'post-expand-template-argument-warning' => "'''Obral !''' Batu bu va tanoya lumarsafa tezafa dusiva iclo ruldar.
+Bata dusiva zo tiolteyed.",
 'post-expand-template-argument-category' => 'Bu ruldasu va vulkuna tezadusiva',
 
 # "Undo" feature
@@ -653,6 +718,7 @@ Bazeyena lazava ke $3 tir ''$2''.",
 'histlegend' => 'Pebusiki : (noel-) = amiduca gu noelaf siatos ,
 (iron-) = amiduca gu abdif siatos, <b>m</b> = betamaks',
 'history-fieldset-title' => 'Izvotexulera',
+'history-show-deleted' => 'Va anton sulaks',
 'histfirst' => 'Tel losavsaf',
 'histlast' => 'Ironokaf',
 'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
@@ -671,9 +737,12 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
 'rev-deleted-user' => '(tiolteyen favesikyolt)',
 'rev-deleted-event' => '(tiolteyen "log" skuks)',
 'rev-delundel' => 'nedira / palsera',
+'rev-showdeleted' => 'Nedira',
 'revisiondelete' => 'Sulasa ik volsulasa betara',
 'revdelete-nooldid-title' => 'Meenafa xalafa betara',
 'revdelete-nooldid-text' => 'Ta skura va bati fli, ont rin va jalaf betaks me bazeyel, ont yawayal da va noeltaf betaks palsel.',
+'revdelete-no-file' => 'Bazen iyeltak me krulder.',
+'revdelete-show-file-submit' => 'En',
 'revdelete-selected' => "'''{{PLURAL:$2|Reban betaks|Yon reban betaks}} va [[:$1]]:'''",
 'logdelete-selected' => "'''{{PLURAL:\$1|Reban \"log\" bif|Yon reban \"log\" bif}} :'''",
 'revdelete-legend' => 'Skus irutareem',
@@ -683,6 +752,9 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
 'revdelete-hide-comment' => 'Palsera va betarasebusiki',
 'revdelete-hide-user' => 'Palsera va sutes favesikyolt iku IP mane',
 'revdelete-hide-restricted' => 'Rewara va bat irutareem pu kot ristusik az elekara va bati walasiki',
+'revdelete-radio-same' => '(videra)',
+'revdelete-radio-set' => 'En',
+'revdelete-radio-unset' => 'Me',
 'revdelete-suppress' => 'Origsulara mal ristusik lidam artan',
 'revdelete-unsuppress' => 'Dimirutara va dimplekun betaks yo',
 'revdelete-log' => 'Lazava :',
@@ -690,9 +762,13 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
 'revdelete-success' => "'''Kiewaskinon plekuyuna betarafa rowinuca.'''",
 'logdelete-success' => "'''Kiewaskinon plekuyuna bifafa rowinuca.'''",
 'revdel-restore' => 'Betara va rowinuca',
+'revdel-restore-deleted' => 'Sulayan betaks',
+'revdel-restore-visible' => 'Rowin betaks',
 'pagehist' => 'Buizvot',
 'deletedhist' => 'Sularizvot',
+'revdelete-reasonotherlist' => 'Ara lazava',
 'revdelete-edit-reasonlist' => 'Betara va sularalazava',
+'revdelete-offender' => 'Betasik :',
 
 # Suppression log
 'suppressionlog' => 'Sulara "log"',
@@ -706,7 +782,7 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
 'mergehistory-go' => 'Nedira va rojoan betakseem',
 'mergehistory-submit' => 'Joara va betakseem',
 'mergehistory-empty' => 'Mek rojoan betaks.',
-'mergehistory-success' => '$3 betaks va [[:$1]] joanhayan ko [[:$2]].',
+'mergehistory-success' => '$3 {{PLURAL:$3|betara|betara}} va [[:$1]] joanyayan ko [[:$2]].',
 'mergehistory-fail' => 'Skura va jera va izvot tir merotisa, va bu is evladoreem vay tolstujel !',
 'mergehistory-no-source' => '$1 klitabu me tir.',
 'mergehistory-no-destination' => '$1 jalabu me tir.',
@@ -715,6 +791,7 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
 'mergehistory-autocomment' => '[[:$1]] jeayan do [[:$2]]',
 'mergehistory-comment' => '[[:$1]] jeayan do [[:$2]] : $3',
 'mergehistory-same-destination' => 'Buklita is bugraskaxo vol rotid milafo',
+'mergehistory-reason' => 'Lazava',
 
 # Merge log
 'mergelog' => 'Va "log" joara',
@@ -725,10 +802,12 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
 # Diffs
 'history-title' => 'Va "$1" betarizvot',
 'difference' => '(Siatosamidaceem)',
-'lineno' => 'Conha $1:',
-'compareselectedversions' => 'Dodisukera va reban siatos yo',
+'difference-multipage' => '(Amiduca wal batu bu isu banu)',
+'lineno' => 'Conya $1:',
+'compareselectedversions' => 'Dodisukera va toloy reban siatos',
+'showhideselectedversions' => 'Nedira/palsera va reban betaks',
 'editundo' => 'dimaskira',
-'diff-multi' => '({{PLURAL:$1|1 walif betaks me zo nedir|$1 walif betaks me zo nedid}}.)',
+'diff-multi' => '({{PLURAL:$1|1 walif betaks|$1 walif betaks}} gan {{PLURAL:$2|tanoy webesik|$2 webesik}} me zo nedid)',
 
 # Search results
 'searchresults' => 'Aneyaradanekseem',
@@ -743,14 +822,25 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
 'notextmatches' => 'Mek krentvergumvelt ruldas va erune',
 'prevn' => '{{PLURAL:$1|$1}} abduef',
 'nextn' => '{{PLURAL:$1|$1}} radimef',
+'prevn-title' => 'Abdif $1 {{PLURAL:$1|trasiks|trasiks}}',
+'nextn-title' => 'Kaikef $1 {{PLURAL:$1|trasiks|trasiks}}',
+'shown-title' => 'Nedira va $1 {{PLURAL:$1|trasiks|trasiks}} tanbuon',
 'viewprevnext' => 'Va ($1 {{int:pipe-separator}} $2) ik ($3) disukel.',
+'searchmenu-exists' => "'''Ixam bu yoltkirafu gu \"[[:\$1]]\" dene bati wiki.'''",
+'searchmenu-new' => "'''Redura va bu \"[[:\$1]]\" den bati wiki!'''",
 'searchhelp-url' => 'Help:Pomara',
-'searchprofile-images' => 'Iyeltak',
+'searchprofile-articles' => 'Teliz',
+'searchprofile-project' => 'Pomarabu ik abdumimaksbu',
+'searchprofile-images' => 'Jonkanaca',
 'searchprofile-everything' => 'Kotcoba',
+'searchprofile-advanced' => 'Lof',
 'searchprofile-articles-tooltip' => 'Aneyara ko $1',
 'searchprofile-project-tooltip' => 'Aneyara ko $1',
 'searchprofile-images-tooltip' => 'Aneyara va iyeltak',
+'searchprofile-everything-tooltip' => 'Aneyara va kotaf cek (don prilarabu)',
+'searchprofile-advanced-tooltip' => 'Aneyara ko pilkovafo yoltxo',
 'search-result-size' => '$1 ({{PLURAL:$2|1 trogarn|$2 trogarn}})',
+'search-result-category-size' => '{{PLURAL:$1|1 bewik|$1 bewik}} ({{PLURAL:$2|1 volveyloma|$2 volveyloma}}, {{PLURAL:$3|1 iyeltak|$3 iyeltak}})',
 'search-result-score' => 'Vadjereka : $1%',
 'search-redirect' => '(graskara va $1)',
 'search-section' => '($1 gabot)',
@@ -762,17 +852,22 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
 'search-mwsuggest-disabled' => 'meka tiavera',
 'search-relatedarticle' => 'Skedaf',
 'mwsuggest-disable' => 'Gritegirara va AJAX tiavera',
+'searcheverything-enable' => 'Aneyara ko koto yoltxo',
 'searchrelated' => 'skedaf',
 'searchall' => 'kot',
 'showingresults' => "Vlevefa nedira va {{PLURAL:$1|'''1''' trasiks|'''$1''' trasiks}} dem #'''$2''' toza.",
 'showingresultsnum' => "Nedira va '''$3''' trasiks male #'''$2'''.",
+'showingresultsheader' => "{{PLURAL:$5|Trasiks '''$1''' ke '''$3'''|Trasiks '''$1 - $2''' ke '''$3'''}} icde '''$4'''",
 'nonefound' => "'''Straga''': Anton yoltxo omavon zo aneyar.
 Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce abdueosta va galpeno yoltxo favel.",
+'search-nonefound' => 'Mek trasiks vas kucilara',
 'powersearch' => 'Aneyara',
 'powersearch-legend' => 'Aneyapara',
 'powersearch-ns' => 'Aneyara koe yoltxo:',
 'powersearch-redir' => 'Vexalara va graskara',
 'powersearch-field' => 'Aneyara va',
+'powersearch-toggleall' => 'Kot',
+'powersearch-togglenone' => 'Mek',
 'search-external' => 'Divafa aneyara',
 'searchdisabled' => "<p>La fonction de recherche sur l'intégralité du texte a été temporairement désactivée à cause de la grande charge que cela impose au serveur. Nous espérons la rétablir prochainement lorsque nous disposerons d'un serveur plus puissant. En attendant, vous pouvez faire la recherche avec Google:</p>",
 
@@ -799,11 +894,12 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
 'prefs-rc' => 'Noeltaf betakseem',
 'prefs-watchlist' => 'Suzdasiki',
 'prefs-watchlist-days' => 'Cugafa vielota gonedina koe suzdasiki :',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Cugon $1 {{PLURAL:$1|viel|viel}}',
 'prefs-watchlist-edits' => 'Betaracugota gonedina koe mantafi suzdasiki :',
 'prefs-watchlist-edits-max' => 'Cugafa ota : 1000',
 'prefs-misc' => 'Gedrafa lodamaca yo',
 'prefs-resetpass' => 'Betara va remravlem',
+'prefs-rendering' => 'Laviuca',
 'saveprefs' => 'Va lodamaceem tuená',
 'resetprefs' => 'Va lodamceem dimplekú',
 'prefs-editing' => 'Sutelaxo',
@@ -821,10 +917,20 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
 'timezoneoffset' => 'Bartivferenuca :',
 'servertime' => 'Bartiv ke zanisiko :',
 'guesstimezone' => 'Favera va voda ke exulesiki',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktika',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Atlantika welfa',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'India welfa',
+'timezoneregion-pacific' => 'Pacifika welfa',
 'allowemail' => 'Tutegirara va e-mail staksara mal ar favesik',
 'prefs-searchoptions' => 'Aneyarikatcura',
 'prefs-namespaces' => 'Yoltxo',
-'defaultns' => 'Omavon, aneyara ko bato yoltxo se :',
+'defaultns' => 'Omavon, aneyara ko batyono yoltxo :',
 'default' => 'omava',
 'prefs-files' => 'Iyeltak se',
 'youremail' => 'Jinafe internetmane',
@@ -839,9 +945,14 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
 Gotir le $1 {{PLURAL:$1|staa|staa}}.',
 'email' => '"E-mail"',
 'prefs-help-realname' => '* <strong>Votre nom</strong> (mevrebaf): ede vaon co-bazel, mu gara va rinaf webereem zo faveter.',
-'prefs-help-email' => "* <strong>Adresse électronique</strong> (facultatif): permet de vous contacter depuis le site sans dévoiler votre adresse, et utilisée pour vous envoyer un nouveau mot de passe si vous l'oubliez.",
+'prefs-help-email' => 'E-mail mane tir rotikatcune vox adrafe gu betara va remravlem todon gu vulkura va bat.',
+'prefs-help-email-others' => 'Dere ronaral da rictal da artan va rin kan e-mail is gluyasiki moe rinafu favesikbu oku prilarabu rotuzerar.
+Rinafe e-mail mane me zo razdar viele ar webesik uzerar.',
 'prefs-help-email-required' => 'E-mail mane zo kucilar.',
 
+# User preference: e-mail validation using jQuery
+'email-address-validity-invalid' => 'Va enafe e-mail mane bazel',
+
 # User rights
 'userrights' => 'Pofera va favesikrokeem',
 'userrights-lookup-user' => 'Pofera va favesikeem',
@@ -855,7 +966,7 @@ Gotir le $1 {{PLURAL:$1|staa|staa}}.',
 'userrights-no-interwiki' => 'Va favesikroka koe ari wiki me robetal.',
 'userrights-nodatabase' => '$1 origak me krulder oke me tir lizukaf.',
 'userrights-nologin' => 'Ta tentura va favesikroka gotil [[Special:UserLogin|dogluyan]] kan ristusikpata.',
-'userrights-notallowed' => 'Rinafa pata va tentura va favesikroka me rictar.',
+'userrights-notallowed' => 'Rinafa pata va favesikroka me ronoloplekur oke ronosular.',
 'userrights-changeable-col' => 'Yona rinon robetana lospa',
 'userrights-unchangeable-col' => 'Yona rinon merobetana lospa',
 
@@ -869,12 +980,12 @@ Gotir le $1 {{PLURAL:$1|staa|staa}}.',
 'group-suppress' => 'Rokla',
 'group-all' => '(kot)',
 
-'group-user-member' => '{{GENDER:$1|Favesik}}',
-'group-autoconfirmed-member' => 'Miv gruyeyen favesik',
-'group-bot-member' => 'Stiernik',
-'group-sysop-member' => 'Ristusik',
-'group-bureaucrat-member' => 'Stujesik',
-'group-suppress-member' => 'Rokla',
+'group-user-member' => '{{GENDER:$1|favesik}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|miv gruyeyen favesik}}',
+'group-bot-member' => '{{GENDER:$1|stiernik}}',
+'group-sysop-member' => '{{GENDER:$1|ristusik}}',
+'group-bureaucrat-member' => '{{GENDER:$1|stujesik}}',
+'group-suppress-member' => '{{GENDER:$1|rokla}}',
 
 'grouppage-user' => '{{ns:project}}:Favesikeem',
 'grouppage-autoconfirmed' => '{{ns:project}}:Miv gruyeyen favesik yo',
@@ -958,6 +1069,10 @@ Gotir le $1 {{PLURAL:$1|staa|staa}}.',
 'recentchanges-legend' => 'Ikatcuks ke noeltaf betaks',
 'recentchangestext' => 'Moo batu bu va ironokaf betakseem ke {{SITENAME}} suzdal.',
 'recentchanges-feed-description' => 'Sledara va tel lonoeltaf betakseem va wiki koo bat rust.',
+'recentchanges-label-newpage' => 'Bata betara va warzafu bu reduyur',
+'recentchanges-label-minor' => 'Betamaks',
+'recentchanges-label-bot' => 'Bata betara gan "bot" zo sopuyur',
+'recentchanges-label-unpatrolled' => 'Bat betaks men al zo fier',
 'rcnote' => "Vleveon {{PLURAL:$1|'''1''' betaks tir|ironokaf '''$1''' betaks tid}} bak ironokaf {{PLURAL:$2|viel|'''$2''' viel}}, wetce $5 ik $4.",
 'rcnotefrom' => 'Tir skuyun betakseem mali <strong>$2</strong> (<b>$1</b> cugon).',
 'rclistfrom' => 'Nedira va warzaf betakseem mali $1.',
@@ -1012,7 +1127,7 @@ Ta kobura va iyeltak, koe tazukasiki va gluyasiki favel
 'upload-preferred' => 'Abdualban iyeltakordeem : $1.',
 'upload-prohibited' => 'Poun iyeltakordeem : $1.',
 'uploadlog' => "log d'upload",
-'uploadlogpage' => "Log_d'upload",
+'uploadlogpage' => 'Kalvajaraf "log"',
 'uploadlogpagetext' => 'Tir vexala dem ironokaf kalvajayan iyeltak. Va [[Special:NewFiles|ginsa dem warzaf iyeltak]] wil ta lowiafa wigara.',
 'filename' => 'Yolt',
 'filedesc' => 'Pimtara',
@@ -1074,7 +1189,7 @@ Ede va man iyeltak soe co-djukalvajal, vay dimpil ise va warzaf yolt favel. [[Fi
 'upload-curl-error28' => 'Kalvajara kaikiana',
 
 'license' => 'Gelfara :',
-'license-header' => 'Gelfara :',
+'license-header' => 'Sortara :',
 'nolicense' => 'Mecoba rebana',
 'license-nopreview' => '(Abdinedira me zo roderaykar)',
 'upload_source_url' => ' (enafe sanegon rovansane URL mane)',
@@ -1106,12 +1221,14 @@ Ede va man iyeltak soe co-djukalvajal, vay dimpil ise va warzaf yolt favel. [[Fi
 'filehist-dimensions' => 'Lumeem',
 'filehist-filesize' => 'Iyeltakaldo',
 'filehist-comment' => 'Sebuks',
-'imagelinks' => 'Yoni iyeltakgluyasiki',
+'imagelinks' => 'Favera va iyeltak',
 'linkstoimage' => 'Vlevefi {{PLURAL:$1|bugluyasiki|$1 bugluyasiki}} va bat iyeltak :',
 'nolinkstoimage' => 'Meku bu va bata ewava ruldar.',
 'morelinkstoimage' => 'Rupera va [[Special:WhatLinksHere/$1|lofi skedasiki]] va bat iyeltak.',
 'duplicatesoffile' => 'Bat {{PLURAL:$1|iyeltak tir|$1 iyeltak tid}} jontolaca ke bat iyeltak ([[Special:FileDuplicateSearch/$2|lo pinta]]) :',
 'sharedupload' => 'Bat iyeltak tir ke $1 ise gan ar abdumimaks zo rofaver.',
+'sharedupload-desc-here' => 'Bat iyeltak tir mal $1 ise gan yonar abdumimaks rotir zo faver.
+Pimtara moe inafu [$2 iyeltakbu] vleveon zo nedir.',
 'uploadnewversion-linktext' => 'Kalvajara va warzaf siatos ke bat iyeltak',
 
 # File reversion
@@ -1236,6 +1353,7 @@ Abdi sulara, setikel da va ari skedasiki va teza stujel.',
 'listusers' => 'Pakesikeem',
 'listusers-editsonly' => 'Va yon betayas favesik anton nedir',
 'usereditcount' => '$1 {{PLURAL:$1|betara|betara}}',
+'usercreated' => '{{GENDER:$3|Reduyun}} ba $1 ba $2',
 'newpages' => 'Warzaf bueem',
 'newpages-username' => 'Favesikyolt :',
 'ancientpages' => 'Losavsaf telizeem',
@@ -1252,7 +1370,7 @@ Abdi sulara, setikel da va ari skedasiki va teza stujel.',
 'suppress' => 'Rokla',
 
 # Book sources
-'booksources' => 'Vuestes suteks yo',
+'booksources' => 'Vuestes suteks',
 'booksources-search-legend' => 'Aneyara va nevaklita',
 'booksources-go' => 'Rupera',
 
@@ -1296,6 +1414,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'linksearch' => 'Divafi gluyasiki',
 'linksearch-ns' => 'Yoltxo :',
 'linksearch-ok' => 'Aneyara',
+'linksearch-line' => '$1 gluyan mal $2',
 
 # Special:ListUsers
 'listusersfrom' => 'Fintara va favesikeem male :',
@@ -1343,6 +1462,7 @@ L'adresse électronique que vous avez indiquée dans vos préférences apparaît
 # Watchlist
 'watchlist' => 'Suzdasiki',
 'mywatchlist' => 'Jinafi suzdasiki',
+'watchlistfor2' => 'Va $1 $2',
 'nowatchlist' => 'Rinafi suzdasiki va nedoy teliz ruldar.',
 'watchlistanontext' => 'Ta wira ik betara va ra ke rinafi suzdasiki vay $1.',
 'watchnologin' => 'Dogluyariskaf',
@@ -1422,6 +1542,7 @@ Feedback and further assistance:
 'confirmdeletetext' => 'Rin va bu is varaf izvot fu sulal.
 Vay gruyel da djuskul ise va maletireem vangrupel ise tarkason va [[{{MediaWiki:Policy-url}}|xoverteem]] askil !',
 'actioncomplete' => 'Skuyuna sulara',
+'actionfailed' => 'Rodjeyesa tegira',
 'deletedtext' => '« $1 » tir sulayan.
 Ta vexala dem noeltaf sulareem va $2 disukel.',
 'dellogpage' => 'Izvot va sulareem',
@@ -1510,6 +1631,7 @@ Si une nouvelle page avec le même nom a été créée depuis la suppression, le
 'undelete-nodiff' => 'Mek abdif betaks trasin.',
 'undeletebtn' => 'Skura va dimplekura !',
 'undeletelink' => 'wira ik dimplekura',
+'undeleteviewlink' => 'wira',
 'undeletereset' => 'Tolplekura',
 'undeletecomment' => 'Sebuks :',
 'undeletedrevisions' => '$1 siatos dimplekuyun',
@@ -1537,7 +1659,7 @@ $1',
 'contributions' => 'Webereem ke favesik',
 'contributions-title' => 'Favesikwebekseem icde $1',
 'mycontris' => 'Jinaf webekseem',
-'contribsub2' => 'Tori $1 ($2)',
+'contribsub2' => 'Ke $1 ($2)',
 'nocontribs' => 'Meka betara vadjesa va bata luda se al zo trasir.',
 'uctop' => ' (ironokaf)',
 'month' => 'Mali aksat (is logaveon) :',
@@ -1547,10 +1669,13 @@ $1',
 'sp-contributions-newbies-sub' => 'Tori warzaf favesikeem',
 'sp-contributions-blocklog' => 'Elekara va "log" bu',
 'sp-contributions-deleted' => 'Sulayan favesikaf webeks',
-'sp-contributions-talk' => 'Keyaksera',
+'sp-contributions-uploads' => 'kalvajara',
+'sp-contributions-logs' => '"logs"',
+'sp-contributions-talk' => 'Prilara',
 'sp-contributions-userrights' => 'Pofera va favesikrokeem',
 'sp-contributions-search' => 'Aneyara va webeks',
 'sp-contributions-username' => 'IP mane ok favesikyolt :',
+'sp-contributions-toponly' => 'Antafa nedira va ironokaf betakseem',
 'sp-contributions-submit' => 'Aneyara',
 
 # What links here
@@ -1565,7 +1690,7 @@ $1',
 'isimage' => 'skedasiki va ewava',
 'whatlinkshere-prev' => '{{PLURAL:$1|abduef|abduef $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|radimef|radimef $1}}',
-'whatlinkshere-links' => '← gluyasiki se',
+'whatlinkshere-links' => '← gluyasiki',
 'whatlinkshere-hideredirs' => '$1 graskara',
 'whatlinkshere-hidetrans' => '$1 "transclusion"',
 'whatlinkshere-hidelinks' => '$1 gluyasiki',
@@ -1603,7 +1728,7 @@ male abdion elekayane IP mane.',
 'ipusubmit' => 'Grielekara va bate mane',
 'unblocked' => '[[User:$1|$1]] su zo dimelekar',
 'unblocked-id' => 'Dimelekara va $1 su zo skur',
-'ipblocklist' => 'Elekayane IP mane isu favesikyolt',
+'ipblocklist' => 'Elekayan webesik',
 'ipblocklist-legend' => 'Trasira va elekan favesik',
 'ipblocklist-submit' => 'Aneyara',
 'infiniteblock' => 'parmaf',
@@ -1801,7 +1926,7 @@ Va [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] is [//translat
 'tooltip-n-randompage' => 'Vajara va xuyavafu bu',
 'tooltip-n-help' => 'Trasixo.',
 'tooltip-t-whatlinkshere' => 'Batliz gluyas wikibueem',
-'tooltip-t-recentchangeslinked' => 'Noeltaf betakseem koe bu yo skedasu va batu',
+'tooltip-t-recentchangeslinked' => 'Noeltaf betakseem koe kotu bu skedasu va batu bu',
 'tooltip-feed-rss' => 'RSS rust icde batu bu',
 'tooltip-feed-atom' => 'Atom rust icde batu bu',
 'tooltip-t-contributions' => 'Wira va webekseem ke bat favesik',
@@ -1809,7 +1934,7 @@ Va [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] is [//translat
 'tooltip-t-upload' => 'Kalvajara va iyeltak',
 'tooltip-t-specialpages' => 'Aptabueem',
 'tooltip-t-print' => 'Rorubian siatos ke batu bu',
-'tooltip-t-permalink' => 'Elubkafi gluyasiki va bat busiatos',
+'tooltip-t-permalink' => 'Elupkafi gluyasiki va bat busiatos',
 'tooltip-ca-nstab-main' => 'Rupera va cekbu',
 'tooltip-ca-nstab-user' => 'Wira va favesikbu',
 'tooltip-ca-nstab-media' => 'Wira va kanacabu',
@@ -1831,6 +1956,7 @@ Va [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] is [//translat
 'tooltip-rollback' => '"Rollback" kan tanoya vulegara va betaks va batu bu kal ironokaf webesik kuider',
 'tooltip-undo' => '"Dimbetara"  va bata betara kuider ise va tazukasiki abdiwison fenkur.
 Ise va bazera va lazava ko vildeks nover.',
+'tooltip-summary' => 'Va vildeksam bazel',
 
 # Metadata
 'notacceptable' => 'Ce serveur wiki ne peut pas fournir les données dans un format que votre client est capable de lire.',
@@ -1905,15 +2031,15 @@ $1',
 # Bad image list
 'bad_image_list' => 'Breviz tir bat :
 
-Anton vexalolk (conha dem * toza) zo krafiar. Teli taneafi gluyasiki moe conha lanon tir van ewavaja.
-Kotari milconhafi gluyasiki roklon zo krafiar.',
+Anton vexalolk (conya dem * toza) zo krafiar. Teli taneafi gluyasiki moe conya lanon tir van ewavaja.
+Kotari milconyafi gluyasiki roklon zo krafiar.',
 
 # Metadata
 'metadata' => 'Veyorigeem',
-'metadata-help' => 'Bat iyeltak va loplekufa giva ruldar. Bata giva male reduso ok tuotukaso wanuyasiko iku ksudasiko lanon zo loplekuyur. Ede iyeltak malion di zo betayar, konaka pinta va betayana ewava rotir me co-tcazenhed.',
+'metadata-help' => 'Bat iyeltak va loplekufa giva ruldar. Bata giva male reduso ok tuotukaso wanuyasiko iku ksudasiko lanon zo loplekuyur. Ede iyeltak malion di zo betayar, konaka pinta va betayana ewava rotir me co-tcazenyed.',
 'metadata-expand' => 'Nedira va pintapeem',
 'metadata-collapse' => 'Palsera va pintapeem',
-'metadata-fields' => 'Divatceson va veyorigak EXIF veyorigafa rapta se vexalana koe bata staksa zo ko ewavabu zo kodoplekutud. Ara rapta omavon zo palseter.
+'metadata-fields' => 'Ewavafa rapta vexalana koe bata staksa ko ewavabu zo kodoplekutud. Ara rapta omavon zo palseter.
 * make
 * model
 * datetimeoriginal
@@ -2212,6 +2338,7 @@ This confirmation code will expire at $4.',
 
 # Core parser functions
 'unknown_extension_tag' => '"$1" megrupena divatcenafa tcala',
+'duplicate-defaultsort' => '\'\'\'OBRAL !\'\'\' "$2" omavafa muberamarna va "$1" tela abdifa selur.',
 
 # Special:Version
 'version' => 'Siatos',
@@ -2260,6 +2387,9 @@ This confirmation code will expire at $4.',
 # Special:BlankPage
 'blankpage' => 'Butuvlardara',
 
+# Special:Tags
+'tag-filter' => '[[Special:Tags|Tag]] espara:',
+
 # New logging system
 'revdelete-restricted' => 'irutara rewana pu ristusik',
 'revdelete-unrestricted' => 'irutara tiolteyena pu ristusik',
index a93b367..039ec52 100644 (file)
@@ -641,7 +641,7 @@ $2',
 Прычына забароны: ''$2''.",
 'filereadonlyerror' => 'Немагчыма зьмяніць файл «$1», бо файлавае сховішча «$2» знаходзіцца ў рэжыме толькі для чытаньня
 
\9fазнаÑ\87анаÑ\8f Ð¿Ñ\80Ñ\8bÑ\87Ñ\8bна: «$3».',
\90дмÑ\96нÑ\96Ñ\81Ñ\82Ñ\80аÑ\82аÑ\80, Ñ\8fкÑ\96 Ð°Ð±Ð¼ÐµÐ¶Ð°Ð²Ð°Ñ\9e Ð´Ð¾Ñ\81Ñ\82Ñ\83п, Ð¿Ð°Ð·Ð½Ð°Ñ\87Ñ\8bÑ\9e Ð¿Ñ\80Ñ\8bÑ\87Ñ\8bнÑ\83: «$3».',
 
 # Virus scanner
 'virus-badscanner' => "Няслушная канфігурацыя: невядомы антывірусны сканэр: ''$1''",
@@ -814,8 +814,8 @@ $2
 'changeemail-cancel' => 'Скасаваць',
 
 # Edit page toolbar
-'bold_sample' => 'ТлÑ\83сты тэкст',
-'bold_tip' => 'ТлÑ\83сты тэкст',
+'bold_sample' => 'ТоÑ\9eсты тэкст',
+'bold_tip' => 'ТоÑ\9eсты тэкст',
 'italic_sample' => 'Курсіўны тэкст',
 'italic_tip' => 'Курсіўны тэкст',
 'link_sample' => 'Загаловак спасылкі',
@@ -1006,6 +1006,7 @@ $2
 'edit-no-change' => 'Вашае рэдагаваньне было праігнараванае, таму што ў тэкст не былі ўнесеныя зьмены.',
 'edit-already-exists' => 'Немагчыма стварыць новую старонку.
 Яна ўжо існуе.',
+'defaultmessagetext' => 'Перадвызначаны тэкст паведамленьня',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Папярэджаньне: гэтая старонка ўтрымлівае зашмат працаёмістых зваротаў да функцыяў парсэра.
@@ -1310,7 +1311,7 @@ $1",
 'prefs-rendering' => 'Выгляд',
 'saveprefs' => 'Захаваць',
 'resetprefs' => 'Скінуць',
-'restoreprefs' => 'Ð\92Ñ\8fÑ\80нÑ\83Ñ\86Ñ\8c Ñ\83Ñ\81е Ð½Ð°Ñ\81Ñ\82Ñ\80ойкÑ\96 Ð¿Ð° Ð·Ð¼Ð¾Ñ\9eÑ\87ванÑ\8cнÑ\96',
+'restoreprefs' => 'СкÑ\96нÑ\83Ñ\86Ñ\8c Ð´Ð° Ð¿ÐµÑ\80адвÑ\8bзнаÑ\87анÑ\8bÑ\85 Ð½Ð°Ð»Ð°Ð´Ð°Ñ\9e',
 'prefs-editing' => 'Рэдагаваньне',
 'prefs-edit-boxsize' => 'Памер акна рэдагаваньня.',
 'rows' => 'Радкоў:',
@@ -1759,6 +1760,7 @@ $1',
 'backend-fail-contenttype' => 'Немагчыма вызначыць тып зьместу файла, які мусіць быць захаваны ў «$1».',
 'backend-fail-batchsize' => 'Cховішча атрымала блёк з $1 {{PLURAL:$1|файлавай апэрацыі|файлавых апэрацыяў|файлавых апэрацыяў}}; абмежаваньне складае $2 {{PLURAL:$2|апэрацыю|апэрацыі|апэрацыяў}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Не атрымалася злучыцца з базай зьвестак журнала для сховішча «$1».',
 'filejournal-fail-dbquery' => 'Не атрымалася абнавіць базу зьвестак журнала для сховішча «$1».',
 
index 3aff0e7..a9a7847 100644 (file)
@@ -652,6 +652,7 @@ A-raok na vije kaset postel ebet d'ar gont-se e vo ret deoc'h heuliañ ar c'huzu
 'invalidemailaddress' => "N'haller ket degemer ar chomlec'h postel-mañ rak faziek eo e furmad evit doare.
 Merkit ur chomlec'h reizh pe goullonderit ar vaezienn-mañ.",
 'cannotchangeemail' => "N'haller ket cheñch chomlec'hioù postel ar c'hontoù war ar wiki-mañ.",
+'emaildisabled' => "N'haller ket kas posteloù dre al lec'hienn-mañ.",
 'accountcreated' => 'Kont krouet',
 'accountcreatedtext' => 'Krouet eo bet kont implijer $1.',
 'createaccount-title' => 'Krouiñ ur gont war {{SITENAME}}',
@@ -848,7 +849,7 @@ Dindan emañ merket moned diwezhañ marilh ar stankadennoù, d'ho kelaouiñ :",
 'updated' => '(Hizivaet)',
 'note' => "'''Notenn :'''",
 'previewnote' => "'''Diwallit mat, n'eus ken ur rakweled eus an destenn-mañ.'''
-N'eo ket bet enrollet ho kemmoù evit c'hoazh !'''",
+N'eo ket bet enrollet ho kemmoù evit c'hoazh ! [[#editform|→ Kenderc'hel da gemmañ]]",
 'previewconflict' => 'Gant ar rakweled e teu testenn ar bajenn war wel evel ma vo pa vo bet enrollet.',
 'session_fail_preview' => "'''Ho tigarez! N'eus ket bet tu da enrollañ ho kemmoù rak kollet eo bet roadennoù an dalc'h.'''
 Klaskit en-dro mar plij.
@@ -863,6 +864,7 @@ Mar ned a ket en-dro, klaskit [[Special:UserLogout|digevreañ]] ha kevreañ en-d
 C'hoarvezout a ra a-wechoù pa implijit ur servijer proksi dreinek dizanav.'''",
 'edit_form_incomplete' => "'''Darn eus ar furmskrid kemmañ zo chomet hep tizhout ar servijer ; gwiriit ervat emañ mat ho kemmoù tre evel m'int bet graet ganeoc'h ha klaskit en-dro.'''",
 'editing' => "Oc'h aozañ $1",
+'creating' => 'O krouiñ $1',
 'editingsection' => "Oc'h aozañ $1 (rann)",
 'editingcomment' => "Oc'h aozañ $1 (rann nevez)",
 'editconflict' => 'tabut kemmañ : $1',
@@ -1682,6 +1684,10 @@ Ma talc'h ar gudenn, kit e darempred gant [[Special:ListUsers/sysop|merourien ar
 'backend-fail-contenttype' => 'Dibosupl termeniñ ar seurt danvez da enrollañ e "$1".',
 'backend-fail-batchsize' => 'Pourvezet he deus an dermenell stokañ ur pakad a $1 {{PLURAL:$1|oberiadenn|oberiadenn}}; sevel a ra ar vevenn da $2 {{PLURAL:$2|oberiadenn|oberiadenn}}.',
 
+# File journal errors
+'filejournal-fail-dbconnect' => 'N\'eus ket bet gallet kevreañ ouzh diaz roadennoù ar marilh evit an dermenell stokañ "$1".',
+'filejournal-fail-dbquery' => 'N\'eus ket bet gallet hizivaat diaz roadennoù marilh an dermenell stokañ "$1".',
+
 # Lock manager
 'lockmanager-notlocked' => 'Dibosupl dibrennañ "$1"; n\'eo ket prennet.',
 'lockmanager-fail-closelock' => 'Dibosupl serriñ ar restr prennañ evit "$1".',
@@ -1798,6 +1804,10 @@ Ur [[Special:WhatLinksHere/$2|roll klok]] a c'haller da gaout.",
 Mar fell deoc'h gouzout hiroc'h sellit ouzh [$2 ar bajenn zeskrivañ].",
 'sharedupload-desc-here' => 'Tennet eo ar restr-mañ eus $1 ha gallout a ra bezañ implijet evit raktresoù all.
 Diskouezet eo deskrivadur he [$2 fajenn zeskrivañ] amañ dindan.',
+'sharedupload-desc-edit' => "Dont a ra ar restr-mañ eus $1 hag ober ganti a c'haller evit raktresoù all.
+Marteze a-walc'h e fell deoc'h kemmañ an deskrivadur anezhi war ar [$2 bajenn deskrivañ] amañ.",
+'sharedupload-desc-create' => "Dont a ra ar restr-mañ eus $1 hag ober ganti a c'haller evit raktresoù all.
+Marteze a-walc'h e fell deoc'h kemmañ an deskrivadur anezhi war ar [$2 bajenn deskrivañ] aze.",
 'filepage-nofile' => "N'eus restr ebet dezhi an anv-se.",
 'filepage-nofile-link' => "N'eus restr ebet dezhi an anv-se, met gallout a rit [$1 pellgargañ anezhi].",
 'uploadnewversion-linktext' => 'Kargañ ur stumm nevez eus ar restr-mañ',
@@ -2009,6 +2019,7 @@ Gallout a rit strishaat ar mod diskwel en ur zibab ar marilh, an anv implijer (d
 'allpagesprefix' => 'Diskouez ar pajennoù a grog gant :',
 'allpagesbadtitle' => "Fall e oa anv ar bajenn lakaet pe neuze ez eus ennañ ur rakger etrewiki pe etreyezhoù. Evit doare ez arouezennoù n'haller ket implijout en titloù.",
 'allpages-bad-ns' => 'N\'eus ket a esaouenn anv anvet "$1" war {{SITENAME}}.',
+'allpages-hide-redirects' => 'Kuzhat an adkasoù',
 
 # Special:Categories
 'categories' => 'Roll ar rummadoù',
index f1bdc1f..7f4276a 100644 (file)
@@ -848,8 +848,8 @@ Per més detalls, la darrera entrada del registre es mostra a continuació:",
 'userinvalidcssjstitle' => "'''Atenció:''' No existeix l'aparença «$1». Recordeu que les subpàgines personalitzades amb extensions .css i .js utilitzen el títol en minúscules, per exemple, {{ns:user}}:NOM/vector.css no és el mateix que {{ns:user}}:NOM/Vector.css.",
 'updated' => '(Actualitzat)',
 'note' => "'''Nota:'''",
-'previewnote' => "'''Recordeu que això només és una previsualització.'''
-Els vostres canvis encara no s'han desat!",
+'previewnote' => "'''Recorda que això és només una previsualització.'''
+Els vostres canvis encara no s'han desat! [[#editform|→ Continuar editant]]",
 'previewconflict' => "Aquesta previsualització reflecteix, a l'àrea
 d'edició superior, el text tal i com apareixerà si trieu desar-lo.",
 'session_fail_preview' => "'''No s'ha pogut processar la vostra modificació a causa d'una pèrdua de dades de la sessió.
@@ -1980,7 +1980,7 @@ Tingueu en compte que altres llocs web poden enllaçar un fitxer amb un URL dire
 'log' => 'Registres',
 'all-logs-page' => 'Tots els registres públics',
 'alllogstext' => "Presentació combinada de tots els registres disponibles de {{SITENAME}}.
-Podeu reduir l'extensió seleccionant el tipus de registre, el nom del usuari (distingeix entre majúscules i minúscules), o la pàgina afectada (també en distingeix).",
+Podeu reduir l'extensió seleccionant el tipus de registre, el nom d'usuari realitzador (distingeix entre majúscules i minúscules), o la pàgina objectiu (també en distingeix).",
 'logempty' => 'No hi ha cap coincidència en el registre.',
 'log-title-wildcard' => 'Cerca els títols que comencin amb aquest text',
 
index 701d3c3..8100d12 100644 (file)
@@ -739,7 +739,7 @@ $2',
 'titleprotected' => "Stránku s tímto názvem nelze založit, protože název zamknul uživatel [[User:$1|$1]] s odůvodněním: ''$2''.",
 'filereadonlyerror' => "Nelze změnit soubor „$1“, protože úložiště souborů „$2“ je momentálně pouze pro čtení.
 
-Udaný důvod: „''$3''“.",
+Správce serveru, který úložiště zamkl, poskytl toto zdůvodnění: „''$3''“.",
 
 # Virus scanner
 'virus-badscanner' => "Špatná konfigurace: neznámý antivirový program: ''$1''",
@@ -1098,6 +1098,7 @@ Zřejmě byla smazána.',
 'edit-conflict' => 'Editační konflikt.',
 'edit-no-change' => 'Vaše editace byla ignorována, protože nedošlo k žádné změně textu.',
 'edit-already-exists' => 'Nepodařilo se vytvořit novou stránku, protože již existuje.',
+'defaultmessagetext' => 'Výchozí text hlášení',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Varování: Tato stránka obsahuje příliš mnoho volání výkonnostně náročných funkcí parseru.
@@ -1854,6 +1855,7 @@ Kontaktuje prosím [[Special:ListUsers/sysop|správce]].',
 'backend-fail-contenttype' => 'Nelze určit typ obsahu souboru k uložení do „$1“.',
 'backend-fail-batchsize' => 'Koncový úložný systém přijal dávku s $1 {{PLURAL:souborovou operací|souborovými operacemi}}; maximum je {{PLURAL:$2|$2}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Nelze se připojit k žurnálové databázi pro koncový úložný systém „$1“.',
 'filejournal-fail-dbquery' => 'Nepodařilo se aktualizovat žurnálovou databázi pro koncový úložný systém „$1“.',
 
@@ -2193,7 +2195,7 @@ Zobrazení můžete zúžit výběrem typu záznamu, uživatelského jména (zá
 'categoriespagetext' => 'Následující kategorie {{PLURAL:$1|obsahuje|obsahují}} stránky nebo soubory.
 Nezobrazují se tu [[Special:UnusedCategories|nepoužívané kategorie]].
 Podívejte se také na [[Special:WantedCategories|žádané kategorie]].',
-'categoriesfrom' => 'Zobrazit kategorie začínající na:',
+'categoriesfrom' => 'Zobrazit kategorie počínaje od:',
 'special-categories-sort-count' => 'seřadit podle počtu',
 'special-categories-sort-abc' => 'seřadit abecedně',
 
index 9f15cca..4926cdd 100644 (file)
@@ -500,9 +500,9 @@ $2",
 'ns-specialprotected' => 'Ni ellir golygu tudalennau arbennig.',
 'titleprotected' => "Diogelwyd y teitl hwn rhag ei greu gan [[User:$1|$1]].
 Rhoddwyd y rheswm hwn - ''$2''.",
-'filereadonlyerror' => 'Nid oes modd newid y ffeil "$1" oherwydd bod modd darllen storfa\'r ffeil yn "$2" yn unig.
+'filereadonlyerror' => 'Nid oes modd newid y ffeil "$1" oherwydd nad oes modd gwneud dim heblaw darllen storfa\'r ffeil yn "$2" yn unig.
 
-Y rheswm a roddir dros hyn yw "\'\'£3\'\'".',
+Y rheswm a roddwyd gan y gweinyddwr a roddodd y ffeil dan glo yw "\'\'$3\'\'".',
 
 # Virus scanner
 'virus-badscanner' => "Cyfluniad gwael: sganiwr firysau anhysbys: ''$1''",
@@ -853,6 +853,7 @@ Ymddengys iddi gael ei dileu.",
 'edit-no-change' => 'Anwybyddwyd eich golygiad, gan na newidiwyd y testun.',
 'edit-already-exists' => 'Ni ellid creu tudalen newydd.
 Mae ar gael yn barod.',
+'defaultmessagetext' => 'Y testun rhagosodedig',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Rhybudd:''' Mae gormod o alwadau ar ffwythiannau dosrannu sy'n dreth ar adnoddau yn y dudalen hon.
@@ -1496,7 +1497,7 @@ Gweler [[Special:NewFiles|oriel y ffeiliau newydd]] i fwrw golwg drostynt.",
 'filename-tooshort' => "Mae enw'r ffeil yn rhy fyr.",
 'filetype-banned' => "Mae'r math hwn o ffeil wedi ei wahardd.",
 'verification-error' => "Nid yw'r ffeil hon wedi ei derbyn wrth ei gwirio.",
-'hookaborted' => 'Cafodd y darpar newid ei derfynu gan fachyn estyniad.',
+'hookaborted' => 'Cafodd y darpar newid ei derfynu gan estyniad.',
 'illegal-filename' => "Nid yw'r enw ffeil hwn yn cael ei ganiatáu.",
 'overwrite' => 'Ni chaniateir trosysgrifo ffeil sydd eisoes yn bod.',
 'unknown-error' => 'Cafwyd gwall anhysbys.',
@@ -1584,6 +1585,7 @@ Os yw'r broblem yn parhau, cysylltwch â [[Special:ListUsers/sysop|gweinyddwr]].
 'backend-fail-stream' => "Wedi methu ffrydio'r ffeil $1.",
 'backend-fail-backup' => "Wedi methu gwneud copi wrth gefn o'r ffeil $1.",
 'backend-fail-notexists' => "Nid yw'r ffeil $1 ar gael.",
+'backend-fail-hashes' => 'Methwyd cael symiau stwnsh y ffeil er mwyn eu cymharu.',
 'backend-fail-notsame' => "Mae ffeil gwahanol a'r enw $1 arni eisoes ar gael.",
 'backend-fail-invalidpath' => 'Nid yw $1 yn lwybr dilys i roi ffeil ar gadw.',
 'backend-fail-delete' => "Wedi methu dileu'r ffeil $1.",
@@ -1602,6 +1604,11 @@ Os yw'r broblem yn parhau, cysylltwch â [[Special:ListUsers/sysop|gweinyddwr]].
 'backend-fail-connect' => 'Ni ellid cysylltu â\'r storfa tu ôl i\'r llenni yn "$1".',
 'backend-fail-internal' => 'Cafwyd gwall anhysbys yn y storfa tu ôl i\'r llenni yn "$1".',
 'backend-fail-contenttype' => 'Methwyd a dirnad pa fath o gynnwys sydd yn y ffeil y ceisir ei storio yn "$1".',
+'backend-fail-batchsize' => "Rhoddwyd llwyth o {{PLURAL:$1|$1 o weithrediadau}} ffeil i'w gwneud i'r storfa; ni all nifer y {{PLURAL:$2|gweithrediadau}} fod yn fwy na $2.",
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'Methwyd cysylltu â lòg y gweithrediadau ar y storfa "$1".',
+'filejournal-fail-dbquery' => 'Methwyd diweddaru lòg y gweithrediadau ar y storfa "$1".',
 
 # Lock manager
 'lockmanager-notlocked' => 'Wedi methu datgloi "$1"; nid yw ar glo.',
@@ -1610,6 +1617,7 @@ Os yw'r broblem yn parhau, cysylltwch â [[Special:ListUsers/sysop|gweinyddwr]].
 'lockmanager-fail-acquirelock' => 'Wedi methu cael clo ar "$1".',
 'lockmanager-fail-openlock' => 'Wedi methu agor y ffeil cloi mynediad at "$1".',
 'lockmanager-fail-releaselock' => 'Wedi methu agor y clo ar "$1".',
+'lockmanager-fail-db-bucket' => 'Methwyd cysylltu â digon o gronfeydd data cloi yn y bwced $1.',
 'lockmanager-fail-db-release' => 'Wedi methu agor y cloion ar y gronfa ddata $1.',
 'lockmanager-fail-svr-release' => 'Wedi methu agor y cloion ar y gweinydd $1.',
 
@@ -1720,6 +1728,10 @@ Mae'r rhestr canlynol yn dangos y {{PLURAL:$1|$1 cysylltiad cyntaf}} at y ffeil
 Am wybodaeth pellach gwelwch y disgrifiad ohoni sydd ar [$2 dudalen ddisgrifio'r ffeil] yno.",
 'sharedupload-desc-here' => "Daw'r ffeil hon o $1 a gellir ei defnyddio gan brosiectau eraill.
 Dangosir isod y disgrifiad sydd ar [$2 dudalen ddisgrifio'r ffeil] yno.",
+'sharedupload-desc-edit' => "Daw'r ffeil hon o $1 a gellir ei defnyddio gan brosiectau eraill.
+Mae modd golygu'r disgrifiad ohoni ar ei [$2 thudalen disgrifio] fan honno.",
+'sharedupload-desc-create' => "Daw'r ffeil hon o $1 a gellir ei defnyddio gan brosiectau eraill.
+Mae modd golygu'r disgrifiad ohoni ar ei [$2 thudalen disgrifio] fan honno.",
 'filepage-nofile' => "Does dim ffeil o'r enw hwn ar gael.",
 'filepage-nofile-link' => "Does dim ffeil o'r enw hwn ar gael, ond gallwch [$1 ei huwchlwytho].",
 'uploadnewversion-linktext' => "Uwchlwytho fersiwn newydd o'r ffeil hon",
@@ -1852,6 +1864,8 @@ Gosodwyd <del>llinell</del> drwy'r eitemau sydd eisoes wedi eu datrys.",
 'wantedpages' => 'Erthyglau sydd eu hangen',
 'wantedpages-badtitle' => 'Mae teitl annilys ymhlith y canlyniadau, sef: $1',
 'wantedfiles' => 'Ffeiliau sydd eu hangen',
+'wantedfiletext-cat' => "Mae'r ffeiliau canlynol yn cael eu defnyddio er nad ydynt ar gael. Hwyrach bod ffeiliau o storfeydd allanol hefyd ar y rhestr, serch eu bod ar gael. Bydd y rhain, sydd wedi eu cynnwys yma yn anghywir, yn ymddangos a <del>llinell drwyddynt</del>. Hefyd, mae rhestr o dudalennau sydd a ffeiliau nad ydynt ar gael arnynt draw ar [[:$1]].",
+'wantedfiletext-nocat' => "Mae'r ffeiliau canlynol yn cael eu defnyddio er nad ydynt ar gael. Hwyrach bod ffeiliau o storfeydd allanol hefyd ar y rhestr, serch eu bod ar gael. Bydd y rhain, sydd wedi eu cynnwys yma yn anghywir, yn ymddangos a <del>llinell drwyddynt</del>.",
 'wantedtemplates' => 'Nodiadau sydd eu hangen',
 'mostlinked' => 'Tudalennau yn nhrefn nifer y cysylltiadau iddynt',
 'mostlinkedcategories' => 'Categorïau yn nhrefn nifer eu haelodau',
@@ -2688,6 +2702,7 @@ Mae ffolder dros dro yn eisiau.',
 'javascripttest-pagetext-unknownframework' => 'Ni nabyddwyd y fframwaith profi "$1".',
 'javascripttest-pagetext-frameworks' => "Dewiswch un o'r fframweithiau profi canlynol: $1",
 'javascripttest-pagetext-skins' => 'Dewiswch wedd i gynnal profion arni:',
+'javascripttest-qunit-intro' => 'Gweler y [$1 wybodaeth am y profion] ar mediawiki.org.',
 'javascripttest-qunit-heading' => 'Cyfres brofi MediaWiki JavaScript QUnit',
 
 # Tooltip help for the actions
@@ -3641,6 +3656,7 @@ Dangosir delweddau ar eu maint llawn, dechreuir ffeiliau o fathau eraill yn unio
 'api-error-filename-tooshort' => "Mae enw'r ffeil yn rhy fyr.",
 'api-error-filetype-banned' => "Mae'r math hwn o ffeil wedi ei wahardd.",
 'api-error-filetype-missing' => 'Mae estyniad yn eisiau ar y ffeil.',
+'api-error-hookaborted' => 'Cafodd y darpar newid ei derfynu gan estyniad.',
 'api-error-http' => "Gwall mewnol: ni ellir cysylltu â'r gweinydd.",
 'api-error-illegal-filename' => "Nid yw'r enw ffeil hwn yn cael ei ganiatáu.",
 'api-error-internal-error' => "Gwall mewnol: aeth rhywbeth o'i le wrth brosesu'ch uwchlwythiad ar y wici.",
index 1dd1349..a7cefa0 100644 (file)
@@ -933,6 +933,7 @@ Den ser du til at være slettet.',
 'edit-conflict' => 'Redigeringskonflikt.',
 'edit-no-change' => 'Din ændring ignoreredes, fordi der ikke var ændring af teksten.',
 'edit-already-exists' => 'En ny side kunne ikke oprettes, fordi den allerede findes.',
+'defaultmessagetext' => 'Standardtekst',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Advarsel: Der er for mange beregningstunge oversætter-funktionskald på denne side.
index e91bedf..c7513ce 100644 (file)
@@ -765,9 +765,9 @@ $2',
 'ns-specialprotected' => 'Spezialseiten können nicht bearbeitet werden.',
 'titleprotected' => "Eine Seite mit diesem Namen kann nicht angelegt werden.
 Die Sperre wurde durch [[User:$1|$1]] mit der Begründung ''„$2“'' eingerichtet.",
-'filereadonlyerror' => "Die Datei „$1“ kann nicht verändert werden, da auf das Dateirepositorium „$2“ nur Lesezugriff möglich ist.
+'filereadonlyerror' => 'Die Datei „$1“ kann nicht verändert werden, da auf das Dateirepositorium „$2“ nur Lesezugriff möglich ist.
 
-Der angegebene Grund ist „''$3''“.",
+Der Administrator, der den Schreibzugriff sperrte, gab folgenden Grund an: „$3“.',
 
 # Virus scanner
 'virus-badscanner' => "Fehlerhafte Konfiguration: unbekannter Virenscanner: ''$1''",
@@ -1126,6 +1126,7 @@ Sie wurde anscheinend gelöscht.',
 'edit-conflict' => 'Bearbeitungskonflikt.',
 'edit-no-change' => 'Deine Bearbeitung wurde ignoriert, da keine Änderung an dem Text vorgenommen wurde.',
 'edit-already-exists' => 'Die neue Seite konnte nicht erstellt werden, da sie bereits vorhanden ist.',
+'defaultmessagetext' => 'Standardtext',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Achtung''': Diese Seite enthält zu viele Aufrufe aufwändiger Parserfunktionen.
@@ -1887,6 +1888,7 @@ Wenn das Problem weiter besteht, informiere einen [[Special:ListUsers/sysop|Syst
 'backend-fail-contenttype' => 'Der Inhaltstyp, der im Pfad „$1“ zu speichernden Datei, konnte nicht bestimmt werden.',
 'backend-fail-batchsize' => 'Eine Stapelverarbeitungsdatei, die {{PLURAL:$1|eine Operation|$1 Operationen}} enthält, wurde an das Speicher-Backend gesandt. Die Begrenzung liegt allerdings bei {{PLURAL:$2|einer Operation|$2 Operationen}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Es konnte keine Verbindung zur Journaldatenbank des Speicher-Backends „$1“ hergestellt werden.',
 'filejournal-fail-dbquery' => 'Die Journaldatenbank des Speicher-Backends „$1“ konnte nicht aktualisiert werden.',
 
index 952e4e9..dfab851 100644 (file)
@@ -145,6 +145,7 @@ $messages = array(
 'listingcontinuesabbrev' => 'dewam',
 'index-category' => 'Pelê endeksıni',
 'noindex-category' => 'Pelê ke endeksıni niyê',
+'broken-file-category' => 'Peleye ke linkê Dosyayandê xelata muhtewa kenê',
 
 'linkprefix' => "'''MediaWiki niya ro.'''",
 
@@ -311,6 +312,8 @@ $1',
 'page-atom-feed' => '"$1" Cıresnayışê atomi',
 'feed-atom' => 'Atom',
 'red-link-title' => '$1 (pele çıniya)',
+'sort-descending' => 'Ratnayışê qemeyayışi',
+'sort-ascending' => 'Ratnayışê Zeydnayışi',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Pele',
@@ -379,13 +382,14 @@ Belka yewna ten kerdo hewn a.',
 'badtitle' => 'Sernameo xırabın',
 'badtitletext' => 'Sernamey pela ke şıma waşt, nêvêrd, thalo/vengo ya ki zıwano miyanêno ğelet gırêdae ya ki sernamey wiki.
 Beno ke, tede yew ya zi zêdê işareti estê ke sernaman de nêxebetiyenê.',
-'perfcached' => 'Datayi cıwa ver hazır biye. No semedê ra nıkayin niyo! A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Cêr de malumatê nımıteyi esti, wextê newe kerdışo peyın: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'Datay cı ver hazır biye. No semedê ra nıkayin niyo! tewr zaf {{PLURAL:$1|netice|$1 netice}} debêno de',
+'perfcachedts' => 'Cêr de malumatê nımıteyi esti, demdê newe kerdışo peyın: $1. Tewr zaf {{PLURAL:$4|netice|$4 neticeycı}} debyayo de',
 'querypage-no-updates' => 'Nıka newe kerdış nêbeno. no datayi ca de newe nêbeni .',
 'wrong_wfQuery_params' => 'wfQuery() parametreyo şaş<br />
 Fonksiyon: $1<br />
 Perse: $2',
 'viewsource' => 'Çımey bıvêne',
+'viewsource-title' => "Cı geyrayışê $1'i bıvin",
 'actionthrottled' => 'Fealiyet xeneqna',
 'actionthrottledtext' => 'Riyê tedbirê anti-spami ra,  wextê do kılmek de şıma nê fealiyeti nêşkenê zaf zêde bıkerê, şıma ki no hedi viyarna ra.
 Çend deqey ra tepeya reyna bıcerrebnên.',
@@ -438,7 +442,8 @@ Hesabê şıma biyo a.
 'createaccountmail' => 'mı rê e-mail sera parola bırışe',
 'createaccountreason' => 'Sebeb:',
 'badretype' => 'Parolayê ke şıma nuşti yewbini nêtepışneni.',
-'userexists' => 'No name ey yewna teno, yewna name bınuse.',
+'userexists' => 'Jewna karber enê nami karneno.
+Mara reca xorê jewna name bınusnê.',
 'loginerror' => 'Xetayê hesab ekerdışi',
 'createaccounterror' => 'Hesab nêvırazyeno: $1',
 'nocookiesnew' => 'Hesabê karberi vıraziya, labelê şıma nêşay cı kewê.
@@ -515,14 +520,23 @@ Bıne vındere u newe ra dest pê bıkere.',
 # Special:PasswordReset
 'passwordreset' => 'Parola ancia bınuse',
 'passwordreset-legend' => 'Parola ancia bınuse',
+'passwordreset-pretext' => '{{PLURAL:$1||Enê cerenan ra jeweri defiye de}}',
 'passwordreset-username' => 'Namey karberi:',
 'passwordreset-domain' => 'Domain:',
+'passwordreset-capture' => 'neticey e-postay bımocne?',
 'passwordreset-email' => 'Adresa e-postey:',
+'passwordreset-emailtitle' => 'Hesab timarê {{SITENAME}}',
 'passwordreset-emailelement' => 'Namey karberi: $1
 Parola vêrdiye: $2',
 
 # Special:ChangeEmail
+'changeemail' => 'E-posta adresa xo bıvurnê',
+'changeemail-header' => 'E-posya adresta hesabdê xo bıvurnê',
+'changeemail-oldemail' => 'E-postay şımaya newki:',
+'changeemail-newemail' => 'E-postay şımayê newe:',
 'changeemail-none' => '(Çıno)',
+'changeemail-submit' => 'E-postay xo bıvurne',
+'changeemail-cancel' => 'Bıterqne',
 
 # Edit page toolbar
 'bold_sample' => 'Çapo qalınd',
@@ -620,7 +634,7 @@ Kerem ke, tı ke wazenay na pele bafernê/bıvurnê, qontrol ke.',
 'userpage-userdoesnotexist-view' => 'Hesabê karberi "$1" qeyd nêbiyo.',
 'blocked-notice-logextract' => 'No karber/na karbere emanet blokekerdeyo/blokekediya.
 Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
-'clearyourcache' => "'''Not:''' Bade eyar qayd kerdış, gani hafızayê cıgerayox pak bıbo: '''Mozilla / Firefox / Safari:''' ''Shift'' ri gıştê şıma ser nayi pel newe ra bar kere veyaxut ''Ctrl-Shift-R'' bıkere u (qey Apple Mac ''Cmd-Shift-R'');, '''IE:''' ''Ctrl-F5'', '''Konqueror:''' tena tuşê pel newe ra bar kere ser a ne.",
+'clearyourcache' => "'''Not:''' Bahde sazkerdışi, gani hafızayê cı gerayoğ pak bıbo: '''Mozilla / Firefox / Safari:''' ''Shift'' ri gıştê şıma ser nayi pel newe ra bar kere yana zi ''Ctrl-Shift-R'' bıkere u (qey Apple Mac ''Cmd-Shift-R'');, '''IE:''' ''Ctrl-F5'', '''Konqueror:''' tena tuşê pelaya newi ra bar kere cı sernê.",
 'usercssyoucanpreview' => "'''Yardim:''' Ser \"{{int:showpreview}}\" sima eskeni CSSe newe test bikeri.",
 'userjsyoucanpreview' => "'''Yardim:''' Ser \"{{int:showpreview}}\" sima eskeni CSSe newe test bikeri.",
 'usercsspreview' => "'''şıma tena verqaydê dosyayê CSS vineni.''' '''Dosyayê Karberi CSS hema qayd nebiyo!'''",
@@ -629,8 +643,8 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 Dosyanê be namey .css u .js'i de herfa werdiye bıgurêne, mesela herında {{ns:user}}:Foo/Vector.css'i de {{ns:user}}:Foo/vector.css bınuse.",
 'updated' => '(Biyo rocane)',
 'note' => "'''Not:'''",
-'previewnote' => "'''Teme! ena teyna verqeyda.'''
-Vurnayışê tu hama qeyd nıbiyo!",
+'previewnote' => "Teme! ena teyna verqeyda.'''
+Vurnayışê tu hama qeyd nıbiyo![[#editform|→ timar kerdışi rê dewam ke]]",
 'previewconflict' => 'No seyrkerdışê verqaydi serê qutiyê nuşte tezim kerdış de yo, eke şıma qayile vurnayişê maddeyi seyino bıvini, no mocneno şıma.',
 'session_fail_preview' => 'Ma ef kere. Vindibiyayişê tayê datay ra a kerdışê hesabê şıma de ma vurnayişê şıma qayd nêkerd. Newe ra tesel (cereb) bıkere. Eke no qayde zi nêbo, [[Special:UserLogout|hesabê xo bıqefelne]] u newera a kere.',
 'session_fail_preview_html' => "'''Ma meluli! Sebayê vindbiyayişê datasistemi ma vurnayişê şıma nêeşkeni qaydker.'''
@@ -661,8 +675,8 @@ Tı ma ri soz dano ki tı nuşte xo oricinali nuşt, ya zi tı yew dokumantê um
 '''İTİYA DI METARİYALÊ \"COPYRIGHT\"İ NINUSİ!.'''",
 'copyrightwarning2' => 'Ney bızane ke nuşteyê ke şıma ruşneni (şaweni) keyepelê {{SITENAME}} herkes eşkeno nê nuşteyanê şıma ser kay bıkero. Eke şıma qayil niye kes bıvurno, nuşetyanê xo meerze ita. <br />
 Wexta ke şıma nuşte zi erzeni ita; şıma gani taahhud bıde koti ra ardo (qey teferruati referans: $1).',
-'longpageerror' => "'''XETA: Dergêyê nuşteyi şıma benate (mabeynê) $1 kilobyte, u $2 kilobyte ra zêdo.
-Qayd biyayişê ey mumkin niyo..'''",
+'longpageerror' => "'''Xeta: Dergeya nuşte dê şıma nezdi $1 kilobayta, u $2 kilobayt ra vêşiyo.
+Qeyd biyayişê cı nêbeno'''",
 'readonlywarning' => "'''DİQET: Semedê mıqayti, database kılit biyo. No sebeb ra vurnayişê şıma qayd nêbeno. Nuşteyanê şıma yewna serkar eşkeno wedaro u pey ra şıma eşkeni reyna ita de qayd bıker'''
 
 Serkar o ke kılit kerdo; no beyanat dayo: $1",
@@ -769,29 +783,29 @@ Seba pelanê muhimanê newan [[Special:Search|cıgeyrayışê wiki de]] bıcereb
 'rev-deleted-user-contribs' => '[namey karberi ya zi adresa IPy esteriya - vurnayış iştırakan ra nımniyo]',
 'rev-deleted-text-permission' => "Çımraviyarnayışê ena pele '''esteriyo'''.
 Beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.",
-'rev-deleted-text-unhide' => "Çımraviyarnayışê ena pele '''esteriyo'''.
-Beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.
+'rev-deleted-text-unhide' => "Çımra viyarnayışê ena pele '''besterêno'''.
+Beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} besternayış] de teferruat esto.
+Şıma be idarekerina xo ra şenê hewna [$1 nê çımra viyarnayışi bıvinê], eke wazenê dewam kerê.",
+'rev-suppressed-text-unhide' => "Çımra viyarnayışê ena pele '''Degusneyayo'''.
+Beno ke [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} degustış] de teferruat esto.
 Şıma be idarekerina xo ra şenê hewna [$1 nê çımraviyarnayışi bıvênê], eke wazenê dewam kerê.",
-'rev-suppressed-text-unhide' => "Çımraviyarnayışê ena pele '''dewoşiyo'''.
-Beno ke [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] de teferruat esto.
-Şıma be idarekerina xo ra şenê hewna [$1 nê çımraviyarnayışi bıvênê], eke wazenê dewam kerê.",
-'rev-deleted-text-view' => "Çımraviyarnayışê ena pele '''esteriyo'''.
-Şıma be idarekerina xo ra şenê ey bıvênê; beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.",
-'rev-suppressed-text-view' => "Çımraviyarnayışê ena pele '''dewoşiyo'''.
-Şıma be idarekerina xo ra şenê ey bıvênê; beno ke [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log] de teferruat esto.",
+'rev-deleted-text-view' => "Çımra viyarnayışê ena pele '''besternêno'''.
+Şıma be idarekerina xo ra şenê ey bıvênê; beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} besternayış] de teferruat esto.",
+'rev-suppressed-text-view' => "Çımraviyarnayışê ena pele '''degusneyayo'''.
+Şıma be idarekerina xo ra şenê ey bıvênê; beno ke [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} degusnayış] de teferruat esto.",
 'rev-deleted-no-diff' => "Şıma nêşenê nê ferqi bıvênê, çıke çımraviyarnayışan ra  yew '''esteriyo'''.
 Beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.",
 'rev-suppressed-no-diff' => "Revizyon '''esteriyayo\"' aye ra ti nieşkeno ena diff bivine.",
-'rev-deleted-unhide-diff' => "Çımraviyarnayışanê na ferqi ra  yew '''esteriyo'''.
-Beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] de teferruat esto.
+'rev-deleted-unhide-diff' => "Çımra viyarnayışanê na ferqi ra  yew '''besterneyayo'''.
+Beno ke [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} besternayış] dı teferruat esto.
 Şıma be idarekerina xo ra şenê hewna [$1 nê ferqi bıvênê], eke wazenê dewam kerê.",
-'rev-suppressed-unhide-diff' => "Nê revizyonani ra yewi '''çap biyo'''.
+'rev-suppressed-unhide-diff' => "Nê Timarkerdışi ra yewi '''çap biyo'''.
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rocaneyê vındertışi] de teferru'ati esti.
 Eke şıma serkari u devam bıkeri [$1 no vurnayiş şıma eşkeni bıvini].",
-'rev-deleted-diff-view' => "Yew revizyonê ena diff '''wedariyayo''.
-Îdarekarî eşkeno ena dif bivîne; belki tiya de [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} logê wedarnayişî].de detayan esto.",
-'rev-suppressed-diff-view' => "Yew revizyonê ena diff '''suppress'' biyo.
-Îdarekarî eşkeno ena dif bivîne; belki tiya de [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} logê wedarnayişî] de detayan esto.",
+'rev-deleted-diff-view' => "Jew timarkerdışê ena versiyon '''wedariyayo''.
+Îdarekarî şenê ena versiyon bivîne; belki tiya de [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} wedarnayişî] de teferruat esto.",
+'rev-suppressed-diff-view' => "Jew timarkerdışê ena versiyon '''Ploxneyış'' biyo.
+Îdarekarî eşkeno ena dif bivîne; belki tiya de [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} ploxnayış] de teferruat esto.",
 'rev-delundel' => 'bımocne/bınımne',
 'rev-showdeleted' => 'bımocne',
 'revisiondelete' => 'Bıestere/çımraviyarnayışan peyser bia',
@@ -858,7 +872,8 @@ rocaneyan kontrol bıkere.',
 
 # Suppression log
 'suppressionlog' => 'qeydê pinani kerdışi',
-'suppressionlogtext' => 'qey listeya qedexan bıewne: [[Special:IPBlockList|IP listeya vergırewteyan]]',
+'suppressionlogtext' => "Cêrdı, kahyayan ra zerreko nımıte u  merdumê bloke kerdışi tede estê. 
+listey xelati u bloki re  [[Special:BlockList|IP'yê ke bloke biyê]] bivinê.",
 
 # History merging
 'mergehistory' => 'vere cûye pelan bıhewelın',
@@ -892,11 +907,13 @@ no vurnayişo ke şıma keni kontrol bıkere yew pelo kehen nêbo.',
 # Diffs
 'history-title' => 'Tarixê revizyoniyê "$1"',
 'difference' => '(Ferqê revizyonan)',
+'difference-multipage' => '(Ferqê pelan)',
 'lineno' => 'Rêza $1i:',
 'compareselectedversions' => 'Verziyonan kontrol bıke',
 'showhideselectedversions' => 'Revizyonanê weçinıtan bımocne/bınımne',
 'editundo' => 'peyser bia',
 'diff-multi' => '({{PLURAL:$1|Yew revizyono miyanên|$1 revizyonê miyanêni}} terefê {{PLURAL:$2|yew karberi|$2 karberan}} nêmocno)',
+'diff-multi-manyusers' => '({{PLURAL:$1|jew timar kerdışo qıckeko|$1 timar kerdışo qıckeko}} timar kerdo, $2 {{PLURAL:$2|Karber|karberi}} memocne)',
 
 # Search results
 'searchresults' => 'Neticeyê geyrayışi',
@@ -988,12 +1005,14 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
 'prefs-rc' => 'Vurnayışê peyêni',
 'prefs-watchlist' => 'Lista seyr-kerdışi',
 'prefs-watchlist-days' => 'Rocê ke lista seyrkerdışi de bêrê ramocnaene',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'tewr vêşi $1 {{PLURAL:$1|roci|roci}}',
 'prefs-watchlist-edits' => 'tewr zêde amarê vurnayışi ke lista seyrkerdışia herakerdiye de bıasê:',
 'prefs-watchlist-edits-max' => 'Amerê tewr zafî: 1000',
 'prefs-watchlist-token' => 'Lista seyrkerdışia nışani:',
 'prefs-misc' => 'ê bini',
 'prefs-resetpass' => 'Parola bıvurne',
+'prefs-changeemail' => 'E-postay bıvurne',
+'prefs-setemail' => 'E-posta adresiyê xo saz kerê',
 'prefs-email' => 'Tercihê e-maili',
 'prefs-rendering' => 'Asayış',
 'saveprefs' => 'Qeyd ke',
@@ -1017,7 +1036,7 @@ Etıya şıma rê yew kılito raştameo ke şıma şenê bıgurenê/bıxebetnê:
 'savedprefs' => 'Tecihê şıma qeyd biy.',
 'timezonelegend' => 'Warey saete:',
 'localtime' => 'saeta mehelliye:',
-'timezoneuseserverdefault' => 'Ser serverê defaultî de gure bike',
+'timezoneuseserverdefault' => 'Zey karkerdışê Wiki ($1)',
 'timezoneuseoffset' => 'Zewbina (offseti beli bıke)',
 'timezoneoffset' => 'Offset¹:',
 'servertime' => 'Wextê serveri:',
@@ -1052,6 +1071,7 @@ Na game tepeya nêerziyena.',
 'prefs-registration' => 'Wextê qeydbiyayışi',
 'yourrealname' => 'Nameyo raştıkên:',
 'yourlanguage' => 'Zıwan:',
+'yourvariant' => 'Varyante miyandê zuwani:',
 'yournick' => 'imza:',
 'prefs-help-signature' => 'mesajê ke pelê werenayişi de gani pê ney "<nowiki>~~~~</nowiki>" imza bıbi.',
 'badsig' => 'Îmzayê tu raşt niyo.
@@ -1081,6 +1101,8 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'prefs-advancedsearchoptions' => 'Tercihê raverberdey',
 'prefs-advancedwatchlist' => 'Tercihê raverberdey',
 'prefs-displayrc' => 'Tercihan bımocne',
+'prefs-displaysearchoptions' => 'Weçinayışê mocnayışi',
+'prefs-displaywatchlist' => 'Weçinayışê mocnayışi',
 'prefs-diffs' => 'Diffs',
 
 # User rights
@@ -1088,7 +1110,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'userrights-lookup-user' => 'Grubanê karberi/karbere idare bıke',
 'userrights-user-editname' => 'Yew namey karberi bınusne',
 'editusergroup' => 'Grupanê karberi/karbere bıvurne (bıbedelne)',
-'editinguser' => "'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) Vurnaena heqanê karberanê karberi",
+'editinguser' => "'''[[User:$1|$1]]''' keno weziyetê $2'i bıvurno",
 'userrights-editusergroup' => 'Grubanê karberi/karbere sero bıgureye (bıxebetiye)',
 'saveusergroups' => 'Grubanê karberi qeyd bıke',
 'userrights-groupsmember' => 'Ezaê / Ezaya:',
@@ -1101,7 +1123,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'userrights-no-interwiki' => 'Heqa şıma çıniya ke heqanê karberanê Wikipediyanê binan sero bıgureyê.',
 'userrights-nodatabase' => 'Database $1 çıniyo ya zi mehelli niyo.',
 'userrights-nologin' => 'Eke şıma wazenê ke heqa karberi/karbere cı dê, şıma gani be [[Special:UserLogin|cikewtiye]] pê yew hesabê idarekeran cı kewê',
-'userrights-notallowed' => 'İzna hesabê şıma çıniya ke heqa karberan cı dê.',
+'userrights-notallowed' => 'Hesabdê şımadı heqanê xo hewadayış u xorê heq dekerdış çıno.',
 'userrights-changeable-col' => 'Grubê ke şıma şenê bıvurnê',
 'userrights-unchangeable-col' => 'Grubê ke şıma nêşenê bıvurnê',
 
@@ -1116,11 +1138,11 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'group-all' => '(pêro)',
 
 'group-user-member' => '{{GENDER:$1|karber}}',
-'group-autoconfirmed-member' => 'karbero tesdiq biyae',
-'group-bot-member' => 'Bot',
+'group-autoconfirmed-member' => '{{GENDER:$1|Karbero ke otomotik tesdiq biyo}}',
+'group-bot-member' => '{{GENDER:$1|bot}}',
 'group-sysop-member' => '{{GENDER:$1|İdarekar}}',
-'group-bureaucrat-member' => 'Burokrat',
-'group-suppress-member' => 'Kontrol',
+'group-bureaucrat-member' => '{{GENDER:$1|buroqrat}}',
+'group-suppress-member' => '{{GENDER:$1|Temaşekar}}',
 
 'grouppage-user' => '{{ns:project}}:Karberi',
 'grouppage-autoconfirmed' => '{{ns:project}}: karberê tesdiqbiyaey',
@@ -1260,9 +1282,11 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'number_of_watching_users_pageview' => '[$1 ho seyr keno {{PLURAL:$1|karber|karberî}}]',
 'rc_categories' => 'Kategoriyanî rê limît bike (pê "|" ciya bike)',
 'rc_categories_any' => 'Her yew',
+'rc-change-size-new' => 'Vurnayışa dıma $1 {{PLURAL:$1|bayt|bayt}}',
 'newsectionsummary' => '/* $1 */ qısımo newe',
 'rc-enhanced-expand' => 'detayan bımoc (requires JavaScript)',
 'rc-enhanced-hide' => 'Detaya bınımnê',
+'rc-old-title' => '"$1"i orcinalê cı vıraşt',
 
 # Recent changes linked
 'recentchangeslinked' => 'Ney sero vurnayışi',
@@ -1313,11 +1337,11 @@ wexta şima qayîl e yew peli re dosya bierzî, formanê cêrinan ra yewi bişux
 'minlength1' => 'Nameyanê dosyayî de gani bî ezamî yew herf est biyê.',
 'illegalfilename' => '"$1" no nameyê dosya de tayê karakteri nêşuxulyenî. newe ra tesel bıkerê',
 'badfilename' => "Nameyanê dosyayî ''$1'' rê vurneyî biye.",
-'filetype-mime-mismatch' => 'Ekstesiyanê dosyayi tipê MIME rast niyena.',
+'filetype-mime-mismatch' => 'Derg kerdıştê Dosyada ".$1" u ($2) MIME tipiya cıya pêro nina.',
 'filetype-badmime' => 'Dosyaye ke tipê MIME "$1"î de bar nibeno.',
 'filetype-bad-ie-mime' => 'na dosya bar nebena çunke Internet Explorer na dosya "$1" zerarın vinena.',
 'filetype-unwanted-type' => "'''\".\$1\"''' na tewırê dosyayi nêwazyena. pêşniyaz biyaye {{PLURAL:\$3|tewırê dosyayi|tewırê dosyayi}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' na tewırê dosyayi re destur çino. nê tewıran de destur esto {{PLURAL:\$3|tewırê dosyayi|tewırê dosyayi}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|Ena babeta dosya qebul ne vinena|Ena babeta dosya qebul ne vinena|Ena babeta dosya qebul ne vinena}}. Eke cırê izin deyayo $2. {{PLURAL:$3|Babatan dosyayan|babeta dosyayan}}',
 'filetype-missing' => 'Ena dosya de extention (ze ".jpg") çini yo.',
 'empty-file' => 'Dosya ke ti şawit veng biy.',
 'file-too-large' => 'Dosya ke ti şawit zaf gird biy.',
@@ -1379,11 +1403,9 @@ Semedê ancia barkerdışi dewamkerdış ra ver tarixê esterışê dosya gani q
 'filename-bad-prefix' => "name yo ke şıma bar keni zey nameyê kamerayê dijital î, pê ney '''\"\$1\"''' destpêkeno .
 kerem kere yewna nameyo eşkera bıvicinê.",
 'upload-success-subj' => 'bar biyo',
-'upload-success-msg' => 'Bar kerdişê tu itiya de esta: [[:{{ns:file}}:$1]]',
+'upload-success-msg' => '[$2] barkerdışê şıma qebul bı. Barkerdışê şımayo itado: [[:{{ns:file}}:$1]]',
 'upload-failure-subj' => 'Problem bar bike',
-'upload-failure-msg' => 'Bar kerdişê tu de yew problem esta:
-
-$1',
+'upload-failure-msg' => '[$1] delal: $2 ra barkerdıştê şıman ra jew xelat vıcyayo.',
 'upload-warning-subj' => 'İqazê barkerdışi',
 
 'upload-proto-error' => 'Porotokol raşt ni yo.',
@@ -1399,12 +1421,20 @@ Eke problem dewam kerd [[Special:ListUsers/sysop|serkari]] de irtibat kewe.',
 'upload-unknown-size' => 'Ebat nizanyeno',
 'upload-http-error' => 'Yew ğeletê HTTPî biyo: $1',
 
+# File backend
+'backend-fail-store' => '$1 ra $2 berdışo nê wanêno',
+'backend-fail-copy' => '$1 ra $2 kopya kerdışena dosyayo nêbeno',
+'backend-fail-move' => '$1 ra $2 berdışo nê wanêno',
+'backend-fail-opentemp' => 'Teferruatê dosyayo nêwanêno',
+'backend-fail-read' => 'Na "$1" dosya nê wanêna',
+'backend-fail-create' => '$1 nê vırazêna',
+
 # Special:UploadStash
 'uploadstash' => 'Nımıtışê barkerdışi',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Cıkewtış red biyo',
-'img-auth-nopathinfo' => 'MELUMATÊ_RAYE kemio.
+'img-auth-nopathinfo' => 'PATH_INFO kemiyo.
 Teqdimkerê şıma seba ravurnayışê nê melumati eyar nêkerdo.
 Beno ke be CGI-bıngeyın bo u img_auth rê destek nêbeno.
 https://www.mediawiki.org/wiki/Manual:Image_Authorization Selahiyetê resımi bıvêne.',
@@ -1447,10 +1477,11 @@ keyepel nıka zaf meşğulo yew dema herayi de newe ra tesel bıkerê.',
 'upload_source_file' => '(komputerê ti de yew dosya)',
 
 # Special:ListFiles
-'listfiles-summary' => 'no pelo xas; heme resimê bar biyayeyan mocnena.',
+'listfiles-summary' => 'Na pelaya xısusiya; heme resimê bar biyayeyan mocnena.',
 'listfiles_search_for' => 'Qe nameyê medyayî bigêre:',
 'imgfile' => 'dosya',
 'listfiles' => 'Lista Dosya',
+'listfiles_thumb' => 'Resmo qıckek',
 'listfiles_date' => 'Tarix',
 'listfiles_name' => 'Name',
 'listfiles_user' => 'Karber',
@@ -1482,6 +1513,7 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 [[Special:WhatLinksHere/$2|pêroyê liste]] mevcud o.',
 'nolinkstoimage' => 'Pelanê ser ena dosyayê link biyê çin o.',
 'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Linkanê zafyerî]] ena pele ra link biyo bivîne.',
+'linkstoimage-redirect' => '$1 (Dosya raçarnayış) $2',
 'duplicatesoffile' => 'a {{PLURAL:$1|dosya|$1 dosya}}, kopyayê na dosyayi ([[Special:FileDuplicateSearch/$2|teferruati]]):',
 'sharedupload' => 'Ena dosya $1 ra u belki projeyê binan dı hewitiyeno.',
 'sharedupload-desc-there' => 'depoyê $1 u projeyê bini na dosyayi xebıtneni. qey teferruati bıewnê [$2 teferruati dosyayi].',
@@ -1566,7 +1598,7 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 'statistics-users-active-desc' => '{{PLURAL:$1|roco peyin de|$1 roco peyin de}} karber ê ke kar kerdê.',
 'statistics-mostpopular' => 'Pelayanê ke tewr zafî vînî biye',
 
-'disambiguations' => 'Pelayanê tam beli niyo',
+'disambiguations' => 'Pelayê ke maneyo bini rê grê danê',
 'disambiguationspage' => 'Template:disambig',
 'disambiguations-text' => 'satıro ewwil de ke peli ca genî; gıreyê pelê ciya-manayi mocneni. İkinci sırada <br />tiya de [[MediaWiki:Disambiguationspage]] gani heme gıreyê şablonê ciya-manayan  re gıre bıdiyo',
 
@@ -1634,7 +1666,7 @@ gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
 'listusers-editsonly' => 'Teyna karberan bimucne ke ey nuştê',
 'listusers-creationsort' => 'goreyê wextê vıraştışi rêz ker',
 'usereditcount' => '$1 {{PLURAL:$1|vurnayîş|vurnayîşî}}',
-'usercreated' => '$2 de $1 viraziye',
+'usercreated' => '$2 de $1 {{GENDER:$3|viraziya}}',
 'newpages' => 'Pelê newey',
 'newpages-username' => 'Namey Karberi:',
 'ancientpages' => 'Pelê kıhanêri',
@@ -1659,8 +1691,8 @@ Xo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gı
 'booksources-invalid-isbn' => 'ISBN raşt nêasena bıewnê çımeyê orjinali, raşt kopya biya nê nêbiyaya?',
 
 # Special:Log
-'specialloguserlabel' => 'Karber:',
-'speciallogtitlelabel' => 'Seroğ:',
+'specialloguserlabel' => 'Weskedar:',
+'speciallogtitlelabel' => 'Menzil (sernuşte yana karber):',
 'log' => 'Logan',
 'all-logs-page' => 'Loganê umum yê hemî',
 'alllogstext' => 'qey {{SITENAME}}i mocnayişê heme rocaneyani.
@@ -1684,6 +1716,7 @@ tipa rocaneyi, nameyê karberi (herfa pil u qıci re hessas a), ya zi peli (reyn
 'allpagesprefix' => 'herfê ke şıma tiya de nuşti, pê ney herfan pelê ke destpêkenê liste ker:',
 'allpagesbadtitle' => 'pel o ke şıma kewenî cı, nameyê no peli de gıreyê zıwanan u wikiyi re elaqa esto, ê ra cıkewtış qebul niyo. ya zi sernameyan de karakterê qedexeyi tede esto.',
 'allpages-bad-ns' => '{{SITENAME}} keyepel de wina "$1" yew nameyê cayi çino.',
+'allpages-hide-redirects' => 'Raçarnaya bınımne',
 
 # Special:Categories
 'categories' => 'Kategoriy',
@@ -1700,11 +1733,11 @@ hem zi bıewnê [[Special:WantedCategories|kategori yê ke waziyeni]].',
 'sp-deletedcontributions-contribs' => 'îştirakî',
 
 # Special:LinkSearch
-'linksearch' => 'Gıreyê teberi',
+'linksearch' => 'Gıreyê teberi cı geyrê',
 'linksearch-pat' => 'bıgêr motif:',
 'linksearch-ns' => 'Cayênameyî:',
 'linksearch-ok' => 'Bigêre',
-'linksearch-text' => 'joker ê zey "*.wikipedia.org"i şuxulyeni.<br />
+'linksearch-text' => 'joker ê zey "*.wikipedia.org"i karneno.<br />
 qaydeyê destek biyayeyi: <tt>$1</tt>',
 'linksearch-line' => '$1, $2 ra link biya',
 'linksearch-error' => 'jokeri têna nameyê makina ya serekini de aseni/eseni.',
@@ -1755,7 +1788,7 @@ qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed
 'emailpagetext' => 'no/na karberi re e-posta erşawıtışi de şıma pê forma cêrıni eşkeni kar bıkerî.
 [[Special:Preferences|tercihanê şıma ye karberi]] de adresa e-posta ya ke şıma dayo, na adres qısmê adresa e-postayi de "From (kam ra)" asena, no sebebi ra gırewtox/e eşkeno/a direk cewab bıdo şıma.',
 'usermailererror' => 'xizmetê e-postayi xeta da:',
-'defemailsubject' => '{{SITENAME}} e-posta',
+'defemailsubject' => '"$1" ra e-postay {{SITENAME}} amê',
 'usermaildisabled' => 'E-mailê karberani kafiliyeya',
 'usermaildisabledtext' => 'Ti nieşkena ena wiki de karberanê binan rê e-mail bişave',
 'noemailtitle' => 'adresa e-postayi çina',
@@ -1789,8 +1822,10 @@ qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed
 'watchlistanontext' => 'qey vurnayişê maddeya listeya temaşakerdişi $1.',
 'watchnologin' => 'hesab akerde niyo',
 'watchnologintext' => 'qey vurnayişê listeya temaşakerdışi [[Special:UserLogin|gani şıma hesab akeri]].',
+'addwatch' => 'Listeyê seyr kerdişî xo mıyan ke',
 'addedwatchtext' => 'Ma pele "[[:$1]]" zerri [[Special:Watchlist|watchlist]]ê tı kerd de.
 Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni. Hem zi çı dem ma tu ri heber dun, zerri [[Special:RecentChanges|list of recent changes]] name pele beno qalın. Tı ri beno qolay çıta vurnaye biyo.',
+'removewatch' => 'Listedê mınê seyr kerdışi ra hewad',
 'removedwatchtext' => 'Ena pela "[[:$1]]" biya wedariya [[Special:Watchlist|listeyê seyr-kerdışi şıma]].',
 'watch' => 'bıgê seyr-kerdış',
 'watchthispage' => 'Ena pele seyr ke',
@@ -1806,7 +1841,7 @@ Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni. Hem zi çı dem
 'watchmethod-list' => 'pel ê ke şıma temaşa kenî vuryayişê peyinê ey konrol beno',
 'watchlistcontains' => 'listeya seyrkerdışê şıma de $1 tene {{PLURAL:$1|peli|peli}} estî.',
 'iteminvalidname' => "pê no '$1' unsuri problem bı, nameyo nemeqbul...",
-'wlnote' => "{{PLURAL:$2|na seeta peyin de|'''$2''' na seeta peyin de}} {{PLURAL:$1|vurnayişo peyin o ke biyo|'''$1''' vurnayişo peyin o ke biyo}} cêr de yo.",
+'wlnote' => "Bıni dı {{PLURAL:$1|vurnayış|peyniya '''$1'''  dı vurnayışi estê}} {{PLURAL:$2|roci|'''$2''' roci}}, hetani $5, $4 esênê.",
 'wlshowlast' => 'bımoc $1 seat $2 rocan $3',
 'watchlist-options' => 'Tercihanê listey seyrkerdışi',
 
@@ -1824,7 +1859,7 @@ Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni. Hem zi çı dem
 'enotif_lastvisited' => 'ziyareta şıma ye peyini ra nata heme vuryayiş ê ke biyê bıewnê $1i re..',
 'enotif_lastdiff' => 'qey vinayişê ney vurnayişi bıewnê pelê $1i',
 'enotif_anon_editor' => 'karbero anonim $1',
-'enotif_body' => 'embazê $WATCHINGUSERNAME,
+'enotif_body' => 'Embazê $WATCHINGUSERNAME,
 
 {{SITENAME}} keyepel de no $PAGETITLE pelo sernameyın re $PAGEEDITDATE no tarix de $PAGEEDITOR no karberi $CHANGEDORCREATED. şıma eşkeni bıresi halê no peli re $PAGETITLE_URL na adresi ra.
 
@@ -1838,11 +1873,11 @@ wiki: $PAGEEDITOR_WIKI
 
 no pel o ke behs beno heta ziyaret kerdışê yewna heli, mesajê vuriyayişi nêşawiyeno.
 
-               {{SITENAME}} sistemê hişyariyê keyepeli.
+           {{SITENAME}} sistemê hişyariyê keyepeli.
 
 --
 qey vurnayişê eyari:
-{{canonicalurl:Special:Watchlist/edit}}
+{{canonicalurl:{{#Special:Watchlist/edit}}}}
 
 qey wedarayişê ena pele liste xo ra seyr kerdişi, şo
 $UNWATCHURL
@@ -1908,8 +1943,8 @@ kerem kerê "tepiya" şiyerê u pel o ke şıma tera ameyî u o pel newe ra bar
 
 # Protect
 'protectlogpage' => 'Logê kılit-kerdışi',
-'protectlogtext' => 'Å\9fıma vurnayiÅ\9fê gırewtıÅ\9fê/wedarıtıÅ\9fê pawıtiÅ\9fi vineni.
-qey malumato ziyed bıewnê [[Special:ProtectedPages|protected pages list]].',
+'protectlogtext' => 'Å\9eıma vurnayiÅ\9fê gırewtıÅ\9fê/wedarnayıÅ\9fê pawıtiÅ\9fi vinenê.
+Qey malumato ziyede [[Special:ProtectedPages|Peleyê ke star biye]] bewni rê êna .',
 'protectedarticle' => '"[[$1]]" kılit biyo',
 'modifiedarticleprotection' => 'Qe "[[$1]]", seviye kılit kerdişi vurnayi biyo',
 'unprotectedarticle' => 'pawıtış weradiya/wedariya: "[[$1]]"',
@@ -2071,6 +2106,9 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'whatlinkshere-filters' => 'Filtreyan',
 
 # Block/unblock
+'autoblockid' => 'Otomatik vındarnayış #$1',
+'block' => 'Karberi vındarne',
+'unblock' => 'Hesabê karberi akerê',
 'blockip' => 'Karberi kılit ke',
 'blockip-title' => 'Karberi kılit ke',
 'blockip-legend' => 'Karber blok bike',
@@ -2112,8 +2150,10 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'ipusubmit' => 'Ena blok wedarne',
 'unblocked' => '[[User:$1|$1]] blok biyo',
 'unblocked-id' => 'Blokê $1î wedariyayo',
+'blocklist' => 'Karberê kılitbiyaey',
 'ipblocklist' => 'Karberê kılitbiyaey',
 'ipblocklist-legend' => 'Yew karberê blok biyaye bivîne',
+'blocklist-target' => 'Menzil',
 'blocklist-expiry' => 'Wahdey qedyayışi',
 'blocklist-by' => 'hizmetdarê blokê',
 'blocklist-reason' => 'Sebeb:',
@@ -2198,6 +2238,7 @@ wexta mıqat/qayt kewtışi databaseyê şıma qediya u xo vir ra mekerê[[Speci
 'unlockdbsuccesstext' => 'Database a biya.',
 'lockfilenotwritable' => 'dosyaya qefılnayişê databaseyi ser ra çiyek nênusyena.',
 'databasenotlocked' => 'Database a nibiya.',
+'lockedbyandtime' => '({{GENDER:$1|$1}} ra $2 tepya $3 biyo)',
 
 # Move page
 'move-page' => '$1 Bere',
@@ -2258,7 +2299,7 @@ Yewna name bınus.',
 
 " no [[:$1]]" name de yew pel ca ra esto. şıma wazeni pê hewn a kerdışê ey peli vurnayişê nameyi bıkeri?',
 'delete_and_move_confirm' => 'Ya, ena pele biestere',
-'delete_and_move_reason' => 'qey vurnayişê nameyi esteriya',
+'delete_and_move_reason' => '"[[$1]]" qey vurnayişê nameyi esteriya',
 'selfmove' => 'name yo ke şıma wazeni bıbo, ın name û name yo ke ca ra esto eyni yê /zepê yê. vurnayiş mumkin niyo.',
 'immobile-source-namespace' => '"$1" pelê cayi de nameyi nêkırışyenî',
 'immobile-target-namespace' => 'peli nêkırışiyeni "$1" cayê nameyan',
@@ -2340,7 +2381,7 @@ karê zerredayişê benateyê wikiyani[[Special:Log/import|zerreyê rocaneyê k
 'import-interwiki-namespace' => 'Destinasyonê canameyî:',
 'import-upload-filename' => 'Nameyê dosyayi:',
 'import-comment' => 'Xulasa:',
-'importtext' => 'dosyayi, çımeyê wiki ra pê [[Special:Export|kırıştışê teberdayişi]] bıdê teber, Komputerê xo de qeyd kerê u bar kerê tiya.',
+'importtext' => 'Kerem ke dosyay, çımeyê wiki ra pê [[Special:Export|kırıştışê teberdayişi]] bıdê teber, Komputerê xo de qeyd kerê u bar kerê tiya.',
 'importstart' => 'Pelan împort kenî',
 'import-revision-count' => '$1 {{PLURAL:$1|revizyon|revizyon}}',
 'importnopages' => 'Pel çino ke import bike',
@@ -2472,7 +2513,10 @@ Tı eşkeno yew sebeb bınus.',
 
 # Info page
 'pageinfo-header-edits' => 'Vurnayışi',
+'pageinfo-header-watchlist' => 'Listey temaşi',
+'pageinfo-header-views' => 'Bıvin',
 'pageinfo-subjectpage' => 'Pele',
+'pageinfo-talkpage' => 'Pelay qıse',
 
 # Patrolling
 'markaspatrolleddiff' => 'Nişan bike ke devriye biyo',
@@ -2516,6 +2560,7 @@ Gurênayışê nae de, beno ke sistemê şıma zerar bıvêno.",
 'file-nohires' => 'Rovıleşiyayışo berzêr çıniyo.',
 'svg-long-desc' => 'SVG dosya, nominalin $1 × $2 piksels, ebatê dosya: $3',
 'show-big-image' => 'Resolosyonê temami',
+'show-big-image-size' => '$1 × $2 piksel',
 'file-info-gif-looped' => 'viyariye biyo',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|çerçeve|çerçeveyi}}',
 'file-info-png-looped' => 'atlama biyo',
@@ -2534,6 +2579,13 @@ Gurênayışê nae de, beno ke sistemê şıma zerar bıvêno.",
 'bydate' => 'goreyê zemani',
 'sp-newimages-showfrom' => 'Dosyayê newi ke $2, $1 ra dest pe keni bimocne',
 
+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'seconds' => 'verdê {{PLURAL:$1|$1 saniya|$1 saniya}}',
+'minutes' => 'verdê {{PLURAL:$1|$1 daka|$1 daka}}',
+'hours' => 'Verdê {{PLURAL:$1|$1 seata|$1 seata}}',
+'days' => 'Verdê {{PLURAL:$1|$1 rocan|$1 rocan}}',
+'ago' => 'Verdê $1',
+
 # Bad image list
 'bad_image_list' => 'Şeklo umumi wınayo:
 
@@ -2597,8 +2649,8 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-colorspace' => 'Cayê rengi',
 'exif-componentsconfiguration' => 'manayê qisimê hemi',
 'exif-compressedbitsperpixel' => 'Modê komprasyonê resimi',
-'exif-pixelydimension' => 'Verniyê resimo raştiye',
-'exif-pixelxdimension' => 'Derganiyê resimo raştiye',
+'exif-pixelydimension' => 'Herayeya resimi',
+'exif-pixelxdimension' => 'Berzeya resimi',
 'exif-usercomment' => 'Hulasayê karberi',
 'exif-relatedsoundfile' => 'Derhekê dosya yê vengi',
 'exif-datetimeoriginal' => 'Zeman u tarixê data varaziyayişi',
@@ -2612,9 +2664,9 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-exposureprogram' => 'Programê Orta de Vinderdişi',
 'exif-spectralsensitivity' => 'Hesasiyetê spektrali',
 'exif-isospeedratings' => 'ISO değerê piti',
-'exif-shutterspeedvalue' => 'Pitiyê şhutteri',
-'exif-aperturevalue' => 'Apertur',
-'exif-brightnessvalue' => 'Beraqiyi',
+'exif-shutterspeedvalue' => "Pêtiya Deklanşor dê APEX'i",
+'exif-aperturevalue' => "Akerdina APEX'i",
+'exif-brightnessvalue' => "Berqeya APEX'i",
 'exif-exposurebiasvalue' => 'Orta de viderdişi',
 'exif-maxaperturevalue' => 'Tewr zafeyê wareyê apertur',
 'exif-subjectdistance' => 'Duriyê ey',
@@ -2676,11 +2728,20 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-gpsareainformation' => 'Nameyê wareyê GPSi',
 'exif-gpsdatestamp' => 'Tarixê GPSi',
 'exif-gpsdifferential' => 'GPS differential correction',
+'exif-jpegfilecomment' => "Vatışê dosyada JPEG'i",
+'exif-keywords' => 'Qesa kelimey',
+'exif-writer' => 'Nuştekar',
+'exif-languagecode' => 'Zuwan',
+'exif-iimcategory' => 'Kategori',
+'exif-label' => 'Etiket',
 
 # EXIF attributes
 'exif-compression-1' => 'têhet nêanciyayo',
 'exif-compression-6' => 'wext o ke nêzaniyeno',
 
+'exif-copyrighted-true' => 'Heqê telifiye',
+'exif-copyrighted-false' => 'Malê umumiye',
+
 'exif-unknowndate' => 'Tarix nizanyano',
 
 'exif-orientation-1' => 'Normal',
@@ -2688,13 +2749,15 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-orientation-3' => '180° çariyayo',
 'exif-orientation-4' => 'dergî-ser çarnayiş',
 'exif-orientation-5' => '90° çariyayo (çepser) u dergî-ser çarnayiş',
-'exif-orientation-6' => "90° çariyayo (hetê se'eti ra)",
+'exif-orientation-6' => '90° CCW çariyayo (hetê saetê ra)',
 'exif-orientation-7' => "90° çariyayo (hetê se'eti ra) u dergî-ser çarnayiş",
-'exif-orientation-8' => '90° çariyayo (çepser)',
+'exif-orientation-8' => '90° CW çariyayo (çepser)',
 
 'exif-planarconfiguration-1' => 'chunky format',
 'exif-planarconfiguration-2' => 'planar format',
 
+'exif-colorspace-65535' => 'Kalibrasyon nêvıraziyayo',
+
 'exif-componentsconfiguration-0' => 'çini yo',
 
 'exif-exposureprogram-0' => 'nêdiya daşınasnayişi',
@@ -2817,11 +2880,62 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-gpsspeed-m' => 'Mil/saat',
 'exif-gpsspeed-n' => 'milê deryayi',
 
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometre',
+'exif-gpsdestdistance-m' => 'Mil',
+'exif-gpsdestdistance-n' => 'Milê roy',
+
+'exif-gpsdop-excellent' => '($1) Weşo',
+'exif-gpsdop-good' => '($1) rındo',
+'exif-gpsdop-moderate' => '($1) ne rınd nezi aro',
+'exif-gpsdop-fair' => '($1) idare keno',
+'exif-gpsdop-poor' => '($1) neqim nê keno',
+
+'exif-objectcycle-a' => 'Teq ê şıfaqi',
+'exif-objectcycle-p' => 'Teq ê şani',
+'exif-objectcycle-b' => 'Şew u roc',
+
 # Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
 'exif-gpsdirection-t' => 'hetê raştê ey',
 'exif-gpsdirection-m' => 'hetê manyetikê ey',
 
+'exif-ycbcrpositioning-1' => 'Wertekerdış',
+'exif-ycbcrpositioning-2' => 'Wayırê-site',
+
+'exif-dc-contributor' => 'İştırakdari',
+'exif-dc-date' => 'Tarix(i)',
+'exif-dc-publisher' => 'Wılakar',
+'exif-dc-relation' => 'Medyay cı',
+'exif-dc-rights' => 'Heqi',
+'exif-dc-source' => 'Medyay çımi',
+'exif-dc-type' => 'Babeta medyay',
+
+'exif-rating-rejected' => 'Red ke',
+
+'exif-isospeedratings-overflow' => '65535 ra gırdo',
+
+'exif-iimcategory-ace' => 'Zagon, kultur u keyfiye',
+'exif-iimcategory-clj' => 'Arey u huquq',
+'exif-iimcategory-dis' => 'Weqey u Qezey',
+'exif-iimcategory-fin' => 'Ekonomi u Kar',
 'exif-iimcategory-edu' => 'Terbiyet',
+'exif-iimcategory-evn' => 'Dorme',
+'exif-iimcategory-hth' => 'Weşeyey',
+'exif-iimcategory-hum' => 'Elekey merduman',
+'exif-iimcategory-lab' => 'Gurweyayin',
+'exif-iimcategory-lif' => 'Cıwiyayış u keyf kerdış',
+'exif-iimcategory-pol' => 'Siyaset',
+'exif-iimcategory-rel' => 'Din u iman kerdış',
+'exif-iimcategory-sci' => 'Zanış u teknoloci',
+'exif-iimcategory-soi' => 'Sosyal meseley',
+'exif-iimcategory-spo' => 'Spor',
+'exif-iimcategory-war' => 'Leci, pê şanayış u dışmeney',
+'exif-iimcategory-wea' => 'Hewa',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => '($1) Qemiyo',
+'exif-urgency-high' => '( $1 ) Vêşiyo',
+'exif-urgency-other' => 'Sıftê  şınasiya karberi ($1)',
 
 # External editor support
 'edit-externally' => 'Ena dosya bıvurne pe yew programê harici',
@@ -2857,18 +2971,18 @@ Ti eşkeno [[Special:UserLogin|ci kewt]].',
 'confirmemail_loggedin' => 'Eka email adresê tu konfirme biy.',
 'confirmemail_error' => 'Konfirmasyon ni biy, yew ğelet esto.',
 'confirmemail_subject' => '{{SITENAME}} konfirmasyonê adres ê emalî',
-'confirmemail_body' => 'yew ten, muhtemelen şıma no IP-adresi ra,
-keyepelê {{SITENAME}}i de pê no $2 e-postayi hesab kerd a.
+'confirmemail_body' => 'Brayo delal, mara ke şıma no IP-adresi ra,
+keyepelê {{SITENAME}}i de pêno $2 e-postayi hesab kerda.
 
-eke raşta no e-posta eyê şıma yo şıma gani tesdiq bıkerî, qey tesdiq kerdışi gani karê e-postayê keyepeli {{SITENAME}} aktif bıbo, qey aktif kerdışi gıreyê cêrıni bıtıkne.
+eke raşta no e-posta eyê şımayo şıma gani tesdiq bıkerî, qey tesdiq kerdışi gani karê e-postayê keyepeli {{SITENAME}} aktif bıbo, qey aktif kerdışi gıreyê cêrêni bıtıkne.
 
 $3
 
-eke şıma hesab *a nêkerdo*, qey ibtalê tesdiqkerdışê adresa e-postayi gıreyê cêrıni bıtıknê:
+eke şıma hesab *nê akerdo*, qey ibtalê tesdiqkerdışê adresa e-postayi gıreyê cêrıni bıtıknê:
 
 $5
 
-kodê tesdiqi heta ıney tarixi $4 meqbul o.',
+kodê tesdiqi heta ıney tarixi $4 meqbulo.',
 'confirmemail_body_changed' => 'Yew ten, muhtemelen şıma no IP-adresi $1 ra,
 keyepelê {{SITENAME}}i de pê no $2 e-postayi hesab kerd a.
 
@@ -2968,6 +3082,9 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'watchlisttools-edit' => 'listey seyrkerdışi bevin u edit bık',
 'watchlisttools-raw' => 'Listeyê seyr-kerdışi bıvin',
 
+# Signatures
+'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|mesac]])',
+
 # Core parser functions
 'unknown_extension_tag' => 'Etiketê ekstensiyon ê "$1"î nizanyeno',
 'duplicate-defaultsort' => '\'\'\'Teme:\'\'\' Tuşê default sort "$2" sero tuşê default sort "$1"î ra şino.',
@@ -2978,6 +3095,7 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'version-specialpages' => 'Pelanê xasiyan',
 'version-parserhooks' => 'Çengelê Parserî',
 'version-variables' => 'Vurnayeyî',
+'version-antispam' => 'Spam vındarnayış',
 'version-skins' => 'Cıldi',
 'version-other' => 'Bin',
 'version-mediahandlers' => 'Kulbê medyayî',
@@ -2989,6 +3107,8 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'version-hook-subscribedby' => 'Eza biyayoğ',
 'version-version' => '(Versiyon $1)',
 'version-license' => 'Lisans',
+'version-poweredby-credits' => "Ena wiki, dezginda '''[//www.mediawiki.org/ MediaWiki]''' ya piya vıraziyaya, heqê telifi © 2001-$1 $2.",
+'version-poweredby-others' => 'Zewmi',
 'version-software' => 'Softwareyê ronayi',
 'version-software-product' => 'Mal',
 'version-software-version' => 'Versiyon',
@@ -3014,8 +3134,9 @@ Resımi be tam asayış mocniyayê, tipê dosyaê bini be programê cıyo elaqed
 # Special:SpecialPages
 'specialpages' => 'Pelê mêniye',
 'specialpages-note' => '----
-* Pela xasî ye normalî.
-* <strong class="mw-specialpagerestricted">Pela xasî ye restriksiyonî.</strong>',
+* Xısusi pelaya normal
+* <span class="mw-specialpagerestricted">Xısusi peleyê keı rê ray nê deyaya.</span>
+* <strong class="mw-specialpagerestricted">Peleya xısusiya ke grota verhefıza.</strong>',
 'specialpages-group-maintenance' => 'Raporê pak tepiştîşî',
 'specialpages-group-other' => 'Pelê xasiyê bini',
 'specialpages-group-login' => 'Cıkewtış / Hesab vıraştış',
@@ -3087,10 +3208,35 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 'htmlform-selectorother-other' => 'Bin',
 
 # New logging system
+'logentry-delete-delete' => "$1'i Pelaya $3'i besternê",
+'logentry-delete-restore' => "$1'i pelaya $3'i peyd grot",
 'revdelete-content-hid' => 'nusno nımte',
 'revdelete-summary-hid' => 'Vurnayışi nımtey niyê',
+'revdelete-uname-hid' => 'Namey karberi nımteyo',
+'revdelete-summary-unhid' => 'Xulusaya vurnayışa mucneyê',
+'revdelete-uname-unhid' => 'Namey karberi ne nımteyo',
 'revdelete-restricted' => 'verger (vergırewtış) ê ke qey xızmkaran biye',
 'revdelete-unrestricted' => 'verger (ver gırewtış) ê ke qey xızmkaran diyê wera (wedariyê)',
+'logentry-move-move' => "$1'i pelaya $3'i berd $4",
+'logentry-newusers-newusers' => '$1 deye namey karberi vıraziya',
+'logentry-newusers-create' => '$1 deye namey karberi vıraziya',
+'logentry-newusers-create2' => "$1'i $3 rê hesab vıraşt",
 'newuserlog-byemail' => 'pê e-mail ra paralo şiravt',
 
+# Feedback
+'feedback-subject' => 'Muhtewa:',
+'feedback-message' => 'Mesac:',
+'feedback-cancel' => 'Bıterkne',
+'feedback-submit' => 'Peyxeberdar Bırşe',
+'feedback-adding' => 'Pela rê peyxeberdar defêno...',
+'feedback-error1' => 'Xeta: API ra neticey ne vıcyay',
+'feedback-error2' => 'Xeta: Timar kerdış nebı',
+'feedback-close' => 'Biya star',
+
+# API errors
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|dosyaya|dosyaya}} dılet',
+'api-error-unknown-code' => "$1'dı jew xeta vıciye",
+'api-error-unknown-warning' => "$1'dı ikazo xırab:",
+'api-error-unknownerror' => "$1'dı jew xeta vıciye",
+
 );
index 34cc5cd..c93d107 100644 (file)
@@ -540,7 +540,7 @@ Wótpšašanje: $2',
 'titleprotected' => "Bok z toś tym mjenim bu wót [[User:$1|$1]] pśeśiwo napóranjeju šćitany. Pśicyna jo ''$2''.",
 'filereadonlyerror' => 'Njejo móžno dataju "$1" změniś, dokulaž datajowy repozitorium "$2" jo jano cytajobny.
 
-Pódana pśicyna jo "\'\'$3\'\'".',
+Administrator, kenž jo jen zastajił, jo toś tu pśicynu pódał: "$3".',
 
 # Virus scanner
 'virus-badscanner' => "Špatna konfiguracija: njeznaty wirusowy scanner: ''$1''",
@@ -880,6 +880,7 @@ Zda sem až jo wulašowany.',
 'edit-no-change' => 'Wašo wobźěłanje jo se ignorěrowało, dokulaž tekst njejo se změnił.',
 'edit-already-exists' => 'Njejo móžno było nowy bok napóraś.
 Eksistěrujo južo.',
+'defaultmessagetext' => 'Standardny tekst powěźeńki',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Warnowanje: Toś ten bok wopśimujo pśewjele wołanjow parserowych funkcijow wupominajucych wusoke wugbaśe.
@@ -1634,6 +1635,7 @@ $1',
 'backend-fail-contenttype' => 'Wopśimjeśowy typ dataje, kótaraž ma se na "$1" składowaś, njedajo se zwěsćiś.',
 'backend-fail-batchsize' => 'Štapjelowa dataja, kótaraž wopśimujo {{PLURAL:$1|jadnu operaciju|$1 operaciji|$1 operacije|$1 operacijow}},  jo se  na składowański backend pósłała; limit jo $2 {{PLURAL:$1|operaciju|operaciji|operacije|operacijow}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Njejo žeden zwisk ze žurnaloweju datoweju banku za składowański backend "$1" móžno.',
 'filejournal-fail-dbquery' => 'Žurnalowa datowa banka za składowański backend "$1" njedajo se aktualizěrowaś.',
 
index ca8dc59..21471f4 100644 (file)
@@ -2837,7 +2837,7 @@ $1',
 Οι ημερομηνίες των αναθεωρήσεων και τα ονόματα των συντακτών θα διατηρηθούν.
 Όλες οι ενέργειες εισαγωγής μεταξύ wiki καταγράφονται στο [[Special:Log/import|αρχείο καταγραφής εισαγωγών]].',
 'import-interwiki-source' => 'Wiki και σελίδα πηγή:',
-'import-interwiki-history' => 'Î\91νÏ\84έγÏ\81αÏ\88ε Ï\8cλεÏ\82 Ï\84ιÏ\82 ÎµÎºÎ´Ï\8cÏ\83ειÏ\82 του ιστορικού για αυτή τη σελίδα',
+'import-interwiki-history' => 'Î\91νÏ\84ιγÏ\81αÏ\86ή Ï\8cλÏ\89ν Ï\84Ï\89ν ÎµÎºÎ´Ï\8cÏ\83εÏ\89ν του ιστορικού για αυτή τη σελίδα',
 'import-interwiki-templates' => 'Συμπερίληψη όλων των προτύπων',
 'import-interwiki-submit' => 'Εισαγωγή',
 'import-interwiki-namespace' => 'Προορισμός στην περιοχή ονομάτων:',
index 62065dd..9a55c3d 100644 (file)
@@ -999,7 +999,7 @@ Please report this to an [[Special:ListUsers/sysop|administrator]], making note
 'directorycreateerror' => 'Could not create directory "$1".',
 'filenotfound'         => 'Could not find file "$1".',
 'fileexistserror'      => 'Unable to write to file "$1": File exists.',
-'filereadonlyerror'    => 'Unable to the modify the file "$1" because the file repository "$2" is in read-only mode.
+'filereadonlyerror'    => 'Unable to modify the file "$1" because the file repository "$2" is in read-only mode.
 
 The administrator who locked it offered this explanation: "$3".',
 'unexpected'           => 'Unexpected value: "$1"="$2".',
@@ -2508,7 +2508,7 @@ Remember to check for other links to the templates before deleting them.',
 'disambiguationspage'     => 'Template:disambig',
 'disambiguations-text'    => "The following pages link to a '''disambiguation page'''.
 They should link to the appropriate topic instead.<br />
-A page is treated as disambiguation page if it uses a template which is linked from [[MediaWiki:Disambiguationspage]]",
+A page is treated as disambiguation page if it uses a template which is linked from [[MediaWiki:Disambiguationspage]].",
 
 'doubleredirects'                   => 'Double redirects',
 'doubleredirects-summary'           => '', # do not translate or duplicate this message to other languages
index 0d32420..c36f13b 100644 (file)
@@ -728,7 +728,7 @@ $2',
 'titleprotected' => 'Esta página ha sido protegida contra creación por [[User:$1|$1]].
 El motivo dado fue: "\'\'$2\'\'".',
 'filereadonlyerror' => 'No se puede modificar el archivo "$1" porque el repositorio de archivos "$2" está en modo de sólo lectura.
-El motivo suministrado es "$3".',
+El administrador que lo ha bloqueado ofrece esta explicación: "$3".',
 
 # Virus scanner
 'virus-badscanner' => "Error de configuración: Antivirus desconocido: ''$1''",
@@ -1103,6 +1103,7 @@ Parece que ha sido borrada.',
 'edit-no-change' => 'Se ignoró tu revisión, porque no se hizo ningún cambio al texto.',
 'edit-already-exists' => 'No se pudo crear una página nueva.
 Ya existe.',
+'defaultmessagetext' => 'Texto de mensaje predeterminado',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Aviso: Esta página contiene demasiadas llamadas a funciones sintácticas costosas (#ifexist: y similares)
@@ -1852,6 +1853,7 @@ $1',
 'backend-fail-contenttype' => 'No se pudo determinar el tipo de contenido del archivo a guardar en " $1 ".',
 'backend-fail-batchsize' => 'El servidor (back-end) de almacenamiento ha suministrado un lote de $1 {{PLURAL:$1|operación|operaciones}} de archivo; el límite es de $2 {{PLURAL:$2|operación|operaciones}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'No se pudo conectar a la base de datos del registro del sistema de almacenamiento "$1".',
 'filejournal-fail-dbquery' => 'No se pudo actualizar la base de datos del registro del sistema de almacenamiento "$1".',
 
index 2ded49c..1da6573 100644 (file)
@@ -667,6 +667,9 @@ $2',
 'customjsprotected' => 'Sul pole õigust seda JavaScripti lehekülge redigeerida, sest see sisaldab teise kasutaja isiklikke sätteid.',
 'ns-specialprotected' => 'Erilehekülgi ei saa redigeerida.',
 'titleprotected' => "Kasutaja [[User:$1|$1]] on selle pealkirjaga lehe loomise keelanud esitades järgmise põhjenduse: ''$2''.",
+'filereadonlyerror' => 'Faili "$1" ei saa muuta, sest hoidla "$2" on kirjutuskaitstud.
+
+Administraator lukustas selle järgmisel põhjusel: "$3".',
 
 # Virus scanner
 'virus-badscanner' => "Viga konfiguratsioonis: tundmatu viirusetõrje: ''$1''",
@@ -753,6 +756,7 @@ Seetõttu ei saa seda IP-aadressi kasutades hetkel rohkem kontosid luua.',
 'invalidemailaddress' => 'E-aadress ei ole aktsepteeritav, sest see on vigaselt kirjutatud.
 Ole hea ja anna õige e-aadress või jäta lahter tühjaks.',
 'cannotchangeemail' => 'Selles vikis ei saa konto e-posti aadressi muuta.',
+'emaildisabled' => 'Selle võrgukoha kaudu ei saa e-kirju saata.',
 'accountcreated' => 'Konto loodud',
 'accountcreatedtext' => 'Kasutajakonto kasutajatunnusele $1 loodud.',
 'createaccount-title' => '{{GRAMMAR:illative|{{SITENAME}}}} konto loomine',
@@ -948,7 +952,7 @@ Allpool on toodud viimane blokeerimislogi sissekanne:',
 'updated' => '(Värskendatud)',
 'note' => "'''Meeldetuletus:'''",
 'previewnote' => "'''Ära unusta, et see on kõigest eelvaade!'''
-Sinu muudatused pole veel salvestatud!",
+Sinu muudatused pole veel salvestatud! [[#editform|→ Jätka redigeerimist]]",
 'previewconflict' => 'See eelvaade näitab, kuidas ülemises toimetuskastis olev tekst hakkab välja nägema, kui otsustate salvestada.',
 'session_fail_preview' => "'''Vabandust! Meil ei õnnestunud seansiandmete kaotuse tõttu sinu muudatust töödelda.'''
 Palun proovi uuesti.
@@ -964,6 +968,7 @@ Muudatus lükati tagasi, et vältida lehekülje segiminekut.
 See juhtub mõnikord siis, kui kasutatakse vigast veebipõhist anonüümsusserverit.",
 'edit_form_incomplete' => "'''Redigeerimisvormi mõni osa ei jõudnud serverisse; kontrolli, kas sinu tehtud muudatused on alles, ja proovi uuesti.'''",
 'editing' => 'Redigeerimisel on $1',
+'creating' => 'Alustamisel on $1',
 'editingsection' => 'Redigeerimisel on osa leheküljest $1',
 'editingcomment' => 'Muutmisel on $1 (uus alaosa)',
 'editconflict' => 'Redigeerimiskonflikt: $1',
@@ -1026,6 +1031,7 @@ Tundub, et see on kustutatud.',
 'edit-no-change' => 'Sinu redigeerimist ignoreeriti, sest tekstile ei olnud tehtud muudatusi.',
 'edit-already-exists' => 'Ei saanud alustada uut lehekülge.
 See on juba olemas.',
+'defaultmessagetext' => 'Sõnumi vaiketekst',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Hoiatus:''' See lehekülg kasutab liialt palju aeglustavaid laiendusfunktsioone. Neid võiks kasutada vähem kui {{PLURAL:$2|ühel|$2}} korral, praegu on kasutatud {{PLURAL:$1|ühel|$1}} korral.",
@@ -1888,6 +1894,10 @@ Järgnevas loetelus on kuvatud ainult {{PLURAL:$1|esimene viitav lehekülg|esime
 '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.',
+'sharedupload-desc-edit' => 'See fail on pärit allikast $1 ja seda saab kasutada teistes projektides.
+Võib-olla tahad redigeerida selle faili [$2 sealset kirjelduslehekülge].',
+'sharedupload-desc-create' => 'See fail on pärit allikast $1 ja seda saab kasutada teistes projektides.
+Võib-olla tahad redigeerida selle faili [$2 sealset kirjelduslehekülge].',
 'filepage-nofile' => 'Sellenimelist faili ei ole.',
 'filepage-nofile-link' => 'Sellenimelist faili ei ole, kuid sa saad selle [$1 üles laadida].',
 'uploadnewversion-linktext' => 'Laadi üles selle faili uus versioon',
@@ -2099,6 +2109,7 @@ Valiku kitsendamiseks vali logitüüp, sisesta kasutajanimi (tõstutundlik) või
 'allpagesbadtitle' => 'Lehekülje pealkiri oli vigane või sisaldas teise viki või keele eesliidet.
 See võib sisaldada üht või enamat märki, mida ei saa pealkirjades kasutada.',
 'allpages-bad-ns' => '{{GRAMMAR:inessive|{{SITENAME}}}} ei ole nimeruumi "$1".',
+'allpages-hide-redirects' => 'Peida ümbersuunamised',
 
 # Special:Categories
 'categories' => 'Kategooriad',
index c638695..bdba52b 100644 (file)
@@ -31,6 +31,7 @@
  * @author Reza1615
  * @author Roozbeh Pournader <roozbeh at gmail.com>
  * @author Sahim
+ * @author Surena
  * @author Wayiran
  * @author Zack90
  * @author ZxxZxxZ
@@ -923,6 +924,7 @@ $2',
 'invalidemailaddress' => 'نشانی واردشدهٔ پست الکترونیک قابل‌قبول نیست، چرا که دارای ساختار نامعتبری است.
 لطفاً نشانی‌ای با ساختار صحیح وارد کنید و یا بخش مربوط را خالی بگذارید.',
 'cannotchangeemail' => 'نشانی‌های پست الکترونیکی حساب کاربری در این ویکی قابل تغییر نیست.',
+'emaildisabled' => 'این وب‌گاه قادر به ارسال رایانامه نیست.',
 'accountcreated' => 'حساب کاربری ایجاد شد',
 'accountcreatedtext' => 'حساب کاربری $1 ایجاد شده‌است.',
 'createaccount-title' => 'ایجاد حساب کاربری در {{SITENAME}}',
@@ -1142,6 +1144,7 @@ $2
 گاهی این اشکال زمانی پیش می‌آید که شما از یک پروکسی تحت وب استفاده کنید.",
 'edit_form_incomplete' => "'''بعضی قسمت‌های فرم ویرایش به سرور نرسیدند؛ اطمینان حاصل کنید که ویرایش‌های شما کامل است و دوباره تلاش کنید.'''",
 'editing' => 'در حال ویرایش $1',
+'creating' => 'ایجاد $1',
 'editingsection' => 'در حال ویرایش $1 (بخش)',
 'editingcomment' => 'در حال ویرایش $1 (بخش جدید)',
 'editconflict' => 'تعارض ویرایشی: $1',
@@ -1209,6 +1212,7 @@ $2
 'edit-no-change' => 'ویرایش شما نادیده گرفته شد، زیرا تغییری در متن داده نشده بود.',
 'edit-already-exists' => 'امکان ساختن صفحهٔ جدید وجود ندارد.
 این صفحه از قبل وجود داشته‌است.',
+'defaultmessagetext' => 'متن پیش‌فرض پیغام',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''هشدار:''' این صفحه حاوی تعدادی زیادی فراخوانی دستورهای تجزیه‌گر است.
@@ -2152,7 +2156,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'unusedtemplateswlh' => 'پیوندهای دیگر',
 
 # Random page
-'randompage' => 'صفحهٔ تصادفی',
+'randompage' => 'مقالهٔ تصادفی',
 'randompage-nopages' => 'هیچ صفحه‌ای در این {{PLURAL:$2|فضای نام|فضاهای نام}} موجود نیست: $1.',
 
 # Random redirect
@@ -2308,6 +2312,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'allpagesprefix' => 'نمایش صفحه‌های دارای پیشوند:',
 'allpagesbadtitle' => 'عنوان صفحهٔ داده‌شده نامعتبر است یا اینکه دارای پیشوندی بین‌زبانی یا بین‌ویکی‌ای است. ممکن است نویسه‌هایی بدارد که نمی‌توان از آنها در عنوان صفحه‌ها استفاده کرد.',
 'allpages-bad-ns' => '{{SITENAME}} دارای فضای نام «$1» نیست.',
+'allpages-hide-redirects' => 'پنهان‌کردن تغییرمسیرها',
 
 # Special:Categories
 'categories' => 'رده‌ها',
@@ -2434,7 +2439,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'watchmethod-list' => 'بررسی صفحه‌های مورد پی‌گیری برای ویرایش‌های اخیر',
 'watchlistcontains' => 'فهرست پی‌گیری‌های شما حاوی $1 {{PLURAL:$1|صفحه|صفحه}} است.',
 'iteminvalidname' => 'مشکل با مورد «$1»، نام نامعتبر است...',
-'wlnote' => "در Ø²Û\8cر {{PLURAL:$1|آخرÛ\8cÙ\86 ØªØºÛ\8cÛ\8cرات Ù\85Ù\88جÙ\88د Ø§Ø³Øª|آخرÛ\8cÙ\86 ØªØºÛ\8cÛ\8cرات  '''$1''' Ù\85Ù\88جÙ\88د Ø§Ø³Øª }} Ø¢Ø®Ø±Û\8cÙ\86  {{PLURAL:$2|ساعت|'''$2''' Ø³Ø§Ø¹Øª}}, Ø¯Ø± ØªØ§Ø±Û\8cØ® $3, $4.",
+'wlnote' => "در Ø²Û\8cر {{PLURAL:$1|تغÛ\8cÛ\8cرÛ\8c|'''$1''' ØªØºÛ\8cÛ\8cرÛ\8c}} Ú©Ù\87 Ø¯Ø± {{PLURAL:$2|ساعت|'''$2''' Ø³Ø§Ø¹Øª}} Ú¯Ø°Ø´ØªÙ\87 Ø§Ù\86جاÙ\85 Ø´Ø¯Ù\87 Ù\85Ù\88جÙ\88د Ø§Ø³ØªØ\8c ØªØ§Ø±Û\8cØ® Ø¢Ø®Ø±Û\8cÙ\86 Ø¨Ø§Ø²Û\8cابÛ\8c: $3Ø\8c $4",
 'wlshowlast' => 'نمایش آخرین $1 ساعت $2 روز $3',
 'watchlist-options' => 'گزینه‌های پیگیری',
 
@@ -2883,16 +2888,16 @@ $1',
 انتقال صفحه‌ها به نام جدید ممکن است تغییر اساسی و غیرمنتظره‌ای برای صفحه‌های محبوب باشد؛
 لطفاً مطمئن شوید که قبل از انتقال دادن صفحه، عواقب این کار را درک می‌کنید.",
 'movepagetext-noredirectfixer' => "استفاده از فرم زیر سبب تغییر نام یک صفحه و انتقال تمام تاریخچهٔ آن به نام جدید می‌شود.
-نام پیشین تغییرمسیری به نام جدید خواهد شد.
-به خاطر داشته باشید که [[Special:DoubleRedirects|تغییرمسیرهای دوتایی]] یا [[Special:BrokenRedirects|تغییر مسیهای خراب]] را بررسی کنید.
-شما مسئول هستید اطمینان حاصل کنید که پیوندها باز هم به جایی اشاره می‌کنند که قرار است بروند.
+عنوان پیشین تغییرمسیری به عنوان جدید خواهد شد.
+به خاطر داشته باشید که [[Special:DoubleRedirects|تغییرمسیرهای دوتایی]] یا [[Special:BrokenRedirects|تغییرمسیرهای خراب]] را بررسی کنید.
+شما مسئولید که مطمئن شوید پیوندها به جایی اشاره می‌کنند که قرار است بروند.
 
-توجه کنید که اگر نام جدید از قبل ایجاد شده باشد، انتقال انجام '''نخواهد گرفت'''، مگر در حالتی که صفحه خالی باشد و یا تغییرمسیر باشد و تاریخچهٔ ویرایشی دیگری نداشته باشد.
-این بدان معناست که اگر صفحه را اشتباهی منتقل کردید می‌توانید این تغییر را واگردانی کنید، اما نمی‌توانید به صفحه‌ای که از قبل موجود است انتقال دهید.
+توجه کنید که اگر صفحه‌ای تحت عنوان جدید از قبل موجود باشد، انتقال انجام '''نخواهد شد'''، مگر اینکه صفحه خالی و یا تغییرمسیر باشد و تاریخچهٔ ویرایشی دیگری نداشته باشد.
+این یعنی اگر صفحه را به نامی اشتباه منتقل کردید می‌توانید این تغییر را واگردانی کنید، اما نمی‌توانید به صفحه‌ای که از قبل موجود است انتقال دهید.
 
 '''هشدار!'''
-اÙ\86تÙ\82اÙ\84 ØµÙ\81Ø­Ù\87â\80\8cÙ\87اÛ\8c Ù\85حبÙ\88ب Ù\85Û\8câ\80\8cتÙ\88اÙ\86د ØºÛ\8cر منتظره باشد؛
\84Ø·Ù\81اÙ\8b Ù\85Ø·Ù\85ئÙ\86 Ø´Ù\88Û\8cد Ú©Ù\87 از نتیجهٔ کار آگاهید.",
+اÙ\86تÙ\82اÙ\84 ØµÙ\81Ø­Ù\87â\80\8cÙ\87اÛ\8c Ù¾Ø±Ø¨Û\8cÙ\86Ù\86دÙ\87 Ù\85Ù\85Ú©Ù\86 Ø§Ø³Øª Ø¹Ù\85Ù\84Û\8c ØºÛ\8cرمنتظره باشد؛
\84Ø·Ù\81اÙ\8b Ù¾Û\8cØ´ Ø§Ø² Ø§Ù\86تÙ\82اÙ\84 Ù\85Ø·Ù\85ئÙ\86 Ø´Ù\88Û\8cد از نتیجهٔ کار آگاهید.",
 'movepagetalktext' => "صفحهٔ بحث مربوط، اگر وجود داشته باشد، بطور خودکار همراه با مقالهٔ اصلی منتقل خواهد شد '''مگر اینکه''' :
 * در حال انتقال صفحه از این فضای نام به فضای نام دیگری باشید،
 * یک صفحهٔ بحث غیرخالی تحت این نام جدید وجود داشته باشد، یا
index c3590af..6c85fa8 100644 (file)
@@ -748,7 +748,7 @@ $2",
 Le motif avancé est « ''$2'' ».",
 'filereadonlyerror' => 'Impossible de modifier le fichier "$1" parce que le répertoire de fichiers "$2" est en lecture seule.
 
-Le motif fourni est "\'\'$3\'\'".',
+L\'administrateur qui l\'a verrouillé a fourni ce motif: "$3".',
 
 # Virus scanner
 'virus-badscanner' => "Mauvaise configuration : scanneur de virus inconnu : ''$1''",
@@ -1107,6 +1107,7 @@ Il semble qu’elle ait été supprimée.',
 'edit-no-change' => 'Votre modification a été ignorée car aucun changement n’a été fait au texte.',
 'edit-already-exists' => 'La nouvelle page n’a pas pu être créée.
 Elle existe déjà.',
+'defaultmessagetext' => 'Message par défaut',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Attention : cette page contient de trop nombreux appels à des fonctions coûteuses de l’analyseur syntaxique.
@@ -1868,6 +1869,7 @@ Si le problème persiste, contactez un [[Special:ListUsers/sysop|administrateur]
 'backend-fail-contenttype' => 'Impossible de déterminer le type de contenu du fichier à stocker en "$1".',
 'backend-fail-batchsize' => 'Le support de stockage a fourni un lot de $1 {{PLURAL:$1|opération|opérations}} de fichier; la limite est $2 {{PLURAL:$2|opération|opérations}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Impossible de se connecter à la base de données du journal pour le terminal de stockage "$1".',
 'filejournal-fail-dbquery' => 'Impossible de mettre à jour la base de données du journal pour le terminal de stockage "$1".',
 
index 18ac098..50f7cd2 100644 (file)
@@ -599,7 +599,7 @@ no [{{fullurl:{{FULLPAGENAME}}|action=edit}} an duilleag seo a dheasachadh]</spa
 no <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} na logaichean co-cheangailte a rannsachadh]</span>.',
 'updated' => '(Air ùrachadh)',
 'previewnote' => "'''Cuimhnich nach eil ann ach ro-shealladh.'''
-Cha deach na mùthaidhean agad a shàbhaladh fhathast!",
+Cha deach na mùthaidhean agad a shàbhaladh fhathast! [[#editform|→ Lean ort a' deasachadh]]",
 'editing' => "A' deasachadh $1",
 'editingsection' => "A' deasachadh $1 (earrann)",
 'editconflict' => 'Còmhstri deasachaidh: $1',
@@ -1184,7 +1184,7 @@ Tadhail air [//www.mediawiki.org/wiki/Localisation Ionadaileadh MediaWiki] is [/
 'tooltip-feed-atom' => 'Inbhir Atom airson na duilleige seo',
 'tooltip-t-contributions' => "Seall liosta nam mùthaidhean a rinn a' chleachdaiche seo",
 'tooltip-t-emailuser' => 'Cuir post-dealain dhan chleachdaiche seo',
-'tooltip-t-upload' => 'Luchdaich a-nuas faidhlichean',
+'tooltip-t-upload' => 'Luchdaich suas faidhle',
 'tooltip-t-specialpages' => 'Liosta de gach duilleag shònraichte',
 'tooltip-t-print' => 'Tionndadh dhen duilleag a ghabhas a chlò-bhualadh',
 'tooltip-t-permalink' => 'Dèan ceangal buan gu mùthadh seo na duilleige',
index 0f508a5..69a717b 100644 (file)
@@ -611,7 +611,7 @@ $2',
 O motivo achegado é ''$2''.",
 'filereadonlyerror' => 'Non se puido modificar o ficheiro "$1" porque o repositorio "$2" está en modo de só lectura.
 
-O motivo achegado é "\'\'$3\'\'".',
+O administrador que bloqueou o repositorio achegou este motivo: "$3".',
 
 # Virus scanner
 'virus-badscanner' => "Configuración errónea: escáner de virus descoñecido: ''$1''",
@@ -710,6 +710,7 @@ Como resultado, os visitantes que usen este enderezo IP non poden crear máis co
 'invalidemailaddress' => 'Non se pode aceptar o enderezo de correo electrónico porque semella ter un formato incorrecto.
 Insira un enderezo cun formato válido ou baleire ese campo.',
 'cannotchangeemail' => 'Neste wiki non se poden mudar os enderezos de correo electrónico asociados a unha conta.',
+'emaildisabled' => 'Este sitio non pode enviar correos electrónicos.',
 'accountcreated' => 'Conta creada',
 'accountcreatedtext' => 'Creouse a conta de usuario para "$1".',
 'createaccount-title' => 'Creación dunha conta para {{SITENAME}}',
@@ -913,7 +914,7 @@ Velaquí está a última entrada do rexistro de bloqueos, por se quere consultal
 Lembre que as páxinas .css e .js personalizadas utilizan un título en minúsculas, como por exemplo {{ns:user}}:Foo/vector.css no canto de {{ns:user}}:Foo/Vector.css.",
 'updated' => '(Actualizado)',
 'note' => "'''Nota:'''",
-'previewnote' => "'''Lembre que esta é só unha vista previa e que aínda non gardou os seus cambios!'''",
+'previewnote' => "'''Lembre que esta é só unha vista previa e que aínda non gardou os seus cambios!''' [[#editform|→ Continuar editando]]",
 'previewconflict' => 'Esta vista previa mostra o texto na área superior tal e como aparecerá se escolle gardar.',
 'session_fail_preview' => "'''O sistema non pode procesar a súa edición porque se perderon os datos de inicio da sesión.
 Por favor, inténteo de novo.
@@ -929,6 +930,7 @@ Rexeitouse a edición para evitar que se corrompa o texto do artigo.
 Isto pode acontecer porque estea a empregar un servizo de ''proxy'' anónimo defectuoso baseado na web.",
 'edit_form_incomplete' => "'''Algunhas partes do formulario de edición non chegaron ao servidor; comprobe que a súa modificación está intacta e inténteo de novo.'''",
 'editing' => 'Editando "$1"',
+'creating' => 'Creando "$1"',
 'editingsection' => 'Editando unha sección de "$1"',
 'editingcomment' => 'Editando unha nova sección de "$1"',
 'editconflict' => 'Conflito de edición: "$1"',
@@ -994,6 +996,7 @@ Semella que foi borrada.',
 'edit-no-change' => 'A súa edición foi ignorada dado que non fixo ningún cambio no texto.',
 'edit-already-exists' => 'Non se pode crear a nova páxina.
 Esta xa existe.',
+'defaultmessagetext' => 'Texto predeterminado',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Aviso:''' Esta páxina contén demasiados analizadores de funcións de chamadas.
@@ -1766,6 +1769,7 @@ Se o problema persiste, póñase en contacto cun [[Special:ListUsers/sysop|admin
 'backend-fail-contenttype' => 'Non se puido determinar o tipo de contido do ficheiro a almacenar en "$1".',
 'backend-fail-batchsize' => 'O sistema de almacenamento recibiu un feixe de $1 {{PLURAL:$1|operación|operacións}} de ficheiro; o límite está en $2 {{PLURAL:$2|operación|operacións}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Non se pode conectar coa base de datos do rexistro do sistema de almacenamento "$1".',
 'filejournal-fail-dbquery' => 'Non se pode actualizar a base de datos do rexistro do sistema de almacenamento "$1".',
 
@@ -1887,6 +1891,10 @@ Hai dispoñible [[Special:WhatLinksHere/$2|unha lista completa]].',
 Por favor, vexa a [$2 páxina de descrición do ficheiro] para obter máis información.',
 'sharedupload-desc-here' => 'Este ficheiro é de $1 e pode ser usado por outros proxectos.
 A descrición da [$2 páxina de descrición do ficheiro] móstrase a continuación.',
+'sharedupload-desc-edit' => 'Este ficheiro é de $1 e pode ser usado por outros proxectos.
+Poida que queira editar a descrición da [$2 páxina de descrición do ficheiro].',
+'sharedupload-desc-create' => 'Este ficheiro é de $1 e pode ser usado por outros proxectos.
+Poida que queira editar a descrición da [$2 páxina de descrición do ficheiro].',
 'filepage-nofile' => 'Non existe ningún ficheiro con este nome.',
 'filepage-nofile-link' => 'Non existe ningún ficheiro con este nome, pero pode [$1 cargalo].',
 'uploadnewversion-linktext' => 'Cargar unha nova versión deste ficheiro',
@@ -2099,6 +2107,7 @@ Pode precisar máis a vista seleccionando o tipo de rexistro, o nome do usuario
 'allpagesprefix' => 'Mostrar as páxinas que comezan co prefixo:',
 'allpagesbadtitle' => 'O título dado á páxina non era válido ou contiña un prefixo inter-linguas ou inter-wikis. Pode que conteña un ou máis caracteres que non se poden empregar nos títulos.',
 'allpages-bad-ns' => '{{SITENAME}} carece do espazo de nomes "$1".',
+'allpages-hide-redirects' => 'Agochar as redireccións',
 
 # Special:Categories
 'categories' => 'Categorías',
index 8c9383e..dbe60a0 100644 (file)
@@ -742,9 +742,9 @@ $2',
 'ns-specialprotected' => 'לא ניתן לערוך דפים מיוחדים.',
 'titleprotected' => 'לא ניתן ליצור דף זה, כיוון שהמשתמש [[User:$1|$1]] הגן עליו מפני יצירה.
 הסיבה שניתנה לכך היא "$2".',
-'filereadonlyerror' => '×\9c×\90 × ×\99ת×\9f ×\9cשנ×\95ת ×\90ת ×\94ק×\95×\91×¥ "$1" ×\9b×\99×\95×\95×\9f ×©×\9e×\90×\92ר ×\94ק×\91צ×\99×\9d "$2" ×\94×\95×\90 ×\91×\9eצ×\91 ×§×¨×\99×\90×\94 ×\91×\9c×\91×\93.
+'filereadonlyerror' => 'לא ניתן לשנות את הקובץ "$1" כיוון שמאגר הקבצים "$2" במצב קריאה בלבד.
 
\94ס×\99×\91×\94 ×©× ×\99תנ×\94 ×\9c×\9b×\9a ×\94×\99×\90 "\'\'\'$3\'\'\'".',
\9e× ×\94×\9c ×\94×\9eער×\9bת ×©× ×¢×\9c ×\90ת ×\94×\9e×\90×\92ר ×¡×\99פק ×\90ת ×\94×\94ס×\91ר ×\94×\91×\90: "\'\'\'$3\'\'\'".',
 
 # Virus scanner
 'virus-badscanner' => "הגדרות שגויות: סורק הווירוסים אינו ידוע: ''$1''",
@@ -1118,6 +1118,7 @@ $2
 'edit-no-change' => 'המערכת התעלמה מעריכתכם, כיוון שלא נעשה שינוי בטקסט.',
 'edit-already-exists' => 'לא ניתן ליצור דף חדש.
 הוא כבר קיים.',
+'defaultmessagetext' => 'טקסט ההודעה המקורי',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''אזהרה:''' דף זה כולל יותר מדי קריאות לפונקציות מפענח שגוזלות משאבים.
@@ -1889,6 +1890,7 @@ $1',
 'backend-fail-contenttype' => 'לא ניתן היה לקבוע את סוג התוכן של הקובץ לאחסון ב־"$1".',
 'backend-fail-batchsize' => 'למאגר אחסון הקבצים הפנימי הועבר אוסף של {{PLURAL:$1|פעולת קובץ אחת|$1 פעולות קובץ}}; המגבלה היא {{PLURAL:$2|פעולה אחת|$2 פעולות}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'לא ניתן היה להתחבר לבסיס הנתונים של היומן עבור מאגר אחסון הקבצים הפנימי "$1".',
 'filejournal-fail-dbquery' => 'לא ניתן היה לעדכן את בסיס הנתונים של היומן עבור מאגר אחסון הקבצים הפנימי "$1".',
 
index b85f630..1101e99 100644 (file)
@@ -547,6 +547,12 @@ Sait aap password ke safalta se badal sia hoga nai to nawaa temporary password k
 
 $2
 
+{{PLURAL:$3|Ii temporary password|Ii sab temporary passwords}}  {{PLURAL:$5|ek din|$5 din}} me khalaas hoi.
+Aap ke chaahi ki aap login kar ke ek nawaa password banao.  Agar aur koi ii request karis hae, nai to agae aap aapan purana paasword ke yaad kar liya hae, tab ii sandes ke baare me bhuul jaao aur purana password use karte raho.',
+'passwordreset-emailtext-user' => '
+Sadasya $1 {{SITENAME}} pe aap ke account details ke {{SITENAME}} $4 ke khaatir  reminder maagis hae
+ NIche ke sadasya {{PLURAL:$3|account hae|accounts hae}} ii e-mail address: $2 se associatied hae
+
 {{PLURAL:$3|Ii temporary password|Ii sab temporary passwords}}  {{PLURAL:$5|ek din|$5 din}} me khalaas hoi.
 Aap ke chaahi ki aap login kar ke ek nawaa password banao.  Agar aur koi ii request karis hae, nai to agae aap aapan purana paasword ke yaad kar liya hae, tab ii sandes ke baare me bhuul jaao aur purana password use karte raho.',
 'passwordreset-emailelement' => 'Sadasya ke naam: $1
@@ -687,7 +693,8 @@ Iske abhi save nai karaa gais hai!'''",
 Yaad rakhna ki custom .css aur .js panna owercase title use kare hai, jaise ki {{ns:user}}:Foo/vector.css aur{{ns:user}}:Foo/Vector.css nai.",
 'updated' => '(Update kar dewa gais hai)',
 'note' => "'''Dhyan rakkho:'''",
-'previewnote' => "'''Ii khali ek jhalak dekhae hai; badlao abhi save nai bhae hai!'''",
+'previewnote' => "'''Ii khaali ek jhalak dekhae hai'''
+Tumar badlao abhi save nai bhais hai!",
 'previewconflict' => 'Ii preview uu text dekhae hai jon ki uppar ke text editing area me dekhai agar aap iske save karaa.',
 'session_fail_preview' => "''' Maaf karna! Ham log aap ke badlao ke process nai kare paya hai due to a loss of session data.
 Fir se kosis karna.
@@ -1465,6 +1472,8 @@ Agar jo aap fir bhi aapan file upload kare manta hai tab pichhe jaae ke nawaa na
 'php-uploaddisabledtext' => 'File uploads ke PHP me disable kar dewa gais hai. Meharbani kar ke file_uploads setting ke check karo.',
 'uploadscripted' => 'Ii file me HTML nai to script code hai jiske web browser erroneously interpret kare sake hai.',
 'uploadvirus' => 'Ii file me virus hai! Details: $1',
+'uploadjava' => 'Ii file ek ZIP file hae jisme Java .class ke file hae.
+Java ke uplaod kare ke anumati nai hae, kaaheki isse kuchh security restrictions ke bypass karaa jaae sake hae.',
 'upload-source' => 'Suruu waala file',
 'sourcefilename' => 'Suruu waala file ke naam:',
 'sourceurl' => 'Suruu waala URL',
@@ -1499,6 +1508,29 @@ Agar jo problem fir nai khatam hoe tab [[Special:ListUsers/sysop|administrator]]
 'upload-unknown-size' => 'Nai pataa ki ketnaa barraa hae',
 'upload-http-error' => 'Ek HTTP galti hoe gais hae: $1',
 
+# File backend
+'backend-fail-stream' => 'File $1 ke stream nai kare sakaa hae.',
+'backend-fail-backup' => 'File $1 ke backuo nai kare sakaa hae.',
+'backend-fail-notexists' => 'Ii file $1 nai hae.',
+'backend-fail-hashes' => 'Compare kare ke khatir file hashes ke nai paawa jaae sakaa hae.',
+'backend-fail-notsame' => 'Ek duusra file $1 pe hae.',
+'backend-fail-invalidpath' => '$1, valid storage path nai hae.',
+'backend-fail-delete' => 'File $1 ke nai mitae sakaa hae.',
+'backend-fail-alreadyexists' => '$1 naam ke ek file abhi hae.',
+'backend-fail-store' => '$2 pe file $1 ke nai bachae sakaa hae.',
+'backend-fail-copy' => 'File $1 ke $2 me nai copy kare sakaa hae',
+'backend-fail-move' => 'File $1 ke hatae ke $2 nai kare sakaa hae.',
+'backend-fail-opentemp' => 'Temporary file ke nai khole sakaa hae.',
+'backend-fail-writetemp' => 'Temporary file me nai likhe sakaa hae.',
+'backend-fail-closetemp' => 'Temporary file ke nai band kare sakaa hae.',
+'backend-fail-read' => 'File $1 ke nai parrhe sakaa hae.',
+'backend-fail-create' => 'File $1 ke nai banae sakaa hae.',
+'backend-fail-readonly' => 'Storage backend "$1" abhi khaali read-only hae. Iske kaaran hae: "$2"',
+'backend-fail-synced' => 'File "$1" internal storage backends me ek inconsistent state me hae',
+'backend-fail-connect' => 'Storage backend "$1" se connect nai kare sakaa hae.',
+'backend-fail-internal' => 'Storage backend "$1" me ek unknown error hoe gais hae.',
+'backend-fail-contenttype' => 'Ii nai pataa lagae sakaa hae ki "$1" me bachae ke khaatir file kon rakam ke hae.',
+
 # Special:UploadStash
 'uploadstash' => 'Gupt file ke upload karo',
 'uploadstash-summary' => 'Ii panna se uu file pe jaawa jaae sake hae jiske upload karaa gais hae (nai to upload karaa jaawe hae) lekin abhi talak wiki me publish nai karaa gais hae.
@@ -2768,6 +2800,8 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
 'exif-subjectarea' => 'Vishay ke jagha',
 'exif-flashenergy' => 'Chamak ke taagat',
 'exif-focalplanexresolution' => 'Focal plane X resolution',
+'exif-focalplaneyresolution' => 'Focal plane Y ke resolution',
+'exif-subjectlocation' => 'Subject ke location',
 'exif-filesource' => 'File ke source',
 'exif-scenetype' => 'Kon rakam ke scene hae',
 'exif-gpsaltitude' => 'Uunchai',
@@ -2780,9 +2814,9 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
 'exif-orientation-3' => '180° ghumawa gais hae',
 'exif-orientation-4' => 'Khrraa ultawa gais hae',
 'exif-orientation-5' => '90° CCW ghumawa aur kharraa ultawa gais hae',
-'exif-orientation-6' => '90° CW ghumawa gais hae',
+'exif-orientation-6' => '90° CCW ghumawa gais hae',
 'exif-orientation-7' => '90° CW ghumawa aur kharraa ultawa gais hae',
-'exif-orientation-8' => '90° CCW ghumawa gais hae',
+'exif-orientation-8' => '90° CW ghumawa gais hae',
 
 'exif-meteringmode-0' => 'Nai maluum',
 'exif-meteringmode-6' => 'Puura nai',
index 1ce4d8b..b3da4ff 100644 (file)
@@ -537,7 +537,7 @@ $2',
 Podata přičina je \'\'"$2"\'\'.',
 'filereadonlyerror' => 'Njeje móžno dataju "$1" změnić, dokelž datajowy repozitorij "$2" je jenož čitajomny.
 
-Podata přičina je "\'\'$3\'\'".',
+Administrator, kiž je jón zawrěł, je tule přičinu podał: "$3".',
 
 # Virus scanner
 'virus-badscanner' => "Špatna konfiguracija: Njeznaty wirusowy skener: ''$1''",
@@ -881,6 +881,7 @@ Zda so, zo je hîžo wušmórnjena.',
 'edit-no-change' => 'Waše wobdźěłanje bu ignorowane, dokelž tekst njebu zm,ěnjeny.',
 'edit-already-exists' => 'Njebě móžno nowu stronu wutworić.
 Eksistuje hižo.',
+'defaultmessagetext' => 'Standardny tekst zdźělenki',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Warnowanje: Tuta strona wobsahuje přewjele parserowych wołanjow.
@@ -1638,6 +1639,7 @@ $1',
 'backend-fail-contenttype' => 'Wobsahowy typ dataje, kotraž ma so na "$1" składować, njeda so zwěsćić.',
 'backend-fail-batchsize' => 'Staplowa dataja, kotraž {{PLURAL:$1|jednu operaciju|$1 operaciji|$1 operacije|$1 operacijow}} wobsahuje,  je so  na składowanski backend pósłała; limit je $2 {{PLURAL:$2|operaciju|operaciji|operacije|operacijow}} .',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Njeje žadyn zwisk ze žurnalowej datowej banku za składowanski backend "$1" móžno.',
 'filejournal-fail-dbquery' => 'Žurnalowa datowa banka za składowanski backend "$1" njeda so aktualizować.',
 
index ff11e03..00e1fc5 100644 (file)
@@ -1662,7 +1662,7 @@ Képet a következő módon illeszthetsz be egy oldalra: '''<nowiki>[[</nowiki>{
 'upload-preferred' => 'Támogatott fájltípusok: $1.',
 'upload-prohibited' => 'Tiltott fájltípusok: $1.',
 'uploadlog' => 'feltöltési napló',
-'uploadlogpage' => 'Feltöltési_napló',
+'uploadlogpage' => 'Feltöltési napló',
 'uploadlogpagetext' => 'Lentebb látható a legutóbbi felküldések listája.
 Lásd még az [[Special:NewFiles|új fáljlok galériáját]]',
 'filename' => 'Fájlnév',
@@ -2324,7 +2324,7 @@ Kérjük, erősítsd meg, hogy valóban ezt szeretnéd tenni, átlátod a követ
 'actionfailed' => 'A művelet nem sikerült',
 'deletedtext' => 'A(z) „$1” lapot törölted.
 A legutóbbi törlések listájához lásd a $2 lapot.',
-'dellogpage' => 'Törlési_napló',
+'dellogpage' => 'Törlési napló',
 'dellogpagetext' => 'Itt láthatók a legutóbb törölt lapok.',
 'deletionlog' => 'törlési napló',
 'reverted' => 'Visszaállítva a korábbi változatra',
@@ -2361,7 +2361,7 @@ ez a művelet a munkamenet eltérítése miatti óvatosságból megszakadt.
 Kérjük, hogy nyomd meg a "vissza" gombot, és töltsd le újra az oldalt, ahonnan jöttél, majd próbáld újra.',
 
 # Protect
-'protectlogpage' => 'Lapvédelmi_napló',
+'protectlogpage' => 'Lapvédelmi napló',
 'protectlogtext' => 'Alább látható a lapvédelemmel kapcsolatos változtatások listája.
 A [[Special:ProtectedPages|védett lapok listáján]] megtekintheted a jelenleg is érvényben lévő védelmeket.',
 'protectedarticle' => 'levédte a(z) [[$1]] lapot',
index 5962a24..fc929db 100644 (file)
@@ -991,6 +991,8 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'rev-deleted-text-view' => "Էջի այս տարբերակը '''ջնջված''' է։
 Որպես ադմինիստրատոր դուք կարող եք դիտել այն։
 Հնարավոր է ջնջման մանրամասնություններ լինեն [{{fullurl:{{ns:special}}:Log/delete|page={{FULLPAGENAMEE}}}} ջնջման տեղեկամատյանում]։",
+'rev-deleted-no-diff' => "Դուք չեք կարող դիտել տարբերությունը, քանի որ խմբագրումների մեկը '''ջնջվել''' է։ Մանրամասները կարող եք գտնել [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ջնջման տեղեկամատյանում]",
+'rev-suppressed-no-diff' => "Դուք չեք կարող դիտել տարբերությունը, քանի որ խմբագրումների մեկը '''ջնջվել''' է։",
 'rev-delundel' => 'ցույց տալ/թաքցնել',
 'rev-showdeleted' => 'ցույց տալ',
 'revisiondelete' => 'Ջնջել/վերականգնել տարբերակները',
@@ -2188,13 +2190,13 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 'tooltip-feed-atom' => 'Այս էջի Atom սնուցումը',
 'tooltip-t-contributions' => 'Դիտել այս մասնակցի ներդրումների ցանկը',
 'tooltip-t-emailuser' => 'Ուղարկել էլ-նամակ այս մասնակցին',
-'tooltip-t-upload' => 'Բեռնել պատկերներ կամ մեդիա նիշքեր',
+'tooltip-t-upload' => 'Բեռնել ֆայլեր',
 'tooltip-t-specialpages' => 'Բոլոր սպասարկող էջերի ցանկը',
 'tooltip-t-print' => 'Այս էջի տպելու տարբերակ',
 'tooltip-t-permalink' => 'Էջի այս տարբերակի մշտական հղում',
 'tooltip-ca-nstab-main' => 'Դիտել հոդվածը',
 'tooltip-ca-nstab-user' => 'Դիտել մասնակցի էջը',
-'tooltip-ca-nstab-media' => 'Դիտել մեդիա-նիշքի էջը',
+'tooltip-ca-nstab-media' => 'Դիտել մեդիաֆայլի էջը',
 'tooltip-ca-nstab-special' => 'Սա սպասարկող էջ է, դուք չեք կարող հենց իրեն խմբագրել',
 'tooltip-ca-nstab-project' => 'Դիտել նախագծի էջը',
 'tooltip-ca-nstab-image' => 'Դիտել պատկերի էջը',
@@ -2483,6 +2485,10 @@ $3
 # Special:Version
 'version' => 'ՄեդիաՎիքի տարբերակը',
 
+# Special:FilePath
+'filepath-page' => 'Ֆայլ:',
+'filepath-submit' => 'Անցնել',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch-submit' => 'Որոնել',
 
@@ -2495,7 +2501,7 @@ $3
 'specialpages-group-other' => 'Այլ հատուկ էջեր',
 'specialpages-group-login' => 'Մտնել / Գրանցվել',
 'specialpages-group-changes' => 'Վերջին փոփոխություններ և տեղեկամատյաններ',
-'specialpages-group-media' => 'Մեդիա նյութերի տեղեկատուներ և բեռնում',
+'specialpages-group-media' => 'Մեդիանյութերի տեղեկատուներ և բեռնումներ',
 'specialpages-group-users' => 'Մասնակիցներ և իրավունքներ',
 'specialpages-group-highuse' => 'Հաճախակի օգտագործվող էջեր',
 'specialpages-group-pages' => 'Էջերի ցանկեր',
@@ -2508,6 +2514,14 @@ $3
 'blankpage' => 'Դատարկ էջ',
 'intentionallyblankpage' => 'Այս էջը միտումնավոր դատարկ է թողված։',
 
+# Special:Tags
+'tag-filter-submit' => 'Ֆիլտրել',
+'tags-edit' => 'խմբագրել',
+
+# Special:ComparePages
+'compare-page1' => 'Էջ 1',
+'compare-page2' => 'Էջ 2',
+
 # Database error messages
 'dberr-header' => 'Այս վիքիում խնդիրներ են առաջացել',
 'dberr-problems' => 'Այս կայքում առաջացել են տեխնիկական խնդիրներ։ Հայցում ենք ձեր ներողությունը։',
index 996e91d..0055cc1 100644 (file)
@@ -533,7 +533,7 @@ $2',
 Le motivo specificate es ''$2''.",
 'filereadonlyerror' => 'Impossibile modificar le file "$1" perque le deposito de files "$2" es in modo de lectura sol.
 
-Le motivo fornite es "\'\'$3\'\'".',
+Le administrator qui lo blocava offereva iste explication: "$3".',
 
 # Virus scanner
 'virus-badscanner' => "Configuration incorrecte: programma antivirus non cognoscite: ''$1''",
@@ -926,6 +926,7 @@ Pare que illo ha essite delite.',
 'edit-no-change' => 'Tu modification ha essite ignorate, proque nulle cambio esseva facite in le texto.',
 'edit-already-exists' => 'Non poteva crear un nove pagina.
 Illo existe ja.',
+'defaultmessagetext' => 'Texto predefinite del message',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Attention: Iste pagina contine troppo de appellos costose al functiones del analysator syntactic.
@@ -1703,6 +1704,7 @@ Si le problema persiste, contacta un [[Special:ListUsers/sysop|administrator]].'
 'backend-fail-contenttype' => 'Non poteva determinar le typo de contento del file a immagazinar in "$1".',
 'backend-fail-batchsize' => 'Le systema de immagazinage ha recipite un lot de $1 {{PLURAL:$1|operation|operationes}} de file; le limite es $2 {{PLURAL:$2|operation|operationes}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Non poteva connecter al base de datos de jornal pro le systema de immagazinage "$1".',
 'filejournal-fail-dbquery' => 'Non poteva actualisar le base de datos de jornal pro le systema de immagazinage "$1".',
 
index 363e085..2cef3f3 100644 (file)
@@ -398,7 +398,8 @@ $messages = array(
 'noarticletext-nopermission' => 'Укх сахьате укх оагӀув тӀа яздам дац.
 Шун йийшая, кхыдола йоазувнашкахь [[Special:Search/{{PAGENAME}}|дола цӀерий хаттам корае]] е <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} нийсамий тептара йоазувнаш корае].</span>',
 'note' => "'''ХӀамоалар:'''",
-'previewnote' => "'''Хьалхе бӀаргтассам мара бац, яздам кха яздаь дац!'''",
+'previewnote' => "'''Хьалхе б|аргтассам мара бац.'''
+Яздам кха яздаь дац! [[#editform|→ хувцам д|ахьо д|аде]]",
 'editing' => 'ГӀалатнийсдар: $1',
 'editingsection' => 'ГIалатнийсдар $1 (оагӀувдакъа)',
 'editingcomment' => 'ГӀалатнийсдар $1 (керда декъам)',
index a3f9c11..110b994 100644 (file)
@@ -645,7 +645,7 @@ $2',
 La motivazione è la seguente: ''$2''.",
 'filereadonlyerror' => 'Non è stato possibile modificare il file "$1" poiché il repository di file "$2" è in modalità di sola lettura.
 
-La motivazione è "\'\'$3\'\'".',
+L\'amministratore che lo ha bloccato ha fornito questa motivazione: "$3".',
 
 # Virus scanner
 'virus-badscanner' => "Errore di configurazione: antivirus sconosciuto: ''$1''",
@@ -995,6 +995,7 @@ Sembra che sia stata cancellata.',
 'edit-no-change' => 'La modifica è stata ignorata poiché non sono stati apportati cambiamenti al testo.',
 'edit-already-exists' => 'Impossibile creare una nuova pagina.
 Esiste già.',
+'defaultmessagetext' => 'Testo predefinito',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Attenzione:''' Questa pagina contiene troppe chiamate alle parser functions.
@@ -1851,6 +1852,10 @@ Di seguito sono elencate solo {{PLURAL:$1|la prima pagina che punta|le prime $1
 Consultare la [$2 pagina di descrizione del file] per ulteriori informazioni.',
 'sharedupload-desc-here' => 'Questo file proviene da $1 e può essere utilizzato da altri progetti.
 Di seguito viene mostrata la descrizione presente nella [$2 pagina di descrizione del file].',
+'sharedupload-desc-edit' => 'Questo file proviene da $1 e può essere utilizzato da altri progetti.
+Probabilmente vuoi modificare la descrizione presente nella [$2 pagina di descrizione del file].',
+'sharedupload-desc-create' => 'Questo file proviene da $1 e può essere utilizzato da altri progetti.
+Probabilmente vuoi modificare la descrizione presente nella [$2 pagina di descrizione del file].',
 'filepage-nofile' => 'Non esiste un file con questo nome.',
 'filepage-nofile-link' => 'Non esiste un file con questo nome, ma è possibile [$1 caricarlo].',
 'uploadnewversion-linktext' => 'Carica una nuova versione di questo file',
index 661ca76..c8bf0cd 100644 (file)
@@ -532,9 +532,9 @@ $2',
 'ns-specialprotected' => 'გვერდების რედაქტირება სახელთა სივრცეში {{ns:special}} შეუძლებელია.',
 'titleprotected' => "შემდეგი გვერდის შექმნა აკრძალულია მომხმარებელ [[User:$1|$1]]-ს მიერ.
 მოცემულია შემდეგი ახსნა: „''$2''“.",
-'filereadonlyerror' => 'ფაილი "$1" შეცვლა ვერ ხერხდება, რადგანაც საცავი "$2" მხოლოდ კითხვის რეჟიმშია.
+'filereadonlyerror' => 'á\83¤á\83\90á\83\98á\83\9aá\83\98 "$1" á\83¨á\83\94á\83ªá\83\95á\83\9aá\83\90 á\83\95á\83\94á\83  á\83®á\83\94á\83 á\83®á\83\93á\83\94á\83\91á\83\90, á\83 á\83\90á\83\93á\83\92á\83\90á\83\9cá\83\90á\83ª á\83¤á\83\90á\83\98á\83\9aá\83\98á\83¡ á\83¡á\83\90á\83ªá\83\90á\83\95á\83\98 "$2" á\83\9bá\83®á\83\9dá\83\9aá\83\9dá\83\93 á\83\99á\83\98á\83\97á\83®á\83\95á\83\98á\83¡ á\83 á\83\94á\83\9fá\83\98á\83\9bá\83¨á\83\98á\83\90.
 
\83\9bá\83\98á\83\96á\83\94á\83\96á\83\98 á\83\9bá\83\98á\83\97á\83\98á\83\97á\83\94á\83\91á\83£á\83\9aá\83\98á\83\90: "\'\'$3\'\'".',
\83\90á\83\93á\83\9bá\83\98á\83\9cá\83\98á\83¡á\83¢á\83 á\83\90á\83¢á\83\9dá\83 á\83\98 á\83 á\83\9dá\83\9bá\83\94á\83\9aá\83\9bá\83\90á\83ª á\83\98á\83¡ á\83\93á\83\90á\83\91á\83\9aá\83\9dá\83\99á\83\90 á\83\9bá\83\98á\83£á\83\97á\83\98á\83\97á\83\90 á\83¨á\83\94á\83\9bá\83\93á\83\94á\83\92á\83\98 á\83\9bá\83\98á\83\96á\83\94á\83\96á\83\98: "$3".',
 
 # Virus scanner
 'virus-badscanner' => "შეცდომა. ვირუსთა უცნობი სკანერი: ''$1''",
@@ -915,6 +915,7 @@ $2
 'edit-no-change' => 'თქვენი შესწორება არ იქნა შენახული, რადგანაც ტექსტის ცვლილება არ მოხდა.',
 'edit-already-exists' => 'ახალი გვერდის შექმნა არ მოხერხდა.
 ის უკვე არსებობს.',
+'defaultmessagetext' => 'შეტყობინების სტანდარტული ტექსტი',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'ყურადღება. მოცემული გვერდი შეიცავს ძალიან ბევრ მძიმე ფუნქციას.
@@ -1668,6 +1669,7 @@ $1',
 'backend-fail-contenttype' => 'ფაილის შემადგენლობის ტიპის დადგენა ვერ მოხერხდა, "$1"-ში შესანახად.',
 'backend-fail-batchsize' => 'საცავმა მიიღო {{PLURAL:$1|ფაილის ოპერაციის|ფაილების ოპერაციების}} ბლოკი $1-დან, შეზღუდვა შეადგენს $2 {{PLURAL:$1|ოპერაციას}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'ჟურნალის მონაცემთა ბაზებთან დაკავშირება "$1" მონაცემთა შესანახად ვერ მოხერხდა.',
 'filejournal-fail-dbquery' => 'ჟურნალის მონაცემთა ბაზებთან დაკავშირება "$1" მონაცემთა განახლებისათვის ვერ მოხერხდა.',
 
@@ -2643,7 +2645,7 @@ $1',
 
 # Export
 'export' => 'გვერდების ექსპორტი',
-'exporttext' => 'თქვენ შეგიძლიათ ტექსტებისა, ცვლილებათა ჟურნალის და XML გვერდების ექსპორტირება, რომელიც შეიძლება შემდეგ [[Special:Import||გადატანილი]] იქნას სხვა ვიკიპროექტში, რომელიც მუშაობს MediaWiki-ზე.
+'exporttext' => 'თქვენ შეგიძლიათ ტექსტებისა, ცვლილებათა ჟურნალის და XML გვერდების ექსპორტირება, რომელიც შეიძლება შემდეგ [[Special:Import|გადატანილი]] იქნას სხვა ვიკიპროექტში, რომელიც მუშაობს MediaWiki-ზე.
 
 გვერდის ექსპორტირებისთვის შეიყვანეთ მათი სახელები თითო ხაზზე და აირჩიეთ, თუ გსურთ სტატიის ყველა ვერსიის გადატანა, თუ მხოლოდ ბოლო ვერსიისა.
 
index a29ea8a..befc719 100644 (file)
@@ -10,6 +10,7 @@
  * @author Agurzil
  * @author Agzennay
  * @author Azwaw
+ * @author Mmistmurt
  * @author Teak
  * @author Urhixidur
  */
@@ -83,56 +84,56 @@ $messages = array(
 'underline-default' => 'Browser/Explorateur ameslugen',
 
 # Dates
-'sunday' => 'Lḥedd',
-'monday' => 'Letnayen',
-'tuesday' => 'Ttlata',
-'wednesday' => 'Larebɛa',
-'thursday' => 'Lexmis',
-'friday' => 'Lǧemɛa',
-'saturday' => 'Ssebt',
-'sun' => 'Lḥedd',
-'mon' => 'Letnayen',
-'tue' => 'Ttlata',
-'wed' => 'Larebɛa',
-'thu' => 'Lexmis',
-'fri' => 'Lǧemɛa',
-'sat' => 'Ssebt',
+'sunday' => 'Ačer',
+'monday' => 'Arim',
+'tuesday' => 'Aram',
+'wednesday' => 'Ahad',
+'thursday' => 'Amhad',
+'friday' => 'Sem',
+'saturday' => 'Sed',
+'sun' => 'Ače',
+'mon' => 'Ari',
+'tue' => 'Ara',
+'wed' => 'Aha',
+'thu' => 'Amh',
+'fri' => 'Sem',
+'sat' => 'Sed',
 'january' => 'Yennayer',
 'february' => 'Furar',
 'march' => 'Meɣres',
-'april' => 'Ibrir',
+'april' => 'Yebrir',
 'may_long' => 'Mayu',
 'june' => 'Yunyu',
 'july' => 'Yulyu',
 'august' => 'Ɣuct',
-'september' => 'Ctember',
+'september' => 'Ctamber',
 'october' => 'Tuber',
 'november' => 'Wamber',
-'december' => 'Jember',
+'december' => 'Dujamber',
 'january-gen' => 'Yennayer',
 'february-gen' => 'Furar',
 'march-gen' => 'Meɣres',
-'april-gen' => 'Ibrir',
+'april-gen' => 'Yebrir',
 'may-gen' => 'Mayu',
 'june-gen' => 'Yunyu',
 'july-gen' => 'Yulyu',
 'august-gen' => 'Ɣuct',
-'september-gen' => 'Ctember',
+'september-gen' => 'Ctamber',
 'october-gen' => 'Tuber',
 'november-gen' => 'Wamber',
-'december-gen' => 'Jember',
-'jan' => 'Yennayer',
-'feb' => 'Ibrir',
-'mar' => 'Meɣres',
-'apr' => 'Ibrir',
-'may' => 'Mayu',
-'jun' => 'Yunyu',
-'jul' => 'Yulyu',
-'aug' => 'Ɣuct',
-'sep' => 'Ctember',
-'oct' => 'Tuber',
-'nov' => 'Wamber',
-'dec' => 'Jember',
+'december-gen' => 'Dujamber',
+'jan' => 'Yen',
+'feb' => 'Fur',
+'mar' => 'Meɣ',
+'apr' => 'Yeb',
+'may' => 'May',
+'jun' => 'Yun',
+'jul' => 'Yul',
+'aug' => 'Ɣuc',
+'sep' => 'Cta',
+'oct' => 'Tub',
+'nov' => 'Wam',
+'dec' => 'Duj',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Taggayt|Taggayin}}',
@@ -140,6 +141,11 @@ $messages = array(
 'subcategories' => 'Taggayin tizellumin',
 'category-media-header' => 'Media deg taggayt "$1"',
 'category-empty' => "''Taggayt-agi d tilemt.''",
+'hidden-categories' => '{{PLURAL:$1|Taggayt yeffren|Taggayin yeffren}}',
+'hidden-category-category' => 'Taggayin yeffren',
+'category-subcat-count' => 'Taggayt agi tesɛa {{PLURAL:$2|adu-taggayt|$2 adu-taggayin, ɣef ayed {{PLURAL:$1|t-agi|t-igi $1}}}} ddaw agi.',
+'category-subcat-count-limited' => 'Taggayt agi tesɛa {{PLURAL:$1|adu-taggayt agi|tid $1 adu-taggayin agi}} ddaw-agi.',
+'category-article-count' => 'Taggayt agi tesɛa {{PLURAL:$2|asebter agi|$2 isetar, ɣef ayed {{PLURAL:$1|t-agi|t-igi $1}} ddaw-agi}}.',
 
 'about' => 'Awal ɣef...',
 'article' => 'Ayen yella deg usebter',
@@ -247,6 +253,7 @@ $messages = array(
 'youhavenewmessagesmulti' => 'Tesɛiḍ iznan imaynuten deg $1',
 'editsection' => 'beddel',
 'editold' => 'beddel',
+'viewsourcelink' => 'ẓeṛ aɣbalu',
 'editsectionhint' => 'Beddel amur: $1',
 'toc' => 'Agbur',
 'showtoc' => 'Ssken',
@@ -256,6 +263,7 @@ $messages = array(
 'restorelink' => '{{PLURAL:$1|Yiwen abeddel yettumḥan|$1 Ibeddlen yettumḥan}}',
 'feedlinks' => 'Asuddem:',
 'feed-invalid' => 'Anaw n usuddem mačči ṣaḥiḥ.',
+'red-link-title' => '$1 (ulac asebter)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Amagrad',
@@ -607,6 +615,7 @@ Inedbalen wiyaḍ deg wiki-yagi zemren ad ẓren imuren i yettwafren u zemren a
 'nextn' => '{{PLURAL:$1|$1}} ameḍfir',
 'viewprevnext' => 'Ẓer ($1 {{int:pipe-separator}} $2) ($3).',
 'searchhelp-url' => 'Help:Agbur',
+'search-result-size' => '$1 ({{PLURAL:$2|1 awal|$2 awalen}})',
 'showingresults' => "Tamuli n {{PLURAL:$1|'''Yiwen''' wegmud|'''$1''' n yigmad}} seg  #'''$2'''.",
 'showingresultsnum' => "Tamuli n {{PLURAL:$3|'''Yiwen''' wegmud|'''$3''' n yigmad}} seg  #'''$2'''.",
 'nonefound' => "'''Tamawt''': S umata, asmi ur tufiḍ acemma
@@ -746,7 +755,7 @@ Akken ad tessekcmeḍ tugna deg usebter, seqdec azay am wagi
 'fileuploadsummary' => 'Agzul:',
 'filestatus' => 'Aẓayer n copyright:',
 'filesource' => 'Seg way yekka',
-'uploadedfiles' => 'Ifayluwen yettwaznen',
+'uploadedfiles' => 'Ifuyla yettwaznen',
 'ignorewarning' => 'Ttu aɣtal u smekti afaylu',
 'ignorewarnings' => 'Ttu iɣtalen',
 'illegalfilename' => 'Isem n ufaylu "$1" yesɛa isekkilen ur tettalaseḍ ara a ten-tesseqdceḍ deg yizwal n isebtar. G leɛnayek beddel isem n ufaylu u azen-it tikkelt nniḍen.',
@@ -1256,6 +1265,7 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 'tooltip-ca-watch' => 'Rnu asebter-agi i wumuɣ n uɛessi inek',
 'tooltip-ca-unwatch' => 'Kkes asebter-agi seg wumuɣ n uɛessi inek',
 'tooltip-search' => 'Nadi {{SITENAME}}',
+'tooltip-search-fulltext' => 'Nadi isebtar i sɛan aḍris agi',
 'tooltip-p-logo' => 'Asebter amenzawi',
 'tooltip-n-mainpage' => 'Ẓer asebter amenzawi',
 'tooltip-n-portal' => 'Ɣef usenfar, ayen tzemrḍ ad txedmeḍ, anda tafeḍ tiɣawsiwin',
@@ -1269,7 +1279,7 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 'tooltip-feed-atom' => 'Atom feed n usebter-agi',
 'tooltip-t-contributions' => 'Ẓer umuɣ n tikkin n wemseqdac-agi',
 'tooltip-t-emailuser' => 'Azen e-mail i wemseqdac-agi',
-'tooltip-t-upload' => 'Azen tugna neɣ afaylu nniḍen',
+'tooltip-t-upload' => 'Azen ifuyla',
 'tooltip-t-specialpages' => 'Umuɣ n akk isebtar usligen',
 'tooltip-ca-nstab-main' => 'Ẓer ayen yellan deg usebter',
 'tooltip-ca-nstab-user' => 'Ẓer asebter n wemseqdac',
@@ -1344,6 +1354,12 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 'bydate' => 's uzemz',
 'sp-newimages-showfrom' => 'Ssken tugniwin timaynutin seg $1',
 
+# Bad image list
+'bad_image_list' => 'Amasal d-wagi :
+
+Ala umuɣen n ismiwar (i bdun s *) ddemen s amiḍan. Azday amezwaru n ujerriḍ ilaq ad yilli win n tugna icmeten.
+Izdayen nniḍen ɣef yiwen ajerriḍ llan d tisuraf, am isebtar ɣef anta tugna tezmer at illi.',
+
 # EXIF tags
 'exif-imagewidth' => 'Tehri',
 
index 9e3f92a..e7ee7a2 100644 (file)
@@ -437,7 +437,7 @@ $messages = array(
 'january' => 'қаңтар',
 'february' => 'ақпан',
 'march' => 'наурыз',
-'april' => 'cәуір',
+'april' => 'сәуір',
 'may_long' => 'мамыр',
 'june' => 'маусым',
 'july' => 'шілде',
index 7e5ce84..bec964d 100644 (file)
@@ -682,9 +682,9 @@ $2',
 'ns-specialprotected' => '{{ns:special}} 네임스페이스의 문서는 편집할 수 없습니다.',
 'titleprotected' => '[[User:$1|$1]] 사용자가 문서 생성을 금지했습니다.
 이유는 다음과 같습니다. ‘$2’',
-'filereadonlyerror' => '"$2" 파일 저장소가 읽기 전용이라서 "$1" 파일을 변경할 수 없습니다.
+'filereadonlyerror' => '‘$2’ 파일 저장소가 읽기 전용이기 때문에 ‘$1’ 파일을 변경할 수 없습니다.
 
-ì \9cì\8b\9cë\90\9c ì\9d´ì\9c ë\8a\94 "\'\'$3\'\'"ì\9e\85니다.',
+ì \80ì\9e¥ì\86\8c ê´\80리ì\9e\90ê°\80 í\8c\8cì\9d¼ ì \80ì\9e¥ì\86\8c를 ì\9e ê·¼ ì\9d´ì\9c ì\97\90 ë\8c\80í\95´ "\'\'$3\'\'"ì\9d´ë\9d¼ë\8a\94 ì\84¤ëª\85ì\9d\84 ë\82¨ê²¼ì\8aµ니다.',
 
 # Virus scanner
 'virus-badscanner' => "잘못된 설정: 알 수 없는 바이러스 검사기: ''$1''",
@@ -1027,6 +1027,7 @@ $1, 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 
 'edit-no-change' => '문서에 아무런 변화가 없기 때문에, 당신의 편집은 무시되었습니다.',
 'edit-already-exists' => '새 문서를 만들 수 없습니다.
 그 문서는 이미 존재합니다.',
+'defaultmessagetext' => '기본 메세지 내용',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''경고:''' 이 문서는 너무 많은 파서 함수를 포함하고 있습니다.
@@ -1242,8 +1243,8 @@ $1",
 'notextmatches' => '해당하는 문서 없음',
 'prevn' => '앞으로 $1개',
 'nextn' => '뒤로 $1개',
-'prevn-title' => 'ì\95\9eì\9d\98 결과 $1개',
-'nextn-title' => 'ë\92¤ì\9d\98 결과 $1개',
+'prevn-title' => 'ì\9d´ì \84 결과 $1개',
+'nextn-title' => 'ë\8b¤ì\9d\8c 결과 $1개',
 'shown-title' => '쪽마다 결과 $1 개씩 보이기',
 'viewprevnext' => '보기: ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-legend' => '검색 설정',
@@ -1791,6 +1792,7 @@ $1',
 'backend-fail-contenttype' => '"$1"에 저장하기 위한 파일의 내용 유형을 판별하지 못했습니다.',
 'backend-fail-batchsize' => '저장 백엔드에서 $1개의 파일 {{PLURAL:$1|작업}}이 쌓여 있습니다; 한계는 $2개입니다.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => '저장소 백엔드 ‘$1’에 대한 저널 데이터베이스에 연결할 수 없습니다.',
 'filejournal-fail-dbquery' => '저장소 백엔드 ‘$1’에 대한 저널 데이터베이스에서 갱신할 수 없습니다.',
 
@@ -2086,8 +2088,8 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'notargettext' => '기능을 수행할 대상 문서나 사용자를 지정하지 않았습니다.',
 'nopagetitle' => '해당 문서 없음',
 'nopagetext' => '당신이 찾는 문서는 존재하지 않습니다.',
-'pager-newer-n' => '이í\9b\84 $1ê°\9c',
-'pager-older-n' => '이전 $1개',
+'pager-newer-n' => '이ì \84 $1ê°\9c',
+'pager-older-n' => '다음 $1개',
 'suppress' => '오버사이트',
 'querypage-disabled' => '이 특수 문서는 성능상의 이유로 비활성화되었습니다.',
 
@@ -3597,16 +3599,16 @@ $5
 'confirm-unwatch-top' => '이 문서를 주시문서 목록에서 뺄까요?',
 
 # Multipage image navigation
-'imgmultipageprev' => 'â\86\90 ì\95\9e 페이지',
-'imgmultipagenext' => 'ë\92¤ 페이지 →',
+'imgmultipageprev' => 'â\86\90 ì\9d´ì \84 페이지',
+'imgmultipagenext' => 'ë\8b¤ì\9d\8c 페이지 →',
 'imgmultigo' => '이동',
 'imgmultigoto' => '$1 페이지로 가기',
 
 # Table pager
 'ascending_abbrev' => '오름차순',
 'descending_abbrev' => '내림차순',
-'table_pager_next' => 'ë\92¤ì\9d\98 문서',
-'table_pager_prev' => 'ì\95\9eì\9d\98 문서',
+'table_pager_next' => 'ë\8b¤ì\9d\8c 문서',
+'table_pager_prev' => 'ì\9d´ì \84 문서',
 'table_pager_first' => '처음 문서',
 'table_pager_last' => '마지막 문서',
 'table_pager_limit' => '문서당 $1개 항목 보이기',
index 1bb50b5..b36ca74 100644 (file)
@@ -166,6 +166,7 @@ $messages = array(
 'listingcontinuesabbrev' => '(баргъаны)',
 'index-category' => 'Индексленнген бетле',
 'noindex-category' => 'Индексленмеген бетле',
+'broken-file-category' => 'Ишлемеген файл джибериулери болгъан бетле',
 
 'about' => 'Ачыкълау',
 'article' => 'Статья',
@@ -394,7 +395,7 @@ $1',
 'badtitle' => 'Джарамагъан ат',
 'badtitletext' => 'Сорулгъан бетни аты терсди, бошду, неда интервики аты терс джазылгъанды. Келишмеген (хайырланыргъа болмагъан) символла хайырланыргъада боллукъдула атында.',
 'perfcached' => 'Бу информация кэшден алыннганды, ахыр тюрлениулени кёргюзмезге боллукъду. Кэшде максимум {{PLURAL:$1|джазыу}} сакъланады.',
-'perfcachedts' => 'Ð\91Ñ\83 Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8f ÐºÑ\8dÑ\88ден Ð°Ð»Ñ\8bннгÑ\8bндÑ\8b, Ð°Ñ\85Ñ\8bÑ\80 ÐºÐµÑ\80е Ð¾Ð» $1 Ð´Ð¶Ð°Ð½Ð³Ñ\8bÑ\80Ñ\82Ñ\8bлÑ\8bннгандÑ\8b. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcachedts' => 'Ð\91Ñ\83 ÐºÑ\8dÑ\88ден Ð°Ð»Ñ\8bннган Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8fдÑ\8b, Ð°Ñ\85Ñ\8bÑ\80 ÐºÐµÑ\80е Ð¾Ð» $1 Ð´Ð¶Ð°Ð½Ð³Ñ\8bÑ\80Ñ\82Ñ\8bлÑ\8bннгандÑ\8b. Ð\9aÑ\8dÑ\88де Ñ\8dм ÐºÑ\91бÑ\8e Ð±Ð»Ð°  {{PLURAL:$4|джазÑ\8bÑ\83|джазÑ\8bÑ\83}} Ñ\81акÑ\8aланадÑ\8b.',
 'querypage-no-updates' => 'Бу бетни бусагъатда джангыртыргъа болмайды.
 Мында келтирилген информация къабыл этилинник тюйюлдю.',
 'wrong_wfQuery_params' => 'wfQuery()<br /> функциягъа джарамагъан параметрле<br />
@@ -524,6 +525,15 @@ $2',
 Сиз энди паролну тюрлендирген неда джангы болджаллы пароль соргъан болурсуз.',
 'resetpass-temp-password' => 'Болджаллы пароль:',
 
+# Special:PasswordReset
+'passwordreset-username' => 'Къошулуучуну аты:',
+'passwordreset-domain' => 'Домен:',
+
+# Special:ChangeEmail
+'changeemail-no-info' => 'Бу бетни кёрюр ючюн сиз системагъа тергеу джазыуугъуз (аккаунтугъуз) бла кирирге керексиз.',
+'changeemail-newemail' => 'Электрон почтаны джангы адреси:',
+'changeemail-none' => '(джокъ)',
+
 # Edit page toolbar
 'bold_sample' => 'Къалын джазыу',
 'bold_tip' => 'Къалын джазыу',
@@ -2891,6 +2901,21 @@ $1',
 'exif-gpsdirection-t' => 'Керти',
 'exif-gpsdirection-m' => 'Мукъладис',
 
+'exif-iimcategory-edu' => 'Окъуу',
+'exif-iimcategory-hth' => 'Саулукъ',
+'exif-iimcategory-lab' => 'Урунуу',
+'exif-iimcategory-pol' => 'Политика',
+'exif-iimcategory-rel' => 'Дин бла ийнам',
+'exif-iimcategory-soi' => 'Социал соруула',
+'exif-iimcategory-spo' => 'Спорт',
+'exif-iimcategory-war' => 'Къазауатла, конфликтле эмда къозгъалыула',
+'exif-iimcategory-wea' => 'Хауаны халы',
+
+'exif-urgency-normal' => 'Тюз ($1)',
+'exif-urgency-low' => 'Алаша ($1)',
+'exif-urgency-high' => 'Мийик ($1)',
+'exif-urgency-other' => 'Къошулуучу салгъан приоритет ($1)',
+
 # External editor support
 'edit-externally' => 'Бу файлны тыш программа бла тюрлендиригиз',
 'edit-externally-help' => '(толу информациягъа мында къарагъыз: [//www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
@@ -3149,8 +3174,9 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 # Special:SpecialPages
 'specialpages' => 'Къуллукъчу бетле',
 'specialpages-note' => '----
-* Нормаль къуллукъчу бетле.
-* <strong class="mw-specialpagerestricted">Къысыулу къуллукъчу бетле.</strong>',
+* Тюз къуллукъчу бетле.
+* <span class="mw-specialpagerestricted">Кирирге эркинлик чекленнген къуллукъчу бетле.</span>
+* <span class="mw-specialpagecached">Кэш этилген къуллукъчу бетле (эски болургъа боллукъдула).</span>',
 'specialpages-group-maintenance' => 'Техника баджарыуну отчетлары',
 'specialpages-group-other' => 'Башха къуллукъчу бетле',
 'specialpages-group-login' => 'Системагъа кир/регистрация эт',
@@ -3226,14 +3252,33 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'sqlite-no-fts' => '$1 толу текст излеуню хайырландыра билмеген',
 
 # New logging system
+'revdelete-summary-hid' => 'тюрлендириуню ачыкълауу джашырылыбды',
+'revdelete-uname-unhid' => 'къошулуучуну аты ачылды',
 'revdelete-restricted' => 'администраторла ючюн этилген чеклениуле',
 'revdelete-unrestricted' => 'администратолра ючюн этилген чеклениуле къоратылгъандыла',
+'logentry-patrol-patrol-auto' => '$1, $3 бетни $4 версиясын автомат халда тинтиб чыкъды',
 'newuserlog-byemail' => 'пароль электрон почта бла джиберилгенди',
 
+# Feedback
+'feedback-subject' => 'Тема:',
+'feedback-message' => 'Билдириу:',
+'feedback-submit' => 'Оюмунгу джибер',
+
 # API errors
+'api-error-badtoken' => 'Ич халат: терс токен.',
+'api-error-empty-file' => 'Сиз ийген файлны ичи бошду.',
+'api-error-emptypage' => 'Ичи бош болгъан джангы бетле къураргъа болмайды.',
+'api-error-file-too-large' => 'Сиз ийген файл асыры уллуду.',
+'api-error-filename-tooshort' => 'Файлны аты асыры къысхады.',
+'api-error-filetype-banned' => 'Быллай типли файлла джасакъланыбдыла.',
+'api-error-hookaborted' => 'Сиз теджеген тюрлендириуню кенгертиуню сюзюучю джасакълагъанды.',
+'api-error-illegal-filename' => 'Джарамагъан файл ат.',
+'api-error-invalid-file-key' => 'Ич халат: болджаллы асыраучу джерде файл  табылмады.',
+'api-error-mustbeposted' => 'Ич халат: соруу, HTTP POST инструкцияны излейди.',
 'api-error-unknown-code' => 'Билинмеген халат: «$1».',
 'api-error-unknown-warning' => 'Билинмеген билдириу: $1',
 'api-error-unknownerror' => 'Билинмеген халат: «$1».',
 'api-error-uploaddisabled' => 'Бу викиде файлла джюклеу амал джукъланыбды',
+'api-error-verification-error' => 'Бу заран джетген файл болургъа боллукъду неда терс кенгертиую болургъа боллукъду.',
 
 );
index 02b26f5..61c8513 100644 (file)
@@ -465,7 +465,7 @@ po [{{fullurl:{{FULLPAGENAME}}|action=edit}} chanjya an folen-ma]</span>.',
 'last' => 'kens',
 'page_first' => 'kensa',
 'page_last' => 'kens',
-'histlegend' => "Ow towis dyffransow: Merkyowgh kistednow radyo an amendyansow dhe geheveli, ha gwaskowgh 'entra' po an boton orth goles an folen.<br />
+'histlegend' => "Dowis dyffransow: Merkyowgh kistednow radyo an amendyansow dhe geheveli, ha gwaskowgh 'entra' po an boton orth goles an folen.<br />
 Alhwedh: '''({{int:cur}})''' = dyffrans gans an amendyans diwettha, '''({{int:last}})''' = dyffrans gans amendyans kens, '''{{int:minoreditletter}}''' = chanj bian.",
 'history-fieldset-title' => 'Peuri an istori',
 'history-show-deleted' => 'Diles hep ken',
index 884162e..fbbd3cb 100644 (file)
@@ -282,7 +282,7 @@ $messages = array(
 'jul' => 'Jull',
 'aug' => 'Ago',
 'sep' => 'Set',
-'oct' => 'Ochů',
+'oct' => 'Och',
 'nov' => 'Nov',
 'dec' => 'Diz',
 
index 0b68495..6b53e45 100644 (file)
@@ -758,7 +758,7 @@ Wann Dir nach en Kéier op \"{{int:savearticle}}\" klickt da gëtt Är Ännerung
 D'Spär gouf vum \$1 gemaach. Als Grond gouf ''\$2'' uginn.
 
 * Ufank vun der Spär: \$8
-* Ënn vun der Spär: \$6
+* Enn vun der Spär: \$6
 * Spär betrëfft: \$7
 
 Dir kënnt den/d' \$1 kontaktéieren oder ee vun den aneren [[{{MediaWiki:Grouppage-sysop}}|Administrateure]] fir iwwer d'Spär ze schwätzen.
@@ -850,6 +850,7 @@ D'Ännerung gouf refuséiert, fir ze verhënneren datt den Text op der Säit onl
 Dëst geschitt heiandsdo wann Dir en anonyme Proxy-Service um Internet benotzt.",
 'edit_form_incomplete' => "'''En Deel vum Ännerungsformulaire koum net um Server un; iwwerpréift w.e.g ob Är Ännerunge komplett sinn a probéiert nach emol.'''",
 'editing' => 'Ännere vu(n) $1',
+'creating' => '$1 gëtt ugeluecht',
 'editingsection' => 'Ännere vu(n) $1 (Abschnitt)',
 'editingcomment' => 'Ännere vu(n) $1 (neien Abschnitt)',
 'editconflict' => 'Ännerungskonflikt: $1',
@@ -905,6 +906,7 @@ Si gouf anscheinend geläscht.",
 'edit-conflict' => 'Ännerungskonflikt.',
 'edit-no-change' => 'Är ännerung gouf ignoréiert, well Dir näischt um Text geännert hutt.',
 'edit-already-exists' => 'Déi nei Säit konnt net ugeluecht ginn, well et se scho gëtt.',
+'defaultmessagetext' => 'Standardtext',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Opgepasst:'' Dës Säit huet ze vill Ufroe vu komplexe Parserfunktiounen.
@@ -1473,7 +1475,7 @@ Si muss manner wéi $1 {{PLURAL:$1|Zeechen|Zeechen}} hunn.',
 'rclinks' => 'Déi lescht $1 Ännerunge vun de leschten $2 Deeg weisen.<br />$3',
 'diff' => 'Ënnerscheed',
 'hist' => 'Versiounen',
-'hide' => 'Verstoppen',
+'hide' => 'verstoppen',
 'show' => 'weisen',
 'minoreditletter' => 'k',
 'newpageletter' => 'N',
@@ -2247,7 +2249,7 @@ Hei sinn déi aktuell Astellunge fir d'Säit '''$1''':",
 'protect-cantedit' => "Dir kënnt d'Spär vun dëser Säit net änneren, well Dir net déi néideg Rechter hutt fir déi Säit z'änneren.",
 'protect-othertime' => 'Aner Zäit:',
 'protect-othertime-op' => 'aner Zäit',
-'protect-existing-expiry' => 'Ënn vun der Säitespär: $2 ëm $3 Auer',
+'protect-existing-expiry' => 'Enn vun der Säitespär: $2 ëm $3 Auer',
 'protect-otherreason' => 'Aneren/zousätzleche Grond:',
 'protect-otherreason-op' => 'Anere Grond',
 'protect-dropdown' => '*Déi heefegst Grënn fir eng Säit ze spären
@@ -2371,7 +2373,7 @@ $1',
 'whatlinkshere-prev' => '{{PLURAL:$1|vireg|vireg $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|nächsten|nächst $1}}',
 'whatlinkshere-links' => '← Linken',
-'whatlinkshere-hideredirs' => 'Viruleedungen $1',
+'whatlinkshere-hideredirs' => 'Viruleedunge $1',
 'whatlinkshere-hidetrans' => 'Agebonne Schabloune $1',
 'whatlinkshere-hidelinks' => 'Linken $1',
 'whatlinkshere-hideimages' => '$1 Linken op de Fichier',
@@ -2736,7 +2738,7 @@ Späichert en op Ärem Computer of a luet en hei nees erop.',
 'tooltip-pt-anontalk' => "Diskussioun iwwer d'Ännerungen déi vun dëser IP-Adress aus gemaach gi sinn",
 'tooltip-pt-preferences' => 'Meng Astellungen',
 'tooltip-pt-watchlist' => 'Lëscht vu Säiten, bei deenen Dir op Ännerungen oppasst',
-'tooltip-pt-mycontris' => 'Lëscht vun Ã¤re Kontributiounen',
+'tooltip-pt-mycontris' => 'Lëscht vun Ã\84re Kontributiounen',
 'tooltip-pt-login' => 'Sech umelle gëtt gäre gesinn, Dir musst et awer net maachen.',
 'tooltip-pt-anonlogin' => 'Et wier gutt, Dir géift Iech aloggen, och wann et keng Musse-Saach ass.',
 'tooltip-pt-logout' => 'Ofmellen',
index 2e633ef..dfe840f 100644 (file)
@@ -158,7 +158,7 @@ $messages = array(
 'vector-simplesearch-preference' => 'Гегьенш жагъурунин рикIел гъун кутун (кьилди "Вектор" акунар патал)',
 'vector-view-create' => 'Туькlуьрун',
 'vector-view-edit' => 'Дуьзар хъувун',
-'vector-view-history' => 'Ð\9aÑ\8cиÑ\81пеÑ\81диз килигун',
+'vector-view-history' => 'ТаÑ\80иÑ\85диз килигун',
 'vector-view-view' => 'Кlелун',
 'vector-view-viewsource' => 'Чешме къалурун',
 'actions' => 'Крар',
@@ -174,7 +174,7 @@ $messages = array(
 'go' => 'ЭлячIун',
 'searcharticle' => 'ЭлячIун',
 'history' => 'Ччинин тарих',
-'history_short' => 'Ð\9aÑ\8cиÑ\81пеÑ\81',
+'history_short' => 'ТаÑ\80иÑ\85',
 'updatedmarker' => 'Зи эхиримжи гьахьун гуьгуьнлай цIийи авунва',
 'printableversion' => 'Басма авун патал жуьре',
 'permalink' => 'Гьамишан элячIун',
@@ -298,10 +298,13 @@ $messages = array(
 'missingarticle-rev' => '(жуьре#: $1)',
 'internalerror' => 'КЪенепатан гъалатI',
 'internalerror_info' => 'КЪенепатан гъалатI $1',
+'badarticleerror' => 'И ччина и кар кьилиз акъудиз мумкин ттуш.',
+'cannotdelete-title' => ' "$1" ччин алудиз жезвач',
 'badtitle' => 'Ииже текъвер тIвар',
 'badtitletext' => 'ТIалабзавай ччин  я вичел амал алачир я,  я  ичIи я,  ва я чIаларарадин ва я викиарадин кьилин цlарар чlурукlа къалурнава. Мумкин я, кьилин цlарара сад ва я адалай гзаф рехъ гун виже текъвер символар кардик кутунвайди я.',
 'viewsource' => 'Килигун',
 'viewsource-title' => '$1 патал чешмедиз килигун',
+'actionthrottled' => 'Фадвилин сергьятар',
 
 # Virus scanner
 'virus-unknownscanner' => 'Малумтушир антивирус',
@@ -329,9 +332,13 @@ $messages = array(
 'createaccountmail' => 'Э-чар галаз',
 'createaccountreason' => 'Себеб:',
 'loginerror' => 'ГЬахьунин гъалатI',
+'createaccounterror' => 'И аккаунт туькIуьриз мумкин ттуш: $1',
 'loginsuccesstitle' => 'Агалкьунралди гьахьун',
+'wrongpasswordempty' => 'Тавакъу ийида, ичIи тушир парол ттур.',
 'mailmypassword' => 'ЦIийи парол Э-мейлдиз къачун',
+'mailerror' => 'Чар ракъурунин гъалатI: $1',
 'accountcreated' => 'Аккаунт туькIуьрнава',
+'usernamehasherror' => 'Уртахдин тIвар "диез"дин лишан квачиз хьана кIанзава',
 'loginlanguagelabel' => 'ЧIал: $1',
 
 # Change password dialog
@@ -785,13 +792,13 @@ $messages = array(
 
 # File description page
 'file-anchor-link' => 'Файл',
-'filehist' => 'Файлдин кьиспес',
+'filehist' => 'Файлдин тарих',
 'filehist-help' => 'Файлдин виликан жуьре килигун патал, гьа а жуьредин тарих/вахт илиса,',
 'filehist-deleteall' => 'вири къакъудун',
 'filehist-deleteone' => 'къакъудун',
 'filehist-revert' => 'элкъуьрна хкун',
 'filehist-current' => 'алай',
-'filehist-datetime' => 'Ð\9aÑ\8cиÑ\81пеÑ\81\87Iав',
+'filehist-datetime' => 'ТаÑ\80иÑ\85/ваÑ\85Ñ\82',
 'filehist-thumb' => 'Бицlи шикил',
 'filehist-thumbtext' => '$1 тарих алай жьуредин бицlи акунар',
 'filehist-nothumb' => 'БицIи суьрет авайд ттуш',
index 695de75..d86e3d1 100644 (file)
@@ -1641,6 +1641,7 @@ Gank trök nao t [[Special:Upload/stash/$1|uploadformuleer]] om dit perbleem te
 'backend-fail-contenttype' => 'Kós \'t inhawdtype van \'t bestnadj óm es "$1" op te slaon neet bepaole.',
 'backend-fail-batchsize' => 'Reiks van $1 {{PLURAL:$1|bestandjsoperatie|bestandjsoperaties}} in de opslaagbackend; de limiet is $2 {{PLURAL:$2|operatie|operaties}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Kós neet verbinje mit de journaaldatabase veur de opslaagbackend "$1".',
 'filejournal-fail-dbquery' => 'Kós de journaaldatabase neet biewèrke veur de opslaagbackend "$1".',
 
index 942d5c2..ceb3061 100644 (file)
@@ -722,7 +722,7 @@ $2',
 Причината за тоа е: ''$2''.",
 'filereadonlyerror' => "Не можам да ја изменам податотеката „$1“ бидејќи складиштето „$2“ е во незаписен режим.
        
\9fонÑ\83деноÑ\82о Ð¾Ð±Ñ\80азложение Ð³Ð»Ð°Ñ\81и: „''$3''“.",
\90дминиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80оÑ\82 Ñ\88Ñ\82о Ñ\98а Ð·Ð°ÐºÐ»Ñ\83Ñ\87и Ð³Ð¾ Ð¿Ð¾Ð½Ñ\83ди Ñ\81ледново Ð¾Ð±Ñ\80азложение: „''$3''“.",
 
 # Virus scanner
 'virus-badscanner' => "Лоша поставка: непознат проверувач на вируси: ''$1''",
@@ -1107,6 +1107,7 @@ $2
 'edit-no-change' => 'Вашите уредувања беа игнорирани, бидејќи не се направени промени врз текстот.',
 'edit-already-exists' => 'Не може да се создаде нова страница.
 Истата веќе постои.',
+'defaultmessagetext' => 'Текст на пораката по основно',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Предупредување: Оваа страница користи премногу повикувања на parser функции.
@@ -1879,6 +1880,7 @@ $1',
 'backend-fail-contenttype' => 'Не можев да утврдам каква содржина има податотеката што треба да ја складирам во „$1“.',
 'backend-fail-batchsize' => 'Складишната основа доби блок од $1 податочна {{PLURAL:$1|операција|операции}}, а ограничувањето е $2 {{PLURAL:$2|операција|операции}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Не можев да се поврзам со дневничката база за складишната основа „$1“.',
 'filejournal-fail-dbquery' => 'Не можев да ја подновам дневничката база за складишната основа „$1“.',
 
index c92d777..bcbd0bd 100644 (file)
@@ -439,12 +439,12 @@ $messages = array(
 'category-empty' => "''ഈ വർഗ്ഗത്തിൽ താളുകളോ പ്രമാണങ്ങളോ ഇല്ല.''",
 'hidden-categories' => '{{PLURAL:$1|മറഞ്ഞിരിക്കുന്ന വർഗ്ഗം|മറഞ്ഞിരിക്കുന്ന വർഗ്ഗങ്ങൾ}}',
 'hidden-category-category' => 'മറഞ്ഞിരിക്കുന്ന വർഗ്ഗങ്ങൾ',
-'category-subcat-count' => '{{PLURAL:$2|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിനàµ\81àµ\8dâ\80\8c à´¤à´¾à´´àµ\86 à´ªàµ\8dരദർശിപàµ\8dപിà´\9aàµ\8dà´\9aà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´\92à´°àµ\81 à´\89പവർà´\97àµ\8dà´\97à´\82 à´®à´¾à´¤àµ\8dà´°à´®àµ\87 à´\89à´³àµ\8dà´³àµ\82.|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിനàµ\81àµ\8dâ\80\8c à´®àµ\8aà´¤àµ\8dà´¤à´\82 $2 à´\89പവർà´\97àµ\8dà´\97à´\99àµ\8dà´\99à´³àµ\81à´³àµ\8dളതിൽ {{PLURAL:$1|à´\92à´°àµ\86à´£àµ\8dà´£à´\82|$1 à´\8eà´£àµ\8dà´£à´\82}} à´¤à´¾à´´àµ\86 à´ªàµ\8dരദർശിപàµ\8dപിà´\9aàµ\8dà´\9aിരിക്കുന്നു.}}',
-'category-subcat-count-limited' => 'à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിനàµ\81 à´¤à´¾à´´àµ\86 à´\95ാണുന്ന {{PLURAL:$1|ഉപവർഗ്ഗമുണ്ട്|$1 ഉപവർഗ്ഗങ്ങളുണ്ട്}}.',
-'category-article-count' => '{{PLURAL:$2|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിൽ à´¤à´¾à´´àµ\86 à´ªàµ\8dരദർശിപàµ\8dപിà´\9aàµ\8dà´\9aà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´\92à´°àµ\81 à´¤à´¾à´³àµ\87 à´\89à´³àµ\8dà´³àµ\82.|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിൽ $2 à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´³àµ\8dളതിൽ {{PLURAL:$1|à´\92à´°àµ\81 à´¤à´¾àµ¾|$1 à´\8eà´£àµ\8dà´£à´\82}} à´¤à´¾à´´àµ\86 à´ªàµ\8dരദർശിപàµ\8dപിà´\9aàµ\8dà´\9aിരിക്കുന്നു.}}',
-'category-article-count-limited' => 'à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിൽ à´¤à´¾à´´àµ\86 à´ªàµ\8dരദർശിപàµ\8dപിà´\9aàµ\8dà´\9aിരിക്കുന്ന {{PLURAL:$1|ഒരു താൾ ഉണ്ട്|$1 താളുകൾ ഉണ്ട്}}.',
-'category-file-count' => '{{PLURAL:$2|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിൽ à´¤à´¾à´´àµ\86 à´\95ാണàµ\81à´¨àµ\8dà´¨ à´\92à´°àµ\81 à´ªàµ\8dരമാണà´\82 à´®à´¾à´¤àµ\8dà´°à´®àµ\87 à´\89à´³àµ\8dà´³àµ\82.|à´®àµ\8aà´¤àµ\8dà´¤à´\82 $2 à´ªàµ\8dരമാണà´\99àµ\8dà´\99à´³àµ\81à´³àµ\8dളതിൽ {{PLURAL:$1|à´\92à´°àµ\86à´£àµ\8dà´£à´\82|$1 à´\8eà´£àµ\8dà´£à´\82}} à´¤à´¾à´´àµ\86 à´\95ാണിà´\9aàµ\8dà´\9aിരിക്കുന്നു.}}',
-'category-file-count-limited' => 'à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിൽ à´¤à´¾à´´àµ\86 à´\95ാണുന്ന {{PLURAL:$1|ഒരു പ്രമാണം|$1 പ്രമാണങ്ങൾ}} ഉണ്ട്.',
+'category-subcat-count' => '{{PLURAL:$2|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിനàµ\81àµ\8dâ\80\8c à´¤à´¾à´´àµ\86 à´¨àµ½à´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´\92à´°àµ\81 à´\89പവർà´\97àµ\8dà´\97à´\82 à´®à´¾à´¤àµ\8dരമാണàµ\81à´³àµ\8dളതàµ\8d.|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിനàµ\81àµ\8dâ\80\8c $2 à´\89പവർà´\97àµ\8dà´\97à´\99àµ\8dà´\99à´³àµ\81à´³àµ\8dളതിൽ {{PLURAL:$1|à´\92à´°àµ\86à´£àµ\8dà´£à´\82|$1 à´\8eà´£àµ\8dà´£à´\82}} à´¤à´¾à´´àµ\86 à´¨àµ½à´\95à´¿à´¯ിരിക്കുന്നു.}}',
+'category-subcat-count-limited' => 'à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിനàµ\81 à´¤à´¾à´´àµ\86 à´¨àµ½à´\95ിയിരിà´\95àµ\8dà´\95ുന്ന {{PLURAL:$1|ഉപവർഗ്ഗമുണ്ട്|$1 ഉപവർഗ്ഗങ്ങളുണ്ട്}}.',
+'category-article-count' => '{{PLURAL:$2|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിൽ à´¤à´¾à´´àµ\86 à´¨àµ½à´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´\92à´°àµ\81 à´¤à´¾àµ¾ à´®à´¾à´¤àµ\8dരമാണàµ\81à´³àµ\8dളതàµ\8d.|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിൽ $2 à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´³àµ\8dളതിൽ {{PLURAL:$1|à´\92à´°àµ\81 à´¤à´¾àµ¾|$1 à´\8eà´£àµ\8dà´£à´\82}} à´¤à´¾à´´àµ\86 à´¨àµ½à´\95à´¿à´¯ിരിക്കുന്നു.}}',
+'category-article-count-limited' => 'à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിൽ à´¤à´¾à´´àµ\86 à´¨àµ½à´\95à´¿à´¯ിരിക്കുന്ന {{PLURAL:$1|ഒരു താൾ ഉണ്ട്|$1 താളുകൾ ഉണ്ട്}}.',
+'category-file-count' => '{{PLURAL:$2|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിൽ à´¤à´¾à´´àµ\86 à´¨àµ½à´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´\92à´°àµ\81 à´ªàµ\8dരമാണà´\82 à´®à´¾à´¤àµ\8dരമാണàµ\81à´³àµ\8dളതàµ\8d.|à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിൽ à´®àµ\8aà´¤àµ\8dà´¤à´\82 $2 à´ªàµ\8dരമാണà´\99àµ\8dà´\99à´³àµ\81à´³àµ\8dളതിൽ {{PLURAL:$1|à´\92à´°àµ\86à´£àµ\8dà´£à´\82|$1 à´\8eà´£àµ\8dà´£à´\82}} à´¤à´¾à´´àµ\86 à´¨àµ½à´\95à´¿à´¯ിരിക്കുന്നു.}}',
+'category-file-count-limited' => 'à´\88 à´µàµ¼à´\97àµ\8dà´\97à´¤àµ\8dതിൽ à´¤à´¾à´´àµ\86 à´¨àµ½à´\95ിയിരിà´\95àµ\8dà´\95ുന്ന {{PLURAL:$1|ഒരു പ്രമാണം|$1 പ്രമാണങ്ങൾ}} ഉണ്ട്.',
 'listingcontinuesabbrev' => 'തുടർച്ച.',
 'index-category' => 'വർഗ്ഗീകരിക്കപ്പെട്ട താളുകൾ',
 'noindex-category' => 'വർഗ്ഗീകരിക്കപ്പെടാത്ത താളുകൾ',
@@ -707,7 +707,7 @@ $2',
 ''$2'' എന്നതാണു അതിനു കാണിച്ചിട്ടുള്ള കാരണം.",
 'filereadonlyerror' => 'പ്രമാണ ശേഖരണി "$2" ഇപ്പോൾ "കാണൽ-മാത്രം" വിധത്തിൽ ക്രമീകരിച്ചിരിക്കുന്നതിനാൽ "$1" എന്ന പ്രമാണത്തിൽ മാറ്റം വരുത്താനാകില്ല.
 
-നൽà´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´\95ാരണà´\82 "\'\'$1\'\'" എന്നാണ്.',
+ബനàµ\8dധിà´\9aàµ\8dà´\9a à´\95ാരàµ\8dà´¯â\80\8cനിർവാഹà´\95(ൻ) à´¨àµ½à´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´\95ാരണà´\82 "\'\'$3\'\'" എന്നാണ്.',
 
 # Virus scanner
 'virus-badscanner' => "തെറ്റായ ക്രമീകരണങ്ങൾ: അപരിചിതമായ വൈറസ് തിരച്ചിൽ ഉപാധി :  ''$1''",
@@ -744,7 +744,7 @@ $2',
 'gotaccount' => "താങ്കൾക്ക് അംഗത്വമുണ്ടോ? '''$1'''.",
 'gotaccountlink' => 'പ്രവേശിക്കുക',
 'userlogin-resetlink' => 'താങ്കളുടെ ലോഗിൻ വിവരങ്ങൾ മറന്നു പോയോ?',
-'createaccountmail' => 'ഇ-മെയിൽ വഴി',
+'createaccountmail' => 'ഇമെയിൽ വഴി',
 'createaccountreason' => 'കാരണം:',
 'badretype' => 'താങ്കൾ ടൈപ്പ് ചെയ്ത രഹസ്യവാക്കുകൾ തമ്മിൽ യോജിക്കുന്നില്ല.',
 'userexists' => 'നൽകിയ ഉപയോക്തൃനാമം മുമ്പേ നിലവിലുണ്ട്.
@@ -770,7 +770,7 @@ $2',
 'passwordtooshort' => 'രഹസ്യവാക്കിൽ കുറഞ്ഞതു {{PLURAL:$1|ഒരു അക്ഷരം|$1 അക്ഷരങ്ങൾ}} ഉണ്ടായിരിക്കണം.',
 'password-name-match' => 'താങ്കളുടെ രഹസ്യവാക്ക് ഉപയോക്തൃനാമത്തിൽ നിന്നും വ്യത്യസ്തമായിരിക്കണം.',
 'password-login-forbidden' => 'ഈ ഉപയോക്തൃനാമത്തിന്റെയും രഹസ്യവാക്കിന്റെയും ഉപയോഗം നിരോധിച്ചിരിക്കുന്നു.',
-'mailmypassword' => 'പുതിയ രഹസ്യവാക്ക് ഇ-മെയിൽ ചെയ്യുക',
+'mailmypassword' => 'പുതിയ രഹസ്യവാക്ക് ഇമെയിൽ ചെയ്യുക',
 'passwordremindertitle' => '{{SITENAME}} സംരംഭത്തിൽ ഉപയോഗിക്കാനുള്ള താത്കാലിക രഹസ്യവാക്ക്',
 'passwordremindertext' => 'ആരോ ഒരാൾ ($1 എന്ന ഐ.പി. വിലാസത്തിൽനിന്ന് ഒരാൾ, ഒരു പക്ഷേ താങ്കളായിരിക്കാം) {{SITENAME}} ($4) സംരംഭത്തിലേക്ക് പുതിയ രഹസ്യവാക്ക് ആവശ്യപ്പെട്ടിരിക്കുന്നു. "$2" എന്ന ഉപയോക്താവിന്റെ താത്കാലിക രഹസ്യവാക്കായി "$3" സജ്ജീകരിച്ചിരിക്കുന്നു. താങ്കൾക്ക് ആവശ്യമെങ്കിൽ, താങ്കൾ പ്രവേശിച്ചശേഷം പുതിയ രഹസ്യവാക്ക് സജ്ജീകരിക്കേണ്ടതാണ്. താങ്കളുടെ താത്കാലിക രഹസ്യവാക്കിന്റെ കാലാവധി {{PLURAL:$5|ഒരു ദിവസമാകുന്നു|$5 ദിവങ്ങളാകുന്നു}}.
 
@@ -788,7 +788,7 @@ $2',
 'emailnotauthenticated' => 'താങ്കളുടെ ഇമെയിൽ വിലാസത്തിന്റെ സാധുത ഇതുവരെ സ്ഥിരീകരിക്കപ്പെട്ടിട്ടില്ല. സാധുത തെളിയിക്കുന്നതുവരെ താഴെപ്പറയുന്നവയ്ക്കൊന്നും താങ്കൾക്ക് ഇമെയിൽ അയക്കുവാൻ സാദ്ധ്യമല്ല.',
 'noemailprefs' => 'ഈ ക്രമീകരണങ്ങൾ പ്രവർത്തിക്കുവാൻ സാധുവായ ഒരു ഇമെയിൽ വിലാസം ഉൾപ്പെടുത്തുക.',
 'emailconfirmlink' => 'താങ്കളുടെ ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കുക',
-'invalidemailaddress' => 'ഇ-മെയിൽ വിലാസം സാധുവായ രൂപത്തിൽ അല്ലാത്തതിനാൽ സ്വീകാര്യമല്ല.
+'invalidemailaddress' => 'ഇമെയിൽ വിലാസം സാധുവായ രൂപത്തിൽ അല്ലാത്തതിനാൽ സ്വീകാര്യമല്ല.
 ദയവായി സാധുവായ രൂപത്തിലുള്ള ഇമെയിൽ വിലാസം ചേർക്കുകയോ ഇമെയിൽ വിലാസത്തിനുള്ള ഇട ഒഴിവാക്കിയിടുകയോ ചെയ്യുക.',
 'cannotchangeemail' => 'അംഗത്വത്തിന്റെ ഇമെയിൽ വിലാസങ്ങൾ ഈ വിക്കിയിൽ മാറ്റാനാവില്ല.',
 'emaildisabled' => 'ഈ സൈറ്റിൽ നിന്ന് ഇമെയിലുകൾ അയയ്ക്കാനാവില്ല.',
@@ -807,7 +807,7 @@ $2',
 
 # E-mail sending
 'php-mail-error-unknown' => 'പി.എച്ച്.പി.യുടെ main() ഫങ്ഷനിൽ അപരിചിതമായ പിഴവ്',
-'user-mail-no-addy' => 'ഇ-മെയിൽ വിലാസം ഇല്ലാതെയാണ് ഇ-മെയിൽ അയയ്ക്കാൻ ശ്രമിച്ചത്',
+'user-mail-no-addy' => 'ഇമെയിൽ വിലാസം ഇല്ലാതെയാണ് ഇമെയിൽ അയയ്ക്കാൻ ശ്രമിച്ചത്',
 
 # Change password dialog
 'resetpass' => 'രഹസ്യവാക്ക് മാറ്റുക',
@@ -836,7 +836,7 @@ $2',
 'passwordreset-domain' => 'ഡൊമൈൻ:',
 'passwordreset-capture' => 'ഫലമായുണ്ടാകുന്ന ഇമെയിൽ കാണണോ?',
 'passwordreset-capture-help' => 'ഈ പെട്ടിയിൽ ശരി ചേർത്താൽ, ഉപയോക്താവിന് അയയ്ക്കുന്നതോടൊപ്പം ഇമെയിൽ (താത്കാലിക രഹസ്യവാക്കിനൊപ്പം) പ്രദർശിപ്പിക്കപ്പെടുന്നതാണ്.',
-'passwordreset-email' => 'ഇ-മെയിൽ വിലാസം:',
+'passwordreset-email' => 'ഇമെയിൽ വിലാസം:',
 'passwordreset-emailtitle' => '{{SITENAME}} സംരംഭത്തിലെ അംഗത്വവിവരങ്ങൾ',
 'passwordreset-emailtext-ip' => 'ആരോ ഒരാൾ (മിക്കവാറും താങ്കളായിരിക്കും, $1 എന്ന ഐ.പി. വിലാസത്തിൽ നിന്നും) {{SITENAME}} സംരംഭത്തിലെ ($4) അംഗത്വവിവരങ്ങളെക്കുറിച്ചുള്ള ഓർമ്മക്കുറിപ്പ് അഭ്യർത്ഥിച്ചിരിക്കുന്നു. ഈ ഇമെയിൽ വിലാസവുമായി ബന്ധപ്പെട്ടിരിക്കുന്ന {{PLURAL:$3|അംഗത്വം|അംഗത്വങ്ങൾ}} താഴെക്കൊടുത്തിരിക്കുന്നു:
 
@@ -845,7 +845,7 @@ $2
 
 ഈ {{PLURAL:$3|താത്കാലിക രഹസ്യവാക്ക്|താത്കാലിക രഹസ്യവാക്കുകൾ}} {{PLURAL:$5|ഒരു ദിവസം|$5 ദിവസങ്ങൾ}} കൊണ്ട് കാലഹരണപ്പെട്ട് പോകുന്നവയാണ്.
 താങ്കൾ ഇപ്പോൾ തന്നെ പ്രവേശിച്ച് രഹസ്യവാക്ക് മാറ്റുന്നതാണ് ഉചിതം. ഈ അഭ്യർത്ഥന മറ്റാരോ ആണ് നടത്തിയത് അല്ലെങ്കിൽ, യഥാർത്ഥ രഹസ്യവാക്ക് താങ്കൾ ഓർമ്മിക്കുകയും അത് മാറ്റാൻ ആഗ്രഹിക്കാതിരിക്കുകയും ആണെങ്കിൽ, ഈ സന്ദേശം അവഗണിച്ച് താങ്കളുടെ പഴയ രഹസ്യവാക്ക് തുടർന്നും ഉപയോഗിക്കാവുന്നതാണ്.',
-'passwordreset-emailtext-user' => '{{SITENAME}} സംരംഭത്തിലെ ഉപയോക്താവായ $1 {{SITENAME}} സംരംഭത്തിലെ ($4) അംഗത്വവിവരങ്ങളെക്കുറിച്ചുള്ള ഓർമ്മക്കുറിപ്പ് അഭ്യർത്ഥിച്ചിരിക്കുന്നു. ഈ ഇ-മെയിൽ വിലാസവുമായി ബന്ധപ്പെട്ടിരിക്കുന്ന {{PLURAL:$3|അംഗത്വം|അംഗത്വങ്ങൾ}} താഴെക്കൊടുത്തിരിക്കുന്നു:
+'passwordreset-emailtext-user' => '{{SITENAME}} സംരംഭത്തിലെ ഉപയോക്താവായ $1 {{SITENAME}} സംരംഭത്തിലെ ($4) അംഗത്വവിവരങ്ങളെക്കുറിച്ചുള്ള ഓർമ്മക്കുറിപ്പ് അഭ്യർത്ഥിച്ചിരിക്കുന്നു. ഈ ഇമെയിൽ വിലാസവുമായി ബന്ധപ്പെട്ടിരിക്കുന്ന {{PLURAL:$3|അംഗത്വം|അംഗത്വങ്ങൾ}} താഴെക്കൊടുത്തിരിക്കുന്നു:
 
 $2
 
@@ -2888,8 +2888,8 @@ $1',
 'tooltip-pt-preferences' => 'താങ്കളുടെ ക്രമീകരണങ്ങൾ',
 'tooltip-pt-watchlist' => 'താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളിലെ മാറ്റങ്ങൾ',
 'tooltip-pt-mycontris' => 'താങ്കളുടെ സേവനങ്ങളുടെ പട്ടിക',
-'tooltip-pt-login' => 'à´²àµ\8bà´\97ിൻ à´\9aàµ\86à´¯àµ\8dയണമàµ\86à´¨àµ\8dà´¨àµ\81 à´¨à´¿àµ¼à´¬à´¨àµ\8dà´§à´\82 à´\87à´²àµ\8dà´²àµ\86à´\99àµ\8dà´\95à´¿à´²àµ\81à´\82 à´²àµ\8bà´\97ിൻ à´\9aàµ\86à´¯àµ\8dà´¯àµ\81വാൻ à´¤à´¾à´²àµ\8dപരàµ\8dയപàµ\8dà´ªàµ\86à´\9fàµ\81à´¨àµ\8dà´¨àµ\81.',
-'tooltip-pt-anonlogin' => 'à´²àµ\8bà´\97ിൻ à´\9aàµ\86à´¯àµ\8dà´¤àµ\81 à´¤à´¿à´°àµ\81à´¤àµ\8dതൽ à´¨à´\9fà´¤àµ\8dà´¤àµ\81വാൻ à´¤à´¾à´²àµ\8dപരàµ\8dയപàµ\8dà´ªàµ\86à´\9fàµ\81à´¨àµ\8dà´¨àµ\81.',
+'tooltip-pt-login' => 'à´²àµ\8bà´\97ിൻ à´\9aàµ\86à´¯àµ\8dà´¯àµ\81വാൻ à´¤à´¾à´²àµ\8dപരàµ\8dയപàµ\8dà´ªàµ\86à´\9fàµ\81à´¨àµ\8dà´¨àµ\81; à´ªà´\95àµ\8dà´·àµ\87 à´¨à´¿àµ¼à´¬à´¨àµ\8dധമലàµ\8dà´²',
+'tooltip-pt-anonlogin' => 'à´²àµ\8bà´\97ിൻ à´\9aàµ\86à´¯àµ\8dà´¯àµ\81വാൻ à´¤à´¾à´²àµ\8dപരàµ\8dയപàµ\8dà´ªàµ\86à´\9fàµ\81à´¨àµ\8dà´¨àµ\81; à´ªà´\95àµ\8dà´·àµ\87 à´¨à´¿àµ¼à´¬à´¨àµ\8dധമലàµ\8dà´²',
 'tooltip-pt-logout' => 'ലോഗൗട്ട് ചെയ്യാനുള്ള കണ്ണി',
 'tooltip-ca-talk' => 'വിവരദായക താളിനെക്കുറിച്ചുള്ള ചർച്ച',
 'tooltip-ca-edit' => 'താങ്കൾക്ക് ഈ താൾ തിരുത്താവുന്നതാണ്. തിരുത്തിയ താൾ സേവ് ചെയ്യൂന്നതിനു മുൻപ് പ്രിവ്യൂ കാണുക.',
index e6fe581..7d8b499 100644 (file)
@@ -1180,6 +1180,7 @@ $1 тэмдэгтээс богино байх ёстой.',
 
 # User preference: e-mail validation using jQuery
 'email-address-validity-valid' => 'Цахим шуудан хүчинтэй байна',
+'email-address-validity-invalid' => 'и-майл хаягаа зөв оруулна уу.',
 
 # User rights
 'userrights' => 'Хэрэглэгчдийн эрхийн удирдлага',
index 9b86088..d0c529b 100644 (file)
@@ -955,7 +955,7 @@ $2',
 'userinvalidcssjstitle' => "'''सावधान:''' \"\$1\" अशी त्वचा नाही.custom .css आणि .js पाने lowercase title वापरतात हे लक्षात घ्या, उदा. {{ns:user}}:Foo/vector.css या विरूद्ध {{ns:user}}:Foo/Vector.css.",
 'updated' => '(बदल झाला आहे.)',
 'note' => "'''सूचना:'''",
-'previewnote' => "'''लक्षात ठेवा की ही फक्त झलक आहे, बदल अजून सुरक्षित केलेले नाहीत.'''",
+'previewnote' => "'''लक्षात ठेवा की ही फक्त झलक आहे''', बदल अजून जतन करण्यात आलेले नाहीत.",
 'previewconflict' => 'वरील संपादन क्षेत्रातील मजकूर जतन केल्यावर या झलकेप्रमाणे दिसेल.',
 'session_fail_preview' => "'''क्षमस्व! सत्र विदेच्या क्षयामुळे आम्ही तुमची संपादन प्रक्रीया पार पाडू शकलो नाही.कृपया पुन्हा प्रयत्न करा.जर एवढ्याने काम झाले नाही तर सदस्य खात्यातून बाहेर पडून पुन्हा प्रवेश करून पहा.'''",
 'session_fail_preview_html' => "'''क्षमस्व! सत्र विदेच्या क्षयामुळे आम्ही तुमची संपादन प्रक्रीया पार पाडू शकलो नाही.'''
@@ -1314,7 +1314,7 @@ $1",
 'prefs-labs' => 'प्रायोगिक वैशिष्ट्ये',
 'prefs-personal' => 'सदस्य व्यक्तिरेखा',
 'prefs-rc' => 'अलीकडील बदल',
-'prefs-watchlist' => 'पहाऱ्याची सूची',
+'prefs-watchlist' => 'नितà¥\8dय à¤ªà¤¹à¤¾à¤£्याची सूची',
 'prefs-watchlist-days' => 'पहाऱ्याच्या सूचीमध्ये दिसणाऱ्या दिवसांची संख्या:',
 'prefs-watchlist-days-max' => 'जास्तीत जास्त $1 {{PLURAL:$1|दिवस|दिवस}}',
 'prefs-watchlist-edits' => 'वाढीव पहाऱ्याच्या सूचीमध्ये दिसणाऱ्या संपादनांची संख्या:',
index d1408d4..c410805 100644 (file)
@@ -582,7 +582,7 @@ Pertanyaan: $2',
 'titleprotected' => "Tajuk ini telah dilindungi oleh [[User:$1|$1]] daripada dicipta. Sebab yang diberikan ialah ''$2''.",
 'filereadonlyerror' => 'Fail "$1" tidak dapat diubah suai kerana repositori fail "$2" berada dalam ragam baca sahaja.
 
-Sebab yang diberikan ialah "\'\'$3\'\'".',
+Pentadbir yang menguncinya memberikan penjelasan yang berikut: "$3".',
 
 # Virus scanner
 'virus-badscanner' => "Konfigurasi rosak: pengimbas virus yang tidak diketahui: ''$1''",
@@ -936,6 +936,7 @@ Log penghapusan bagi laman ini dilampirkan di bawah untuk rujukan.',
 'edit-conflict' => 'Percanggahan penyuntingan.',
 'edit-no-change' => 'Suntingan anda diabaikan kerana tiada perubahan dibuat pada teks tersebut.',
 'edit-already-exists' => 'Tidak dapat mencipta laman baru kerana ia telah wujud.',
+'defaultmessagetext' => 'Teks mesej asal',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Amaran: Laman ini mengandungi terlalu banyak panggilan fungsi penghurai yang intensif.
@@ -1698,6 +1699,7 @@ Sila hubungi [[Special:ListUsers/sysop|pentadbir sistem]].',
 'backend-fail-contenttype' => 'Jenis kandungan fail untuk disimpan di "$1" tidak dapat ditentukan.',
 'backend-fail-batchsize' => 'Backend storan diberi $1 operasi fail dalam satu kelompok; hadnya ialah $2 operasi.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Tidak dapat bersambung dengan pangkalan data jurnal untuk backend storan "$1".',
 'filejournal-fail-dbquery' => 'Pangkalan data jurnal untuk backend storan "$1" tidak dapat dikemaskinikan.',
 
index b339635..4a931db 100644 (file)
@@ -933,7 +933,8 @@ L-aħħar daħla fir-reġistru tal-imblokki hi mogħtiha hawn taħt għal refere
 Ftakar li l-paġni .css u .js personalizzati għandhom l-ewwel ittra tat-titlu żgħira, eż. {{ns:user}}:Foo/vector.css u mhux {{ns:user}}:Foo/Vector.css.",
 'updated' => '(Aġġornata)',
 'note' => "'''Nota:'''",
-'previewnote' => "'''Ftakar li din hija biss dehra proviżorja, u li għadha ma ġietx salvata!'''",
+'previewnote' => "'''Ftakar li din hija biss dehra proviżorja.'''
+It-tibdiliet tiegħek għadhom ma ġewx salvati! [[#editform|→ Kompli immodifika]]",
 'previewconflict' => "Din il-previżjoni turi l-kliem li jinsab fiż-żona ta' modifika superjuri u turi kif tidher kieku l-paġna kella tiġi modifikata.",
 'session_fail_preview' => "'''Jiddispjaċina imma l-modifika tiegħek ma setgħetx tiġi pproċessata minħabba li ntilfet l-informazzjoni tas-sessjoni.
 Jekk jogħġbok, erġa' pprova. Jekk xorta tibqa' ma taħdimx, ipprova [[Special:UserLogout|oħroġ]] u erġa' idħol.'''",
index 282d5d5..f4377de 100644 (file)
@@ -404,8 +404,8 @@ $2',
 'customjsprotected' => '你無權限通改這javaScript頁面,因為伊包括著其他用戶的個人設定。',
 'ns-specialprotected' => '特殊頁袂使改得',
 'titleprotected' => "這个標題已經予[[User:$1|$1]]保護牢咧袂使用。理由是''$2''。",
-'filereadonlyerror' => '無法度改"$1" 這个檔案,因為"$2"這个儲存庫佇讀的模式。
\8e\9få\9b æ\98¯"\'\'$3\'\'"。',
+'filereadonlyerror' => '無法度改"$1" 這个檔案,因為"$2"這个儲存庫佇讀的模式。
\85±å°\81é\8e\96ç\9a\84管ç\90\86å\93¡æ\9c\89解說è¬\9bï¼\9a"$3"。',
 
 # Virus scanner
 'virus-badscanner' => "毋著的設定: 毋知影的病毒掃瞄器:''$1''",
@@ -492,6 +492,7 @@ Tiō-sī kóng, tī chit-má iōng chit ê IP bāng-chí ê lâng bē-sái koh k
 'invalidemailaddress' => '電子批的地址無正確,規格毋著,
 請拍一个符合規格的地址抑是放空格。',
 'cannotchangeemail' => '口座的e-mail住址無法度佇這个wiki改',
+'emaildisabled' => '這个網站袂當寄電子批。',
 'accountcreated' => '口座開好矣',
 'accountcreatedtext' => '$1的口座開好矣',
 'createaccount-title' => '佇{{SITENAME}}開好口座',
@@ -686,7 +687,8 @@ Kháu-chō ê sin bi̍t-bé thang tī teng-ji̍p liáu tī ''[[Special:ChangePas
 {{ns:user}}:Foo/Vector.css。",
 'updated' => '(改過矣)',
 'note' => "'''Chù-ì:'''",
-'previewnote' => "'''Thê-chhéⁿ lí che sī 1 bīn kiám-cha chho͘-phe ēng--ê \"seng-khoàⁿ-ia̍h\", iáu-bōe pó-chûn--khí-lâi!'''",
+'previewnote' => "'''Thê-chhéⁿ lí, che chí-sī  hō͘ lí sian khoàⁿ chi̍t-ē.'''
+Lí kái--ê iáu-bōe pó-chûn--khí-lâi ![[#editform|→kè-sio̍k pian-chi̍p]]",
 'previewconflict' => '這个先看覓會反應你文字編輯區的內容,顯示佇面頂。佇你保存了就會公開。',
 'session_fail_preview' => "'''Pháiⁿ-sè! Gún chiām-sî bô hoat-tō͘ chhú-lí lí ê pian-chi̍p (goân-in: \"phàng-kiàn sú-iōng kî-kan ê chu-liāu\"). Lô-hoân têng chhì khoàⁿ-māi. Ká-sú iû-goân bô-hāu, ē-sái teng-chhut koh-chài teng-ji̍p hoān-sè tō ē-tit kái-koat.'''",
 'session_fail_preview_html' => "'''歹勢!因為phàng見資料,阮無法度處理你的編輯。'''
@@ -698,6 +700,7 @@ Kháu-chō ê sin bi̍t-bé thang tī teng-ji̍p liáu tī ''[[Special:ChangePas
 這種情況會出現佇你用網路上匿名代理服務的時陣。",
 'edit_form_incomplete' => "'''一寡部份的編輯無送到伺服器,請檢查你的編輯是毋是完整,才閣試。'''",
 'editing' => 'Siu-kái $1',
+'creating' => '當咧建立$1',
 'editingsection' => 'Pian-chi̍p $1 (section)',
 'editingcomment' => 'Teh pian-chi̍p $1 (lâu-oē)',
 'editconflict' => 'Siu-kái sio-chhiong: $1',
@@ -763,6 +766,7 @@ Chia ū chit ia̍h ê san-tû kì-lo̍k hō͘ lí chham-khó:",
 'edit-no-change' => '你的編輯閬過,因為攏無改著字。',
 'edit-already-exists' => '無法度開新頁,
 已經有彼頁。',
+'defaultmessagetext' => 'Siat piān ê bûn-jī',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''警示:'''這頁用傷濟擺函數呼叫。
@@ -1521,6 +1525,7 @@ $1',
 'backend-fail-batchsize' => '囥位一批$1个檔案
 {{PLURAL:$1|遍動作|遍動作}},上濟$2遍{{PLURAL:$2|動作|動作}}。',
 
+# File journal errors
 'filejournal-fail-dbconnect' => '無法度連接到佇囥位"$1"的資料庫。',
 'filejournal-fail-dbquery' => '無法度更新佇囥位"$1"的資料庫。',
 
index 73e87c9..59a7423 100644 (file)
@@ -1802,6 +1802,7 @@ As t probleem zo blif, neem dan kontakt op mit één van de [[Special:ListUsers/
 'backend-fail-contenttype' => 'Kon t inhoudstype van t bestaand um op "$1" op te slaon niet bepaolen.',
 'backend-fail-batchsize' => 'Reeks van $1 bestaands{{PLURAL:$1|operasie|operasies}} in de opslagbackend; de limiet is $2 {{PLURAL:$2|operasie|operasies}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Kon gien verbiending maken mit de journaaldatabanke veur t opslagbackend "$1".',
 'filejournal-fail-dbquery' => 'Kon de journaaldatabanke niet biewarken veur t opslagbackend "$1".',
 
index 23f1e5f..cdff247 100644 (file)
@@ -174,7 +174,7 @@ $messages = array(
 'hidden-category-category' => 'लुकाइएका श्रेणीहरु',
 'category-subcat-count' => '{{PLURAL:$2|यो श्रेणीमा निम्न उपश्रेणीहरु मात्र छन्।|यो श्रेणीको निम्न {{PLURAL:$1|उपश्रेणी|$1 उपश्रेणीहरु}},  $2 कुल मध्ये श्रेणीहरु छन् ।}}',
 'category-subcat-count-limited' => 'यो श्रेणीको निम्न {{PLURAL:$1|उपश्रेणी|$1 उपश्रेणीहरु}} छ।',
-'category-article-count' => '{{PLURAL:$2|यà¥\8b à¤¶à¥\8dरà¥\87णà¥\80मा à¤\8fà¤\95 à¤®à¤¾à¤¤à¥\8dर à¤ªà¥\83षà¥\8dठरहà¥\87à¤\95à¥\8b à¤\9b।|यà¥\8b à¤¶à¥\8dरà¥\87णà¥\80मा  {{PLURAL:$1|पà¥\83षà¥\8dठ|$1 à¤ªà¥\83षà¥\8dठहरà¥\81}} , à¤\95à¥\81ल $2 à¤®à¤§à¥\8dयà¥\87 रहेका छन् । }}',
+'category-article-count' => '{{PLURAL:$2|यà¥\8b à¤¶à¥\8dरà¥\87णà¥\80मा à¤\8fà¤\95 à¤®à¤¾à¤¤à¥\8dर à¤ªà¥\83षà¥\8dठरहà¥\87à¤\95à¥\8b à¤\9b।|à¤\95à¥\81ल $2 à¤®à¤§à¥\8dयà¥\87 à¤¯à¥\8b à¤¶à¥\8dरà¥\87णà¥\80मा {{PLURAL:$1|पà¥\83षà¥\8dठ|$1 à¤ªà¥\83षà¥\8dठहरà¥\81}} रहेका छन् । }}',
 'category-article-count-limited' => 'निम्न {{PLURAL:$1|पृष्ठ|$1 पृष्ठहरु}} यस श्रेणीमा रहेको ।',
 'category-file-count' => '{{PLURAL:$2|यो श्रेणीमा निम्न फाइल मात्र छ ।|निम्न श्रेणीमा {{PLURAL:$1|फाइल|$1 फाइलहरु}} , कुल  $2 मध्ये रहेको ।}}',
 'category-file-count-limited' => 'निम्न  {{PLURAL:$1|फाइल|$1 फाइलहरु}} यस श्रेणीमा रहेको ।',
index eff56e3..b9b35a8 100644 (file)
@@ -1132,6 +1132,7 @@ Deze lijkt verwijderd te zijn.',
 'edit-no-change' => 'Uw bewerking is genegeerd, omdat er geen wijziging aan de tekst is gemaakt.',
 'edit-already-exists' => 'De pagina is niet aangemaakt.
 Deze bestaat al.',
+'defaultmessagetext' => 'Standaardinhoud',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Waarschuwing:''' deze pagina gebruikt te veel kostbare parserfuncties.
@@ -1917,6 +1918,7 @@ Als het probleem aanhoudt, neem dan contact op met een [[Special:ListUsers/sysop
 'backend-fail-contenttype' => 'Kon het inhoudstype van het bestand om op "$1" op te slaan niet bepalen.',
 'backend-fail-batchsize' => 'Taak met $1 {{PLURAL:$1|bestandshandeling|bestandshandelingen}} in het opslagbackend; de limiet is $2 {{PLURAL:$2|handeling|handelingen}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Het was niet mogelijk een verbinding te maken met de journaldatabase voor het opslagbackend "$1".',
 'filejournal-fail-dbquery' => 'Het was niet mogelijk de journaldatabase bij te werken voor het opslagbackend "$1".',
 
index b072188..ad8d236 100644 (file)
@@ -393,7 +393,7 @@ $messages = array(
 'and' => '&#32;ଓ',
 
 # Cologne Blue skin
-'qbfind' => 'à¬\96à­\8bà¬\9cିବା',
+'qbfind' => 'à¬\96à­\8bà¬\9cନà­\8dତà­\81',
 'qbbrowse' => 'ଖୋଜିବା',
 'qbedit' => 'ଏହାକୁ ବଦଳାନ୍ତୁ',
 'qbpageoptions' => 'ଏହି ପୃଷ୍ଠାଟି',
@@ -404,7 +404,7 @@ $messages = array(
 'faqpage' => 'Project:ବାରମ୍ବାର ପଚରାଯାଉଥିବା ପ୍ରଶ୍ନ',
 
 # Vector skin
-'vector-action-addsection' => 'ଲà­\87à¬\96ା à¬®à¬¿à¬¶à¬¾à¬\87ବା',
+'vector-action-addsection' => 'ନà­\82à¬\86 à¬¯à­\8bଡ଼ନà­\8dତà­\81',
 'vector-action-delete' => 'ଲିଭାଇବେ',
 'vector-action-move' => 'ଘୁଞ୍ଚାଇବେ',
 'vector-action-protect' => 'କିଳିବେ',
@@ -2454,7 +2454,7 @@ $2ଙ୍କ ଦେଇ ଶେଷଥର ହୋଇଥିବା ସଂସ୍କର
 'undelete-search-title' => 'ଲିଭାଯାଇଥିବା ପୃଷ୍ଠାସବୁକୁ ଖୋଜିବେ',
 'undelete-search-box' => 'ଲିଭାଯାଇଥିବା ପୃଷ୍ଠାସବୁକୁ ଖୋଜିବେ',
 'undelete-search-prefix' => 'ଏହି ଉପସର୍ଗ ସହିତ ଆରମ୍ଭ ହେଉଥିବା ପୃଷ୍ଠାସବୁ ଦେଖାନ୍ତୁ:',
-'undelete-search-submit' => 'à¬\96à­\8bà¬\9cିବା',
+'undelete-search-submit' => 'à¬\8fଠାରà­\87 à¬\96à­\8bà¬\9cନà­\8dତà­\81',
 'undelete-no-results' => 'ଲିଭାଇବା ଅଭିଲେଖରେ ଗୋଟିଏ ବି ପୃଷ୍ଠା ମେଳ ଖାଇଲା ନାହିଁ ।',
 'undelete-filename-mismatch' => '$1 ସମୟଚିହ୍ନ ସହ ଥିବା ଫାଇଲ ସଂସ୍କରଣଟି ଲିଭାଯାଇପାରିବ ନାହିଁ: ଫାଇଲନାମ ମେଳ ଖାଉନାହିଁ',
 'undelete-bad-store-key' => '$1 ସମୟ ଚିହ୍ନ ଥିବା ସଂସ୍କରଣଟି ଲିଭାଇବାରୁ ରୋକି ପାରିବୁ ନାହିଁ:ଲିଭାଇବା ଆଗରୁ ଫାଇଲଟି ହଜିଯାଇଛି ।',
index d338853..9492418 100644 (file)
@@ -178,7 +178,7 @@ $messages = array(
 'hidden-category-category' => 'Æмбæхст категоритæ',
 'category-subcat-count' => '{{PLURAL:$2|Ацы категорийы мидæг æрмæст иу дæлкатегори ис.|{{PLURAL:$1|$1 дæлкатегори æвдыст у|$1 дæлкатегорийы æвдыст сты}}, æдæппæт $2.}}',
 'category-subcat-count-limited' => 'Ацы категорийы мидæг ис {{PLURAL:$1|$1 дæлкатегори|$1 дæлкатегорийы}}.',
-'category-article-count' => '{{PLURAL:$2|Ацы категорийы æрмæст иу фарс и.|Ацы категорийы $2 фарсæй {{PLURAL:$1|æвдыст у $1.|æвдыст сты $1 фарсы.}}}}',
+'category-article-count' => '{{PLURAL:$2|Ацы категорийы æрмæст иу фарс ис.|Ацы категорийы $2 фарсæй {{PLURAL:$1|æвдыст у $1.|æвдыст сты $1 фарсы.}}}}',
 'category-article-count-limited' => 'Ацы категорийы мидæг {{PLURAL:$1|$1 фарс|$1 фарсы}} ис.',
 'category-file-count' => '{{PLURAL:$2|Ацы категорийы æрмæст иу файл ис.|Ацы категорийы $2 файлæй {{PLURAL:$1|æвдыст у $1.|æвдыст сты $1.}}}}',
 'category-file-count-limited' => 'Ацы категорийы {{PLURAL:$1|$1 файл|$1 файлы}} ис.',
@@ -521,7 +521,16 @@ $2',
 'password-login-forbidden' => 'Ацы архайæджы ном æмæ паролæй нæй гæнæн архайын.',
 'mailmypassword' => 'Рарвит мæм ног пароль',
 'passwordremindertitle' => 'Ног рæстæгмæ пароль {{grammar:dative|{{SITENAME}}}}',
+'passwordremindertext' => 'Чидæр (æвæццæгæн ды, $1 IP адрисæй) æрдомтта ног парол {{grammar:dative|{{SITENAME}}}} ($4). "$2" архайæгæн арæзт æрцыд рæстæгмæ парол. Парол у "$3". Кæд уый ды уыдтæ, уæд дын ныр хъæудзæн бахизын æмæ равзарын ног парол.
+Дæ рæстæгмæ парол ма кусдзæнис {{PLURAL:$5|иу бон|$5 боны}}.
+
+Кæд æндæр чидæр æрдомтта ай, кæнæ ды рымысыдтæ дæ парол æмæ дæ нал фæнды фæивын æй, уæд дæ бон у мацæмæ дарай ацы фыстæг æмæ дарддæр дæ зæронд паролæй архайай.',
 'noemail' => 'Архайæг $1 йæ электрон посты адрис нæ ныууагъта.',
+'noemailcreate' => 'Дæуæн хъæуы раст e-mail адрис',
+'passwordsent' => 'Ног парол æрвыст æрцыд e-mail адрисмæ, кæцы уыд регистацигонд {{grammar:dative|$1}}.',
+'blocked-mailpassword' => 'Дæ IP адрис уыд хъодыгонд ивынæй æмæ цæмæй мачи разнаггад кæна, уы тыххæй дзы нæй гæнæн парол раивын дæр.',
+'eauthentsent' => 'Бæлвырдгæнæн фыстæг æрвыст æрцыд амынд e-mail адрисмæ.
+Цæмæй дæм æндæр фыстæджытæ дæр цæуой, уый тыххæй дын хъæудзæн сæххæст кæнын фыстæджы фыст амындтытæ. Уый фæстæ сбæлвыд уыдзæн аккаунт æцæгдæр дæу кæй у, уый.',
 'mailerror' => 'Фыстæг арвитыны рæдыд: $1',
 'emailconfirmlink' => 'Дæ электронон посты адрис сфидар кæн',
 'loginlanguagelabel' => 'Æвзаг: $1',
@@ -710,7 +719,7 @@ $2',
 'search-mwsuggest-disabled' => 'æнæ æмбарынгæнæнтæ',
 'searchrelated' => 'хæстæг',
 'searchall' => 'иууылдæр',
-'showingresultsheader' => "{{PLURAL:$5|Фæстиуæг '''$1''' '''$3'''-йæ|Фæстиуæджы '''$1 - $2''' '''$3'''-йæ}} '''{{grammar:dative|$4}}'''",
+'showingresultsheader' => "{{PLURAL:$5|Фæстиуæг '''$1''' '''$3'''-йæ|Фæстиуджытæ '''$1 - $2''' '''$3'''-йæ}} '''{{grammar:dative|$4}}'''",
 'search-nonefound' => 'Ницы разындис домæнæн',
 'powersearch' => 'Сæрмагонд агуырд',
 'powersearch-legend' => 'Сæрмагонд агуырд',
index 14b3eaa..3228901 100644 (file)
@@ -677,7 +677,7 @@ $2',
 Uzasadnienie blokady: ''$2''.",
 'filereadonlyerror' => 'Nie można zmodyfikować pliku "$1" ponieważ repozytorium plików "$2" jest w trybie tylko do odczytu.
 
-Podany powód to "\'\'$3\'\'".',
+Administrator blokujący go podał następujący powód "\'\'$3\'\'".',
 
 # Virus scanner
 'virus-badscanner' => "Zła konfiguracja – nieznany skaner antywirusowy ''$1''",
@@ -773,6 +773,7 @@ Poniższe funkcje poczty nie działają.",
 'invalidemailaddress' => 'Adres e‐mail jest niepoprawny i nie może być zaakceptowany.
 Wpisz poprawny adres e‐mail lub wyczyść pole.',
 'cannotchangeemail' => 'Na tej wiki nie ma możliwości zmiany adresu e‐mail przypisanego do konta.',
+'emaildisabled' => 'Ta witryna nie można wysłać wiadomości e-mail.',
 'accountcreated' => 'Konto zostało utworzone',
 'accountcreatedtext' => 'Konto dla $1 zostało utworzone.',
 'createaccount-title' => 'Utworzenie konta w {{GRAMMAR:MS.lp|{{SITENAME}}}}',
@@ -988,6 +989,7 @@ Twoja edycja została odrzucona by zapobiec zniszczeniu tekstu strony.
 Takie problemy zdarzają się w wypadku korzystania z wadliwych anonimowych sieciowych usług proxy.'''",
 'edit_form_incomplete' => "'''Niektóre informacje wprowadzone do formularza nie dotarły do serwera. Upewnij się, że wprowadzone dane nie uległy uszkodzeniu i spróbuj ponownie.'''",
 'editing' => 'Edytujesz $1',
+'creating' => 'Tworzenie $1',
 'editingsection' => 'Edytujesz $1 (sekcja)',
 'editingcomment' => 'Edytujesz $1 (nowa sekcja)',
 'editconflict' => 'Konflikt edycji: $1',
@@ -1057,7 +1059,7 @@ Strona już istnieje.',
 'expensive-parserfunction-warning' => 'Uwaga! Ta strona zawiera zbyt wiele wywołań złożonych obliczeniowo funkcji parsera.
 
 Powinno być mniej niż $2 {{PLURAL:$2|wywołanie|wywołania|wywołań}}, a obecnie {{PLURAL:$1|jest $1 wywołanie|są $1 wywołania|jest $1 wywołań}}.',
-'expensive-parserfunction-category' => 'Strony ze zbyt dużą liczbą wywołań trudnych funkcji parsera',
+'expensive-parserfunction-category' => 'Strony ze zbyt dużą liczbą wywołań kosztownych funkcji parsera',
 'post-expand-template-inclusion-warning' => 'Uwaga – zbyt duża wielkość wykorzystanych szablonów.
 Niektóre szablony nie zostaną użyte.',
 'post-expand-template-inclusion-category' => 'Strony, w których przekroczone jest ograniczenie wielkości użytych szablonów',
@@ -1822,6 +1824,7 @@ Jeśli problem będzie się powtarzał, skontaktuj się z [[Special:ListUsers/sy
 'backend-fail-contenttype' => 'Nie można określić typ zawartości pliku do przechowywania w "$1".',
 'backend-fail-batchsize' => 'Wewnętrzne funkcje magazynowania otrzymały $1 {{PLURAL:$1|operację|operacje|operacji}} na pliku; limit wynosi $2 {{PLURAL:$2| operacja|operacje|operacji}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Nie można połączyć się z bazą danych dziennika dla backendu magazynowania "$1".',
 'filejournal-fail-dbquery' => 'Nie można zaktualizować bazy danych dziennika dla backendu magazynowania"$1".',
 
@@ -2153,6 +2156,7 @@ Możesz zawęzić liczbę wyników poprzez wybranie typu rejestru, nazwy użytko
 'allpagesprefix' => 'Pokaż strony o tytułach rozpoczynających się od',
 'allpagesbadtitle' => 'Podana nazwa jest nieprawidłowa, zawiera prefiks międzyprojektowy lub międzyjęzykowy. Może ona także zawierać w sobie jeden lub więcej znaków, których użycie w nazwach jest niedozwolone.',
 'allpages-bad-ns' => 'W {{GRAMMAR:MS.lp|{{SITENAME}}}} nie istnieje przestrzeń nazw „$1”.',
+'allpages-hide-redirects' => 'Ukryj przekierowania',
 
 # Special:Categories
 'categories' => 'Kategorie',
@@ -3071,8 +3075,8 @@ Najprawdopodobniej zostało to spowodowane przez link do zewnętrznej strony int
 'markedaspatrollederror-noautopatrol' => 'Nie masz uprawnień wymaganych do oznaczania swoich edycji jako „sprawdzone”.',
 
 # Patrol log
-'patrol-log-page' => 'Dziennik patrolowania',
-'patrol-log-header' => 'Poniżej znajduje się dziennik patrolowania stron.',
+'patrol-log-page' => 'Rejestr patrolowania',
+'patrol-log-header' => 'Poniżej znajduje się rejestr patrolowania stron.',
 'log-show-hide-patrol' => '$1 rejestr sprawdzania',
 
 # Image deletion
index 063e432..6512215 100644 (file)
@@ -705,7 +705,8 @@ o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}
 'userinvalidcssjstitle' => "'''Avis:''' A-i é pa gnun-a pel \"\$1\". Che as visa che le pàgine .css e .js che un as fa daspërchiel a deuvro tute minùscole për tìtol, pr'esempi {{ns:user}}:Scaramacaj/vector.css nopà che {{ns:user}}:Scaramacaj/Vector.css.",
 'updated' => '(Agiornà)',
 'note' => "'''NÒTA:'''",
-'previewnote' => "'''Che a ten-a mach present che costa-sì a l'é nomach na PREUVA, e che soa version a l'é ancó pa stàita salvà!'''",
+'previewnote' => "'''Che a ten-a present che costa-sì a l'é mach na preuva.'''
+Ij sò cambi a son anco' pa stàita salvà! [[#editform|→ Continua a modifiché]]",
 'previewconflict' => "Costa preuva a-j mostra ël test dl'artìcol ambelessì dzora. Se a sërn dë salvelo, a l'é parèj che a lo s-ciairëran ëdcò tuti j'àutri Utent.",
 'session_fail_preview' => "'''Darmagi! I l'oma pa podù processé soa modìfica per via che a son përdusse për la stra ij dat ëd session.
 Për piasì che a preuva n'àutra vira. Se a dovèissa mai torna riveje sossì, che a preuva a seurte dal sistema e peuj torna a rintré.'''",
@@ -2461,12 +2462,12 @@ për piasì ch'as renda bin cont ëd le conseguense ëd sòn prima d'andé anans
 Ant costi cas-sì, se a chërd dë felo, a-j farà da manca dë tramudesse la pàgina ëd discussion daspërchiel, a man.",
 'movearticle' => "Cangeje nòm a l'artìcol:",
 'moveuserpage-warning' => "'''Atension:''' A sta për tramudé na pàgina d'utent. Për piasì ch'a nòta che a sarà tramudà mach la pàgina e che l'utent a sarà ''pa'' arbatjà.",
-'movenologin' => "Che a varda che chiel (chila) a l'è pa rintrà ant ël sistema",
+'movenologin' => "Che a varda che chiel a l'é pa rintrà ant ël sistema",
 'movenologintext' => "A venta esse n'Utent registrà e esse [[Special:UserLogin|rintrà ant ël sistema]]
-për podej tramudé na pàgina.",
-'movenotallowed' => "A l'ha pa ij përmess dont a fa da manca për tramudé pàgine.",
-'movenotallowedfile' => "It l'has pa ij përmess për tramudé dij file.",
-'cant-move-user-page' => "It l'has pa ij përmess për tramudé le pàgine utent (a men dle sotpàgine).",
+për podèj tramudé na pàgina.",
+'movenotallowed' => "A l'ha pa ij përmess dont a fa da manca për tramudé le pàgine.",
+'movenotallowedfile' => "A l'ha pa ij përmess për tramudé j'archivi.",
+'cant-move-user-page' => "A l'ha pa ij përmess për tramudé le pàgine d'utent (gavà le sot-pàgine).",
 'cant-move-to-user-page' => "It l'has pa ij përmess për tramudé na pàgina a na pàgina utent (an gavand a na sotpàgina utent).",
 'newtitle' => 'Neuv tìtol ëd',
 'move-watch' => 'Ten sot euj sta pàgina-sì',
index 83b379a..1830217 100644 (file)
@@ -3902,6 +3902,7 @@ Imagens serão apresentadas pelo browser na resolução máxima; ficheiros de ou
 'feedback-error2' => 'Erro: A edição falhou',
 'feedback-error3' => 'Erro: A API não responde',
 'feedback-close' => 'Feito',
+'feedback-bugcheck' => 'Perfeito! Verifique apenas que não é já um dos [$1 defeitos conhecidos].',
 'feedback-bugnew' => 'Eu verifiquei. Reportar um novo bug.',
 
 # API errors
index b1537e8..15447b4 100644 (file)
@@ -27,6 +27,7 @@
  * @author GoEThe
  * @author Hamilton Abreu
  * @author Helder.wiki
+ * @author Jaideraf
  * @author Jesielt
  * @author Jorge Morais
  * @author Kaganer
@@ -43,6 +44,7 @@
  * @author Rafael Vargas
  * @author Raylton P. Sousa
  * @author Rodrigo Calanca Nishino
+ * @author Sir Lestaty de Lioncourt
  * @author Urhixidur
  * @author Vuln
  * @author Waldir
@@ -432,7 +434,7 @@ $messages = array(
 'listingcontinuesabbrev' => 'cont.',
 'index-category' => 'Páginas indexadas',
 'noindex-category' => 'Páginas não indexadas',
-'broken-file-category' => 'Páginas com links quebrados para imagens',
+'broken-file-category' => 'Páginas com links quebrados para arquivos',
 
 'about' => 'Sobre',
 'article' => 'Página de conteúdo',
@@ -520,7 +522,7 @@ $messages = array(
 'categorypage' => 'Ver página de categorias',
 'viewtalkpage' => 'Ver discussão',
 'otherlanguages' => 'Outras línguas',
-'redirectedfrom' => '(Redirecionado de <b>$1</b>)',
+'redirectedfrom' => '(Redirecionado de $1)',
 'redirectpagesub' => 'Página de redirecionamento',
 'lastmodifiedat' => 'Esta página foi modificada pela última vez às $2 de $1.',
 'viewcount' => 'Esta página foi acessada {{PLURAL:$1|uma vez|$1 vezes}}.',
@@ -569,7 +571,7 @@ Veja a [[Special:Version|página sobre a versão do sistema]].',
 'retrievedfrom' => 'Obtida de "$1"',
 'youhavenewmessages' => 'Você tem $1 ($2).',
 'newmessageslink' => 'novas mensagens',
-'newmessagesdifflink' => 'comparar com a penúltima revisão',
+'newmessagesdifflink' => 'última alteração',
 'youhavenewmessagesmulti' => 'Você tem novas mensagens em $1',
 'editsection' => 'editar',
 'editold' => 'editar',
@@ -578,8 +580,8 @@ Veja a [[Special:Version|página sobre a versão do sistema]].',
 'viewsourcelink' => 'ver código-fonte',
 'editsectionhint' => 'Editar seção: $1',
 'toc' => 'Tabela de conteúdo',
-'showtoc' => 'mostrar',
-'hidetoc' => 'esconder',
+'showtoc' => 'exibir',
+'hidetoc' => 'ocultar',
 'collapsible-collapse' => 'Ocultar',
 'collapsible-expand' => 'Expandir',
 'thisisdeleted' => 'Ver ou restaurar $1?',
@@ -702,9 +704,9 @@ Quem o protegeu foi [[User:$1|$1]], com a justificativa: ''$2''.",
 
 É possível continuar usando {{SITENAME}} anonimamente ou [[Special:UserLogin|autenticar-se novamente]] com o mesmo nome de usuário ou com um nome diferente.
 Note que algumas páginas podem continuar sendo exibidas como se você ainda estivesse autenticado até que você limpe a ''cache'' do seu navegador.",
-'welcomecreation' => '== Bem-vindo, $1! ==
+'welcomecreation' => '== Bem-vindo(a), $1! ==
 A sua conta foi criada.
-Não se esqueça de personalizar as suas [[Special:Preferences|preferências na {{SITENAME}}]].',
+Não se esqueça de personalizar as suas [[Special:Preferences|preferências no wiki {{SITENAME}}]].',
 'yourname' => 'Nome de usuário:',
 'yourpassword' => 'Senha:',
 'yourpasswordagain' => 'Redigite sua senha',
@@ -714,9 +716,9 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências na
 'externaldberror' => 'Ocorreu ou um erro no banco de dados durante a autenticação ou não lhe é permitido atualizar a sua conta externa.',
 'login' => 'Autenticar-se',
 'nav-login-createaccount' => 'Criar uma conta ou entrar',
-'loginprompt' => 'É necessário estar com os <i>cookies</i> ativados para poder autenticar-se na {{SITENAME}}.',
+'loginprompt' => 'É necessário estar com cookies ativados para poder autenticar-se no wiki {{SITENAME}}.',
 'userlogin' => 'Criar uma conta ou entrar',
-'userloginnocreate' => 'Autenticar-se',
+'userloginnocreate' => 'Entrar',
 'logout' => 'Sair',
 'userlogout' => 'Sair',
 'notloggedin' => 'Não autenticado',
@@ -730,7 +732,7 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências na
 'createaccountreason' => 'Razão:',
 'badretype' => 'As senhas que você digitou não são iguais.',
 'userexists' => 'O nome de usuário fornecido já está em uso.
-Escolha um nome diferente, por favor.',
+Escolha um nome diferente.',
 'loginerror' => 'Erro de autenticação',
 'createaccounterror' => 'Não foi possível criar a conta: $1',
 'nocookiesnew' => "A conta do usuário foi criada, mas você não foi autenticado.
@@ -742,7 +744,7 @@ Por favor ative-os, depois autentique-se com o seu novo nome de usuário e a sua
 Certifique-se de que tem os cookies ativados, recarregue esta página e tente novamente.',
 'noname' => 'Você não colocou um nome de usuário válido.',
 'loginsuccesstitle' => 'Login bem sucedido',
-'loginsuccess' => "'''Agora você está ligado à {{SITENAME}} como \"\$1\"'''.",
+'loginsuccess' => "'''Agora você está autenticado ao wiki {{SITENAME}} como \"\$1\"'''.",
 'nosuchuser' => 'Não existe nenhum usuário com o nome "$1".
 Os nomes de usuário são sensíveis à capitalização.
 Verifique a ortografia, ou [[Special:UserLogin/signup|crie uma nova conta]].',
@@ -750,10 +752,11 @@ Verifique a ortografia, ou [[Special:UserLogin/signup|crie uma nova conta]].',
 'nouserspecified' => 'Você precisa especificar um nome de usuário.',
 'login-userblocked' => 'Este usuário está bloqueado. Entrada proibida.',
 'wrongpassword' => 'A senha que introduziu é inválida. Por favor, tente novamente.',
-'wrongpasswordempty' => 'A senha introduzida está em branco. Por favor, tente novamente.',
+'wrongpasswordempty' => 'Foi fornecida uma senha em branco.
+Tente novamente.',
 'passwordtooshort' => 'As senhas devem ter no mínimo {{PLURAL:$1|1 caractere|$1 caracteres}}.',
 'password-name-match' => 'A sua senha deve ser diferente do seu nome de usuário.',
-'password-login-forbidden' => 'Foi proibido o uso deste nome de utilizador e palavra-chave.',
+'password-login-forbidden' => 'O uso deste nome de usuário e senha foi desautorizado.',
 'mailmypassword' => 'Enviar uma nova senha por e-mail',
 'passwordremindertitle' => 'Nova senha temporária em {{SITENAME}}',
 'passwordremindertext' => 'Alguém (provavelmente você, a partir do endereço de IP $1) solicitou uma nova senha para {{SITENAME}} ($4). Foi criada uma senha temporária para o usuário "$2", sendo ela "$3". Se esta era sua intenção, você precisará se autenticar e escolher uma nova senha agora.
@@ -777,9 +780,10 @@ Como resultado, visitantes que usam este endereço IP não podem criar mais nenh
 'noemailprefs' => 'Especifique um endereço de e-mail para que os seguintes recursos funcionem.',
 'emailconfirmlink' => 'Confirme o seu endereço de e-mail',
 'invalidemailaddress' => "O endereço de ''e-mail'' não pode ser aceite devido a talvez possuir um formato inválido. Por favor, introduza um endereço bem formatado ou esvazie o campo.",
-'cannotchangeemail' => 'A conta de e-mail não pode ser alterado nesta wiki.',
+'cannotchangeemail' => 'A conta de e-mail não pode ser alterada neste wiki.',
+'emaildisabled' => 'Este site não tem como enviar e-mails.',
 'accountcreated' => 'Conta criada',
-'accountcreatedtext' => 'A conta do usuário para $1 foi criada.',
+'accountcreatedtext' => 'A conta de usuário para $1 foi criada.',
 'createaccount-title' => 'Criação de conta em {{SITENAME}}',
 'createaccount-text' => 'Alguém criou uma conta de nome $2 para o seu endereço de email no wiki {{SITENAME}} ($4), tendo como senha #$3". Você deve se autenticar e alterar sua senha.
 
@@ -814,7 +818,7 @@ Você pode já ter alterado com sucesso a sua senha, ou solicitado uma nova senh
 'resetpass-temp-password' => 'Senha temporária:',
 
 # Special:PasswordReset
-'passwordreset' => 'Repor Palavra-chave',
+'passwordreset' => 'Redefinir senha',
 'passwordreset-text' => 'Preencha este formulário para recuperar os dados da sua conta pelo e-mail.',
 'passwordreset-legend' => 'Reiniciar a senha',
 'passwordreset-disabled' => 'Reiniciar a senha foi impossibilitado nesta wiki.',
@@ -824,7 +828,7 @@ Você pode já ter alterado com sucesso a sua senha, ou solicitado uma nova senh
 'passwordreset-capture' => 'Ver o e-mail resultante?',
 'passwordreset-capture-help' => 'Se marcar esta caixa, o e-mail (com a senha temporária) será-lhe mostrado, além de ser enviado para o usuário.',
 'passwordreset-email' => 'Endereço de e-mail:',
-'passwordreset-emailtitle' => 'Detalhes da conta na {{SITENAME}}',
+'passwordreset-emailtitle' => 'Detalhes da conta em {{SITENAME}}',
 'passwordreset-emailtext-ip' => 'Alguém (provavelmente você, do endereço IP $1) solicitou um lembrete do seu detalhes de conta para {{SITENAME}} ($4). O seguinte usuário {{PLURAL:$3|conta|são contas}} associado com este endereço de e-mail:
 
 $2
@@ -930,11 +934,11 @@ Por favor, introduza um e valide-o através das suas [[Special:Preferences|prefe
 Ela pode ter sido movida ou removido enquanto você estava vendo a página.',
 'loginreqtitle' => 'Autenticação Requerida',
 'loginreqlink' => 'autenticar-se',
-'loginreqpagetext' => 'Você precisa de $1 para poder visualizar outras páginas.',
+'loginreqpagetext' => 'É necessário $1 para poder visualizar outras páginas.',
 'accmailtitle' => 'Senha enviada.',
-'accmailtext' => "Uma palavra-chave gerada aleatoriamente para [[User talk:$1|$1]] foi enviada para $2.
+'accmailtext' => "Uma senha gerada aleatoriamente para [[User talk:$1|$1]] foi enviada para $2.
 
-A palavra-chave para este nova conta pode ser alterada na página para ''[[Special:ChangePassword|alterar palavra-chave]]'' após a autenticação.",
+A senha para esta nova conta pode ser alterada na página ''[[Special:ChangePassword|de troca de senha]]'', após a autenticação.",
 'newarticle' => '(Nova)',
 'newarticletext' => "Você seguiu um link para uma página que não existe.
 Para criá-la, comece escrevendo na caixa abaixo
@@ -970,8 +974,8 @@ O registro de bloqueio mais recente é fornecido abaixo, para referência:',
 'userinvalidcssjstitle' => "'''Aviso:''' Não existe um tema \"\$1\". Lembre-se que as páginas .css e  .js utilizam um título em minúsculas, exemplo: {{ns:user}}:Alguém/vector.css aposto a {{ns:user}}:Alguém/Vector.css.",
 'updated' => '(Atualizado)',
 'note' => "'''Nota:'''",
-'previewnote' => "'''Isto é apenas uma previsão.
-As modificações ainda não foram salvas!'''",
+'previewnote' => "'''Lembre-se de que isto é apenas uma previsão.'''
+Suas alterações ainda não foram salvas! [[#editform|→ Continuar editando]]",
 'previewconflict' => 'Esta previsão reflete o texto que está na área de edição acima e como ele aparecerá se você escolher salvar.',
 'session_fail_preview' => "'''Pedimos desculpas, mas não foi possível processar a sua edição devido à perda de dados da sua sessão.
 Por favor tente novamente.
@@ -986,6 +990,7 @@ Caso continue não funcionando, tente [[Special:UserLogout|desautenticar-se]] e
 Isso acontece ocasionalmente quando se usa um serviço de proxy anonimizador mal configurado.'''",
 'edit_form_incomplete' => "'''Algumas partes do formulário de edição não chegaram ao servidor; verifique que a sua edição continua intacta e tente novamente, por favor.'''",
 'editing' => 'Editando $1',
+'creating' => 'Criando $1',
 'editingsection' => 'Editando $1 (seção)',
 'editingcomment' => 'Editando $1 (nova seção)',
 'editconflict' => 'Conflito de edição: $1',
@@ -1181,7 +1186,7 @@ $1",
 'logdelete-success' => "'''Visibilidade de evento definida com sucesso.'''",
 'logdelete-failure' => "'''A visibilidade do registro não pôde ser estabelecida:'''
 $1",
-'revdel-restore' => 'Alterar visibilidade',
+'revdel-restore' => 'alterar visibilidade',
 'revdel-restore-deleted' => 'revisões eliminadas',
 'revdel-restore-visible' => 'revisões visíveis',
 'pagehist' => 'Histórico da página',
@@ -1269,12 +1274,12 @@ Certifique-se de que tal alteração manterá a continuidade das ações.',
 'shown-title' => 'Mostrar $1 {{PLURAL:$1|resultado|resultados}} por página',
 'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-legend' => 'Opções de pesquisa',
-'searchmenu-exists' => "*'''Há uma página chamada \"[[:\$1]]\" nesta wiki'''",
-'searchmenu-new' => "'''Criar a página \"[[:\$1|\$1]]\" nesta wiki!'''",
+'searchmenu-exists' => "*'''Há a página \"[[:\$1]]\" neste wiki.'''",
+'searchmenu-new' => "'''Criar a página \"[[:\$1|\$1]]\" neste wiki!'''",
 'searchhelp-url' => 'Help:Conteúdos',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navegue pelas páginas com este prefixo]]',
 'searchprofile-articles' => 'Páginas de conteúdo',
-'searchprofile-project' => 'Ajuda e páginas do Projeto',
+'searchprofile-project' => 'Ajuda e páginas de projeto',
 'searchprofile-images' => 'Multimídia',
 'searchprofile-everything' => 'Tudo',
 'searchprofile-advanced' => 'Avançado',
@@ -1416,7 +1421,7 @@ Esta ação não pode ser desfeita.',
 'badsig' => 'Assinatura inválida; verifique o código HTML utilizado.',
 'badsiglength' => 'A sua assinatura é muito longa.
 Ela deve ter menos de $1 {{PLURAL:$1|caractere|caracteres}}.',
-'yourgender' => 'Sexo:',
+'yourgender' => 'Gênero:',
 'gender-unknown' => 'Não especificado',
 'gender-male' => 'Masculino',
 'gender-female' => 'Feminino',
@@ -1481,7 +1486,7 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'group-user-member' => '{{GENDER:$1|usuário|usuária}}',
 'group-autoconfirmed-member' => '{{GENDER:$1|usuário autoconfirmado|usuária autoconfirmada}}',
 'group-bot-member' => 'robô',
-'group-sysop-member' => '{{GENDER:$1|administrador |administradora}}',
+'group-sysop-member' => '{{GENDER:$1|administrador|administradora}}',
 'group-bureaucrat-member' => 'burocrata',
 'group-suppress-member' => '{{GENDER:$1|supressor|supressora}}',
 
@@ -1504,11 +1509,11 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'right-move-rootuserpages' => 'Mover páginas raiz de usuários',
 'right-movefile' => 'Mover arquivos',
 'right-suppressredirect' => 'Não criar um redirecionamento do nome antigo quando uma página é movida',
-'right-upload' => 'Carregar arquivos',
+'right-upload' => 'Enviar arquivos',
 'right-reupload' => 'Sobrescrever um arquivo existente',
-'right-reupload-own' => 'Sobrescrever um arquivo existente carregado pelo mesmo usuário',
-'right-reupload-shared' => 'Sobrescrever localmente arquivos no repositório partilhado de imagens',
-'right-upload_by_url' => 'Carregar um arquivo de um endereço URL',
+'right-reupload-own' => 'Sobrescrever um arquivo existente enviado pelo mesmo usuário',
+'right-reupload-shared' => 'Sobrescrever localmente arquivos no repositório partilhado de mídias',
+'right-upload_by_url' => 'Enviar um arquivo por um URL',
 'right-purge' => 'Carregar a cache de uma página no site sem página de confirmação',
 'right-autoconfirmed' => 'Editar páginas semi-protegidas',
 'right-bot' => 'Ser tratado como um processo automatizado',
@@ -1521,8 +1526,8 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'right-deletedhistory' => 'Ver entradas de histórico eliminadas, sem o texto associado',
 'right-deletedtext' => 'Ver texto removido e alterado entre revisões removidas',
 'right-browsearchive' => 'Buscar páginas eliminadas',
-'right-undelete' => 'Restaurar uma página',
-'right-suppressrevision' => 'Rever e restaurar revisões ocultadas dos Sysops',
+'right-undelete' => 'Restaurar páginas',
+'right-suppressrevision' => 'Rever e restaurar edições indisponíveis a administradores',
 'right-suppressionlog' => 'Ver registros privados',
 'right-block' => 'Impedir outros usuários de editarem',
 'right-blockemail' => 'Impedir um usuário de enviar email',
@@ -1574,7 +1579,7 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'action-upload' => 'enviar este arquivo',
 'action-reupload' => 'sobrescrever o arquivo existente',
 'action-reupload-shared' => 'sobrescrever este arquivo em um repositório compartilhado',
-'action-upload_by_url' => 'enviar este arquivo a partir de um endereço URL',
+'action-upload_by_url' => 'enviar este arquivo a partir de um URL',
 'action-writeapi' => 'utilizar o modo de escrita da API',
 'action-delete' => 'excluir esta página',
 'action-deleterevision' => 'eliminar esta revisão',
@@ -1593,45 +1598,45 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'action-unwatchedpages' => 'ver a lista de páginas não-vigiadas',
 'action-mergehistory' => 'fundir o histórico de edições desta página',
 'action-userrights' => 'editar todos os privilégios de usuário',
-'action-userrights-interwiki' => 'editar privilégios de usuários de outras wikis',
+'action-userrights-interwiki' => 'editar privilégios de usuários de outros wikis',
 'action-siteadmin' => 'bloquear ou desbloquear o banco de dados',
-'action-sendemail' => 'enviar e-mail',
+'action-sendemail' => 'enviar e-mails',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|alteração|alterações}}',
 'recentchanges' => 'Mudanças recentes',
 'recentchanges-legend' => 'Opções das mudanças recentes',
-'recentchangestext' => 'Veja as mais novas mudanças na {{SITENAME}} nesta página.',
-'recentchanges-feed-description' => 'Acompanhe as Mudanças recentes deste wiki por este feed.',
+'recentchangestext' => 'Acompanhe, a partir desta página, as alterações recentes no wiki {{SITENAME}}.',
+'recentchanges-feed-description' => 'Acompanhe, a partir desta feed, as alterações mais recentes no wiki.',
 'recentchanges-label-newpage' => 'Esta edição criou uma nova página',
 'recentchanges-label-minor' => 'Esta é uma edição menor',
 'recentchanges-label-bot' => 'Esta edição foi feita por um robô',
 'recentchanges-label-unpatrolled' => 'Esta edição ainda não foi patrulhada',
 'rcnote' => "A seguir {{PLURAL:$1|está listada '''uma''' alteração ocorrida|estão listadas '''$1''' alterações ocorridas}} {{PLURAL:$2|no último dia|nos últimos '''$2''' dias}}, a partir das $5 de $4.",
-'rcnotefrom' => 'Abaixo estão as mudanças desde <b>$2</b> (mostradas até <b>$1</b>).',
+'rcnotefrom' => "Abaixo estão as alterações desde as '''$4''' de '''$3''' (limitadas a '''$1''').",
 'rclistfrom' => 'Mostrar as novas alterações a partir das $1',
 'rcshowhideminor' => '$1 edições menores',
 'rcshowhidebots' => '$1 robôs',
 'rcshowhideliu' => '$1 usuários registrados',
 'rcshowhideanons' => '$1 usuários anônimos',
-'rcshowhidepatr' => '$1 edições verificadas',
-'rcshowhidemine' => '$1 as minhas edições',
-'rclinks' => 'Mostrar as últimas $1 mudanças nos últimos $2 dias<br />$3',
+'rcshowhidepatr' => '$1 edições patrulhadas',
+'rcshowhidemine' => '$1 minhas edições',
+'rclinks' => 'Exibir as $1 alterações recentes dos últimos $2 dias<br />$3',
 'diff' => 'dif',
 'hist' => 'hist',
-'hide' => 'Esconder',
-'show' => 'Mostrar',
+'hide' => 'Ocultar',
+'show' => 'Exibir',
 'minoreditletter' => 'm',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
-'number_of_watching_users_pageview' => '[{{PLURAL:$1|$1 usuário|$1 usuários}} a vigiar]',
+'number_of_watching_users_pageview' => '[{{PLURAL:$1|$1 usuário|$1 usuários}} vigiando]',
 'rc_categories' => 'Limite para categorias (separar com "|")',
 'rc_categories_any' => 'Qualquer',
-'rc-change-size-new' => '$1 {{PLURAL:$1|byte|bytes}} após mudança',
+'rc-change-size-new' => '$1 {{PLURAL:$1|byte|bytes}} após alterações',
 'newsectionsummary' => '/* $1 */ nova seção',
-'rc-enhanced-expand' => 'Mostrar detalhes (requer JavaScript)',
-'rc-enhanced-hide' => 'Esconder detalhes',
-'rc-old-title' => 'originalmente criado como "$1"',
+'rc-enhanced-expand' => 'Exibir detalhes (requer JavaScript)',
+'rc-enhanced-hide' => 'Ocultar detalhes',
+'rc-old-title' => 'criado originalmente como "$1"',
 
 # Recent changes linked
 'recentchangeslinked' => 'Alterações relacionadas',
@@ -1639,8 +1644,8 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'recentchangeslinked-toolbox' => 'Alterações relacionadas',
 'recentchangeslinked-title' => 'Alterações relacionadas com "$1"',
 'recentchangeslinked-noresult' => 'Não ocorreram alterações em páginas relacionadas no intervalo de tempo fornecido.',
-'recentchangeslinked-summary' => "Esta página especial lista as alterações mais recentes de páginas que possuam um link a outra (ou de membros de uma categoria especificada).
-Páginas que estejam em [[Special:Watchlist|sua lista de páginas vigiadas]] são exibidas em '''negrito'''.",
+'recentchangeslinked-summary' => "Esta página lista alterações feitas recentemente em páginas lincadas a uma em específico (ou de membros de uma categoria especificada).
+Páginas de sua [[Special:Watchlist|lista de páginas vigiadas]] são exibidas em '''negrito'''.",
 'recentchangeslinked-page' => 'Nome da página:',
 'recentchangeslinked-to' => 'Mostrar alterações a páginas relacionadas com a página fornecida',
 
@@ -1648,101 +1653,112 @@ Páginas que estejam em [[Special:Watchlist|sua lista de páginas vigiadas]] sã
 'upload' => 'Enviar arquivo',
 'uploadbtn' => 'Enviar arquivo',
 'reuploaddesc' => 'Cancelar o envio e retornar ao formulário de upload',
-'upload-tryagain' => 'Enviar descrição modificada de arquivo',
+'upload-tryagain' => 'Enviar descrição de arquivo modificada',
 'uploadnologin' => 'Não autenticado',
-'uploadnologintext' => 'Você necessita estar [[Special:UserLogin|autenticado]] para enviar arquivos.',
+'uploadnologintext' => 'É necessário estar [[Special:UserLogin|autenticado]] para enviar arquivos.',
 'upload_directory_missing' => 'O diretório de upload ($1) não existe e não pôde ser criado pelo servidor.',
-'upload_directory_read_only' => 'O diretório de download de arquivos ($1) não tem permissões de escrita para o servidor Web.',
-'uploaderror' => 'Erro ao fazer upload',
+'upload_directory_read_only' => 'O diretório de upload ($1) não tem permissões de escrita para o servidor.',
+'uploaderror' => 'Erro ao enviar arquivo',
 'upload-recreate-warning' => "'''Aviso: Um arquivo com este nome foi eliminado ou movido.'''
 
-Para sua conveniência, é apresentado a seguir o registro de eliminação e de movimento da página:",
-'uploadtext' => "Utilize o formulário abaixo para carregar novos arquivos.
-Para ver ou pesquisar imagens anteriormente carregadas consulte a [[Special:FileList|lista de arquivos carregados]]. (Re)Envios são também registrados no [[Special:Log/upload|registro de carregamento]], e as eliminações no [[Special:Log/delete|registro de eliminação]]
+Para sua conveniência, segue o registro de eliminação e de movimentação:",
+'uploadtext' => "Use o formulário abaixo para enviar arquivos.
+Para ver ou pesquisar arquivos já enviados, consulte a [[Special:FileList|lista de arquivos enviados]]. Re-envios também são registrados no [[Special:Log/upload|registro de uploads]]; eliminações no [[Special:Log/delete|registro de eliminações]]
 
-Para incluir a imagem numa página, utilize uma ligação em um dos seguintes formatos:
+Para incluir o arquivo em uma página, use um link em um dos seguintes formatos:
 * '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Arquivo.jpg]]</nowiki></tt>''' para utilizar a versão completa do arquivo;
-* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Arquivo.png|200px|thumb|left|texto]]</nowiki></tt>''' para utilizar uma renderização de 200 pixels dentro de uma caixa posicionada à margem esquerda contendo 'texto' como descrição;
-* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Arquivo.ogg]]</nowiki></tt>''' para uma ligação direta ao arquivo sem que ele seja exibido.",
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Arquivo.png|200px|thumb|left|texto]]</nowiki></tt>''' para utilizar uma renderização de 200 pixels dentro de uma caixa posicionada à margem esquerda, contendo 'texto' como descrição;
+* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Arquivo.ogg]]</nowiki></tt>''' para um link direto ao arquivo sem que ele seja exibido.",
 'upload-permitted' => 'Tipos de arquivos permitidos: $1.',
 'upload-preferred' => 'Tipos de arquivos preferidos: $1.',
 'upload-prohibited' => 'Tipos de arquivo proibidos: $1.',
 'uploadlog' => 'registro de uploads',
-'uploadlogpage' => 'Registro de carregamento',
-'uploadlogpagetext' => 'Segue a listagem dos envios de arquivos mais recentes.
+'uploadlogpage' => 'Registro de uploads',
+'uploadlogpagetext' => 'Segue listagem dos uploads de arquivos mais recentes.
 A [[Special:NewFiles|galeria de arquivos novos]] oferece uma listagem mais visual.',
 'filename' => 'Nome do arquivo',
 'filedesc' => 'Descrição do arquivo',
 'fileuploadsummary' => 'Sumário:',
 'filereuploadsummary' => 'Alterações no arquivo:',
-'filestatus' => 'Estado dos direitos de autor:',
+'filestatus' => 'Status dos direitos autorais:',
 'filesource' => 'Fonte:',
 'uploadedfiles' => 'Arquivos enviados',
-'ignorewarning' => 'Ignorar aviso e salvar de qualquer forma.',
+'ignorewarning' => 'Ignorar aviso e salvar mesmo assim.',
 'ignorewarnings' => 'Ignorar todos os avisos',
-'minlength1' => 'Os nomes de arquivos devem de ter pelo menos uma letra.',
-'illegalfilename' => 'O arquivo "$1" possui caracteres que não são permitidos no título de uma página. Por favor, altere o nome do arquivo e tente carregar novamente.',
-'filename-toolong' => 'Os nomes dos arquivo não podem ser superiores a 240 bytes.',
+'minlength1' => 'Os nomes de arquivos precisam ter pelo menos uma letra.',
+'illegalfilename' => 'O arquivo "$1" possui caracteres que não são permitidos em títulos de páginas.
+Renomeie o arquivo e tente enviar novamente.',
+'filename-toolong' => 'Os nomes dos arquivos não podem ter mais de 240 bytes.',
 'badfilename' => 'O nome do arquivo foi alterado para "$1".',
 'filetype-mime-mismatch' => 'A extensão ".$1" não corresponde ao tipo MIME do arquivo ($2).',
-'filetype-badmime' => 'Arquivos de tipo MIME "$1" não são permitidos de serem enviados.',
+'filetype-badmime' => 'Arquivos de tipo MIME "$1" não estão autorizados a serem enviados.',
 'filetype-bad-ie-mime' => 'Este arquivo não pode ser carregado porque o Internet Explorer o detectaria como "$1", que é um tipo de arquivo não permitido e potencialmente perigoso.',
-'filetype-unwanted-type' => "'''\".\$1\"''' é um tipo de arquivo não desejado.
+'filetype-unwanted-type' => "'''\".\$1\"''' não é um tipo de arquivo desejado.
 {{PLURAL:\$3|O tipo preferível é|Os tipos preferíveis são}} \$2.",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|não é um tipo de ficheiro permitido|não são tipos de ficheiro permitidos}}.
-{{PLURAL:$3|O tipo de ficheiro permitido é|Os tipos de ficheiro permitidos são}} $2.',
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|não é um tipo de arquivo permitido|não são tipos de arquivos permitidos}}.
+{{PLURAL:$3|O tipo de arquivo permitido é|Os tipos de arquivos permitidos são}} $2.',
 'filetype-missing' => 'O arquivo não possui uma extensão (como, por exemplo, ".jpg").',
 'empty-file' => 'O arquivo que você enviou estava vazio.',
-'file-too-large' => 'O arquivo que você enviou era demasiado grande.',
+'file-too-large' => 'O arquivo que você enviou era muito grande.',
 'filename-tooshort' => 'O nome do arquivo é curto demais.',
-'filetype-banned' => 'Este tipo do arquivo é proibido.',
+'filetype-banned' => 'Este tipo de arquivo é proibido.',
 'verification-error' => 'Este arquivo não passou pela verificação de arquivos.',
-'hookaborted' => 'A modificação que você tentou realizar foi abortada pelo hook de uma extensão.',
+'hookaborted' => 'A modificação que você tentou realizar foi abortada por uma extensão.',
 'illegal-filename' => 'Nome de arquivo não permitido.',
 'overwrite' => 'Não é permitido sobrescrever um arquivo já existente.',
 'unknown-error' => 'Ocorreu um erro desconhecido.',
 'tmp-create-error' => 'Não foi possível criar o arquivo temporário.',
 'tmp-write-error' => 'Erro ao alterar arquivo temporário.',
-'large-file' => 'É recomendável que os arquivos não sejam maiores que $1; este possui $2.',
-'largefileserver' => 'O tamanho deste arquivo é superior ao qual o servidor encontra-se configurado para permitir.',
-'emptyfile' => 'O arquivo que está tentando carregar parece encontrar-se vazio. Isto poderá ser devido a um erro na escrita do nome do arquivo. Por favor verifique se realmente deseja carregar este arquivo.',
-'windows-nonascii-filename' => 'A wiki não aceita nomes de arquivos com caracteres especiais.',
+'large-file' => 'É recomendável que os arquivos não sejam maiores que $1;
+este possui $2.',
+'largefileserver' => 'Este arquivo é maior do que o servidor está configurado para permitir.',
+'emptyfile' => 'O arquivo enviado para estar vazio.
+Isso pode ocorrer devido a um erro de digitação no nome do arquivo.
+Verifique se você realmente deseja enviar este arquivo.',
+'windows-nonascii-filename' => 'O wiki não aceita nomes de arquivos com caracteres especiais.',
 'fileexists' => "Já existe um arquivo com este nome.
-Por favor, verifique '''<tt>[[:$1]]</tt>''' caso não tenha a certeza se deseja alterar o arquivo atual.
+Verifique '''<tt>[[:$1]]</tt>''' caso não tenha certeza se deseja alterar o arquivo atual.
 [[$1|thumb]]",
 'filepageexists' => "A página de descrição deste arquivo já foi criada em '''<tt>[[:$1]]</tt>''', mas atualmente não existe nenhum arquivo com este nome.
-O sumário que você introduziu não aparecerá na página de descrição.
-Para fazer com que ele apareça lá, você precisará que editá-lo manualmente.
+O sumário que você inseriu não aparecerá na página de descrição.
+Para que ele apareça, será necessário editá-lo manualmente.
 [[$1|thumb]]",
-'fileexists-extension' => "Já existe um arquivo de nome similar: [[$2|thumb]]
+'fileexists-extension' => "Já existe um arquivo com nome similar: [[$2|thumb]]
 * Nome do arquivo que está sendo enviado: '''<tt>[[:$1]]</tt>'''
 * Nome do arquivo existente: '''<tt>[[:$2]]</tt>'''
-Por gentileza, escolha um nome diferente.",
-'fileexists-thumbnail-yes' => "O arquivo aparenta ser uma imagem de tamanho reduzido (''miniatura'', ou ''thumbnail''). [[$1|thumb]]
-Por gentileza, verifique o arquivo '''<tt>[[:$1]]</tt>'''.
-Se o arquivo enviado é o mesmo do de tamanho original, não é necessário enviar uma versão de miniatura adicional.",
-'file-thumbnail-no' => "O nome do arquivo começa com '''<tt>$1</tt>'''. Isso faz parecer se tratar de uma imagem de tamanho reduzido (''miniatura'', ou ''thumbnail'').
-Se você tem esta imagem em sua resolução completa, envie a no lugar desta. Caso contrário, por gentileza, altere o nome de arquivo.",
-'fileexists-forbidden' => 'Já existe um arquivo com este nome, e não pode ser reescrito.
-Se ainda pretende carregar o seu arquivo, por favor, volte e use um novo nome. [[File:$1|thumb|center|$1]]',
+Escolha um nome diferente.",
+'fileexists-thumbnail-yes' => "O arquivo parece ser uma imagem de tamanho reduzido (''miniatura'', ou ''thumbnail'').
+[[$1|thumb]]
+Verifique o arquivo '''<tt>[[:$1]]</tt>'''.
+Se o arquivo enviado é o mesmo do de tamanho original, não é necessário enviar uma versão adicional em miniatura.",
+'file-thumbnail-no' => "O nome do arquivo começa com '''<tt>$1</tt>'''.
+Isso faz parecer se tratar de uma imagem de tamanho reduzido (''miniatura'', ou ''thumbnail'').
+Se você tem esta imagem em sua resolução completa, envie-a no lugar desta. Caso contrário, altere o nome de arquivo.",
+'fileexists-forbidden' => 'Já existe um arquivo com este nome e ele não pode ser sobrescrito.
+Se ainda pretende enviar seu arquivo, volte e use um novo nome.
+[[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => 'Já existe um arquivo com este nome no repositório de arquivos compartilhados.
-Se você ainda quer carregar o seu arquivo, por favor volte e use um novo nome. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Esta imagem é uma duplicata do seguinte {{PLURAL:$1|arquivo|arquivos}}:',
-'file-deleted-duplicate' => 'Um arquivo idêntico a este ([[:$1]]) foi eliminado anteriormente. Verifique o motivo da eliminação de tal arquivo antes de prosseguir com o re-envio.',
-'uploadwarning' => 'Aviso',
-'uploadwarning-text' => 'Por favor modifique a descrição do arquivo abaixo e tente novamente',
+Se você ainda quer enviar seu arquivo, volte e use um novo nome.
+[[File:$1|thumb|center|$1]]',
+'file-exists-duplicate' => 'Este arquivo é uma duplicata do seguinte {{PLURAL:$1|arquivo|arquivos}}:',
+'file-deleted-duplicate' => 'Um arquivo idêntico a este ([[:$1]]) foi eliminado anteriormente.
+Verifique o histórico de eliminação de tal arquivo antes de tentar re-enviar.',
+'uploadwarning' => 'Aviso de envio',
+'uploadwarning-text' => 'Modifique a descrição do arquivo abaixo e tente novamente.',
 'savefile' => 'Salvar arquivo',
 'uploadedimage' => 'enviou "[[$1]]"',
-'overwroteimage' => 'foi enviada uma nova versão de "[[$1]]"',
+'overwroteimage' => 'enviou uma nova versão de "[[$1]]"',
 'uploaddisabled' => 'Envio de arquivos desativado.',
 'copyuploaddisabled' => 'O upload por URL encontra-se desativado.',
 'uploadfromurl-queued' => 'O seu upload foi adicionado à fila.',
 'uploaddisabledtext' => 'O envio de arquivos encontra-se desativado.',
-'php-uploaddisabledtext' => 'O carregamento de arquivos via PHP está desativado. Por favor, verifique a configuração file_uploads.',
-'uploadscripted' => 'Este arquivo contém HTML ou código que pode ser erradamente interpretado por um navegador web.',
-'uploadvirus' => 'O arquivo contém vírus! Detalhes: $1',
+'php-uploaddisabledtext' => 'O envio de arquivos via PHP está desativado.
+Verifique a configuração file_uploads.',
+'uploadscripted' => 'Este arquivo contém HTML ou código que pode ser erroneamente interpretado por um navegador web.',
+'uploadvirus' => 'O arquivo contém vírus!
+Detalhes: $1',
 'uploadjava' => 'Este é um arquivo ZIP que contém um arquivo .class de Java.
-Não é permitido o upload de arquivos Java, porque estes podem contornar as restrições de segurança.',
+Não é permitido o upload de arquivos Java já que eles podem contornar as restrições de segurança.',
 'upload-source' => 'Arquivo de origem',
 'sourcefilename' => 'Nome do arquivo de origem:',
 'sourceurl' => 'URL de origem:',
@@ -1751,8 +1767,10 @@ Não é permitido o upload de arquivos Java, porque estes podem contornar as res
 'upload-description' => 'Descrição do arquivo',
 'upload-options' => 'Opções de envio',
 'watchthisupload' => 'Vigiar este arquivo',
-'filewasdeleted' => 'Um arquivo com este nome foi carregado anteriormente e subsequentemente eliminado. Você precisa verificar o $1 antes de proceder ao carregamento novamente.',
-'filename-bad-prefix' => "O nome do arquivo que você está enviando começa com '''\"\$1\"''', um nome pouco esclarecedor, comumente associado de forma automática por câmeras digitais. Por gentileza, escolha um nome de arquivo mais explicativo.",
+'filewasdeleted' => 'Um arquivo com este nome foi enviado anteriormente e eliminado.
+Verifique o $1 antes de enviar novamente.',
+'filename-bad-prefix' => "O nome do arquivo que você está enviando começa com '''\"\$1\"''', um nome pouco esclarecedor, comumente associado de forma automática por câmeras digitais.
+Escolha um nome de arquivo mais explicativo.",
 'filename-prefix-blacklist' => ' #<!-- deixe esta linha exatamente como está --> <pre>
 # A sintaxe é a seguinte:
 #   * Tudo a partir do caractere "#" até ao fim da linha é um comentário
@@ -1767,26 +1785,28 @@ JD # Jenoptik
 MGP # Pentax
 PICT # misc.
  #</pre> <!-- deixe esta linha exatamente como está -->',
-'upload-success-subj' => 'Envio efetuado com sucesso',
-'upload-success-msg' => 'O seu upload desde [$2] foi bem sucedido. Ele está disponível aqui: [[:{{ns:file}}:$1]]',
-'upload-failure-subj' => 'Problema no upload',
-'upload-failure-msg' => 'Ocorreu um problema com o seu upload de [$2]:
+'upload-success-subj' => 'Enviado com sucesso',
+'upload-success-msg' => 'O envio feito a partir de [$2] foi bem sucedido. Ele está disponível aqui: [[:{{ns:file}}:$1]]',
+'upload-failure-subj' => 'Problema no envio',
+'upload-failure-msg' => 'Ocorreu um problema com envio a partir de [$2]:
 
 $1',
-'upload-warning-subj' => 'Aviso de upload',
-'upload-warning-msg' => 'Houve um problema com o seu formulário de carregamento [$2]. Pode voltar ao [[Special:Upload/stash/$1|formulário]] para corrigir este problema.',
+'upload-warning-subj' => 'Aviso de envio',
+'upload-warning-msg' => 'Houve um problema com o envio a partir de [$2]. Retorne ao [[Special:Upload/stash/$1|formulário]] para corrigir este problema.',
 
 'upload-proto-error' => 'Protocolo incorreto',
 'upload-proto-error-text' => 'O envio de arquivos remotos requer endereços (URLs) que iniciem com <code>http://</code> ou <code>ftp://</code>.',
 'upload-file-error' => 'Erro interno',
 'upload-file-error-text' => 'Ocorreu um erro interno ao tentar criar um arquivo temporário no servidor.
-Por gentileza, entre em contato com um [[Special:ListUsers/sysop|administrador]].',
-'upload-misc-error' => 'Erro desconhecido de envio',
-'upload-misc-error-text' => 'Ocorreu um erro desconhecido durante o envio. Por gentileza, verifique se o endereço (URL) é válido e acessível e tente novamente. Caso o problema persista, contacte um administrador de sistema.',
+Entre em contato com um [[Special:ListUsers/sysop|administrador]].',
+'upload-misc-error' => 'Erro desconhecido ao enviar',
+'upload-misc-error-text' => 'Ocorreu um erro desconhecido durante o envio.
+Verifique se o endereço (URL) é válido e acessível e tente novamente.
+Caso o problema persista, procure um [[Special:ListUsers/sysop|administrador]].',
 'upload-too-many-redirects' => 'A URL contém redirecionamentos demais',
 'upload-unknown-size' => 'Tamanho desconhecido',
 'upload-http-error' => 'Ocorreu um erro HTTP: $1',
-'upload-copy-upload-invalid-domain' => 'Não é possível realizar carregamentos remotos neste domínio.',
+'upload-copy-upload-invalid-domain' => 'Não é possível realizar envios remotos neste domínio.',
 
 # File backend
 'backend-fail-stream' => 'Não foi possível transmitir o arquivo  $1.',
@@ -1801,14 +1821,31 @@ Por gentileza, entre em contato com um [[Special:ListUsers/sysop|administrador]]
 'backend-fail-copy' => 'Não foi possível copiar o arquivo $1 para $2.',
 'backend-fail-move' => 'Não é possível mover o arquivo $1 para $2.',
 'backend-fail-opentemp' => 'Não foi possível abrir o arquivo temporário.',
-'backend-fail-writetemp' => 'Não foi possível salvar no arquivo temporário.',
+'backend-fail-writetemp' => 'Não foi possível gravar no arquivo temporário.',
 'backend-fail-closetemp' => 'Não foi possível fechar o arquivo temporário.',
 'backend-fail-read' => 'Não foi possível ler o arquivo $1.',
 'backend-fail-create' => 'Não foi possível criar o arquivo $1.',
+'backend-fail-maxsize' => 'Não foi possível criar o arquivo $1 por ele ser maior que {{PLURAL:$2|1 byte|$2 bytes}}.',
 'backend-fail-readonly' => 'O servidor de armazenamento "$1" está atualmente no modo "somente leitura". A razão dada foi: "$2"',
 'backend-fail-synced' => 'O arquivo "$1" está em um estado inconsistente dentro do sistema de armazenamento interno',
 'backend-fail-connect' => 'Não foi possível conectar com o servidor de armazenamento "$1".',
+'backend-fail-internal' => 'Ocorreu um erro desconhecido no servidor de armazenamento "$1".',
 'backend-fail-contenttype' => 'Não foi possível determinar o tipo de conteúdo do arquivo para armazenar em "$1".',
+'backend-fail-batchsize' => 'O servidor de armazenamento retornou um conjunto de $1 {{PLURAL:$1|operação|operações}} de arquivo, enquanto seu limite é de $2 {{PLURAL:$1|operação|operações}}.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'Não foi possível se conectar ao banco de dados de registros do sistema de armazenamento "$1".',
+'filejournal-fail-dbquery' => 'Não foi possível atualizar o banco de dados de registros do sistema de armazenamento "$1".',
+
+# Lock manager
+'lockmanager-notlocked' => 'Não foi possível desbloquear "$1" por ele não se encontrar bloqueado.',
+'lockmanager-fail-closelock' => 'Não foi possível encerrar a referência de bloqueio para "$1".',
+'lockmanager-fail-deletelock' => 'Não foi possível eliminar a referência de bloqueio para "$1".',
+'lockmanager-fail-acquirelock' => 'Não foi possível obter uma referência de bloqueio para "$1".',
+'lockmanager-fail-openlock' => 'Não foi possível abrir a referência de bloqueio para "$1".',
+'lockmanager-fail-releaselock' => 'Não foi possível liberar o bloqueio para "$1".',
+'lockmanager-fail-db-release' => 'Não foi possível liberar os bloqueios para "$1".',
+'lockmanager-fail-svr-release' => 'Não foi possível liberar os bloqueios do servidor "$1".',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'Foi encontrado um erro ao abrir o arquivo ZIP para verificação.',
@@ -1833,7 +1870,7 @@ A sua segurança não pode ser devidamente verificada.',
 O seu servidor não está configurado para passar esta informação.
 Pode ser baseado em CGI e não consegue suportar img_auth.
 Consulte a documentação em [//www.mediawiki.org/wiki/Manual:Image_Authorization Image Authorization].',
-'img-auth-notindir' => 'O caminho requerido não está no directório de carregamento configurado.',
+'img-auth-notindir' => 'O caminho solicitado não está no diretório configurado para envios.',
 'img-auth-badtitle' => 'Não é possível criar um título válido a partir de "$1".',
 'img-auth-nologinnWL' => 'Você não está logado e "$1" não está na lista branca.',
 'img-auth-nofile' => 'Arquivo "$1" não existe.',
@@ -1873,7 +1910,7 @@ Para melhor segurança, o img_auth.php está desativado.',
 'listfiles-summary' => 'Esta página especial mostra todos os arquivos carregados.
 Por padrão, os últimos arquivos carregados são mostrados no topo da lista.
 Um clique sobre um cabeçalho de coluna altera a ordenação.',
-'listfiles_search_for' => 'Pesquisar por nome de imagem:',
+'listfiles_search_for' => 'Pesquisar por nome de mídia:',
 'imgfile' => 'arquivo',
 'listfiles' => 'Lista de arquivo',
 'listfiles_thumb' => 'Miniatura',
@@ -2120,6 +2157,7 @@ Você pode diminuir a lista escolhendo um tipo de registro, um nome de usuário
 'allpagesprefix' => 'Exibir páginas com o prefixo:',
 'allpagesbadtitle' => 'O título de página fornecido encontrava-se inválido ou tinha um prefixo interlíngua ou inter-wiki. Ele poderá conter um ou mais caracteres que não podem ser utilizados em títulos.',
 'allpages-bad-ns' => '{{SITENAME}} não possui o espaço nominal "$1".',
+'allpages-hide-redirects' => 'Ocultar redirecionamentos',
 
 # Special:Categories
 'categories' => 'Categorias',
@@ -2760,6 +2798,7 @@ Por favor, escolha outro nome.',
 Para exportar páginas, introduza os títulos na caixa de texto abaixo (um título por linha) e selecione se deseja todas as versões, com as linhas de histórico de edições, ou apenas a edição atual e informações apenas sobre a mais recente das edições.
 
 Se desejar, pode utilizar uma ligação (por exemplo, [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para a [[{{MediaWiki:Mainpage}}]]).',
+'exportall' => 'Exportar todas as páginas',
 'exportcuronly' => 'Incluir apenas a revisão atual, não o histórico inteiro',
 'exportnohistory' => "----
 '''Nota:''' a exportação do histórico completo das páginas através deste formulário foi desativada devido a questões de performance.",
@@ -2805,9 +2844,9 @@ Acesse [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//trans
 # Special:Import
 'import' => 'Importar páginas',
 'importinterwiki' => 'Importação transwiki',
-'import-interwiki-text' => 'Selecione uma wiki e um título de página a importar.
+'import-interwiki-text' => 'Selecione um wiki e um título de página para importar.
 As datas das edições e os seus editores serão mantidos.
-Todas as acções de importação transwiki são registradas no [[Special:Log/import|Registro de importações]].',
+Todas as ações de importação transwiki são registradas no [[Special:Log/import|Registro de importações]].',
 'import-interwiki-source' => 'Wiki/página fonte:',
 'import-interwiki-history' => 'Copiar todas as edições para esta página',
 'import-interwiki-templates' => 'Incluir todas as predefinições',
@@ -2851,6 +2890,10 @@ Salve o arquivo no seu computador e importe-o aqui.',
 'import-logentry-interwiki' => 'transwiki $1',
 'import-logentry-interwiki-detail' => '{{PLURAL:$1|$1 edição|$1 edições}} de $2',
 
+# JavaScriptTest
+'javascripttest' => 'Teste de JavaScript',
+'javascripttest-pagetext-noframework' => 'Esta página é exclusiva para testes de JavaScript.',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Sua página de usuário',
 'tooltip-pt-anonuserpage' => 'A página de usuário para o ip com o qual você está editando',
@@ -2911,6 +2954,7 @@ Salve o arquivo no seu computador e importe-o aqui.',
 'tooltip-diff' => 'Mostrar alterações que fez a este texto.',
 'tooltip-compareselectedversions' => 'Ver as diferenças entre as duas versões selecionadas desta página.',
 'tooltip-watch' => 'Adicionar esta página à sua lista de páginas vigiadas',
+'tooltip-watchlistedit-normal-submit' => 'Remover títulos',
 'tooltip-recreate' => 'Recriar a página apesar de ter sido eliminada',
 'tooltip-upload' => 'Iniciar o carregamento',
 'tooltip-rollback' => '"{{int:rollbacklink}}" reverte, com um só clique, as edições do último editor desta página.',
@@ -3657,7 +3701,7 @@ Você também pode [[Special:EditWatchlist|editar a lista da maneira convenciona
 'version-hook-subscribedby' => 'Subscrito por',
 'version-version' => '(Versão $1)',
 'version-license' => 'Licença',
-'version-poweredby-credits' => "Esta é uma wiki '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Esta é um wiki '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'outros',
 'version-license-info' => 'O MediaWiki é software livre; pode redistribuí-lo e/ou modificá-lo nos termos da licença GNU General Public License, tal como publicada pela Free Software Foundation; tanto a versão 2 da Licença, como (por opção sua) qualquer versão posterior.
 
@@ -3820,6 +3864,7 @@ As imagens serão exibidas em sua resolução máxima, outros tipos de arquivos
 'api-error-duplicate-archive-popup-title' => 'Duplicata de {{PLURAL:$1|arquivo|arquivos}} que já {{PLURAL:$1|foi apagado|foram apagados}}',
 'api-error-duplicate-popup-title' => '{{PLURAL:$1|Arquivo|Arquivos}} em duplicata',
 'api-error-empty-file' => 'O arquivo que você enviou está vazio.',
+'api-error-emptypage' => 'Não é permitido criar páginas novas vazias.',
 'api-error-fetchfileerror' => 'Erro interno: ocorreu um problema indeterminado ao acessar o arquivo.',
 'api-error-file-too-large' => 'O arquivo que você enviou é muito grande.',
 'api-error-filename-tooshort' => 'O nome do arquivo é curto demais.',
index 5ac8d42..299eec9 100644 (file)
@@ -1002,6 +1002,7 @@ Please report at [[Support]] if you are unable to properly translate this messag
 'recreate-moveddeleted-warn' => 'Warning shown when creating a page which has already been deleted. See for example [[Test]].',
 'moveddeleted-notice' => 'Shown on top of a deleted page in normal view modus ([http://translatewiki.net/wiki/Test example]).',
 'edit-conflict' => "An 'Edit conflict' happens when more than one edit is being made to a page at the same time. This would usually be caused by separate individuals working on the same page. However, if the system is slow, several edits from one individual could back up and attempt to apply simultaneously - causing the conflict.",
+'defaultmessagetext' => 'Caption above the default message text shown on the left-hand side of a diff displayed after clicking “Show changes” when creating a new page in the MediaWiki: namespace',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'On some (expensive) [[MetaWikipedia:Help:ParserFunctions|parser functions]] (e.g. <code><nowiki>{{#ifexist:}}</nowiki></code>) there is a limit of how many times it may be used. This is an error message shown when the limit is exceeded.
@@ -1903,6 +1904,7 @@ Extensions making use of it:
 * $1 is a filename.',
 'backend-fail-notexists' => 'Parameters:
 * $1 is a filename.',
+'backend-fail-hashes' => 'Definition of "[[w:en:Hash_function|hashes]]".',
 'backend-fail-notsame' => 'Parameters:
 * $1 is a filename.',
 'backend-fail-invalidpath' => 'Parameters:
@@ -1929,7 +1931,16 @@ Extensions making use of it:
 'backend-fail-connect' => 'A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
 'backend-fail-internal' => 'A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
 'backend-fail-contenttype' => '$1 is a storage (file) path',
-'backend-fail-batchsize' => 'Error message when the limit of 1000 operations in the file backend was reached.',
+'backend-fail-batchsize' => 'Error message when the limit of operations to be done at once in the file backend was reached.
+Parameters:
+* $1 is the number of operations attempted at once in this case.
+* $2 is the maximum number of operations that can be attempted at once.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'Parameters:
+* $1 is the name of the "[[:wikipedia:Front and back ends|backend]]" that the file journal logs changes for.',
+'filejournal-fail-dbquery' => 'Parameters:
+* $1 is the name of the "[[:wikipedia:Front and back ends|backend]]" that the file journal logs changes for.',
 
 # Lock manager
 'lockmanager-notlocked' => 'Parameters:
index b7786ff..c90ec2a 100644 (file)
@@ -689,9 +689,9 @@ $2',
 'ns-specialprotected' => 'Paginile din spațiul de nume {{ns:special}} nu pot fi editate.',
 'titleprotected' => "Acest titlu a fos protejat la creare de [[User:$1|$1]].
 Motivul invocat este ''$2''.",
-'filereadonlyerror' => "Imposibil de modificat fișierul „$1”, deoarece depozitul de fișiere „$2” este în modul „doar citire”.
+'filereadonlyerror' => 'Imposibil de modificat fișierul „$1”, deoarece depozitul de fișiere „$2” este în modul „doar citire”.
 
-Motivul furnizat este „''$3''”.",
+Administratorul care a efectuat blocarea a furnizat explicația: „$3”.',
 
 # Virus scanner
 'virus-badscanner' => "Configurație greșită: scaner de virus necunoscut: ''$1''",
@@ -1061,6 +1061,7 @@ Se pare că a fost ștearsă.',
 'edit-no-change' => 'Modificarea dvs. a fost ignorată deoarece nu s-a efectuat nicio schimbare.',
 'edit-already-exists' => 'Pagina nouă nu a putut fi creată.
 Ea există deja.',
+'defaultmessagetext' => 'Textul implicit',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Atenție: Această pagină conține prea multe apelări costisitoare ale funcțiilor parser.
index 747753a..42fcc18 100644 (file)
@@ -522,6 +522,7 @@ Nisciuna mail t'avène mannete pe tutte le seguende dettaglie.",
 'invalidemailaddress' => "L'indirizze e-mail non ge pò essere accettete cumme l'è scritte purcè tène 'nu formete invalide.
 Pe piacere mitte l'indirizze a cumme criste cumanne, ce nò no 'u scè mettènne proprie.",
 'cannotchangeemail' => "Le indirizze e-mail d'u cunde utende non ge ponne essere cangiate sus a sta uicchi.",
+'emaildisabled' => 'Stu site non ge pò mannà e-mail.',
 'accountcreated' => 'cunde utende ccrejete',
 'accountcreatedtext' => "'U cunde utende pe $1 ha state ccrejete.",
 'createaccount-title' => "Ccreazzione de 'u cunde utende pe {{SITENAME}}",
@@ -808,6 +809,7 @@ Pare proprie ca l'onne scangellete.",
 'edit-conflict' => 'conflitte de cangiaminde.',
 'edit-no-change' => "'U cangiamende ca p fatte, avène scettate purcè 'u teste non g'à cangete manghe de 'na virgola.",
 'edit-already-exists' => "Non ge puè ccrejà 'na pàgene nove purcè esiste già!",
+'defaultmessagetext' => 'Messàgge de teste de base',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "Fà attenziò: Sta vosce tène 'nu sbuenne de funziune de chiamate a l'analizzatore.
@@ -1399,6 +1401,7 @@ Ce tu 'u mitte, a fatje ca è fatte t'avène ricanusciute.",
 'newsectionsummary' => '/* $1 */ seziona nove',
 'rc-enhanced-expand' => 'Fà vedè le dettaglie (ha ausà JavaScript)',
 'rc-enhanced-hide' => 'Scunne le dettaglie',
+'rc-old-title' => 'origgenariamende ccreajate cumme "$1"',
 
 # Recent changes linked
 'recentchangeslinked' => 'Cangiaminde culleghete',
@@ -1563,6 +1566,7 @@ Ce 'u probbleme angore jè presende, condatte 'n'[[Special:ListUsers/sysop|ammin
 'upload-too-many-redirects' => "'A URL tène troppe redirezionaminde",
 'upload-unknown-size' => 'Dimenziona scanusciute',
 'upload-http-error' => "S'a verificate 'n'errore HTTP: $1",
+'upload-copy-upload-invalid-domain' => "'A copie de le carecaminde non g'è disponibbile da stu dominie.",
 
 # File backend
 'backend-fail-stream' => "Non ge pozze trasmettere 'u file $1.",
@@ -1581,6 +1585,7 @@ Ce 'u probbleme angore jè presende, condatte 'n'[[Special:ListUsers/sysop|ammin
 'backend-fail-closetemp' => 'Non ge pozze achiudere file temboranèe.',
 'backend-fail-read' => "Non ge pozze leggere 'u file $1.",
 'backend-fail-create' => "Non ge pozze ccrejà 'u file $1.",
+'backend-fail-connect' => 'Non ge pozze connettere \'a memorie de rrete "$1".',
 
 # Lock manager
 'lockmanager-notlocked' => 'Non ge pozze sbloccà "$1"; jidde non g\'è bloccate.',
@@ -1915,6 +1920,7 @@ Tu puè restringere 'a viste selezionanne 'u tipe de archivije, 'u nome utende (
 'allpagesbadtitle' => "'U titele d'a vôsce ca è date ere invalide o tenève 'nu prefisse inter-lènghe o inter-uicchi.
 Pò condenè une  cchiù carattere ca non ge ponne essere ausate jndr'à le titele.",
 'allpages-bad-ns' => '{{SITENAME}} non ge tène \'u namaspace "$1".',
+'allpages-hide-redirects' => 'Scunne le redirezionaminde',
 
 # Special:Categories
 'categories' => 'Le Categorije',
@@ -2673,6 +2679,7 @@ Reggistrele sus a 'u combiuter tune e carechele aqquà.",
 'import-invalid-interwiki' => "Non ge pozze 'mbortà da 'a Uicchi specificate.",
 'import-error-edit' => 'Pàgene "$1" non g\' \'mbortate purcé tu non ge tìne le permesse pe cangiarle.',
 'import-error-create' => 'Pàgene "$1" non g\' \'mbortate purcé tu non ge tìne le permesse pe ccrejarle.',
+'import-error-invalid' => "'A pàgene \"\$1\" non g'ha state 'mbortate purcé 'u nome jè invalide.",
 
 # Import log
 'importlogpage' => "Archivie de le 'mbortaziune",
@@ -2686,6 +2693,8 @@ Reggistrele sus a 'u combiuter tune e carechele aqquà.",
 'javascripttest' => 'Test de JavaScript',
 'javascripttest-disabled' => "Sta funzione non g'à state abbilitate sus a sta Uicchi.",
 'javascripttest-title' => 'Stoche a esegue $1 test',
+'javascripttest-pagetext-noframework' => 'Sta pàgene jè riservate pe le esecuziune de le test de Javascript.',
+'javascripttest-pagetext-frameworks' => 'Pe piacere scacchie une de le seguende ambiende de test: $1',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => "'A pàgene utende meje",
@@ -3860,19 +3869,23 @@ Ce nò, tu puè ausà 'u module facile aqquà sotte. 'U commende tune avène agg
 'feedback-bugnew' => "Agghie verificate. Manne 'nu bug nuève",
 
 # API errors
+'api-error-badaccess-groups' => 'Tu non ge puè carecà file sus a sta Uicchi.',
 'api-error-badtoken' => 'Errore inderne: Gettone errate.',
 'api-error-duplicate-popup-title' => 'Dupleche {{PLURAL:$1|file|file}}',
 'api-error-empty-file' => "'U file ca tu è confermate ere vacande.",
+'api-error-emptypage' => 'Quanne se ne ccreje une, le pàggene vacande non ge sò permesse.',
 'api-error-file-too-large' => "'U file ca tu è confermate jè troppe granne.",
 'api-error-filename-tooshort' => "'U nome d'u file jè troppe curte.",
 'api-error-filetype-banned' => 'Stu tipe de file jè vietate.',
 'api-error-filetype-missing' => "'U file jè senze 'n'estenzione.",
 'api-error-http' => "Errore inderne: Non ge se riesce a collegà a 'u server",
 'api-error-illegal-filename' => "'U nome d'u file non g'è permesse.",
+'api-error-invalid-file-key' => "Errore inderne: 'U file non ge se iacchie jndr'à memorie temboranèe.",
 'api-error-missingparam' => 'Errore inderne: Parametre mangande sus a richieste.',
 'api-error-missingresult' => "Errore inderne: Non ge se pò determinà ce 'a copie ha state fatte.",
 'api-error-mustbeloggedin' => 'Tu a essere collegate pe carecà le file.',
 'api-error-mustbeposted' => "Errore inderne: 'A richieste vole HTTP POST.",
+'api-error-noimageinfo' => "'U carecamende ha riuscite, ma 'u server non ge n'ha date nisciuna 'mbormazione sus a 'u file.",
 'api-error-nomodule' => "Errore inderne: Nisciune module de carecamende 'mbostate.",
 'api-error-ok-but-empty' => "Errore inderne: Nisciune resposte da 'u server.",
 'api-error-overwrite' => "'A sovrascritture de 'nu file ca esiste non ge se pò fà.",
index 405713e..8359bb6 100644 (file)
@@ -685,7 +685,7 @@ $2',
 Указана следующая причина: ''$2''.",
 'filereadonlyerror' => "Не удаётся изменить файл «$1», так как хранилище «$2» находится в режиме «только для чтения».
 
казана причина: «''$3''».",
становивший этот режим администратор оставил следующее разъяснение: «''$3''».",
 
 # Virus scanner
 'virus-badscanner' => "Ошибка настройки. Неизвестный сканер вирусов: ''$1''",
@@ -1066,6 +1066,7 @@ $2
 'edit-no-change' => 'Ваша правка была отклонена, так как в тексте не было сделано изменений.',
 'edit-already-exists' => 'Невозможно создать новую страницу.
 Она уже существует.',
+'defaultmessagetext' => 'Текст по умолчанию',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Внимание. Эта страница содержит слишком много вызовов ресурсоёмких функций.
@@ -1829,6 +1830,7 @@ $1',
 'backend-fail-contenttype' => 'Не удалось определить тип содержимого файла, чтобы сохранить его в «$1».',
 'backend-fail-batchsize' => 'Хранилище получило блок из $1 {{PLURAL:$1|файловой операции|файловых операций|файловых операций}}, ограничение составляет $2 {{PLURAL:$1|операцию|операции|файловых операций}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Не удалось подключиться к базе данных журнала для хранилища «$1».',
 'filejournal-fail-dbquery' => 'Не удалось обновить базу данных журнала для хранилища «$1».',
 
index 6eeb319..068065f 100644 (file)
@@ -364,7 +364,7 @@ $messages = array(
 'variants' => 'ප්‍රභේද',
 
 'errorpagetitle' => 'දෝෂය',
-'returnto' => '$1 à¶§ නැවත යන්න.',
+'returnto' => '$1 à·\80à·\99ත නැවත යන්න.',
 'tagline' => '{{SITENAME}} වෙතින්',
 'help' => 'උදවු',
 'search' => 'සොයන්න',
index cdcd16e..cc9c740 100644 (file)
@@ -11,6 +11,7 @@
  * @author Danny B.
  * @author Helix84
  * @author Kaganer
+ * @author Kusavica
  * @author Liso
  * @author Maros
  * @author Michawiki
@@ -961,7 +962,7 @@ Dolu je pre informáciu posledná položka zo záznamu blokovaní:',
 'updated' => '(Aktualizovaný)',
 'note' => "'''Poznámka: '''",
 'previewnote' => "'''Nezabudnite, toto je iba náhľad stránky, ktorú upravujete.
-Zmeny ešte nie sú uložené!'''",
+Zmeny ešte nie sú uložené!''' [[#editform|→ Pokračujte v úpravách]]",
 'previewconflict' => 'Tento náhľad upravenej stránky zobrazuje text z horného poľa s textom tak, ako sa zobrazí potom, keď ju uložíte.',
 'session_fail_preview' => "'''Prepáčte, nemohli sme spracovať váš príspevok kvôli strate údajov relácie.
 Skúste to prosím ešte raz.
@@ -1800,6 +1801,7 @@ Ak problém pretrváva, kontaktujte [[Special:ListUsers/sysop|správcu systému]
 'backend-fail-contenttype' => 'Nebolo možné určiť typ obsahu súboru, ktorý sa má uložiť na „$1“.',
 'backend-fail-batchsize' => 'Do úložiska bola zaslaná dávka s $1 {{PLURAL:$1|operáciou|operáciami}}; limit je $2 {{PLURAL:$2|operácia|operácie|operácií}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Nepodarilo sa pripojiť k žurnálovej databáze úložiska „$1“.',
 'filejournal-fail-dbquery' => 'Nepodarilo sa aktualizovať žurnálovú databázu úložiska „$1“.',
 
index b6b313d..84f96d0 100644 (file)
@@ -571,9 +571,9 @@ $2',
 'ns-specialprotected' => 'Posebnih strani ni mogoče urejati.',
 'titleprotected' => "Uporabnik [[User:$1|$1]] je preprečil ustvarjanje strani s takim naslovom.
 Podani razlog je bil »''$2''«.",
-'filereadonlyerror' => "Ne morem spremeniti datoteke »$1«, ker je skladišče datotek »$2« v načinu, ki dovoljuje samo branje.
+'filereadonlyerror' => 'Ne morem spremeniti datoteke »$1«, ker je skladišče datotek »$2« v načinu, ki dovoljuje samo branje.
 
-Podano pojasnilo je »''$3''«.",
+Administrator, ki ga je zaklenil, je podal naslednje pojasnilo: »$3«.',
 
 # Virus scanner
 'virus-badscanner' => "Slaba konfiguracija: neznani virus skener: ''$1''",
@@ -938,7 +938,7 @@ Lahko se vrnete nazaj in urejate že obstoječe strani, ali pa se [[Special:User
 'sectioneditnotsupported-title' => 'Urejanje razdelkov ni podprto',
 'sectioneditnotsupported-text' => 'Urejanje razdelkov ni podprto na tej strani.',
 'permissionserrors' => 'Napake dovoljenj',
-'permissionserrorstext' => 'Za izvedbo tega nimate dovoljenja zaradi {{PLURAL:$1|naslednjega razloga|naslednjih razlogov|naslednjih razlogov|naslednjih razlogov|naslednjih razlogov}}:',
+'permissionserrorstext' => 'Nimate dovoljenja za izvedbo dejanja zaradi {{PLURAL:$1|naslednjega razloga|naslednjih razlogov|naslednjih razlogov|naslednjih razlogov|naslednjih razlogov}}:',
 'permissionserrorstext-withaction' => 'Nimate dovoljenja za $2, zaradi {{PLURAL:$1|naslednjega razloga|naslednjih $1 razlogov|naslednjih $1 razlogov|naslednjih $1 razlogov}}:',
 'recreate-moveddeleted-warn' => "'''Opozorilo: Pišete stran, ki je bila nekoč že izbrisana.'''
 
@@ -953,6 +953,7 @@ Izgleda, da je bila izbrisana.',
 'edit-conflict' => 'Navzkrižje urejanj.',
 'edit-no-change' => 'Vaše urejanje je bilo prezrto, saj ni vsebovalo sprememb.',
 'edit-already-exists' => 'Ni bilo mogoče ustvariti nove strani, ker že obstaja.',
+'defaultmessagetext' => 'Prednastavljeno besedilo',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Opozorilo:''' Ta stran vsebuje preveč klicev funkcije razčlenjevalnika kode.
@@ -1730,6 +1731,7 @@ Prosimo, preverite veljavnost in dostopnost naslova URL ter poskusite ponovno.
 'backend-fail-contenttype' => 'Ne morem določiti vrsto vsebine datoteke za shranjevanje pri »$1«.',
 'backend-fail-batchsize' => 'Skladiščnemu zaledju je dana vrsta $1 {{PLURAL:$1|datotečne operacije|datotečnih operacij}}; omejitev {{PLURAL:$2|je $2 operacija|sta $2 operaciji|so $2 operacije|je $2 operacij}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Ne morem se povezati z listovno zbirko podatkov za skladiščno zaledje »$1«.',
 'filejournal-fail-dbquery' => 'Ne morem posodobiti listovne zbirke podatkov za skladiščno zaledje »$1«.',
 
index 96aa3ca..e1adc27 100644 (file)
@@ -870,8 +870,8 @@ Më poshtë mund t'i referoheni shënimit të regjistruar për bllokimin e fundi
 'userinvalidcssjstitle' => "'''Kujdes:''' Nuk ka pamje të quajtur \"\$1\". Vini re se faqet .css dhe .js përdorin titull me gërma të vogla, p.sh. {{ns:user}}:Foo/vector.css, jo {{ns:user}}:Foo/Vector.css.",
 'updated' => '(E ndryshuar)',
 'note' => "'''Shënim:'''",
-'previewnote' => "'''Vini re! Kjo faqe është vetëm për inspektim'''
-Ndryshimet tuaja nuk janë ruajtur ende!",
+'previewnote' => "'''Vini re! Kjo faqe është vetëm për shqyrtim.'''
+Ndryshimet tuaja nuk janë ruajtur ende! [[#editform|→ Vazhdo redaktimin]]",
 'previewconflict' => 'Kjo parapamje reflekton tekstin sipër kutisë së redaktimit siç do të duket kur të kryeni ndryshimin.',
 'session_fail_preview' => "'''Ju kërkojmë ndjesë! Redaktimi juaj nuk mund të perpunohej për shkak të humbjes së të dhënave të seancës.'''
 Ju lutemi, provojeni përsëri.
index ff9f7cd..4306ab7 100644 (file)
@@ -35,10 +35,10 @@ $namespaceNames = array(
        NS_USER             => 'Корисник',
        NS_USER_TALK        => 'Разговор_са_корисником',
        NS_PROJECT_TALK     => 'Разговор_о_$1',
-       NS_FILE             => 'ФаÑ\98л',
-       NS_FILE_TALK        => 'Разговор_о_фајлу',
-       NS_MEDIAWIKI        => 'Ð\9cедиÑ\98аÐ\92ики',
-       NS_MEDIAWIKI_TALK   => 'РазговоÑ\80_о_Ð\9cедиÑ\98аÐ\92икију',
+       NS_FILE             => 'Ð\94аÑ\82оÑ\82ека',
+       NS_FILE_TALK        => 'Разговор_о_датотеци',
+       NS_MEDIAWIKI        => 'Ð\9cедиÑ\98авики',
+       NS_MEDIAWIKI_TALK   => 'РазговоÑ\80_о_Ð\9cедиÑ\98авикију',
        NS_TEMPLATE         => 'Шаблон',
        NS_TEMPLATE_TALK    => 'Разговор_о_шаблону',
        NS_HELP             => 'Помоћ',
@@ -68,10 +68,6 @@ $namespaceAliases = array(
 
        'Слика'                   => NS_FILE,
        'Разговор_о_слици'        => NS_FILE_TALK,
-       "Датотека"                => NS_FILE,
-       "Разговор_о_датотеци"     => NS_FILE_TALK,
-       "Медијавики"              => NS_MEDIAWIKI,
-       "Разговор_о_Медијавикију" => NS_MEDIAWIKI_TALK,
        'МедијаВики'              => NS_MEDIAWIKI,
        'Разговор_о_МедијаВикију' => NS_MEDIAWIKI_TALK,
 );
@@ -584,7 +580,7 @@ $messages = array(
 'history' => 'Историја странице',
 'history_short' => 'Историја',
 'updatedmarker' => 'ажурирано од моје последње посете',
-'printableversion' => 'Ð\98здаÑ\9aе за штампу',
+'printableversion' => 'Ð\92еÑ\80зиÑ\98а за штампу',
 'permalink' => 'Трајна веза',
 'print' => 'Штампај',
 'view' => 'Погледај',
@@ -799,9 +795,9 @@ $2',
 'ns-specialprotected' => 'Посебне странице се не могу уређивати.',
 'titleprotected' => "Овај наслов је {{GENDER:$1|заштитио корисник|заштитила корисница|заштитио корисник}} [[User:$1|$1]].
 Наведени разлог: ''$2''.",
-'filereadonlyerror' => "Не могу да изменим датотеку „$1“ јер је ризница „$2“ у режиму за читање.
+'filereadonlyerror' => 'Не могу да изменим датотеку „$1“ јер је ризница „$2“ у режиму за читање.
 
\9dаведени Ñ\80азлог Ð³Ð»Ð°Ñ\81и: â\80\9e''$3''â\80\9c.",
\90дминиÑ\81Ñ\82Ñ\80аÑ\82оÑ\80 ÐºÐ¾Ñ\98и Ñ\98Ñ\83 Ñ\98е Ð·Ð°ÐºÑ\99Ñ\83Ñ\87ао Ð¿Ð¾Ð½Ñ\83дио Ñ\98е Ñ\81ледеÑ\9bе Ð¾Ð±Ñ\98аÑ\88Ñ\9aеÑ\9aе: â\80\9e$3â\80\9c.',
 
 # Virus scanner
 'virus-badscanner' => "Неисправна поставка: непознати скенер за вирусе: ''$1''",
@@ -1182,6 +1178,7 @@ $2
 'edit-no-change' => 'Ваша измена је занемарена јер није било никаквих измена у тексту.',
 'edit-already-exists' => 'Не могу да направим страницу.
 Изгледа да она већ постоји.',
+'defaultmessagetext' => 'Подразумевани текст поруке',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Упозорење:''' ова страница садржи превише позива за рашчлањивање.
@@ -1969,6 +1966,7 @@ $1',
 'backend-fail-contenttype' => 'Не могу да утврдим какав садржај има датотека коју треба да сместим у „$1“.',
 'backend-fail-batchsize' => 'Складишна основа је добила блокаду од $1 {{PLURAL:$1|операције|операције|операција}}; ограничење је $2 {{PLURAL:$2|операција|операције|операција}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Не могу да се повежем с новинарском базом за складишну основу „$1“.',
 'filejournal-fail-dbquery' => 'Не могу да ажурирам новинарску базу за складишну основу „$1“.',
 
@@ -3914,7 +3912,7 @@ $5
 
 # Delete conflict
 'deletedwhileediting' => "'''Упозорење''': ова страница је обрисана након што сте почели с уређивањем!",
-'confirmrecreate' => "[[User:$1|$1]] ([[User talk:$1|разговор]]) {{GENDER:$1|је обрисао|је обрисала|обриса}} ову страницу након што сте почели да је уређујете, са следећим разлогом:
+'confirmrecreate' => "[[User:$1|$1]] ([[User talk:$1|разговор]]) {{GENDER:$1|је обрисао|је обрисала|је обрисао}} ову страницу након што сте почели да је уређујете, са следећим разлогом:
 : ''$2''
 Потврдите да стварно желите да направите страницу.",
 'confirmrecreate-noreason' => 'Корисник [[User:$1|$1]] ([[User talk:$1|разговор]]) је обрисао ову страницу након што сте почели да га уређујете. Потврдите да стварно желите да поново направите ову страницу.',
index 2993781..5444e2b 100644 (file)
@@ -700,9 +700,9 @@ $2',
 'ns-specialprotected' => 'Posebne stranice se ne mogu uređivati.',
 'titleprotected' => "Ovaj naslov je {{GENDER:$1|zaštitio korisnik|zaštitila korisnica|zaštitio korisnik}} [[User:$1|$1]].
 Navedeni razlog: ''$2''.",
-'filereadonlyerror' => "Ne mogu da izmenim datoteku „$1“ jer je riznica „$2“ u režimu za čitanje.
+'filereadonlyerror' => 'Ne mogu da izmenim datoteku „$1“ jer je riznica „$2“ u režimu za čitanje.
 
-Navedeni razlog glasi: „''$3''“.",
+Administrator koji ju je zaključao ponudio je sledeće objašnjenje: „$3“.',
 
 # Virus scanner
 'virus-badscanner' => "Neispravna postavka: nepoznati skener za viruse: ''$1''",
@@ -1083,6 +1083,7 @@ Izgleda da je obrisana.',
 'edit-no-change' => 'Vaša izmena je zanemarena jer nije bilo nikakvih izmena u tekstu.',
 'edit-already-exists' => 'Ne mogu da napravim stranicu.
 Izgleda da ona već postoji.',
+'defaultmessagetext' => 'Podrazumevani tekst poruke',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Upozorenje:''' ova stranica sadrži previše poziva za raščlanjivanje.
@@ -1870,6 +1871,7 @@ Ako se problem ne reši, kontaktirajte [[Special:ListUsers/sysop|administratora]
 'backend-fail-contenttype' => 'Ne mogu da utvrdim kakav sadržaj ima datoteka koju treba da smestim u „$1“.',
 'backend-fail-batchsize' => 'Skladišna osnova je dobila blokadu od $1 {{PLURAL:$1|operacije|operacije|operacija}}; ograničenje je $2 {{PLURAL:$2|operacija|operacije|operacija}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Ne mogu da se povežem s novinarskom bazom za skladišnu osnovu „$1“.',
 'filejournal-fail-dbquery' => 'Ne mogu da ažuriram novinarsku bazu za skladišnu osnovu „$1“.',
 
index 4384ccf..8835b74 100644 (file)
@@ -358,7 +358,7 @@ $messages = array(
 'tog-watchlisthidepatrolled' => 'Göm patrullerade redigeringar från bevakningslistan',
 'tog-nolangconversion' => 'Konvertera inte mellan språkvarianter',
 'tog-ccmeonemails' => 'Skicka kopior till mig av e-post jag skickar till andra användare',
-'tog-diffonly' => 'Visa inte sidinnehåll under diffar',
+'tog-diffonly' => 'Visa inte sidinnehåll under differenser',
 'tog-showhiddencats' => 'Visa dolda kategorier',
 'tog-noconvertlink' => 'Stäng av konvertering av sidtitlar',
 'tog-norollbackdiff' => 'Visa inte diff efter tillbakarullning',
@@ -701,7 +701,7 @@ $2',
 Den uppgivna anledningen är "\'\'$2\'\'".',
 'filereadonlyerror' => 'Det går inte att ändra filen "$1", eftersom fildatabasen "$2" är i skrivskyddat läge.
 
-Den angivna anledningen var "\'\'$3\'\'".',
+Den administratören som låste den gav denna anledning: "\'\'$3\'\'".',
 
 # Virus scanner
 'virus-badscanner' => "Dålig konfigurering: okänd virusskanner: ''$1''",
@@ -1064,6 +1064,7 @@ Det verkar som att den har raderats.',
 'edit-no-change' => 'Din redigering ignorerades, eftersom ingen ändring gjordes i texten.',
 'edit-already-exists' => 'Sidan kunde inte skapas.
 Den finns redan.',
+'defaultmessagetext' => 'Standardtext för meddelande',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Varning: Denna sida innehåller för många anrop av resurskrävande parserfunktioner.
@@ -1832,6 +1833,7 @@ Om problemet kvarstår, kontakta en [[Special:ListUsers/sysop|administratör]].'
 'backend-fail-contenttype' => 'Kunde inte bestämma innehållstypen för filen att spara på "$1".',
 'backend-fail-batchsize' => 'Lagringssystemet gav en batch på $1 fil{{PLURAL:$1|operation|operationer}}; gränsen är $2 {{PLURAL:$2|operation|operationer}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Kunde inte ansluta till journaldatabasen för lagringssystemet "$1".',
 'filejournal-fail-dbquery' => 'Kunde inte uppdatera journaldatabasen för lagringssystemet "$1".',
 
index d8328bc..82cf9cf 100644 (file)
@@ -815,7 +815,7 @@ Haririo umekataliwa ili kuzuia uharibifu wa maandishi ya kurasa.
 Haya hutokea kwa muda ambao unatumia huduma ya seva ya wavu isiyotiwa jina na yenye hitilafu nyingi.",
 'edit_form_incomplete' => "'''Baadhi ya sehemu za fomu ya kuhariria hazikufikia seva. Hakikisha kwamba haririo lako bado lipo na kisha jaribu tena.'''",
 'editing' => 'Kuhariri $1',
-'creating' => '$1 unaanzishwa',
+'creating' => '$1 inaanzishwa',
 'editingsection' => 'Unahariri $1 (fungu)',
 'editingcomment' => 'Una hariri $1 (sehemu mpya)',
 'editconflict' => 'Mgongano wa kuhariri: $1',
@@ -1639,6 +1639,10 @@ Orodha inayofuata inaonyesha {{PLURAL:$1|kiungo cha kwanza|viungo $1 vya kwanza}
 Tafadhali tazama [$2 ukurasa wa maelezo ya faili] kwa maelezo zaidi.',
 'sharedupload-desc-here' => 'Faili hili linatoka $1 na huenda likawa limetumika na miradi mingine.
 Maelezo yaliyopo katika [$2 ukurasa wa maelezo ya faili] linaonyeshwa hapa.',
+'sharedupload-desc-edit' => 'Faili hili linatoka $1 na huenda likawa limetumika na miradi mingine.
+Pengine ungependa kuhariri maelezo yaliyopo katika [$2 ukurasa wa maelezo ya faili] pale.',
+'sharedupload-desc-create' => 'Faili hili linatoka $1 na huenda likawa limetumika na miradi mingine.
+Pengine ungependa kuhariri maelezo yaliyopo katika [$2 ukurasa wa maelezo ya faili] pale.',
 'filepage-nofile' => 'Hakuna faili yenye jina hili.',
 'filepage-nofile-link' => 'Hakuna faili lenye jina hili, lakini unaweza [$1 kulipakia].',
 'uploadnewversion-linktext' => 'Pakia toleo jipya la faili hili',
diff --git a/languages/messages/MessagesTly.php b/languages/messages/MessagesTly.php
new file mode 100644 (file)
index 0000000..3d5997b
--- /dev/null
@@ -0,0 +1,733 @@
+<?php
+/** Толышә зывон (Толышә зывон)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Гусейн
+ */
+
+$messages = array(
+# User preference toggles
+'tog-newpageshidepatrolled' => 'Нијони огәтеј ноғо доә быә сәһифон бә тожә сәһифон сијоһиәдә',
+'tog-watchcreations' => 'Зијод кардеј чымы офәјә быә сәһифон бә ноғо доә сијоһи',
+'tog-enotifwatchlistpages' => 'Ноғо доә сијоһиәдә сәһифон кејнә дәгиш бәбен бәмы е-номә бывығанд',
+'tog-watchlisthideown' => 'Чымы дәгишон ноғо доә сијһиәдә нијо кардеј',
+'tog-watchlisthideminor' => 'Нијо кардеј гәдә дәгишон ноғо доә сијоһиәдә',
+
+# Dates
+'sunday' => 'Ишанбә',
+'monday' => 'Дышанбә',
+'tuesday' => 'Сешанбә',
+'wednesday' => 'Чошанбә',
+'thursday' => 'Ҹымә шәв',
+'friday' => 'Әjнә',
+'saturday' => 'Шанбә',
+'sun' => 'Иша',
+'mon' => 'Дыш',
+'tue' => 'Сеш',
+'wed' => 'Чош',
+'thu' => 'Ҹым',
+'fri' => 'Әјн',
+'sat' => 'Шан',
+'january' => 'Јанвар',
+'february' => 'Феврал',
+'march' => 'Март',
+'april' => 'Апрел',
+'may_long' => 'Мај',
+'june' => 'Ијун',
+'july' => 'Ијул',
+'august' => 'Август',
+'september' => 'Сентјабр',
+'october' => 'Октјабр',
+'november' => 'Нојабр',
+'december' => 'Декабр',
+'january-gen' => 'Јанварә манги',
+'february-gen' => 'Февралә манги',
+'march-gen' => 'Мартә манги',
+'april-gen' => 'Апрелә манги',
+'may-gen' => 'Мајә манги',
+'june-gen' => 'Ијунә манги',
+'july-gen' => 'Ијулә манги',
+'august-gen' => 'Августә манги',
+'september-gen' => 'Сентјабрә манги',
+'october-gen' => 'Октјабрә манги',
+'november-gen' => 'Нојабрә манги',
+'december-gen' => 'Декабрә манги',
+'jan' => 'Јан',
+'feb' => 'Фев',
+'mar' => 'Мар',
+'apr' => 'Апр',
+'may' => 'Мај',
+'jun' => 'Ијун',
+'jul' => 'Ијул',
+'aug' => 'Авг',
+'sep' => 'Сен',
+'oct' => 'Окт',
+'nov' => 'Ној',
+'dec' => 'Дек',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Категоријә|Категоријон}}',
+'category_header' => 'Сәһифон бы категоријәдә "$1"',
+'subcategories' => 'Категоријон жинтон',
+'category-media-header' => 'Медијә бы категоријәдә "$1"',
+'category-empty' => "''Ын категоријә бы дәғиғәдә тәјлије.''",
+'hidden-categories' => '{{PLURAL:$1|Нијони категоријә|Нијони категоријон}}',
+'hidden-category-category' => 'Нијони категоријон',
+'category-article-count' => '{{PLURAL:$2|Бы категоријәдә әнҹәх иглә сәһифәје.|Ҹәми $2 сәһифонку нишо доә быә {{PLURAL:$1|сәһифә|$1 сәһифә}} бы категоријәдә.}}',
+'category-article-count-limited' => 'Ын категоријәдә {{PLURAL:$1|$1 сәһифә|}} һесте.',
+'category-file-count' => '{{PLURAL:$2|Бы категоријәдә әнҹәх иглә фајле.|Ҹәми $2 фајлонку нишо доә быә {{PLURAL:$1|фајл|$1 фајл}} бы категоријәдә.}}',
+'category-file-count-limited' => 'Ын категоријәдә  {{PLURAL:$1|$1 фајл}} һесте.',
+'listingcontinuesabbrev' => '(дәвом карде)',
+
+'about' => 'Тәсвир',
+'article' => 'Мәғолә',
+'newwindow' => '(нујә пенҹәдә окардеј)',
+'cancel' => 'Ләғв кардеј',
+'mypage' => 'Чымы сәһифә',
+'mytalk' => 'Чымы мызокирә сәһифә',
+'anontalk' => 'Бо ын IP-унвони мызокирә',
+'navigation' => 'Навигасијә',
+'and' => '&#32;ијән',
+
+# Cologne Blue skin
+'qbfind' => 'Нәве',
+'qbbrowse' => 'Дијә кардеј',
+'qbedit' => 'Сәрост кардеј',
+'qbpageoptions' => 'Ым сәһифә',
+'qbmyoptions' => 'Чымы сәһифон',
+'qbspecialpages' => 'Хысусиә сәһифон',
+'faq' => 'РАП',
+'faqpage' => 'Project:РАП',
+
+# Vector skin
+'vector-action-addsection' => 'Мывзу зијод кардеј',
+'vector-action-delete' => 'Рәдд кардеј',
+'vector-action-move' => 'Номи дәгиш кардеј',
+'vector-action-protect' => 'Мыдофијә кардеј',
+'vector-action-undelete' => 'Бәрпо кардеј',
+'vector-action-unprotect' => 'Мыдофијә дәгиш кардеј',
+'vector-view-create' => 'Офәјеј',
+'vector-view-edit' => 'Сәрост кардеј',
+'vector-view-history' => 'Тарых',
+'vector-view-view' => 'Һандемон',
+'vector-view-viewsource' => 'Дијә кардеј',
+'actions' => 'Һәрәкәтон',
+'namespaces' => 'Номон мәконон',
+'variants' => 'Вариантон',
+
+'errorpagetitle' => 'Сәһв',
+'returnto' => 'Бә сәһифә огәрдеј $1.',
+'tagline' => 'Материал че {{SITENAME}}',
+'help' => 'Арајиш',
+'search' => 'Нәве',
+'searchbutton' => 'Нәве',
+'go' => 'Давардеј',
+'searcharticle' => 'Давардеј',
+'history' => 'Сәһифә тарых',
+'history_short' => 'Тарых',
+'printableversion' => 'Чап кардејро рәвојәт',
+'permalink' => 'Еғрорә сәбон',
+'print' => 'Чап',
+'view' => 'Тәмшо кардеј',
+'edit' => 'Сәрост кардеј',
+'create' => 'Офәјеј',
+'editthispage' => 'Ым сәһифә сәрост кардеј',
+'create-this-page' => 'Ым сәһифә офәјеј',
+'delete' => 'Рәдд кардеј',
+'deletethispage' => 'Ым сәһифә рәдд кәрдеј',
+'undelete_short' => 'Бәрпо кардеј $1 {{PLURAL:$1|дәгиши|дәгишон|}}',
+'viewdeleted_short' => 'Дијә карде {{PLURAL:$1|иглә рәдд кардә быә дәгиши|$1 рәдд кардә быә дәгишон}}',
+'protect' => 'Мыдофијә кардеј',
+'protect_change' => 'дәгиш кардеј',
+'protectthispage' => 'Ым сәһифә мыдофијә кардеј',
+'unprotect' => 'Мыдофијә дәгиш кардеј',
+'unprotectthispage' => 'Ын сәһифә мыдофијә дәгиш кардеј',
+'newpage' => 'Тожә сәһифә',
+'talkpage' => 'Ым сәһифә мызокирә кардеј',
+'talkpagelinktext' => 'Мызокирә',
+'specialpage' => 'Хысусиә сәһифә',
+'personaltools' => 'Шәхси диләгон',
+'postcomment' => 'Нујә ғысм',
+'articlepage' => 'Мәғолә дијә кардеј',
+'talk' => 'Мызокирә',
+'views' => 'Тәмшо кардеј',
+'toolbox' => 'Диләгон',
+'userpage' => 'Иштирокәкә сәһифә дијә кардеј',
+'projectpage' => 'Нәхши сәһифә дијә кардеј',
+'imagepage' => 'Фајли сәһифә дијә кардеј',
+'viewhelppage' => 'Араијш сәј',
+'categorypage' => 'Категоријон сәһифә дијә кардеј',
+'viewtalkpage' => 'Мызокирә дијә кардеј',
+'otherlanguages' => 'Ҹо зывононәдә',
+'redirectedfrom' => '($1 чыјо унвон дәгиш кардә быә)',
+'lastmodifiedat' => 'Ын сәһифә охонә кәрә дәгиш беј: $2, $1.',
+'protectedpage' => 'Мыдофијә кардә быә сәһифә',
+'jumpto' => 'Дәвардеј бә:',
+'jumptonavigation' => 'навигасијә',
+'jumptosearch' => 'нәве',
+'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) and the disambiguation template definition (see disambiguations).
+'aboutsite' => 'Тәсвир {{SITENAME}}',
+'aboutpage' => 'Project: Тәсвир',
+'copyrightpage' => '{{ns:project}}:Мыәллифә һуғуғ',
+'currentevents' => 'Есәтнә һодисон',
+'currentevents-url' => 'Project: Есәтнә һодисон',
+'disclaimers' => 'Дејни бә гиј ныгәтеј',
+'disclaimerpage' => 'Project:Дејни бә гиј ныгәтеј',
+'edithelp' => 'Арајиш бо редактә кардеј',
+'edithelppage' => 'Help:Арајиш бо сәрост кардеј',
+'helppage' => 'Help:Мындәриҹот',
+'mainpage' => 'Јолә сәһифә',
+'mainpage-description' => 'Јолә сәһифә',
+'portal' => 'Ҹәмјәт',
+'portal-url' => 'Project:Ҹәмјәти портал',
+'privacy' => 'Мәхфијәти сијосәт',
+'privacypage' => 'Project:Мәхфијәти сијосәт',
+
+'ok' => 'OK',
+'retrievedfrom' => 'Сәвон "$1"',
+'youhavenewmessages' => 'Шымә сәјоне $1 ($2).',
+'newmessageslink' => 'нујә хәбон',
+'newmessagesdifflink' => 'охонә дәгиши',
+'editsection' => 'Сәрост кардеј',
+'editold' => 'Сәрост кардеј',
+'viewsourceold' => 'бешемонә коди дијә кардеј',
+'editlink' => 'Сәрост кардеј',
+'viewsourcelink' => 'Бешемонә коди дијә кардеј',
+'editsectionhint' => 'Ын семонә сәрост карде: $1',
+'toc' => 'Мындәриҹот',
+'showtoc' => 'нишо дој',
+'hidetoc' => 'нијо кардеј',
+'thisisdeleted' => 'Дијә кардеј јаанки бәрпо кардеј $1?',
+'viewdeleted' => 'Дијә кардеј $1?',
+'restorelink' => '{{PLURAL:$1|иглә рәдд кардә быә дәгиши|$1 рәдд кардә быә дәгишон}}',
+'site-atom-feed' => '$1 Atom лента',
+'page-atom-feed' => '"$1" Atom лента',
+'red-link-title' => '$1 (жыго сәһифә ни)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Мәғолә',
+'nstab-user' => 'Иштирокәкә сәһифә',
+'nstab-media' => 'Медијә сәһифә',
+'nstab-special' => 'Хысусиә сәһифә',
+'nstab-project' => 'Нахшә бәрәдә',
+'nstab-image' => 'Фајл',
+'nstab-template' => 'Ғәлиб',
+'nstab-category' => 'Категоријә',
+
+# General errors
+'error' => 'Сәһв',
+'missingarticle-rev' => '(рәвојәт#: $1)',
+'badtitle' => 'Роныдоә ном',
+'viewsource' => 'Дијә кардеј',
+
+# Login and logout pages
+'yourname' => 'Иштирокәкә ном:',
+'yourpassword' => 'Парол:',
+'yourpasswordagain' => 'Пароли сәнибәтон гырдә карде:',
+'login' => 'Ыштәни едаштеј',
+'nav-login-createaccount' => 'Ыштәни едаштеј / ыштәни ғејд кардовнијеј',
+'loginprompt' => '{{SITENAME}}-әдә ыштәни едәште горнә, шымә бәбе бә «cookies» иҹозә быдән.',
+'userlogin' => 'Ыштәни едаштеј / ыштәни ғејд кардовнијеј',
+'userloginnocreate' => 'Ыштәни едаштеј',
+'logout' => 'Системәдә кој орохнијеј',
+'userlogout' => 'Системәдә кој орохнијеј',
+'notloggedin' => 'Ыштәни едаштәнијоне',
+'nologin' => "Иштирок кардәкәси сәһифә ни? '''$1'''.",
+'nologinlink' => 'Иштирокәкә сәһифә офәје',
+'createaccount' => 'Нујә иштирокәкә ғејд кардеј',
+'gotaccount' => 'Шымә ыштәни ғејд кардәјоне? $1.',
+'gotaccountlink' => 'Ыштәни едаштеј',
+'userlogin-resetlink' => 'Бә системә дәше мәлумоти јодәдә бекардәјоне?',
+'createaccountmail' => 'бә е-номә',
+'mailmypassword' => 'Нујә парол вығандеј бә Е-номә.',
+'loginlanguagelabel' => 'Зывон: $1',
+
+# Change password dialog
+'resetpass' => 'Пароли дәгиш карде',
+'resetpass_header' => 'Иштирокәкә пароли дәгиш карде',
+'oldpassword' => 'Канә парол:',
+'newpassword' => 'Нујә парол:',
+'resetpass_forbidden' => 'Парол әзыни дәгиш бе',
+'resetpass-submit-loggedin' => 'Пароли дәгиш кардеј',
+'resetpass-submit-cancel' => 'Ләғв кардеј',
+
+# Special:PasswordReset
+'passwordreset-username' => 'Иштирокәкә ном:',
+'passwordreset-email' => 'Е-номә унвон:',
+
+# Special:ChangeEmail
+'changeemail' => 'Е-номә унвони дәгиш кардеј',
+'changeemail-newemail' => 'Е-номә тожә унвон:',
+'changeemail-submit' => 'Е-номә дәгиш кардеј',
+
+# Edit page toolbar
+'bold_sample' => 'Нимәтындә шрифт',
+'bold_tip' => 'Нимәтындә шрифт',
+'italic_sample' => 'Курсивә мәтн',
+'italic_tip' => 'Курсивә мәтн',
+'link_sample' => 'Сәбони сәрловһә',
+'link_tip' => 'Дыләтонә сәбон',
+'extlink_sample' => 'http://www.example.com сәбони сәрловһә',
+'extlink_tip' => 'Хариҹә сәбон (сыханәсә http:// јодәдә огәтән)',
+'headline_sample' => 'Сәрловһә мәтн',
+'headline_tip' => '2-нә сәвијјә сәрловһә',
+'nowiki_sample' => 'Формат кардә ныбә мәтн дәғандән ијо',
+'nowiki_tip' => 'Вики формат кардеј бә нәзә ныстәнеј',
+'image_tip' => 'Дахыл кардә быә фајл',
+'media_tip' => 'Сәбон бә медијә-фајл',
+'sig_tip' => 'Шымә ғол ијән вахт',
+'hr_tip' => 'Уфуғијә ријә (рә-рә истифодә мәкән)',
+
+# Edit pages
+'summary' => 'Дәгишон тәсвир:',
+'subject' => 'Мывзу/сәрловһә:',
+'minoredit' => 'Ым гадә дәгишије',
+'watchthis' => 'Ым сәһифә тәмшо кардеј',
+'savearticle' => 'Сәһифә огәтеј',
+'preview' => 'Сыфтәнә нишо дој',
+'showpreview' => 'Сыфтәнә нишо дој',
+'showdiff' => 'Дәғандә быә дәгишон',
+'anoneditwarning' => "'''Дығғәт.''' Шымә ыштәни едәштәнијоне системәдә.
+Шымә IP-унвон бә ым сәһифә дәгишон тарых ғејд бәбе.",
+'loginreqlink' => 'ыштәни едаштеј',
+'newarticle' => '(Нујә)',
+'newarticletext' => 'Шымә давардијон де сәбони бә сәһифә, әмма жыго сәһифә ни.
+Бо сәһифә офәјеј мәтн бынывыштән жиннә пенҹәдә (мыффәссәл дијә быкән [[{{MediaWiki:Helppage}}|араијшә сәһифә]]).
+Гирәм шымә ијо де сәһви бешијон, һиччекәни ыштә браузери "думо" егәтән.',
+'noarticletext' => "Есәт бы сәһифәдә мәтн ни.
+Шымә бәзынешон [[Special:Search/{{PAGENAME}}|пәјдо кардеј конҹо ым ном һесте]] бә ҹо мәғолонәдә,
+<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналон ујғунә нывыштәјон пәјдо кардеј],
+јаанки '''[{{fullurl:{{FULLPAGENAME}}|action=edit}}де жыго номи сәһифә офәјеј ]'''</span>.",
+'noarticletext-nopermission' => 'Есәт бы сәһифәдә мәтн ни. 
+Шымә бәзынејон [[Special:Search/{{PAGENAME}}|пәјдо кардеј конҹо ым ном һесте]] бә ҹо мәғолонәдә,
+јаанки <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналон ујғунә нывыштәјон пәјдо кардеј].</span>',
+'previewnote' => "'''Јодәдә огәтән ки ым һәлә сыфтәнә нишо доје.'''
+Шымә дәгишон һәлә огәтә быәнин! [[#editform|→ дәвом кардеј сәрост карде]]",
+'editing' => 'Редәктә кардеј $1',
+'editingsection' => 'Редактә кардеј $1 (ғысм)',
+'yourtext' => 'Шымә мәтн',
+'templatesused' => '{{PLURAL:$1|Ғәлиб:|Ғәлибон}} есәтнә сәһифә истифодә кардејдә:',
+'template-protected' => '(Мыдофиә кардә быә)',
+'hiddencategories' => 'Ын сәһифә аидијотыш һесте бә {{PLURAL:$1|1 нијони категоријә|$1 нијони категоријон}}:',
+'permissionserrorstext-withaction' => "Шымәку ни иҹозә ба ым һәрәкәти «'''$2'''», бә жыго {{PLURAL:$1|сәбәби|сәбәбон}} горнә:",
+'moveddeleted-notice' => 'Ым сәһифә молә быә.
+Арајиши горнә жинтоно нишо доә быән чы сәһифә молә ијән ном дәгиш кардә нывыштәјон.',
+
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''Дығғәт:''' Дахыл кардә быә ғәлибон сәкыштә памјә ве јоле.
+Хәјли ғәлибон дахыл ныбабен.",
+'post-expand-template-inclusion-category' => 'Бо сәһифон дахыл кардә быә ғәлибон рәво зынә быә улгу бә кәно бешә',
+
+# History pages
+'viewpagelogs' => 'Бо ым сәһифә журналон нишо дој',
+'currentrev-asof' => 'Есәтнә рәвојәт бә $1',
+'revisionasof' => 'Рәвојәт $1',
+'revision-info' => 'Рәвојәти мәлумот: $1; $2',
+'previousrevision' => '← Навынәни',
+'nextrevision' => 'Думотоно шә →',
+'currentrevisionlink' => 'Есәтнә рәвојәт',
+'cur' => 'есәт.',
+'next' => 'думотоно шә',
+'last' => 'навы.',
+'page_first' => 'иминә',
+'page_last' => 'охонә',
+'history-fieldset-title' => 'Тарыхи дијә кардеј',
+'history-show-deleted' => 'Әнҹәх рәдд кардә быән',
+'historyempty' => '(тәјли)',
+
+# Revision feed
+'history-feed-title' => 'Дәгишон тарых',
+'history-feed-description' => 'Ым сәһифә дәгишон тарых викиәдә',
+'history-feed-item-nocomment' => '$1 бә $2-дә',
+
+# Revision deletion
+'rev-delundel' => 'нишо дој/нијо кардеј',
+'rev-showdeleted' => 'нишо дој',
+'revdelete-show-file-submit' => 'Бәле',
+'revdelete-radio-set' => 'Бәле',
+'revdelete-radio-unset' => 'Не',
+'revdel-restore' => 'Винде дәрәҹә дәгиш карде',
+'revdel-restore-deleted' => 'Рәдд кардә быә рәвојәтон',
+'revdel-restore-visible' => 'Чијә рәвојәтон',
+'pagehist' => 'Сәһифә тарых',
+
+# Merge log
+'revertmerge' => 'Бахш кардеј',
+
+# Diffs
+'history-title' => 'Дәгишон тарых "$1"',
+'difference' => '(Рәвојәтон мијонәдә фәрғ)',
+'lineno' => 'Сәтыр $1:',
+'compareselectedversions' => 'Сәчын кардә быә рәвојәтон мығојисә кардеј.',
+'editundo' => 'ләғв кардеј',
+
+# Search results
+'searchresults' => 'Нәве нәтиҹон',
+'searchresults-title' => 'Нәве «$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)',
+'searchmenu-exists' => "'''Бы вики-нәхшәдә һесте сәһифә «[[:$1]]»'''",
+'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|1 сыхан|$2 сыханон}})',
+'search-redirect' => '(Унвони дәгиш кардеј  $1)',
+'search-section' => '(семонә $1)',
+'search-suggest' => 'Еһтимол шымә нәзәрәдә ым гәтејдәбијон: $1',
+'searchrelated' => 'ангыл кардә быә',
+'searchall' => 'Һәммәј',
+'showingresultsheader' => "{{PLURAL:$5|Нәтиҹә'''$1''' из '''$3'''|Нәтиҹон '''$1 — $2''' чы '''$3'''}} бо '''$4'''",
+'search-nonefound' => 'Бә шымә хәбәсә ујғун омә сәкыштә пәјдо ныбе.',
+'powersearch-field' => 'Нәве',
+'powersearch-toggleall' => 'Һаммај',
+
+# Preferences page
+'preferences' => 'Чичсә печыније',
+'mypreferences' => 'Печыније',
+'prefsnologin' => 'Ыштәни едаштәнијоне',
+'prefsnologintext' => 'Шымә бәбе <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ыштәни едәштән]</span> бо иштирокәкә пеғәндон дәгиш кардеј.',
+'changepassword' => 'Пароли дәгиш кардеј',
+'skin-preview' => 'Сыфтәнә нишо дој',
+'prefs-rc' => 'Ән нуә дәгишон',
+'prefs-changeemail' => 'Е-номә дәгиш кардеј',
+'saveprefs' => 'Огәте',
+'searchresultshead' => 'Нәве',
+'timezoneregion-america' => 'Америка',
+'timezoneregion-europe' => 'Авропа',
+'prefs-namespaces' => 'Номон мәконон',
+'prefs-files' => 'Фајлон',
+'prefs-custom-css' => 'Хысуси CSS',
+'youremail' => 'E-номә:',
+'username' => 'Иштирокәкә ном:',
+'uid' => 'Иштирокәкә ID:',
+'yourrealname' => 'Шымә әсыл ном:',
+'yourlanguage' => 'Зывон:',
+'email' => 'E-номә',
+'prefs-help-email' => 'Е-номә унвони нывыштеј һукман ни, интаси ав бә шымә гәрәк бәбе гирам шымә пароли виро бебәкардејон.',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'Ым сәһифә сәрост кардеј',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|дәгиши|дәгишон}}',
+'recentchanges' => 'Ән нујә дәгишон',
+'recentchanges-legend' => 'Ән нујә дәгишон печыније',
+'recentchanges-label-newpage' => 'Де ым дәгиши тожә сәһифә сохтә бе',
+'recentchanges-label-minor' => 'Ым гадә дәгишије',
+'recentchanges-label-bot' => 'Ым дәгиши бот кардәше',
+'rcnote' => "Бә жиј нишо доә быә {{PLURAL:$1|'''1''' дәгиши|'''$1''' дәгиши}}, бә охонә {{PLURAL:$2|ружәдә|'''$2''' ружәдә}}, саат $5, $4.",
+'rcnotefrom' => "Бә жиј доә быән дәгишон че вахтику '''$2''' (тосә '''$1''').",
+'rclistfrom' => '$1 вахтику дәгишон нишо быдә',
+'rcshowhideminor' => '$1 гәдәлиә дәгишон',
+'rcshowhidebots' => '$1 ботон',
+'rcshowhideliu' => '$1 ыштәни едаштә иштирокәкон',
+'rcshowhideanons' => '$1 әнәномә иштирокәкон',
+'rcshowhidepatr' => '$1 осә кардә быә дәгишон',
+'rcshowhidemine' => '$1 ыштә дәгишон',
+'rclinks' => 'Нишо дој охонә $1 дәгишон бә охонәни $2 ружон<br />$3',
+'diff' => 'фәрғ.',
+'hist' => 'тарых',
+'hide' => 'Нијо кардеј',
+'show' => 'Нишо дој',
+'minoreditletter' => 'г',
+'newpageletter' => 'Т',
+'boteditletter' => 'б',
+'rc-enhanced-expand' => 'Тәфсилотон нишо дој (JavaScript истифодә бедә)',
+'rc-enhanced-hide' => 'Тәфсилотон нијо кардеј',
+
+# Recent changes linked
+'recentchangeslinked' => 'Ангыл кардә быә дәгишон',
+'recentchangeslinked-toolbox' => 'Ангыл кардә быә дәгишон',
+'recentchangeslinked-title' => 'Ангыл кардә быә дәгишон бо "$1"',
+'recentchangeslinked-noresult' => 'Нишо доә быә мыддәтәдә, ангыл кардә быә сәһифонәдә дәгишон бәнин.',
+'recentchangeslinked-summary' => "Бә ым сәһифонәдә охонә дәгишон сијоһије, бә кон сәһифон сәбон вардә ын сәһифә (јаанки дахыл кардә быән бә нишо доә быә категоријә).
+[[Special:Watchlist|Шымә ноғо доә сијоһиәдә]] быә сәһифон, де '''ғалинә''' шрифти нишо доә быән.",
+'recentchangeslinked-page' => 'Сәһифә ном:',
+'recentchangeslinked-to' => 'Бә нишо доә быә сәһифә сәбон вардә сәһифонәдә дәгишон нишо дој',
+
+# Upload
+'upload' => 'Фајли бо жәј',
+'uploadlogpage' => 'Бо кардә быә чијон журнал',
+'filedesc' => 'Кыртә тәсвир',
+'uploadedimage' => 'бо жәше "[[$1]]"',
+
+'license' => 'Лисензијә:',
+'license-header' => 'Лисензијә',
+
+# File description page
+'file-anchor-link' => 'Фајл',
+'filehist' => 'Фајли тарых',
+'filehist-help' => 'Фајли сыфтә рәвојәти виндеј горә бә тарых/вахт егәтән.',
+'filehist-current' => 'есәтнә',
+'filehist-datetime' => 'Тарых/Вахт',
+'filehist-thumb' => 'Гәдә шикил',
+'filehist-thumbtext' => 'Миниатјур бо рәвојәти чы вахтику $1',
+'filehist-user' => 'Иштирокәкә',
+'filehist-dimensions' => 'Објекти улгу',
+'filehist-comment' => 'Ғејд',
+'imagelinks' => 'Фајли око доје',
+'linkstoimage' => '{{PLURAL:$1|сәһифә|$1 сәһифә}} сәбон вардә бә ын фајл:',
+'nolinkstoimage' => 'Бә ым фајли сәбон вардә сәһифон нин.',
+'sharedupload-desc-here' => 'Ым фајл чыјо пегәтә быә $1 ијән бәзыне истифодә бе бә ҹо нәхшонәдә.
+Мәлумот чы әчәј [$2 тәсвири сәһифәку] бә жиј доә быә.',
+
+# Random page
+'randompage' => 'Рајрастә мәғолә',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|бајт|бајтон}}',
+'nmembers' => '$1 {{PLURAL:$1|узв|узвон}}',
+'usercreated' => '{{GENDER:$3|Офәјеј быә}} $1 $2',
+'newpages' => 'Тожә сәһифон',
+'move' => 'Ном дәгиш кардеј',
+'pager-newer-n' => '{{PLURAL:$1|ән нујә 1|ән нујә $1}}',
+
+# Book sources
+'booksources' => 'Китобон сәвонон',
+'booksources-search-legend' => 'Китоби барәдә мәлумоти нәве',
+'booksources-go' => 'Нәве',
+
+# Special:Log
+'log' => 'Журналон',
+
+# Special:AllPages
+'allpages' => 'Һәммәј сәһифон',
+'alphaindexline' => 'чы $1 тоса $2',
+'allarticles' => 'Һәммәј сәһифон',
+'allpagessubmit' => 'Бә вырә роснијеј',
+
+# Special:Categories
+'categories' => 'Категоријон',
+
+# Special:LinkSearch
+'linksearch-line' => '$2-ку сәбон вардә бә $1',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Иштирокәкон ғеидијоти журнал',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(иштирокәкон сијоһи)',
+
+# E-mail user
+'emailuser' => 'Номә бә иштирокәкә',
+
+# Watchlist
+'watchlist' => 'Чымы ноғо доә сијоһи',
+'mywatchlist' => 'Чымы ноғо доә сијоһи',
+'watchlistfor2' => 'Бо $1 $2',
+'watch' => 'Думотоно егыниеј',
+'unwatch' => 'Думотоно ныегыниеј',
+'watchlist-details' => 'Мызокирә сәһифон ныашмардеј, шымә ноғо доә сијоһиәдә {{PLURAL:$1|$1 сәһифәје|$1 сәһифәје}}.',
+'wlshowlast' => 'Нишо дој бә охонә $1 саат $2 руж $3',
+'watchlist-options' => 'Ноғо доә сијоһи пеғандон',
+
+# Delete
+'actioncomplete' => 'Һәрәкәт иҹро кардә быә',
+'actionfailed' => 'Һәрәкәт иҹро кардә бәни',
+'dellogpage' => 'Рәдд кардә быә чијон журнал',
+
+# Rollback
+'rollbacklink' => 'Окырнијеј',
+
+# Protect
+'protectlogpage' => 'Мыдофијә журнал',
+'protectedarticle' => 'мыдофијә быә "[[$1]]"',
+
+# Undelete
+'undeletelink' => 'чәшику дәвонијеј/бәрпо кардеј',
+'undeleteviewlink' => 'тәмшо кардеј',
+
+# Namespace form on various pages
+'namespace' => 'Номон мәкон:',
+'blanknamespace' => '(Әсос)',
+
+# Contributions
+'contributions' => 'Иштирокәкә гәнҹ',
+'contributions-title' => 'Иштирокәкә гәнҹ $1',
+'mycontris' => 'Чымы гәнҹ',
+'contribsub2' => 'Гәнҹ $1 ($2)',
+'uctop' => '(охонәни)',
+'month' => 'Чы мангику (һәнијән рә):',
+'year' => 'Чы сорику (һәнијән рә):',
+
+'sp-contributions-newbies' => 'Әнҹәх нујә иштирокәкон гәнҹи нишо дој',
+'sp-contributions-blocklog' => 'бастә быә чијон',
+'sp-contributions-uploads' => 'бо жә быә чијон',
+'sp-contributions-logs' => 'журналон',
+'sp-contributions-talk' => 'мызокирә',
+'sp-contributions-search' => 'Гәнҹи нәве',
+'sp-contributions-username' => 'IP-унвон јаанки иштироәкә ном:',
+'sp-contributions-toponly' => 'Нишо дој дәгишон, ком гылә ән охонә рәвојәтонин',
+'sp-contributions-submit' => 'Нәве',
+
+# What links here
+'whatlinkshere' => 'Сәбонон ијо',
+'whatlinkshere-title' => 'Сәһифон, сәбон вардән бә "$1"',
+'whatlinkshere-page' => 'Сәһифә:',
+'linkshere' => "Ым сәһифон сәбон вардән ијо ''[[:$1]]''':",
+'nolinkshere' => "Бә ым сәһифә ҹо сәһифонку сәбонон нин '''[[:$1]]'''.",
+'isredirect' => 'увони дәгиш кардә сәһифәје',
+'istemplate' => 'әловә',
+'isimage' => 'фајлинә сәбон',
+'whatlinkshere-prev' => '{{PLURAL:$1|навынәни|навынәни $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|думотоно шә|думотоно шә $1}}',
+'whatlinkshere-links' => '← сәбонон',
+'whatlinkshere-hideredirs' => '$1 бә тожә унвон вығандеј',
+'whatlinkshere-hidetrans' => '$1 әловон',
+'whatlinkshere-hidelinks' => '$1 сәбонон',
+'whatlinkshere-hideimages' => '$1 сәбонон бо шикилон',
+'whatlinkshere-filters' => 'Филтрон',
+
+# Block/unblock
+'ipboptions' => '2 саат:2 hours,1 руж:1 day,3 руж:3 days,1 һафтә:1 week,2 һафтә:2 weeks,1 манг:1 month,3 манг:3 months,6 манг:6 months,1 сор:1 year,бемыһләт:infinite',
+'ipblocklist' => 'Бастә быә иштирокәкон',
+'blocklink' => 'Бә гырд гәтеј',
+'unblocklink' => 'Ошко кардеј',
+'change-blocklink' => 'Блок быә ҹо дәгиш кардеј',
+'contribslink' => 'Гәнҹ',
+'blocklogentry' => 'бастәше [[$1]] бә ын мыддәт $2 $3',
+'block-log-flags-nocreate' => 'нујә иштирокәкон ғејд карде ғәдәғәне',
+
+# Move page
+'movelogpage' => 'Ном дәгиш кардә быә чијон журнал',
+'revertmove' => 'Бә кәно окырније',
+
+# Export
+'export' => 'Сәһифон ихроҹ кардеј',
+
+# Namespace 8 related
+'allmessagesname' => 'Хәбә',
+'allmessagesdefault' => 'Иминә огәтә быә мәтн',
+
+# Thumbnails
+'thumbnail-more' => 'Һејве кардеј',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Шымә иштирокәкә сәһифә',
+'tooltip-pt-mytalk' => 'Шымә мызокирон сәһифә',
+'tooltip-pt-preferences' => 'Шымә печынијәјоне',
+'tooltip-pt-watchlist' => 'Сәһифон сијоһи, конҹо шымә де дығғәти дијә кардејдәјон бә дәгишон',
+'tooltip-pt-mycontris' => 'Шымә гәнҹон сијоһи',
+'tooltip-pt-login' => 'Ијо бәбе ыштәни ғејд кардовнијеј системәдә, интаси ым һукман ни',
+'tooltip-pt-logout' => 'Системәдә кој орохнијеј',
+'tooltip-ca-talk' => 'Сәһифә мығдори бәрәдә мызокирә',
+'tooltip-ca-edit' => 'Ым сәһифә бәбе дагиш кардеј. Быһамијән, огәтеј бә нав, "сыфтәнә нишо дој" истифодә быкән',
+'tooltip-ca-addsection' => 'Нујә ғысм офәјеј',
+'tooltip-ca-viewsource' => 'Ым сәһифә мыдофијә быә дагиш кардеку, әммә шымә бәзынешон дијә кардеј ијән сурәт бекардеј әчәј бешемонә мәтни',
+'tooltip-ca-history' => 'Сәһифә дәгишон журнал',
+'tooltip-ca-protect' => 'Ым сәһифә дагиш кардеку мыдофијә кардеј',
+'tooltip-ca-delete' => 'Ым сәһифә рәдд кәрдеј',
+'tooltip-ca-move' => 'Сәһифә номи дәгиш кардеј',
+'tooltip-ca-watch' => 'Ым сәһифә зијод кардеј бә шымә нығо доә сијоһи',
+'tooltip-ca-unwatch' => 'Рәдд кардеј ым сәһифә шымә ноғо доә сијоһиәдә',
+'tooltip-search' => 'Нәве {{SITENAME}}',
+'tooltip-search-go' => 'Гирәм һесте дырыст бәнә бы номи сәһифә бәврә дәвардеј',
+'tooltip-search-fulltext' => 'Сәһифон пәјдо кардеј де ын мәтни',
+'tooltip-p-logo' => 'Дәвардеј бә јолә сәһифә',
+'tooltip-n-mainpage' => 'Дәвардеј бә јолә сәһифә',
+'tooltip-n-mainpage-description' => 'Дәвардеј бә јолә сәһифә',
+'tooltip-n-portal' => 'Нахшә барәдә, чич шымә базнејон  ыјо кардеј, конҹо чич һесте',
+'tooltip-n-currentevents' => 'Есәтнә һодисон сијоһи',
+'tooltip-n-recentchanges' => 'Охонә дәгишон сијоһи',
+'tooltip-n-randompage' => 'Рајрастә сәһифә дијә кардеј',
+'tooltip-n-help' => 'Арајишә китобчә бо ын нахшә',
+'tooltip-t-whatlinkshere' => 'Бә ым сәһифә сәбон вардә һәммәј вики сәһифон сијоһи',
+'tooltip-t-recentchangeslinked' => 'Охонә дәгишон сәһифонәдә, бә ком сәһифон сәбон вардә ым сәһифә',
+'tooltip-feed-atom' => 'Транслјасијә кардеј бә Atom бо ым сәһифә',
+'tooltip-t-contributions' => 'Чы иштирок кардәкәси дагиш кардә быә сәһифон сијоһи',
+'tooltip-t-emailuser' => 'Бы иштироәкә номә вығәнде',
+'tooltip-t-upload' => 'Шикилон јаанки мултимедиә фајлон бо жај',
+'tooltip-t-specialpages' => 'Хыдмәтә сәһифон сијоһи',
+'tooltip-t-print' => 'Ым сәһифә рәвојәт бо чап кардеј',
+'tooltip-t-permalink' => 'Бә ым сәһифә рәвојәти еғрорә сәбон',
+'tooltip-ca-nstab-main' => 'Мәғолә мығдор',
+'tooltip-ca-nstab-user' => 'Иштирок кардәкәси сәһифә',
+'tooltip-ca-nstab-special' => 'Ым хыдмәтә сәһифәје бычыми горә дәгиш кардеј әбыни',
+'tooltip-ca-nstab-project' => 'Нәхши сәһифә',
+'tooltip-ca-nstab-image' => 'Фајли сәһифә',
+'tooltip-ca-nstab-template' => 'Ғәлиби сәһифә',
+'tooltip-ca-nstab-category' => 'Категоријон сәһифә',
+'tooltip-minoredit' => 'Ым дәгиши бәнә беәһмијәт ғејд кардеј.',
+'tooltip-save' => 'Шымә дәгишон огәтеј',
+'tooltip-preview' => 'Сәһифә сыфтәнә нишо дој, быһамијән огәтеј бә нав истифодә быкән!',
+'tooltip-diff' => 'Бешемонә мәтни һәхәдә сохтә быә дәгишон нишо дој.',
+'tooltip-compareselectedversions' => 'Че ым сәһифә ды гылә выжнијә быә рәвојәтон мијонәдә фәрғи едјәсеј.',
+'tooltip-watch' => 'Ым сәһифә зијод кардеј бә ыштә нығо доә сијоһи',
+'tooltip-rollback' => 'Охонә редактори дәгиш кардә быә чијон де и гылә егәте ләғв кардеј',
+'tooltip-undo' => 'Дәғандә дәгиши рәдд кардеј ијән "сыфтәнә нишо дој" окардеј, де ләғви сәбәби нышон дој имкони.',
+'tooltip-summary' => 'Кыртә тәсвир бынывыштән',
+
+# Browsing diffs
+'previousdiff' => '← Навынәни дәгиши',
+'nextdiff' => 'Думотоно шә дәгиши →',
+
+# Media information
+'file-info-size' => '$1 × $2 пиксел, фајли памјә: $3, MIME тип: $4',
+'file-nohires' => 'Ән барзә рәвојәт ни.',
+'svg-long-desc' => 'SVG фајл, номинәләдә $1 × $2 пиксел, фајли памјә: $3',
+
+# Bad image list
+'bad_image_list' => 'Формат бәпе быбу жыго:
+
+Бә һисоб сә быәбен әнҹәх сијоһи әсосон (де * рәмзи бино быә сәтырон).
+Сәтыри иминә сәбон бәпе быбу сәбон бә ғәдәғән кардә быә бо дәғанде шикили.
+Пешонә сәбонон бә һамонә сәтырәдә бәнә истино дијә кардә бәбен, јәни мәғолон, бә коврә шикил дахыл карде бәзне бе.',
+
+# Metadata
+'metadata' => 'Метамәлумотон',
+'metadata-fields' => 'Кејнә шикили сәһифәдә метадата ҹәдвәл гырдә карда быә бәвәдә бы сијоһиәдә гылә-гылә ашмардә быә метадата шикили мәрон виндеј бәбе. 
+Әмандәј мәрон нијони бәманден.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+
+# External editor support
+'edit-externally' => 'Редактә кардеј ым фајли де заһири програм',
+'edit-externally-help' => '(Бо мыффәссәлә мәлумотон бә [//www.mediawiki.org/wiki/Manual:External_editors дәрсәвон бо сохтәј] дијә быкан)',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'һәммәј',
+'namespacesall' => 'һәммәј',
+'monthsall' => 'һәммәј',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Сәһифонәдә дәгишон сијоһику',
+'watchlisttools-edit' => 'Дијә кардеј/сәрост кардеј сијоһи',
+'watchlisttools-raw' => 'Сәрост кардеј бәнә мәтни',
+
+# Special:SpecialPages
+'specialpages' => 'Хысусиә сәһифон',
+
+# Special:Tags
+'tag-filter' => '[[Special:Tags|нышонон]] филтр:',
+
+);
index 0d1d819..7f356ae 100644 (file)
@@ -3207,6 +3207,7 @@ Diğerleri varsayılan olarak gizlenecektir.
 'exif-languagecode' => 'Dil',
 'exif-iimversion' => 'IIM sürümü',
 'exif-iimcategory' => 'Kategori',
+'exif-datetimeexpires' => 'Bu tarihten sonra kullanmayın:',
 'exif-identifier' => 'Tanımlayıcı',
 'exif-lens' => 'Kullanılan objektif',
 'exif-serialnumber' => 'Kameranın seri numarası',
@@ -3731,6 +3732,8 @@ Resimler tam çözünürlükte görüntülenir, diğer dosya tipleri ilgili prog
 'compare-rev2' => 'Sürüm 2',
 'compare-submit' => 'Karşılaştır',
 'compare-invalid-title' => 'Belirttiğiniz başlık geçersiz.',
+'compare-title-not-exists' => 'Belirttiğiniz başlık mevcut değil.',
+'compare-revision-not-exists' => 'Belirttiğiniz sürüm mevcut değil.',
 
 # Database error messages
 'dberr-header' => 'Bu vikinin bir sorunu var',
@@ -3760,7 +3763,10 @@ Resimler tam çözünürlükte görüntülenir, diğer dosya tipleri ilgili prog
 # New logging system
 'logentry-delete-delete' => '$1 $3 sayfasını sildi',
 'logentry-delete-restore' => '$1 $3 sayfasını geri getirdi',
+'logentry-delete-revision' => '$1 $3: $4 sayfasında {{PLURAL:$5|bir sürümün|$5 sürümün}} görünürlüğünü değiştirdi',
 'logentry-delete-revision-legacy' => '$1 $3 sayfasındaki sürümlerin görünürlüğünü değiştirdi',
+'logentry-suppress-revision' => '$1 $3: $4 sayfasında {{PLURAL:$5|bir sürümün|$5 sürümün}} görünürlüğünü gizlice değiştirdi',
+'logentry-suppress-revision-legacy' => '$1 $3 sayfasındaki sürümlerin görünürlüğünü değiştirdi',
 'revdelete-content-hid' => 'Gizli içerik',
 'revdelete-summary-hid' => 'değişiklik özeti gizlenmiş',
 'revdelete-uname-hid' => 'kullanıcı adı gizli',
index 6a53232..669acb8 100644 (file)
@@ -140,7 +140,7 @@ $messages = array(
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Бөлүк|Бөлүктер}}',
-'category_header' => '«$1» деп бөлүкте арыннар',
+'category_header' => '«$1» деп бөлүктүң арыннары',
 'subcategories' => 'Бичии бөлүктер',
 'category-media-header' => '«$1» деп бөлүкте медиа',
 'category-empty' => "''Амгы бо бөлүкте медиа база арыннар чок.''",
@@ -190,14 +190,14 @@ $messages = array(
 'returnto' => '«$1» деп арынже эглири.',
 'tagline' => '{{SITENAME}} деп веб-сайттан',
 'help' => 'Дуза',
-'search' => 'Дилээри',
+'search' => 'Диле',
 'searchbutton' => 'Дилээри',
 'go' => 'Баары',
 'searcharticle' => 'Күүcедири',
 'history' => 'Арынның Төөгүзү',
 'history_short' => 'Төөгү',
 'printableversion' => 'Саазынга үндүрерин көөрү',
-'permalink' => 'Үргүлчү холбаа',
+'permalink' => 'Турум холбаа',
 'print' => 'Саазынга үндүрер',
 'view' => 'Көөрү',
 'edit' => 'Өскертири',
@@ -254,7 +254,7 @@ $messages = array(
 'policy-url' => 'Project:Политика',
 'portal' => 'Ниитилелдиң хаалгазы',
 'portal-url' => 'Project:Ниитилелдиң хаалгазы',
-'privacy' => 'Актыг бүзүрел дугуржулгазы',
+'privacy' => 'Актыг бүзүрел дугуржулга',
 'privacypage' => 'Project:Актыг бүзүрел дугуржулгазы',
 
 'versionrequired' => 'МедиаВикиниң $1 үндүреризи херек',
@@ -338,6 +338,7 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'notloggedin' => 'Кирбес',
 'nologinlink' => 'Бүрүткел бижикти бүдүрери',
 'createaccount' => 'Бүрүткел бижикти бүдүрери',
+'gotaccount' => "Силер бүрүтекнип алдыңар де? '''$1'''.",
 'gotaccountlink' => 'Кирер',
 'createaccountmail' => 'Э-чагаадан',
 'createaccountreason' => 'Чылдагаан:',
@@ -393,8 +394,8 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'link_tip' => 'Иштики холбаа',
 'extlink_sample' => 'http://www.example.com холбааның ады',
 'extlink_tip' => 'Даштыкы холбаа ("http://" чүве сактып алыр)',
-'headline_sample' => 'Ð\91аÑ\88 Ð°Ð´Ñ\8bÒ£ сөзүглели',
-'headline_tip' => '2-ги Ð´ÐµÒ£Ð½ÐµÐ»Ð´Ð¸Ð³ Ð±Ð°Ñ\88 ады',
+'headline_sample' => 'Ð\9aÑ\8bÑ\80Ñ\8bкÑ\8b сөзүглели',
+'headline_tip' => '2-ги Ð´ÐµÒ£Ð½ÐµÐ»Ð´Ð¸Ð³ ÐºÑ\8bÑ\80Ñ\8bкÑ\8b ады',
 'nowiki_sample' => 'Форматтаваан сөзүглелини бээр салыры',
 'nowiki_tip' => 'Вики форматтаарын херекке албас',
 'image_sample' => 'Чижек.jpg',
@@ -423,7 +424,8 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 The password for this new account can be changed on the ''[[Special:ChangePassword|change password]]'' page upon logging in.",
 'newarticle' => '(Чаа)',
 'note' => "'''Тайылбыр:'''",
-'previewnote' => "'''Бо чүгле шенеп көөрү-дүр, бижик ам-даа шыгжатынмаан'''",
+'previewnote' => "'''Бо чүгле шенеп көөрү-дүр.'''
+ Бижик ам-даа шыгжатынмаан! [[#editform|→ Continue editing]]",
 'editing' => '«$1» деп арынны өскертип турар',
 'editingsection' => '«$1» деп арынның салбырын өскертип турар',
 'editingcomment' => '«$1» деп арынны өскертип турар (чаа салбыр)',
@@ -521,6 +523,7 @@ The deletion and move log for the page are provided below for reference.',
 'searcheverything-enable' => 'Шупту аттар делгемнеринден дилээри',
 'searchrelated' => 'холбаалыг',
 'searchall' => 'шупту',
+'search-nonefound' => 'Айыткан негелдениң түңнели чок',
 'powersearch' => 'Advanced search',
 'powersearch-ns' => 'Аттар делгемнеринден дилээри:',
 'powersearch-toggleall' => 'Шупту',
@@ -639,8 +642,8 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'nchanges' => '$1 {{PLURAL:$1|өскерлиишкин}}',
 'recentchanges' => 'Амгы өскерлиишкиннер',
 'recentchanges-legend' => 'Амгы өскерлиишкиннерниң эдиглери',
-'recentchangestext' => 'Бо арында викии эң амгы өскерлиишкиннерни соондан көөрү.',
-'recentchanges-feed-description' => ' Бо агымда викии эң амгы өскерлиишкиннерни соондан көөрү.',
+'recentchangestext' => 'Бо агымда викиниң сөөлгү өскерлиишкиннерин көөрү.',
+'recentchanges-feed-description' => 'Бо агымда викиниң сөөлгү өскерлиишкиннерин көөрү.',
 'recentchanges-label-newpage' => 'Бо өскерлиишкин чаа арынны чогааткан.',
 'recentchanges-label-minor' => 'Бо өскерлиишкин бичии-дир',
 'recentchanges-label-unpatrolled' => 'Бо өскерлиишкин истенмейн каан',
@@ -690,6 +693,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 # HTTP errors
 'http-read-error' => 'HTTP-биле номчуур алдаг.',
 
+'license' => 'Хоойлужудары:',
 'license-header' => 'Хоойлужудары',
 
 # Special:ListFiles
@@ -1001,13 +1005,15 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Силерниң ажыглакчы арыныңнар',
 'tooltip-pt-mytalk' => 'Силерниң чугаалажыр арыныңар',
-'tooltip-pt-preferences' => 'Силерниң шилилгелери',
+'tooltip-pt-preferences' => 'Силерниң шилилгеңер',
 'tooltip-pt-mycontris' => 'Силерниң немелделериңерның даңзызы',
+'tooltip-pt-login' => 'Маңаа системаже киир бүрүткенип болур, ынчалза-даа ол албан эвес.',
 'tooltip-pt-logout' => 'Үнери',
 'tooltip-ca-talk' => 'Бо арын дугайында чыгаалажыры',
 'tooltip-ca-edit' => 'Силер бо арынны өскертип болур. Шыгжаар мурунда чижеглеп көрем.',
+'tooltip-ca-addsection' => 'Чаа салбыр чаяар',
 'tooltip-ca-viewsource' => 'Бо арын камгалаттырган.
-Дөзү кодунуу көп болуңар.',
+Дөзү кодун көрүп болур силер.',
 'tooltip-ca-history' => 'Арынның мурнуку өскерлиишкиннери',
 'tooltip-ca-protect' => 'Бо арынны камгалаары',
 'tooltip-ca-delete' => 'Бо арынны ырадыры',
@@ -1019,10 +1025,12 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'tooltip-p-logo' => 'Кол Арын',
 'tooltip-n-mainpage' => 'Кол Арынны баары',
 'tooltip-n-mainpage-description' => 'Кол Арынче кирери',
-'tooltip-n-portal' => 'Төлевилел дыгайында, силер канчап болур, силер кайдан чүвелер дугайында билип кааптар',
+'tooltip-n-portal' => 'Төлевилел дыгайында, чүнү кылып болур силер, кайда чүү чыдарыл',
+'tooltip-n-currentevents' => 'Ам болуп турар таварылгалар даңзызы',
 'tooltip-n-recentchanges' => 'Викиниң энир өскерлиишкиннери',
 'tooltip-n-randompage' => 'Душ арынны көөрү',
 'tooltip-n-help' => 'Төлевилелдиң тайылбыры «{{SITENAME}}»',
+'tooltip-t-recentchangeslinked' => 'Бо арындан шөлүткен өске арыннарның сөөлгү өскерлиишкиннери',
 'tooltip-feed-rss' => 'Бо арының РСС медээ агымы',
 'tooltip-feed-atom' => 'Бо арының Атом медээ агымы',
 'tooltip-t-contributions' => 'Бо ажыглакчының немелделериниң даңзазын көөрү.',
@@ -1030,6 +1038,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'tooltip-t-upload' => 'Файлдарны киирери',
 'tooltip-t-specialpages' => 'Шупту тускай арыннар даңзызы',
 'tooltip-t-print' => 'Бо арынның парлаттынар хевири',
+'tooltip-t-permalink' => 'Арынның бо янзы-хевириниң турум шөлүлгези',
 'tooltip-ca-nstab-main' => 'Допчы арынын көөрү',
 'tooltip-ca-nstab-user' => 'Ажыглакчының арынын көөрү',
 'tooltip-ca-nstab-media' => 'Медиа арынын көөрү',
@@ -1041,6 +1050,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'tooltip-save' => 'Силерниң өскерлиишкиннериңерни шыгжаары',
 'tooltip-preview' => 'Шыгжаар мурнунда силерниң өскерлиишкиннерин чижеглеп көрем!',
 'tooltip-watch' => 'Силерниң хайгаарал даңзызынга бо арынны немерелээри',
+'tooltip-rollback' => 'Сөөлгү киржикчиниң өскерилгелерин чаңгыс баскаш, ойталаар',
 'tooltip-summary' => 'Кысказы-биле бижиңер',
 
 # Attribution
index 9c765f9..e4ffdb9 100644 (file)
@@ -1799,6 +1799,7 @@ $1',
 'backend-fail-contenttype' => 'Не вдалося визначити тип вмісту файла, щоб зберегти його в "$1".',
 'backend-fail-batchsize' => 'Серверна частина отримала блок із $1 {{PLURAL:$1|файлової операції|файлових операцій}}; обмеження складає $2 {{PLURAL:$2|файлову операцію|файлові операції|файлових операцій}}.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Не вдалося підключитися до бази даних журналу для сховища «$1».',
 'filejournal-fail-dbquery' => 'Не вдалося оновити базу даних журналу для сховища «$1».',
 
index a56f941..1ab293b 100644 (file)
@@ -457,6 +457,8 @@ Mugoi tegend toižetab interfeisan irdnägu toižiden kävutajiden täht.
 Kändmižen täht om paremb kävutada [//translatewiki.net/wiki/Main_Page?setlang=vep translatewiki.net] - MediaWikin lokalizacijan projekt.",
 'sqlhidden' => '(SQL-küzelend om peittud)',
 'namespaceprotected' => "Teil ei ole oiktust redaktiruida lehtpolid '''$1'''-nimiavaruses.",
+'customcssprotected' => 'Teil ei ole oiktust redaktiruida nece CSS-lehtpol’, sikš sil oma toižen ühtnijan personaližed järgendused.',
+'customjsprotected' => 'Teil ei ole oiktust redaktiruida nece JavaScript-lehtpol’, sikš sil oma toižen ühtnijan personaližed järgendused.',
 'ns-specialprotected' => 'Ei sa redaktiruida specialižid lehtpolid.',
 'titleprotected' => '[[User:$1|$1]]-kävutai om kel\'nu mugoižen lehtpolen pälkirjutesen kävutamižen.
 Sü om "\'\'$2\'\'".',
@@ -537,6 +539,7 @@ Wiki-likutimen počtfunkcijad ei olgoi kävutamas.',
 'noemailprefs' => 'Kirjutagat e-počtan adres teiden järgendusihe, miše se oliži kävutamas.',
 'emailconfirmlink' => 'Vahvištoitkat teiden e-počtan adres',
 'invalidemailaddress' => 'Ningomal e-počtan adresal om vär format. Olgat hüväd, kirjutagat e-počtan adres oiktas formatas vai puhtastagat e-počtan pöud.',
+'emaildisabled' => 'Nece sait ei voi oigeta e-počtad.',
 'accountcreated' => 'Registracii om OK',
 'accountcreatedtext' => 'Registracii $1-kävutajan täht om sätud.',
 'createaccount-title' => '{{SITENAME}}: registracijan sädand.',
@@ -570,6 +573,7 @@ Voib olda, tö olet jo toižetanuded peitsanan vai pakinuded uden peitsanan.',
 
 # Special:PasswordReset
 'passwordreset' => 'Peitsanan alustuz',
+'passwordreset-legend' => 'Peitsanan alustuz',
 'passwordreset-username' => 'Kävutajan nimi:',
 'passwordreset-domain' => 'Domen',
 'passwordreset-capture' => 'Ozutada-k loptud kirjeine?',
@@ -684,7 +688,8 @@ Alemba om anttud jälgmäine kirjutuz blokiruindaiglehtesespäi:",
 '''Se ei ole völ kirjutadud muštho!'''",
 'updated' => '(Udištadud)',
 'note' => "'''Homaičend:'''",
-'previewnote' => "'''Muštkat, miše nece om vaiše ezikacund. Teiden toižetused ei olgoi völ kirjutadud!'''",
+'previewnote' => "'''Muštkat, miše nece om vaiše ezikacund.''' 
+Teiden toižetused ei olgoi völ kirjutadud! [[#editform|→ jatkta redakrtiruind]]",
 'previewconflict' => "Tekst redaktiruindan üläiknas kuvazub neche ezikacundha muga, kut se nägub lopkirjutamižen jäl'ghe.",
 'editing' => '$1-lehtpolen redaktiruind',
 'editingsection' => '$1-lehtpolen redaktiruind (jaguz)',
@@ -707,7 +712,7 @@ Ku tö et tahtkoi, miše teiden tekstad levitaižiba da redaktiruižiba miččed
 Tö vahvištoitat mugažo, miše olet toižetusiden avtoran vai olet kopiruinuded tekstad joudjas purtkespäi.
 
 '''ALGAT SIJAKOI LASKMATA AVTORANOIKTUSEL KAITUD MATERIALOID!'''",
-'longpageerror' => "'''Petuz: Teiden tekstan suruz om $1 kb, a lasktud maksimum om $2 kb.'''
+'longpageerror' => "'''Petuz: Teiden tekstan suruz om {{PLURAL:$1|üks' kilobait|$1 kilobaitad}}, a lasktud maksimum om {{PLURAL:$2|üks' kilobait|$2 kilobaitad}}.'''
 Ei voi kirjutada muštho.",
 'protectedpagewarning' => "'''VARUTUZ: nece lehtpol' om luklostadud, sidä voidas redaktiruida vaiše administratorad.'''
 Alemba om anttud jäl'gmäine aiglehtesen kirjutez:",
@@ -1216,7 +1221,7 @@ Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.'
 'action-delete' => "čuta poiš nece lehtpol'",
 'action-deleterevision' => 'čuta poiš nece lehtpolen versii',
 'action-deletedhistory' => 'lugeda necen lehtpolen čutud istorijad',
-'action-browsearchive' => 'ectä čutud lehtpolid',
+'action-browsearchive' => 'ectä čutud lehtpoled',
 'action-undelete' => 'endištada nece lehtez',
 'action-suppressrevision' => 'lugeda da endištada nece lehtpolen peitversii',
 'action-suppressionlog' => 'lugeda necidä privatišt aigkirjad',
@@ -1267,6 +1272,7 @@ Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.'
 'newsectionsummary' => "/* $1 */ uz' jaguz",
 'rc-enhanced-expand' => 'Ozutada detalid (JavaScript)',
 'rc-enhanced-hide' => 'Peitta detalid',
+'rc-old-title' => 'Om sätud ezmässai kut "$1"',
 
 # Recent changes linked
 'recentchangeslinked' => 'Sidotud toižetused',
@@ -1306,6 +1312,7 @@ Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.'
 'ignorewarning' => 'Ignoriruida varutuz i kirjutada fail muštho',
 'ignorewarnings' => 'Ignoriruida kaik varutused',
 'minlength1' => "Failan nimehe pidab jätta hot' üks' kirjam.",
+'filename-toolong' => 'Ei sa tehta failannimid surembid mi 240 baitad.',
 'badfilename' => 'Failan nimi om vajehtud, sen uz\' nimi om "$1".',
 'filetype-badmime' => 'Ei sa jügutoitta "$1"-MIME-tipan failoid.',
 'filetype-unwanted-type' => "'''\".\$1\"''' om nevomatoi failan tip.
@@ -1328,6 +1335,7 @@ Lasktud {{PLURAL:$3|failantip om|failantipad oma}} $2.',
 'emptyfile' => "Teil jügutoittud fail nägub pal'haks.
 Voib olda, necen sü om vär failannimen kirjutamine.
 Olgat hüväd, kodvgat, todeks-ik tö tahtoit jügutoitta nece fail.",
+'windows-nonascii-filename' => 'Neche vikihe ei sa tehta failannimid specialižiden znamoidenke.',
 'fileexists' => "Fail mugoman nimenke om jo olmas, olgat hüväd, kodvgat '''<tt>[[:$1]]</tt>''' ku teil ei ole varmdust, tahtoižit-ik tö toižetada sidä.
 [[$1|thumb]]",
 'file-exists-duplicate' => 'Nece fail om {{PLURAL:$1|necen failan|neniden failoiden}} dublikat:',
@@ -1346,6 +1354,7 @@ Olgat hüväd, kodvgat, todeks-ik tö tahtoit jügutoitta nece fail.",
 'destfilename' => 'Failan metnimi:',
 'upload-maxfilesize' => 'Failan maksimaline suruz: $1',
 'upload-description' => 'failan ümbrikirjutand',
+'upload-options' => 'Jügetoitandan opcijad',
 'watchthisupload' => 'Kacelta necidä failad',
 'upload-success-subj' => 'Jügutoitand lopihe satusekahas',
 'upload-failure-subj' => 'Jügutoitandan problem',
@@ -1365,9 +1374,17 @@ Ku problem jäb jäl'ghepäi-ki, säkat pagin [[Special:ListUsers/sysop|sistemad
 # File backend
 'backend-fail-backup' => 'Ei voi tehta $1-failan rezervkopijad.',
 'backend-fail-notexists' => 'Ei ole mugošt failad: "$1".',
+'backend-fail-alreadyexists' => '$1-fail om jo olmas.',
 'backend-fail-copy' => 'Ei voi kopiruida "$1"-failad "$2"-tahoze.',
 'backend-fail-move' => 'Ei voi sirta "$1"-failad "$2"-tahoze.',
+'backend-fail-opentemp' => 'Ei voi avaita pordaigašt failad.',
+'backend-fail-writetemp' => 'Ei voi toižetada pordaigašt failad.',
+'backend-fail-closetemp' => 'Ei voi saubata pordaigašt failad.',
 'backend-fail-read' => 'Ei voi lugeda "$1"-failad.',
+'backend-fail-create' => 'Ei voi säta "$1"-failad.',
+
+# ZipDirectoryReader
+'zip-wrong-format' => 'Valitud fail ei ole ZIP-fail.',
 
 # Special:UploadStash
 'uploadstash' => 'Peittud jügedoitand',
@@ -1568,6 +1585,7 @@ Informacijad sen [$2 andmusiden lehtpolelpäi] om anttud alemba.',
 'mostimages' => 'Failad, kudambid kävutadas paksumba',
 'mostrevisions' => 'Lehtpoled, kudambid redaktiruidas paksumba',
 'prefixindex' => 'Kaik lehtpoled prefiksoidenke',
+'prefixindex-namespace' => 'Kaik lehtpoled prefiksanke (nimiavaruz $1)',
 'shortpages' => 'Lühüdad lehtpoled',
 'longpages' => "Pit'käd lehtpoled",
 'deadendpages' => 'Lehtpoled, kudambid ei kosketagoi toižed lehtpoled',
@@ -1632,6 +1650,7 @@ Olgat hüväd, otkat sil'mnägubale, miše toižed-ki saitad voidas kosketada fa
 'allpagessubmit' => 'Tehta',
 'allpagesprefix' => 'Ozutada lehtpoled prefiksoidenke:',
 'allpages-bad-ns' => '{{SITENAME}}-saital ei ole "$1"-nimiavarust.',
+'allpages-hide-redirects' => 'Peitta läbikosketused',
 
 # Special:Categories
 'categories' => 'Kategorijad',
@@ -1721,6 +1740,7 @@ Kc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].',
 'nowatchlist' => "Teiden kaclendnimikirjutez om pall'az.",
 'watchlistanontext' => 'Olgat hüväd, $1, miše lugeda vai redaktiruida teiden kaclendnimikirjutez.',
 'watchnologin' => 'Pidab kirjutadas sistemha',
+'addwatch' => 'Ližata kaclendnimikirjuteshe',
 'addedwatchtext' => '"[[:$1]]"-lehtpol\' om ližadud teiden [[Special:Watchlist|kaclendnimikirjuteshe]]. Necen lehtpolen (i sidotud lehtpoliden) tulebiš toižetusiš voiškandeb tedištada neciš nimikirjutesespäi; necen polhe kirjutaškatas mugažo [[Special:RecentChanges|uziden toižetusiden lehtpolel]] lihavoitud kirjamil, miše oliži kebnemb homaita.',
 'removedwatchtext' => '"[[:$1]]"-lehtpol\' om heittud [[Special:Watchlist|teiden kaclendnimikirjutesespäi]].',
 'watch' => 'Pida sil’miš',
@@ -1847,6 +1867,7 @@ Kc. [[Special:ProtectedPages|kaitud nügüd' lehtpoliden nimikirjutez]].",
 'movedarticleprotection' => 'Kaičendan järgendused oma sirtud "[[$2]]"-lehtpolespäi "[[$1]]"-lehtpol\'he.',
 'protect-title' => '"$1"-lehtpolen kaičendpindan toižetuz',
 'prot_1movedto2' => '[[$1]] om nimitadud [[$2]]-nimel',
+'protect-badnamespace-title' => 'Kaičematoi nimiavaruz',
 'protect-legend' => 'Vahvištoitkat kaičendan augotiž',
 'protectcomment' => 'Sü:',
 'protectexpiry' => 'lopstrok:',
@@ -1924,7 +1945,8 @@ Voib olda, ken-se om jo endištanu necen lehtpolen ende.',
 
 Kc. [[Special:Log/delete|čudandoiden aigkirj]], miše tedištada tantoižiš čudandoiš da endištandoiš.",
 'undelete-header' => 'Kc. [[Special:Log/delete|čudendoiden aigkirj]], miše tedištada tantoi čudud lehtpoliš.',
-'undelete-search-box' => 'Ectä čutud lehtpolid',
+'undelete-search-title' => 'Ectä čutud lehtpoled',
+'undelete-search-box' => 'Ectä čutud lehtpoled',
 'undelete-search-prefix' => 'Ozutada lehtpoled, kudambad augotase mugomal tekstal:',
 'undelete-search-submit' => 'Ectä',
 'undelete-cleanup-error' => 'Kävutamatoman "$1"-arhivfailan čudandan petuz.',
@@ -1986,6 +2008,7 @@ Alemba om anttud jälgmäine kirjutuz blokiruindaiglehtesespäi:",
 
 # Block/unblock
 'block' => 'Kävutajan blokiruind',
+'unblock' => 'Heitta blokiruind ühtnijalpäi',
 'blockip' => 'Blokiruida kävutajad',
 'blockip-title' => 'Blokiruida kävutajad',
 'blockip-legend' => 'Blokiruida kävutajad',
@@ -2015,6 +2038,7 @@ Kirjutagat sü alemba (ozutesikš, citiruigat vandaliziruidud lehtpoled).',
 'ipbhidename' => 'Peitta kävutajan nimi redakcijoišpäi da nimikirjutesišpäi',
 'ipbwatchuser' => "Kacelta necen kävutajan personališt lehtpol't da lodulehtpol't",
 'ipb-change-block' => 'Blokirujda kävutajad udes neniden järgendusidenke',
+'ipb-confirm' => 'Vahvištada blokiruind',
 'badipaddress' => 'Vär IP-adres',
 'blockipsuccesssub' => 'Blokiruind om tehtud',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] om blokiruidud.<br />
@@ -2032,6 +2056,7 @@ Kc. [[Special:BlockList|blokiruidud IP-adresoiden nimikirjuteshe]].',
 'blocklist' => 'Blokiruidud kävutajad',
 'ipblocklist' => 'Blokiruidud kävutajad',
 'ipblocklist-legend' => 'Löuta blokiruidud kävutajad',
+'blocklist-tempblocks' => 'Peitta pordaigaižed blokiruindad',
 'blocklist-timestamp' => 'Dat, aig',
 'blocklist-target' => 'Met',
 'blocklist-expiry' => 'Lopiše',
@@ -2171,6 +2196,7 @@ Nenil statjoil tegese sirta vai ühtenzoitta lehtpoled ičeksaz.",
 
 # Export
 'export' => 'Lehtpoliden eksport',
+'exportall' => 'Eksportiruida kaik lehtpoled',
 'exportcuronly' => 'Mülütada vaiše nügüdläine versii täudeta istorijata',
 'export-submit' => 'Eksport',
 'export-addcattext' => 'Kaiked lehtesed kategorijaspäi:',
@@ -2249,7 +2275,7 @@ Ei ole pordaigašt failhodrad.',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScriptan kodvmine',
-'javascripttest-disabled' => 'Nece funkcii ei ole kävutamas.',
+'javascripttest-disabled' => 'Nece funkcii ei ole kävutamas neciš vikiš.',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => "Teiden kävutajan lehtpol'",
@@ -2423,6 +2449,7 @@ $1',
 'seconds-abbrev' => '$1s',
 'minutes-abbrev' => '$1m',
 'hours-abbrev' => '$1č',
+'ago' => '$1 tagaz',
 
 # Bad image list
 'bad_image_list' => "Formatale pidab olda mugoman:
@@ -2575,9 +2602,12 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdl
 'exif-gpsdatestamp' => 'GPS-dat',
 'exif-gpsdifferential' => 'GPS-differencialine kohenduz',
 'exif-keywords' => 'Avadimsanad',
+'exif-worldregiondest' => "Ozutadud mail'man region",
 'exif-countrydest' => 'Ozutadud ma',
+'exif-provinceorstatedest' => 'Ozutadud provincii',
 'exif-citydest' => 'Ozutadud lidn',
 'exif-objectname' => 'Lühüd nimi',
+'exif-specialinstructions' => 'Specialižed instrukcijad',
 'exif-headline' => 'Pälkirjutez',
 'exif-source' => 'Purde',
 'exif-contact' => 'Kontaktinformacii',
@@ -2742,6 +2772,7 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdl
 'exif-gpsdop-good' => 'Hüvä ($1)',
 
 'exif-objectcycle-a' => 'Vaiše homendesel',
+'exif-objectcycle-p' => 'Vaiše ehtal',
 
 # Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
 'exif-gpsdirection-t' => 'Todesine oigendamine',
index 803ed1c..64aa47b 100644 (file)
@@ -674,9 +674,9 @@ $2',
 'ns-specialprotected' => 'Không thể sửa chữa các trang trong không gian tên {{ns:special}}.',
 'titleprotected' => "Tựa đề này đã bị [[User:$1|$1]] khóa không cho tạo ra.
 Lý do được cung cấp là ''$2''.",
-'filereadonlyerror' => "Không thể sửa đổi tập tin “$1” vì kho tập tin “$2” đang ở chế độ chỉ-đọc.
+'filereadonlyerror' => 'Không thể sửa đổi tập tin “$1” vì kho tập tin “$2” đang ở chế độ chỉ-đọc.
 
-Lý do đưa ra là: “''$3''”.",
+Bảo quản viên khóa nó đưa lý do là: “$3”.',
 
 # Virus scanner
 'virus-badscanner' => "Cấu hình sau: không nhận ra bộ quét virus: ''$1''",
@@ -1038,6 +1038,7 @@ Dường như trang này đã bị xóa.',
 'edit-no-change' => 'Sửa đổi của bạn không được tính đến, vì nó không làm thay đổi nội dung.',
 'edit-already-exists' => 'Không thể tạo trang mới.
 Nó đã tồn tại.',
+'defaultmessagetext' => 'Nội dung mặc định',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Cảnh báo: Trang này có quá nhiều lần gọi hàm cú pháp cần mức độ xử lý cao.
@@ -1803,6 +1804,7 @@ Nếu vẫn còn bị lỗi, xin hãy liên hệ với một [[Special:ListUsers
 'backend-fail-contenttype' => 'Không thể xác định kiểu nội dung của tập tin để lưu giữ tại “$1”.',
 'backend-fail-batchsize' => 'Phía sau lưu trữ đã nhận một loạt $1 thao tác tập tin; mức hạn là $2 thao tác.',
 
+# File journal errors
 'filejournal-fail-dbconnect' => 'Không thể kết nối với cơ sở dữ liệu nhật ký của phía sau lưu trữ “$1”.',
 'filejournal-fail-dbquery' => 'Không thể cập nhật cơ sở dữ liệu nhật ký của phía sau lưu trữ “$1”.',
 
index e70edd4..dce62a5 100644 (file)
@@ -139,7 +139,7 @@ $messages = array(
 'tog-enotifminoredits' => 'Sedön obe penedi leäktronik igo pö padavotükams pülik',
 'tog-enotifrevealaddr' => 'Jonön ladeti leäktronik oba in nunapeneds.',
 'tog-shownumberswatching' => 'Jonön numi gebanas galädöl',
-'tog-oldsig' => 'Büologed dispenäda dabinöl:',
+'tog-oldsig' => 'Dispenäd dabinöl:',
 'tog-fancysig' => 'Dispenäd balugik (nen yüms lü gebanapad)',
 'tog-externaleditor' => 'Gebön nomiko redakömi plödik (te pro jäfüdisevans; paramets patik paneodons su nünöm olik)',
 'tog-externaldiff' => 'Gebön nomiko difi plödik (te pro jäfüdisevans; paramets patik paneodons su nünöm olik)',
@@ -999,7 +999,7 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'savedprefs' => 'Buükams olik pedakipons.',
 'timezonelegend' => 'Timatopäd:',
 'localtime' => 'Tim topik:',
-'timezoneuseserverdefault' => 'Gebön parametemi kösömik dünanünöma',
+'timezoneuseserverdefault' => 'Gebön parametemi kösömik vüka ($1)',
 'timezoneuseoffset' => 'Votik (nunolös difi)',
 'timezoneoffset' => 'Näedot¹:',
 'servertime' => 'Tim dünanünöma:',
@@ -1307,6 +1307,7 @@ If nog vilol lopükön ragivi olik, geikolös e gebolös nemi votik. [[File:$1|t
 'sourcefilename' => 'Ragivanem rigik:',
 'destfilename' => 'Ragivanem nulik:',
 'upload-maxfilesize' => 'Ragivagretot gretikün: $1',
+'upload-description' => 'Ragivabepenam',
 'watchthisupload' => 'Galädolöd ragivi at',
 'filewasdeleted' => 'Ragiv labü nem at büo pelöpükon e poso pemoükon. Kontrololös eli $1 büä olöpükol oni dönu.',
 'filename-bad-prefix' => "Nem ragiva fa ol palöpüköl primon me '''\"\$1\"''': nem no bepenöl nomiko pagevöl itjäfidiko fa käms nulädik. Välolös, begö! nemi bepenöl pro ragiv olik.",
@@ -1457,7 +1458,7 @@ Primanünods: ninädasot/donasot, a.s. <tt>image/jpeg</tt>.',
 'statistics-users-active-desc' => 'Gebans, kels edunons bosi ün {{PLURAL:$1|del lätik|dels lätik $1}}',
 'statistics-mostpopular' => 'Pads suvüno palogöls:',
 
-'disambiguations' => 'Telplänovapads',
+'disambiguations' => 'Pads lü telplänovapads yümöls',
 'disambiguationspage' => 'Template:Telplänov',
 'disambiguations-text' => "Pads sököl payümons ad '''telplanövapad'''.
 Sötons plao payümon lü yeged pötik.<br />
@@ -1525,7 +1526,7 @@ Pad palelogon telplänovapad if gebon samafomoti, lü kel payümon pad [[MediaWi
 'listusers' => 'Gebanalised',
 'listusers-editsonly' => 'Jonön te gebanis keblünöl',
 'usereditcount' => '{{PLURAL:$1|redakam|redakams}} $1',
-'usercreated' => 'Pejafon tü $1 tü $2',
+'usercreated' => '{{GENDER:$3|Pejafon}} tü $1 $2',
 'newpages' => 'Pads nulik',
 'newpages-username' => 'Gebananem:',
 'ancientpages' => 'Pads bäldikün',
@@ -1550,7 +1551,7 @@ Pad palelogon telplänovapad if gebon samafomoti, lü kel payümon pad [[MediaWi
 
 # Special:Log
 'specialloguserlabel' => 'Geban:',
-'speciallogtitlelabel' => 'Tiäd:',
+'speciallogtitlelabel' => 'Lükömöp (tiäd u geban):',
 'log' => 'Jenotaliseds',
 'all-logs-page' => 'Jenotaliseds valik',
 'alllogstext' => 'Kobojonam jenotalisedas gebidik valik in {{SITENAME}}.
@@ -1574,6 +1575,7 @@ Ad brefükam lisedi, kanol välön lisedasoti, gebananemi, u padi tefik.',
 'allpagesprefix' => 'Jonolöd padis labü foyümot:',
 'allpagesbadtitle' => 'Tiäd pegivöl no lonöfon, u ba labon foyümoti vüpükik u vü-vükik. Mögos i, das labon tonatis u malülis no pedälölis ad penön tiädis.',
 'allpages-bad-ns' => '{{SITENAME}} no labon nemaspadi: "$1".',
+'allpages-hide-redirects' => 'Klänädön lüodükömis',
 
 # Special:Categories
 'categories' => 'Klads',
@@ -2306,7 +2308,7 @@ Pad luveratiko ninädon yümi lü bevüresodatopäd plödik in blägalised.',
 'markaspatrolleddiff' => 'Zepön',
 'markaspatrolledtext' => 'Zepön padi at',
 'markedaspatrolled' => 'Pezepon',
-'markedaspatrolledtext' => 'Fomam pevälöl pezepon.',
+'markedaspatrolledtext' => 'Fomam pevälöl ela "[[:$1]]" pezepon.',
 'rcpatroldisabled' => 'Patrul Votükamas Nulik penegebidükon',
 'rcpatroldisabledtext' => 'Patrul Votükamas Nulik binon anu negebidik.',
 'markedaspatrollederror' => 'No kanon pezepön',
index 055db44..99b6f0e 100644 (file)
@@ -612,7 +612,7 @@ $1',
 'badtitle' => '错误的标题',
 'badtitletext' => '所请求页面的标题是无效的、不存在,跨语言或跨wiki链接的标题错误。它可能包含一个或更多的不能用于标题的字符。',
 'perfcached' => '下列数据已缓存,但可能已过时。最高{{PLURAL:$1|一个结果|$1个结果}}在缓存中可用。',
-'perfcachedts' => '下列数据已缓存,它们最后更新在$1。最高{{PLURAL:$4|一个结果|$4个结果}}在缓存中可用。 A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcachedts' => '下列数据已缓存,最后更新于$1。缓存中最多可有{{PLURAL:$4|1个结果|$4个结果}}。',
 'querypage-no-updates' => '当前禁止对此页面进行更新。此处的数据将不能被立即刷新。',
 'wrong_wfQuery_params' => '错误的参数被传递到 wfQuery()<br />
 函数:$1<br />
@@ -716,6 +716,7 @@ $2',
 'emailconfirmlink' => '确认您的邮箱地址',
 'invalidemailaddress' => '邮箱地址格式不正确,请输入正确的邮箱地址或清空该输入框。',
 'cannotchangeemail' => '本wiki不允许对账户的电子邮件地址进行更改。',
+'emaildisabled' => '此站点不能发送电子邮件。',
 'accountcreated' => '已建立账户',
 'accountcreatedtext' => '$1的账户已经被创建。',
 'createaccount-title' => '在{{SITENAME}}中创建新账户',
@@ -898,6 +899,7 @@ $2
 这种情况通常出现于使用含有很多臭虫、以网络为主的匿名代理服务的时候。",
 'edit_form_incomplete' => "'''编辑表单的某些部分没有到达服务器 ;请检查您的编辑内容是否完整并再试一次。'''",
 'editing' => '编辑“$1”',
+'creating' => '创建 $1',
 'editingsection' => '编辑“$1”(段落)',
 'editingcomment' => '编辑“$1”(新段落)',
 'editconflict' => '编辑冲突:$1',
@@ -958,6 +960,7 @@ $2
 'edit-no-change' => '您的编辑已经略过,因为文字无任何改动。',
 'edit-already-exists' => '不可以建立一个新页面。
 它已经存在。',
+'defaultmessagetext' => '默认消息文本',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => '警告:这个页面有太多高昂的语法功能调用。
@@ -1680,6 +1683,10 @@ $1',
 'backend-fail-contenttype' => '无法判断文件的内容类型来储存于“$1”。',
 'backend-fail-batchsize' => '存储后端被给予了一批$1个文件{{PLURAL:$1|操作|操作}};限值为$2个{{PLURAL:$2|操作|操作}}。',
 
+# File journal errors
+'filejournal-fail-dbconnect' => '无法连接到后端存储的日志数据库“$1”。',
+'filejournal-fail-dbquery' => '无法更新后端存储的日志数据库“$1”。',
+
 # Lock manager
 'lockmanager-notlocked' => '无法解锁“$1”;它没有被锁定。',
 'lockmanager-fail-closelock' => '无法关闭“$1”的锁文件。',
@@ -2001,6 +2008,7 @@ $1',
 'allpagesprefix' => '显示具有此前缀(名字空间)的页面:',
 'allpagesbadtitle' => '给定的页面标题是非法的,或者具有一个内部语言或内部 wiki 的前缀。它可能包含一个或更多的不能用于标题的字符。',
 'allpages-bad-ns' => '在{{SITENAME}}中没有一个叫做"$1"的名字空间。',
+'allpages-hide-redirects' => '隐藏重定向页',
 
 # Special:Categories
 'categories' => '分类',
index fda12f9..5d76cdf 100644 (file)
@@ -101,7 +101,10 @@ abstract class Maintenance {
        // Generic options which might or not be supported by the script
        private $mDependantParameters = array();
 
-       // Used by getDD() / setDB()
+       /**
+        * Used by getDD() / setDB()
+        * @var DatabaseBase
+        */
        private $mDb = null;
 
        /**
index 8c2f6b9..114297c 100644 (file)
@@ -18,5 +18,5 @@ CREATE TABLE /*_*/filejournal (
   fj_timestamp varbinary(14) NOT NULL default ''
 );
 
-CREATE INDEX /*i*/fj_batch_id ON /*_*/filejournal (fj_batch_uuid,fj_id);
+CREATE INDEX /*i*/fj_batch_id ON /*_*/filejournal (fj_batch_uuid);
 CREATE INDEX /*i*/fj_timestamp ON /*_*/filejournal (fj_timestamp);
index 3c74403..4984495 100644 (file)
@@ -3757,6 +3757,7 @@ XHTML id names.",
        'zip'                 => 'ZipDirectoryReader',
        'upload-errors'       => '',
        'filebackend-errors'  => 'File backend',
+       'filejournal-errors'  => 'File journal errors',
        'lockmanager-errors'  => 'Lock manager',
        'uploadstash'         => 'Special:UploadStash',
        'img-auth'            => 'img_auth script messages',
index b5a911a..8669fe3 100644 (file)
@@ -26,7 +26,8 @@
 define( 'MW_NO_EXTENSION_MESSAGES', 1 );
 
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
-
+$maintClass = 'MergeMessageFileList';
+$mmfl = false;
 class MergeMessageFileList extends Maintenance {
 
        function __construct() {
@@ -38,6 +39,8 @@ class MergeMessageFileList extends Maintenance {
        }
 
        public function execute() {
+               global $mmfl;
+
                $lines = file( $this->getOption( 'list-file' ) );
                if ( $lines === false ) {
                        $this->error( 'Unable to open list file.' );
@@ -46,43 +49,42 @@ class MergeMessageFileList extends Maintenance {
                if ( $this->hasOption( 'output' ) ) {
                        $mmfl['output'] = $this->getOption( 'output' );
                }
+       }
+}
 
-               global $IP, $wgExtensionMessagesFiles;
-               foreach ( $mmfl['setupFiles'] as $fileName ) {
-                       if ( strval( $fileName ) === '' ) {
-                               continue;
-                       }
-                       $fileName = str_replace( '$IP', $IP, $fileName );
-                       fwrite( STDERR, "Loading data from $fileName\n" );
-                       include_once( $fileName );
-               }
-               fwrite( STDERR, "\n" );
-               $s =
-                       "<" . "?php\n" .
-                       "## This file is generated by mergeMessageFileList.php. Do not edit it directly.\n\n" .
-                       "if ( defined( 'MW_NO_EXTENSION_MESSAGES' ) ) return;\n\n" .
-                       '$wgExtensionMessagesFiles = ' . var_export( $wgExtensionMessagesFiles, true ) . ";\n";
+require_once( RUN_MAINTENANCE_IF_MAIN );
+
+foreach ( $mmfl['setupFiles'] as $fileName ) {
+       if ( strval( $fileName ) === '' ) {
+               continue;
+       }
+       $fileName = str_replace( '$IP', $IP, $fileName );
+       fwrite( STDERR, "Loading data from $fileName\n" );
+       include_once( $fileName );
+}
+fwrite( STDERR, "\n" );
+$s =
+       "<" . "?php\n" .
+       "## This file is generated by mergeMessageFileList.php. Do not edit it directly.\n\n" .
+       "if ( defined( 'MW_NO_EXTENSION_MESSAGES' ) ) return;\n\n" .
+       '$wgExtensionMessagesFiles = ' . var_export( $wgExtensionMessagesFiles, true ) . ";\n\n";
 
-               $dirs = array(
-                       $IP,
-                       dirname( dirname( __FILE__ ) ),
-                       realpath( $IP )
-               );
+$dirs = array(
+       $IP,
+       dirname( dirname( __FILE__ ) ),
+       realpath( $IP )
+);
 
-               foreach ( $dirs as $dir ) {
-                       $s = preg_replace(
-                               "/'" . preg_quote( $dir, '/' ) . "([^']*)'/",
-                               '"$IP\1"',
-                               $s );
-               }
+foreach ( $dirs as $dir ) {
+       $s = preg_replace(
+               "/'" . preg_quote( $dir, '/' ) . "([^']*)'/",
+               '"$IP\1"',
+               $s );
+}
 
-               if ( isset( $mmfl['output'] ) ) {
-                       file_put_contents( $mmfl['output'], $s );
-               } else {
-                       echo $s;
-               }
-       }
+if ( isset( $mmfl['output'] ) ) {
+       file_put_contents( $mmfl['output'], $s );
+} else {
+       echo $s;
 }
 
-$maintClass = 'MergeMessageFileList';
-require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/postgres/archives/patch-add_interwiki.sql b/maintenance/postgres/archives/patch-add_interwiki.sql
new file mode 100644 (file)
index 0000000..6c08af7
--- /dev/null
@@ -0,0 +1,14 @@
+DROP FUNCTION IF EXISTS add_interwiki(TEXT,INT,CHARACTER) CASCADE;
+CREATE OR REPLACE FUNCTION "add_interwiki" (TEXT,INT,SMALLINT) RETURNS INT LANGUAGE SQL AS
+$mw$
+  INSERT INTO interwiki (iw_prefix, iw_url, iw_local) VALUES ($1,$2,$3);
+  SELECT 1;
+$mw$;
+
+DROP FUNCTION IF EXISTS add_interwiki(TEXT,INT,CHARACTER) CASCADE;
+CREATE OR REPLACE FUNCTION "add_interwiki" (TEXT,INT,SMALLINT) RETURNS INT LANGUAGE SQL AS
+$mw$
+  INSERT INTO interwiki (iw_prefix, iw_url, iw_local) VALUES ($1,$2,$3);
+  SELECT 1;
+$mw$;
+
index 5e0d620..266b1d0 100644 (file)
@@ -1,8 +1,8 @@
 
-CREATE SEQUENCE category_id_seq;
+CREATE SEQUENCE category_cat_id_seq;
 
 CREATE TABLE category (
-  cat_id       INTEGER  NOT NULL  PRIMARY KEY DEFAULT nextval('category_id_seq'),
+  cat_id       INTEGER  NOT NULL  PRIMARY KEY DEFAULT nextval('category_cat_id_seq'),
   cat_title    TEXT     NOT NULL,
   cat_pages    INTEGER  NOT NULL  DEFAULT 0,
   cat_subcats  INTEGER  NOT NULL  DEFAULT 0,
diff --git a/maintenance/postgres/archives/patch-external_user.sql b/maintenance/postgres/archives/patch-external_user.sql
new file mode 100644 (file)
index 0000000..6058a70
--- /dev/null
@@ -0,0 +1,6 @@
+CREATE TABLE external_user (
+  eu_local_id     INTEGER  NOT NULL  PRIMARY KEY,
+  eu_external_id TEXT
+);
+
+CREATE UNIQUE INDEX eu_external_id ON external_user (eu_external_id);
index 20a61fd..4c0b3c6 100644 (file)
@@ -5,5 +5,5 @@ CREATE TABLE log_search (
   ls_log_id INTEGER NOT NULL DEFAULT 0
 );
 
-ALTER TABLE log_search ADD CONSTRAINT log_search_pk PRIMARY KEY(ls_field, ls_value, ls_log_id);
+ALTER TABLE log_search ADD CONSTRAINT log_search_pkey PRIMARY KEY(ls_field, ls_value, ls_log_id);
 CREATE INDEX ls_log_id ON log_search (ls_log_id);
index 703dcda..bd7bb1f 100644 (file)
@@ -4,4 +4,4 @@ CREATE TABLE module_deps (
        md_deps         TEXT NOT NULL
 );
 
-CREATE UNIQUE INDEX md_module_skin_idx ON module_deps (md_module, md_skin);
+CREATE UNIQUE INDEX md_module_skin ON module_deps (md_module, md_skin);
index 00d8207..68756d1 100644 (file)
@@ -5,4 +5,4 @@ CREATE TABLE msg_resource (
        mr_timestamp    TIMESTAMPTZ NOT NULL
 );
 
-CREATE UNIQUE INDEX mr_resource_lang_idx ON msg_resource (mr_resource, mr_lang);
+CREATE UNIQUE INDEX mr_resource_lang ON msg_resource (mr_resource, mr_lang);
index e7b8021..88109da 100644 (file)
@@ -3,4 +3,4 @@ CREATE TABLE msg_resource_links (
        mrl_message TEXT NOT NULL
 );
 
-CREATE UNIQUE INDEX mrl_message_resource_idx ON msg_resource_links (mrl_message, mrl_resource);
+CREATE UNIQUE INDEX mrl_message_resource ON msg_resource_links (mrl_message, mrl_resource);
index b891a1f..2855f9a 100644 (file)
@@ -21,6 +21,9 @@ return array(
        'user.options' => array( 'class' => 'ResourceLoaderUserOptionsModule' ),
        'user.tokens' => array( 'class' => 'ResourceLoaderUserTokensModule' ),
 
+       // Scripts for the dynamic language specific data, like grammar forms.
+       'mediawiki.language.data' => array( 'class' => 'ResourceLoaderLanguageDataModule' ),
+
        /* Skins */
 
        'skins.chick' => array(
index 4abfa4b..67b605c 100644 (file)
@@ -7,7 +7,52 @@
  */
 ( function( $, mw ) {
 
-mw.language = {
+var language = {
+       /**
+        * @var data {Object} Language related data (keyed by language,
+        * contains instances of mw.Map).
+        * @example Set data
+        * <code>
+        *     // Override, extend or create the language data object of 'nl'
+        *     mw.language.setData( 'nl', 'myKey', 'My value' );
+        * </code>
+        * @example Get GrammarForms data for language 'nl':
+        * <code>
+        *     var grammarForms = mw.language.getData( 'nl', 'grammarForms' );
+        * </code>
+        */
+       data: {},
+
+       /**
+        * Convenience method for retreiving language data by language code and data key,
+        * covering for the potential inexistance of a data object for this langiage.
+        * @param langCode {String}
+        * @param dataKey {String}
+        * @return {mixed} Value stored in the mw.Map (or undefined if there is no map for
+          the specified langCode).
+        */
+       getData: function ( langCode, dataKey ) {
+               var langData = language.data;
+               if ( langData[langCode] instanceof mw.Map ) {
+                       return langData[langCode].get( dataKey );
+               }
+               return undefined;
+       },
+
+       /**
+        * Convenience method for setting language data by language code and data key.
+        * Creates a data object if there isn't one for the specified language already.
+        * @param langCode {String}
+        * @param dataKey {String}
+        * @param value {mixed}
+        */
+       setData: function ( langCode, dataKey, value ) {
+               var langData = language.data;
+               if ( !( langData[langCode] instanceof mw.Map ) ) {
+                       langData[langCode] = new mw.Map();
+               }
+               langData[langCode].set( dataKey, value );
+       },
        /**
         * Process the PLURAL template substitution
         *
@@ -122,7 +167,28 @@ mw.language = {
                return ( forms.length === 3 ) ? forms[2] : forms[0];
        },
 
+       /**
+        * Grammatical transformations, needed for inflected languages.
+        * Invoked by putting {{grammar:form|word}} in a message.
+        * The rules can be defined in $wgGrammarForms global or grammar
+        * forms can be computed dynamically by overriding this method per language
+        *
+        * @param word {String}
+        * @param form {String}
+        * @return {String}
+        */
+       convertGrammar: function ( word, form ) {
+               var grammarForms = language.getData( mw.config.get( 'wgContentLanguage' ), 'grammarForms' );
+               if ( grammarForms && grammarForms[form] ) {
+                       return grammarForms[form][word] || word;
+               }
+               return word;
+       },
+
        // Digit Transform Table, populated by language classes where applicable
        'digitTransformTable': null
 };
+
+mw.language = language;
+
 } )( jQuery, mediaWiki );
index 26fdfa9..2957674 100644 (file)
 
                        // protocol-relative URLs
                        if ( !this.protocol ) {
-                               this.protocol = defaultProtocol;
+                               this.protocol = defaultUri.protocol;
+                       }
+                       // No host given:
+                       if ( !this.host ) {
+                               this.host = defaultUri.host;
+                               // port ?
+                               if ( !this.port ) {
+                                       this.port = defaultUri.port;
+                               }
+                       }
+                       if ( this.path && this.path.charAt( 0 ) !== '/' ) {
+                               // A real relative URL, relative to defaultUri.path. We can't really handle that since we cannot
+                               // figure out whether the last path compoennt of defaultUri.path is a directory or a file.
+                               throw new Error( 'Bad constructor arguments' );
                        }
-
                        if ( !( this.protocol && this.host && this.path ) ) {
                                throw new Error( 'Bad constructor arguments' );
                        }
                        }
                };
 
-               var defaultProtocol = ( new Uri( documentLocation ) ).protocol;
+               var defaultUri = new Uri( documentLocation );
 
                return Uri;     
        };
index 2afcbc6..e631c76 100644 (file)
 
                        var gitInfo = '';
                        if ( this.data.gitRevision != false ) {
-                               gitInfo = ' (' + this.data.gitRevision.substring( 0, 7 ) + ')';
+                               gitInfo = '(' + this.data.gitRevision.substring( 0, 7 ) + ')';
+                               if ( this.data.gitViewUrl != false ) {
+                                       gitInfo = $( '<a></a>' ).attr( 'href', this.data.gitViewUrl ).text( gitInfo );
+                               }
                        }
 
                        bitDiv( 'mwversion' )
                                .append( $( '<a href="//www.mediawiki.org/"></a>' ).text( 'MediaWiki' ) )
-                               .append( ': ' + this.data.mwVersion + gitInfo );
+                               .append( ': ' + this.data.mwVersion + ' ' )
+                               .append( gitInfo );
 
                        if ( this.data.gitBranch != false ) {
                                bitDiv( 'gitbranch' ).text( 'Git branch: ' + this.data.gitBranch );
index 3e33bde..043ebce 100644 (file)
                        }
                        var forms = nodes.slice(1);
                        return this.language.gender( gender, forms );
-               }
+               },
 
+               /**
+                * Transform parsed structure into grammar conversion.
+                * Invoked by putting {{grammar:form|word}} in a message
+                * @param {Array} of nodes [{Grammar case eg: genitive}, {String word}]
+                * @return {String} selected grammatical form according to current language
+                */
+               grammar: function( nodes ) {
+                       var form = nodes[0];
+                       var word = nodes[1];
+                       return word && form && this.language.convertGrammar( word, form );
+               }
        };
 
        // deprecated! don't rely on gM existing.
index 52c320c..7951af0 100644 (file)
  * generally useful beyond startup
  *
  * jQuery has minimum requirements of:
- * * Firefox 2.0+
- * * Internet Explorer 6+
- * * Safari 3+
- * * Opera 9+
- * * Chrome 1+
+ * * Internet Explorer 6.0+
+ * * Firefox 3.6+
+ * * Safari 5.0+
+ * * Opera 11+
+ * * Chrome
  */
-var isCompatible = function() {
-       // IE < 6
+function isCompatible() {
+       // IE < 6.0
        if ( navigator.appVersion.indexOf( 'MSIE' ) !== -1
                && parseFloat( navigator.appVersion.split( 'MSIE' )[1] ) < 6 )
        {
                return false;
        }
-       // TODO: Firefox < 2
-       // TODO: Safari < 3
-       // TODO: Opera < 9
-       // TODO: Chrome < 1
+       // @todo FIXME: Firefox < 3.6
+       // @todo FIXME: Safari < 5.0
+       // @todo FIXME: Opera < 11
        return true;
-};
+}
 /**
  * The startUp() function will be generated and added here (at the bottom)
  */
index 8301558..2ea4924 100644 (file)
@@ -13,6 +13,7 @@ $wgAutoloadClasses += array(
 
        //includes
        'BlockTest' => "$testFolder/phpunit/includes/BlockTest.php",
+       'MockOutputPage' => "$testFolder/phpunit/includes/MockOutputPage.php",
 
        //API
        'ApiFormatTestBase' => "$testFolder/phpunit/includes/api/format/ApiFormatTestBase.php",
index 721ccb3..e396ab3 100644 (file)
                } );
 
                describe( "should handle protocol-relative URLs", function() { 
+                       var uriRel = mw.UriRelative( 'glork://en.wiki.local/foo.php' );
 
                        it ( "should create protocol-relative URLs with same protocol as document", function() {
-                               var uriRel = mw.UriRelative( 'glork://en.wiki.local/foo.php' );
                                var uri = new uriRel( '//en.wiki.local/w/api.php' );
                                expect( uri.protocol ).toEqual( 'glork' );
                        } );
 
+                       it( "should handle absolute paths by supplying protocol and host from document in loose mode", function() {
+                               var uri = new uriRel( '/foo.com' );
+                               expect( uri.toString() ).toEqual( 'glork://en.wiki.local/foo.com' );
+                       } );
+
+                       it( "should handle absolute paths by supplying host from document in loose mode", function() {
+                               var uri = new uriRel( 'http:/foo.com' );
+                               expect( uri.toString() ).toEqual( 'http://en.wiki.local/foo.com' );
+                       } );
+
+                       it( "should handle absolute paths by supplying protocol and host from document in strict mode", function() {
+                               var uri = new uriRel( '/foo.com', true );
+                               expect( uri.toString() ).toEqual( 'glork://en.wiki.local/foo.com' );
+                       } );
+
+                       it( "should handle absolute paths by supplying host from document in strict mode", function() {
+                               var uri = new uriRel( 'http:/foo.com', true );
+                               expect( uri.toString() ).toEqual( 'http://en.wiki.local/foo.com' );
+                       } );
                } );
 
                it( "should throw error on no arguments to constructor", function() {
                        } ).toThrow( "Bad constructor arguments" );
                } );
 
-               it( "should throw error on improper URI as argument to constructor", function() {
-                       expect( function() { 
-                               var uri = new mw.Uri( 'http:/foo.com' );
-                       } ).toThrow( "Bad constructor arguments" );
-               } );
-
-               it( "should throw error on URI without protocol or // in strict mode", function() {
+               it( "should throw error on URI without protocol or // or leading / in strict mode", function() {
                        expect( function() { 
                                var uri = new mw.Uri( 'foo.com/bar/baz', true );
                        } ).toThrow( "Bad constructor arguments" );
index 7a67a8d..1f0cf87 100644 (file)
@@ -59,6 +59,12 @@ MediaWiki:bad image list
 * [[File:Bad.jpg]] except [[Nasty page]]
 !!endarticle
 
+!! article
+Template:inner list
+!! text
+* item 1
+!! endarticle
+
 ###
 ### Basic tests
 ###
@@ -2147,6 +2153,36 @@ List items are not parsed correctly following a <pre> block (bug 785)
 
 !! end
 
+!! test
+List items from template
+!! input
+
+{{inner list}}
+* item 2
+
+* item 0
+{{inner list}}
+* item 2
+
+* item 0
+* notSOL{{inner list}}
+* item 2
+!! result
+<ul><li> item 1
+</li><li> item 2
+</li></ul>
+<ul><li> item 0
+</li><li> item 1
+</li><li> item 2
+</li></ul>
+<ul><li> item 0
+</li><li> notSOL
+</li><li> item 1
+</li><li> item 2
+</li></ul>
+
+!! end
+
 ###
 ### Magic Words
 ###
index 6ec8bdc..f626459 100644 (file)
@@ -16,6 +16,15 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
 
        private static $dbSetup = false;
 
+       /**
+        * Holds the paths of temporary files/directories created through getNewTempFile,
+        * and getNewTempDirectory
+        *
+        * @var array
+        */
+       private $tmpfiles = array();
+
+
        /**
         * Table name prefixes. Oracle likes it shorter.
         */
@@ -71,6 +80,53 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                }
        }
 
+       /**
+        * obtains a new temporary file name
+        *
+        * The obtained filename is enlisted to be removed upon tearDown
+        *
+        * @returns string: absolute name of the temporary file
+        */
+       protected function getNewTempFile() {
+               $fname = tempnam( wfTempDir(), 'MW_PHPUnit_' . get_class( $this ) . '_' );
+               $this->tmpfiles[] = $fname;
+               return $fname;
+       }
+
+       /**
+        * obtains a new temporary directory
+        *
+        * The obtained directory is enlisted to be removed (recursively with all its contained
+        * files) upon tearDown.
+        *
+        * @returns string: absolute name of the temporary directory
+        */
+       protected function getNewTempDirectory() {
+               // Starting of with a temporary /file/.
+               $fname = $this->getNewTempFile();
+
+               // Converting the temporary /file/ to a /directory/
+               //
+               // The following is not atomic, but at least we now have a single place,
+               // where temporary directory creation is bundled and can be improved
+               unlink( $fname );
+               $this->assertTrue( wfMkdirParents( $fname ) );
+               return $fname;
+       }
+
+       protected function tearDown() {
+               // Cleaning up temoporary files
+               foreach ( $this->tmpfiles as $fname ) {
+                       if ( is_file( $fname ) || ( is_link( $fname ) ) ) {
+                               unlink( $fname );
+                       } elseif ( is_dir( $fname ) ) {
+                               wfRecursiveRemoveDir( $fname );
+                       }
+               }
+
+               parent::tearDown();
+       }
+
        function dbPrefix() {
                return $this->db->getType() == 'oracle' ? self::ORA_DB_PREFIX : self::DB_PREFIX;
        }
index 749f40b..f197da8 100644 (file)
@@ -67,7 +67,7 @@ class BlockTest extends MediaWikiLangTestCase {
                // $this->dumpBlocks();
 
                $this->assertTrue( $this->block->equals( Block::newFromTarget('UTBlockee') ), "newFromTarget() returns the same block as the one that was made");
-               
+
                $this->assertTrue( $this->block->equals( Block::newFromID( $this->blockId ) ), "newFromID() returns the same block as the one that was made");
 
        }
@@ -122,4 +122,48 @@ class BlockTest extends MediaWikiLangTestCase {
                        array( false )
                );
        }
+
+       function testCrappyCrossWikiBlocks() {
+               // Delete the last round's block if it's still there
+               $oldBlock = Block::newFromTarget( 'UserOnForeignWiki' );
+               if ( $oldBlock ) {
+                       // An old block will prevent our new one from saving.
+                       $oldBlock->delete();
+               }
+
+               // Foreign perspective (blockee not on current wiki)...
+               $block = new Block(
+                       /* $address */ 'UserOnForeignWiki',
+                       /* $user */ 14146,
+                       /* $by */ 0,
+                       /* $reason */ 'crosswiki block...',
+                       /* $timestamp */ wfTimestampNow(),
+                       /* $auto */ false,
+                       /* $expiry */ $this->db->getInfinity(),
+                       /* anonOnly */ false,
+                       /* $createAccount */ true,
+                       /* $enableAutoblock */ true,
+                       /* $hideName (ipb_deleted) */ true,
+                       /* $blockEmail */ true,
+                       /* $allowUsertalk */ false,
+                       /* $byName */ 'MetaWikiUser'
+               );
+
+               $res = $block->insert( $this->db );
+               $this->assertTrue( (bool)$res['id'], 'Block succeeded' );
+
+               // Local perspective (blockee on current wiki)...
+               $user = User::newFromName( 'UserOnForeignWiki' );
+               $user->addToDatabase();
+               // Set user ID to match the test value
+               $this->db->update( 'user', array( 'user_id' => 14146 ), array( 'user_id' => $user->getId() ) );
+               $user = null; // clear
+
+               $block = Block::newFromID( $res['id'] );
+               $this->assertEquals( 'UserOnForeignWiki', $block->getTarget()->getName(), 'Correct blockee name' );
+               $this->assertEquals( '14146',  $block->getTarget()->getId(), 'Correct blockee id' );
+               $this->assertEquals( 'MetaWikiUser', $block->getBlocker(), 'Correct blocker name' );
+               $this->assertEquals( 'MetaWikiUser', $block->getByName(), 'Correct blocker name' );
+               $this->assertEquals( 0, $block->getBy(), 'Correct blocker id' );
+       }
 }
index a12410c..94158bf 100644 (file)
@@ -622,13 +622,3 @@ class GlobalTest extends MediaWikiTestCase {
        /* TODO: many more! */
 }
 
-
-class MockOutputPage {
-       
-       public $message;
-       
-       function debug( $message ) {
-               $this->message = "JAJA is a stupid error message. Anyway, here's your message: $message";
-       }
-}
-
diff --git a/tests/phpunit/includes/MockOutputPage.php b/tests/phpunit/includes/MockOutputPage.php
new file mode 100644 (file)
index 0000000..bdee483
--- /dev/null
@@ -0,0 +1,10 @@
+<?php
+
+class MockOutputPage {
+
+       public $message;
+
+       function debug( $message ) {
+               $this->message = "JAJA is a stupid error message. Anyway, here's your message: $message";
+       }
+}
index 25149a0..1e2d1bb 100644 (file)
@@ -5,16 +5,12 @@
  */
 class ExifRotationTest extends MediaWikiTestCase {
 
-       /** track directories creations. Content will be deleted. */
-       private $createdDirs = array();
-
        function setUp() {
                parent::setUp();
                $this->handler = new BitmapHandler();
                $filePath = dirname( __FILE__ ) . '/../../data/media';
 
-               $tmpDir = wfTempDir() . '/exif-test-' . time() . '-' . mt_rand();
-               $this->createdDirs[] = $tmpDir;
+               $tmpDir = $this->getNewTempDirectory();
 
                $this->repo = new FSRepo( array(
                        'name'            => 'temp',
@@ -42,17 +38,7 @@ class ExifRotationTest extends MediaWikiTestCase {
                $wgShowEXIF = $this->show;
                $wgEnableAutoRotation = $this->oldAuto;
 
-               $this->tearDownFiles();
-       }
-
-       private function tearDownFiles() {
-               foreach( $this->createdDirs as $dir ) {
-                       wfRecursiveRemoveDir( $dir );
-               }
-       }
-
-       function __destruct() {
-               $this->tearDownFiles();
+               parent::tearDown();
        }
 
        /**
index a50547c..188f0ae 100644 (file)
@@ -65,18 +65,38 @@ class LanguageSrTest extends MediaWikiTestCase {
         * @author Nikola Smolenski
         */
        function testConversionToCyrillic() {
+               //A simple convertion of Latin to Cyrillic
                $this->assertEquals( 'абвг',
                        $this->convertToCyrillic( 'abvg' )
                );
+               //Same as above, but assert that -{}-s must be removed and not converted
+               $this->assertEquals( 'ljабnjвгdž',
+                       $this->convertToCyrillic( '-{lj}-ab-{nj}-vg-{dž}-' )
+               );
+               //A simple convertion of Cyrillic to Cyrillic
                $this->assertEquals( 'абвг',
                        $this->convertToCyrillic( 'абвг' )
                );
+               //Same as above, but assert that -{}-s must be removed and not converted
+               $this->assertEquals( 'ljабnjвгdž',
+                       $this->convertToCyrillic( '-{lj}-аб-{nj}-вг-{dž}-' )
+               );
+               //This text has some Latin, but is recognized as Cyrillic, so it should not be converted
                $this->assertEquals( 'abvgшђжчћ',
                        $this->convertToCyrillic( 'abvgшђжчћ' )
                );
+               //Same as above, but assert that -{}-s must be removed
+               $this->assertEquals( 'љabvgњшђжчћџ',
+                       $this->convertToCyrillic( '-{љ}-abvg-{њ}-шђжчћ-{џ}-' )
+               );
+               //This text has some Cyrillic, but is recognized as Latin, so it should be converted
                $this->assertEquals( 'абвгшђжчћ',
                        $this->convertToCyrillic( 'абвгšđžčć' )
                );
+               //Same as above, but assert that -{}-s must be removed and not converted
+               $this->assertEquals( 'ljабвгnjшђжчћdž',
+                       $this->convertToCyrillic( '-{lj}-абвг-{nj}-šđžčć-{dž}-' )
+               );
                // Roman numerals are not converted
                $this->assertEquals( 'а I б II в III г IV шђжчћ',
                        $this->convertToCyrillic( 'a I b II v III g IV šđžčć' )
@@ -84,15 +104,19 @@ class LanguageSrTest extends MediaWikiTestCase {
        }
 
        function testConversionToLatin() {
+               //A simple convertion of Latin to Latin
                $this->assertEquals( 'abcd',
                        $this->convertToLatin( 'abcd' )
                );
+               //A simple convertion of Cyrillic to Latin
                $this->assertEquals( 'abcd',
                        $this->convertToLatin( 'абцд' )
                );
+               //This text has some Latin, but is recognized as Cyrillic, so it should be converted
                $this->assertEquals( 'abcdšđžčć',
                        $this->convertToLatin( 'abcdшђжчћ' )
                );
+               //This text has some Cyrillic, but is recognized as Latin, so it should not be converted
                $this->assertEquals( 'абцдšđžčć',
                        $this->convertToLatin( 'абцдšđžčć' )
                );
index a6fe549..2f8c232 100644 (file)
@@ -69,19 +69,6 @@ abstract class DumpTestCase extends MediaWikiTestCase {
                        file_put_contents( $fname, $contents ), "# bytes written" );
        }
 
-       /**
-        * obtains a new temporary file name
-        *
-        * The obtained filename is enlisted to be removed upon tearDown
-        *
-        * @returns string: absolute name of the temporary file
-        */
-       protected function getNewTempFile() {
-               $fname = tempnam( wfTempDir(), 'MW_PHPUnit_' . get_class( $this ) . '_' );
-               $this->tmpfiles[] = $fname;
-               return $fname;
-       }
-
        /**
         * Default set up function.
         *
@@ -97,29 +84,10 @@ abstract class DumpTestCase extends MediaWikiTestCase {
                if ( $this->exceptionFromAddDBData !== null ) {
                        throw $this->exceptionFromAddDBData;
                }
-               $this->tmpfiles = array();
 
                $wgUser = new User();
        }
 
-       /**
-        * Default tear down function
-        *
-        * Removes all files that have been allocated via self::getNewTempFile, even if
-        * they turn out to be (empty or non-empty) directories now.
-        */
-       function tearDown() {
-               foreach ( $this->tmpfiles as $fname ) {
-                       if ( is_file( $fname ) || ( is_link( $fname ) ) ) {
-                               unlink( $fname );
-                       } elseif ( is_dir( $fname ) ) {
-                               wfRecursiveRemoveDir( $fname );
-                       }
-               }
-               parent::tearDown();
-       }
-
-
        /**
         * Step the current XML reader until node end of given name is found.
         *
index 92eeffa..d18b33b 100755 (executable)
@@ -21,12 +21,14 @@ class PHPUnitMaintClass extends Maintenance {
        public function finalSetup() {
                parent::finalSetup();
 
-               global $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType, $wgUseDatabaseMessages;
+               global $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType;
+               global $wgLanguageConverterCacheType, $wgUseDatabaseMessages;
                global $wgLocaltimezone, $wgLocalisationCacheConf;
 
                $wgMainCacheType = CACHE_NONE;
                $wgMessageCacheType = CACHE_NONE;
                $wgParserCacheType = CACHE_NONE;
+               $wgLanguageConverterCacheType = CACHE_NONE;
 
                $wgUseDatabaseMessages = false; # Set for future resets
 
@@ -46,7 +48,7 @@ require( RUN_MAINTENANCE_IF_MAIN );
 
 if( !in_array( '--configuration', $_SERVER['argv'] ) ) {
        //Hack to eliminate the need to use the Makefile (which sucks ATM)
-       array_splice( $_SERVER['argv'], 1, 0, 
+       array_splice( $_SERVER['argv'], 1, 0,
                array( '--configuration', $IP . '/tests/phpunit/suite.xml' ) );
 }
 
index a03f392..f286fa1 100644 (file)
@@ -8,6 +8,9 @@
          convertNoticesToExceptions="true"
          convertWarningsToExceptions="true"
          stopOnFailure="false"
+                timeoutForSmallTests="2"
+                timeoutForMediumTests="10"
+                timeoutForLargeTests="60"
          strict="true"
                 verbose="true">
        <testsuites>
index 687ad44..9e1e9b2 100644 (file)
@@ -22,6 +22,7 @@ return array(
                        'tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js',
+                       'tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js',
                        'tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.test.js',
@@ -43,6 +44,7 @@ return array(
                        'jquery.textSelection',
                        'mediawiki',
                        'mediawiki.Title',
+                       'mediawiki.Uri',
                        'mediawiki.user',
                        'mediawiki.util',
                        'mediawiki.special.recentchanges',
index 30ae5bc..f4baf95 100644 (file)
@@ -10,24 +10,26 @@ var mwTestIgnore, mwTester, addons;
  * or 'data/test.php?foo=bar').
  * @return {String} Such as 'data/foo.js?131031765087663960'
  */
-QUnit.fixurl = function (value) {
+QUnit.fixurl = function ( value ) {
        return value + (/\?/.test( value ) ? '&' : '?')
                + String( new Date().getTime() )
-               + String( parseInt( Math.random()*100000, 10 ) );
+               + String( parseInt( Math.random() * 100000, 10 ) );
 };
 
 /**
  * Configuration
  */
-QUnit.config.testTimeout = 5000;
 
-/**
- * MediaWiki debug mode
- */
+// When a test() indicates asynchronicity with stop(),
+// allow 10 seconds to pass before killing the test(),
+// and assuming failure.
+QUnit.config.testTimeout = 10 * 1000;
+
+// Add a checkbox to QUnit header to toggle MediaWiki ResourceLoader debug mode.
 QUnit.config.urlConfig.push( 'debug' );
 
 /**
- *  Load TestSwarm agent
+ * Load TestSwarm agent
  */
 // Only if the current url indicates that there is a TestSwarm instance watching us
 // (TestSwarm appends swarmURL to the test suites url it loads in iframes).
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js
new file mode 100644 (file)
index 0000000..fcdcd21
--- /dev/null
@@ -0,0 +1,27 @@
+module( 'mediawiki.Uri', QUnit.newMwEnvironment() );
+
+test( '-- Initial check', function() {
+       expect( 1 );
+
+       ok( mw.UriRelative, 'mw.Uri defined' );
+} );
+
+test( 'mw.Uri bug 35658', function() {
+       expect( 2 );
+
+       var testProtocol = 'https://';
+       var testServer = 'foo.example.org';
+       var testPort = '3004';
+       var testPath = '/!1qy';
+
+       var uriClass = mw.UriRelative( testProtocol + testServer + '/some/path/index.html' );
+       var uri = new uriClass( testPath );
+       var href = uri.toString();
+       equal( href, testProtocol + testServer + testPath, 'Root-relative URL gets host & protocol supplied' );
+
+       uriClass = mw.UriRelative( testProtocol + testServer + ':' + testPort + '/some/path.php' );
+       uri = new uriClass( testPath );
+       href = uri.toString();
+       equal( href, testProtocol + testServer + ':' + testPort + testPath, 'Root-relative URL gets host, protocol, and port supplied' );
+
+} );
index 265ec2a..2abe016 100644 (file)
@@ -41,3 +41,15 @@ test( 'mw.jqueryMsg Gender', function() {
        ok( mw.messages.set( 'gender-msg-wrong', '{{gender}} is awesome' ), 'mw.messages.set: Register' );
        equal( parser( 'gender-msg-wrong', 'female' ) , ' is awesome', 'Wrong syntax used, but ignore the {{gender}}' );
 } );
+
+
+test( 'mw.jqueryMsg Grammar', function() {
+       expect( 5 );
+       var parser = mw.jqueryMsg.getMessageFunction();
+       ok( parser, 'Parser Function initialized' );
+       // Hope the grammar form grammar_case_foo is not valid in any language
+       ok( mw.messages.set( 'grammar-msg', 'Przeszukaj {{GRAMMAR:grammar_case_foo|{{SITENAME}}}}' ), 'mw.messages.set: Register' );
+       equal( parser( 'grammar-msg' ) , 'Przeszukaj ' + mw.config.get( 'wgSiteName' ) , 'Grammar Test with sitename' );
+       ok( mw.messages.set( 'grammar-msg-wrong-syntax', 'Przeszukaj {{GRAMMAR:grammar_case_xyz}}' ), 'mw.messages.set: Register' );
+       equal( parser( 'grammar-msg-wrong-syntax' ) , 'Przeszukaj ' , 'Grammar Test with wrong grammar template syntax' );
+} );
index 6afc7e5..6855581 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -97,7 +97,11 @@ function wfStreamThumb( array $params ) {
 
        // Is this a thumb of an archived file?
        $isOld = ( isset( $params['archived'] ) && $params['archived'] );
-       unset( $params['archived'] );
+       unset( $params['archived'] ); // handlers don't care
+
+       // Is this a thumb of a temp file?
+       $isTemp = ( isset( $params['temp'] ) && $params['temp'] );
+       unset( $params['temp'] ); // handlers don't care
 
        // Some basic input validation
        $fileName = strtr( $fileName, '\\/', '__' );
@@ -118,6 +122,20 @@ function wfStreamThumb( array $params ) {
                        return;
                }
                $img = RepoGroup::singleton()->getLocalRepo()->newFromArchiveName( $title, $fileName );
+       } elseif ( $isTemp ) {
+               $repo = RepoGroup::singleton()->getLocalRepo()->getTempRepo();
+               // Format is <timestamp>!<name> or just <name>
+               $bits = explode( '!', $fileName, 2 );
+               // Get the name without the timestamp so hash paths are correctly computed
+               $title = Title::makeTitleSafe( NS_FILE, isset( $bits[1] ) ? $bits[1] : $fileName );
+               if ( !$title ) {
+                       wfThumbError( 404, wfMsg( 'badtitletext' ) );
+                       wfProfileOut( __METHOD__ );
+                       return;
+               }
+               $img = new UnregisteredLocalFile( $title, $repo,
+                       $repo->getZonePath( 'public' ) . '/' . $repo->getTempHashPath( $fileName ) . $fileName
+               );
        } else {
                $img = wfLocalFile( $fileName );
        }
@@ -178,7 +196,7 @@ function wfStreamThumb( array $params ) {
                        // Check that the zone relative path matches up so squid caches won't pick
                        // up thumbs that would not be purged on source file deletion (bug 34231).
                        if ( isset( $params['rel404'] ) // thumbnail was handled via 404
-                               && urldecode( $params['rel404'] ) !== $img->getThumbRel( $thumbName ) ) 
+                               && urldecode( $params['rel404'] ) !== $img->getThumbRel( $thumbName ) )
                        {
                                wfThumbError( 404, 'The source file for the specified thumbnail does not exist.' );
                                wfProfileOut( __METHOD__ );