Merge "Expose thumbnail file to extensions"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 31 Mar 2014 17:13:30 +0000 (17:13 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 31 Mar 2014 17:13:30 +0000 (17:13 +0000)
130 files changed:
RELEASE-NOTES-1.23
docs/hooks.txt
includes/AutoLoader.php
includes/Collation.php
includes/DefaultSettings.php
includes/GlobalFunctions.php
includes/Linker.php
includes/Message.php
includes/Setup.php
includes/SkinTemplate.php
includes/Title.php
includes/WikiFilePage.php
includes/actions/Action.php
includes/api/ApiMain.php
includes/api/ApiUpload.php
includes/cache/LocalisationCache.php
includes/clientpool/RedisConnectionPool.php
includes/db/CloneDatabase.php
includes/db/Database.php
includes/db/LBFactory.php
includes/db/LoadBalancer.php
includes/deferred/DataUpdate.php
includes/exception/MWExceptionHandler.php
includes/exception/ThrottledError.php
includes/externalstore/ExternalStoreDB.php
includes/filerepo/file/File.php
includes/jobqueue/JobQueueDB.php
includes/libs/HttpStatus.php
includes/parser/Parser.php
includes/rcfeed/IRCColourfulRCFeedFormatter.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/specialpage/SpecialPageFactory.php
includes/specials/SpecialCategories.php
includes/specials/SpecialContributions.php
includes/specials/SpecialLinkSearch.php
includes/specials/SpecialRevisiondelete.php
includes/specials/SpecialTrackingCategories.php [new file with mode: 0644]
includes/specials/SpecialUpload.php
includes/specials/SpecialUploadStash.php
includes/specials/SpecialUserrights.php
includes/title/MalformedTitleException.php [new file with mode: 0644]
includes/title/MediaWikiPageLinkRenderer.php [new file with mode: 0644]
includes/title/MediaWikiTitleCodec.php [new file with mode: 0644]
includes/title/PageLinkRenderer.php [new file with mode: 0644]
includes/title/TitleFormatter.php [new file with mode: 0644]
includes/title/TitleParser.php [new file with mode: 0644]
includes/title/TitleValue.php [new file with mode: 0644]
languages/Names.php
languages/messages/MessagesAf.php
languages/messages/MessagesAr.php
languages/messages/MessagesArq.php [new file with mode: 0644]
languages/messages/MessagesAst.php
languages/messages/MessagesAz.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBs.php
languages/messages/MessagesCa.php
languages/messages/MessagesCe.php
languages/messages/MessagesCo.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesEgl.php
languages/messages/MessagesEl.php
languages/messages/MessagesEn.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesGan_hans.php
languages/messages/MessagesGan_hant.php
languages/messages/MessagesGl.php
languages/messages/MessagesHe.php
languages/messages/MessagesHi.php
languages/messages/MessagesHr.php
languages/messages/MessagesHrx.php [new file with mode: 0644]
languages/messages/MessagesHsb.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKo.php
languages/messages/MessagesKrc.php
languages/messages/MessagesLb.php
languages/messages/MessagesLez.php
languages/messages/MessagesLrc.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMn.php
languages/messages/MessagesMzn.php
languages/messages/MessagesNap.php
languages/messages/MessagesNds_nl.php
languages/messages/MessagesNe.php
languages/messages/MessagesNn.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesQqq.php
languages/messages/MessagesRo.php
languages/messages/MessagesRu.php
languages/messages/MessagesSa.php
languages/messages/MessagesSco.php
languages/messages/MessagesSh.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesTe.php
languages/messages/MessagesTet.php
languages/messages/MessagesTh.php
languages/messages/MessagesWuu.php
languages/messages/MessagesYue.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
languages/utils/CLDRPluralRuleEvaluator.php
maintenance/fixDoubleRedirects.php
maintenance/language/messages.inc
resources/mediawiki.api/mediawiki.api.category.js
resources/mediawiki.api/mediawiki.api.parse.js
resources/mediawiki.api/mediawiki.api.watch.js
resources/mediawiki/mediawiki.util.js
resources/oojs-ui/i18n/es.json
resources/oojs-ui/i18n/et.json
resources/oojs-ui/i18n/kk-cyrl.json
resources/oojs-ui/i18n/qu.json
resources/oojs-ui/oojs-ui-apex.css
resources/oojs-ui/oojs-ui.js
resources/oojs-ui/oojs-ui.svg.css
skins/common/commonElements.css
skins/vector/components/common.less
tests/phpunit/includes/MessageTest.php
tests/phpunit/includes/TitleTest.php
tests/phpunit/includes/exception/ThrottledErrorTest.php
tests/qunit/suites/resources/jquery/jquery.color.test.js
tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js

index 92e94ed..d99c4fd 100644 (file)
@@ -52,6 +52,8 @@ production.
   wgQueryPages hook.
 * $wgHttpOnlyBlacklist has been removed.
 * $wgLicenseTerms has been removed as it was unused.
+* $wgProfileOnly is now deprecated; set the log file in
+  $wgDebugLogGroups['profileoutput'] to replace it.
 
 === New features in 1.23 ===
 * ResourceLoader can utilize the Web Storage API to cache modules client-side.
@@ -240,6 +242,8 @@ MediaWiki supports over 350 languages. Many localisations are updated
 regularly. Below only new and removed languages are listed, as well as
 changes to languages because of Bugzilla reports.
 
+* Support was added for Algerian Spoken Arabic (arq).
+* Support was added for Riograndenser Hunsrückisch (hrx).
 * Support was added for Northern Luri (lrc).
 
 === Other changes in 1.23 ===
@@ -316,6 +320,7 @@ changes to languages because of Bugzilla reports.
   parser, where it differs from the PHP parser).
 * Special:Search no longer has an "include redirects" option on the advanced
   tab. Redirects are now included in all searches.
+* mediawiki.api.category's getCategories() 'async' parameter was deprecated.
 
 ==== Removed classes ====
 * FakeMemCachedClient (deprecated in 1.18)
index e4037e6..3d1ba7e 100644 (file)
@@ -1441,6 +1441,7 @@ $user: user (object) whose email is being invalidated
 Callee may modify $url and $query, URL will be constructed as $url . $query
 &$url: URL to index.php
 &$query: Query string
+$rc: RecentChange object that triggered url generation
 
 'IsFileCacheable': Override the result of Article::isFileCacheable() (if true)
 $article: article (object) being checked
index 0873d87..8428ade 100644 (file)
@@ -1023,6 +1023,7 @@ $wgAutoloadLocalClasses = array(
        'SpecialSpecialpages' => 'includes/specials/SpecialSpecialpages.php',
        'SpecialStatistics' => 'includes/specials/SpecialStatistics.php',
        'SpecialTags' => 'includes/specials/SpecialTags.php',
+       'SpecialTrackingCategories' => 'includes/specials/SpecialTrackingCategories.php',
        'SpecialUnblock' => 'includes/specials/SpecialUnblock.php',
        'SpecialUndelete' => 'includes/specials/SpecialUndelete.php',
        'SpecialUnlockdb' => 'includes/specials/SpecialUnlockdb.php',
@@ -1059,6 +1060,15 @@ $wgAutoloadLocalClasses = array(
        'UserloginTemplate' => 'includes/templates/Userlogin.php',
        'UsercreateTemplate' => 'includes/templates/Usercreate.php',
 
+       # includes/title
+       'PageLinkRenderer' => 'includes/title/PageLinkRenderer.php',
+       'TitleFormatter' => 'includes/title/TitleFormatter.php',
+       'TitleParser' => 'includes/title/TitleParser.php',
+       'TitleValue' => 'includes/title/TitleValue.php',
+       'MalformedTitleException' => 'includes/title/MalformedTitleException.php',
+       'MediaWikiPageLinkRenderer' => 'includes/title/MediaWikiPageLinkRenderer.php',
+       'MediaWikiTitleCodec' => 'includes/title/MediaWikiTitleCodec.php',
+
        # includes/upload
        'UploadBase' => 'includes/upload/UploadBase.php',
        'UploadFromFile' => 'includes/upload/UploadFromFile.php',
index d2a5797..987f3a7 100644 (file)
@@ -470,7 +470,7 @@ class IcuCollation extends Collation {
                        $prev = $trimmedKey;
                }
                foreach ( $duplicatePrefixes as $badKey ) {
-                       wfDebug( "Removing '{$letterMap[$badKey]}' from first letters." );
+                       wfDebug( "Removing '{$letterMap[$badKey]}' from first letters.\n" );
                        unset( $letterMap[$badKey] );
                        // This code assumes that unsetting does not change sort order.
                }
index 871319c..14aec3b 100644 (file)
@@ -3607,6 +3607,25 @@ $wgNamespacesWithSubpages = array(
        NS_CATEGORY_TALK => true
 );
 
+/**
+  * Array holding default tracking category names.
+  *
+  * Array contains the system messages for each tracking category.
+  * Tracking categories allow pages with certain characteristics to be tracked.
+  * It works by adding any such page to a category automatically.
+  *
+  * @since 1.23
+  */
+$wgTrackingCategories = array(
+       'index-category',
+       'noindex-category',
+       'expensive-parserfunction-category',
+       'post-expand-template-argument-category',
+       'post-expand-template-inclusion-category',
+       'hidden-category-category',
+       'broken-file-category',
+);
+
 /**
  * Array of namespaces which can be deemed to contain valid "content", as far
  * as the site statistics are concerned. Useful if additional namespaces also
@@ -5067,6 +5086,9 @@ $wgProfileLimit = 0.0;
 
 /**
  * Don't put non-profiling info into log file
+ *
+ * @deprecated since 1.23, set the log file in
+ *   $wgDebugLogGroups['profileoutput'] instead.
  */
 $wgProfileOnly = false;
 
index 3727f16..5174b32 100644 (file)
@@ -921,7 +921,6 @@ function wfMatchesDomainList( $url, $domains ) {
  *
  * Controlling globals:
  * $wgDebugLogFile - points to the log file
- * $wgProfileOnly - if set, normal debug messages will not be recorded.
  * $wgDebugRawPage - if false, 'action=raw' hits will not result in debug output.
  * $wgDebugComments - if on, some debug items may appear in comments in the HTML output.
  *
@@ -934,7 +933,7 @@ function wfMatchesDomainList( $url, $domains ) {
  *     - false: same as 'log'
  */
 function wfDebug( $text, $dest = 'all' ) {
-       global $wgDebugLogFile, $wgProfileOnly, $wgDebugRawPage, $wgDebugLogPrefix;
+       global $wgDebugLogFile, $wgDebugRawPage, $wgDebugLogPrefix;
 
        if ( !$wgDebugRawPage && wfIsDebugRawPage() ) {
                return;
@@ -956,7 +955,7 @@ function wfDebug( $text, $dest = 'all' ) {
                MWDebug::debugMsg( $text );
        }
 
-       if ( $wgDebugLogFile != '' && !$wgProfileOnly ) {
+       if ( $wgDebugLogFile != '' ) {
                # Strip unprintables; they can switch terminal modes when binary data
                # gets dumped, which is pretty annoying.
                $text = preg_replace( '![\x00-\x08\x0b\x0c\x0e-\x1f]!', ' ', $text );
@@ -1227,8 +1226,8 @@ function wfErrorLog( $text, $file ) {
  * @todo document
  */
 function wfLogProfilingData() {
-       global $wgRequestTime, $wgDebugLogFile, $wgDebugRawPage, $wgRequest;
-       global $wgProfileLimit, $wgUser;
+       global $wgRequestTime, $wgDebugLogFile, $wgDebugLogGroups, $wgDebugRawPage;
+       global $wgProfileLimit, $wgUser, $wgRequest;
 
        StatCounter::singleton()->flush();
 
@@ -1249,7 +1248,17 @@ function wfLogProfilingData() {
        $profiler->logData();
 
        // Check whether this should be logged in the debug file.
-       if ( $wgDebugLogFile == '' || ( !$wgDebugRawPage && wfIsDebugRawPage() ) ) {
+       if ( isset( $wgDebugLogGroups['profileoutput'] )
+               && $wgDebugLogGroups['profileoutput'] === false
+       ) {
+               // Explicitely disabled
+               return;
+       }
+       if ( !isset( $wgDebugLogGroups['profileoutput'] ) && $wgDebugLogFile == '' ) {
+               // Logging not enabled; no point going further
+               return;
+       }
+       if ( !$wgDebugRawPage && wfIsDebugRawPage() ) {
                return;
        }
 
@@ -1284,7 +1293,7 @@ function wfLogProfilingData() {
                gmdate( 'YmdHis' ), $elapsed,
                urldecode( $requestUrl . $forward ) );
 
-       wfErrorLog( $log . $profiler->getOutput(), $wgDebugLogFile );
+       wfDebugLog( 'profileoutput', $log . $profiler->getOutput() );
 }
 
 /**
index 23bfd61..033926a 100644 (file)
@@ -25,6 +25,8 @@
  * for primarily page content: links, embedded images, table of contents. Links
  * are also used in the skin.
  *
+ * @todo: turn this into a legacy interface for HtmlPageLinkRenderer and similar services.
+ *
  * @ingroup Skins
  */
 class Linker {
index 7c9b095..d0ce482 100644 (file)
@@ -223,12 +223,14 @@ class Message {
         * @param string|string[] $key Message key or array of message keys to try and use the first
         * non-empty message for.
         * @param array $params Message parameters.
+        * @param Language $language Optional language of the message, defaults to $wgLang.
         */
-       public function __construct( $key, $params = array() ) {
+       public function __construct( $key, $params = array(), Language $language = null ) {
                global $wgLang;
+
                $this->key = $key;
                $this->parameters = array_values( $params );
-               $this->language = $wgLang;
+               $this->language = $language ? $language : $wgLang;
        }
 
        /**
@@ -270,6 +272,17 @@ class Message {
                return $this->format;
        }
 
+       /**
+        * Returns the Language of the Message.
+        *
+        * @since 1.23
+        *
+        * @return Language
+        */
+       public function getLanguage() {
+               return $this->language;
+       }
+
        /**
         * Factory function that is just wrapper for the real constructor. It is
         * intended to be used instead of the real constructor, because it allows
index 1a7f21e..e1777b1 100644 (file)
@@ -461,6 +461,11 @@ if ( $wgRateLimitLog && ! array_key_exists( 'ratelimit', $wgDebugLogGroups ) ) {
        $wgDebugLogGroups['ratelimit'] = $wgRateLimitLog;
 }
 
+if ( $wgProfileOnly ) {
+       $wgDebugLogGroups['profileoutput'] = $wgDebugLogFile;
+       $wgDebugLogFile = '';
+}
+
 wfProfileOut( $fname . '-defaults2' );
 wfProfileIn( $fname . '-misc1' );
 
index 32f0ed3..5073913 100644 (file)
@@ -1202,7 +1202,8 @@ class SkinTemplate extends Skin {
                                }
 
                                if ( isset( $content_actions[$key] ) ) {
-                                       wfDebug( __METHOD__ . ": Found a duplicate key for $key while flattening content_navigation into content_actions." );
+                                       wfDebug( __METHOD__ . ": Found a duplicate key for $key while flattening " .
+                                               "content_navigation into content_actions.\n" );
                                        continue;
                                }
 
index c85a006..995deeb 100644 (file)
@@ -27,6 +27,8 @@
  * Optionally may contain an interwiki designation or namespace.
  * @note This class can fetch various kinds of data from the database;
  *       however, it does so inefficiently.
+ * @note Consider using a TitleValue object instead. TitleValue is more lightweight
+ *       and does not rely on global state or the database.
  *
  * @internal documentation reviewed 15 Mar 2010
  */
@@ -85,8 +87,55 @@ class Title {
        var $mNotificationTimestamp = array(); // /< Associative array of user ID -> timestamp/false
        var $mHasSubpage;                 // /< Whether a page has any subpages
        private $mPageLanguage = false;   // /< The (string) language code of the page's language and content code.
+       private $mTitleValue = null;      // /< A corresponding TitleValue object
        // @}
 
+       /**
+        * B/C kludge: provide a TitleParser for use by Title.
+        * Ideally, Title would have no methods that need this.
+        * Avoid usage of this singleton by using TitleValue
+        * and the associated services when possible.
+        *
+        * @return TitleParser
+        */
+       private static function getTitleParser() {
+               global $wgContLang, $wgLocalInterwikis;
+
+               static $titleCodec = null;
+               static $titleCodecFingerprint = null;
+
+               // $wgContLang and $wgLocalInterwikis may change (especially while testing),
+               // make sure we are using the right one. To detect changes over the course
+               // of a request, we remember a fingerprint of the config used to create the
+               // codec singleton, and re-create it if the fingerprint doesn't match.
+               $fingerprint = spl_object_hash( $wgContLang ) . '|' . join( '+', $wgLocalInterwikis );
+
+               if ( $fingerprint !== $titleCodecFingerprint ) {
+                       $titleCodec = null;
+               }
+
+               if ( !$titleCodec ) {
+                       $titleCodec = new MediaWikiTitleCodec( $wgContLang, GenderCache::singleton(), $wgLocalInterwikis );
+                       $titleCodecFingerprint = $fingerprint;
+               }
+
+               return $titleCodec;
+       }
+
+       /**
+        * B/C kludge: provide a TitleParser for use by Title.
+        * Ideally, Title would have no methods that need this.
+        * Avoid usage of this singleton by using TitleValue
+        * and the associated services when possible.
+        *
+        * @return TitleFormatter
+        */
+       private static function getTitleFormatter() {
+               //NOTE: we know that getTitleParser() returns a MediaWikiTitleCodec,
+               //      which implements TitleFormatter.
+               return self::getTitleParser();
+       }
+
        /**
         * Constructor
         */
@@ -110,6 +159,20 @@ class Title {
                }
        }
 
+       /**
+        * Create a new Title from a TitleValue
+        *
+        * @param TitleValue $titleValue, assumed to be safe.
+        *
+        * @return Title
+        */
+       public static function newFromTitleValue( TitleValue $titleValue ) {
+               return self::makeTitle(
+                       $titleValue->getNamespace(),
+                       $titleValue->getText(),
+                       $titleValue->getFragment() );
+       }
+
        /**
         * Create a new Title from text, such as what one would find in a link. De-
         * codes any HTML entities in the text.
@@ -147,7 +210,7 @@ class Title {
 
                $t = new Title();
                $t->mDbkeyform = str_replace( ' ', '_', $filteredText );
-               $t->mDefaultNamespace = $defaultNamespace;
+               $t->mDefaultNamespace = intval( $defaultNamespace );
 
                if ( $t->secureAndSplit() ) {
                        if ( $defaultNamespace == NS_MAIN ) {
@@ -473,6 +536,8 @@ class Title {
         * Note that this doesn't pick up many things that could be wrong with titles, but that
         * replacing this regex with something valid will make many titles valid.
         *
+        * @todo: move this into MediaWikiTitleCodec
+        *
         * @return String regex string
         */
        static function getTitleInvalidRegex() {
@@ -741,6 +806,31 @@ class Title {
                return Interwiki::fetch( $this->mInterwiki )->getWikiID();
        }
 
+       /**
+        * Get a TitleValue object representing this Title.
+        *
+        * @note: Not all valid Titles have a corresponding valid TitleValue
+        * (e.g. TitleValues cannot represent page-local links that have a
+        * fragment but no title text).
+        *
+        * @return TitleValue|null
+        */
+       public function getTitleValue() {
+               if ( $this->mTitleValue === null ) {
+                       try {
+                               $this->mTitleValue = new TitleValue(
+                                       $this->getNamespace(),
+                                       $this->getDBkey(),
+                                       $this->getFragment() );
+                       } catch ( InvalidArgumentException $ex ) {
+                               wfDebug( __METHOD__ . ': Can\'t create a TitleValue for [[' .
+                                       $this->getPrefixedText() . ']]: ' . $ex->getMessage() . "\n" );
+                       }
+               }
+
+               return $this->mTitleValue;
+       }
+
        /**
         * Get the text form (spaces not underscores) of the main part
         *
@@ -830,8 +920,6 @@ class Title {
         * @return String: Namespace text
         */
        public function getNsText() {
-               global $wgContLang;
-
                if ( $this->isExternal() ) {
                        // This probably shouldn't even happen. ohh man, oh yuck.
                        // But for interwiki transclusion it sometimes does.
@@ -844,13 +932,13 @@ class Title {
                        }
                }
 
-               if ( $wgContLang->needsGenderDistinction() &&
-                               MWNamespace::hasGenderDistinction( $this->mNamespace ) ) {
-                       $gender = GenderCache::singleton()->getGenderOf( $this->getText(), __METHOD__ );
-                       return $wgContLang->getGenderNsText( $this->mNamespace, $gender );
+               try {
+                       $formatter = $this->getTitleFormatter();
+                       return $formatter->getNamespaceName( $this->mNamespace, $this->mDbkeyform );
+               } catch ( InvalidArgumentException $ex )  {
+                       wfDebug( __METHOD__ . ': ' . $ex->getMessage() . "\n" );
+                       return false;
                }
-
-               return $wgContLang->getNsText( $this->mNamespace );
        }
 
        /**
@@ -3200,8 +3288,6 @@ class Title {
         * @return Bool true on success
         */
        private function secureAndSplit() {
-               global $wgContLang, $wgLocalInterwikis;
-
                # Initialisation
                $this->mInterwiki = '';
                $this->mFragment = '';
@@ -3209,179 +3295,25 @@ class Title {
 
                $dbkey = $this->mDbkeyform;
 
-               # Strip Unicode bidi override characters.
-               # Sometimes they slip into cut-n-pasted page titles, where the
-               # override chars get included in list displays.
-               $dbkey = preg_replace( '/\xE2\x80[\x8E\x8F\xAA-\xAE]/S', '', $dbkey );
-
-               # Clean up whitespace
-               # Note: use of the /u option on preg_replace here will cause
-               # input with invalid UTF-8 sequences to be nullified out in PHP 5.2.x,
-               # conveniently disabling them.
-               $dbkey = preg_replace( '/[ _\xA0\x{1680}\x{180E}\x{2000}-\x{200A}\x{2028}\x{2029}\x{202F}\x{205F}\x{3000}]+/u', '_', $dbkey );
-               $dbkey = trim( $dbkey, '_' );
-
-               if ( strpos( $dbkey, UTF8_REPLACEMENT ) !== false ) {
-                       # Contained illegal UTF-8 sequences or forbidden Unicode chars.
-                       return false;
-               }
-
-               $this->mDbkeyform = $dbkey;
-
-               # Initial colon indicates main namespace rather than specified default
-               # but should not create invalid {ns,title} pairs such as {0,Project:Foo}
-               if ( $dbkey !== '' && ':' == $dbkey[0] ) {
-                       $this->mNamespace = NS_MAIN;
-                       $dbkey = substr( $dbkey, 1 ); # remove the colon but continue processing
-                       $dbkey = trim( $dbkey, '_' ); # remove any subsequent whitespace
-               }
-
-               if ( $dbkey == '' ) {
-                       return false;
-               }
-
-               # Namespace or interwiki prefix
-               $firstPass = true;
-               $prefixRegexp = "/^(.+?)_*:_*(.*)$/S";
-               do {
-                       $m = array();
-                       if ( preg_match( $prefixRegexp, $dbkey, $m ) ) {
-                               $p = $m[1];
-                               if ( ( $ns = $wgContLang->getNsIndex( $p ) ) !== false ) {
-                                       # Ordinary namespace
-                                       $dbkey = $m[2];
-                                       $this->mNamespace = $ns;
-                                       # For Talk:X pages, check if X has a "namespace" prefix
-                                       if ( $ns == NS_TALK && preg_match( $prefixRegexp, $dbkey, $x ) ) {
-                                               if ( $wgContLang->getNsIndex( $x[1] ) ) {
-                                                       # Disallow Talk:File:x type titles...
-                                                       return false;
-                                               } elseif ( Interwiki::isValidInterwiki( $x[1] ) ) {
-                                                       # Disallow Talk:Interwiki:x type titles...
-                                                       return false;
-                                               }
-                                       }
-                               } elseif ( Interwiki::isValidInterwiki( $p ) ) {
-                                       if ( !$firstPass ) {
-                                               # Can't make a local interwiki link to an interwiki link.
-                                               # That's just crazy!
-                                               return false;
-                                       }
-
-                                       # Interwiki link
-                                       $dbkey = $m[2];
-                                       $this->mInterwiki = $wgContLang->lc( $p );
-
-                                       # Redundant interwiki prefix to the local wiki
-                                       foreach ( $wgLocalInterwikis as $localIW ) {
-                                               if ( 0 == strcasecmp( $this->mInterwiki, $localIW ) ) {
-                                                       if ( $dbkey == '' ) {
-                                                               # Can't have an empty self-link
-                                                               return false;
-                                                       }
-                                                       $this->mInterwiki = '';
-                                                       $firstPass = false;
-                                                       # Do another namespace split...
-                                                       continue 2;
-                                               }
-                                       }
-
-                                       # If there's an initial colon after the interwiki, that also
-                                       # resets the default namespace
-                                       if ( $dbkey !== '' && $dbkey[0] == ':' ) {
-                                               $this->mNamespace = NS_MAIN;
-                                               $dbkey = substr( $dbkey, 1 );
-                                       }
-                               }
-                               # If there's no recognized interwiki or namespace,
-                               # then let the colon expression be part of the title.
-                       }
-                       break;
-               } while ( true );
-
-               $fragment = strstr( $dbkey, '#' );
-               if ( false !== $fragment ) {
-                       $this->setFragment( $fragment );
-                       $dbkey = substr( $dbkey, 0, strlen( $dbkey ) - strlen( $fragment ) );
-                       # remove whitespace again: prevents "Foo_bar_#"
-                       # becoming "Foo_bar_"
-                       $dbkey = preg_replace( '/_*$/', '', $dbkey );
-               }
-
-               # Reject illegal characters.
-               $rxTc = self::getTitleInvalidRegex();
-               if ( preg_match( $rxTc, $dbkey ) ) {
-                       return false;
-               }
-
-               # Pages with "/./" or "/../" appearing in the URLs will often be un-
-               # reachable due to the way web browsers deal with 'relative' URLs.
-               # Also, they conflict with subpage syntax.  Forbid them explicitly.
-               if (
-                       strpos( $dbkey, '.' ) !== false &&
-                       (
-                               $dbkey === '.' || $dbkey === '..' ||
-                               strpos( $dbkey, './' ) === 0 ||
-                               strpos( $dbkey, '../' ) === 0 ||
-                               strpos( $dbkey, '/./' ) !== false ||
-                               strpos( $dbkey, '/../' ) !== false ||
-                               substr( $dbkey, -2 ) == '/.' ||
-                               substr( $dbkey, -3 ) == '/..'
-                       )
-               ) {
-                       return false;
-               }
-
-               # Magic tilde sequences? Nu-uh!
-               if ( strpos( $dbkey, '~~~' ) !== false ) {
-                       return false;
-               }
-
-               # Limit the size of titles to 255 bytes. This is typically the size of the
-               # underlying database field. We make an exception for special pages, which
-               # don't need to be stored in the database, and may edge over 255 bytes due
-               # to subpage syntax for long titles, e.g. [[Special:Block/Long name]]
-               if (
-                       ( $this->mNamespace != NS_SPECIAL && strlen( $dbkey ) > 255 )
-                       || strlen( $dbkey ) > 512
-               ) {
-                       return false;
-               }
-
-               # Normally, all wiki links are forced to have an initial capital letter so [[foo]]
-               # and [[Foo]] point to the same place.  Don't force it for interwikis, since the
-               # other site might be case-sensitive.
-               $this->mUserCaseDBKey = $dbkey;
-               if ( !$this->isExternal() ) {
-                       $dbkey = self::capitalize( $dbkey, $this->mNamespace );
-               }
-
-               # Can't make a link to a namespace alone... "empty" local links can only be
-               # self-links with a fragment identifier.
-               if ( $dbkey == '' && !$this->isExternal() && $this->mNamespace != NS_MAIN ) {
-                       return false;
-               }
-
-               // Allow IPv6 usernames to start with '::' by canonicalizing IPv6 titles.
-               // IP names are not allowed for accounts, and can only be referring to
-               // edits from the IP. Given '::' abbreviations and caps/lowercaps,
-               // there are numerous ways to present the same IP. Having sp:contribs scan
-               // them all is silly and having some show the edits and others not is
-               // inconsistent. Same for talk/userpages. Keep them normalized instead.
-               if ( $this->mNamespace == NS_USER || $this->mNamespace == NS_USER_TALK ) {
-                       $dbkey = IP::sanitizeIP( $dbkey );
-               }
-
-               // Any remaining initial :s are illegal.
-               if ( $dbkey !== '' && ':' == $dbkey[0] ) {
+               try {
+                       // @note: splitTitleString() is a temporary hack to allow MediaWikiTitleCodec to share
+                       //        the parsing code with Title, while avoiding massive refactoring.
+                       // @todo: get rid of secureAndSplit, refactor parsing code.
+                       $parser = $this->getTitleParser();
+                       $parts = $parser->splitTitleString( $dbkey, $this->getDefaultNamespace() );
+               } catch ( MalformedTitleException $ex ) {
                        return false;
                }
 
                # Fill fields
-               $this->mDbkeyform = $dbkey;
-               $this->mUrlform = wfUrlencode( $dbkey );
-
-               $this->mTextform = str_replace( '_', ' ', $dbkey );
+               $this->setFragment( '#' . $parts['fragment'] );
+               $this->mInterwiki = $parts['interwiki'];
+               $this->mNamespace = $parts['namespace'];
+               $this->mUserCaseDBKey = $parts['user_case_dbkey'];
+
+               $this->mDbkeyform = $parts['dbkey'];
+               $this->mUrlform = wfUrlencode( $this->mDbkeyform );
+               $this->mTextform = str_replace( '_', ' ', $this->mDbkeyform );
 
                # We already know that some pages won't be in the database!
                if ( $this->isExternal() || $this->mNamespace == NS_SPECIAL ) {
index 817f0fa..3e8a1ce 100644 (file)
@@ -207,7 +207,7 @@ class WikiFilePage extends WikiPage {
                $file = $this->mFile;
 
                if ( ! $file instanceof LocalFile ) {
-                       wfDebug( __CLASS__ . '::' . __METHOD__ . ' is not supported for this file' );
+                       wfDebug( __CLASS__ . '::' . __METHOD__ . " is not supported for this file\n" );
                        return TitleArray::newFromResult( new FakeResultWrapper( array() ) );
                }
 
index 1180c5e..07a5c24 100644 (file)
@@ -169,7 +169,7 @@ abstract class Action {
                        return $this->context;
                } elseif ( $this->page instanceof Article ) {
                        // NOTE: $this->page can be a WikiPage, which does not have a context.
-                       wfDebug( __METHOD__ . ': no context known, falling back to Article\'s context.' );
+                       wfDebug( __METHOD__ . ": no context known, falling back to Article's context.\n" );
                        return $this->page->getContext();
                }
 
index e1c0874..f6557a5 100644 (file)
@@ -386,6 +386,9 @@ class ApiMain extends ApiBase {
         * @param Exception $e
         */
        protected function handleException( Exception $e ) {
+               // Bug 63145: Rollback any open database transactions
+               MWExceptionHandler::rollbackMasterChangesAndLog( $e );
+
                // Allow extra cleanup and logging
                wfRunHooks( 'ApiMain::onException', array( $this, $e ) );
 
index c54e8ba..30f8adb 100644 (file)
@@ -92,7 +92,7 @@ class ApiUpload extends ApiBase {
                } elseif ( $this->mParams['async'] && $this->mParams['filekey'] ) {
                        // defer verification to background process
                } else {
-                       wfDebug( __METHOD__ . 'about to verify' );
+                       wfDebug( __METHOD__ . " about to verify\n" );
                        $this->verifyUpload();
                }
 
index c56111f..d0274a1 100644 (file)
@@ -212,7 +212,7 @@ class LocalisationCache {
                        }
                }
 
-               wfDebug( get_class( $this ) . ": using store $storeClass\n" );
+               wfDebugLog( 'caches', get_class( $this ) . ": using store $storeClass" );
                if ( !empty( $conf['storeDirectory'] ) ) {
                        $storeConf['directory'] = $conf['storeDirectory'];
                }
@@ -1281,7 +1281,7 @@ class LCStoreCDB implements LCStore {
                                try {
                                        $this->readers[$code] = CdbReader::open( $fileName );
                                } catch ( CdbException $e ) {
-                                       wfDebug( __METHOD__ . ": unable to open cdb file for reading" );
+                                       wfDebug( __METHOD__ . ": unable to open cdb file for reading\n" );
                                }
                        }
                }
@@ -1294,7 +1294,7 @@ class LCStoreCDB implements LCStore {
                                $value = $this->readers[$code]->get( $key );
                        } catch ( CdbException $e ) {
                                wfDebug( __METHOD__ . ": CdbException caught, error message was "
-                                       . $e->getMessage() );
+                                       . $e->getMessage() . "\n" );
                        }
                        if ( $value === false ) {
                                return null;
index 9e702e3..5db814d 100644 (file)
@@ -127,7 +127,7 @@ class RedisConnectionPool {
                // Initialize the object at the hash as needed...
                if ( !isset( self::$instances[$id] ) ) {
                        self::$instances[$id] = new self( $options );
-                       wfDebug( "Creating a new " . __CLASS__ . " instance with id $id." );
+                       wfDebug( "Creating a new " . __CLASS__ . " instance with id $id.\n" );
                }
 
                return self::$instances[$id];
@@ -153,7 +153,7 @@ class RedisConnectionPool {
                        } else {
                                // Server is dead
                                wfDebug( "server $server is marked down for another " .
-                                       ( $this->downServers[$server] - $now ) . " seconds, can't get connection" );
+                                       ( $this->downServers[$server] - $now ) . " seconds, can't get connection\n" );
 
                                return false;
                        }
index 08e1885..536d721 100644 (file)
@@ -86,12 +86,12 @@ class CloneDatabase {
                                && !in_array( $this->db->getType(), array( 'postgres', 'oracle' ) )
                        ) {
                                $this->db->dropTable( $tbl, __METHOD__ );
-                               wfDebug( __METHOD__ . " dropping {$newTableName}\n", true );
+                               wfDebug( __METHOD__ . " dropping {$newTableName}\n" );
                                //Dropping the oldTable because the prefix was changed
                        }
 
                        # Create new table
-                       wfDebug( __METHOD__ . " duplicating $oldTableName to $newTableName\n", true );
+                       wfDebug( __METHOD__ . " duplicating $oldTableName to $newTableName\n" );
                        $this->db->duplicateTableStructure( $oldTableName, $newTableName, $this->useTemporaryTables );
                }
        }
index b0794fb..52a3298 100644 (file)
@@ -3452,7 +3452,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        );
                }
 
-               if ( $flush != 'flush' ) {
+               if ( $flush !== 'flush' ) {
                        if ( !$this->mTrxLevel ) {
                                wfWarn( "$fname: No transaction to commit, something got out of sync!" );
                        } elseif ( $this->mTrxAutomatic ) {
@@ -3494,11 +3494,27 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * No-op on non-transactional databases.
         *
         * @param string $fname
+        * @param string $flush Flush flag, set to 'flush' to disable warnings about
+        *   calling rollback when no transaction is in progress. This will silently
+        *   break any ongoing explicit transaction. Only set the flush flag if you
+        *   are sure that it is safe to ignore these warnings in your context.
+        * @since 1.23 Added $flush parameter
         */
-       final public function rollback( $fname = __METHOD__ ) {
-               if ( !$this->mTrxLevel ) {
-                       wfWarn( "$fname: No transaction to rollback, something got out of sync!" );
+       final public function rollback( $fname = __METHOD__, $flush = '' ) {
+               if ( $flush !== 'flush' ) {
+                       if ( !$this->mTrxLevel ) {
+                               wfWarn( "$fname: No transaction to rollback, something got out of sync!" );
+                       } elseif ( $this->mTrxAutomatic ) {
+                               wfWarn( "$fname: Explicit rollback of implicit transaction. Something may be out of sync!" );
+                       }
+               } else {
+                       if ( !$this->mTrxLevel ) {
+                               return; // nothing to do
+                       } elseif ( !$this->mTrxAutomatic ) {
+                               wfWarn( "$fname: Flushing an explicit transaction, getting out of sync!" );
+                       }
                }
+
                $this->doRollback( $fname );
                $this->mTrxIdleCallbacks = array(); // cancel
                $this->mTrxPreCommitCallbacks = array(); // cancel
index ae105e2..fcce870 100644 (file)
@@ -191,6 +191,27 @@ abstract class LBFactory {
        function commitMasterChanges() {
                $this->forEachLBCallMethod( 'commitMasterChanges' );
        }
+
+       /**
+        * Rollback changes on all master connections
+        * @since 1.23
+        */
+       function rollbackMasterChanges() {
+               $this->forEachLBCallMethod( 'rollbackMasterChanges' );
+       }
+
+       /**
+        * Detemine if any master connection has pending changes.
+        * @since 1.23
+        * @return bool
+        */
+       function hasMasterChanges() {
+               $ret = false;
+               $this->forEachLB( function ( $lb ) use ( &$ret ) {
+                       $ret = $ret || $lb->hasMasterChanges();
+               } );
+               return $ret;
+       }
 }
 
 /**
index a1703f0..8aa8061 100644 (file)
@@ -949,6 +949,49 @@ class LoadBalancer {
                }
        }
 
+       /**
+        * Issue ROLLBACK only on master, only if queries were done on connection
+        * @since 1.23
+        */
+       function rollbackMasterChanges() {
+               // Always 0, but who knows.. :)
+               $masterIndex = $this->getWriterIndex();
+               foreach ( $this->mConns as $conns2 ) {
+                       if ( empty( $conns2[$masterIndex] ) ) {
+                               continue;
+                       }
+                       /** @var DatabaseBase $conn */
+                       foreach ( $conns2[$masterIndex] as $conn ) {
+                               if ( $conn->trxLevel() && $conn->writesOrCallbacksPending() ) {
+                                       $conn->rollback( __METHOD__, 'flush' );
+                               }
+                       }
+               }
+       }
+
+       /**
+        * Determine if there are any pending changes that need to be rolled back
+        * or committed.
+        * @since 1.23
+        * @return bool
+        */
+       function hasMasterChanges() {
+               // Always 0, but who knows.. :)
+               $masterIndex = $this->getWriterIndex();
+               foreach ( $this->mConns as $conns2 ) {
+                       if ( empty( $conns2[$masterIndex] ) ) {
+                               continue;
+                       }
+                       /** @var DatabaseBase $conn */
+                       foreach ( $conns2[$masterIndex] as $conn ) {
+                               if ( $conn->trxLevel() && $conn->writesOrCallbacksPending() ) {
+                                       return true;
+                               }
+                       }
+               }
+               return false;
+       }
+
        /**
         * @param $value null
         * @return Mixed
index 986a1f7..53990bf 100644 (file)
@@ -108,7 +108,8 @@ abstract class DataUpdate implements DeferrableUpdate {
                        }
                } catch ( Exception $ex ) {
                        $exception = $ex;
-                       wfDebug( "Caught exception, will rethrow after rollback: " . $ex->getMessage() );
+                       wfDebug( "Caught exception, will rethrow after rollback: " .
+                               $ex->getMessage() . "\n" );
                }
 
                // rollback remaining transactions
index 64e8999..8c7f05c 100644 (file)
@@ -101,6 +101,25 @@ class MWExceptionHandler {
                }
        }
 
+       /**
+        * If there are any open database transactions, roll them back and log
+        * the stack trace of the exception that should have been caught so the
+        * transaction could be aborted properly.
+        * @since 1.23
+        * @param Exception $e
+        */
+       public static function rollbackMasterChangesAndLog( Exception $e ) {
+               $factory = wfGetLBFactory();
+               if ( $factory->hasMasterChanges() ) {
+                       wfDebugLog( 'Bug56269',
+                               'Exception thrown with an uncommited database transaction: ' .
+                                       MWExceptionHandler::getLogMessage( $e ) . "\n" .
+                                       $e->getTraceAsString()
+                       );
+                       $factory->rollbackMasterChanges();
+               }
+       }
+
        /**
         * Exception handler which simulates the appropriate catch() handling:
         *
@@ -115,6 +134,8 @@ class MWExceptionHandler {
        public static function handle( $e ) {
                global $wgFullyInitialised;
 
+               self::rollbackMasterChangesAndLog( $e );
+
                self::report( $e );
 
                // Final cleanup
index ce5d52e..bec0d90 100644 (file)
@@ -34,7 +34,7 @@ class ThrottledError extends ErrorPageError {
 
        public function report() {
                global $wgOut;
-               $wgOut->setStatusCode( 503 );
+               $wgOut->setStatusCode( 429 );
                parent::report();
        }
 }
index 5e7b323..9de81e0 100644 (file)
@@ -128,10 +128,10 @@ class ExternalStoreDB extends ExternalStoreMedium {
                $lb = $this->getLoadBalancer( $cluster );
 
                if ( !in_array( "DB://" . $cluster, (array)$wgDefaultExternalStore ) ) {
-                       wfDebug( "read only external store" );
+                       wfDebug( "read only external store\n" );
                        $lb->allowLagged( true );
                } else {
-                       wfDebug( "writable external store" );
+                       wfDebug( "writable external store\n" );
                }
 
                return $lb->getConnection( DB_SLAVE, array(), $wiki );
index c19a51d..edf574f 100644 (file)
@@ -980,7 +980,7 @@ abstract class File {
                        if ( $this->repo ) {
                                // Defer rendering if a 404 handler is set up...
                                if ( $this->repo->canTransformVia404() && !( $flags & self::RENDER_NOW ) ) {
-                                       wfDebug( __METHOD__ . " transformation deferred." );
+                                       wfDebug( __METHOD__ . " transformation deferred.\n" );
                                        // XXX: Pass in the storage path even though we are not rendering anything
                                        // and the path is supposed to be an FS path. This is due to getScalerType()
                                        // getting called on the path and clobbering $thumb->getUrl() if it's false.
index 6097d31..e83c26d 100644 (file)
@@ -318,7 +318,7 @@ class JobQueueDB extends JobQueue {
                                $title = Title::makeTitleSafe( $row->job_namespace, $row->job_title );
                                if ( !$title ) {
                                        $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
-                                       wfDebug( "Row has invalid title '{$row->job_title}'." );
+                                       wfDebug( "Row has invalid title '{$row->job_title}'.\n" );
                                        continue; // try again
                                }
                                $job = Job::factory( $row->job_cmd, $title,
@@ -463,7 +463,7 @@ class JobQueueDB extends JobQueue {
                                        array( 'job_cmd' => $this->type, 'job_token' => $uuid ), __METHOD__
                                );
                                if ( !$row ) { // raced out by duplicate job removal
-                                       wfDebug( "Row deleted as duplicate by another process." );
+                                       wfDebug( "Row deleted as duplicate by another process.\n" );
                                }
                        } else {
                                break; // nothing to do
index 4f626b2..d72ffca 100644 (file)
@@ -75,13 +75,17 @@ class HttpStatus {
                        422 => 'Unprocessable Entity',
                        423 => 'Locked',
                        424 => 'Failed Dependency',
+                       428 => 'Precondition Required',
+                       429 => 'Too Many Requests',
+                       431 => 'Request Header Fields Too Large',
                        500 => 'Internal Server Error',
                        501 => 'Not Implemented',
                        502 => 'Bad Gateway',
                        503 => 'Service Unavailable',
                        504 => 'Gateway Timeout',
                        505 => 'HTTP Version Not Supported',
-                       507 => 'Insufficient Storage'
+                       507 => 'Insufficient Storage',
+                       511 => 'Network Authentication Required',
                );
                return isset( $statusMessage[$code] ) ? $statusMessage[$code] : null;
        }
index f2c4fbf..0fefe69 100644 (file)
@@ -3416,7 +3416,8 @@ class Parser {
                                        }
                                } elseif ( MWNamespace::isNonincludable( $title->getNamespace() ) ) {
                                        $found = false; # access denied
-                                       wfDebug( __METHOD__ . ": template inclusion denied for " . $title->getPrefixedDBkey() );
+                                       wfDebug( __METHOD__ . ": template inclusion denied for " .
+                                               $title->getPrefixedDBkey() . "\n" );
                                } else {
                                        list( $text, $title ) = $this->getTemplateDom( $title );
                                        if ( $text !== false ) {
@@ -4150,6 +4151,10 @@ class Parser {
         * Add a tracking category, getting the title from a system message,
         * or print a debug message if the title is invalid.
         *
+        * Please add any message that you use with this function to
+        * $wgTrackingCategories. That way they will be listed on
+        * Special:TrackingCategories.
+        *
         * @param string $msg message key
         * @return Boolean: whether the addition was successful
         */
@@ -5206,7 +5211,7 @@ class Parser {
                                                                $handlerOptions[$paramName] = $match;
                                                        } else {
                                                                // Guess not. Append it to the caption.
-                                                               wfDebug( "$parameterMatch failed parameter validation" );
+                                                               wfDebug( "$parameterMatch failed parameter validation\n" );
                                                                $label .= '|' . $parameterMatch;
                                                        }
                                                }
index 22ddfb8..c2e5b03 100644 (file)
@@ -56,7 +56,7 @@ class IRCColourfulRCFeedFormatter implements RCFeedFormatter {
                                $query .= '&rcid=' . $attribs['rc_id'];
                        }
                        // HACK: We need this hook for WMF's secure server setup
-                       wfRunHooks( 'IRCLineURL', array( &$url, &$query ) );
+                       wfRunHooks( 'IRCLineURL', array( &$url, &$query, $rc ) );
                        $url .= $query;
                }
 
index b11d6c8..5ee6bd2 100644 (file)
@@ -33,7 +33,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
        /* Protected Methods */
 
        /**
-        * @param $context ResourceLoaderContext
+        * @param ResourceLoaderContext $context
         * @return array
         */
        protected function getConfig( $context ) {
@@ -118,66 +118,95 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
        }
 
        /**
-        * Gets registration code for all modules
+        * Get registration code for all modules.
         *
-        * @param $context ResourceLoaderContext object
-        * @return String: JavaScript code for registering all modules with the client loader
+        * @param ResourceLoaderContext $context object
+        * @return string JavaScript code for registering all modules with the client loader
         */
        public static function getModuleRegistrations( ResourceLoaderContext $context ) {
                global $wgCacheEpoch;
                wfProfileIn( __METHOD__ );
 
-               $out = '';
-               $registrations = array();
                $resourceLoader = $context->getResourceLoader();
                $target = $context->getRequest()->getVal( 'target', 'desktop' );
 
-               // Register sources
-               $out .= ResourceLoader::makeLoaderSourcesScript( $resourceLoader->getSources() );
+               $out = '';
+               $registryData = array();
 
-               // Register modules
+               // Get registry data
                foreach ( $resourceLoader->getModuleNames() as $name ) {
                        $module = $resourceLoader->getModule( $name );
                        $moduleTargets = $module->getTargets();
                        if ( !in_array( $target, $moduleTargets ) ) {
                                continue;
                        }
-                       $deps = $module->getDependencies();
-                       $group = $module->getGroup();
-                       $source = $module->getSource();
-                       // Support module loader scripts
-                       $loader = $module->getLoaderScript();
-                       if ( $loader !== false ) {
-                               $version = wfTimestamp( TS_ISO_8601_BASIC,
-                                       $module->getModifiedTime( $context ) );
-                               $out .= ResourceLoader::makeCustomLoaderScript( $name, $version, $deps, $group, $source, $loader );
-                               continue;
-                       }
 
-                       // Automatically register module
                        // getModifiedTime() is supposed to return a UNIX timestamp, but it doesn't always
                        // seem to do that, and custom implementations might forget. Coerce it to TS_UNIX
                        $moduleMtime = wfTimestamp( TS_UNIX, $module->getModifiedTime( $context ) );
                        $mtime = max( $moduleMtime, wfTimestamp( TS_UNIX, $wgCacheEpoch ) );
 
-                       if ( !count( $deps ) && $group === null && $source === 'local' ) {
-                               // Modules without dependencies, a group or a foreign source pass two arguments (name, timestamp) to
-                               // mw.loader.register()
-                               $registrations[] = array( $name, $mtime );
-                       } elseif ( $group === null && $source === 'local' ) {
-                               // Modules with dependencies but no group or foreign source pass three arguments
-                               // (name, timestamp, dependencies) to mw.loader.register()
-                               $registrations[] = array( $name, $mtime, $deps );
-                       } elseif ( $source === 'local' ) {
-                               // Modules with a group but no foreign source pass four arguments (name, timestamp, dependencies, group)
-                               // to mw.loader.register()
-                               $registrations[] = array( $name, $mtime, $deps, $group );
+                       // FIXME: Convert to numbers, wfTimestamp always gives us stings, even for TS_UNIX
+
+                       $registryData[ $name ] = array(
+                               'version' => $mtime,
+                               'dependencies' => $module->getDependencies(),
+                               'group' => $module->getGroup(),
+                               'source' => $module->getSource(),
+                               'loader' => $module->getLoaderScript(),
+                       );
+               }
+
+               // Register sources
+               $out .= ResourceLoader::makeLoaderSourcesScript( $resourceLoader->getSources() );
+
+               // Concatenate module loader scripts and figure out the different call
+               // signatures for mw.loader.register
+               $registrations = array();
+               foreach ( $registryData as $name => $data ) {
+                       if ( $data['loader'] !== false ) {
+                               $out .= ResourceLoader::makeCustomLoaderScript(
+                                       $name,
+                                       wfTimestamp( TS_ISO_8601_BASIC, $data['version'] ),
+                                       $data['dependencies'],
+                                       $data['group'],
+                                       $data['source'],
+                                       $data['loader']
+                               );
+                               continue;
+                       }
+
+                       if ( !count( $data['dependencies'] ) && $data['group'] === null && $data['source'] === 'local' ) {
+                               // Modules without dependencies, a group or a foreign source;
+                               // call mw.loader.register(name, timestamp)
+                               $registrations[] = array( $name, $data['version'] );
+                       } elseif ( $data['group'] === null && $data['source'] === 'local' ) {
+                               // Modules with dependencies but no group or foreign source;
+                               // call mw.loader.register(name, timestamp, dependencies)
+                               $registrations[] = array( $name, $data['version'], $data['dependencies'] );
+                       } elseif ( $data['source'] === 'local' ) {
+                               // Modules with a group but no foreign source;
+                               // call mw.loader.register(name, timestamp, dependencies, group)
+                               $registrations[] = array(
+                                       $name,
+                                       $data['version'],
+                                       $data['dependencies'],
+                                       $data['group']
+                               );
                        } else {
-                               // Modules with a foreign source pass five arguments (name, timestamp, dependencies, group, source)
-                               // to mw.loader.register()
-                               $registrations[] = array( $name, $mtime, $deps, $group, $source );
+                               // Modules with a foreign source;
+                               // call mw.loader.register(name, timestamp, dependencies, group, source)
+                               $registrations[] = array(
+                                       $name,
+                                       $data['version'],
+                                       $data['dependencies'],
+                                       $data['group'],
+                                       $data['source']
+                               );
                        }
                }
+
+               // Register modules
                $out .= ResourceLoader::makeLoaderRegisterScript( $registrations );
 
                wfProfileOut( __METHOD__ );
@@ -199,7 +228,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
         * This is a helper for getScript(), but can also be called standalone, such
         * as when generating an AppCache manifest.
         *
-        * @param $context ResourceLoaderContext
+        * @param ResourceLoaderContext $context
         * @return string
         */
        public static function getStartupModulesUrl( ResourceLoaderContext $context ) {
@@ -230,7 +259,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
        }
 
        /**
-        * @param $context ResourceLoaderContext
+        * @param ResourceLoaderContext $context
         * @return string
         */
        public function getScript( ResourceLoaderContext $context ) {
@@ -268,7 +297,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
        }
 
        /**
-        * @param $context ResourceLoaderContext
+        * @param ResourceLoaderContext $context
         * @return array|mixed
         */
        public function getModifiedTime( ResourceLoaderContext $context ) {
index 18793e3..15a71ff 100644 (file)
@@ -79,6 +79,7 @@ class SpecialPageFactory {
                'Categories' => 'SpecialCategories',
                'Listredirects' => 'ListredirectsPage',
                'PagesWithProp' => 'SpecialPagesWithProp',
+               'TrackingCategories' => 'SpecialTrackingCategories',
 
                // Login/create account
                'Userlogin' => 'LoginForm',
index d01bfd7..734544d 100644 (file)
  */
 class SpecialCategories extends SpecialPage {
 
-       function __construct() {
+       /**
+        * @var PageLinkRenderer
+        */
+       protected $linkRenderer = null;
+
+       public function __construct() {
                parent::__construct( 'Categories' );
+
+               // Since we don't control the constructor parameters, we can't inject services that way.
+               // Instead, we initialize services in the execute() method, and allow them to be overridden
+               // using the initServices() method.
+       }
+
+       /**
+        * Initialize or override the PageLinkRenderer SpecialCategories collaborates with.
+        * Useful mainly for testing.
+        *
+        * @todo: the pager should also be injected, and de-coupled from the rendering logic.
+        *
+        * @param PageLinkRenderer $linkRenderer
+        */
+       public function setPageLinkRenderer(
+               PageLinkRenderer $linkRenderer
+       ) {
+               $this->linkRenderer = $linkRenderer;
+       }
+
+       /**
+        * Initialize any services we'll need (unless it has already been provided via a setter).
+        * This allows for dependency injection even though we don't control object creation.
+        */
+       private function initServices() {
+               if ( !$this->linkRenderer ) {
+                       $lang = $this->getContext()->getLanguage();
+                       $titleFormatter = new MediaWikiTitleCodec( $lang, GenderCache::singleton() );
+                       $this->linkRenderer = new MediaWikiPageLinkRenderer( $titleFormatter );
+               }
        }
 
-       function execute( $par ) {
+       public function execute( $par ) {
+               $this->initServices();
+
                $this->setHeaders();
                $this->outputHeader();
                $this->getOutput()->allowClickjacking();
 
                $from = $this->getRequest()->getText( 'from', $par );
 
-               $cap = new CategoryPager( $this->getContext(), $from );
+               $cap = new CategoryPager( $this->getContext(), $from, $this->linkRenderer );
                $cap->doQuery();
 
                $this->getOutput()->addHTML(
@@ -63,7 +100,19 @@ class SpecialCategories extends SpecialPage {
  * @ingroup SpecialPage Pager
  */
 class CategoryPager extends AlphabeticPager {
-       function __construct( IContextSource $context, $from ) {
+
+       /**
+        * @var PageLinkRenderer
+        */
+       protected $linkRenderer;
+
+       /**
+        * @param IContextSource $context
+        * @param string $from
+        * @param PageLinkRenderer $linkRenderer
+        */
+       public function __construct( IContextSource $context, $from, PageLinkRenderer $linkRenderer
+       ) {
                parent::__construct( $context );
                $from = str_replace( ' ', '_', $from );
                if ( $from !== '' ) {
@@ -71,6 +120,8 @@ class CategoryPager extends AlphabeticPager {
                        $this->setOffset( $from );
                        $this->setIncludeOffset( true );
                }
+
+               $this->linkRenderer = $linkRenderer;
        }
 
        function getQueryInfo() {
@@ -120,11 +171,12 @@ class CategoryPager extends AlphabeticPager {
        }
 
        function formatRow( $result ) {
-               $title = Title::makeTitle( NS_CATEGORY, $result->cat_title );
-               $titleText = Linker::link( $title, htmlspecialchars( $title->getText() ) );
-               $count = $this->msg( 'nmembers' )->numParams( $result->cat_pages )->escaped();
+               $title = new TitleValue( NS_CATEGORY, $result->cat_title );
+               $text = $title->getText();
+               $link = $this->linkRenderer->renderHtmlLink( $title, $text );
 
-               return Xml::tags( 'li', null, $this->getLanguage()->specialList( $titleText, $count ) ) . "\n";
+               $count = $this->msg( 'nmembers' )->numParams( $result->cat_pages )->escaped();
+               return Html::rawElement( 'li', null, $this->getLanguage()->specialList( $link, $count ) ) . "\n";
        }
 
        public function getStartForm( $from ) {
index af4f852..51606b7 100644 (file)
@@ -1095,7 +1095,7 @@ class ContribsPager extends ReverseChronologicalPager {
                wfRunHooks( 'ContributionsLineEnding', array( $this, &$ret, $row, &$classes ) );
 
                if ( $classes === array() && $ret === '' ) {
-                       wfDebug( 'Dropping Special:Contribution row that could not be formatted' );
+                       wfDebug( "Dropping Special:Contribution row that could not be formatted\n" );
                        $ret = "<!-- Could not format Special:Contribution row. -->\n";
                } else {
                        $ret = Html::rawElement( 'li', array( 'class' => $classes ), $ret ) . "\n";
index 0b5b825..5995347 100644 (file)
  * @ingroup SpecialPage
  */
 class LinkSearchPage extends QueryPage {
+
+       /**
+        * @var PageLinkRenderer
+        */
+       protected $linkRenderer = null;
+
        function setParams( $params ) {
                $this->mQuery = $params['query'];
                $this->mNs = $params['namespace'];
@@ -35,6 +41,36 @@ class LinkSearchPage extends QueryPage {
 
        function __construct( $name = 'LinkSearch' ) {
                parent::__construct( $name );
+
+               // Since we don't control the constructor parameters, we can't inject services that way.
+               // Instead, we initialize services in the execute() method, and allow them to be overridden
+               // using the setServices() method.
+       }
+
+       /**
+        * Initialize or override the PageLinkRenderer LinkSearchPage collaborates with.
+        * Useful mainly for testing.
+        *
+        * @todo: query logic and rendering logic should be split and also injected
+        *
+        * @param PageLinkRenderer $linkRenderer
+        */
+       public function setPageLinkRenderer(
+               PageLinkRenderer $linkRenderer
+       ) {
+               $this->linkRenderer = $linkRenderer;
+       }
+
+       /**
+        * Initialize any services we'll need (unless it has already been provided via a setter).
+        * This allows for dependency injection even though we don't control object creation.
+        */
+       private function initServices() {
+               if ( !$this->linkRenderer ) {
+                       $lang = $this->getContext()->getLanguage();
+                       $titleFormatter = new MediaWikiTitleCodec( $lang, GenderCache::singleton() );
+                       $this->linkRenderer = new MediaWikiPageLinkRenderer( $titleFormatter );
+               }
        }
 
        function isCacheable() {
@@ -44,6 +80,8 @@ class LinkSearchPage extends QueryPage {
        function execute( $par ) {
                global $wgUrlProtocols, $wgMiserMode, $wgScript;
 
+               $this->initServices();
+
                $this->setHeaders();
                $this->outputHeader();
 
@@ -219,9 +257,10 @@ class LinkSearchPage extends QueryPage {
         * @return string
         */
        function formatResult( $skin, $result ) {
-               $title = Title::makeTitle( $result->namespace, $result->title );
+               $title = new TitleValue( (int)$result->namespace, $result->title );
+               $pageLink = $this->linkRenderer->renderHtmlLink( $title );
+
                $url = $result->url;
-               $pageLink = Linker::linkKnown( $title );
                $urlLink = Linker::makeExternalLink( $url, $url );
 
                return $this->msg( 'linksearch-line' )->rawParams( $urlLink, $pageLink )->escaped();
index 81463e5..c10b7a6 100644 (file)
@@ -176,6 +176,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
 
                # Initialise checkboxes
                $this->checks = array(
+                       # Messages: revdelete-hide-text, revdelete-hide-image, revdelete-hide-name
                        array( $this->typeLabels['check-label'], 'wpHidePrimary',
                                RevisionDeleter::getRevdelConstant( $this->typeName )
                        ),
@@ -352,6 +353,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
        protected function showForm() {
                $userAllowed = true;
 
+               // Messages: revdelete-selected-text, revdelete-selected-file, logdelete-selected
                $this->getOutput()->wrapWikiMsg( "<strong>$1</strong>", array( $this->typeLabels['selected'],
                        $this->getLanguage()->formatNum( count( $this->ids ) ), $this->targetObj->getPrefixedText() ) );
 
@@ -449,6 +451,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
         * @todo FIXME: Wikimedia-specific policy text
         */
        protected function addUsageText() {
+               // Messages: revdelete-text-text, revdelete-text-file, logdelete-text
                $this->getOutput()->wrapWikiMsg( "<strong>$1</strong>\n$2", $this->typeLabels['text'], 'revdelete-text-others' );
                if ( $this->getUser()->isAllowed( 'suppressrevision' ) ) {
                        $this->getOutput()->addWikiMsg( 'revdelete-suppress-text' );
@@ -472,6 +475,8 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                                $bitfield = RevisionDeleter::extractBitfield( $this->extractBitParams(), $bitfield );
                        }
                        foreach ( $this->checks as $item ) {
+                               // Messages: revdelete-hide-text, revdelete-hide-image, revdelete-hide-name,
+                               // revdelete-hide-comment, revdelete-hide-user, revdelete-hide-restricted
                                list( $message, $name, $field ) = $item;
                                $innerHTML = Xml::checkLabel( $this->msg( $message )->text(), $name, $name, $bitfield & $field );
                                if ( $field == Revision::DELETED_RESTRICTED ) {
@@ -488,6 +493,8 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                        $html .= '<th class="mw-revdel-checkbox">' . $this->msg( 'revdelete-radio-set' )->escaped() . '</th>';
                        $html .= "<th></th></tr>\n";
                        foreach ( $this->checks as $item ) {
+                               // Messages: revdelete-hide-text, revdelete-hide-image, revdelete-hide-name,
+                               // revdelete-hide-comment, revdelete-hide-user, revdelete-hide-restricted
                                list( $message, $name, $field ) = $item;
                                // If there are several items, use third state by default...
                                if ( $this->submitClicked ) {
@@ -556,6 +563,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
         * Report that the submit operation succeeded
         */
        protected function success() {
+               // Messages: revdelete-success, logdelete-success
                $this->getOutput()->setPageTitle( $this->msg( 'actioncomplete' ) );
                $this->getOutput()->wrapWikiMsg( "<span class=\"success\">\n$1\n</span>", $this->typeLabels['success'] );
                $this->wasSaved = true;
@@ -567,6 +575,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
         * Report that the submit operation failed
         */
        protected function failure( $status ) {
+               // Messages: revdelete-failure, logdelete-failure
                $this->getOutput()->setPageTitle( $this->msg( 'actionfailed' ) );
                $this->getOutput()->addWikiText( $status->getWikiText( $this->typeLabels['failure'] ) );
                $this->showForm();
diff --git a/includes/specials/SpecialTrackingCategories.php b/includes/specials/SpecialTrackingCategories.php
new file mode 100644 (file)
index 0000000..9ec3c5b
--- /dev/null
@@ -0,0 +1,135 @@
+<?php
+/**
+ * Implements Special:TrackingCategories
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+
+/**
+ * A special page that displays list of tracking categories
+ * Tracking categories allow pages with certain characteristics to be tracked.
+ * It works by adding any such page to a category automatically.
+ * Category is specified by the tracking category's system message.
+ *
+ * @ingroup SpecialPage
+ * @since 1.23
+ */
+
+class SpecialTrackingCategories extends SpecialPage {
+       function __construct() {
+               parent::__construct( 'TrackingCategories' );
+       }
+
+       function execute( $par ) {
+               // Global array containing names of tracking categories
+               global $wgTrackingCategories;
+
+               $this->setHeaders();
+               $this->outputHeader();
+               $this->getOutput()->allowClickjacking();
+               $this->getOutput()->addHTML(
+                       Html::openElement( 'table', array( 'class' => 'mw-datatable TablePager',
+                               'id' => 'mw-trackingcategories-table' ) ) . "\n" .
+                       "<thead><tr>
+                       <th>" .
+                               $this->msg( 'trackingcategories-msg' )->escaped() . "
+                       </th>
+                       <th>" .
+                               $this->msg( 'trackingcategories-name' )->escaped() .
+                       "</th>
+                       <th>" .
+                               $this->msg( 'trackingcategories-desc' )->escaped() . "
+                       </th>
+                       </tr></thead>"
+               );
+
+               foreach( $wgTrackingCategories as $catMsg ) {
+                       /*
+                        * Check if the tracking category varies by namespace
+                        * Otherwise only pages in the current namespace will be displayed
+                        * If it does vary, show pages considering all namespaces
+                        */
+                       $msgObj = $this->msg( $catMsg )->inContentLanguage();
+                       $allMsgs = array();
+                       $catDesc = $catMsg . '-desc';
+                       $catMsgTitle = Title::makeTitleSafe( NS_MEDIAWIKI, $catMsg );
+                       $catMsgTitleText = Linker::link(
+                               $catMsgTitle,
+                               htmlspecialchars( $catMsg )
+                       );
+
+                       if ( strpos( $msgObj->plain(), '{{NAMESPACE}}' ) !== false ) {
+                               $ns = MWNamespace::getValidNamespaces();
+                               foreach ( $ns as $namesp ) {
+                                       $tempTitle = Title::makeTitleSafe( $namesp, $catMsg );
+                                       $catName = $msgObj->title( $tempTitle )->text();
+                                       if ( !$msgObj->isDisabled() ) {
+                                               $catTitle = Title::makeTitleSafe( NS_CATEGORY, $catName );
+                                               $catTitleText = Linker::link(
+                                                       $catTitle,
+                                                       htmlspecialchars( $catName )
+                                               );
+                                               $allMsgs[] = $catTitleText;
+                                       }
+                               }
+                       } else {
+                               $catName = $msgObj->text();
+                               if ( !$msgObj->isDisabled() ) {
+                                       $catTitle = Title::makeTitleSafe( NS_CATEGORY, $catName );
+                                       $catTitleText = Linker::link(
+                                               $catTitle,
+                                               htmlspecialchars( $catName )
+                                       );
+                                       $classes = array();
+                               } else {
+                                       $catTitleText = $this->msg( 'trackingcategories-disabled' )->parse();
+                               }
+                               $allMsgs[] = $catTitleText;
+                       }
+
+                       /*
+                        * Show category description if it exists as a system message
+                        * as category-name-desc
+                        */
+                       $descMsg = $this->msg( $catDesc );
+                       if ( $descMsg->isBlank() ) {
+                               $descMsg = $this->msg( 'trackingcategories-nodesc' );
+                       }
+
+                       $this->getOutput()->addHTML(
+                               Html::openElement( 'tr' ) .
+                               Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-name' ) ) .
+                                       $this->getLanguage()->commaList( array_unique( $allMsgs ) ) .
+                               Html::closeElement( 'td' ) .
+                               Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-msg' ) ) .
+                                       $catMsgTitleText .
+                               Html::closeElement( 'td' ) .
+                               Html::openElement( 'td', array( 'class' => 'mw-trackingcategories-desc' ) ) .
+                                       $descMsg->parse() .
+                               Html::closeElement( 'td' ) .
+                               Html::closeElement( 'tr' )
+                       );
+               }
+               $this->getOutput()->addHTML( Html::closeElement( 'table' ) );
+       }
+
+       protected function getGroupName() {
+               return 'pages';
+       }
+}
index 4887daf..b46f942 100644 (file)
@@ -186,7 +186,7 @@ class SpecialUpload extends SpecialPage {
                } else {
                        # Backwards compatibility hook
                        if ( !wfRunHooks( 'UploadForm:initial', array( &$this ) ) ) {
-                               wfDebug( "Hook 'UploadForm:initial' broke output of the upload form" );
+                               wfDebug( "Hook 'UploadForm:initial' broke output of the upload form\n" );
 
                                return;
                        }
index 964bea1..33883b0 100644 (file)
@@ -339,7 +339,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
        public static function tryClearStashedUploads( $formData ) {
                if ( isset( $formData['Clear'] ) ) {
                        $stash = RepoGroup::singleton()->getLocalRepo()->getUploadStash();
-                       wfDebug( "stash has: " . print_r( $stash->listFiles(), true ) );
+                       wfDebug( 'stash has: ' . print_r( $stash->listFiles(), true ) . "\n" );
 
                        if ( !$stash->clear() ) {
                                return Status::newFatal( 'uploadstash-errclear' );
index 2a54ad7..db9a992 100644 (file)
@@ -265,8 +265,8 @@ class UserrightsPage extends SpecialPage {
                // update groups in external authentication database
                $wgAuth->updateExternalDBGroups( $user, $add, $remove );
 
-               wfDebug( 'oldGroups: ' . print_r( $oldGroups, true ) );
-               wfDebug( 'newGroups: ' . print_r( $newGroups, true ) );
+               wfDebug( 'oldGroups: ' . print_r( $oldGroups, true ) . "\n" );
+               wfDebug( 'newGroups: ' . print_r( $newGroups, true ) . "\n" );
                wfRunHooks( 'UserRights', array( &$user, $add, $remove ) );
 
                if ( $newGroups != $oldGroups ) {
diff --git a/includes/title/MalformedTitleException.php b/includes/title/MalformedTitleException.php
new file mode 100644 (file)
index 0000000..4b14a19
--- /dev/null
@@ -0,0 +1,33 @@
+<?php
+/**
+ * Representation of a page title within %MediaWiki.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ * @author Daniel Kinzler
+ */
+
+/**
+ * MalformedTitleException is thrown when a TitleParser is unable to parse a title string.
+ *
+ * @license GPL 2+
+ * @author Daniel Kinzler
+ */
+class MalformedTitleException extends Exception {
+
+}
diff --git a/includes/title/MediaWikiPageLinkRenderer.php b/includes/title/MediaWikiPageLinkRenderer.php
new file mode 100644 (file)
index 0000000..62ed4c2
--- /dev/null
@@ -0,0 +1,131 @@
+<?php
+/**
+ * A service for generating links from page titles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ * @author Daniel Kinzler
+ */
+
+/**
+ * A service for generating links from page titles.
+ *
+ * @see https://www.mediawiki.org/wiki/Requests_for_comment/TitleValue
+ */
+class MediaWikiPageLinkRenderer implements PageLinkRenderer {
+
+       /**
+        * @var TitleFormatter
+        */
+       protected $formatter;
+
+       /**
+        * @var string
+        */
+       protected $baseUrl;
+
+       /**
+        * @note $formatter and $baseUrl are currently not used for generating links,
+        * since we still rely on the Linker class to generate the actual HTML.
+        * Once this is reversed so that  Linker becomes a legacy interface to
+        * HtmlPageLinkRenderer, we will be using them, so it seems prudent to
+        * already declare the dependency and inject them.
+        *
+        * @param TitleFormatter $formatter formatter for generating the target title string
+        * @param string $baseUrl (currently unused, pending refactoring of Linker).
+        *        Defaults to $wgArticlePath.
+        */
+       public function __construct( TitleFormatter $formatter, $baseUrl = null ) {
+               if ( $baseUrl === null ) {
+                       $baseUrl = $GLOBALS['wgArticlePath'];
+               }
+
+               $this->formatter = $formatter;
+               $this->baseUrl = $baseUrl;
+       }
+
+       /**
+        * Returns the (partial) URL for the given page (including any section identifier).
+        *
+        * @param TitleValue $page The link's target
+        * @param array $params any additional URL parameters.
+        *
+        * @return string
+        */
+       public function getPageUrl( TitleValue $page, $params = array() ) {
+               //TODO: move the code from Linker::linkUrl here!
+               //The below is just a rough estimation!
+
+               $name = $this->formatter->getPrefixedText( $page );
+               $name = str_replace( ' ', '_', $name );
+               $name = wfUrlencode( $name );
+
+               $url = $this->baseUrl . $name;
+
+               if ( $params ) {
+                       $separator = ( strpos( $url, '?' ) ) ? '&' : '?';
+                       $url .= $separator . wfArrayToCgi( $params );
+               }
+
+               $fragment = $page->getFragment();
+               if ( $fragment !== '' ) {
+                       $url = $url . '#' . wfUrlencode( $fragment );
+               }
+
+               return $url;
+       }
+
+       /**
+        * Returns an HTML link to the given page, using the given surface text.
+        *
+        * @param TitleValue $page The link's target
+        * @param string $text The link's surface text (will be derived from $page if not given).
+        *
+        * @return string
+        */
+       public function renderHtmlLink( TitleValue $page, $text = null ) {
+               if ( $text === null ) {
+                       $text = $this->formatter->getFullText( $page );
+               }
+
+               // TODO: move the logic implemented by Linker here,
+               // using $this->formatter and $this->baseUrl, and
+               // re-implement Linker to use a HtmlPageLinkRenderer.
+               $title = Title::newFromTitleValue( $page );
+               $link = Linker::link( $title, htmlspecialchars( $text ) );
+               return $link;
+       }
+
+       /**
+        * Returns a wikitext link to the given page, using the given surface text.
+        *
+        * @param TitleValue $page The link's target
+        * @param string $text The link's surface text (will be derived from $page if not given).
+        *
+        * @return string
+        */
+       public function renderWikitextLink( TitleValue $page, $text = null ) {
+               if ( $text === null ) {
+                       $text = $this->formatter->getFullText( $page );
+               }
+
+               $name = $this->formatter->getFullText( $page );
+
+               return '[[:' . $name . '|' . wfEscapeWikiText( $text ) . ']]';
+       }
+}
diff --git a/includes/title/MediaWikiTitleCodec.php b/includes/title/MediaWikiTitleCodec.php
new file mode 100644 (file)
index 0000000..878f95d
--- /dev/null
@@ -0,0 +1,391 @@
+<?php
+/**
+ * A codec for %MediaWiki page titles.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ * @author Daniel Kinzler
+ */
+
+/**
+ * A codec for %MediaWiki page titles.
+ *
+ * @note: Normalization and validation is applied while parsing, not when formatting.
+ * It's possible to construct a TitleValue with an invalid title, and use MediaWikiTitleCodec
+ * to generate an (invalid) title string from it. TitleValues should be constructed only
+ * via parseTitle() or from a (semi)trusted source, such as the database.
+ *
+ * @see https://www.mediawiki.org/wiki/Requests_for_comment/TitleValue
+ */
+class MediaWikiTitleCodec implements TitleFormatter, TitleParser {
+
+       /**
+        * @var Language
+        */
+       protected $language;
+
+       /**
+        * @var GenderCache
+        */
+       protected $genderCache;
+
+       /**
+        * @var string[]
+        */
+       protected $localInterwikis;
+
+       /**
+        * @param Language $language the language object to use for localizing namespace names.
+        * @param GenderCache $genderCache the gender cache for generating gendered namespace names
+        * @param string[]|string $localInterwikis
+        */
+       public function __construct( Language $language, GenderCache $genderCache, $localInterwikis = array() ) {
+               $this->language = $language;
+               $this->genderCache = $genderCache;
+               $this->localInterwikis = (array)$localInterwikis;
+       }
+
+       /**
+        * @see TitleFormatter::getNamespaceName()
+        *
+        * @param int $namespace
+        * @param string $text
+        *
+        * @throws InvalidArgumentException if the namespace is invalid
+        * @return String
+        */
+       public function getNamespaceName( $namespace, $text ) {
+               if ( $this->language->needsGenderDistinction() &&
+                       MWNamespace::hasGenderDistinction( $namespace ) ) {
+
+                       //NOTE: we are assuming here that the title text is a user name!
+                       $gender = $this->genderCache->getGenderOf( $text, __METHOD__ );
+                       $name = $this->language->getGenderNsText( $namespace, $gender );
+               } else {
+                       $name = $this->language->getNsText( $namespace );
+               }
+
+               if ( $name === false ) {
+                       throw new InvalidArgumentException( 'Unknown namespace ID: ' . $namespace );
+               }
+
+               return $name;
+       }
+
+       /**
+        * @see TitleFormatter::formatTitle()
+        *
+        * @param int|bool $namespace The namespace ID (or false, if the namespace should be ignored)
+        * @param string $text The page title. Should be valid. Only minimal normalization is applied.
+        *        Underscores will be replaced.
+        * @param string $fragment The fragment name (may be empty).
+        *
+        * @throws InvalidArgumentException if the namespace is invalid
+        * @return string
+        */
+       public function formatTitle( $namespace, $text, $fragment = '' ) {
+               if ( $namespace !== false ) {
+                       $namespace = $this->getNamespaceName( $namespace, $text );
+
+                       if ( $namespace !== '' ) {
+                               $text = $namespace . ':' . $text;
+                       }
+               }
+
+               if ( $fragment !== '' ) {
+                       $text = $text . '#' . $fragment;
+               }
+
+               $text = str_replace( '_', ' ', $text );
+
+               return $text;
+       }
+
+       /**
+        * Parses the given text and constructs a TitleValue. Normalization
+        * is applied according to the rules appropriate for the form specified by $form.
+        *
+        * @param string $text the text to parse
+        * @param int $defaultNamespace namespace to assume per default (usually NS_MAIN)
+        *
+        * @throws MalformedTitleException
+        * @return TitleValue
+        */
+       public function parseTitle( $text, $defaultNamespace ) {
+               // NOTE: this is an ugly cludge that allows this class to share the
+               // code for parsing with the old Title class. The parser code should
+               // be refactored to avoid this.
+               $parts = $this->splitTitleString( $text, $defaultNamespace );
+
+               // Interwiki links are not supported by TitleValue
+               if ( $parts['interwiki'] !== '' ) {
+                       throw new MalformedTitleException( 'Title must not contain an interwiki prefix: ' . $text );
+               }
+
+               // Relative fragment links are not supported by TitleValue
+               if ( $parts['dbkey'] === '' ) {
+                       throw new MalformedTitleException( 'Title must not be empty: ' . $text );
+               }
+
+               return new TitleValue( $parts['namespace'], $parts['dbkey'], $parts['fragment'] );
+       }
+
+       /**
+        * @see TitleFormatter::getText()
+        *
+        * @param TitleValue $title
+        *
+        * @return string $title->getText()
+        */
+       public function getText( TitleValue $title ) {
+               return $this->formatTitle( false, $title->getText(), '' );
+       }
+
+       /**
+        * @see TitleFormatter::getText()
+        *
+        * @param TitleValue $title
+        *
+        * @return string
+        */
+       public function getPrefixedText( TitleValue $title ) {
+               return $this->formatTitle( $title->getNamespace(), $title->getText(), '' );
+       }
+
+       /**
+        * @see TitleFormatter::getText()
+        *
+        * @param TitleValue $title
+        *
+        * @return string
+        */
+       public function getFullText( TitleValue $title ) {
+               return $this->formatTitle( $title->getNamespace(), $title->getText(), $title->getFragment() );
+       }
+
+       /**
+        * Normalizes and splits a title string.
+        *
+        * This function removes illegal characters, splits off the interwiki and
+        * namespace prefixes, sets the other forms, and canonicalizes
+        * everything.
+        *
+        * @todo: this method is only exposed as a temporary measure to ease refactoring.
+        * It was copied with minimal changes from Title::secureAndSplit().
+        *
+        * @todo: This method should be split up and an appropriate interface
+        * defined for use by the Title class.
+        *
+        * @param string $text
+        * @param int $defaultNamespace
+        *
+        * @throws MalformedTitleException If $text is not a valid title string.
+        * @return array A mapp with the fields 'interwiki', 'fragment', 'namespace',
+        *         'user_case_dbkey', and 'dbkey'.
+        */
+       public function splitTitleString( $text, $defaultNamespace = NS_MAIN ) {
+               $dbkey = str_replace( ' ', '_', $text );
+
+               # Initialisation
+               $parts = array(
+                       'interwiki' => '',
+                       'fragment' => '',
+                       'namespace' => $defaultNamespace,
+                       'dbkey' => $dbkey,
+                       'user_case_dbkey' => $dbkey,
+               );
+
+               # Strip Unicode bidi override characters.
+               # Sometimes they slip into cut-n-pasted page titles, where the
+               # override chars get included in list displays.
+               $dbkey = preg_replace( '/\xE2\x80[\x8E\x8F\xAA-\xAE]/S', '', $dbkey );
+
+               # Clean up whitespace
+               # Note: use of the /u option on preg_replace here will cause
+               # input with invalid UTF-8 sequences to be nullified out in PHP 5.2.x,
+               # conveniently disabling them.
+               $dbkey = preg_replace( '/[ _\xA0\x{1680}\x{180E}\x{2000}-\x{200A}\x{2028}\x{2029}\x{202F}\x{205F}\x{3000}]+/u', '_', $dbkey );
+               $dbkey = trim( $dbkey, '_' );
+
+               if ( strpos( $dbkey, UTF8_REPLACEMENT ) !== false ) {
+                       # Contained illegal UTF-8 sequences or forbidden Unicode chars.
+                       throw new MalformedTitleException( 'Bad UTF-8 sequences found in title: ' . $text );
+               }
+
+               $parts['dbkey'] = $dbkey;
+
+               # Initial colon indicates main namespace rather than specified default
+               # but should not create invalid {ns,title} pairs such as {0,Project:Foo}
+               if ( $dbkey !== '' && ':' == $dbkey[0] ) {
+                       $parts['namespace'] = NS_MAIN;
+                       $dbkey = substr( $dbkey, 1 ); # remove the colon but continue processing
+                       $dbkey = trim( $dbkey, '_' ); # remove any subsequent whitespace
+               }
+
+               if ( $dbkey == '' ) {
+                       throw new MalformedTitleException( 'Empty title: ' . $text );
+               }
+
+               # Namespace or interwiki prefix
+               $firstPass = true;
+               $prefixRegexp = "/^(.+?)_*:_*(.*)$/S";
+               do {
+                       $m = array();
+                       if ( preg_match( $prefixRegexp, $dbkey, $m ) ) {
+                               $p = $m[1];
+                               if ( ( $ns = $this->language->getNsIndex( $p ) ) !== false ) {
+                                       # Ordinary namespace
+                                       $dbkey = $m[2];
+                                       $parts['namespace'] = $ns;
+                                       # For Talk:X pages, check if X has a "namespace" prefix
+                                       if ( $ns == NS_TALK && preg_match( $prefixRegexp, $dbkey, $x ) ) {
+                                               if ( $this->language->getNsIndex( $x[1] ) ) {
+                                                       # Disallow Talk:File:x type titles...
+                                                       throw new MalformedTitleException( 'Bad namespace prefix: ' . $text );
+                                               } elseif ( Interwiki::isValidInterwiki( $x[1] ) ) {
+                                                       //TODO: get rid of global state!
+                                                       # Disallow Talk:Interwiki:x type titles...
+                                                       throw new MalformedTitleException( 'Interwiki prefix found in title: ' . $text );
+                                               }
+                                       }
+                               } elseif ( Interwiki::isValidInterwiki( $p ) ) {
+                                       if ( !$firstPass ) {
+                                               //TODO: get rid of global state!
+                                               # Can't make a local interwiki link to an interwiki link.
+                                               # That's just crazy!
+                                               throw new MalformedTitleException( 'Interwiki prefix found in title: ' . $text );
+                                       }
+
+                                       # Interwiki link
+                                       $dbkey = $m[2];
+                                       $parts['interwiki'] = $this->language->lc( $p );
+
+                                       # Redundant interwiki prefix to the local wiki
+                                       foreach ( $this->localInterwikis as $localIW ) {
+                                               if ( 0 == strcasecmp( $parts['interwiki'], $localIW ) ) {
+                                                       if ( $dbkey == '' ) {
+                                                               # Can't have an empty self-link
+                                                               throw new MalformedTitleException( 'Local interwiki with empty title: ' . $text );
+                                                       }
+                                                       $parts['interwiki'] = '';
+                                                       $firstPass = false;
+
+                                                       # Do another namespace split...
+                                                       continue 2;
+                                               }
+                                       }
+
+                                       # If there's an initial colon after the interwiki, that also
+                                       # resets the default namespace
+                                       if ( $dbkey !== '' && $dbkey[0] == ':' ) {
+                                               $parts['namespace'] = NS_MAIN;
+                                               $dbkey = substr( $dbkey, 1 );
+                                       }
+                               }
+                               # If there's no recognized interwiki or namespace,
+                               # then let the colon expression be part of the title.
+                       }
+                       break;
+               } while ( true );
+
+               $fragment = strstr( $dbkey, '#' );
+               if ( false !== $fragment ) {
+                       $parts['fragment'] = str_replace( '_', ' ', substr( $fragment, 1 ) );
+                       $dbkey = substr( $dbkey, 0, strlen( $dbkey ) - strlen( $fragment ) );
+                       # remove whitespace again: prevents "Foo_bar_#"
+                       # becoming "Foo_bar_"
+                       $dbkey = preg_replace( '/_*$/', '', $dbkey );
+               }
+
+               # Reject illegal characters.
+               $rxTc = Title::getTitleInvalidRegex();
+               if ( preg_match( $rxTc, $dbkey ) ) {
+                       throw new MalformedTitleException( 'Illegal characters found in title: ' . $text );
+               }
+
+               # Pages with "/./" or "/../" appearing in the URLs will often be un-
+               # reachable due to the way web browsers deal with 'relative' URLs.
+               # Also, they conflict with subpage syntax.  Forbid them explicitly.
+               if (
+                       strpos( $dbkey, '.' ) !== false &&
+                       (
+                               $dbkey === '.' || $dbkey === '..' ||
+                               strpos( $dbkey, './' ) === 0 ||
+                               strpos( $dbkey, '../' ) === 0 ||
+                               strpos( $dbkey, '/./' ) !== false ||
+                               strpos( $dbkey, '/../' ) !== false ||
+                               substr( $dbkey, -2 ) == '/.' ||
+                               substr( $dbkey, -3 ) == '/..'
+                       )
+               ) {
+                       throw new MalformedTitleException( 'Bad title: ' . $text );
+               }
+
+               # Magic tilde sequences? Nu-uh!
+               if ( strpos( $dbkey, '~~~' ) !== false ) {
+                       throw new MalformedTitleException( 'Bad title: ' . $text );
+               }
+
+               # Limit the size of titles to 255 bytes. This is typically the size of the
+               # underlying database field. We make an exception for special pages, which
+               # don't need to be stored in the database, and may edge over 255 bytes due
+               # to subpage syntax for long titles, e.g. [[Special:Block/Long name]]
+               if (
+                       ( $parts['namespace'] != NS_SPECIAL && strlen( $dbkey ) > 255 )
+                       || strlen( $dbkey ) > 512
+               ) {
+                       throw new MalformedTitleException( 'Title too long: ' . substr( $dbkey, 0, 255 ) . '...' );
+               }
+
+               # Normally, all wiki links are forced to have an initial capital letter so [[foo]]
+               # and [[Foo]] point to the same place.  Don't force it for interwikis, since the
+               # other site might be case-sensitive.
+               $parts['user_case_dbkey'] = $dbkey;
+               if ( $parts['interwiki'] === '' ) {
+                       $dbkey = Title::capitalize( $dbkey, $parts['namespace'] );
+               }
+
+               # Can't make a link to a namespace alone... "empty" local links can only be
+               # self-links with a fragment identifier.
+               if ( $dbkey == '' && $parts['interwiki'] === '' ) {
+                       if ( $parts['namespace'] != NS_MAIN ) {
+                               throw new MalformedTitleException( 'Empty title: ' . $text );
+                       }
+               }
+
+               // Allow IPv6 usernames to start with '::' by canonicalizing IPv6 titles.
+               // IP names are not allowed for accounts, and can only be referring to
+               // edits from the IP. Given '::' abbreviations and caps/lowercaps,
+               // there are numerous ways to present the same IP. Having sp:contribs scan
+               // them all is silly and having some show the edits and others not is
+               // inconsistent. Same for talk/userpages. Keep them normalized instead.
+               if ( $parts['namespace'] == NS_USER || $parts['namespace'] == NS_USER_TALK ) {
+                       $dbkey = IP::sanitizeIP( $dbkey );
+               }
+
+               // Any remaining initial :s are illegal.
+               if ( $dbkey !== '' && ':' == $dbkey[0] ) {
+                       throw new MalformedTitleException( 'Title must not start with a colon: ' . $text );
+               }
+
+               # Fill fields
+               $parts['dbkey'] = $dbkey;
+               return $parts;
+       }
+
+}
diff --git a/includes/title/PageLinkRenderer.php b/includes/title/PageLinkRenderer.php
new file mode 100644 (file)
index 0000000..240a961
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Represents a link rendering service for %MediaWiki.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ * @author Daniel Kinzler
+ */
+
+/**
+ * Represents a link rendering service for %MediaWiki.
+ *
+ * This is designed to encapsulate the knowledge about how page titles map to
+ * URLs, and how links are encoded in a given output format.
+ *
+ * @see https://www.mediawiki.org/wiki/Requests_for_comment/TitleValue
+ */
+interface PageLinkRenderer {
+
+       /**
+        * Returns the URL for the given page.
+        *
+        * @todo expand this to cover the functionality of Linker::linkUrl
+        *
+        * @param TitleValue $page The link's target
+        * @param array $params any additional URL parameters.
+        *
+        * @return string
+        */
+       public function getPageUrl( TitleValue $page, $params = array() );
+
+       /**
+        * Returns an HTML link to the given page, using the given surface text.
+        *
+        * @todo expand this to cover the functionality of Linker::link
+        *
+        * @param TitleValue $page The link's target
+        * @param string $text The link's surface text (will be derived from $page if not given).
+        *
+        * @return string
+        */
+       public function renderHtmlLink( TitleValue $page, $text = null );
+
+       /**
+        * Returns a wikitext link to the given page, using the given surface text.
+        *
+        * @param TitleValue $page The link's target
+        * @param string $text The link's surface text (will be derived from $page if not given).
+        *
+        * @return string
+        */
+       public function renderWikitextLink( TitleValue $page, $text = null );
+
+}
diff --git a/includes/title/TitleFormatter.php b/includes/title/TitleFormatter.php
new file mode 100644 (file)
index 0000000..f3822b6
--- /dev/null
@@ -0,0 +1,91 @@
+<?php
+/**
+ * A title formatter service for %MediaWiki.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ * @author Daniel Kinzler
+ */
+
+/**
+ * A title formatter service for MediaWiki.
+ *
+ * This is designed to encapsulate knowledge about conventions for the title
+ * forms to be used in the database, in urls, in wikitext, etc.
+ *
+ * @see https://www.mediawiki.org/wiki/Requests_for_comment/TitleValue
+ */
+interface TitleFormatter {
+
+       /**
+        * Returns the title formatted for display.
+        * Per default, this includes the namespace but not the fragment.
+        *
+        * @note Normalization is applied if $title is not in TitleValue::TITLE_FORM.
+        *
+        * @param int|bool $namespace The namespace ID (or false, if the namespace should be ignored)
+        * @param string $text The page title
+        * @param string $fragment The fragment name (may be empty).
+        *
+        * @return string
+        */
+       public function formatTitle( $namespace, $text, $fragment = '' );
+
+       /**
+        * Returns the title text formatted for display, without namespace of fragment.
+        *
+        * @note: Only minimal normalization is applied. Consider using TitleValue::getText() directly.
+        *
+        * @param TitleValue $title the title to format
+        *
+        * @return string
+        */
+       public function getText( TitleValue $title );
+
+       /**
+        * Returns the title formatted for display, including the namespace name.
+        *
+        * @param TitleValue $title the title to format
+        *
+        * @return string
+        */
+       public function getPrefixedText( TitleValue $title );
+
+       /**
+        * Returns the title formatted for display, with namespace and fragment.
+        *
+        * @param TitleValue $title the title to format
+        *
+        * @return string
+        */
+       public function getFullText( TitleValue $title );
+
+       /**
+        * Returns the name of the namespace for the given title.
+        *
+        * @note This must take into account gender sensitive namespace names.
+        * @todo Move this to a separate interface
+        *
+        * @param int $namespace
+        * @param string $text
+        *
+        * @throws InvalidArgumentException
+        * @return String
+        */
+       public function getNamespaceName( $namespace, $text );
+}
diff --git a/includes/title/TitleParser.php b/includes/title/TitleParser.php
new file mode 100644 (file)
index 0000000..b3ef479
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+/**
+ * A title parser service for %MediaWiki.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ * @author Daniel Kinzler
+ */
+
+/**
+ * A title parser service for %MediaWiki.
+ *
+ * This is designed to encapsulate knowledge about conventions for the title
+ * forms to be used in the database, in urls, in wikitext, etc.
+ *
+ * @see https://www.mediawiki.org/wiki/Requests_for_comment/TitleValue
+ */
+interface TitleParser {
+
+       /**
+        * Parses the given text and constructs a TitleValue. Normalization
+        * is applied according to the rules appropriate for the form specified by $form.
+        *
+        * @note this only parses local page links, interwiki-prefixes etc. are not considered!
+        *
+        * @param string $text the text to parse
+        * @param int $defaultNamespace namespace to assume per default (usually NS_MAIN)
+        *
+        * @throws MalformedTitleException If the text is not a valid representation of a page title.
+        * @return TitleValue
+        */
+       public function parseTitle( $text, $defaultNamespace );
+}
diff --git a/includes/title/TitleValue.php b/includes/title/TitleValue.php
new file mode 100644 (file)
index 0000000..06e9058
--- /dev/null
@@ -0,0 +1,162 @@
+<?php
+/**
+ * Representation of a page title within %MediaWiki.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ * @author Daniel Kinzler
+ */
+
+/**
+ * Represents a page (or page fragment) title within %MediaWiki.
+ *
+ * @note In contrast to Title, this is designed to be a plain value object. That is,
+ * it is immutable, does not use global state, and causes no side effects.
+ *
+ * @note TitleValue represents the title of a local page (or fragment of a page).
+ * It does not represent a link, and does not support interwiki prefixes etc.
+ *
+ * @see https://www.mediawiki.org/wiki/Requests_for_comment/TitleValue
+ */
+class TitleValue {
+
+       /**
+        * @var int
+        */
+       protected $namespace;
+
+       /**
+        * @var string
+        */
+       protected $dbkey;
+
+       /**
+        * @var string
+        */
+       protected $fragment;
+
+       /**
+        * Constructs a TitleValue.
+        *
+        * @note: TitleValue expects a valid DB key; typically, a TitleValue is constructed either
+        * from a database entry, or by a TitleParser. We could apply "some" normalization here,
+        * such as substituting spaces by underscores, but that would encourage the use of
+        * un-normalized text when constructing TitleValues. For constructing a TitleValue from
+        * user input or external sources, use a TitleParser.
+        *
+        * @param $namespace int The namespace ID. This is not validated.
+        * @param $dbkey string The page title in valid DBkey form. No normalization is applied.
+        * @param $fragment string The fragment title. Use '' to represent the whole page.
+        *        No validation or normalization is applied.
+        *
+        * @throws InvalidArgumentException
+        */
+       public function __construct( $namespace, $dbkey, $fragment = '' ) {
+               if ( !is_int( $namespace ) ) {
+                       throw new InvalidArgumentException( '$namespace must be an integer' );
+               }
+
+               if ( !is_string( $dbkey ) ) {
+                       throw new InvalidArgumentException( '$dbkey must be a string' );
+               }
+
+               // Sanity check, no full validation or normalization applied here!
+               if ( preg_match( '/^_|[ \r\n\t]|_$/', $dbkey ) ) {
+                       throw new InvalidArgumentException( '$dbkey must be a valid DB key: ' . $dbkey );
+               }
+
+               if ( !is_string( $fragment ) ) {
+                       throw new InvalidArgumentException( '$fragment must be a string' );
+               }
+
+               if ( $dbkey === '' ) {
+                       throw new InvalidArgumentException( '$dbkey must not be empty' );
+               }
+
+               $this->namespace = $namespace;
+               $this->dbkey = $dbkey;
+               $this->fragment = $fragment;
+       }
+
+       /**
+        * @return int
+        */
+       public function getNamespace() {
+               return $this->namespace;
+       }
+
+       /**
+        * @return string
+        */
+       public function getFragment() {
+               return $this->fragment;
+       }
+
+       /**
+        * Returns the title's DB key, as supplied to the constructor,
+        * without namespace prefix or fragment.
+        *
+        * @return string
+        */
+       public function getDBkey() {
+               return $this->dbkey;
+       }
+
+       /**
+        * Returns the title in text form,
+        * without namespace prefix or fragment.
+        *
+        * This is computed from the DB key by replacing any underscores with spaces.
+        *
+        * @note: To get a title string that includes the namespace and/or fragment,
+        *        use a TitleFormatter.
+        *
+        * @return string
+        */
+       public function getText() {
+               return str_replace( '_', ' ', $this->getDBkey() );
+       }
+
+       /**
+        * Creates a new TitleValue for a different fragment of the same page.
+        *
+        * @param string $fragment The fragment name, or "" for the entire page.
+        *
+        * @return TitleValue
+        */
+       public function createFragmentTitle( $fragment ) {
+               return new TitleValue( $this->namespace, $this->dbkey, $fragment );
+       }
+
+       /**
+        * Returns a string representation of the title, for logging. This is purely informative
+        * and must not be used programmatically. Use the appropriate TitleFormatter to generate
+        * the correct string representation for a given use.
+        *
+        * @return string
+        */
+       public function __toString() {
+               $name = $this->namespace . ':' . $this->dbkey;
+
+               if ( $this->fragment !== '' )  {
+                       $name .= '#' . $this->fragment;
+               }
+
+               return  $name;
+       }
+}
index fa6e697..9c46ab1 100644 (file)
@@ -52,6 +52,7 @@
        'ar' => 'العربية',       # Arabic
        'arc' => 'ܐܪܡܝܐ',  # Aramaic
        'arn' => 'mapudungun',  # Mapuche, Mapudungu, Araucanian (Araucano)
+       'arq' => 'جزائري', # Algerian Spoken Arabic
        'ary' => 'Maġribi',    # Moroccan Spoken Arabic
        'arz' => 'مصرى',    # Egyptian Spoken Arabic
        'as' => 'অসমীয়া',        # Assamese
        'hil' => 'Ilonggo',     # Hiligaynon
        'ho' => 'Hiri Motu',    # Hiri Motu
        'hr' => 'hrvatski',             # Croatian
+       'hrx' => 'Hunsrik', # Riograndenser Hunsrückisch
        'hsb' => 'hornjoserbsce',       # Upper Sorbian
        'ht' => 'Kreyòl ayisyen',              # Haitian Creole French
        'hu' => 'magyar',               # Hungarian
index 8716ed4..a0e4a4d 100644 (file)
@@ -13,6 +13,7 @@
  * @author Byeboer
  * @author Deadelf
  * @author Kaganer
+ * @author Kolega2357
  * @author Manie
  * @author Naudefj
  * @author Nemo bis
@@ -2379,7 +2380,7 @@ Iemand anders het reeds hierdie bladsy gewysig of teruggerol na 'n vroeëre weer
 
 Die mees onlangse wysiging is gemaak deur [[User:$3|$3]] ([[User talk:$3|bespreking]]{{int:pipe-separator}}[[Special:Contributions/$3|bydraes]]).",
 'editcomment' => "Die wysigsopsomming was: \"''\$1''\".",
-'revertpage' => 'Wysigings deur [[Special:Contributions/$2|$2]] teruggerol na laaste weergawe deur $1',
+'revertpage' => 'Wysigings deur [[Special:Contributions/$2|$2]] teruggerol na laaste weergawe deur [[User:$1|$1]]',
 'revertpage-nouser' => 'Rol wysigings deur versteekte gebruiker terug na die laaste weergawe deur [[User:$1|$1]]',
 'rollback-success' => 'Wysigings deur $1 is teruggerol.
 Die laaste weergawe van $2 is teruggeplaas.',
index 551345c..e81fa74 100644 (file)
@@ -937,6 +937,7 @@ $2',
 'gotaccountlink' => 'تسجيل الدخول',
 'userlogin-resetlink' => 'نسيت تفاصيل الدخول؟',
 'userlogin-resetpassword-link' => 'نسيت كلمة مرورك؟',
+'userlogin-helplink2' => 'المساعدة في الدخول',
 'userlogin-loggedin' => 'أنت {{GENDER:$1|مسجل|مسجلة}} الدخول مسبقًا باسم $1. {{GENDER:$1|استخدم|استخدمي}} النموذج بالأسفل لتسجيل الدخول بحساب آخر.',
 'userlogin-createanother' => 'إنشاء حساب آخر',
 'createacct-join' => 'قم بإدخال المعلومات الخاصة بك أدناه.',
@@ -1035,6 +1036,7 @@ $2',
 'createacct-another-realname-tip' => 'الاسم الحقيقي اختياري.
 إذا اخترت توفيره فسيستخدم لنسبة عمل المستخدم إليه.',
 'pt-login' => 'دخول',
+'pt-login-button' => 'دخول',
 'pt-createaccount' => 'إنشاء حساب',
 'pt-userlogout' => 'خروج',
 
diff --git a/languages/messages/MessagesArq.php b/languages/messages/MessagesArq.php
new file mode 100644 (file)
index 0000000..69dad23
--- /dev/null
@@ -0,0 +1,760 @@
+<?php
+/** Algerian Spoken Arabic (جزائري)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Bachounda
+ * @author Oldstoneage
+ */
+
+$fallback = 'ar';
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'تسطار الوصيلات:',
+'tog-hideminor' => 'خبي الكتيبات الصغيرة في التبديلات التوالا',
+'tog-hidepatrolled' => 'خبي الكتيبات المعسوسه في التبديلات التوالا',
+'tog-newpageshidepatrolled' => 'خبي الباجات المعسوسه اللي في ليستت الباجات الجدد',
+'tog-extendwatchlist' => 'دلي الليسته نتاع التبيعه باش تعرض كامل التبديلات و مشي برك التوالا',
+'tog-usenewrc' => 'اجمع الـتبدالات بل صفحات فل تبدالات الـتالية و الـليستة تاع الـمراقبة (تستحق الـ JavaScript)',
+'tog-numberheadings' => 'رقم اليا عناوين السكسيو',
+'tog-showtoolbar' => 'تبيان باره الكتيبات (يلزمها جافاسكريبت)',
+'tog-editondblclick' => 'كتيبت الباجات بالزوج دركات (يلزمها جافاسكربت)',
+'tog-editsectiononrightclick' => 'اكتيفي كتيبت السكسيوات بالدريك باليمين على العناوين نتاعهم(يتطلب جافاسكريبت)',
+'tog-rememberpassword' => 'اتفكر الدخول تاعي ب هاذ النافيكاتور (ب مدّة حدها{{PLURAL:$1||يوم واحد|يومين|$1 إيّام|$1 يوم}})',
+'tog-watchcreations' => 'زيد الـصفحات اللي نخلقها و الـفيشيّات فل قايمة تاع التتباع تاعي',
+'tog-watchdefault' => 'زيد الـصفحات و الـفيشيّات اللي نبدّلها فل قايمة تاع الـتتباع تاعي',
+'tog-watchmoves' => 'زيد الـصفحات و الـفيشيات اللي نحوّلها فل قايمة تاع الـتباع تاعي',
+'tog-watchdeletion' => 'زيد الـصفحات اللي نفصيها فل قايمة تاع التتباع تاعي',
+'tog-minordefault' => 'ماركي كل التبديلات بلي راهي خفيفه',
+'tog-previewontop' => 'وري شوفه-قبليه للكتبه فوق صندوق الكتيبه',
+'tog-previewonfirst' => 'بين شوفه-قبليه مع اول تبديله',
+'tog-enotifwatchlistpages' => 'ابحت لي إيمال كي تتبدّل صفحة ولا فيشي من الـليستة تاع الـتتباع تاعي',
+'tog-enotifusertalkpages' => 'ابعثلي بريه كل ما تبدلت باجت نقاش ديالي',
+'tog-enotifminoredits' => 'ابعت لي بريه حتا يلا كانت تبدالات صغيرة فلباجات و الـفيشيّات',
+'tog-enotifrevealaddr' => 'بين لادريستي إلكترونيك في براوات الاعلام',
+'tog-shownumberswatching' => 'بين شحال كاين من مستعمل يتبع الباجه',
+'tog-oldsig' => 'خطّ‘لـيدّ اللي كاين',
+'tog-fancysig' => 'اعتبر التوقيع كي كتيبه ويكي (بلا وصيله توماتيك)',
+'tog-uselivepreview' => 'استعمل الـنضرة الـقبلانيّة (تستحق الـ JavaScript) (تجرابيّة)',
+'tog-forceeditsummary' => 'نبّهني كي تندخل كاش صفحة خاوية',
+'tog-watchlisthideown' => 'خبّي الـتبدالات تاوعي فل ليستة تاع الـتتباع',
+'tog-watchlisthidebots' => 'خبّي الـتبدالات تاع الـروبويات فل ليستة تاع التتباع تاعي',
+'tog-watchlisthideminor' => 'خبّي الـتبدالات الـصغيرة من الـليستة تاعي تاع التتباع',
+'tog-watchlisthideliu' => 'خبّي فل قايمة تاع التتباع تاعي الـتبدالات الـمديورة من عند الـمستعمليين الـمتماركيين',
+'tog-watchlisthideanons' => 'خبّي فل قايمة تاع التتباع تاعي الـتبدالات الـمديورة من عند الـمستعمليين الـماشي متماركيين',
+'tog-watchlisthidepatrolled' => 'خبّي الـتبدالات تاع الـمتبّعة فل ليستة تاع التتباع تاعي',
+'tog-ccmeonemails' => 'ابعت لي نسخة تاع الـإيمالات الّي نبعتهم لل مستعمليين لخرين',
+'tog-diffonly' => 'ما تورّيش الـمضمون تاع الـصفحات تحت الـفروقات',
+'tog-showhiddencats' => 'ورّي الـفصلات الـمخبّيين',
+'tog-norollbackdiff' => 'ما تورّيش الـفروق كي تدير رجوع',
+'tog-useeditwarning' => 'نبّهني كي نخرج من صفحة كنت نكتب فيها بلا ما نعمّر الخدمة',
+'tog-prefershttps' => 'نستعمل دايمن توصال مأمون كي ندخل',
+
+'underline-always' => 'ديما',
+'underline-never' => 'ابدا',
+'underline-default' => 'الـقيمة الـعاديّة تاع الـواجهة و الـفلّاك',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'بدّل الـستيل تاع الـكتبة فل قابسة تاع الـكتيبة',
+'editfont-default' => 'نوع‘ الـكتبة الـعادية فل فلّاك',
+'editfont-monospace' => 'الـعرض تاع الـحرف يكون تابت',
+'editfont-sansserif' => 'حروف بلا زوايد',
+'editfont-serif' => 'حروف بل زوايد',
+
+# Dates
+'sunday' => 'الحد',
+'monday' => 'لثنين',
+'tuesday' => 'التلاته',
+'wednesday' => 'لاربعه',
+'thursday' => 'الخميس',
+'friday' => 'الجمعه',
+'saturday' => 'السبت',
+'sun' => 'الحد',
+'mon' => 'لثنين',
+'tue' => 'الثلاثه',
+'wed' => 'لاربعه',
+'thu' => 'الخميس',
+'fri' => 'الجمعه',
+'sat' => 'السبت',
+'january' => 'جانفي',
+'february' => 'فيفري',
+'march' => 'مارس',
+'april' => 'أفريل',
+'may_long' => 'ماي',
+'june' => 'جوان',
+'july' => 'جويليي',
+'august' => 'أوت',
+'september' => 'سبتمبر',
+'october' => 'أكتوبر',
+'november' => 'نوفمبر',
+'december' => 'ديسمبر',
+'january-gen' => 'جانفي',
+'february-gen' => 'فيفري',
+'march-gen' => 'مارس',
+'april-gen' => 'أفريل',
+'may-gen' => 'ماي',
+'june-gen' => 'جوان',
+'july-gen' => 'جويليي',
+'august-gen' => 'أوت',
+'september-gen' => 'سبتمبر',
+'october-gen' => 'أكتوبر',
+'november-gen' => 'نوفمبر',
+'december-gen' => 'ديسمبر',
+'jan' => 'جانفي',
+'feb' => 'فيفري',
+'mar' => 'مارس',
+'apr' => 'أفريل',
+'may' => 'ماي',
+'jun' => 'جوان',
+'jul' => 'جويليي',
+'aug' => 'أوت',
+'sep' => 'سيبتمبر',
+'oct' => 'أوكتوبر',
+'nov' => 'نوفمبر',
+'dec' => 'ديسمبر',
+'january-date' => 'جانفيي $1',
+'february-date' => 'فيفريي $1',
+'march-date' => 'مارس $1',
+'april-date' => 'آفريل $1',
+'may-date' => 'ماي $1',
+'june-date' => 'جوان $1',
+'july-date' => 'جويليي$1',
+'august-date' => 'أوت $1',
+'september-date' => 'سبتامبر $1',
+'october-date' => 'اكتوبر $1',
+'november-date' => 'نوفامبر $1',
+'december-date' => 'ديسمبر $1',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|فصيلة|فصيلات}}',
+'category_header' => 'الباجه في التصنيف "$1"',
+'subcategories' => 'تصنيفات تحتيه',
+'category-media-header' => 'فيشيي ميلتيميديا فالكاتيكورى  "$1"',
+'category-empty' => "''هاذ التصنيف ما فيهش لا باجات و لا ميلتيميديا.''",
+'hidden-categories' => '{{PLURAL:$1|تصنيف مدسوس|تصنيفات مدسوسة}}',
+'hidden-category-category' => 'تصنيفات مخبّية',
+'category-subcat-count' => '{{PLURAL:$2|هاذ التصنيف فيه التصنيف الفرعي التالي|هاذ التصنيف فيه{{PLURAL:$1||التصنيف الفرعي|$1 تصنيفات فرعية}}، من إجمالي $2.}}',
+'category-subcat-count-limited' => 'هاد الـتصنيف يسيع {{PLURAL:$1||التصنيف الفرعي التابع|التصنيفات الفرعية $1  التابعة}}.',
+'category-article-count' => 'هاذ الكاتيكورى فيها {{PLURAL:$2|هاذ الفيشيي|$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' => 'يُتبع',
+'index-category' => 'صفحات مفهّرسة',
+'noindex-category' => 'باجات مشي مفهرسه',
+'broken-file-category' => 'صفحات فيها وصيلات تاع ملفّات خاسرة',
+
+'about' => 'على هاذ الويكي',
+'article' => 'صفحة تاع محتوى',
+'newwindow' => '(حل في تاقة جديدة)',
+'cancel' => 'انيلي',
+'moredotdotdot' => 'كتر...',
+'morenotlisted' => 'كتر ماشي مليستي...',
+'mypage' => 'باجه',
+'mytalk' => 'نقاش',
+'anontalk' => 'تناقش على الـ ip هادي',
+'navigation' => 'تبحار',
+'and' => '&#32;و',
+
+# Cologne Blue skin
+'qbfind' => 'فتش',
+'qbbrowse' => 'اتجوّل فل مضمون',
+'qbedit' => 'اكتب',
+'qbpageoptions' => 'هاذ الباجه',
+'qbmyoptions' => 'الباجات نتاوعى',
+'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' => 'متغيرات',
+
+'navigation-heading' => 'القايمة تاع الـتبحار',
+'errorpagetitle' => 'غلطه',
+'returnto' => 'ولي إلى $1.',
+'tagline' => 'من{{SITENAME}}',
+'help' => 'معاونة',
+'search' => 'فتّش',
+'searchbutton' => 'فتش',
+'go' => 'شايع',
+'searcharticle' => 'روح',
+'history' => 'تاريخ الملف',
+'history_short' => 'تاريخ',
+'updatedmarker' => 'مبدّل منلي الزيارة تاعي الـتالية',
+'printableversion' => 'نسخه نتاع طبيع',
+'permalink' => 'وصيل دايم',
+'print' => 'امبريمي',
+'view' => 'اقرا',
+'edit' => 'بدل',
+'create' => 'أصنع',
+'editthispage' => 'بدّل هاد الـصفحة',
+'create-this-page' => 'خلّق صفحة ب هاد الـعلوان',
+'delete' => 'امحي',
+'deletethispage' => 'امحي هاد الـصفحة',
+'undeletethispage' => 'ردّ الصفحة الّي محيتها',
+'protect' => 'حمايه',
+'protect_change' => 'بدل',
+'newpage' => 'باجه جديده',
+'talkpagelinktext' => 'ناقش',
+'personaltools' => 'ادوالت شخصيه',
+'talk' => 'مناقشه',
+'views' => 'شوفات',
+'toolbox' => 'صندوق الادوات',
+'otherlanguages' => 'بلوغات وحد اوخره',
+'redirectedfrom' => '(محول من $1)',
+'lastmodifiedat' => 'هاد الباجه راهي تبدّلت نهار الـ $1, على الـساعة $2.',
+'jumpto' => 'اقفز ل:',
+'jumptonavigation' => 'تجوال',
+'jumptosearch' => 'تفتاش',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
+'aboutsite' => 'على{{SITENAME}}',
+'aboutpage' => 'Project:على',
+'copyrightpage' => '{{ns:project}}:حقوق النسخ',
+'currentevents' => 'الخبورات',
+'currentevents-url' => 'Project:خبورات',
+'disclaimers' => 'تنبيهات',
+'disclaimerpage' => 'Project:التحذيرات العامه',
+'edithelp' => 'معونة',
+'mainpage' => 'الباجة اللوله',
+'mainpage-description' => 'الباجة اللوله',
+'portal' => 'المجتمع',
+'portal-url' => 'Project:بورطاي المجتمع',
+'privacy' => 'السياسة تاع الخصوصيات (الدين الضيّق)',
+'privacypage' => 'Project:خصوصيه',
+
+'retrievedfrom' => 'جايبينه من "$1"',
+'youhavenewmessages' => 'عندك $1 ($2).',
+'editsection' => 'بدل',
+'editold' => 'بدل',
+'viewsourceold' => 'شوف الاصل',
+'editlink' => 'تبديل',
+'viewsourcelink' => 'شوف العين',
+'editsectionhint' => 'إيديتي الصنف:$1',
+'toc' => 'محتويات',
+'site-rss-feed' => 'تيار آر‌إس‌إس $1',
+'site-atom-feed' => '$1 تيار آتوم',
+'page-atom-feed' => '$1 تيار آتوم',
+'red-link-title' => '$1 (الباجه ما كاينش)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'الباجة',
+'nstab-user' => 'باجة{{GENDER:{{BASEPAGENAME}}|المستخدم|المستخدمة}}',
+'nstab-special' => 'باجه خوصوصيّة',
+'nstab-project' => 'باجه مشروع',
+'nstab-image' => 'ملف',
+'nstab-template' => 'مودال',
+'nstab-category' => 'تصنيف',
+
+# General errors
+'missing-article' => 'الداتاباز ما صابتش باجه كان لازم تنصاب، الباجه هي "$1" $2.
+
+نورمالمو يصرا هذا مين اتبع فرق بيريمي والا وصيل تأريخ باجة ممحيه.
+
+إذا ما كانش هذا هو الحال همالا راك طحت في علة تاع البرمجية.
+من فضلك سينياليها لواحد من[[Special:ListUsers/sysop|الإداريين]]، و أعطه مسار هذه الباجه.',
+'missingarticle-rev' => '(رقم الفرسيون: $1)',
+'badtitle' => 'عنوان عيان',
+'badtitletext' => 'عنوان الباجه المطلوب إما ماشي صحيح والا فارغ، وبالاك الوصيل بين اللغات والا بين البروجيات ماشي صحيح.
+بالاك فيه حروف ما تصلحش  باس يستعملوها فالعناوين.',
+'viewsource' => 'شوف الاصل',
+
+# Login and logout pages
+'yourname' => 'اسم المستخدم:',
+'yourpassword' => 'كلمة السر:',
+'yourpasswordagain' => 'عاود كتبت كلمت السر:',
+'remembermypassword' => 'اتفكر الدخول تاعي ب هاذ النافيكاتور (ب مدّة حدها{{PLURAL:$1||يوم واحد|يومين|$1 إيّام|$1 يوم}})',
+'login' => 'كونكسيون',
+'nav-login-createaccount' => 'تسجل/ اصنع حساب',
+'loginprompt' => 'لازم تكون الكوكيز لديك ماكتيفيه باش تكونيكتي و تدخل ل{{SITENAME}}.',
+'userlogin' => 'تسجل/ اصنع حساب',
+'userlogout' => 'سجل خروج',
+'nologin' => "ما عندكش حساب مسجل؟ '''$1'''.",
+'nologinlink' => 'اصنع حساب',
+'createaccount' => 'اصنع حساب',
+'gotaccount' => "عندك حساب مسجل؟ '''$1'''.",
+'gotaccountlink' => 'كونكسيون',
+'userlogin-resetlink' => 'نسيت تفاصيل الدخول؟',
+'mailmypassword' => 'أرسل لي كلمة سر جديده',
+'loginlanguagelabel' => 'اللوغه: $1',
+
+# 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' => 'عنوان من المستوى الثاني',
+'nowiki_sample' => 'دخل الكتبة مشي مستفة هنا',
+'nowiki_tip' => 'اهمل طريقةالويكي',
+'image_tip' => 'ملف داخل',
+'media_tip' => 'وصيلة ملف',
+'sig_tip' => 'سنياتورتك بالساعة و التاريخ',
+'hr_tip' => 'خط أفقي (ما تستعملوش بزاف)',
+
+# Edit pages
+'summary' => 'ملخص:',
+'minoredit' => 'هذي تبديلة صغيرة',
+'watchthis' => 'تبع الباجة',
+'savearticle' => 'سجل الباجة',
+'preview' => 'شوفه-قبلي',
+'showpreview' => 'بين معاينة',
+'showdiff' => 'عرض التبديلات',
+'anoneditwarning' => "'''توله:''' راك ما دخلتش.
+غادي يتسجل لادراس آيبي نتاعك في تاريخ هذه الباجه.",
+'newarticle' => '(جديد)',
+'newarticletext' => "راك تبعت وصيلة لباجه لم ما تخدمتش بعد.
+باش تصنع هاذ الباجه ابدا الكتبه فالصندوق التحت (شوف في [$1  زياده باجه المساعده] لمعلومات).
+إذا كانت زيارتك لهاذ الباجه غلطه، ادرك على بوطون''ولى'' في نافيقاتور الإنترنت نتاعك.",
+'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}}}} فتش فالعمليات المربوطه]
+و إلا[{{fullurl:{{FULLPAGENAME}}|action=edit}} أصنع هاذ الباجه]</span>.',
+'previewnote' => "'''ما تنساش هذي معاينه قبليه.'''
+لدوك التبديلات دياولك ما تسجلوش!",
+'editing' => 'تحرير $1',
+'editingsection' => 'كتيبه $1 (قسم)',
+'templatesused' => '{{PLURAL:$1||القالب المستعمل|القوالب المستعمله}} في هذه الباجه:',
+'template-protected' => '(محميه)',
+'template-semiprotected' => '(نص حماية )',
+'hiddencategories' => '{{PLURAL:$1|هاد الصفحة ما كايناش فل تصانف المخبّييين|هاد الصفحة كاينة في تصنيف مخبّي واحد|هاد الصفحة كاينة في زوج تاع الـتصانف المخبّيين|هاد الصفحة كاينة في $1 تصنيف مخبّي|هاد الصفحة كاينة في $1 تصنيف مخفبّي|هذه الصفحة كاينة في $1 تصنيف مخبّي}}:',
+'permissionserrorstext-withaction' => 'ما راكش اوتوريزى ل$2، لل{{PLURAL:$1||سبب هاذا|اسباب هاذي}}:',
+'recreate-moveddeleted-warn' => "'''توليه: راك تعاود تصنع باحه اتمحات من قبل.'''
+
+لازم تتأكد بلى الباجه الا نصنعت ماهوش مشكل الا كملت الكتبه فبها.
+ريجيستر المحو و النقل معروض هنا باش تراقب :",
+'moveddeleted-notice' => 'هاذ الباجه تمحات .
+ريجيستر المحو والتنقال للباجه معروضين التحت كريفيرونس.',
+
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''توليه:''' الباجة داخل فيها قوالب بزاف.
+شي قوالب ما غاديش تدخل.",
+'post-expand-template-inclusion-category' => 'الباجات داخل فيها بزاف القوالب',
+'post-expand-template-argument-warning' => "'''توليه:''' هذه الباجه فيها عامل قالب واحد على الأقل عندو حجم تمدد كبير بزاف.
+هاذالعوامل اتمحات.",
+'post-expand-template-argument-category' => 'باجات فيها مدخلات القالب الممحي',
+
+# History pages
+'viewpagelogs' => 'بين العمليات على هاذ الباحه',
+'currentrev-asof' => 'النسخه نتاع دروك تاريجها $1',
+'revisionasof' => 'معاودة تاع الـ $1',
+'revision-info' => 'مراجعه $1 بواسطت $2',
+'previousrevision' => '← نسخة اللوله',
+'nextrevision' => 'فرسيون جايه←',
+'currentrevisionlink' => 'المراجعه الحاليه',
+'cur' => 'الحالي',
+'last' => 'السابق',
+'histlegend' => 'تخيار الفرق: علم على صناديق النسخ للمقارنه و ادرك قارن بين النسخ المختارة والا القفلة التحت .<br />
+مفتاح: (الحالي) = الفرق مع النسخة تع دروك
+(الفايته) = الفرق مع النسخة اللي فاتت، ط = تبديل خفيف',
+'history-fieldset-title' => 'نافيقي في التاريخ',
+'history-show-deleted' => 'المماسكيه برك',
+'histfirst' => 'اول باجه',
+'histlast' => 'باجه تاليه',
+
+# Revision feed
+'history-feed-item-nocomment' => '$1 إلى $2',
+
+# Revision deletion
+'rev-delundel' => 'بين/خبي',
+'revdel-restore' => 'غير كيف راهي تبان',
+
+# Merge log
+'revertmerge' => 'فرق',
+
+# Diffs
+'history-title' => ' «$1»: تاريخ المراجعات',
+'lineno' => 'سطر$1:',
+'compareselectedversions' => 'كومباري بين نسختين مخيرين',
+'editundo' => 'نحي',
+
+# Search results
+'searchresults' => 'ريزيلته نتاع التفتاش',
+'searchresults-title' => 'ريزيلته تاع التحواس "$1"',
+'prevn' => '{{PLURAL:$1|précédente|$1 اللولانيين}}',
+'nextn' => '{{PLURAL:$1|suivante|$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|$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-result-category-size' => '$1 عضو{{PLURAL:$1||s}} ($2 كاتيكورى فرعيه{{PLURAL:$2||s}}, $3 فيشيي{{PLURAL:$3||يات}})',
+'search-redirect' => '(تحويل من $1)',
+'search-section' => '(قسمت‘ $1)',
+'search-suggest' => 'كنت باغي تقول: $1',
+'searchrelated' => 'مرتابطه',
+'searchall' => 'ألكل',
+'showingresultsheader' => "{{PLURAL:$5|نتيجه'''$1'''|نتايج'''$1–$2'''}} تع'''$3''' لـ'''$4'''",
+'search-nonefound' => 'ما كانش نتائج تطابق المسقسية.',
+
+# Preferences page
+'mypreferences' => 'إختيارات',
+'youremail' => 'البريه الالكترونيه:',
+'yourrealname' => 'الاسم الحقاني:',
+'prefs-help-email' => 'لادريس نتع البريه الإلكترونيه بالخاطر، ولكن هي لازمه في حال نسيت كلمت السر نتاعك.',
+'prefs-help-email-others' => 'تقدر تاني تخلي لوخرين يتاصلو بيك في باجت نقاشك ولا في وصيله في باجت مستخدم نتاعك, اذا ارسلك واحد ما يبانش لادريس نتاعك , حتى اذ رديت عليه باش يبان لادريس نتاعك.',
+
+# Special:Log/newusers
+'newuserlogpage' => 'ريجيستر صنعة حسابات المستخدمين',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'عدل هاذ الباجه',
+
+# Recent changes
+'nchanges' => '$1 تبديله{{PLURAL:$1||s}}',
+'recentchanges' => 'تبديلات توالا',
+'recentchanges-legend' => 'ابسيون التبديلات التواله',
+'recentchanges-feed-description' => 'تبع التبديلات الجدد للويكي في هاذ التيار .',
+'recentchanges-label-newpage' => ' هاذ التبديل صنع باجه جديده',
+'recentchanges-label-minor' => 'هاذا تبديل صغير',
+'recentchanges-label-bot' => 'هاذ التبديل ندار بروبو',
+'recentchanges-label-unpatrolled' => 'ما تراجعتش هاذ التبديله للآن',
+'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' => 'بين التفاصيل (يلزمها جافاسكريبت)',
+'rc-enhanced-hide' => 'خبي التفاصيل',
+
+# Recent changes linked
+'recentchangeslinked' => 'تبديلات مربوطه',
+'recentchangeslinked-toolbox' => 'تبديلات الباجات المرتبطه',
+'recentchangeslinked-title' => 'التبديلات المرتبطة ب "$1"',
+'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-revert' => 'رجع',
+'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' => 'باجة على الزهر',
+
+# Statistics
+'statistics' => 'إحصاويّات',
+
+# Miscellaneous special pages
+'nbytes' => '$1 اوكتي{{PLURAL:$1||s}}',
+'nmembers' => '$1 اعضاء{{PLURAL:$1||s}}',
+'prefixindex' => 'كامل الباجات الباديه ب',
+'usercreated' => '{{GENDER:$3|صنعه|صنعته}} في $1 الساعة $2',
+'newpages' => 'باجه جديده',
+'move' => 'عاود التسمية',
+'pager-newer-n' => '{{PLURAL:$1|جديد بزاف 1|جديد بزاف $1}}',
+'pager-older-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' => '$1 موصولة من $2',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(ليسته الأعضاء)',
+
+# Email 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' => 'بلاصه تع أسموات',
+'invert' => 'اعكس التخيار',
+'blanknamespace' => 'أساسي',
+
+# Contributions
+'contributions' => 'مساهمات {{GENDER:$1|المستخدم|المستخدمه}}',
+'contributions-title' => 'مساهمات {{GENDER:$1|المستخدم|المستخدمه}} $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' => 'عنوان أيبي والال اسم مستخدم:',
+'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 hours,نهار واحد:1 day,3 نهارات:3 days,سيمانة وحدة:1 week,سيمانتين:2 weeks,شهر واحد:1 month,3 أشهر:3 months,6 أشهر:6 months,عام واحد:1 year,دايم:infinite',
+'ipblocklist' => 'المستخدمون الممنوعون',
+'blocklink' => 'حبس',
+'unblocklink' => 'ديبلوكي',
+'change-blocklink' => 'بدل البلوكاج',
+'contribslink' => 'المساهمات',
+'blocklogpage' => 'ريجيسترالمنع',
+'blocklogentry' => 'منع "[[$1]]" لفترة زمنية مدتها $2 $3',
+'block-log-flags-nocreate' => 'صنعت الحسابات ممنوعه',
+
+# Move page
+'movelogpage' => 'روجيستر التنقال',
+'revertmove' => 'رجع',
+
+# Export
+'export' => 'صدر الباجه',
+
+# Namespace 8 related
+'allmessagesname' => 'الاسم',
+'allmessagesdefault' => 'الكتبه الافتراضيه',
+
+# Thumbnails
+'thumbnail-more' => 'كبر',
+'thumbnail_error' => 'غلطه في خدمت صورة مصغرةالمينياتير: $1',
+
+# 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' => 'سيلان آتوم نتاع الباجه',
+'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',
+'show-big-image' => 'تصويرة دقة عالية',
+
+# Bad image list
+'bad_image_list' => 'الفورمه كيما التابعة:
+ما كاين غير السطور الّي باديين بل *، الّي يكونو معدودين
+الـوصيل الـلوّل نتاع سطر لازم تكون تاع تصويرة ضايعة.
+كامل الوصيلات لخرين الّي فل سطر، يكونو معدودين كلّي تتنيّات، بل كي الباجات وين الـفيشي يكون باين.',
+
+# Metadata
+'metadata' => 'بايان ميتا',
+'metadata-help' => 'هذا الملف راه فيه معلومات زيادة، بالاك تكون انزادت من عند صواره نيميريك ولا سكانر مين صنع الملف.
+الأصلي، شي تفاصيل بالاك ما تعبرش على الملف المعدل.',
+'metadata-fields' => 'غادي ينعرض الحقل نتاع معطيات الميتا الكاينه في هاذ البريه في باجه التصويرة منين يكون جدول معطيات الميتا مطوياً.
+الحقول لخره تكون مخبية بار ديفو.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'لكل',
+'namespacesall' => 'لكل',
+'monthsall' => 'لكل',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'اعرض التبديلات المرتابطه',
+'watchlisttools-edit' => 'اعرض قائمه المراقبه و عدلها',
+'watchlisttools-raw' => 'موديفي ليستت التبيعه الخام',
+
+# Core parser functions
+'duplicate-defaultsort' => '\'\'\'توليه:\'\'\' مفتاح التستيف الافتراضي "$2" ديباسا مفتاح التستيف الافتراضي التالي"$1".',
+
+# Special:SpecialPages
+'specialpages' => 'الباجات الخصوصيه',
+
+# External image whitelist
+'external_image_whitelist' => ' #<pre>خلى هاذ السطر كيما راه
+#حط منثورات التعبيرات المنتظمة (برك الجزء الي يروح بين //) بالتحت
+#هاذ يكون مطابقتها مع مسارات التصاوير البرانيه (الموصولة بصفه مباشره)
+#هاذي الي تشبهغادي تنعرض  كتصاور، خلاف هذا برك وصيلة للتصويرة غادي تنعرض
+#السطور اللي تبدأا ب# تعتبر تعليقات
+#هذا لا يتأثر بحالة الحروف
+
+#حط كامل منثورات التعبيرات المنتظمة فوق هذا السطر. خلي هاذ السطر سواسوا كيما هو</pre>',
+
+# Special:Tags
+'tag-filter' => 'صفاية[[Special:Tags|الوشام]]:',
+
+);
index 1cba5d8..7354886 100644 (file)
@@ -1045,6 +1045,8 @@ Pues ver el diff; los detalles s'alcuentren nel [{{fullurl:{{#Special:Log}}/supr
 'revdelete-no-file' => 'El ficheru conseñáu nun esiste.',
 'revdelete-show-file-confirm' => '¿Tas seguru de que quies ver una versión desaniciada del ficheru "<nowiki>$1</nowiki>" del $2 a les $3?',
 'revdelete-show-file-submit' => 'Sí',
+'revdelete-selected-text' => '{{PLURAL:$1|Revisión seleicionada|Revisiones seleicionaes}} de [[:$2]]:',
+'revdelete-selected-file' => '{{PLURAL:$1|Versión del ficheru seleicionada|Versiones del ficheru seleicionaes}} de [[:$2]]:',
 'logdelete-selected' => '{{PLURAL:$1|Socesu del rexistru seleicionáu|Socesos del rexistru seleicionaos}}:',
 'revdelete-text-text' => 'Les revisiones desaniciaes inda apaecerán nel historial de la páxina, pero partes del conteníu nun sedrán accesibles al públicu.',
 'revdelete-text-file' => 'Les versiones del ficheru desaniciaes inda apaecerán nel historial del ficheru, pero partes del conteníu nun sedrán accesibles al públicu.',
@@ -1918,6 +1920,11 @@ Seique quieras camudar la descripción de la so [páxina de descripción de fich
 # List redirects
 'listredirects' => 'Llista de redireiciones',
 
+# List duplicated files special page
+'listduplicatedfiles' => 'Llista de ficheros con duplicaos',
+'listduplicatedfiles-summary' => "Esta ye una llista de ficheros onde la versión más nueva del ficheru ye un duplicáu de la versión más nueva d'algún otru ficheru. Considérense sólo los ficheros llocales.",
+'listduplicatedfiles-entry' => '[[:File:$1|$1]] tien [[$3|{{PLURAL:$2|un duplicáu|$2 duplicaos}}]].',
+
 # Unused templates
 'unusedtemplates' => 'Plantíes ensin usu',
 'unusedtemplatestext' => "Esta páxina llista toles páxines del espaciu de nomes {{ns:template}} que nun tán inxeríes n'otres páxines.
@@ -2373,7 +2380,8 @@ ye la configuración actual de la páxina '''$1''':",
 la base de datos. Esta ye la configuración actual de la páxina '''$1''':",
 'protect-locked-access' => "La to cuenta nun tien permisu pa camudar los niveles de proteición de páxina.
 Esta ye la configuración actual pa la páxina '''$1''':",
-'protect-cascadeon' => "Esta páxina ta protexida nestos momentos porque ta inxerida {{PLURAL:$1|na siguiente páxina, que tien|nes siguientes páxines, que tienen}} activada la proteición en cascada. Pues camudar el nivel de proteición d'esta páxina, pero nun va afeutar a la proteición en cascada.",
+'protect-cascadeon' => "Esta páxina ta protexida nestos momentos porque ta incluída {{PLURAL:$1|na siguiente páxina, que tien|nes siguientes páxines, que tienen}} activada la proteición en cascada.
+Los cambios nel nivel de proteición d'esta páxina nun afeutarán a la proteición en cascada.",
 'protect-default' => 'Permitir tolos usuarios',
 'protect-fallback' => 'Permitir namái usuarios con permisu "$1"',
 'protect-level-autoconfirmed' => 'Permitir namái usuarios autoconfirmaos',
index 290c41e..2309abe 100644 (file)
@@ -2346,6 +2346,10 @@ Zəhmət olmasa başqa ad seçin.',
 'pageinfo-lasttime' => 'Sonuncu redaktənin tarixi',
 'pageinfo-edits' => 'Redaktələrin sayı',
 'pageinfo-authors' => 'Fərqli müəlliflərin sayı',
+'pageinfo-toolboxlink' => 'Əsas məlumatlar',
+'pageinfo-redirectsto' => 'İstiqamətləndirmə',
+'pageinfo-redirectsto-info' => 'məlumat',
+'pageinfo-contentpage-yes' => 'Bəli',
 
 # Skin names
 'skinname-cologneblue' => 'Cologne Blue',
index 6484342..24b1757 100644 (file)
@@ -1214,6 +1214,7 @@ $2
 'revdelete-show-file-confirm' => 'Вы ўпэўненыя, што жадаеце паглядзець выдаленую вэрсію файла «<nowiki>$1</nowiki>» ад $2 $3?',
 'revdelete-show-file-submit' => 'Так',
 'revdelete-selected-text' => '{{PLURAL:$1|1=Абраная вэрсія|Абраныя вэрсіі}} [[:$2]]:',
+'revdelete-selected-file' => '{{PLURAL:$1|1=Абраная вэрсія файла|Абраныя вэрсіі файла}} [[:$2]]:',
 'logdelete-selected' => '{{PLURAL:$1|1=Выбраны запіс|Выбраныя запісы}} журнала:',
 'revdelete-text-text' => 'Выдаленыя вэрсіі будуць па-ранейшаму бачныя ў гісторыі старонкі, але некаторыя часткі іх зьместу будуць недаступныя для ўдзельнікаў.',
 'revdelete-text-file' => 'Выдаленыя вэрсіі файла будуць па-ранейшаму бачныя ў гісторыі старонкі, але часткі іх зьместу будуць недаступныя для ўдзельнікаў.',
index 515ca34..6e8468b 100644 (file)
@@ -683,6 +683,7 @@ $2',
 'gotaccountlink' => 'Влизане',
 'userlogin-resetlink' => 'Забравени данни за влизане в системата?',
 'userlogin-resetpassword-link' => 'Забравена парола?',
+'userlogin-helplink2' => 'Помощ за влизане',
 'userlogin-loggedin' => 'Вече сте влезли в системата като {{GENDER:$1|$1}}.
 Чрез формуляра по-долу можете да влезете като друг потребител.',
 'userlogin-createanother' => 'Създаване на друга сметка',
@@ -770,6 +771,7 @@ $2',
 'createacct-another-realname-tip' => 'Истинското име е незадължително.
 В случай, че бъде избрабо да се попълни, ще бъде използвано за да му се приписват приносите в уикито.',
 'pt-login' => 'Влизане',
+'pt-login-button' => 'Влизане',
 'pt-createaccount' => 'Създаване на сметка',
 'pt-userlogout' => 'Излизане',
 
@@ -844,7 +846,13 @@ $2
 'changeemail-cancel' => 'Отказване',
 
 # Special:ResetTokens
+'resettokens' => 'Изчистване на маркерите',
+'resettokens-no-tokens' => 'Няма маркери за изчистване.',
+'resettokens-legend' => 'Изчистване на маркерите',
+'resettokens-tokens' => 'Маркери:',
 'resettokens-token-label' => '$1 (текуща стойност: $2)',
+'resettokens-watchlist-token' => 'Маркер за уеб хранилка (Atom/RSS) на [[Special: Watchlist|промени на страници от списъка Ви за наблюдение]]',
+'resettokens-resetbutton' => 'Изчистване на избраните маркери',
 
 # Edit page toolbar
 'bold_sample' => 'Получер текст',
@@ -1396,6 +1404,7 @@ $1",
 'prefs-dateformat' => 'Формат на датата',
 'prefs-timeoffset' => 'Часово отместване',
 'prefs-advancedediting' => 'Общи настройки',
+'prefs-editor' => 'Редактор',
 'prefs-preview' => 'Преглед',
 'prefs-advancedrc' => 'Разширени настройки',
 'prefs-advancedrendering' => 'Разширени настройки',
@@ -1404,6 +1413,7 @@ $1",
 'prefs-displayrc' => 'Настройки за показване на списъка',
 'prefs-displaysearchoptions' => 'Настройки на изгледа',
 'prefs-displaywatchlist' => 'Видими настройки',
+'prefs-tokenwatchlist' => 'Маркер',
 'prefs-diffs' => 'Разлики',
 'prefs-help-prefershttps' => 'Това предпочитание ще бъде активирано при следващото влизане.',
 
@@ -1720,7 +1730,7 @@ $1",
 'uploaddisabledtext' => 'Качването на файлове е забранено.',
 'php-uploaddisabledtext' => 'Качванията на файлове са спрени през PHP. Проверете настройката file_uploads.',
 'uploadscripted' => 'Файлът съдържа HTML или скриптов код, който може да бъде погрешно  интерпретиран от браузъра.',
-'uploadscriptednamespace' => 'Този SVG Ñ\84айл Ñ\81Ñ\8aдÑ\8aÑ\80жа Ð½ÐµÐ¿Ñ\80авилно Ð¿Ñ\80оÑ\81Ñ\82Ñ\80анÑ\81Ñ\82во Ð½Ð° Ð¸Ð¼ÐµÐ½Ð°Ñ\82а " $1 "',
+'uploadscriptednamespace' => 'Този SVG Ñ\84айл Ñ\81Ñ\8aдÑ\8aÑ\80жа Ð½ÐµÐ¿Ñ\80авилно Ð¸Ð¼ÐµÐ½Ð½Ð¾ Ð¿Ñ\80оÑ\81Ñ\82Ñ\80анÑ\81Ñ\82во â\80\9e$1â\80\9c',
 'uploadvirus' => 'Файлът съдържа вирус! Подробности: $1',
 'uploadjava' => 'Файлът е ZIP файл, който съдържа Java .class файл.
 Качването на Java файлове не е позволено, тъй като могат да причинят заобикаляне на ограниченията за сигурност.',
@@ -2021,7 +2031,9 @@ $1',
 'protectedpages-indef' => 'Само безсрочни защити',
 'protectedpages-cascade' => 'Само каскадни защити',
 'protectedpagesempty' => 'В момента няма защитени страници с тези параметри.',
+'protectedpages-page' => 'Страница',
 'protectedpages-reason' => 'Причина',
+'protectedpages-unknown-performer' => 'Неизвестен потребител',
 'protectedtitles' => 'Защитени заглавия',
 'protectedtitlesempty' => 'В момента няма заглавия, защитени с тези параметри.',
 'listusers' => 'Списък на потребителите',
@@ -2448,7 +2460,7 @@ $1',
 'sp-contributions-search' => 'Търсене на приноси',
 'sp-contributions-username' => 'IP-адрес или потребителско име:',
 'sp-contributions-toponly' => 'Показване само на последните редакции',
-'sp-contributions-newonly' => 'Показване само на редакции свързани с началното създаване на страницата.',
+'sp-contributions-newonly' => 'Показване само на редакции за създаването на страници',
 'sp-contributions-submit' => 'Търсене',
 
 # What links here
@@ -2927,7 +2939,7 @@ $2',
 'pageinfo-views' => 'Брой прегледи',
 'pageinfo-watchers' => 'Брой наблюдаващи страницата',
 'pageinfo-few-watchers' => 'Под $1 {{PLURAL:$1|наблюдаващ|наблюдаващи}}',
-'pageinfo-redirects-name' => 'Ð\9fренасочвания към тази страница',
+'pageinfo-redirects-name' => 'Ð\91Ñ\80ой Ð¿ренасочвания към тази страница',
 'pageinfo-subpages-name' => 'Подстраници на тази страница',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|пренасочваща|пренасочващи}}; $3 {{PLURAL:$3|непренасочваща|непренасочващи}})',
 'pageinfo-firstuser' => 'Създател на страницата',
@@ -3592,6 +3604,7 @@ $5
 'version-version' => '(Версия $1)',
 'version-license' => 'Лиценз на МедияУики',
 'version-ext-license' => 'Лиценз',
+'version-ext-colheader-name' => 'Разширение',
 'version-ext-colheader-version' => 'Версия',
 'version-ext-colheader-license' => 'Лиценз',
 'version-ext-colheader-description' => 'Описание',
@@ -3726,9 +3739,9 @@ MediaWiki се разпространява с надеждата, че ще б
 'revdelete-uname-hid' => 'скрито потребителско име',
 'revdelete-restricted' => 'добавени ограничения за администраторите',
 'revdelete-unrestricted' => 'премахнати ограничения за администраторите',
-'logentry-move-move' => '$1 премести „$3“ като „$4“',
-'logentry-move-move-noredirect' => '$1 премести „$3“ като „$4“ без пренасочване',
-'logentry-move-move_redir' => '$1 премести страницата $3 като $4 (върху пренасочване)',
+'logentry-move-move' => '$1 {{GENDER:$2|премести}} страница „$3“ като „$4“',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|премести}} страницата „$3“ като „$4“ без пренасочване',
+'logentry-move-move_redir' => '$1 {{GENDER:$2|премести}} страницата $3 като $4 (върху пренасочване)',
 'logentry-move-move_redir-noredirect' => '$1 премести върху пренасочване „$3“ като „$4“ без пренасочване',
 'logentry-patrol-patrol' => '$1 {{GENDER:$2|отбеляза}} като патрулирана версия $4 на страницата „$3“',
 'logentry-patrol-patrol-auto' => '$1 автоматично {{GENDER:$2|отбеляза}} като патрулирана версия $4 на страницата $3',
@@ -3826,6 +3839,10 @@ $1 е автоматично повишен от $4 до $5',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'Разгръщане на шаблони',
+'expand_templates_intro' => 'Тази специална страница взима текст и рекурсивно разгръща всички шаблони в нея.
+Тя разгръща и всички поддържани парсерни функции като
+<code><nowiki>{{</nowiki>#language:…}}</code> и променливи като <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+На практика тя разгръща почти всичко в двойни скоби.',
 'expand_templates_title' => 'Заглавие на страницата (напр. за {{FULLPAGENAME}}):',
 'expand_templates_input' => 'Входящ текст:',
 'expand_templates_output' => 'Резултат',
@@ -3834,6 +3851,7 @@ $1 е автоматично повишен от $4 до $5',
 'expand_templates_remove_comments' => 'Премахване на коментари',
 'expand_templates_remove_nowiki' => 'Потискане на елементите <nowiki> в резултата',
 'expand_templates_generate_xml' => 'Показване на дървото от разбора на XML',
+'expand_templates_generate_rawhtml' => 'Показване на суров HTML',
 'expand_templates_preview' => 'Преглед',
 
 );
index 6b53230..4377c54 100644 (file)
@@ -1326,7 +1326,7 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'shown-title' => 'Pokaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici',
 'viewprevnext' => 'Pogledaj ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => "'''Postoji stranica pod nazivom \"[[:\$1]]\" na ovoj wiki'''",
-'searchmenu-new' => "'''Napravi stranicu \"[[:\$1|\$1]]\" na ovoj wiki!'''",
+'searchmenu-new' => '<strong>Napravi stranicu "[[:$1]]" na ovoj wiki!</strong> {{PLURAL:$2|0=|Pogledajte također straniu pronađenu vašom pretragom.|Pogledajte također i vaše rezultate pretrage.}}',
 'searchprofile-articles' => 'Stranice sadržaja',
 'searchprofile-project' => 'Stranice pomoći i projekta',
 'searchprofile-images' => 'Multimedija',
@@ -2448,7 +2448,7 @@ nastavite s oprezom.',
 
 Posljednja izmjena je bila od korisnika [[User:$3|$3]] ([[User talk:$3|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Sažetak izmjene je bio: \"''\$1''\".",
-'revertpage' => 'Vraćene izmjene [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na posljednju izmjenu korisnika [[User:$1|$1]]',
+'revertpage' => 'Vraćene izmjene korisnika [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na posljednju izmjenu koju je načinio [[User:$1|$1]]',
 'revertpage-nouser' => 'Vraćene izmjene skrivenog korisnika na posljednju reviziju koju je {{GENDER:$1|načinio|načinila}} [[User:$1|$1]]',
 'rollback-success' => 'Poništene izmjene korisnika $1;
 vraćeno na posljednju verziju koju je sačuvao $2.',
index a4a652a..4f94a25 100644 (file)
@@ -956,10 +956,10 @@ Si us plau, proveu-ho una altra vegada. Si continués sense funcionar, proveu de
 '''Si es tracta d'una contribució legítima, si us plau, intenteu-ho una altra vegada. Si continua havent-hi problemes, [[Special:UserLogout|finalitzeu la sessió]] i torneu a iniciar-ne una.'''",
 'token_suffix_mismatch' => "'''S'ha rebutjat la vostra modificació perquè el vostre client ha fet malbé els caràcters de puntuació en el testimoni d'edició. S'ha rebutjat la modificació per a evitar la corrupció del text de la pàgina. Açò passa a vegades quan s'utilitza un servei web de servidor intermediari anònim amb problemes.'''",
 'edit_form_incomplete' => "'''Certes parts del formulari de modificació no han arribat al servidor, verifiqueu que les vostres modificacions estan intactes i proveu-ho de nou.'''",
-'editing' => "S'està editant $1",
+'editing' => 'Edició de la pàgina «$1»',
 'creating' => "S'està creant $1",
-'editingsection' => "S'està editant $1 (secció)",
-'editingcomment' => "S'està editant $1 (nova secció)",
+'editingsection' => 'Edició de «$1» (secció)',
+'editingcomment' => 'Edició de «$1» (secció nova)',
 'editconflict' => "Conflicte d'edició: $1",
 'explainconflict' => "Algú més ha canviat aquesta pàgina des que l'heu editada.
 L'àrea de text superior conté el text de la pàgina com existeix actualment.
index 882c0dc..01698c9 100644 (file)
@@ -1158,6 +1158,8 @@ $2
 'revdelete-no-file' => 'Иштта файл яц.',
 'revdelete-show-file-confirm' => 'Бакъалла лаьий хьуна дӀаяьккхина файлан версега хьажа «<nowiki>$1</nowiki>» $2 тӀера, $3?',
 'revdelete-show-file-submit' => 'Хlаъ',
+'revdelete-selected-text' => '{{PLURAL:$1|Файлан хаьржина верси|Файлан хаьржина версеш}} [[:$2]]:',
+'revdelete-selected-file' => '{{PLURAL:$1|Файлан хаьржина верси|Файлан хаьржина версеш}} [[:$2]]:',
 'logdelete-selected' => 'Тептар чура {{PLURAL:$1|хаьржина дӀаяздар|хаьржина дӀаяздарш}}:',
 'revdelete-confirm' => 'Дехар до, бакъдар ахьа деш дерг [[{{MediaWiki:Policy-url}}|бакъонашца]] деш хилар.',
 'revdelete-legend' => 'Доза тохар',
@@ -1865,7 +1867,7 @@ $1',
 'listduplicatedfiles-entry' => 'Файлан [[:File:$1|$1]] — [[$3|{{PLURAL:$2|дубликат ю}}]].',
 
 # Unused templates
-'unusedtemplates' => 'Ð\9bелоÑ\88 Ð´оцу кепаш',
+'unusedtemplates' => 'Ð\9bелоÑ\88 Ð¹оцу кепаш',
 'unusedtemplatestext' => 'Кхузахь дагар йина «{{ns:template}}» цӀерийн меттиган агӀонаш, кхечу агӀонийн юкъа тоьхна йоцу.
 Диц ма делахь хьажа кеп агӀонашкахь лелош юй.',
 'unusedtemplateswlh' => 'кхин хьажоргаш',
@@ -1910,6 +1912,7 @@ $1',
 'doubleredirectstext' => 'ХӀокху агӀонехь ю дӀасахьажорашан тӀе хьажийна йолу дӀасахьажораш.
 <del>ТӀехула сиз хаькхна </del>нисйина чарна.',
 'double-redirect-fixed-move' => 'АгӀон [[$1]] цӀе хийцина, хӀинца иза дӀахьажийна оцу [[$2]]',
+'double-redirect-fixed-maintenance' => 'Шалха дӀасахьажинарг нисъяр [[$1]] → [[$2]].',
 'double-redirect-fixer' => 'ДӀасахьажинарш нисерг',
 
 'brokenredirects' => 'ДIахаьдна долу дIасахьажораш',
@@ -1942,7 +1945,7 @@ $1',
 'uncategorizedimages' => 'Категореш йоцу файлаш',
 'uncategorizedtemplates' => 'Категореш йоцу кепаш',
 'unusedcategories' => 'Йаьсса категореш',
-'unusedimages' => 'Ð\9bелоÑ\88 Ð´оцу файлаш',
+'unusedimages' => 'Ð\9bелоÑ\88 Ð¹оцу файлаш',
 'popularpages' => 'ГӀараяьлла агӀонаш',
 'wantedcategories' => 'Оьшуш йолу категореш',
 'wantedpages' => 'Оьшуш йолу агIонаш',
@@ -1950,7 +1953,7 @@ $1',
 'wantedfiletext-cat' => 'Лахара йоцу файлаш лело гӀерта. Оцу могӀам юкъа ца хууш файлаш кхета там бу, кхечу проекташ чохь йолу. Ишта ца хууш юкъа нийса елачарна тӀехула <del>сиз</del> хира ду.
 Кхин йоцу файлаш гойту [[:$1]] чохь',
 'wantedfiletext-nocat' => 'Лахара йоцу файлаш лело гӀерта. Оцу могӀам юкъа ца хууш файлаш кхета там бу, кхечу проекташ чохь йолу. Ишта ца хууш юкъа нийса елачарна тӀехула <del>сиз</del> хира ду.',
-'wantedtemplates' => 'Ð\9eÑ\8cÑ\88Ñ\83Ñ\88 Ð´олу кепаш',
+'wantedtemplates' => 'Ð\9eÑ\8cÑ\88Ñ\83Ñ\88 Ð¹олу кепаш',
 'mostlinked' => 'Дуккха хьажоргаш тӀе тоьхна йолу агӀонаш',
 'mostlinkedcategories' => 'Дуккха тӀе хьажораш йолу категореш',
 'mostlinkedtemplates' => 'Массарел дуккха а леладо кепаш',
@@ -2166,7 +2169,7 @@ $1',
 'delete-legend' => 'ДӀаяккхар',
 'historywarning' => "'''Тергам:''' хӀокху агӀона герггарчу хьесапехь $1 {{PLURAL:$1|версеш|верси|верси}} ю:",
 'confirmdeletetext' => "Хьо гӀерта агӀо я файл дӀаяккха '''дехар до''', дӀаяккхале хьалха хьажа [[{{MediaWiki:Policy-url}}|кхуза]].",
-'actioncomplete' => 'Дешдерг кхочушди',
+'actioncomplete' => 'Дешдерг кхочушдина',
 'actionfailed' => 'Кхочушъ дина дац',
 'deletedtext' => '«$1» дӀаяьккхина яра.
 Хьажа. $2 хьажарна оцу тӀаьхьара дӀаяхначара могӀаме.',
@@ -2472,9 +2475,9 @@ $1',
 'move-watch' => 'Латайé хӀара агӀо тергаме могӀанан юкъахь',
 'movepagebtn' => 'АгӀон цӀе хийца',
 'pagemovedsub' => 'АгӀон цӀе хийцина',
-'movepage-moved' => "'''АгӀон цӀе «$1» хийцина хӀокху «$2»'''",
-'movepage-moved-redirect' => 'Ð\9aÑ\85оÑ\8cллина Ð´Ó\80аÑ\81аÑ\85Ñ\8cажоÑ\80иг.',
-'movepage-moved-noredirect' => 'Ð\94Ó\80аÑ\81Ñ\85Ñ\8cажоÑ\80иг ÐºÑ\85оллаÑ\80 Ð´Ð¾Ñ\85ина.',
+'movepage-moved' => "'''АгӀон цӀе «$1» хийцина  «$2»'''",
+'movepage-moved-redirect' => 'Кхоьллина дӀасахьажорг.',
+'movepage-moved-noredirect' => 'ДӀасхьажорг кхоллар дохина.',
 'articleexists' => 'ХӀарасанна цӀе йолу агӀо йолуш ю йа ахьа гойтуш йолу цӀе магош яц.
 Дехар до, харжа кхин цӀе.',
 'movetalk' => 'Цуьнца йогӀуш йолу дийцаре агӀон цӀе хийцар',
@@ -3008,6 +3011,7 @@ MediaWiki яржош ю и шуна пайдане хир яц те аьлла,
 'fileduplicatesearch-filename' => 'Файлан цӀе:',
 'fileduplicatesearch-submit' => 'Лаха',
 'fileduplicatesearch-info' => '$1 × $2 пиксель<br />Файлан барам: $3<br />MIME-тайп: $4',
+'fileduplicatesearch-noresults' => 'ЦӀе «$1» йолуш файл цакарий.',
 
 # Special:SpecialPages
 'specialpages' => 'Леррина агlонаш',
index 173f523..cd498c3 100644 (file)
@@ -185,7 +185,6 @@ $messages = array(
 'currentevents-url' => 'Project:Ultimi evenimenti',
 'disclaimers' => 'Avvertimenti',
 'disclaimerpage' => 'Project:Avertimenti generali',
-'helppage' => 'Help:Cuntenutu',
 'mainpage' => 'Pagina maestra',
 'mainpage-description' => 'Pagina maestra',
 'portal' => 'Purtone di a cumunità',
index f918287..38abebb 100644 (file)
@@ -560,6 +560,7 @@ Sylwer y bydd rhai tudalennau yn parhau i ymddangos fel ag yr oeddent pan oeddec
 'gotaccountlink' => 'Mewngofnodi',
 'userlogin-resetlink' => 'Ydych chi wedi anghofio eich manylion mewngofnodi?',
 'userlogin-resetpassword-link' => 'Wedi anghofio eich cyfrinair?',
+'userlogin-helplink2' => 'Cymorth wrth fewngofnodi',
 'userlogin-loggedin' => 'Rydych eisoes wedi mewngofnodi wrth yr enw {{GENDER:$1|$1}}.
 Defnyddiwch y ffurflen isod i fewngofnodi wrth rhyw enw arall.',
 'userlogin-createanother' => 'Creu cyfrif ychwanegol',
@@ -645,6 +646,7 @@ Oedwch $1 cyn mentro eto.',
 'createacct-another-realname-tip' => "Gallwch ddewis roi eich enw go iawn.
 Os y gwnewch, fe gaiff yr enw go iawn ei defnyddio wrth dadogi'ch gwaith.",
 'pt-login' => 'Mewngofnodi',
+'pt-login-button' => 'Mewngofnoder',
 'pt-createaccount' => 'Creu cyfri',
 'pt-userlogout' => 'Allgofnodi',
 
@@ -1053,7 +1055,9 @@ Serch hyn, gallwch eu cymharu o hyd; cewch weld y manylion ar y [{{fullurl:{{#Sp
 'revdelete-no-file' => "Nid yw'r ffeil a nodwyd yn bod.",
 'revdelete-show-file-confirm' => 'Ydych chi\'n sicr eich bod am weld y diwygiad dilëedig o\'r ffeil "<nowiki>$1</nowiki>" a roddwyd ar gadw am $3 ar $2?',
 'revdelete-show-file-submit' => 'Ydw',
-'logdelete-selected' => "{{PLURAL:$1|Digwyddiad|Digwyddiad|Digwyddiadau|Digwyddiadau|Digwyddiadau|Digwyddiadau}} a ddewiswyd o'r lòg:",
+'revdelete-selected-text' => 'Dewisiwyd y {{PLURAL:$1|diwygiad|diwygiad|diwygiadau}} canlynol o [[:$2]]:',
+'revdelete-selected-file' => "Dewiswyd y {{PLURAL:$1|diwygiad|diwygiad|diwygiadau}} canlynol o'r ffeil [[:$2]]:",
+'logdelete-selected' => "{{PLURAL:$1|Digwyddiad|Digwyddiad|Digwyddiadau}} a ddewiswyd o'r lòg:",
 'revdelete-confirm' => "Byddwch gystal â chadarnhau eich bod yn bwriadu gwneud hyn, eich bod yn deall yr effaith a gaiff, a'ch bod yn ei wneud yn ôl y [[{{MediaWiki:Policy-url}}|y polisi]].",
 'revdelete-suppress-text' => "'''Dim ond''' yn yr achosion sy'n dilyn y dylech fentro cuddio gwybodaeth:
 * Gwybodaeth a all fod yn enllib
@@ -1906,6 +1910,9 @@ Mewnbwn: contenttype/subtype, e.e. <code>image/jpeg</code>.",
 # List redirects
 'listredirects' => "Rhestru'r ail-gyfeiriadau",
 
+# List duplicated files special page
+'listduplicatedfiles' => 'Rhestr y ffeiliau sydd wedi eu dyblygu',
+
 # Unused templates
 'unusedtemplates' => 'Nodiadau heb eu defnyddio',
 'unusedtemplatestext' => "Dyma restr o'r holl dudalennau yn y parth {{ns:template}} nad ydynt wedi eu cynnwys yn unrhyw dudalen arall.
@@ -2358,7 +2365,7 @@ Dyma'r gosodiadau diogelu cyfredol ar gyfer y dudalen '''$1''':",
 Dyma'r gosodiadau diogelu cyfredol ar gyfer y dudalen '''$1''':",
 'protect-locked-access' => "Nid yw'r gallu i newid lefel diogelu ar dudalen ynghlwm wrth eich cyfrif defnyddiwr.
 Dyma'r gosodiadau diogelu cyfredol ar gyfer y dudalen '''$1''':",
-'protect-cascadeon' => "Mae'r dudalen hon wedi ei diogelu ar hyn o bryd oherwydd ei bod wedi ei chynnwys yn y {{PLURAL:$1|dudalen|dudalen|tudalennau|tudalennau|tudalennau|tudalennau}} canlynol sydd wedi {{PLURAL:$1|ei|ei|eu|eu|eu|eu}} sgydol-diogelu.  Gallwch newid lefel diogelu'r dudalen hon, ond ni fydd hynny'n effeithio ar y sgydol-ddiogelu.",
+'protect-cascadeon' => "Mae'r dudalen hon wedi ei diogelu ar hyn o bryd oherwydd ei bod wedi ei chynnwys yn y {{PLURAL:$1|dudalen|dudalen|tudalennau}} canlynol sydd wedi {{PLURAL:$1|ei|ei|eu}} sgydol-diogelu.  Gallwch newid lefel diogelu'r dudalen hon, ond ni fydd hynny'n effeithio ar y sgydol-ddiogelu.",
 'protect-default' => "Caniatáu'r gallu i bob defnyddiwr",
 'protect-fallback' => 'Caniatau i\'r defnyddwyr gyda\'r gallu "$1" yn unig wneud hyn',
 'protect-level-autoconfirmed' => "Caniatau'r defnyddwyr sydd wedi eu cadarnhau'n awtomatig yn unig",
index b49ee8d..aa61b72 100644 (file)
@@ -1315,7 +1315,7 @@ Detaljer kan findes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'prefs-personal' => 'Brugerdata',
 'prefs-rc' => 'Seneste ændringer',
 'prefs-watchlist' => 'Overvågningsliste',
-'prefs-watchlist-days' => 'Antal dage, som overvågningslisten standardmæssigt skal omfatte:',
+'prefs-watchlist-days' => 'Antal dage der skal vises i overvågningslisten:',
 'prefs-watchlist-days-max' => 'Højst $1 {{PLURAL:$1|dag|dage}}',
 'prefs-watchlist-edits' => 'Antal redigeringer der vises i udvidet overvågningsliste:',
 'prefs-watchlist-edits-max' => 'Maks. 1000',
@@ -1339,7 +1339,7 @@ Detaljer kan findes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'recentchangescount' => 'Antal redigeringer som skal vises som standard:',
 'prefs-help-recentchangescount' => 'Det gælder for seneste ændringer, historikker og logger.',
 'prefs-help-watchlist-token2' => 'Dette er den hemmelige nøgle til web-feed af din overvågningsliste.
-Hvis andre kender den, man vil være i stand til at læse din overvågningsliste, så del den ikke.
+Hvis andre kender den, vil man være i stand til at læse din overvågningsliste, så del den ikke.
 [[Special:ResetTokens|Klik her hvis du har brug at nulstille den]].',
 'savedprefs' => 'Dine indstillinger er blevet gemt.',
 'timezonelegend' => 'Tidszone:',
index c4f42d4..9bb9fa2 100644 (file)
@@ -890,7 +890,7 @@ Benutze das unten stehende Formular, um dich unter einem anderen Benutzernamen a
 'createacct-reason-ph' => 'Warum erstellst du ein anderes Benutzerkonto?',
 'createacct-captcha' => 'Sicherheitsprüfung',
 'createacct-imgcaptcha-ph' => 'Gib den Text ein, den du oben siehst.',
-'createacct-submit' => 'Dein Benutzerkonto erstellen',
+'createacct-submit' => 'Benutzerkonto erstellen',
 'createacct-another-submit' => 'Anderes Benutzerkonto erstellen',
 'createacct-benefit-heading' => '{{SITENAME}} wird von Menschen wie dir geschaffen.',
 'createacct-benefit-body1' => '{{PLURAL:$1|Bearbeitung|Bearbeitungen}}',
index 39a2b61..8e57dee 100644 (file)
@@ -2285,7 +2285,7 @@ Xo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gı
 'querypage-disabled' => 'Na pelaya xısusi,sebeb de performansi ra qefılneyê.',
 
 # Book sources
-'booksources' => 'Çımey kitaban',
+'booksources' => 'Çımeyê kıtaban',
 'booksources-search-legend' => 'Seba çımeyanê kıtaban cı geyre',
 'booksources-isbn' => 'ISBN:',
 'booksources-go' => 'Şo',
@@ -4150,7 +4150,7 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'version-license-not-found' => 'Seba na derganiye melumatê lisansê detayıni nêvêniya.',
 'version-credits-title' => 'Semedê $1 ra krediy',
 'version-poweredby-credits' => "Ena wiki, dezginda '''[https://www.mediawiki.org/ MediaWiki]''' ya piya vıraziyaya, heqê telifi © 2001-$1 $2.",
-'version-poweredby-others' => 'Zewmi',
+'version-poweredby-others' => 'ê bini',
 'version-poweredby-translators' => "Açernere translatewiki.net'i",
 'version-credits-summary' => 'Ma qayılime ke [[Special:Version|MediaWiki]] rê ke kami destek dayo wa mayê vanime inan bışınasne.',
 'version-license-info' => "MediaWiki xoseri jew nuştereno; MediaWiki'yer, weqfê xoseri nuşteren GNU lisansiya merdumi şene ke vıla kerê, bıvurnê u timar kerê.
index 80f0375..8a20709 100644 (file)
@@ -777,8 +777,19 @@ A sèmbra ch'la sìa stêda scanşlêda.",
 La ghé bèle.",
 'defaultmessagetext' => 'Tèst pre-stabilî',
 'content-failed-to-parse' => "L'é impusébil cunsidrêr $2 p'r al mudèl $1:$3",
+'invalid-content-data' => 'Al j infurmasiòn ché dèinter în mìa vâlidi.',
+'content-not-allowed-here' => 'Còl che gh\'é dèinter a"$1" an n\'é mìa permés int al pàgini [[$2]]',
+'editwarning-warning' => "Bandunêr cla pàgina ché a 's pré pêrder tóti 'l mudéfichi fâti. Se t'é fât l'ingrès, ét pō bluchêr cl' avîş ché int la sesiòun \"{{int:prefs-editing}}\" dal tō preferèinsi.",
+'editpage-notsupportedcontentformat-title' => "Cla fōrma ché an n'é mìa sostgnûda.",
+'editpage-notsupportedcontentformat-text' => 'La fōrma dal scrét in $1 la rispèta mìa al mudèl scrét in $2.',
+
+# Content models
+'content-model-wikitext' => 'wikitèst',
+'content-model-text' => 'tèst normêl',
 
 # Parser/template warnings
+'expensive-parserfunction-warning' => "'''Atensiòun:''' cla pàgina ché la gh'à trôpi ciamêdi ala funsiòun parse. A n' in duvré avèir mēno 'd $2, adèsa a {{PLURAL:$1|'gh n'é $1}}.",
+'expensive-parserfunction-category' => 'Pàgini cun trôpi ciamêdi a la funsiòun parser.',
 'post-expand-template-inclusion-warning' => "'''Atensiòun:''' la grandèsa di mudē més dèinter l'é trôp grôsa. Soquânt mudē gnirâ mìa més dèinter.",
 'post-expand-template-inclusion-category' => "Pàgini in dó la grandèsa di mudē més dèinter la và d'ed sōver dal lémit permés.",
 'post-expand-template-argument-warning' => "'''Atensiòun:''' cla pàgina ché la gh'à ûn o pió argumèint ed mudē trôp grôs per èser şlarghê. Chi argomèint ché a gnirân saltê.",
index f4c4d67..9bbdc11 100644 (file)
@@ -2204,8 +2204,8 @@ $1',
 'nmembers' => '$1 {{PLURAL:$1|μέλος|μέλη}}',
 'nrevisions' => '$1 {{PLURAL:$1|αναθεώρηση|αναθεωρήσεις}}',
 'nviews' => '$1 {{PLURAL:$1|επίσκεψη|επισκέψεις}}',
-'nimagelinks' => 'Χρησιμοποιείται στο  $1 {{PLURAL:$1|page|pages}}',
-'ntransclusions' => 'χρησιμοποιείται στο $1 {{PLURAL:$1|page|pages}}',
+'nimagelinks' => 'Χρησιμοποιείται σε $1 {{PLURAL:$1|σελίδα|σελίδες}}',
+'ntransclusions' => 'χρησιμοποιείται σε $1 {{PLURAL:$1|σελίδα|σελίδες}}',
 'specialpage-empty' => 'Αυτή η σελίδα είναι κενή.',
 'lonelypages' => 'Ορφανές σελίδες',
 'lonelypagestext' => 'Οι ακόλουθες σελίδες δεν συνδέονται με ή δεν υπερκλείονται σε άλλες σελίδες στο {{SITENAME}}.',
@@ -2543,8 +2543,8 @@ $UNWATCHURL
 
 # Protect
 'protectlogpage' => 'Αρχείο καταγραφών προστασίας',
-'protectlogtext' => 'Παρακάτω είναι μια λίστα των αλλαγών που έγιναν στις ρυθμίσεις προστασίας της σελίδας
-ΡίξÏ\84ε Î¼Î¹Î± Î¼Î±Ï\84ιά Ï\83Ï\84ο [[Special:ProtectedPages|protected pages list]] Î³Î¹Î± Î¼Î¹Î± Î»Î¯Ï\83Ï\84α Ï\84Ï\89ν Ï\80αÏ\81Ï\8cνÏ\84Ï\89ν Ï\81Ï\85θμίÏ\83εÏ\89ν Ï\80Ï\81οÏ\83Ï\84αÏ\83ίαÏ\82 Ï\84ηÏ\82 Î»ÎµÎ¹Ï\84οÏ\85Ï\81γικήÏ\82 Ï\83ελίδαÏ\82.',
+'protectlogtext' => 'Παρακάτω είναι μια λίστα αλλαγών που έγιναν στις ρυθμίσεις προστασίας.
+ΡίξÏ\84ε Î¼Î¹Î± Î¼Î±Ï\84ιά Ï\83Ï\84η [[Special:ProtectedPages|λίÏ\83Ï\84α Ï\80Ï\81οÏ\83Ï\84αÏ\84εÏ\85μένÏ\89ν Ï\83ελίδÏ\89ν]] Î³Î¹Î± Î­Î½Î± ÎºÎ±Ï\84άλογο Ï\84Ï\89ν Ï\84Ï\81εÏ\87οÏ\85Ï\83Ï\8eν Ï\81Ï\85θμίÏ\83εÏ\89ν Ï\80Ï\81οÏ\83Ï\84αÏ\83ίαÏ\82 Ï\83ελίδÏ\89ν.',
 'protectedarticle' => 'προστάτευσε τη σελίδα «[[$1]]»',
 'modifiedarticleprotection' => 'αλλαγή επιπέδου προστασίας για "[[$1]]"',
 'unprotectedarticle' => 'αφαίρεση προστασίας από"[[$1]]"',
index dbf520d..57beb93 100644 (file)
@@ -467,6 +467,7 @@ $specialPageAliases = array(
        'Specialpages'              => array( 'SpecialPages' ),
        'Statistics'                => array( 'Statistics' ),
        'Tags'                      => array( 'Tags' ),
+       'TrackingCategories'        => array( 'TrackingCategories' ),
        'Unblock'                   => array( 'Unblock' ),
        'Uncategorizedcategories'   => array( 'UncategorizedCategories' ),
        'Uncategorizedimages'       => array( 'UncategorizedFiles', 'UncategorizedImages' ),
@@ -2947,6 +2948,22 @@ There may be [[{{MediaWiki:Listgrouprights-helppage}}|additional information]] a
 'listgrouprights-addgroup-self-all'    => 'Add all groups to own account',
 'listgrouprights-removegroup-self-all' => 'Remove all groups from own account',
 
+# Tracking categories page
+'trackingcategories'                           => 'Tracking categories',
+'trackingcategories-summary'                   => 'This page lists tracking categories which are automatically populated by the MediaWiki software. Their names can be changed by altering the relevant system messages in the {{ns:8}} namespace.',
+'trackingcategories-msg'                       => 'Tracking Category',
+'trackingcategories-name'                      => 'Message name',
+'trackingcategories-desc'                      => 'Category inclusion criteria',
+'noindex-category-desc'                        => 'The page has a <nowiki>__NOINDEX__</nowiki> magic word on it (and is in a namespace where that flag is allowed), and hence is not indexed by robots.',
+'index-category-desc'                          => 'The page has a <nowiki>__INDEX__</nowiki> on it (and is in a namespace where that flag is allowed), and hence is indexed by robots where it normally wouldn\'t be.',
+'post-expand-template-inclusion-category-desc' => 'After expanding all the templates, the page size is bigger than $wgMaxArticleSize, so some templates weren\'t expanded.',
+'post-expand-template-argument-category-desc'  => 'After expanding a template argument (something in triple braces, like {{{Foo}}}), the page is bigger than $wgMaxArticleSize.',
+'expensive-parserfunction-category-desc'       => 'Too many expensive parser functions (like #ifexists) included on a page. See [https://www.mediawiki.org/wiki/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].',
+'broken-file-category-desc'                    => 'Category added if the page contains a broken file link (a link to embed a file when the file does not exist).',
+'hidden-category-category-desc'                => 'This is a category with <nowiki>__HIDDENCAT__</nowiki> on it, which prevents it from showing up in the category links box on pages, by default.',
+'trackingcategories-nodesc'                    => 'No description available.',
+'trackingcategories-disabled'                  => 'Category is disabled',
+
 # Email user
 'mailnologin'              => 'No send address',
 'mailnologintext'          => 'You must be [[Special:UserLogin|logged in]] and have a valid email address in your [[Special:Preferences|preferences]] to send email to other users.',
index 988f361..ffda122 100644 (file)
@@ -905,6 +905,7 @@ $2',
 'gotaccountlink' => 'به سامانه وارد شوید',
 'userlogin-resetlink' => 'جزئیات ورود را فراموش کرده‌اید؟',
 'userlogin-resetpassword-link' => 'گذرواژه‌تان را فراموش کردید؟',
+'userlogin-helplink2' => 'کمک با ورود',
 'userlogin-loggedin' => 'شما در حال حاضر به‌عنوان {{GENDER:$1|$1}} وارد شده‌اید.
 از فرم پایین برای ورود به‌عنوان یک کاربر دیگر استفاده کنید.',
 'userlogin-createanother' => 'ایجاد یک حساب کاربری دیگر',
@@ -1198,11 +1199,11 @@ $2
 'userpage-userdoesnotexist-view' => 'حساب کاربری «$1» ثبت نشده‌است.',
 'blocked-notice-logextract' => 'دسترسی این کاربر در حال حاضر بسته است.
 آخرین مورد سیاهه قطع دسترسی در زیر آمده‌است:',
-'clearyourcache' => "'''نکته:''' پس از ذخیره‌کردن ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
-*'''فایرفاکس / سافاری:'''  کلید ''Shift'' را نگه دارید و روی دکمهٔ ''Reload'' کلیک کنید، یا کلید‌های ''Ctrl-F5'' یا ''Ctrl-R'' را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ''⌘-R'')
-*'''گوگل کروم:'''کلیدهای ''Ctrl+Shift+R'' را با هم فشار دهید. (در رایانه‌های اپل مکینتاش کلید‌های ''⌘-Shift-R'')
-*'''اینترنت اکسپلورر:''' کلید ''Ctrl'' را نگه‌دارید و روی دکمهٔ ''Refresh'' کلیک کنید، یا کلید‌های ''Ctrl-F5'' را با هم فشار دهید
-*'''اپرا:''' حافظهٔ نهانی مرورگر را از طریق منوی ''Tools &rarr; Preferences'' پاک کنید",
+'clearyourcache' => '<strong>نکته:</strong> پس از ذخیره‌کردن ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
+*<strong>فایرفاکس / سافاری:</strong> کلید <em>Shift</em> را نگه دارید و روی دکمهٔ <em>Reload</em> کلیک کنید، یا کلید‌های <em>Ctrl-F5</em> یا <em>Ctrl-R</em> را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های <em>⌘-R</em>)
+*<strong>گوگل کروم:</strong> کلیدهای <em>Ctrl+Shift+R</em> را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های <em>⌘-Shift-R</em>)
+*<strong>اینترنت اکسپلورر:</strong> کلید <em>Ctrl</em> را نگه‌دارید و روی دکمهٔ <em>Refresh</em> کلیک کنید، یا کلید‌های <em>Ctrl-F5</em> را با هم فشار دهید
+*<strong>اپرا:</strong> حافظهٔ نهانی مرورگر را از طریق منوی <em>Tools &rarr; Preferences</em> پاک کنید',
 'usercssyoucanpreview' => "'''نکته:''' پیش از ذخیره‌کردن پرونده سی‌اس‌اس خود، با دکمهٔ '''{{int:showpreview}}''' آن را آزمایش کنید.",
 'userjsyoucanpreview' => "'''نکته:''' پیش از ذخیره‌کردن پروندهٔ جاوااسکریپت خود، با دکمهٔ '''{{int:showpreview}}''' آن را آزمایش کنید.",
 'usercsspreview' => "'''فراموش مکنید که شما فقط دارید پیش‌نمایش سی‌اس‌اس کاربری‌تان را می‌بینید.'''
index 24754fa..0cc4755 100644 (file)
@@ -1262,7 +1262,7 @@ Voit silti nähdä tämän muutoksen. Lisätietoja löytyy [{{fullurl:{{#Special
 'revdelete-show-file-confirm' => 'Haluatko varmasti nähdä poistetun version tiedostosta <nowiki>$1</nowiki>, joka on tallennettu $2 kello $3?',
 'revdelete-show-file-submit' => 'Kyllä',
 'revdelete-selected-text' => '{{PLURAL:$1|Valittu versio|Valitut versiot}} kohteesta [[:$2]]:',
-'revdelete-selected-file' => '{{PLURAL:$1|Valittu tiedoton versio|Valitut tiedoston versiot}} kohteesta [[:$2]]:',
+'revdelete-selected-file' => '{{PLURAL:$1|Valittu tiedoston versio|Valitut tiedoston versiot}} kohteesta [[:$2]]:',
 'logdelete-selected' => '{{PLURAL:$1|Valittu lokimerkintä|Valitut lokimerkinnät}}:',
 'revdelete-text-text' => 'Poistetut versiot näkyvät edelleen sivun historiassa, mutta osa niiden sisällöstä ei enää ole saatavilla julkisesti.',
 'revdelete-text-file' => 'Poistetut tiedostoversiot näkyvät yhä sivun historiassa, mutta osa niiden sisällöstä ei ole saatavilla julkisesti.',
@@ -1434,7 +1434,7 @@ $1 {{int:pipe-separator}} $2',
 'prefs-skin' => 'Ulkoasu',
 'skin-preview' => 'esikatselu',
 'datedefault' => 'Ei omaa määrittelyä',
-'prefs-beta' => 'Beta-ominaisuudet',
+'prefs-beta' => 'Beeta-ominaisuudet',
 'prefs-datetime' => 'Aika ja päiväys',
 'prefs-labs' => 'Testattavana olevat ominaisuudet',
 'prefs-user-pages' => 'Käyttäjäsivut',
index eaf6cfd..c41dc20 100644 (file)
@@ -1341,7 +1341,7 @@ $NEWPAGE
 'undelete-revision' => '删卟$1由$3(到$2)编写𠮶修改版本:',
 'undeleterevision-missing' => '冇用或跌掉𠮶修改版本。话伓定倷碰到只错误𠮶链接,要卟就系个只版本早从存盘恢复或换卟嘞。',
 'undelete-nodiff' => '冇寻到以前𠮶版本。',
-'undeletebtn' => '恢复',
+'undeletebtn' => '还原',
 'undeletelink' => '还原',
 'undeleteviewlink' => '望吖',
 'undeletecomment' => '评论:',
@@ -2092,7 +2092,7 @@ $3
 # Auto-summaries
 'autosumm-blank' => '移卟页面𠮶全部内容',
 'autosumm-replace' => "搦页面换到 '$1'",
-'autoredircomment' => '重定向[[$1]]',
+'autoredircomment' => '重定向页面至[[$1]]',
 'autosumm-new' => '新页: $1',
 
 # Live preview
index be6d134..1a595fd 100644 (file)
@@ -2114,7 +2114,7 @@ $3
 # Auto-summaries
 'autosumm-blank' => '移卟頁面嗰全部內容',
 'autosumm-replace' => "搦頁面換到 '$1'",
-'autoredircomment' => '重定向[[$1]]',
+'autoredircomment' => '重定向页面至[[$1]]',
 'autosumm-new' => '新頁: $1',
 
 # Live preview
index b76b3b5..45f907d 100644 (file)
@@ -731,6 +731,7 @@ Non esqueza personalizar as súas [[Special:Preferences|preferencias de {{SITENA
 'gotaccountlink' => 'Acceda ao sistema',
 'userlogin-resetlink' => 'Esqueceu os seus datos de rexistro?',
 'userlogin-resetpassword-link' => 'Esqueceu o contrasinal?',
+'userlogin-helplink2' => 'Axuda co rexistro',
 'userlogin-loggedin' => 'Xa accedeu ao sistema como {{GENDER:$1|$1}}.
 Utilice o formulario inferior para acceder como outro usuario.',
 'userlogin-createanother' => 'Crear outra conta',
@@ -833,6 +834,7 @@ Por favor, agarde $1 antes de probar outra vez.',
 'createacct-another-realname-tip' => 'O nome real é opcional.
 Se escolle dalo utilizarase para atribuír ao usuario o seu traballo.',
 'pt-login' => 'Acceder ao sistema',
+'pt-login-button' => 'Acceder ao sistema',
 'pt-createaccount' => 'Crear unha conta',
 'pt-userlogout' => 'Saír',
 
@@ -866,6 +868,9 @@ Para completar o acceso, defina un novo contrasinal aquí:',
 'resetpass-abort-generic' => 'Unha extensión cancelou a modificación do contrasinal.',
 'resetpass-expired' => 'O seu contrasinal caducou. Defina un novo contrasinal para acceder.',
 'resetpass-expired-soft' => 'O seu contrasinal caducou e debe restablecelo. Escolla un novo contrasinal ou prema en "{{int:resetpass-submit-cancel}}" para restablecelo máis tarde.',
+'resetpass-validity-soft' => 'O seu contrasinal non é válido: $1
+
+Escolla un novo contrasinal ou prema en "{{int:resetpass-submit-cancel}}" para restablecelo máis tarde.',
 
 # Special:PasswordReset
 'passwordreset' => 'Restablecer o contrasinal',
@@ -1015,7 +1020,7 @@ Poida que a movesen ou borrasen mentres ollaba a páxina.',
 'accmailtext' => 'Un contrasinal xerado ao chou para [[User talk:$1|$1]] foi enviado a $2. Pode modificarse na páxina de [[Special:ChangePassword|cambio de contrasinais]] tras acceder ao sistema.',
 'newarticle' => '(Novo)',
 'newarticletext' => "Seguiu unha ligazón a unha páxina que aínda non existe.
-Para crear a páxina, comece a escribir na caixa de embaixo (vexa a [$1 páxina de axuda] para obter máis información).
+Para crear a páxina, comece a escribir na caixa inferior (consulte a [$1 páxina de axuda] para obter máis información).
 Se chegou aquí por erro, simplemente prema no botón '''atrás''' do seu navegador.",
 'anontalkpagetext' => "----''Esta é a páxina de conversa dun usuario anónimo que aínda non creou unha conta ou que non a usa. Polo tanto, empregamos o enderezo IP para a súa identificación. Este enderezo IP pódeno compartir varios usuarios distintos. Se pensa que foron dirixidos contra a súa persoa comentarios inadecuados, por favor, [[Special:UserLogin/signup|cree unha conta]] ou [[Special:UserLogin|acceda ao sistema]] para evitar futuras confusións con outros usuarios anónimos.''",
 'noarticletext' => 'Actualmente non hai ningún texto nesta páxina.
@@ -1260,7 +1265,13 @@ función, a revisión especificada non existe ou está intentando agochar a revi
 'revdelete-no-file' => 'O ficheiro especificado non existe.',
 'revdelete-show-file-confirm' => 'Está seguro de querer ver unha revisión borrada do ficheiro "<nowiki>$1</nowiki>" do día $2 ás $3?',
 'revdelete-show-file-submit' => 'Si',
-'logdelete-selected' => '{{PLURAL:$1|Rexistro de evento seleccionado|Rexistro de eventos seleccionados}}:',
+'revdelete-selected-text' => '{{PLURAL:$1|Revisión seleccionada|Revisións seleccionadas}} de "[[:$2]]":',
+'revdelete-selected-file' => '{{PLURAL:$1|Revisión de ficheiro seleccionada|Revisións de ficheiro seleccionadas}} de "[[:$2]]":',
+'logdelete-selected' => '{{PLURAL:$1|Rexistro de eventos seleccionado|Rexistros de eventos seleccionados}}:',
+'revdelete-text-text' => 'As revisións borradas seguirán aparecendo no historial da páxina, pero partes do seu contido serán inaccesibles para o público.',
+'revdelete-text-file' => 'As revisións borradas do ficheiro seguirán aparecendo no historial do ficheiro, pero partes do seu contido serán inaccesibles para o público.',
+'logdelete-text' => 'Os rexistros de eventos borrados seguirán aparecendo nos rexistros, pero partes do seu contido serán inaccesibles para o público.',
+'revdelete-text-others' => 'Os outros administradores de {{SITENAME}} seguirán tendo acceso aos contidos agochados e poderán restauralos a través desta mesma interface, a menos que se definan restricións adicionais.',
 'revdelete-confirm' => 'Por favor, confirme que quere levar a cabo esta acción, que comprende as consecuencias e que o fai de acordo [[{{MediaWiki:Policy-url}}|coas políticas]].',
 'revdelete-suppress-text' => "A eliminación '''unicamente''' debería utilizarse nos seguintes casos:
 * Información potencialmente difamatoria
@@ -1395,7 +1406,7 @@ O [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrad
 'search-file-match' => '(coincide co contido do ficheiro)',
 'search-suggest' => 'Quizais quixo dicir: $1',
 'search-interwiki-caption' => 'Proxectos irmáns',
-'search-interwiki-default' => 'Resultados en $1:',
+'search-interwiki-default' => 'Resultados de $1:',
 'search-interwiki-more' => '(máis)',
 'search-relatedarticle' => 'Relacionado',
 'searcheverything-enable' => 'Procurar en todos os espazos de nomes',
@@ -2135,6 +2146,11 @@ Entrada: tipodecontido/subtipo, por exemplo <code>image/jpeg</code>.',
 # List redirects
 'listredirects' => 'Lista de redireccións',
 
+# List duplicated files special page
+'listduplicatedfiles' => 'Lista de ficheiros duplicados',
+'listduplicatedfiles-summary' => 'Esta é unha lista coas versións máis recentes de ficheiros que coinciden coa versión máis recente doutro ficheiro. Considéranse só os ficherios locais.',
+'listduplicatedfiles-entry' => '"[[:File:$1|$1]]" ten [[$3|{{PLURAL:$2|un duplicado|$2 duplicados}}]].',
+
 # Unused templates
 'unusedtemplates' => 'Modelos sen uso',
 'unusedtemplatestext' => 'Esta páxina contén unha lista de todas as páxinas no espazo de nomes {{ns:template}} que non están incluídas en ningunha outra páxina.
@@ -2591,8 +2607,8 @@ Vexa a [[Special:ProtectedPages|lista de páxinas protexidas]] se quere obter a
 Velaquí a configuración actual da páxina '''$1''':",
 'protect-locked-access' => "A súa conta non dispón de permisos para mudar os niveis de protección.
 Velaquí a configuración actual da páxina '''$1''':",
-'protect-cascadeon' => 'Esta páxina está protexida neste momento porque está incluída {{PLURAL:$1|na seguinte páxina, que foi protexida|nas seguintes páxinas, que foron protexidas}} coa opción protección en serie activada.
-Pode mudar o nivel de protección da páxina pero iso non afectará á protección en serie.',
+'protect-cascadeon' => 'Esta páxina está protexida actualmente porque está incluída {{PLURAL:$1|na seguinte páxina, que foi protexida|nas seguintes páxinas, que foron protexidas}} coa opción "protección en serie" activada.
+Os cambios no nivel de protección desta páxina non afectarán á protección en serie.',
 'protect-default' => 'Permitir a todos os usuarios',
 'protect-fallback' => 'Permitir só aos usuarios con permisos de "$1"',
 'protect-level-autoconfirmed' => 'Permitir só aos usuarios autoconfirmados',
index b7e4a8d..a9e7d45 100644 (file)
@@ -2382,7 +2382,7 @@ $1',
 # Book sources
 'booksources' => 'משאבי ספרות חיצוניים',
 'booksources-search-legend' => 'חיפוש משאבי ספרות חיצוניים',
-'booksources-isbn' => 'מסת"ב:',
+'booksources-isbn' => 'מסת"ב (ISBN):',
 'booksources-go' => 'הצגה',
 'booksources-text' => 'להלן רשימת קישורים לאתרים אחרים המוכרים ספרים חדשים ויד־שנייה, ושבהם עשוי להיות מידע נוסף לגבי ספרים שאתם מחפשים:',
 'booksources-invalid-isbn' => 'המסת"ב שניתן כנראה אינו תקין; אנא בדקו אם ביצעתם טעויות בהעתקה מהמידע המקורי.',
index 819d1d6..c1723a6 100644 (file)
@@ -2443,7 +2443,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'इस पृष्ठ का संपादन इतिहास $1 से अधिक {{PLURAL:$1|अवतरण}} होने की वजह से बहुत बड़ा है।
 इसे हटाने से {{SITENAME}} के डाटाबेस की गतिविधियों में व्यवधान आ सकता है;
 कृपया सोच समझ कर आगे बढ़ें।',
-'deleting-backlinks-warning' => "'''चेतावनी:''' जो पृष्ठ आप हटाने जा रहे हैं उससे [[विशेष:कड़ियाँ/{{FULLPAGENAME}}|अन्य पृष्ठ]] जुड़ते हैं अथवा उसे ट्रांसक्लूड करते हैं।",
+'deleting-backlinks-warning' => "'''चेतावनी:''' जो पृष्ठ आप हटाने जा रहे हैं उससे [[Special:WhatLinksHere/{{FULLPAGENAME}}|अन्य पृष्ठ]] जुड़ते हैं अथवा उसे ट्रांसक्लूड करते हैं।",
 
 # Rollback
 'rollback' => 'संपादन वापिस लें',
index 0c009fe..d7974e1 100644 (file)
@@ -844,6 +844,7 @@ Molimo Vas pričekajte $1 prije nego što pokušate ponovno.',
 'createacct-another-realname-tip' => 'Pravo ime nije obvezno. 
 Ako ga navedete, bit će korišteno za pripisivanje Vaših doprinosa.',
 'pt-login' => 'Prijavi se',
+'pt-login-button' => 'Prijavi se',
 'pt-createaccount' => 'Otvori novi suradnički račun',
 'pt-userlogout' => 'odjavi se',
 
@@ -2435,7 +2436,7 @@ Sva vremena su prema poslužiteljevom vremenu.',
 
 Posljednju promjenu napravio je [[User:$3|$3]] ([[User talk:$3|Razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Sažetak promjene je bio: \"''\$1''\".",
-'revertpage' => 'Uklonjena promjena suradnika $2, vraćeno na posljednju inačicu suradnika $1',
+'revertpage' => 'Uklonjena promjena suradnika [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]), vraćeno na posljednju inačicu suradnika [[User:$1|$1]]',
 'revertpage-nouser' => 'Vraćene izmjene suradnika (suradničko ime uklonjeno) na posljednju inačicu suradnika [[User:$1|$1]]',
 'rollback-success' => 'Uklonjeno uređivanje {{GENDER:$1|suradnika|suradnice}} $1
 vraćeno na posljednju inačicu {{GENDER:$2|suradnika|suradnice}} $2.',
diff --git a/languages/messages/MessagesHrx.php b/languages/messages/MessagesHrx.php
new file mode 100644 (file)
index 0000000..67d2ab5
--- /dev/null
@@ -0,0 +1,2835 @@
+<?php
+/** Hunsrik (Hunsrik)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Paul Beppler
+ */
+
+$fallback = 'de';
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Links (Verbinnunge) unnerstreiche:',
+'tog-hideminor' => 'Klen Ännrunge in den "Letzte Ännrunge" ausblenne',
+'tog-hidepatrolled' => 'Kontrollierte Ännrunge in den "Letzte Ännrungen" ausblenne',
+'tog-newpageshidepatrolled' => 'Kontrollierte Seite bei den "Neie Seite" ausblenne',
+'tog-extendwatchlist' => 'Beobachtungslist erweitre, um statt nuer der letzte Ännrung alle Ännrunge oonzuzeiche.',
+'tog-usenewrc' => 'Ännrunge uff "Letzte Ännrunge" und Beobachtungslist noh Seit gruppiere',
+'tog-numberheadings' => 'Üwerschrifte automatisch nummeriere',
+'tog-showtoolbar' => 'Beoorbeite-Werrekzeichleiste oonzeiche',
+'tog-editondblclick' => 'Seite mit Doppelklick beoorbeite',
+'tog-editsectiononrightclick' => 'Einzelne Abschnitte per Rechtsklick beoorbeite',
+'tog-rememberpassword' => 'Mit dem Browser dauerhaft oongemeldet bleiwe (maximal $1 {{PLURAL:$1|Tooch|Tooche}})',
+'tog-watchcreations' => 'Sellebst erstellt Seite und hochgeloodne Dateie automatisch beobachte',
+'tog-watchdefault' => 'Sellebst geännert Seit und Dateie automatisch beobachte',
+'tog-watchmoves' => 'Sellebst verschobne Seite und Dateie automatisch beobachte',
+'tog-watchdeletion' => 'Sellebst gelöscht Seite und Dateie automatisch beobachte',
+'tog-minordefault' => 'Eichne Ännrunge standardmässich als geringfüchich markiere',
+'tog-previewontop' => 'Vorschau owerhalleb von der Beoorbeitungsfenster oonzeiche',
+'tog-previewonfirst' => 'Beim earscht Beoorbeit immer die Vorschau oonzeiche',
+'tog-enotifwatchlistpages' => 'Bei Ännrungen an beobachtete Seite orrer Dateie E-Mails schicke',
+'tog-enotifusertalkpages' => 'Bei Ännrunge an meiner Benutzer-Diskussionsseit E-Mails schicke',
+'tog-enotifminoredits' => 'Aooch bei klene Ännrunge an Seite und Dateie E-Mails schicke',
+'tog-enotifrevealaddr' => 'Mein E-Mail-Adress in Benachrichtichungs-E-Mails oonzeiche',
+'tog-shownumberswatching' => 'Oonzoohl der beobachtende Benutzer oonzeiche',
+'tog-oldsig' => 'Voarhandne Signatuar:',
+'tog-fancysig' => 'Signatuar als Wikitext behandle (ohne automatische Verlinkung)',
+'tog-uselivepreview' => 'Voarschau sofort oonzeiche (experimentell)',
+'tog-forceeditsummary' => 'Warne, soweit beim Speichre die Zusammerfassung fehlt',
+'tog-watchlisthideown' => 'Eigne Beoorbeitunge in der Beobachtungslist ausblenne',
+'tog-watchlisthidebots' => 'Beoorbeitunge doorrich Bots in der Beobachtungslist ausblenne',
+'tog-watchlisthideminor' => 'Klene Beoorbeitunge in der Beobachtungslist ausblenne',
+'tog-watchlisthideliu' => 'Beoorbeitunge oongemeldeter Benutzer in der Beobachtungslist ausblenne',
+'tog-watchlisthideanons' => 'Beoorbeitunge anonymer Benutzer (IP-Adresse) in der Beobachtungslist ausblennen',
+'tog-watchlisthidepatrolled' => 'Kontrollierte Ännrunge in der Beobachtungslist ausblenne',
+'tog-ccmeonemails' => 'Schick mir Kopiee von der E-Mails, wo ich annre Benutzer schicke',
+'tog-diffonly' => 'Beim Versionsvergleich nuar die Unnerschiede und net die vollständiche Seit oonzeiche',
+'tog-showhiddencats' => 'Oonzeiche versteckter Kategoriee',
+'tog-norollbackdiff' => 'Unnerschied noh dem Zurücksetze unnerdrücke',
+'tog-useeditwarning' => 'Warne, soweit en zur Beoorbeitung geöffnete Seit verloss weard, wo net gespeicherte Ännrunge enthält',
+'tog-prefershttps' => 'Wenn oongemeldet, immer en sichre Verbinnung benutze.',
+
+'underline-always' => 'immer',
+'underline-never' => 'nie',
+'underline-default' => 'abhängig von der Benutzerowerfläche orrer Browserinstellung (d.h. Navegationsprogramminstellung)',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'Schriftoort für den Text im Beoorbeitungsfenster:',
+'editfont-default' => 'Browserstandard',
+'editfont-monospace' => 'Schriftoort (Fontetyp) mit fester Zeichebreit',
+'editfont-sansserif' => 'Serifelose Groteskschrift',
+'editfont-serif' => 'Schrift mit Serife',
+
+# Dates
+'sunday' => 'Sonntach',
+'monday' => 'Montach',
+'tuesday' => 'Dienstach',
+'wednesday' => 'Mittwoch',
+'thursday' => 'Donnerstooch',
+'friday' => 'Freitach',
+'saturday' => 'Samstach',
+'sun' => 'So',
+'mon' => 'Mo',
+'tue' => 'Di',
+'wed' => 'Mi',
+'thu' => 'Do',
+'fri' => 'Fr',
+'sat' => 'Sa',
+'january' => 'Januar',
+'february' => 'Februar',
+'march' => 'März',
+'april' => 'April',
+'may_long' => 'Mai',
+'june' => 'Juni',
+'july' => 'Juli',
+'august' => 'August',
+'september' => 'September',
+'october' => 'Oktober',
+'november' => 'November',
+'december' => 'Dezember',
+'january-gen' => 'Januars',
+'february-gen' => 'Februars',
+'march-gen' => 'Märzes',
+'april-gen' => 'Aprils',
+'may-gen' => 'Mais',
+'june-gen' => 'Junis',
+'july-gen' => 'Julis',
+'august-gen' => 'Augusts',
+'september-gen' => 'Septembers',
+'october-gen' => 'Oktobers',
+'november-gen' => 'Novembers',
+'december-gen' => 'Dezembers',
+'jan' => 'Jan.',
+'feb' => 'Feb.',
+'mar' => 'Mär.',
+'apr' => 'Apr.',
+'may' => 'Mai',
+'jun' => 'Jun.',
+'jul' => 'Jul.',
+'aug' => 'Aug.',
+'sep' => 'Sep.',
+'oct' => 'Okt.',
+'nov' => 'Nov.',
+'dec' => 'Dez.',
+'january-date' => '$1. Januar',
+'february-date' => '$1. Februar',
+'march-date' => '$1. März',
+'april-date' => '$1. April',
+'may-date' => '$1. Mai',
+'june-date' => '$1. Juni',
+'july-date' => '$1. Juli',
+'august-date' => '$1. August',
+'september-date' => '$1. September',
+'october-date' => '$1. Oktober',
+'november-date' => '$1. November',
+'december-date' => '$1. Dezember',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Kategorie|Kategoriee}}',
+'category_header' => 'Seite in der Kategorie "$1"',
+'subcategories' => 'Unnerkategoriee',
+'category-media-header' => 'Medie in der Kategorie "$1"',
+'category-empty' => "''Die Kategorie enthält zurzeit ken Seite orrer Medie.''",
+'hidden-categories' => '{{PLURAL:$1|Versteckte Kategorie|Versteckte Kategoriee}}',
+'hidden-category-category' => 'Versteckte Kategoriee',
+'category-subcat-count' => '{{PLURAL:$2|Die Kategorie enthält follichende Unnerkategorie:|{{PLURAL:$1|Follichende Unnerkategorie ist en von insgesamt $2 Unnerkategorie in der Kategorie:|Es werre $1 von insgesamt $2 Unnerkategorie in der Kategorie oongezeichtt:}}}}',
+'category-subcat-count-limited' => 'Die Kategorie enthält follichende {{PLURAL:$1|Unterkategorie|$1 Unnerkategoriee}}:',
+'category-article-count' => '{{PLURAL:$2|Die Kategorie enthält follichende Seit:|{{PLURAL:$1|Follichen Seit ist en von insgesamt $2 Seite in der Kategorie:|Es werre $1 von insgesamt $2 Seite in der Kategorie oongezeicht:}}}}',
+'category-article-count-limited' => 'Follichende {{PLURAL:$1|Seite ist|$1 Seite sind}} in der Kategorie enthalt:',
+'category-file-count' => '{{PLURAL:$2|Die Kategorie enthält follichende Seit:|{{PLURAL:$1|Follichen Seit ist en von insgesamt $2 Seite in der Kategorie:|Es werre $1 von insgesamt $2 Seite in der Kategorie oongezeicht:}}}}',
+'category-file-count-limited' => 'Follichende {{PLURAL:$1|Datei ist|$1 Dateie sind}} in der Kategorie enthalt:',
+'listingcontinuesabbrev' => '(Fortsetzung)',
+'index-category' => 'Indexierte Seite',
+'noindex-category' => 'Nichtindexierte Seite',
+'broken-file-category' => 'Seite mit defekte Dateilinks',
+
+'about' => 'Üwer',
+'article' => 'Seit',
+'newwindow' => '(weard in enem neie Fenster geöffnet)',
+'cancel' => 'Abbreche',
+'moredotdotdot' => 'Mehr …',
+'morenotlisted' => 'Dies List ist net vollständig.',
+'mypage' => 'Eichne Seit',
+'mytalk' => 'Diskussion',
+'anontalk' => 'Diskussionsseit für der IP',
+'navigation' => 'Navegation',
+'and' => '&#32;und',
+
+# Cologne Blue skin
+'qbfind' => 'Finne',
+'qbbrowse' => 'Doorrichsuche',
+'qbedit' => 'Beoorbeite',
+'qbpageoptions' => 'Seiteoptione',
+'qbmyoptions' => 'Meine Seite',
+'faq' => 'Häifich gestellte Froche',
+'faqpage' => 'Project:FAQ',
+
+# Vector skin
+'vector-action-addsection' => 'Abschnitt hinzufüche',
+'vector-action-delete' => 'Lösche',
+'vector-action-move' => 'Verschiebe',
+'vector-action-protect' => 'Schütz',
+'vector-action-undelete' => 'Wiederherstelle',
+'vector-action-unprotect' => 'Seiteschutz ännre',
+'vector-view-create' => 'Erstell',
+'vector-view-edit' => 'Beoorbeite',
+'vector-view-history' => 'Versionsgeschicht',
+'vector-view-view' => 'Lese',
+'vector-view-viewsource' => 'Quelltext oonzeiche',
+'actions' => 'Aktione',
+'namespaces' => 'Noomeräume',
+'variants' => 'Variante',
+
+'navigation-heading' => 'Navigationsmenü',
+'errorpagetitle' => 'Fehler',
+'returnto' => 'Retuar zur Seit $1.',
+'tagline' => 'Aus {{SITENAME}}',
+'help' => 'Hellef',
+'search' => 'Such',
+'searchbutton' => 'Suche',
+'go' => 'Ausführe',
+'searcharticle' => 'Such',
+'history' => 'Versione',
+'history_short' => 'Versionsgeschicht',
+'updatedmarker' => 'Ännrung seit deinem letzte Besuch',
+'printableversion' => 'Druckversion',
+'permalink' => 'Permanenter Link',
+'print' => 'Drucke',
+'view' => 'Lese',
+'edit' => 'Beoorbeite',
+'create' => 'Erstell',
+'editthispage' => 'Seit beoorbeite',
+'create-this-page' => 'Seit erstelle',
+'delete' => 'Lösche',
+'deletethispage' => 'Die Seit lösche',
+'undeletethispage' => 'Die Seit wiederherstelle',
+'undelete_short' => '{{PLURAL:$1|1 Version|$1 Versione}} wiederherstelle',
+'viewdeleted_short' => '{{PLURAL:$1|Ein gelöscht Version|$1 gelöschte Versione}} ansehen',
+'protect' => 'Schütz',
+'protect_change' => 'ännre',
+'protectthispage' => 'Seit schütze',
+'unprotect' => 'Seiteschutz ännre',
+'unprotectthispage' => 'Seitschutz ännre',
+'newpage' => 'Neie Seit',
+'talkpage' => 'Die Seit diskutiere',
+'talkpagelinktext' => 'Diskussion',
+'specialpage' => 'Spezialseit',
+'personaltools' => 'Meine Werkzeiche',
+'postcomment' => 'Neier Abschnitt',
+'articlepage' => 'Inhaltsseit oonzeiche',
+'talk' => 'Diskussion',
+'views' => 'Ansichte',
+'toolbox' => 'Werkzeich',
+'userpage' => 'Benutzerseit oonzeiche',
+'projectpage' => 'Projektseit oonzeiche',
+'imagepage' => 'Dateiseit oonzeiche',
+'mediawikipage' => 'Meldungsseit oonzeiche',
+'templatepage' => 'Voarloocheseit oonzeiche',
+'viewhelppage' => 'Hellefseit oonzeiche',
+'categorypage' => 'Kategorieseit oonzeiche',
+'viewtalkpage' => 'Diskussion',
+'otherlanguages' => 'In annre Sproche',
+'redirectedfrom' => '(Weitergeleitet von $1)',
+'redirectpagesub' => 'Weiterleitung',
+'lastmodifiedat' => 'Die Seit woor zuletzt am $1 um $2 Uhr geännert.',
+'viewcount' => 'Die Seit woard bisher {{PLURAL:$1|einmal|$1 mal}} abgeruff.',
+'protectedpage' => 'Geschützte Seit',
+'jumpto' => 'Wechsle zu:',
+'jumptonavigation' => 'Navigation',
+'jumptosearch' => 'Such',
+'view-pool-error' => 'Entschuldichung, die Server sind im Moment üwerlaschtet.
+Zu viele Benutzer versuche, die Seit zu besuche.
+Bitte woort en Poor Minute, bevoar du das noomo versuchst.
+
+$1',
+'pool-timeout' => 'Zeitablauf im Verloof von das Warte uff die Sperrung',
+'pool-queuefull' => 'Poolwoortschlang ist voll',
+'pool-errorunknown' => 'Unbekannter Fehler',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
+'aboutsite' => 'Üwer {{SITENAME}}',
+'aboutpage' => 'Project:Üwer_{{SITENAME}}',
+'copyright' => 'Der Inhalt ist verfüchbar unner der Lizenz $1, soweit nix anner oongeb ist.',
+'copyrightpage' => '{{ns:project}}:Urheberrechte',
+'currentevents' => 'Aktuelle Ereichnisse',
+'currentevents-url' => 'Project:Aktuelle Ereichnisse',
+'disclaimers' => 'Impressum',
+'disclaimerpage' => 'Project:Impressum',
+'edithelp' => 'Beoorbeitungshellef',
+'mainpage' => 'Hauptseit',
+'mainpage-description' => 'Hauptseit',
+'policy-url' => 'Project:Richtlinie',
+'portal' => 'Gemeinschaftsportal',
+'portal-url' => 'Project:Gemeinschaftsportal',
+'privacy' => 'Dateschutz',
+'privacypage' => 'Project:Dateschutz',
+
+'badaccess' => 'Ken ausreichende Benutzerrechte',
+'badaccess-group0' => 'Du hast net die erforderliche Benutzerrechte für die Aktion.',
+'badaccess-groups' => 'Die Aktion ist uff Benutzer beschränkt, die {{PLURAL:$2|der Grupp|ener der Gruppe}} „$1“ angehören.',
+
+'versionrequired' => 'Version $1 von MediaWiki ist erforderlich.',
+'versionrequiredtext' => 'Version $1 von MediaWiki ist erforderlich und nötich, um die Seit zu nutze.
+Sieh die [[Special:Version|Version sein Seit]]',
+
+'ok' => 'Okay',
+'retrievedfrom' => 'Von „$1“',
+'youhavenewmessages' => '{{PLURAL:$3|Du host}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Du host}} $1 von {{PLURAL:$3|en anner Benutzer|$3 annre Benutzer}} ($2).',
+'youhavenewmessagesmanyusers' => 'Du host $1 von viele Benutzre ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|en neie Nachricht|999=neie Nachrichte}}',
+'newmessagesdifflinkplural' => 'letzte {{PLURAL:$1|Ännrung|999=Ännrunge}}',
+'youhavenewmessagesmulti' => 'Du host neie Nachrichte: $1',
+'editsection' => 'Beoorbeite',
+'editold' => 'Beoorbeite',
+'viewsourceold' => 'Quelltext oonzeiche',
+'editlink' => 'Beoorbeite',
+'viewsourcelink' => 'Quelltext oonzeiche',
+'editsectionhint' => 'Abschnitt beoorbeite: $1',
+'toc' => 'Inhaltsverzeichnis',
+'showtoc' => 'Oonzeiche',
+'hidetoc' => 'Verberriche',
+'collapsible-collapse' => 'Inklappe',
+'collapsible-expand' => 'Ausklappe',
+'thisisdeleted' => '$1 oonsiehn orrer wiederherstelle?',
+'viewdeleted' => '$1 oonzeiche?',
+'restorelink' => '$1 {{PLURAL:$1|gelöschte Version|gelöschte Versione}}',
+'feedlinks' => 'Feed (das ist en Anglizismus, für das was regäb ist, die informatione ren getun sin):',
+'feed-invalid' => 'Ungülticher Feed-Abonnement-Typ.',
+'feed-unavailable' => 'Es stehn ken Feeds zur Verfüchung.',
+'site-rss-feed' => 'RSS-Feed für "$1"',
+'site-atom-feed' => 'Atom-Feed für „$1“',
+'page-rss-feed' => 'RSS-Feed für "$1"',
+'page-atom-feed' => 'Atom-Feed für „$1“',
+'red-link-title' => '$1 (Seit existiert net)',
+'sort-descending' => 'Absteichend sortiere',
+'sort-ascending' => 'Uffsteichend sortiere',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Seit',
+'nstab-user' => 'Benutzerseit',
+'nstab-media' => 'Medieseit',
+'nstab-special' => 'Spezialseit',
+'nstab-project' => 'Projektseit',
+'nstab-image' => 'Datei',
+'nstab-mediawiki' => 'Systemnachricht',
+'nstab-template' => 'Vorlooche',
+'nstab-help' => 'Hellefseit',
+'nstab-category' => 'Kategorie',
+
+# Main script and global functions
+'nosuchaction' => 'Die Aktion gebt es net',
+'nosuchactiontext' => 'Die in der URL oongebne Aktion weard von MediaWiki net unnerstützt.
+Es kann en Schreibfehler in der URL voarliehn orrer es woard en fehlerhafter Link oongeklickt.
+Das kann sich ooch um en Programmierfehler in der Software, wo von {{SITENAME}} benutzt weard, handle.',
+'nosuchspecialpage' => 'Spezialseit net voarhand',
+'nospecialpagetext' => '<strong>Die uffgerufne Spezialseit ist net voarhand.</strong>
+
+All verfüchbare Spezialseite sind in der [[Special:SpecialPages|List von der Spezialseite]] zu finne.',
+
+# General errors
+'error' => 'Fehler',
+'databaseerror' => 'Datebankfehler',
+'databaseerror-text' => 'En Datebankabfrochfehler ist passiert.
+Das könnt uff en Fehler in der Software hindeite.',
+'databaseerror-textcl' => 'Do ist en Datenbankabfrochfehler uffgetret.',
+'databaseerror-query' => 'Abfroch: $1',
+'databaseerror-function' => 'Funktion: $1',
+'databaseerror-error' => 'Fehler: $1',
+'laggedslavemode' => "'''Achtung:''' Die oongezeicht Seit könnte unner Umstände net die letzte Beoorbeitunge enthalte.",
+'readonly' => 'Datebank gesperrt',
+'enterlockreason' => 'Bitte geb en Grund ren, waroom die Datebank gesperrt werre soll und en Abschätzung üwer die Dauer von der Sperrung',
+'readonlytext' => 'Die Datebank ist voarüwergehend für Neiinträche und Ännrunge gesperrt. Bitte versuche es später nochmo.
+
+Grund für der Sperrung: $1',
+'missing-article' => 'Der Text von „$1“ $2 woor net in der Datebank gefund.
+
+Die Seit ist möchlicherweis gelöscht orrer verschob woard.
+
+Falls das net zutrifft, host du eventuell en Fehler in der Software gefund. Bitte melde das enem [[Special:ListUsers/sysop|Administrator]] unner Nennung der URL.',
+'missingarticle-rev' => '(Versionsnummer: $1)',
+'missingarticle-diff' => '(Unnerschied zwischich Versione: $1, $2)',
+'readonly_lag' => 'Die Datebank woard automatisch für Schreibzugriffe gesperrt, domit sich die verteilte Datebankserver (Slaves/Skloove) mit dem Hauptdatebankserver (Master / Meister) abgegleicht sin könne.',
+'internalerror' => 'Interner Fehler',
+'internalerror_info' => 'Interner Fehler: $1',
+'fileappenderrorread' => '„$1“ konnt im Verloof von der Hinzufüche net geles sin.',
+'fileappenderror' => 'Konnt „$1“ net an "$2" oonhänge.',
+'filecopyerror' => 'Die Datei "$1" konnt net noh "$2" kopiert sin.',
+'filerenameerror' => 'Die Datei "$1" konnt net noh "$2" umbenannt sin.',
+'filedeleteerror' => 'Die Datei "$1" konnt net gelöscht sin.',
+'directorycreateerror' => 'Das Verzeichnis "$1" konnt net oongeleht sin.',
+'filenotfound' => 'Die Datei "$1" woard net gefund.',
+'fileexistserror' => 'In die Datei "$1" konnt net geschrieb sin, weil die Datei schon voarhand ist.',
+'unexpected' => 'Unerwoorteter Weart: „$1“ = „$2“',
+'formerror' => 'Fehler: Die Igäb konnte net veroorbeitet sin.',
+'badarticleerror' => 'Die Aktion kann uff die Seit net oongewendt sin.',
+'cannotdelete' => 'Die Seit orrer Datei "$1" kann net gelöscht sin.
+Möchlicherweis woard die bereits von jemand annrem gelöscht.',
+'cannotdelete-title' => 'Seit "$1" kann net gelöscht sin',
+'delete-hook-aborted' => 'Die Löschung woard von en Programmerweitrung zu MediaWiki verhinnert.
+Das ist hierzu ken Erklärung verfüchbar.',
+'no-null-revision' => 'Die neie Nullversion für die Seit "$1" konnt net erstellt sin',
+'badtitle' => 'Ungülticher Titel',
+'badtitletext' => 'Der Titel von der oongeforderte Seit ist ungültich, leer orrer en ungülticher Sprochlink von en anne Wiki.',
+'perfcached' => 'Die follichende Date stamme aus dem Cache und sind möchlicherweis net aktuell. Maximal {{PLURAL:$1|en Ergebnis ist|$1 Ergebnisse sind}} im Cache verfüchbar.',
+'perfcachedts' => 'Die Date stamme aus dem Cache. Der Zeitpunkt von der letzte Aktualisierung: $2, $3 Uhr. Maximal {{PLURAL:$4|en Ergebnis ist|$4 Ergebnisse sind}} im Cache verfüchbar.',
+'querypage-no-updates' => 'Die Aktualisierungsfunktion von der Seit ist zurzeit deaktiviert.
+Die Date werre bis uff Weitres net erneiert.',
+'viewsource' => 'Quelltext oonzeiche',
+'viewsource-title' => 'Der Seit sein Quelltext $1',
+'actionthrottled' => 'Aktionsoonzoohl limitiert',
+'actionthrottledtext' => 'Im Rahme von en Anti-Spam-Massnoohm kann die Aktion in en koorrze Zeitabstand nuar begrenzt oft ausgeführt sin. Die Grenze host du üwerschritt.
+Bittschön versuch es in en poor Minute nochmo.',
+'protectedpagetext' => 'Die Seit woard geschützt, um Beoorbeitunge sowie annre Aktione zu verhinnre.',
+'viewsourcetext' => 'Du kannst den Quelltext von der Seit betrachte und kopiere:',
+'viewyourtext' => "Du kannst den Quelltext '''deiner Beoorbeitung''' von der Seit betrachte und kopiere:",
+'protectedinterface' => 'Dies Seit enthält Text für die Benutzerowerfläch von der Software uff dem Wiki und ist geschützt, um Missbrauch voarzubeiche.
+Nutz bittschön [//translatewiki.net/ translatewiki.net], das Lokalisierungsprojekt von MediaWiki, um Üwersetzungen für alle Wikis hinzuzufüche orrer zu ännre.',
+'editinginterface' => "'''Warnung:''' Die Seit enthält von der MediaWiki-Software genutzte Text.
+Ännrunge uff der Seit wirreke sich uff die Benutzerowerfläch von das Wikis aus.
+Nutze bittschön [//translatewiki.net/ translatewiki.net], das Lokalisierungsprojekt von MediaWiki, um Üwersetzunge für all Wikis hinzuzufüche orrer zu ännre.",
+'cascadeprotected' => 'Die Seit ist zur Beoorbeitung gesperrt. Sie ist in die {{PLURAL:$1|follichende Seit|follichende Seite}} ingebundt, wo mittels von der Kaskadesperroption geschützt {{PLURAL:$1|ist|sind}}:
+$2',
+'namespaceprotected' => "Du host net die erforderliche Berechtichung, um Seite im Noomeraum '''$1''' beoorbeite zu könne.",
+'customcssprotected' => 'Du host net die Berechtichung, die CSS enthaltende Seite zu beoorbeite, weil sie die persönliche Einstellunge von en anner Benutzer enthält.',
+'customjsprotected' => 'Du host net die Berechtivhung, die JavaScript enthaltende Seit zu beoorbeite, weil das sich hierbei um die persönliche Einstellunge von en anner Benutzer handelt.',
+'mycustomcssprotected' => 'Du host ken Berechtichung, die CSS-Seit zu beoorbeite.',
+'mycustomjsprotected' => 'Du host kene Berechtichung, die JavaScript-Seit zu beoorbeit.',
+'myprivateinfoprotected' => 'Du host ken Berechtichung, dein private Informatione zu beoorbeite.',
+'mypreferencesprotected' => 'Du host ken Berechtichung, dein Einstellunge zu beoorbeite.',
+'ns-specialprotected' => 'Spezialseite könne net beoorbeitet sin.',
+'titleprotected' => 'En Seit mit dem Noome kann net oongelht sin.
+Die Sperre woare doorrich [[User:$1|$1]] mit der Begründung \'\'"$2"\'\' ingericht.',
+'filereadonlyerror' => 'Die Datei "$1" kann net verännert sin, weil uff das Dateirepositorium "$2" nuar Lesezugriff möchlich ist.
+
+Der Administrator, wo den Schreibzugriff gesperrt hot, hot der follichende Grund oongäb: "$3".',
+'invalidtitle-knownnamespace' => 'Ungülticher Titel mit Noomeraum "$2" und Text "$3"',
+'invalidtitle-unknownnamespace' => 'Ungülticher Titel mit unbekannter Noomeraumnummer $1 und Text "$2"',
+'exception-nologin' => 'Net oongemeldt',
+'exception-nologin-text' => 'Du musst dich [[Special:Userlogin|oonmelde]], um uff die Seit orrer Aktion zuzugreife se könne.',
+'exception-nologin-text-manual' => 'Du musst dich $1, um uff die Seit orrer Aktion zugreif ze können.',
+
+# Virus scanner
+'virus-badscanner' => "Fehlerhafte Konfiguration: unbekannter Virenscanner: ''$1''",
+'virus-scanfailed' => 'Scan fehlgeschloohn (code $1)',
+'virus-unknownscanner' => 'Unbekannter Virescanner:',
+
+# Login and logout pages
+'logouttext' => "'''Du bist jetzt abgemeldet.'''
+
+Beacht, dass etliche Seit noch oonzeiche könne, dass du oongemeldt bist, solang du net deine Browsercache geleert host.",
+'welcomeuser' => 'Wellkomm, $1!',
+'welcomecreation-msg' => 'Dein Benutzerkonto woard erstellt.
+Vergess net, deine [[Special:Preferences|{{SITENAME}}-Einstellunge]] zu ännre.',
+'yourname' => 'Benutzername:',
+'userlogin-yourname' => 'Benutzernoome',
+'userlogin-yourname-ph' => 'Geb dein Benutzernoome ren',
+'createacct-another-username-ph' => 'Benutzernoome',
+'yourpassword' => 'Passwort:',
+'userlogin-yourpassword' => 'Passwort',
+'userlogin-yourpassword-ph' => 'Geb dein Passwort ren',
+'createacct-yourpassword-ph' => 'Geb dein Passwort ren',
+'yourpasswordagain' => 'Passwort repetiere:',
+'createacct-yourpasswordagain' => 'Passwort bestätiche',
+'createacct-yourpasswordagain-ph' => 'Geb das Passwort erneit ren',
+'remembermypassword' => 'Mit dem Browser dauerhaft oongemeldet bleiwe (maximal $1 {{PLURAL:$1|Tooch|Tooche}})',
+'userlogin-remembermypassword' => 'Oongemeldt bleiwe',
+'userlogin-signwithsecure' => 'Sichre Verbinnung verwenne',
+'yourdomainname' => 'Dein Domain:',
+'password-change-forbidden' => 'Du kannst uff dem Wiki ken Passwörter ännre.',
+'externaldberror' => 'Entweder es lieht en Fehler bei der externe Authentifizierung voar orrer du därrefst dein externes Benutzerkonto net aktualisiere.',
+'login' => 'Oonmelde',
+'nav-login-createaccount' => 'Oonmelde / Benutzerkonto erstelle',
+'loginprompt' => 'Zur Oonmeldung müsse Cookies aktiviert sin.',
+'userlogin' => 'Oonmelde / Benutzerkonto erstelle',
+'userloginnocreate' => 'Oonmelde',
+'logout' => 'Abmelde',
+'userlogout' => 'Abmelde',
+'notloggedin' => 'Nicht oongemeldt',
+'userlogin-noaccount' => 'Du host noch ken Benutzerkonto?',
+'userlogin-joinproject' => '{{SITENAME}} beitrete',
+'nologin' => "Du host ken Benutzerkonto? '''$1'''.",
+'nologinlink' => 'En neie Benutzerkonto erstelle',
+'createaccount' => 'Benutzerkonto erstelle',
+'gotaccount' => "Du host schon en Benutzerkonto? '''$1'''.",
+'gotaccountlink' => 'Oonmelde',
+'userlogin-resetlink' => 'Die Oonmelddate vergess?',
+'userlogin-resetpassword-link' => 'Passwort vergesse?',
+'userlogin-helplink2' => 'Hellef bei der Oonmeldung',
+'userlogin-loggedin' => 'Du bist schon als {{GENDER:$1|$1}} oongemeldt.
+Benutz das unne stehnd Formular, um dich unner enem annren Benutzername oonzumelde.',
+'userlogin-createanother' => 'En weitres Benutzerkonto erstelle',
+'createacct-join' => 'Geb do unne deine Informatione ren.',
+'createacct-another-join' => 'Geb do unne die Informationen von der neie Benutzerkonto ren.',
+'createacct-emailrequired' => 'E-Mail-Adress',
+'createacct-emailoptional' => 'E-Mail-Adress (optional)',
+'createacct-email-ph' => 'Geb dein E-Mail-Adress ren',
+'createacct-another-email-ph' => 'E-Mail-Adress',
+'createaccountmail' => 'En temporäres Zufallspasswort verwenne und an die oongebne E-Mail-Adress verschicke',
+'createacct-realname' => 'Registrierte Noome (optional)',
+'createaccountreason' => 'Grund:',
+'createacct-reason' => 'Begründung',
+'createacct-reason-ph' => 'Waroom erstellst du en annres Benutzerkonto?',
+'createacct-captcha' => 'Sicherheitsprüfung',
+'createacct-imgcaptcha-ph' => 'Geb den Text ren, den wo du uwe siehst.',
+'createacct-submit' => 'Dein Benutzerkonto erstelle',
+'createacct-another-submit' => 'En anner Benutzerkonto erstelle',
+'createacct-benefit-heading' => '{{SITENAME}} weard von Mensche wie dir geschaff.',
+'createacct-benefit-body1' => '{{PLURAL:$1|Bearbeitung|Bearbeitunge}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|Seit|Seite}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|aktiver Autor|aktive Autore}}',
+'badretype' => 'Die beide Passwörter stimme net gleichoortich.',
+'userexists' => 'Der Benutzernoome ist schon vergeb.
+Bittschön wähl en annre.',
+'loginerror' => 'Fehler bei der Oonmeldung',
+'createacct-error' => 'Fehler beim Erstelle von der Benutzerkonto',
+'createaccounterror' => 'Benutzerkonto konnte net erstellt sin: $1',
+'nocookiesnew' => 'Der Benutzerzugang woard erstellt, awer du bist net oongemeldt. {{SITENAME}} benöticht für die Funktion Cookies, bitte aktivier die und meld dich dann mit deinem neie Benutzernoome und dem zugehöriche Passwort an.',
+'nocookieslogin' => '{{SITENAME}} benutzt Cookies zur Oonmeldung von der Benutzer. Du host Cookies deaktiviert, bitte aktivier se und versuch das noohmo.',
+'nocookiesfornew' => 'Das Benutzerkonto woard net erstellt, weil die Dateherkunft net ermittelt sin konnt.
+Das muss sichergestellt sin, dass Cookies aktiviert sind. Donoh die Seit erneut loode und es wieder versuche.',
+'noname' => 'Du musst en gültiche Benutzernoome oongewe.',
+'loginsuccesstitle' => 'Oonmeldung erfollichgreich',
+'loginsuccess' => 'Du bist jetzt als "$1" bei {{SITENAME}} oongemeldt.',
+'nosuchuser' => 'Der Benutzernoome „$1“ existiert net.
+Üwerprüf die Schreibweis (Gross-/Klenschreibung beachte) orrer [[Special:UserLogin/signup|meld dich als neier Benutzer an]].',
+'nosuchusershort' => 'Der Benutzernoome "$1" ist net voarhand. Bitte üwerprüf die Schreibweis.',
+'nouserspecified' => 'Bittschön geb en Benutzernoome an.',
+'login-userblocked' => '{{GENDER:$1|Der Benutzer|Die Benutzrin|Der Benutzer}} ist gesperrt. Die Oonmeldung ist net erlaubt.',
+'wrongpassword' => 'Das Passwort ist falsch. Bittschön versuch das erneit.',
+'wrongpasswordempty' => 'Do woard ken Passwort regeb. Bittschön versuch das erneit.',
+'passwordtooshort' => 'Passwörter müsse minnestens {{PLURAL:$1|1 Zeiche|$1 Zeiche}} lang sin.',
+'password-name-match' => 'Dein Passwort muss sich von deinem Benutzernoome unnerscheide.',
+'password-login-forbidden' => 'Die Verwennung von der Benutzernoome und das Passwort ist net erlaubt.',
+'mailmypassword' => 'Passwort zurücksetze',
+'passwordremindertitle' => 'Neies Passwort für en {{SITENAME}}-Benutzerkonto',
+'passwordremindertext' => 'Jemand mit der IP-Adress $1, wahrscheinlich du sellebst, hot en neies Passwort für die Oonmeldung bei {{SITENAME}} ($4) oongefordert.
+
+Das automatisch generierte Passwort für Benutzer "$2" lautet jetzt: $3
+
+Falls du das wirklich gewünscht host, sollst du dich jetzt oonmelde und das Passwort ännre.
+Das neie Passwort ist {{PLURAL:$5|1 Tooch|$5 Tooch}} gültich.
+
+Bittschön ignorier die E-Mail, falls du se net sellebst oongefordert host. Das alte Passwort bleibt weiterhin gültich.',
+'noemail' => '{{GENDER:$1|Benutzer|Benutzrin|Benutzer}} "$1" hot ken E-Mail-Adress angegeben.',
+'noemailcreate' => 'Du musst en gültiche E-Mail-Adress oongewe',
+'passwordsent' => 'En neies, temporäres Passwort woard an die E-Mail-Adress von Benutzer "$1" geschickt.
+Bittschön meld dich domit an, sobald du es krieht host. Das alte Passwort bleibt weiterhin gültich.',
+'blocked-mailpassword' => 'Die von dir verwennte IP-Adress ist für das Ännre von Seite gesperrt. Um en Missbrauch zu verhinnre, woard die Möchlichkeit zu der Oonfordrung von en neie Passworte ewenfalls ooch gesperrt.',
+'eauthentsent' => 'En Bestätichungs-E-Mail woard an die oongebne Adress verschickt.
+
+Bevoar en E-Mail von annre Benutzer üwer die E-Mail-Funktion empfang sin kann, muss die Adress und ehre tatsächliche Zugehörigkeit zu dem Benutzerkonto earscht bestäticht sin. Bittschön befolliche die Hinweis in der Bestätichungs-E-Mail.',
+'throttled-mailpassword' => 'Do woard innerhalb von der letzte {{PLURAL:$1|Stund|$1 Stunde}} schon en Passwortzurücksetzung-E-Mail oongefordert. Um en Missbrauch von der Funktion zu verhinnre, kann nuar {{PLURAL:$1|emol in jede Stund|alle $1 Stunde}} en Passwortzurücksetzung-E-Mail oongefordert sin.',
+'mailerror' => 'Fehler beim Sende von der E-Mail: $1',
+'acct_creation_throttle_hit' => 'Besucher von das Wiki, wo dein IP-Adress verwenne, honn innerhalleb von der letzte Tooche {{PLURAL:$1|1 Benutzerkonto|$1 Benutzerkonte}} erstellt, was die maximal erlaubte Oonzoohl in die Zeitperiode ist.
+
+Besucher, wo die IP-Adress verwenne, könne momentan ken Benutzerkonte mehr erstelle.',
+'emailauthenticated' => 'Dein E-Mail-Adress woard am $2 um $3 Uhr bestäticht.',
+'emailnotauthenticated' => 'Dein E-Mail-Adress ist noch net bestäticht.
+Die follichende E-Mail-Funktione stehn earst noh erfollichreicher Bestätichung zur Verfüchung.',
+'noemailprefs' => 'Geb en E-Mail-Adress in den Instellunge an, damit die nhfollichende Funktione zur Verfüchung stehn.',
+'emailconfirmlink' => 'E-Mail-Adress konfirmiere und bestätiche (authentifiziere).',
+'invalidemailaddress' => 'Die E-Mail-Adress weard net akzeptiert, weil die en ungültiches Format (eventuell ungültiche Zeiche) scheint zu honn. Bittschön geb en korrekte Adress ren orrer leer das Feld.',
+'cannotchangeemail' => 'E-Mail-Adresse könne in dem Wiki net geändert sin.',
+'emaildisabled' => 'Üwer die Website könne ken E-Mails versandt werre.',
+'accountcreated' => 'Benutzerkonto erstellt',
+'accountcreatedtext' => 'Das Benutzerkonto für [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|Diskussion]]) woard mit Erfolch ingerichtet.',
+'createaccount-title' => 'Erstellung von en Benutzerkonto für {{SITENAME}}',
+'createaccount-text' => 'Do woard für dich en Benutzerkonto "$2" uff {{SITENAME}} ($4) erstellt. Das automatisch generierte Passwort für "$2" ist "$3". Du sollst dich jetzt oonmelde und das Passwort ännre.
+
+Falls das Benutzerkonto irrtümlich oongeleht woard, kannst du die Nachricht ignoriere.',
+'usernamehasherror' => 'Benutzernoome deerfe ken Rautzeiche enthalte',
+'login-throttled' => 'Du host keerzlich zu viele Oonmeldversuche unnernomm.
+Bittachön woort $1, bevoar du das erneit versuchst.',
+'login-abort-generic' => 'Dein Oonmeldung woor net erfollichreich – Abgebroch',
+'loginlanguagelabel' => 'Sproch: $1',
+'suspicious-userlogout' => 'Dein Abmeldeoonfroch woard verweichert, weil die vermutlich von en defekte Browser orrer en Cache-Proxy gesendt woard.',
+'createacct-another-realname-tip' => 'Der bürcherliche registriert Noome ist optional.
+Wenn du ihn oongebst, weard ear für die Zuordnung von der Beiträche verwendt.',
+'pt-login' => 'Oonmelde',
+'pt-login-button' => 'Oonmelde',
+'pt-createaccount' => 'Benutzerkonto erstelle',
+'pt-userlogout' => 'Abmelde',
+
+# Email sending
+'php-mail-error-unknown' => 'Unbekannter Fehler mit der Funktion mail() von PHP',
+'user-mail-no-addy' => 'Versuchte, en E-Mail ohne Oongäb von en E-Mail-Adress zu versende.',
+'user-mail-no-body' => 'Do woard versucht, en E-Mail mit en leere orrer zu koorze Textkörper zu versende.',
+
+# Change password dialog
+'changepassword' => 'Passwort ännre',
+'resetpass_announce' => 'Um die Oonmeldung abzuschliesse, musst du en neies Passwort festlehn.',
+'resetpass_header' => 'Passwort ännre',
+'oldpassword' => 'Altes Passwort:',
+'newpassword' => 'Neies Passwort:',
+'retypenew' => 'Passwort repetiere:',
+'resetpass_submit' => 'Passwort üwermittle und oonmelde',
+'changepassword-success' => 'Dein Passwort woard erfollichreich geännert!',
+'changepassword-throttled' => 'Du host keerzlich zu viele Oonmeldversuche unnernomm.
+Bittachön woort $1, bevoar du das erneit versuchst.',
+'resetpass_forbidden' => 'Das Passwort kann net geännert werre.',
+'resetpass-no-info' => 'Du musst dich oonmelde, um uff die Seit direkt zuzugreife.',
+'resetpass-submit-loggedin' => 'Passwort ännre',
+'resetpass-submit-cancel' => 'Abbreche',
+'resetpass-wrong-oldpass' => 'Ungültiches temporäres orrer aktuelles Passwort.
+Möchlicherweis host du dein Passwort schon erfollichreich geännert orrer en neies temporäres Passwort beantroocht.',
+'resetpass-recycled' => 'Bittschön setz dein Passwort uff en annres Passwort als dein aktuelles wos do jetzt host.',
+'resetpass-temp-emailed' => 'Du host dich mit em temporäre E-Mail-Code oongemeldt.
+Um die Oonmeldung abzuschliesse, musst du jetzt en neies Passwort festlehn:',
+'resetpass-temp-password' => 'Temporäres Passwort:',
+'resetpass-abort-generic' => 'Die Passwortännrung woard doorrich en Erweitrung abgebroch.',
+'resetpass-expired' => 'Dein Passwort ist abgeloof. Bittschön leh en neies Passwort zur Oonmeldung fest.',
+'resetpass-expired-soft' => 'Dein Passwort ist abgeloof und muss zurückgesetzt sin. Bittschön wähl jetzt en neies Passwort aus orrer klick uff "{{int:resetpass-submit-cancel}}", um das später zurückzusetze.',
+'resetpass-validity-soft' => 'Dein Passwort ist net gültich: $1
+
+Bittschön wähl jetzt en neies Passwort orrer klick uff „{{int:resetpass-submit-cancel}}“, um das später zurückzusetze.',
+
+# Special:PasswordReset
+'passwordreset' => 'Passwort zurücksetze',
+'passwordreset-text-one' => 'Füll das Formular aus, um den Passwort zurückzusetze.',
+'passwordreset-text-many' => '{{PLURAL:$1|Füll en von der Felder aus, um en temporäres Passwort por E-Mail zugesandt zu bekomme.}}',
+'passwordreset-legend' => 'Passwort zurücksetze',
+'passwordreset-disabled' => 'Das Zurücksetze von Passwörter woard in dem Wiki deaktiviert.',
+'passwordreset-emaildisabled' => 'Die E-Mail-Funktione worre uff dem Wiki deaktiviert.',
+'passwordreset-username' => 'Benutzernoome:',
+'passwordreset-domain' => 'Domain:',
+'passwordreset-capture' => 'Die E-Mail-Nachricht oonsiehn?',
+'passwordreset-capture-help' => 'Wenn du das Kästche oonkreizt, weard die E-Mail-Nachricht mit dem temporäre Passwort sowohl dir oongezeicht als ooch dem Benutzer zugesandt.',
+'passwordreset-email' => 'E-Mail-Adress',
+'passwordreset-emailtitle' => 'Benutzerkontoinformatione uff {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Jemand mit der IP-Adress $1, wahrscheinlich du sellebst, hot en Zurücksetzung von dein Passworts bei {{SITENAME}} oongefordert ($4). {{PLURAL:$3|Das follichend Benutzerkonto ist|Die follichende Benutzerkonte sind}}
+mit der E-Mail-Adress verknüpft:
+
+$2
+
+{{PLURAL:$3|Das temporär Passwort looft|Die temporäre Passwörter loofe}} innerhalb von {{PLURAL:$5|em Tooch|$5 Tooche}} ab.
+Du sollst dich oonmelde und en neies Passwort vergewe. Falls jemand annres die Oonfroch getätigt hot orrer du dich wieder an dein ursprüngliches Passwort erinnre kannst und das netmeh
+ännre möchst, kannst du die Nachricht ignoriere und weiterhin dein altes
+Passwort benutze.',
+'passwordreset-emailtext-user' => 'Benutzer $1 bei {{SITENAME}} hot en Zurücksetzung von dein Passwort bei {{SITENAME}} oongefordert ($4). {{PLURAL:$3|Das follichend Benutzerkonto ist|Die follichend Benutzerkonte sind}} mit der E-Mail-Adress verknüpft:
+
+$2
+
+{{PLURAL:$3|Das temporär Passwort looft|Die temporäre Passwörter loofe}} innerhalb von {{PLURAL:$5|em Tooch|$5 Tooche}} ab. Du sollst dich oonmelde und en neies Passwort vergewe. Falls jemand annres die Oonfroch getäticht hot orrer du dich wieder an den ursprüngliches Passwort erinnre kannst und das net ännre möchst, kannst du die Nachricht ignoriere und weiterhin dein altes Passwort benutze.',
+'passwordreset-emailelement' => 'Benutzernoome: $1
+Temporäres Passwort: $2',
+'passwordreset-emailsent' => 'En Passwortzurücksetzung-E-Mail woard versandt.',
+'passwordreset-emailsent-capture' => 'En Passwortzurücksetzung-E-Mail woard versandt, die unne oongezeicht weard.',
+'passwordreset-emailerror-capture' => 'Die unne oongezeichte Passwortzurücksetzungs-E-Mail woard generiert, awer der Versand an {{GENDER:$2|den Benutzer|die Benutzrin}} ist gescheitert: $1',
+
+# Special:ChangeEmail
+'changeemail' => 'E-Mail-Adress ännre',
+'changeemail-header' => 'E-Mail-Adress ännre',
+'changeemail-text' => 'Füll das Formular vollständig aus, um dein E-Mail-Adress zu ännre. Du musst dein Passwort oongewe, um die Ännrung zu bestätiche.',
+'changeemail-no-info' => 'Du musst dich oonmelde, um uff die Seit direkt zuzugreife.',
+'changeemail-oldemail' => 'Aktuell E-Mail-Adress:',
+'changeemail-newemail' => 'Neie E-Mail-Adress:',
+'changeemail-none' => '(ken)',
+'changeemail-password' => 'Dein {{SITENAME}}-Passwort:',
+'changeemail-submit' => 'E-Mail-Adress ännre',
+'changeemail-cancel' => 'Abbreche',
+'changeemail-throttled' => 'Du host keerzlich zu viele Oonmeldversuche unnernomm.
+Bittachön woort $1, bevoar du das erneit versuchst.',
+
+# Special:ResetTokens
+'resettokens' => 'Tokens zurücksetze',
+'resettokens-text' => 'Du kannst Tokens zurücksetze, wo dir den Zugriff uff bestimmte private Date ermöchliche, wo mit deinem Benutzerkonto hier verknüpft sind.
+
+Du sollst das nuar mache, wenn du verguckt die Tokens versiehntlich mit jemandem geteilt host orrer dein Konto gefährdet ist.',
+'resettokens-no-tokens' => 'Do gebts ken Tokens zum Zurücksetze.',
+'resettokens-legend' => 'Tokens zurücksetze',
+'resettokens-tokens' => 'Tokens:',
+'resettokens-token-label' => '$1 (aktueller Weart: $2)',
+'resettokens-watchlist-token' => 'Token für den Webfeed (Atom/RSS) von der [[Special:Watchlist|Ännrunge an Seite uff deiner Beobachtungslist]]',
+'resettokens-done' => 'Tokens zurückgesetzt.',
+'resettokens-resetbutton' => 'Ausgewählte Token ännre',
+
+# Edit page toolbar
+'bold_sample' => 'Fetter Text',
+'bold_tip' => 'Fetter Text',
+'italic_sample' => 'Kursiver Text',
+'italic_tip' => 'Kursiver Text',
+'link_sample' => 'Link-Text',
+'link_tip' => 'Interner Link',
+'extlink_sample' => 'http://www.example.com Link-Text',
+'extlink_tip' => 'Externer Link (http:// beachte)',
+'headline_sample' => 'Ebene-2-Üwerschrift',
+'headline_tip' => 'Ebene-2-Üwerschrift',
+'nowiki_sample' => 'Unformatierte Text hie renfüche',
+'nowiki_tip' => 'Unformatierter Text',
+'image_tip' => 'Dateilink',
+'media_tip' => 'Mediedatei-Link',
+'sig_tip' => 'Dein Signatur mit Zeitstempel',
+'hr_tip' => 'Horizontoole Linie (spoorsam verwenne)',
+
+# Edit pages
+'summary' => 'Zusammerfassung:',
+'subject' => 'Betreff:',
+'minoredit' => 'Nuar Klenichkeite woore verännert',
+'watchthis' => 'Die Seit beobachte',
+'savearticle' => 'Seit speichre',
+'preview' => 'Voarschau',
+'showpreview' => 'Vorschau zeiche',
+'showlivepreview' => 'Sofortiche Voarschau',
+'showdiff' => 'Ändrunge zeiche',
+'anoneditwarning' => "Du beoorbeitest die Seit unoongemeldet. Wenn du sie abspeichre tust, weard dein aktuelle Komputador IP-Adress in der Versionsgeschicht uffgezeichnet und ist domit unwiderruflich und kann '''öffentlich''' gesiehn sind.",
+'anonpreviewwarning' => "''Du bist net oongemeldet. Beim Speichre weard dein IP-Adress in der Versionsgeschicht uffgezeichnet.''",
+'missingsummary' => "'''Hinweis:''' Du host ken Zusammerfassung oongeb. Wenn du erneit uff \"{{int:savearticle}}\" klicke tust, weard dein Ännrung ohne Zusammerfassung üwernomm.",
+'missingcommenttext' => 'Dein Abschnitt enthält ken Text.',
+'missingcommentheader' => "'''Achtung:''' Du host ken Betreff/Üwerschrift ingeb. Wenn du erneit uff \"{{int:savearticle}}\" klicke tust, weard dein Beoorbeitung ohne Üwerschrift gespeichert.",
+'summary-preview' => 'Voarschau von der Zusammerfassungszeil:',
+'subject-preview' => 'Voarschau von der Zusammerfassungszeil:',
+'blockedtitle' => 'Benutzer ist gesperrt',
+'blockedtext' => '\'\'\'Dein Benutzernoome orrer dein IP-Adress woard gesperrt.\'\'\'
+
+Die Sperrung woard vom Administrator $1 doorrichgeführt.
+Als Grund woard \'\'$2\'\' oongeb.
+
+* Die Sperr ehr Beginn: $8
+* Die Sperr ehr End: $6
+* Die Sperr ehr betrifft: $7
+
+Du kannst $1 orrer en von der annre [[{{MediaWiki:Grouppage-sysop}}|Administratoren]] kontaktiere, um üwer die Sperr zu diskutiere.
+Du kannst die "E-Mail an den Benutzer"-Funktion net nutze, solang ken gültige E-Mail-Adress in dein [[Special:Preferences|Benutzerkonto-Einstellunge]] ingetroohn ist orrer die Funktion für dich gesperrt woard.
+Dein aktuell IP-Adresse ist $3 und die Sperrkennung lautet $5.
+Bittschön füch alle Informatione jeder Oonfroche hinzu, wo du stellst.',
+'autoblockedtext' => 'Dein IP-Adress woard automatisch gesperrt, wiel die von em annre Benutzer genutzt woard, wo von $1 gesperrt woard.
+Als Grund wurde angegeben:
+
+:\'\'$2\'\'
+
+* Die Sperr ehr Beginn: $8
+* Die Sperr ehr End: $6
+* Die Sperr betrifft: $7
+
+Du kannst $1 orrer en von der annre [[{{MediaWiki:Grouppage-sysop}}|Administratore]] kontaktiere, um üwer die Sperr zu diskutiere.
+
+Du kannst die "E-Mail an den Benutzer"-Funktion net nutze, solang ken gültiche E-Mail-Adress in dein [[Special:Preferences|Benutzerkonto-Einstellunge]] ingetrooht ist orrer die Funktion für dich gesperrt woard.
+
+Dein aktuell IP-Adress ist $3, und die Sperr-ID ist $5.
+Bittschön füch alle Informatione von jeder Oonfroch hinzu, wo du stelle tust.',
+'blockednoreason' => 'ken Begründung oongeb',
+'whitelistedittext' => 'Du musst dich $1, um Seite beoorbeite zu könne.',
+'confirmedittext' => 'Du musst dein E-Mail-Adress earscht bestätiche, bevoar du Beoorbeitunge doorrichführe kannst. Bittschön ergänz und bestätich dein E-Mail in den [[Special:Preferences|Einstellunge]].',
+'nosuchsectiontitle' => 'Abschnitt net gefund',
+'nosuchsectiontext' => 'Du host versucht, en Abschnitt zu beoorbeite, wo net existiert.
+Vermutlich woard er verschub orrer gelöscht, nohdem du die Seit uffgeruf host.',
+'loginreqtitle' => 'Oonmeldung erforderlich',
+'loginreqlink' => 'Oonmelde',
+'loginreqpagetext' => 'Du musst dich $1, um Seite lese könne.',
+'accmailtitle' => 'Passwort woard verschickt',
+'accmailtext' => "En zufällich generiertes Passwort für [[User talk:$1|$1]] woard an $2 versandt. Es kann uff der Seit ''[[Special:ChangePassword|Passwort ännre]]'' noh der Oonmeldung geännert sin.",
+'newarticle' => '(Nei)',
+'newarticletext' => "Du bist en Link zu en Seit noh gang, wo net voarhand ist.
+Um die Seit oonzulehn, trooh dein Text in das unnestehend Beoorbeitungsfeld ren (weitre Informatione uff der [$1 Hellefseit]).
+Soweit du fälschlicherweise hier bist, klick uff dein Browser sein Schaltfläch '''Retuar'''.",
+'anontalkpagetext' => "----''Dies Seit dient dozu, enem net oongemeldete Benutzer Nachrichte zu hinnerlosse. Es weard sein IP-Adress zur Identifizierung verwenndt. IP-Adresse könne von mehrere Benutzer gemeinsam verwendt sin. Wenn du mit den Kommentare uff der Seit nix oonfänge kannst, richte die sich vermutlich an en frühre Inhaber von deiner IP-Adresse und du kannst se ignoriere. Du kannst dir ooch en [[Special:UserLogin/signup|Benutzerkonto erstelle]] orrer dich [[Special:UserLogin|oonmelde]], um künftich Verwechslunge mit annre anonyme Benutzer zu vermeide.''",
+'noarticletext' => 'Die Seit dohie enthält momentan noch ken Text.
+Du kannst sie <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} beoorbeite]</span>,
+ehre Titel uff annre Seite [[Special:Search/{{PAGENAME}}|suche]]
+orrer die zugehöriche <span class="plainlinks">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbücher betrachte]</span>.',
+'noarticletext-nopermission' => 'Die Seit dohie enthält momentan noch ken Text.
+Du kannst sie <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} beoorbeite]</span>,
+ehre Titel uff annre Seite [[Special:Search/{{PAGENAME}}|suche]]
+orrer die zugehöriche <span class="plainlinks">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbücher betrachte]</span>.',
+'missing-revision' => 'Die Version $1 von der Seit mit der noomen "{{FULLPAGENAME}}" ist net voarhand.
+
+Der Fehler weard normalerweis von enem veraltete Link zur Versionsgeschicht von en Seit verursacht, wo zwischichzeitlich gelöscht woard.
+Enzelheite sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch] einsehbar (visibel).',
+'userpage-userdoesnotexist' => 'Das Benutzerkonto „<nowiki>$1</nowiki>“ ist net voarhand. Bittschön prüf, ob du die Seit werklich erstelle/beoorbeite willst.',
+'userpage-userdoesnotexist-view' => 'Das Benutzerkonto "$1" ist net voarhand.',
+'blocked-notice-logextract' => '{{GENDER:$1|Der Benutzer|Die Benutzrin|Der Benutzer}} ist zurzeit gesperrt.
+Zur Information follicht en aktueller Auszuch aus dem Benutzersperr-Logbuch:',
+'clearyourcache' => "'''Hinweis:''' Leer nh dem Speichre den Browser-Cache, so das du die Ännrunge für se siehn kriehst.
+* '''Firefox/Safari:''' ''Umschalttast'' drücke und gleichzeitich ''Aktualisiere'' oonklicke orrer entweder ''Strg+F5'' orrer ''Strg+R'' (''⌘+R'' uff dem Mac) drücke
+* '''Google Chrome:''' ''Umschalttast+Strg+R'' (''⌘+Umschalttast+R'' uff dem Mac) drücke
+* '''Internet Explorer:''' ''Strg+F5'' drücke orrer ''Strg'' drücke und gleichzeitich ''Aktualisiere'' oonklicke
+* '''Opera:''' ''Extras → Internetspure lösche … → Individuelle Auswahl → Den komplette Cache lösche''",
+'usercssyoucanpreview' => "'''Hinweis:''' Benutz den „{{int:showpreview}}“-Knopp, um dein neies CSS voar dem Speichre zu testiere.",
+'userjsyoucanpreview' => "'''Hinweis:''' Benutz den „{{int:showpreview}}“-Knopp, um dein neies JavaScript voar dem Speichre zu testiere.",
+'usercsspreview' => "'''Beacht, dass du nur en Voarschau von dein Benutzer-CSS betrachte tust.'''
+'''Das woor noch net gespeichert!'''",
+'userjspreview' => "'''Beacht, dass du nuar en Voarschau von dein Benutzer-JavaScripts betrachte tust.'''
+'''Das woor noch net gespeichert!'''",
+'sitecsspreview' => "'''Beachte, dass du nuar en Voarschau von das CSS betrachte tust.'''
+'''Das woard noch net gespeichert!'''",
+'sitejspreview' => "'''Beacht, dass du nuar en Vorschau von das JavaScript betrachte tust.'''
+'''Das woor noch net gespeichert!'''",
+'userinvalidcssjstitle' => "'''Achtung:''' Die Benutzerowerfläch \"\$1\" existiert net. Bedenke, dass benutzerspezifisch .css- und .js-Seite mit em Klenbuchstoob oonfänge müsse, also beispielsweis ''{{ns:user}}:Mustermann/vector.css'' an Stell von ''{{ns:user}}:Mustermann/Vector.css''.",
+'updated' => '(Geännert)',
+'note' => "'''Hinweis:'''",
+'previewnote' => "'''Dies ist nuar en Voarschau.'''
+Die Seit woard noch net gespeichert!",
+'continue-editing' => 'Zum Beoorbeitungsfeld gehn',
+'previewconflict' => 'Die Voarschau gebt den Inhalt von das Textfeld uwe, wieder. So weard die Seit aussiehn, wenn du jetzt speicherst.',
+'session_fail_preview' => "'''Dein Bearbeitung konnt net gespeichert sin, weil Setzungsdate verloar gan sind.
+Bittschön versuch das erneit, indem du unner der follichende Textvoarschau noomo uff \"Seit speichre\" klicke tust.
+Sollt das Problem bestehn bleiwe, [[Special:UserLogout|meld dich ab]] und donoh wieder an.'''",
+'session_fail_preview_html' => "'''Dein Beoorbeitung konnt net gespeichert sin, weil Sitzungsdate verloar gang sind.'''
+
+''Weil in {{SITENAME}} das Speichre von reinem HTML aktiviert ist, woard die Voarschau ausgeblendet, um JavaScript-Attacke voarzubeiche.''
+
+'''Bittschön versuch das erneit, indem du unner der follichende Textvoarschau nohmo uff \"Seit speichre\" klicke tust.
+Sollt das Problem bestehn bleiwe, [[Special:UserLogout|meld dich ab]] und donoh wieder an.'''",
+'token_suffix_mismatch' => "'''Dein Beoorbeitung woard zurückgewies, do dein Browser Zeiche im Beoorbeite-Token verstümmelt hot.
+En Speichrung kann den Seiteinhalt zerstöre. Das geschieht bisweil doorrich die Benutzung von en anonyme Proxy-Dienst, wo fehlerhaft oorbeitet.'''",
+'edit_form_incomplete' => "'''Der Inhalt von das Beoorbeitungsformular hot den Server net vollständich erreicht. Bittschön prüf deine Bearbeitunge uff Vollständigkeit und versuch das erneit.'''",
+'editing' => 'Beoorbeite von „$1“',
+'creating' => 'Erstelle von „$1“',
+'editingsection' => 'Beoorbeite von „$1“ (Abschnitt)',
+'editingcomment' => 'Beoorbeite von "$1" (Abschnitt)',
+'editconflict' => 'Beoorbeitungskonflikt: $1',
+'explainconflict' => "Jemand anners hot die Seit geännert, nohdem du oongefäng host, sie zu beoorbeite.
+Das Textfeld do uwe enthält den aktuell Beoorbeitungsstand von der Seit.
+Das unnre Textfeld enthält dein Ändrunge.
+Bittschön füch dein Ändrungen in das Textfeld do uwe ren.
+'''Nuar''' der Inhalt von dem Textfeld do uwe weard gespeichert, wenn du uff „{{int:savearticle}}“ klicke tust.",
+'yourtext' => 'Dein Text',
+'storedversion' => 'Gespeicherte Version',
+'nonunicodebrowser' => "'''Achtung: Dein Browser kann Unicode-Zeiche net richtich veroorbeite.''' Es weard en Hellefsroutin rengesetzt, um dich zu erlaube, Seite sicher zu beoorbeite: Nicht-ASCII-Zeiche werre dabei im Beoorbeitungsfenster als hexadezimale Codes oongezeicht.",
+'editingold' => "'''Achtung: Du beoorbeitest en alte Version von der Seit. Sofern du sie speicherst, werre all neiere Versionen üwerschrieb.'''",
+'yourdiff' => 'Unnerschiede',
+'copyrightwarning' => "'''Bittschön kopier ken Webseite, die net dein eichne sind, benutz ken urheberrechtlich geschützte Werke ohne Erlaubnis von dem Urheber!'''<br />
+Du gebst uns hiermit dein Zusooch und Versprechung, dass du den Text '''sellebst verfasst''' host, dass der Text Allgemeingut '''(domínio público / public domain)''' ist, orrer dass der '''Urheber''' seine '''Zustimmung''' geb hot. Falls der Text schon woanners veröffentlicht woard, weis bittschön uff der Diskussionsseit druf hin.
+<i>Bittschön beachte, dass alle {{SITENAME}}-Beiträche automatisch unner der \"\$2\" stehn (sieh \$1 für Einzelheite). Falls du net möchst, dass dein Oorweit hier von anre verännert und verbreitet weard, dann klick net uff \"Seite speichre\".</i>",
+'copyrightwarning2' => "Bittschön beacht, dass all Beiträch zu {{SITENAME}} von annre Mitwerrekend beoorbeitet, geännert orrer gelöscht werre könne.
+Reich hie ken Texte ren, falls du net willst, dass die ohne Einschränkung geännert sin könne.
+
+Du bestätichst hiermit ooch, dass du die Texte sellebst geschrieb host orrer die von en gemeinfreie Quell kopiert host
+(weitre Einzelheite unner $1). '''ÜWERTRÄH OHNE GENEHMICHUNG KEN URHEBERRECHTLICH GESCHÜTZTE INHALTE!'''",
+'longpageerror' => "'''Fehler: Der Text, wo du speichre versucht host, ist {{PLURAL:$1|en Kilobyte|$1 Kilobyte}} gross. Das ist grösser als das erlaubte Maximum von {{PLURAL:$2|en Kilobyte|$2 Kilobyte}}.'''
+Der kann net gespeichert sin.",
+'readonlywarning' => "'''Achtung: Die Datebank woard für Woortungsoorbeite gesperrt, so dass dein Ännrunge derzeit könne net gespeichert sin.
+Sichre den Text bittschön lokal uff deim Komputadoar und versuch zu en spätre Zeitpunkt, die Ännrunge zu üwertroon.'''
+
+Grund für die Sperre: $1",
+'protectedpagewarning' => "'''Achtung: Die Seit woard geschützt. Nuar Benutzer mit Administratoarrechte könne die Seit beoorbeite.'''
+Zu der Information follicht der aktuell Logbuchintrooch:",
+'semiprotectedpagewarning' => "'''Halbsperrung:''' Die Seit woard so geschützt, dass nuar registrierte Benutzer die ännre könne.
+Zu der Information follicht der aktuelle Logbuchintrooch:",
+'cascadeprotectedwarning' => "'''Achtung:''' Die Seit woard so geschützt, dass die norre doorrich Benutzer mit Administratoarrechte beoorbeitet werre kann. Sie ist in die {{PLURAL:$1|follichend Seit|follichende Seite}} ingebund, die mittels von der Kaskadesperroption geschützt {{PLURAL:$1|ist|sind}}:",
+'titleprotectedwarning' => "'''Achtung: Die Seiteerstellung woard so geschützt, dass norre Benutzer mit [[Special:ListGroupRights|spezielle Rechte]] die Seit erstelle könne.'''
+Zu der Information follicht der aktuelle Logbuchintrooch:",
+'templatesused' => '{{PLURAL:$1|Die folliched Voarlooche weard|Follichende Voarlooche werre}} uff die Seit verwenndt:',
+'templatesusedpreview' => '{{PLURAL:$1|Die follichend Voarlooche weard|Follichende Voarlooche werre}} von der Seitevoarschau verwendt:',
+'templatesusedsection' => '{{PLURAL:$1|Die follichend Voarlooche weard|Follichend Voarlooche werre}} in dem Abschnitt verwent:',
+'template-protected' => '(schreibgeschützt)',
+'template-semiprotected' => '(schreibgeschützt für unoongemeldete und neie Benutzer)',
+'hiddencategories' => 'Die Seit ist Mitglied von {{PLURAL:$1|1 versteckter Kategorie|$1 versteckte Kategoriee}}:',
+'nocreatetext' => 'Uff {{SITENAME}} woard das Erstelle von neier Seite ingeschränkt. Du kannst bestehnde Seite ännre orrer dich [[Special:UserLogin|oonmelde]].',
+'nocreate-loggedin' => 'Du host net die erforderliche Berechtichung, um neie Seite erstelle zu könne.',
+'sectioneditnotsupported-title' => 'Die Beoorbeitung von Abschnitte weard net unnerstützt',
+'sectioneditnotsupported-text' => 'Die Beoorbeitung von Abschnitte weard uff der Beoorbeitungsseit net unnerstützt.',
+'permissionserrors' => 'Berechtichungsfehler',
+'permissionserrorstext' => 'Du bist net berechticht, die Aktion auszuführe. {{PLURAL:$1|Grund|Gründe}}:',
+'permissionserrorstext-withaction' => 'Du bist aus {{PLURAL:$1|dem follichend Grund|den follichende Gründe}} net berechticht, $2:',
+'recreate-moveddeleted-warn' => "'''Achtung: Du erstellst en Seit, wo schon früher gelöscht woor.'''
+
+Bitte prüf sorrichfältich, ob die erneite Seiteerstellung den Richtlinie entsprecht.
+Zu deiner Information follicht das Lösch- und Verschiebungs-Logbuch mit der Begründung für die voarhergehnd Löschung:",
+'moveddeleted-notice' => 'Die Seit woard gelöscht. Zur Information follicht das Lösch- und Verschiebungs-Logbuch von der Seit.',
+'log-fulllog' => 'Alle Logbuchinträge ansiehn',
+'edit-hook-aborted' => 'Die Beoorbeitung woard ohne Erklärung doorrich en Schnittstell abgebroche.',
+'edit-gone-missing' => 'Die Seit konnt net aktualisiert sin.
+Die woard oonscheinend gelöscht.',
+'edit-conflict' => 'Beoorbeitungskonflikt.',
+'edit-no-change' => 'Dein Beoorbeitung woard ignoriert, do ken Ännrung an dem Text voargenomm  woard.',
+'postedit-confirmation' => 'Dein Beoorbeitung woard gespeichert.',
+'edit-already-exists' => 'Die neie Seit konnt net erstellt werre, do sie bereits voarhand ist.',
+'defaultmessagetext' => 'Standardtext',
+'content-failed-to-parse' => 'Parsierung von den Inhalt $2 für Modell $1 fehlgeschlohn: $3',
+'invalid-content-data' => 'Ungültiche Inhaltsdate',
+'content-not-allowed-here' => 'Der Inhalt "$1" ist uff der Seit [[$2]] net erlaubt',
+'editwarning-warning' => 'Das Verlosse von der Seit kann dozu führe, dass dein Ännrungen verloar gehn.
+Wenn du oongemeldt bist, kannst du das Oonzeiche von der Warnung im Bereich „{{int:prefs-editing}}“ deiner Instellunge abschalte.',
+'editpage-notsupportedcontentformat-title' => 'Das Inhaltsformat weard net unnerstützt',
+'editpage-notsupportedcontentformat-text' => 'Das Inhaltsformat $1 weard vom Inhaltsmodell $2 net unnerstützt.',
+
+# Content models
+'content-model-wikitext' => 'Wikitext',
+'content-model-text' => 'Klartext',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
+
+# Parser/template warnings
+'expensive-parserfunction-warning' => "'''Achtung:''' Die Seit enthält zu viele Aufrufe uffwändicher Parserfunktione.
+
+Die därref nemehr als wie $2 {{PLURAL:$2|Uffruf|Uffrufe}} honn, do {{PLURAL:$1|ist aktuell $1 Uffruf|sind aktuell $1 Uffrufe}}.",
+'expensive-parserfunction-category' => 'Seite, wo uffwändiche Parserfunktione zu oft uffrufe',
+'post-expand-template-inclusion-warning' => 'Warnung: Die Gröss ingebundner Voarlooche ist zu gross, eniche Voarlooche könne net ingebund sin.',
+'post-expand-template-inclusion-category' => 'Seite, in denen die maximale Grösse ingebundner Voarlooche üwerschritt ist',
+'post-expand-template-argument-warning' => "'''Warnung:''' Die Seit enthält mindestens en Parameter in ener Voarlooche, wo expandiert zu gross ist. Die Parameter werre ignoriert.",
+'post-expand-template-argument-category' => 'Seite mit ignorierte Voarloocheparameter',
+'parser-template-loop-warning' => 'Voarloochschleif entdeckt: [[$1]]',
+'parser-template-recursion-depth-warning' => 'Voarloocherekursionstiefgrenz üwerschritt ($1)',
+'language-converter-depth-warning' => 'Sprochkonvertertieflimit üwerschritt ($1)',
+'node-count-exceeded-category' => 'Seite, wo die Knoteoonzoohl üwerschritt honn',
+'node-count-exceeded-warning' => 'Die Seit hot die Knotepunktoonzoohl üwerschritt.',
+'expansion-depth-exceeded-category' => 'Seite, wo die Expansionstiefe überschritt honn',
+'expansion-depth-exceeded-warning' => 'Die Seit hot die Expansionstiefe üwerschritt.',
+'parser-unstrip-loop-warning' => 'Zirkelbezuch festgestellt',
+'parser-unstrip-recursion-limit' => 'Rekursionsgrenz beim Ufflöse üwerschritt ($1)',
+'converter-manual-rule-error' => 'Bei der manuelle Sprochkonvertierungsrechel woard en Fehler entdeckt.',
+
+# "Undo" feature
+'undo-success' => 'Die Beoorbeitung kann rückgänchig gemacht werre.
+Bittschön prüf den Vergleich do unne, um sicherzustelle, dass du das tun möchst, und speichre dann do unne deine Ändrunge, um die Beoorbeitung rückgängig zu mache.',
+'undo-failure' => 'Die Ännrung konnt net rückgängich gemacht sin, weil der betroffne Abschnitt zwischenzeitlich verännert woard.',
+'undo-norev' => 'Die Beorbeitung konnt net rückgängich gemacht sin, wil die net voarhand ist orrer gelöscht woard.',
+'undo-nochange' => 'Anscheinnd woard die Beoorbeitung schon rückgängich gemacht.',
+'undo-summary' => 'Ändrung $1 von [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussion]]) rückgängich gemacht.',
+'undo-summary-username-hidden' => 'Ännrung $1 von en versteckte Benutzer rückgängich gemacht.',
+
+# Account creation failure
+'cantcreateaccounttitle' => 'Das Benutzerkonto kann net erstellt sin',
+'cantcreateaccount-text' => "Die Erstellung von en Benutzerkonto raus von der IP-Adresse '''($1)''' woor doorrich [[User:$3|$3]] gesperrt.
+
+Grund der Sperr: ''$2''",
+'cantcreateaccount-range-text' => "Das Erstell von Benutzerkonte von IP-Adressen im Bereich '''$1''', wo dein IP-Adress ('''$4''') enthält, woor von [[User:$3|$3]] gesperrt.
+
+Der oongebne Grund von $3 laut: ''$2''",
+
+# History pages
+'viewpagelogs' => 'Logbücher von der Seit oonzeiche',
+'nohistory' => 'Zu der Seit ist keh Versionsgeschicht voarhand.',
+'currentrev' => 'Aktuelle Version',
+'currentrev-asof' => 'Aktuelle Version vom $2, $3 Uhr',
+'revisionasof' => 'Version vom $2, $3 Uhr',
+'revision-info' => 'Version vom $4, $5 Uhr von $2',
+'previousrevision' => '← Nächstältre Version',
+'nextrevision' => 'Nächstjüngre Version →',
+'currentrevisionlink' => 'Aktuelle Version',
+'cur' => 'Aktuell',
+'next' => 'Nächste',
+'last' => 'Voarheriche',
+'page_first' => 'Oonfang',
+'page_last' => 'letzte',
+'histlegend' => 'Zur Oonzeiche von der Ännrunge enfach die zu vergleichende Versione auswähle und die Schaltfläche „{{int:compareselectedversions}}“ klicke.<br />
+* ({{int:cur}}) = Unnerschied zur aktuelle Version, ({{int:last}}) = Unnerschied zur voarheriche Version
+* Uhrzeit/Datum = Version zu der Zeit, Benutzernoome/der Beoorbeiter sein IP-Adress, {{int:minoreditletter}} = Klen Ännrung',
+'history-fieldset-title' => 'In der Versionsgeschicht suche',
+'history-show-deleted' => 'Nuar gelöschte Versione zeiche',
+'histfirst' => 'ältest',
+'histlast' => 'neiest',
+'historysize' => '({{PLURAL:$1|1 Byte|$1 Bytes}})',
+'historyempty' => '(leer)',
+
+# Revision feed
+'history-feed-title' => 'Versionsgeschicht',
+'history-feed-description' => 'Versionsgeschichte von der Seit in {{SITENAME}}',
+'history-feed-item-nocomment' => '$1 am $3 um $4 Uhr',
+'history-feed-empty' => 'Die verlangte Seit existiert net. Vielleicht woard se abgewischt orrer verschubt. [[Special:Search|Doorrichsuch]] {{SITENAME}} für passende neie Seite.',
+
+# Revision deletion
+'rev-deleted-comment' => '(Zusammerfassung entfernt)',
+'rev-deleted-user' => '(Benutzernoome entfernt)',
+'rev-deleted-event' => '(Logbuchaktion entfernt)',
+'rev-deleted-user-contribs' => '[Benutzernoome orrer IP-Adress entfernt – Beoorbeitung aus Beiträche versteckt]',
+'rev-deleted-text-permission' => "Die Version woard '''ausgewischt'''.
+Nähre Oongäb zum Auswischvoargang sowie en Begründung stehn im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Auswisch-Logbuch].",
+'rev-deleted-text-unhide' => "Die Version woard '''ausgewischt'''.
+Nähre Oongäb stehn im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Auswisch-Logbuch].
+Du kannst [$1 die Version einsiehn], insoweit du möchst.",
+'rev-suppressed-text-unhide' => "Die Version woard '''unnerdrückt'''.
+Nähre Oongäb stehn im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrückungs-Logbuch].
+Du kannst [$1 die Version einsiehn], insoweit du möchst.",
+'rev-deleted-text-view' => "Die Version woard '''abgewischt'''.
+Du kannst se einsiehn, insofern du möchst. Nähre Oongäb stehn im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Abwasch-Logbuch].",
+'rev-suppressed-text-view' => "Die Version woard '''unnerdrückt'''.
+Du kannst sie einsiehn, sofern du möchst. Nähre Oongäb stehn im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrückungs-Logbuch].",
+'rev-deleted-no-diff' => "Du kannst den Unnerschied net betrachte, weil ene von der Versione '''abgewischt''' woard.
+Details stehn im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Abwasch-Logbuch].",
+'rev-suppressed-no-diff' => "Du kannst den Versionsunnerschied net betrachte, weil ene von der Versione '''abgewischt''' woard.",
+'rev-deleted-unhide-diff' => "Ene von der Versione von das Versionsunnerschied woard '''abgewischt'''.
+Nähre Oongä stehn im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Abwäsch-Logbuch].
+Du kannst [$1 die Versionsunnerschied insiehn], soweit du möchst.",
+'rev-suppressed-unhide-diff' => "En von der Versione von das Versionsunnerschied woard '''unnerdrückt'''.
+Näehre Oongäb stehn im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Unnerdrückungs-Logbuch].
+Du kannst [$1 den Versionsunnerschied insiehn], soweit du möchst.",
+'rev-deleted-diff-view' => "En Version von das Versionsunnerschied woard '''abgewischt'''.
+Du kannst den Versionsunnerschied insiehn, soweit du möchst. Näehre Oongäb stehn im [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Abwisch-Logbuch].",
+'rev-suppressed-diff-view' => "En von der Versione von das Versionsunnerschiede woard '''unnerdrückt'''.
+Du kannst die Versionsunnerschied insiehn, soweit du möchst. Näehre Oongäb stehn im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrückungs-Logbuch].",
+'rev-delundel' => 'zeiche/verstecke',
+'rev-showdeleted' => 'Zeich',
+'revisiondelete' => 'Versione abwische/wiederhearstelle',
+'revdelete-nooldid-title' => 'Kein Version oongeb',
+'revdelete-nooldid-text' => 'Du host entweder ken Version oongeb, uff die die Aktion ausgeführt win soll, die gewählte Version ist net voarhand orrer du versuchst, die aktuelle Version zu entferne.',
+'revdelete-no-file' => 'Die oongebne Datei ist net voarhand.',
+'revdelete-show-file-confirm' => 'Bist du sicher, dass du die gelöschte Version von der Datei "<nowiki>$1</nowiki>" vom $2 um $3 Uhr oonsiehn willst?',
+'revdelete-show-file-submit' => 'Jo',
+'revdelete-selected-text' => 'Ausgewählte {{PLURAL:$1|Version|Versione}} von [[:$2]]:',
+'revdelete-selected-file' => 'Ausgewählte {{PLURAL:$1|Dateiversion|Dateiversione}} von [[:$2]]:',
+'logdelete-selected' => '{{PLURAL:$1|Gewählter Logbucheintrooch|Gewählte Logbucheinträche}}:',
+'revdelete-text-text' => 'Gelöschte Versione verbleibe noch in der Versionsgeschicht, jedoch sind Tele von ihre Inhalt für die Öffentlichkeit net zugänglich.',
+'revdelete-text-file' => 'Gelöschte Dateiversione verbleibe noch in der Datei-Versionsgeschicht, jedoch sind Tele von ehre Inhalt für die Öffentlichkeit net zugänglich.',
+'logdelete-text' => 'Gelöschte Logbucheinträch verbleibe noch in den Logbücher, jedoch sind Tele von ehre Inhalts für die Öffentlichkeit net zugänglich.',
+'revdelete-text-others' => 'Annre Administratore uff {{SITENAME}} honn noch Zugriff uff den versteckte Inhalt und könne ehn ooch mithelfe um der Spezialseit wiederhearstelle, solang ken zusätzliche Beschränkunge festgeleht sin.',
+'revdelete-confirm' => 'Bittschön bestätich, dass du beabsichtichst, das zu tun, die Konsequenze verstehst und es in Üwereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinie]] tust.',
+'revdelete-suppress-text' => "Unnerdrückung sollte '''nuar''' in den follichende Fälle voargenomm sin:
+* Potentiell beleidichende Informatione
+* Unangebrachte persönliche Informatione
+*: ''Adresse, Telefonnummer, Sozialversichrungsnummer, und so weiter''",
+'revdelete-legend' => 'Setz der Sichtbarkeitseinschränkunge',
+'revdelete-hide-text' => 'Der Version sein Text',
+'revdelete-hide-image' => 'Dateiinhalt verstecke',
+'revdelete-hide-name' => 'Logbuchaktion und Ziel verstecke',
+'revdelete-hide-comment' => 'Beoorbeitungszusammerfassung',
+'revdelete-hide-user' => 'Benutzernoome/IP-Adress von der Beoorbeiter',
+'revdelete-hide-restricted' => 'Daten sowohl voar Administratore als wie ooch annre Benutzer unnerdrücke',
+'revdelete-radio-same' => '(nicht ännre)',
+'revdelete-radio-set' => 'Versteckt',
+'revdelete-radio-unset' => 'Sichtbar',
+'revdelete-suppress' => 'Grund von der Abwischung ooch voar Administratore verstecke',
+'revdelete-unsuppress' => 'Inschränkunge für wiederhergestellte Versione uffhebe',
+'revdelete-log' => 'Grund:',
+'revdelete-submit' => 'Uff gewählte {{PLURAL:$1|Version|Versione}} anwenne',
+'revdelete-success' => "'''Die Versionsoonsicht woard aktualisiert.'''",
+'revdelete-failure' => "'''Die Versionssichtbarkeit konnt net aktualisiert sin:'''
+$1",
+'logdelete-success' => "'''Logbuchoonsicht erfollichreich geännert.'''",
+'logdelete-failure' => "'''Logbuchsichtbarkeit kann net geännert sin:'''
+$1",
+'revdel-restore' => 'Sichtbarkeit ännre',
+'pagehist' => 'Versionsgeschicht',
+'deletedhist' => 'Ausgewischte Versione',
+'revdelete-hide-current' => 'Fehler beim Verstecke von der Eintrooch vom $1, $2 Uhr: Das ist die aktuelle Version.
+Sie kann net versteckt sin.',
+'revdelete-show-no-access' => 'Fehler beim Oonzeiche von der Eintrooch vom $1, $2 Uhr: Der Eintrooch woard als "eingeschränkt" markiert.
+Du host druf ken Zugriff.',
+'revdelete-modify-no-access' => 'Fehler beim Beoorbeite von der Eintroohc vom $1, $2 Uhr: Der Eintrooch woard als wie "eingeschränkt" markiert.
+Du host druf ken Zugriff.',
+'revdelete-modify-missing' => 'Fehler beim Beoorbeite von ID $1: Es fehlt in der Datebank!',
+'revdelete-no-change' => "'''Warnung:''' Der Eintrooch vom $1, $2 Uhr besitzt schon die gewünschte Sichtbarkeitseinstellunge.",
+'revdelete-concurrent-change' => 'Fehler beim Beoorbeite von der Eintrooch vom $1, $2 Uhr: Es scheint, als ob der Status von jemandem geännert woard, bevoar du voarhast, ihn zu beoorbeite.
+Bitte prüf die Logbücher.',
+'revdelete-only-restricted' => 'Fehler beim Verstecke von der Eintrooch vom $1, $2 Uhr: Du kannst ken Eintrooch voar Administratore verstecke, ohne en der annre Oonsichtsoptione gewählt zu hoon.',
+'revdelete-reason-dropdown' => '*Allgemeine Abwischgründe
+** Urheberrechtsverletzung
+** Unoongebrachte Kommentare orrer persönliche Informatione
+** Unoongebrachter Benutzernoome
+** Potentiell beleidichende Informatione',
+'revdelete-otherreason' => 'Annre/ergänzender Grund:',
+'revdelete-reasonotherlist' => 'Annrer Grund',
+'revdelete-edit-reasonlist' => 'Abwischgründe beoorbeite',
+'revdelete-offender' => 'Der Version sein Autor:',
+
+# Suppression log
+'suppressionlog' => 'Oversight-Logbuch',
+'suppressionlogtext' => 'Das ist das Logbuch der Oversight-Aktione (Ännrunge von der Sichtbarkeit von Versione, Beoorbeitungskommentare, Benutzernoome und Benutzersperre).
+Sieh die [[Special:BlockList|List von der gesperrte IP-Adresse und Benutzernoome]] für aktuelle Sperre.',
+
+# History merging
+'mergehistory' => 'Versionsgeschichte vereine',
+'mergehistory-header' => 'Mit der Spezialseit kannst du die Versionsgeschicht von en Ursprungsseit mit der Versionsgeschicht von en Zielseit vereine.
+Stell sicher, dass die Versionsgeschicht von en Seit historisch korrekt ist.',
+'mergehistory-box' => 'Versionsgeschichte zwooier Seite vereine',
+'mergehistory-from' => 'Uarsprungsseit:',
+'mergehistory-into' => 'Zielseit:',
+'mergehistory-list' => 'Versione, wo vereinigt sin könne',
+'mergehistory-merge' => 'Die follichende Versione von "[[:$1]]" könne noh "[[:$2]]" üwertroon sin. Markier die Version, bis zu der (einschliesslich) die Versione üwertroon sin solle. Bittschön beacht, dass die Nutzung von der Navigationslink die Auswahl zurücksetzt.',
+'mergehistory-go' => 'Zeich Versione, wo vereinicht sin könne',
+'mergehistory-submit' => 'Vereinich Versione',
+'mergehistory-empty' => 'Do könne ken Versione vereinicht sin.',
+'mergehistory-success' => '{{PLURAL:$3|1 Version|$3 Versione}} von "[[:$1]]" erfollichreich noh „[[:$2]]“ vereinicht.',
+'mergehistory-fail' => 'Versionsvereinichung net möchlich, bittschön prüf die Seit und die Zeitoongäb.',
+'mergehistory-no-source' => 'Uarsprungsseit "$1" ist net voarhand.',
+'mergehistory-no-destination' => 'Zielseit "$1" ist net voarhand.',
+'mergehistory-invalid-source' => 'Uarsprungsseit muss en gülticher Seitnoome sin.',
+'mergehistory-invalid-destination' => 'Zielseit muss en gülticher Seitnoome sin.',
+'mergehistory-autocomment' => '"[[:$1]]" vereinicht noh "[[:$2]]"',
+'mergehistory-comment' => '"[[:$1]]" vereinicht noh "[[:$2]]": $3',
+'mergehistory-same-destination' => 'Ausgangs- und Zielseit deerfe net identisch sin',
+'mergehistory-reason' => 'Grund:',
+
+# Merge log
+'mergelog' => 'Vereinichungs-Logbuch',
+'pagemerge-logentry' => 'vereinichte [[$1]] in [[$2]] (Versione bis $3)',
+'revertmerge' => 'Vereinichung rückgängich mache',
+'mergelogpagetext' => 'Das ist das Logbuch von der vereinichte Versionsgeschichte.',
+
+# Diffs
+'history-title' => '$1: Versionsgeschicht',
+'difference-title' => '$1: Unnerschied zwischich den Versione',
+'difference-title-multipage' => '$1 und $2: Unnerschied zwischich den Seite',
+'difference-multipage' => '(Unnerschied zwischich Seite)',
+'lineno' => 'Zeil $1:',
+'compareselectedversions' => 'Gewählte Versione vergleiche',
+'showhideselectedversions' => 'Gewählte Versione zeiche/verstecke',
+'editundo' => 'rückgängich mache',
+'diff-empty' => '(ken Unnerschied)',
+'diff-multi-sameuser' => '({{PLURAL:$1|En dozwischerlehnde Version|$1 dozwischerlehnde Versione}} von der selwiche Benutzer werre net oongezeicht)',
+'diff-multi-otherusers' => '({{PLURAL:$1|En dozwischerlehnd Version|$1 dozwischerlehnde Versione}} von {{PLURAL:$2|en annre Benutzer|$2 Benutzer}} werre net oongezeicht)',
+'diff-multi-manyusers' => '({{PLURAL:$1|$1 dozwischerlehnde Versione}} von meahr als {{PLURAL:$2|$2 Benutzer}}, die net oongezeicht sin)',
+'difference-missing-revision' => '{{PLURAL:$2|Ein Version|$2 Versione}} der Unnerschiedsoonzeich ($1) {{PLURAL:$2|woard|worre}} net gefund.
+
+Der Fehler weard normalerweis von en veraltete Link zur Versionsgeschicht von en Seit verursacht, wo zwischichzeitlich abgewischt woard.
+Einzelheite sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Abwasch-Logbuch] voarhand.',
+
+# Search results
+'searchresults' => 'Suchergebnisse',
+'searchresults-title' => 'Suchergebnisse für „$1“',
+'toomanymatches' => 'Die Oonzoohl von der Suchergebnisse ist zu gross, bittschön versuch en annre Abfroch.',
+'titlematches' => 'Üwereinstimmunge mit Seitetitle',
+'textmatches' => 'Üwereinstimmunge mit Inhalte',
+'notextmatches' => 'Ken Üwereinstimmunge mit Inhalte',
+'prevn' => '{{PLURAL:$1|voarhericher|vorheriche $1}}',
+'nextn' => '{{PLURAL:$1|nächster|nächste $1}}',
+'prevn-title' => '{{PLURAL:$1|Voarheriches Ergebnis|Vorherige $1 Ergebnisse}}',
+'nextn-title' => '{{PLURAL:$1|Voarheriches Ergebnis|Vorherige $1 Ergebnisse}}',
+'shown-title' => 'Zeiche $1 {{PLURAL:$1|Ergebnis|Ergebnisse}} pro Seit',
+'viewprevnext' => 'Zeiche ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-exists' => "'''Es gebt en Seit, wo den Noome \"[[:\$1]]\" hot.''' 
+{{PLURAL:\$2|0=|Sieh ooch die annre Suchresultate wo gefund woore.}}",
+'searchmenu-new' => '<strong>Erstell die Seit "[[:$1]]" in dem Wiki.</strong> {{PLURAL:$2|0=|Sieh ooch die üwer dein Such gefundne Seit.|Sieh ooch die gefundne Suchergebnisse.}}',
+'searchprofile-articles' => 'Inhaltsseite',
+'searchprofile-project' => 'Helleft - und Projektseite',
+'searchprofile-images' => 'Multimedia',
+'searchprofile-everything' => 'Alles',
+'searchprofile-advanced' => 'Erweitert',
+'searchprofile-articles-tooltip' => 'Suche in $1',
+'searchprofile-project-tooltip' => 'Such in $1',
+'searchprofile-images-tooltip' => 'Noh Dateie suche',
+'searchprofile-everything-tooltip' => 'Gesamte Inhalt doorrichsuche (inklusive Diskussionsseite)',
+'searchprofile-advanced-tooltip' => 'Such in weitre Noomeräume',
+'search-result-size' => '$1 ({{PLURAL:$2|1 Wort|$2 Wörter}})',
+'search-result-category-size' => '{{PLURAL:$1|1 Seit|$1 Seite}} ({{PLURAL:$2|1 Unnerkategorie|$2 Unnerkategorie}}, {{PLURAL:$3|1 Datei|$3 Dateie}})',
+'search-result-score' => 'Relevanz: $1 %',
+'search-redirect' => '(Weiterleitung von „$1“)',
+'search-section' => '(Abschnitt $1)',
+'search-file-match' => '(treffende Dateiinhalte)',
+'search-suggest' => 'Host du gemeent „$1“?',
+'search-interwiki-caption' => 'Schwesterprojekte',
+'search-interwiki-default' => 'Ergebnisse von $1:',
+'search-interwiki-more' => '(weitre)',
+'search-relatedarticle' => 'Verwandte',
+'searcheverything-enable' => 'In alle Noomeräume suche',
+'searchrelated' => 'verwandt',
+'searchall' => 'alle',
+'showingresults' => "Hier {{PLURAL:$1|ist '''1''' Ergebnis|sind '''$1''' Ergebnisse}}, beginnend mit Nummer '''$2.'''",
+'showingresultsinrange' => 'Unne {{PLURAL:$1|weard <strong>en</strong> Ergebnis|werre bis zu <strong>$1</strong> Ergebnisse}} im Bereich <strong>$2</strong> bis <strong>$3</strong> oongezeicht.',
+'showingresultsnum' => "Hier {{PLURAL:$3|ist '''1''' Ergebnis|sind '''$3''' Ergebnisse}}, beginnend mit Nummer '''$2.'''",
+'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' von '''$3'''|Ergebnisse '''$1–$2''' von '''$3'''}} für '''$4'''",
+'search-nonefound' => 'Zu deiner Suchoonfroch wore ken Ergebnisse gefund.',
+'powersearch-legend' => 'Erweiterte Such',
+'powersearch-ns' => 'Such in Noomeräume:',
+'powersearch-redir' => 'Weiterleitunge oonzeiche',
+'powersearch-togglelabel' => 'Wähl aus:',
+'powersearch-toggleall' => 'All',
+'powersearch-togglenone' => 'Ken',
+'search-external' => 'Externe Such',
+'searchdisabled' => 'Die {{SITENAME}}-Such ist deaktiviert. Du kannst unnerdessen mit Google suche. Bittschön bedenke, dass der Suchindex von {{SITENAME}} veraltet sin kann.',
+'search-error' => 'Bei der Such ist en Fehler uffgetret: $1',
+
+# Preferences page
+'preferences' => 'Einstellunge',
+'mypreferences' => 'Instellunge',
+'prefs-edits' => 'Oonzoohl von der Bearbeitunge:',
+'prefsnologintext2' => 'Du musst dich $1, um Benutzereinstellunge festzulehn.',
+'prefs-skin' => 'Benutzerowerfläche',
+'skin-preview' => 'Vorschau',
+'datedefault' => 'Standard',
+'prefs-beta' => 'Beta-Funktione',
+'prefs-datetime' => 'Datum und Zeit',
+'prefs-labs' => 'Alpha-Funktione',
+'prefs-user-pages' => 'Benutzerseite',
+'prefs-personal' => 'Benutzerdate',
+'prefs-rc' => 'Letzte Ännrunge',
+'prefs-watchlist' => 'Beobachtungslist',
+'prefs-watchlist-days' => 'Maximale Oonzoohl von der inbezochne Tooche:',
+'prefs-watchlist-days-max' => 'Maximal {{PLURAL:$1|en Tooch|$1 Tooche}}',
+'prefs-watchlist-edits' => 'Maximal Oonzoohl von der oongezeichte Inträche:',
+'prefs-watchlist-edits-max' => 'Maximal 1.000 Inträche',
+'prefs-watchlist-token' => 'Token von der Beobachtungslist:',
+'prefs-misc' => 'Verschiednes',
+'prefs-resetpass' => 'Passwort ännre',
+'prefs-changeemail' => 'E-Mail-Adress ännre',
+'prefs-setemail' => 'E-Mail-Adress festlehn',
+'prefs-email' => 'E-Mail-Optione',
+'prefs-rendering' => 'Aussiehn',
+'saveprefs' => 'Instellunge speichre',
+'restoreprefs' => 'Alle Standardinstellunge wiederhearstelle (in alle Abschnitte)',
+'prefs-editing' => 'Beoorbeite',
+'rows' => 'Zeile:',
+'columns' => 'Spalte:',
+'searchresultshead' => 'Such',
+'stub-threshold' => 'Linkformatierung <a href="#" class="stub">klen Seite</a> (in Bytes):',
+'stub-threshold-disabled' => 'Deaktiviert',
+'recentchangesdays' => 'Oonzoohl von der standardmässich inbezochne Tooche:',
+'recentchangesdays-max' => 'Maximal $1 {{PLURAL:$1|Tooch|Tooche}}',
+'recentchangescount' => 'Oonzoohl von der standardmässich oongezeichte Beoorbeitunge:',
+'prefs-help-recentchangescount' => 'Das umfasst die List von der letzte Ännrunge, die Versionsgeschichte und die Logbücher.',
+'prefs-help-watchlist-token2' => 'Das ist der geheime Schlüssel zum Webfeed von deiner Beobachtungslist.
+Jeder, wo ihn kennt, kann dein Beobachtungslist lese. Tue ihn, dodrum, net teile.
+[[Special:ResetTokens|Klick hier, wenns du ihn zurücksetze musst]].',
+'savedprefs' => 'Dein Einstellunge woorre gespeichert.',
+'timezonelegend' => 'Zeitzone:',
+'localtime' => 'Platzzeit:',
+'timezoneuseserverdefault' => 'Standardzeit von das Wiki nutze ($1)',
+'timezoneuseoffset' => 'Annre (Unnerschied oongewe)',
+'servertime' => 'Aktuelle Zeit uff dem Server:',
+'guesstimezone' => 'Vom Browser üwernehme',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktis',
+'timezoneregion-arctic' => 'Arktis',
+'timezoneregion-asia' => 'Asie',
+'timezoneregion-atlantic' => 'Atlantischer Ozean',
+'timezoneregion-australia' => 'Australie',
+'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Indischer Ozean',
+'timezoneregion-pacific' => 'Pazifischer Ozean',
+'allowemail' => 'E-Mail-Empfang von annre Benutzer ermöchliche',
+'prefs-searchoptions' => 'Such',
+'prefs-namespaces' => 'Noomeräume',
+'defaultns' => 'Annrenfalls in den Noomeräume suche:',
+'default' => 'Voareinstellung',
+'prefs-files' => 'Dateie',
+'prefs-custom-css' => 'Benutzerdefinierte CSS',
+'prefs-custom-js' => 'Benutzerdefiniertes JavaScript',
+'prefs-common-css-js' => 'Gemeinsames CSS/JavaScript von aller Benutzerowerfläche:',
+'prefs-reset-intro' => 'Du kannst die Seit verwenne, um die Einstellunge uff die Standards zurückzusetzen.
+Das kann net meh rückgängich gemacht sin.',
+'prefs-emailconfirm-label' => 'E-Mail-Bestätichung:',
+'youremail' => 'E-Mail-Adress:',
+'username' => '{{GENDER:$1|Benutzernoome}}:',
+'uid' => '{{GENDER:$1|Benutzerkennung}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Mitglied}} von der {{PLURAL:$1|Benutzergrupp|Benutzergruppe}}:',
+'prefs-registration' => 'Oonmeldezeitpunkt:',
+'yourrealname' => 'Dein Noome wie registriert:',
+'yourlanguage' => 'Sproche von der Benutzerowerfläche:',
+'yourvariant' => 'Sprachvariante:',
+'prefs-help-variant' => 'Die bevoarzuchte Schreibvariante orrer Orthografie, in der die Wikiseite oongezeicht werre solle.',
+'yournick' => 'Signatur:',
+'prefs-help-signature' => 'Beiträche uff Diskussionsseite sollte mit „<nowiki>~~~~</nowiki>“ signiert sin, was dann in die Signatur mit Zeitstempel umgewandelt weard.',
+'badsig' => 'Die Syntax von der Signatur ist ungültich; bittschön HTML üwerprüfe.',
+'badsiglength' => 'Die Signatur därref maximal $1 {{PLURAL:$1|Zeiche}} lang sin.',
+'yourgender' => 'Mit was für Geschlecht tust du dich identifiziere?',
+'gender-unknown' => 'Ich möcht hierzu ken Oongäb mache',
+'gender-male' => 'Ich sin männlich',
+'gender-female' => 'Ich sin weiblich',
+'prefs-help-gender' => 'Das ist eine freiwilliche Oongäb.
+Die Software nutzt se, um dich oonzurede sowie als Hinweis für annre doorrich Verwennung von der zutreffende grammatikalische Geschlecht.
+Die Information ist öffentlich.',
+'email' => 'E-Mail',
+'prefs-help-realname' => 'Das ist en freiwilliche Oongäb. Domit kann dein bürgerlicher/registrierte Noome zu deine Beiträche zugeordnet sin.',
+'prefs-help-email' => 'Die oongäb von en E-Mail-Adress ist optional, ermöchlicht awer die Zusendung von en Ersatzpasswort, soweit du dein Passwort vergess host.',
+'prefs-help-email-others' => 'Mit annre Benutzer kannst du ooch üwer die Benutzerdiskussionsseit Kontakt uffnehme, ohne dass du dein Identität ufflehn musst.',
+'prefs-help-email-required' => 'Es weard en gültiche E-Mail-Adress benöticht.',
+'prefs-info' => 'Basisinformatione',
+'prefs-i18n' => 'Sproch',
+'prefs-signature' => 'Signatur',
+'prefs-dateformat' => 'Datumsformat',
+'prefs-timeoffset' => 'Zeitunnerschied',
+'prefs-advancedediting' => 'Allgemeine Optione',
+'prefs-editor' => 'Beoorbeitungsprogramm',
+'prefs-preview' => 'Vorschau',
+'prefs-advancedrc' => 'Erweiterte Optione',
+'prefs-advancedrendering' => 'Erweiterte Optione',
+'prefs-advancedsearchoptions' => 'Erweiterte Optione',
+'prefs-advancedwatchlist' => 'Erweiterte Optione',
+'prefs-displayrc' => 'Oonzeichoptione',
+'prefs-displaysearchoptions' => 'Oonzeichoptione',
+'prefs-displaywatchlist' => 'Oonzeichoptione',
+'prefs-tokenwatchlist' => 'Token',
+'prefs-diffs' => 'Versionsvergleich',
+'prefs-help-prefershttps' => 'Die Instellung weard bei deiner nächste Oonmeldung weerreksam.',
+'prefs-tabs-navigation-hint' => 'Tipp: Du kannst die linke und rechte Pfeiltaste benutze, um zwischich den Registerkoorter in der Reiterlist zu navigiere.',
+
+# User preference: email validation using jQuery
+'email-address-validity-valid' => 'Die E-Mail-Adress scheint gültich zu sin.',
+'email-address-validity-invalid' => 'En gültich E-Mail-Adress ist nötich.',
+
+# User rights
+'userrights' => 'Benutzerrechteverwaltung',
+'userrights-lookup-user' => 'Gruppezugehörigkeit verwalte',
+'userrights-user-editname' => 'Benutzernoome:',
+'editusergroup' => 'Gruppezugehörigkeit ännre',
+'editinguser' => "Ännre Benutzerrechte von '''[[User:$1|$1]]''' $2",
+'userrights-editusergroup' => 'Gruppezugehörigkeit verännre',
+'saveusergroups' => 'Gruppezugehörigkeit ännre',
+'userrights-groupsmember' => 'Mitglied von:',
+'userrights-groupsmember-auto' => 'Automatisch Mitglied von:',
+'userrights-groups-help' => 'Du kannst die Gruppezugehörigkeit {{GENDER:$1|von der Benutzer|die Benutzrin}} ännre:
+* En markierte Kästche bedeitet, dass {{GENDER:$1|der Benutzer|die Benutzrin}} der Grupp Mitglied ist.
+* En nichtmarkierte Kästche bedeitet, dass {{GENDER:$1|der Benutzer|die Benutzrin}} net Mitglied von der Grupp ist.
+* En * bedeitet, dass du das Benutzerrecht noh Erteilung net wieder zurücknehme kannst (orrer umgekeahrt).',
+'userrights-reason' => 'Grund:',
+'userrights-no-interwiki' => 'Du host net die nötiche Berechtichung, um Benutzerrechte in annre Wikis ännre  könne.',
+'userrights-nodatabase' => 'Die Datebank $1 ist net voarhand orrer net lokal.',
+'userrights-nologin' => 'Du musst dich mit en Administratoar-Benutzerkonto [[Special:UserLogin|oonmeld]], um Benutzerrechte ännre.',
+'userrights-notallowed' => 'Du verfüchst net üwer die erforderliche Berechtichunge, um Benutzerrechte vergebe orrer entziehe könne.',
+'userrights-changeable-col' => 'Gruppezugehörigkeit, die du ännre kannst',
+'userrights-unchangeable-col' => 'Gruppezugehörigkeit, die du net ännre kannst',
+'userrights-conflict' => 'Benutzerrechteännerungskonflikt! Bittschön üwerprüf und bestätich deine Ännrunge.',
+'userrights-removed-self' => 'Du host dein eichne Rechte erfollichreich entfernt. Du kannst net länger uff die Seit zugreife.',
+
+# Groups
+'group' => 'Grupp:',
+'group-user' => 'Benutzer',
+'group-autoconfirmed' => 'Automatisch bestätichte Benutzer',
+'group-bot' => 'Bots',
+'group-sysop' => 'Administratore',
+'group-bureaucrat' => 'Bürokrate',
+'group-suppress' => 'Oversighter (Üwerwächter)',
+'group-all' => '(alle)',
+
+'group-user-member' => 'Bot',
+'group-autoconfirmed-member' => '{{GENDER:$1|Automatisch bestätichter Benutzer|Automatisch bestätichte Benutzrin}}',
+'group-bot-member' => 'Bot',
+'group-sysop-member' => '{{GENDER:$1|Administratoar|Administratorin}}',
+'group-bureaucrat-member' => '{{GENDER:$1|Bürokrat|Bürokratin}}',
+'group-suppress-member' => '{{GENDER:$1|Oversighter|Oversightrin}} 
+(Üwerwächter|Üwerwächtrin)',
+
+'grouppage-user' => '{{ns:project}}:Benutzer',
+'grouppage-autoconfirmed' => '{{ns:project}}:Automatisch bestätichte Benutzer',
+'grouppage-bot' => '{{ns:project}}:Bots',
+'grouppage-sysop' => '{{ns:project}}:Administratore',
+'grouppage-bureaucrat' => '{{ns:project}}:Bürokrate',
+'grouppage-suppress' => '{{ns:project}}:Oversighter (Üwerwächter)',
+
+# Rights
+'right-read' => 'Seite lese',
+'right-edit' => 'Seite beoorbeite',
+'right-createpage' => 'Seite erstelle (ausser Diskussionsseite)',
+'right-createtalk' => 'Diskussionsseite erstelle',
+'right-createaccount' => 'Benutzerkonto erstelle',
+'right-minoredit' => 'Bearbeitunge wie klen markiere',
+'right-move' => 'Seite verschiebe',
+'right-move-subpages' => 'Seite inklusive Unnerseite verschiebe',
+'right-move-rootuserpages' => 'Haupt-Benutzerseite verschiebe',
+'right-movefile' => 'Dateie verschiebe',
+'right-suppressredirect' => 'Beim Verschiebe die Erstellung von en Weiterleitung unnerdrücke',
+'right-upload' => 'Dateie hochloode',
+'right-reupload' => 'Üwerschreibe en voarhandne Datei',
+'right-reupload-own' => 'Üwerschreibe von en zuvoar sellebst hochgeladne Datei',
+'right-reupload-shared' => 'Lokales Üwerschreibe von en in enem gemeinsam genutzte Repositorium voarhandne Datei',
+'right-upload_by_url' => 'Dateie von en URL-Adress hochloode',
+'right-purge' => 'Seitecache leere ohne Rückfroche',
+'right-autoconfirmed' => 'Ken Beschränkung doorrich IP-basiert Limits (limmitatione)',
+'right-bot' => 'Behandlung wie automatischer Prozess',
+'right-nominornewtalk' => 'Klene Beoorbeitunge an Diskussionsseite führe zu kenr "Neie Nachrichte"-Oonzeiche',
+'right-apihighlimits' => 'Höchre Limits (limmitatione) in API-Abfroche',
+'right-writeapi' => 'Benutzung von der writeAPI',
+'right-delete' => 'Seite lösche',
+'right-bigdelete' => 'Seite mit grosser Versionsgeschicht abwische',
+'right-deletelogentry' => 'Enzelne Logbuch-Einträche abwische und wiederherstelle',
+'right-deleterevision' => 'Einzelne Versione von en Seit abwische und wiederherstelle',
+'right-deletedhistory' => 'Abgewischte Versione in der Versionsgeschicht oonsiehn, ohne zugehöriche Text',
+'right-deletedtext' => 'Abgewischte Texte und Versionsunnerschiede zwischich abgewischte Versione oonsiehn',
+'right-browsearchive' => 'Noh abgewischte Seite suche',
+'right-undelete' => 'Seite wiederherstelle',
+'right-suppressrevision' => 'Versione oonsiehn und wiederherstelle, die ooch voar Administratore verborriche sind',
+'right-suppressionlog' => 'Private Logbücher oonsiehn',
+'right-block' => 'Benutzer sperre (Schreibrecht)',
+'right-blockemail' => 'Benutzer am Versende von E-Mails hinnre',
+'right-hideuser' => 'Benutzernoome sperre und verberrich.',
+'right-ipblock-exempt' => 'Ausnoohme von IP-Sperre, automatische Sperre und Rangesperre',
+'right-proxyunbannable' => 'Ausnoohme von automatische Proxysperre',
+'right-unblockself' => 'Sich entsperre',
+'right-protect' => 'Seitenschutzstatus ännre und kaskadengeschützte Seite beoorbeite',
+'right-editprotected' => 'Seite bearbeite, wo als "{{int:protect-level-sysop}}" geschützt sind',
+'right-editsemiprotected' => 'Seite beoorbeite, wo als "{{int:protect-level-autoconfirmed}}" geschützt sind',
+'right-editinterface' => 'Benutzeroberfläche beoorbeite',
+'right-editusercssjs' => 'Fremde CSS- und JavaScript-Dateie beoorbeite',
+'right-editusercss' => 'Fremde CSS-Dateie bearbeite',
+'right-edituserjs' => 'Fremde JavaScript-Dateie boobeite',
+'right-editmyusercss' => 'Eichne Benutzer-CSS-Dateie beoorbeite',
+'right-editmyuserjs' => 'Eichne Benutzer-JavaScript-Dateie beoorbeite',
+'right-viewmywatchlist' => 'Eichne Beobachtungsliste oonsiehn',
+'right-editmywatchlist' => 'Eichne Beobachtungslist beoorbeite. Eniche Aktione ermöchliche das Hinzufüche von Seite ohne das Recht.',
+'right-viewmyprivateinfo' => 'Eichne private Date oonsiehn (beispielsweis E-Mail-Adress, bürcherlicher / registrierte Noome)',
+'right-editmyprivateinfo' => 'Eichne private Date beoorbeite (beispielsweis E-Mail-Adress, bürcherlicher / registrierte Noome)',
+'right-editmyoptions' => 'Eichne Einstellunge beoorbeite',
+'right-rollback' => 'Schnelles Zurücksetze',
+'right-markbotedits' => 'Schnell zurückgesetzte Beoorbeitunge wie Bot-Bearbeitung markiere',
+'right-noratelimit' => 'Ken Beschränkung doorrich Limits',
+'right-import' => 'Seite aus annre Wikis importiere',
+'right-importupload' => 'Seite üwer Hochlade von Dateie importiere',
+'right-patrol' => 'Fremde Beoorbeitunge als kontrolliert markiere',
+'right-autopatrol' => 'Eichne Beoorbeitungen automatisch wie kontrolliert markiere',
+'right-patrolmarks' => 'Kontrollmarkierunge in den letzte Ändrunge siehn',
+'right-unwatchedpages' => 'List von der unbeobachtete Seite oonsiehn',
+'right-mergehistory' => 'Versionsgeschichte von Seite vereine',
+'right-userrights' => 'Benutzerrechte beoorbeite',
+'right-userrights-interwiki' => 'Benutzerrechte in annre Wikis beoorbeite',
+'right-siteadmin' => 'Datebank sperre und entsperre',
+'right-override-export-depth' => 'Exportier Seite einschliesslich verlinkter Seite bis zu en Tief von 5',
+'right-sendemail' => 'E-Mails an annre Benutzer sende',
+'right-passwordreset' => 'Passwort von en Benutzer zurücksetze und die dazu verschickte E-Mail einsiehn',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Neioonmeldungs-Logbuch',
+'newuserlogpagetext' => 'Dies ist en Logbuch von der nei erstellte Benutzerkonte.',
+
+# User rights log
+'rightslog' => 'Rechte-Logbuch',
+'rightslogtext' => 'Das ist das Logbuch von der Ännrunge zu Benutzerrechte.',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-read' => 'die Seit zu lese',
+'action-edit' => 'die Seit zu beoorbeite',
+'action-createpage' => 'Seite zu erstelle',
+'action-createtalk' => 'Diskussionsseite erstelle',
+'action-createaccount' => 'der Benutzerkonto erstelle',
+'action-minoredit' => 'die Beoorbeitung als klen markiere',
+'action-move' => 'die Seit verschiebe',
+'action-move-subpages' => 'die Seit und zugehöriche Unnerseite verschiebe',
+'action-move-rootuserpages' => 'Haupt-Benutzerseite verschiebe',
+'action-movefile' => 'Die Datei verschiebe',
+'action-upload' => 'Dateie hochoode',
+'action-reupload' => 'die voarhandne Datei zu üwerschreibe',
+'action-reupload-shared' => 'die Datei aus dem gemeinsam genutzte Repositorium üwerschreibe',
+'action-upload_by_url' => 'Dateie von en Webadress (URL) hochloode',
+'action-writeapi' => 'die API mit Schreibzugriffe verwenne',
+'action-delete' => 'Seite abwische',
+'action-deleterevision' => 'Versione abwische',
+'action-deletedhistory' => 'die List von der abgewischte Versione siehn',
+'action-browsearchive' => 'noh abgewischte Seite suche',
+'action-undelete' => 'die Seit wiederhearstelle',
+'action-suppressrevision' => 'die versteckte Versio einsiehn und wiederhearstelle',
+'action-suppressionlog' => 'das privat Logbuch einsiehn',
+'action-block' => 'den Benutzer sperre',
+'action-protect' => 'den Schutzstatus von Seite ännre',
+'action-rollback' => 'die Ännrunge von der letzte Beoorbeiter von en bestimmter Seit schnell zurücksetze',
+'action-import' => 'Seite aus en andre Wiki importiere',
+'action-importupload' => 'Seite üwer das Hochloode von en Datei importiere',
+'action-patrol' => 'Beoorbeitunge von anne Benutzer wie kontrolliert markiere',
+'action-autopatrol' => 'eichne Beoorbeitunge wie kontrolliert markiere',
+'action-unwatchedpages' => 'die List von der unbeobachtete Seite insiehn',
+'action-mergehistory' => 'die Versionegeschichte von Seite vereine',
+'action-userrights' => 'Benutzerrechte ännre',
+'action-userrights-interwiki' => 'die Rechte von Benutzer in annre Wikis ännre',
+'action-siteadmin' => 'die Datebank sperre orrer frei mache',
+'action-sendemail' => 'E-Mails sende',
+'action-editmywatchlist' => 'dein Beobachtungslist beoorbeite',
+'action-viewmywatchlist' => 'dein Beobachtungslist oonsiehn',
+'action-viewmyprivateinfo' => 'deine private Informatione gucke',
+'action-editmyprivateinfo' => 'deine private Informatione boorbeite',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|Ännrung|Ännrunge}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|seit dem letzte Besuch}}',
+'enhancedrc-history' => 'Versionsgeschicht',
+'recentchanges' => 'Letzte Ändrunge',
+'recentchanges-legend' => 'Oonzeicheoptione',
+'recentchanges-summary' => 'Uff der Seit kannst du die letzte Ännrunge in dem Wiki nohverfolche.',
+'recentchanges-noresult' => 'Ken Ännrunge im Verloof von (während) vom dem oongebne Zeitraum entspreche die Kriterie.',
+'recentchanges-feed-description' => 'Verfolliche mit dem Feed die letzte Ännrunge in {{SITENAME}}.',
+'recentchanges-label-newpage' => 'Neie Seit',
+'recentchanges-label-minor' => 'Klen Ännrung',
+'recentchanges-label-bot' => 'Ännrung doorich en Bot',
+'recentchanges-label-unpatrolled' => 'Nicht-kontrollierte Ännrung',
+'recentchanges-label-plusminus' => 'Die Ännrung von der Seitengröss in Bytes',
+'recentchanges-legend-heading' => "'''Legende:'''",
+'recentchanges-legend-newpage' => '(sieh ooch die [[Special:NewPages|List von neier Seite]])',
+'rcnotefrom' => 'Oongezeicht sin die Ännrunge seit <strong>$2</strong> (max. <strong>$1</strong> Einträch).',
+'rclistfrom' => 'Nuar Ännrunge seit $3, $2 Uhr zeiche.',
+'rcshowhideminor' => 'Klene Ändrunge $1',
+'rcshowhideminor-show' => 'oonzeiche',
+'rcshowhideminor-hide' => 'versteck',
+'rcshowhidebots' => 'Bots $1',
+'rcshowhidebots-show' => 'Zeich',
+'rcshowhidebots-hide' => 'Versteck',
+'rcshowhideliu' => 'Registrierte Benutzer $1',
+'rcshowhideliu-show' => 'Zeich',
+'rcshowhideliu-hide' => 'Versteck',
+'rcshowhideanons' => 'Unoongemeldete Benutzer $1',
+'rcshowhideanons-show' => 'Zeich',
+'rcshowhideanons-hide' => 'Versteck',
+'rcshowhidepatr' => 'Kontrollierte Ännrunge $1',
+'rcshowhidepatr-show' => 'Zeich',
+'rcshowhidepatr-hide' => 'Versteck',
+'rcshowhidemine' => 'Eichne Beiträche $1',
+'rcshowhidemine-show' => 'Zeich',
+'rcshowhidemine-hide' => 'Versteck',
+'rclinks' => 'Zeich die letzte $1 Ännrunge von der letzte $2 Tooche.<br />$3',
+'diff' => 'Unnerschied',
+'hist' => 'Versione',
+'hide' => 'Versteck',
+'show' => 'Zeich',
+'minoreditletter' => 'K',
+'newpageletter' => 'N',
+'boteditletter' => 'B',
+'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|beobachtender|beobachtende}} Benutzer]',
+'rc_categories' => 'Nur Seite aus den Kategorie (getrennt mit „|“):',
+'rc_categories_any' => 'Alle',
+'rc-change-size-new' => '$1 {{PLURAL:$1|Byte|Bytes}} noh der Ännrung',
+'newsectionsummary' => 'Neier Abschnitt /* $1 */',
+'rc-enhanced-expand' => 'Einzelheite oonzeiche',
+'rc-enhanced-hide' => 'Einzelheite verstecke',
+'rc-old-title' => 'uarsprünglich erstellt wie "$1"',
+
+# Recent changes linked
+'recentchangeslinked' => 'Ändrungen an verlinkte Seite',
+'recentchangeslinked-feed' => 'Ännrunge an verlinkte Seite',
+'recentchangeslinked-toolbox' => 'Ändrungen an verlinkte Seite',
+'recentchangeslinked-title' => 'Ännrungen an Seite, die von „$1“ verlinkt sind',
+'recentchangeslinked-summary' => "Die Spezialseit listet die letzte Ändrunge an den verlinkte Seite uff (bzw. bei Kategorie an den Mitglieder von der Kategorie). Seite uff deiner [[Special:Watchlist|Beobachtungslist]] sind '''fett''' dorgestellt.",
+'recentchangeslinked-page' => 'Seit:',
+'recentchangeslinked-to' => 'Zeich Ännrunge uff Seite, wo hierher verlinke',
+
+# Upload
+'upload' => 'Dateie hochloode',
+'uploadbtn' => 'Dateie hochloode',
+'reuploaddesc' => 'Abbreche und zurück zur Hochloode-Seit',
+'upload-tryagain' => 'Geännerte Dateibeschreibung abschicke',
+'uploadnologin' => 'Net oongemeldt',
+'uploadnologintext' => 'Du musst dich $1, um Dateie hochloode könne.',
+'upload_directory_missing' => 'Das Upload-Verzeichnis ($1) fehlt und konnt doorrich den Webserver ooch net erstellt sin.',
+'upload_directory_read_only' => 'Der Webserver hot keh Schreibrechte für das Upload-Verzeichnis ($1).',
+'uploaderror' => 'Fehler beim Hochloode',
+'upload-recreate-warning' => "'''Achtung: En Datei mit dem Noome woard schon abgewischt orrer verschob.'''
+
+Es folcht en Auszuch aus dem Abwäsch- und Verschiebungs-Logbuch von er Datei.",
+'uploadtext' => "Benutz das Formular, für neie Dateie hochloode.
+
+Geh zu der [[Special:FileList|List hochgeloodner Dateie]], um voarhandne Dateie zu suche und oonzeiche. Sieh ooch das [[Special:Log/upload|Datei-]] und [[Special:Log/delete|Abwäsch-Logbuch]].
+
+Um en '''Bild''' in en Seit zu verwenne, nutz en Link in der follichend Form:
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Datei.jpg]]</nowiki></code>''' – für en Vollbild
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Datei.png|200px|thumb|left|Alternativer Text]]</nowiki></code>''' – für en 200px breites Bild innerhalleb von en Box, mit „Alternativer Text“ als Bildbeschreibung
+* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Datei.ogg]]</nowiki></code>''' – für en direkt Link uff die Datei, ohne Darstellung von der Datei",
+'upload-permitted' => 'Erlaubt Dateitype: $1.',
+'upload-preferred' => 'Bevoarzuchte Dateitype: $1.',
+'upload-prohibited' => 'Net erlaubte Dateitype: $1.',
+'uploadlog' => 'Datei-Logbuch',
+'uploadlogpage' => 'Datei-Logbuch',
+'uploadlogpagetext' => 'Das ist das Logbuch von der hochgeladne Dateie, sieh ooch die [[Special:NewFiles|Galerie von neier Dateie]] für en visuell Üwerblick.',
+'filename' => 'Dateinoome',
+'filedesc' => 'Beschreibung',
+'fileuploadsummary' => 'Beschreibung/Quell:',
+'filereuploadsummary' => 'Dateiännrunge:',
+'filestatus' => 'Copyright-Status:',
+'filesource' => 'Quell:',
+'uploadedfiles' => 'Hochloode',
+'ignorewarning' => 'Warnung ignoriere und Datei speichre',
+'ignorewarnings' => 'Warnunge ignoriere',
+'minlength1' => 'Dateinoome müsse mindestens en Buchstoob lang sin.',
+'illegalfilename' => 'Der Dateinoome "$1" enthält minschtens en net erlaubtes Zeiche. Bittschön benenn die Datei um und versuch, se wieder erneit hochloode.',
+'filename-toolong' => 'Dateinoome deerfe net grösser wie 240 Bytes sin.',
+'badfilename' => 'Der Dateinoome woard in "$1" geännert.',
+'filetype-mime-mismatch' => 'Dateierweitrung ".$1" stimmt net mit dem MIME-Typ ($2) üwerein.',
+'filetype-badmime' => 'Dateie mit dem MIME-Typ "$1" deerfe net hochgeloode sin.',
+'filetype-bad-ie-mime' => 'Die Datei kann net hochgelood sin, weil der Internet Explorer se wie "$1" erkennt, wo en net erlaubter potentiell gefährlicher Dateityp ist.',
+'filetype-unwanted-type' => "'''\".\$1\"''' ist en unerwünschtes Dateiformat. Erlaubt {{PLURAL:\$3|ist das Dateiformat|sind die Dateiformate}}: \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|ist en net erlaubter Dateityp|sind net erlaubte Dateitype}}.
+{{PLURAL:$3|Erlaubter Dateityp ist|Erlaubte Dateitype sind}} $2.',
+'filetype-missing' => 'Die hochzuloodende Datei hot ken Erweitrung (z. B. ".jpg").',
+'empty-file' => 'Die von dir üwertraoohte Datei hot ken Inhalt.',
+'file-too-large' => 'Die hochgeloodne Datei woor zu gross.',
+'filename-tooshort' => 'Der Dateinoome ist zu koorz.',
+'filetype-banned' => 'Die Dateiendung ist gesperrt.',
+'verification-error' => 'Die Datei hot die Dateiprüfung net bestand.',
+'hookaborted' => 'Der Versuch, die Änrung doorrichzuführe, woard von en Parsererweitrung abgebroch.',
+'illegal-filename' => 'Der Dateinoome ist net zulässich.',
+'overwrite' => 'Das Üwerschreibe von en schon voarhandne Datei ist net erlaubt.',
+'unknown-error' => 'En unbekannter Fehler ist uffgetret.',
+'tmp-create-error' => 'Temporäre Datei konnte net erstellt sin',
+'tmp-write-error' => 'Fehler beim Schreibe von der temporäre Datei',
+'large-file' => 'Die Dateigröss sollt noh Möchlichkeit $1 net üwerschreite. Die Datei ist $2 gross.',
+'largefileserver' => 'Die Datei ist grösser wie die vom Server eingestellte Maximalgröss.',
+'emptyfile' => 'Die hochgeloodene Datei ist leer. Der Grund kann en Tippfehler (verkeahrt geschrieb) im Dateinoome sin. Bitte kontrollier, ob du die Datei weerklich hochloode willst.',
+'windows-nonascii-filename' => 'Das Wiki unnerstützt ken Dateinoome, wo Sonderzeich enthalte.',
+'fileexists' => 'So en Noome Datei is schon voarhand do. Bittschön prüf <strong>[[:$1]]</strong>, soweit wie du dir net sicher bist, obs du se ännre möchst.
+[[$1|thumb]]',
+'filepageexists' => 'En Beschreibungsseit woard bereits wie <strong>[[:$1]]</strong> erstellt, das ist awer ken Datei mit dem Noome voarhand.
+Die ingegebne Beschreibung weard net uff die Beschreibungsseit üwernomm.
+Die Beschreibungsseit musst du noh dem Hochloode von der Datei noch manuell beoorbeite.
+[[$1|thumb]]',
+'fileexists-extension' => 'En Datei mit en ähnlich Noome ist schon voarhand: [[$2|thumb]]
+* Noome von der hochzuloodenden Datei: <strong>[[:$1]]</strong>
+* Noome von der schon voarhandnen Datei: <strong>[[:$2]]</strong>
+Bittschön wähl en anre Noome.',
+'fileexists-thumbnail-yes' => "Bei der Datei scheint das sich um en Bild verringerter Gröss ''(Miniatur)'' zu handle. [[$1|thumb]]
+Bittschön prüf die Datei <strong>[[:$1]]</strong>.
+Wenn es sich um das Bild in Originalgröss handelt, so braucht ken separates Voarschaubild hochgelood sin.",
+'file-thumbnail-no' => "Der Dateinoome beginnt mit <strong>$1</strong>. Das deitet auf en Bild von verringerter Gröss ''(Minitatur)'' hin.
+Bittschön prüf, obs du das Bild in voller Auflösung voarliehen host und lood das unner dem Originalnoome hoch.",
+'fileexists-forbidden' => 'Unner dem Nome existiert schon en Datei und die kann net üwerschrieb sin. Bittschön geh zurück und lood die Datei unner en annre Noome hoch. [[File:$1|thumb|center|$1]]',
+'fileexists-shared-forbidden' => 'Unner dem Noome existiert schon en Datei im zentral Medienarchiv.
+Wenns du die Datei trotzdem hochloode möchst, geh bittschön zurück und änner den Noome.
+[[File:$1|thumb|center|$1]]',
+'file-exists-duplicate' => 'Die Datei ist en Duplikat von der follichende {{PLURAL:$1|Datei|$1 Dateie}}:',
+'file-deleted-duplicate' => 'En mit der identische Datei ([[:$1]]) woard früher abgewischt. Sieh das Abwäsch-Logbuch ein, bevoar du die hochloode tust.',
+'file-deleted-duplicate-notitle' => 'En identische Datei woard kürzlich abgewischt und der Titel woard unnerdrückt.
+Du sollst jemand froche, wo die Möchlichkeit hot, die unnerdrückte Dateidate oonzusiehn, um die Situation voar dem erneite Hochlood zu üwerprüfe.',
+'uploadwarning' => 'Hochloodewarnung',
+'uploadwarning-text' => 'Bittschön änner unner die Dateibeschreibung und versuch das nochmo erneit.',
+'savefile' => 'Datei speichre',
+'uploadedimage' => 'lud „[[$1]]“ hoch',
+'overwroteimage' => 'Hot en nei Version von "[[$1]]" hochgelood',
+'uploaddisabled' => 'Hochloode deaktiviert',
+'copyuploaddisabled' => 'Das Hochloode von URLs ist deaktiviert',
+'uploadfromurl-queued' => 'Dein Hochloode (Upload) befindt sich jetzt in der Woorteschlang.',
+'uploaddisabledtext' => 'Das Hochloode von Dateie ist deaktiviert.',
+'php-uploaddisabledtext' => 'Das Hochloode von Dateie woard in PHP deaktiviert.
+Bittschön üwerprüf die <code>file_uploads</code>-Einstellung.',
+'uploadscripted' => 'Die Datei enthält HTML- orrer Scriptcode, wo irrtümlich von enem Webbrowser ausgeführt werre könnt.',
+'uploadscriptednamespace' => 'Die SVG-Datei enthält den ungültiche Noomeraum „$1“.',
+'uploadinvalidxml' => 'Das XML in der hochgeladne Datei konnt net geparst werre.',
+'uploadvirus' => 'Die Datei enthält en Virus! Details: $1',
+'uploadjava' => 'Dies ist ein ZIP-Datei, wo en CLASS-Datei von Java enthält.
+Das Hochloode von Java-Dateie ist net gestattet, weil sie die Umgehung von Sicherheitseinschränkunge ermöchliche könnte.',
+'upload-source' => 'Quelldatei',
+'sourcefilename' => 'Quelldatei:',
+'sourceurl' => 'Quell-URL:',
+'destfilename' => 'Zielnoome:',
+'upload-maxfilesize' => 'Maximal Dateigröss: $1',
+'upload-description' => 'Dateibeschreibung',
+'upload-options' => 'Hochloodeoptione',
+'watchthisupload' => 'Die Datei beobacht',
+'filewasdeleted' => 'En Datei mit dem Noome woard schon emol hochgelood und zwischichzeitlich wieder abgewischt. Bittschön prüf zuearst den Eintrooch im $1, bevoar du die Datei weerklich speichre tust.',
+'filename-bad-prefix' => "Der Dateinoome beginnt mit '''\"\$1\"'''. Das ist im allgemein der von en Digitalkamera voargebne Dateinoome und doher net seahr aussoognkräftig.
+Bittschön geb der Datei en Noome, wo den Inhalt besser beschreibt.",
+'upload-success-subj' => 'Erfollichreich hochgelood',
+'upload-success-msg' => 'Das Hochloode von [$2] woor erfollichreich. Die ist hier verfüchbar: [[:{{ns:file}}:$1]]',
+'upload-failure-subj' => 'Hochloodfehler',
+'upload-failure-msg' => 'Do hot es en Problem geb - mit deiner hochgeloodne Datei von [$2]:
+
+$1',
+'upload-warning-subj' => 'Hochloodewarnung',
+'upload-warning-msg' => 'Do woor en Problem beim Hochloode von [$2]. Bittschön zum [[Special:Upload/stash/$1|Hochloodformular]] zurückkehre, um das Problem zu behebe.',
+
+'upload-proto-error' => 'Falsches Protokoll',
+'upload-proto-error-text' => 'Die URL muss mit <code>http://</code> orrer <code>ftp://</code> beginne.',
+'upload-file-error' => 'Interner Fehler',
+'upload-file-error-text' => 'Bei der Erstellung en temporäre Datei uff dem Server ist en interner Fehler uffgetret.
+Bittschön informier en [[Special:ListUsers/sysop|Administratoar]].',
+'upload-misc-error' => 'Unbekannter Fehler beim Hochloode',
+'upload-misc-error-text' => 'Beim Hochloode ist en unbekannter Fehler uffgetret.
+Prüf die URL uff Fehler, den Online-Status von der Seite und versuch das wieder erneit.
+Wenn das Problem weiter besteht, informier en [[Special:ListUsers/sysop|Administratoar]].',
+'upload-too-many-redirects' => 'Die URL beinhaltete zu viele Weiterleitunge',
+'upload-unknown-size' => 'Unbekannte Gröss',
+'upload-http-error' => 'En HTTP-Fehler ist uffgetret: $1',
+'upload-copy-upload-invalid-domain' => 'Als Kopie hochloodbare Dateie sind üwer die Domain net verfüchbar.',
+
+# File backend
+'backend-fail-stream' => 'Die Datei $1 konnt net üwertrooht sin.',
+'backend-fail-backup' => 'Die Datei $1 konnt net gesichert sin.',
+'backend-fail-notexists' => 'Die Datei $1 ist net voarhand.',
+'backend-fail-hashes' => 'Die Strohwearte von der Datei könnte net zum Vergleich abgeruf sin.',
+'backend-fail-notsame' => 'Es ist schon en Datei $1 voarhand, wo net identisch ist.',
+'backend-fail-invalidpath' => '$1 ist ken gülticher Pad zum Speichre.',
+'backend-fail-delete' => 'Die Datei $1 konnt net abgewischt sin.',
+'backend-fail-describe' => 'Die Metadate für die Datei "$1" konnte net geännert sin.',
+'backend-fail-alreadyexists' => 'Die Seit $1 ist schon voarhand',
+'backend-fail-store' => 'Die Datei $1 konnt net unner $2 gespeichert sin.',
+'backend-fail-copy' => 'Die Datei $1 konnt net noh $2 kopiert sin.',
+'backend-fail-move' => 'Die Datei $1 konnt net noh $2 verschob sin.',
+'backend-fail-opentemp' => 'Die temporäer Datei konnt nrt geöffnet sin.',
+'backend-fail-writetemp' => 'Die temporäer Datei konnt net geschrieb sin.',
+'backend-fail-closetemp' => 'Die temporäer Datei konnt net geschloss sin.',
+'backend-fail-read' => 'Die Datei $1 konnt net geles sin.',
+'backend-fail-create' => 'Die Datei $1 konnt net gespeichert sin.',
+'backend-fail-maxsize' => 'Die Datei $1 konnt net gespeichert sin, weil die grösser wie {{PLURAL:$2|en Byte|$2 Bytes}} ist.',
+'backend-fail-readonly' => 'Das Speicher-Backend "$1" befindt sich derzeit im Lesemodus. Der oongebne Grund lautet: "$2"',
+'backend-fail-synced' => 'Die Datei "$1" befindt sich, innerhalb von der interne Speicher-Backend, in enem inkonsistente Zustand.',
+'backend-fail-connect' => 'Do konnt ken Verbinung zum Speicher-Backend "$1" heargestellt sin.',
+'backend-fail-internal' => 'Im Speicher-Backend "$1" ist en unbekannter Fehler uffgetret.',
+'backend-fail-contenttype' => 'Der Inhaltstyp, der im Pad "$1" zu speichernd Datei, konnt net bestimmt sin.',
+'backend-fail-batchsize' => 'En Stapelveroorbeitungsdatei, die {{PLURAL:$1|en Operation|$1 Operatione}} enthält, woard an das Speicher-Backend geschickt. Die Begrenzung lieht allerdings bei {{PLURAL:$2|en Operation|$2 Operatione}}.',
+'backend-fail-usable' => 'Die Datei "$1" konnt entweder uffgrund von en net voarhand Verzeichnisse orrer weche unzureichender Berechtichunge weder abgeruf noch gespeichert sin.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'Do könnt kein Verbinung zur Journaldatebank con das Speicher-Backend "$1" heargestellt sin.',
+'filejournal-fail-dbquery' => 'Die Journaldatebank von de Speicher-Backend "$1" könnt net aktualisiert sin.',
+
+# Lock manager
+'lockmanager-notlocked' => '"$1" könnt net entsperrt (befreit) sin, wil ken Sperrung existier/besteht.',
+'lockmanager-fail-closelock' => 'Die Sperrdatei für "$1" konnt net geschloss sin.',
+'lockmanager-fail-deletelock' => 'Die Datei "$1" konnt net gelöscht sin.',
+'lockmanager-fail-acquirelock' => 'Die Sperr für "$1" konnt net abgeruf sin.',
+'lockmanager-fail-openlock' => 'Die Sperrdatei für "$1" konnt net geschloss sin.',
+'lockmanager-fail-releaselock' => 'Die Sperr für "$1" konnt net freigemacht sin.',
+'lockmanager-fail-db-bucket' => 'Es konnte mit Sammelabruf $1 ken ausreichend Oonzoohl an Verbinnunge zu Sperrdatebanke heargestellt sin.',
+'lockmanager-fail-db-release' => 'Die Sperre uff Datebank $1 konnte net freigeb (gemach) sin.',
+'lockmanager-fail-svr-acquire' => 'Die Sperre uff Server $1 konnte net abgeruf sin.',
+'lockmanager-fail-svr-release' => 'Die Sperre uff Server $1 konnte net freigeb (gemach) sin.',
+
+# ZipDirectoryReader
+'zip-file-open-error' => 'Do ist en Fehler beim Öffne von der Datei zur ZIP-Üwerprüfung uffgetret (passiert).',
+'zip-wrong-format' => 'Die oongebne Datei ist ken ZIP-Datei.',
+'zip-bad' => 'Die Datei ist beschädigt orrer en aus annerweitiche Gründe net lesbare ZIP-Datei.
+Sie kann do drum ken ordnungsgemäss Sicherheitsüwerprüfung unnerzoh sin.',
+'zip-unsupported' => 'Die ZIP-Datei verfücht üwer Komprimierungseichenschafte, wo net von MediaWiki unnersteetzt sin.
+Sie kann dodrum ken ordnungsgemäss Sicherheitsüwerprüfung unnerzoh sin.',
+
+# Special:UploadStash
+'uploadstash' => 'Vorabspeichrung beim Hochloode',
+'uploadstash-summary' => 'Die Seit ermöchlicht den Zugriff uff Dateie, wo hochgelood worre, bzw. grood hochgelood werre, awer noch net uff dem Wiki publiziert worre. Die Dateie sind ausschliesslich für den hochloodende Benutzer sichtbar.',
+'uploadstash-clear' => 'Die voarab gespeicherte Dateie entferne',
+'uploadstash-nofiles' => 'Do sind ken voarab gespeicherte Dateie voarhand.',
+'uploadstash-badtoken' => 'Das Entferne der voarab gespeicherte Dateie woor erfollichlos, vielleicht weil deine Sitzungsdate abgeloof sind. Bittschön versuch das nochmo erneit.',
+'uploadstash-errclear' => 'Das Entferne der voarab gespeicherte Dateie woo erfollichlos.',
+'uploadstash-refresh' => 'List von der Dateie aktualisiere',
+'invalid-chunk-offset' => 'Ungülticher Startpunkt',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Zugriff verweichert',
+'img-auth-nopathinfo' => 'Die Oongäb PATH_INFO fehlt.
+Der Server ist net dafoar ingerichtet, die Information weiterzugebe.
+Sie könnt CGI-gestützt sin und kann dodrum "img_auth" (Authentifizierung von dem Dateiuffruf) net unnerstütze.
+Sieh ooch https://www.mediawiki.org/wiki/Manual:Image_Authorization (englisch).',
+'img-auth-notindir' => 'Der gewünschte Paad ist net im konfigurierte Uploadverzeichnis.',
+'img-auth-badtitle' => 'Aus "$1" kann ken gülticher Titel erstellt sin.',
+'img-auth-nologinnWL' => 'Du bist net oongemeldt und "$1" ist net in der weiss List.',
+'img-auth-nofile' => 'Datei "$1" existiert net.',
+'img-auth-isdir' => 'Du versuchst, uff en Verzeichnis "$1" zuzugreife.
+Nuar Dateizugriff ist erlaubt.',
+'img-auth-streaming' => 'Loode "$1".',
+'img-auth-public' => 'img_auth.php gibt Dateie von enem private Wiki aus.
+Dieses Wiki woard wie en öffentliches Wiki konfiguriert.
+Aus Sicherheitsgründe ist img_auth.php deaktiviert.',
+'img-auth-noread' => 'Benutzer hot keh Berechtichung, "$1" se lese.',
+'img-auth-bad-query-string' => 'Die URL weist en ungültiche Abfragezeichefolliche uff.',
+
+# HTTP errors
+'http-invalid-url' => 'Ungültiche URL: $1',
+'http-invalid-scheme' => 'URLs mit dem Schema "$1" werre net unnerstützt',
+'http-request-error' => 'Fehler beim Oonfrch schicke.',
+'http-read-error' => 'HTTP-Lesefehler.',
+'http-timed-out' => 'Zeitüwerschreitung bei der HTTP-Oofroch.',
+'http-curl-error' => 'Fehler beim Abruf von der URL: $1',
+'http-bad-status' => 'Während, im verloof von der HTTP-Oonfroch ist en Fehler uffgetret (passiert): $1 $2',
+
+# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
+'upload-curl-error6' => 'URL ist net erreichbar',
+'upload-curl-error6-text' => 'Die oongebne URL ist net erreichbar. Prüf sowohl die URL uff Fehler als ooch den Online-Status von der Seit',
+'upload-curl-error28' => 'Zeitüwerschreitung beim Hochloode',
+'upload-curl-error28-text' => 'Die Seit braucht zu lang für se antworte. Prüf, ob die Seit online ist, woort en koorz Moment und versuch es dann wieder erneit. Es kann sinnvoll sin, das zu enem andre Zeitpunkt ernet zu versuche.',
+
+'license' => 'Lizenz:',
+'license-header' => 'Lizenz',
+'nolicense' => 'Ken Voarauswahl',
+'license-nopreview' => '(do ist ken Voarschau verfüchbar)',
+'upload_source_url' => ' (gültiche, öffentlich zugängliche URL)',
+'upload_source_file' => ' (en Datei uff deinem Komputadoar)',
+
+# Special:ListFiles
+'listfiles-summary' => 'Die Spezialseit listiert alle hochuffgeloodne Dateie',
+'listfiles_search_for' => 'Such noh Datei:',
+'imgfile' => 'Datei',
+'listfiles' => 'Dateilist',
+'listfiles_thumb' => 'Voarschaubild',
+'listfiles_date' => 'Datum',
+'listfiles_name' => 'Noome',
+'listfiles_user' => 'Benutzer',
+'listfiles_size' => 'Gröss',
+'listfiles_description' => 'Beschreibung',
+'listfiles_count' => 'Versione',
+'listfiles-show-all' => 'Alte Bildversione einschliesse',
+'listfiles-latestversion' => 'Aktuelle Version',
+'listfiles-latestversion-yes' => 'Jo',
+'listfiles-latestversion-no' => 'Nee',
+
+# File description page
+'file-anchor-link' => 'Datei',
+'filehist' => 'Dateiversione',
+'filehist-help' => 'Klick uff en Zeitpunkt, um die Version zu loode.',
+'filehist-deleteall' => 'Alle Versione abwische',
+'filehist-deleteone' => 'Die Version abwische',
+'filehist-revert' => 'zurücksetze',
+'filehist-current' => 'aktuell',
+'filehist-datetime' => 'Version vom',
+'filehist-thumb' => 'Voarschaubild',
+'filehist-thumbtext' => 'Vorschaubild von der Version vom $2, $3 Uhr',
+'filehist-nothumb' => 'Ken Voarschaubild voarhand',
+'filehist-user' => 'Benutzer',
+'filehist-dimensions' => 'Moss',
+'filehist-filesize' => 'Dateigröss',
+'filehist-comment' => 'Kommentar',
+'filehist-missing' => 'Datei fehlt',
+'imagelinks' => 'Dateiverwennung',
+'linkstoimage' => 'Die {{PLURAL:$1|folliche Seit verwenndt|folliche $1 Seite verwenne}} die Datei:',
+'linkstoimage-more' => 'Meahr als {{PLURAL:$1|en Seit verlinkt|$1 Seite verlinke}} uff dies= Datei.
+Die folliche List zeicht nuar {{PLURAL:$1|den ersten Link|die earschte $1 Links}} uff die Datei.
+En [[Special:WhatLinksHere/$2|vollständiche List]] ist verfüchbar.',
+'nolinkstoimage' => 'Ken Seit benutzt die Datei.',
+'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Weitre Links]] uff die Datei.',
+'linkstoimage-redirect' => '$1 (Dateiweiterleitung) $2',
+'duplicatesoffile' => 'Die {{PLURAL:$1|follichend Datei ist en Duplikat|follichende $1 Dateie sind Duplikate}} von der Datei ([[Special:FileDuplicateSearch/$2|weitre Detalhes]]):',
+'sharedupload' => 'Die Datei stammt aus $1 und därreft von annre Projekte verwendt sin.',
+'sharedupload-desc-there' => 'Die Datei stammt aus $1 und därref von annre Projekte verwendt sinn. Sieh uff der [$2 Dateibeschreibungsseit] noh weitre Informatione.',
+'sharedupload-desc-here' => 'Die Datei stammt aus $1 und kann von annre Projekte verwennet sin. Die Beschreibung von dene [$2 Dateibeschreibungsseit] weard unne oongezeicht.',
+'filepage-nofile' => 'Do gebts ken Datei mit dem Noome voarhand.',
+'filepage-nofile-link' => 'Do gebts ken Datei mit dem Noome voarhand. Du kannst jedoch [$1 die Datei hochloode].',
+'uploadnewversion-linktext' => 'En neie Version von der Datei hochloode',
+'shared-repo-from' => 'aus $1',
+'shared-repo' => 'en gemeinsam benutzte Medienarchiv',
+'upload-disallowed-here' => 'Du kannst die Datei net üwerschreibe.',
+
+# File reversion
+'filerevert' => 'Zurücksetze von „$1“',
+'filerevert-legend' => 'Datei zurücksetze',
+'filerevert-intro' => "Du setzt die Datei '''[[Media:$1|$1]]''' uff die [$4 Version vom $2, $3 Uhr] zurück.",
+'filerevert-comment' => 'Grund:',
+'filerevert-defaultcomment' => 'Zurückgesetzt uff die Version vom $1, $2 Uhr',
+'filerevert-submit' => 'Zurücksetze',
+'filerevert-success' => "'''[[Media:$1|$1]]''' woard uff die [$4 Version vom $2, $3 Uhr] zurückgesetzt.",
+'filerevert-badversion' => 'Do gebts ken Version von der Datei zu dem oongebne Zeitpunkt.',
+
+# File deletion
+'filedelete' => 'Abwisch $1',
+'filedelete-legend' => 'Abwisch Datei',
+'filedelete-intro' => "Du abwischst die Datei '''\"[[Media:\$1|\$1]]\"''' inklusive ehrer Versionsgeschicht.",
+'filedelete-intro-old' => 'Du abwischst von der Datei \'\'\'"[[Media:$1|$1]]"\'\'\' die [$4 Version vom $2, $3 Uhr].',
+'filedelete-comment' => 'Grund:',
+'filedelete-submit' => 'Abwische',
+'filedelete-success' => "'''\"\$1\"''' woard abgewischt.",
+'filedelete-success-old' => 'Von der Datei \'\'\'"[[Media:$1|$1]]"\'\'\' woard die Version vom $2, $3 Uhr abgewischt.',
+'filedelete-nofile' => "'''\"\$1'''' ist net voarhand.",
+'filedelete-nofile-old' => "Do gebts von '''\"\$1\"''' ken archiviert Version mit den oongebne Attribute.",
+'filedelete-otherreason' => 'Annrer/ergänzender Grund:',
+'filedelete-reason-otherlist' => 'Annrer Grund',
+'filedelete-reason-dropdown' => '* Allgemeine Abwischgründe
+** Uarheberrechtsverletzung
+** Duplikat',
+'filedelete-edit-reasonlist' => 'Abwischgründe beoorbeite',
+'filedelete-maintenance' => 'Das Abwische und Wiederhearstelle von Dateie ist uffgrund von Woortungsoorbeite voarüwergehnd deaktiviert.',
+'filedelete-maintenance-title' => 'Die Datei kann net abgewischt sin.',
+
+# MIME search
+'mimesearch' => 'Such noh MIME-Typ',
+'mimetype' => 'MIME-Typ:',
+'download' => 'Herunnerloode',
+
+# Unwatched pages
+'unwatchedpages' => 'Net beobachtete Seite',
+
+# List redirects
+'listredirects' => 'Weiterleitunge',
+
+# List duplicated files special page
+'listduplicatedfiles' => 'List von der Dateie mit Duplikate',
+
+# Unused templates
+'unusedtemplates' => 'Unbenutzte Vorlooche',
+'unusedtemplateswlh' => 'Annre Links',
+
+# Random page
+'randompage' => 'Zufälliche Seite',
+
+# Random page in category
+'randomincategory' => 'Zufälliche Seit von en Kategorie',
+'randomincategory-invalidcategory' => '"$1" ist ken gülticher Kategorieenoome.',
+'randomincategory-nopages' => 'Es gebt kene Seite in [[:Category:$1]].',
+'randomincategory-selectcategory' => 'Zufälliche Seit aus der Kategorie: $1 $2',
+'randomincategory-selectcategory-submit' => 'Geh, los',
+
+# Random redirect
+'randomredirect' => 'Zufällich Weiterleitung',
+'randomredirect-nopages' => 'Im Noomeraum „$1“ sind ken Weiterleitunge voarhand.',
+
+# Statistics
+'statistics' => 'Statistik',
+'statistics-header-pages' => 'Seitestatistik',
+'statistics-header-edits' => 'Bearbeitungsstatistik',
+'statistics-header-views' => 'Seitenuffrufstatistik',
+'statistics-header-users' => 'Benutzerstatistik',
+'statistics-header-hooks' => 'Annre Statistike',
+'statistics-articles' => 'Inhaltsseite',
+'statistics-pages' => 'Seite',
+'statistics-pages-desc' => 'Alle Seite in dem Wiki, inklusive Diskussionsseite, Weiterleitunge und so weiter',
+'statistics-files' => 'Hochgeloodne Dateie',
+'statistics-edits' => 'Seitebeoorbeitunge',
+'statistics-edits-average' => 'Beoorbeitunge pro Seit im Doorrichschnitt',
+'statistics-views-total' => 'Seitenuffrufe gesamt',
+'statistics-views-peredit' => 'Jede Beoorbeitung ehre Seiteuffrufe',
+'statistics-users' => 'Registrierte [[Special:ListUsers|Benutzer]]',
+'statistics-users-active' => 'Aktive Benutzer',
+'statistics-users-active-desc' => 'Benutzer mit Beoorbeitunge {{PLURAL:$1|während (im verloof von) der letzte 24 Stunde|während (im verloof von) der vergangne $1 Tooche}}',
+'statistics-mostpopular' => 'Meistbesuchte Seite',
+
+'pageswithprop' => 'Seite mit en Seiteneichenschaft',
+'pageswithprop-legend' => 'Seite mit en Seiteeichenschaft',
+'pageswithprop-text' => 'Die Spezialseit tut Seite ufflistiere, wo en bestimmte Seiteeichenschaft verwenne.',
+'pageswithprop-prop' => 'Eichenschaftsnoome:',
+'pageswithprop-submit' => 'Geh, los',
+'pageswithprop-prophidden-long' => 'Langtexteichenschaftsweart versteckt ($1)',
+'pageswithprop-prophidden-binary' => 'Binäreichenschaftsweart versteckt ($1)',
+
+'doubleredirects' => 'Doppelte Weiterleitunge',
+'double-redirect-fixer' => 'RedirectBot',
+
+'brokenredirects' => 'Defekte Weiterleitunge',
+'brokenredirectstext' => 'Die Spezialseit listiert Weiterleitung uff net existierende Seite uff.',
+'brokenredirects-edit' => 'Beoorbeite',
+'brokenredirects-delete' => 'abwische',
+
+'withoutinterwiki' => 'Net zu annre Sproche verlinkende Seite',
+'withoutinterwiki-summary' => 'Die follichende Seite verlinke net uff annre Sprochversione.',
+'withoutinterwiki-legend' => 'Präfix',
+'withoutinterwiki-submit' => 'Zeich',
+
+'fewestrevisions' => 'Seite mit den wenichste Versione',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|Byte|Bytes}}',
+'ncategories' => '$1 {{PLURAL:$1|Kategorie|Kategoriee}}',
+'ninterwikis' => '{{PLURAL:$1|En Interwikilink|$1 Interwikilinks}}',
+'nlinks' => '{{PLURAL:$1|1 Link|$1 Links}}',
+'nmembers' => '{{PLURAL:$1|1 Eintrooch|$1 Einträche}}',
+'nmemberschanged' => '$1 → {{PLURAL:$2|En Mitglied|$2 Mitglieder}}',
+'nrevisions' => '{{PLURAL:$1|1 Beoorbeitung|$1 Beoorbeitunge}}',
+'nviews' => '{{PLURAL:$1|1 Abfroch|$1 Abfroche}}',
+'nimagelinks' => 'Verwendt uff {{PLURAL:$1|en Seit|$1 Seite}}',
+'ntransclusions' => 'Verwendt uff {{PLURAL:$1|en Seit|$1 Seite}}',
+'specialpage-empty' => 'Do sind aktuell ken zutreffende Einträche voarhand.',
+'lonelypages' => 'Verwaist Seite',
+'lonelypagestext' => 'Die follichenden Seite werre net eingebund orrer das weard net uff sie in {{SITENAME}} verwies.',
+'uncategorizedpages' => 'Net kategorisierte Seite',
+'uncategorizedcategories' => 'Net kategorisierte Kategorie',
+'uncategorizedimages' => 'Net kategorisierte Dateie',
+'uncategorizedtemplates' => 'Net kategorisierte Vorlage',
+'unusedcategories' => 'Verwaiste Kategorie',
+'unusedimages' => 'Verwaiste Dateie',
+'popularpages' => 'Beliebteste Seite',
+'wantedcategories' => 'Gewünschte Kategorie',
+'wantedpages' => 'Gewünschte Seite',
+'wantedpages-badtitle' => 'Ungülticher Titel im Ergebnis: $1',
+'wantedfiles' => 'Gewünschte Dateie',
+'wantedfiletext-cat' => 'Die follichende Dateie werre verwendt, sind jedoch net voarhand. Voarhandne Dateie aus fremde Repositorie könne dennoch hier uffgelistet sin und werre <del>doorrichgestrich</del> für se siehn dogestellt. Zusätzlich werre Seite, wo net voarhandne Dateie enthalle, in die [[:$1]] eingeordnet.',
+'wantedfiletext-nocat' => 'Die follichende Dateie werre verwendt, sind jedoch net voarhand. Voarhandne Dateie aus fremde Repositorie könne dennoch hier uffgelistet sin und werre <del>doorrichgestrich</del> dargestellt.',
+'wantedtemplates' => 'Gewünschte Voarlooche',
+'mostlinked' => 'Seite mit den meiste Links',
+'mostlinkedcategories' => 'Meistbenutzte Kategorie',
+'mostlinkedtemplates' => 'Meistbenutzte Voarlooche',
+'mostcategories' => 'Seiten mit den meiste Kategorie',
+'mostimages' => 'Meistbenutzte Dateie',
+'mostinterwikis' => 'Seite mit den meiste Interwikilinks',
+'mostrevisions' => 'Seite mit den meiste Versione',
+'prefixindex' => 'All Seite (mit Präfix)',
+'prefixindex-namespace' => 'Alle Seite mit Präfix (Nameraum $1)',
+'prefixindex-strip' => 'Präfix in der Liste abschneide',
+'shortpages' => 'Koorze Seite',
+'longpages' => 'Lange Seite',
+'deadendpages' => 'Net verlinkende Seite',
+'deadendpagestext' => 'Die follichende Seite verweise net uff annre Seite von {{SITENAME}}.',
+'protectedpages' => 'Geschützte Seite',
+'protectedpages-indef' => 'Nuar unbeschränkt geschützte Seite zeiche',
+'protectedpages-cascade' => 'Nuar Seite mit Kaskadeschutz',
+'protectedpages-noredirect' => 'Weiterleitunge ausblende',
+'protectedpagesempty' => 'Aktuell sind ken Seite mit den Parameter geschützt.',
+'protectedpages-timestamp' => 'Zeitstempel',
+'protectedpages-page' => 'Seit',
+'protectedpages-expiry' => 'Gültich bis',
+'protectedpages-performer' => 'Geschützt von',
+'protectedpages-params' => 'Schutzparameter',
+'protectedpages-reason' => 'Grund',
+'protectedpages-unknown-timestamp' => 'Unbekannt',
+'protectedpages-unknown-performer' => 'Unbekannter Benutzer',
+'protectedtitles' => 'Geschützte Seitenoome',
+'protectedtitlesempty' => 'Zurzeit sind mit den oongebne Parameter ken Seite zur Neierstellung gesperrt.',
+'listusers' => 'Benutzerverzeichnis',
+'listusers-editsonly' => 'Zeich nuar Benutzer mit Beiträche',
+'listusers-creationsort' => 'Noh Erstelldatum sortiere',
+'listusers-desc' => 'In absteichender Reihenfolche sortiere',
+'usereditcount' => '$1 {{PLURAL:$1|Beoorbeitung|Beoorbeitunge}}',
+'usercreated' => '{{GENDER:$3|Erstellt}} am $1 um $2 Uhr',
+'newpages' => 'Neie Seite',
+'newpages-username' => 'Benutzernoome:',
+'ancientpages' => 'Seit längrem unbeoorbeitete Seite',
+'move' => 'Verschiebe',
+'movethispage' => 'Seit verschiebe',
+'unusedimagestext' => 'Bittschön beacht, dass anre Webseite en Datei mit en direkte URL verlinke könne. Die könnte doher hier uffgelistet sin, obwohl die in aktiver Verwendung ist.',
+'unusedcategoriestext' => 'Die Spezialseit zeicht all Kategorie, wo leer sind, also sellebst ken Kategorie orrer Seite enthalle.',
+'notargettitle' => 'Ken Seit oongeb',
+'notargettext' => 'Du host net oongeb, uff was für Seit die Funktion oongewendt werre soll.',
+'nopagetitle' => 'Seit net voarhand',
+'nopagetext' => 'Die oongebne Seit ist net vorhand.',
+'pager-newer-n' => '{{PLURAL:$1|nächster|nächste $1}}',
+'pager-older-n' => '{{PLURAL:$1|voarhericher|voarheriche $1}}',
+'suppress' => 'Oversight (Üwerwächtung)',
+'querypage-disabled' => 'Die Spezialseit woard aus Gründe von der Leistungserhaltung deaktiviert.',
+
+# Book sources
+'booksources' => 'ISBN-Suche',
+'booksources-search-legend' => 'Such noh Bezugsquelle für Bücher',
+'booksources-go' => 'Suche',
+'booksources-text' => 'Dies ist en List mit Links zu Internetseite, wo neie und gebrauchte Bücher verkoofe. Dort kann das ooch weitre Informationen üwer die Bücher gebe. {{SITENAME}} ist mit kenem von der Oonbieter geschäftlich verbünd.',
+'booksources-invalid-isbn' => 'Vermutlich ist die ISBN ungültich.
+Bittschön prüf, ob die korrekt von der Quell üwertroohr woard.',
+
+# Special:Log
+'specialloguserlabel' => 'Ausführender Benutzer:',
+'speciallogtitlelabel' => 'Ziel (Titel orrer Benutzer):',
+'log' => 'Logbücher',
+'all-logs-page' => 'Alle öffentliche Logbücher',
+'alllogstext' => 'Das ist die kombinierte Oonzeich von all in {{SITENAME}} geführte Logbücher.
+Die Ausgäb kann doorrich die Auswahl von der Logbuchtyp, von der Benutzer orrer der Seitetitel ingeschränkt sin (Gross-/Klenschreibung muss beachtet sin).',
+'logempty' => 'Ken passende Einträch.',
+'log-title-wildcard' => 'Titel beginnt mit …',
+'showhideselectedlogentries' => 'Ausgewählte Logbucheinträch oonzeiche/verstecke',
+
+# Special:AllPages
+'allpages' => 'All Seite',
+'alphaindexline' => '$1 bis $2',
+'nextpage' => 'Nächste Seit ($1)',
+'prevpage' => 'Vorhrich Seit ($1)',
+'allpagesfrom' => 'Seite oonzeiche ab:',
+'allpagesto' => 'Seite oonzeiche bis:',
+'allarticles' => 'Alle Seite',
+'allinnamespace' => 'Alle Seite (Noomeraum: $1)',
+'allpagessubmit' => 'Oonwenne',
+'allpagesprefix' => 'Seite oonzeiche mit Präfix:',
+'allpagesbadtitle' => 'Der ingebne Seitenoome ist ungültich: Der hot entweder en voarangestelltes Sproch-, en Interwiki-Kürzel orrer enthält en orrer mehrre Zeiche, wo in Seitenoome net dürfe verwendt sin.',
+'allpages-bad-ns' => 'Der Noomeraum "$1" ist in {{SITENAME}} net voarhand.',
+'allpages-hide-redirects' => 'Weiterleitunge ausblende',
+
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Du siehst die gecachte Version (Englisch: "cached version") von der Seit, wo bis zu $1 alt sin kann.',
+'cachedspecial-viewing-cached-ts' => 'Du siehst die gecachte Version (Englisch: "cached version") von der Seit, die möglicherweis net aktuell ist.',
+'cachedspecial-refresh-now' => 'Aktuelle Version oonsiehn.',
+
+# Special:Categories
+'categories' => 'Kategoriee',
+'special-categories-sort-count' => 'Sortierung noh Oonzoohl',
+'special-categories-sort-abc' => 'Sortierung noh Alphabet',
+
+# Special:DeletedContributions
+'deletedcontributions' => 'Abgewischte Beiträch',
+'deletedcontributions-title' => 'Abgewischte Beiträch',
+'sp-deletedcontributions-contribs' => 'Benutzerbeiträche',
+
+# Special:LinkSearch
+'linksearch' => 'Weblinksuch',
+'linksearch-pat' => 'Suchmuster:',
+'linksearch-ns' => 'Noomeraum:',
+'linksearch-ok' => 'Suche',
+'linksearch-line' => '$1 ist verlinkt von $2',
+
+# Special:ListUsers
+'listusersfrom' => 'Zeich Benutzer ab:',
+'listusers-submit' => 'Zeich',
+'listusers-noresult' => 'Ken Benutzer gefund.',
+'listusers-blocked' => '(gesperrt)',
+
+# Special:ActiveUsers
+'activeusers' => 'Aktive Benutzer',
+'activeusers-from' => 'Zeich Benutzer ab:',
+'activeusers-hidebots' => 'Bots ausblende',
+'activeusers-hidesysops' => 'Administratore ausblende (verstecke)',
+'activeusers-noresult' => 'Kene Benutzer gefund.',
+
+# Special:ListGroupRights
+'listgrouprights' => 'Benutzergrupperechte',
+'listgrouprights-group' => 'Grupp:',
+'listgrouprights-rights' => 'Rechte',
+'listgrouprights-helppage' => 'Help:Grupperechte',
+'listgrouprights-members' => '(Mitgliederlist)',
+'listgrouprights-addgroup' => 'Benutzer zu {{PLURAL:$2|der Grupp|die Gruppe}} hinzufügen: $1',
+'listgrouprights-removegroup' => 'Benutzer aus {{PLURAL:$2|die Grupp|die Gruppe}} entferne: $1',
+'listgrouprights-addgroup-all' => 'Benutzer zu alle Gruppe hinzufüche',
+'listgrouprights-removegroup-all' => 'Benutzer aus alle Gruppe entferne',
+'listgrouprights-addgroup-self-all' => 'Kann alle Gruppe zum eichne Konto hinzufüche',
+'listgrouprights-removegroup-self-all' => 'Kann alle Gruppe vom eichne Konto entferne (removiere)',
+
+# Email user
+'mailnologin' => 'Fehler beim E-Mail-Versand',
+'emailuser' => 'E-Mail an den Benutzer',
+'emailuser-title-notarget' => 'E-Mail an Benutzer',
+'emailpage' => 'E-Mail an Benutzer',
+'usermailererror' => 'Das E-Mail-Objekt gab en Fehler zurück:',
+'defemailsubject' => '{{SITENAME}} – E-Mail von Benutzer "$1"',
+'usermaildisabled' => 'E-Mail-Empfang deaktiviert',
+'usermaildisabledtext' => 'Du kannst in dem Wiki keh E-Mails an annre Benutzer sende',
+'noemailtitle' => 'Ken E-Mail-Adress',
+'noemailtext' => 'Der Benutzer hot ken gültiche E-Mail-Adress oongeb.',
+'nowikiemailtitle' => 'E-Mail-Versand net möchlich',
+'nowikiemailtext' => 'Der Benutzer möcht ken E-Mails von annre Benutzer erhalle.',
+'emailnotarget' => 'Nicht vorhandner orrer ungülticher Benutzernoome für den Empfang von en E-Mail.',
+'emailtarget' => 'Benutzernoome von der Empfänger rengebe',
+'emailusername' => 'Benutzernoome:',
+'emailusernamesubmit' => 'Weiter',
+'email-legend' => 'E-Mail an en annre {{SITENAME}}-Benutzer sende',
+'emailfrom' => 'Von:',
+'emailto' => 'An:',
+'emailsubject' => 'Betreff:',
+'emailmessage' => 'Nachricht:',
+'emailsend' => 'Sende',
+'emailccme' => 'Sende en Kopie von der E-Mail an mich',
+'emailccsubject' => 'Kopie von deiner Nachricht an $1: $2',
+'emailsent' => 'E-Mail verschickt',
+'emailsenttext' => 'Dein E-Mail woard verschickt.',
+'emailuserfooter' => 'Die E-Mail woard von {{SITENAME}}-Benutzer "$1" an "$2" gesendt.',
+
+# User Messenger
+'usermessage-summary' => 'Systemnachricht gespeichert.',
+'usermessage-editor' => 'System-Messenger',
+
+# Watchlist
+'watchlist' => 'Beobachtungslist',
+'mywatchlist' => 'Beobachtungslist',
+'watchlistfor2' => 'Von $1 $2',
+'nowatchlist' => 'Do befind sich ken Einträch uff dein Beobachtungslist.',
+'watchlistanontext' => 'Du musst dich $1, um dein Beobachtungslist siehn orrer Einträch uff ihr beoorbeiteno könne.',
+'watchnologin' => 'Net oongemeldt',
+'watchnologintext' => 'Du musst [[Special:UserLogin|oongemeldt]] sin, um dein Beobachtungslist beoorbeite könne.',
+'addwatch' => 'Zur Beobachtungslist hinzufüche',
+'watch' => 'Beobachte',
+'watchthispage' => 'Die Seit beobachte',
+'unwatch' => 'Net mehr beobachte',
+'unwatchthispage' => 'Net meahr beobachte',
+'notanarticle' => 'Ken Seit',
+'notvisiblerev' => 'Versionur woard abgewischt',
+'watchlist-details' => 'Du beobachtest {{PLURAL:$1|en Seit|$1 Seite}}, ohne dass Diskussionsseit gezählt werre.',
+'wlheader-enotif' => 'Der E-Mail-Benachrichtigungsdienst ist aktiviert.',
+'wlheader-showupdated' => "Seite mit noch net gesiehne Ännrunge werre'''fett''' dorgestellt.",
+'watchmethod-recent' => 'Üwerprüfung von der letzte Beoorbeitungen für die Beobachtungslist (mit observierte Seite)',
+'watchmethod-list' => 'Üwerprüfung von der Beobachtungslist noh letzte Beoorbeitunge',
+'wlshowlast' => 'Zeich die Ännrunge von der letzte $1 Stunde, $2 Tooch orrer $3.',
+'watchlist-options' => 'Oonzeichoptione',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Beobachte …',
+'unwatching' => 'Netmehr beobachte …',
+
+'enotif_reset' => 'Alle Seite wie besucht markiere',
+'enotif_impersonal_salutation' => '{{SITENAME}}-Benutzer',
+'enotif_subject_deleted' => '{{SITENAME}}-Seit $1 woard von {{GENDER:$2|$2}} abgewischt',
+'enotif_subject_created' => '{{SITENAME}}-Seit $1 woard von {{GENDER:$2|$2}} erstellt',
+'enotif_subject_moved' => '{{SITENAME}}-Seit $1 woard von {{GENDER:$2|$2}} verschob',
+'enotif_subject_restored' => '{{SITENAME}}-Seit $1 woard von {{GENDER:$2|$2}} wiederheargestellt',
+'enotif_subject_changed' => '{{SITENAME}}-Seit $1 woard von {{GENDER:$2|$2}} geännert',
+'enotif_body_intro_deleted' => 'Die {{SITENAME}}-Seit $1 woard am $PAGEEDITDATE von {{GENDER:$2|$2}} abgewischt. Sieh $3.',
+'enotif_body_intro_created' => 'Die {{SITENAME}}-Seit $1 woard am $PAGEEDITDATE von {{GENDER:$2|$2}} erstellt. Sieh $3 für die aktuelle Version.',
+'enotif_anon_editor' => 'Anonymer Benutzer $1',
+
+# Delete
+'deletepage' => 'Seite abwische',
+'confirm' => 'Bestätich',
+'excontent' => 'Inhalt woor: "$1"',
+'exblank' => 'Seit woor leer',
+'delete-confirm' => 'Abwische von „$1“',
+'delete-legend' => 'Abwische',
+'actioncomplete' => 'Aktion beennet',
+'actionfailed' => 'Aktion fehlgeschloohn',
+'dellogpage' => 'Lösch-Logbuch',
+'deletionlog' => 'Abwäsch-Logbuch',
+'reverted' => 'Uff en alte Version zurückgesetzt',
+'deletecomment' => 'Grund:',
+'deleteotherreason' => 'Annrer/ergänzender Grund:',
+'deletereasonotherlist' => 'Annrer Grund',
+'delete-edit-reasonlist' => 'Abwischgründe beoorbeite',
+
+# Rollback
+'rollback' => 'Zurücksetze von der Ännrunge',
+'rollback_short' => 'Zurücksetze',
+'rollbacklink' => 'Zurücksetze',
+'rollbackfailed' => 'Zurücksetze gescheitert',
+
+# Edit tokens
+'sessionfailure-title' => 'Sitzungsfehler',
+
+# Protect
+'protectlogpage' => 'Seiteschutz-Logbuch',
+'protectedarticle' => 'geschützt „[[$1]]“',
+'protect-badnamespace-title' => 'Net-schützbarer Noomeraum',
+'protect-badnamespace-text' => 'Seite von dem Noomeraums könne net geschützt sin.',
+'protect-norestrictiontypes-text' => 'Die Seit kann net geschützt sin, weil ken Beschränkungstype verfüchbar sind.',
+'protect-norestrictiontypes-title' => 'Seite net schützbar',
+'protect-legend' => 'Seiteschutzstatus ännre',
+'protectcomment' => 'Grund:',
+'protectexpiry' => 'Sperrdauer:',
+'protect_expiry_invalid' => 'Die ingebne Dauer ist ungültich.',
+'protect_expiry_old' => 'Die Sperrzeit lieht in der Vergangheit.',
+'protect-unchain-permissions' => 'Separate Sperroptione aktiviere',
+'protect-text' => 'Hier kannst du den Schutzstatus der Seite "$1" insiehn und ännre.',
+'protect-default' => 'Alle Benutzer',
+'protect-level-sysop' => 'Nuar Administratore erlaube',
+'protect-summary-cascade' => 'kaskadierend',
+'protect-expiring' => 'bis $2, $3 Uhr (UTC)',
+'protect-expiring-local' => 'bis $1',
+'protect-expiry-indefinite' => 'unbeschränkt',
+'protect-cascade' => 'Kaskadierende Sperre – alle in die Seite eingebundne Voarlooche werre ewefalls gesperrt.',
+'protect-cantedit' => 'Du kannst die Sperr von der Seit net ännre, weil du ken Berechtichung zum Beoorbeite von der Seit host.',
+'protect-othertime' => 'Anner Sperrdauer:',
+'protect-othertime-op' => 'anner Sperrdauer',
+'protect-existing-expiry' => 'Aktuelles Seiteschutzend: $2, $3 Uhr',
+'protect-otherreason' => 'Annre/ergänzender Grund:',
+'protect-otherreason-op' => 'Annrer Grund',
+'restriction-type' => 'Schutzstatus:',
+'restriction-level' => 'Schutzhöch:',
+'minimum-size' => 'Mindestgröss',
+'maximum-size' => 'Maximalgröss:',
+'pagesize' => '(Bytes)',
+
+# Restrictions (nouns)
+'restriction-edit' => 'Beoorbeite',
+'restriction-move' => 'Verschiebe',
+'restriction-create' => 'Erstell',
+'restriction-upload' => 'Hochlood',
+
+# Restriction levels
+'restriction-level-sysop' => 'geschützt (nuar Administratore)',
+'restriction-level-autoconfirmed' => 'geschützt (nuar oongemeldete, net neie Benutzer)',
+'restriction-level-all' => 'alle',
+
+# Undelete
+'undelete' => 'Abgewischte Seite oonzeiche',
+'undeletepage' => 'Abgewischte Seite oonzeichr und wiederhearstelle',
+'viewdeletedpage' => 'Abgewischte Seite oonzeiche',
+'undelete-fieldset-title' => 'Wiederhearstelle',
+'undelete-nodiff' => 'Ken voarhergehend Version voarhand.',
+'undeletebtn' => 'Wiederherstelle',
+'undeletelink' => 'oonsiehn/wiederherstelle',
+'undeleteviewlink' => 'oongucke',
+'undeleteinvert' => 'Auswahl umkehre',
+'undeletecomment' => 'Grund:',
+'cannotundelete' => 'Die Wiederhearstellung ist fehlgeschlooht:
+$1',
+'undelete-search-title' => 'Noh abgewischte Seite suche',
+'undelete-search-box' => 'Noh abgewischte Seite suche',
+'undelete-search-prefix' => 'Suchbegriff (Wortoonfang ohne Wildcards):',
+'undelete-search-submit' => 'Such',
+'undelete-no-results' => 'Do woard im Archiv ken zum Suchbegriff passend Seit gefund.',
+'undelete-error' => 'Beim Wiederhearstelle von der Seit ist en Fehler uffgetret.',
+'undelete-error-short' => 'Fehler beim Wiederhearstell von der Datei $1',
+'undelete-show-file-submit' => 'Jo',
+
+# Namespace form on various pages
+'namespace' => 'Noomeraum:',
+'invert' => 'Auswoohl umkehre',
+'namespace_association' => 'Zugehöricher Noomeraum',
+'blanknamespace' => '(Seite)',
+
+# Contributions
+'contributions' => '{{GENDER:$1|Benutzerbeiträche}}',
+'contributions-title' => 'Benutzerbeiträche von „$1“',
+'mycontris' => 'Beiträche',
+'contribsub2' => 'Von {{GENDER:$3|$1}} ($2)',
+'uctop' => '(aktuell)',
+'month' => 'und Monat:',
+'year' => 'bis Joahr (und früher):',
+
+'sp-contributions-newbies' => 'Zeich nuar Beiträche von neier Benutzer',
+'sp-contributions-newbies-sub' => 'Von neie Benutzer',
+'sp-contributions-newbies-title' => 'Benutzerbeiträch von neie Benutzer',
+'sp-contributions-blocklog' => 'Sperr-Logbuch',
+'sp-contributions-deleted' => 'Abgewischt Beiträch',
+'sp-contributions-uploads' => 'Hochgeloodne Dateie',
+'sp-contributions-logs' => 'Logbücher',
+'sp-contributions-talk' => 'Diskussion',
+'sp-contributions-userrights' => 'Benutzerrechteverwaltung',
+'sp-contributions-search' => 'Such noh Benutzerbeiträche',
+'sp-contributions-suppresslog' => 'Unnerdrückte Benutzerbeiträch',
+'sp-contributions-username' => 'IP-Adress orrer Benutzernoome:',
+'sp-contributions-toponly' => 'Nuar aktuelle Versione zeiche',
+'sp-contributions-newonly' => 'Nuar Seitererstellunge oonzeiche',
+'sp-contributions-submit' => 'Such',
+
+# What links here
+'whatlinkshere' => 'Links uff die Seit',
+'whatlinkshere-title' => 'Seite, die uff "$1" verlinke',
+'whatlinkshere-page' => 'Seit:',
+'linkshere' => "Die follichende Seite verlinke uff '''\"[[:\$1]]\"''':",
+'nolinkshere' => "Ken Seit verlinkt uff '''„[[:$1]]“'''.",
+'isredirect' => 'Weiterleitungsseit',
+'istemplate' => 'Voarlooche-einbinnunge (transclusões)',
+'isimage' => 'Dateilink',
+'whatlinkshere-prev' => '{{PLURAL:$1|voarhericher|voarheriche $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|nächster|nächste $1}}',
+'whatlinkshere-links' => '← Links',
+'whatlinkshere-hideredirs' => 'Weiterleitunge $1',
+'whatlinkshere-hidetrans' => 'Voarlooche-einbinnunge (transclusões) $1',
+'whatlinkshere-hidelinks' => 'Links $1',
+'whatlinkshere-hideimages' => 'Dateilinks $1',
+'whatlinkshere-filters' => 'Filter',
+
+# Block/unblock
+'autoblockid' => 'Automatisch Sperrung #$1',
+'block' => 'Benutzer sperre',
+'unblock' => 'Benutzer frei mache',
+'blockip' => 'IP-Adress/Benutzer sperre',
+'blockip-legend' => 'IP-Adress/Benutzer sperre',
+'ipadressorusername' => 'IP-Adress orrer Benutzernoome:',
+'ipbexpiry' => 'Sperrdauer:',
+'ipbreason' => 'Grund:',
+'ipbcreateaccount' => 'Erstellung von Benutzerkonte verhinnre',
+'ipbsubmit' => 'IP-Adress/Benutzer sperre',
+'ipbother' => 'Annr Dauer:',
+'ipboptions' => '2 Stunne:2 hours,1 Tooch:1 day,3 Tooch:3 days,1 Woch:1 week,2 Woche:2 weeks,1 Monat:1 month,3 Monate:3 months,6 Monate:6 months,1 Joahr:1 year,unbeschränkt:infinite',
+'ipb-confirm' => 'Sperrung bestätiche',
+'badipaddress' => 'Die IP-Adress hot en falsches Format.',
+'blockipsuccesssub' => 'Die Sperrung woor erfollichreich.',
+'ipb-edit-dropdown' => 'Sperrgründe beoorbeite',
+'ipb-unblock-addr' => '„$1“ freigebe (mache)',
+'ipb-blocklist' => 'Alle aktuelle Sperre oonzeiche',
+'ipb-blocklist-contribs' => 'Benutzerbeiträche von "$1"',
+'unblockip' => 'Benutzer frei mache',
+'ipusubmit' => 'Freigewe (frei mache)',
+'unblocked' => '[[User:$1|$1]] woard freigeb (gemacht)',
+'unblocked-range' => 'Sperr für $1 woard uffgehob',
+'blocklist' => 'Gesperrte Benutzer',
+'ipblocklist' => 'Gesperrte Benutzer',
+'ipblocklist-legend' => 'Such noh en gesperrte Benutzer',
+'blocklist-userblocks' => 'Benutzersperre ausblende (verstecke)',
+'blocklist-tempblocks' => 'Befristete Sperre ausblende (verstecke)',
+'blocklist-addressblocks' => 'Sperre einzelner IP-Adresse ausblende (verstecke)',
+'blocklist-rangeblocks' => 'Bereichssperre ausblende (verstecke)',
+'blocklist-timestamp' => 'Zeitstempel',
+'blocklist-target' => 'Ziel',
+'blocklist-expiry' => 'Sperrdauer bis',
+'blocklist-by' => 'Gesperrt von',
+'blocklist-params' => 'Sperrparameter',
+'blocklist-reason' => 'Grund',
+'ipblocklist-submit' => 'Suche',
+'ipblocklist-localblock' => 'Lokal Sperre',
+'ipblocklist-otherblocks' => 'Annrer {{PLURAL:$1|Sperr|Sperre}}',
+'infiniteblock' => 'unbegrenzt',
+'expiringblock' => 'tut enne am $1 um $2 Uhr',
+'anononlyblock' => 'nuar Anonyme',
+'noautoblockblock' => 'Autoblock deaktiviert',
+'createaccountblock' => 'Erstellung von Benutzerkonte gesperrt',
+'emailblock' => 'E-Mail-Versand gesperrt',
+'blocklist-nousertalk' => 'därref eichne Diskussionsseit net beoorbeite',
+'ipblocklist-empty' => 'Die List enthält ken Einträche.',
+'ipblocklist-no-results' => 'Die gesuchte IP-Adress/der Benutzernoome ist net gesperrt.',
+'blocklink' => 'Sperre',
+'unblocklink' => 'Freigewe',
+'change-blocklink' => 'Sperre ännre',
+'contribslink' => 'Beiträche',
+'emaillink' => 'E-Mail sende',
+'blocklogpage' => 'Benutzersperr-Logbuch',
+'blocklogentry' => 'sperrte „[[$1]]“ für den Zeitraum: $2 $3',
+'unblocklogentry' => 'hob die Sperr von "$1" uff',
+'block-log-flags-anononly' => 'nuar Anonyme',
+'block-log-flags-nocreate' => 'Erstellung von Benutzerkonte gesperrt',
+'block-log-flags-noautoblock' => 'Autoblock deaktiviert',
+'block-log-flags-noemail' => 'E-Mail-Versand gesperrt',
+'block-log-flags-nousertalk' => 'därref eichne Diskussionsseit net beoorbeite',
+'block-log-flags-angry-autoblock' => 'erweiterter Autoblock aktiviert',
+'block-log-flags-hiddenname' => 'Benutzernoome versteckt',
+'range_block_disabled' => 'Die Möchlichkeit, ganze Adressräume zu sperre, ist net aktiviert.',
+'ipb_expiry_invalid' => 'Die eingebne Dauer ist ungültich.',
+'ipb_expiry_temp' => 'Benutzernoome-Sperre mit der Verstecke-Option müsse permanent sin.',
+'ip_range_invalid' => 'Ungülticher IP-Adressbereich.',
+'proxyblocker' => 'Proxy blocker',
+
+# Developer tools
+'lockdb' => 'Datebank sperre',
+'unlockdb' => 'Datebank freigebe (mache)',
+'lockconfirm' => 'Jo, ich möcht die Datebank sperre.',
+'unlockconfirm' => 'Jo, ich möcht die Datebank entblocke.',
+'lockbtn' => 'Datebank sperre',
+'unlockbtn' => 'Datebank freigebe (mache)',
+'locknoconfirm' => 'Du host das Bestätichungsfeld net markiert.',
+'lockdbsuccesssub' => 'Datebank woard erfollichreich gesperrt',
+'unlockdbsuccesssub' => 'Datebank woard erfollichreich freigemacht (entblockt)',
+'unlockdbsuccesstext' => 'Die {{SITENAME}}-Datebank woard freigeb (gemacht).',
+'databasenotlocked' => 'Die Datebank ist net gesperrt.',
+'lockedbyandtime' => '(von $1 am $2 um $3 Uhr)',
+
+# Move page
+'move-page' => 'Verschiebe von "$1"',
+'move-page-legend' => 'Seit verschiebe',
+'movearticle' => 'Seit verschiebe:',
+'movenotallowed' => 'Du host net die erforderliche Berechtichung, um Seite verschiebe zu könne.',
+'newtitle' => 'Ziel (zu neie Titel):',
+'move-watch' => 'Quell- und Zielseit beobachte',
+'movepagebtn' => 'Seit verschiebe',
+'pagemovedsub' => 'Verschiebung erfollichreich',
+'movepage-moved-redirect' => 'En Weiterleitung woard erstellt.',
+'movepage-moved-noredirect' => 'Die Erstellung von en Weiterleitung woard unnerdrückt.',
+'articleexists' => 'Unner dem Noome existiert schon en Seit. Bittschön wähl en annre Noome.',
+'movelogpage' => 'Verschiebungs-Logbuch',
+'movereason' => 'Grund:',
+'revertmove' => 'zurück verschiebe',
+'delete_and_move' => 'Abwische und verschiebe',
+'delete_and_move_confirm' => 'Jo, Seit abwische',
+'immobile-source-page' => 'Die Seit ist net verschiebbar.',
+'immobile-target-page' => 'Es kann net uff die Zielseit verschob sin.',
+'move-leave-redirect' => 'Weiterleitung erstelle',
+
+# Export
+'export' => 'Seite exportiere',
+'exportall' => 'Alle Seite exportiere',
+'export-submit' => 'Seite exportiere',
+'export-addcattext' => 'Seite aus follichender Kategorie hinzufüche:',
+'export-addcat' => 'Hinzufüche',
+'export-addnstext' => 'Seite aus follichendem Noomeraum hinzufüche:',
+'export-addns' => 'Hinzufüche',
+'export-download' => 'Wie XML-Datei speichre',
+'export-templates' => 'Inklusive Vorlooche',
+'export-pagelinks' => 'Verlinkte Seite automatisch mit exportiere, bis zur Rekursionstiefe von:',
+
+# Namespace 8 related
+'allmessages' => 'MediaWiki-Systemnachrichte',
+'allmessagesname' => 'Noome',
+'allmessagesdefault' => 'Standardtext',
+'allmessagescurrent' => 'Aktueller Text',
+'allmessages-filter-legend' => 'Filter',
+'allmessages-filter' => 'Filter für oongepasst Zustand:',
+'allmessages-filter-unmodified' => 'Unverännert',
+'allmessages-filter-all' => 'Alle',
+'allmessages-filter-modified' => 'Geännert',
+'allmessages-prefix' => 'Präfixfilter:',
+'allmessages-language' => 'Sproch:',
+'allmessages-filter-submit' => 'Geh, los',
+'allmessages-filter-translate' => 'Üwersetze',
+
+# Thumbnails
+'thumbnail-more' => 'vergrösser',
+'filemissing' => 'Datei fehlt',
+'thumbnail_error' => 'Fehler beim Erstelle von der Voarschaubild: $1',
+'thumbnail_error_remote' => 'Fehlermeldung von $1:
+$2',
+'djvu_page_error' => 'DjVu-Seit ausserhalleb von der Seitbereich',
+'thumbnail_invalid_params' => 'Ungültiche Thumbnail-Parameter',
+'thumbnail_dest_directory' => 'Zielverzeichnis kann net erstellt sin.',
+'thumbnail_image-type' => 'Bildtyp net unnersteetzt',
+'thumbnail_gd-library' => 'Unvollständiche Konfiguration von der GD-Bibliothek: Fehlende Funktion $1',
+'thumbnail_image-missing' => 'Datei scheint fehlend zu sin: $1',
+
+# Special:Import
+'import' => 'Seite importiere',
+'importinterwiki' => 'Transwiki-Import',
+'import-interwiki-source' => 'Quell-Wiki/-Seit:',
+'import-interwiki-history' => 'Alle Versione von der Seit importiere',
+'import-interwiki-templates' => 'Alle Vorlooche einschliesse',
+'import-interwiki-submit' => 'Importiere',
+'import-interwiki-namespace' => 'Zielnoomeraum:',
+'import-upload-filename' => 'Dateinoome:',
+'import-comment' => 'Grund:',
+'importstart' => 'Importiere Seite …',
+'importnopages' => 'Ken Seit zum Importiere voarhand.',
+'importunknownsource' => 'Unbekannte Importquell',
+'importcantopen' => 'Importdatei konnt net geöffnet sin',
+'importbadinterwiki' => 'Falscher Interwiki-Link',
+'importnotext' => 'Leer oder ken Text',
+'importsuccess' => 'Import abgeschloss.',
+'importnofile' => 'Es ist ken Importdatei ausgewählt worre.',
+'import-parse-failure' => 'Fehler beim XML-Import:',
+'import-noarticle' => 'Do woard ken zu importierend Seit oongeb!',
+'import-upload' => 'XML-Dateie importiere',
+
+# Import log
+'importlogpage' => 'Import-Logbuch',
+'import-logentry-interwiki' => 'importierte "$1" (Transwiki)',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|Version|Versione}} von $2',
+
+# JavaScriptTest
+'javascripttest' => 'JavaScript-Test',
+'javascripttest-title' => '$1-Tests werre doorrichgeführt',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Dein Benutzerseit',
+'tooltip-pt-mytalk' => 'Dein Diskussionsseit',
+'tooltip-pt-preferences' => 'Eichne Instellunge',
+'tooltip-pt-watchlist' => 'List von der beobachtete Seite',
+'tooltip-pt-mycontris' => 'List eichner Beiträche',
+'tooltip-pt-login' => 'Sich oonzumelde weard zwoor gern gesiehn, ist awer ken Flicht.',
+'tooltip-pt-logout' => 'Abmelde',
+'tooltip-ca-talk' => 'Diskussion zum Seiteinhalt',
+'tooltip-ca-edit' => 'Seit beoorbeite. Bitte voar dem Speichre die Voarschaufunktion benutze.',
+'tooltip-ca-addsection' => 'Neie Abschnitt oonfänge',
+'tooltip-ca-viewsource' => 'Die Seit ist geschützt. Ehr Quelltext kann dennoch oongesiehn und kopiert sin.',
+'tooltip-ca-history' => 'Frühre Versione von der Seit',
+'tooltip-ca-protect' => 'Die Seit schütze',
+'tooltip-ca-unprotect' => 'Seitschutz ännre',
+'tooltip-ca-delete' => 'Die Seit lösche',
+'tooltip-ca-move' => 'Die Seit verschiebe',
+'tooltip-ca-watch' => 'Die Seit zur persönliche Beobachtungslist hinzufüche',
+'tooltip-ca-unwatch' => 'Die Seit von persönliche Beobachtungslist entferne',
+'tooltip-search' => '{{SITENAME}} doorrichsuche',
+'tooltip-search-go' => 'Geh direkt zu der Seit, wo exakt dem ingebne Noome entsprecht.',
+'tooltip-search-fulltext' => 'Such noh Seite, wo den Text enthalle',
+'tooltip-p-logo' => 'Hauptseit',
+'tooltip-n-mainpage' => 'Hauptseit',
+'tooltip-n-mainpage-description' => 'Hauptseit',
+'tooltip-n-portal' => 'Üwer das Projekt, was du tun kannst, wo was zu finne ist',
+'tooltip-n-currentevents' => 'Hinnergrundinformatione zu aktuelle Ereichnisse',
+'tooltip-n-recentchanges' => 'List von der letzte Ändrunge in {{SITENAME}}',
+'tooltip-n-randompage' => 'Zufälliche Seit uffrufe',
+'tooltip-n-help' => 'Hellefseit oonzeiche',
+'tooltip-t-whatlinkshere' => 'List von aller Seite, wo hierher verlinken',
+'tooltip-t-recentchangeslinked' => 'Letzt Ännrunge an Seite, wo von hier verlinkt sind',
+'tooltip-feed-atom' => 'Atom-Feed die Seit',
+'tooltip-t-contributions' => 'List von dem Benutzer sein Beiträche oonsiehn',
+'tooltip-t-emailuser' => 'En E-Mail an den Benutzer sende',
+'tooltip-t-upload' => 'Dateie hochloode',
+'tooltip-t-specialpages' => 'List aller Spezialseite',
+'tooltip-t-print' => 'Druckoonsicht von der Seit',
+'tooltip-t-permalink' => 'Dauerhafter Link zu der Seiteversion',
+'tooltip-ca-nstab-main' => 'Seiteinhalt oonzeiche',
+'tooltip-ca-nstab-user' => 'Benutzerseite oonzeiche',
+'tooltip-ca-nstab-media' => 'Mediedateieseit oonzeiche',
+'tooltip-ca-nstab-special' => 'Das ist en Spezialseit. Die kann net beoorbeitet sin.',
+'tooltip-ca-nstab-project' => 'Portalseit oonzeiche',
+'tooltip-ca-nstab-image' => 'Dateiseit oonzeiche',
+'tooltip-ca-nstab-mediawiki' => 'MediaWiki-Systemtext oonzeiche',
+'tooltip-ca-nstab-template' => 'Voarlooche oonzeiche',
+'tooltip-ca-nstab-help' => 'Hellefseit oonzeiche',
+'tooltip-ca-nstab-category' => 'Kategorieseit oonzeiche',
+'tooltip-minoredit' => 'Die Ännrung als klen markiere.',
+'tooltip-save' => 'Ändrunge speichre',
+'tooltip-preview' => 'Voarschau von der Ändrunge an die Seit. Bitte voar dem Speichre benutze!',
+'tooltip-diff' => 'Ännrunge am Text zeiche',
+'tooltip-compareselectedversions' => 'Unnerschied zwischich zwooi ausgewählte Versione von der Seit oonzeiche',
+'tooltip-watch' => 'Die Seit zu deiner Beobachtungslist hinzufüche',
+'tooltip-watchlistedit-normal-submit' => 'Einträche entferne',
+'tooltip-watchlistedit-raw-submit' => 'Beobachtungsliste aktualisiere',
+'tooltip-recreate' => 'Seit nei erstelle, obwohl die abgewischt woard',
+'tooltip-upload' => 'Hochloode oonfänge',
+'tooltip-rollback' => '"Retuar" macht all die letzte Seit Ännrunge, wo vom letzte Benutzer gemach sind worre, nuar doorirch ene Klick komplet rückgängich.',
+'tooltip-undo' => '"Umwerfe" Macht ledichlich die en Ännrung rückgängich und zeicht das Resultoot in der Vorschau an, domit in der Zusammenfassungszeil, im Summarium, en Begründung oongeb sin kann.',
+'tooltip-preferences-save' => 'Einstellunge speichre',
+'tooltip-summary' => 'Tue en koorz Zusammerfassung ren gewe.',
+
+# Attribution
+'others' => 'annre',
+'creditspage' => 'Seiteinformatione',
+'nocredits' => 'Für die Seit sind ken Informatione voarhand.',
+
+# Spam protection
+'spamprotectiontitle' => 'Spamschutzfilter',
+
+# Info page
+'pageinfo-header-basic' => 'Basisinformatione',
+'pageinfo-header-edits' => 'Beoorbeitungsgeschicht',
+'pageinfo-header-restrictions' => 'Seiteschutz',
+'pageinfo-header-properties' => 'Seiteeigenschafte',
+'pageinfo-display-title' => 'Oonzeichtitel',
+'pageinfo-default-sort' => 'Standardsortierschlüssel',
+'pageinfo-length' => 'Seitelänge (in Bytes)',
+'pageinfo-article-id' => 'Seitekennnummer',
+'pageinfo-language' => 'Seiteinhaltssproch',
+'pageinfo-content-model' => 'Seiteinhaltsmodell',
+'pageinfo-robot-policy' => 'Indizierung doorrich Suchmaschine',
+'pageinfo-robot-index' => 'Erlaubt',
+'pageinfo-robot-noindex' => ' Net erlaubt',
+'pageinfo-views' => 'Oonzoohl von der Seiteuffrufe',
+'pageinfo-watchers' => 'Oonzoohl von der Seit ehr Beobachter',
+'pageinfo-few-watchers' => 'Wenicher wie {{PLURAL:$1|ein|$1}} Beobachter',
+'pageinfo-redirects-name' => 'Oonzoohl von der Weiterleitunge zu der Seit',
+'pageinfo-subpages-name' => 'Unnerseite von der Seit',
+'pageinfo-firstuser' => 'Seiteersteller',
+'pageinfo-firsttime' => 'Datum von der Seiteerstellung',
+'pageinfo-lastuser' => 'Letzter Bearbeiter',
+'pageinfo-lasttime' => 'Datum von der letzte Bearbeitung',
+'pageinfo-edits' => 'Gesamtzoohl von der Beoorbeitunge',
+'pageinfo-authors' => 'Gesamtzoohl unnerschiedlicher Autore',
+'pageinfo-recent-edits' => 'Anzoohl von der kürzlich erfollichte Beoorbeitung (innerhalleb von der letzte $1)',
+'pageinfo-toolboxlink' => 'Seiteinformatione',
+'pageinfo-redirectsto' => 'Weiterleitunge noh',
+'pageinfo-redirectsto-info' => 'Information',
+'pageinfo-contentpage' => 'Gezählt wie en Inhaltsseit',
+'pageinfo-contentpage-yes' => 'Jo',
+'pageinfo-protect-cascading' => 'Seite mit Kaskadeschutz von hier',
+'pageinfo-protect-cascading-yes' => 'Jo',
+'pageinfo-protect-cascading-from' => 'Seite mit Kaskadeschutz von',
+'pageinfo-category-info' => 'Kategorieinformatione',
+'pageinfo-category-pages' => 'Anzoohl  von der Seite',
+'pageinfo-category-subcats' => 'Anzoohl von der Unnerkategoriee',
+'pageinfo-category-files' => 'Oonzoohl von der Dateie',
+
+# Patrolling
+'markaspatrolleddiff' => 'Wie kontrolliert markiere',
+'markedaspatrolled' => 'Wie kontrolliert markiert',
+
+# Patrol log
+'patrol-log-page' => 'Kontroll-Logbuch',
+
+# Browsing diffs
+'previousdiff' => '← Zum voarherichen Versionsunnerschied',
+'nextdiff' => 'Zum nächste Versionsunnerschied →',
+
+# Media information
+'file-info-size' => '$1 × $2 Pixel, Dateigröss: $3, MIME-Typ: $4',
+'file-nohires' => 'Ken höchre Ufflösun voarhand.',
+'svg-long-desc' => 'SVG-Datei, Basisgröss: $1 × $2 Pixel, Dateigröss: $3',
+'show-big-image' => 'Originaldatei',
+'file-info-gif-looped' => 'Endlosschleif',
+
+# Special:NewFiles
+'newimages-legend' => 'Filter',
+'newimages-label' => 'Dateinoome (orrer ein Tel davon):',
+'showhidebots' => '(Bots $1)',
+
+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'ago' => 'vor $1',
+'just-now' => 'grood ewe',
+
+# Human-readable timestamps
+'monday-at' => 'Montach um $1',
+'tuesday-at' => 'Dienstach um $1',
+'wednesday-at' => 'Mittwoch um $1',
+'thursday-at' => 'Donnerstach um $1',
+'friday-at' => 'Freitach um $1',
+'saturday-at' => 'Samstach um $1',
+'sunday-at' => 'Sonntach um $1',
+'yesterday-at' => 'Gester um $1',
+
+# Bad image list
+'bad_image_list' => 'Format:
+
+Nuar Zeile, wo mit enem * oonfang, werre ausgewertet. Als earstes noh dem * muss en Link uff en unerwünschte Datei stehn.
+Druff follichende Seitelinks in derselwe Zeile definiere Ausnoohme, in dene ehre Kontext die Datei trotzdem erscheine därref.',
+
+# Metadata
+'metadata' => 'Metadate',
+'metadata-help' => 'Die Datei enthält weitre Informatione, wo in der Rechel von der Digitalkamera orrer dem verwennete Scanner stämme. Doorrich nohträchliche Beoorbeitung von der Originaldatei könne etliche Detalhes verännert gewes sin.',
+'metadata-expand' => 'Erweiterte Detalhes inblende  (zeiche)',
+'metadata-collapse' => 'Erweiterte Detalhes ausblende (verstecke)',
+'metadata-fields' => 'Die follichende Felder von der EXIF-Metadate, wo in dem MediaWiki-Systemtext oongeb sind, werre uff Bildbeschreibungsseite mit ingeklappter Metadatetabelle oongezeicht.
+Weitre werre standardmässich net oongezeicht.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+
+# Exif tags
+'exif-imagewidth' => 'Breit',
+'exif-imagelength' => 'Höch',
+'exif-bitspersample' => 'Bits por Farrebkomponent',
+'exif-compression' => 'Oort von der Kompression',
+'exif-photometricinterpretation' => 'Pixelzusammersetzung',
+'exif-orientation' => 'Kameraausrichtung',
+'exif-samplesperpixel' => 'Oonzoohl von Komponente',
+'exif-planarconfiguration' => 'Dateausrichtung',
+'exif-ycbcrsubsampling' => 'Subsampling Rate von Y bis C',
+'exif-ycbcrpositioning' => 'Y und C Positionierung',
+'exif-xresolution' => 'Horizontale Auflösung',
+'exif-yresolution' => 'Vertikale Auflösung',
+'exif-stripoffsets' => 'Bilddate-Versatz',
+'exif-rowsperstrip' => 'Oonzoohl Zeile por Streife',
+'exif-stripbytecounts' => 'Bytes por komprimiertem Streif',
+'exif-jpeginterchangeformat' => 'Offset zu JPEG SOI',
+'exif-jpeginterchangeformatlength' => 'Gröss von der JPEG-Date in Bytes',
+'exif-whitepoint' => 'Manuell mit Messung',
+'exif-primarychromaticities' => 'Primäre Farreboort',
+'exif-ycbcrcoefficients' => 'YCbCr-Koeffiziente',
+'exif-referenceblackwhite' => 'Schwarz/Weiß-Referenzpunkte',
+'exif-datetime' => 'Speicherzeitpunkt',
+'exif-imagedescription' => 'Bildtitel',
+'exif-make' => 'Hearsteller',
+'exif-model' => 'Modell',
+'exif-software' => 'Software',
+'exif-artist' => 'Fotograf',
+'exif-copyright' => 'Uarheberrechte (Copyright halter)',
+'exif-exifversion' => 'Exif-Version',
+'exif-flashpixversion' => 'nterstützte Flashpix-Version',
+'exif-colorspace' => 'Farrebraum',
+'exif-componentsconfiguration' => 'Bedeitung einzelner Komponente',
+'exif-compressedbitsperpixel' => 'Komprimierte Bits por Pixel',
+'exif-pixelydimension' => 'Bildbreit',
+'exif-pixelxdimension' => 'Bildhöch',
+'exif-usercomment' => 'Benutzerkommentare',
+'exif-relatedsoundfile' => 'Zugehöriche Tondatei',
+'exif-datetimeoriginal' => 'Erfassungszeitpunkt',
+'exif-datetimedigitized' => 'Digitalisierungszeitpunkt',
+'exif-subsectime' => 'Speicherzeitpunkt (1/100 s)',
+'exif-subsectimeoriginal' => 'Erfassungszeitpunkt (1/100 s)',
+'exif-subsectimedigitized' => 'Digitalisierungszeitpunkt (1/100 s)',
+'exif-exposuretime' => 'Belichtungsdauer',
+'exif-exposuretime-format' => '$1 Sekunde ($2)',
+'exif-fnumber' => 'Blend (Englisch: F Number)',
+'exif-exposureprogram' => 'Belichtungsprogramm',
+'exif-spectralsensitivity' => 'Spectral Sensitivity',
+'exif-isospeedratings' => 'Film- orrer Sensoremfindlichkeit (ISO)',
+'exif-shutterspeedvalue' => 'APEX-Belichtungszeitwert',
+'exif-aperturevalue' => 'APEX-Blendenweart',
+'exif-brightnessvalue' => 'APEX-Helligkeitsweart',
+'exif-exposurebiasvalue' => 'Belichtungsvorgab',
+'exif-maxaperturevalue' => 'Grösste Blend',
+'exif-subjectdistance' => 'Entfernung',
+'exif-meteringmode' => 'Messverfoohre',
+'exif-lightsource' => 'Lichtquell',
+'exif-flash' => 'Blitz',
+'exif-focallength' => 'Brennweit',
+'exif-subjectarea' => 'Bereich',
+'exif-flashenergy' => 'Blitzstärrek',
+'exif-focalplanexresolution' => 'Sensorauflösung horizontal',
+'exif-focalplaneyresolution' => 'Sensorauflösung vertikal',
+'exif-focalplaneresolutionunit' => 'Einheit von der Sensorauflösung',
+'exif-subjectlocation' => 'Motivstandplatz',
+'exif-exposureindex' => 'Belichtungsindex',
+'exif-sensingmethod' => 'Messmethode',
+'exif-filesource' => 'Quell von der Datei',
+'exif-scenetype' => 'Szenetyp',
+'exif-customrendered' => 'Benutzerdefiniert Bildveroorbeitung',
+'exif-exposuremode' => 'Belichtungsmodus',
+'exif-whitebalance' => 'Weissabgleich',
+'exif-digitalzoomratio' => 'Digitalzoom',
+'exif-focallengthin35mmfilm' => 'Brennweite (Klenbildäquivalent)',
+'exif-scenecapturetype' => 'Uffnoohmoort',
+'exif-gaincontrol' => 'Verstärkung',
+'exif-contrast' => 'Kontrast',
+'exif-saturation' => 'Sättichung',
+'exif-sharpness' => 'Schärref',
+'exif-devicesettingdescription' => 'Geräteinstellung',
+'exif-subjectdistancerange' => 'Motiventfernung',
+'exif-imageuniqueid' => 'Bild-ID',
+'exif-gpsversionid' => 'GPS-Tag-Version',
+'exif-gpslatituderef' => 'nördl. orrer südl. Breit',
+'exif-gpslatitude' => 'Geografische Breit',
+'exif-gpslongituderef' => 'östl. orrer westl. Länge',
+'exif-gpslongitude' => 'Geografische Länge',
+'exif-gpsaltituderef' => 'Bezuchshöch',
+'exif-gpsaltitude' => 'Höch',
+'exif-gpstimestamp' => 'GPS-Zeit',
+'exif-gpssatellites' => 'Für die Messung benutzte Satellite',
+'exif-gpsstatus' => 'Emfängerstatus',
+'exif-gpsmeasuremode' => 'Messverfoohre',
+'exif-gpsdop' => 'Messgenauigkeit',
+'exif-gpsspeedref' => 'Geschwindichkeitseinheit',
+'exif-gpsspeed' => 'Geschwindichkeit von des GPS-Empfänger',
+'exif-gpstrackref' => 'Referenz für Bewechungsrichtung',
+'exif-gpstrack' => 'Bewechungsrichtung',
+'exif-gpsimgdirectionref' => 'Referenz für das Bild sein Ausrichtung',
+'exif-gpsimgdirection' => 'Bildrichtung',
+'exif-gpsmapdatum' => 'Geodätisches Referenzsystem benutzt',
+'exif-gpsdestlatituderef' => 'Referenz für die Breit',
+'exif-gpsdestlatitude' => 'Geografische Breit Zielpunkt',
+'exif-gpsdestlongituderef' => 'Referenz für die Läng',
+'exif-gpsdestlongitude' => 'Geografische Läng Zielpunkt',
+'exif-gpsdestbearingref' => 'Referenz für Motivrichtung',
+'exif-gpsdestbearing' => 'Motivrichtung',
+'exif-gpsdestdistanceref' => 'Referenz für die Motiventfernung',
+'exif-gpsdestdistance' => 'Motiventfernung',
+'exif-gpsprocessingmethod' => 'Noome von dem GPS-Verfoohr',
+'exif-gpsareainformation' => 'Noome von der GPS-Gebiete',
+'exif-gpsdatestamp' => 'GPS-Datum',
+'exif-gpsdifferential' => 'GPS-Differentialkorrektur',
+'exif-jpegfilecomment' => 'JPEG-Dateikommentar',
+'exif-keywords' => 'Stichwörter',
+'exif-worldregioncreated' => 'Weltregion in der das Foto uffgenomm woard',
+'exif-countrycreated' => 'Stoot in dem das Foto uffgenomm woard',
+'exif-countrycodecreated' => 'Code für den Stoot in dem das Foto uffgenomm woard',
+'exif-provinceorstatecreated' => 'Provinz orrer Gliedstoot in dem das Foto uffgenomm woard',
+'exif-citycreated' => 'Stadt in der das Foto uffgenomm woard',
+'exif-sublocationcreated' => 'Bereich der Stadt in der das Foto uffgenomm woard',
+'exif-worldregiondest' => 'Gezeichte Weltregione',
+'exif-countrydest' => 'Gezeichter Stoot',
+'exif-countrycodedest' => 'Code für den gezeichten Stoot',
+'exif-provinceorstatedest' => 'Gezeichte Provinz orrer oongezeichter Gliedstoot',
+'exif-citydest' => 'Gezeichte Stadt',
+'exif-sublocationdest' => 'Bereich der gezeichten Stadt',
+'exif-objectname' => 'Koorztitel',
+'exif-specialinstructions' => 'Besondre Oonweisunge',
+'exif-headline' => 'Titel',
+'exif-credit' => 'Noomenennung/Veröffentlicher',
+'exif-source' => 'Quell',
+'exif-editstatus' => 'Das Foto sein Redaktioneller Status',
+'exif-urgency' => 'Dringlichkeit',
+'exif-fixtureidentifier' => 'Kolumne',
+'exif-locationdest' => 'Dorgestellter Standplatz',
+'exif-locationdestcode' => 'Code für den dorgestellte Standplatz',
+'exif-objectcycle' => 'Veröffentlichungszeitraum im Verloof von (während) von en Tooch für den das Medium bestimmt ist',
+'exif-contact' => 'Kontaktinformatione',
+'exif-writer' => 'Verfasser',
+'exif-languagecode' => 'Sproch',
+'exif-iimversion' => 'IIM-Version',
+'exif-iimcategory' => 'Kategorie',
+'exif-iimsupplementalcategory' => 'Zusätzliche Kategorie',
+'exif-datetimeexpires' => 'Net verwenne noh',
+'exif-datetimereleased' => 'Veröffentlicht am',
+'exif-originaltransmissionref' => 'Code von das Standplatz von dem das Foto üwermittelt woard',
+'exif-identifier' => 'Kennung',
+'exif-lens' => 'Verwenntes Objektiv',
+'exif-serialnumber' => 'Der Kamera sein Serienummer',
+'exif-cameraownername' => 'Kamerabesitzer',
+'exif-label' => 'Bezeichnung',
+'exif-datetimemetadata' => 'Datum zu dem die Metadaten letztmoolich geännert woard',
+'exif-nickname' => 'Gebräichlicher Noome vons Foto',
+'exif-rating' => 'Beweartung (aus 5)',
+'exif-rightscertificate' => 'Rechteverwaltungszertifikat',
+'exif-copyrighted' => 'Uarheberrechtsstatus',
+'exif-copyrightowner' => 'Uarheberrechtsinhaber',
+'exif-usageterms' => 'Nutzungsbedingunge',
+'exif-webstatement' => 'Online-Uarheberrechtsangäb',
+'exif-originaldocumentid' => 'Eindeitiche Kennung von dem uarsprüngliche Dokument',
+'exif-licenseurl' => 'URL von der Uarheberrechtsangäb (Lizenz)',
+'exif-morepermissionsurl' => 'Alternative Lizenzinformatione',
+'exif-attributionurl' => 'Bei Weiterverwennung von das Werk, bittschön verlinke uff:',
+'exif-preferredattributionname' => 'Bei Weiterverwennung von das Werrek, bittschön benenne:',
+'exif-pngfilecomment' => 'PNG-Dateikommentar',
+'exif-disclaimer' => 'Haftungsausschluss',
+'exif-contentwarning' => 'Inhaltswarnung',
+'exif-intellectualgenre' => 'Der Medium sein Oort',
+'exif-subjectnewscode' => 'Themecode',
+'exif-scenecode' => 'IPTC-Oonsichtcode',
+'exif-event' => 'Dorgestelltes Ereichnis',
+'exif-organisationinimage' => 'Dorgestellte Organisation',
+'exif-personinimage' => 'Dorgestellte Person',
+'exif-originalimageheight' => 'Bildhöch voar dem Zuschnit',
+'exif-originalimagewidth' => 'Bildbreit voar dem Zuschnit',
+
+# Exif attributes
+'exif-compression-1' => 'Unkomprimiert',
+
+'exif-copyrighted-true' => 'Geschützt',
+'exif-copyrighted-false' => 'Uarheberrechtsstatus net festgeleht',
+
+'exif-unknowndate' => 'Unbekanntes Datum',
+
+'exif-orientation-1' => 'Normal',
+'exif-orientation-2' => 'Horizontal gespiechelt',
+'exif-orientation-3' => 'Um 180° gedreht',
+'exif-orientation-4' => 'Vertikal gespiechelt',
+'exif-orientation-5' => 'Entgeche dem Uahrzeichersinn um 90° gedreht und vertikal gespiechelt',
+'exif-orientation-6' => 'Um 90° entgeche dem Uahrzeichersinn gedreht',
+'exif-orientation-7' => 'Um 90° im Uahrzeigersinn gedreht und vertikal gespiechelt',
+'exif-orientation-8' => 'Um 90° im Uahrzeichersinn gedreht',
+
+'exif-planarconfiguration-1' => 'Grobformat',
+'exif-planarconfiguration-2' => 'Planarformat',
+
+'exif-colorspace-65535' => 'Net kalibriert',
+
+'exif-componentsconfiguration-0' => 'Existiert net',
+
+'exif-exposuremode-1' => 'Manuelle Belichtung',
+
+'exif-gaincontrol-0' => 'Ken',
+'exif-gaincontrol-1' => 'Gering',
+
+'exif-contrast-1' => 'Schwach',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'all',
+'namespacesall' => 'all',
+'monthsall' => 'all',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Beobachtungslist: Ännrunge',
+'watchlisttools-edit' => 'normal beoorbeite',
+'watchlisttools-raw' => 'im Listeformat beoorbeite (Import/Export)',
+
+# Core parser functions
+'duplicate-defaultsort' => 'Achtung: Der Sortierungsschlüssel „$2“ üwerschreibt den voarher verwenndte Schlüssel „$1“.',
+
+# Special:SpecialPages
+'specialpages' => 'Spezialseite',
+
+# External image whitelist
+'external_image_whitelist' => ' #Die Zeil net verännre.<pre>
+#Unnestehend könne Fragmente regulärer Ausdrücke (der Tel zwischich den //) ingeb werre.
+#Die werre mit den URLs von Bilder aus externe Quelle vergleicht.
+#En positiver Vergleich führt zur Oonzeiche von das Bild, annerfoolls weard das Bild nuar als Link oongezeicht.
+#Zeile, wo mit en # oonfänge, sin als Kommentar behandelt.
+#Es weard net zwischich Gross- und Klenschreibung unnerschied.
+
+#Fragmente regulärer Ausdrücke noh der Zeile introohn. Die Zeile net verännre.</pre>',
+
+# Special:Tags
+'tag-filter' => '[[Special:Tags|Markierungs]]-Filter:',
+
+);
index 7752c1c..e3906b6 100644 (file)
@@ -1085,7 +1085,7 @@ Móžeš sej tutón rozdźěl wobhladać; podrobnosće namakaš w [{{fullurl:{{#
 'revdelete-show-file-submit' => 'Haj',
 'revdelete-selected-text' => '{{PLURAL:$1|Wubrana wersija|Wubranej wersiji|Wubrane wersije}} wot [[:$2]]:',
 'revdelete-selected-file' => '{{PLURAL:$1|Wubrana datajowa wersija|Wubranej datajowej wersiji|Wubrane datajowe wersije}} wot [[:$2]]:',
-'logdelete-selected' => '{{PLURAL:$1|Wubrany zapisk z protokola|Wubranej zapiskaj z protokola|Wubrane zapiski z protokola|Wubrane zapiski z protokola}} za $1:',
+'logdelete-selected' => '{{PLURAL:$1|Wubrany zapisk z protokola|Wubranej zapiskaj z protokola|Wubrane zapiski z protokola}} za $1:',
 'revdelete-text-text' => 'Zhašane wersije wostanu hišće we wersijowej historiji, ale dźěle jich wobsaha njebudu přistupne zjawnosći.',
 'revdelete-text-file' => 'Zhašane datajowe wersije wostanu w datajowej historiji, ale dźěle jich wobsaha njebudu přistupne zjawnosći.',
 'logdelete-text' => 'Zhašane protokolowe zapiski wostanu hišće w protokolach, ale dźěle jich wobsaha njebudu přistupne zjawnosći.',
index 29b2959..3458030 100644 (file)
@@ -1238,8 +1238,8 @@ In quanto amministratore puoi visualizzare questo confronto di versioni; potrebb
 'revdelete-no-file' => 'Il file specificato non esiste.',
 'revdelete-show-file-confirm' => 'Si desidera visualizzare la versione cancellata del file "<nowiki>$1</nowiki>" del $2 alle $3?',
 'revdelete-show-file-submit' => 'Sì',
-'revdelete-selected-text' => '{{PLURAL:$2|Versione selezionata|Versioni selezionate}} di [[:$2]]:',
-'revdelete-selected-file' => '{{PLURAL:$2|Versione selezionata|Versioni selezionate}} del file di [[:$2]]:',
+'revdelete-selected-text' => '{{PLURAL:$1|Versione selezionata|Versioni selezionate}} di [[:$2]]:',
+'revdelete-selected-file' => '{{PLURAL:$1|Versione selezionata|Versioni selezionate}} del file di [[:$2]]:',
 'logdelete-selected' => '{{PLURAL:$1|Evento del registro selezionato|Eventi del registro selezionati}}:',
 'revdelete-text-text' => 'Le versioni cancellate appariranno ancora nella cronologia della pagina, ma parti del loro contenuto sarà inaccessibile al pubblico.',
 'revdelete-text-file' => 'Le versioni di file cancellati appariranno ancora nella cronologia del file, ma parti del loro contenuto sarà inaccessibile al pubblico.',
index 3138ed4..8d6904e 100644 (file)
@@ -1363,6 +1363,7 @@ $3 が示した理由: ''$2''",
 'revdelete-no-file' => '指定されたファイルは存在しません。',
 'revdelete-show-file-confirm' => 'ファイル「<nowiki>$1</nowiki>」の削除された$2$3の版を本当に閲覧しますか?',
 'revdelete-show-file-submit' => 'はい',
+'revdelete-selected-text' => '[[:$2]] の{{PLURAL:$1|選択された版}}:',
 'logdelete-selected' => '{{PLURAL:$1|選択された記録項目}}:',
 'revdelete-text-others' => '追加の制限を設定しない限り、{{SITENAME}} の他の管理者は非表示コンテンツにまだアクセスでき、この同じインターフェースを通してそれを復元することができます。',
 'revdelete-confirm' => 'この操作を行おうとしていること、その結果を理解していること、[[{{MediaWiki:Policy-url}}|方針]]に従っていること、を確認してください。',
index 803a1b1..9274841 100644 (file)
@@ -756,6 +756,7 @@ $2',
 'invalidtitle-unknownnamespace' => 'Нөмері $1 белгісіз есім кеңістік түрі және "$2" мәтіні жарамсыз',
 'exception-nologin' => 'Кірмегенсіз',
 'exception-nologin-text' => 'Бұл әрекетке немесе бетке қатынау үшін [[Special:Userlogin|кіріңіз]].',
+'exception-nologin-text-manual' => 'Бұл бетке қатынау немесе әрекетті орнындау үшін $1',
 
 # Virus scanner
 'virus-badscanner' => 'Дұрыс емес ішқұрылым. Белгісіз вирус сканері: $1',
@@ -763,10 +764,9 @@ $2',
 'virus-unknownscanner' => 'белгісіз антивирус:',
 
 # Login and logout pages
-'logouttext' => "<strong>Жүйеден шықтыңыз.</strong>
+'logouttext' => '<strong>Жүйеден шықтыңыз.</strong>
 
-Жүйеге кірмесеңіз де {{SITENAME}} жобасын пайдалана аласыз, немесе баяғы не өзге қатысушы ретінде жүйеге <span class='plainlinks'>[$1 қайта кіруіңізге]</span> болады.
-Аңғартпа: Кейбір беттер шолғышыңыздың кэшін тазартқанша әлі де жүйеге кіріп отырғаныңыздай көрінуі мүмкін.",
+Аңғартпа: Кейбір беттер шолғышыңыздың кэшін тазартқанша әлі де жүйеге кіріп отырғаныңыздай көрінуі мүмкін.',
 'welcomeuser' => 'Қош келдіңіз, $1!',
 'welcomecreation-msg' => 'Сіздің тіркеліміңіз жасалынды.
 [[Special:Preferences|{{SITENAME}} баптауларыңызды]] өзгертуді ұмытпаңыз.',
@@ -1023,18 +1023,18 @@ IP-мекенжайыңыз бұл беттің түзету тарихында
 Ағымдық IP мекенжайыңыз: $3, және бұғатау нөмірі: $5.
 Сұраным жасағанда осының екеуін де кірістіруіңізді сұраймыз.",
 'blockednoreason' => 'еш себебі келтірілмеген',
-'whitelistedittext' => 'Беттерді өңдеу үшін сізде $1 болуы керек.',
+'whitelistedittext' => 'Беттерді өңдеу үшін $1.',
 'confirmedittext' => 'Беттерді өңдеу үшін алдын ала Е-пошта мекенжайыңызды құптауыңыз жөн.
 Е-пошта мекенжайыңызды [[Special:Preferences|қатысушы бапталымдарыңыз]] арқылы қойыңыз да жарамдылығын тексеріп шығыңыз.',
 'nosuchsectiontitle' => 'Бұл бөлімді табу мүмкін емес',
 'nosuchsectiontext' => 'Сіз бұрын болмаған бөлімді өзгертпекшісіз.
 Мүмкін бұл бетті қарап жатқаныңызда ол бөлім жойылған немесе басқа орынға көшірілген.',
 'loginreqtitle' => 'Кіруіңіз керек',
-'loginreqlink' => 'кÑ\96Ñ\80Ñ\83',
-'loginreqpagetext' => 'Басқа беттерді көру үшін сіз $1 болуыңыз жөн.',
+'loginreqlink' => 'кÑ\96Ñ\80Ñ\96Ò£Ñ\96з',
+'loginreqpagetext' => 'Басқа беттерді көру үшін $1.',
 'accmailtitle' => 'Құпия сөз жөнелтілді.',
-'accmailtext' => "$2 жайына [[User talk:$1|$1]] үшін құпия сөзі жөнелтілді.
-Бұл жаңа қатысушы үшін құпия сөз ''[[Special:ChangePassword|құпия сөзді өзгерту]]'' бетінде кіру үстінде өзгертілген.",
+'accmailtext' => '$2 дегенге [[User talk:$1|$1]] үшін құпия сөзі жөнелтілді.
+Бұл жаңа қатысушы үшін құпия сөз <em> [[Special:ChangePassword|құпия сөзді өзгерту]]</em>  бетінде кіру үстінде өзгертілген.',
 'newarticle' => '(Жаңа)',
 'newarticletext' => 'Сілтемеге еріп әлі басталмаған бетке келіпсіз.
 Бетті бастау үшін, төменгі терезеде мәтініңізді теріңіз (көбірек ақпарат үшін [$1 анықтама бетін] қараңыз).
@@ -1071,11 +1071,11 @@ IP-мекенжайыңыз бұл беттің түзету тарихында
 'previewconflict' => 'Бұл қарап шығу беті жоғарғы кірістіру орнындағы мәтінді қамтиды да және сақталғандағы өңді көрсетпек.',
 'session_fail_preview' => "'''Ғафу етіңіз! Сессия деректері жоғалуы салдарынан өңдемеңізді бітіре алмаймыз.
 Қайта байқап көріңіз. Егер бұл әлі істелмесе, шығуды және қайта кіруді байқап көріңіз.'''",
-'session_fail_preview_html' => "'''Ғафу етіңіз! Сессия деректері жоғалуы салдарынан өңдемеңізді бітіре алмаймыз.'''
+'session_fail_preview_html' => "<strong>Кешіріңіз! Сессия деректері жоғалуы салдарынан өңдемеңізді бітіре алмаймыз.</strong>
 
-''{{SITENAME}} жобасында қам HTML қосылған, JavaScript шабуылдардан қорғану үшін алдын ала қарап шығу жасырылған.''
+<em>{{SITENAME}} жобасында қам HTML қосылған, JavaScript шабуылдардан қорғану үшін алдын ала қарап шығу жасырылған.</em>
 
-'''Егер бұл өңдеме адал талап болса, қайта байқап көріңіз. Егер бұл әлі істемесе, шығуды және қайта кіруді байқап көріңіз.'''",
+<strong>Егер бұл өңдеме адал талап болса, қайта байқап көріңіз.</strong> Егер бұл әлі істемесе, [[Special:UserLogout|шығуды]] және қайта кіруді байқап көріңіз.'''",
 'token_suffix_mismatch' => "'''Өңдемеңіз тайдырылды, себебі тұтынғышыңыз өңдеме деректер бумасындағы тыныс белгілерін бүлдіртті.
 Бет мәтіні бүлінбеу үшін өңдемеңіз тайдырылады.
 Бұл кей уақытта қатесі толған веб-негізінде тіркелуі жоқ прокси-серверді пайдаланған болуы мүмкін.'''",
@@ -1349,7 +1349,7 @@ $1",
 'searchprofile-project-tooltip' => '$1 іздеу',
 'searchprofile-images-tooltip' => 'Файлдарды іздеу',
 'searchprofile-everything-tooltip' => 'Барлық беттерден іздеу (талқылау беттерін қоса)',
-'searchprofile-advanced-tooltip' => 'Белгіленген есім кеңістігінен іздеу',
+'searchprofile-advanced-tooltip' => 'Әдепкі есім кеңістігінен іздеу',
 'search-result-size' => '$1 ({{PLURAL:$2|1 сөз|$2 сөз}})',
 'search-result-category-size' => '{{PLURAL:$1|1 мүше|$1 мүше}} ({{PLURAL:$2|1 санатша|$2 санатша}}, {{PLURAL:$3|1 файл|$3 файл}})',
 'search-result-score' => 'Арақатынастылығы: $1 %',
@@ -1360,7 +1360,7 @@ $1",
 'search-interwiki-default' => '$1 нәтиже:',
 'search-interwiki-more' => '(көбірек)',
 'search-relatedarticle' => 'Қатысты',
-'searcheverything-enable' => 'Ð\91елгÑ\96ленген есім кеңістігінен іздеу',
+'searcheverything-enable' => 'Ð\91аÑ\80лÑ\8bÒ\9b есім кеңістігінен іздеу',
 'searchrelated' => 'қатысты',
 'searchall' => 'барлық',
 'showingresults' => "Төменде нөмір '''$2''' орнынан бастап барынша '''$1''' нәтиже көрсетіледі.",
@@ -1369,7 +1369,7 @@ $1",
 'search-nonefound' => 'Сұрауға сәйкес нәтижелер табылмады.',
 'powersearch-legend' => 'Кеңейтілген іздеу',
 'powersearch-ns' => 'Атау кеңістіктері бойынша іздеу:',
-'powersearch-redir' => 'Ð\90йдаÑ\82уларды тізімдеу',
+'powersearch-redir' => 'Ð\91аÒ\93Ñ\8bÑ\82Ñ\82ауларды тізімдеу',
 'powersearch-togglelabel' => 'Белгілеу:',
 'powersearch-toggleall' => 'Барлығы',
 'powersearch-togglenone' => 'Ешқандай',
@@ -1728,7 +1728,7 @@ $1",
 'reuploaddesc' => 'Жүктеу пішініне қайта келу.',
 'upload-tryagain' => 'Файл сипаттамасының өзгерістерін жөнелту',
 'uploadnologin' => 'Кірмегенсіз',
-'uploadnologintext' => 'Файлдарды $1 жүктеуіңіз керек.',
+'uploadnologintext' => 'Файлдарды жүктеу үшін $1.',
 'upload_directory_missing' => 'Жүктеу қалтасы ($1) жетіспейді және веб-сервер жарата алмайды.',
 'upload_directory_read_only' => 'Жүктеу қалтасына ($1) веб-сервер жаза алмайды.',
 'uploaderror' => 'Жүктеу қатесі',
@@ -2239,7 +2239,7 @@ URL дұрыс екендігін және торап істеп тұрғаны
 'mywatchlist' => 'Бақылау тізімі',
 'watchlistfor2' => '$1 ($2) бақылау тізімі',
 'nowatchlist' => 'Бақылау тізіміңізде еш дана жоқ',
-'watchlistanontext' => 'Бақылау тізіміңіздегі даналарды қарау, не өңдеу үшін $1 керек.',
+'watchlistanontext' => 'Бақылау тізіміңіздегі даналарды қарау не өңдеу үшін $1.',
 'watchnologin' => 'Кірмегенсіз',
 'watchnologintext' => 'Бақылау тізіміңізді өзгерту үшін [[Special:UserLogin|кіріңіз]].',
 'addwatch' => 'Бақылау тізіміңізге қосу',
@@ -2446,8 +2446,8 @@ $2 соңғы нұсқасына қайта өзгертті.',
 'undeletepage' => 'Жойылған беттерді қарау және қалпына келтіру',
 'undeletepagetitle' => "'''Келесі тізім [[:$1|$1]] дегеннің жойылған түзетулерінен тұрады'''.",
 'viewdeletedpage' => 'Жойылған беттерді қарау',
-'undeletepagetext' => 'Келесі беттер жойылды деп белгіленген, бірақ мағлұматы мұрағатта бар
-жÓ\99не Ò\9bалпÑ\8bна ÐºÐµÐ»Ñ\82Ñ\96Ñ\80Ñ\83ге Ð¼Ò¯Ð¼ÐºÑ\96н. Ð\9cÒ±Ñ\80аÒ\93аÑ\82 Ð¼ÐµÑ\80зÑ\96м Ð±Ð¾Ð¹Ñ\8bнÑ\88а тазаланып тұруы мүмкін.',
+'undeletepagetext' => 'Келесі {{PLURAL:$1|бет жойылған бірақ|$1 бет жойылған бірақ}} мағлұматы мұрағатта бар
+жÓ\99не Ò\9bалпÑ\8bна ÐºÐµÐ»Ñ\82Ñ\96Ñ\80Ñ\83ге Ð±Ð¾Ð»Ð°Ð´Ñ\8b. Ð\9cÒ±Ñ\80аÒ\93аÑ\82 Ò±Ð´Ð°Ð¹Ñ\8b тазаланып тұруы мүмкін.',
 'undelete-fieldset-title' => 'Нұсқаларды қалпына келтіру',
 'undeleteextrahelp' => "Бүкіл бетті қалпына келтіру үшін, барлық құсбелгі көздерді босатып '''''{{int:Қалпына келтір!}}''''' батырмасын нұқыңыз.
 Бөлектеумен қалпына келтіру орындау үшін, келтіремін деген түзетулеріне сәйкес көздерге құсбелгі салыңыз да, және '''''{{int:Қалпына келтір!}}''''' түймесін нұқыңыз. '''''Қайта қой''''' түймесін нұқығанда мәндеме аумағы тазартады және барлық құсбелгі көздерін босатады.",
@@ -2554,9 +2554,9 @@ $1',
 'unblock' => 'Қатысушыны бұғаттамау',
 'blockip' => 'Қатысушыны бұғаттау',
 'blockip-legend' => 'Қатысушыны бұғаттау',
-'blockiptext' => 'ТөмендегÑ\96 Ð¿Ñ\96Ñ\88Ñ\96н Ò\9bаÑ\82Ñ\8bÑ\81Ñ\83Ñ\88Ñ\8bнÑ\8bÒ£ Ð¶Ð°Ð·Ñ\83 Ñ\80Ò±Ò\9bÑ\81аÑ\82Ñ\8bн Ð±ÐµÐ»Ð³Ñ\96лÑ\96 IP Ð¼ÐµÐºÐµÐ½Ð¶Ð°Ð¹Ñ\8bмен Ð½Ðµ Ð°Ñ\82Ñ\8bмен бұғаттау үшін қолданылады.
-Бұны тек бұзақылықты қақпайлау үшін және де [[{{Mediawiki:Policy-url}}|ережелер]] бойынша атқаруыңыз жөн.
-Төменде тиісті себебін толтырып көрсетіңіз (мысалы, дәйекке бұзақылықпен өзгерткен беттерді келтіріп).',
+'blockiptext' => 'ТөмендегÑ\96 Ð¿Ñ\96Ñ\88Ñ\96н Ò\9bаÑ\82Ñ\8bÑ\81Ñ\83Ñ\88Ñ\8bнÑ\8bÒ£ Ð¶Ð°Ð·Ñ\83 Ñ\80Ò±Ò\9bÑ\81аÑ\82Ñ\8bн Ð±ÐµÐ»Ð³Ñ\96лÑ\96 IP Ð¼ÐµÐºÐµÐ½Ð¶Ð°Ð¹Ñ\8bнан Ð½Ðµ Ò\9bаÑ\82Ñ\8bÑ\81Ñ\83Ñ\88Ñ\8b ÐµÑ\81Ñ\96мÑ\96нен бұғаттау үшін қолданылады.
+Бұны тек бұзақылықты қақпайлау үшін және де [[{{MediaWiki:Policy-url}}|ережелер]] бойынша атқаруыңыз жөн.
+Төменде тиісті себебін көрсетіңіз (мысалы, дәйекке бұзақылықпен өзгерткен беттерді келтіріп).',
 'ipadressorusername' => 'IP-мекенжайы немесе қатысушы аты:',
 'ipbexpiry' => 'Мерзімі бітпек:',
 'ipbreason' => 'Себебі:',
@@ -2625,9 +2625,13 @@ $1',
 'change-blocklink' => 'Бұғаттауын өзгерту',
 'contribslink' => 'үлесі',
 'emaillink' => 'хат жіберу',
-'autoblocker' => 'IP мекенжайыңызды жуықта "[[User:$1|$1]]" пайдаланған, сондықтан өзбұғатталған.
-$1 бұғаттауы үшін келтірілген себебі: «$2».',
+'autoblocker' => 'IP Ð¼ÐµÐºÐµÐ½Ð¶Ð°Ð¹Ñ\8bÒ£Ñ\8bздÑ\8b Ð¶Ñ\83Ñ\8bÒ\9bÑ\82а "[[User:$1|$1]]" Ð¿Ð°Ð¹Ð´Ð°Ð»Ð°Ð½Ò\93ан, Ñ\81ондÑ\8bÒ\9bÑ\82ан Ó©Ð·Ð´Ñ\96гÑ\96нен Ð±Ò±Ò\93аÑ\82Ñ\82алÒ\93ан.
+$1 бұғаттауы үшін келтірілген себебі: «\'\'$2\'\'».',
 'blocklogpage' => 'Бұғаттау журналы',
+'blocklog-showlog' => 'Бұл қатысушы ұдайы бұғатталып отырған.
+Дерек үшін төменде бұғатталу журналы берілген:',
+'blocklog-showsuppresslog' => 'Бұл қатысушы ұдайы жасырылып және бұғатталып отырған.
+Дерек үшін төменде жасыру журналы берілген:',
 'blocklogentry' => '[[$1]] дегенді $2 мерзімге бұғаттады $3',
 'blocklogtext' => 'Бұл қатысушыларды бұғаттау/бұғаттамау әрекеттерінің журналы.
 Өздіктік бұғатталған IP мекенжайлар осында тізімделгемеген.
@@ -2655,6 +2659,7 @@ $1 бұғаттауы үшін келтірілген себебі: «$2».',
 'sorbsreason' => 'IP мекенжайыңыз {{SITENAME}} торабында қолданылған DNSBL қара тізіміндегі ашық прокси-сервер деп табылады.',
 'sorbs_create_account_reason' => 'IP мекенжайыңыз {{SITENAME}} торабында қолданылған DNSBL қара тізіміндегі ашық прокси-сервер деп табылады.
 Жаңа тіркелгі жасай алмайсыз.',
+'ipbblocked' => 'Басқа қатысушыларды бұғаттай не бұғаттаудан шығара алмайсыз себебі сіз өзіңізді бұғаттағасызү',
 'ipbnounblockself' => 'Өзіңіздің бұғаттауыңызды алып тастау рұқсат етілмеген',
 
 # Developer tools
@@ -2672,7 +2677,7 @@ $1 бұғаттауы үшін келтірілген себебі: «$2».',
 'lockdbsuccesssub' => 'Дерекқор құлыптауы сәтті өтті',
 'unlockdbsuccesssub' => 'Дерекқор құлыптауы аласталды',
 'lockdbsuccesstext' => 'Дерекқор құлыпталды.<br />
\91апÑ\82аÑ\83 Ñ\82олÑ\8bÒ\9b Ó©Ñ\82кÑ\96зÑ\96лгеннен ÐºÐµÐ¹Ñ\96н [[{{#special:Unlockdb}}|Ò\9bұлÑ\8bпÑ\82аÑ\83Ñ\8bн Ð°Ð»Ð°Ñ\81Ñ\82аÑ\83Ò\93а]] ұмытпаңыз.',
¢ÐµÑ\85никалÑ\8bÒ\9b Ò\9bÑ\8bзмеÑ\82 ÐºÓ©Ñ\80Ñ\81еÑ\82Ñ\83Ñ\96Ò£Ñ\96здÑ\96 Ð±Ñ\96Ñ\82Ñ\96Ñ\80геннен ÐºÐµÐ¹Ñ\96н [[Special:UnlockDB|Ò\9bұлÑ\8bпÑ\82аÑ\83Ñ\8bн Ð°Ð»Ð°Ñ\81Ñ\82аÑ\83дÑ\8b]] ұмытпаңыз.',
 'unlockdbsuccesstext' => 'Құлыпталған дерекқор сәтті ашылды.',
 'lockfilenotwritable' => 'Дерекқор құлыптау файлы жазылмайды.
 Дерекқорды құлыптау не ашу үшін, веб-сервер файлға жазу рұқсаты болу керек.',
@@ -2712,6 +2717,9 @@ $1 бұғаттауы үшін келтірілген себебі: «$2».',
 'moveuserpage-warning' => '<strong>Ескерту:</strong> Сіз қатысушы бетін жылжытпақшысыз. Назар аударыңыз, қатысушы беті ғана жылжытылуы мүмкін және қатысушы аты <em>өзгертілмейді</em>.',
 'movenologintext' => 'Бетті жылжыту үшін тіркелген болуыңыз және [[{{#special:UserLogin}}|кіруіңіз]] жөн.',
 'movenotallowed' => '{{SITENAME}} жобасында беттерді жылжытуға рұқсатыңыз жоқ.',
+'movenotallowedfile' => 'Файлдарды жылжытуға рұқсатыңыз жоқ.',
+'cant-move-user-page' => 'Қатысушы беттерін жылжытуға рұқсатыңыз жоқ (төменгі беттерінен басқа).',
+'cant-move-to-user-page' => 'Бетті қатысушы бетіне жылжытуға рұқсатыңыз жоқ (төменгі беттерін қоспағанда).',
 'newtitle' => 'Жаңа бет атауы:',
 'move-watch' => 'Бұл бетті бақылау',
 'movepagebtn' => 'Бетті жылжыту',
@@ -2745,7 +2753,9 @@ $1 бұғаттауы үшін келтірілген себебі: «$2».',
 бет өзінің үстіне жылжытылмайды.',
 'immobile-source-namespace' => '"$1" есім кеңістігіндегі беттер жылжытылмайды',
 'immobile-target-namespace' => '"$1" есім кеңістігіне беттерді жылдытылмайды',
+'immobile-target-namespace-iw' => 'Бетті жылжытуы үшін интеруики сілтемесі жарамды нысана емес.',
 'immobile-source-page' => 'Бұл бет жылжытылмайды.',
+'immobile-target-page' => 'Бұл тағайындалған атауға жылжытылмайды',
 'imagenocrossnamespace' => 'Файл емес есім кеңістігіне файл жылжытылмайды',
 'nonfile-cannot-move-to-file' => 'Файл емес есім кеңістігінен файл есім кеңістігіне жылжытылмайды',
 'imagetypemismatch' => 'Файлдың жаңа кеңейтімі бұның түріне сәйкес емес',
@@ -2755,6 +2765,10 @@ $1 бұғаттауы үшін келтірілген себебі: «$2».',
 Төменде ең соңғы журнал жазбасы көрсетілген:',
 'semiprotectedpagemovewarning' => "'''Ескерту:''' Бұл бет жылжытудан қорғалған оны тек тіркелген қатысушылар ғана жылжытыта алады.
 Төменде ең соңғы журнал енгізілімі көрсетілген:",
+'move-over-sharedrepo' => '== Файл бар ==
+[[:$1]] файлы Ортаққорда бар. Бұл атауға файлды жылжытқанда Ортаққордағы файлдың үстінен жазылады.',
+'file-exists-sharedrepo' => 'Таңдалған файл атауы әлдеқашан ортаққорда пайдаланылады. 
+Басқа атау таңдаңыз.',
 
 # Export
 'export' => 'Беттерді сыртқа беру',
@@ -2821,6 +2835,7 @@ $2',
 'importstart' => 'Беттерді сырттан алуда…',
 'import-revision-count' => '$1 түзету',
 'importnopages' => 'Сырттан алынатын беттер жоқ.',
+'imported-log-entries' => '$1 импортталды {{PLURAL:$1|журнал жазбасы|журнал жазбасы}}.',
 'importfailed' => 'Сырттан алу сәтсіз бітті: <nowiki>$1</nowiki>',
 'importunknownsource' => 'Cырттан алынатын қайнар түрі белгісіз',
 'importcantopen' => 'Сырттан алынатын файл ашылмайды',
@@ -2838,6 +2853,8 @@ $2',
 'import-nonewrevisions' => 'Барлық түзетулері алдында сырттан алынған.',
 'xml-error-string' => '$1 нөмір $2 жолда, баған $3 (байт $4): $5',
 'import-upload' => 'XML деректерін жүктеу',
+'import-token-mismatch' => 'Сессия деректері жоғалған.
+Қайта байқап көріңіз.',
 'import-options-wrong' => 'Қате {{PLURAL:$2|параметр|параметр}}: <nowiki>$1</nowiki>',
 
 # Import log
@@ -2917,7 +2934,7 @@ $2',
 'tooltip-upload' => 'Жүктеуді бастау',
 'tooltip-rollback' => '"Шегіндіру" сілтемесін бір рет басу арқылы соңға редактордың барлық қатар өңдемелерін өшіру',
 'tooltip-preferences-save' => 'Бапталымдарыңызды сақтау',
-'tooltip-summary' => 'Ò\9aÑ\8bÑ\81Ò\9bаÑ\88а Ñ\81ипаÑ\82Ñ\82амаÑ\81Ñ\8bн Ð¶Ð°Ð·Ñ\8bÒ£Ñ\8bз',
+'tooltip-summary' => 'Ò\9aÑ\8bÑ\81Ò\9bаÑ\88а Ñ\82үйÑ\96ндемеÑ\81Ñ\96н ÐµÐ½Ð³Ñ\96зÑ\96Ò£Ñ\96з',
 
 # Stylesheets
 'common.css' => '/* Мында орналастырылған CSS барлық мәнерлерде қолданылады */',
@@ -2948,8 +2965,8 @@ $2',
 
 # Spam protection
 'spamprotectiontitle' => '«Спам»-нан қорғайтын сүзгі',
-'spamprotectiontext' => 'Ð\91ұл Ð±ÐµÑ\82Ñ\82Ñ\96Ò£ Ñ\81аÒ\9bÑ\82аÑ\83Ñ\8bн Â«Ñ\81пам» Ñ\81үзгÑ\96Ñ\81і бұғаттады.
-Бұның себебі шеттік торап сілтемесінен болуы мүмкін.',
+'spamprotectiontext' => 'СаÒ\9bÑ\82аÒ\93Ñ\8bÒ£Ñ\8bз ÐºÐµÐ»Ð³ÐµÐ½ Ð¼Ó\99Ñ\82Ñ\96ндÑ\96 Ñ\81пам Ñ\81үзгÑ\96Ñ\88і бұғаттады.
+Бұның себебі қаратізімге енген сыртқы сайт сілтемесінен болуы мүмкін.',
 'spamprotectionmatch' => 'Келесі «спам» мәтіні сүзгіленген: $1',
 'spambot_username' => 'MediaWiki spam cleanup',
 'spam_reverting' => '$1 дегенге сілтемелері жоқ соңғы нұсқасына қайтарылды',
@@ -3165,9 +3182,9 @@ $1',
 'exif-exposureprogram' => 'Ұсталым бағдарламасы',
 'exif-spectralsensitivity' => 'Спектр бойынша сезгіштігі',
 'exif-isospeedratings' => 'ISO жылдамдық жарнақтауы (жарық сезгіштігі)',
-'exif-shutterspeedvalue' => 'Жапқыш жылдамдылығы',
-'exif-aperturevalue' => 'Саңылаулық',
-'exif-brightnessvalue' => 'Жарықтылық',
+'exif-shutterspeedvalue' => 'APEX жапқыш жылдамдылығы',
+'exif-aperturevalue' => 'APEX саңылаулық',
+'exif-brightnessvalue' => 'APEX жарықтылық',
 'exif-exposurebiasvalue' => 'Ұсталым өтемі',
 'exif-maxaperturevalue' => 'Барынша саңылау ашуы',
 'exif-subjectdistance' => 'Нысана қашықтығы',
@@ -3260,6 +3277,9 @@ $1',
 'exif-label' => 'Деңгей',
 'exif-copyrighted' => 'Авторлық құқық күйі:',
 'exif-copyrightowner' => 'Авторлық құқықтар иесі',
+'exif-usageterms' => 'Қолдану шарттары',
+'exif-disclaimer' => 'Қабылдамау хабарламасы',
+'exif-contentwarning' => 'Мазмұн ескертуі',
 
 # Exif attributes
 'exif-compression-1' => 'Ұлғайтылған',
@@ -3482,7 +3502,8 @@ $5
 
 # Scary transclusion
 'scarytranscludedisabled' => '[Уики-аралық кірікбеттер өшірілген]',
-'scarytranscludefailed' => '[$1 үшін үлгі келтіруі сәтсіз бітті; ғафу етіңіз]',
+'scarytranscludefailed' => '[$1 үшін үлгі келтіруі сәтсіз болды]',
+'scarytranscludefailed-httpstatus' => '[$1: HTTP $2 үшін үлгі келтіруі сәтсіз болды]',
 'scarytranscludetoolong' => '[URL тым ұзын]',
 
 # Delete conflict
@@ -3644,9 +3665,15 @@ $5
 'version-hook-name' => 'Тұзақ атауы',
 'version-hook-subscribedby' => 'Тұзақ тартқыштары',
 'version-version' => '(Нұсқасы: $1)',
-'version-license' => 'Лицензиясы',
+'version-license' => 'MediaWiki Лицензиясы',
 'version-ext-license' => 'Лицензия',
+'version-ext-colheader-name' => 'Кеңейтілім',
+'version-ext-colheader-version' => 'Нұсқасы',
+'version-ext-colheader-license' => 'Лицензиясы',
+'version-ext-colheader-description' => 'Сипаттамасы',
 'version-ext-colheader-credits' => 'Автор(лары)',
+'version-license-title' => '$1 үшін лицензия',
+'version-license-not-found' => 'Бұл кеңейтілім үшін егжей-тегжейі жоқ лицензия мәліметі табылды.',
 'version-poweredby-others' => 'басқалар',
 'version-software' => 'Орнатылған бағдарламалық жасақтама',
 'version-software-product' => 'Өнім',
@@ -3659,6 +3686,7 @@ $5
 'redirect-lookup' => 'Іздеу:',
 'redirect-value' => 'Мән:',
 'redirect-user' => 'Қатысушы ID',
+'redirect-page' => 'Бет ID-і',
 'redirect-revision' => 'Бет түзетуі',
 'redirect-file' => 'Файл атауы',
 'redirect-not-exists' => 'Мән табылмады',
@@ -3676,7 +3704,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'Арнайы беттер',
-'specialpages-note' => '* Кәдімгі арнайы беттер.
+'specialpages-note' => '* Қалпты арнайы беттер.
 * <span class=="mw-specialpagerestricted">Шектелген арнайы беттер.</span>',
 'specialpages-group-maintenance' => 'Техникалық талқылау есептері',
 'specialpages-group-other' => 'Тағы басқа арнайы беттер',
@@ -3718,6 +3746,9 @@ $5
 'compare-rev1' => 'Нұсқа 1',
 'compare-rev2' => 'Нұсқа 2',
 'compare-submit' => 'Салыстыру',
+'compare-invalid-title' => 'Cіз көрсеткен атау жарамды емес.',
+'compare-title-not-exists' => 'Cіз көрсеткен атау жоқ.',
+'compare-revision-not-exists' => 'Cіз көрсеткен нұсқа жоқ.',
 
 # Database error messages
 'dberr-header' => 'Бұл уикиде мәселе бар',
@@ -3750,7 +3781,8 @@ $5
 'logentry-move-move_redir-noredirect' => '$1 $3 бетін $4 деген айдатқыш үстіне {{GENDER:$2|жылжытты}} (айдатқыш қалдырылмады)',
 'logentry-newusers-newusers' => '$1 жаңадан қатысушы тіркелгісін {{GENDER:$2|жасады}}',
 'logentry-newusers-create' => '$1 жаңадан аккаунт тіркеді',
-'logentry-newusers-create2' => '$1 $3 деген аккаунт тіркеді',
+'logentry-newusers-create2' => '$1 $3 деген аккаунт {{GENDER:$2|тіркеді}}',
+'logentry-newusers-byemail' => '$1 $3 деген аккаунт {{GENDER:$2|тіркеді}} және құпия сөзі е-пошта арқылы жіберілді',
 'logentry-newusers-autocreate' => '$1 қатысушы аккаунтын автоматты түрде {{GENDER:$2|тіркеді}}',
 'logentry-rights-rights' => '$1 $3 үшін топ мүшелігін $4 дегеннен $5 дегенге {{GENDER:$2|өзгерті}}',
 'logentry-rights-rights-legacy' => '$1 $3 үшін топ мүшелігін {{GENDER:$2|өзгерті}}',
index e2f2e1c..17be9c2 100644 (file)
@@ -951,8 +951,8 @@ $1 뒤에 다시 시도하세요.',
 
 # Special:PasswordReset
 'passwordreset' => '비밀번호 재설정',
-'passwordreset-text-one' => '비밀번호를 재설정하려면 이 양식을 작성해주세요.',
-'passwordreset-text-many' => '{{PLURAL:$1|이메일로 임시 비밀번호를 발급받으려면 필드 중 하나를 채우세요.}}',
+'passwordreset-text-one' => '이메일을 통해 임시 비밀번호를 받으려면 이 양식을 채우세요.',
+'passwordreset-text-many' => '{{PLURAL:$1|이메일을 통해 임시 비밀번호를 받으려면 필드 중 하나를 채우세요.}}',
 'passwordreset-legend' => '비밀번호 재설정',
 'passwordreset-disabled' => '이 위키에서는 비밀번호를 재설정할 수 없습니다.',
 'passwordreset-emaildisabled' => '이 위키에서 이메일 기능이 비활성화되어 있습니다.',
@@ -989,7 +989,7 @@ $2
 # Special:ChangeEmail
 'changeemail' => '이메일 주소 바꾸기',
 'changeemail-header' => '계정 메일 주소 바꾸기',
-'changeemail-text' => 'ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8c를 ë°\94꾸려면 ì\9d´ ì\96\91ì\8b\9dì\9d\84 ì\9e\91ì\84±í\95´ì£¼ì\84¸ì\9a\94. 바뀜을 확인하기 위해 비밀번호를 입력해야 합니다.',
+'changeemail-text' => 'ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8c를 ë°\94꾸려면 ì\9d´ ì\96\91ì\8b\9dì\9d\84 ì±\84ì\9a°ì\84¸ì\9a\94. ì\9d´ 바뀜을 확인하기 위해 비밀번호를 입력해야 합니다.',
 'changeemail-no-info' => '이 특수 문서에 직접 접근하려면 반드시 로그인해야 합니다.',
 'changeemail-oldemail' => '현재 이메일 주소 :',
 'changeemail-newemail' => '새 이메일 주소:',
@@ -1345,10 +1345,13 @@ $2개 보다 적게 {{PLURAL:$2|써야}} 하지만 {{PLURAL:$1|지금은 $1개
 'revdelete-no-file' => '해당 파일이 존재하지 않습니다.',
 'revdelete-show-file-confirm' => '정말 "<nowiki>$1</nowiki>" 파일의 삭제된 $2 $3 버전을 보시겠습니까?',
 'revdelete-show-file-submit' => '예',
+'revdelete-selected-text' => '[[:$2]]의 {{PLURAL:$1|선택한 판}}:',
+'revdelete-selected-file' => '[[:$2]]의 {{PLURAL:$1|선택한 파일 판}}:',
 'logdelete-selected' => '{{PLURAL:$1|선택한 기록}}:',
 'revdelete-text-text' => '삭제된 판은 여전히 문서 역사에 남게 되지만, 그 내용의 일부는 다른 사람들이 접근할 수 없게 됩니다.',
 'revdelete-text-file' => '삭제된 파일 버전은 계속 파일 역사에 남게 되지만, 내용의 일부는 다른 사람들이 접근할 수 없게 됩니다.',
 'logdelete-text' => '삭제된 로그 내용은 로그에 보여지겠지만, 내용의 일부는 다른 사람들이 접근할 수 없게 됩니다.',
+'revdelete-text-others' => '{{SITENAME}}에 있는 다른 관리자는 여전히 숨겨진 내용에 접근할 수 있고 추가 제한이 설정되어 있지 않으면, 이 같은 인터페이스를 통해 다시 되살릴 수 있습니다.',
 'revdelete-confirm' => '이 작업을 수행하는 것의 결과를 알고 있으며, [[{{MediaWiki:Policy-url}}|정책]]에 맞는 행동인지 확인해주세요.',
 'revdelete-suppress-text' => "숨기기는 '''다음 경우에만''' 사용되어야 합니다:
 * 잠재적인 비방 정보
@@ -2230,6 +2233,11 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 # List redirects
 'listredirects' => '넘겨주기 문서 목록',
 
+# List duplicated files special page
+'listduplicatedfiles' => '중복된 파일의 목록',
+'listduplicatedfiles-summary' => '파일의 가장 최근 판은 어떤 다른 파일의 가장 최근 판과 중복되는 파일의 목록입니다. 로컬 파일만 고려됩니다.',
+'listduplicatedfiles-entry' => '[[:File:$1|$1]] 파일은 [[$3|{{PLURAL:$2|중복|$2번 중복}}]]이 있습니다.',
+
 # Unused templates
 'unusedtemplates' => '사용하지 않는 틀 목록',
 'unusedtemplatestext' => '다른 문서에서 사용하지 않는 {{ns:template}} 이름공간 문서의 목록입니다.
@@ -2345,7 +2353,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'deadendpagestext' => '{{SITENAME}} 내의 다른 문서로 나가는 링크가 없는 문서의 목록입니다.',
 'protectedpages' => '보호된 문서 목록',
 'protectedpages-indef' => '오른쪽 조건에 맞는 보호만 보기',
-'protectedpages-summary' => '이 문서는 현재 보호된 기존 문서를 나열합니다. 만들기 보호된 문서 제목 목록을 보려면 [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]]를 참조하세요.',
+'protectedpages-summary' => '이 페이지는 현재 보호된 기존 문서를 나열합니다. 만들기 보호된 문서 제목 목록을 보려면 [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]]를 보세요.',
 'protectedpages-cascade' => '연쇄적 보호만 보기',
 'protectedpages-noredirect' => '넘겨주기를 숨기기',
 'protectedpagesempty' => '보호되어 있는 문서가 없습니다.',
@@ -2358,7 +2366,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'protectedpages-unknown-timestamp' => '알 수 없음',
 'protectedpages-unknown-performer' => '알 수 없는 사용자',
 'protectedtitles' => '만들기 보호된 표제어 목록',
-'protectedtitles-summary' => '이 문서는 현재 만들기 보호가 설정되어 있는 문서 제목을 나열합니다. 보호된 기존 문서들의 목록을 보려면 [[{{#special:ProtectedPages}}|{{int:protectedpages}}]]을 참조하세요.',
+'protectedtitles-summary' => '이 페이지는 현재 만들기 보호가 설정되어 있는 문서 제목을 나열합니다. 보호된 기존 문서들의 목록을 보려면 [[{{#special:ProtectedPages}}|{{int:protectedpages}}]]을 보세요.',
 'protectedtitlesempty' => '해당 조건에 맞는 만들기 금지 표제어가 없습니다.',
 'listusers' => '사용자 목록',
 'listusers-editsonly' => '기여가 있는 사용자만 보기',
@@ -2691,7 +2699,7 @@ $UNWATCHURL
 'protect-locked-access' => "문서 보호 수준을 바꿀 권한이 없습니다.
 '''$1''' 문서의 권한은 다음과 같습니다.",
 'protect-cascadeon' => '다음 {{PLURAL:$1|문서}}에 연쇄적 보호가 작동하고 있어 그 문서에 속한 이 문서도 현재 보호됩니다.
\82¬ì\9a©ì\9e\90ë\8a\94 ì\9d´ ë¬¸ì\84\9cì\9d\98 ë³´í\98¸ ì\84¤ì \95ì\9d\84 ë°\94꾸ì\8b¤ ì\88\98 ì\9e\88ì§\80ë§\8c 연쇄적 보호에는 영향을 주지 않습니다.',
\9d´ ë¬¸ì\84\9cì\9d\98 ë³´í\98¸ ì\84¤ì \95ì\9d\84 ë°\94꾸ë\8a\94 ê²\83ì\9d\80 연쇄적 보호에는 영향을 주지 않습니다.',
 'protect-default' => '모든 사용자에게 허용',
 'protect-fallback' => '"$1" 권한의 사용자만 허용',
 'protect-level-autoconfirmed' => '자동 인증된 사용자만 허용',
index b01635b..7a021da 100644 (file)
@@ -541,6 +541,7 @@ $2',
 'gotaccountlink' => 'Системагъа кир',
 'userlogin-resetlink' => 'Кирир ючюн билгилеригизни унутхан этгенмисиз?',
 'userlogin-resetpassword-link' => 'Паролну джибериу',
+'userlogin-helplink2' => 'Кириуде болушлукъ',
 'userlogin-createanother' => 'Башха аккаунт къурау',
 'createacct-join' => 'Билгилеринги тюбюрекде джаз.',
 'createacct-emailrequired' => 'Электрон почтаны адреси',
@@ -1417,10 +1418,12 @@ $1 {{PLURAL:$1|1=символдан|символладан}} кеб болург
 'recentchanges-legend-newpage' => '(къарагъыз: [[Special:NewPages|джангы бетлени тизмеси]])',
 'rcnotefrom' => 'Тюбюрекде <strong>$2</strong> башлаб (<strong>$1</strong> дери) тюрлендириуле кёрюнедиле',
 'rclistfrom' => '$1 башлаб джангы тюрлениулени кёргюз',
-'rcshowhideminor' => 'гитче тюрлендириулени $1',
-'rcshowhidebots' => 'ботланы $1',
-'rcshowhideliu' => '$1 системагъа кирген къошулуучу',
-'rcshowhideanons' => 'анонимлени $1',
+'rcshowhideminor' => 'гитче тюрлениулени $1',
+'rcshowhideminor-show' => 'кёргюз',
+'rcshowhideminor-hide' => 'джашыр',
+'rcshowhidebots' => 'ботланыкъыланы $1',
+'rcshowhideliu' => 'системагъа киргенленикилени $1',
+'rcshowhideanons' => 'анонимленикилени $1',
 'rcshowhidepatr' => '$1 патруль этилиннген тюрлендириуле',
 'rcshowhidemine' => 'кесими тюрлендириулерими $1',
 'rclinks' => 'Ахыр $2 кюнню ичинде этилиннген $1 тюрлениуню кёргюз;<br /> $3',
index 8ebb1d1..a2514bd 100644 (file)
@@ -981,8 +981,8 @@ E 'workaround' gëtt agesat deen et erlaabt Säite sécher z'änneren: Net-ASCII
 Wann Dir net wëllt datt är Texter vun anere Mataarbechter verännert, geläscht a weiderverdeelt kënne ginn, da setzt näischt heihinner.<br />
 Dir verspriecht ausserdeem datt Dir dësen Text selwer verfaasst hutt, oder aus dem Domaine public oder ähnleche Ressource kopéiert hutt.
 '''DROT KEE COPYRECHTLECH GESCHÜTZTE CONTENU OUNI ERLAABNES AN!'''",
-'copyrightwarning2' => "W.e.g. notéiert datt all Kontributiounen op {{SITENAME}} vun anere Benotzer verännert oder geläscht kënne ginn. Wann dir dat net wëllt, da setzt näischt heihinner.<br />
-Dir verspriecht ausserdeem datt dir dësen Text selwer verfaasst hutt, oder aus dem Domaine public oder anere fräie Quelle kopéiert hutt. (cf. $1 fir méi Detailler). '''DROT KEE COPYRECHTLECH GESCHÜTZTE CONTENU AN!'''",
+'copyrightwarning2' => "W.e.g. notéiert datt all Kontributiounen op {{SITENAME}} vun anere Benotzer verännert oder geläscht kënne ginn. Wann Dir dat net wëllt, da setzt näischt heihinner.<br />
+Dir verspriecht ausserdeem datt Dir dësen Text selwer verfaasst hutt, oder aus dem Domaine public oder anere fräie Quelle kopéiert hutt. (cf. $1 fir méi Detailer). '''DROT KEE COPYRECHTLECH GESCHÜTZTE CONTENU AN!'''",
 'longpageerror' => "'''FEELER: Den Text, den Dir Versicht ze späicheren, huet {{PLURAL:$1|1 Kilobyte|$1 Kilobytes}}. Dëst ass méi wéi den erlaabte Maximum vun  {{PLURAL:$2|1 Kilobyte|$2 Kilobytes}}''' Dofir kann den Text net gespäichert ginn.",
 'readonlywarning' => "'''OPGEPASST: D'Datebank gouf wéinst Maintenanceaarbechte gespaart, dofir kënnt Dir Är Ännerungen den Ament net ofspäicheren.'''
 Dir kënnt den Text kopéieren an an een Textfichier drasetzen an deen ofspäicheren fir méi spéit.
@@ -1095,7 +1095,7 @@ De Grond den den \$3 uginn huet ass ''\$2''",
 
 # Revision feed
 'history-feed-title' => 'Historique vun de Versiounen',
-'history-feed-description' => 'Versiounshistorique fir dës Säit op {{SITENAME}}',
+'history-feed-description' => 'Versiounshistorique fir dës Säit op der Wiki',
 'history-feed-item-nocomment' => '$1 ëm $2',
 'history-feed-empty' => 'Déi ugefrote Säit gëtt et net.
 Vläicht gouf se geläscht oder geréckelt.
@@ -1135,7 +1135,7 @@ Dir kënnt dësen Ënnerscheed gesinn; Detailer fannt Dir am [{{fullurl:{{#Speci
 'rev-showdeleted' => 'Weisen',
 'revisiondelete' => 'Versioune läschen/restauréieren',
 'revdelete-nooldid-title' => 'Ongülteg Zilversioun',
-'revdelete-nooldid-text' => 'Dir hutt entweder keng Versioun uginn fir dës Funktioun ze benotzen, déi Versioun déi Dir uginn hutt gëtt et net, oder dir versicht déi aktuell Versioun ze verstoppen.',
+'revdelete-nooldid-text' => 'Dir hutt entweder keng Versioun ugi fir dës Funktioun ze benotzen, déi Versioun déi Dir uginn hutt gëtt et net, oder Dir versicht déi aktuell Versioun ze verstoppen.',
 'revdelete-no-file' => 'De Fichier deen ugi war gëtt et net.',
 'revdelete-show-file-confirm' => 'Sidd Dir sécher datt Dir déi geläschte Versioun vum Fichier "<nowiki>$1</nowiki>" vum $2 ëm $3 gesi wëllt?',
 'revdelete-show-file-submit' => 'Jo',
@@ -1206,8 +1206,8 @@ Passt op, datt d'Versiounsgeschicht der Säit historesch korrekt ass.
 'mergehistory-into' => 'Zilsäit:',
 'mergehistory-list' => 'Versiounen, déi zesummegeluecht kënne ginn',
 'mergehistory-merge' => "Dës Versioune vun [[:$1]] kënnen matt [[:$2]] zesummegeluecht ginn.
-Benotzt d'Radio-Knäppecher fir nëmmen déi Versiunen ze fusonnéieren déi zu engem spezifischen Zäitpunkt oder virdrun ugeluecht goufen.
-Denkt w.e.g drunn datt d'Navigatiounslinken d'Wiel vun de Versiounen nees zrécksetzen.",
+Benotzt d'Radio-Knäppecher fir nëmmen déi Versiounen ze fusionéieren déi zu engem spezifeschen Zäitpunkt oder virdrun ugeluecht goufen.
+Denkt w.e.g drun datt d'Navigatiounslinken d'Wiel vun de Versiounen nees zrécksetzen.",
 'mergehistory-go' => 'Weis déi Versiounen, déi zesummegeluecht kënne ginn',
 'mergehistory-submit' => 'Versioune verschmelzen',
 'mergehistory-empty' => 'Et kënne keng Versioune zesummegeluecht ginn.',
@@ -1727,7 +1727,7 @@ Fir datt Äre Resumé do opdaucht musst Dir e manuell änneren.
 Wielt w.e.g. en aneren Numm.',
 'fileexists-thumbnail-yes' => "Beim Fichier schéngt et sech ëm e klengt Bild ''(Miniatur)'' ze handelen. [[$1|thumb]]
 Kuckt de Fichier <strong>[[:$1]]</strong> w.e.g. no.
-Wann et sech ëm d'Bild an der Originalgréisst handelt, da brauch kee separat Bild als Minitaur eropgelueden ze ginn.",
+Wann et sech ëm d'Bild an der Originalgréisst handelt, da brauch kee separat Bild als Miniatur eropgelueden ze ginn.",
 'file-thumbnail-no' => "Den Numm vum Fichier fänkt mat <strong>$1</strong> un.
 Da deit drop hin datt et eng Minitaur ''(thumbnail)'' ass.
 Wann Dir dat Bild a méi enger grousser Opléisung hutt, da luet dëst erop, wann net dann ännert w.e.g. den Numm vum Fichier.",
@@ -1953,7 +1953,7 @@ Dir kënnt seng Beschreiwung op senger [$2 Beschreiwungssäit] änneren.',
 'filerevert-comment' => 'Bemierkung:',
 'filerevert-defaultcomment' => "zréckgesat op d'Versioun vum $1, $2 Auer",
 'filerevert-submit' => 'Zrécksetzen',
-'filerevert-success' => "'''[[Media:$1|$1]]''' gouf op d'[$4 Versioun vum $2, $3 Auer] zréckgesat.",
+'filerevert-success' => "<strong>[[Media:$1|$1]]</strong> gouf op d'[$4 Versioun vum $2, $3 Auer] zréckgesat.",
 'filerevert-badversion' => 'Et gëtt keng vireg lokal Versioun vun deem Fichier mat der Zäitinformatioun déi Dir uginn hutt.',
 
 # File deletion
@@ -2375,7 +2375,7 @@ W.e.g. confirméiert, datt Dir dëst wierklech wëllt, datt Dir d'Konsequenze ve
 'actionfailed' => 'Aktioun huet net funktionéiert',
 'deletedtext' => '"$1" gouf geläscht. Kuckt $2 fir eng Lëscht vun de Säiten déi viru Kuerzem geläscht goufen.',
 'dellogpage' => 'Läschlëscht',
-'dellogpagetext' => 'Hei fannt dir eng Lëscht mat rezent geläschte Säiten. All Auerzäiten sinn déi vum Server.',
+'dellogpagetext' => 'Hei fannt dir eng Lëscht mat rezent geläschte Säiten. All Auerzäite sinn déi vum Server.',
 'deletionlog' => 'Läschlëscht',
 'reverted' => 'Op déi Versioun virdrun zréckgesat',
 'deletecomment' => 'Grond:',
@@ -2442,8 +2442,8 @@ Kuckt d'[[Special:ProtectedPages|Lëscht vun de gespaarte Säite]] fir eng Lësc
 'protect-text' => "Hei kënnt Dir de Protektiounsstatus fir d'Säit '''$1''' kucken an änneren.",
 'protect-locked-blocked' => "Dir kënnt den Niveau vun der Säiteprotektioun net änneren, well Äre Benotzerkont gespaart ass.
 Hei sinn déi aktuell Säiteprotektiounsastellunge fir d'Säit '''$1''':",
-'protect-locked-dblock' => "Den Niveau vun der Proectioun vun der Säit kann net geänenert ginn, well d'Datebank gespaart ass.
-Hei sinn déi aktuell Astellungen fir d'Säit '''$1''':",
+'protect-locked-dblock' => "Den Niveau vun der Proectioun vun der Säit kann net geännert ginn, well d'Datebank gespaart ass.
+Hei sinn déi aktuell Astellunge fir d'Säit '''$1''':",
 'protect-locked-access' => "Dir hutt net déi néideg Rechter fir de Protektiounsniveau vun dëser Säit z'änneren.
 Hei sinn déi aktuell Astellunge fir d'Säit '''$1''':",
 'protect-cascadeon' => "Dës Säit ass elo gespaart well si an déi folgend {{PLURAL:$1|Säit|Säiten}} agebonnen ass déi duerch eng Kaskadespär gespaart {{PLURAL:$1|ass|sinn}}. Ännerunge vum Protektiounsniveau fir dës Säit hu keen Afloss op d'Kaskadespär.",
@@ -2617,7 +2617,7 @@ $1',
 'ipboptions' => '2 Stonnen:2 hours,1 Dag:1 day,3 Deeg:3 days,1 Woch:1 week,2 Wochen:2 weeks,1 Mount:1 month,3 Méint:3 months,6 Méint:6 months,1 Joer:1 year,onbegrenzt:infinite',
 'ipbhidename' => 'Benotzernumm op Lëschten a bei Ännerunge verstoppen',
 'ipbwatchuser' => 'Dësem Benotzer seng Benotzer- an Diskussiouns-Säit iwwerwaachen',
-'ipb-disableusertalk' => "Dëse Benotzer dorun hënnere fir seng eegen Diskussiounssäit z'ännere sou laang wéi et gespaart ass",
+'ipb-disableusertalk' => "Dëse Benotzer dorun hënnere fir seng eegen Diskussiounssäit z'ännere sou laang wéi e gespaart ass",
 'ipb-change-block' => 'De Benotzer mat dese Parameteren nees spären',
 'ipb-confirm' => 'Spär confirméieren',
 'badipaddress' => "D'IP-Adress huet dat falscht Format.",
@@ -3614,7 +3614,7 @@ Déi aner sinn am Standard verstoppt.
 # Email address confirmation
 'confirmemail' => 'E-Mailadress confirméieren',
 'confirmemail_noemail' => 'Dir hutt keng gëlteg E-Mail-Adress an Äre [[Special:Preferences|Benotzerastellungen]] agedro.',
-'confirmemail_text' => "Ier Dir d'E-Mailfunktioune vun {{SITENAME}} benotze kënnt musst Dir als éischt Är E-Mail-Adress confirméieren. Dréckt w.e.g. de Knäppchen hei ënnendrënner fir eng Confirmatiouns-E-Mail op déi Adress ze schécken déi Dir uginn hutt. An där E-Mail steet e Link mat engem Code, deen dir dann an Ärem Browser opmaache musst fir sou ze bestätegen, datt Är Adress och wierklech existéiert a valabel ass.",
+'confirmemail_text' => "Ier Dir d'E-Mailfunktioune vun {{SITENAME}} benotze kënnt musst Dir als éischt Är E-Mail-Adress confirméieren. Dréckt w.e.g. de Knäppchen hei ënnendrënner fir eng Confirmatiouns-E-Mail op déi Adress ze schécken déi Dir uginn hutt. An där E-Mail steet e Link mat engem Code, deen Dir dann an Ärem Browser opmaache musst fir sou ze bestätegen, datt Är Adress och wierklech existéiert a valabel ass.",
 'confirmemail_pending' => 'Dir krut schonn e Confirmatiouns-Code per E-Mail geschéckt. Wenn Dir Äre Benotzerkont eréischt elo kuerz opgemaach hutt, da gedëllegt Iech nach e puer Minutten bis Är E-Mail ukomm ass, ier Dir een neie Code ufrot.',
 'confirmemail_send' => 'Confirmatiouns-E-Mail schécken',
 'confirmemail_sent' => 'Confirmatiouns-E-Mail gouf geschéckt.',
index dd6f780..7a6599b 100644 (file)
@@ -19,6 +19,7 @@
  * @author Ole Yves
  * @author Reedy
  * @author Soul Train
+ * @author Умар
  */
 
 $fallback = 'ru';
@@ -725,11 +726,21 @@ $messages = array(
 'rcnotefrom' => "Агъадихъ '''$2'''-ай эгечIна масакIавилер къалурнава ( '''$1''' кьван  къалурнава).",
 'rclistfrom' => '$1-й эгечIна цIийи масакIавилер къалурун',
 'rcshowhideminor' => '$1 гъвечlи дуьзар хъувунар',
+'rcshowhideminor-show' => 'Къалурун',
+'rcshowhideminor-hide' => 'Чуьнуьхун',
 'rcshowhidebots' => '$1 ботар',
-'rcshowhideliu' => '$1 чпин тlвар къалурнавай уртахар',
+'rcshowhidebots-show' => 'Къалурун',
+'rcshowhidebots-hide' => 'Чуьнуьхун',
+'rcshowhideliu' => '$1 чпин тӀвар къалурнавай уртахар',
+'rcshowhideliu-show' => 'Къалурун',
+'rcshowhideliu-hide' => 'Чуьнуьхун',
 'rcshowhideanons' => '$1 чуьнуьхай уртахар',
+'rcshowhideanons-show' => 'Къалурун',
+'rcshowhideanons-hide' => 'Чуьнуьхун',
 'rcshowhidepatr' => '$1 гуьзчивал авунвай дуьзар хъувунар',
 'rcshowhidemine' => '$1 зи  дуьзар хъувунар',
+'rcshowhidemine-show' => 'Къалурун',
+'rcshowhidemine-hide' => 'Чуьнуьхун',
 'rclinks' => 'Эхиримжи $2 йикъан къене $1 масакIавилер къалура <br />$3',
 'diff' => 'тафават',
 'hist' => 'тарих',
index 3dfe540..faef643 100644 (file)
@@ -379,6 +379,8 @@ $1',
 'myprivateinfoprotected' => 'شما حق ناریت دونسمنیا خصوصی نه ویرایشت بکید',
 'mypreferencesprotected' => 'شما حق ناریت ویجگی یا هنی تونه ویرایشت بکید',
 'ns-specialprotected' => 'بلگیا ویجه نتونن ویرایشت بوئن',
+'invalidtitle-knownnamespace' => 'نوم نامعتور سی نوم جا "$2" و نیسه "$3"',
+'invalidtitle-unknownnamespace' => 'نوم نامعتور سی شماره نومجا ناشناس $1 و نیسه "$2"',
 'exception-nologin' => 'نبوئه وارد بوئيد',
 'exception-nologin-text-manual' => 'خواهشمنیدم که $1 تونسه بوئه د ای بلگه دسرسی داشتوه یا کاری انجوم بیئه.',
 
@@ -421,6 +423,9 @@ $1',
 'gotaccountlink' => 'اومائن',
 'userlogin-resetlink' => 'جزییات وامین اومائن تونه د ویر بردیته',
 'userlogin-resetpassword-link' => 'پاسورد د ویرتو رئته؟',
+'userlogin-helplink2' => 'هومیاری وا مین اومائن',
+'userlogin-loggedin' => 'شما ایسه د عنوان {{جنس:$1|$1}} اومایته وا مین.
+د فرم هاری سی وا مین اومائن وه عنوان کارور هنی استفاده بکیتو.',
 'userlogin-createanother' => 'يه گل حساوهنی راست بكيد',
 'createacct-join' => 'دونسمنيا دباره خوتونه د هار وارد بكيد',
 'createacct-another-join' => 'دونسمنیا یه گل حساو د هار وارد بکید',
@@ -484,13 +489,19 @@ $1',
 $1 لطفن سی تلاش هنی صبر بکید',
 'login-abort-generic' => 'اومائن وامین تو شکست حرد-شکست حرده',
 'loginlanguagelabel' => 'زون:$1',
+'pt-login' => 'وا مین اومائن',
+'pt-login-button' => 'وا مین اومائن',
+'pt-createaccount' => 'يه گل حساو راست بكيد',
+'pt-userlogout' => 'د سيستم دراومائن',
 
 # Email sending
 'php-mail-error-unknown' => "خطا ناشناس مئن تاوع  PHP's mail()",
 'user-mail-no-addy' => 'سی کل کردن ایمیل بی نشونه ایمیل صورت گرته',
+'user-mail-no-body' => 'سی کل کردن ایمیل وا مینونه حالی یا کؤچک بیئن سی دلیل غیر علقمنی تلاش بکید.',
 
 # Change password dialog
 'changepassword' => 'پاسورد نه آلشت بكيت',
+'resetpass_announce' => 'سی تموم کردن وا مین اومائن، شما باید یه گل پاسورد هنی وارد بکیتو.',
 'resetpass_header' => 'پاسورد حساوتونه آلشت بکید',
 'oldpassword' => 'پاسورد قدیمی:',
 'newpassword' => 'پاسورد تازه:',
@@ -699,8 +710,11 @@ $2',
 'rev-delundel' => 'آلشت وضئيت ديئن',
 'rev-showdeleted' => 'نشو دائن',
 'revisiondelete' => 'پاک کردن/زنه کردن وانئریا',
+'revdelete-nooldid-title' => 'وانیری تمارزی بیه نامعتوره',
 'revdelete-no-file' => 'فایل مشقص بیه وجود ناره.',
 'revdelete-show-file-submit' => 'هری',
+'revdelete-selected-text' => '{{جمی:$1|وانیری گل گر بیه|وانیری گل گر بیه}} د [[:$2]]:',
+'revdelete-selected-file' => '{{جمی:$1|وانیری گل گر بیه|وانیری گل گر بیه}} د [[:$2]]:',
 'revdelete-hide-text' => 'متن دوواره دیئن',
 'revdelete-hide-image' => 'چی یا مئن فایل قام کو',
 'revdelete-hide-name' => 'آرمون و انجوم گر نه قام بکید',
@@ -804,6 +818,7 @@ $2',
 'powersearch-toggleall' => 'همه',
 'powersearch-togglenone' => 'هيش كوم',
 'search-external' => 'پی جوری د در',
+'search-error' => 'یه گل خطا سی اوسنی که پی جوری می کردیت اتفاق افتائه:$1',
 
 # Preferences page
 'preferences' => 'خصوصيات هنی',
@@ -853,6 +868,7 @@ $2',
 'prefs-namespaces' => 'نوم جایا',
 'default' => 'پيش فرض',
 'prefs-files' => 'فايلا',
+'prefs-common-css-js' => ' سی اس اس/جاوا اسکریپت بهر بیه سی همه پوسه یا:',
 'prefs-emailconfirm-label' => 'مئکم کردن ایمیل:',
 'youremail' => 'ايميل:',
 'username' => '{{جنس:$1|نوم کاروری}}:',
@@ -893,6 +909,7 @@ $2',
 'email-address-validity-invalid' => 'یه گل نشونی ایمیل خو وارد بکید',
 
 # User rights
+'userrights-lookup-user' => 'دسه یا کاروری نه دیوون داری بکیت',
 'userrights-user-editname' => 'نوم كاروری ته وارد كو',
 'editusergroup' => 'ویرایشت گرویا کاروری',
 'userrights-editusergroup' => 'ویرایشت گرویا کاروری',
@@ -926,6 +943,8 @@ $2',
 # Rights
 'right-read' => 'حنن بلگیا',
 'right-edit' => 'ویرایشت بلگیا',
+'right-createtalk' => 'بلگه یا چک چنه نه راس بکید',
+'right-createaccount' => 'یه گل حساو کاروری تازه راس بکیت',
 'right-move' => 'بلگه یا جا وه جا کو',
 'right-move-subpages' => 'بلگه یا و زیر بلگه یا شونه جا وه جا کو',
 'right-move-rootuserpages' => 'بلگه یا ریشه ای کارور نه جا وه جا کو',
@@ -1007,11 +1026,23 @@ $2',
 'rcnotefrom' => 'د هار آلشتیا د $2 هیئن(د بال د $1 نشون دئه بیه)',
 'rclistfrom' => 'آلشتیا تازه ایی که وا $1 شرو بیه نشونش بئه',
 'rcshowhideminor' => 'ويرايشتيا کؤچک $1',
+'rcshowhideminor-show' => 'نشو دئن',
+'rcshowhideminor-hide' => 'قام کردن',
 'rcshowhidebots' => '$1 رواتيا یا بوتيا',
+'rcshowhidebots-show' => 'نشو دئن',
+'rcshowhidebots-hide' => 'قام کردن',
 'rcshowhideliu' => '$1 کاروريا ثوت نام کرده',
+'rcshowhideliu-show' => 'نشو دئن',
+'rcshowhideliu-hide' => 'قام کردن',
 'rcshowhideanons' => '$1 کاروريا ناشناس',
+'rcshowhideanons-show' => 'نشو دئن',
+'rcshowhideanons-hide' => 'قام کردن',
 'rcshowhidepatr' => '$1 ویرایشتیا تیه پرس بیه',
+'rcshowhidepatr-show' => 'نشو دئن',
+'rcshowhidepatr-hide' => 'قام کردن',
 'rcshowhidemine' => 'ويرايشتيا مه$1',
+'rcshowhidemine-show' => 'نشو دئن',
+'rcshowhidemine-hide' => 'قام کردن',
 'rclinks' => 'آخرین آلشتیا $1 نشو بیه د اخرین روزیا $2',
 'diff' => 'فرخ',
 'hist' => 'ويرگار',
@@ -1054,6 +1085,7 @@ $2',
 'filereuploadsummary' => 'آلشتیا فایل:',
 'filesource' => 'سرچشمه:',
 'uploadedfiles' => 'جانیایا سواربیه',
+'ignorewarnings' => 'د هر زنهار تیه پوشی کو',
 'badfilename' => 'نوم جانیا د "$1" آلشت بیه.',
 'empty-file' => 'فایلی که دئی ته حالی بیه.',
 'file-too-large' => 'فایلی که دئی ته فره گپ بی.',
@@ -1110,6 +1142,7 @@ $2',
 'http-read-error' => 'خطا د حنن اچ تی تی پی.',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
+'upload-curl-error6' => 'نبوئه د یو آر ال برسیت',
 'upload-curl-error28' => 'تموم بیئن مئلت سی سوار کرد',
 
 'license' => 'ليانس دار بيئن',
@@ -1129,6 +1162,7 @@ $2',
 'listfiles_user' => 'كارور',
 'listfiles_size' => 'انازه',
 'listfiles_count' => 'نسقیا',
+'listfiles-show-all' => 'شومل نسقه یا نهاتری عسگیا',
 'listfiles-latestversion' => 'نسقه تازه',
 'listfiles-latestversion-yes' => 'هری',
 'listfiles-latestversion-no' => 'نه',
@@ -1207,6 +1241,7 @@ $2',
 'statistics-articles' => 'بلگه یا مینونه',
 'statistics-pages' => 'بلگیا',
 'statistics-files' => 'جانیا یا سوار بیه',
+'statistics-edits-average' => 'میانگین ویرایشت یا سی هر بلگه',
 'statistics-views-total' => 'همه نه بوینیت',
 'statistics-views-peredit' => 'هر ویرایشت نه بوینیت',
 'statistics-users' => 'ثوت نام بیه [[ویجه:نوم گه کاروریا|کاروریا]]',
@@ -1252,12 +1287,20 @@ $2',
 'prefixindex' => 'همه بلگيا وا پيشون',
 'shortpages' => 'بلگه یا کؤچک',
 'longpages' => 'بلگه یا گپ',
+'deadendpages' => 'بلگه یا نابود بیئنی',
 'protectedpages' => 'بلگه یا حفاظت بيه',
+'protectedpages-page' => 'بلگه',
+'protectedpages-expiry' => 'تموم بیه آ',
+'protectedpages-performer' => 'کارور حفاظت بیه',
+'protectedpages-reason' => 'دلیل',
+'protectedpages-unknown-timestamp' => 'ناشناس',
+'protectedpages-unknown-performer' => 'کارور ناشناس',
 'listusers' => 'نوم گه کارور',
 'listusers-editsonly' => 'فقط کاروریایی که ویرایشت می کن نشو بیه',
 'usercreated' => '{{جنسیت:$3|راس بیه}}د $1 at $2',
 'newpages' => 'بلگيا نو',
 'newpages-username' => 'نوم كاروری:',
+'ancientpages' => 'بلگه یا نهاتر',
 'move' => 'جاوه جا بوئيت',
 'movethispage' => 'ای بگله نه جا وه جا كو',
 'pager-newer-n' => '{{جمی:$1|وانها تر 1وانها تر $1}}',
@@ -1276,16 +1319,23 @@ $2',
 'allpages' => 'همه بلگيا',
 'alphaindexline' => '$1 د
 $2',
+'nextpage' => 'بلگه نهایی($1)',
+'prevpage' => 'بلگه دمایی($1)',
 'allarticles' => 'همه بلگيا',
 'allpagessubmit' => 'رو',
 'allpagesbadtitle' => 'عنوان بلگه حاسته بیه معتور نی،یا  یه گل مئن زونی یا مئن ویکی عنوان غلطه.
 یه شایت شومل یکی با یا بیشتر کاراکتریا نبوئه که سی ای موضوعیا استفاده بوئن',
 
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'دیئن آخری.',
+
 # Special:Categories
 'categories' => 'دسه يا',
 
 # Special:DeletedContributions
 'deletedcontributions' => 'هومیاریا پاک بیه کارور',
+'deletedcontributions-title' => 'هومیاریا پاک بیه کارور',
+'sp-deletedcontributions-contribs' => 'هومیاریا',
 
 # Special:LinkSearch
 'linksearch-ns' => 'نوم جا:',
@@ -1293,21 +1343,47 @@ $2',
 'linksearch-line' => '$1 داره د $2 هوم پیوند بوئه',
 
 # Special:ListUsers
+'listusers-submit' => 'نشو دئن',
 'listusers-noresult' => 'هیچ کاروری پیدا نبی',
+'listusers-blocked' => '(قلف بيه)',
 
 # Special:ActiveUsers
 'activeusers' => 'نوم گه کاروریا کارکو',
+'activeusers-hidebots' => 'بوتیا قام کو',
+'activeusers-hidesysops' => 'دیوون داریا نه قام کو',
 'activeusers-noresult' => 'هیچ کاروری پیدا نبی',
 
 # Special:ListGroupRights
+'listgrouprights-group' => 'دسه',
+'listgrouprights-rights' => 'حقوقیا',
 'listgrouprights-members' => '(نوم گه اندومیا)',
+'listgrouprights-addgroup-all' => 'همه گرویا نه اضاف کو',
+'listgrouprights-removegroup-all' => 'همه گرویا نه وردار',
+'listgrouprights-addgroup-self' => ' {{جمی:$2|گروه|گرویا}} نه د حساو: $1 اضاف کو',
 
 # Email user
+'mailnologin' => 'هیپچ نشونی یی کل نبیه',
 'emailuser' => 'ای كارور نه ايميل كو',
 'emailuser-title-target' => 'ایمیل سی ای {{جنس:$1|کارور}}',
+'emailuser-title-notarget' => 'ایمیل کارور',
 'emailpage' => 'ایمیل کارور',
 'defemailsubject' => '{{نوم سیل جا}} ایمیل د کارور "$1"',
+'usermaildisabled' => 'ایمیل کارور د کار افتائه',
+'noemailtitle' => 'هیچ نشونی ایمیلی نئ',
 'emailusername' => 'نوم كاروری:',
+'emailusernamesubmit' => 'دئن',
+'emailfrom' => 'د:',
+'emailto' => 'سی:',
+'emailsubject' => 'سرون:',
+'emailmessage' => 'پيغوم:',
+'emailsend' => 'كل بيه',
+'emailccme' => 'یه گل وردار د پیغوم مه نه سیم ایمیل کو.',
+'emailccsubject' => ' پیغومتو سی $1:$2 ورداشته بی',
+'emailsent' => 'ایمیل کل بیه',
+'emailsenttext' => 'پیغوم ایمیلی تو کل بیه.',
+
+# User Messenger
+'usermessage-editor' => 'پیغوم فرسن سیستم',
 
 # Watchlist
 'watchlist' => 'سیل برگ',
@@ -1316,7 +1392,9 @@ $2',
 'watchnologin' => 'وارد نبیه',
 'watchnologintext' => 'شما سی آلشت دئن سیل برگتو با [[ویجه:وامین اومائن کارور|وامین اومائه]]',
 'watch' => 'سيل كردن',
+'watchthispage' => 'ديئن ای بلگه',
 'unwatch' => 'ديه نبيه',
+'unwatchthispage' => 'واداشتن دیئن',
 'notanarticle' => 'مینونه هیچ بلگه ای نئ',
 'watchlist-details' => '{{جمی:$1|$1 بلگه|$1 بلگیا}} د سیل برگتو هیش بلگه قسه کردن نی .',
 'wlheader-enotif' => 'وارسیاری ایمیل فعال بیه.',
@@ -1324,18 +1402,37 @@ $2',
 'wlshowlast' => 'آخرین$1 ساعتیا $2و روزیا $3 نشو بیئه',
 'watchlist-options' => 'گزینیا سیل برگ',
 
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'د حال دیئن...',
+'unwatching' => 'د حال ندیئن...',
+
 'enotif_mailer' => '{{نوم سیلجا}} وارسیاری ایمیل زننه',
 'enotif_reset' => 'همه بلگه یا دیئه بینه نشودار بکید',
 'enotif_impersonal_salutation' => '{{نوم سیلجا}} کارور',
 'enotif_lastvisited' => 'همه آلشتیا$1 د اوسه که شما د آخرین بار دیئته بوینیت.',
+'enotif_anon_editor' => 'کارو ناشناس$1',
 
 # Delete
+'deletepage' => 'پاک کردن بلگه',
+'confirm' => 'مئكم كردن',
 'excontent' => 'مینونه :"$1" بی',
 'exbeforeblank' => 'مینونه حالی دمایی:"$1" بی',
+'exblank' => 'بلگه حال بی',
+'delete-confirm' => 'پاک کردن"$1"',
+'delete-legend' => 'پاك كردن',
 'actioncomplete' => 'عملكرد كامل بيه',
 'actionfailed' => 'عملكرد شكست حرده',
 'dellogpage' => 'لاگ پاك كردن',
 'deletionlog' => 'پهرستنومه پاک بیئن',
+'deletecomment' => 'دليل:',
+'deleteotherreason' => 'دليليا هنی:',
+'deletereasonotherlist' => 'دلیل هنی',
+'deletereason-dropdown' => '* دلیلیا پاک کردن رسم بیه
+** اسپم
+** خراوکاری
+** رعایت نبین کپی رایت
+** درحاست نیسنه
+** نهاورگشت شکست حرده',
 
 # Rollback
 'rollbacklink' => 'ورگشتن',
@@ -1355,7 +1452,9 @@ $2',
 'restriction-type' => 'دسرسی:',
 
 # Restrictions (nouns)
+'restriction-edit' => 'ويرايشت',
 'restriction-move' => 'جاوه جا بوئيت',
+'restriction-create' => 'راس كردن',
 'restriction-upload' => 'سوار کرد',
 
 # Restriction levels
@@ -1364,10 +1463,12 @@ $2',
 # Undelete
 'undeletelink' => 'بوين/دوواره آماده با',
 'undeleteviewlink' => 'ديئن',
+'undeletecomment' => 'دليل:',
 'cannotundelete' => 'زنه کردن انجوم نبی:$1',
 'undelete-search-title' => 'بلگه یا پاک بیه نه پی جوری کو',
 'undelete-search-submit' => 'پی جوری',
 'undelete-error-short' => 'خطا پاک نبیئن جانیا:$1',
+'undelete-show-file-submit' => 'هری',
 
 # Namespace form on various pages
 'namespace' => 'نوم جا:',
@@ -1414,6 +1515,7 @@ $2',
 # Block/unblock
 'block' => 'منع کارور',
 'blockip' => 'منع کارور',
+'ipbreason' => 'دليل:',
 'ipbother' => 'وخت هنی:',
 'ipboptions' => '2 ساعتیا:2 ساعت,1 رو:1 رو,3 روزا:3 رو,1 هفته:1 هفته,2 هفته یا:2 هفته,1 ما:1 ما,3 ما:3 میا,6 ما:6 مایا,1 سال:1سال,بی حساو:بی حساو',
 'ipbhidename' => 'نوم کاروری نه سی ویرایشت یا و نوم گه یا قام کو',
index 6d7a3e3..5de1817 100644 (file)
@@ -716,7 +716,7 @@ $1',
 'cannotdelete-title' => 'Не можам да ја избришам страницата „$1“',
 'delete-hook-aborted' => 'Бришењето е прекинато со кука.
 Не е дадено никакво образложение.',
-'no-null-revision' => 'Не можев да направам нова ништовна ревизија на страницата „$1“',
+'no-null-revision' => 'Не можев да направам нова ништовна преработка на страницата „$1“',
 'badtitle' => 'Неисправен наслов',
 'badtitletext' => 'Бараниот наслов е грешен, празен или неисправно поврзан меѓујазичен или меѓувики наслов. 
 Може да содржи недопуштени знаци.',
@@ -1099,7 +1099,7 @@ $2
 или да [{{fullurl:{{FULLPAGENAME}}|action=edit}} ја создадете]</span>.',
 'noarticletext-nopermission' => 'Таква страница сè уште не постои.
 Можете да проверите [[Special:Search/{{PAGENAME}}|дали насловот се споменува]] во други статии или пак да <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пребарате поврзаните дневници]</span>, но немате дозвола да ја создадете страницата.',
-'missing-revision' => 'Не ја пронајдов ревизијата бр. $1 на страницата со наслов „{{FULLPAGENAME}}“.
+'missing-revision' => 'Не ја пронајдов преработката бр. $1 на страницата со наслов „{{FULLPAGENAME}}“.
 
 Ова обично се должи на застарена врска за разлики што води кон избришана страница.
 Повеќе подробности ќе најдете во [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].',
@@ -1153,7 +1153,7 @@ $2
 Ќе морате да ги внесете вашите промени со постоечкиот текст.
 '''Само''' текстот во горниот дел ќе биде зачуван кога ќе притиснете на „{{int:savearticle}}“.",
 'yourtext' => 'Вашиот текст',
-'storedversion' => 'Зачувана ревизија',
+'storedversion' => 'Зачувана преработка',
 'nonunicodebrowser' => "'''ПРЕДУПРЕДУВАЊЕ: Вашиот прелистувач не поддржува Уникод.
 Постои решение што овозможува безбедно да уредување страници: во полето за уредување не-ASCII знаците ќе се јавуваат како хексадецимални кодови.",
 'editingold' => "'''ПРЕДУПРЕДУВАЊЕ: Менувате застарена верзија на оваа страница.
@@ -1256,7 +1256,7 @@ $2
 'undo-norev' => 'Измената не можеше да биде вратена бидејќи не постои или била избришана.',
 'undo-nochange' => 'Се чини дека измената (уредувањето) е веќе вратена.',
 'undo-summary' => 'Откажано уредувањето $1 на уредникот [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]])',
-'undo-summary-username-hidden' => 'Поништи ја ревизијата $1 на скриен корисник',
+'undo-summary-username-hidden' => 'Поништи ја преработката $1 на скриен корисник',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Не може да се создаде корисничка сметка',
@@ -1270,20 +1270,20 @@ $3 ја наведе следнава причина: ''$2''",
 # History pages
 'viewpagelogs' => 'Преглед на дневници за оваа страница',
 'nohistory' => 'Страницата нема историја на уредување.',
-'currentrev' => 'Тековна ревизија',
-'currentrev-asof' => 'Последна ревизија од $1',
-'revisionasof' => 'РевизиÑ\98а од $1',
-'revision-info' => 'РевизиÑ\98а од $1; направена од $2',
-'previousrevision' => '← Претходна ревизија',
-'nextrevision' => 'Следна ревизија →',
-'currentrevisionlink' => 'Последна ревизија',
+'currentrev' => 'Тековна преработка',
+'currentrev-asof' => 'Последна преработка од $1',
+'revisionasof' => 'Ð\9fÑ\80еÑ\80абоÑ\82ка од $1',
+'revision-info' => 'Ð\9fÑ\80еÑ\80абоÑ\82ка од $1; направена од $2',
+'previousrevision' => '← Претходна преработка',
+'nextrevision' => 'Следна преработка →',
+'currentrevisionlink' => 'Последна преработка',
 'cur' => 'тек',
 'next' => 'след',
 'last' => 'посл',
 'page_first' => 'прв',
 'page_last' => 'последен',
-'histlegend' => "Разлика помеѓу ревизии: Означете ги ревизиите што сакате да ги споредите и притиснете на Enter или копчето на дното од страницата.<br />
-Легенда: '''({{int:cur}})''' = разлика со последна ревизија, '''({{int:last}})''' = разлика со претходна ревизија, '''{{int:minoreditletter}}''' = ситна промена.",
+'histlegend' => "Разлика помеѓу преработките: Означете ги преработките што сакате да ги споредите и притиснете на Enter или копчето на дното од страницата.<br />
+Легенда: '''({{int:cur}})''' = разлика со последна преработка, '''({{int:last}})''' = разлика со претходна преработка, '''{{int:minoreditletter}}''' = ситна промена.",
 'history-fieldset-title' => 'Прелистување на историја',
 'history-show-deleted' => 'Само избришани',
 'histfirst' => 'најстари',
@@ -1304,43 +1304,43 @@ $3 ја наведе следнава причина: ''$2''",
 'rev-deleted-user' => '(избришано корисничко име)',
 'rev-deleted-event' => '(избришан запис на дејство)',
 'rev-deleted-user-contribs' => '[отстрането е корисничкото име или IP-адресата - уредувањето нема да се прикаже на списокот на придонеси]',
-'rev-deleted-text-permission' => "Ревизија на оваа страницата била '''бришана'''.
-Можеби има подробности во [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].",
-'rev-deleted-text-unhide' => "Оваа ревизија на страницата е '''избришана'''.
+'rev-deleted-text-permission' => 'Оваа преработка страницата е <strong>избришана</strong>.
+Можеби има подробности во [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].',
+'rev-deleted-text-unhide' => "Оваа преработка на страницата е '''избришана'''.
 Повеќе подробности ќе најдете во [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].
-Сепак можете [$1 да ја погледнете оваа ревизија] ако сакате да продолжите.",
-'rev-suppressed-text-unhide' => "Оваа ревизија на страница е '''притаена'''.
+Сепак можете [$1 да ја погледнете оваа преработка] ако сакате да продолжите.",
+'rev-suppressed-text-unhide' => "Оваа преработка на страница е '''притаена'''.
 Повеќе подробности ќе најдете во [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} дневникот на прикривања].
-Сепак можете да ја [$1 погледнете оваа ревизија] ако сакате да продолжите.",
-'rev-deleted-text-view' => "Оваа ревизија на страницата е '''избришана'''.
+Сепак можете да ја [$1 погледнете оваа преработка] ако сакате да продолжите.",
+'rev-deleted-text-view' => "Оваа преработка на страницата е '''избришана'''.
 Можете да ја погледнете; повеќе подробности ќе најдете во [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].",
-'rev-suppressed-text-view' => "Оваа ревизија на страницата е '''притаена'''.
+'rev-suppressed-text-view' => "Оваа преработка на страницата е '''притаена'''.
 Можете да ја погледнете; повеќе подробности ќе најдете во [{{fullurl:Special:Log/suppress|page={{FULLPAGENAMEE}}}} дневникот на скривања].",
-'rev-deleted-no-diff' => "Не може да ја погледнете оваа разлика бидејќи една од ревизиите била '''избришана'''.
+'rev-deleted-no-diff' => "Не може да ја погледнете оваа разлика бидејќи една од преработките била '''избришана'''.
 Може да најдете повеќе подробности во [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].",
-'rev-suppressed-no-diff' => "Не можете да ги видите разликите помеѓу овие ревизии бидејќи една од нив е '''избришана'''.",
-'rev-deleted-unhide-diff' => "Една од ревизиите на оваа разлика е '''избришана'''.
+'rev-suppressed-no-diff' => "Не можете да ги видите разликите помеѓу овие преработки бидејќи една од нив е '''избришана'''.",
+'rev-deleted-unhide-diff' => "Една од преработките на оваа разлика е '''избришана'''.
 Повеќе подробности ќе најдете во [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].
 Сепак можете [$1 да ја видите оваа разлика] ако сакате да продолжите.",
-'rev-suppressed-unhide-diff' => "Една од ревизиите на оваа разлика е '''притаена'''.
+'rev-suppressed-unhide-diff' => "Една од преработките на оваа разлика е '''притаена'''.
 Повеќе подробности ќе најдете во [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} дневникот на скривања].
 Можете да [$1 ја видите оваа разлика] ако сакате да продолжите.",
-'rev-deleted-diff-view' => "Една од ревизиите на оваа разлика е '''избришана'''.
+'rev-deleted-diff-view' => "Една од преработките на оваа разлика е '''избришана'''.
 Можете да ја погледате оваа разлика; подробности ќе најдете во [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневникот на бришење].",
-'rev-suppressed-diff-view' => "Една од ревизиите на оваа разлика е '''притаена'''.
+'rev-suppressed-diff-view' => "Една од преработките на оваа разлика е '''притаена'''.
 Можете да ја погледате оваа разлика; подробности ќе најдете во [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} дневникот на скривања].",
 'rev-delundel' => 'прикажи/скриј',
 'rev-showdeleted' => 'прикажи',
-'revisiondelete' => 'Избриши/врати ревизии',
+'revisiondelete' => 'Избриши/врати преработки',
 'revdelete-nooldid-title' => 'Бараната измена не постои',
 'revdelete-nooldid-text' => 'Не сте посочиле измена (измени) за да се изврши оваа функција или посочената измена не постои или се обидувате да ја скриете моменталната измена.',
 'revdelete-no-file' => 'Наведената податотека не постои.',
-'revdelete-show-file-confirm' => 'Дали сакате да ја погледнете избришаната ревизија на податотеката „<nowiki>$1</nowiki>“ од $2 во $3?',
+'revdelete-show-file-confirm' => 'Дали сакате да ја погледнете избришаната преработка на податотеката „<nowiki>$1</nowiki>“ од $2 во $3?',
 'revdelete-show-file-submit' => 'Да',
-'revdelete-selected-text' => '{{PLURAL:$1|Избрана ревизија|Избрани ревизии}} на [[:$2]]:',
+'revdelete-selected-text' => '{{PLURAL:$1|Избрана преработка|Избрани преработки}} на [[:$2]]:',
 'revdelete-selected-file' => '{{PLURAL:$1|Избрана податотечна верзија|Избрани податотечни верзии}} на [[:$2]]:',
 'logdelete-selected' => '{{PLURAL:$1|Одбран настан од дневник|Одбрани настани од дневник}}:',
-'revdelete-text-text' => 'Избришаните ревизии сепак се појавуваат во историјата, но делови од нивната содржина ќе бидат недостапни за јавноста.',
+'revdelete-text-text' => 'Избришаните преработки сепак се појавуваат во историјата, но делови од нивната содржина ќе бидат недостапни за јавноста.',
 'revdelete-text-file' => 'Избришаните верзии на податотеките сепак се појавуваат во нејзината историја, но делови од нивната содржина ќе бидат недостапни за јавноста.',
 'logdelete-text' => 'Избришаните дневнички ставки сепак се појавуваат во дневниците, но делови од нивната содржина ќе бидат недостапни за јавноста.',
 'revdelete-text-others' => 'Другите администратори на {{SITENAME}} сепак ќе имаат пристап до скриените содржини и ќе можат да го повратат избришаното преку овој ист посредник, доколку не ставите дополнителни ограничувања.',
@@ -1350,7 +1350,7 @@ $3 ја наведе следнава причина: ''$2''",
 * Несоодветни лични информации
 *: ''домашни адреси и телефонски броеви, матични броеви и тн.''",
 'revdelete-legend' => 'Постави ограничувања за видливост',
-'revdelete-hide-text' => 'Текст на ревизијата',
+'revdelete-hide-text' => 'Текст на преработката',
 'revdelete-hide-image' => 'Скриј содржина на податотека',
 'revdelete-hide-name' => 'Скриј го дејството и неговата одредница',
 'revdelete-hide-comment' => 'Опис на уредувањето',
@@ -1360,11 +1360,11 @@ $3 ја наведе следнава причина: ''$2''",
 'revdelete-radio-set' => 'Скриена',
 'revdelete-radio-unset' => 'Видлива',
 'revdelete-suppress' => 'Притајувај податоци и од администраторите',
-'revdelete-unsuppress' => 'Отстрани ограничувања на обновени ревизии',
+'revdelete-unsuppress' => 'Отстрани ограничувања на обновени преработки',
 'revdelete-log' => 'Причина:',
-'revdelete-submit' => 'Ð\9fÑ\80имени Ð½Ð° Ð¾Ð´Ð±Ñ\80ани {{PLURAL:$1|Ñ\80евизиÑ\98а|Ñ\80евизии}}',
-'revdelete-success' => "'''Видливоста на ревизијата е успешно изменета.'''",
-'revdelete-failure' => "'''Видливоста на ревизијата не можеше да се измени:'''
+'revdelete-submit' => 'Ð\9fÑ\80имени Ð²Ñ\80з {{PLURAL:$1|одбÑ\80ана Ð¿Ñ\80еÑ\80абоÑ\82ка|одбÑ\80ани Ð¿Ñ\80еÑ\80абоÑ\82ки}}',
+'revdelete-success' => "'''Видливоста на преработката е успешно изменета.'''",
+'revdelete-failure' => "'''Видливоста на преработката не можеше да се измени:'''
 $1",
 'logdelete-success' => "'''Успешно нагодување на дневник на видливост.'''",
 'logdelete-failure' => "'''Дневникот на видливост не може да биде нагоден:'''
@@ -1372,7 +1372,7 @@ $1",
 'revdel-restore' => 'Промена на видливост',
 'pagehist' => 'Историја на страницата',
 'deletedhist' => 'Историја на бришења',
-'revdelete-hide-current' => 'Грешка при сокривање на ставката датирана на $2, $1: ова е актуелна ревизија.',
+'revdelete-hide-current' => 'Грешка при сокривањето на ставката од $2, $1: Ова е тековната преработка.',
 'revdelete-show-no-access' => 'Грешка при прикажување на ставката датирана на $2, $1: оваа ставка е означена како „ограничена“. Немате пристап до неа.',
 'revdelete-modify-no-access' => 'Грешка при промена на ставката датирана на $2, $1: оваа ставка била означена како „ограничена“. Немате пристап до неа.',
 'revdelete-modify-missing' => 'Грешка при промена на ставка со број $1: ја нема во базата на податоци!',
@@ -1387,7 +1387,7 @@ $1",
 'revdelete-otherreason' => 'Друга/дополнителна причина:',
 'revdelete-reasonotherlist' => 'Друга причина',
 'revdelete-edit-reasonlist' => 'Уреди причини за бришење',
-'revdelete-offender' => 'Автор на ревизија:',
+'revdelete-offender' => 'Автор на преработката:',
 
 # Suppression log
 'suppressionlog' => 'Дневник на сокривања',
@@ -1396,19 +1396,19 @@ $1",
 
 # History merging
 'mergehistory' => 'Спојување на истории на страница',
-'mergehistory-header' => 'Оваа страница овозможува спојување на ревизии на изворна страница во нова (друга) страница.
+'mergehistory-header' => 'Оваа страница овозможува спојување на преработки на изворна страница во нова (друга) страница.
 Претходно проверете дека таа промена ќе го сочува историскиот континуитетот на страницата.',
-'mergehistory-box' => 'Спојување на ревизии на две страници:',
+'mergehistory-box' => 'Спојување на преработки на две страници:',
 'mergehistory-from' => 'Изворна страница:',
 'mergehistory-into' => 'Целна страница:',
 'mergehistory-list' => 'Спојлива историја на уредување',
-'mergehistory-merge' => 'Следните ревизии на [[:$1]] можат да се спојат во [[:$2]].
-Изберете ги само оние ревизии кои се создадени пред назначеното време.
+'mergehistory-merge' => 'Следните преработки на [[:$1]] можат да се спојат во [[:$2]].
+Изберете ги само оние преработки кои се создадени пред назначеното време.
 Предупредуваме дека ако ги користите навигационите врски, изборот ќе се изгуби.',
 'mergehistory-go' => 'Приказ на уредувања кои можат да се спојат',
-'mergehistory-submit' => 'Спојување на ревизии',
-'mergehistory-empty' => 'Нема ревизии кои можат да се спојат.',
-'mergehistory-success' => '$3 {{PLURAL:$3|ревизија|ревизии}} на [[:$1]] успешно {{PLURAL:$3|е споена|се споени}} во [[:$2]].',
+'mergehistory-submit' => 'Спојување на преработки',
+'mergehistory-empty' => 'Нема преработки кои можат да се спојат.',
+'mergehistory-success' => '$3 {{PLURAL:$3|преработка |преработки}} на [[:$1]] успешно {{PLURAL:$3|е споена|се споени}} во [[:$2]].',
 'mergehistory-fail' => 'Не е возможно да се направи спојување на историјата, проверете ја страницата и временските параметри.',
 'mergehistory-no-source' => 'Изворната страница $1 не постои.',
 'mergehistory-no-destination' => 'Целната страница $1 не постои.',
@@ -1421,24 +1421,24 @@ $1",
 
 # Merge log
 'mergelog' => 'Дневник на спојувања на страници',
-'pagemerge-logentry' => 'споено [[$1]] во [[$2]] (ревизии до $3)',
+'pagemerge-logentry' => 'споено [[$1]] во [[$2]] (преработки до $3)',
 'revertmerge' => 'Одвојување',
 'mergelogpagetext' => 'Следи список на скорешни спојувања на истории на страници.',
 
 # Diffs
 'history-title' => '$1: Историја на измените',
-'difference-title' => '$1: Разлика помеѓу ревизиите',
+'difference-title' => 'Разлика помеѓу преработките на „$1“',
 'difference-title-multipage' => '$1 и $2: Разлика помеѓу страниците',
 'difference-multipage' => '(Разлики помеѓу страници)',
 'lineno' => 'Ред $1:',
-'compareselectedversions' => 'Спореди избрани ревизии',
-'showhideselectedversions' => 'Прикажи/скриј избрани ревизии',
+'compareselectedversions' => 'Спореди избрани преработки',
+'showhideselectedversions' => 'Прикажи/скриј избрани преработки',
 'editundo' => 'откажи',
 'diff-empty' => '(нема разлика)',
-'diff-multi-sameuser' => '({{PLURAL:$1|Не е прикажана една меѓувремена ревизија|Не се прикажани $1 меѓувремени ревизии}} од истиот корисник)',
-'diff-multi-otherusers' => '({{PLURAL:$1|Не е прикажана една меѓувремена ревизија|Не се прикажани $1 меѓувремени ревизии}} од {{PLURAL:$2|еден друг корисник|$2 корисници}})',
-'diff-multi-manyusers' => '({{PLURAL:$1|Не е прикажана една меѓувремена ревизија направена|Не се прикажани $1 меѓувремени ревизии направени}} од повеќе од $2 {{PLURAL:$2|корисник|корисници}})',
-'difference-missing-revision' => 'Не пронајдов {{PLURAL:$2|една ревизија|$2 ревизии}} од оваа разлика ($1).
+'diff-multi-sameuser' => '({{PLURAL:$1|Не е прикажана една меѓувремена преработка|Не се прикажани $1 меѓувремени преработки}} од истиот корисник)',
+'diff-multi-otherusers' => '({{PLURAL:$1|Не е прикажана една меѓувремена преработка|Не се прикажани $1 меѓувремени преработки}} од {{PLURAL:$2|еден друг корисник|$2 корисници}})',
+'diff-multi-manyusers' => '({{PLURAL:$1|Не е прикажана една меѓувремена преработка направена|Не се прикажани $1 меѓувремени преработки направени}} од повеќе од $2 {{PLURAL:$2|корисник|корисници}})',
+'difference-missing-revision' => 'Не пронајдов {{PLURAL:$2|една преработка|$2 преработки}} од оваа разлика ($1).
 
 Ова обично се должи на застарена врска за разлики што води кон избришана страница.
 Повеќе подробности ќе најдете во [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневникот на бришења].',
@@ -1695,12 +1695,12 @@ $1",
 'right-delete' => 'Бришење страници',
 'right-bigdelete' => 'Бришење страници со долга историја',
 'right-deletelogentry' => 'Бришење и враќање на конкретни ставки во дневник',
-'right-deleterevision' => 'Бришење и враќање на конкретни ревизии на страници',
+'right-deleterevision' => 'Бришење и враќање на конкретни преработки на страници',
 'right-deletedhistory' => 'Прегледување на записи во историја на бришења, без придружниот текст',
-'right-deletedtext' => 'Прегледување на избришан текст и промени помеѓу избришани ревизии',
+'right-deletedtext' => 'Прегледување на избришан текст и промени помеѓу избришани преработки',
 'right-browsearchive' => 'Пребарување на избришани страници',
 'right-undelete' => 'Обновување избришана страница',
-'right-suppressrevision' => 'Прегледување и враќање на ревизии скриени од администратори',
+'right-suppressrevision' => 'Прегледување и враќање на преработки скриени од администратори',
 'right-suppressionlog' => 'Гледање на лични дневници',
 'right-block' => 'Оневозможување на останати корисници да уредуваат',
 'right-blockemail' => 'Оневозможување корисници да праќаат е-пошта',
@@ -1768,7 +1768,7 @@ $1",
 'action-deletedhistory' => 'прегледај ја историјата на бришења за оваа страница',
 'action-browsearchive' => 'барање на избришани страници',
 'action-undelete' => 'обнови ја оваа страница',
-'action-suppressrevision' => 'прегледај ја и обнови ја оваа скриена ревизија',
+'action-suppressrevision' => 'прегледај ја и обнови ја оваа скриена преработка',
 'action-suppressionlog' => 'преглед на овој li;en дневник',
 'action-block' => 'оневозможи го овој корисник да уредува',
 'action-protect' => 'измени го степенот на заштита на оваа страница',
@@ -2293,7 +2293,7 @@ $1',
 'withoutinterwiki-legend' => 'Претставка',
 'withoutinterwiki-submit' => 'Прикажи',
 
-'fewestrevisions' => 'Статии со најмалку ревизии',
+'fewestrevisions' => 'Статии со најмалку преработки',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|бајт|бајти}}',
@@ -2532,7 +2532,7 @@ $1',
 'unwatch' => 'Престани со набљудување',
 'unwatchthispage' => 'Престани набљудување',
 'notanarticle' => 'Не е статија',
-'notvisiblerev' => 'РевизиÑ\98ата била избришана',
+'notvisiblerev' => 'Ð\9fÑ\80еÑ\80абоÑ\82ката била избришана',
 'watchlist-details' => '{{PLURAL:$1|$1 страница|$1 страници}} во вашиот список на набљудувања, не броејќи ги страниците за разговор.',
 'wlheader-enotif' => 'Известувањето по е-пошта е вклучено.',
 'wlheader-showupdated' => "Страниците што се изменети од вашата последна посета се прикажани со '''задебелени''' букви",
@@ -2558,10 +2558,10 @@ $1',
 'enotif_subject_restored' => 'Страницата $1 на {{SITENAME}} е повратена од {{gender:$2|$2}}',
 'enotif_subject_changed' => 'Страницата $1 на {{SITENAME}} е изменета од {{gender:$2|$2}}',
 'enotif_body_intro_deleted' => 'Страницата $1 на {{SITENAME}} е избришана на $PAGEEDITDATE од {{gender:$2|$2}}. Погл. $3.',
-'enotif_body_intro_created' => 'Страницата $1 на {{SITENAME}} е создадена на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната ревизија ќе ја најдете на $3.',
-'enotif_body_intro_moved' => 'Страницата $1 на {{SITENAME}} е преместена на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната ревизија ќе ја најдете на $3.',
-'enotif_body_intro_restored' => 'Страницата $1 на {{SITENAME}} е повратена на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната ревизија ќе ја најдете на $3.',
-'enotif_body_intro_changed' => 'Страницата $1 на {{SITENAME}} е изменета на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната ревизија ќе ја најдете на $3.',
+'enotif_body_intro_created' => 'Страницата $1 на {{SITENAME}} е создадена на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната преработка ќе ја најдете на $3.',
+'enotif_body_intro_moved' => 'Страницата $1 на {{SITENAME}} е преместена на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната преработка ќе ја најдете на $3.',
+'enotif_body_intro_restored' => 'Страницата $1 на {{SITENAME}} е повратена на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната преработка ќе ја најдете на $3.',
+'enotif_body_intro_changed' => 'Страницата $1 на {{SITENAME}} е изменета на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната преработка ќе ја најдете на $3.',
 'enotif_lastvisited' => 'Видете $1 за сите промени од вашата последна посета.',
 'enotif_lastdiff' => 'Видете $1 за да ја видите оваа промена.',
 'enotif_anon_editor' => 'анонимен корисник $1',
@@ -2606,7 +2606,7 @@ $UNWATCHURL
 'exblank' => 'страницата беше празна',
 'delete-confirm' => 'Избриши „$1“',
 'delete-legend' => 'Бришење',
-'historywarning' => "'''Предупредување:''' Страницата што сакате да ја избришете има историја со околу $1 {{PLURAL:$1|ревизија|ревизии}}:",
+'historywarning' => "'''Предупредување:''' Страницата што сакате да ја избришете има историја со околу $1 {{PLURAL:$1|преработка|преработки}}:",
 'confirmdeletetext' => 'На пат сте трајно да избришете страница заедно со нејзината историја.
 Потврдете дека имате намера да го направите ова, дека ги разбирате последиците од тоа и дека го правите во согласност со [[{{MediaWiki:Policy-url}}|правилата]].',
 'actioncomplete' => 'Дејството е извршено',
@@ -2615,7 +2615,7 @@ $UNWATCHURL
 'dellogpage' => 'Дневник на бришења',
 'dellogpagetext' => 'Подолу е наведен список на најновите бришења.',
 'deletionlog' => 'дневник на бришењата',
-'reverted' => 'Вратено на претходната ревизија',
+'reverted' => 'Вратено на претходната преработка',
 'deletecomment' => 'Причина:',
 'deleteotherreason' => 'Друга/дополнителна причина:',
 'deletereasonotherlist' => 'Друга причина',
@@ -2626,9 +2626,9 @@ $UNWATCHURL
 ** На барање на авторот
 ** Прекинато пренасочување',
 'delete-edit-reasonlist' => 'Уреди причини за бришење',
-'delete-toobig' => 'Оваа страница има долга историја на уредување, преку $1 {{PLURAL:$1|ревизија|ревизии}}.
+'delete-toobig' => 'Оваа страница има долга историја на уредување, преку $1 {{PLURAL:$1|преработка|преработки}}.
 Бришењето на ваквии страници е забрането со цел {{SITENAME}} да се заштити од оштетувања.',
-'delete-warning-toobig' => 'Оваа страница има долга историја на уредување, преку $1 {{PLURAL:$1|ревизија|ревизии}}.
+'delete-warning-toobig' => 'Оваа страница има долга историја на уредување, преку $1 {{PLURAL:$1|преработка|преработки}}.
 Бришењето може да предизвика проблеми при работењето на базата на податоци на {{SITENAME}};
 продолжете доколку сте сигруни дека треба тоа да го сторите.',
 'deleting-backlinks-warning' => "'''Предупредување:''' До страницата што сакате да ја избришете водат [[Special:WhatLinksHere/{{FULLPAGENAME}}|други страници]] или пак се превметнуваат во неа.",
@@ -2648,7 +2648,7 @@ $UNWATCHURL
 Последното уредување го изврши [[User:$3|$3]] ([[User talk:$3|разговор]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Коментарот на уредувањето беше: „''$1''“.",
 'revertpage' => 'Отстрането уредувањето на [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]]), вратено на последната верзија на [[User:$1|$1]]',
-'revertpage-nouser' => 'Вратени уредувања од скриен корисник на последната ревизија на {{GENDER:$1|[[User:$1|$1]]}}',
+'revertpage-nouser' => 'Вратени уредувања од скриен корисник на последната преработка на {{GENDER:$1|[[User:$1|$1]]}}',
 'rollback-success' => 'Откажани уредувањата на $1; вратено на последната верзија на $2.',
 
 # Edit tokens
@@ -2731,25 +2731,25 @@ $UNWATCHURL
 # Undelete
 'undelete' => 'Преглед на избришани страници',
 'undeletepage' => 'Погледај и врати избришани страници',
-'undeletepagetitle' => "'''Во продолжение следат избришани ревизии на [[:$1|$1]]'''.",
+'undeletepagetitle' => "'''Во продолжение следат избришани преработки на [[:$1|$1]]'''.",
 'viewdeletedpage' => 'Прегледај ги избришаните страници',
 'undeletepagetext' => '{{PLURAL:$1|Следната страница била избришана но сè уште е во архивот и може да биде вратена.|Следните $1 страници биле избришани но сè уште се во архивот и можат да бидат вратени.}}
 Архивот може периодично да се чисти.',
-'undelete-fieldset-title' => 'Врати ревизии',
+'undelete-fieldset-title' => 'Врати преработки',
 'undeleteextrahelp' => "За да вратите целосна историја на една страница, отштиклирајте ги сите полиња и притиснете на „'''{{int:undeletebtn}}'''“.
-За да извршите делумно враќање, штиклирајте ги соодветните ревизии за враќање и притиснете на „'''{{int:undeletebtn}}'''“.",
+За да извршите делумно враќање, штиклирајте ги соодветните преработки за враќање и притиснете на „'''{{int:undeletebtn}}'''“.",
 'undeleterevisions' => '{{PLURAL:$1|$1 измена е архивирана|$1 измени се архивирани}}',
 'undeletehistory' => 'Ако ја обновите страницата, сите поправки ќе бидат вратени во историјата.
 Ако нова страница со исто име е создадена по бришењето, обновените поправки ќе се појават во претходната историја.',
-'undeleterevdel' => 'Избришаното нема да биде вратено ако тоа значи дека со тоа најгорната страница или ревизијата на податотеката делумно ќе се избрише.
-Во такви случаи, морате да ја отштиклирате или откриете (ако е скриена) најновата избришана ревизија.',
+'undeleterevdel' => 'Избришаното нема да биде вратено ако тоа значи дека со тоа најгорната страница или преработката на податотеката делумно ќе се избрише.
+Во такви случаи, морате да ја отштиклирате или откриете (ако е скриена) најновата избришана преработка.',
 'undeletehistorynoadmin' => 'Оваа статија е избришана. Причината за бришењето е наведена подолу,
 заедно со информации за корисникот кој ја уредувал страницата пред бришењето. Целиот текст
 од избришаните верзии е достапен само за администраторите.',
-'undelete-revision' => 'Избришана ревизија на $1 (од $4, во $5) од уредникот $3:',
-'undeleterevision-missing' => 'Грешна или непостоечка ревизија.
-Можеби имате лоша врска, ревизијата била обновена или избришана од архивата.',
-'undelete-nodiff' => 'Не постои постара ревизија.',
+'undelete-revision' => 'Избришана преработка на $1 (од $4, во $5) од уредникот $3:',
+'undeleterevision-missing' => 'Грешна или непостоечка преработка.
+Можеби имате лоша врска, преработката била обновена или избришана од архивата.',
+'undelete-nodiff' => 'Не постои постара преработка.',
 'undeletebtn' => 'Врати',
 'undeletelink' => 'погледај/врати',
 'undeleteviewlink' => 'преглед',
@@ -2769,8 +2769,8 @@ $1',
 'undelete-search-prefix' => 'Прикажи страници кои почнуваат со:',
 'undelete-search-submit' => 'Барај',
 'undelete-no-results' => 'Не се пронајдени соодветни страници во дневникот на бришења.',
-'undelete-filename-mismatch' => 'Не може да се обнови бараната ревизија на податотеката од $1: името не соодветствува',
-'undelete-bad-store-key' => 'Не може да се обнови ревизија на податотека до $1: податотеката ја снемало пред да биде избришана.',
+'undelete-filename-mismatch' => 'Не може да се обнови бараната преработка на податотеката од $1: името не соодветствува',
+'undelete-bad-store-key' => 'Не може да се обнови преработка на податотека до $1: податотеката ја снемало пред да биде избришана.',
 'undelete-cleanup-error' => 'Грешка при бришење на некористената архивска податотека „$1“.',
 'undelete-missing-filearchive' => 'Не можеше да се врати ID $1 because од податочниот архив бидејќи тој не е во базата на податоци.
 Можеби веќе бил избришан.',
@@ -2779,7 +2779,7 @@ $1',
 'undelete-error-long' => 'Се појавија грешки при обновувањето на податотеката:
 
 $1',
-'undelete-show-file-confirm' => 'Дали навистина сакате да ја погледнете избришаната ревизија на податотеката „<nowiki>$1</nowiki>“ од $2 на $3?',
+'undelete-show-file-confirm' => 'Дали навистина сакате да ја погледнете избришаната преработка на податотеката „<nowiki>$1</nowiki>“ од $2 на $3?',
 'undelete-show-file-submit' => 'Да',
 
 # Namespace form on various pages
@@ -2815,7 +2815,7 @@ $1',
 'sp-contributions-search' => 'Пребарување на придонеси',
 'sp-contributions-suppresslog' => 'притаени придонеси на корисникот',
 'sp-contributions-username' => 'IP-адреса или корисничко име:',
-'sp-contributions-toponly' => 'Прикажувај само последни ревизии',
+'sp-contributions-toponly' => 'Прикажувај само последни преработки',
 'sp-contributions-newonly' => 'Прикажувај само новосоздадени страници',
 'sp-contributions-submit' => 'Пребарај',
 
@@ -3081,11 +3081,11 @@ $1',
 'exporttext' => 'Можете да го извезете текстот и историјата на уредување на избрана страница или група на страници во XML формат.
 Овие податоци може да бидат вчитани на некое друго вики кое се користи со МедијаВики преку [[Special:Import|увезување на страница]].
 
-За извезување на страници, внесете ги насловите во полето прикажано подолу, еден наслов на статија во ред, потоа изберете дали сакате да ја извезете само последната ревизија или и сите постари ревизии.
+За извезување на страници, внесете ги насловите во полето прикажано подолу, еден наслов на статија во ред, потоа изберете дали сакате да ја извезете само последната преработка или и сите постари преработки.
 
 Ако ја сакате само тековната верзија, би можеле да искористите врска од видот [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] за страницата „[[{{MediaWiki:Mainpage}}]]“.',
 'exportall' => 'Извези ги сите страници',
-'exportcuronly' => 'Вклучи ја само тековната ревизија, а не сета историја',
+'exportcuronly' => 'Вклучи ја само тековната преработка, а не сета историја',
 'exportnohistory' => "----
 '''Напомена:''' извезувањето на целата историја на страниците преку овој образец е оневозможено од перформансни причини.",
 'exportlistauthors' => 'Прикажувај полн список на придонеси во секоја страница',
@@ -3150,7 +3150,7 @@ $2',
 'importtext' => 'Извезете ја податотеката од изворното вики користејќи ја [[Special:Export|алатката за извоз]].
 Зачувајте ја на вашиот сметач и подигнете ја овде.',
 'importstart' => 'Увоз на страници...',
-'import-revision-count' => '$1 {{PLURAL:$1|ревизија|ревизии}}',
+'import-revision-count' => '$1 {{PLURAL:$1|преработка|преработки}}',
 'importnopages' => 'Нема страници за увоз.',
 'imported-log-entries' => '{{PLURAL:$1|Увезен е $1 дневнички запис|Увезени се $1 дневнички записи}}.',
 'importfailed' => 'Неуспешно внесување: $1',
@@ -3170,7 +3170,7 @@ $2',
 Проблеми со привремена папка за податотеки.',
 'import-parse-failure' => 'Грешка во расчленувањето при увозот на XML',
 'import-noarticle' => 'Нема страница за увоз!',
-'import-nonewrevisions' => 'Не увезов ниедна ревизија (сите се веќе присутни или изоставени поради грешки)',
+'import-nonewrevisions' => 'Не увезов ниедна преработка (сите се веќе присутни или изоставени поради грешки)',
 'xml-error-string' => '$1 во ред $2, колона $3 (бајт $4): $5',
 'import-upload' => 'Подигни XML податоци',
 'import-token-mismatch' => 'Губење на сесиските податоци. Обидете се повторно.',
@@ -3180,8 +3180,8 @@ $2',
 'import-error-interwiki' => 'Страницата „$1“ не е увезена бидејќи името е резервирано за надворешни врски (меѓувики).',
 'import-error-special' => 'Страницата „$1“ не е увезена бидејќи припаѓа на посебен именски простор што не дозволува страници.',
 'import-error-invalid' => 'Страницата „$1“ не е увезена бидејќи името ѝ е неважечко.',
-'import-error-unserialize' => 'РевизиÑ\98ата $2 на страницата „$1“ не може да се отсеријализира. Утврдено е дека користи содржинскиот модел $3 што е серијализиран како $4.',
-'import-error-bad-location' => 'РевизиÑ\98ата $2 што го користи содржинскиот модел $3 не може да се складира во „$1“ на ова вики бидејќи тој модел не е поддржан на таа страница.',
+'import-error-unserialize' => 'Ð\9fÑ\80еÑ\80абоÑ\82ката $2 на страницата „$1“ не може да се отсеријализира. Утврдено е дека користи содржинскиот модел $3 што е серијализиран како $4.',
+'import-error-bad-location' => 'Ð\9fÑ\80еÑ\80абоÑ\82ката $2 што го користи содржинскиот модел $3 не може да се складира во „$1“ на ова вики бидејќи тој модел не е поддржан на таа страница.',
 'import-options-wrong' => '{{PLURAL:$2|Погрешна можност|Погрешни можности}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Укажаната основна страница е неважечки наслов.',
 'import-rootpage-nosubpage' => 'Именскиот простор „$1“ на основната страница не допушта потстраници.',
@@ -3190,9 +3190,9 @@ $2',
 'importlogpage' => 'Дневник на увезувања',
 'importlogpagetext' => 'Административно увезување на страници со историја на уредување од други викија.',
 'import-logentry-upload' => 'увезена [[$1]] со подигање на податотека',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|ревизија|ревизии}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|преработка|преработки}}',
 'import-logentry-interwiki' => 'трансвикифиран $1',
-'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|ревизија|ревизии}} од $2',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|преработка|преработки}} од $2',
 
 # JavaScriptTest
 'javascripttest' => 'Проба на JavaScript',
@@ -3321,14 +3321,14 @@ $2',
 'spamprotectionmatch' => 'Следниот текст е она што го предизвика нашиот филтер за спам: $1',
 'spambot_username' => 'МедијаВики чистач на спам',
 'spam_reverting' => 'Враќам на последната верзија што не содржи врска до $1',
-'spam_blanking' => 'Сите ревизии содржеа врски до $1. Чистам',
-'spam_deleting' => 'Сите ревизии содржеа врски до $1. Бришам',
+'spam_blanking' => 'Сите преработки содржеа врски до $1. Чистам',
+'spam_deleting' => 'Сите преработки содржеа врски до $1. Бришам',
 'simpleantispam-label' => "Проверка против спам.
 '''НЕ''' пополнувајте го ова!",
 
 # Info page
 'pageinfo-title' => 'Информации за „$1“',
-'pageinfo-not-current' => 'Информациите може да се прикажат само за тековната ревизија.',
+'pageinfo-not-current' => 'Информациите може да се прикажат само за тековната преработка.',
 'pageinfo-header-basic' => 'Основни информации',
 'pageinfo-header-edits' => 'Историја на уредувања',
 'pageinfo-header-restrictions' => 'Заштита на страницата',
@@ -3384,7 +3384,7 @@ $2',
 'markaspatrolleddiff' => 'Означи како проверена верзија',
 'markaspatrolledtext' => 'Означи ја верзијата како проверена',
 'markedaspatrolled' => 'Означено како проверено',
-'markedaspatrolledtext' => 'Избраната ревизија на [[:$1]]  е означена како испатролирана.',
+'markedaspatrolledtext' => 'Избраната преработка на [[:$1]] е означена како испатролирана.',
 'rcpatroldisabled' => 'Оневозможено проверка на скорешни промени',
 'rcpatroldisabledtext' => 'Патролирањето на Скорешните промени е деактивирано.',
 'markedaspatrollederror' => 'Не можам да означам како проверена',
@@ -3395,17 +3395,17 @@ $2',
 
 # Patrol log
 'patrol-log-page' => 'Дневник на патролирања',
-'patrol-log-header' => 'Ова е дневник на патролирани ревизии.',
+'patrol-log-header' => 'Ова е дневник на патролирани преработки.',
 'log-show-hide-patrol' => '$1 дневник на патролирање',
 
 # Image deletion
-'deletedrevision' => 'Избришана стара ревизија $1.',
+'deletedrevision' => 'Избришана стара преработка $1.',
 'filedeleteerror-short' => 'Грешка при бришење на податотека: $1',
 'filedeleteerror-long' => 'Се појавија грешки при бришењето на податотеката:
 
 $1',
 'filedelete-missing' => 'Податотеката „$1“ не може да се избрише, бидејќи не постои.',
-'filedelete-old-unregistered' => 'Наведената ревизија на податотеката „$1“ не се наоѓа во базата на податоци.',
+'filedelete-old-unregistered' => 'Наведената преработка на податотеката „$1“ не се наоѓа во базата на податоци.',
 'filedelete-current-unregistered' => 'Наведената податотека „$1“ не се наоѓа во базата на податоци.',
 'filedelete-archive-read-only' => 'Во именикот за архивирање „$1“ семрежниот опслужувач не може да запишува.',
 
@@ -4234,7 +4234,7 @@ $5
 'version-hook-name' => 'Име на кука',
 'version-hook-subscribedby' => 'Претплатено од',
 'version-version' => '(Верзија $1)',
-'version-svn-revision' => '(рев. $2)',
+'version-svn-revision' => 'прер. $1',
 'version-license' => 'Лиценца на МедијаВики',
 'version-ext-license' => 'Лиценца',
 'version-ext-colheader-name' => 'Додаток',
@@ -4265,15 +4265,15 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath?uselang=mk Скрипта]',
 
 # Special:Redirect
-'redirect' => 'Пренасочување по податотеки, корисник или назнака на ревизија',
+'redirect' => 'Пренасочување по податотеки, корисник или назнака на преработка',
 'redirect-legend' => 'Пренасочување кон податотека или страница',
-'redirect-summary' => 'Оваа специјална страница пренасочува кон податотека (се задава името), страница (се задава назнаката на ревизијата или страницата) или корисничка странца (се задава бројчената назнака на корисникот). Употреба: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Оваа специјална страница пренасочува кон податотека (се задава името), страница (се задава назнаката на преработката или страницата) или корисничка странца (се задава бројчената назнака на корисникот). Употреба: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Оди',
 'redirect-lookup' => 'Пребарај:',
 'redirect-value' => 'Вредност:',
 'redirect-user' => 'Корисничка назнака',
 'redirect-page' => 'Назнака на страницата',
-'redirect-revision' => 'РевизиÑ\98а на страницата',
+'redirect-revision' => 'Ð\9fÑ\80еÑ\80абоÑ\82ка на страницата',
 'redirect-file' => 'Име на податотека',
 'redirect-not-exists' => 'Вредноста не е најдена',
 
@@ -4340,12 +4340,12 @@ $5
 'comparepages' => 'Спореди страници',
 'compare-page1' => 'Страница 1',
 'compare-page2' => 'Страница 2',
-'compare-rev1' => 'РевизиÑ\98а 1',
-'compare-rev2' => 'РевизиÑ\98а 2',
+'compare-rev1' => 'Ð\9fÑ\80еÑ\80абоÑ\82ка 1',
+'compare-rev2' => 'Ð\9fÑ\80еÑ\80абоÑ\82ка 2',
 'compare-submit' => 'Спореди',
 'compare-invalid-title' => 'Наведениот наслов е неважечки.',
 'compare-title-not-exists' => 'Наведениот наслов не постои.',
-'compare-revision-not-exists' => 'Наведената ревизија не постои.',
+'compare-revision-not-exists' => 'Наведената преработка не постои.',
 
 # Database error messages
 'dberr-header' => 'Ова вики не функционира како што треба',
@@ -4380,14 +4380,14 @@ $5
 'logentry-delete-delete' => '$1 {{GENDER:$2|ја избриша}} страницата $3',
 'logentry-delete-restore' => '$1 {{GENDER:$2|ја возобнови}} страницата $3',
 'logentry-delete-event' => '$1 {{GENDER:$2|ја измени}} видливоста на {{PLURAL:$5|настан во дневникот|$5 настани во дневникот}} на $3: $4',
-'logentry-delete-revision' => '$1 {{GENDER:$2|ја измени}} видливоста на {{PLURAL:$5|ревизија|$5 ревизии}} на страницата $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|ја измени}} видливоста на {{PLURAL:$5|преработка|$5 преработки}} на страницата $3: $4',
 'logentry-delete-event-legacy' => '$1 {{GENDER:$2|ја измени}} видливоста на настаните во дневникот на $3',
-'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|ја измени}} видливоста на ревизии на страницата $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|ја измени}} видливоста на преработки на страницата $3',
 'logentry-suppress-delete' => '$1 {{GENDER:$2|ја притаи}} страницата $3',
 'logentry-suppress-event' => '$1 потајно {{GENDER:$2|ја измени}} видливоста на {{PLURAL:$5|настан во дневникот|$5 настани во дневникот}} на $3: $4',
-'logentry-suppress-revision' => '$1 потајно {{GENDER:$2|ја измени}} видливоста на {{PLURAL:$5|ревизија|$5 ревизии}} на страницата $3: $4',
+'logentry-suppress-revision' => '$1 потајно {{GENDER:$2|ја измени}} видливоста на {{PLURAL:$5|преработка|$5 преработки}} на страницата $3: $4',
 'logentry-suppress-event-legacy' => '$1 потајно {{GENDER:$2|ја измени}} видливоста на настани во дневникот на $3',
-'logentry-suppress-revision-legacy' => '$1 потајно {{GENDER:$2|ја измени}} видливоста на ревизии на страницата $3',
+'logentry-suppress-revision-legacy' => '$1 потајно {{GENDER:$2|ја измени}} видливоста на преработки на страницата $3',
 'revdelete-content-hid' => 'содржината е скриена',
 'revdelete-summary-hid' => 'описот на уредувањето е скриен',
 'revdelete-uname-hid' => 'корисничкото име е скриено',
@@ -4400,8 +4400,8 @@ $5
 'logentry-move-move-noredirect' => '$1 {{GENDER:$2|ја премести}} страницата $3 на $4 без да остави пренасочување',
 'logentry-move-move_redir' => '$1 {{GENDER:$2|ја премести}} страницата $3 на $4 презапишувајќи врз пренасочување',
 'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|ја премести}} страницата $3 на $4 презапишувајќи врз пренасочување без да остави пренасочување',
-'logentry-patrol-patrol' => '$1 {{GENDER:$2|ја означи}} ревизијата $4 на страницата $3 како испатролирана',
-'logentry-patrol-patrol-auto' => '$1 автоматски {{GENDER:$2|ја означи}} ревизијата $4 на страницата $3 како испатролирана',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|ја означи}} преработката $4 на страницата $3 како испатролирана',
+'logentry-patrol-patrol-auto' => '$1 автоматски {{GENDER:$2|ја означи}} преработката $4 на страницата $3 како испатролирана',
 'logentry-newusers-newusers' => '{{GENDER:$2|Направена}} корисничката сметка $1',
 'logentry-newusers-create' => '{{GENDER:$2|Направена}} корисничката сметка $1',
 'logentry-newusers-create2' => '{{GENDER:$2|Направена}} корисничката сметка $3 од $1',
index c898f1c..2ce31c8 100644 (file)
@@ -1293,6 +1293,8 @@ $3 നൽകിയിരിക്കുന്ന കാരണം ''$2'' എന
 'revdelete-no-file' => 'നിർദ്ദേശിച്ച പ്രമാണം നിലവിലില്ല.',
 'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" പ്രമാണത്തിന്റെ $2 തീയതി $3 -യ്ക്കു നിലനിന്നിരുന്ന മായ്ക്കപ്പെട്ട പതിപ്പു  കാണണം എന്നു താങ്കൾക്ക് ഉറപ്പാണോ?',
 'revdelete-show-file-submit' => 'അതെ',
+'revdelete-selected-text' => '[[:$2]] എന്ന താളിന്റെ {{PLURAL:$1|തിരഞ്ഞെടുത്ത നാൾപ്പതിപ്പ്|തിരഞ്ഞെടുത്ത നാൾപ്പതിപ്പുകൾ}}:',
+'revdelete-selected-file' => '[[:$2]] എന്ന പ്രമാണത്തിന്റെ {{PLURAL:$1|തിരഞ്ഞെടുത്ത പതിപ്പ്|തിരഞ്ഞെടുത്ത പതിപ്പുകൾ}}:',
 'logdelete-selected' => '{{PLURAL:$1|തിരഞ്ഞെടുത്ത രേഖയിലുള്ളത്|തിരഞ്ഞെടുത്ത രേഖയിലുള്ളവ}}:',
 'revdelete-text-text' => 'മായ്ക്കപ്പെട്ട നാൾപ്പതിപ്പുകൾ താളിന്റെ നാൾവഴിയിൽ കാണാവുന്നതായിരിക്കുമെങ്കിലും, അവയുടെ ഉള്ളടക്കത്തിന്റെ ചില ഭാഗങ്ങൾ പൊതുജനങ്ങൾക്ക് ലഭ്യമായിരിക്കണമെന്നില്ല.',
 'revdelete-text-file' => 'പ്രമാണത്തിന്റെ മായ്ക്കപ്പെട്ട പതിപ്പുകൾ താളിന്റെ നാൾവഴിയിൽ കാണാവുന്നതായിരിക്കുമെങ്കിലും, അവയുടെ ഉള്ളടക്കത്തിന്റെ ചില ഭാഗങ്ങൾ പൊതുജനങ്ങൾക്ക് ലഭ്യമായിരിക്കണമെന്നില്ല.',
@@ -2151,6 +2153,11 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 # List redirects
 'listredirects' => 'തിരിച്ചുവിടൽ താളുകളുടെ പട്ടിക കാണിക്കുക',
 
+# List duplicated files special page
+'listduplicatedfiles' => 'പകർപ്പുകളുള്ള പ്രമാണങ്ങളുടെ പട്ടിക',
+'listduplicatedfiles-summary' => 'ഒരു പ്രമാണത്തിന്റെ ഏറ്റവും പുതിയ പതിപ്പ് മറ്റേതെങ്കിലും പ്രമാണത്തിന്റെ ഏറ്റവും പുതിയ പതിപ്പിന്റെ പകർപ്പ് ആണെങ്കിൽ, ഈ പട്ടികയിൽ കാണാവുന്നതാണ്. പ്രാദേശിക പ്രമാണങ്ങൾ മാത്രമാണ് കണക്കിലെടുത്തിരിക്കുന്നത്.',
+'listduplicatedfiles-entry' => '[[:File:$1|$1]] എന്ന പ്രമാണത്തിന് [[$3|{{PLURAL:$2|ഒരു പകർപ്പ്|$2 പകർപ്പുകൾ}}]] ഉണ്ട്.',
+
 # Unused templates
 'unusedtemplates' => 'ഉപയോഗിക്കപ്പെടാത്ത ഫലകങ്ങൾ',
 'unusedtemplatestext' => '{{ns:template}} എന്ന നാമമേഖലയിൽ ഉള്ളതും ഒരു താളിലും ചേർത്തിട്ടുമില്ലാത്ത എല്ലാ ഫലകതാളുകളുടേയും പട്ടിക ഈ താളിൽ കാണാം. ഫലകങ്ങൾ മായ്ക്കുന്നതിനു മുൻപ് അതു മറ്റൊരു താളിലും ഉപയോഗിക്കുന്നില്ല എന്നുറപ്പാക്കുക.',
@@ -2600,7 +2607,7 @@ $UNWATCHURL
 '''$1''' എന്ന താളിന്റെ നിലവിലുള്ള ക്രമീകരണം ഇതാണ്‌:",
 'protect-locked-access' => "താളുകളുടെ സംരക്ഷണമാനത്തിൽ വ്യതിയാനം വരുത്തുവാനുള്ള അനുമതി താങ്കളുടെ അംഗത്വത്തിനില്ല.
 '''$1''' എന്ന താളിന്റെ നിലവിലുള്ള ക്രമീകരണങ്ങൾ ഇതാ:",
-'protect-cascadeon' => 'à´\88 à´¤à´¾àµ¾ à´¨à´¿àµ¼à´\9dരിതസà´\82à´°à´\95àµ\8dഷിതമായ (cascading protection) {{PLURAL:$1|à´\92à´°àµ\81 à´¤à´¾à´³à´¿àµ½|പല à´¤à´¾à´³àµ\81à´\95ളിൽ}} à´\89ൾപàµ\8dà´ªàµ\86à´\9fàµ\81à´¤àµ\8dതപàµ\8dà´ªàµ\86à´\9fàµ\81à´¤àµ\8dതപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dനതിനാൽ à´\87à´¤àµ\8d à´¸à´\82à´°à´\95àµ\8dà´·à´¿à´¤ à´¤à´¾à´³à´¾à´£àµ\8d. à´\8eà´¨àµ\8dനാൽ à´¤à´¾à´\99àµ\8dà´\95ൾà´\95àµ\8dà´\95àµ\8d à´\88 à´¤à´¾à´³à´¿à´¨àµ\8dà´±àµ\86 à´¸à´\82à´°à´\95àµ\8dഷണമാനà´\82 à´®à´¾à´±àµ\8dà´±àµ\81വാൻ à´\95à´´à´¿à´¯àµ\81à´\82, à´\85à´\99àµ\8dà´\99à´¨àµ\86 à´\9aàµ\86à´¯àµ\8dതാൽ à´¨à´¿àµ¼à´\9dരിതസà´\82à´°à´\95àµ\8dഷണതàµ\8dതിനàµ\81 മാറ്റം വരികയില്ല.',
+'protect-cascadeon' => 'à´\88 à´¤à´¾àµ¾ à´¸à´\82à´°à´\95àµ\8dഷണപരമàµ\8dപരയിൽ à´\89ൾപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9f (cascading protection) {{PLURAL:$1| à´¤à´¾à´³à´¿àµ½| à´¤à´¾à´³àµ\81à´\95ളിൽ}} à´\89ൾപàµ\8dà´ªàµ\86à´\9fàµ\81à´¤àµ\8dതിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dനതിനാൽ à´\87à´¤àµ\8d à´¸à´\82à´°à´\95àµ\8dà´·à´¿à´¤ à´¤à´¾à´³à´¾à´£àµ\8d. à´\8eà´¨àµ\8dനാൽ à´¤à´¾à´\99àµ\8dà´\95ൾà´\95àµ\8dà´\95àµ\8d à´\88 à´¤à´¾à´³à´¿à´¨àµ\8dà´±àµ\86 à´¸à´\82à´°à´\95àµ\8dഷണമാനà´\82 à´®à´¾à´±àµ\8dà´±àµ\81വാൻ à´\95à´´à´¿à´¯àµ\81à´\82, à´\85à´\99àµ\8dà´\99à´¨àµ\86 à´\9aàµ\86à´¯àµ\8dതാൽ à´¸à´\82à´°à´\95àµ\8dഷണപരമàµ\8dപരയിൽ മാറ്റം വരികയില്ല.',
 'protect-default' => 'എല്ലാ ഉപയോക്താക്കളെയും അനുവദിക്കുക',
 'protect-fallback' => '"$1" അനുവാദമുള്ള ഉപയോക്താക്കളെ മാത്രം അനുവദിക്കുന്നു',
 'protect-level-autoconfirmed' => 'സ്ഥിരീകരിക്കപ്പെട്ട ഉപയോക്താക്കളെ മാത്രം അനുവദിക്കുന്നു',
index 755af5e..faa0fd4 100644 (file)
@@ -2262,7 +2262,7 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Нэрний зай:',
 'invert' => 'Зааснаас бусад',
-'namespace_association' => 'Заасан төрлөөс',
+'namespace_association' => 'Заасантай холбоотой',
 'blanknamespace' => '(Гол)',
 
 # Contributions
index 37046bf..203cd79 100644 (file)
@@ -352,7 +352,6 @@ $2، $1',
 'disclaimers' => 'تکذیب‌نومه‌ئون',
 'disclaimerpage' => 'Project:تکذیب‌نومه',
 'edithelp' => 'دچی‌ین رانما',
-'helppage' => 'Help:راهنما',
 'mainpage' => 'گت صفحه',
 'mainpage-description' => 'گت صفحه',
 'policy-url' => 'Project:سیاستون',
@@ -620,8 +619,6 @@ $2، $1',
 
 # Revision deletion
 'rev-delundel' => 'دیار بیّن/فرو بوردن',
-'revdelete-text' => "'''نسخه‌ئون و حذف بئی موارد ره بشنه سیاهه جا و صفحه تاریخچه دله بدین، ولی اتی قسمت از وشونه محتواره بقیه کارورون نتوننه بوینن.'''
-{{SITENAME}} بقیه مدیرون بتوننه اینتا پنهون بئیه محتوا ره هارشن و وشونه حذف بئیون ره احیاء هاکنن، مگر اینکه اتی سری محدودیت ونه رو اعمال بئی باشه.",
 'revdel-restore' => 'دیاری تغییر هدائن',
 
 # History merging
index d580427..886aefe 100644 (file)
@@ -252,7 +252,6 @@ $messages = array(
 'disclaimers' => 'Avvertimiènte',
 'disclaimerpage' => 'Project:Avvertimiènte generale',
 'edithelp' => 'Guida',
-'helppage' => 'Help:Ajùto',
 'mainpage' => 'Paggena prencepale',
 'mainpage-description' => 'Paggena prencepale',
 'policy-url' => 'Project:Policy',
index f1d8a96..52e659f 100644 (file)
@@ -15,6 +15,7 @@
  * @author Kaganer
  * @author Purodha
  * @author Servien
+ * @author Sjoerddebruin
  * @author Slomox
  * @author Urhixidur
  * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
index e550351..99e017e 100644 (file)
@@ -1073,7 +1073,7 @@ $1",
 'search-section' => '(खण्ड $1)',
 'search-suggest' => 'के तपाईको खोजाई : $1 हो?',
 'search-interwiki-caption' => 'भगिनी आयोजना',
-'search-interwiki-default' => '$1 नतिजाहरू:',
+'search-interwiki-default' => '$1देखिका नतिजाहरू:',
 'search-interwiki-more' => '(अझै)',
 'search-relatedarticle' => 'सम्बन्धित',
 'searcheverything-enable' => 'सबै नेमस्पेसेजहरुमा खोज्नुहोस्',
index bb0e3e4..9ecc40a 100644 (file)
@@ -1647,7 +1647,7 @@ Denne informasjonen vil vera offentleg.',
 'recentchanges-label-plusminus' => 'Storleiken til sida vart endra med så mange byte',
 'recentchanges-legend-heading' => "'''Tyding:'''",
 'recentchanges-legend-newpage' => '(sjå dessutan [[Special:NewPages|lista over nye sider]])',
-'rcnotefrom' => "Nedanfor vert opp til '''$1''' endringar sidan  ''' $2''' viste.",
+'rcnotefrom' => 'Nedanfor er endringane gjorde sidan <strong>$2</strong> viste (opp til <strong>$1</strong> stykke)',
 'rclistfrom' => 'Vis nye endringar sidan $1',
 'rcshowhideminor' => '$1 småplukk',
 'rcshowhidebots' => '$1 robotar',
index efd0d06..ae72d1a 100644 (file)
@@ -1278,9 +1278,9 @@ Jeśli chcesz, możesz [$1 obejrzeć porównanie wersji].",
 Szczegółowe informacje mogą znajdować się w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rejestrze ukrywania].
 Jeśli chcesz możesz [$1 obejrzeć porównanie wersji].",
 'rev-deleted-diff-view' => "Jedna z wersji użytych w porównaniu została '''usunięta'''.
-Jeśli chcesz możesz zobaczyć porównanie. Szczegóły mogą znajdować się w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejestrze usunięć].",
+Jeśli chcesz, możesz zobaczyć porównanie. Szczegóły można znaleźć w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejestrze usunięć].",
 'rev-suppressed-diff-view' => "Jedna z wersji użytych w porównaniu została '''utajniona'''.
-Jeśli chcesz możesz zobaczyć porównanie. Szczegóły mogą znajdować się w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejestrze utajniania].",
+Jeśli chcesz możesz zobaczyć porównanie. Szczegóły można znaleźć w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejestrze utajniania].",
 'rev-delundel' => 'pokaż/ukryj',
 'rev-showdeleted' => 'pokaż',
 'revisiondelete' => 'Usuń/odtwórz wersje',
@@ -1290,6 +1290,8 @@ wybrana wersja nie istnieje lub próbowano ukryć wersję bieżącą.',
 'revdelete-no-file' => 'Wybrany plik nie istnieje.',
 'revdelete-show-file-confirm' => 'Czy jesteś pewien, że chcesz zobaczyć usuniętą wersję pliku „<nowiki>$1</nowiki>” z $2 o $3?',
 'revdelete-show-file-submit' => 'Tak',
+'revdelete-selected-text' => '{{PLURAL:$1|Wybrana wersja|Wybrane wersje}} [[:$2]]:',
+'revdelete-selected-file' => '{{PLURAL:$1|Wybrana wersja pliku|Wybrane wersje pliku}} [[:$2]]:',
 'logdelete-selected' => 'Zaznaczone {{PLURAL:$1|zdarzenie|zdarzenia}} z rejestru:',
 'revdelete-text-text' => 'Usunięte wersje będą nadal widoczne w historii strony, ale niektóre fragmenty ich treści nie będą dostępne dla wszystkich.',
 'revdelete-text-file' => 'Usunięte wersje pliku będą nadal widoczne w historii pliku, ale niektóre fragmenty ich treści nie będą dostępne dla wszystkich.',
index 48076ea..82a9c9b 100644 (file)
@@ -485,6 +485,7 @@ Che a dësmentia pa ëd cambié ij [[Special:Preferences|sò gust për {{SITENAM
 'gotaccountlink' => "Ch'a rintra ant ël sistema",
 'userlogin-resetlink' => "A l'ha dësmentià ij sò detaj për intré ant ël sistema?",
 'userlogin-resetpassword-link' => 'Ciav dësmentià?',
+'userlogin-helplink2' => 'Agiut a la conession',
 'userlogin-loggedin' => "A l'é già rintrà an ël sistema tanme {{GENDER:$1|$1}}.
 Ch'a deuvra ël formolari sì-sota për rintré coma n'àutr n'utent.",
 'userlogin-createanother' => "Creé n'àutr cont",
@@ -579,6 +580,7 @@ Për piasì, ch'a speta $1 prima ëd prové torna.",
 'createacct-another-realname-tip' => "Ël nòm ver a l'é opsional.
 S'a decid ëd butelo, a sarà dovrà për dé a l'utent ël mérit ëd sò travaj.",
 'pt-login' => 'Rintré ant ël sistema',
+'pt-login-button' => 'Intré ant ël sistema',
 'pt-createaccount' => 'Creé un cont',
 'pt-userlogout' => 'Seurte dal sistema',
 
@@ -612,6 +614,9 @@ Për finì ëd rintré ant ël sistema, a dev definì na neuva ciav ambelessì:"
 'resetpass-abort-generic' => "La modìfica ëd la ciav a l'é stàita anulà da n'estension.",
 'resetpass-expired' => "Soa ciav a l'é scadùa. Për piasì, ch'a definissa na ciav neuva për rintré ant ël sistema.",
 'resetpass-expired-soft' => "Soa ciav a l'é scadùa e a l'ha damanca d'esse arnovà. Për piasì, ch'a serna na neuva ciav adess o ch'a sgnaca su «{{int:resetpass-submit-cancel}}» për cangela pi tard.",
+'resetpass-validity-soft' => "Soa ciav a l'é nen bon-a: $1
+
+Për piasì, ch'a serna na neuva ciav adess, opura ch'a sgnaca su «{{int:resetpass-submit-cancel}}» për riampostela pi tard.",
 
 # Special:PasswordReset
 'passwordreset' => 'Ri-inissialisassion ëd la ciav',
@@ -994,7 +999,11 @@ Chiel a peul ancora s-ciairé costa diferensa; a peulo essje pì 'd detaj ant ë
 'revdelete-no-file' => "L'archivi sërcà a-i é pa.",
 'revdelete-show-file-confirm' => 'É-lo sigur ëd vorèj vëdde na vërsion scancelà dl\'archivi "<nowiki>$1</nowiki>" da $2 a $3?',
 'revdelete-show-file-submit' => 'Bò!',
-'logdelete-selected' => '{{PLURAL:$1|Event|Event}} dël registr selessionà:',
+'revdelete-selected-text' => '{{PLURAL:$1|Revision selessionnà}} ëd [[:$2]] :',
+'revdelete-selected-file' => "{{PLURAL:$1|Version d'archivi selessionà}} ëd [[:$2]]:",
+'logdelete-selected' => '{{PLURAL:$1|Event}} dël registr selessionà:',
+'revdelete-text-text' => 'Le revision ëscancelà a compariran ancora ant la stòria dla pàgina, ma na part ëd sò contnù a sarà inacessìbil al pùblich.',
+'revdelete-text-file' => "Le version d'archivi scancelà a compariran ancora ant la stòria dj'archivi, ma na part ëd sò contnù a sarà inacessìbil al pùblich.",
 'revdelete-confirm' => "Për piasì, ch'a confema ch'a veul fé sòn, ch'as rend cont dle conseguense, e ch'a lo fa an acòrd con [[{{MediaWiki:Policy-url}}|le régole]].",
 'revdelete-suppress-text' => "La scancelassion a dovrìa '''mach''' esse dovrà an costi cas:
 * Anformassion ch'a podrìo esse difamatòrie
index a933e66..f8e7e2f 100644 (file)
@@ -78,6 +78,7 @@
  * @author Liuxinyu970226
  * @author Lloffiwr
  * @author MF-Warburg
+ * @author MIKHEIL
  * @author Malafaya
  * @author MarkvA
  * @author Matma Rex
@@ -362,13 +363,15 @@ One of the set: {{msg-mw|Jan}}, {{msg-mw|Feb}}, {{msg-mw|Mar}}, {{msg-mw|Apr}},
 'february-date' => 'A date in the Gregorian month of February. $1 is the numerical date, for example "23".',
 'march-date' => 'A date in the Gregorian month of March. $1 is the numerical date, for example "23".',
 'april-date' => 'A date in the Gregorian month of April. $1 is the numerical date, for example "23".',
-'may-date' => 'A date in the Gregorian month of May. $1 is the numerical date, for example "23". The month name is not abbreviated.',
+'may-date' => 'A date in the Gregorian month of May. $1 is the numerical date, for example "23". The month name is not abbreviated.
+{{Identical|May}}',
 'june-date' => 'A date in the Gregorian month of June. $1 is the numerical date, for example "23".',
 'july-date' => 'A date in the Gregorian month of July. $1 is the numerical date, for example "23".',
 'august-date' => 'A date in the Gregorian month of August. $1 is the numerical date, for example "23".',
 'september-date' => 'A date in the Gregorian month of September. $1 is the numerical date, for example "23".',
 'october-date' => 'A date in the Gregorian month of October. $1 is the numerical date, for example "23".',
-'november-date' => 'A date in the Gregorian month of November. $1 is the numerical date, for example "23".',
+'november-date' => 'A date in the Gregorian month of November. $1 is the numerical date, for example "23".
+{{Identical|November}}',
 'december-date' => 'A date in the Gregorian month of December. $1 is the numerical date, for example "23".',
 
 # Categories related messages
@@ -2479,13 +2482,13 @@ Parameters:
 'revdelete-show-file-submit' => 'Reply to {{msg-mw|Revdelete-show-file-confirm}}.
 
 {{Identical|Yes}}',
+'revdelete-selected-text' => '{{Related|Revdelete-selected}}',
+'revdelete-selected-file' => '{{Related|Revdelete-selected}}',
 'logdelete-selected' => '{{RevisionDelete}}
 Parameters:
 * $1 - number of log events
-* $2 - localized name of Special:Log, maybe with type as subpage [unused]
-See also:
-* {{msg-mw|Revdelete-selected-text}}
-* {{msg-mw|Revdelete-selected-file}}',
+* $2 - (Unused) localized name of Special:Log, maybe with type as subpage
+{{Related|Revdelete-selected}}',
 'revdelete-text-text' => '{{RevisionDelete}}
 This is the introduction explaining the feature.
 
@@ -2536,14 +2539,20 @@ See also:
 * {{msg-mw|Revdelete-otherreason|label for input box}}
 * {{msg-mw|Revdelete-submit|submit button}}',
 'revdelete-hide-text' => 'Option for oversight. This message is a part of the [[mw:RevisionDelete|RevisionDelete]] feature.
-[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
-'revdelete-hide-image' => 'Option for <del>oversight</del> [[:mw:RevisionDelete|RevisionDelete]] feature.',
-'revdelete-hide-name' => 'Option for oversight',
+[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]
+{{Related|Revdelete-hide}}',
+'revdelete-hide-image' => 'Option for <del>oversight</del> [[:mw:RevisionDelete|RevisionDelete]] feature.
+{{Related|Revdelete-hide}}',
+'revdelete-hide-name' => 'Option for oversight.
+{{Related|Revdelete-hide}}',
 'revdelete-hide-comment' => 'Option for oversight. {{RevisionDelete}}
-[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
+[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]
+{{Related|Revdelete-hide}}',
 'revdelete-hide-user' => 'Option for oversight. {{RevisionDelete}}
-[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
-'revdelete-hide-restricted' => 'Option for oversight.',
+[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]
+{{Related|Revdelete-hide}}',
+'revdelete-hide-restricted' => 'Option for oversight.
+{{Related|Revdelete-hide}}',
 'revdelete-radio-same' => 'This message is a part of the [[mw:RevisionDelete|RevisionDelete]] feature. The message is a caption for a column of radioboxes inside a box with {{msg-mw|Revdelete-legend}} as a title.
 [[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]
 There are three radio buttons in each row, and the captions above each column read:
@@ -5229,6 +5238,7 @@ See also:
 * {{msg-mw|Booksources-text|text}}",
 'booksources-search-legend' => 'Box heading on [[Special:BookSources|book sources]] special page. The box is for searching for places where a particular book can be bought or viewed.',
 'booksources-isbn' => '{{optional}}
+This is a label that appears before a text input field on the Special:BookSources page.
 {{Identical|ISBN}}',
 'booksources-go' => 'Name of button in [[Special:BookSources]]
 
@@ -8295,7 +8305,7 @@ See example: [{{canonicalurl:Main page|action=info}} Main page?action=info]',
 * $3 - the number of subpages of the page that are not redirects',
 'pageinfo-firstuser' => 'The user who created the page.',
 'pageinfo-firsttime' => 'The date and time the page was created.',
-'pageinfo-lastuser' => 'The last user who edited the page.',
+'pageinfo-lastuser' => 'ბოლო მომხმარებელი, რომელმაც ეს გვერდი დაარედაქტირა.',
 'pageinfo-lasttime' => 'The date and time the page was last edited.',
 'pageinfo-edits' => 'Used as label in info page. See [{{canonicalurl:Support|action=info}} example].
 
@@ -10882,4 +10892,20 @@ test
 'expand_templates_generate_rawhtml' => 'Used as checkbox label.',
 'expand_templates_preview' => '{{Identical|Preview}}',
 
+# Tracking categories special page
+'trackingcategories' => 'Special:TrackingCategories page implementing list of Tracking categories [[mw:Help:Tracking categories|tracking category]]',
+'trackingcategories-summary' => 'Description for [[Special:TrackingCategories]] page [[mw:Help:Tracking categories|tracking category]]',
+'trackingcategories-msg' => 'Header for the message column of the table on [[Special:TrackingCategories]]. This column lists the mediawiki message that controls the tracking category in question.',
+'trackingcategories-name' => 'Header for the message column of the table on [[Special:TrackingCategories]]. This column lists the name of the tracking category in the content language.',
+'trackingcategories-desc' => 'Header for the message column of the table on [[Special:TrackingCategories]]. This column lists the inclusion criteria for the category.',
+'noindex-category-desc' => 'No-index category-description. Shown on [[Special:TrackingCategories]]',
+'index-category-desc' => 'Index category-description. Shown on [[Special:TrackingCategories]]',
+'post-expand-template-inclusion-category-desc' => 'Post expand template inclusion category description. Shown on [[Special:TrackingCategories]]',
+'post-expand-template-argument-category-desc' => 'Post expand template argument category description. Shown on [[Special:TrackingCategories]]',
+'expensive-parserfunction-category-desc' => 'Expensive parserfunction category description. Shown on [[Special:TrackingCategories]]',
+'broken-file-category-desc' => 'Broken file category description. Shown on [[Special:TrackingCategories]]',
+'hidden-category-category-desc' => 'Hidden-category category description. Shown on [[Special:TrackingCategories]]',
+'trackingcategories-nodesc' => 'Tracking category description not available message',
+'trackcategories-disabled' => 'Tracking category disabled message',
+
 );
index 9c97b38..b73990d 100644 (file)
@@ -1262,6 +1262,8 @@ funcție, fie versiunea specificată nu există, ori sunteți pe cale să ascund
 'revdelete-no-file' => 'Fișierul specificat nu există.',
 'revdelete-show-file-confirm' => 'Sigur doriți să vedeți versiunea ștearsă a fișierului „<nowiki>$1</nowiki>” din $2 ora $3?',
 'revdelete-show-file-submit' => 'Da',
+'revdelete-selected-text' => '{{PLURAL:$1|Versiunea aleasă|Versiunile alese}} pentru [[:$2]]:',
+'revdelete-selected-file' => '{{PLURAL:$1|Versiunea fișierului aleasă|Versiunile fișierului alese}} pentru [[:$2]]:',
 'logdelete-selected' => '{{PLURAL:$1|Revizia aleasă|Reviziile alese}}:',
 'revdelete-text-text' => 'Versiunile șterse vor continua să fie vizibile în istoricul paginii, însă anumite părți ale conținutului acestora vor fi inaccesibile publicului.',
 'revdelete-text-file' => 'Versiunile șterse ale fișierului vor continua să fie vizibile în istoricul fișierului, însă anumite părți ale conținutului acestora vor fi inaccesibile publicului.',
@@ -2129,6 +2131,11 @@ Această pagină specială permite căutarea fișierelor în funcție de tipul M
 # List redirects
 'listredirects' => 'Lista de redirecționări',
 
+# List duplicated files special page
+'listduplicatedfiles' => 'Listă de fișiere cu duplicate',
+'listduplicatedfiles-summary' => 'Aceasta este o listă cu fișierele a căror cea mai recentă versiune este un duplicat al celei mai recente versiuni a altui fișier. Sunt examinate doar fișierele locale.',
+'listduplicatedfiles-entry' => '[[:File:$1|$1]] are [[$3|{{PLURAL:$2|un duplicat|$2 duplicate|$2 de duplicate}}]].',
+
 # Unused templates
 'unusedtemplates' => 'Formate neutilizate',
 'unusedtemplatestext' => 'Lista de mai jos cuprinde toate formatele care nu sînt incluse în nici o altă pagină.
index 73e0cce..3642731 100644 (file)
@@ -889,8 +889,8 @@ $2',
 'userlogin-resetlink' => 'Забыли данные для входа?',
 'userlogin-resetpassword-link' => 'Сбросить ваш пароль?',
 'userlogin-helplink2' => 'Помощь по входу',
-'userlogin-loggedin' => 'Ð\92Ñ\8b Ñ\83же Ð²Ð¾Ñ\88ли ÐºÐ°Ðº {{GENDER:$1|$1}}.
\98Ñ\81полÑ\8cзÑ\83йÑ\82е Ñ\84оÑ\80мÑ\83 Ð½Ð¸Ð¶Ðµ, Ñ\87Ñ\82обÑ\8b Ð²Ð¾Ð¹Ñ\82и Ð¿Ð¾Ð´ Ð´Ñ\80Ñ\83гой Ñ\83Ñ\87Ñ\91Ñ\82ной Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8cÑ\8e.',
+'userlogin-loggedin' => 'Сиз {{GENDER:$1|$1}} Ð°Ñ\82 Ð±Ð»Ð° Ñ\81иÑ\81Ñ\82емагÑ\8aа ÐºÐ¸Ñ\80ибÑ\81из.
\91аÑ\88Ñ\85а Ð°ÐºÐºÐ°Ñ\83нÑ\82 Ð±Ð»Ð° ÐºÐ¸Ñ\80иÑ\80 Ñ\8eÑ\87Ñ\8eн Ñ\82Ñ\8eбÑ\8eÑ\80екдеги Ñ\84оÑ\80манÑ\8b Ñ\85айÑ\8bÑ\80ландÑ\8bÑ\80Ñ\8bгÑ\8aÑ\8bз.',
 'userlogin-createanother' => 'Создать другую учётную запись',
 'createacct-join' => 'Введите свои данные ниже.',
 'createacct-another-join' => 'Введите данные новой учётной записи ниже.',
@@ -1367,7 +1367,7 @@ $3 {{GENDER:$3|указал|указала}} следующую причину:
 'histfirst' => 'старейшие',
 'histlast' => 'новейшие',
 'historysize' => '($1 {{PLURAL:$1|байт|байт|байта}})',
-'historyempty' => '(пÑ\83Ñ\81Ñ\82о)',
+'historyempty' => '(боÑ\88дÑ\83)',
 
 # Revision feed
 'history-feed-title' => 'История изменений',
index 9d86cda..f279461 100644 (file)
@@ -673,7 +673,7 @@ $messages = array(
 
 # Login and logout pages
 'logouttext' => "'''भवान्/भवती अधुना बहिः अस्ति ।'''
-भवान्/भवती {{SITENAME}} इत्येतत् अनामतया प्रयोक्तुं शक्नोति, अथवा भवान्/भवती तेनैव प्रयोक्तृनाम्ना, भिन्नप्रयोक्तृनाम्ना वा पुनः प्रवेष्टुं शक्नोति ।
+भवान्/भवती {{SITENAME}} इत्येतत् अनामतया प्रयोक्तुं शक्नोति । अथवा तेनैव प्रयोक्तृनाम्ना, भिन्नप्रयोक्तृनाम्ना वा पुनः प्रवेष्टुं शक्नोति ।
 इदानीमपि कानिचन पृष्ठानि पूर्ववदेव दृश्येरन् । तत् वारयितुं गवाक्षस्य (browser) इतिहासः रिक्तीक्रियताम् ।",
 'welcomeuser' => 'स्वागतम्, $1!',
 'welcomecreation-msg' => 'भवता/भवत्या सदस्यता प्राप्ता ।
@@ -693,8 +693,8 @@ $messages = array(
 'userlogin-remembermypassword' => 'अहं प्रविष्टमेव तिष्ठेयम्',
 'userlogin-signwithsecure' => 'संरक्षितः सम्पर्कः (https) उपयुज्यताम्',
 'yourdomainname' => 'भवतः प्रदेशः (domain) :',
-'password-change-forbidden' => 'à¤\85सà¥\8dयाà¤\82 à¤µà¤¿à¤\95à¥\8dयाà¤\82 à¤¨à¤¿à¤\95à¥\81à¤\9eà¥\8dà¤\9aà¤\82 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतयितुं न शक्नोति ।',
-'externaldberror' => 'ततà¥\8dर à¤ªà¥\8dरमाणà¥\80à¤\95रण à¤¸à¤®à¤\82à¤\95ाधारà¥\87 à¤¤à¥\8dरà¥\81à¤\9fिरà¥\8dà¤\9cाता, à¤\85थवा à¤­à¤µà¤¾à¤¨à¥\8d à¤¸à¥\8dवà¤\95à¥\80याà¤\82 à¤¬à¤¾à¤¹à¥\8dय-लà¥\87à¤\96ाà¤\82 à¤\85दà¥\8dयतनà¥\80à¤\95रà¥\8dतà¥\81à¤\82 à¤\85नà¥\81मतिà¤\82 à¤¨ à¤§à¤¾à¤°à¤¯à¤¤à¤¿।',
+'password-change-forbidden' => 'à¤\85सà¥\8dमिनà¥\8d à¤µà¤¿à¤\95ि-à¤\9cालसà¥\8dथानà¥\87 à¤­à¤µà¤¾à¤¨à¥\8d/भवतà¥\80 à¤\95à¥\82à¤\9fशबà¥\8dदानà¥\8d à¤ªà¤°à¤¿à¤°à¥\8dवतयितुं न शक्नोति ।',
+'externaldberror' => 'दतà¥\8dताà¤\82शà¥\87 à¤ªà¥\8dरामाणिà¤\95ताविषयà¤\95à¤\83 (authentication database) à¤¦à¥\8bषà¤\83  à¤¸à¥\8dयातà¥\8d à¥¤ à¤\85थवा à¤¸à¥\8dवसà¥\8dय à¤¬à¤¾à¤¹à¥\8dयसदसà¥\8dयतायाà¤\82  (external account) à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनà¤\82 à¤\95रà¥\8dतà¥\81मà¥\8d à¤\85नà¥\81मतिà¤\83 à¤¨ à¤­à¤µà¥\87तà¥\8d ।',
 'login' => 'प्रविश्यताम्',
 'nav-login-createaccount' => 'प्रविश्यताम् / सदस्यता प्राप्यताम्',
 'loginprompt' => '{{SITENAME}} इत्यत्र प्रवेष्टुं ज्ञापकानि (cookies)  समर्थीकरणीयानि ।',
@@ -703,59 +703,84 @@ $messages = array(
 'logout' => 'निर्गमनम्',
 'userlogout' => 'निर्गमनम्',
 'notloggedin' => 'नैव प्रविष्टः',
-'userlogin-noaccount' => 'सदस्यता नास्ति किम्?',
+'userlogin-noaccount' => 'सदस्यता नास्ति किम् ?',
 'userlogin-joinproject' => '{{SITENAME}} सह योजनम्',
 'nologin' => 'सदस्यता नास्ति किम् ? $1',
 'nologinlink' => 'सदस्यता प्राप्यताम्',
 'createaccount' => 'सदस्यता प्राप्यताम्',
 'gotaccount' => 'पूर्वमेव योजकः अस्ति किम् ? $1',
 'gotaccountlink' => 'प्रविश्यताम्',
-'userlogin-resetlink' => 'प्रवेशविवरणानि विस्मृतानि किम् ?',
-'createacct-join' => 'स्वकीया सूचना अधस्तात् प्रवेश्यताम्।',
-'createaccountmail' => 'ईपत्रद्वारा',
-'createaccountreason' => 'कारणम्',
+'userlogin-resetlink' => 'स्वस्य प्रवेशविवरणानि विस्मृतानि किम् ?',
+'userlogin-resetpassword-link' => 'स्वस्य कूटशब्दः विस्मृतः किम् ?',
+'userlogin-helplink2' => 'प्रवेशविषयकं साहाय्यम्',
+'userlogin-loggedin' => 'भवाता/भवत्या पूर्वस्मादेव {{GENDER:$1|$1}} योजकत्वेन प्रवेशः प्राप्तः अस्ति । भिन्नयोजकत्वेन प्रवेष्टुं निम्नप्रपत्रं पूरयतु ।',
+'userlogin-createanother' => 'अन्यसदस्यता प्राप्यताम्',
+'createacct-join' => 'स्वविषये अधः लिख्यताम् ।',
+'createacct-another-join' => 'नवीनसदस्यतायाः विषये अधः लिख्यताम् ।',
+'createacct-emailrequired' => 'ई-पत्रसङ्केतः',
+'createacct-emailoptional' => 'ई-पत्रसङ्केतः (ऐच्छिकः)',
+'createacct-email-ph' => 'स्वस्य ई-पत्रसङ्केतं लिखतु',
+'createacct-another-email-ph' => 'ई-पत्रसङ्केतः लिख्यताम्',
+'createaccountmail' => 'अस्थायिनम् अशृङ्खलितं कूटशब्दम् उपयुज्य योग्याय ई-पत्रसङ्केताय प्रेश्यताम् ।',
+'createacct-realname' => 'वास्तविकं नाम (ऐच्छिकम्)',
+'createaccountreason' => 'कारणम् :',
 'createacct-reason' => 'कारणम्',
-'createacct-reason-ph' => 'भवान् अन्यां लेखां किमर्थं रचितुमिच्छसि?',
-'badretype' => 'भवता प्रदत्ते कूटशब्दे न खलु समाने स्तः। कृपया पुनः लिखतु।',
-'userexists' => 'भवतः प्रदत्तः प्रयोक्तृनाम अन्येन प्रयुज्यमानम् अस्ति। कृपया अन्यदेकं प्रयोक्तृनाम चिनोतु।',
-'loginerror' => 'प्रवेशने प्रमादः',
-'createaccounterror' => '$1 इति लेखां स्रष्टुं न अपारयत्',
-'nocookiesnew' => 'भवतः लेखा सृष्टाऽस्ति, परन्तु भवान् प्रविष्टो नासि।
-{{SITENAME}} इत्यनेन प्रवेशं कर्तुं कुकि इत्येते प्रयुज्यन्ते।
-भवतः पक्षे कुकि इत्येते असमर्थीकृतानि सन्ति।
-कृपया तानि समर्थानि करोतु, तथा स्वकीयेन सदस्यनाम्ना कूटशब्देन च प्रविशतु।',
-'nocookieslogin' => '{{SITENAME}} इत्यत्र प्रयोक्तृणां प्रवेशार्थं कुकि इत्येतेषां प्रयोगः क्रियते।
-भवता कुकि इत्येते असमर्थीकृतानि सन्ति।
-कृपया तानि समर्थीकरोतु पुनश्च प्रयततु।',
+'createacct-reason-ph' => 'भवतः/भवत्याः अन्यसदस्यतां प्राप्तुं किं प्रयोजनमस्ति ?',
+'createacct-captcha' => 'सुरक्षानिरीक्षणम्',
+'createacct-imgcaptcha-ph' => 'उपरि लिखिताः वर्णाः लिख्यताम्',
+'createacct-submit' => 'स्वसदस्यता प्राप्यताम्',
+'createacct-another-submit' => 'अन्यसदस्यता प्राप्यताम्',
+'createacct-benefit-heading' => '{{SITENAME}} इति भवत्सदृशैः जनैः रचितमस्ति ।',
+'createacct-benefit-body1' => '{{PLURAL:$1|सम्पादनम्|सम्पादनानि}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|पृष्ठम्|पृष्ठानि}}',
+'createacct-benefit-body3' => 'नवीन{{PLURAL:$1|योजकः|योजकाः}}',
+'badretype' => 'भवता/भवत्या लिखितौ कूटशब्दौ समानौ न स्तः ।',
+'userexists' => 'भवता/भवत्या ईप्सितं प्रयोक्तृनाम पूर्वस्मादेव विद्यते । 
+कृपया अपरं प्रयोक्तृनाम चिनोतु ।',
+'loginerror' => 'प्रवेशे दोषः',
+'createacct-error' => 'सदस्यताप्राप्तिकाले दोषः',
+'createaccounterror' => '$1 सदस्यता न प्राप्ता :',
+'nocookiesnew' => 'भवता/भवत्या सदस्यता प्राप्ता, परन्तु प्रवेशः न कृतः । {{SITENAME}} इत्यस्य कृते योजकज्ञापकम् (uses cookies) अनिवार्यम् अस्ति । 
+भवता/भवत्या ज्ञापकव्यवस्था असमर्थिता अस्ति ।
+कृपया सा समर्थ्यताम्, ततश्च नवीनसदस्यतायाः प्रयोक्तृनाम्ना प्रविश्यताम् ।',
+'nocookieslogin' => '{{SITENAME}} इत्यत्र ज्ञापकेन (cookies) विना प्रवेशः न शक्यः । 
+भवता/भवत्या ज्ञापकव्यवस्था असमर्थिता अस्ति ।
+कृपया सा समर्थ्यताम्, ततश्च पुनः प्रयासः क्रियताम् ।',
 'nocookiesfornew' => 'योजकसदस्यता न सिद्धा यतः स्रोतः प्रमाणीकृतं न जातम् । 
 भवता कुक्कीस् इत्येतत् समर्थीकृतानि किम् इति परिशील्य इदं पृष्ठं पुनरारोप्य प्रयतताम् ।',
-'noname' => 'भवता एकं मान्यं प्रयोक्तृ-नाम न प्रदत्तम्।',
-'loginsuccesstitle' => 'स्वागतम्‌। प्रवेशः सिद्धः।',
-'loginsuccess' => 'भवान् अधुना {{SITENAME}} इत्यत्र "$1" रूपेण प्रविष्टोऽस्ति।',
-'nosuchuser' => 'तत्र $1 इति नाम्ना न कोऽपि प्रयोक्ता विद्यते।
-प्रयोक्तृनाम्नि आंग्ललिपेः लघुभिः दीर्घैश्च अक्षरैः भिन्नता गण्यते।
-स्वकीयां वर्तनीं पुनरीक्षतां, अथवा [[Special:UserLogin/signup|नूतनसदस्यता प्राप्यताम्]]।',
-'nosuchusershort' => '"$1" इति नाम्ना न कोऽपि प्रयोक्ता विद्यते।
-स्वकीयां वर्तनीं पुनरीक्षताम्।',
-'nouserspecified' => 'भवता एकं प्रयोक्तृनाम अवश्यमेव दातव्यम्।',
-'login-userblocked' => 'एषः प्रयोक्ता प्रतिबन्धितः अस्ति। सत्रारम्भाय अनुमतिः नास्ति।',
-'wrongpassword' => 'भवता प्रदत्तः कूटशब्दः त्रुटिपूर्णः अस्ति। 
-कृपया पुनः लिख्यताम्।',
-'wrongpasswordempty' => 'लिखितः कूटशब्दः रिक्तः विद्यते।
-कृपया पुनः लिख्यताम्।',
-'passwordtooshort' => 'कूटशब्दः न्यूनातिन्यूनं {{PLURAL:$1| 1 अक्षरात्मकः|$1 अक्षरात्मकमः}} अवश्यमेव भवेत्।',
-'password-name-match' => 'भवतः कूटशब्दः भवतः प्रयोक्तृनामतः अवश्यम् भिन्नं  भवेत् ।',
-'password-login-forbidden' => 'अस्य प्रयोक्तृनाम्नः कूटशब्दस्य च प्रयोगः वर्जितोऽस्ति।',
+'noname' => 'भवता/भवत्या योग्यं प्रयोक्तृनाम न प्रदत्तम् ।',
+'loginsuccesstitle' => 'स्वागतं ! प्रवेशः सिद्धः ।',
+'loginsuccess' => 'भवता/भवत्या {{SITENAME}} इत्यत्र "$1"-योजकत्वेन प्रवेशः प्राप्तः ।',
+'nosuchuser' => "'''$1''' नाम्नः न कोऽपि योजकः विद्यते ।
+
+प्रयोक्तृनामानि पक्षानुगुणं (case sensitive) भवन्ति ।
+
+यत् टङ्कितं, तत् पश्यतु अथवा [[Special:UserLogin/signup|नूतनसदस्यता प्राप्यताम्]] ।",
+'nosuchusershort' => "'''$1''' नाम्नः न कोऽपि योजकः विद्यते ।
+
+यत् टङ्कितं, तत् पश्यतु ।",
+'nouserspecified' => 'भवता/भवत्या एकं योग्यं प्रयोक्तृनाम अवश्यमेव दातव्यम् ।',
+'login-userblocked' => 'एषः योजकः प्रतिबन्धितः । प्रविष्टुम् अनुमतिः नास्ति ।',
+'wrongpassword' => 'भवता/भवत्या लिखितः कूटशब्दः त्रुटियुक्तः । 
+कृपया पुनः लिख्यताम् ।',
+'wrongpasswordempty' => 'कूटशब्दपेटिकायां कूटशब्दः न लिखितः ।
+
+कृपया पुनः प्रयासः क्रियताम् ।',
+'passwordtooshort' => 'न्यूनातिन्यूनं {{PLURAL:$1| 1 अक्षरात्मकः|$1 अक्षरात्मकः}} कूटशब्दः भवेदेव ।',
+'password-name-match' => 'भवतः/भवत्याः प्रयोक्तृनाम, कूटशब्दः च समानः न भवेत् ।',
+'password-login-forbidden' => 'अस्य प्रयोक्तृनाम्नः कूटशब्दस्य च प्रयोगः वर्जितोऽस्ति ।',
 'mailmypassword' => 'कूटशब्दः परिवर्त्यताम्',
-'passwordremindertitle' => '{{SITENAME}} à¤\87तà¥\8dयà¥\87तदरà¥\8dथà¥\87 à¤¨à¥\82तनà¥\8d à¤\85सà¥\8dथायि à¤\95à¥\82à¤\9fशबà¥\8dदमà¥\8d।',
+'passwordremindertitle' => '{{SITENAME}} à¤\87तà¥\8dयसà¥\8dमà¥\88 à¤¨à¥\82तनà¤\83 à¤\85सà¥\8dथायà¥\80 à¤\95à¥\82à¤\9fशबà¥\8dदà¤\83 ।',
 'passwordremindertext' => 'कश्चित्  (भवान् अपि स्यात्,  $1 ऐ. पि. सङ्केतात् ) {{SITENAME}} ($4) इत्यस्य कृते नूतनं कूटशब्दं प्रार्थितवान् । तात्कालिकः कूटशब्दः "$2" इति उपयोक्तुः कृते निर्मितः "$3" कृते प्रेषितश्च । यदि अयं भवतः  आशयः, भवान् प्रविश्य नूतनं कूटशब्दम् इदानीं चिनोतु । भवतः तात्कालिकः कूटशब्दः  {{PLURAL:$5|दिनम्|$5 दिनानि}} यावत् सक्रियः भवति । 
 
 अन्यः कश्चित् एतां प्रार्थनां कृतवान्, अथवा भवानेव पूर्वतनं कृटशब्दं स्मृतवान्, इदानीं तस्य परिवर्तनं न् इच्छति चेत् एतां सूचनाम् अनङ्गीकृत्य पूर्वतनस्य कूटशब्दस्य एव उपयोगं करोतु ।',
-'noemail' => '"$1" इति प्रयोक्तुः कृते न कोऽपि विद्युत्सन्देशसंकेतः पञ्जीकृतोऽस्ति।',
-'noemailcreate' => 'भवता एकः मान्यः विद्युत्सन्देशसंकेतः दातव्यः।',
-'passwordsent' => '"$1" इत्येतस्य कृते पञ्जीकृते विद्युत्सन्देशसंकेते एकः नूतनः कूटशब्दः प्रेषितोऽस्ति।
-कृपया तस्य सम्प्राप्तिपश्चात् पुनः प्रविशतु।',
-'blocked-mailpassword' => 'भवतः आइपी-संकेतः सम्पादनात् प्रतिबन्धितः अस्ति, अतश्च कूटशब्द-पुनरवाप्ति-सुविधायाः प्रयोगादपि वर्जितः, येन हि दुष्प्रयोगः न स्यात्।',
+'noemail' => '"$1" प्रयोक्तुः न कोऽपि ई-पत्रसङ्केतः पञ्जीकृतः अभवत् ।',
+'noemailcreate' => 'भवता/भवत्या मान्यः ई-पत्रसङ्केतः दातव्यः ।',
+'passwordsent' => '"$1" इत्यस्य पञ्जीकृताय ई-पत्रसङ्केताय नवीनः कूटशब्दः प्रेषितः अस्ति । 
+
+कृपया तस्य कूटशब्दस्य उपयोगेन पुनः प्रविश्यताम् ।',
+'blocked-mailpassword' => 'भवतः/भवत्याः अन्तर्जालसंविद् (IP) प्रतिबन्धितः अस्ति । 
+सम्पादनाय अनुमतिः नास्ति, अतः कूटशब्दस्य पुनःप्राप्तिः भवितुं नार्हति ।',
 'eauthentsent' => 'भवता प्रदत्ते विद्युत्पत्र-संकेते एकः परिपुष्टिरूपः विद्युत्सन्देशः प्रेषितोऽस्ति।
 अन्यः कश्चिद् विद्युत्सन्देशः प्रेषितो भवेत् इत्येतदर्थं भवता तत्सन्देशे प्रदत्ताः निर्देशाः पालितव्याः, येन हि सा विद्युत्सन्देशलेखा भवदीया एव इति सत्यापितो भवेत्।',
 'throttled-mailpassword' => 'पूर्वतनायां {{PLURAL:$1|होरस्य|$1 होराणां}} अवधौ भवदर्थं एकः कूटशब्द-पुनःस्मारकम् प्रेषितोऽस्ति।
@@ -1564,7 +1589,7 @@ You can still [$1 view this revision]",
 'nchanges' => '$1 {{PLURAL:$1|परिवर्तनम्|परिवर्तनानि}}',
 'recentchanges' => 'नूतनपरिवर्तनानि',
 'recentchanges-legend' => 'सद्यो जातानां परिवर्तनानां विकल्पाः',
-'recentchanges-summary' => 'अस्मिन् विकि-प्रकल्पे सद्योजातानि परिवर्तनानि दृश्यन्ताम्',
+'recentchanges-summary' => 'अस्मिन् विकि-प्रकल्पे सद्यो जातानि परिवर्तनानि दृश्यन्ताम् ।',
 'recentchanges-feed-description' => 'अस्मिन् विकि-प्रकल्पे सद्यो जातानि परिवर्तनानि दर्श्यन्ताम्',
 'recentchanges-label-newpage' => 'अनेन सम्पादनेन नूतनपृष्ठस्य रचना अभूत् ।',
 'recentchanges-label-minor' => 'इदं लघु सम्पादनम्',
index a1d6bc0..383ac11 100644 (file)
@@ -975,6 +975,8 @@ Ye can view this diff; details can be foond in the [{{fullurl:{{#Special:Log}}/s
 'revdelete-no-file' => 'The file speceefied disna exeest.',
 'revdelete-show-file-confirm' => 'Ar ye sair ye wish tae see ae delytit reveesion o the file "<nowiki>$1</nowiki>" fae $2 at $3?',
 'revdelete-show-file-submit' => 'Ai',
+'revdelete-selected-text' => '{{PLURAL:$1|Selectit luikower|Selectit luikowers}} o [[:$2]]:',
+'revdelete-selected-file' => '{{PLURAL:$1|Selectit file version|Selectit file versions}} o [[:$2]]:',
 'logdelete-selected' => '{{PLURAL:$1|Selectit log event|Selectit log events}}:',
 'revdelete-text-text' => 'Delytit reveesions will still kith in the page histerie, bit pairts o thair content will be onaccessible til the publeec.',
 'revdelete-text-file' => 'Delytit file versions will still kith in the file histerie, bit pairts o thair content will be onaccessible til the publeec.',
index bb4c063..a569480 100644 (file)
@@ -2374,7 +2374,7 @@ Posljednja izmjena je bila od korisnika [[User:$3|$3]] ([[User talk:$3|razgovor]
 'editcomment' => "Sažetak izmjene je bio: \"''\$1''\".",
 'revertpage' => 'Vraćene izmjene [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na posljednju izmjenu korisnika [[User:$1|$1]]',
 'revertpage-nouser' => 'Vraćene izmjene skrivenog korisnika na posljednju reviziju koju je načinio [[User:$1|$1]]',
-'rollback-success' => 'Poništene izmjene korisnika $1;
+'rollback-success' => 'Vraćene su izmjene korisnika $1;
 vraćeno na posljednju verziju koju je snimio $2.',
 
 # Edit tokens
index d221d7b..b52fa8a 100644 (file)
@@ -1348,6 +1348,8 @@ $2
 'revdelete-no-file' => 'Тражена датотека не постоји.',
 'revdelete-show-file-confirm' => 'Желите ли да видите обрисану измену датотеке „<nowiki>$1</nowiki>“ од $2; $3?',
 'revdelete-show-file-submit' => 'Да',
+'revdelete-selected-text' => '{{PLURAL:$1|Изабрана измена|Изабране измене}} [[:$2]]:',
+'revdelete-selected-file' => '{{PLURAL:$1|Изабрана верзија датотеке|Изабране верзије датотеке}} [[:$2]]:',
 'logdelete-selected' => '{{PLURAL:$1|Изабрана ставка у историји|Изабране ставке у историји}}:',
 'revdelete-confirm' => 'Потврдите да намеравате ово урадити, да разумете последице и да то чините у складу с [[{{MediaWiki:Policy-url}}|правилима]].',
 'revdelete-suppress-text' => "Сакривање измена би требало користити '''само''' у следећим случајевима:
@@ -1804,7 +1806,7 @@ $1",
 'rcshowhidebots' => '$1 ботове',
 'rcshowhidebots-show' => 'Прикажи',
 'rcshowhidebots-hide' => 'Сакриј',
-'rcshowhideliu' => '$1 регисторваних корисника',
+'rcshowhideliu' => '$1 регистроване кориснике',
 'rcshowhideliu-show' => 'Прикажи',
 'rcshowhideliu-hide' => 'Сакриј',
 'rcshowhideanons' => '$1 анонимне кориснике',
index 02676d0..ee8bc83 100644 (file)
@@ -1669,7 +1669,7 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'rcshowhidebots' => '$1 botove',
 'rcshowhidebots-show' => 'Prikaži',
 'rcshowhidebots-hide' => 'Sakrij',
-'rcshowhideliu' => '$1 prijavljene korisnike',
+'rcshowhideliu' => '$1 registrovane korisnike',
 'rcshowhideliu-show' => 'Prikaži',
 'rcshowhideliu-hide' => 'Sakrij',
 'rcshowhideanons' => '$1 anonimne korisnike',
index 5c4305b..cff81d5 100644 (file)
@@ -689,7 +689,7 @@ $2',
 మీరు దాన్ని ఇస్తే, వాడుకరి పనుల శ్రేయస్సు ఆ పేరుకు ఆపాదించబడుతుంది.',
 'pt-login' => 'లాగినవండి',
 'pt-login-button' => 'లాగినవండి',
-'pt-createaccount' => 'ఖాతా సృష్టించు',
+'pt-createaccount' => 'ఖాతా సృష్టించుకోండి',
 'pt-userlogout' => 'లాగౌటవండి',
 
 # Email sending
@@ -1098,6 +1098,8 @@ $3 ఇచ్చిన కారణం: ''$2''",
 'revdelete-no-file' => 'పేర్కొన్న ఫైలు ఉనికిలో లేదు.',
 'revdelete-show-file-confirm' => 'మీరు నిజంగానే "<nowiki>$1</nowiki>"  ఫైలు యొక్క $2 $3 నాటి తొలగించిన కూర్పుని చూడాలనుకుంటున్నారా?',
 'revdelete-show-file-submit' => 'అవును',
+'revdelete-selected-text' => '[[:$2]] లో {{PLURAL:$1|ఎంచుకున్న కూర్పు|ఎంచుకున్న కూర్పులు}}:',
+'revdelete-selected-file' => '[[:$2]] లో {{PLURAL:$1|ఎంచుకున్న ఫైలు కూర్పు|ఎంచుకున్న ఫైలు కూర్పులు}}:',
 'logdelete-selected' => '{{PLURAL:$1|ఎంచుకున్న చిట్టా ఘటన|ఎంచుకున్న చిట్టా ఘటనలు}}:',
 'revdelete-text-text' => 'తొలగించిన కూర్పులు పేజీ చరిత్రలో కనిపిస్తూనే ఉంటాయి. కానీ వాటి విషయసంగ్రహంలోని భాగాలు అందరికీ కనిపించవు.',
 'revdelete-text-file' => 'తొలగించిన ఫైలు కూర్పులు పేజీ చరిత్రలో కనిపిస్తూనే ఉంటాయి. కానీ వాటి విషయసంగ్రహంలోని భాగాలు అందరికీ కనిపించవు.',
@@ -1948,6 +1950,10 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 # List redirects
 'listredirects' => 'దారిమార్పుల జాబితా',
 
+# List duplicated files special page
+'listduplicatedfiles' => 'నకళ్ళు కలిగిన ఫైళ్ళ జాబితా',
+'listduplicatedfiles-entry' => '[[:File:$1|$1]] కు [[$3|{{PLURAL:$2|ఓ నకలు ఉంది|$2 నకళ్ళున్నాయి}}]].',
+
 # Unused templates
 'unusedtemplates' => 'వాడని మూసలు',
 'unusedtemplatestext' => 'వేరే ఇతర పేజీలలో చేర్చని {{ns:template}} పేరుబరిలోని పేజీలన్నింటినీ ఈ పేజీ చూపిస్తుంది.
index 4ad46ab..2999a74 100644 (file)
@@ -236,7 +236,6 @@ $messages = array(
 'disclaimers' => 'Avisu legál',
 'disclaimerpage' => 'Project:Avisu legál',
 'edithelp' => 'Ajuda kona-ba edita',
-'helppage' => 'Help:Konteúdu',
 'mainpage' => 'Pájina Mahuluk',
 'mainpage-description' => 'Pájina Mahuluk',
 'portal' => 'Portál komunidade nian',
index ae5aea9..6644f51 100644 (file)
@@ -3426,8 +3426,8 @@ $1',
 'exif-gpsmeasuremode-3' => 'การวัดสามมิติ',
 
 # Pseudotags used for GPSSpeedRef
-'exif-gpsspeed-k' => 'กิโลเมตรต่อชั่วโมง',
-'exif-gpsspeed-m' => 'ไมล์ต่อชั่วโมง',
+'exif-gpsspeed-k' => 'กิโลเมตร/ชั่วโมง',
+'exif-gpsspeed-m' => 'ไมล์/ชั่วโมง',
 'exif-gpsspeed-n' => 'นอตส์',
 
 # Pseudotags used for GPSDestDistanceRef
index 4b09dfc..6844f06 100644 (file)
@@ -1439,7 +1439,7 @@ $1",
 # Undelete
 'undeletepage' => '查看搭仔恢复删脱个页面',
 'viewdeletedpage' => '望望相删脱个页面',
-'undeletelink' => '查看/恢复',
+'undeletelink' => '查看/还原',
 'undeleteviewlink' => '望',
 'undeletecomment' => '理由:',
 'undelete-search-submit' => '搜尋',
@@ -1751,7 +1751,7 @@ $5
 'table_pager_limit' => '显示 $1 条每页',
 
 # Auto-summaries
-'autoredircomment' => '重定向到 [[$1]]',
+'autoredircomment' => '重定向页面至[[$1]]',
 'autosumm-new' => '新页面:$1',
 
 # Watchlist editor
index a34af04..403b1c6 100644 (file)
@@ -1143,7 +1143,7 @@ $1",
 'powersearch-legend' => '進階搵嘢',
 'powersearch-ns' => '喺以下嘅空間名度搵:',
 'powersearch-redir' => '彈去清單',
-'powersearch-togglelabel' => '查:',
+'powersearch-togglelabel' => 'æ£\80æ\9f¥ï¼\9a',
 'powersearch-toggleall' => '全部',
 'powersearch-togglenone' => '無',
 'search-external' => '出面搵嘢',
index dd46c67..c3b06d5 100644 (file)
@@ -667,7 +667,7 @@ $1',
 'hidetoc' => '隐藏',
 'collapsible-collapse' => '折叠',
 'collapsible-expand' => '展开',
-'thisisdeleted' => '查看或恢复$1?',
+'thisisdeleted' => '查看或还原$1?',
 'viewdeleted' => '查看$1?',
 'restorelink' => '$1个已被删除的编辑',
 'feedlinks' => 'Feed:',
@@ -796,7 +796,7 @@ $2',
 'yourpassword' => '密码:',
 'userlogin-yourpassword' => '密码',
 'userlogin-yourpassword-ph' => '请输入你的密码',
-'createacct-yourpassword-ph' => '请输入一个密码',
+'createacct-yourpassword-ph' => '请输入密码',
 'yourpasswordagain' => '请再次输入密码:',
 'createacct-yourpasswordagain' => '确认密码',
 'createacct-yourpasswordagain-ph' => '请再次输入密码',
@@ -830,7 +830,7 @@ $2',
 'createacct-another-join' => '在下方输入新帐户信息。',
 'createacct-emailrequired' => '电子邮件地址',
 'createacct-emailoptional' => '电子邮件地址(可选)',
-'createacct-email-ph' => '请输入的电子邮件地址',
+'createacct-email-ph' => '请输入的电子邮件地址',
 'createacct-another-email-ph' => '输入电子邮件地址',
 'createaccountmail' => '使用一个临时的随机密码并将其发送到指定的电子邮件地址中',
 'createacct-realname' => '真实姓名 (可选)',
@@ -839,11 +839,11 @@ $2',
 'createacct-reason-ph' => '你为什么要创建另一个账户',
 'createacct-captcha' => '安全检查',
 'createacct-imgcaptcha-ph' => '请输入上图中的文字',
-'createacct-submit' => '创建的账户',
+'createacct-submit' => '创建的账户',
 'createacct-another-submit' => '创建另一个账户',
-'createacct-benefit-heading' => '{{SITENAME}}æ\98¯ç\94±å\83\8fæ\82¨è¿\99æ ·ç\9a\84人建ç«\8b的。',
+'createacct-benefit-heading' => '{{SITENAME}}æ\98¯ç\94±å\90\8cä½ ä¸\80æ ·ç\9a\84人们æ\9e\84ç­\91的。',
 'createacct-benefit-body1' => '{{PLURAL:$1|次编辑}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|个页面}}',
+'createacct-benefit-body2' => '$1个页面',
 'createacct-benefit-body3' => '位最近{{PLURAL:$1|贡献者}}',
 'badretype' => '您所输入的密码并不相同。',
 'userexists' => '用户名已存在。请使用其他名称。',
@@ -1413,12 +1413,12 @@ $1",
 'searchrelated' => '相关',
 'searchall' => '所有',
 'showingresults' => "下面显示从第'''$2'''条结果开始的'''$1'''条结果。",
-'showingresultsinrange' => '以ä¸\8bæ\98¾ç¤ºä»\8e#<strong>$2</strong>è\87³#<strong>$3</strong>è\8c\83å\9b´ç\9a\84<strong>$1</strong>个结果。',
+'showingresultsinrange' => 'ä¸\8bé\9d¢æ\98¾ç¤ºå\8cºé\97´#<strong>$2</strong>è\87³#<strong>$3</strong>ç\9a\84<strong>$1</strong>æ\9d¡结果。',
 'showingresultsnum' => "下面显示从第'''$2'''条结果开始的'''$3'''条结果。",
 'showingresultsheader' => "关于'''$4'''的{{PLURAL:$5|第'''$1'''条结果,共'''$3'''条结果|第'''$1~$2'''条结果,共'''$3'''条结果}}",
 'search-nonefound' => '找不到和查询相匹配的结果。',
 'powersearch-legend' => '高级搜索',
-'powersearch-ns' => '在以下的名字空间中搜索:',
+'powersearch-ns' => '搜索名字空间:',
 'powersearch-redir' => '列出重定向',
 'powersearch-togglelabel' => '选择:',
 'powersearch-toggleall' => '全选',
@@ -1573,7 +1573,7 @@ $1",
 'group-sysop' => '管理员',
 'group-bureaucrat' => '行政员',
 'group-suppress' => '监督',
-'group-all' => '(全部)',
+'group-all' => '(所有)',
 
 'group-user-member' => '{{GENDER:$1|用户}}',
 'group-autoconfirmed-member' => '自动确认用户',
@@ -1620,7 +1620,7 @@ $1",
 'right-deletedtext' => '查看已被删除的文本及已删除版本间的差异',
 'right-browsearchive' => '搜索已被删除的页面',
 'right-undelete' => '还原页面',
-'right-suppressrevision' => '审æ\9f¥å\92\8cæ\81¢å¤\8då\90\91管理员隐藏的版本',
+'right-suppressrevision' => 'å¤\8d核并è¿\98å\8e\9f对管理员隐藏的版本',
 'right-suppressionlog' => '查看非公开日志',
 'right-block' => '阻止其他用户编辑',
 'right-blockemail' => '阻止用户发送电子邮件',
@@ -1688,7 +1688,7 @@ $1",
 'action-deletedhistory' => '查看本页面被删除的历史',
 'action-browsearchive' => '搜索已被删除的页面',
 'action-undelete' => '还原本页',
-'action-suppressrevision' => '审æ\9f¥å\92\8cæ\81¢å¤\8dæ\9c¬隐藏版本',
+'action-suppressrevision' => 'å¤\8d核并è¿\98å\8e\9f该隐藏版本',
 'action-suppressionlog' => '查看本非公开日志',
 'action-block' => '阻止该用户编辑',
 'action-protect' => '更改本页面的保护级别',
@@ -1745,7 +1745,7 @@ $1",
 'rcshowhidemine' => '$1我的编辑',
 'rcshowhidemine-show' => '显示',
 'rcshowhidemine-hide' => '隐藏',
-'rclinks' => '显示最后$2天的最后$1个更改<br />$3',
+'rclinks' => '显示过去$2天的最后$1个更改<br />$3',
 'diff' => '差异',
 'hist' => '历史',
 'hide' => '隐藏',
@@ -1981,7 +1981,7 @@ $1',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
 'upload-curl-error6' => '无法访问URL',
-'upload-curl-error6-text' => 'æ\97 æ³\95访é\97®æ\89\80æ\8f\90ä¾\9bç\9a\84URLã\80\82请å¤\8d查该URL是否正确,及其网站是否在线。',
+'upload-curl-error6-text' => 'æ\97 æ³\95访é\97®æ\8f\90ä¾\9bç\9a\84URLã\80\82请æ£\80查该URL是否正确,及其网站是否在线。',
 'upload-curl-error28' => '上传超时',
 'upload-curl-error28-text' => '站点响应时间过长。请检查此网站的访问是否正常,过一会再进行尝试。您可能需要在网络访问空闲时间再次进行尝试。',
 
@@ -2013,7 +2013,7 @@ $1',
 'file-anchor-link' => '文件',
 'filehist' => '文件历史',
 'filehist-help' => '单击某个日期/时间查看对应时刻的文件。',
-'filehist-deleteall' => '删除全部',
+'filehist-deleteall' => '删除所有',
 'filehist-deleteone' => '删除',
 'filehist-revert' => '恢复',
 'filehist-current' => '当前',
@@ -2399,7 +2399,7 @@ $1',
 'watchmethod-list' => '查看监视页中的最新修改',
 'watchlistcontains' => '您的监视列表包含$1个页面。',
 'iteminvalidname' => "页面'$1'错误,无效命名...",
-'wlnote2' => '以ä¸\8bæ\98¯æ\9c\80è¿\91<strong>$1</strong>å°\8fæ\97¶ç\9a\84å\8f\98å\8c\96,截至$2 $3。',
+'wlnote2' => 'ä¸\8bé\9d¢æ\98¯è¿\87å\8e»{{PLURAL:$1|<strong>$1</strong>å°\8fæ\97¶}}ç\9a\84æ\9b´æ\94¹,截至$2 $3。',
 'wlshowlast' => '显示过去$1小时$2天$3',
 'watchlist-options' => '监视列表选项',
 
@@ -2419,7 +2419,7 @@ $1',
 'enotif_body_intro_deleted' => '{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|删除}},请见$3。',
 'enotif_body_intro_created' => '{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|创建}},请浏览<$3>查看当前版本。',
 'enotif_body_intro_moved' => '{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|移动}},请浏览<$3>查看当前版本。',
-'enotif_body_intro_restored' => '{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|恢复}},请浏览<$3>查看当前版本。',
+'enotif_body_intro_restored' => '{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|还原}},请浏览$3查看当前版本。',
 'enotif_body_intro_changed' => '{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|更改}},请浏览 $3 查看当前版本。',
 'enotif_lastvisited' => '请浏览 $1 查看在你上次访问后的所有更改。',
 'enotif_lastdiff' => '请浏览 $1 查看该更改。',
@@ -2577,7 +2577,7 @@ $UNWATCHURL
 'undeletepagetitle' => "'''以下包含[[:$1]]的已删除之修订版本'''。",
 'viewdeletedpage' => '查看被删页面',
 'undeletepagetext' => '以下{{PLURAL:$1|页面|$1个页面}}已被删除,但依然在归档中并可以被恢复。归档可能会被定时清理。',
-'undelete-fieldset-title' => '恢复版本',
+'undelete-fieldset-title' => '还原版本',
 'undeleteextrahelp' => "要恢复该页面的整个历史记录时,不选中任何复选框直接点击'''''{{int:undeletebtn}}'''''。要选择性地恢复部分版本时,请选中相应版本前的复选框再点击'''''{{int:undeletebtn}}'''''。",
 'undeleterevisions' => '$1版本存档',
 'undeletehistory' => '如果您恢复了该页面,所有版本都会被恢复到修订历史中。
@@ -2597,9 +2597,9 @@ $UNWATCHURL
 'undeletedfiles' => '还原{{PLURAL:$1|$1个文件}}',
 'cannotundelete' => '恢复删除失败:
 $1',
-'undeletedpage' => "'''$1已经被恢复'''
+'undeletedpage' => '<strong>$1已经被还原</strong>
 
-参考[[Special:Log/delete|删除日志]]查看删除及恢复记录。",
+最近的删除和还原记录请见[[Special:Log/delete|删除日志]]。',
 'undelete-header' => '如要查询最近的记录请参阅[[Special:Log/delete|删除日志]]。',
 'undelete-search-title' => '搜索已删除页面',
 'undelete-search-box' => '搜索已删除页面',
@@ -2611,7 +2611,7 @@ $1',
 'undelete-cleanup-error' => '删除无用的存档文件“$1”时发生错误。',
 'undelete-missing-filearchive' => '由于文件存档 ID $1 不在数据库中,不能在文件存档中恢复。它可能已经被恢复了。',
 'undelete-error' => '还原页面出错',
-'undelete-error-short' => '恢复被删文件时发生错误:$1',
+'undelete-error-short' => '还原文件时出错:$1',
 'undelete-error-long' => '恢复被删除的文件时出错:
 
 $1',
@@ -2909,7 +2909,7 @@ $1被封禁的理由是“$2”',
 
 此外您还可以利用链接导出文件,例如您可以使用[[{{#Special:Export}}/{{MediaWiki:Mainpage}}]]导出“[[{{MediaWiki:Mainpage}}]]”页面。',
 'exportall' => '导出所有页面',
-'exportcuronly' => 'ä»\85å\8c\85å\90«å½\93å\89\8dç\9a\84修订ï¼\8cè\80\8cä¸\8dæ\98¯å\85¨é\83¨ç\9a\84历史。',
+'exportcuronly' => 'ä»\85å\8c\85å\90«å½\93å\89\8dç\89\88æ\9c¬ï¼\8cè\80\8cä¸\8dæ\98¯å®\8cæ\95´历史。',
 'exportnohistory' => "----
 '''注意:'''由于性能原因,从此表单导出页面的全部历史已被禁用。",
 'exportlistauthors' => '为每个页面包含贡献者的完整列表',
@@ -2933,7 +2933,7 @@ $1被封禁的理由是“$2”',
 'allmessages-filter-legend' => '过滤',
 'allmessages-filter' => '按自定义状态过滤:',
 'allmessages-filter-unmodified' => '未修改',
-'allmessages-filter-all' => '全部',
+'allmessages-filter-all' => '所有',
 'allmessages-filter-modified' => '曾修改',
 'allmessages-prefix' => '以前缀过滤:',
 'allmessages-language' => '语言:',
@@ -3733,8 +3733,8 @@ Variants for Chinese language
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '所有',
-'namespacesall' => '全部',
-'monthsall' => '全部',
+'namespacesall' => '所有',
+'monthsall' => '所有',
 
 # Email address confirmation
 'confirmemail' => '确认邮箱地址',
@@ -3821,7 +3821,7 @@ $5
 # Separators for various lists, etc.
 'comma-separator' => '、',
 'colon-separator' => ':',
-'pipe-separator' => '|',
+'pipe-separator' => '&#32;|&#32;',
 'word-separator' => '',
 'parentheses' => '($1)',
 'quotation-marks' => '“$1”',
@@ -3888,7 +3888,7 @@ $5
 'watchlistedit-raw-removed' => '$1个标题被删除:',
 
 # Watchlist editing tools
-'watchlisttools-view' => '查看关更改',
+'watchlisttools-view' => '查看关更改',
 'watchlisttools-edit' => '查看并编辑监视列表',
 'watchlisttools-raw' => '编辑原始监视列表',
 
index 1894005..be334e6 100644 (file)
@@ -735,7 +735,7 @@ $2',
 'createacct-another-submit' => '建立另一帳號',
 'createacct-benefit-heading' => '{{SITENAME}}是由像您一樣的人建立。',
 'createacct-benefit-body1' => '{{PLURAL:$1|次編輯}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|篇頁面}}',
+'createacct-benefit-body2' => '$1個頁面',
 'createacct-benefit-body3' => '位近期{{PLURAL:$1|貢獻者}}',
 'badretype' => '您所輸入的密碼並不符合。',
 'userexists' => '您所輸入的使用者名稱已存在,請另選一個名稱。',
@@ -2598,8 +2598,8 @@ $1',
 'contribsub2' => '{{GENDER:$3|$1}} 的貢獻 ($2)',
 'nocontribs' => '沒有找到符合特徵的更改。',
 'uctop' => '(最新修改)',
-'month' => '從該月份 (或更早):',
-'year' => '從該年份 (或更早):',
+'month' => '截止月份:',
+'year' => '截止年份:',
 
 'sp-contributions-newbies' => '只顯示新建立之用戶的貢獻',
 'sp-contributions-newbies-sub' => '新手',
@@ -3147,7 +3147,7 @@ $2',
 'pageinfo-templates' => '使用的模板($1)',
 'pageinfo-transclusions' => '使用的頁面($1)',
 'pageinfo-toolboxlink' => '頁面資訊',
-'pageinfo-redirectsto' => '重定向',
+'pageinfo-redirectsto' => '重定向',
 'pageinfo-redirectsto-info' => '資訊',
 'pageinfo-contentpage' => '計算為內容頁',
 'pageinfo-contentpage-yes' => '是',
index e9b7e02..e420cb2 100644 (file)
@@ -73,7 +73,7 @@ class CLDRPluralRuleEvaluator {
                // Calculate the values of the operand symbols
                $number = strval( $number );
                if ( !preg_match( '/^ -? ( ([0-9]+) (?: \. ([0-9]+) )? )$/x', $number, $m ) ) {
-                       wfDebug( __METHOD__ . ': invalid number input, returning "other"' );
+                       wfDebug( __METHOD__ . ": invalid number input, returning 'other'\n" );
                        return count( $rules );
                }
                if ( !isset( $m[3] ) ) {
index b5dc1e3..41458d1 100644 (file)
@@ -94,6 +94,7 @@ class FixDoubleRedirects extends Maintenance {
                foreach ( $res as $row ) {
                        $titleA = Title::makeTitle( $row->pa_namespace, $row->pa_title );
                        $titleB = Title::makeTitle( $row->pb_namespace, $row->pb_title );
+                       RequestContext::getMain()->setTitle( $titleA );
 
                        $processedTitles .= "* [[$titleA]]\n";
 
index 67b21e9..a953d3e 100644 (file)
@@ -4029,6 +4029,22 @@ $wgMessageStructure = array(
                'expand_templates_generate_rawhtml',
                'expand_templates_preview',
        ),
+       'trackingcategories' => array(
+               'trackingcategories',
+               'trackingcategories-summary',
+               'trackingcategories-msg',
+               'trackingcategories-name',
+               'trackingcategories-desc',
+               'noindex-category-desc',
+               'index-category-desc',
+               'post-expand-template-inclusion-category-desc',
+               'post-expand-template-argument-category-desc',
+               'expensive-parserfunction-category-desc',
+               'broken-file-category-desc',
+               'hidden-category-category-desc',
+               'trackingcategories-nodesc',
+               'trackcategories-disabled',
+       ),
 );
 
 /** Comments for each block */
@@ -4277,5 +4293,6 @@ Variants for Chinese language",
        'cachedspecial' => 'SpecialCachedPage',
        'rotation' => 'Image rotation',
        'limitreport' => 'Limit report',
-       'expandtemplates' => 'Special:ExpandTemplates'
+       'expandtemplates' => 'Special:ExpandTemplates',
+       'trackingcategories' => 'Special:TrackingCategories'
 );
index 4321b1b..a90617d 100644 (file)
@@ -7,7 +7,8 @@
        $.extend( mw.Api.prototype, {
                /**
                 * Determine if a category exists.
-                * @param {mw.Title} title
+                *
+                * @param {mw.Title|string} title
                 * @param {Function} [ok] Success callback (deprecated)
                 * @param {Function} [err] Error callback (deprecated)
                 * @return {jQuery.Promise}
@@ -20,7 +21,6 @@
                                titles: String( title )
                        } );
 
-                       // Backwards compatibility (< MW 1.20)
                        if ( ok || err ) {
                                mw.track( 'mw.deprecate', 'api.cbParam' );
                                mw.log.warn( msg );
@@ -46,7 +46,7 @@
                /**
                 * Get a list of categories that match a certain prefix.
                 *
-                * E.g. given "Foo", return "Food", "Foolish people", "Foosball tables" ...
+                * E.g. given "Foo", return "Food", "Foolish people", "Foosball tables"...
                 *
                 * @param {string} prefix Prefix to match.
                 * @param {Function} [ok] Success callback (deprecated)
@@ -63,7 +63,6 @@
                                apnamespace: mw.config.get( 'wgNamespaceIds' ).category
                        } );
 
-                       // Backwards compatibility (< MW 1.20)
                        if ( ok || err ) {
                                mw.track( 'mw.deprecate', 'api.cbParam' );
                                mw.log.warn( msg );
                },
 
                /**
-                * Get the categories that a particular page on the wiki belongs to
-                * @param {mw.Title} title
+                * Get the categories that a particular page on the wiki belongs to.
+                *
+                * @param {mw.Title|string} title
                 * @param {Function} [ok] Success callback (deprecated)
                 * @param {Function} [err] Error callback (deprecated)
-                * @param {boolean} [async=true] Asynchronousness
+                * @param {boolean} [async=true] Asynchronousness (deprecated)
                 * @return {jQuery.Promise}
                 * @return {Function} return.done
                 * @return {boolean|mw.Title[]} return.done.categories List of category titles or false
                                async: async === undefined ? true : async
                        } );
 
-                       // Backwards compatibility (< MW 1.20)
                        if ( ok || err ) {
                                mw.track( 'mw.deprecate', 'api.cbParam' );
                                mw.log.warn( msg );
                        }
+                       if ( async !== undefined ) {
+                               mw.track( 'mw.deprecate', 'api.async' );
+                               mw.log.warn(
+                                       'Use of mediawiki.api async=false param is deprecated. ' +
+                                       'The sychronous mode will be removed in the future.'
+                               );
+                       }
 
                        return apiPromise
                                .then( function ( data ) {
                                .fail( err )
                                .promise( { abort: apiPromise.abort } );
                }
-
        } );
 
        /**
index 952dea4..b1f1d2b 100644 (file)
@@ -5,7 +5,7 @@
 
        $.extend( mw.Api.prototype, {
                /**
-                * Convinience method for 'action=parse'.
+                * Convenience method for 'action=parse'.
                 *
                 * @param {string} wikitext
                 * @param {Function} [ok] Success callback (deprecated)
index 9d65e1f..aa33d86 100644 (file)
@@ -24,7 +24,7 @@
         */
        function doWatchInternal( pages, ok, err, addParams ) {
                // XXX: Parameter addParams is undocumented because we inherit this
-               // documentation in the public method..
+               // documentation in the public method...
                var apiPromise = this.post(
                        $.extend(
                                {
@@ -70,7 +70,6 @@
                unwatch: function ( pages, ok, err ) {
                        return doWatchInternal.call( this, pages, ok, err, { unwatch: 1 } );
                }
-
        } );
 
        /**
index 082f807..ffafd33 100644 (file)
                /**
                 * Get the link to a page name (relative to `wgServer`),
                 *
-                * @param {string} str Page name to get the link for.
+                * @param {string} str Page name
                 * @param {Object} [params] A mapping of query parameter names to values,
-                *     e.g. `{ action: 'edit' }`.
-                * @return {string} Location for a page with name of `str` or boolean false on error.
+                *  e.g. `{ action: 'edit' }`
+                * @return {string} Url of the page with name of `str`
                 */
                getUrl: function ( str, params ) {
-                       var url = mw.config.get( 'wgArticlePath' ).replace( '$1',
-                               util.wikiUrlencode( typeof str === 'string' ? str : mw.config.get( 'wgPageName' ) ) );
+                       var url = mw.config.get( 'wgArticlePath' ).replace(
+                               '$1',
+                               util.wikiUrlencode( typeof str === 'string' ? str : mw.config.get( 'wgPageName' ) )
+                       );
+
                        if ( params && !$.isEmptyObject( params ) ) {
-                               url += url.indexOf( '?' ) !== -1 ? '&' : '?';
-                               url += $.param( params );
+                               url += ( url.indexOf( '?' ) !== -1 ? '&' : '?' ) + $.param( params );
                        }
+
                        return url;
                },
 
index 0d822bc..eb53138 100644 (file)
@@ -19,5 +19,6 @@
     "ooui-dialog-action-close": "Cerrar",
     "ooui-outline-control-move-down": "Mover abajo",
     "ooui-outline-control-move-up": "Mover arriba",
+    "ooui-outline-control-remove": "Eliminar elemento",
     "ooui-toolbar-more": "Más"
 }
\ No newline at end of file
index 4af8dbe..aa780e4 100644 (file)
@@ -8,5 +8,6 @@
     "ooui-dialog-action-close": "Sule",
     "ooui-outline-control-move-down": "Liiguta üksust allapoole",
     "ooui-outline-control-move-up": "Liiguta üksust ülespoole",
+    "ooui-outline-control-remove": "Eemalda üksus",
     "ooui-toolbar-more": "Veel"
 }
\ No newline at end of file
index 4c27b07..df37fe3 100644 (file)
@@ -7,5 +7,6 @@
     "ooui-dialog-action-close": "Жабу",
     "ooui-outline-control-move-down": "Элементті төмен жылжыту",
     "ooui-outline-control-move-up": "Элементті жоғары жылжыту",
+    "ooui-outline-control-remove": "Элементті алып тастау",
     "ooui-toolbar-more": "толығырақ"
 }
\ No newline at end of file
index 9a412f5..d98b0e4 100644 (file)
@@ -1,11 +1,13 @@
 {
     "@metadata": {
         "authors": [
-            "AlimanRuna"
+            "AlimanRuna",
+            "Jduranboger"
         ]
     },
     "ooui-dialog-action-close": "Wichq'ay",
     "ooui-outline-control-move-down": "Qallawata uraykuchiy",
     "ooui-outline-control-move-up": "Qallawata huqariy",
+    "ooui-outline-control-remove": "P'anqa sutikunata qichuy",
     "ooui-toolbar-more": "Aswan"
 }
\ No newline at end of file
index 338edd3..091f4fc 100644 (file)
           transition: border-color 300ms ease-in-out;
 }
 
-.oo-ui-toolGroup:hover {
+.oo-ui-toolGroup.oo-ui-widget-enabled:hover {
   border-color: rgba(0, 0, 0, 0.1);
 }
 
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-tool-title {
+.oo-ui-toolGroup.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
   color: #000;
 }
 
   border-bottom-right-radius: 0.25em;
 }
 
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
+.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 0.8;
+}
+
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover {
   border-color: rgba(0, 0, 0, 0.2);
 }
 
-.oo-ui-barToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled {
   background: #f8fbfd;
   background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
   background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
   box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
 }
 
-.oo-ui-barToolGroup .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
   border-left-color: rgba(0, 0, 0, 0.1);
 }
 
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  opacity: 0.8;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
   opacity: 0.2;
 }
 
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
   opacity: 0.8;
 }
 
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconedElement-icon {
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconedElement-icon {
   opacity: 1;
 }
 
+.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 0.2;
+}
+
 .oo-ui-listToolGroup.oo-ui-popupToolGroup-active {
   border-color: rgba(0, 0, 0, 0.2);
 }
   opacity: 0.2;
 }
 
+.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator,
+.oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-iconedElement-icon {
+  opacity: 0.2;
+}
+
 .oo-ui-menuToolGroup {
   border-color: rgba(0, 0, 0, 0.1);
 }
 
-.oo-ui-menuToolGroup:hover {
+.oo-ui-menuToolGroup.oo-ui-widget-enabled:hover {
   border-color: rgba(0, 0, 0, 0.2);
 }
 
   border-color: rgba(0, 0, 0, 0.25);
 }
 
-.oo-ui-menuToolGroup .oo-ui-tool:hover {
+.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
   background-color: #e1f3ff;
 }
 
+.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
+  color: #ccc;
+}
+
+.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 0.2;
+}
+
+.oo-ui-menuToolGroup.oo-ui-widget-disabled {
+  color: #ccc;
+  text-shadow: 0 1px 1px #fff;
+  background-color: #f3f3f3;
+  border-color: #ddd;
+}
+
+.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatedElement-indicator,
+.oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-iconedElement-icon {
+  opacity: 0.2;
+}
+
 .oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,
 .oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
   opacity: 0.8;
index b964a12..937ff33 100644 (file)
@@ -1,14 +1,14 @@
 /*!
- * OOjs UI v0.1.0-pre (e9e435be5e)
+ * OOjs UI v0.1.0-pre (23fb1b6144)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Thu Mar 27 2014 11:42:46 GMT-0700 (PDT)
+ * Date: Thu Mar 27 2014 14:49:30 GMT-0700 (PDT)
  */
-( function () {
+( function ( OO ) {
 
 'use strict';
 /**
@@ -2932,11 +2932,12 @@ OO.ui.Tool.prototype.destroy = function () {
  *
  * @constructor
  * @param {OO.ui.ToolFactory} toolFactory Factory for creating tools
+ * @param {OO.ui.ToolGroupFactory} toolGroupFactory Factory for creating tool groups
  * @param {Object} [config] Configuration options
  * @cfg {boolean} [actions] Add an actions section opposite to the tools
  * @cfg {boolean} [shadow] Add a shadow below the toolbar
  */
-OO.ui.Toolbar = function OoUiToolbar( toolFactory, config ) {
+OO.ui.Toolbar = function OoUiToolbar( toolFactory, toolGroupFactory, config ) {
        // Configuration initialization
        config = config || {};
 
@@ -2949,6 +2950,7 @@ OO.ui.Toolbar = function OoUiToolbar( toolFactory, config ) {
 
        // Properties
        this.toolFactory = toolFactory;
+       this.toolGroupFactory = toolGroupFactory;
        this.groups = [];
        this.tools = {};
        this.$bar = this.$( '<div>' );
@@ -2992,6 +2994,15 @@ OO.ui.Toolbar.prototype.getToolFactory = function () {
        return this.toolFactory;
 };
 
+/**
+ * Get the tool group factory.
+ *
+ * @return {OO.Factory} Tool group factory
+ */
+OO.ui.Toolbar.prototype.getToolGroupFactory = function () {
+       return this.toolGroupFactory;
+};
+
 /**
  * Handles mouse down events.
  *
@@ -3031,13 +3042,7 @@ OO.ui.Toolbar.prototype.initialize = function () {
 OO.ui.Toolbar.prototype.setup = function ( groups ) {
        var i, len, type, group,
                items = [],
-               // TODO: Use a registry instead
-               defaultType = 'bar',
-               constructors = {
-                       'bar': OO.ui.BarToolGroup,
-                       'list': OO.ui.ListToolGroup,
-                       'menu': OO.ui.MenuToolGroup
-               };
+               defaultType = 'bar';
 
        // Cleanup previous groups
        this.reset();
@@ -3054,9 +3059,10 @@ OO.ui.Toolbar.prototype.setup = function ( groups ) {
                                group.label = 'ooui-toolbar-more';
                        }
                }
-               type = constructors[group.type] ? group.type : defaultType;
+               // Check type has been registered
+               type = this.getToolGroupFactory().lookup( group.type ) ? group.type : defaultType;
                items.push(
-                       new constructors[type]( this, $.extend( { '$': this.$ }, group ) )
+                       this.getToolGroupFactory().create( type, this, $.extend( { '$': this.$ }, group ) )
                );
        }
        this.addItems( items );
@@ -3517,6 +3523,43 @@ OO.ui.ToolGroup.prototype.destroy = function () {
        }
        this.$element.remove();
 };
+/**
+ * Factory for tools.
+ *
+ * @class
+ * @extends OO.Factory
+ * @constructor
+ */
+OO.ui.ToolGroupFactory = function OoUiToolGroupFactory() {
+       // Parent constructor
+       OO.Factory.call( this );
+
+       var i, l,
+               defaultClasses = this.constructor.static.getDefaultClasses();
+
+       // Register default toolgroups
+       for ( i = 0, l = defaultClasses.length; i < l; i++ ) {
+               this.register( defaultClasses[i] );
+       }
+};
+
+/* Inheritance */
+
+OO.inheritClass( OO.ui.ToolGroupFactory, OO.Factory );
+
+/* Static Methods */
+
+/**
+ * Get a default set of classes to be registered on construction
+ * @return {Function[]} Default classes
+ */
+OO.ui.ToolGroupFactory.static.getDefaultClasses = function () {
+       return [
+               OO.ui.BarToolGroup,
+               OO.ui.ListToolGroup,
+               OO.ui.MenuToolGroup
+       ];
+};
 /**
  * Layout made of a fieldset and optional legend.
  *
@@ -4558,6 +4601,8 @@ OO.inheritClass( OO.ui.BarToolGroup, OO.ui.ToolGroup );
 OO.ui.BarToolGroup.static.titleTooltips = true;
 
 OO.ui.BarToolGroup.static.accelTooltips = true;
+
+OO.ui.BarToolGroup.static.name = 'bar';
 /**
  * Popup list of tools with an icon and optional label.
  *
@@ -4719,6 +4764,8 @@ OO.inheritClass( OO.ui.ListToolGroup, OO.ui.PopupToolGroup );
 /* Static Properties */
 
 OO.ui.ListToolGroup.static.accelTooltips = true;
+
+OO.ui.ListToolGroup.static.name = 'list';
 /**
  * Drop down menu layout of tools as selectable menu items.
  *
@@ -4752,6 +4799,8 @@ OO.inheritClass( OO.ui.MenuToolGroup, OO.ui.PopupToolGroup );
 
 OO.ui.MenuToolGroup.static.accelTooltips = true;
 
+OO.ui.MenuToolGroup.static.name = 'menu';
+
 /* Methods */
 
 /**
@@ -4772,7 +4821,7 @@ OO.ui.MenuToolGroup.prototype.onUpdateState = function () {
                }
        }
 
-       this.setLabel( labelTexts.join( ', ' ) );
+       this.setLabel( labelTexts.join( ', ' ) || ' ' );
 };
 /**
  * UserInterface popup tool.
@@ -4835,6 +4884,8 @@ OO.ui.PopupTool.prototype.onUpdateState = function () {
 /**
  * Group widget.
  *
+ * Mixin for OO.ui.Widget subclasses.
+ *
  * Use together with OO.ui.ItemWidget to make disabled state inheritable.
  *
  * @class
@@ -4869,6 +4920,8 @@ OO.ui.GroupWidget.prototype.setDisabled = function ( disabled ) {
        var i, len;
 
        // Parent method
+       // Note this is calling OO.ui.Widget; we're assuming the class this is mixed into
+       // is a subclass of OO.ui.Widget.
        OO.ui.Widget.prototype.setDisabled.call( this, disabled );
 
        // During construction, #setDisabled is called before the OO.ui.GroupElement constructor
@@ -7982,4 +8035,4 @@ OO.ui.ToggleSwitchWidget.prototype.onClick = function ( e ) {
                this.setValue( !this.value );
        }
 };
-}() );
+}( OO ) );
index 1cc6189..887da4d 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (e9e435be5e)
+ * OOjs UI v0.1.0-pre (23fb1b6144)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Thu Mar 27 2014 11:42:46 GMT-0700 (PDT)
+ * Date: Thu Mar 27 2014 14:49:30 GMT-0700 (PDT)
  */
 
 /* Textures */
   display: block;
   height: 1.5em;
   padding: 0.25em;
-  cursor: pointer;
 }
 
 .oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
   display: none;
 }
 
+.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
+  cursor: pointer;
+}
+
 .oo-ui-listToolGroup .oo-ui-toolGroup-tools {
   padding: 0.25em;
 }
   background-image: /* @embed */ url(images/icons/check.png);
 }
 
+.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
+  cursor: default;
+}
+
 .oo-ui-popupToolGroup {
   position: relative;
   height: 2em;
   line-height: 2.6em;
 }
 
+.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
+  cursor: default;
+}
+
 .oo-ui-popupToolGroup.oo-ui-iconedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
   margin-left: 3em;
 }
index ad7942a..06f5eba 100644 (file)
@@ -185,6 +185,12 @@ table {
        font-size: 100%;
 }
 
+/* Prevent citations and subscripts from interfering with the line-height */
+sup,
+sub {
+       line-height: 1;
+}
+
 /* Forms */
 fieldset {
        border: 1px solid #2f6fab;
index f5b2b1c..7102c86 100644 (file)
@@ -40,7 +40,8 @@ div#content {
        color: @content-font-color;
        direction: ltr;
 
-       .mw-editsection {
+       .mw-editsection,
+       .mw-editsection-like {
                font-family: @content-font-family;
        }
 
@@ -99,12 +100,6 @@ div#content {
                font-size: 100%; /* (reset) */
                font-family: @content-font-family;
        }
-
-       // Prevent citations and subscripts from interfering with the line-height
-       sup,
-       sub {
-               line-height: 1;
-       }
 }
 
 /* Hide empty portlets */
index 930a7f6..44ca3d2 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 class MessageTest extends MediaWikiLangTestCase {
+
        protected function setUp() {
                parent::setUp();
 
@@ -10,6 +11,40 @@ class MessageTest extends MediaWikiLangTestCase {
                ) );
        }
 
+       /**
+        * @covers Message::__construct
+        * @dataProvider provideConstructor
+        */
+       public function testConstructor( $expectedLang, $key, $params, $language ) {
+               $reflection = new ReflectionClass( 'Message' );
+
+               $keyProperty = $reflection->getProperty( 'key' );
+               $keyProperty->setAccessible( true );
+
+               $paramsProperty = $reflection->getProperty( 'parameters' );
+               $paramsProperty->setAccessible( true );
+
+               $langProperty = $reflection->getProperty( 'language' );
+               $langProperty->setAccessible( true );
+
+               $message = new Message( $key, $params, $language );
+
+               $this->assertEquals( $key, $keyProperty->getValue( $message ) );
+               $this->assertEquals( $params, $paramsProperty->getValue( $message ) );
+               $this->assertEquals( $expectedLang, $langProperty->getValue( $message ) );
+       }
+
+       public function provideConstructor() {
+               $langDe = Language::factory( 'de' );
+               $langEn = Language::factory( 'en' );
+
+               return array(
+                       array( $langDe, 'foo', array(), $langDe ),
+                       array( $langDe, 'foo', array( 'bar' ), $langDe ),
+                       array( $langEn, 'foo', array( 'bar' ), null )
+               );
+       }
+
        public function provideTestParams() {
                return array(
                        array( array() ),
@@ -24,6 +59,24 @@ class MessageTest extends MediaWikiLangTestCase {
                );
        }
 
+       public function getLanguageProvider() {
+               return array(
+                       array( 'foo', array( 'bar' ), 'en' ),
+                       array( 'foo', array( 'bar' ), 'de' )
+               );
+       }
+
+       /**
+        * @covers Message::getLanguage
+        * @dataProvider getLanguageProvider
+        */
+       public function testGetLanguageCode( $key, $params, $languageCode ) {
+               $language = Language::factory( $languageCode );
+               $message = new Message( $key, $params, $language );
+
+               $this->assertEquals( $language, $message->getLanguage() );
+       }
+
        /**
         * @covers Message::params
         * @dataProvider provideTestParams
index ba3c6c0..a332368 100644 (file)
@@ -3,6 +3,8 @@
 /**
  * @group Database
  *        ^--- needed for language cache stuff
+ *
+ * @group Title
  */
 class TitleTest extends MediaWikiTestCase {
        protected function setUp() {
@@ -38,6 +40,7 @@ class TitleTest extends MediaWikiTestCase {
         * See also mediawiki.Title.test.js
         * @covers Title::secureAndSplit
         * @todo This method should be split into 2 separate tests each with a provider
+        * @note: This mainly tests MediaWikiTitleCodec::parseTitle().
         */
        public function testSecureAndSplit() {
                $this->setMwGlobals( array(
@@ -62,6 +65,7 @@ class TitleTest extends MediaWikiTestCase {
                        'A \'B\'',
                        '.com',
                        '~',
+                       '#',
                        '"',
                        '\'',
                        'Talk:Sandbox',
@@ -130,6 +134,7 @@ class TitleTest extends MediaWikiTestCase {
                        str_repeat( 'x', 256 ),
                        // Namespace prefix without actual title
                        'Talk:',
+                       'Talk:#',
                        'Category: ',
                        'Category: #bar',
                        // interwiki prefix
index 8995a0d..bdb143f 100644 (file)
@@ -37,7 +37,7 @@ class ThrottledErrorTest extends MediaWikiTestCase {
                        ->getMock();
                $mock->expects( $this->once() )
                        ->method( 'setStatusCode' )
-                       ->with( 503 );
+                       ->with( 429 );
                return $mock;
        }
 
index 839c5d5..c8e8ac7 100644 (file)
@@ -1,15 +1,18 @@
 ( function ( $ ) {
-       QUnit.module( 'jquery.color', QUnit.newMwEnvironment() );
+       QUnit.module( 'jquery.color', QUnit.newMwEnvironment( {
+               setup: function () {
+                       this.clock = this.sandbox.useFakeTimers();
+               }
+       } ) );
 
-       QUnit.asyncTest( 'animate', 3, function ( assert ) {
+       QUnit.test( 'animate', 1, function ( assert ) {
                var $canvas = $( '<div>' ).css( 'background-color', '#fff' );
 
-               $canvas.animate( { backgroundColor: '#000' }, 4 ).promise().then( function () {
+               $canvas.animate( { backgroundColor: '#000' }, 10 ).promise().then( function () {
                        var endColors = $.colorUtil.getRGB( $canvas.css( 'background-color' ) );
-                       assert.strictEqual( endColors[0], 0 );
-                       assert.strictEqual( endColors[1], 0 );
-                       assert.strictEqual( endColors[2], 0 );
-                       QUnit.start();
+                       assert.deepEqual( endColors, [0, 0, 0], 'end state' );
                } );
+
+               this.clock.tick( 20 );
        } );
 }( jQuery ) );
index e6a6124..8040581 100644 (file)
@@ -1,7 +1,11 @@
 ( function ( mw, $ ) {
        var loremIpsum = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.';
 
-       QUnit.module( 'jquery.makeCollapsible', QUnit.newMwEnvironment() );
+       QUnit.module( 'jquery.makeCollapsible', QUnit.newMwEnvironment( {
+               setup: function () {
+                       this.clock = this.sandbox.useFakeTimers();
+               }
+       } ) );
 
        function prepareCollapsible( html, options ) {
                return $( $.parseHTML( html ) )
@@ -11,8 +15,9 @@
        }
 
        // This test is first because if it fails, then almost all of the latter tests are meaningless.
-       QUnit.asyncTest( 'testing hooks/triggers', 4, function ( assert ) {
-               var $collapsible = prepareCollapsible(
+       QUnit.test( 'testing hooks/triggers', 4, function ( assert ) {
+               var test = this,
+                       $collapsible = prepareCollapsible(
                                '<div class="mw-collapsible">' + loremIpsum + '</div>'
                        ),
                        $content = $collapsible.find( '.mw-collapsible-content' ),
                        } );
                        $collapsible.on( 'afterExpand.mw-collapsible', function () {
                                assert.assertTrue( $content.is( ':visible' ), 'second afterCollapseExpand: content is visible' );
-                               QUnit.start();
                        } );
 
                        // ...expanding happens here
                        $toggle.trigger( 'click' );
+                       test.clock.tick( 500 );
                } );
 
                // ...collapsing happens here
                $toggle.trigger( 'click' );
+               test.clock.tick( 500 );
        } );
 
-       QUnit.asyncTest( 'basic operation (<div>)', 5, function ( assert ) {
-               var $collapsible = prepareCollapsible(
+       QUnit.test( 'basic operation (<div>)', 5, function ( assert ) {
+               var test = this,
+                       $collapsible = prepareCollapsible(
                                '<div class="mw-collapsible">' + loremIpsum + '</div>'
                        ),
                        $content = $collapsible.find( '.mw-collapsible-content' ),
 
                        $collapsible.on( 'afterExpand.mw-collapsible', function () {
                                assert.assertTrue( $content.is( ':visible' ), 'after expanding: content is visible' );
-                               QUnit.start();
                        } );
 
                        $toggle.trigger( 'click' );
+                       test.clock.tick( 500 );
                } );
 
                $toggle.trigger( 'click' );
+               test.clock.tick( 500 );
        } );
 
-       QUnit.asyncTest( 'basic operation (<table>)', 7, function ( assert ) {
-               var $collapsible = prepareCollapsible(
+       QUnit.test( 'basic operation (<table>)', 7, function ( assert ) {
+               var test = this,
+                       $collapsible = prepareCollapsible(
                                '<table class="mw-collapsible">' +
                                        '<tr><td>' + loremIpsum + '</td><td>' + loremIpsum + '</td></tr>' +
                                        '<tr><td>' + loremIpsum + '</td><td>' + loremIpsum + '</td></tr>' +
                        $collapsible.on( 'afterExpand.mw-collapsible', function () {
                                assert.assertTrue( $headerRow.is( ':visible' ), 'after expanding: headerRow is still visible' );
                                assert.assertTrue( $contentRow.is( ':visible' ), 'after expanding: contentRow is visible' );
-                               QUnit.start();
                        } );
 
                        $toggle.trigger( 'click' );
+                       test.clock.tick( 500 );
                } );
 
                $toggle.trigger( 'click' );
+               test.clock.tick( 500 );
        } );
 
-       function tableWithCaptionTest( $collapsible, assert ) {
+       function tableWithCaptionTest( $collapsible, test, assert ) {
                var $caption = $collapsible.find( 'caption' ),
                        $headerRow = $collapsible.find( 'tr:first' ),
                        $contentRow = $collapsible.find( 'tr:last' ),
                                assert.assertTrue( $caption.is( ':visible' ), 'after expanding: caption is still visible' );
                                assert.assertTrue( $headerRow.is( ':visible' ), 'after expanding: headerRow is visible' );
                                assert.assertTrue( $contentRow.is( ':visible' ), 'after expanding: contentRow is visible' );
-                               QUnit.start();
                        } );
 
                        $toggle.trigger( 'click' );
+                       test.clock.tick( 500 );
                } );
 
                $toggle.trigger( 'click' );
+               test.clock.tick( 500 );
        }
 
-       QUnit.asyncTest( 'basic operation (<table> with caption)', 10, function ( assert ) {
+       QUnit.test( 'basic operation (<table> with caption)', 10, function ( assert ) {
                tableWithCaptionTest( prepareCollapsible(
                        '<table class="mw-collapsible">' +
                                '<caption>' + loremIpsum + '</caption>' +
                                '<tr><td>' + loremIpsum + '</td><td>' + loremIpsum + '</td></tr>' +
                                '<tr><td>' + loremIpsum + '</td><td>' + loremIpsum + '</td></tr>' +
                        '</table>'
-               ), assert );
+               ), this, assert );
        } );
 
-       QUnit.asyncTest( 'basic operation (<table> with caption and <thead>)', 10, function ( assert ) {
+       QUnit.test( 'basic operation (<table> with caption and <thead>)', 10, function ( assert ) {
                tableWithCaptionTest( prepareCollapsible(
                        '<table class="mw-collapsible">' +
                                '<caption>' + loremIpsum + '</caption>' +
                                '<tr><td>' + loremIpsum + '</td><td>' + loremIpsum + '</td></tr>' +
                                '<tr><td>' + loremIpsum + '</td><td>' + loremIpsum + '</td></tr>' +
                        '</table>'
-               ), assert );
+               ), this, assert );
        } );
 
-       function listTest( listType, assert ) {
+       function listTest( listType, test, assert ) {
                var $collapsible = prepareCollapsible(
                                '<' + listType + ' class="mw-collapsible">' +
                                        '<li>' + loremIpsum + '</li>' +
                        $collapsible.on( 'afterExpand.mw-collapsible', function () {
                                assert.assertTrue( $toggleItem.is( ':visible' ), 'after expanding: toggleItem is still visible' );
                                assert.assertTrue( $contentItem.is( ':visible' ), 'after expanding: contentItem is visible' );
-                               QUnit.start();
                        } );
 
                        $toggle.trigger( 'click' );
+                       test.clock.tick( 500 );
                } );
 
                $toggle.trigger( 'click' );
+               test.clock.tick( 500 );
        }
 
-       QUnit.asyncTest( 'basic operation (<ul>)', 7, function ( assert ) {
-               listTest( 'ul', assert );
+       QUnit.test( 'basic operation (<ul>)', 7, function ( assert ) {
+               listTest( 'ul', this, assert );
        } );
 
-       QUnit.asyncTest( 'basic operation (<ol>)', 7, function ( assert ) {
-               listTest( 'ol', assert );
+       QUnit.test( 'basic operation (<ol>)', 7, function ( assert ) {
+               listTest( 'ol', this, assert );
        } );
 
        QUnit.test( 'basic operation when synchronous (options.instantHide)', 2, function ( assert ) {
                assert.assertTrue( $collapsible.hasClass( 'mw-collapsed' ), 'mw-collapsed class present' );
        } );
 
-       QUnit.asyncTest( 'initial collapse (mw-collapsed class)', 2, function ( assert ) {
+       QUnit.test( 'initial collapse (mw-collapsed class)', 2, function ( assert ) {
                var $collapsible = prepareCollapsible(
                                '<div class="mw-collapsible mw-collapsed">' + loremIpsum + '</div>'
                        ),
 
                $collapsible.on( 'afterExpand.mw-collapsible', function () {
                        assert.assertTrue( $content.is( ':visible' ), 'after expanding: content is visible' );
-                       QUnit.start();
                } );
 
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
+               this.clock.tick( 500 );
        } );
 
-       QUnit.asyncTest( 'initial collapse (options.collapsed)', 2, function ( assert ) {
+       QUnit.test( 'initial collapse (options.collapsed)', 2, function ( assert ) {
                var $collapsible = prepareCollapsible(
                                '<div class="mw-collapsible">' + loremIpsum + '</div>',
                                { collapsed: true }
 
                $collapsible.on( 'afterExpand.mw-collapsible', function () {
                        assert.assertTrue( $content.is( ':visible' ), 'after expanding: content is visible' );
-                       QUnit.start();
                } );
 
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
+               this.clock.tick( 500 );
        } );
 
        QUnit.test( 'clicks on links inside toggler pass through (options.linksPassthru)', 2, function ( assert ) {
                assert.assertTrue( $content.is( ':hidden' ), 'click event on non-link inside toggle toggles content' );
        } );
 
-       QUnit.asyncTest( 'collapse/expand text (data-collapsetext, data-expandtext)', 2, function ( assert ) {
+       QUnit.test( 'collapse/expand text (data-collapsetext, data-expandtext)', 2, function ( assert ) {
                var $collapsible = prepareCollapsible(
                                '<div class="mw-collapsible" data-collapsetext="Collapse me!" data-expandtext="Expand me!">' +
                                        loremIpsum +
 
                $collapsible.on( 'afterCollapse.mw-collapsible', function () {
                        assert.equal( $toggleLink.text(), 'Expand me!', 'data-expandtext is respected' );
-                       QUnit.start();
                } );
 
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
+               this.clock.tick( 500 );
        } );
 
-       QUnit.asyncTest( 'collapse/expand text (options.collapseText, options.expandText)', 2, function ( assert ) {
+       QUnit.test( 'collapse/expand text (options.collapseText, options.expandText)', 2, function ( assert ) {
                var $collapsible = prepareCollapsible(
                                '<div class="mw-collapsible">' + loremIpsum + '</div>',
                                { collapseText: 'Collapse me!', expandText: 'Expand me!' }
 
                $collapsible.on( 'afterCollapse.mw-collapsible', function () {
                        assert.equal( $toggleLink.text(), 'Expand me!', 'options.expandText is respected' );
-                       QUnit.start();
                } );
 
                $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' );
+               this.clock.tick( 500 );
        } );
 
 }( mediaWiki, jQuery ) );