Merge "Make sure a job is logged as OK if the status is NULL for sanity."
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 9 Apr 2013 18:24:43 +0000 (18:24 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 9 Apr 2013 18:24:43 +0000 (18:24 +0000)
146 files changed:
RELEASE-NOTES-1.21
RELEASE-NOTES-1.22
includes/Block.php
includes/Collation.php
includes/DefaultSettings.php
includes/EditPage.php
includes/Export.php
includes/GlobalFunctions.php
includes/Hooks.php
includes/MagicWord.php
includes/Preferences.php
includes/Revision.php
includes/SkinLegacy.php
includes/StreamFile.php
includes/StubObject.php
includes/Title.php
includes/UserMailer.php
includes/WikiPage.php
includes/api/ApiBase.php
includes/api/ApiCreateAccount.php
includes/api/ApiImageRotate.php
includes/api/ApiPurge.php
includes/api/ApiQuery.php
includes/api/ApiSetNotificationTimestamp.php
includes/cache/LocalisationCache.php
includes/cache/MessageCache.php
includes/cache/SquidUpdate.php
includes/content/WikitextContent.php
includes/db/Database.php
includes/db/DatabaseMysql.php
includes/db/LoadBalancer.php
includes/debug/Debug.php
includes/diff/DifferenceEngine.php
includes/filebackend/FileBackendStore.php
includes/filerepo/file/LocalFile.php
includes/filerepo/file/OldLocalFile.php
includes/installer/Installer.i18n.php
includes/json/FormatJson.php
includes/normal/UtfNormalTest.php
includes/normal/UtfNormalUtil.php
includes/parser/Parser.php
includes/parser/Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php
includes/resourceloader/ResourceLoader.php
includes/specials/SpecialSearch.php
includes/specials/SpecialStatistics.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialVersion.php
includes/upload/UploadBase.php
languages/Language.php
languages/Names.php
languages/classes/LanguageGan.php
languages/classes/LanguageZh.php
languages/messages/MessagesAf.php
languages/messages/MessagesAr.php
languages/messages/MessagesAst.php
languages/messages/MessagesAzb.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBjn.php
languages/messages/MessagesBn.php
languages/messages/MessagesBr.php
languages/messages/MessagesBs.php
languages/messages/MessagesCa.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCrh_latn.php
languages/messages/MessagesCs.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesEn.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesEu.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrr.php
languages/messages/MessagesGd.php
languages/messages/MessagesGl.php
languages/messages/MessagesHe.php
languages/messages/MessagesHif_latn.php
languages/messages/MessagesHsb.php
languages/messages/MessagesId.php
languages/messages/MessagesIlo.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJv.php
languages/messages/MessagesKa.php
languages/messages/MessagesKo.php
languages/messages/MessagesKsh.php
languages/messages/MessagesLa.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLus.php
languages/messages/MessagesLv.php
languages/messages/MessagesMap_bms.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMr.php
languages/messages/MessagesMs.php
languages/messages/MessagesMyv.php
languages/messages/MessagesNah.php
languages/messages/MessagesNb.php
languages/messages/MessagesNds.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesPa.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesSa.php
languages/messages/MessagesSi.php
languages/messages/MessagesSl.php
languages/messages/MessagesSq.php
languages/messages/MessagesSv.php
languages/messages/MessagesTa.php
languages/messages/MessagesTe.php
languages/messages/MessagesTh.php
languages/messages/MessagesUk.php
languages/messages/MessagesVi.php
languages/messages/MessagesWuu.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
maintenance/jsduck/config.json
maintenance/language/messages.inc
maintenance/mergeMessageFileList.php
maintenance/mwjsduck-gen
resources/mediawiki/mediawiki.js
resources/mediawiki/mediawiki.util.js
resources/startup.js
tests/TestsAutoLoader.php
tests/parser/parserTests.txt
tests/phpunit/AutoLoaderTest.php
tests/phpunit/includes/CollationTest.php [new file with mode: 0644]
tests/qunit/QUnitTestResources.php
tests/qunit/suites/resources/mediawiki/mediawiki.test.js
tests/qunit/suites/resources/startup.test.js [new file with mode: 0644]

index 1824910..2ab652b 100644 (file)
@@ -328,7 +328,7 @@ changes to languages because of Bugzilla reports.
   were using it, you have to either copy it to your extension, or install the
   Vector extension (and possibly disable its features using config settings if
   you don't want them).
-* Experimental IBM DB2 support was removed due to lack of interest and maintainership
+* Experimental IBM DB2 support was removed due to lack of interest and maintainership.
 * BREAKING CHANGE: Filenames of maintenance scripts were standardized into
   lowerCamelCase format, and made more explicit:
   - clear_stats.php -> clearCacheStats.php
@@ -344,7 +344,7 @@ changes to languages because of Bugzilla reports.
   - ShowStats -> ShowSiteStats.
 * BREAKING CHANGE: (bug 38244) Removed the mediawiki.api.titleblacklist module
   and moved it to the TitleBlacklist extension.
-* The Special:ActiveUsers special page was removed
+* The Special:ActiveUsers special page was removed.
 * BREAKING CHANGE: Implementation of MediaWiki's JS and JSON value encoding
   has changed:
 ** MediaWiki no longer supports PHP installations in which the native JSON
@@ -354,7 +354,7 @@ changes to languages because of Bugzilla reports.
 ** The sets of characters escaped by default, along with the precise escape
    sequences used, have changed (except for the Xml::escapeJsString()
    function, which is now deprecated).
-* BREAKING CHANGE: The Services_JSON class has been removed; if necessary,
+* BREAKING CHANGE: The Services_JSON class has been removed. If necessary,
   be sure to upgrade affected extensions at the same time (e.g. Collection).
 * Calling Linker methods using a skin will now output deprecation warnings.
 * Pages with a returnto (such as the page when you login or logout), no
index 1d48023..5c0098d 100644 (file)
@@ -35,6 +35,8 @@ changes to languages because of Bugzilla reports.
   with its associated globals of $wgExternalAuthType, $wgExternalAuthConf,
   $wgAutocreatePolicy and $wgAllowPrefChange. Affected users are encouraged to
   use AuthPlugin for external authentication/authorization needs.
+* The Quickbar feature of the legacy skin model and the last remnants of it
+  throughout the code base have been removed.
 
 == Compatibility ==
 
index 568f4b0..4da0f8f 100644 (file)
@@ -1252,6 +1252,7 @@ class Block {
                } elseif ( $blocksList['auto'] ) {
                        $chosenBlock = $blocksList['auto'];
                } else {
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( "Proxy block found, but couldn't be classified." );
                }
 
index 107e8f9..21448f7 100644 (file)
@@ -208,14 +208,12 @@ class IcuCollation extends Collation {
                'be-tarask' => array( "Ё" ),
                'en' => array(),
                'fi' => array( "Å", "Ä", "Ö" ),
-               '-fi' => array( "Ǥ", "Ŋ", "Ŧ", "Ʒ" ), // sorted like G, N, T, Z - bug 46330
                'hu' => array( "Cs", "Dz", "Dzs", "Gy", "Ly", "Ny", "Ö", "Sz", "Ty", "Ü", "Zs" ),
                'it' => array(),
                'pl' => array( "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ź", "Ż" ),
                'pt' => array(),
                'ru' => array(),
                'sv' => array( "Å", "Ä", "Ö" ),
-               '-sv' => array( "Þ" ), // sorted as "th" in Swedish, causing unexpected output - bug 45446
                'uk' => array( "Ґ", "Ь" ),
                'vi' => array( "Ă", "Â", "Đ", "Ê", "Ô", "Ơ", "Ư" ),
                // Not verified, but likely correct
@@ -397,6 +395,72 @@ class IcuCollation extends Collation {
                        }
                }
                ksort( $letterMap, SORT_STRING );
+               // Remove duplicate prefixes. Basically if something has a sortkey
+               // which is a prefix of some other sortkey, then it is an
+               // expansion and probably should not be considered a section
+               // header.
+               //
+               // For example 'þ' is sometimes sorted as if it is the letters
+               // 'th'. Other times it is its own primary element. Another
+               // example is '₨'. Sometimes its a currency symbol. Sometimes it
+               // is an 'R' followed by an 's'.
+               //
+               // Additionally an expanded element should always sort directly
+               // after its first element due to they way sortkeys work.
+               //
+               // UCA sortkey elements are of variable length but no collation
+               // element should be a prefix of some other element, so I think
+               // this is safe. See:
+               // * https://ssl.icu-project.org/repos/icu/icuhtml/trunk/design/collation/ICU_collation_design.htm
+               // * http://site.icu-project.org/design/collation/uca-weight-allocation
+               //
+               // Additionally, there is something called primary compression to
+               // worry about. Basically, if you have two primary elements that
+               // are more than one byte and both start with the same byte then
+               // the first byte is dropped on the second primary. Additionally
+               // either \x03 or \xFF may be added to mean that the next primary
+               // does not start with the first byte of the first primary.
+               //
+               // This shouldn't matter much, as the first primary is not
+               // changed, and that is what we are comparing against.
+               //
+               // tl;dr: This makes some assumptions about how icu implements
+               // collations. It seems incredibly unlikely these assumptions
+               // will change, but nonetheless they are assumptions.
+
+               $prev = false;
+               $duplicatePrefixes = array();
+               foreach( $letterMap as $key => $value ) {
+                       // Remove terminator byte. Otherwise the prefix
+                       // comparison will get hung up on that.
+                       $trimmedKey = rtrim( $key, "\0" );
+                       if ( $prev === false || $prev === '' ) {
+                               $prev = $trimmedKey;
+                               // We don't yet have a collation element
+                               // to compare against, so continue.
+                               continue;
+                       }
+
+                       // Due to the fact the array is sorted, we only have
+                       // to compare with the element directly previous
+                       // to the current element (skipping expansions).
+                       // An element "X" will always sort directly
+                       // before "XZ" (Unless we have "XY", but we
+                       // do not update $prev in that case).
+                       if ( substr( $trimmedKey, 0, strlen( $prev ) ) === $prev ) {
+                               $duplicatePrefixes[] = $key;
+                               // If this is an expansion, we don't want to
+                               // compare the next element to this element,
+                               // but to what is currently $prev
+                               continue;
+                       }
+                       $prev = $trimmedKey;
+               }
+               foreach( $duplicatePrefixes as $badKey ) {
+                       wfDebug( "Removing '{$letterMap[$badKey]}' from first letters." );
+                       unset( $letterMap[$badKey] );
+                       // This code assumes that unsetting does not change sort order.
+               }
                $data = array(
                        'chars' => array_values( $letterMap ),
                        'keys' => array_keys( $letterMap ),
index 5f7eb65..d660f50 100644 (file)
@@ -3672,7 +3672,6 @@ $wgDefaultUserOptions = array(
        'numberheadings' => 0,
        'previewonfirst' => 0,
        'previewontop' => 1,
-       'quickbar' => 5,
        'rcdays' => 7,
        'rclimit' => 50,
        'rememberpassword' => 0,
index f88dc90..96a57b4 100644 (file)
@@ -621,6 +621,7 @@ class EditPage {
                $this->section = $request->getVal( 'wpSection', $request->getVal( 'section' ) );
 
                if ( $this->section !== null && $this->section !== '' && !$this->isSectionEditSupported() ) {
+                       wfProfileOut( __METHOD__ );
                        throw new ErrorPageError( 'sectioneditnotsupported-title', 'sectioneditnotsupported-text' );
                }
 
index 085662a..996c14b 100644 (file)
@@ -296,6 +296,7 @@ class WikiExporter {
                                }
 
                                // Inform caller about problem
+                               wfProfileOut( __METHOD__ );
                                throw $e;
                        }
                # For page dumps...
index 1a4b985..751f4af 100644 (file)
@@ -1093,16 +1093,29 @@ function wfDeprecated( $function, $version = false, $component = false, $callerO
 
 /**
  * Send a warning either to the debug log or in a PHP error depending on
- * $wgDevelopmentWarnings
+ * $wgDevelopmentWarnings. To log warnings in production, use wfLogWarning() instead.
  *
  * @param string $msg message to send
  * @param $callerOffset Integer: number of items to go back in the backtrace to
  *        find the correct caller (1 = function calling wfWarn, ...)
- * @param $level Integer: PHP error level; only used when $wgDevelopmentWarnings
- *        is true
+ * @param $level Integer: PHP error level; defaults to E_USER_NOTICE;
+ *        only used when $wgDevelopmentWarnings is true
  */
 function wfWarn( $msg, $callerOffset = 1, $level = E_USER_NOTICE ) {
-       MWDebug::warning( $msg, $callerOffset + 1, $level );
+       MWDebug::warning( $msg, $callerOffset + 1, $level, 'auto' );
+}
+
+/**
+ * Send a warning as a PHP error and the debug log. This is intended for logging
+ * warnings in production. For logging development warnings, use WfWarn instead.
+ *
+ * @param $msg String: message to send
+ * @param $callerOffset Integer: number of items to go back in the backtrace to
+ *        find the correct caller (1 = function calling wfLogWarning, ...)
+ * @param $level Integer: PHP error level; defaults to E_USER_WARNING
+ */
+function wfLogWarning( $msg, $callerOffset = 1, $level = E_USER_WARNING ) {
+       MWDebug::warning( $msg, $callerOffset + 1, $level, 'production' );
 }
 
 /**
@@ -2536,8 +2549,7 @@ function wfMkdirParents( $dir, $mode = null, $caller = null ) {
 
        if( !$ok ) {
                // PHP doesn't report the path in its warning message, so add our own to aid in diagnosis.
-               trigger_error( sprintf( "%s: failed to mkdir \"%s\" mode 0%o", __FUNCTION__, $dir, $mode ),
-                       E_USER_WARNING );
+               wfLogWarning( sprintf( "failed to mkdir \"%s\" mode 0%o", $dir, $mode ) );
        }
        return $ok;
 }
@@ -3607,15 +3619,22 @@ function wfGetNull() {
  *
  * @param $maxLag Integer (deprecated)
  * @param $wiki mixed Wiki identifier accepted by wfGetLB
+ * @param $cluster string cluster name accepted by LBFactory
  */
-function wfWaitForSlaves( $maxLag = false, $wiki = false ) {
-       $lb = wfGetLB( $wiki );
+function wfWaitForSlaves( $maxLag = false, $wiki = false, $cluster = false ) {
+       $lb = ( $cluster !== false )
+               ? wfGetLBFactory()->getExternalLB( $cluster )
+               : wfGetLB( $wiki );
        // bug 27975 - Don't try to wait for slaves if there are none
        // Prevents permission error when getting master position
        if ( $lb->getServerCount() > 1 ) {
                $dbw = $lb->getConnection( DB_MASTER, array(), $wiki );
                $pos = $dbw->getMasterPos();
-               $lb->waitForAll( $pos );
+               // The DBMS may not support getMasterPos() or the whole
+               // load balancer might be fake (e.g. $wgAllDBsAreLocalhost).
+               if ( $pos !== false ) {
+                       $lb->waitForAll( $pos );
+               }
        }
 }
 
index e3ffb19..740abf7 100644 (file)
@@ -168,6 +168,7 @@ class Hooks {
                         */
                        if ( is_array( $hook ) ) {
                                if ( count( $hook ) < 1 ) {
+                                       wfProfileOut( 'hook: ' . $event );
                                        throw new MWException( 'Empty array in hooks for ' . $event . "\n" );
                                } elseif ( is_object( $hook[0] ) ) {
                                        $object = $hook[0];
@@ -195,6 +196,7 @@ class Hooks {
                                                $have_data = true;
                                        }
                                } else {
+                                       wfProfileOut( 'hook: ' . $event );
                                        throw new MWException( 'Unknown datatype in hooks for ' . $event . "\n" );
                                }
                        } elseif ( is_string( $hook ) ) { # functions look like strings, too
@@ -207,6 +209,7 @@ class Hooks {
                                        $method = "on" . $event;
                                }
                        } else {
+                               wfProfileOut( 'hook: ' . $event );
                                throw new MWException( 'Unknown datatype in hooks for ' . $event . "\n" );
                        }
 
@@ -276,11 +279,13 @@ class Hooks {
                                        $prettyFunc = strval( $callback );
                                }
                                if ( $badhookmsg ) {
+                                       wfProfileOut( 'hook: ' . $event );
                                        throw new MWException(
                                                'Detected bug in an extension! ' .
                                                "Hook $prettyFunc has invalid call signature; " . $badhookmsg
                                        );
                                } else {
+                                       wfProfileOut( 'hook: ' . $event );
                                        throw new MWException(
                                                'Detected bug in an extension! ' .
                                                "Hook $prettyFunc failed to return a value; " .
index 7b66924..41c7cb9 100644 (file)
@@ -309,6 +309,7 @@ class MagicWord {
                $wgContLang->getMagic( $this );
                if ( !$this->mSynonyms ) {
                        $this->mSynonyms = array( 'dkjsagfjsgashfajsh' );
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( "Error: invalid magic word '$id'" );
                        #wfDebugLog( 'exception', "Error: invalid magic word '$id'\n" );
                }
index 56dba05..8edf60a 100644 (file)
@@ -546,18 +546,6 @@ class Preferences {
                                'section' => 'rendering/skin',
                        );
                }
-
-               $selectedSkin = $user->getOption( 'skin' );
-               if ( in_array( $selectedSkin, array( 'cologneblue', 'standard' ) ) ) {
-                       $settings = array_flip( $context->getLanguage()->getQuickbarSettings() );
-
-                       $defaultPreferences['quickbar'] = array(
-                               'type' => 'radio',
-                               'options' => $settings,
-                               'section' => 'rendering/skin',
-                               'label-message' => 'qbsettings',
-                       );
-               }
        }
 
        /**
index 18cd94e..3ea5da4 100644 (file)
@@ -1278,6 +1278,7 @@ class Revision implements IDBAccessObject {
                        // Store and get the URL
                        $data = ExternalStore::insertToDefault( $data );
                        if( !$data ) {
+                               wfProfileOut( __METHOD__ );
                                throw new MWException( "Unable to store text to external storage" );
                        }
                        if( $flags ) {
@@ -1334,6 +1335,7 @@ class Revision implements IDBAccessObject {
                        $title = $this->getTitle();
 
                        if ( $title === null ) {
+                               wfProfileOut( __METHOD__ );
                                throw new MWException( "Insufficient information to determine the title of the revision's page!" );
                        }
 
index b17abc2..9d657f7 100644 (file)
@@ -36,46 +36,6 @@ class SkinLegacy extends SkinTemplate {
        public function commonPrintStylesheet() {
                return true;
        }
-
-       /**
-        * This was for the old skins and for users with 640x480 screen.
-        * Please note old skins are still used and might prove useful for
-        * users having old computers or visually impaired.
-        */
-       var $mSuppressQuickbar = false;
-
-       /**
-        * Suppress the quickbar from the output, only for skin supporting
-        * the quickbar
-        */
-       public function suppressQuickbar() {
-               $this->mSuppressQuickbar = true;
-       }
-
-       /**
-        * Return whether the quickbar should be suppressed from the output
-        *
-        * @return Boolean
-        */
-       public function isQuickbarSuppressed() {
-               return $this->mSuppressQuickbar;
-       }
-
-       function qbSetting() {
-               global $wgUser;
-               if ( $this->isQuickbarSuppressed() ) {
-                       return 0;
-               }
-               $q = $wgUser->getOption( 'quickbar', 0 );
-               if( $q == 5 ) {
-                       # 5 is the default, which chooses the setting
-                       # depending on the directionality of your interface language
-                       global $wgLang;
-                       return $wgLang->isRTL() ? 2 : 1;
-               }
-               return $q;
-       }
-
 }
 
 class LegacyTemplate extends BaseTemplate {
index f5e4acf..1ad643a 100644 (file)
@@ -42,6 +42,7 @@ class StreamFile {
                wfProfileIn( __METHOD__ );
 
                if ( FileBackend::isStoragePath( $fname ) ) { // sanity
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( __FUNCTION__ . " given storage path '$fname'." );
                }
 
index f0a3574..5b26d45 100644 (file)
@@ -122,6 +122,7 @@ class StubObject {
                        wfProfileIn( $fname );
                        $caller = wfGetCaller( $level );
                        if ( ++$recursionLevel > 2 ) {
+                               wfProfileOut( $fname );
                                throw new MWException( "Unstub loop detected on call of \${$this->mGlobal}->$name from $caller\n" );
                        }
                        wfDebug( "Unstubbing \${$this->mGlobal} on call of \${$this->mGlobal}::$name from $caller\n" );
index a40e444..aa8fb93 100644 (file)
@@ -575,10 +575,12 @@ class Title {
         */
        public function isLocal() {
                if ( $this->mInterwiki != '' ) {
-                       return Interwiki::fetch( $this->mInterwiki )->isLocal();
-               } else {
-                       return true;
+                       $iw = Interwiki::fetch( $this->mInterwiki );
+                       if ( $iw ) {
+                               return $iw->isLocal();
+                       }
                }
+               return true;
        }
 
        /**
@@ -1325,8 +1327,8 @@ class Title {
        }
 
        /**
-        * Helper to fix up the get{Local,Full,Link,Canonical}URL args
-        * get{Canonical,Full,Link,Local}URL methods accepted an optional
+        * Helper to fix up the get{Canonical,Full,Link,Local,Internal}URL args
+        * get{Canonical,Full,Link,Local,Internal}URL methods accepted an optional
         * second argument named variant. This was deprecated in favor
         * of passing an array of option with a "variant" key
         * Once $query2 is removed for good, this helper can be dropped
@@ -1339,7 +1341,9 @@ class Title {
         */
        private static function fixUrlQueryArgs( $query, $query2 = false ) {
                if( $query2 !== false ) {
-                       wfDeprecated( "Title::get{Canonical,Full,Link,Local} method called with a second parameter is deprecated. Add your parameter to an array passed as the first parameter.", "1.19" );
+                       wfDeprecated( "Title::get{Canonical,Full,Link,Local,Internal}URL " .
+                               "method called with a second parameter is deprecated. Add your " .
+                               "parameter to an array passed as the first parameter.", "1.19" );
                }
                if ( is_array( $query ) ) {
                        $query = wfArrayToCgi( $query );
@@ -1397,7 +1401,6 @@ class Title {
         * Get a URL with no fragment or server name.  If this page is generated
         * with action=render, $wgServer is prepended.
         *
-
         * @param string|array $query an optional query string,
         *   not used for interwiki links. Can be specified as an associative array as well,
         *   e.g., array( 'action' => 'edit' ) (keys and values will be URL-escaped).
index c5dcfc3..2eb8429 100644 (file)
@@ -605,6 +605,7 @@ class EmailNotification {
 
                wfRunHooks( 'UpdateUserMailerFormattedPageStatus', array( &$formattedPageStatus ) );
                if ( !in_array( $this->pageStatus, $formattedPageStatus ) ) {
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( 'Not a valid page status!' );
                }
 
index f4d2e23..c016b18 100644 (file)
@@ -1161,7 +1161,6 @@ class WikiPage implements Page, IDBAccessObject {
 
                // Invalidate the cache
                $this->mTitle->invalidateCache();
-               $this->clear();
 
                if ( $wgUseSquid ) {
                        // Commit the transaction before the purge is sent
@@ -1482,6 +1481,7 @@ class WikiPage implements Page, IDBAccessObject {
                        $newContent = $sectionContent;
                } else {
                        if ( !$this->supportsSections() ) {
+                               wfProfileOut( __METHOD__ );
                                throw new MWException( "sections not supported for content model " . $this->getContentHandler()->getModelID() );
                        }
 
@@ -1747,6 +1747,7 @@ class WikiPage implements Page, IDBAccessObject {
 
                        if ( $changed ) {
                                if ( !$content->isValid() ) {
+                                       wfProfileOut( __METHOD__ );
                                        throw new MWException( "New content failed validity check!" );
                                }
 
index be913cf..f386a8a 100644 (file)
@@ -1165,7 +1165,7 @@ abstract class ApiBase extends ContextSource {
        /**
         * Validate and normalize of parameters of type 'user'
         * @param string $value Parameter value
-        * @param string $encParamName Parameter value
+        * @param string $encParamName Parameter name
         * @return string Validated and normalized parameter
         */
        private function validateUser( $value, $encParamName ) {
index a521346..278ea29 100644 (file)
@@ -52,6 +52,10 @@ class ApiCreateAccount extends ApiBase {
                        $this->dieUsageMsg( 'noemail' );
                }
 
+               if ( $params['language'] && !Language::isSupportedLanguage( $params['language'] ) ) {
+                       $this->dieUsage( 'Invalid language parameter', 'langinvalid' );
+               }
+
                $context = new DerivativeContext( $this->getContext() );
                $context->setRequest( new DerivativeRequest(
                        $this->getContext()->getRequest(),
@@ -78,12 +82,10 @@ class ApiCreateAccount extends ApiBase {
                $result = array();
                if( $status->isGood() ) {
                        // Success!
+                       global $wgEmailAuthentication;
                        $user = $status->getValue();
 
-                       // If we showed up language selection links, and one was in use, be
-                       // smart (and sensible) and save that language as the user's preference
-                       global $wgLoginLanguageSelector, $wgEmailAuthentication;
-                       if( $wgLoginLanguageSelector && $params['language'] ) {
+                       if( $params['language'] ) {
                                $user->setOption( 'language', $params['language'] );
                        }
 
@@ -273,6 +275,10 @@ class ApiCreateAccount extends ApiBase {
                        'code' => 'aborted',
                        'info' => 'Account creation aborted by hook (info may vary)'
                );
+               $errors[] = array(
+                       'code' => 'langinvalid',
+                       'info' => 'Invalid language parameter'
+               );
 
                // 'passwordtooshort' has parameters. :(
                global $wgMinimalPasswordLength;
index db82805..e4642dd 100644 (file)
@@ -196,7 +196,7 @@ class ApiImageRotate extends ApiBase {
 
        public function getParamDescription() {
                $pageSet = $this->getPageSet();
-               return $pageSet->getParamDescription() + array(
+               return $pageSet->getFinalParamDescription() + array(
                        'rotation' => 'Degrees to rotate image clockwise',
                        'token' => 'Edit token. You can get one of these through action=tokens',
                );
index 134f4a0..49cc738 100644 (file)
@@ -158,7 +158,7 @@ class ApiPurge extends ApiBase {
        }
 
        public function getParamDescription() {
-               return $this->getPageSet()->getParamDescription()
+               return $this->getPageSet()->getFinalParamDescription()
                        + array( 'forcelinkupdate' => 'Update the links tables' );
        }
 
index 02c1b27..4d9a772 100644 (file)
@@ -696,7 +696,7 @@ class ApiQuery extends ApiBase {
        }
 
        public function getParamDescription() {
-               return $this->getPageSet()->getParamDescription() + array(
+               return $this->getPageSet()->getFinalParamDescription() + array(
                        'prop' => 'Which properties to get for the titles/revisions/pageids. Module help is available below',
                        'list' => 'Which lists to get. Module help is available below',
                        'meta' => 'Which metadata to get about the site. Module help is available below',
index 58d5d9a..cae9673 100644 (file)
@@ -212,7 +212,7 @@ class ApiSetNotificationTimestamp extends ApiBase {
        }
 
        public function getParamDescription() {
-               return $this->getPageSet()->getParamDescription() + array(
+               return $this->getPageSet()->getFinalParamDescription() + array(
                        'entirewatchlist' => 'Work on all watched pages',
                        'timestamp' => 'Timestamp to which to set the notification timestamp',
                        'torevid' => 'Revision to set the notification timestamp to (one page only)',
index 2de7b48..d093b58 100644 (file)
@@ -354,7 +354,6 @@ class LocalisationCache {
         * @param $code
         * @param $key
         * @param $subkey
-        * @return
         */
        protected function loadSubitem( $code, $key, $subkey ) {
                if ( !in_array( $key, self::$splitKeys ) ) {
@@ -384,6 +383,9 @@ class LocalisationCache {
 
        /**
         * Returns true if the cache identified by $code is missing or expired.
+        *
+        * @param string $code
+        *
         * @return bool
         */
        public function isExpired( $code ) {
@@ -494,6 +496,7 @@ class LocalisationCache {
         * @return array
         */
        protected function readPHPFile( $_fileName, $_fileType ) {
+               wfProfileIn( __METHOD__ );
                // Disable APC caching
                $_apcEnabled = ini_set( 'apc.cache_by_default', '0' );
                include( $_fileName );
@@ -504,8 +507,10 @@ class LocalisationCache {
                } elseif ( $_fileType == 'aliases' ) {
                        $data = compact( 'aliases' );
                } else {
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( __METHOD__ . ": Invalid file type: $_fileType" );
                }
+               wfProfileOut( __METHOD__ );
                return $data;
        }
 
@@ -606,9 +611,11 @@ class LocalisationCache {
         */
        protected function readSourceFilesAndRegisterDeps( $code, &$deps ) {
                global $IP;
+               wfProfileIn( __METHOD__ );
 
                $fileName = Language::getMessagesFileName( $code );
                if ( !file_exists( $fileName ) ) {
+                       wfProfileOut( __METHOD__ );
                        return false;
                }
 
@@ -625,6 +632,7 @@ class LocalisationCache {
                $deps['plurals'] = new FileDependency( "$IP/languages/data/plurals.xml" );
                $deps['plurals-mw'] = new FileDependency( "$IP/languages/data/plurals-mediawiki.xml" );
 
+               wfProfileOut( __METHOD__ );
                return $data;
        }
 
@@ -715,6 +723,7 @@ class LocalisationCache {
                wfProfileIn( __METHOD__ );
 
                if ( !$code ) {
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( "Invalid language code requested" );
                }
                $this->recachedLangs[$code] = true;
@@ -783,6 +792,7 @@ class LocalisationCache {
                # This is done after the core because we know the fallback sequence now.
                # But it has a higher precedence for merging so that we can support things
                # like site-specific message overrides.
+               wfProfileIn( __METHOD__ . '-extensions' );
                $allData = $initialData;
                foreach ( $wgExtensionMessagesFiles as $fileName ) {
                        $data = $this->readPHPFile( $fileName, 'extension' );
@@ -803,6 +813,7 @@ class LocalisationCache {
                foreach ( $coreData as $key => $item ) {
                        $this->mergeItem( $key, $allData[$key], $item );
                }
+               wfProfileOut( __METHOD__ . '-extensions' );
 
                # Add cache dependencies for any referenced globals
                $deps['wgExtensionMessagesFiles'] = new GlobalDependency( 'wgExtensionMessagesFiles' );
@@ -842,6 +853,7 @@ class LocalisationCache {
                wfRunHooks( 'LocalisationCacheRecache', array( $this, $code, &$allData ) );
 
                if ( is_null( $allData['namespaceNames'] ) ) {
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( __METHOD__ . ': Localisation data failed sanity check! ' .
                                'Check that your languages/messages/MessagesEn.php file is intact.' );
                }
@@ -856,6 +868,7 @@ class LocalisationCache {
                }
 
                # Save to the persistent cache
+               wfProfileIn( __METHOD__ . '-write' );
                $this->store->startWrite( $code );
                foreach ( $allData as $key => $value ) {
                        if ( in_array( $key, self::$splitKeys ) ) {
@@ -867,6 +880,7 @@ class LocalisationCache {
                        }
                }
                $this->store->finishWrite();
+               wfProfileOut( __METHOD__ . '-write' );
 
                # Clear out the MessageBlobStore
                # HACK: If using a null (i.e. disabled) storage backend, we
@@ -967,7 +981,7 @@ interface LCStore {
 
        /**
         * Start a write transaction.
-        * @param $code Language code
+        * @param string $code Language code
         */
        function startWrite( $code );
 
@@ -979,8 +993,8 @@ interface LCStore {
        /**
         * Set a key to a given value. startWrite() must be called before this
         * is called, and finishWrite() must be called afterwards.
-        * @param $key
-        * @param $value
+        * @param string $key
+        * @param mixed $value
         */
        function set( $key, $value );
 }
index 6231a61..6cd167c 100644 (file)
@@ -369,8 +369,10 @@ class MessageCache {
                        // effects like gadgets and sidebar getting cached with their
                        // default content
                        if ( $exception instanceof Exception ) {
+                               wfProfileOut( __METHOD__ );
                                throw $exception;
                        } else {
+                               wfProfileOut( __METHOD__ );
                                throw new MWException( "MessageCache failed to load messages" );
                        }
                } else {
index 69f0bf7..5f5d257 100644 (file)
@@ -190,6 +190,7 @@ class SquidUpdate {
                        $urlArr = array_unique( $urlArr ); // Remove duplicates
                        foreach ( $urlArr as $url ) {
                                if( !is_string( $url ) ) {
+                                       wfProfileOut( __METHOD__ );
                                        throw new MWException( 'Bad purge URL' );
                                }
                                $url = SquidUpdate::expand( $url );
@@ -199,6 +200,7 @@ class SquidUpdate {
                                        continue;
                                }
                                if ( !isset( $conf['host'] ) || !isset( $conf['port'] ) ) {
+                                       wfProfileOut( __METHOD__ );
                                        throw new MWException( "Invalid HTCP rule for URL $url\n" );
                                }
 
index 8be4eba..580ec75 100644 (file)
@@ -62,6 +62,7 @@ class WikitextContent extends TextContent {
                $sectionModelId = $with->getModel();
 
                if ( $sectionModelId != $myModelId  ) {
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( "Incompatible content model for section: " .
                                "document uses $myModelId but " .
                                "section uses $sectionModelId." );
index 7392f96..9db2ada 100644 (file)
@@ -945,6 +945,10 @@ abstract class DatabaseBase implements DatabaseType {
                }
 
                if ( istainted( $sql ) & TC_MYSQL ) {
+                       if ( !Profiler::instance()->isStub() ) {
+                               wfProfileOut( $queryProf );
+                               wfProfileOut( $totalProf );
+                       }
                        throw new MWException( 'Tainted query found' );
                }
 
index 0f7eb9e..d6f6809 100644 (file)
@@ -68,6 +68,7 @@ class DatabaseMysql extends DatabaseBase {
                # Fail now
                # Otherwise we get a suppressed fatal error, which is very hard to track down
                if ( !function_exists( 'mysql_connect' ) ) {
+                       wfProfileOut( __METHOD__ );
                        throw new DBConnectionError( $this, "MySQL functions missing, have you compiled PHP with the --with-mysql option?\n" );
                }
 
index 187870f..e2434a0 100644 (file)
@@ -219,6 +219,7 @@ class LoadBalancer {
                }
 
                if ( !$nonErrorLoads ) {
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( "Empty server array given to LoadBalancer" );
                }
 
@@ -348,7 +349,7 @@ class LoadBalancer {
         * Set the master wait position
         * If a DB_SLAVE connection has been opened already, waits
         * Otherwise sets a variable telling it to wait if such a connection is opened
-        * @param $pos int
+        * @param $pos DBMasterPos
         */
        public function waitFor( $pos ) {
                wfProfileIn( __METHOD__ );
@@ -366,7 +367,7 @@ class LoadBalancer {
 
        /**
         * Set the master wait position and wait for ALL slaves to catch up to it
-        * @param $pos int
+        * @param $pos DBMasterPos
         */
        public function waitForAll( $pos ) {
                wfProfileIn( __METHOD__ );
@@ -399,7 +400,7 @@ class LoadBalancer {
         * @param $open bool
         * @return bool
         */
-       function doWait( $index, $open = false ) {
+       protected function doWait( $index, $open = false ) {
                # Find a connection to wait on
                $conn = $this->getAnyOpenConnection( $index );
                if ( !$conn ) {
@@ -443,8 +444,10 @@ class LoadBalancer {
                wfProfileIn( __METHOD__ );
 
                if ( $i == DB_LAST ) {
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( 'Attempt to call ' . __METHOD__ . ' with deprecated server index DB_LAST' );
                } elseif ( $i === null || $i === false ) {
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( 'Attempt to call ' . __METHOD__ . ' with invalid server index' );
                }
 
index 8c39e1a..582b3ac 100644 (file)
@@ -135,10 +135,24 @@ class MWDebug {
         * @since 1.19
         * @param $msg string
         * @param $callerOffset int
-        * @param int $level A PHP error level. See sendWarning()
+        * @param $level int A PHP error level. See sendWarning()
+        * @param $log string: 'production' will always trigger a php error, 'auto'
+        *        will trigger an error if $wgDevelopmentWarnings is true, and 'debug'
+        *        will only write to the debug log(s).
+        *
         * @return mixed
         */
-       public static function warning( $msg, $callerOffset = 1, $level = E_USER_NOTICE ) {
+       public static function warning( $msg, $callerOffset = 1, $level = E_USER_NOTICE, $log = 'auto' ) {
+               global $wgDevelopmentWarnings;
+
+               if ( $log === 'auto' && !$wgDevelopmentWarnings ) {
+                       $log = 'debug';
+               }
+
+               if ( $log === 'debug' ) {
+                       $level = false;
+               }
+
                $callerDescription = self::getCallerDescription( $callerOffset );
 
                self::sendWarning( $msg, $callerDescription, $level );
@@ -212,7 +226,8 @@ class MWDebug {
                }
 
                if ( $sendToLog ) {
-                       self::sendWarning( $msg, $callerDescription, E_USER_DEPRECATED );
+                       global $wgDevelopmentWarnings; // we could have a more specific $wgDeprecationWarnings setting.
+                       self::sendWarning( $msg, $callerDescription, $wgDevelopmentWarnings ? E_USER_DEPRECATED : false );
                }
 
                if ( self::$enabled ) {
@@ -267,23 +282,21 @@ class MWDebug {
        }
 
        /**
-        * Send a warning either to the debug log or by triggering an user PHP
-        * error depending on $wgDevelopmentWarnings.
+        * Send a warning to the debug log and optionally also trigger a PHP
+        * error, depending on the $level argument.
         *
-        * @param string $msg Message to send
-        * @param array $caller caller description get from getCallerDescription()
-        * @param $level error level to use if $wgDevelopmentWarnings is true
+        * @param $msg string Message to send
+        * @param $caller array caller description get from getCallerDescription()
+        * @param $level int|bool error level to use; set to false to not trigger an error
         */
        private static function sendWarning( $msg, $caller, $level ) {
-               global $wgDevelopmentWarnings;
-
                $msg .= ' [Called from ' . $caller['func'] . ' in ' . $caller['file'] . ']';
 
-               if ( $wgDevelopmentWarnings ) {
+               if ( $level !== false ) {
                        trigger_error( $msg, $level );
-               } else {
-                       wfDebug( "$msg\n" );
                }
+
+               wfDebug( "$msg\n" );
        }
 
        /**
index d44c050..d03a5be 100644 (file)
@@ -279,11 +279,6 @@ class DifferenceEngine extends ContextSource {
                } else {
                        wfRunHooks( 'DiffViewHeader', array( $this, $this->mOldRev, $this->mNewRev ) );
 
-                       $sk = $this->getSkin();
-                       if ( method_exists( $sk, 'suppressQuickbar' ) ) {
-                               $sk->suppressQuickbar();
-                       }
-
                        if ( $this->mNewPage->equals( $this->mOldPage ) ) {
                                $out->setPageTitle( $this->msg( 'difference-title', $this->mNewPage->getPrefixedText() ) );
                                $samePage = true;
index 1356ebe..18a59fa 100644 (file)
@@ -1252,8 +1252,12 @@ abstract class FileBackendStore extends FileBackend {
                wfProfileIn( __METHOD__ . '-' . $this->name );
                foreach ( $fileOpHandles as $fileOpHandle ) {
                        if ( !( $fileOpHandle instanceof FileBackendStoreOpHandle ) ) {
+                               wfProfileOut( __METHOD__ . '-' . $this->name );
+                               wfProfileOut( __METHOD__ );
                                throw new MWException( "Given a non-FileBackendStoreOpHandle object." );
                        } elseif ( $fileOpHandle->backend->getName() !== $this->getName() ) {
+                               wfProfileOut( __METHOD__ . '-' . $this->name );
+                               wfProfileOut( __METHOD__ );
                                throw new MWException( "Given a FileBackendStoreOpHandle for the wrong backend." );
                        }
                }
index 6ff898e..f8887cc 100644 (file)
@@ -382,6 +382,7 @@ class LocalFile extends File {
                                $this->$name = $value;
                        }
                } else {
+                       wfProfileOut( $fname );
                        throw new MWException( "Could not find data for image '{$this->getName()}'." );
                }
 
index 5c50592..2e86ae1 100644 (file)
@@ -218,6 +218,7 @@ class OldLocalFile extends LocalFile {
                                $this->$name = $value;
                        }
                } else {
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( "Could not find data for image '{$this->archive_name}'." );
                }
 
index 0e1bac8..cd6d508 100644 (file)
@@ -4306,7 +4306,7 @@ Hernach kann diese Option aktiviert werden.',
        'config-upload-deleted-help' => 'Bitte ein Verzeichnis auswählen, in dem gelöschte Dateien archiviert werden sollen.
 Idealerweise sollte es nicht über das Internet zugänglich sein.',
        'config-logo' => 'URL des Logos:',
-       'config-logo-help' => 'Die Standardoberfläche von MediaWiki verfügt links oberhalb der Seitenleiste über Platz für eine Logo mit den Maßen 135x160 Pixel.
+       'config-logo-help' => 'Die Standardoberfläche von MediaWiki verfügt links oberhalb der Seitenleiste über Platz für ein Logo mit den Maßen 135x160 Pixel.
 Bitte ein Logo in entsprechender Größe hochladen und die zugehörige URL an dieser Stelle angeben.
 
 Du kannst $wgStylePath oder $wgScriptPath verwenden, falls dein Logo relativ zu diesen Pfaden ist.
@@ -6375,18 +6375,18 @@ Portant, MediaWiki at fôta de PHP $2 ou ben ples hôt.',
 );
 
 /** Northern Frisian (Nordfriisk)
+ * @author Murma174
  * @author Pyt
  */
 $messages['frr'] = array(
        'mainpagetext' => "'''MediaWiki wörd ma erfolch instaliird.'''",
-       'mainpagedocfooter' => 'Heelp tu jü benjüting än konfigurasjoon foon e Wiki-software fanst dü önj dåt [//meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuch].
-
-
-== Startheelpe ==
+       'mainpagedocfooter' => "Consult the [//meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.
 
-* [//www.mediawiki.org/wiki/Manual:Configuration_settings Liste der Konfigurationsvariablen]
-* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
+== Getting started ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]
+* [//www.mediawiki.org/wiki/Localisation#Translation_resources Localise MediaWiki for your language]",
 );
 
 /** Friulian (furlan)
@@ -6919,7 +6919,9 @@ O ideal é que non sexa accesible desde a web.',
        'config-logo-help' => 'A aparencia de MediaWiki por defecto inclúe espazo para un logo de 135x160 píxeles por riba do menú lateral.
 Cargue unha imaxe do tamaño axeitado e introduza o enderezo URL aquí.
 
-Se non quere un logo, deixe esta caixa en branco.', # Fuzzy
+Pode utilizar $wgStylePath ou $wgScriptPath se o seu logo está relacionado con esas rutas.
+
+Se non quere un logo, deixe esta caixa en branco.',
        'config-instantcommons' => 'Activar Instant Commons',
        'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons InstantCommons] é unha característica que permite aos wikis usar imaxes, sons e outros ficheiros multimedia atopados no sitio da [//commons.wikimedia.org/wiki/Portada_galega Wikimedia Commons].
 Para facer isto, MediaWiki necesita acceso á internet.
@@ -12203,7 +12205,7 @@ Dir kënnt elo déi Astellungen déi nach iwwreg sinn iwwersprangen an d'Wiki el
        'config-optional-continue' => 'Stellt mir méi Froen.',
        'config-optional-skip' => "Ech hunn es genuch, installéier just d'Wiki.",
        'config-profile' => 'Profil vun de Benotzerrechter:',
-       'config-profile-wiki' => 'Traditionell Wiki', # Fuzzy
+       'config-profile-wiki' => 'Oppe Wiki',
        'config-profile-no-anon' => 'Uleeë vun engem Benotzerkont verlaangt',
        'config-profile-fishbowl' => 'Nëmmen autoriséiert Editeuren',
        'config-profile-private' => 'Privat Wiki',
@@ -14246,9 +14248,9 @@ Als u het databasesysteem dat u wilt gebruiken niet in de lijst terugvindt, volg
        'config-header-sqlite' => 'SQLite-instellingen',
        'config-header-oracle' => 'Oracle-instellingen',
        'config-invalid-db-type' => 'Ongeldig databasetype',
-       'config-missing-db-name' => 'U moet een waarde ingeven voor "Databasenaam"',
+       'config-missing-db-name' => 'U moet een waarde opgeven voor "Databasenaam"',
        'config-missing-db-host' => 'U moet een waarde invoeren voor "Databaseserver"',
-       'config-missing-db-server-oracle' => 'U moet een waarde voor "Database-TNS" ingeven',
+       'config-missing-db-server-oracle' => 'U moet een waarde opgeven voor "Database-TNS"',
        'config-invalid-db-server-oracle' => 'Ongeldige database-TMS "$1".
 Gebruik alleen letters (a-z, A-Z), cijfers (0-9) en liggende streepjes (_).',
        'config-invalid-db-name' => 'Ongeldige databasenaam "$1".
@@ -14348,11 +14350,11 @@ Het is dat niet mogelijk tekens op te slaan die de \"[//nl.wikipedia.org/wiki/Li
        'config-ns-other' => 'Andere (geef aan welke)',
        'config-ns-other-default' => 'MijnWiki',
        'config-project-namespace-help' => "In het kielzog van Wikipedia beheren veel wiki's hun beleidspagina's apart van hun inhoudelijke pagina's in een \"'''projectnaamruimte'''\".
-Alle paginanamen in deze naamruimte beginnen met een bepaald voorvoegsel dat u hier kunt aangeven.
+Alle paginanamen in deze naamruimte beginnen met een bepaald voorvoegsel dat u hier kunt opgeven.
 Dit voorvoegsel wordt meestal afgeleid van de naam van de wiki, maar het kan geen bijzondere tekens bevatten als \"#\" of \":\".",
-       'config-ns-invalid' => 'De aangegeven naamruimte "<nowiki>$1</nowiki>" is ongeldig.
+       'config-ns-invalid' => 'De opgegeven naamruimte "<nowiki>$1</nowiki>" is ongeldig.
 Geef een andere naamruimte op.',
-       'config-ns-conflict' => 'De aangegeven naamruimte "<nowiki>$1</nowiki>" conflicteert met een standaard naamruimte in MediaWiki.
+       'config-ns-conflict' => 'De opgegeven naamruimte "<nowiki>$1</nowiki>" conflicteert met een standaard naamruimte in MediaWiki.
 Geef een andere naam op voor de projectnaamruimte.',
        'config-admin-box' => 'Beheerdersgebruiker',
        'config-admin-name' => 'Uw naam:',
@@ -14457,7 +14459,7 @@ Meer informatie over deze functie en hoe deze in te stellen voor andere wiki\'s
        'config-cc-error' => 'De licentiekiezer van Creative Commons heeft geen resultaat opgeleverd.
 Voer de licentie handmatig in.',
        'config-cc-again' => 'Opnieuw kiezen...',
-       'config-cc-not-chosen' => 'Kies alstublieft de Creative Commonslicentie die u wilt gebruiken en klik op "doorgaan".',
+       'config-cc-not-chosen' => 'Kies de Creative Commonslicentie die u wilt gebruiken en klik op "doorgaan".',
        'config-advanced-settings' => 'Gevorderde instellingen',
        'config-cache-options' => 'Instellingen voor het cachen van objecten:',
        'config-cache-help' => 'Het cachen van objecten wordt gebruikt om de snelheid van MediaWiki te verbeteren door vaak gebruikte gegevens te bewaren.
@@ -14482,7 +14484,7 @@ De standaardpoort is 11211.',
 
 Mogelijk moet u aanvullende instellingen maken, maar u kunt deze uitbreidingen nu inschakelen.',
        'config-install-alreadydone' => "'''Waarschuwing:''' het lijkt alsof u MediaWiki al hebt geïnstalleerd en probeert het programma opnieuw te installeren.
-Ga alstublieft door naar de volgende pagina.",
+Ga door naar de volgende pagina.",
        'config-install-begin' => 'Als u nu op "{{int:config-continue}}" klikt, begint de installatie van MediaWiki.
 Als u nog wijzigingen wilt maken, klik dan op "{{int:config-back}}".',
        'config-install-step-done' => 'afgerond',
@@ -14677,9 +14679,9 @@ Overweeg om de database op een totaal andere plaats neer te zetten, bijvoorbeeld
 $1
 
 Als je het databasesysteem dat je wilt gebruiken niet in de lijst terugvindt, volg dan de handleiding waarnaar hierboven wordt verwezen om ondersteuning toe te voegen.',
-       'config-missing-db-name' => 'Je moet een waarde ingeven voor "Databasenaam"',
+       'config-missing-db-name' => 'Je moet een waarde opgeven voor "Databasenaam"',
        'config-missing-db-host' => 'Je moet een waarde invoeren voor "Databaseserver"',
-       'config-missing-db-server-oracle' => 'Je moet een waarde voor "Database-TNS" ingeven',
+       'config-missing-db-server-oracle' => 'Je moet een waarde opgeven voor "Database-TNS"',
        'config-postgres-old' => 'PostgreSQL $1 of hoger is vereist.
 Jij gebruikt $2.',
        'config-sqlite-name-help' => 'Kies een naam die je wiki identificeert.
@@ -14708,9 +14710,8 @@ Dit is efficiënter dan de UTF-8-modus van MySQL en stelt je in staat de volledi
 
 In '''UTF-8-modus''' kent MySQL de tekenset van je gegevens en kan de databaseserver ze juist weergeven en converteren.
 Het is dat niet mogelijk tekens op te slaan die de \"[//nl.wikipedia.org/wiki/Lijst_van_Unicode-subbereiken#Basic_Multilingual_Plane Basic Multilingual Plane]\" te boven gaan.",
-       'config-ibm_db2-low-db-pagesize' => "Je DB2-database heeft een standaard tablespace met een onvoldoende grote pagesize. De pagesize moet tenminste '''32K''' zijn.",
        'config-project-namespace-help' => "In het kielzog van Wikipedia beheren veel wiki's hun beleidspagina's apart van hun inhoudelijke pagina's in een \"'''projectnaamruimte'''\".
-Alle paginanamen in deze naamruimte beginnen met een bepaald voorvoegsel dat je hier kunt aangeven.
+Alle paginanamen in deze naamruimte beginnen met een bepaald voorvoegsel dat je hier kunt opgeven.
 Dit voorvoegsel wordt meestal afgeleid van de naam van de wiki, maar het kan geen bijzondere tekens bevatten als \"#\" of \":\".",
        'config-admin-name' => 'Je naam:',
        'config-admin-password-mismatch' => 'De twee door jou ingevoerde wachtwoorden komen niet overeen.',
@@ -14754,8 +14755,8 @@ Daarmee wordt deze functie ingeschakeld.",
        'config-logo-help' => 'Het standaarduiterlijk van MediaWiki bevat ruimte voor een logo van 135x160 pixels boven het menu.
 Upload een afbeelding met de juiste afmetingen en voer de URL hier in.
 
-Als je geen logo wilt gebruiken, kan je dit veld leeg laten.',
-       'config-cc-not-chosen' => 'Kies alsjeblieft de Creative Commonslicentie die je wilt gebruiken en klik op "doorgaan".',
+Als je geen logo wilt gebruiken, kan je dit veld leeg laten.', # Fuzzy
+       'config-cc-not-chosen' => 'Kies de Creative Commonslicentie die je wilt gebruiken en klik op "doorgaan".',
        'config-memcache-needservers' => 'Je hebt Memcached geselecteerd als je cache, maar je hebt geen servers opgegeven.',
        'config-memcache-badip' => 'Je hebt een ongeldig IP-adres ingevoerd voor Memcached: $1.',
        'config-memcache-noport' => 'Je hebt geen poort opgegeven voor de Memcachedserver: $1.
@@ -14764,7 +14765,7 @@ De standaardpoort is 11211.',
 
 Mogelijk moet je aanvullende instellingen maken, maar je kunt deze uitbreidingen nu inschakelen.',
        'config-install-alreadydone' => "'''Waarschuwing:''' het lijkt alsof je MediaWiki al hebt geïnstalleerd en probeert het programma opnieuw te installeren.
-Ga alsjeblieft door naar de volgende pagina.",
+Ga door naar de volgende pagina.",
        'config-install-begin' => 'Als je nu op "{{int:config-continue}}" klikt, begint de installatie van MediaWiki.
 Als je nog wijzigingen wilt maken, klik dan op "Terug".', # Fuzzy
        'config-pg-no-plpgsql' => 'Je moet de taal PL/pgSQL installeren in de database $1',
@@ -14934,6 +14935,7 @@ $messages['pdc'] = array(
 /** Polish (polski)
  * @author Beau
  * @author BeginaFelicysym
+ * @author Chrumps
  * @author Holek
  * @author Saper
  * @author Sp5uhe
@@ -15307,7 +15309,7 @@ Możesz pominąć pozostałe czynności konfiguracyjne i zainstalować wiki.',
        'config-optional-continue' => 'Zadaj mi więcej pytań.',
        'config-optional-skip' => 'Jestem już znudzony, po prostu zainstaluj wiki.',
        'config-profile' => 'Profil uprawnień użytkowników',
-       'config-profile-wiki' => 'Tradycyjne wiki', # Fuzzy
+       'config-profile-wiki' => 'Otwarte wiki',
        'config-profile-no-anon' => 'Wymagane utworzenie konta',
        'config-profile-fishbowl' => 'Wyłącznie zatwierdzeni edytorzy',
        'config-profile-private' => 'Prywatna wiki',
@@ -15373,7 +15375,7 @@ Najlepiej, aby nie był on dostępny z internetu.',
        'config-logo-help' => 'Domyślny motyw MediaWiki zawiera miejsce na logo wielkości 135 x 160 pikseli powyżej menu na pasku bocznym.
 Prześlij obrazek o odpowiednim rozmiarze, a następnie wpisz jego URL tutaj.
 
-Jeśli nie chcesz logo, pozostaw to pole puste.',
+Jeśli nie chcesz logo, pozostaw to pole puste.', # Fuzzy
        'config-instantcommons' => 'Włącz Instant Commons',
        'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] jest funkcją, która pozwala wiki używać obrazów, dźwięków i innych mediów znalezionych na  witrynie [//commons.wikimedia.org/ Wikimedia Commons].
 Aby to zrobić, MediaWiki wymaga dostępu do internetu.
index bdf98d5..f17a1a1 100644 (file)
@@ -56,14 +56,22 @@ class FormatJson {
        const ALL_OK = 3;
 
        /**
-        * Characters problematic in JavaScript and their corresponding escape sequences.
+        * Characters problematic in JavaScript.
         *
         * @note These are listed in ECMA-262 (5.1 Ed.), §7.3 Line Terminators along with U+000A (LF)
         *       and U+000D (CR). However, PHP already escapes LF and CR according to RFC 4627.
         */
        private static $badChars = array(
-               "\xe2\x80\xa8" => '\u2028', // LINE SEPARATOR
-               "\xe2\x80\xa9" => '\u2029', // PARAGRAPH SEPARATOR
+               "\xe2\x80\xa8", // U+2028 LINE SEPARATOR
+               "\xe2\x80\xa9", // U+2029 PARAGRAPH SEPARATOR
+       );
+
+       /**
+        * Escape sequences for characters listed in FormatJson::$badChars.
+        */
+       private static $badCharsEscaped = array(
+               '\u2028', // U+2028 LINE SEPARATOR
+               '\u2029', // U+2029 PARAGRAPH SEPARATOR
        );
 
        /**
@@ -123,7 +131,10 @@ class FormatJson {
                if ( $json === false ) {
                        return false;
                }
-               return ( $escaping & self::UTF8_OK ) ? strtr( $json, self::$badChars ) : $json;
+               if ( $escaping & self::UTF8_OK ) {
+                       $json = str_replace( self::$badChars, self::$badCharsEscaped, $json );
+               }
+               return $json;
        }
 
        /**
@@ -151,9 +162,9 @@ class FormatJson {
                        //   each double-escaped backslash (\\\\) is replaced with \\\u005c.
                        // * We strip one of the backslashes from each of the escape sequences to unescape.
                        // * Then the JSON decoder can perform the actual unescaping.
-                       $doubled = str_replace( "\\\\\\\\", "\\\\\\u005c", json_encode( $json ) );
-                       $json = json_decode( preg_replace( "/\\\\\\\\u(?!00[0-7])/", "\\\\u", $doubled ) );
-                       $json = strtr( $json, self::$badChars );
+                       $json = str_replace( "\\\\\\\\", "\\\\\\u005c", addcslashes( $json, '\"' ) );
+                       $json = json_decode( preg_replace( "/\\\\\\\\u(?!00[0-7])/", "\\\\u", "\"$json\"" ) );
+                       $json = str_replace( self::$badChars, self::$badCharsEscaped, $json );
                }
                return $pretty ? self::prettyPrint( $json ) : $json;
        }
index 661e53f..5118366 100644 (file)
@@ -34,9 +34,7 @@ $verbose = true;
 
 if( defined( 'PRETTY_UTF8' ) ) {
        function pretty( $string ) {
-               return preg_replace( '/([\x00-\xff])/e',
-                       'sprintf("%02X", ord("$1"))',
-                       $string );
+               return strtoupper( bin2hex( $string ) );
        }
 } else {
        /**
@@ -44,9 +42,7 @@ if( defined( 'PRETTY_UTF8' ) ) {
         * @return string
         */
        function pretty( $string ) {
-               return trim( preg_replace( '/(.)/use',
-                       'sprintf("%04X ", utf8ToCodepoint("$1"))',
-                       $string ) );
+               return strtoupper( utf8ToHexSequence( $string ) );
        }
 }
 
index 9b96a07..e8fec93 100644 (file)
@@ -76,9 +76,11 @@ function hexSequenceToUtf8( $sequence ) {
  * @private
  */
 function utf8ToHexSequence( $str ) {
-       return rtrim( preg_replace( '/(.)/uSe',
-                                   'sprintf("%04x ", utf8ToCodepoint("$1"))',
-                                   $str ) );
+       $buf = '';
+       foreach ( preg_split( '//u', $str, -1, PREG_SPLIT_NO_EMPTY ) as $cp ) {
+               $buf .= sprintf( '%04x ', utf8ToCodepoint( $cp ) );
+       }
+       return rtrim( $buf );
 }
 
 /**
index 5b14ad2..611eb02 100644 (file)
@@ -1533,6 +1533,7 @@ class Parser {
 
                $bits = preg_split( $this->mExtLinkBracketedRegex, $text, -1, PREG_SPLIT_DELIM_CAPTURE );
                if ( $bits === false ) {
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( "PCRE needs to be compiled with --enable-unicode-properties in order for MediaWiki to function" );
                }
                $s = array_shift( $bits );
@@ -2606,6 +2607,7 @@ class Parser {
                                }
                                break;
                        default:
+                               wfProfileOut( __METHOD__ );
                                throw new MWException( "State machine error in " . __METHOD__ );
                        }
                }
@@ -3245,6 +3247,7 @@ class Parser {
                                        $result = $this->callParserFunction( $frame, $func, $funcArgs );
                                } catch ( Exception $ex ) {
                                        wfProfileOut( __METHOD__ . '-pfunc' );
+                                       wfProfileOut( __METHOD__ );
                                        throw $ex;
                                }
 
index 78ebbbb..7cb91da 100644 (file)
@@ -169,6 +169,10 @@ class Preprocessor_DOM implements Preprocessor {
                $this->parser->mGeneratedPPNodeCount += substr_count( $xml, '<' );
                $max = $this->parser->mOptions->getMaxGeneratedPPNodeCount();
                if ( $this->parser->mGeneratedPPNodeCount > $max ) {
+                       if ( $cacheable ) {
+                               wfProfileOut( __METHOD__ . '-cacheable' );
+                       }
+                       wfProfileOut( __METHOD__ );
                        throw new MWException( __METHOD__ . ': generated node count limit exceeded' );
                }
 
@@ -183,6 +187,11 @@ class Preprocessor_DOM implements Preprocessor {
                        // 1 << 19 == XML_PARSE_HUGE, needed so newer versions of libxml2 don't barf when the XML is >256 levels deep
                        $result = $dom->loadXML( $xml, 1 << 19 );
                        if ( !$result ) {
+                               wfProfileOut( __METHOD__ . '-loadXML' );
+                               if ( $cacheable ) {
+                                       wfProfileOut( __METHOD__ . '-cacheable' );
+                               }
+                               wfProfileOut( __METHOD__ );
                                throw new MWException( __METHOD__ . ' generated invalid XML' );
                        }
                }
index 9f87ed7..469ce80 100644 (file)
@@ -591,9 +591,19 @@ class Preprocessor_Hash implements Preprocessor {
                                                                $lastNode = $node;
                                                        }
                                                        if ( !$node ) {
+                                                               if ( $cacheable ) {
+                                                                       wfProfileOut( __METHOD__ . '-cache-miss' );
+                                                                       wfProfileOut( __METHOD__ . '-cacheable' );
+                                                               }
+                                                               wfProfileOut( __METHOD__ );
                                                                throw new MWException( __METHOD__ . ': eqpos not found' );
                                                        }
                                                        if ( $node->name !== 'equals' ) {
+                                                               if ( $cacheable ) {
+                                                                       wfProfileOut( __METHOD__ . '-cache-miss' );
+                                                                       wfProfileOut( __METHOD__ . '-cacheable' );
+                                                               }
+                                                               wfProfileOut( __METHOD__ );
                                                                throw new MWException( __METHOD__ . ': eqpos is not equals' );
                                                        }
                                                        $equalsNode = $node;
index 14c75e9..9b02c6c 100644 (file)
@@ -234,6 +234,7 @@ class ResourceLoader {
                foreach ( $registrations as $name => $info ) {
                        // Disallow duplicate registrations
                        if ( isset( $this->moduleInfos[$name] ) ) {
+                               wfProfileOut( __METHOD__ );
                                // A module has already been registered by this name
                                throw new MWException(
                                        'ResourceLoader duplicate registration error. ' .
@@ -243,6 +244,7 @@ class ResourceLoader {
 
                        // Check $name for validity
                        if ( !self::isValidModuleName( $name ) ) {
+                               wfProfileOut( __METHOD__ );
                                throw new MWException( "ResourceLoader module name '$name' is invalid, see ResourceLoader::isValidModuleName()" );
                        }
 
@@ -251,6 +253,7 @@ class ResourceLoader {
                                // Old calling convention
                                // Validate the input
                                if ( !( $info instanceof ResourceLoaderModule ) ) {
+                                       wfProfileOut( __METHOD__ );
                                        throw new MWException( 'ResourceLoader invalid module error. ' .
                                                'Instances of ResourceLoaderModule expected.' );
                                }
index 380e20e..a4ab7a8 100644 (file)
@@ -257,8 +257,14 @@ class SpecialSearch extends SpecialPage {
                        $textMatches = $search->searchText( $rewritten );
                }
 
+               $textStatus = null;
+               if( $textMatches instanceof Status ) {
+                       $textStatus = $textMatches;
+                       $textMatches = null;
+               }
+
                // did you mean... suggestions
-               if( $textMatches && $textMatches->hasSuggestion() ) {
+               if( $textMatches && !$textStatus && $textMatches->hasSuggestion() ) {
                        $st = SpecialPage::getTitleFor( 'Search' );
 
                        # mirror Go/Search behavior of original request ..
@@ -381,7 +387,7 @@ class SpecialSearch extends SpecialPage {
                        }
                        $titleMatches->free();
                }
-               if( $textMatches ) {
+               if( $textMatches && !$textStatus ) {
                        // output appropriate heading
                        if( $numTextMatches > 0 && $numTitleMatches > 0 ) {
                                // if no title matches the heading is redundant
@@ -402,8 +408,14 @@ class SpecialSearch extends SpecialPage {
                        $textMatches->free();
                }
                if( $num === 0 ) {
-                       $out->wrapWikiMsg( "<p class=\"mw-search-nonefound\">\n$1</p>", array( 'search-nonefound', wfEscapeWikiText( $term ) ) );
-                       $this->showCreateLink( $t );
+                       if ( $textStatus ) {
+                               $out->addHTML( '<div class="error">' .
+                                       htmlspecialchars( $textStatus->getWikiText( 'search-error' ) ) . '</div>' );
+                       } else {
+                               $out->wrapWikiMsg( "<p class=\"mw-search-nonefound\">\n$1</p>",
+                                       array( 'search-nonefound', wfEscapeWikiText( $term ) ) );
+                               $this->showCreateLink( $t );
+                       }
                }
                $out->addHtml( "</div>" );
 
index bc1b600..ec924b0 100644 (file)
@@ -171,11 +171,7 @@ class SpecialStatistics extends SpecialPage {
                                $this->formatRow( $this->msg( 'statistics-users' )->parse(),
                                                $this->getLanguage()->formatNum( $this->users ),
                                                array( 'class' => 'mw-statistics-users' ) ) .
-                               $this->formatRow( $this->msg( 'statistics-users-active' )->parse() . ' ' .
-                                                       Linker::linkKnown(
-                                                               SpecialPage::getTitleFor( 'Activeusers' ),
-                                                               $this->msg( 'listgrouprights-members' )->escaped()
-                                                       ),
+                               $this->formatRow( $this->msg( 'statistics-users-active' )->parse(),
                                                $this->getLanguage()->formatNum( $this->activeUsers ),
                                                array( 'class' => 'mw-statistics-users-active' ),
                                                'statistics-users-active-desc',
index ed550a0..0e8cf58 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup SpecialPage
  */
 class PageArchive {
-
        /**
         * @var Title
         */
@@ -44,7 +43,7 @@ class PageArchive {
        protected $revisionStatus;
 
        function __construct( $title ) {
-               if( is_null( $title ) ) {
+               if ( is_null( $title ) ) {
                        throw new MWException( __METHOD__ . ' given a null title.' );
                }
                $this->title = $title;
@@ -67,14 +66,14 @@ class PageArchive {
         * given title prefix.
         * Returns result wrapper with (ar_namespace, ar_title, count) fields.
         *
-        * @param string $prefix title prefix
+        * @param string $prefix Title prefix
         * @return ResultWrapper
         */
        public static function listPagesByPrefix( $prefix ) {
                $dbr = wfGetDB( DB_SLAVE );
 
                $title = Title::newFromText( $prefix );
-               if( $title ) {
+               if ( $title ) {
                        $ns = $title->getNamespace();
                        $prefix = $title->getDBkey();
                } else {
@@ -82,36 +81,36 @@ class PageArchive {
                        // @todo handle bare namespace names cleanly?
                        $ns = 0;
                }
+
                $conds = array(
                        'ar_namespace' => $ns,
                        'ar_title' . $dbr->buildLike( $prefix, $dbr->anyString() ),
                );
+
                return self::listPages( $dbr, $conds );
        }
 
        /**
-        * @param $dbr DatabaseBase
-        * @param $condition
+        * @param DatabaseBase $dbr
+        * @param string|array $condition
         * @return bool|ResultWrapper
         */
        protected static function listPages( $dbr, $condition ) {
-               return $dbr->resultObject(
-                       $dbr->select(
-                               array( 'archive' ),
-                               array(
-                                       'ar_namespace',
-                                       'ar_title',
-                                       'count' => 'COUNT(*)'
-                               ),
-                               $condition,
-                               __METHOD__,
-                               array(
-                                       'GROUP BY' => array( 'ar_namespace', 'ar_title' ),
-                                       'ORDER BY' => array( 'ar_namespace', 'ar_title' ),
-                                       'LIMIT' => 100,
-                               )
+               return $dbr->resultObject( $dbr->select(
+                       array( 'archive' ),
+                       array(
+                               'ar_namespace',
+                               'ar_title',
+                               'count' => 'COUNT(*)'
+                       ),
+                       $condition,
+                       __METHOD__,
+                       array(
+                               'GROUP BY' => array( 'ar_namespace', 'ar_title' ),
+                               'ORDER BY' => array( 'ar_namespace', 'ar_title' ),
+                               'LIMIT' => 100,
                        )
-               );
+               ) );
        }
 
        /**
@@ -141,8 +140,8 @@ class PageArchive {
                                'ar_title' => $this->title->getDBkey() ),
                        __METHOD__,
                        array( 'ORDER BY' => 'ar_timestamp DESC' ) );
-               $ret = $dbr->resultObject( $res );
-               return $ret;
+
+               return $dbr->resultObject( $res );
        }
 
        /**
@@ -154,26 +153,28 @@ class PageArchive {
         * @todo Does this belong in Image for fuller encapsulation?
         */
        function listFiles() {
-               if( $this->title->getNamespace() == NS_FILE ) {
-                       $dbr = wfGetDB( DB_SLAVE );
-                       $res = $dbr->select(
-                               'filearchive',
-                               ArchivedFile::selectFields(),
-                               array( 'fa_name' => $this->title->getDBkey() ),
-                               __METHOD__,
-                               array( 'ORDER BY' => 'fa_timestamp DESC' ) );
-                       $ret = $dbr->resultObject( $res );
-                       return $ret;
+               if ( $this->title->getNamespace() != NS_FILE ) {
+                       return null;
                }
-               return null;
+
+               $dbr = wfGetDB( DB_SLAVE );
+               $res = $dbr->select(
+                       'filearchive',
+                       ArchivedFile::selectFields(),
+                       array( 'fa_name' => $this->title->getDBkey() ),
+                       __METHOD__,
+                       array( 'ORDER BY' => 'fa_timestamp DESC' )
+               );
+
+               return $dbr->resultObject( $res );
        }
 
        /**
         * Return a Revision object containing data for the deleted revision.
         * Note that the result *may* or *may not* have a null page ID.
         *
-        * @param $timestamp String
-        * @return Revision
+        * @param string $timestamp
+        * @return Revision|null
         */
        function getRevision( $timestamp ) {
                global $wgContentHandlerUseDB;
@@ -203,14 +204,15 @@ class PageArchive {
                $row = $dbr->selectRow( 'archive',
                        $fields,
                        array( 'ar_namespace' => $this->title->getNamespace(),
-                                       'ar_title' => $this->title->getDBkey(),
-                                       'ar_timestamp' => $dbr->timestamp( $timestamp ) ),
+                               'ar_title' => $this->title->getDBkey(),
+                               'ar_timestamp' => $dbr->timestamp( $timestamp ) ),
                        __METHOD__ );
-               if( $row ) {
+
+               if ( $row ) {
                        return Revision::newFromArchiveRow( $row, array( 'title' => $this->title ) );
-               } else {
-                       return null;
                }
+
+               return null;
        }
 
        /**
@@ -220,8 +222,8 @@ class PageArchive {
         * May produce unexpected results in case of history merges or other
         * unusual time issues.
         *
-        * @param $timestamp String
-        * @return Revision or null
+        * @param string $timestamp
+        * @return Revision|null Null when there is no previous revision
         */
        function getPreviousRevision( $timestamp ) {
                $dbr = wfGetDB( DB_SLAVE );
@@ -246,7 +248,7 @@ class PageArchive {
                                'page_title' => $this->title->getDBkey(),
                                'page_id = rev_page',
                                'rev_timestamp < ' .
-                                               $dbr->addQuotes( $dbr->timestamp( $timestamp ) ) ),
+                                       $dbr->addQuotes( $dbr->timestamp( $timestamp ) ) ),
                        __METHOD__,
                        array(
                                'ORDER BY' => 'rev_timestamp DESC',
@@ -254,38 +256,39 @@ class PageArchive {
                $prevLive = $row ? wfTimestamp( TS_MW, $row->rev_timestamp ) : false;
                $prevLiveId = $row ? intval( $row->rev_id ) : null;
 
-               if( $prevLive && $prevLive > $prevDeleted ) {
+               if ( $prevLive && $prevLive > $prevDeleted ) {
                        // Most prior revision was live
                        return Revision::newFromId( $prevLiveId );
-               } elseif( $prevDeleted ) {
+               } elseif ( $prevDeleted ) {
                        // Most prior revision was deleted
                        return $this->getRevision( $prevDeleted );
-               } else {
-                       // No prior revision on this page.
-                       return null;
                }
+
+               // No prior revision on this page.
+               return null;
        }
 
        /**
         * Get the text from an archive row containing ar_text, ar_flags and ar_text_id
         *
-        * @param $row Object: database row
-        * @return Revision
+        * @param Object $row Database row
+        * @return string
         */
        function getTextFromRow( $row ) {
-               if( is_null( $row->ar_text_id ) ) {
+               if ( is_null( $row->ar_text_id ) ) {
                        // An old row from MediaWiki 1.4 or previous.
                        // Text is embedded in this row in classic compression format.
                        return Revision::getRevisionText( $row, 'ar_' );
-               } else {
-                       // New-style: keyed to the text storage backend.
-                       $dbr = wfGetDB( DB_SLAVE );
-                       $text = $dbr->selectRow( 'text',
-                               array( 'old_text', 'old_flags' ),
-                               array( 'old_id' => $row->ar_text_id ),
-                               __METHOD__ );
-                       return Revision::getRevisionText( $text );
                }
+
+               // New-style: keyed to the text storage backend.
+               $dbr = wfGetDB( DB_SLAVE );
+               $text = $dbr->selectRow( 'text',
+                       array( 'old_text', 'old_flags' ),
+                       array( 'old_id' => $row->ar_text_id ),
+                       __METHOD__ );
+
+               return Revision::getRevisionText( $text );
        }
 
        /**
@@ -294,7 +297,7 @@ class PageArchive {
         *
         * If there are no archived revisions for the page, returns NULL.
         *
-        * @return String
+        * @return string|null
         */
        function getLastRevisionText() {
                $dbr = wfGetDB( DB_SLAVE );
@@ -304,17 +307,18 @@ class PageArchive {
                                'ar_title' => $this->title->getDBkey() ),
                        __METHOD__,
                        array( 'ORDER BY' => 'ar_timestamp DESC' ) );
-               if( $row ) {
+
+               if ( $row ) {
                        return $this->getTextFromRow( $row );
-               } else {
-                       return null;
                }
+
+               return null;
        }
 
        /**
         * Quick check if any archived revisions are present for the page.
         *
-        * @return Boolean
+        * @return boolean
         */
        function isDeleted() {
                $dbr = wfGetDB( DB_SLAVE );
@@ -323,6 +327,7 @@ class PageArchive {
                                'ar_title' => $this->title->getDBkey() ),
                        __METHOD__
                );
+
                return ( $n > 0 );
        }
 
@@ -331,11 +336,11 @@ class PageArchive {
         * Once restored, the items will be removed from the archive tables.
         * The deletion log will be updated with an undeletion notice.
         *
-        * @param array $timestamps pass an empty array to restore all revisions, otherwise list the ones to undelete.
-        * @param $comment String
-        * @param $fileVersions Array
-        * @param $unsuppress Boolean
-        * @param $user User doing the action, or null to use $wgUser
+        * @param array $timestamps Pass an empty array to restore all revisions, otherwise list the ones to undelete.
+        * @param string $comment
+        * @param array $fileVersions
+        * @param bool $unsuppress
+        * @param User $user User performing the action, or null to use $wgUser
         *
         * @return array(number of file revisions restored, number of image revisions restored, log message)
         * on success, false on failure
@@ -348,7 +353,7 @@ class PageArchive {
                $restoreText = $restoreAll || !empty( $timestamps );
                $restoreFiles = $restoreAll || !empty( $fileVersions );
 
-               if( $restoreFiles && $this->title->getNamespace() == NS_FILE ) {
+               if ( $restoreFiles && $this->title->getNamespace() == NS_FILE ) {
                        $img = wfLocalFile( $this->title );
                        $this->fileStatus = $img->restore( $fileVersions, $unsuppress );
                        if ( !$this->fileStatus->isOK() ) {
@@ -359,9 +364,9 @@ class PageArchive {
                        $filesRestored = 0;
                }
 
-               if( $restoreText ) {
+               if ( $restoreText ) {
                        $this->revisionStatus = $this->undeleteRevisions( $timestamps, $unsuppress, $comment );
-                       if( !$this->revisionStatus->isOK() ) {
+                       if ( !$this->revisionStatus->isOK() ) {
                                return false;
                        }
 
@@ -372,13 +377,13 @@ class PageArchive {
 
                // Touch the log!
 
-               if( $textRestored && $filesRestored ) {
+               if ( $textRestored && $filesRestored ) {
                        $reason = wfMessage( 'undeletedrevisions-files' )
                                ->numParams( $textRestored, $filesRestored )->inContentLanguage()->text();
-               } elseif( $textRestored ) {
+               } elseif ( $textRestored ) {
                        $reason = wfMessage( 'undeletedrevisions' )->numParams( $textRestored )
                                ->inContentLanguage()->text();
-               } elseif( $filesRestored ) {
+               } elseif ( $filesRestored ) {
                        $reason = wfMessage( 'undeletedfiles' )->numParams( $filesRestored )
                                ->inContentLanguage()->text();
                } else {
@@ -386,7 +391,7 @@ class PageArchive {
                        return false;
                }
 
-               if( trim( $comment ) != '' ) {
+               if ( trim( $comment ) != '' ) {
                        $reason .= wfMessage( 'colon-separator' )->inContentLanguage()->text() . $comment;
                }
 
@@ -413,12 +418,11 @@ class PageArchive {
         * to the cur/old tables. If the page currently exists, all revisions will
         * be stuffed into old, otherwise the most recent will go into cur.
         *
-        * @param array $timestamps pass an empty array to restore all revisions, otherwise list the ones to undelete.
-        * @param $unsuppress Boolean: remove all ar_deleted/fa_deleted restrictions of seletected revs
-        *
-        * @param $comment String
+        * @param array $timestamps Pass an empty array to restore all revisions, otherwise list the ones to undelete.
+        * @param bool $unsuppress Remove all ar_deleted/fa_deleted restrictions of seletected revs
+        * @param string $comment
         * @throws ReadOnlyError
-        * @return Status, containing the number of revisions restored on success
+        * @return Status Object containing the number of revisions restored on success
         */
        private function undeleteRevisions( $timestamps, $unsuppress = false, $comment = '' ) {
                global $wgContentHandlerUseDB;
@@ -426,8 +430,8 @@ class PageArchive {
                if ( wfReadOnly() ) {
                        throw new ReadOnlyError();
                }
-               $restoreAll = empty( $timestamps );
 
+               $restoreAll = empty( $timestamps );
                $dbw = wfGetDB( DB_MASTER );
 
                # Does this page already exist? We'll have to update it...
@@ -443,7 +447,8 @@ class PageArchive {
                        __METHOD__,
                        array( 'FOR UPDATE' ) // lock page
                );
-               if( $page ) {
+
+               if ( $page ) {
                        $makepage = false;
                        # Page already exists. Import the history, and if necessary
                        # we'll update the latest revision field in the record.
@@ -455,7 +460,7 @@ class PageArchive {
                                array( 'rev_id' => $previousRevId ),
                                __METHOD__ );
 
-                       if( $previousTimestamp === false ) {
+                       if ( $previousTimestamp === false ) {
                                wfDebug( __METHOD__ . ": existing page refers to a page_latest that does not exist\n" );
 
                                $status = Status::newGood( 0 );
@@ -470,7 +475,7 @@ class PageArchive {
                        $previousTimestamp = 0;
                }
 
-               if( $restoreAll ) {
+               if ( $restoreAll ) {
                        $oldones = '1 = 1'; # All revisions...
                } else {
                        $oldts = implode( ',',
@@ -509,14 +514,15 @@ class PageArchive {
                        $fields,
                        /* WHERE */ array(
                                'ar_namespace' => $this->title->getNamespace(),
-                               'ar_title'     => $this->title->getDBkey(),
+                               'ar_title' => $this->title->getDBkey(),
                                $oldones ),
                        __METHOD__,
                        /* options */ array( 'ORDER BY' => 'ar_timestamp' )
                );
                $ret = $dbw->resultObject( $result );
                $rev_count = $dbw->numRows( $result );
-               if( !$rev_count ) {
+
+               if ( !$rev_count ) {
                        wfDebug( __METHOD__ . ": no revisions to restore\n" );
 
                        $status = Status::newGood( 0 );
@@ -544,9 +550,9 @@ class PageArchive {
                        return $status;
                }
 
-               if( $makepage ) {
+               if ( $makepage ) {
                        // Check the state of the newest to-be version...
-                       if( !$unsuppress && ( $row->ar_deleted & Revision::DELETED_TEXT ) ) {
+                       if ( !$unsuppress && ( $row->ar_deleted & Revision::DELETED_TEXT ) ) {
                                return Status::newFatal( "undeleterevdel" );
                        }
                        // Safe to insert now...
@@ -554,9 +560,9 @@ class PageArchive {
                        $pageId = $newid;
                } else {
                        // Check if a deleted revision will become the current revision...
-                       if( $row->ar_timestamp > $previousTimestamp ) {
+                       if ( $row->ar_timestamp > $previousTimestamp ) {
                                // Check the state of the newest to-be version...
-                               if( !$unsuppress && ( $row->ar_deleted & Revision::DELETED_TEXT ) ) {
+                               if ( !$unsuppress && ( $row->ar_deleted & Revision::DELETED_TEXT ) ) {
                                        return Status::newFatal( "undeleterevdel" );
                                }
                        }
@@ -570,10 +576,10 @@ class PageArchive {
 
                foreach ( $ret as $row ) {
                        // Check for key dupes due to shitty archive integrity.
-                       if( $row->ar_rev_id ) {
+                       if ( $row->ar_rev_id ) {
                                $exists = $dbw->selectField( 'revision', '1',
                                        array( 'rev_id' => $row->ar_rev_id ), __METHOD__ );
-                               if( $exists ) {
+                               if ( $exists ) {
                                        continue; // don't throw DB errors
                                }
                        }
@@ -616,7 +622,7 @@ class PageArchive {
 
                wfRunHooks( 'ArticleUndelete', array( &$this->title, $created, $comment ) );
 
-               if( $this->title->getNamespace() == NS_FILE ) {
+               if ( $this->title->getNamespace() == NS_FILE ) {
                        $update = new HTMLCacheUpdate( $this->title, 'imagelinks' );
                        $update->doUpdate();
                }
@@ -627,12 +633,16 @@ class PageArchive {
        /**
         * @return Status
         */
-       function getFileStatus() { return $this->fileStatus; }
+       function getFileStatus() {
+               return $this->fileStatus;
+       }
 
        /**
         * @return Status
         */
-       function getRevisionStatus() { return $this->revisionStatus; }
+       function getRevisionStatus() {
+               return $this->revisionStatus;
+       }
 }
 
 /**
@@ -664,10 +674,13 @@ class SpecialUndelete extends SpecialPage {
                } else {
                        $this->mTarget = $request->getVal( 'target' );
                }
+
                $this->mTargetObj = null;
+
                if ( $this->mTarget !== null && $this->mTarget !== '' ) {
                        $this->mTargetObj = Title::newFromURL( $this->mTarget );
                }
+
                $this->mSearchPrefix = $request->getText( 'prefix' );
                $time = $request->getVal( 'timestamp' );
                $this->mTimestamp = $time ? wfTimestamp( TS_MW, $time ) : '';
@@ -698,16 +711,16 @@ class SpecialUndelete extends SpecialPage {
                        $this->mRestore = false;
                }
 
-               if( $this->mRestore || $this->mInvert ) {
+               if ( $this->mRestore || $this->mInvert ) {
                        $timestamps = array();
                        $this->mFileVersions = array();
-                       foreach( $request->getValues() as $key => $val ) {
+                       foreach ( $request->getValues() as $key => $val ) {
                                $matches = array();
-                               if( preg_match( '/^ts(\d{14})$/', $key, $matches ) ) {
+                               if ( preg_match( '/^ts(\d{14})$/', $key, $matches ) ) {
                                        array_push( $timestamps, $matches[1] );
                                }
 
-                               if( preg_match( '/^fileid(\d+)$/', $key, $matches ) ) {
+                               if ( preg_match( '/^fileid(\d+)$/', $key, $matches ) ) {
                                        $this->mFileVersions[] = intval( $matches[1] );
                                }
                        }
@@ -753,7 +766,7 @@ class SpecialUndelete extends SpecialPage {
                        if ( !$file->exists() ) {
                                $out->addWikiMsg( 'filedelete-nofile', $this->mFilename );
                        } elseif ( !$file->userCan( File::DELETED_FILE, $user ) ) {
-                               if( $file->isDeleted( File::DELETED_RESTRICTED ) ) {
+                               if ( $file->isDeleted( File::DELETED_RESTRICTED ) ) {
                                        throw new PermissionsError( 'suppressrevision' );
                                } else {
                                        throw new PermissionsError( 'deletedtext' );
@@ -776,22 +789,23 @@ class SpecialUndelete extends SpecialPage {
                $out = $this->getOutput();
                $out->setPageTitle( $this->msg( 'undelete-search-title' ) );
                $out->addHTML(
-                       Xml::openElement( 'form', array(
-                               'method' => 'get',
-                               'action' => $wgScript ) ) .
-                       Xml::fieldset( $this->msg( 'undelete-search-box' )->text() ) .
-                       Html::hidden( 'title',
-                               $this->getTitle()->getPrefixedDBkey() ) .
-                       Xml::inputLabel( $this->msg( 'undelete-search-prefix' )->text(),
-                               'prefix', 'prefix', 20,
-                               $this->mSearchPrefix ) . ' ' .
-                       Xml::submitButton( $this->msg( 'undelete-search-submit' )->text() ) .
-                       Xml::closeElement( 'fieldset' ) .
-                       Xml::closeElement( 'form' )
+                       Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) .
+                               Xml::fieldset( $this->msg( 'undelete-search-box' )->text() ) .
+                               Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
+                               Xml::inputLabel(
+                                       $this->msg( 'undelete-search-prefix' )->text(),
+                                       'prefix',
+                                       'prefix',
+                                       20,
+                                       $this->mSearchPrefix
+                               ) . ' ' .
+                               Xml::submitButton( $this->msg( 'undelete-search-submit' )->text() ) .
+                               Xml::closeElement( 'fieldset' ) .
+                               Xml::closeElement( 'form' )
                );
 
                # List undeletable articles
-               if( $this->mSearchPrefix ) {
+               if ( $this->mSearchPrefix ) {
                        $result = PageArchive::listPagesByPrefix( $this->mSearchPrefix );
                        $this->showList( $result );
                }
@@ -800,13 +814,13 @@ class SpecialUndelete extends SpecialPage {
        /**
         * Generic list of deleted pages
         *
-        * @param $result ResultWrapper
+        * @param ResultWrapper $result
         * @return bool
         */
        private function showList( $result ) {
                $out = $this->getOutput();
 
-               if( $result->numRows() == 0 ) {
+               if ( $result->numRows() == 0 ) {
                        $out->addWikiMsg( 'undelete-no-results' );
                        return false;
                }
@@ -826,8 +840,15 @@ class SpecialUndelete extends SpecialPage {
                                );
                        } else {
                                // The title is no longer valid, show as text
-                               $item = Html::element( 'span', array( 'class' => 'mw-invalidtitle' ),
-                                       Linker::getInvalidTitleDescription( $this->getContext(), $row->ar_namespace, $row->ar_title ) );
+                               $item = Html::element(
+                                       'span',
+                                       array( 'class' => 'mw-invalidtitle' ),
+                                       Linker::getInvalidTitleDescription(
+                                               $this->getContext(),
+                                               $row->ar_namespace,
+                                               $row->ar_title
+                                       )
+                               );
                        }
                        $revs = $this->msg( 'undeleterevisions' )->numParams( $row->count )->parse();
                        $out->addHTML( "<li>{$item} ({$revs})</li>\n" );
@@ -839,7 +860,7 @@ class SpecialUndelete extends SpecialPage {
        }
 
        private function showRevision( $timestamp ) {
-               if( !preg_match( '/[0-9]{14}/', $timestamp ) ) {
+               if ( !preg_match( '/[0-9]{14}/', $timestamp ) ) {
                        return;
                }
 
@@ -852,31 +873,37 @@ class SpecialUndelete extends SpecialPage {
                $out = $this->getOutput();
                $user = $this->getUser();
 
-               if( !$rev ) {
+               if ( !$rev ) {
                        $out->addWikiMsg( 'undeleterevision-missing' );
                        return;
                }
 
-               if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
-                       if( !$rev->userCan( Revision::DELETED_TEXT, $user ) ) {
-                               $out->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-permission' );
+               if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
+                       if ( !$rev->userCan( Revision::DELETED_TEXT, $user ) ) {
+                               $out->wrapWikiMsg(
+                                       "<div class='mw-warning plainlinks'>\n$1\n</div>\n",
+                                       'rev-deleted-text-permission'
+                               );
                                return;
-                       } else {
-                               $out->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-view' );
-                               $out->addHTML( '<br />' );
-                               // and we are allowed to see...
                        }
+
+                       $out->wrapWikiMsg(
+                               "<div class='mw-warning plainlinks'>\n$1\n</div>\n",
+                               'rev-deleted-text-view'
+                       );
+                       $out->addHTML( '<br />' );
+                       // and we are allowed to see...
                }
 
-               if( $this->mDiff ) {
+               if ( $this->mDiff ) {
                        $previousRev = $archive->getPreviousRevision( $timestamp );
-                       if( $previousRev ) {
+                       if ( $previousRev ) {
                                $this->showDiff( $previousRev, $rev );
-                               if( $this->mDiffOnly ) {
+                               if ( $this->mDiffOnly ) {
                                        return;
-                               } else {
-                                       $out->addHTML( '<hr />' );
                                }
+
+                               $out->addHTML( '<hr />' );
                        } else {
                                $out->addWikiMsg( 'undelete-nodiff' );
                        }
@@ -900,7 +927,7 @@ class SpecialUndelete extends SpecialPage {
 
                $isText = ( $content instanceof TextContent );
 
-               if( $this->mPreview || $isText ) {
+               if ( $this->mPreview || $isText ) {
                        $openDiv = '<div id="mw-undelete-revision" class="mw-warning">';
                } else {
                        $openDiv = '<div id="mw-undelete-revision">';
@@ -922,7 +949,7 @@ class SpecialUndelete extends SpecialPage {
                        return;
                }
 
-               if( $this->mPreview || !$isText ) {
+               if ( $this->mPreview || !$isText ) {
                        // NOTE: non-text content has no source view, so always use rendered preview
 
                        // Hide [edit]s
@@ -935,16 +962,21 @@ class SpecialUndelete extends SpecialPage {
 
                if ( $isText ) {
                        // source view for textual content
-                       $sourceView = Xml::element( 'textarea', array(
-                               'readonly' => 'readonly',
-                               'cols' => $user->getIntOption( 'cols' ),
-                               'rows' => $user->getIntOption( 'rows' ) ),
-                               $content->getNativeData() . "\n" );
+                       $sourceView = Xml::element(
+                               'textarea',
+                               array(
+                                       'readonly' => 'readonly',
+                                       'cols' => $user->getIntOption( 'cols' ),
+                                       'rows' => $user->getIntOption( 'rows' )
+                               ),
+                               $content->getNativeData() . "\n"
+                       );
 
                        $previewButton = Xml::element( 'input', array(
                                'type' => 'submit',
                                'name' => 'preview',
-                               'value' => $this->msg( 'showpreview' )->text() ) );
+                               'value' => $this->msg( 'showpreview' )->text()
+                       ) );
                } else {
                        $sourceView = '';
                        $previewButton = '';
@@ -957,36 +989,37 @@ class SpecialUndelete extends SpecialPage {
 
                $out->addHTML(
                        $sourceView .
-                       Xml::openElement( 'div', array(
-                               'style' => 'clear: both' ) ) .
-                       Xml::openElement( 'form', array(
-                               'method' => 'post',
-                               'action' => $this->getTitle()->getLocalURL( array( 'action' => 'submit' ) ) ) ) .
-                       Xml::element( 'input', array(
-                               'type' => 'hidden',
-                               'name' => 'target',
-                               'value' => $this->mTargetObj->getPrefixedDBkey() ) ) .
-                       Xml::element( 'input', array(
-                               'type' => 'hidden',
-                               'name' => 'timestamp',
-                               'value' => $timestamp ) ) .
-                       Xml::element( 'input', array(
-                               'type' => 'hidden',
-                               'name' => 'wpEditToken',
-                               'value' => $user->getEditToken() ) ) .
-                       $previewButton .
-                       $diffButton .
-                       Xml::closeElement( 'form' ) .
-                       Xml::closeElement( 'div' ) );
+                               Xml::openElement( 'div', array(
+                                       'style' => 'clear: both' ) ) .
+                               Xml::openElement( 'form', array(
+                                       'method' => 'post',
+                                       'action' => $this->getTitle()->getLocalURL( array( 'action' => 'submit' ) ) ) ) .
+                               Xml::element( 'input', array(
+                                       'type' => 'hidden',
+                                       'name' => 'target',
+                                       'value' => $this->mTargetObj->getPrefixedDBkey() ) ) .
+                               Xml::element( 'input', array(
+                                       'type' => 'hidden',
+                                       'name' => 'timestamp',
+                                       'value' => $timestamp ) ) .
+                               Xml::element( 'input', array(
+                                       'type' => 'hidden',
+                                       'name' => 'wpEditToken',
+                                       'value' => $user->getEditToken() ) ) .
+                               $previewButton .
+                               $diffButton .
+                               Xml::closeElement( 'form' ) .
+                               Xml::closeElement( 'div' )
+               );
        }
 
        /**
         * Build a diff display between this and the previous either deleted
         * or non-deleted edit.
         *
-        * @param $previousRev Revision
-        * @param $currentRev Revision
-        * @return String: HTML
+        * @param Revision $previousRev
+        * @param Revision $currentRev
+        * @return string HTML
         */
        function showDiff( $previousRev, $currentRev ) {
                $diffContext = clone $this->getContext();
@@ -995,20 +1028,19 @@ class SpecialUndelete extends SpecialPage {
 
                $diffEngine = $currentRev->getContentHandler()->createDifferenceEngine( $diffContext );
                $diffEngine->showDiffStyle();
-               $this->getOutput()->addHTML(
-                       "<div>" .
+               $this->getOutput()->addHTML( "<div>" .
                        "<table style='width: 98%;' cellpadding='0' cellspacing='4' class='diff'>" .
                        "<col class='diff-marker' />" .
                        "<col class='diff-content' />" .
                        "<col class='diff-marker' />" .
                        "<col class='diff-content' />" .
                        "<tr>" .
-                               "<td colspan='2' style='width: 50%; text-align: center' class='diff-otitle'>" .
-                               $this->diffHeader( $previousRev, 'o' ) .
-                               "</td>\n" .
-                               "<td colspan='2' style='width: 50%;  text-align: center' class='diff-ntitle'>" .
-                               $this->diffHeader( $currentRev, 'n' ) .
-                               "</td>\n" .
+                       "<td colspan='2' style='width: 50%; text-align: center' class='diff-otitle'>" .
+                       $this->diffHeader( $previousRev, 'o' ) .
+                       "</td>\n" .
+                       "<td colspan='2' style='width: 50%;  text-align: center' class='diff-ntitle'>" .
+                       $this->diffHeader( $currentRev, 'n' ) .
+                       "</td>\n" .
                        "</tr>" .
                        $diffEngine->generateContentDiffBody(
                                $previousRev->getContent( Revision::FOR_THIS_USER, $this->getUser() ),
@@ -1019,13 +1051,13 @@ class SpecialUndelete extends SpecialPage {
        }
 
        /**
-        * @param $rev Revision
-        * @param $prefix
+        * @param Revision $rev
+        * @param string $prefix
         * @return string
         */
        private function diffHeader( $rev, $prefix ) {
                $isDeleted = !( $rev->getId() && $rev->getTitle() );
-               if( $isDeleted ) {
+               if ( $isDeleted ) {
                        /// @todo FIXME: $rev->getTitle() is null for deleted revs...?
                        $targetPage = $this->getTitle();
                        $targetQuery = array(
@@ -1037,31 +1069,34 @@ class SpecialUndelete extends SpecialPage {
                        $targetPage = $rev->getTitle();
                        $targetQuery = array( 'oldid' => $rev->getId() );
                }
+
                // Add show/hide deletion links if available
                $user = $this->getUser();
                $lang = $this->getLanguage();
                $rdel = Linker::getRevDeleteLink( $user, $rev, $this->mTargetObj );
+
                if ( $rdel ) {
                        $rdel = " $rdel";
                }
+
                return '<div id="mw-diff-' . $prefix . 'title1"><strong>' .
-                               Linker::link(
-                                       $targetPage,
-                                       $this->msg(
-                                               'revisionasof',
-                                               $lang->userTimeAndDate( $rev->getTimestamp(), $user ),
-                                               $lang->userDate( $rev->getTimestamp(), $user ),
-                                               $lang->userTime( $rev->getTimestamp(), $user )
-                                       )->escaped(),
-                                       array(),
-                                       $targetQuery
-                               ) .
+                       Linker::link(
+                               $targetPage,
+                               $this->msg(
+                                       'revisionasof',
+                                       $lang->userTimeAndDate( $rev->getTimestamp(), $user ),
+                                       $lang->userDate( $rev->getTimestamp(), $user ),
+                                       $lang->userTime( $rev->getTimestamp(), $user )
+                               )->escaped(),
+                               array(),
+                               $targetQuery
+                       ) .
                        '</strong></div>' .
                        '<div id="mw-diff-' . $prefix . 'title2">' .
-                               Linker::revUserTools( $rev ) . '<br />' .
+                       Linker::revUserTools( $rev ) . '<br />' .
                        '</div>' .
                        '<div id="mw-diff-' . $prefix . 'title3">' .
-                               Linker::revComment( $rev ) . $rdel . '<br />' .
+                       Linker::revComment( $rev ) . $rdel . '<br />' .
                        '</div>';
        }
 
@@ -1079,15 +1114,15 @@ class SpecialUndelete extends SpecialPage {
                        $lang->userTime( $file->getTimestamp(), $user ) );
                $out->addHTML(
                        Xml::openElement( 'form', array(
-                               'method' => 'POST',
-                               'action' => $this->getTitle()->getLocalURL(
-                                       'target=' . urlencode( $this->mTarget ) .
-                                       '&file=' . urlencode( $key ) .
-                                       '&token=' . urlencode( $user->getEditToken( $key ) ) )
+                                       'method' => 'POST',
+                                       'action' => $this->getTitle()->getLocalURL(
+                                               'target=' . urlencode( $this->mTarget ) .
+                                                       '&file=' . urlencode( $key ) .
+                                                       '&token=' . urlencode( $user->getEditToken( $key ) ) )
                                )
                        ) .
-                       Xml::submitButton( $this->msg( 'undelete-show-file-submit' )->text() ) .
-                       '</form>'
+                               Xml::submitButton( $this->msg( 'undelete-show-file-submit' )->text() ) .
+                               '</form>'
                );
        }
 
@@ -1113,7 +1148,7 @@ class SpecialUndelete extends SpecialPage {
 
        private function showHistory() {
                $out = $this->getOutput();
-               if( $this->mAllowed ) {
+               if ( $this->mAllowed ) {
                        $out->addModules( 'mediawiki.special.undelete' );
                }
                $out->wrapWikiMsg(
@@ -1147,7 +1182,7 @@ class SpecialUndelete extends SpecialPage {
                $haveFiles = $files && $files->numRows() > 0;
 
                # Batch existence check on user and talk pages
-               if( $haveRevisions ) {
+               if ( $haveRevisions ) {
                        $batch = new LinkBatch();
                        foreach ( $revisions as $row ) {
                                $batch->addObj( Title::makeTitleSafe( NS_USER, $row->ar_user_text ) );
@@ -1156,7 +1191,7 @@ class SpecialUndelete extends SpecialPage {
                        $batch->execute();
                        $revisions->seek( 0 );
                }
-               if( $haveFiles ) {
+               if ( $haveFiles ) {
                        $batch = new LinkBatch();
                        foreach ( $files as $row ) {
                                $batch->addObj( Title::makeTitleSafe( NS_USER, $row->fa_user_text ) );
@@ -1169,7 +1204,10 @@ class SpecialUndelete extends SpecialPage {
                if ( $this->mAllowed ) {
                        $action = $this->getTitle()->getLocalURL( array( 'action' => 'submit' ) );
                        # Start the form here
-                       $top = Xml::openElement( 'form', array( 'method' => 'post', 'action' => $action, 'id' => 'undelete' ) );
+                       $top = Xml::openElement(
+                               'form',
+                               array( 'method' => 'post', 'action' => $action, 'id' => 'undelete' )
+                       );
                        $out->addHTML( $top );
                }
 
@@ -1179,59 +1217,60 @@ class SpecialUndelete extends SpecialPage {
                LogEventsList::showLogExtract( $out, 'delete', $this->mTargetObj );
                # Show relevant lines from the suppression log:
                $suppressLogPage = new LogPage( 'suppress' );
-               if( $this->getUser()->isAllowed( 'suppressionlog' ) ) {
+               if ( $this->getUser()->isAllowed( 'suppressionlog' ) ) {
                        $out->addHTML( Xml::element( 'h2', null, $suppressLogPage->getName()->text() ) . "\n" );
                        LogEventsList::showLogExtract( $out, 'suppress', $this->mTargetObj );
                }
 
-               if( $this->mAllowed && ( $haveRevisions || $haveFiles ) ) {
+               if ( $this->mAllowed && ( $haveRevisions || $haveFiles ) ) {
                        # Format the user-visible controls (comment field, submission button)
                        # in a nice little table
-                       if( $this->getUser()->isAllowed( 'suppressrevision' ) ) {
+                       if ( $this->getUser()->isAllowed( 'suppressrevision' ) ) {
                                $unsuppressBox =
                                        "<tr>
                                                <td>&#160;</td>
                                                <td class='mw-input'>" .
-                                                       Xml::checkLabel( $this->msg( 'revdelete-unsuppress' )->text(),
-                                                               'wpUnsuppress', 'mw-undelete-unsuppress', $this->mUnsuppress ).
+                                               Xml::checkLabel( $this->msg( 'revdelete-unsuppress' )->text(),
+                                                       'wpUnsuppress', 'mw-undelete-unsuppress', $this->mUnsuppress ) .
                                                "</td>
                                        </tr>";
                        } else {
                                $unsuppressBox = '';
                        }
+
                        $table =
                                Xml::fieldset( $this->msg( 'undelete-fieldset-title' )->text() ) .
-                               Xml::openElement( 'table', array( 'id' => 'mw-undelete-table' ) ) .
+                                       Xml::openElement( 'table', array( 'id' => 'mw-undelete-table' ) ) .
                                        "<tr>
                                                <td colspan='2' class='mw-undelete-extrahelp'>" .
-                                                       $this->msg( 'undeleteextrahelp' )->parseAsBlock() .
-                                               "</td>
-                                       </tr>
-                                       <tr>
-                                               <td class='mw-label'>" .
-                                                       Xml::label( $this->msg( 'undeletecomment' )->text(), 'wpComment' ) .
-                                               "</td>
-                                               <td class='mw-input'>" .
-                                                       Xml::input( 'wpComment', 50, $this->mComment, array( 'id' => 'wpComment' ) ) .
-                                               "</td>
-                                       </tr>
-                                       <tr>
-                                               <td>&#160;</td>
-                                               <td class='mw-submit'>" .
-                                                       Xml::submitButton( $this->msg( 'undeletebtn' )->text(), array( 'name' => 'restore', 'id' => 'mw-undelete-submit' ) ) . ' ' .
-                                                       Xml::submitButton( $this->msg( 'undeleteinvert' )->text(), array( 'name' => 'invert', 'id' => 'mw-undelete-invert' ) ) .
-                                               "</td>
-                                       </tr>" .
+                                       $this->msg( 'undeleteextrahelp' )->parseAsBlock() .
+                                       "</td>
+                               </tr>
+                               <tr>
+                                       <td class='mw-label'>" .
+                                       Xml::label( $this->msg( 'undeletecomment' )->text(), 'wpComment' ) .
+                                       "</td>
+                                       <td class='mw-input'>" .
+                                       Xml::input( 'wpComment', 50, $this->mComment, array( 'id' => 'wpComment' ) ) .
+                                       "</td>
+                               </tr>
+                               <tr>
+                                       <td>&#160;</td>
+                                       <td class='mw-submit'>" .
+                                       Xml::submitButton( $this->msg( 'undeletebtn' )->text(), array( 'name' => 'restore', 'id' => 'mw-undelete-submit' ) ) . ' ' .
+                                       Xml::submitButton( $this->msg( 'undeleteinvert' )->text(), array( 'name' => 'invert', 'id' => 'mw-undelete-invert' ) ) .
+                                       "</td>
+                               </tr>" .
                                        $unsuppressBox .
-                               Xml::closeElement( 'table' ) .
-                               Xml::closeElement( 'fieldset' );
+                                       Xml::closeElement( 'table' ) .
+                                       Xml::closeElement( 'fieldset' );
 
                        $out->addHTML( $table );
                }
 
                $out->addHTML( Xml::element( 'h2', null, $this->msg( 'history' )->text() ) . "\n" );
 
-               if( $haveRevisions ) {
+               if ( $haveRevisions ) {
                        # The page's stored (deleted) history:
                        $out->addHTML( '<ul>' );
                        $remaining = $revisions->numRows();
@@ -1247,7 +1286,7 @@ class SpecialUndelete extends SpecialPage {
                        $out->addWikiMsg( 'nohistory' );
                }
 
-               if( $haveFiles ) {
+               if ( $haveFiles ) {
                        $out->addHTML( Xml::element( 'h2', null, $this->msg( 'filehist' )->text() ) . "\n" );
                        $out->addHTML( '<ul>' );
                        foreach ( $files as $row ) {
@@ -1277,9 +1316,9 @@ class SpecialUndelete extends SpecialPage {
                $revTextSize = '';
                $ts = wfTimestamp( TS_MW, $row->ar_timestamp );
                // Build checkboxen...
-               if( $this->mAllowed ) {
-                       if( $this->mInvert ) {
-                               if( in_array( $ts, $this->mTargetTimestamp ) ) {
+               if ( $this->mAllowed ) {
+                       if ( $this->mInvert ) {
+                               if ( in_array( $ts, $this->mTargetTimestamp ) ) {
                                        $checkBox = Xml::check( "ts$ts" );
                                } else {
                                        $checkBox = Xml::check( "ts$ts", true );
@@ -1290,15 +1329,16 @@ class SpecialUndelete extends SpecialPage {
                } else {
                        $checkBox = '';
                }
-               $user = $this->getUser();
+
                // Build page & diff links...
-               if( $this->mCanView ) {
+               $user = $this->getUser();
+               if ( $this->mCanView ) {
                        $titleObj = $this->getTitle();
                        # Last link
-                       if( !$rev->userCan( Revision::DELETED_TEXT, $this->getUser() ) ) {
+                       if ( !$rev->userCan( Revision::DELETED_TEXT, $this->getUser() ) ) {
                                $pageLink = htmlspecialchars( $this->getLanguage()->userTimeAndDate( $ts, $user ) );
                                $last = $this->msg( 'diff' )->escaped();
-                       } elseif( $remaining > 0 || ( $earliestLiveTime && $ts > $earliestLiveTime ) ) {
+                       } elseif ( $remaining > 0 || ( $earliestLiveTime && $ts > $earliestLiveTime ) ) {
                                $pageLink = $this->getPageLink( $rev, $titleObj, $ts );
                                $last = Linker::linkKnown(
                                        $titleObj,
@@ -1318,28 +1358,35 @@ class SpecialUndelete extends SpecialPage {
                        $pageLink = htmlspecialchars( $this->getLanguage()->userTimeAndDate( $ts, $user ) );
                        $last = $this->msg( 'diff' )->escaped();
                }
+
                // User links
                $userLink = Linker::revUserTools( $rev );
+
                // Revision text size
                $size = $row->ar_len;
-               if( !is_null( $size ) ) {
+               if ( !is_null( $size ) ) {
                        $revTextSize = Linker::formatRevisionSize( $size );
                }
+
                // Edit summary
                $comment = Linker::revComment( $rev );
+
                // Revision delete links
                $revdlink = Linker::getRevDeleteLink( $user, $rev, $this->mTargetObj );
 
-               $revisionRow = $this->msg( 'undelete-revisionrow' )->rawParams( $checkBox, $revdlink, $last, $pageLink, $userLink, $revTextSize, $comment )->escaped();
+               $revisionRow = $this->msg( 'undelete-revisionrow' )
+                       ->rawParams( $checkBox, $revdlink, $last, $pageLink, $userLink, $revTextSize, $comment )
+                       ->escaped();
+
                return "<li>$revisionRow</li>";
        }
 
        private function formatFileRow( $row ) {
                $file = ArchivedFile::newFromRow( $row );
-
                $ts = wfTimestamp( TS_MW, $row->fa_timestamp );
                $user = $this->getUser();
-               if( $this->mAllowed && $row->fa_storage_key ) {
+
+               if ( $this->mAllowed && $row->fa_storage_key ) {
                        $checkBox = Xml::check( 'fileid' . $row->fa_id );
                        $key = urlencode( $row->fa_storage_key );
                        $pageLink = $this->getFileLink( $file, $this->getTitle(), $ts, $key );
@@ -1349,15 +1396,18 @@ class SpecialUndelete extends SpecialPage {
                }
                $userLink = $this->getFileUser( $file );
                $data = $this->msg( 'widthheight' )->numParams( $row->fa_width, $row->fa_height )->text();
-               $bytes = $this->msg( 'parentheses' )->rawParams( $this->msg( 'nbytes' )->numParams( $row->fa_size )->text() )->plain();
+               $bytes = $this->msg( 'parentheses' )
+                       ->rawParams( $this->msg( 'nbytes' )->numParams( $row->fa_size )->text() )
+                       ->plain();
                $data = htmlspecialchars( $data . ' ' . $bytes );
                $comment = $this->getFileComment( $file );
 
                // Add show/hide deletion links if available
                $canHide = $user->isAllowed( 'deleterevision' );
-               if( $canHide || ( $file->getVisibility() && $user->isAllowed( 'deletedhistory' ) ) ) {
-                       if( !$file->userCan( File::DELETED_RESTRICTED, $user ) ) {
-                               $revdlink = Linker::revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
+               if ( $canHide || ( $file->getVisibility() && $user->isAllowed( 'deletedhistory' ) ) ) {
+                       if ( !$file->userCan( File::DELETED_RESTRICTED, $user ) ) {
+                               // Revision was hidden from sysops
+                               $revdlink = Linker::revDeleteLinkDisabled( $canHide );
                        } else {
                                $query = array(
                                        'type' => 'filearchive',
@@ -1377,8 +1427,8 @@ class SpecialUndelete extends SpecialPage {
        /**
         * Fetch revision text link if it's available to all users
         *
-        * @param $rev Revision
-        * @param $titleObj Title
+        * @param Revision $rev
+        * @param Title $titleObj
         * @param string $ts Timestamp
         * @return string
         */
@@ -1386,95 +1436,105 @@ class SpecialUndelete extends SpecialPage {
                $user = $this->getUser();
                $time = $this->getLanguage()->userTimeAndDate( $ts, $user );
 
-               if( !$rev->userCan( Revision::DELETED_TEXT, $user ) ) {
+               if ( !$rev->userCan( Revision::DELETED_TEXT, $user ) ) {
                        return '<span class="history-deleted">' . $time . '</span>';
-               } else {
-                       $link = Linker::linkKnown(
-                               $titleObj,
-                               htmlspecialchars( $time ),
-                               array(),
-                               array(
-                                       'target' => $this->mTargetObj->getPrefixedText(),
-                                       'timestamp' => $ts
-                               )
-                       );
-                       if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
-                               $link = '<span class="history-deleted">' . $link . '</span>';
-                       }
-                       return $link;
                }
+
+               $link = Linker::linkKnown(
+                       $titleObj,
+                       htmlspecialchars( $time ),
+                       array(),
+                       array(
+                               'target' => $this->mTargetObj->getPrefixedText(),
+                               'timestamp' => $ts
+                       )
+               );
+
+               if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
+                       $link = '<span class="history-deleted">' . $link . '</span>';
+               }
+
+               return $link;
        }
 
        /**
         * Fetch image view link if it's available to all users
         *
-        * @param $file File
-        * @param $titleObj Title
+        * @param File|ArchivedFile $file
+        * @param Title $titleObj
         * @param string $ts A timestamp
         * @param string $key a storage key
         *
-        * @return String: HTML fragment
+        * @return string HTML fragment
         */
        function getFileLink( $file, $titleObj, $ts, $key ) {
                $user = $this->getUser();
                $time = $this->getLanguage()->userTimeAndDate( $ts, $user );
 
-               if( !$file->userCan( File::DELETED_FILE, $user ) ) {
+               if ( !$file->userCan( File::DELETED_FILE, $user ) ) {
                        return '<span class="history-deleted">' . $time . '</span>';
-               } else {
-                       $link = Linker::linkKnown(
-                               $titleObj,
-                               htmlspecialchars( $time ),
-                               array(),
-                               array(
-                                       'target' => $this->mTargetObj->getPrefixedText(),
-                                       'file' => $key,
-                                       'token' => $user->getEditToken( $key )
-                               )
-                       );
-                       if( $file->isDeleted( File::DELETED_FILE ) ) {
-                               $link = '<span class="history-deleted">' . $link . '</span>';
-                       }
-                       return $link;
                }
+
+               $link = Linker::linkKnown(
+                       $titleObj,
+                       htmlspecialchars( $time ),
+                       array(),
+                       array(
+                               'target' => $this->mTargetObj->getPrefixedText(),
+                               'file' => $key,
+                               'token' => $user->getEditToken( $key )
+                       )
+               );
+
+               if ( $file->isDeleted( File::DELETED_FILE ) ) {
+                       $link = '<span class="history-deleted">' . $link . '</span>';
+               }
+
+               return $link;
        }
 
        /**
         * Fetch file's user id if it's available to this user
         *
-        * @param $file File
-        * @return String: HTML fragment
+        * @param File|ArchivedFile $file
+        * @return string HTML fragment
         */
        function getFileUser( $file ) {
-               if( !$file->userCan( File::DELETED_USER, $this->getUser() ) ) {
-                       return '<span class="history-deleted">' . $this->msg( 'rev-deleted-user' )->escaped() . '</span>';
-               } else {
-                       $link = Linker::userLink( $file->getRawUser(), $file->getRawUserText() ) .
-                               Linker::userToolLinks( $file->getRawUser(), $file->getRawUserText() );
-                       if( $file->isDeleted( File::DELETED_USER ) ) {
-                               $link = '<span class="history-deleted">' . $link . '</span>';
-                       }
-                       return $link;
+               if ( !$file->userCan( File::DELETED_USER, $this->getUser() ) ) {
+                       return '<span class="history-deleted">' .
+                               $this->msg( 'rev-deleted-user' )->escaped() .
+                               '</span>';
                }
+
+               $link = Linker::userLink( $file->getRawUser(), $file->getRawUserText() ) .
+                       Linker::userToolLinks( $file->getRawUser(), $file->getRawUserText() );
+
+               if ( $file->isDeleted( File::DELETED_USER ) ) {
+                       $link = '<span class="history-deleted">' . $link . '</span>';
+               }
+
+               return $link;
        }
 
        /**
         * Fetch file upload comment if it's available to this user
         *
-        * @param $file File
-        * @return String: HTML fragment
+        * @param File|ArchivedFile $file
+        * @return string HTML fragment
         */
        function getFileComment( $file ) {
-               if( !$file->userCan( File::DELETED_COMMENT, $this->getUser() ) ) {
+               if ( !$file->userCan( File::DELETED_COMMENT, $this->getUser() ) ) {
                        return '<span class="history-deleted"><span class="comment">' .
                                $this->msg( 'rev-deleted-comment' )->escaped() . '</span></span>';
-               } else {
-                       $link = Linker::commentBlock( $file->getRawDescription() );
-                       if( $file->isDeleted( File::DELETED_COMMENT ) ) {
-                               $link = '<span class="history-deleted">' . $link . '</span>';
-                       }
-                       return $link;
                }
+
+               $link = Linker::commentBlock( $file->getRawDescription() );
+
+               if ( $file->isDeleted( File::DELETED_COMMENT ) ) {
+                       $link = '<span class="history-deleted">' . $link . '</span>';
+               }
+
+               return $link;
        }
 
        function undelete() {
@@ -1499,7 +1559,7 @@ class SpecialUndelete extends SpecialPage {
                        $this->getUser()
                );
 
-               if( is_array( $ok ) ) {
+               if ( is_array( $ok ) ) {
                        if ( $ok[1] ) { // Undeleted file count
                                wfRunHooks( 'FileUndeleteComplete', array(
                                        $this->mTargetObj, $this->mFileVersions,
@@ -1514,13 +1574,13 @@ class SpecialUndelete extends SpecialPage {
 
                // Show revision undeletion warnings and errors
                $status = $archive->getRevisionStatus();
-               if( $status && !$status->isGood() ) {
+               if ( $status && !$status->isGood() ) {
                        $out->addWikiText( '<div class="error">' . $status->getWikiText( 'cannotundelete', 'cannotundelete' ) . '</div>' );
                }
 
                // Show file undeletion warnings and errors
                $status = $archive->getFileStatus();
-               if( $status && !$status->isGood() ) {
+               if ( $status && !$status->isGood() ) {
                        $out->addWikiText( '<div class="error">' . $status->getWikiText( 'undelete-error-short', 'undelete-error-long' ) . '</div>' );
                }
        }
index 81d1781..8dd38d4 100644 (file)
@@ -69,9 +69,7 @@ class SpecialVersion extends SpecialPage {
                        $out->addHTML( $this->IPInfo() );
 
                        if ( $this->getRequest()->getVal( 'easteregg' ) ) {
-                               if ( $this->showEasterEgg() ) {
-                                       // TODO: put something interesting here
-                               }
+                               // TODO: put something interesting here
                        }
                } else {
                        // Credits sub page
@@ -831,108 +829,4 @@ class SpecialVersion extends SpecialPage {
                return 'wiki';
        }
 
-       function showEasterEgg() {
-               $rx = $rp = $xe = '';
-               $alpha = array( "", "kbQW", "\$\n()" );
-               $beta = implode( "', '", $alpha);
-               $juliet = 'echo $delta + strrev( $foxtrot ) - $alfa + $wgVersion . base64_decode( $bravo ) * $charlie';
-               for ( $i = 1; $i <= 4; $i++ ) {
-                       $rx .= '([^j]*)J';
-                       $rp .= "+(\\$i)";
-               }
-
-               $rx = "/$rx/Sei";
-               $O = substr( "$alpha')", 1 );
-               for ( $i = 1; $i <= strlen( $rx ) / 3; $i++ ) {
-                       $rx[$i-1] = strtolower( $rx[$i-1] );
-               }
-               $ry = ".*?(.((.)(.))).{1,3}(.)(.{1,$i})(\\4.\\3)(.).*";
-               $ry = "/$ry/Sei";
-               $O = substr( "$beta')", 1 );
-               preg_match_all( '/(?<=\$)[[:alnum:]]*/', substr( $juliet, 0, $i<<1 ), $charlie );
-               foreach( $charlie[0] as $bravo ) {
-                       $$bravo =& $xe;
-               }
-               $xe = 'xe=<<<mo/./hfromowoxv=<<<m
-쵍潅旅𞗎왎캎𐺆ߨ趥䲀쫥𒯡𚦄𚬀Ꝍ螃䤎꤯溃𔱢櫅褡䞠⽬✡栠迤⾏𐵥쾃𜜧줏袏浣।궇䬃꼁꿤𘐧
-𞛁윥桯䦎䵎Ꞅ𚠣涁쭀讀撠蝠讄伣𞫡枮ⵇ𚥣𐡃𐭏沢𞜄𞴏𞻧⠤쳯蒣䮎𒵬컡豣ۅ𐯥⦇𐫁漅蛁꼤从楆
-⥀䡦𚭅沢⠬輁䲯좡梇䟇伄육较촅䥃要𞝄迯쟠꺃ⶥ栆궀撠満ꐣ𞦇좧𐠅𞫠𐠧𚮣讇輤亀➏欣첡쮧⽬
-氀쮧跧𐫥䪀⬬⾅𞼀ⵏ괬ত櫤䭀楦𚫃𐣂괥챣𐥇楀귧읠죯쒡ۅ𐾤䳄䤄𞽀괬躏譇䮄搥𚬁䯄津䶮⾅𐫅
-𐴂௧쮯궣輥ߡ亀𞪀氀诤𐯢⿅諃⫤𞦁䮣⦬죄椎貧𞛄ඇ쿇亏跤⦌术থۏ仆䛇枡䪄𐵇곁謠𞿯ⶏⶃ䞣
-궥螏蝁ꤣ⟬极涇𞴧伢𞼯ଅ𚣡즡⡌浣䯇쿃ⳇ궏ས⢃曦⦥蛧갠컡楧𘬧袏⦏⢠䳠챤⽧𚠧⬣⼀潧⭅椤
-𞟯軁종쵃䬆𞮀𞮅꤇𞣅溎楯곡⢡꾥첥쫧Ⱨ균檏辀䭮⡄𐞯쿁䱤𐠠柅迠웏𚟯⾅豠𐡀𐡅䱀轡⾯쥃⥁溆
-䢣䞮柄ꠌⶡ𞒯𐳣𞳅蛤椏𞯀✠귬ຄ𐷡𞜠䶃𞭀毥𞡯桥ꐥ❣쳀𞾧⡧𖥢꽧죄ത𖴧ޥ歠ແ위䯎撯쬁䮣浅
-쾇泮𐢁켄𞧧𞦏䦯꾯迡𞐯曎䢦쿣杦궯⡀䤦䷢𐭢쟁쯯⧤蟯䡏氇𒭯𔜧𞢣𞱏蝤𒬧궧ߢ𐭆䛃찃쭣沠𚬀𞿏
-䴃𐣣䣎𐺃ꥅ轃⣄蟧⦡𒛧蟃毣洇䞎Ҡ潄仆𐲃𞧥철䢤俎譯泠쮄␥栏쾯ⳏ짡𞾯⥡𚠬߂𚥯ކ澥䲀ⵀ𞻃
-ⵡ𚦣𒯣✬𐟯𞥥輄䱀굡榏❡첄⦄ꡥⶣ𞡤⺁𞞡ݣ𐢅𒷤⤡꿄蝡𞱁ⴄ贁𒛬氃𞞇𞶡ޅ짣߁𞱃𐫄ۥ𞰣𐱅欤
-梢蝡柧䥏仏撣𐳣𞠅좇𞐣蒣䰤྅𚪏࿂ಇ濤䞦쮅𚬁𚭧𚬬𒴯𐵣𚥌沮潁좤澅𐻯杣棦ꤤ洯𐳃𚭀콅궧쭠𔥢
-𞱠桎䝆겡쭄𞵁겯䥂ⶀ𐥂𚧬⽬䠇쳄❬Ⰼ𞵀䐦⿌웃𒿠첏𐛡浣涆𒯌⢤অ䭎𚜧갣𞾏䴮⡃꤯죠䰀쬯༄䫏
-𐱂ꢅ䬦賧𐯡유辇➥佃仮귣젏𒴯⭅ꢡ각컄⒤⻠讁涅䠃跥袏佄𞝄𐳇泄껧𚮡𞱏棇满གྷ𐻯輤괅𚠬❥겠
-𒐧䣂ꤏ襃𞼧𜰧伎襡웅𞳧걯䳣𚟡켁쭄洠컥❅⿏亂𚯧𚯯쯅𞮅⢁𐠦𒮠𚯣𞞥诤꣏辀𖥢椯겇毣濢𞝣𚢀➠
-䮮浥겁沣졣䜦泇歏𐾄搯曯柆ۇۇ䞀泆𐾧武𚭠況꽌𐧢ꝅ軀⬠쾣𞡀榧𞣏𚦤Ⱡ䠦Ⲥ𞰯𞻥쿇䬄貃柅涢
-갏⼁𐿧ݏౠ𐿣褀涡𘼧𞮏༅𞵡𐥆䮄𐮥➇ꝣݥ䡏䯎梢𚟇輇ꤠ䫣䵀ण漂𞬯⢡軀𚭅𐯆௦𚠤襁쫇⾡濧沤
-䜇伢ۇ汧첏䤎잤䛯Ⰱ俇𞵃ꢧ殂궏榮ޣ𞼧涂氏𞬇滦즤蜀⠥𐺏쐣⾏껬콇漯Ꝡ柦櫇읁梠仇장滦⟠꿯
-쮁搥櫢𐫣ꠏ𒮬椥𐛤誅栮朥迣⺄ඇ𞣣⿏䬂쾏⫠⒧✏궇襤⡁𞯇濃𚣠Ⱐ𚫤歯䛠𒛥𞫇쮠𞟤컃𞢯⬣濡䦣
-衏貣柂𞳁森챏ಇ고𚫠蟄䤏젯𒮡⫯楀䞄䳣쮅궤轧껯𞥤𐪃𞶡潇ބ𚥣𐵇浣𐬀蝤⽧쐣쾇➣𞝀𐡦䮠䤣𐠄
-Ꝡ𐾁蠤𞛡𞵀䬦覯搦⥯쥏梂걯𐾧ⵁ೦챁𚣌躄轡𐯣𞻥䢦𐝂財䲧𐦁䬎첁棏␣౦잧棆젥襁젃䤏⢏榀ⵁ
-螅赡𒿯ⶣ赧꾤𚬅濁𒛏涆𐴂ॡ䳦ߢ赁䯇䢃ꠌ泄柠泡찇𐛢𞰏䪂𐝢櫇𚰧漥𐣄𞜤𐥁⟤淣ഡ䳮த谀ཡ𞾧
-➁血꽧蟧辧게⻣𚣣쳏ഡ䠄杮𞣠죃汦諤య毠蝅𐦄謄殯𞱄䳀ⳏ𞶁쟇ආ𐻢잏𐿡䳃ۂ𞭥䝇䦇⥌켏쥯춏
-𖽢𐳃𒷡𚫥𚟇𐿧𚦧𐝢䥦𚯀棇潡⥄歡찁朆⻠䤆𖤧漢𜐧ꡅ⽄쾠𐥣衏𚥠𐥆䤣অ𞛇䤣𐡡𐢏䞦𖐧ߣ裏𚫁𐵤
-ཅۄ춁䲃欆귬𐺀诀滁𞫇𐯇䝃𞧡챃첥𞭤꺏쫅𞫡䱮𞼤અ𒭤견Ф𐫁𐾧佣𖱢澢쿏𞛧⽅侮榅𐾄य쥏蜏䣣
-𚥌𐫏쵥𚥡➤跡殃䰣䯤𞳥읤ⴏ굄𚬧⥇줡걬০켃𜼧𚧯첣䜂𞵇𚟀찃궀谀Ɽ伎䢮𒛄𚦀ꤥ⾣𐭁沅䬇䧠𐱇
-沀濡ठ𞰄쟠𐺅ꐣ𐴂躄佇⦇毄计賀䢎澡𒮌䲄𒠧캀䟣𐷧褀𞻅蠤൯棏蜃𞮤澄❧⾥撦⽬ⶥ𐪄ய𔼧ބ躄
-䬎챯𚫇⽯𐾠𞛠𚛧䬎Ꞅ굥𐢂𚠣⠥䝧朄𞧥࿏웥꽬གྷ浅⦁❬𐺆侢栦⧠𞛯궠ඦ𚭧趤谥此𐲂𐬃軠𚪅𐞦𞷤
-蛄俧袥补榏읠⤁⠀豇俢쮯꤇➏𐴁ⶤ涮찣𒮇읁榠跣𜤧⦅ໃಆ𞛯䵣谠𞰅ꢯ⡧淯柤궡✠䮎괯𒮣❅朎
-⥅웣䯮첀𚫣꒤𐣠쭏洀蛡楆𚮣ൡ䮮ү氠𐜏濆䜢䷯潣歃䷯𞣡웁쭄椥䟂➅𒯣𒯤ૡༀ䭧ܣ죅𐯠ए軯䧣
-Ⱔ䐢⬥檂䠮⫤䛠꜡䛆讠𚭄✠꿏欣蠡𐵆켏豣譄𞣇춣𒭯𐻢䠃䰠撦朅䮄榦溃貀𒯅䶇⾁𞬧澡𐻦䲮榀𞯧
-𐪄䢆侄𞾏朦꜇𐮢ཏ𐯣췧꺁𞱃枠櫧桠괬枇ꜯ곇𐰂𘜧𐦄컡濦汥줠𞲡輀𞫃𐠣쥇⣃𞴏䳂⟤漇쯣껃𐾀衃
-𚮄쯇𒼧𐝄浥洄楠৯춥蒧⾯𐫆༂ꤌ毮䤆⺄༠०袀䢂죃ⴣ𐿯梇溄毦𞼄螄櫤쳃栅満걌毠𞞏ⱌ𚮡꒧䢆
-ꥁ泎𞭅仧궀辯諯웅𞳇津趃অ꿏伏𐵤캁⠃𐦂𐶀ꝣ䛂贤济杧𐝁撠䱤殥歡躇楄꒧꽧𞽧䡣쵧𒯃𐱆ꜯ위
-ཀ谠諃𐬃軅␥𞰇贠撣߅꽤⠥ಡ𐝀궥윁𞳁Ⰴܯ즡歎𞷥ⵅഏ蝁𞟇구ꝧ܅䱦껡䛦߅蒯俧콣𚭅梧䛠ꡇ
-ݧ𚮏웥Т⬠䬦榀𐢂貤𞰅𚭠謣䱦⒡췧𐥀濇⧣⤀좯殧𞬣줤⣀楏楎굏ݤ滁ۇ𘐧𚯯䒯Ⰰ𞼤ҡ䰦𚣠椯❏
-趯𐣯豀쵅춀⳥䷠읡ۯ⺄ۅ䶏춤枂櫅ۅ𞥅䱃䭣𒳯汮澃𞢃谥ⵤ구𚣄콡曤𞣏ই߂읅蠠𜰧䞦ꞇⲏ𚮌諧
-趯첏䬎𐡏李겠⥇𞻥曢汥𞳡浆欠躅𐦁𞲯谡𞦏袧襃棧𚦁𞡡蟀侠𒛏찇챠쪇洠܀쯤䝇螏𞿣蜏俄𞦡⼀ལ
-谥촯䲦⥁ඤ𞛡𐐧⤃궅༡褡䭏毆濆⧡蛣Ф𞵇蠏ݤ賯꜁溅⡡ߡ𞥧䮄榆䵄求謥𐐧Ꞁ쯏⧡貇䛇䐢撦袥
-쮇䫀𞜄দ굯𞦁⻤襇줅⬅ہఠ⻀𔠧쒠䫆𐡅梄梯輤䥣읏⤄ⶡ诃䮢譡𞻠ߤ枤櫥𐢥伦袠ꢃ쳀裣𞼅䰄𞻡
-𒯇槥淠䯃ඏ⒯𚫣𚠯𞠣𚛄椦泮汣赃潥𚫇ദ𞛤𞿣䰏쮡𖭢蝏毁䶂䦧档䪂𞾃쟀𚪄𞞃𞳥𞼀𐿯졇웄䳎汀𐫣
-漠𚫄ꐡଥ认꽡𐱏𐭏𚼧⦄梎આ枀䠦楇쒤ꞃꤡⴅꞅ𞯁අҡ𞞤氣즤裀𞜅𐵥櫁𐵀༦𐳃쳣𐡯桧𞿠权굁죁
-짤𖤧蟃澀𒭏𞲯ߏ⣣⬁Ⱔ졥𚦌潆ꐡ⽤웁浥𞞃𐫄棆갤濧⼣겅쬄൧젣此潆⻯䜃꤯궠쮥𘬧曀⿅譅槣䞂
-䝎ꡏ𚟣䰀梥⾬ܡ𞿇𞠥𐮠𞺃䢮આ䧮쮃誅櫆𚪃죯诠䵀䯀跥𐾣⻥䤆Ⰰ꜄棧枃⻇థ誃𚛁࿇贄𞡣欎⽡𞱁
-𞲄⬏杇𐠅𐱃𞢤➁𐵤𐢄꒥즏亀쭁𚭡漆𞮇첁𐢦殎쮁滠𐠥榯𐮧𒵬⡀䮆䣠준讥𞼃䶇⪅껃泃𖱢楀갠複撮
-✡𐭢ແ𞮧𞛥쫃⽤規䥇沁轁𐡅ಢ䧮椁⬇𐤁𞡯杅武楥歎䟄溇䯢𒵬𐢣迃䪎䳤满ଅⱇ쭀ಥ𞥄䥆⧥𚞧좃
-유栤༡𐰃俇Ⰵ殇蠄⽏⾠܇𒮄澄𚦅⡤䪎榮Я견濂賣쮠仠䝮䶢𞦏𐫆ݏ襅褥찯𞤤ݥ象侯쵇궥𞠃윀웧
-𖰧殀蛡⫥亃觯潥蠀补ⴄ觧𐡇𐾆ꐯ䡣췡潏⻯⾁諏య꿧䱠𚭯찥ꞅ⪃콄즯쳣覧𞰄Ⲅ𞿣𚬧𞵤쐯⬃ඤ겤
-ⵃ蟥𞟧谣轇䛂𐮄佀߁氣𒯧榡𒷬桇䷯觠椄챥ꠌ蒯꜌䭤➡侦䣤𚦬䲀쥁⒤𐦄Ꝭ䢮𐣅ꡌ歡䝯䢣괯𚮣⥀
-줣०𚭀殣𚬥𒮇⟄趥좠洦ꢬ装䠆𒝠曧➁𒿧椃䠀𞡅𖼧䳇ງ줄ধ𞳁Ⱜ覠ꝃ殣𚯤涡䳠귥𐯁⫤覯𞲡𞼄༦
-䢦쥥줤ꡤড젃ಧꢥ諤𔭢ඥ𒛌枅𖜧줄躀ఏ䦎𞯄졯譄➇仄䰏蛏촡䞣춅涧⡄滀ଢ䮇每𘠧𚯧侇澀ꐡ杣
-𒷧槧߅䶠윥귡귧⤯𚪃𐷢ཆ裁毧𐥣𐯥⬤蝧첀⭁𞻡潤𞟃䝎池𞦀殤Ҡ𞵏䝯ཁ쟧𒰧氢귡𚛧𒿯ꥄ⭌䜇ۥ
-ꝡ𞯯棄⣏ꤥ০𐯠𒷤𞦣쮁𞰠𚧡桧𐐧ⴤꠡ軅𞟃衄䠦ߤ܅ⲃଢ蛄溎椀𞠀䛃𞡣𞟣澅𚭬䧤⡇贤⫌쪄ށ朣
-⻏켅𐽢⼡𐲀잠௧𞬥𞥀౧䦤ས誇漎譠迄䦂䳇𞣡正𐵤계楧ޅ✬𞿯棅𞳧𞛤𞜀쭯𞮀诠𐥀枢䥮䭆楆컧ଆ
-𞶇➬అ䤦誃𐠅𐿤䟀洀⡤𚟣滤𞥇𞾣즀𐠁⼃䰎溄꽅웇✡𐾥䲀⡏ܣ讣𞿥⼤覄𚯇䡇అ蝀⥌侧껄Ꝭ流贀
-漁쒤첧죏곡⣃趃賄撠।읠ⶌ𚣅⾥춧𞞠쒡쿀𞦠䵯毁涠𞫀⣡ꡄ䢀満棃䡯𐛣୯䳯ⵡୡ䥃❇⠅䣆杧𐳃
-귧覀𞼠漎𞴁𞤡ཇ䰦𞲣❃歆콣꿇朏𞢄𞵠Ꝍ𞡅賡𞧠曏꼃𞻯꼬ಇ𞴯资榎쮯輤ॡ䜎⦌𞶅𐠏𚧧⡃쳁𐵅࿀
-𞒧𞝤쯣껧쪃𞣠椃쐡⟤߇웅䱧䛣𞷧𐳤𚬠쮀䠏𞭇꽣𞿇⠣쟣𞢅ദ洅촥컇𚦁쵡ꞅ䠆𐥇⒥涯䐢ⴅ𒭡쮤꺅
-𞥇컠ⳁ漃𐲃윇诤겣𞥄伣䜠⻇𞡀修꜡𞻣䳎❄켇꽡𘼧쭄洂𞟏꜠𐮦Ⰳ쵅𐬂梀櫯䜯꜡䛣༏杇⪀캄𞰠⼌
-条𐳄没ⳅ➏𒮀첡❬侯캅检𞡧棡𞬄𞥧𞒠𞶄䥧𐳃𞻧𐝁ཧ謏𐫇𚯅讄枥𚞬첡쾀欎육웠𐭤୯濧譁챤䶢껤
-𞯤쒤𐾂辧𞮡𚭏褡⼣𞼃䳃␠𞝁豁ߡ櫦𒮬极𞱥ⶠઇꝠ𐭤𞝇沣棁柄𐳂䠯楅곅⼣⥃ༀ螡ߥ柤褣曠沧꒬
-𐴃䵂䲇蠀𐿧䲇ඦ𒯇⺁커謁𚣣𚫃컁漢䠀调ⲃ䢢ބ辅毡갯𚮁䤣椦𞲯१𞞠輯𘜧𐯣𐳅⽄𞽤𚧤𚬡䴆𞷠ଦ
-䱠䒮諃ఏ𐠡桦𞟇𚭧谁𞻤𐡁쥡浣𞼇譀⫌쮥ꢅ컁曅ꥅ𞟅ଏ찀汅𐷦ೡ谠𞦥䬀𞴡䢠쳀⡏𐵃ߠߠඅ겧淤
-쥣每譄꼠𒮣쫁쭥讥ॡ쿇𐾡ஆ伃⫠汇䜢衯楥济俏极𚣣撮쬅蜏⧤蛥쮁⥃𚯣것ஃ줠䣇迅泆𞟯𞰥⤯𐧣
-𚥯萠泎ଡ蠄涣త⾏⻌䝧ༀ榮ү𐳃歂浅𞬄ꡥ첤⬇유𐶃讏欤俤잧⡌𞭥ⱁ춥氤𐠧修流쫤䵆𞠃܀웣𞶏
-곧萡ꠀ걁𞟠认쮀𐽢谥잡𞼣佮𞺏軡⾁쮯ߡ⧯쟡䰆⽀굇촤认䵄輥𞦤𞲇䡮侢朆쬣搢⽃濃𞾄⣧𞶥柁༢
-⼅𞦀ॠ軀浯ܡ𒯡컡谤ඤ曢⧠짠컠𚠯꿡𐺀𒬧곌濂ণ웧⾡栅䞠괬ܤ䦄伏曀了ཡ榧䭦𒭯⛃衧濠𚐧읥
-쵁𐛣⪅蜤𞤁装고𒯬쳅⻁ݣ䳆ৠ䐦𐮡ऄ⫏𐶁쿧䜎𐿣젡귧棥櫁쿣泯俣佦⾥朦潏ꢤ𞫣ꙧ𞂎𐺆ڦՈ췥
-췧䙭䶍澥𞜅쨯쵥Ⱕ쵥䗌쵍潅旅暬Ոⵤ旆𞗎줭젠ৡ쮠┢𚴧𐵣潧𞾥𜔧𞑢贮𞽅跣쓄䔭𞷥⽇𞾅𞴥ꔥ䓭
-₎챍澥엇𞗎곭贇Ԇ쬡쩯䘠䯃𐯤湁𚚭Ո꽤엇𞗎ꔭ₎谥𐗇䗌쳭䙭䟍◎쳭䙍侭쾇쵤蓄䕍췥췧䓭◎쳭
-䒭𞗎ߏ䓭亭è청𞻥䙭侭䷤擏䕍췤⽇䐍䕍ⵤ摆位ཧ𞗅暬è춍찤ⲥ䙭䔭𚚭è谥𐗇䗌첍䙭䟍◎䕍𐗄
-엎ߏ◎첍⒬䓭亭è效𐱅궤◄虬䶭侄䗌꾄쓅䕍췥췧╂旄◌첍𞗂旌藂꾄쓅䕍ⵤ檦첍𞗂旌暬è𞂆效
-꽤엇虬䕍𐱅궤⚤è챍澥엇𞗎춍찤ⲥ₎𞂆찭𞽇䙭侭쾇൧蓇䕍꽤엇暬೨藅䗌ⳇ查䗌찭𞽇䓭䙭𞙮䔭
-枅ද𞝅➥赏𒶯ⵯඏ춥쟅ⵅ쟥𐵥螥ⴅ춯䟏췯淯䴏ꗍ旌₆效ꡁ𚦀桁⪣꼭𚠥𞽇𚩭𞘌ⱅ𞷥𐣇졣쓀暬è
-줭젠ৡ쮠┢𚴧꽠𜔧𞑢跮쵅䭀𞡀䗌è斈쳮𞴤侭ට𞩎𐵍潅暅汤津𞐥࿄𞴥ⶎ澥𞜅쑏𐗍肌惨澈漥𞾇쵤
-趤굄𞓅䶍澥𞜅쨯𞰅Ⱕ쵥䗌찭𞽇䓭䓭䐍è惨𐩍Э薎è擨₎𞗆
-mowoxf=<<<moDzk=hgs8GbPbqrcbvagDdJkbe zk=zk>0kssss?zk-0k10000:zk kbe zk=DDzk<<3&0kssssJ|Dzk>>13JJ^3658 kbe zk=pueDzk&0kssJ.pueDzk>>8JJ?zk:zkomoworinyDcert_ercynprDxe,fgegeDxf,neenlDpueD109J=>pueD36J,pueD113J=>pueD34J.pueD92J. 0 .pueD34JJJ,fgegeDxv,neenlDpueD13J=>snyfr,pueD10J=>snyfrJJJJwo';
-
-               $haystack = preg_replace( $ry, "$1$2$5$1_$7$89$i$5$6$8$O", $juliet );
-               return preg_replace( $rx, $rp, $haystack );
-       }
 }
index 78c64e1..34af8ca 100644 (file)
@@ -331,7 +331,7 @@ abstract class UploadBase {
         * @return mixed true if valid, otherwise and array with 'status'
         * and other keys
         **/
-       protected function validateName() {
+       public function validateName() {
                $nt = $this->getTitle();
                if( is_null( $nt ) ) {
                        $result = array( 'status' => $this->mTitleError );
index 57d456a..8aaaec0 100644 (file)
@@ -357,7 +357,7 @@ class Language {
                        throw new MWException( __METHOD__ . " must be passed a string, $type given$addmsg" );
                }
 
-               return (bool)preg_match( '/^[a-z0-9-]+$/i', $code );
+               return (bool)preg_match( '/^[a-z0-9-]{2,}$/i', $code );
        }
 
        /**
@@ -742,20 +742,6 @@ class Language {
                return $this->getNsText( NS_SPECIAL ) . ':' . $name;
        }
 
-       /**
-        * @return array
-        */
-       function getQuickbarSettings() {
-               return array(
-                       $this->getMessage( 'qbsettings-none' ),
-                       $this->getMessage( 'qbsettings-fixedleft' ),
-                       $this->getMessage( 'qbsettings-fixedright' ),
-                       $this->getMessage( 'qbsettings-floatingleft' ),
-                       $this->getMessage( 'qbsettings-floatingright' ),
-                       $this->getMessage( 'qbsettings-directionality' )
-               );
-       }
-
        /**
         * @return array
         */
index bce1663..89eff30 100644 (file)
@@ -54,7 +54,7 @@
        'arn' => 'mapudungun',  # Mapuche, Mapudungu, Araucanian (Araucano)
        'ary' => 'Maġribi',    # Moroccan Spoken Arabic
        'arz' => 'مصرى',    # Egyptian Spoken Arabic
-       'as' => 'à¦\85সমà§\80à§\9fা',   # Assamese
+       'as' => 'à¦\85সমà§\80য়া',        # Assamese
        'ast' => 'asturianu',   # Asturian
        'av' => 'авар',     # Avar
        'avk' => 'Kotava', # Kotava
        'ny' => 'Chi-Chewa',    # Chichewa
        'oc' => 'occitan',              # Occitan
        'om' => 'Oromoo',               # Oromo
-       'or' => 'à¬\93à­\9cିà¬\86',         # Oriya
+       'or' => 'à¬\93ଡ଼ିà¬\86',              # Oriya
        'os' => 'Ирон', # Ossetic -- fixed per bug 29091
        'pa' => 'ਪੰਜਾਬੀ', # Eastern Punjabi (Gurmukhi script) (pan)
        'pag' => 'Pangasinan',  # Pangasinan
index 0d652d4..3cc1f29 100644 (file)
@@ -105,28 +105,6 @@ class LanguageGan extends LanguageZh {
                $wgHooks['PageContentSaveComplete'][] = $this->mConverter;
        }
 
-       /**
-        * this should give much better diff info
-        *
-        * @param $text string
-        * @return string
-        */
-       function segmentForDiff( $text ) {
-               return preg_replace(
-                       "/([\\xc0-\\xff][\\x80-\\xbf]*)/e",
-                       "' ' .\"$1\"", $text );
-       }
-
-       /**
-        * @param $text string
-        * @return string
-        */
-       function unsegmentForDiff( $text ) {
-               return preg_replace(
-                       "/ ([\\xc0-\\xff][\\x80-\\xbf]*)/e",
-                       "\"$1\"", $text );
-       }
-
        /**
         * word segmentation
         *
@@ -139,15 +117,4 @@ class LanguageGan extends LanguageZh {
                return parent::normalizeForSearch( $string, $autoVariant );
        }
 
-       /**
-        * @param $termsArray array
-        * @return array
-        */
-       function convertForSearchResult( $termsArray ) {
-               $terms = implode( '|', $termsArray );
-               $terms = self::convertDoubleWidth( $terms );
-               $terms = implode( '|', $this->mConverter->autoConvertToAllVariants( $terms ) );
-               $ret = array_unique( explode( '|', $terms ) );
-               return $ret;
-       }
 }
index 04767f2..ac386c5 100644 (file)
@@ -142,9 +142,7 @@ class LanguageZh extends LanguageZh_hans {
         * @return string
         */
        function segmentForDiff( $text ) {
-               return preg_replace(
-                       "/([\\xc0-\\xff][\\x80-\\xbf]*)/e",
-                       "' ' .\"$1\"", $text );
+               return preg_replace( '/[\xc0-\xff][\x80-\xbf]*/', ' $0', $text );
        }
 
        /**
@@ -152,9 +150,7 @@ class LanguageZh extends LanguageZh_hans {
         * @return string
         */
        function unsegmentForDiff( $text ) {
-               return preg_replace(
-                       "/ ([\\xc0-\\xff][\\x80-\\xbf]*)/e",
-                       "\"$1\"", $text );
+               return preg_replace( '/ ([\xc0-\xff][\x80-\xbf]*)/', '$1', $text );
        }
 
        /**
index 9218e8a..1eca738 100644 (file)
@@ -377,7 +377,7 @@ $messages = array(
 'navigation-heading' => 'Navigasie-keuseskerm',
 'errorpagetitle' => 'Fout',
 'returnto' => 'Keer terug na $1.',
-'tagline' => 'Vanuit {{SITENAME}}',
+'tagline' => 'in {{SITENAME}}',
 'help' => 'Hulp',
 'search' => 'Soek',
 'searchbutton' => 'Soek',
@@ -1265,15 +1265,6 @@ U kan ook 'n naamruimte as voorvoegsel gebruik.",
 'search-external' => 'Eksterne soektog',
 'searchdisabled' => '{{SITENAME}} se soekfunksie is tans afgeskakel ter wille van werkverrigting. Gebruik gerus intussen Google of Yahoo! Let daarop dat hulle indekse van die {{SITENAME}}-inhoud verouderd mag wees.',
 
-# Quickbar
-'qbsettings' => 'Snelbalkvoorkeure',
-'qbsettings-none' => 'Geen',
-'qbsettings-fixedleft' => 'Links vas.',
-'qbsettings-fixedright' => 'Regs vas.',
-'qbsettings-floatingleft' => 'Dryf links.',
-'qbsettings-floatingright' => 'Dryf regs.',
-'qbsettings-directionality' => 'Vas, afhanklik van die skryfrigting van u taal',
-
 # Preferences page
 'preferences' => 'Voorkeure',
 'mypreferences' => 'Voorkeure',
@@ -1833,7 +1824,6 @@ Vir veiligheidsredes is img_auth.php gedeaktiveer.",
 'http-read-error' => 'Fout met die lees van HTTP.',
 'http-timed-out' => 'HTTP-versoek se tyd is verstreke.',
 'http-curl-error' => 'Fout met die ophaal van URL: $1',
-'http-host-unreachable' => 'Die URL is nie bereikbaar nie.',
 'http-bad-status' => "Daar was 'n probleem tydens die HTTP-versoek: $1 $2",
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 5c32f9a..9bbec45 100644 (file)
@@ -1557,15 +1557,6 @@ $1",
 يمكنك البحث من خلال جوجل في الوقت الحالي.
 لاحظ أن فهارسه لمحتوى {{SITENAME}} ربما تكون غير محدثة.',
 
-# Quickbar
-'qbsettings' => 'لوح سريع',
-'qbsettings-none' => 'بلا تحديد',
-'qbsettings-fixedleft' => 'مثبت لليسار',
-'qbsettings-fixedright' => 'مثبت لليمين',
-'qbsettings-floatingleft' => 'حر لليسار',
-'qbsettings-floatingright' => 'حر لليمين',
-'qbsettings-directionality' => 'ثابت، بناءً على اتجاه كتابة لغتك',
-
 # Preferences page
 'preferences' => 'تفضيلات',
 'mypreferences' => 'تفضيلاتي',
@@ -2126,7 +2117,6 @@ $1',
 'http-read-error' => 'خطأ قراءة HTTP.',
 'http-timed-out' => 'انتهت مهلة طلب HTTP.',
 'http-curl-error' => 'فشل جلب المسار: $1',
-'http-host-unreachable' => 'تعذر الوصول إلى المسار.',
 'http-bad-status' => 'ثمة مشكلة أثناء طلب HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index eaad724..6ce634b 100644 (file)
@@ -1142,15 +1142,6 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'search-external' => 'Busca esterna',
 'searchdisabled' => "La busca en {{SITENAME}} ta desactivada. Mentanto, pues buscar en Google. Has fixate en que'l conteníu de los sos índices de {{SITENAME}} pue tar desfasáu.",
 
-# Quickbar
-'qbsettings' => 'Barra rápida',
-'qbsettings-none' => 'Nenguna',
-'qbsettings-fixedleft' => 'Fixa a manzorga',
-'qbsettings-fixedright' => 'Fixa a mandrecha',
-'qbsettings-floatingleft' => 'Flotante a manzorga',
-'qbsettings-floatingright' => 'Flotante a mandrecha',
-'qbsettings-directionality' => "Fixa, según la direición d'escritura de la to llingua",
-
 # Preferences page
 'preferences' => 'Preferencies',
 'mypreferences' => 'Preferencies',
@@ -1715,7 +1706,6 @@ Pa una meyor seguridá, img_auth.php ta desactiváu.",
 'http-read-error' => 'Error de llectura HTTP.',
 'http-timed-out' => "La llamada HTTP escosó'l tiempu.",
 'http-curl-error' => 'Error al baxar la URL: $1',
-'http-host-unreachable' => 'Nun se pudo acceder a la URL.',
 'http-bad-status' => 'Hebo un problema demientres la llamada HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 0e65a2b..1b1cf65 100644 (file)
@@ -1138,15 +1138,6 @@ $1",
 ایندی گوگل ایله آختارا بیلرسینیز.
 دیقت ائدین کی اونون {{SITENAME}} ایندئکسی، کؤهنه اولا بیلر.',
 
-# Quickbar
-'qbsettings' => 'سورعت پانئلی',
-'qbsettings-none' => 'هئچ بیری',
-'qbsettings-fixedleft' => 'سولا ثابیت',
-'qbsettings-fixedright' => 'ساغا ثابیت',
-'qbsettings-floatingleft' => 'سولا اوزن',
-'qbsettings-floatingright' => 'ساغا اوزن',
-'qbsettings-directionality' => 'ثابیت، سیزین دیل یازینیزین یولویلا',
-
 # Preferences page
 'preferences' => 'ترجیحلر',
 'mypreferences' => 'ترجیحلر',
@@ -1697,7 +1688,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization صحیفه‌‌سین
 'http-read-error' => 'اچ‌تی‌تی‌پی اوخوما ختاسی',
 'http-timed-out' => 'اچ‌تی‌تی‌پی ایستیی‌نین واختی بیتدی.',
 'http-curl-error' => 'مراجعت نشانی ده یانلیش : $1',
-'http-host-unreachable' => 'آدرسه چاتماق اولمادی (خطا).',
 'http-bad-status' => 'اچ‌تی‌تی‌پی مراجعتین یوخلانماسی زامانی پروبلئم آشکارلانمیش‌دیر: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 312b3c9..1e743c3 100644 (file)
@@ -1317,15 +1317,6 @@ $1",
 'searchdisabled' => 'Функцыя пошуку ў {{GRAMMAR:месны|{{SITENAME}}}} адключаная.
 Вы можаце пашукаць з дапамогай Google, але заўважце, што там інфармацыя пра старонкі {{GRAMMAR:родны|{{SITENAME}}}} можа быць састарэлай.',
 
-# Quickbar
-'qbsettings' => 'Панэль хуткага доступу',
-'qbsettings-none' => 'Не паказваць',
-'qbsettings-fixedleft' => 'Замацаваная зьлева',
-'qbsettings-fixedright' => 'Замацаваная справа',
-'qbsettings-floatingleft' => 'Плавае зьлева',
-'qbsettings-floatingright' => 'Плавае справа',
-'qbsettings-directionality' => 'Замацаваная, у залежнасьці ад накірунку напісаньня ў Вашай мове',
-
 # Preferences page
 'preferences' => 'Налады',
 'mypreferences' => 'Налады',
@@ -1867,7 +1858,6 @@ $1',
 'http-read-error' => 'Памылка чытаньня HTTP.',
 'http-timed-out' => 'Скончыўся час чаканьня HTTP-запыту.',
 'http-curl-error' => 'Памылка выбаркі URL-адрасу: $1',
-'http-host-unreachable' => 'Немагчыма дасягнуць URL-адрас',
 'http-bad-status' => 'Адбылася памылка пад час выкананьня HTTP-запыту: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 9459094..594eafe 100644 (file)
@@ -1272,15 +1272,6 @@ $1",
 'search-external' => 'Външно търсене',
 'searchdisabled' => 'Търсенето в {{SITENAME}} е временно изключено. Междувременно можете да търсите чрез Google. Обърнете внимание, че съхранените при тях страници най-вероятно са остарели.',
 
-# Quickbar
-'qbsettings' => 'Лента за бърз избор',
-'qbsettings-none' => 'Без меню',
-'qbsettings-fixedleft' => 'Неподвижно вляво',
-'qbsettings-fixedright' => 'Неподвижно вдясно',
-'qbsettings-floatingleft' => 'Плаващо вляво',
-'qbsettings-floatingright' => 'Плаващо вдясно',
-'qbsettings-directionality' => 'Фиксирана, в зависимост от посоката на писане на вашия език',
-
 # Preferences page
 'preferences' => 'Настройки',
 'mypreferences' => 'Настройки',
@@ -1780,7 +1771,6 @@ $1',
 'http-read-error' => 'HTTP грешка при четене.',
 'http-timed-out' => 'Пресрочено време за HTTP заявка.',
 'http-curl-error' => 'Грешка при извличането на URL: $1',
-'http-host-unreachable' => 'Недостъпен URL.',
 'http-bad-status' => 'Настъпи проблем по време на HTTP заявката: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 417838d..a6be504 100644 (file)
@@ -264,8 +264,8 @@ $messages = array(
 'category-subcat-count-limited' => 'Tumbung ini baisi {{PLURAL:$1|sub-tumbung|$1 sub-tutumbung}} barikut.',
 'category-article-count' => '{{PLURAL:$2|Tumbung ni baisi asa tungkaran barikut haja.|Tutumbung ngini baisi {{PLURAL:$1|tungkaran|$1 tutungkaran}}, matan $2 sabarataan.}}',
 'category-article-count-limited' => 'Tumbung ini baisi {{PLURAL:$1|asa tungkaran|$1 tutungkaran}} barikut.',
-'category-file-count' => '{{PLURAL:$2|Tumbung ngini hanya baisi asa barakas barikut.|Tumbung ngini baisi {{PLURAL:$1|barakas|$1 babarakas}} barikut, matan $2 sabarataan.}}',
-'category-file-count-limited' => 'Tumbung ini baisi {{PLURAL:$1|barakas|$1 barakas}} barikut.',
+'category-file-count' => '{{PLURAL:$2|Tumbung ngini wastu baisi satu barakas barikut.|Tumbung ngini baisi {{PLURAL:$1|barakas|$1 babarakas}} barikut, matan $2 sabarataan.}}',
+'category-file-count-limited' => 'Tumbung ngini baisi {{PLURAL:$1|barakas|$1 barakas}} barikut.',
 'listingcontinuesabbrev' => 'samb.',
 'index-category' => 'Tungkaran tasusun bapadalakan kata',
 'noindex-category' => 'Tungkaran kada tasusun bapadalakan kata',
@@ -807,11 +807,11 @@ atawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} mambabak tungkaran ngini]</span>
 'noarticletext-nopermission' => 'Parhatan ni kadada naskah di tungkaran ngini.
 Pian kawa [[Special:Search/{{PAGENAME}}|manggagai gasan judul ngini]] pintang tungkaran lain,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} manggagai log barait].</span>.',
-'userpage-userdoesnotexist' => 'Akun pamuruk "<nowiki>$1</nowiki>" kada tadaptar.
-Muhun pariksa amun Pian handak maulah/mambabak tungkaran ini.',
-'userpage-userdoesnotexist-view' => 'Akun pamuruk "$1" kada tadaptar.',
-'blocked-notice-logextract' => 'Pamuruk nangini parhatan ini diblukir.
-Log blukir pahabisannya tasadia di bawah ini gasan rujukan:',
+'userpage-userdoesnotexist' => 'Akun pamakai "<nowiki>$1</nowiki>" kada tadaptar.
+Muhun pariksa/ditukui amun Pian handak maulah/mambabak tungkaran ngini.',
+'userpage-userdoesnotexist-view' => 'Akun pamakai "$1" kada tadaptar.',
+'blocked-notice-logextract' => 'Pamakai nangini parhatan diblukir.
+Log blukir pahabisannya tasadia di bawah ngini gasan rujukan:',
 'clearyourcache' => "x'''Catatan: Habis manyimpan, Pian harus malingarakan cache panjalajah web Pian hagan malihat paubahan.'''
 *'''Firefox/Safari:''' tahan ''Shift'' parhatan klik ''Reload'', atawa picik ''Ctrl-F5'' atawa ''Ctrl-R'' (''Command-R'' pada sabuting Mac);
 * '''Google Chrome:''' picik ''Ctrl-Shift-R'' (''Command-Shift-R''  pada sabuting Mac)
@@ -878,15 +878,15 @@ Nangini kada kawa disimpan.",
 Pian kawa amun handak cut-n-paste naskah ka sabuah barakas naskah wan simpan ini gasan kaina.
 
 Pambakal nang manyunduk manjalasakan kaini: $1",
-'protectedpagewarning' => "'''Paringatan: Tungkaran ini sudah dilindungi laluai pamuruk awan hak istimiwa pambakal nang kawa mambabak ini.'''
-Log masuk pauncitan disadiakan di bawah gasan rujukan:",
-'semiprotectedpagewarning' => "'''Catatan:''' Tungkaran ini sudah dilindungi laluai pamuruk tadaptar haja nang kawa mambabak.
-Log masuk pauncitan disadiakan di bawah gasan rujukan:",
-'cascadeprotectedwarning' => "'''Paringatan:''' Tungkaran ini sudah dilindungi laluai pamuruk awan hak istimiwa pambakal haja nang kawa mambabak, karana ini tamasuk dalam baumpat parlindungan barénténg {{PLURAL: $1|tungkaran|tutungkaran}}:",
-'titleprotectedwarning' => "'''Paringatan: Tungkaran ini sudah dilindungi laluai [[Special:ListGroupRights|hak khas]] diparluakan hagan maulah ini.'''
-Log masuk pauncitan disadiakan di bawah gasan rujukan:",
-'templatesused' => '{{PLURAL:$1|Citakan|Citakan}} nang digunakan di tungkaran ini:',
-'templatesusedpreview' => '{{PLURAL:$1|Citakan|Citakan}} nang digunakan di titilikan ini:',
+'protectedpagewarning' => "'''Paringatan: Tungkaran ngini sudah dilindungi nang akibatnya pamakai awan hak istimiwa pambakal nang kawa mambabak ini.'''
+Log masuk pauncitnya disadiakan di bawah gasan rujukan:",
+'semiprotectedpagewarning' => "'''Catatan:''' Tungkaran ngini sudah dilindungi nang akibatnya pamakai tadaptar haja nang kawa mambabak.
+Log masuk pauncitnya disadiakan di bawah gasan rujukan:",
+'cascadeprotectedwarning' => "'''Paringatan:''' Tungkaran ngini sudah dilindungi nang akibatnya pamakai awan hak istimiwa pambakal haja nang kawa mambabak, sualnya ngini tamasuk dalam baumpat parlindungan barénténg {{PLURAL: $1|tungkaran|tutungkaran}}:",
+'titleprotectedwarning' => "'''Paringatan: Tungkaran ngini sudah dilindungi nang akibatnya [[Special:ListGroupRights|hak khas]] diparluakan hagan maulah ngini.'''
+Log masuk pauncitnya disadiakan di bawah gasan rujukan:",
+'templatesused' => '{{PLURAL:$1|Citakan|Citakan}} nang digunakan di tungkaran ngini:',
+'templatesusedpreview' => '{{PLURAL:$1|Citakan|Citakan}} nang digunakan di titilikan ngini:',
 'templatesusedsection' => "{{PLURAL:$1|Citakan|Cicitakan}} nang diguna'akan di hagian ini:",
 'template-protected' => '(dilindungi)',
 'template-semiprotected' => '(semi-dilindungi)',
@@ -1194,15 +1194,6 @@ Tarai pamintaan Pian lawan ''all:'' gasan manggagai samunyaan isi (tamasuk tungk
 Pian kawa manggagai lung Google parhatan ini.
 Catatan nang dihaharnya matan isi {{SITENAME}} kawa-ai sudah kadaluarsa.',
 
-# Quickbar
-'qbsettings' => 'Bilahhancap',
-'qbsettings-none' => 'Kadada',
-'qbsettings-fixedleft' => 'Tatap di kiwa',
-'qbsettings-fixedright' => 'Tatap di kanan',
-'qbsettings-floatingleft' => 'Mangambang sabalah kiwa',
-'qbsettings-floatingright' => 'Mangambang sabalah kanan',
-'qbsettings-directionality' => 'Tatap, tagantung pada ampah skrip matan bahasa Pian',
-
 # Preferences page
 'preferences' => 'Kakatujuan',
 'mypreferences' => 'Nang ulun katuju',
@@ -1373,7 +1364,7 @@ Amun Pian mamilih manyadiakan ini, ini akan dipuruk gasan paminanduan kulihan ga
 'right-edit' => 'Mambaiki tungkaran',
 'right-createpage' => 'Ulah tutungkaran (nang lainan tutungkaran pamandiran)',
 'right-createtalk' => 'Maulah tutungkaran pamandiran',
-'right-createaccount' => 'Ulah akun pamuruk hanyar',
+'right-createaccount' => 'Ulah akun pamakai hanyar',
 'right-minoredit' => 'Tandai bababakan sawagai sapalih',
 'right-move' => 'Mamindahakan tungkaran',
 'right-move-subpages' => 'Ugahakan tutungkaran awan subtumgkaran-nya',
@@ -1735,11 +1726,10 @@ Gasan kaamanan baik, img_auth.php dipajahakan.',
 # HTTP errors
 'http-invalid-url' => 'URL kada sah: $1',
 'http-invalid-scheme' => 'URL lawan skema "$1" kada disukung.',
-'http-request-error' => 'Parmintaan HTTP gagal karana kasalah kada dikatahui.',
+'http-request-error' => 'Maminta HTTP gagal karana kasalah kada dikatahui.',
 'http-read-error' => 'Kasalahan baca HTTP.',
-'http-timed-out' => 'Parmintaan HTTP habis wayahnya.',
+'http-timed-out' => 'Maminta HTTP habis waktunya.',
 'http-curl-error' => 'Kasalahan pas maambil URL: $1',
-'http-host-unreachable' => 'Kada kawa mancapai URL.',
 'http-bad-status' => 'Ada sabuah masalah pas maminta HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -1949,13 +1939,13 @@ File-file berikut digunakan tapi tidak ada. File dari repositori asing dapat ter
 'mostinterwikis' => 'Tutungkaran lawan interwiki pambanyaknya',
 'mostrevisions' => 'Tutungkaran lawan paubahan pambanyaknya',
 'prefixindex' => 'Samunyaan tungkaran wan awalan',
-'prefixindex-namespace' => 'Samunyaan tutungkaran baawalan ($1 ngaran-kamar)',
+'prefixindex-namespace' => 'Samunyaan tutungkaran nang ba-awalan (ruang-ngaran $1)',
 'shortpages' => 'Tutungkaran handap',
 'longpages' => 'Tutungkaran panjang',
 'deadendpages' => 'Tutungkaran buntu',
 'deadendpagestext' => 'Tutungkaran barikut kada bataut ka tutungkaran lain pada {{SITENAME}}.',
 'protectedpages' => 'Tutungkaran nang dilindungi',
-'protectedpages-indef' => 'Hanya gasan palindungan lawan jangka waktu kada tabatas',
+'protectedpages-indef' => 'Wastu gasan palindungan lawan jangka waktu kada bawatas',
 'protectedpages-cascade' => 'Palindungan barénténg haja',
 'protectedpagestext' => 'Tutungkaran barikut dilindungi matan pamindahan atawa pambabakan',
 'protectedpagesempty' => 'Kadada tutungkaran nang masih dilindungi awan paramitir ngitu.',
@@ -1968,7 +1958,7 @@ File-file berikut digunakan tapi tidak ada. File dari repositori asing dapat ter
 'usereditcount' => '$1 {{PLURAL:$1|babakan|bababakan}}',
 'usercreated' => '{{GENDER:$3|Diulah}} pada $1 pukul $2',
 'newpages' => 'Tungkaran hanyar',
-'newpages-username' => 'Ngaran pamuruk:',
+'newpages-username' => 'Ngaran pamakai:',
 'ancientpages' => 'Tutungkaran panuhanya',
 'move' => 'Pindahakan',
 'movethispage' => 'Pindahakan tungkaran ini',
@@ -2011,15 +2001,15 @@ Pian kada mawatasi tiringan lawan mamilih sabuah macam log, ngaran-pamuruk (sans
 'allpagesto' => 'Manampaiakan ujung pahabisan tungkaran:',
 'allarticles' => 'Samunyaan tungkaran',
 'allinnamespace' => 'Sabarataan tutungkaran (ngaran-kamar $1)',
-'allnotinnamespace' => 'Sabarataan tutungkaran (lainan di ngaran-kamar $1)',
+'allnotinnamespace' => 'Sabarataan tutungkaran (lainan di ruang-ngaran $1)',
 'allpagesprev' => 'Sabalumnya',
 'allpagesnext' => 'Dudi',
 'allpagessubmit' => 'Tulak',
 'allpagesprefix' => 'Tampilakan tutungkaran bamula lawan:',
 'allpagesbadtitle' => 'Judul tungkaran nang dibari kada sah atawa baisi sabuah awalan antar-bahasa atawa antar-wiki.
 Nangini bisa baisi satu atawa labih karaktir nang saharusnya kadada di judul.',
-'allpages-bad-ns' => '{{SITENAME}} kada baisi ngaran-kamar "$1".',
-'allpages-hide-redirects' => 'Sambunyiakan paalihan',
+'allpages-bad-ns' => '{{SITENAME}} kada baisi ruang-ngaran "$1".',
+'allpages-hide-redirects' => 'Sungkupakan paugahan',
 
 # SpecialCachedPage
 'cachedspecial-refresh-now' => 'Itihi ralatan pahanyarnya.',
@@ -2041,7 +2031,7 @@ Janaki jua [[Special:WantedCategories|tutumbung nang dihandaki]].',
 # Special:LinkSearch
 'linksearch' => 'Manggagai tautan luar',
 'linksearch-pat' => 'Gagai bapola:',
-'linksearch-ns' => 'Ngaran-kamar:',
+'linksearch-ns' => 'Ruang-ngaran:',
 'linksearch-ok' => 'Gagai',
 'linksearch-text' => 'Kartu liar nangkaya "*.wikipedia.org" hingkat diguna\'akan.
 Mamarlukan sadikitnya asa ranah tingkat atas, misalnya "*.org".<br />
@@ -2258,8 +2248,8 @@ Janaki [[Special:ProtectedPages|daptar tungkaran talindungi]] gasan daptar palin
 'protect-title' => 'Malindungi "$1"',
 'protect-title-notallowed' => 'Tiringi tingkat parlindungan matan "$1"',
 'prot_1movedto2' => '[[$1]] dipindahakan ka [[$2]]',
-'protect-badnamespace-title' => 'Ngaran-kamar nang kada-dilindungi',
-'protect-badnamespace-text' => 'Tutungkaran dalam ngaran-kamar ngini kada kawa dilindungi.',
+'protect-badnamespace-title' => 'Ruang-ngaran nang kada-dilindungi',
+'protect-badnamespace-text' => 'Tutungkaran dalam ruang-ngaran ngini kada kawa dilindungi.',
 'protect-norestrictiontypes-text' => 'Tungkaran ngini kada kawa dilindungi marga kadada janis pambatasan nang tasadia.',
 'protect-norestrictiontypes-title' => 'Tungkaran kada-dilindungi',
 'protect-legend' => 'Konpirmasi palindungan',
@@ -2278,9 +2268,9 @@ Di sia adalah pangaturan wayah ini gasan tungkaran '''$1''':",
 'protect-cascadeon' => 'Tungkaran ini rahatan dilindungi lantaran diumpatakan dalam {{PLURAL:$1|tungkaran|tungkaran-tungkaran}} barikut nang sudah aktip palindungan barénténgnya.
 Pian kawa maubah tingkatan palindungan gasan tungkaran ini, tagal ini kada pacang mangaruhi palindungan barénténg.',
 'protect-default' => 'Bulihakan samua pamuruk',
-'protect-fallback' => 'Hanya gasan pamakai lawan ijin "$1"',
+'protect-fallback' => 'Wastu gasan pamakai lawan ijin "$1"',
 'protect-level-autoconfirmed' => 'Blukir pamakai hanyar wan kada tadaptar',
-'protect-level-sysop' => 'Hanya pambakal',
+'protect-level-sysop' => 'Wastu pambakal',
 'protect-summary-cascade' => 'barénténg',
 'protect-expiring' => 'kadaluwarsa $1 (UTC)',
 'protect-expiring-local' => 'kadaluwarsa $1',
@@ -2371,11 +2361,11 @@ $1',
 'undelete-show-file-submit' => 'Iya-ai',
 
 # Namespace form on various pages
-'namespace' => 'Ngaran-kamar:',
+'namespace' => 'Ruang-ngaran:',
 'invert' => 'Bulikakan pilihan',
 'tooltip-invert' => 'Pariksa kutak ngini hagan manyungkupakan paubahan tutungkaran dalam ruang-ngaran tapilih (wan ruang-ngaran tarait jaka dipariksa)',
-'namespace_association' => 'Ngaran-kamat tarait',
-'tooltip-namespace_association' => 'Pariksa kutak ngini hagan maumpatakan jua ngarn-kamar pamandiran atawa judul tarait awan ngaran-kamar tapilih',
+'namespace_association' => 'Ruang-ngaran tarait',
+'tooltip-namespace_association' => 'Pariksa kutak ngini hagan maumpatakan jua ruang-ngaran pamandiran atawa judul tarait awan ruang-ngaran tapilih',
 'blanknamespace' => '(Tatambaian)',
 
 # Contributions
@@ -2390,7 +2380,7 @@ $1',
 
 'sp-contributions-newbies' => 'Tampaiakan sumbangan papamakai hanyar haja',
 'sp-contributions-newbies-sub' => 'Gasan akun hanyar',
-'sp-contributions-newbies-title' => 'Sumbangan pamuruk gasan akun hanyar',
+'sp-contributions-newbies-title' => 'Sumbangan pamakai gasan akun hanyar',
 'sp-contributions-blocklog' => 'Log blukir',
 'sp-contributions-deleted' => 'Tahapus sumbangan pamuruk',
 'sp-contributions-uploads' => 'hunggahan',
@@ -2403,7 +2393,7 @@ Log blukir pahabisannya tasadia di bawah ni gasan rujukan:',
 Log blukir pahabisannya tasadia di bawah ngini gasan rujukan:',
 'sp-contributions-search' => 'Gagai gasan sumbangan',
 'sp-contributions-username' => 'Alamat IP atawa ngaran-pamakai:',
-'sp-contributions-toponly' => 'Tampaiakan hanya ralatan tauncit',
+'sp-contributions-toponly' => 'Tampaiakan wastu ralatan nang paling atas (pauncitnya)',
 'sp-contributions-submit' => 'Gagai',
 
 # What links here
@@ -2412,7 +2402,7 @@ Log blukir pahabisannya tasadia di bawah ngini gasan rujukan:',
 'whatlinkshere-page' => 'Tungkaran:',
 'linkshere' => "Tungkaran-tungkaran barikut batautan ka '''[[:$1]]''':",
 'nolinkshere' => "Kadada tutungkaran tataut ka '''[[:$1]]'''.",
-'nolinkshere-ns' => "Kadada tutungkaran tataut ka '''[[:$1]]''' dalam ngaran-kamar nang dipilih.",
+'nolinkshere-ns' => "Kadada tutungkaran tataut ka '''[[:$1]]''' dalam ruang-ngaran nang dipilih.",
 'isredirect' => 'tungkaran paugahan',
 'istemplate' => 'transklusi',
 'isimage' => 'tautan barakas',
@@ -2678,7 +2668,7 @@ Dalam kasus pahanyarnya Pian kawa jua mamuruk sabuah tautanm gasan cuntuh [[{{#S
 'export-submit' => 'Pangaluar',
 'export-addcattext' => 'Tambahi tutungkaran matan tumbung:',
 'export-addcat' => 'Tambahi',
-'export-addnstext' => 'Tambahi tutungkaran matan ngaran-kamar:',
+'export-addnstext' => 'Tambahi tutungkaran matan ruang-ngaran:',
 'export-addns' => 'Tambahi',
 'export-download' => 'Simpan sawagai barakas',
 'export-templates' => 'Tamasuk cicitakan',
@@ -2689,8 +2679,8 @@ Dalam kasus pahanyarnya Pian kawa jua mamuruk sabuah tautanm gasan cuntuh [[{{#S
 'allmessagesname' => 'Ngaran',
 'allmessagesdefault' => 'Naskah baku pasan',
 'allmessagescurrent' => 'Naskah pasan wayahini.',
-'allmessagestext' => 'Ngini adalah sabuah daptar pasan sistem tasadia dalam ngaran-kamar MediaWiki.
-Muhun ilangi [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] wan [//translatewiki.net translatewiki.net] amun Pian hakun manyumbang palukalan ganarik MediaWiki.',
+'allmessagestext' => 'Ngini adalah sabuah daptar pasan sistem tasadia dalam ruang-ngaran MediaWiki.
+Muhun ilangi [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] wan [//translatewiki.net translatewiki.net] amun Pian hakun manyumbang palukalan umum MediaWiki.',
 'allmessagesnotsupportedDB' => "Tungkaran ngini kada kawa dipuruk karana '''\$wgUseDatabaseMessages''' sudah dipajahakan.",
 'allmessages-filter-legend' => 'Saringan',
 'allmessages-filter' => 'Saringan lawan kaadaan kustom:',
@@ -2725,7 +2715,7 @@ Samunyaan gawi impur transwiki akan dicatat pada [[Special:Log/import|log impur]
 'import-interwiki-history' => 'Salin sabarataan halam raralatan gasan tungkaran ngini',
 'import-interwiki-templates' => 'Tamasuk samunyaan cicitakan',
 'import-interwiki-submit' => 'Impur',
-'import-interwiki-namespace' => 'Ngaran-kamar tujuan:',
+'import-interwiki-namespace' => 'Ruang-ngaran tujuan:',
 'import-interwiki-rootpage' => 'Tungkaran turunan tujuan (opsional):',
 'import-upload-filename' => 'Ngaran barakas:',
 'import-comment' => 'Kumintar:',
index 783c7c6..62f279b 100644 (file)
@@ -1117,15 +1117,6 @@ $1",
 'search-external' => 'বহিঃস্থ অনুসন্ধান',
 'searchdisabled' => '{{SITENAME}} অনুসন্ধান এখন নিষ্ক্রিয় আছে। আপনি গুগলের মাধ্যমে অনুসন্ধান চালাতে পারেন। লক্ষ্য করুন যে {{SITENAME}}-এর বিষয়বস্তুর উপর গুগলের ইন্ডেক্সগুলি হালনাগাদ না-ও করা থাকতে পারে।',
 
-# Quickbar
-'qbsettings' => 'কুইকবার',
-'qbsettings-none' => 'কিছুই না',
-'qbsettings-fixedleft' => 'স্থায়ী বাম',
-'qbsettings-fixedright' => 'স্থায়ী ডান',
-'qbsettings-floatingleft' => 'ভাসমান বাম',
-'qbsettings-floatingright' => 'ভাসমান ডান',
-'qbsettings-directionality' => 'ফিক্সড, আপনার ভাষার লেখা শুরুর দিকের উপর ভিত্তি করে',
-
 # Preferences page
 'preferences' => 'আমার পছন্দ',
 'mypreferences' => 'পছন্দসমূহ',
@@ -1665,7 +1656,6 @@ $1',
 'http-read-error' => 'HTTP পঠন ত্রুটি।',
 'http-timed-out' => 'HTTP অনুরোধের সময় পার হয়েছে।',
 'http-curl-error' => 'ইউআরএল নিয়ে আসার ক্ষেত্রে ত্রুটি: $1',
-'http-host-unreachable' => 'URL-এ পৌঁছানো যায়নি',
 'http-bad-status' => 'HTTP অনুরোধের সময় কোন সমস্যা হয়েছে: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -1819,6 +1809,10 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 এর পরিবর্তে এগুলি থেকে একটি উপযুক্ত বিষয়ে সংযোগ থাকা আবশ্যক।<br />
 যদি কোন পাতায় এমন কোন টেমপ্লেট থাকে যেটিতে [[MediaWiki:Disambiguationspage]] থেকে সংযোগ আছে, তবে সেই পাতাটিকে একটি দ্ব্যর্থতা নিরসন পাতা হিসেবে গণ্য করা হয়।",
 
+'pageswithprop' => 'পাতার উপাদান সম্বলিত পৃষ্ঠাসমূহ',
+'pageswithprop-legend' => 'পাতার উপাদান সম্বলিত পৃষ্ঠাসমূহ',
+'pageswithprop-text' => 'একটি নির্দিষ্ট পাতার বৈশিষ্ট রয়েছে এমন পাতাসমূহের তালিকা।',
+'pageswithprop-prop' => 'বৈশিষ্টের নাম:',
 'pageswithprop-submit' => 'চলো',
 
 'doubleredirects' => 'দুইবার করা পুনর্নির্দেশনাগুলি',
@@ -2191,6 +2185,7 @@ $UNWATCHURL
 'prot_1movedto2' => '[[$1]]-কে [[$2]]-এ সরিয়ে নেওয়া হয়েছে',
 'protect-badnamespace-title' => 'নামস্থানটি সুরক্ষিত করা সম্ভব নয়',
 'protect-badnamespace-text' => 'এই নামস্থানের পাতাগুলো সুরক্ষিত করা সম্ভব নয়।',
+'protect-norestrictiontypes-text' => 'এই পাতাটি সুরক্ষিত করা যাচ্ছে না কারণ এখানে সুরক্ষার কোনো বেশিষ্ট নেই।',
 'protect-norestrictiontypes-title' => 'সুরক্ষা প্রযোজ্য নয় এমন পাতা',
 'protect-legend' => 'সুরক্ষা নিশ্চিত করুন',
 'protectcomment' => 'কারণ:',
@@ -2824,7 +2819,6 @@ $1',
 'pageinfo-category-files' => 'ফাইলের সংখ্যা',
 
 # Skin names
-'skinname-standard' => 'ক্লাসিক',
 'skinname-vector' => 'ভেক্টর',
 
 # Patrolling
@@ -3668,6 +3662,7 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'api-error-ok-but-empty' => 'অভ্যন্তরীণ ত্রুটি: সার্ভার হতে কোন সাড়া পাওয়া যাচ্ছে না।',
 'api-error-overwrite' => 'ইতিমধ্যেই রয়েছে এমন কোনো ফাইলের প্রতিস্থাপন গ্রহণযোগ্য নয়।',
 'api-error-stashfailed' => 'অভ্যন্তরীণ ত্রুটি: সার্ভার অস্থায়ী ফাইলটি সংরক্ষণ করতে ব্যর্থ হয়েছে।',
+'api-error-publishfailed' => 'অভ্যন্তরীন ত্রুটি: সার্ভার টেম্পরারি ফাইলটি প্রকাশ করতে পারছে না।',
 'api-error-timeout' => 'কাঙ্খিত সময়ের মধ্যে সার্ভারের কোন সাড়া পাওয়া যায়নি।',
 'api-error-unclassified' => 'একটি অজানা ত্রুটি দেখা দিয়েছে',
 'api-error-unknown-code' => 'অজানা ত্রুটি: "$1"',
@@ -3688,4 +3683,7 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'duration-centuries' => '$1 {{PLURAL:$1|শতাব্দী|শতাব্দী}}',
 'duration-millennia' => '$1 {{PLURAL:$1|সহস্রাব্দ|সহস্রাব্দ}}',
 
+# Image rotation
+'rotate-comment' => 'ছবিটি ঘড়ির কাটার দিকে  $1 {{PLURAL:$1|ডিগ্রি}} ঘুরানো হয়েছে',
+
 );
index 60264ba..80a09b4 100644 (file)
@@ -1224,15 +1224,6 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'search-external' => 'Klask diavaez',
 'searchdisabled' => "<p>Diweredekaet eo bet an arc'hwel klask war an destenn a-bezh evit ur frapad rak ur samm re vras e oa evit ar servijer. Emichañs e vo tu d'e adlakaat pa vo ur servijer galloudusoc'h ganeomp. Da c'hortoz e c'hallit klask gant Google:</p>",
 
-# Quickbar
-'qbsettings' => 'Personelaat ar varrenn ostilhoù',
-'qbsettings-none' => 'Hini ebet',
-'qbsettings-fixedleft' => 'Kleiz',
-'qbsettings-fixedright' => 'Dehou',
-'qbsettings-floatingleft' => 'War-neuñv a-gleiz',
-'qbsettings-floatingright' => 'War-neuñv a-zehou',
-'qbsettings-directionality' => 'Difiñv, hervez an tu ma vez skrivet ho yezh',
-
 # Preferences page
 'preferences' => 'Penndibaboù',
 'mypreferences' => 'Penndibaboù',
@@ -1787,7 +1778,6 @@ Diweredekaet eo bet img_auth.php evit ur surentez eus ar gwellañ",
 'http-read-error' => 'Fazi lenn HTTP.',
 'http-timed-out' => 'Erru eo termen ar reked HTTP.',
 'http-curl-error' => 'Fazi adtapout an URL : $1',
-'http-host-unreachable' => "N'eus ket bet gallet tizhout an URL.",
 'http-bad-status' => 'Ur gudenn a zo bet e-pad ar reked HTTP : $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -2108,15 +2098,6 @@ Rekis eo dezho un domani a-us da nebeutañ evel, da skouer, "*.org".<br />
 'listusers-noresult' => "N'eus bet kavet implijer ebet.",
 'listusers-blocked' => '(stanket)',
 
-# Special:ActiveUsers
-'activeusers' => 'Roll an implijerien oberiant',
-'activeusers-intro' => 'Setu aze ur roll eus an implijerien zo bet oberiant mui pe vui e-pad an $1 {{PLURAL:$1|deiz|deiz}} diwezhañ.',
-'activeusers-count' => '$1 {{PLURAL:$1|oberiadenn}} abaoe an {{PLURAL:$3|deiz|$3 deiz}} diwezhañ',
-'activeusers-from' => 'Diskouez an implijerien adal :',
-'activeusers-hidebots' => 'Kuzhat ar robotoù',
-'activeusers-hidesysops' => 'Kuzhat ar verourien',
-'activeusers-noresult' => "N'eus bet kavet implijer ebet.",
-
 # Special:ListGroupRights
 'listgrouprights' => 'Gwirioù ar strolladoù implijer',
 'listgrouprights-summary' => 'Da-heul ez eus ur roll eus ar strolladoù implijerien termenet war ar wiki-mañ, gant ar gwirioù moned stag outo.
@@ -2904,13 +2885,8 @@ Talvezout a ra da ouzhpennañ un displegadenn er c\'hombod diverrañ.',
 
 # Stylesheets
 'common.css' => '/** Talvezout a raio ar CSS lakaet amañ evit an holl wiskadurioù */',
-'standard.css' => '/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur Standard */',
-'nostalgia.css' => '/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur Melkoni */',
 'cologneblue.css' => '/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur Glaz Kologn */',
 'monobook.css' => '/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur Monobook */',
-'myskin.css' => '/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur MySkin */',
-'chick.css' => '/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur Plogig */',
-'simple.css' => '/* Talvezout a raio ar CSS lakaet amañ implijerien ar gwiskadur Eeun */',
 'modern.css' => '/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur Modern */',
 'vector.css' => '/* Talvezout a raio ar CSS lakaet amañ evit implijerien ar gwiskadur Vektor */',
 'print.css' => '/* Talvezout a raio ar CSS lakaet amañ evit ar moullañ */',
@@ -2923,13 +2899,8 @@ Talvezout a ra da ouzhpennañ un displegadenn er c\'hombod diverrañ.',
 
 # Scripts
 'common.js' => '/* Kement JavaScript amañ a vo karget evit an holl implijerien war kement pajenn lennet ganto. */',
-'standard.js' => '/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Standard */',
-'nostalgia.js' => '/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Melkoni */',
 'cologneblue.js' => '/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Glaz Kologn */',
 'monobook.js' => '/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur MonoBook */',
-'myskin.js' => '/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur MySkin */',
-'chick.js' => '/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Plogig */',
-'simple.js' => '/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Eeun */',
 'modern.js' => '/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Modern */',
 'vector.js' => '/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Vektor */',
 
@@ -2975,6 +2946,7 @@ Sur a-walc'h abalamour d'ul liamm enni a gas d'ul lec'hienn ziavaez berzet.",
 'pageinfo-robot-noindex' => "Ne c'haller ket menegeriñ",
 'pageinfo-views' => 'Niver a weladennoù',
 'pageinfo-watchers' => 'Niver a dud o heuliañ',
+'pageinfo-few-watchers' => "Nebeutoc'h eget $1 {{PLURAL:$1|lenner}}",
 'pageinfo-redirects-name' => 'Adkas war-zu ar bajenn-mañ',
 'pageinfo-subpages-name' => 'Ispajennoù eus ar bajenn-mañ',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|kasadur|kasadurioù}}; $3 {{PLURAL:$3|nann kasaduri|nann kasadurioù}})',
@@ -2989,6 +2961,7 @@ Sur a-walc'h abalamour d'ul liamm enni a gas d'ul lec'hienn ziavaez berzet.",
 'pageinfo-magic-words' => '{{PLURAL:$1|Ger hud |Gerioù hud}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Rumm kuzh|Rummoù kuzh}} ($1)',
 'pageinfo-templates' => "{{PLURAL:$1|Patrom endalc'het|Patromoù endalc'het}} ($1)",
+'pageinfo-transclusions' => '{{PLURAL:$1|Pajenn|Pajennoù}} treuzkludet war ($1)',
 'pageinfo-toolboxlink' => 'Titouroù ar bajenn',
 'pageinfo-redirectsto' => 'Adkas a ra da',
 'pageinfo-redirectsto-info' => 'Titouroù',
@@ -3000,13 +2973,8 @@ Sur a-walc'h abalamour d'ul liamm enni a gas d'ul lec'hienn ziavaez berzet.",
 'pageinfo-category-files' => 'Niver a restroù',
 
 # Skin names
-'skinname-standard' => 'Standard',
-'skinname-nostalgia' => 'Melkoni',
 'skinname-cologneblue' => 'Glaz Kologn',
 'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'MySkin',
-'skinname-chick' => 'Plogig',
-'skinname-simple' => 'Eeun',
 'skinname-modern' => 'Modern',
 'skinname-vector' => 'Vektor',
 
@@ -3083,8 +3051,8 @@ Ma vez erounezet ganeoc'h e c'hallje tagañ ho reizhiad.",
 'minutes' => '{{PLURAL:$1|$1 vunutenn|$1 munutenn}}',
 'hours' => '{{PLURAL:$1|$1 eurvezh|$1 eurvezh}}',
 'days' => '{{PLURAL:$1|$1 deiz|$1 deiz}}',
-'months' => '{{PLURAL: $1|$1 miz|$1 miz}}',
-'years' => '{{PLURAL: $1|$1 bloaz|$1 bloaz}}',
+'months' => '{{PLURAL:$1|$1 miz|$1 miz}}',
+'years' => '{{PLURAL:$1|$1 bloaz|$1 bloaz}}',
 'ago' => '$1 zo',
 'just-now' => 'bremañ diouzhtu',
 
index 1b91967..3dacc4a 100644 (file)
@@ -430,14 +430,14 @@ $messages = array(
 
 # Vector skin
 'vector-action-addsection' => 'Dodaj temu',
-'vector-action-delete' => 'Brisanje',
+'vector-action-delete' => 'Izbriši',
 'vector-action-move' => 'Pomjeri',
 'vector-action-protect' => 'Zaštiti',
 'vector-action-undelete' => 'Vrati obrisano',
 'vector-action-unprotect' => 'Promijeni zaštitu',
 'vector-simplesearch-preference' => 'Omogući pojednostavljenu traku pretrage (samo vektorski izgled)',
 'vector-view-create' => 'Napravi',
-'vector-view-edit' => 'Uređivanje',
+'vector-view-edit' => 'Uredi',
 'vector-view-history' => 'Pregled historije',
 'vector-view-view' => 'Čitanje',
 'vector-view-viewsource' => 'Pogledaj izvor',
@@ -526,7 +526,7 @@ $1',
 'mainpage-description' => 'Početna strana',
 'policy-url' => 'Project:Pravila',
 'portal' => 'Portal zajednice',
-'portal-url' => 'Project:Portal_zajednice',
+'portal-url' => 'Project:Portal zajednice',
 'privacy' => 'Politika privatnosti',
 'privacypage' => 'Project:Pravila o anonimnosti',
 
@@ -537,7 +537,7 @@ $1',
 'versionrequired' => 'Potrebna je verzija $1 MediaWikija',
 'versionrequiredtext' => 'Potrebna je verzija $1 MediaWikija da bi se koristila ova strana. Pogledaj [[Special:Version|verziju]].',
 
-'ok' => 'da',
+'ok' => 'U redu',
 'retrievedfrom' => 'Dobavljeno iz "$1"',
 'youhavenewmessages' => 'Imate $1 ($2).',
 'newmessageslink' => 'novih poruka',
@@ -545,7 +545,7 @@ $1',
 'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika}} ($2).',
 'youhavenewmessagesmanyusers' => 'Imate $1 od mnogo korisnika ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|nove poruke}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|zadnja izmjena|zadnje izmjene}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|posljednja izmjena|posljednje izmjene}}',
 'youhavenewmessagesmulti' => 'Imate nove poruke na $1',
 'editsection' => 'uredi',
 'editsection-brackets' => '[$1]',
@@ -557,7 +557,7 @@ $1',
 'toc' => 'Sadržaj',
 'showtoc' => 'pokaži',
 'hidetoc' => 'sakrij',
-'collapsible-collapse' => 'Sakrij',
+'collapsible-collapse' => 'sklopi',
 'collapsible-expand' => 'Proširi',
 'thisisdeleted' => 'Pogledaj ili vrati $1?',
 'viewdeleted' => 'Pogledaj $1?',
@@ -1342,15 +1342,6 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
 'search-external' => 'Vanjska pretraga',
 'searchdisabled' => '<p>Izvinjavamo se!  Puno pretraga teksta je privremeno onemogućena.  U međuvremenu, možete koristiti Google za pretragu.  Indeks može biti stariji.',
 
-# Quickbar
-'qbsettings' => 'Podešavanja brze palete',
-'qbsettings-none' => 'Nikakva',
-'qbsettings-fixedleft' => 'Pričvršćena lijevo',
-'qbsettings-fixedright' => 'Pričvršćena desno',
-'qbsettings-floatingleft' => 'Plutajuća lijevo',
-'qbsettings-floatingright' => 'Plutajući desno',
-'qbsettings-directionality' => 'Čvrsto, u zavisnosti od usmjerenosti pisma Vašeg jezika',
-
 # Preferences page
 'preferences' => 'Podešavanja',
 'mypreferences' => 'Postavke',
@@ -1895,7 +1886,6 @@ Za optimalnu sigurnost, img_auth.php je onemogućena.',
 'http-read-error' => 'Greška pri čitanju HTTP.',
 'http-timed-out' => 'Istekao HTTP zahtjev.',
 'http-curl-error' => 'Greška pri otvaranju URLa: $1',
-'http-host-unreachable' => 'Ovaj URL nije bilo moguće otvoriti',
 'http-bad-status' => 'Nastao je problem tokom HTTP zahtjeva: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -2218,15 +2208,6 @@ Podržani protokoli: <code>$1</code> (ne dodavajte bilo koji od ovih u vašu pre
 'listusers-noresult' => 'Nije pronađen korisnik.',
 'listusers-blocked' => '(blokiran)',
 
-# Special:ActiveUsers
-'activeusers' => 'Spisak aktivnih korisnika',
-'activeusers-intro' => 'Ovo je spisak korisnika koji su napravili neku aktivnost u {{PLURAL:$1|zadnji $1 dan|zadnja $1 dana|zadnjih $1 dana}}.',
-'activeusers-count' => '{{PLURAL:$1|nedavna $1 izmjena|nedavne $1 izmjene|nedavnih $1 izmjena}} u {{PLURAL:$3|posljednji $3 dan|posljednja $3 dana|posljednjih $3 dana}}',
-'activeusers-from' => 'Prikaži korisnike koji počinju sa:',
-'activeusers-hidebots' => 'Sakrij botove',
-'activeusers-hidesysops' => 'Sakrij administratore',
-'activeusers-noresult' => 'Nije pronađen korisnik.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Prava korisničkih grupa',
 'listgrouprights-summary' => 'Slijedi spisak korisničkih grupa na ovoj wiki, s njihovim pravima pristupa.
@@ -3035,26 +3016,16 @@ Dopušta unos razloga u sažetak.',
 
 # Stylesheets
 'common.css' => '/* CSS umetnut ovdje primijenit će se na sve skinove */',
-'standard.css' => '/* CSS umetnut ovdje uticat će na korisnike koji koriste Standard skin */',
-'nostalgia.css' => '/* CSS umetnut ovdje uticat će na korisnike koji koriste Nostalgia skin */',
 'cologneblue.css' => '/* CSS umetnut ovdje uticat će na korisnike koji koriste Cologne Blue skin */',
 'monobook.css' => '/* CSS umetnut ovdje uticat će na korisnike koji koriste Monobook skin */',
-'myskin.css' => '/* CSS umetnut ovdje uticat će na korisnike koji koriste MySkin skin */',
-'chick.css' => '/* CSS umetnut ovdje uticat će na korisnike koji koriste Chick skin */',
-'simple.css' => '/* CSS umetnut ovdje uticat će na korisnike koji koriste Simple skin */',
 'modern.css' => '/* CSS umetnut ovdje uticat će na korisnike koji koriste Modern skin */',
 'print.css' => '/* CSS umetnut ovdje uticat će na izgled isprintane stranice */',
 'handheld.css' => '/* CSS umetnut ovdje uticat će na ručne sprave koji rade na skinu konfigurisanom u $wgHandheldStyle */',
 
 # Scripts
 'common.js' => '/* Bilo koja JavaScript će biti učitana za sve korisnike pri svakom učitavanju stranice. */',
-'standard.js' => '/* Bilo koja JavaScript će biti učitana za sve korisnike koji koriste Standard skin */',
-'nostalgia.js' => '/* Bilo koja JavaScript će biti učitana za sve korisnike koji koriste Nostalgia skin */',
 'cologneblue.js' => '/* Bilo koja JavaScript će biti učitana za sve korisnike koji koriste Cologne Blue skin */',
 'monobook.js' => '/* Bilo koja JavaScript će biti učitana za sve korisnike koji koriste MonoBook skin */',
-'myskin.js' => '/* Bilo koja JavaScript će biti učitana za sve korisnike koji koriste MySkin skin */',
-'chick.js' => '/* Bilo koja JavaScript će biti učitana za sve korisnike koji koriste Chick skin */',
-'simple.js' => '/* Bilo koja JavaScript će biti učitana za sve korisnike koji koriste Simple skin */',
 'modern.js' => '/* Bilo koja JavaScript će biti učitana za sve korisnike koji koriste Modern skin */',
 
 # Metadata
@@ -3118,13 +3089,8 @@ Ovo je vjerovatno izazvao vezom ka vanjskoj nepoželjnoj stranici.',
 'pageinfo-category-pages' => 'Broj stranica',
 
 # Skin names
-'skinname-standard' => 'Klasično',
-'skinname-nostalgia' => 'Nostalgija',
 'skinname-cologneblue' => 'Kelnsko plavo',
 'skinname-monobook' => 'MonoKnjiga',
-'skinname-myskin' => 'MojaKoža',
-'skinname-chick' => 'Pile (chick)',
-'skinname-simple' => 'Jednostavna',
 'skinname-modern' => 'Moderna',
 
 # Patrolling
@@ -3983,8 +3949,8 @@ Slike su prikazane u punoj veličini, ostale vrste datoteka su prikazane direktn
 'sqlite-no-fts' => '$1 bez podrške pretrage cijelog teksta',
 
 # New logging system
-'logentry-delete-delete' => '$1 je obrisao stranicu $3',
-'logentry-delete-restore' => '$1 je vratio stranicu $3',
+'logentry-delete-delete' => '$1 je {{GENDER:$2|obrisao|obrisala}} stranicu $3',
+'logentry-delete-restore' => '$1 je {{GENDER:$2|vratio|vratila}} stranicu $3',
 'logentry-delete-event' => '$1 je {{GENDER:|promijenio|promijenila}} vidljivost {{PLURAL:$5|događaja|$5 događaja}} u evidenciji na $3: $4',
 'logentry-delete-revision' => '$1 je {{GENDER:|promijenio|promijenila}} vidljivost {{PLURAL:$5|izmjene|$5 izmjene|$5 izmjena}} na stranici  $3: $4',
 'logentry-delete-event-legacy' => '$1 je {{GENDER:|promijenio|promijenila}} vidljivost događaja u evidenciji na $3',
index 5fdc574..18cd88e 100644 (file)
@@ -26,6 +26,7 @@
  * @author Pasqual (ca)
  * @author Paucabot
  * @author PerroVerd
+ * @author Pintor Smeargle
  * @author Pitort
  * @author Pérez
  * @author Qllach
@@ -329,7 +330,7 @@ $messages = array(
 'about' => 'Quant a',
 'article' => 'Pàgina de contingut',
 'newwindow' => '(obre en una nova finestra)',
-'cancel' => 'Anuŀla',
+'cancel' => 'Cancel·lar',
 'moredotdotdot' => 'Més...',
 'morenotlisted' => 'Més no en la llista...',
 'mypage' => 'Pàgina',
@@ -915,11 +916,10 @@ A més a més, en enviar el vostre text, doneu fe que és vostra l'autoria, o b
 '''No feu servir textos amb drets d'autor sense permís!'''",
 'longpageerror' => "'''Error: El text que heu introduït és {{PLURAL:$1|d'un kilobyte|de $1 kilobytes}} i sobrepassa el màxim permès de {{PLURAL:$2|one kilobyte|$2 kilobytes}}.'''
 No es pot desar.",
-'readonlywarning' => "'''ADVERTÈNCIA: La base de dades està tancada per manteniment
-i no podeu desar les vostres contribucions en aquests moments. Podeu retallar i enganxar el codi
-en un fitxer de text i desar-lo més tard.'''
+'readonlywarning' => "'''Avís: La base de dades està tancada per manteniment, de manera que no podreu desar els canvis ara mateix.'''
+És possible que vulgueu copiar i enganxar el text en un arxiu de text i desar-ho més tard.
 
-L'administrador que l'ha tancada n'ha donat aquesta justificació: $1",
+L'administrador que l'ha bloquejada ha donat la següent explicació: $1",
 'protectedpagewarning' => "'''ATENCIÓ: Aquesta pàgina està bloquejada i només els usuaris amb drets d'administrador la poden modificar.
 A continuació es mostra la darrera entrada del registre com a referència:",
 'semiprotectedpagewarning' => "'''Avís:''' Aquesta pàgina està bloquejada i només pot ser modificada per usuaris registrats.
@@ -1223,7 +1223,7 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-default' => '$1 resultats:',
 'search-interwiki-more' => '(més)',
 'search-relatedarticle' => 'Relacionat',
-'mwsuggest-disable' => 'Inhabilita els suggeriments en AJAX',
+'mwsuggest-disable' => 'Desactivar suggeriments de cerca',
 'searcheverything-enable' => 'Cerca a tots els espais de noms',
 'searchrelated' => 'relacionat',
 'searchall' => 'tots',
@@ -1243,15 +1243,6 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-external' => 'Cerca externa',
 'searchdisabled' => 'La cerca dins el projecte {{SITENAME}} està inhabilitada. Mentrestant, podeu cercar a través de Google, però tingueu en compte que la seua base de dades no estarà actualitzada.',
 
-# Quickbar
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'Cap',
-'qbsettings-fixedleft' => "Fixa a l'esquerra",
-'qbsettings-fixedright' => 'Fixa a la dreta',
-'qbsettings-floatingleft' => "Surant a l'esquerra",
-'qbsettings-floatingright' => 'Surant a la dreta',
-'qbsettings-directionality' => "Fix, segons la direcció d'escriptura del vostre idioma",
-
 # Preferences page
 'preferences' => 'Preferències',
 'mypreferences' => 'Preferències',
@@ -1785,7 +1776,6 @@ Per seguretat, img_auth.php està desactivat.",
 'http-read-error' => 'Error de lectura HTTP.',
 'http-timed-out' => 'La petició HTTP ha expirat.',
 'http-curl-error' => "Error en recuperar l'URL: $1",
-'http-host-unreachable' => "No s'ha pogut accedir a l'URL.",
 'http-bad-status' => 'Hi ha hagut un problema durant la petició HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -2331,9 +2321,9 @@ Ací hi ha els paràmetres actuals de la pàgina '''$1''':",
 Ací es troben els paràmetres actuals de la pàgina '''$1''':",
 'protect-cascadeon' => "Aquesta pàgina es troba protegida perquè està inclosa en {{PLURAL:$1|la següent pàgina que té|les següents pàgines que tenen}} activada una protecció en cascada. Podeu canviar el nivell de protecció d'aquesta pàgina però això no afectarà la protecció en cascada.",
 'protect-default' => 'Permet tots els usuaris',
-'protect-fallback' => 'Cal el permís de «$1»',
-'protect-level-autoconfirmed' => 'Bloca els usuaris novells i no registrats',
-'protect-level-sysop' => 'Bloqueja tots els usuaris excepte administradors',
+'protect-fallback' => 'Permetre només a usuaris amb permisos de "$1"',
+'protect-level-autoconfirmed' => 'Permetre només usuaris autoconfirmats',
+'protect-level-sysop' => 'Permetre només administradors',
 'protect-summary-cascade' => 'en cascada',
 'protect-expiring' => 'expira el dia $1 (UTC)',
 'protect-expiring-local' => 'caduca el $1',
@@ -2961,6 +2951,7 @@ Això deu ser degut per un enllaç a un lloc extern inclòs a la llista negra.',
 'pageinfo-robot-noindex' => 'No indexable',
 'pageinfo-views' => 'Número de visites',
 'pageinfo-watchers' => "Número d'usuaris que vigilen la pàgina",
+'pageinfo-few-watchers' => 'Menys de $1 {{PLURAL:$1|observador|observadors}}',
 'pageinfo-redirects-name' => 'Redireccions a aquesta pàgina',
 'pageinfo-subpages-name' => "Subpàgines d'aquesta pàgina",
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redirecció|redireccions}}; $3 {{PLURAL:$3|no redireció|no redireccions}})',
@@ -2975,6 +2966,7 @@ Això deu ser degut per un enllaç a un lloc extern inclòs a la llista negra.',
 'pageinfo-magic-words' => '{{PLURAL:$1|Paraula clau|Paraules clau}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Categoria oculta|Categories ocultes}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|plantilla inclosa|plantilles incloses}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Pàgina|Pàgines}} incloses en ($1)',
 'pageinfo-toolboxlink' => 'Informació de la pàgina',
 'pageinfo-redirectsto' => 'Redirigeix a',
 'pageinfo-redirectsto-info' => 'info',
@@ -2983,6 +2975,10 @@ Això deu ser degut per un enllaç a un lloc extern inclòs a la llista negra.',
 'pageinfo-protect-cascading' => "Proteccions en cascada des d'aquí",
 'pageinfo-protect-cascading-yes' => 'Sí',
 'pageinfo-protect-cascading-from' => 'Proteccions en cascada des de',
+'pageinfo-category-info' => 'Informació de categoria',
+'pageinfo-category-pages' => 'Nombre de pàgines',
+'pageinfo-category-subcats' => 'ombre de subcategories',
+'pageinfo-category-files' => "Nombre d'arxius",
 
 # Skin names
 'skinname-cologneblue' => 'Colònia blava',
@@ -3063,6 +3059,8 @@ Si l'executeu, podeu comprometre la seguretat del vostre sistema.",
 'minutes' => '{{PLURAL:$1|$1 minut|$1 minuts}}',
 'hours' => '{{PLURAL:$1|$1 hora|$1 hores}}',
 'days' => '{{PLURAL:$1|$1 dia|$1 dies}}',
+'months' => '{{PLURAL:$1|$1 mes|$1 mesos}}',
+'years' => '{{PLURAL:$1|$1 any|$1 anys}}',
 'ago' => 'fa $1',
 'just-now' => 'ara mateix',
 
@@ -3723,7 +3721,7 @@ Les imatges es mostren en plena resolució; altres tipus de fitxer s'inicien dir
 'specialpages-group-highuse' => "Pàgines d'alt ús",
 'specialpages-group-pages' => 'Llistes de pàgines',
 'specialpages-group-pagetools' => "Pàgines d'eines",
-'specialpages-group-wiki' => 'Eines i dades del wiki',
+'specialpages-group-wiki' => 'Dades i eines',
 'specialpages-group-redirects' => 'Pàgines especials de redirecció',
 'specialpages-group-spam' => 'Eines de spam',
 
@@ -3792,13 +3790,13 @@ Les imatges es mostren en plena resolució; altres tipus de fitxer s'inicien dir
 'sqlite-no-fts' => '$1, sense supor de búsqueda de text íntegre',
 
 # New logging system
-'logentry-delete-delete' => '$1 ha esborrat la pàgina $3',
-'logentry-delete-restore' => '$1 ha restaurat la pàgina $3',
+'logentry-delete-delete' => '$1 ha esborrat $3',
+'logentry-delete-restore' => '$1 ha restaurat $3',
 'logentry-delete-event' => "$1 ha canviat la visibilitat {{PLURAL:$5|d'un esdeveniment al registre|de $5 esdeveniments al registre}} de $3: $4",
 'logentry-delete-revision' => "$1 ha canviat la visibilitat {{PLURAL:$5|d'una revisió|de $5 revisions}} a la pàgina $3: $4",
 'logentry-delete-event-legacy' => "$1 ha canviat la visibilitat d'esdeveniments al registre de $3",
 'logentry-delete-revision-legacy' => '$1 ha canviat la visibilitat de revisions a la pàgina $3',
-'logentry-suppress-delete' => '$1 ha suprimit la pàgina $3',
+'logentry-suppress-delete' => '$1 ha suprimit $3',
 'logentry-suppress-event' => "$1 secretament ha canviat la visibilitat {{PLURAL:$5|d'un esdeveniment al registre|de $5 esdeveniments al registre}} de $3: $4",
 'logentry-suppress-revision' => "$1 secretament ha canviat la visibilitat {{PLURAL:$5|d'una revisió|de $5 revisions}} a la pàgina $3: $4",
 'logentry-suppress-event-legacy' => "$1 secretament ha canviat la visibilitat d'esdeveniments al registre de $3",
@@ -3811,11 +3809,11 @@ Les imatges es mostren en plena resolució; altres tipus de fitxer s'inicien dir
 'revdelete-uname-unhid' => "ha revelat un nom d'usuari que era ocult",
 'revdelete-restricted' => 'ha aplicat restriccions als administradors',
 'revdelete-unrestricted' => 'ha tret les restriccions als administradors',
-'logentry-move-move' => '$1 ha desplaçat la pàgina $3 a $4',
-'logentry-move-move-noredirect' => '$1 ha desplaçat la pàgina $3 a $4 sense deixar cap redirecció',
-'logentry-move-move_redir' => '$1 ha desplaçat la pàgina $3 a $4, on hi havia una redirecció',
+'logentry-move-move' => '$1 ha mogut $3 a $4',
+'logentry-move-move-noredirect' => '$1 ha mogut $3 a $4 sense deixar una redirecció',
+'logentry-move-move_redir' => '$1 ha mogut $3 a $4 sobre una redirecció',
 'logentry-move-move_redir-noredirect' => '$1 ha desplaçat la pàgina $3 a $4 on hi havia una redirecció i sense crear una nova redirecció',
-'logentry-patrol-patrol' => '$1 ha marcat la versió $4 de la pàgina $3 com a patrullada',
+'logentry-patrol-patrol' => '1 $ va marcar la revisió $ 4 de "$ 3" com a supervisada',
 'logentry-patrol-patrol-auto' => '$1 ha marcat automàticament la versió $4 de la pàgina $3 com a patrullada',
 'logentry-newusers-newusers' => "El compte d'usuari $1 {{GENDER:$2|ha estat creat}}",
 'logentry-newusers-create' => "El compte d'usuari $1 {{GENDER:$2|ha estat creat}}",
index 340c55b..8c5dc41 100644 (file)
@@ -150,8 +150,8 @@ $messages = array(
 'tog-underline' => 'ھێڵ ھێنان بەژێر بەستەرەکان:',
 'tog-justify' => 'پەرەگرافەکان پڕاوپر نیشان بدە',
 'tog-hideminor' => 'دەستکارییە بچووکەکان لە دوایین گۆڕانکارییەکاندا بشارەوە',
-'tog-hidepatrolled' => 'Ù\84Û\95 Ø¯Ù\88اÛ\8cÛ\8cÙ\86 Ú¯Û\86Ú\95اÙ\86کارÛ\8cÛ\95کاÙ\86Ø\8c Ø¯Û\95ستکارÛ\8cÛ\95 Ù¾Ø§Ø±Û\8eزراÙ\88Û\95کاÙ\86 Ø¯Ø§Ø´Ø§Ø±ە',
-'tog-newpageshidepatrolled' => 'Ù\84Û\95 Ù\84Û\8cستÛ\8c Ù\84اپÛ\95Ú\95Û\95 Ù\86Ù\88Û\8eکاÙ\86Ø\8c Ù\84اپÛ\95Ú\95Û\95 Ù¾Ø§Ø±Û\8eزراÙ\88Û\95کاÙ\86 Ø¯Ø§Ø´Ø§Ø±ە',
+'tog-hidepatrolled' => 'Ù\84Û\95 Ø¯Ù\88اÛ\8cÛ\8cÙ\86 Ú¯Û\86Ú\95اÙ\86کارÛ\8cÛ\8cÛ\95کاÙ\86دا Ø¯Û\95ستکارÛ\8cÛ\8cÛ\95 Ù¾Ø§Ø³ Ø¯Ø±Ø§Ù\88Û\95کاÙ\86 Ø¨Ø´Ø§Ø±Û\95Ù\88ە',
+'tog-newpageshidepatrolled' => 'Ù\84Û\95 Ù¾Û\8eرستÛ\8c Ù¾Û\95Ú\95Û\95 Ù\86Ù\88Û\8eکاÙ\86دا Ù¾Û\95Ú\95Û\95 Ù¾Ø§Ø³ Ø¯Ø±Ø§Ù\88Û\95کاÙ\86 Ø¨Ø´Ø§Ø±Û\95Ù\88ە',
 'tog-extendwatchlist' => 'لیستی چاودێری درێژبکەرەوە بۆ نیشان دانی ھەموو گۆڕانکارییەکان، نەک تەنھا دوایینەکان.',
 'tog-usenewrc' => 'گۆڕانکارییەکان لە دوایین گۆڕانکارییەکان و لیستی چاودێریدا بە پێی پەڕە پۆلێن بکە (پێویستی بە جاڤاسکریپتە)',
 'tog-numberheadings' => 'ژمارەکردنی خۆکاری سەردێڕەکان',
@@ -180,13 +180,13 @@ $messages = array(
 'tog-externaldiff' => 'لە پرۆگرامێکی دەرەکی بۆ بینینی جیاوازیەکان کەڵک وەرگرە لە دیفاڵتدا (تەنها بۆ شارەزایان، ڕێکخستنی تایبەتی پێویستە لە سەر کۆمپیوتەرەکەت. [//www.mediawiki.org/wiki/Manual:External_editors زانیاریی زۆرتر.])',
 'tog-showjumplinks' => 'ڕێگە بدە بۆ بەستەرەکانی «{{int:jumpto}}»',
 'tog-uselivepreview' => 'لە پێشبینینی زیندوو کەڵک وەرگرە (جاڤاسکریپت پێویستە) (تاقیکاری‌)',
-'tog-forceeditsummary' => 'ئەگەر پوختەی دەستکاریم نەنووسی پێم بڵێ',
+'tog-forceeditsummary' => 'ئەگەر کورتەی دەستکاریم نەنووسی پێم بڵێ',
 'tog-watchlisthideown' => 'دەستکارییەکانم بشارەوە لە پێرستی چاودێری',
 'tog-watchlisthidebots' => 'دەستکارییەکانی بات بشارەوە لە لیستی چاودێری',
 'tog-watchlisthideminor' => 'دەستکارییە بچووکەکان لە لیستی چاودێریدا بشارەوە',
 'tog-watchlisthideliu' => 'دەستکارییەکانی ئەو بەکارهێنەرانەی لە ژوورەوەن بشارەوە لە لیستی چاودێری',
 'tog-watchlisthideanons' => 'دەستکارییەکانی بەکارهێنەرانی نەناسراو بشارەوە لە لیستی چاودێری',
-'tog-watchlisthidepatrolled' => 'Ù\84Û\95 Ù\84Û\8cستÛ\8c Ú\86اÙ\88دÛ\8eرÛ\8cÛ\95کاÙ\86Ø\8c Ø¯Û\95ستکارÛ\8cÛ\95 Ù¾Ø§Ø±Û\8eزراÙ\88Û\95کاÙ\86 Ø¯Ø§Ø´Ø§Ø±ە',
+'tog-watchlisthidepatrolled' => 'Ù\84Û\95 Ù¾Û\8eرستÛ\8c Ú\86اÙ\88دÛ\8eرÛ\8cÛ\8cÛ\95کاÙ\86دا Ø¯Û\95ستکارÛ\8cÛ\8cÛ\95 Ù¾Ø§Ø³ Ø¯Ø±Ø§Ù\88Û\95کاÙ\86 Ø¨Ø´Ø§Ø±Û\95Ù\88ە',
 'tog-ccmeonemails' => 'کۆپییەک لەو ئیمەیلانە کە بۆ بەکارھێنەرانی تر دەنێرم بۆ خۆشم بنێرە',
 'tog-diffonly' => 'ناوەرۆکی پەڕە لە ژێرەوەی جیاوازییەکاندا نیشان مەدە',
 'tog-showhiddencats' => 'ھاوپۆلە شاراوەکان نیشان بدە',
@@ -1101,7 +1101,7 @@ $1",
 'mergehistory-reason' => 'هۆکار:',
 
 # Merge log
-'mergelog' => 'لۆگی یەککردن',
+'mergelog' => 'لۆگی کردنەیەک',
 'pagemerge-logentry' => '[[$1]] خرایە سەر [[$2]] (پێداچوونەوەکان تا $3)',
 'revertmerge' => 'لەیەک جیاکردنەوە',
 'mergelogpagetext' => 'لە خوارەوە دوایین مێژووی‌لاپەڕە خستنە سەر لاپەڕەیەکی‌تر، دەبینی.',
@@ -1182,14 +1182,6 @@ $1",
 دەتوانی بۆ ئێستا لە گەڕانی گووگڵ کەڵک وەرگری.
 لەیادت بێت لەوانەیە پێرستەکانیان بۆ گەڕانی ناو {{SITENAME}}، کات‌بەسەرچوو بێت.',
 
-# Quickbar
-'qbsettings' => 'خێرا-تووڵ',
-'qbsettings-none' => 'هیچ',
-'qbsettings-fixedleft' => 'چەپ‌ سەپێندراو',
-'qbsettings-fixedright' => 'ڕاست سەپێندراو',
-'qbsettings-floatingleft' => 'سەراوی چەپ',
-'qbsettings-floatingright' => 'سەراوی ڕاست',
-
 # Preferences page
 'preferences' => 'ھەڵبەژاردەکان',
 'mypreferences' => 'ھەڵبژاردەکان',
@@ -1403,12 +1395,12 @@ $1",
 'right-markbotedits' => 'نیشان‌کردنی دەستکاریە گەڕێنراوەکان وەک دەستکاریەکانی بۆت (bot)',
 'right-noratelimit' => 'کاریگەری وەرنەگرتن لە سنوورەکانی ئاست',
 'right-import' => 'هێنانەناوەی لاپەڕە لە ویکی‌یەکانی دیکە',
-'right-importupload' => 'هێنانەناوەی لاپەڕە لە پەڕگەیەکی بارکراو',
-'right-patrol' => 'Ù\84Û\95Ú\98Û\8eرÚ\86اÙ\88دÛ\8eرÛ\8c Ù\86Û\8cشاÙ\86â\80\8cکردÙ\86Û\8c Ø¯Û\95ستکارÛ\8cÛ\95کاÙ\86Û\8c Ú©Û\95ساÙ\86Û\8câ\80\8cتر',
-'right-autopatrol' => 'Ø®Û\86کار Ù\84Û\95Ú\98Û\8eرÚ\86اÙ\88دÛ\8eرÛ\8c Ù\86Û\8cشاÙ\86â\80\8cکردÙ\86Û\8c Ø¯Û\95ستکارÛ\8cÛ\95کاÙ\86Û\8c Ú©Û\95سÛ\8eÚ© Ø¨Û\86Ø®Û\86Û\8c',
-'right-patrolmarks' => 'دیتنی دوایین دەستکاریەکان وا لەژێرچاودێری نیشان‌کراون',
-'right-unwatchedpages' => 'دÛ\8cتÙ\86Û\8c Ù\84Û\8cستÛ\8eÚ© Ù\84Û\95Ù\88 Ù\84اپÛ\95Ú\95اÙ\86Û\95Û\8c Ú\86اÙ\88دÛ\8eرÛ\8c Ù\86اکرÛ\8eن',
-'right-mergehistory' => 'سەریەک‌خستنی میژووی لاپەڕەکان',
+'right-importupload' => 'ھاوردنی پەڕەکان لە پەڕگەیەکی بارکراو',
+'right-patrol' => 'Ù\86Û\8cشاÙ\86کردÙ\86Û\8c Ø¯Û\95ستکارÛ\8cÛ\95کاÙ\86Û\8c Ú©Û\95ساÙ\86Û\8c ØªØ± Ù\88Û\95Ú© Ù¾Ø§Ø³ Ø¯Ø±Ø§Ù\88',
+'right-autopatrol' => 'دÛ\95ستکارÛ\8cÛ\8cÛ\95کاÙ\86Û\8c Ú©Û\95سÛ\8eÚ© Ø¨Û\95 Ø´Û\8eÙ\88Û\95Û\8c Ø®Û\86Ú¯Û\95Ú\95 Ù\88Û\95Ú© Ù¾Ø§Ø³ Ø¯Ø±Ø§Ù\88 Ù\86Û\8cشاÙ\86 Ø¨Ú©Ø±Û\8e',
+'right-patrolmarks' => 'دیتنی نیشان کراوەکان وەک پاس دراو لە دوایین گۆڕانکارییەکاندا',
+'right-unwatchedpages' => 'دÛ\8cتÙ\86Û\8c Ù¾Û\8eرستÛ\8eÚ© Ù\84Û\95 Ù¾Û\95Ú\95Û\95 Ú\86اÙ\88دÛ\8eرÛ\8c Ù\86Û\95کراÙ\88Û\95کان',
+'right-mergehistory' => 'میژووی پەڕەکان بکە یەک',
 'right-userrights' => 'دەستکاری مافەکانی هەموو بەکارهێنەران',
 'right-userrights-interwiki' => 'دەستکاری مافەکانی بەکارهێنەریی بەکارهێنەران لە ویکی‌یەکانی دیکە‌دا',
 'right-siteadmin' => 'داخستن و کردنەوەی بنکەدراو',
@@ -1450,11 +1442,11 @@ $1",
 'action-protect' => 'گۆڕانی ئاستی پارێزراوی بۆ ئەم لاپەڕە',
 'action-import' => 'هێنانەناوەی ئەم لاپەڕە لە ویکی‌یەکی دیکە',
 'action-importupload' => 'هێنانەناوەی ئەم لاپەڕە لە پەڕگەیەکی بارکراو',
-'action-patrol' => 'Ù\84Û\95Ú\98Û\8eرÚ\86اÙ\88دÛ\8eرÛ\8c Ù\86Û\8cشاÙ\86â\80\8cکردÙ\86Û\8c Ø¯Û\95ستکارÛ\8cÛ\95کاÙ\86Û\8c Ú©Û\95ساÙ\86Û\8câ\80\8cتر',
-'action-autopatrol' => 'دÛ\95ستکارÛ\8cÛ\95کاÙ\86ت Ù\88Û\95Ú© Ù\84Û\95Ú\98Û\8eرÚ\86اÙ\88دÛ\8eرÛ\8c Ù\86Û\8cشاÙ\86 Ú©Ø±Ø§Ù\88Ù\86',
-'action-unwatchedpages' => 'دÛ\8cتÙ\86Û\8c Ù¾Û\8eرستÛ\8c Ø¦Û\95Ù\88 Ù¾Û\95Ú\95اÙ\86Û\95Û\8c Ú\86اÙ\88دÛ\8eرÛ\8c Ù\86اکرÛ\8eن',
-'action-mergehistory' => 'سەریەک‌خستنی میژووی ئەم لاپەڕە',
-'action-userrights' => 'دەستکاری مافەکانی هەموو بەکارهێنەران',
+'action-patrol' => 'Ù\86Û\8cشاÙ\86کردÙ\86Û\8c Ø¯Û\95ستکارÛ\8cÛ\95کاÙ\86Û\8c Ú©Û\95ساÙ\86Û\8c ØªØ± Ù\88Û\95Ú© Ù¾Ø§Ø³ Ø¯Ø±Ø§Ù\88',
+'action-autopatrol' => 'دÛ\95ستکارÛ\8cÛ\8cÛ\95کاÙ\86ت Ù\88Û\95Ú© Ù¾Ø§Ø³ Ø¯Ø±Ø§Ù\88 Ù\86Û\8cشاÙ\86 Ø¨Ú©Ø±Û\8e',
+'action-unwatchedpages' => 'دÛ\8cتÙ\86Û\8c Ù¾Û\8eرستÛ\8eÚ© Ù\84Û\95 Ù¾Û\95Ú\95Û\95 Ú\86اÙ\88دÛ\8eرÛ\8c Ù\86Û\95کراÙ\88Û\95کان',
+'action-mergehistory' => 'میژووی پەڕەکان بکە یەک',
+'action-userrights' => 'دەستکاریی مافەکانی ھەموو بەکارھێنەران',
 'action-userrights-interwiki' => 'دەستکاری مافەکانی بەکارهێنەریی بەکارهێنەران لە ویکی‌یەکانی دیکە‌دا',
 'action-siteadmin' => 'داخستن یا کردنەوەی بنکەدراو',
 'action-sendemail' => 'ناردنی ئیمەیلەکان',
@@ -1466,9 +1458,9 @@ $1",
 'recentchanges-summary' => 'لەم پەڕەیەدا شوێنی دوایین گۆڕانکارییەکانی ویکی بکەوە.',
 'recentchanges-feed-description' => 'دوای دوایین گۆڕانکارییەکانی ئەم ویکیە بکەوە لەم «فید»ەوە.',
 'recentchanges-label-newpage' => 'ئەم دەستکارییە لاپەڕەیەکی نوێی دروستکرد',
-'recentchanges-label-minor' => 'ئەمە دەستکاریەکی بچووکە',
+'recentchanges-label-minor' => 'ئÛ\95Ù\85Û\95 Ø¯Û\95ستکارÛ\8cÛ\8cÛ\95Ú©Û\8c Ø¨Ú\86Ù\88Ù\88Ú©Û\95',
 'recentchanges-label-bot' => 'ئەم دەستکاریە لە لایەن بۆتەوە پێک هاتووە',
-'recentchanges-label-unpatrolled' => 'ئÛ\95Ù\85 Ø¯Û\95ستکارÛ\8cÛ\95 Ù\87Û\8eشتا Ù\86Û\95Ú\95Û\86شتÛ\95تÛ\95 Ú\98Û\8eر Ú\86اÙ\88دÛ\8eرÛ\8c',
+'recentchanges-label-unpatrolled' => 'ئÛ\95Ù\85 Ø¯Û\95ستکارÛ\8cÛ\8cÛ\95 Ú¾Û\8eشتا Ù¾Ø§Ø³ Ù\86Û\95دراÙ\88Û\95',
 'rcnote' => "لە خوارەوەدا {{PLURAL:$1|'''۱''' گۆڕانکاری |دوایین '''$1''' گۆڕانکارییەکان}} لە دوایین {{PLURAL:$2|ڕۆژ|'''$2''' ڕۆژەوە}} ، تا $5، $4 دەبینن.",
 'rcnotefrom' => "ئەوی‌ خوارەوە گۆڕانکارییەکانە لە '''$2'''ەوە (ھەتا '''$1''' نیشاندراو).",
 'rclistfrom' => 'گۆڕانکارییە نوێکان نیشان بدە بە دەستپێکردن لە $1',
@@ -1476,7 +1468,7 @@ $1",
 'rcshowhidebots' => 'بۆتەکان $1',
 'rcshowhideliu' => 'بەکارھێنەرە تۆمارکراوەکان $1',
 'rcshowhideanons' => 'بەکارھێنەرە نەناسراوەکان $1',
-'rcshowhidepatr' => 'گۆرانکارییە چاودێریکراوەکان $1',
+'rcshowhidepatr' => 'گۆرانکارییە پاس دراوەکان $1',
 'rcshowhidemine' => 'دەستکارییەکانم $1',
 'rclinks' => 'دوایین $1 گۆڕانکاریی $2 ڕۆژی ڕابردوو نیشان بدە<br />$3',
 'diff' => 'جیاوازی',
@@ -1654,9 +1646,6 @@ $1',
 'img-auth-nofile' => 'فایلی "$1" بوونی نیه‌',
 'img-auth-isdir' => 'هه‌وڵ ده‌ده‌ی بۆ کردنه‌وه‌ی بوخچه‌ی "$1" له‌ کاتێکدا ته‌نیا کردنه‌وه‌ی فایل رێپێدراوه‌',
 
-# HTTP errors
-'http-host-unreachable' => 'توانای دەست‌پێ‌گەیشتنی URL نیە',
-
 # 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' => 'ئەو URL کە ڕاچاوت کردووە توانای دەست‌پێ‌گەیشتنی نییە.
@@ -1910,6 +1899,7 @@ $1',
 بینینەکە سنووردار بکەیتەوە.',
 'logempty' => 'هیچ بابەتێکی هاوتا لە لۆگەکاندا نەدۆزرایەوە.',
 'log-title-wildcard' => 'گەڕانی ئەو سەرناوانە بەم دەقەوە دەست پێدەکەن',
+'showhideselectedlogentries' => 'بابەتەکانی ھەڵبژێردراوی لۆگ نیشان بدە/بشارەوە',
 
 # Special:AllPages
 'allpages' => 'ھەموو پەڕەکان',
@@ -2179,8 +2169,8 @@ $UNWATCHURL
 'protect-cascadeon' => 'ھەنووکە ئەم پەڕە پارێزراوە بۆ ئەوەی کە لە نێو ئەم {{PLURAL:$1|پەڕە کە پاراستنی تاڤگەییی|پەڕانە کە پاراستنی تاڤگەیییان}} بۆ چالاککراوە، ھێنراوە.
 دەتوانی ئاستی پاراستنی ئەم پەڕە بگۆڕی، بەڵام ھیچ کاریگەرییەکی نابێت لە سەر پاراستنی تاڤگەیی',
 'protect-default' => 'بە ھەموو بەکارھێنەران ڕێگە بدە',
-'protect-fallback' => 'پێویستی بە ئیزنی «$1» ھەیە',
-'protect-level-autoconfirmed' => 'بÛ\95کارھÛ\8eÙ\86Û\95راÙ\86Û\8c Ù\86Ù\88Û\8e Ù\88 ØªÛ\86Ù\85ارÙ\86Û\95کراÙ\88 Ø¦Ø§Ø³ØªÛ\95Ù\86Ú¯ Ø¨Ú©ە',
+'protect-fallback' => 'تەنیا بە بەکارھێنەران بە مافی «$1» ڕێگە بدە',
+'protect-level-autoconfirmed' => 'تÛ\95Ù\86Û\8cا Ø¨Û\95 Ø¨Û\95کارھÛ\8eÙ\86Û\95راÙ\86Û\8c Ù¾Û\95سÙ\86دکراÙ\88 Ú\95Û\8eÚ¯Û\95 Ø¨Ø¯ە',
 'protect-level-sysop' => 'تەنیا بەڕێوەبەران',
 'protect-summary-cascade' => 'تاڤگەیی',
 'protect-expiring' => 'بەسەردەچێ لە ڕێکەوتی $1 (UTC)',
@@ -2599,9 +2589,9 @@ $1',
 # Special:Import
 'import' => 'ھاوردنی پەڕەکان',
 'importinterwiki' => 'هێنانەناوەی ترانس‌ویکی',
-'import-interwiki-text' => 'بۆ هێنانە‌ناوە ویکی‌یەک و سەردێڕێکی لاپەڕە هەڵبژێرە.
-ڕێکەوتەکانی پێداچوونەوە و ناوی دەستکاری‌کەرەکان دەپارێزدرێت.
-هەموو کردوەکانی هێنانەناوەی ترانس‌ویکی لە [[Special:Log/import|لۆگی هێنانەناوە]] لۆگ دەکرێت.',
+'import-interwiki-text' => 'بۆ ھاوردن ویکییەک و سەردێڕێکی پەڕە ھەڵبژێرە.
+ڕێکەوتەکانی پێداچوونەوە و ناوی دەستکاریکەرەکان دەپارێزرێت.
+هەموو کردەوەکانی ھاوردنی ترانسویکی لە [[Special:Log/import|لۆگی ھاوردن]]دا تۆمار دەکرێت.',
 'import-interwiki-source' => 'سەرچاوەی ویکی\\لاپەڕە :',
 'import-interwiki-history' => 'ڕوونووس‌کردنی هەموو مێژووی پێداچوونەوەکانی ئەم لاپەڕە',
 'import-interwiki-templates' => 'لەخۆگرتنی هەموو داڕێژەکان',
@@ -2639,7 +2629,7 @@ $1',
 'import-invalid-interwiki' => 'لە ویکی‌ دیاری‌کراوە ناهێنڕێتەوە ناوە.',
 
 # Import log
-'importlogpage' => 'Ù\87Û\8eÙ\86اÙ\86Û\95Ù\86اÙ\88Û\95Û\8c Ù\84Û\86Ú¯',
+'importlogpage' => 'Ù\84Û\86Ú¯Û\8c Ú¾Ø§Ù\88ردÙ\86',
 'importlogpagetext' => 'ھاوردنی پەڕەکان لەگەڵ مێژووی دەستکاری لە ویکییەکانی ترەوە.',
 'import-logentry-upload' => 'ھاوردنی [[$1]] بە بارکردنی پەڕگە',
 'import-logentry-upload-detail' => '$1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}}',
@@ -2787,19 +2777,22 @@ $1',
 'skinname-vector' => 'ڤێکتۆر',
 
 # Patrolling
-'markaspatrolleddiff' => 'وەک چاودێری‌کراو نیشان‌کردن',
-'markaspatrolledtext' => 'ئەم لاپەڕە وەک چاودێری‌کراو نیشان بکە',
-'markedaspatrolled' => 'وەک چاودێری‌کراو نیشان‌کرا',
-'markedaspatrolledtext' => 'پێداچوونەوەی هەڵبژێراوی [[:$1]] وەک چاودێریکراو نیشان‌کرا.',
-'rcpatroldisabled' => 'چاودێری دوایین گۆڕانکاریەکان لەکار خسترا',
-'rcpatroldisabledtext' => 'تایبەتمەندی چاودێری دوایین گۆڕانکاریەکان ئێستا لەکار خستراوە.',
-'markedaspatrollederror' => 'ناکرێ وه‌ک چاودێری‌کراو نیشان بکرێت',
-'markedaspatrollederror-noautopatrol' => 'ڕێگەت پێ‌نەدراوە گۆڕانکاریەکانی خۆت وەک چاودێری‌کراو نیشان بکەیت.',
+'markaspatrolleddiff' => 'وەک پاس دراو نشان بکە',
+'markaspatrolledtext' => 'ئەم پەڕەیە وەک پاس دراو نیشان بکە',
+'markedaspatrolled' => 'وەک پاس دراو نیشان کرا',
+'markedaspatrolledtext' => 'پێداچوونەوەی هەڵبژێردراوی [[:$1]] وەک پاس دراو نیشان کرا.',
+'rcpatroldisabled' => 'پاسدەریی دوایین گۆڕانکاریەکان ناچالاک کرا',
+'rcpatroldisabledtext' => 'تایبەتمەندیی پاسدەریی دوایین گۆڕانکارییەکان ئێستا ناچالاک کراوە.',
+'markedaspatrollederror' => 'وه‌ک پاس دراو نیشان نەکرا',
+'markedaspatrollederrortext' => 'دەبێ پێداچوونەوەیەک دەستنیشان بکەی ھەتا وەک پاس دراو نیشان بکرێ.',
+'markedaspatrollederror-noautopatrol' => 'ناتوانی گۆڕانکارییەکانی خۆت وەک پاس دراو نیشان بکەی.',
+'markedaspatrollednotify' => 'ئەم گۆڕانکارییە لەسەر $1 وەک پاس دراو نیشان کرا.',
+'markedaspatrollederrornotify' => 'نیشانکردن وەک پاس دراو سەرکەوتوو نەبوو.',
 
 # Patrol log
-'patrol-log-page' => 'لۆگی چاودێری',
-'patrol-log-header' => 'ئەمە لۆگێکی چاودێری پێداچوونەوەکانە.',
-'log-show-hide-patrol' => 'لۆگی چاودێری $1',
+'patrol-log-page' => 'لۆگی پاسدەری',
+'patrol-log-header' => 'ئەمە لۆگێکی پێداچوونەوە پاس دراوەکانە.',
+'log-show-hide-patrol' => 'لۆگی پاسدەری $1',
 
 # Image deletion
 'deletedrevision' => 'پێداچوونەوەی کۆنی سڕاوە $1',
@@ -3430,10 +3423,10 @@ $5
 'htmlform-selectorother-other' => 'دیکە',
 
 # New logging system
-'logentry-delete-delete' => '$1 پەڕەی $3ی سڕییەوە',
-'logentry-delete-restore' => '$1 پەڕەی $3ی ھێنایەوە',
-'logentry-delete-revision' => '$1 دەرکەوتنی {{PLURAL:$5|پێداچوونەوەیەکی|$5 پێداچوونەوەی}} پەڕەی $3ی گۆڕیی: $4',
-'logentry-suppress-delete' => '$1 پەڕەی $3 بەرگری کرد.',
+'logentry-delete-delete' => '$1 پەڕەی $3ی {{GENDER:$2|سڕییەوە}}',
+'logentry-delete-restore' => '$1 پەڕەی $3ی {{GENDER:$2|ھێنایەوە}}',
+'logentry-delete-revision' => '$1 دەرکەوتنی {{PLURAL:$5|پێداچوونەوەیەکی|$5 پێداچوونەوەی}} پەڕەی $3ی {{GENDER:$2|گۆڕیی}}: $4',
+'logentry-suppress-delete' => '$1 پەڕەی $3 {{GENDER:$2|بەرگری کرد}}.',
 'revdelete-content-hid' => 'ناوەرۆک شاردراوە',
 'revdelete-summary-hid' => 'کورتەی دەستکاری شاردراوە',
 'revdelete-uname-hid' => 'ناوی بەکارهێنەری شاراوە',
@@ -3442,14 +3435,16 @@ $5
 'revdelete-uname-unhid' => 'ناوی بەکارهێنەری نیشان درا',
 '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_redir-noredirect' => '$1 پەڕەی $3 بەبێ بەجێھشتنی ڕەوانەکەرێک گواستەوە بۆ $4 کە پێشتر ڕەوانەکەر بوو',
-'logentry-newusers-newusers' => 'ھەژماری بەکارھێنەریی $1 دروست کرا',
-'logentry-newusers-create' => 'ھەژماری بەکارھێنەریی $1 دروست کرا',
-'logentry-newusers-create2' => 'ھەژماری بەکارھێنەریی $3 لە لایەن $1 دروست کرا',
-'logentry-newusers-autocreate' => 'ھەژماری $1 بە شێوەی خۆگەڕ دروستکرا',
+'logentry-move-move' => '$1 پەڕەی $3ی {{GENDER:$2|گواستەوە}} بۆ $4',
+'logentry-move-move-noredirect' => '$1 پەڕەی $3 بەبێ بەجێھشتنی ڕەوانەکەرێک {{GENDER:$2|گواستەوە}} بۆ $4',
+'logentry-move-move_redir' => '$1 پەڕەی $3 {{GENDER:$2|گواستەوە}} بۆ $4 کە پێشتر ڕەوانەکەر بوو',
+'logentry-move-move_redir-noredirect' => '$1 پەڕەی $3 بەبێ بەجێھشتنی ڕەوانەکەرێک {{GENDER:$2|گواستەوە}} بۆ $4 کە پێشتر ڕەوانەکەر بوو',
+'logentry-patrol-patrol' => '$1 پێداچوونەوەی $4ی پەڕەی $3 وەک پاس دراو {{GENDER:$2|نیشان کرد}}',
+'logentry-patrol-patrol-auto' => '$1 بە شێوەی خۆگەڕ پێداچوونەوەی $4ی پەڕەی $3 وەک پاس دراو {{GENDER:$2|نیشان کرد}}',
+'logentry-newusers-newusers' => 'ھەژماری بەکارھێنەریی $1 {{GENDER:$2|دروست کرا}}',
+'logentry-newusers-create' => 'ھەژماری بەکارھێنەریی $1 {{GENDER:$2|دروست کرا}}',
+'logentry-newusers-create2' => 'ھەژماری بەکارھێنەریی $3 لە لایەن $1 {{GENDER:$2|دروست کرا}}',
+'logentry-newusers-autocreate' => 'ھەژماری بەکارھێنەریی $1 بە شێوەی خۆگەڕ {{GENDER:$2|دروست کرا}}',
 'rightsnone' => '(ھیچ)',
 
 # Feedback
index ad088f0..b4c4fef 100644 (file)
@@ -889,9 +889,6 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 'search-external' => 'Tış qıdıruv',
 'searchdisabled' => '{{SITENAME}} saytında qıdıruv yapma vaqtınca toqtatıldı. Bu arada Google qullanıp {{SITENAME}} içinde qıdıruv yapıp olasıñız. Qıdıruv saytlarında indekslemeleriniñ biraz eski qalğan ola bilecegini köz ögüne alıñız.',
 
-# Quickbar
-'qbsettings' => 'Vızlı irişim sutun sazlamaları',
-
 # Preferences page
 'preferences' => 'Sazlamalar',
 'mypreferences' => 'Sazlamalar',
@@ -1812,13 +1809,8 @@ MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege istese
 'spam_blanking' => 'Bar olğan versiyalarda $1 saytına bağlantılar bar, temizlev',
 
 # Skin names
-'skinname-standard' => 'Standart',
-'skinname-nostalgia' => 'Nostalgiya',
 'skinname-cologneblue' => 'Köln asretligi',
 'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'Öz resimleme',
-'skinname-chick' => 'Çipçe',
-'skinname-simple' => 'Adiy',
 
 # Patrol log
 'patrol-log-page' => 'Teşkerüv jurnalı',
@@ -2100,6 +2092,11 @@ Bitirgen soñ "{{int:Watchlistedit-raw-submit}}" yazısına basıñız.
 'blankpage' => 'Bоş saife',
 'intentionallyblankpage' => 'Bu saife aselet boş qaldırılğan',
 
+# Special:ComparePages
+'comparepages' => 'Saifelerni teñeştirüv',
+'compare-selector' => 'Saifelerniñ versiyalarını teñeştirüv',
+'compare-submit' => 'Teñeştir',
+
 # HTML forms
 'htmlform-reset' => 'Deñişikliklerni keri al',
 
index aaefcaa..89595e2 100644 (file)
@@ -1409,15 +1409,6 @@ Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně di
 'search-external' => 'Externí hledání',
 'searchdisabled' => '<p>Omlouváme se. Plnotextové vyhledávání je dočasně nedostupné. Zatím můžete zkusit vyhledávání Googlem; je ale možné, že jeho výsledky nemusí být aktuální.</p>',
 
-# Quickbar
-'qbsettings' => 'Nastavení lišty nástrojů',
-'qbsettings-none' => 'Žádný',
-'qbsettings-fixedleft' => 'Leží vlevo',
-'qbsettings-fixedright' => 'Leží vpravo',
-'qbsettings-floatingleft' => 'Plovoucí vlevo',
-'qbsettings-floatingright' => 'Plovoucí vpravo',
-'qbsettings-directionality' => 'Pevný v závislosti na směrovosti vašeho písma',
-
 # Preferences page
 'preferences' => 'Nastavení',
 'mypreferences' => 'Nastavení',
@@ -1964,7 +1955,6 @@ Z bezpečnostních důvodů je img_auth.php vypnuto.',
 'http-read-error' => 'Chyba při čtení HTTP.',
 'http-timed-out' => 'Čas pro HTTP požadavek vypršel.',
 'http-curl-error' => 'Chyba při čtení z URL: $1',
-'http-host-unreachable' => 'Nepodařilo se kontaktovat URL',
 'http-bad-status' => 'Při provádění HTTP požadavku nastal problém: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 1a53119..1579254 100644 (file)
@@ -1158,15 +1158,6 @@ Mae manylion pellach i'w cael yn [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 Yn y cyfamser gallwch chwilio drwy Google.
 Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
 
-# Quickbar
-'qbsettings' => 'Panel llywio',
-'qbsettings-none' => 'Dim',
-'qbsettings-fixedleft' => 'Sefydlog ar y chwith',
-'qbsettings-fixedright' => 'Sefydlog ar y dde',
-'qbsettings-floatingleft' => 'Yn arnofio ar y chwith',
-'qbsettings-floatingright' => 'Yn arnofio ar y dde',
-'qbsettings-directionality' => "Yn sefydlog, ar yr ochr o'r ddalen lle rydych yn dechrau ysgrifennu eich iaith",
-
 # Preferences page
 'preferences' => 'Dewisiadau',
 'mypreferences' => 'Dewisiadau',
@@ -1709,7 +1700,6 @@ Er mwyn sicrhau'r diogelwch gorau posib, analluogwyd img_auth.php.",
 'http-read-error' => 'Cafwyd gwall wrth ddarllen yr HTTP.',
 'http-timed-out' => 'Goroedi wedi digwydd ar y cais HTTP.',
 'http-curl-error' => 'Cafwyd gwall wrth nôl yr URL: $1',
-'http-host-unreachable' => 'Wedi methu cyrraedd yr URL.',
 'http-bad-status' => 'Cafwyd trafferth yn ystod y cais HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index d1bc01a..3094234 100644 (file)
@@ -1240,15 +1240,6 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
 'search-external' => 'Brug anden søgemaskine',
 'searchdisabled' => '<p>Beklager! Fuldtekstsøgningen er midlertidigt afbrudt på grund af for stor belastning på serverne. I mellemtidem kan du anvende Google- eller Yahoo!-søgefelterne herunder. Bemærk at deres kopier af {{SITENAME}}s indhold kan være forældet.</p>',
 
-# Quickbar
-'qbsettings' => 'Hurtigmenu',
-'qbsettings-none' => 'Ingen',
-'qbsettings-fixedleft' => 'Fast venstre',
-'qbsettings-fixedright' => 'Fast højre',
-'qbsettings-floatingleft' => 'Flydende venstre',
-'qbsettings-floatingright' => 'Flydende højre',
-'qbsettings-directionality' => 'Fast, afhængigt af dit sprogs skriveretning',
-
 # Preferences page
 'preferences' => 'Indstillinger',
 'mypreferences' => 'Indstillinger',
@@ -1799,7 +1790,6 @@ For optimal sikkerhed er img_auth.php deaktiveret.",
 'http-read-error' => 'HTTP-læsefejl.',
 'http-timed-out' => 'HTTP-forespørgslen tog for lang tid.',
 'http-curl-error' => 'Fejl under hentning af URL: $1',
-'http-host-unreachable' => 'Webadresse er ikke tilgængelig.',
 'http-bad-status' => 'Der opstod et problem under HTTP-forespørgslen: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index f15bd49..e581a82 100644 (file)
@@ -1460,15 +1460,6 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'search-external' => 'Externe Suche',
 'searchdisabled' => 'Die {{SITENAME}}-Suche ist deaktiviert. Du kannst unterdessen mit Google suchen. Bitte bedenke, dass der Suchindex von {{SITENAME}} veraltet sein kann.',
 
-# Quickbar
-'qbsettings' => 'Seitenleiste',
-'qbsettings-none' => 'Keine',
-'qbsettings-fixedleft' => 'Links, fest',
-'qbsettings-fixedright' => 'Rechts, fest',
-'qbsettings-floatingleft' => 'Links, schwebend',
-'qbsettings-floatingright' => 'Rechts, schwebend',
-'qbsettings-directionality' => 'Fest, abhängig von der Schreibrichtung der gewählten Sprache',
-
 # Preferences page
 'preferences' => 'Einstellungen',
 'mypreferences' => 'Einstellungen',
@@ -2025,7 +2016,6 @@ Aus Sicherheitsgründen ist img_auth.php deaktiviert.',
 'http-read-error' => 'HTTP-Lesefehler.',
 'http-timed-out' => 'Zeitüberschreitung bei der HTTP-Anfrage.',
 'http-curl-error' => 'Fehler beim Abruf der URL: $1',
-'http-host-unreachable' => 'URL konnte nicht erreicht werden.',
 'http-bad-status' => 'Während der HTTP-Anfrage ist ein Fehler aufgetreten: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 31358fc..3f0c02a 100644 (file)
@@ -1363,15 +1363,6 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
 'search-external' => 'Cıgeyrayışê teberi',
 'searchdisabled' => '{{SITENAME}} no keyepel de cıgerayiş muweqqet bıryayo. no benatê de şıma pê Google eşkeni zerreyê {{SITENAME}} de cıgerayiş bıkeri.',
 
-# Quickbar
-'qbsettings' => 'Çûwo pêt',
-'qbsettings-none' => 'Çıniyo',
-'qbsettings-fixedleft' => 'Rêcaene çhep',
-'qbsettings-fixedright' => 'Rêcaene raşt',
-'qbsettings-floatingleft' => 'rêcaene çhep',
-'qbsettings-floatingright' => 'rêcaene raşt',
-'qbsettings-directionality' => 'Sabito, hereket de dosya da zıwan de şımaya gıredayeyo',
-
 # Preferences page
 'preferences' => 'Tercihi',
 'mypreferences' => 'Tercihi',
@@ -1906,7 +1897,7 @@ Kontrolê emeleyey oyo veş nêbeno.',
 'img-auth-accessdenied' => 'Cıresnayış vındarnayo.',
 'img-auth-nopathinfo' => 'PATH_INFO kemiyo.
 Teqdimkerê şıma seba ravurnayışê nê melumati eyar nêkerdo.
-Beno ke be CGI-bıngeyın bo u img_auth rê destek nêbeno.
+Beno ke be CGI-bıngeyın bo u img_auth rê desteg nêbeno.
 https://www.mediawiki.org/wiki/Manual:Image_Authorization Selahiyetê resımi bıvêne.',
 'img-auth-notindir' => 'Patikayê ke ti wazeno direktorê bar biyayişî de çin o.',
 'img-auth-badtitle' => '"$1" ra nieşkeno yew seroğê raştî virazî.',
@@ -1928,7 +1919,6 @@ qey pawıtışi, img_auth.php battal verdiyayo.",
 'http-read-error' => 'Wendişê HTTP de xeta esta.',
 'http-timed-out' => 'Waştişê HTTP qediya.',
 'http-curl-error' => 'Xetayê URLi: $1',
-'http-host-unreachable' => 'URL rê niresa.',
 'http-bad-status' => 'Waştişê tu HTTP yew problem biya: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -3337,7 +3327,7 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-artist' => 'Nuştoğ',
 'exif-copyright' => 'Wahirê copyrighti',
 'exif-exifversion' => 'Versiyonê Exif',
-'exif-flashpixversion' => 'Versiyonê Flashpix destek bike',
+'exif-flashpixversion' => 'Versiyonê Flashpix rê biyo desteg',
 'exif-colorspace' => 'Cayê rengi',
 'exif-componentsconfiguration' => 'manayê qisimê hemi',
 'exif-compressedbitsperpixel' => 'Modê komprasyonê resimi',
index ca4d485..0970c5a 100644 (file)
@@ -1182,15 +1182,6 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-external' => 'Eksterne pytanje',
 'searchdisabled' => 'Pytanje we {{SITENAME}} jo se deaktiwěrowało. Tak dłujko móžoš w googlu pytaś. Pšosym wobmysli, až móžo pytanski indeks za {{SITENAME}} njeaktualny byś.',
 
-# Quickbar
-'qbsettings' => 'Bocna lejstwa',
-'qbsettings-none' => 'Žedne',
-'qbsettings-fixedleft' => 'nalěwo fiksěrowane',
-'qbsettings-fixedright' => 'napšawo fiksěrowane',
-'qbsettings-floatingleft' => 'nalěwo se znosujuce',
-'qbsettings-floatingright' => 'napšawo se znosujuce',
-'qbsettings-directionality' => 'Kšuty, wótwisny wót pisańskego směra twójeje rěcy',
-
 # Preferences page
 'preferences' => 'Nastajenja',
 'mypreferences' => 'Nastajenja',
@@ -1739,7 +1730,6 @@ Za optimalnu wěstotu img_auth.php jo znjemóžnjony.',
 'http-read-error' => 'Cytańska zmólka HTTP.',
 'http-timed-out' => 'HTTP-napšašowanje jo cas pśekšocyło.',
 'http-curl-error' => 'Zmólka pśi wótwółowanju URL: $1',
-'http-host-unreachable' => 'URL njejo był pśistupny.',
 'http-bad-status' => 'Wob cas HTTP-napšašowanje jo problem był: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 8365dcb..ba5633d 100644 (file)
@@ -1804,15 +1804,7 @@ Note that their indexes of {{SITENAME}} content may be out of date.',
 
 # OpenSearch description
 'opensearch-desc' => '{{SITENAME}} ({{CONTENTLANGUAGE}})', # do not translate or duplicate this message to other languages
-
-# Quickbar
-'qbsettings'                => 'Quickbar',
-'qbsettings-none'           => 'None',
-'qbsettings-fixedleft'      => 'Fixed left',
-'qbsettings-fixedright'     => 'Fixed right',
-'qbsettings-floatingleft'   => 'Floating left',
-'qbsettings-floatingright'  => 'Floating right',
-'qbsettings-directionality' => 'Fixed, depending on the script directionality of your language',
+'search-error' => 'An error has occurred while searching: $1',
 
 # Preferences page
 'preferences'                   => 'Preferences',
index 64bdf59..50cae1b 100644 (file)
@@ -1990,7 +1990,6 @@ Para óptima seguridad, img_auth.php está desactivado.',
 'http-read-error' => 'Error de lectura HTTP.',
 'http-timed-out' => 'La solicitud HTTP ha expirado.',
 'http-curl-error' => 'Error al recuperar el URL: $1',
-'http-host-unreachable' => 'No fue posible acceder a la URL.',
 'http-bad-status' => 'Ha habido un problema durante la solicitud HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index c9aa58b..5873721 100644 (file)
@@ -1872,7 +1872,6 @@ Turvakaalutlustel on img_auth.php kasutus keelatud.',
 'http-read-error' => 'HTTP-lugemistõrge.',
 'http-timed-out' => 'HTTP-päring aegus.',
 'http-curl-error' => 'Tõrge URL-i $1 lugemisel',
-'http-host-unreachable' => 'Internetiaadress pole kättesaadav.',
 'http-bad-status' => 'HTTP-päringu ajal ilmnes tõrge: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 5586b56..c00732a 100644 (file)
@@ -1122,14 +1122,6 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
 'search-external' => 'Kanpo bilaketa',
 'searchdisabled' => '{{SITENAME}}(e)n ezgaituta dago bilaketa. Dena dela, Google erabiliz ere egin dezakezu bilaketa. Kontuan izan bertan dituzten {{SITENAME}}(e)ko emaitzak zaharkituta egon daitezkeela.',
 
-# Quickbar
-'qbsettings' => 'Laster-barra',
-'qbsettings-none' => 'Ezein ere',
-'qbsettings-fixedleft' => 'Eskuinean',
-'qbsettings-fixedright' => 'Ezkerrean',
-'qbsettings-floatingleft' => 'Ezkerrean mugikor',
-'qbsettings-floatingright' => 'Eskubian flotatzen',
-
 # Preferences page
 'preferences' => 'Hobespenak',
 'mypreferences' => 'Hobespenak',
@@ -1582,7 +1574,6 @@ Fitxategien sarbidea baino ez da onartzen.',
 'http-read-error' => 'HTTP irakurketa-akatsa.',
 'http-timed-out' => 'HTTP eskaera iraungi da.',
 'http-curl-error' => 'Errorea URLa bilatzerakoan: $1',
-'http-host-unreachable' => 'Ezin da URL-a atzeman.',
 'http-bad-status' => 'Arazo bat egon da HTTP eskaera bitartean: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index c867d66..99945a3 100644 (file)
@@ -1515,15 +1515,6 @@ $1",
 موقتاً می‌توانید از جستجوی Google استفاده کنید.
 توجه کنید که نتایج حاصل از جستجو با آن روش ممکن است به‌روز نباشند.',
 
-# Quickbar
-'qbsettings' => 'نوار سریع',
-'qbsettings-none' => 'نباشد',
-'qbsettings-fixedleft' => 'ثابت چپ',
-'qbsettings-fixedright' => 'ثابت راست',
-'qbsettings-floatingleft' => 'شناور چپ',
-'qbsettings-floatingright' => 'شناور راست',
-'qbsettings-directionality' => 'ثابت، بسته به جهت نگارش زبان شما',
-
 # Preferences page
 'preferences' => 'ترجیحات',
 'mypreferences' => 'ترجیحات',
@@ -2079,7 +2070,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'http-read-error' => 'خطای خواندن اچ‌تی‌تی‌پی.',
 'http-timed-out' => 'مهلت درخواست اچ‌تی‌تی‌پی به سر رسید.',
 'http-curl-error' => 'خطا در آوردن نشانی اینترنتی: $1',
-'http-host-unreachable' => 'دسترسی به نشانی اینترنتی ممکن نشد.',
 'http-bad-status' => 'در حین درخواست اچ‌تی‌تی‌پی خطایی رخ داد: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -2636,7 +2626,7 @@ $PAGEINTRO $NEWPAGE
 شما می‌توانید سطح محافظت این صفحه را تغییر بدهید اما این کار تاثیری بر محافظت آبشاری صفحه نخواهد گذاشت.',
 'protect-default' => 'همهٔ کاربرها',
 'protect-fallback' => 'فقط به کاربرهایی که دسترسی «$1» دارند، اجازه داده می‌شود',
-'protect-level-autoconfirmed' => 'اجازÙ\87 Ù\81Ù\82Ø· Ø¨Ø±Ø§Û\8c Ø¨Ù\87 Ú©Ø§Ø±Ø¨Ø±Ù\87اÛ\8c تائیدشده',
+'protect-level-autoconfirmed' => 'تÙ\86Ù\87ا Ú©Ø§Ø±Ø¨Ø±Ø§Ù\86 تائیدشده',
 'protect-level-sysop' => 'فقط مدیران',
 'protect-summary-cascade' => 'آبشاری',
 'protect-expiring' => 'زمان سرآمدن $1 (UTC)',
index 586f7b2..4a123aa 100644 (file)
@@ -1880,7 +1880,6 @@ Parhaan turvallisuuden vuoksi img_auth.php on poissa käytöstä.',
 'http-read-error' => 'HTTP-lukuvirhe.',
 'http-timed-out' => 'HTTP-pyyntö aikakatkaistiin.',
 'http-curl-error' => 'Virhe noudettaessa verkko-osoitetta: $1',
-'http-host-unreachable' => 'Ei voitu tavoittaa verkko-osoitetta',
 'http-bad-status' => 'HTTP-pyynnön aikana oli ongelma: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index dba1289..0f3fc37 100644 (file)
@@ -1374,7 +1374,7 @@ Vous pouvez trouver des détails dans le [{{fullurl:{{#Special:Log}}/delete|page
 'searchresulttext' => "Pour plus d'informations sur la recherche dans {{SITENAME}}, voir [[{{MediaWiki:Helppage}}|{{int:help}}]].",
 'searchsubtitle' => "Vous avez recherché « '''[[:$1]]''' » ([[Special:Prefixindex/$1|toutes les pages commençant par « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toutes les pages qui ont un lien vers « $1 »]])",
 'searchsubtitleinvalid' => "Vous avez recherché « '''$1''' »",
-'toomanymatches' => "Un trop grand nombre d'occurrences a été renvoyé, veuillez soumettre une requête différente.",
+'toomanymatches' => 'Un trop grand nombre d’occurrences a été renvoyé, veuillez soumettre une requête différente.',
 'titlematches' => 'Correspondances dans les titres des pages',
 'notitlematches' => 'Aucun titre de page ne correspond à la recherche.',
 'textmatches' => 'Correspondances dans le texte des pages',
@@ -1431,15 +1431,6 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
 'search-external' => 'Recherche externe',
 'searchdisabled' => 'La recherche sur {{SITENAME}} est désactivée. En attendant la réactivation, vous pouvez effectuer une recherche via Google. Attention, leur indexation du contenu de {{SITENAME}} peut ne pas être à jour.',
 
-# Quickbar
-'qbsettings' => "Barre d'outils",
-'qbsettings-none' => 'Aucune',
-'qbsettings-fixedleft' => 'Gauche',
-'qbsettings-fixedright' => 'Droite',
-'qbsettings-floatingleft' => 'Flottante à gauche',
-'qbsettings-floatingright' => 'Flottante à droite',
-'qbsettings-directionality' => "Fixe, en fonction de la directivité d'écriture de votre langue",
-
 # Preferences page
 'preferences' => 'Préférences',
 'mypreferences' => 'Préférences',
@@ -1995,7 +1986,6 @@ Pour une sécurité optimale, img_auth.php est désactivé.",
 'http-read-error' => 'Erreur de lecture HTTP.',
 'http-timed-out' => 'La requête HTTP a expiré.',
 'http-curl-error' => "Erreur lors de la récupération de l'URL : $1",
-'http-host-unreachable' => "Impossible d'atteindre l'URL.",
 'http-bad-status' => 'Il y a eu un problème lors de la requête HTTP : $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -3119,10 +3109,10 @@ Vous pouvez toutefois en visualiser la source.',
 'tooltip-watchlistedit-normal-submit' => 'Enlever les titres',
 'tooltip-watchlistedit-raw-submit' => 'Mise à jour de la liste de suivi',
 'tooltip-recreate' => 'Recréer la page même si celle-ci a été effacée',
-'tooltip-upload' => "Démarrer l'import",
+'tooltip-upload' => 'Démarrer l’import',
 'tooltip-rollback' => '« Révoquer » annule en un clic la ou les modification(s) de cette page par son dernier contributeur.',
-'tooltip-undo' => "« Défaire » révoque cette modification et ouvre la fenêtre de modification en mode prévisualisation.
-Permet de rétablir la version précédente et d'ajouter un motif dans la boîte de résumé.",
+'tooltip-undo' => '« Défaire » révoque cette modification et ouvre la fenêtre de modification en mode prévisualisation.
+Permet de rétablir la version précédente et d’ajouter un motif dans la boîte de résumé.',
 'tooltip-preferences-save' => 'Sauvegarder les préférences',
 'tooltip-summary' => 'Entrez un bref résumé',
 
index dadabb0..b48f940 100644 (file)
@@ -1073,15 +1073,6 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'search-external' => 'Extern säkj',
 'searchdisabled' => 'Jü {{SITENAME}}-säkj as deaktiviird. Dü koost intwasche ma Google säke. Betånk, dåt di säkindäks for {{SITENAME}} ferüüljet weese koon.',
 
-# Quickbar
-'qbsettings' => 'Sidjenliist',
-'qbsettings-none' => 'Niinj',
-'qbsettings-fixedleft' => 'Lachts, fääst',
-'qbsettings-fixedright' => 'Rochts, fääst',
-'qbsettings-floatingleft' => 'Lachts, auergung',
-'qbsettings-floatingright' => 'Rochts, auergung',
-'qbsettings-directionality' => 'Fääst, hinget faan di skriiwwai faan det spriak uf',
-
 # Preferences page
 'preferences' => 'Önjstalinge',
 'mypreferences' => 'Iinstelangen',
@@ -1632,6 +1623,7 @@ $1",
 'blocklist' => 'Spärd brükere',
 'ipblocklist' => 'Spärd brükere',
 'ipblocklist-legend' => 'Spärd brükere fine',
+'ipblocklist-submit' => 'Sjük',
 'expiringblock' => 'iinjet aw e $1 am e klook $2',
 'blocklink' => 'späre',
 'unblocklink' => 'frijeewe',
@@ -1784,6 +1776,9 @@ Hål di '''naie''' tiitel uner '''muul''' önjdreege, deeruner jü ambenååming
 'svg-long-desc' => 'SVG-dåtäi, basisgrutelse: $1 × $2 pixel, dåtäigrutelse: $3',
 'show-big-image' => 'Färsjon önj huuger apliising',
 
+# Special:NewFiles
+'ilsubmit' => 'Sjük',
+
 # Bad image list
 'bad_image_list' => 'Formååt:
 
@@ -1843,8 +1838,12 @@ Deeraw föliende sidelinke önj dåtseelwi ra definiire ütnååme, önj di kont
 'version-software-product' => 'Produkt',
 'version-software-version' => 'Färsjoon',
 
+# Special:FileDuplicateSearch
+'fileduplicatesearch-submit' => 'Sjük',
+
 # Special:SpecialPages
 'specialpages' => 'Spetsjåålside',
+'specialpages-group-login' => 'Melde di uun of skriiw di iin',
 
 # External image whitelist
 'external_image_whitelist' => " #Feranere detheer rä ei<pre>
@@ -1863,27 +1862,33 @@ Deeraw föliende sidelinke önj dåtseelwi ra definiire ütnååme, önj di kont
 'htmlform-selectorother-other' => 'Oudere',
 
 # New logging system
-'logentry-delete-delete' => '$1 hää det sidj $3 stregen',
-'logentry-delete-restore' => '$1 hää det sidj $3 weder iinsteld',
-'logentry-delete-event' => '$1 hää det uunlukin feranert faan {{PLURAL:$5|en logbuk iindrach|$5 logbuk iindracher}} üüb $3: $4',
-'logentry-delete-revision' => '$1 hää det uunlukin feranert faan {{PLURAL:$5|ian wersjuun|$5 wersjuunen}} faan det sidj $3: $4',
-'logentry-delete-event-legacy' => '$1 hää det uunlukin feranert faan logbuk iindracher üüb $3',
-'logentry-delete-revision-legacy' => '$1 hää det uunlukin feranert faan wersjuunen faan det sidj $3',
-'logentry-suppress-delete' => '$1 hää det sidj $3 wechtrakt',
-'logentry-suppress-event' => '$1 hää stalswigin det uunlukin feranert faan {{PLURAL:$5|en logbuk iindrach|$5 logbuk iindracher}} üüb $3: $4',
-'logentry-suppress-revision' => '$1 hää stalswigin det uunlukin feranert faan {{PLURAL:$5|ian wersjuun|$5 wersjuunen}} faan det sidj $3: $4',
-'logentry-suppress-event-legacy' => '$1 hää stalswigin det uunlukin fernanert faan logbuk iindracher üüb $3',
-'logentry-suppress-revision-legacy' => '$1 hää stalswigin det uunlukin feranert faan wersjuunen faan det sidj $3',
+'logentry-delete-delete' => '$1 {{Gender:$2}} hää det sidj $3 stregen',
+'logentry-delete-restore' => '$1 {{GENDER:$2}} hää det sidj $3 weder iinsteld',
+'logentry-delete-event' => '$1 {{GENDER:$2}} hää det uunsicht feranert faan {{PLURAL:$5|en logbuk iindrach|$5 logbuk iindracher}} üüb $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2}} hää det uunsicht feranert faan {{PLURAL:$5|ian wersjuun|$5 wersjuunen}} faan det sidj $3: $4',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2}} hää det uunsicht feranert faan logbuk iindracher üüb $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2}} hää det uunsicht feranert faan wersjuunen faan det sidj $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2}} hää det sidj $3 wechtrakt',
+'logentry-suppress-event' => '$1 {{GENDER:$2}} hää stalswigin det uunsicht feranert faan {{PLURAL:$5|en logbuk iindrach|$5 logbuk iindracher}} üüb $3: $4',
+'logentry-suppress-revision' => '$1 {{GENDER:$2}} hää stalswigin det uunsicht feranert faan {{PLURAL:$5|ian wersjuun|$5 wersjuunen}} faan det sidj $3: $4',
+'logentry-suppress-event-legacy' => '$1 {{GENDER:$2}} hää stalswigin det uunsicht feranert faan logbuk iindracher üüb $3',
+'logentry-suppress-revision-legacy' => '$1 {{GENDER:$2}} hää stalswigin det uunlukin feranert faan wersjuunen faan det sidj $3',
 'revdelete-uname-hid' => 'brükernoome ferstäägen',
 'revdelete-uname-unhid' => 'brükernoome frijääwen',
 'revdelete-restricted' => 'gränse jüle uk for administratoore',
 'revdelete-unrestricted' => 'gränse for administratoore wächnümen',
-'logentry-move-move' => '$1 hää det sidj $3 efter $4 fersköwen.',
-'logentry-move-move-noredirect' => '$1 hää det sidj $3 efter $4 saner widjerfeerang fersköwen.',
-'logentry-move-move_redir' => '$1 hää det sidj $3 efter $4 fersköwen an diarbi en widjerfeerang auerskrewen.',
-'logentry-move-move_redir-noredirect' => '$1 hää det sidj $3 efter $4 fersköwen an diarbi en widjerfeerang auerskrewen saner salew en widjerfeerang uuntuleien.',
+'logentry-move-move' => '$1 {{GENDER:$2}} hää det sidj $3 efter $4 fersköwen.',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2}} hää det sidj $3 efter $4 saner widjerfeerang fersköwen.',
+'logentry-move-move_redir' => '$1 {{GENDER:$2}} hää det sidj $3 efter $4 fersköwen an diarbi en widjerfeerang auerskrewen.',
+'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2}} hää det sidj $3 efter $4 fersköwen an diarbi en widjerfeerang auerskrewen saner salew en widjerfeerang uuntuleien.',
+'logentry-newusers-newusers' => 'Brükerkonto $1 as {{GENDER:$2|iinracht}} wurden',
+'logentry-newusers-create2' => 'Brükerkonto $3 as faan $1 {{GENDER:$2|iinracht}} wurden',
+'logentry-newusers-autocreate' => 'Brükerkonto $1 as automaatisk {{GENDER:$2|iinracht}} wurden',
 'rightsnone' => '(-)',
 
+# Search suggestions
+'searchsuggest-search' => 'Sjük',
+
 # Durations
 'duration-seconds' => '$1 {{PLURAL:$1|sekund|sekunden}}',
 'duration-minutes' => '$1 {{PLURAL:$1|minüüt|minüüten}}',
index 0b93355..c617308 100644 (file)
@@ -986,15 +986,6 @@ Feuch ri ''all:'' a chuir air beulaibh an iarrtais agad gus rannsachadh a dhèan
 'S urrainn dhut lorg a dhèanamh air Google san eadar-àm.
 Faodaidh gum bi inneacsan susbaint {{SITENAME}} tuilleadh 's sean ge-tà.",
 
-# Quickbar
-'qbsettings' => 'Grad-bhàr',
-'qbsettings-none' => 'Chan eil gin',
-'qbsettings-fixedleft' => 'Socraichte air an taobh chlì',
-'qbsettings-fixedright' => 'Socraichte air an taobh deas',
-'qbsettings-floatingleft' => 'Air fleòd air an taobh chlì',
-'qbsettings-floatingright' => 'Air fleòd air an taobh deas',
-'qbsettings-directionality' => 'Socraichte a-rèir comhair sgriobt do chànain',
-
 # Preferences page
 'preferences' => 'Roghainnean',
 'mypreferences' => 'Na roghainnean agam',
index 2f22afe..933cc2a 100644 (file)
@@ -1329,15 +1329,6 @@ Probe a fixar a súa petición con ''all:'' para procurar en todo o contido (inc
 Mentres tanto pode procurar usando o Google.
 Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados.',
 
-# Quickbar
-'qbsettings' => 'Opcións da barra rápida',
-'qbsettings-none' => 'Ningunha',
-'qbsettings-fixedleft' => 'Fixa á esquerda',
-'qbsettings-fixedright' => 'Fixa á dereita',
-'qbsettings-floatingleft' => 'Flotante á esquerda',
-'qbsettings-floatingright' => 'Flotante á dereita',
-'qbsettings-directionality' => 'Fixa, segundo a dirección de escritura da súa lingua',
-
 # Preferences page
 'preferences' => 'Preferencias',
 'mypreferences' => 'Preferencias',
@@ -1898,7 +1889,6 @@ Para unha seguridade óptima, img_auth.php está desactivado.',
 'http-read-error' => 'Erro de lectura HTTP.',
 'http-timed-out' => 'O pedido HTTP expirou.',
 'http-curl-error' => 'Ocorreu un erro ao acceder ao URL: $1',
-'http-host-unreachable' => 'Non se puido acceder ao URL.',
 'http-bad-status' => 'Houbo un problema durante a solicitude HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 2a183af..6850588 100644 (file)
@@ -1422,15 +1422,6 @@ $1",
 בינתיים אפשר לחפש באמצעות גוגל.
 שימו לב שייתכן שהמידע של {{SITENAME}} שם אינו מעודכן.',
 
-# Quickbar
-'qbsettings' => 'הגדרות סרגל כלים',
-'qbsettings-none' => 'ללא',
-'qbsettings-fixedleft' => 'קבוע משמאל',
-'qbsettings-fixedright' => 'קבוע מימין',
-'qbsettings-floatingleft' => 'צף משמאל',
-'qbsettings-floatingright' => 'צף מימין',
-'qbsettings-directionality' => 'קבוע, תלוי בכיוון הכתב של השפה שלך',
-
 # Preferences page
 'preferences' => 'העדפות',
 'mypreferences' => 'העדפות',
@@ -1991,7 +1982,6 @@ $1',
 'http-read-error' => 'שגיאת קריאה של HTTP.',
 'http-timed-out' => 'עבר זמן ההמתנה של בקשת ה־HTTP.',
 'http-curl-error' => 'שגיאה בקבלת כתובת ה־URL‏: $1',
-'http-host-unreachable' => 'לא ניתן להגיע לכתובת ה־URL.',
 'http-bad-status' => 'הייתה בעיה בשליחת בקשת ה־HTTP‏: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index d71f2b5..b1bc115 100644 (file)
@@ -1102,15 +1102,6 @@ Aapan query ke ''all:'' se suruu kar ke visay suchi me khojo (including talk pag
 Aap tab tak Google se khoje sakta hai.
 Yaad rakhna ki uu log ke {{SITENAME}} ke index saait purana hoi.',
 
-# Quickbar
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'Koi nai',
-'qbsettings-fixedleft' => 'Left me fixed hai',
-'qbsettings-fixedright' => 'Right me fixed hai',
-'qbsettings-floatingleft' => 'Baaen or baho',
-'qbsettings-floatingright' => 'Daaen or baho',
-'qbsettings-directionality' => 'Banae dewa gais hae, lekin ii aap ke bhasa ke script directionality ke uppar nibhar hae',
-
 # Preferences page
 'preferences' => 'Pasand',
 'mypreferences' => 'Pasand',
@@ -1655,7 +1646,6 @@ Puura surakchha ke khatir, img_auth.php ke band kar dewa gais hae.',
 'http-read-error' => 'HTTP ke parrhe me galti hae',
 'http-timed-out' => 'HTTP ke khatir time nai hae.',
 'http-curl-error' => 'URL ke laawe me galti hoe gais hae: $1',
-'http-host-unreachable' => 'URL pahunche nai sakaa hae',
 'http-bad-status' => 'HTTP ke maange ke time kuch garrbarr hoe gais hae: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index a25dcc9..6e5cb8c 100644 (file)
@@ -1183,15 +1183,6 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
 'search-external' => 'Eksterne pytanje',
 'searchdisabled' => 'Pytanje w {{GRAMMAR:lokatiw|{{SITENAME}}}} tuchwilu móžne njeje. Móžeš mjeztym z Google pytać. Wobkedźbuj, zo móža wuslědki z wobsaha {{GRAMMAR:genitiw|{{SITENAME}}}} zestarjene być.',
 
-# Quickbar
-'qbsettings' => 'Pobóčna lajsta',
-'qbsettings-none' => 'Žane',
-'qbsettings-fixedleft' => 'Leži nalěwo',
-'qbsettings-fixedright' => 'Leži naprawo',
-'qbsettings-floatingleft' => 'Wisa nalěwo',
-'qbsettings-floatingright' => 'Wisa naprawo',
-'qbsettings-directionality' => 'Kruty, wotwisny wot pisanskeho směra twojeje rěče',
-
 # Preferences page
 'preferences' => 'Nastajenja',
 'mypreferences' => 'Nastajenja',
@@ -1744,7 +1735,6 @@ Za optimalnu wěstotu je img_auth.php znjemóžnjeny.',
 'http-read-error' => 'Čitanski zmylk HTTP.',
 'http-timed-out' => 'Naprašowanje HTTP je čas překročiło.',
 'http-curl-error' => 'Zmylk při wołanju URL: $1',
-'http-host-unreachable' => 'URL njeda so docpěć.',
 'http-bad-status' => 'Problem je za HTTP-naprašowanje wustupił: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 225b73b..c35740c 100644 (file)
@@ -12,6 +12,7 @@
  * @author Aldnonymous
  * @author Anakmalaysia
  * @author ArdWar
+ * @author Bawoor
  * @author Bennylin
  * @author Borgx
  * @author Dosmiin Barsbold
@@ -1392,15 +1393,6 @@ Rinciannya dapat ditemukan di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGE
 Anda dapat mencari melalui Google untuk sementara waktu.
 Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencakup perubahan-perubahan terakhir.',
 
-# Quickbar
-'qbsettings' => 'Pengaturan bar pintas',
-'qbsettings-none' => 'Tidak ada',
-'qbsettings-fixedleft' => 'Tetap sebelah kiri',
-'qbsettings-fixedright' => 'Tetap sebelah kanan',
-'qbsettings-floatingleft' => 'Mengambang sebelah kiri',
-'qbsettings-floatingright' => 'Mengambang sebelah kanan',
-'qbsettings-directionality' => 'Tetap, tergantung pada bentuk skrip dari bahasa Anda',
-
 # Preferences page
 'preferences' => 'Preferensi',
 'mypreferences' => 'Preferensi',
@@ -1825,7 +1817,7 @@ Jika Anda tetap ingin memuatkan berkas Anda, harap kembali dan gunakan nama lain
 'uploadjava' => 'Berkas ini adalah berkas ZIP yang mengnadung berkas .class Java.
 Penggunggahan berkas Java tidak diperbolehkan karena dapat menyebabkan pengabaian batasan keamanan.',
 'upload-source' => 'Berkas sumber',
-'sourcefilename' => 'Nama berkas sumber:',
+'sourcefilename' => 'Jeneng berkas sumber:',
 'sourceurl' => 'URL sumber:',
 'destfilename' => 'Nama berkas tujuan:',
 'upload-maxfilesize' => 'Ukuran berkas maksimum: $1',
@@ -1956,7 +1948,6 @@ Untuk pilihan keamanan, img_auth.php dinonaktifkan.',
 'http-read-error' => 'Kesalahan pembacaan HTTP',
 'http-timed-out' => 'Permintaan HTTP lewat tenggat.',
 'http-curl-error' => 'Kesalahan saat mengambil URL: $1',
-'http-host-unreachable' => 'Tidak dapat mencapai URL.',
 'http-bad-status' => 'Ada masalah saat permintaan halaman HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 3258d5c..bc66a9e 100644 (file)
@@ -1690,7 +1690,6 @@ Para iti kangatuan a talinaay, nabaldado ti img_auth.php.',
 'http-read-error' => 'Biddut ti panagbasa ti HTTP.',
 'http-timed-out' => 'Nagsardeng ti panagtulod ti HTTP.',
 'http-curl-error' => 'Biddut ti panagala ti URL: $1',
-'http-host-unreachable' => 'Di madanon ti URL',
 'http-bad-status' => 'Adda pakirut idi las-ud ti panagkiddaw ti HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 508b464..c97e167 100644 (file)
@@ -1297,15 +1297,6 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 Þú getur leitað í genum Google á meðan.
 Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
 
-# Quickbar
-'qbsettings' => 'Valblað',
-'qbsettings-none' => 'Sleppa',
-'qbsettings-fixedleft' => 'Fast vinstra megin',
-'qbsettings-fixedright' => 'Fast hægra megin',
-'qbsettings-floatingleft' => 'Fljótandi til vinstri',
-'qbsettings-floatingright' => 'Fljótandi til hægri',
-'qbsettings-directionality' => 'Lagað, fer eftir því í hvaða átt er skrifað á þínu tungumáli.',
-
 # Preferences page
 'preferences' => 'Stillingar',
 'mypreferences' => 'Mínar stillingar',
@@ -1854,7 +1845,6 @@ Vegna öryggissjónarmiða er img_auth.php óvirkt.',
 'http-read-error' => 'HTTP lesturs villa.',
 'http-timed-out' => 'Tímamörk HTTP beiðni rann út.',
 'http-curl-error' => 'Villa við að sækja vefslóð: $1',
-'http-host-unreachable' => 'Gat ekki náð í vefslóðina',
 'http-bad-status' => 'Mistök við HTTP beiðnina: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index c663628..a52973c 100644 (file)
@@ -577,6 +577,7 @@ $1',
 'site-atom-feed' => 'Feed Atom di $1',
 'page-rss-feed' => 'Feed RSS per "$1"',
 'page-atom-feed' => 'Feed Atom per "$1"',
+'feed-rss' => 'RSS',
 'red-link-title' => '$1 (la pagina non esiste)',
 'sort-descending' => 'Ordinamento decrescente',
 'sort-ascending' => 'Ordinamento crescente',
@@ -1320,15 +1321,6 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 'search-external' => 'Ricerca esterna',
 'searchdisabled' => 'La ricerca interna di {{SITENAME}} non è attiva; nel frattempo si può provare ad usare un motore di ricerca esterno come Google. (Si noti però che i contenuti di {{SITENAME}} presenti in tali motori potrebbero non essere aggiornati.)',
 
-# Quickbar
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'Nessuno',
-'qbsettings-fixedleft' => 'Fisso a sinistra',
-'qbsettings-fixedright' => 'Fisso a destra',
-'qbsettings-floatingleft' => 'Fluttuante a sinistra',
-'qbsettings-floatingright' => 'Fluttuante a destra',
-'qbsettings-directionality' => 'Fisso, a seconda della direzione del testo nella tua lingua',
-
 # Preferences page
 'preferences' => 'Preferenze',
 'mypreferences' => 'preferenze',
@@ -1869,7 +1861,6 @@ Per una sicurezza ottimale, img_auth.php è disattivato.',
 'http-read-error' => 'Errore di lettura HTTP.',
 'http-timed-out' => 'Richiesta HTTP scaduta.',
 'http-curl-error' => "Errore durante il recupero dell'URL: $1",
-'http-host-unreachable' => 'URL non raggiungibile.',
 'http-bad-status' => "C'è stato un problema durante la richiesta HTTP: $1 $2",
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -2672,6 +2663,7 @@ Consultare l'[[Special:BlockList|elenco dei blocchi]] per l'elenco dei bandi o b
 'proxyblocksuccess' => 'Fatto.',
 'sorbsreason' => 'Questo indirizzo IP è elencato come proxy aperto nella blacklist DNSBL utilizzata da {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Non è possibile creare nuovi accessi da questo indirizzo IP perché è elencato come proxy aperto nella blacklist DNSBL utilizzata da {{SITENAME}}.',
+'xffblockreason' => "Un indirizzo IP presente nell'intestazione X-Forwarded-For, tuo o del server proxy che stai utilizzando, è stato bloccato. La motivazione originale del blocco è: $1",
 'cant-block-while-blocked' => 'Non è possibile bloccare altri utenti mentre si è bloccati.',
 'cant-see-hidden-user' => 'L\'utente che si sta tentando di bloccare è stato già bloccato e nascosto. Poiché non hai il permesso "hideuser", non è possibile visualizzare o modificare il blocco dell\'utente.',
 'ipbblocked' => 'Non puoi bloccare o sbloccare altri utenti, perché tu stesso sei bloccato',
@@ -2968,13 +2960,8 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
 
 # Stylesheets
 'common.css' => '/* Gli stili CSS inseriti qui si applicano a tutte le skin */',
-'standard.css' => '/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Standard */',
-'nostalgia.css' => '/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Nostalgia */',
 'cologneblue.css' => '/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Cologne Blue */',
 'monobook.css' => '/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Monobook */',
-'myskin.css' => '/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin MySkin */',
-'chick.css' => '/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Chick */',
-'simple.css' => '/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Simple */',
 'modern.css' => '/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Modern */',
 'vector.css' => '/* Gli stili CSS inseriti qui si applicano agli utenti che usano la skin Vector */',
 'print.css' => "/* Gli stili CSS inseriti qui si applicano all'output in stampa */",
@@ -2987,13 +2974,8 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
 
 # Scripts
 'common.js' => '/* Il codice JavaScript inserito qui viene caricato da ciascuna pagina, per tutti gli utenti. */',
-'standard.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Standard */',
-'nostalgia.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Nostalgia */',
 'cologneblue.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Cologne Blue */',
 'monobook.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin MonoBook */',
-'myskin.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin MySkin */',
-'chick.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Chick */',
-'simple.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Simple */',
 'modern.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Modern */',
 'vector.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Vector */',
 'group-autoconfirmed.js' => '/ * Il codice JavaScript inserito qui viene caricato solo per gli utenti autoconvalidati * /',
index a3a2d4f..9c121da 100644 (file)
@@ -1463,15 +1463,6 @@ $1",
 さしあたってはGoogleなどで検索できます。
 ただし外部の検索エンジンの索引にある{{SITENAME}}のコンテンツは古い場合があります。',
 
-# Quickbar
-'qbsettings' => 'クイックバー',
-'qbsettings-none' => 'なし',
-'qbsettings-fixedleft' => '左端',
-'qbsettings-fixedright' => '右端',
-'qbsettings-floatingleft' => 'ウィンドウの左上に固定',
-'qbsettings-floatingright' => 'ウィンドウの右上に固定',
-'qbsettings-directionality' => 'あなたの言語の文字体系の書字方向に応じて固定',
-
 # Preferences page
 'preferences' => '個人設定',
 'mypreferences' => '個人設定',
@@ -2048,7 +2039,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization をご覧ください
 'http-read-error' => 'HTTP読み込みエラーです。',
 'http-timed-out' => 'HTTP要求がタイムアウトしました。',
 'http-curl-error' => 'URLからの取得に失敗しました: $1',
-'http-host-unreachable' => 'URLに到達できません。',
 'http-bad-status' => 'HTTP リクエストで問題が発生しました: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 59a932e..00ce677 100644 (file)
@@ -1071,15 +1071,6 @@ Rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'search-external' => 'Panggolèkan èkstèrnal',
 'searchdisabled' => 'Sawetara wektu iki panjenengan ora bisa nggolèk mawa fungsi golèk {{SITENAME}}. Kanggo saiki mangga panjenengan bisa golèk nganggo Google. Nanging isi indèks Google kanggo {{SITENAME}} bisa waé lawas lan durung dianyari.',
 
-# Quickbar
-'qbsettings' => 'Pengaturan bar sidhatan',
-'qbsettings-none' => 'Ora ana',
-'qbsettings-fixedleft' => 'Tetep sisih kiwa',
-'qbsettings-fixedright' => 'Tetep sisih tengen',
-'qbsettings-floatingleft' => 'Ngambang sisih kiwa',
-'qbsettings-floatingright' => 'Ngambang sisih tengen',
-'qbsettings-directionality' => 'Wis pesthi, gumantung saka wujud skrip basané Sampéyan',
-
 # Preferences page
 'preferences' => 'Preferensi (pilihan)',
 'mypreferences' => 'Préferènsi',
@@ -1414,13 +1405,13 @@ Alamat layang èlèktronik Sampéyan ora dituduhaké nalika wong liya ngubungi S
 'upload-recreate-warning' => "'''Pèngetan: Berkas mawa jeneng kuwi wis dibusak utawa disingkiraké.'''
 
 Log pambusakan lan panyingkiran saka kaca iki sumadhiya nèng kéné:",
-'uploadtext' => "Gunakna formulir neng ngisor kiyé kanggo ngunggah berkas.
-Kanggo ndeleng utawa nggoleti berkas sing sedurunge uwis diunggah tuju maring [[Special:FileList|dhaftar berkas sing wis diunggah]], gambar sing uwis diunggah (maning) uga kecathet neng [[Special:Log/upload|log pengunggahan]], sing dibusek neng [[Special:Log/delete|Log pembusekan]].
+'uploadtext' => "Anggé formulir ing ngandhap punika kanggé nginggahaké gambar.
+Kanggé mirsani utawi madosi gambar ingkang sampun dipununggah sakdèrèngipun pigunakaken [[Special:FileList|dhaftar berkas sing wis diunggah]], gambar ingkang dipununggah ulang ugi kadhaftar ing [[Special:Log/upload|log pangunggahan]], pambusakan ing [[Special:Log/delete|Log pambusakan]].
 
-Nèk nglampirna berkas neng kaca(artikel), gunakna salah siji format sekang pranala kiyé:
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Berkas.jpg]]</nowiki></code>''' nek nggunakna versi pepek berkas
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Berkas.png|200px|thumb|left|tèks alt]]</nowiki></code>''' nek dienggo kanggo gambar sing ambané 200 piksel neng njero kothak manggon neng sisih kiwe karo 'tèks alt' kanggo penjelasané
-* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Berkas.ogg]]</nowiki></code>''' kanggo ngaitna langsung maring berkas tur ora perlu ditampilaken berkasé.",
+Kanggé nyertakaken gambar ing satunggiling kaca, pigunakaken pranala salah setunggal saking format ing ngandhap punika:
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Berkas.jpg]]</nowiki></code>''' kanggé migunakaken versi pepak gambar
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Berkas.png|200px|thumb|left|tèks alt]]</nowiki></code>''' kanggé migunakaken gambar wiyaripun 200 piksel ing kothak ing sisih kiwa kanthi 'tèks alt' minangka panjelasan
+* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Berkas.ogg]]</nowiki></code>''' kanggé nggandhèng langsung dhumateng gambar tanpi nampilaké gambar",
 'upload-permitted' => 'Jenis berkas sing diidinaké: $1.',
 'upload-preferred' => 'Jenis berkas sing disaranaké: $1.',
 'upload-prohibited' => 'Jenis berkas sing dilarang: $1.',
@@ -1500,7 +1491,7 @@ Mangga priksa panyetèlan pangunggahan berkas.',
 'uploadjava' => 'Berkas kuwi berkas ZIP sing kaisi berkas .class Java.
 Ngungga berkas Java ora dililakaké amarga bisa nyebabaké ngluwèhaké wates kamanan.',
 'upload-source' => 'Berkas sumber',
-'sourcefilename' => 'Jeneng berkas sumber',
+'sourcefilename' => 'Jeneng berkas sumber:',
 'sourceurl' => 'URL sumber:',
 'destfilename' => 'Jeneng berkas sing dituju',
 'upload-maxfilesize' => 'Ukuran maksimal berkas: $1',
@@ -1617,7 +1608,6 @@ Kanggo kamanan paling apik, img_auth.php dipatèni.',
 'http-read-error' => 'Kasalahan maca HTTP.',
 'http-timed-out' => 'Panjalukan HTTP kliwat wates wektu.',
 'http-curl-error' => 'Kasalahan nalika njupuk URL: $1',
-'http-host-unreachable' => 'Ora bisa ngranggèh URL.',
 'http-bad-status' => 'Ana masalah nalika njaluk HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index d01f959..2e70002 100644 (file)
@@ -1248,15 +1248,6 @@ $1",
 'search-external' => 'გარე ძიება',
 'searchdisabled' => '{{SITENAME}}ში ძებნა გაუქმებულია. თქვენ შეგიძლიათ დროის შუალედით Google-ით ძებნა. მიაქციეთ ყურადღება, რომ {{SITENAME}}ში შესაძლებელია მათი ინდექსები აქტუალური არ არის.',
 
-# Quickbar
-'qbsettings' => 'სწრაფი ზოლი',
-'qbsettings-none' => 'არაფერი',
-'qbsettings-fixedleft' => 'ფიქსირებული მარცხნივ',
-'qbsettings-fixedright' => 'ფიქსირებული მარჯვნივ',
-'qbsettings-floatingleft' => 'მარცხნივ მცურავი',
-'qbsettings-floatingright' => 'მარჯვნივ მცურავი',
-'qbsettings-directionality' => 'ფიქსირებული, დამოკიდებული თქვენი ენის წერილობით მიმართულებაზე',
-
 # Preferences page
 'preferences' => 'კონფიგურაცია',
 'mypreferences' => 'კონფიგურაცია',
@@ -1801,7 +1792,6 @@ $1',
 'http-read-error' => 'HTTP წაკითხვის შეცდომა.',
 'http-timed-out' => 'HTTP მოთხოვნის დრო გავიდა.',
 'http-curl-error' => 'შეცდომა URL: $1-ის მოთხოვნისას',
-'http-host-unreachable' => 'URL მიუწვდომელია',
 'http-bad-status' => 'HTTP მოთხოვნისას აღმოჩენილია შეცდომა - $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 29e8e14..a301a9d 100644 (file)
@@ -1432,15 +1432,6 @@ $1",
 기능이 작동하지 않는 동안에는 구글(Google)을 이용해 찾을 수 있습니다.
 검색 엔진의 내용은 최신이 아닐 수 있다는 점을 주의해주세요.',
 
-# Quickbar
-'qbsettings' => '빨리가기 맞춤',
-'qbsettings-none' => '없음',
-'qbsettings-fixedleft' => '왼쪽 고정',
-'qbsettings-fixedright' => '오른쪽 고정',
-'qbsettings-floatingleft' => '왼쪽 유동',
-'qbsettings-floatingright' => '오른쪽 유동',
-'qbsettings-directionality' => '사용자 언어의 문자 입력 방향에 맞추어 고정',
-
 # Preferences page
 'preferences' => '사용자 환경 설정',
 'mypreferences' => '환경 설정',
@@ -2008,7 +1999,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization 을 참고하십시오
 'http-read-error' => 'HTTP 읽기 오류.',
 'http-timed-out' => 'HTTP 요청 시간 초과.',
 'http-curl-error' => 'URL 열기 오류: $1',
-'http-host-unreachable' => 'URL에 접근하지 못했습니다.',
 'http-bad-status' => 'HTTP 요청 중 오류 발생: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index eb032cc..4f11cd1 100644 (file)
@@ -1388,15 +1388,6 @@ Et es nit jesaht,
 dat dänne ihr Daate topaktuell sin,
 ävver et es besser wie jaa_nix.',
 
-# Quickbar
-'qbsettings' => '„Flöcke Links“',
-'qbsettings-none' => 'Fottlooße, dat well ich nit sinn',
-'qbsettings-fixedleft' => 'Am linke Rand fass aanjepapp',
-'qbsettings-fixedright' => 'Am rächte Rand fass aanjepapp',
-'qbsettings-floatingleft' => 'Am linke Rand am Schwevve',
-'qbsettings-floatingright' => 'Am rächte Rand am Schwevve',
-'qbsettings-directionality' => 'Faß, passend för wi eröm de Schreff för Ding Schprooch jeiht',
-
 # Preferences page
 'preferences' => 'ming Enstellunge',
 'mypreferences' => 'Enstellunge',
@@ -1973,7 +1964,6 @@ Dröm es <code lang="en">img_auth.php</code> zor Sisherheit heh affjeschalldt.',
 'http-read-error' => 'Et Lässe beim <code lang="en">HTTP</code> es donävve jeange.',
 'http-timed-out' => 'Di <code lang="en">HTTP</code>-Aanforderung hät zoh lang jebruch.',
 'http-curl-error' => 'Ene Fähler es opjetrodde beim Holle vun däm <code lang="en">URL</code>: $1',
-'http-host-unreachable' => 'Mer sen nit noh dämm <i lang="en">URL</i> dorschjekumme.',
 'http-bad-status' => 'Bei dä <code lang="en">HTTP</code>-Aanforderung es e Problem opjetrodde: Fähler&nbsp;$1 — $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -2339,7 +2329,7 @@ Mieh övver de einzel Rääschte fenkt Er op de [[{{MediaWiki:Listgrouprights-he
 'listgrouprights-key' => 'Lejend:
 * Dat es e <span class="listgrouprights-granted">jejovve Rääsch</span>
 * Dat es e <span class="listgrouprights-revoked">fottjenumme Rääsch</span>',
-'listgrouprights-group' => 'Jrupp',
+'listgrouprights-group' => 'Jropp',
 'listgrouprights-rights' => 'Räächte',
 'listgrouprights-helppage' => 'Help:Jrupperäächte',
 'listgrouprights-members' => '(opliste)',
@@ -2659,8 +2649,7 @@ $1',
 'blanknamespace' => '(Atikkele)',
 
 # Contributions
-'contributions' => '{{GENDER:$1|Däm Metmaacher|Däm|Däm Metmaacher|Dä Metmaacherėn|Däm Metmaacher}} $1
-{{GENDER:$1|singe|singe|singe|iere|singe}} Beidräch',
+'contributions' => '{{GENDER:$1|Däm Metmaacher|Däm|Däm Metmaacher|Dä Metmaacherėn|Däm}} $1 {{GENDER:$1|singe|singe|singe|iere|singe}} Beidräch',
 'contributions-title' => 'Beidräsch fum  $1',
 'mycontris' => 'Beidrähch',
 'contribsub2' => 'För dä Metmaacher: $1 ($2)',
@@ -3235,6 +3224,7 @@ Esu kam_mer noch en Aanmerkung en „{{int:summary}}“ maache.',
 'pageinfo-magic-words' => '{{PLURAL:$1|Ei Zauberwoot|$1 Zauberwööter|Kein Zauberwööter}}',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Ein verstoche Saachjropp|$1 verstoche Saachjroppe|Kein verstoche Saachjropp}}',
 'pageinfo-templates' => '{{PLURAL:$1|Ein Schablohn|$1 Schablohne|Kein Schablohn}} opjerohfe',
+'pageinfo-transclusions' => 'En {{PLURAL:$1|ein Sigk|$1 Sigge|kein Sigk}} enjeföösch',
 'pageinfo-toolboxlink' => 'Övver heh di Sigg',
 'pageinfo-redirectsto' => 'Leidt öm op',
 'pageinfo-redirectsto-info' => 'Aanjaabe övver di Sigg',
@@ -3331,6 +3321,8 @@ $1',
 'minutes' => '{{PLURAL:$1|eine Menutt|$1 Menutte|keine Menutt}}',
 'hours' => '{{PLURAL:$1|ein Schtundt|$1 Schtunde|kein Schtundt}}',
 'days' => '{{PLURAL:$1|einem Daach|$1 Dääsch|keinem Daach}}',
+'months' => '{{PLURAL:$1|Eine&nbsp;Monhnd|$1&nbsp;Mohnde|Keine&nbsp;Monhnd}}',
+'years' => '{{PLURAL:$1|Ein&nbsp;Jonhr|$1&nbsp;Johre|Kei&nbsp;Jonhr}}',
 'ago' => 'vür $1',
 'just-now' => 'jraad äävens',
 
@@ -4173,6 +4165,7 @@ die De häs han welle. Se künnt jet ällder un nit mieh aktoäll sin.',
 |De $1 wood als en neue Metmaacherėn
 |Dat $1 wood als ene neue Metmaacher}} aanjelaat.',
 'logentry-newusers-create2' => '{{GENDER:$4|Dä|Dat|Dä Metmaacher|De|Dat}} $3 wood {{GENDER:$2|vum|vum|vumm Metmaacher|vun dä|vum}} $1 aanjelaat.',
+'logentry-newusers-byemail' => '{{GENDER:$4|Dä|Dat|Dä Metmaacher|De|Dat}} $1 wood {{GENDER:$4|als Metmaacher|als Metmaacher||als Metmaacher|als Metmaacher}} aanjelaat un {{GENDER:$4|sing|em sing|däm sing|dä iehr|däm sing}} Paßwoot met der <i lang="en>e-mail</i> verscheck.',
 'logentry-newusers-autocreate' => '{{GENDER:$4|Dä|Dat|Dä Metmaacher|De|Dat}} $1 wood automattesch {{GENDER:$4|als Metmaacher|als Metmaacher||als Metmaacher|als Metmaacher}} aanjelaat.',
 'logentry-rights-rights' => '{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} „$1“ hät däm Metmaacher „$3“ sing Jroppe-Räächde vun „$4“ op „$5“ ömjestallt.',
 'logentry-rights-rights-legacy' => '{{GENDER:$1|Dä|Et|Dä Metmaacher|De|Dat}} $1 hät däm Metmaacher $3 sing Räääschte-Jroppe verändert.',
@@ -4232,6 +4225,7 @@ Wat De doh enjiß, kütt met Dingem Metmaachername un Dingem Brauser op die Sigg
 'api-error-ok-but-empty' => 'Fähler: Mer krijje kein Antwoot vum ẞööver.',
 'api-error-overwrite' => 'En Dattei ze övverschrieve es nit zohjelohße.',
 'api-error-stashfailed' => 'Fähler: Dä ẞööver hät kein Datteije zweschejeschpeischert.',
+'api-error-publishfailed' => 'Ene Fähler es em  server opjetrodde. En zweschejescheischerte Dattei kunnt nit öffentlesch jemaat wääde.',
 'api-error-timeout' => 'Dä ẞööver hät en dä jewennde Zick nit jeantwoot.',
 'api-error-unclassified' => 'Ene Fähler es opjetrodde, der mer nit kenne.',
 'api-error-unknown-code' => 'Nit bekannte Fähler: „$1“',
@@ -4242,15 +4236,15 @@ Wat De doh enjiß, kütt met Dingem Metmaachername un Dingem Brauser op die Sigg
 'api-error-verification-error' => 'Di Dattei künnt kappott sin, udder en verkehte Endong em Naame han.',
 
 # Durations
-'duration-seconds' => '{{PLURAL:$1|ein Sekund|$1 Sekunde|kein Sekund}}',
-'duration-minutes' => '{{PLURAL:$1|ein Menutt|$1 Menutte|kein Menutt}}',
-'duration-hours' => '{{PLURAL:$1|en Stund|$1 Stunde|kein Shtund}}',
-'duration-days' => '{{PLURAL:$1|ene Daach|$1 Dääsch|keine Daach}}',
-'duration-weeks' => '{{PLURAL: $1|en Woch|$1 Woche|kein Woch}}',
-'duration-years' => '{{PLURAL:$1|e Johr|$1 Johre|kei Johr}}',
-'duration-decades' => '{{PLURAL:$1|zehn Johre|$1 Johrzehnte|kei Johrzehnt}}',
-'duration-centuries' => '{{PLURAL:$1|e Johrhondert|$1 Johrhonderte|kei Johrhondert}}',
-'duration-millennia' => '{{PLURAL:$1|e Johrdousend|$1 Johrdousende|kei Johrdousend}}',
+'duration-seconds' => '{{PLURAL:$1|ein&nbsp;Sekond|$1&nbsp;Sekonde|kein&nbsp;Sekond}}',
+'duration-minutes' => '{{PLURAL:$1|ein&nbsp;Menot|$1&nbsp;Menotte|kein&nbsp;Menot}}',
+'duration-hours' => '{{PLURAL:$1|en&nbsp;Schtond|$1&nbsp;Schtonde|kein&nbsp;Schtond}}',
+'duration-days' => '{{PLURAL:$1|ene&nbsp;Daach|$1&nbsp;Dääsch|keine&nbsp;Daach}}',
+'duration-weeks' => '{{PLURAL: $1|en&nbsp;Woch|$1&nbsp;Woche|kein&nbsp;Woch}}',
+'duration-years' => '{{PLURAL:$1|e&nbsp;Johr|$1&nbsp;Johre|kei&nbsp;Johr}}',
+'duration-decades' => '{{PLURAL:$1|zehn&nbsp;Johre|$1&nbsp;Johzehnte|kei&nbsp;Johzehnt}}',
+'duration-centuries' => '{{PLURAL:$1|e&nbsp;Johhondert|$1&nbsp;Johhonderte|kei&nbsp;Johhondert}}',
+'duration-millennia' => '{{PLURAL:$1|e&nbsp;Johdousend|$1&nbsp;Johdousende|kei&nbsp;Johdousend}}',
 
 # Image rotation
 'rotate-comment' => 'Dat Beld wood öm {{PLURAL:$1|$1 Jraad}} esu eröm jedrieht, wi der Ohrzeijer leuf.',
index 8ef59d4..2585393 100644 (file)
@@ -871,14 +871,6 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
 'search-external' => 'Inquisitio externalis',
 'searchdisabled' => 'Per {{grammar:accusative|{{SITENAME}}}} ad tempus non potes quaerere. Interea per [http://www.google.com Googlem] quaeras. Nota indices {{grammar:genitive|{{SITENAME}}}} contentorum apud Googlem fortasse antiquiores esse.',
 
-# Quickbar
-'qbsettings' => 'Figuratio claustri celeris',
-'qbsettings-none' => 'Nullus',
-'qbsettings-fixedleft' => 'Constituere a sinistra',
-'qbsettings-fixedright' => 'Constituere a dextra',
-'qbsettings-floatingleft' => 'Innens a sinistra',
-'qbsettings-floatingright' => 'Innens a dextra',
-
 # Preferences page
 'preferences' => 'Praeferentiae',
 'mypreferences' => 'Praeferentiae',
index e5ddc84..71f6e9f 100644 (file)
@@ -239,7 +239,7 @@ $messages = array(
 'editfont-serif' => 'Tipografía serif',
 
 # Dates
-'sunday' => 'Aljhadh',
+'sunday' => 'Aljhad',
 'monday' => 'Lunes',
 'tuesday' => 'Martes',
 'wednesday' => 'Miércoles',
@@ -256,7 +256,7 @@ $messages = array(
 'january' => 'Enero',
 'february' => 'Hevrero',
 'march' => 'Março',
-'april' => 'Avril',
+'april' => 'Abril',
 'may_long' => 'Mayo',
 'june' => 'Juño',
 'july' => 'Jullo',
@@ -268,7 +268,7 @@ $messages = array(
 'january-gen' => 'Enero',
 'february-gen' => 'Hevrero',
 'march-gen' => 'Março',
-'april-gen' => 'Avril',
+'april-gen' => 'Abril',
 'may-gen' => 'Mayo',
 'june-gen' => 'Juño',
 'july-gen' => 'Jullo',
@@ -280,7 +280,7 @@ $messages = array(
 'jan' => 'Ene',
 'feb' => 'Hev',
 'mar' => 'Mar',
-'apr' => 'Avr',
+'apr' => 'Abr',
 'may' => 'May',
 'jun' => 'Juñ',
 'jul' => 'Jull',
index 12ac8ce..e84ecab 100644 (file)
@@ -1772,7 +1772,6 @@ Fir eng oprimal Sécherheet ass img_auth.php ausgeschalt.",
 'http-read-error' => 'HTTP-Feeler beim Liesen.',
 'http-timed-out' => 'HTTP-Ufro huet ze laang gebraucht (time out).',
 'http-curl-error' => 'Feeler beim Ofruff vun der URL: $1',
-'http-host-unreachable' => "D'URL konnt net erreecht ginn.",
 'http-bad-status' => 'Et gouf e Problem bäi der HTTP-Ufro: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 8c77920..8f60e6c 100644 (file)
@@ -779,15 +779,6 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 Google hmangin i lo zawng hrih thei ang.
 {{SITENAME}} chhung zawnawlna hi a hlui lutuk tawh mai thei tih hria ang che.',
 
-# Quickbar
-'qbsettings' => 'Hmanrawliang',
-'qbsettings-none' => 'Pakhat mah',
-'qbsettings-fixedleft' => 'Veilam',
-'qbsettings-fixedright' => 'Dinglam',
-'qbsettings-floatingleft' => 'Veilama lang',
-'qbsettings-floatingright' => 'Dinglama lang',
-'qbsettings-directionality' => 'Bet, i ţawng inziahdàn hawzawnga zirin',
-
 # Preferences page
 'preferences' => 'Duhdàn',
 'mypreferences' => 'Duhthlanna',
index 90ebad7..b673f5c 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Admresdeserv.
  * @author Dark Eagle
  * @author FnTmLV
  * @author Geimeris
@@ -122,8 +123,8 @@ $messages = array(
 'thu' => 'Ce',
 'fri' => 'Pk',
 'sat' => 'Se',
-'january' => 'janvārī',
-'february' => 'februārī',
+'january' => 'Janvārs',
+'february' => 'Februārs',
 'march' => 'martā',
 'april' => 'aprīlī',
 'may_long' => 'maijā',
@@ -247,7 +248,7 @@ $messages = array(
 'unprotectthispage' => 'Mainīt šīs lapas aizsardzību',
 'newpage' => 'Jauna lapa',
 'talkpage' => 'Diskusija par šo lapu',
-'talkpagelinktext' => 'diskusija',
+'talkpagelinktext' => 'Diskusija',
 'specialpage' => 'Īpašā Lapa',
 'personaltools' => 'Lietotāja rīki',
 'postcomment' => 'Pievienot komentāru',
@@ -500,6 +501,7 @@ Tādēļ šobrīd no šīs IP adreses vairs nevar izveidot jaunus kontus.',
 'emailconfirmlink' => 'Apstiprināt tavu e-pasta adresi',
 'invalidemailaddress' => 'E-pasta adrese nevar tikt apstiprināta, jo izskatās nederīga. Lūdzu ievadi korekti noformētu e-pasta adresi, vai arī atstāj to lauku tukšu.',
 'cannotchangeemail' => 'Konta e-pasta adresi nevar nomainīt šajā wiki.',
+'emaildisabled' => 'Šī vietne nevar nosūtīt e-pastus.',
 'accountcreated' => 'Konts izveidots',
 'accountcreatedtext' => 'Lietotāja konts priekš $1 tika izveidots.',
 'createaccount-title' => 'Lietotāja konta izveidošana {{grammar:lokatīvs|{{SITENAME}}}}',
@@ -645,7 +647,7 @@ Ja tu esi anonīms lietotājs un uzskati, ka tev ir adresēti neatbilstoši kome
 'noarticletext' => 'Šajā lapā šobrīd nav nekāda teksta, tu vari [[Special:Search/{{PAGENAME}}|meklēt citās lapās pēc šīs lapas nosaukuma]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklēt saistītos reģistru ierakstos] vai arī [{{fullurl:{{FULLPAGENAME}}|action=edit}} sākt rediģēt šo lapu]</span>.',
 'noarticletext-nopermission' => 'Šajā lapā pašlaik nav nekāda teksta.
 Tu vari [[Special:Search/{{PAGENAME}}|meklēt šīs lapas nosaukumu]] citās lapās,
-vai <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklēt saistītus reģistru ierakstus]</span>.',
+vai <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklēt saistītus reģistru ierakstus]</span>, bet jums nav atļauja izveidot si lapu.',
 'userpage-userdoesnotexist' => 'Lietotājs "<nowiki>$1</nowiki>" nav reģistrēts.
 Lūdzu, pārliecinies vai vēlies izveidot/izmainīt šo lapu.',
 'userpage-userdoesnotexist-view' => 'Lietotājs "$1" nav reģistrēts.',
@@ -757,6 +759,8 @@ Tā jau eksistē.',
 'post-expand-template-inclusion-warning' => "'''Brīdinājums:''' iekļauto veidņu izmērs ir par lielu.
 Dažas veidnes netiks iekļautas.",
 'post-expand-template-inclusion-category' => 'Lapas, kurām pārsniegts iekļauto veidņu apjoms',
+'post-expand-template-argument-warning' => "'''Brīdinājums:''' Šī lapa satur vairāk neka vienu veidni argumentu, kas ir pārāk liels pec paplašināšanas.
+Šie argumenti ir izlaists.",
 'post-expand-template-argument-category' => 'Lapas, kurās ir izlaisti veidņu argumenti',
 'parser-template-loop-warning' => 'Veidne ir ievietota tādā pašā veidnē: [[$1]]',
 
@@ -959,13 +963,6 @@ $1",
 Pagaidām vari meklēt, izmantojot Google vai Yahoo.
 Ņem vērā, ka meklētāju indeksētais {{grammar:ģenitīvs|{{SITENAME}}}} saturs var būt novecojis.',
 
-# Quickbar
-'qbsettings' => 'Rīku joslas stāvoklis',
-'qbsettings-fixedleft' => 'Fiksēts pa kreisi',
-'qbsettings-fixedright' => 'Fiksēts pa labi',
-'qbsettings-floatingleft' => 'Peldošs pa kreisi',
-'qbsettings-floatingright' => 'Peldošs pa labi',
-
 # Preferences page
 'preferences' => 'Izvēles',
 'mypreferences' => 'Iestatījumi',
@@ -1063,6 +1060,7 @@ Norādītā parametra vērtība būs publiski pieejama.',
 'prefs-help-realname' => 'Īstais vārds nav obligāti jānorāda.
 Ja tu izvēlies to norādīt, tas tiks izmantots, lai identificētu tavu darbu (ieguldījumu {{grammar:lokatīvs|{{SITENAME}}}}).',
 'prefs-help-email' => 'E-pasta adrese nav obligāta, bet ir nepieciešama nozaudētas paroles atjaunošanai.',
+'prefs-help-email-others' => 'Jus ari variet izvelties ka citi jus var kontaktēt uz jusu lietotajā sarunas lapu, neatklājot jus identitāti.',
 'prefs-help-email-required' => 'E-pasta adrese ir obligāta.',
 'prefs-info' => 'Pamatinformācija',
 'prefs-i18n' => 'Internacionalizācija',
@@ -1448,7 +1446,6 @@ Atļauta ir tikai failu piekļuve.',
 # HTTP errors
 'http-invalid-url' => 'Nederīgs URL: $1',
 'http-read-error' => 'HTTP nolasīšanas kļūda.',
-'http-host-unreachable' => 'URL nevarēja sasniegt.',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
 'upload-curl-error6' => 'URL nevarēja sasniegt',
@@ -1779,6 +1776,7 @@ Tā e-pasta adrese, kuru tu esi norādījis [[Special:Preferences|savā izvēļu
 # Watchlist
 'watchlist' => 'Mani uzraugāmie raksti',
 'mywatchlist' => 'Uzraugāmie raksti',
+'watchlistfor2' => 'Priekš $1 ($2)',
 'nowatchlist' => 'Tavā uzraugāmo rakstu sarakstā nav neviena raksta.',
 'watchlistanontext' => 'Lūdzu $1, lai apskatītu vai labotu savu uzraugāmo rakstu saraksta saturu.',
 'watchnologin' => 'Neesi iegājis',
@@ -2978,6 +2976,7 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 
 # Core parser functions
 'unknown_extension_tag' => 'Nezināma paplašinājuma iezīme "$1"',
+'duplicate-defaultsort' => '\'\'\'Brīdinājums:\'\'\' Noklusējuma kārtošanas atslēga "$2" ignorē kārtošanas atslēga "$1".',
 
 # Special:Version
 'version' => 'Versija',
index c57fa66..0f67655 100644 (file)
@@ -910,15 +910,6 @@ Jajal aweh awalan ''all:'' kanggo nggolèti kabèh isi (kalebu kaca dhiskusi, ci
 Rika teyeng nggoleti nganggo Google disit.
 Ningen Rika kudu eling nek indeks Google kanggo {{SITENAME}} bisa baen isine anu sing lawas lan durung dianyari.',
 
-# Quickbar
-'qbsettings' => 'Pangaturan bar pintas',
-'qbsettings-none' => 'Ora ana',
-'qbsettings-fixedleft' => 'Tetep sisih kiwa',
-'qbsettings-fixedright' => 'Tetep sisih tengen',
-'qbsettings-floatingleft' => 'Ngambang sisih kiwa',
-'qbsettings-floatingright' => 'Ngambang sisih tengen',
-'qbsettings-directionality' => 'Tetep, ngetutna maring bentuk skrip sekang basane Rika',
-
 # Preferences page
 'preferences' => 'Preferensi',
 'mypreferences' => 'Preferensi',
index f280eba..34c96ea 100644 (file)
@@ -1433,15 +1433,6 @@ $1",
 Во меѓувреме, можете да пребарувате преку Google.
 Да напоменеме дека нивното индексирање на {{SITENAME}} содржините може да биде застарено.',
 
-# Quickbar
-'qbsettings' => 'Лента за брз избор',
-'qbsettings-none' => 'Без мени',
-'qbsettings-fixedleft' => 'Неподвижна лево',
-'qbsettings-fixedright' => 'Неподвижна десно',
-'qbsettings-floatingleft' => 'Променлива лево',
-'qbsettings-floatingright' => 'Променлива десно',
-'qbsettings-directionality' => 'Непроменливо зададен, во зависност од насоката на пишување на вашиот јазик',
-
 # Preferences page
 'preferences' => 'Нагодувања',
 'mypreferences' => 'нагодувања',
@@ -1786,9 +1777,9 @@ $1",
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Податотека.jpg]]</nowiki></code>''' за верзија на сликата во целосна големина
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Податотека.png|200px|thumb|left|опис]]</nowiki></code>''' за верзија на сликата со големина од 200 пиксели прикажана во соодветна кутија, со опис како што е наведено во '''опис'''
 * '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Податотека.ogg]]</nowiki></code>''' за директно поврзување со податотеката без нејзино прикажување",
-'upload-permitted' => 'Ð\94озволени Ñ\82ипови Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еки: $1.',
-'upload-preferred' => 'Ð\9fÑ\80еÑ\84еÑ\80иÑ\80ани Ñ\82ипови Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еки: $1.',
-'upload-prohibited' => 'Ð\97абÑ\80анеÑ\82и Ñ\82ипови Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еки: $1.',
+'upload-permitted' => 'Ð\94опÑ\83Ñ\88Ñ\82ени Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еÑ\87ни Ñ\82ипови: $1.',
+'upload-preferred' => 'Ð\9fÑ\80еÑ\82поÑ\87иÑ\82ани Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еÑ\87ни Ñ\82ипови: $1.',
+'upload-prohibited' => 'Ð\9dедопÑ\83Ñ\88Ñ\82ени Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еÑ\87ни Ñ\82ипови: $1.',
 'uploadlog' => 'дневник на подигања',
 'uploadlogpage' => 'Дневник на подигања',
 'uploadlogpagetext' => 'Наведен е список на најновите подигања на податотеки.
@@ -1810,8 +1801,8 @@ $1",
 'filetype-mime-mismatch' => 'Податотечната наставка „.$1“ не одговара на утврдениот MIME-тип на податотеката ($2).',
 'filetype-badmime' => 'Податотеките од MIME-тип „$1“ не се дозволени за подигање.',
 'filetype-bad-ie-mime' => 'Не може да се подигне оваа податотека бидејќи Internet Explorer би можел да го препознае како „$1“, што е оневозможен и потенцијално опасен тип на податотека.',
-'filetype-unwanted-type' => "'''„.$1“''' е непосакуван тип на податотека.
-{{PLURAL:$3|Ð\9fÑ\80еÑ\82поÑ\87иÑ\82ан Ñ\82ип Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82ека Ðµ|Ð\9fÑ\80еÑ\82поÑ\87иÑ\82ани Ñ\82ипови Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еки Ñ\81е}} $2.",
+'filetype-unwanted-type' => "'''„.$1“''' е непосакуван податотечен тип.
+{{PLURAL:$3|Се Ð¿Ñ\80еÑ\82поÑ\87иÑ\82а Ñ\82ипоÑ\82|Се Ð¿Ñ\80еÑ\82поÑ\87иÑ\82ааÑ\82 Ñ\82иповиÑ\82е}} $2.",
 'filetype-banned-type' => "'''„.$1“''' не е допуштен тип на податотека.
 {{PLURAL:$3|Допуштен тип е|Допуштени типови се}} $2.",
 'filetype-missing' => 'Податотеката нема наставка (на пр. „.jpg“).',
@@ -2005,7 +1996,6 @@ $1',
 'http-read-error' => 'Грешка при читањето на HTTP.',
 'http-timed-out' => 'HTTP-барањето истече.',
 'http-curl-error' => 'Грешка при добивањето на URL: $1',
-'http-host-unreachable' => 'Не можев да пристапам до URL-адресата',
 'http-bad-status' => 'Се појави проблем во текот на обработката на HTTP-барањето: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -2911,7 +2901,7 @@ $1',
 'movepagebtn' => 'Премести страница',
 'pagemovedsub' => 'Успешно преместување',
 'movepage-moved' => "'''„$1“ е преместена под името „$2“'''",
-'movepage-moved-redirect' => 'Ð\91еÑ\88е Ð½Ð°Ð¿Ñ\80авено пренасочување.',
+'movepage-moved-redirect' => 'Ð\9dапÑ\80авено Ðµ пренасочување.',
 'movepage-moved-noredirect' => 'Создавањето на пренасочување е оневозможено.',
 'articleexists' => 'Веќе постои страница со тоа име, или името што го одбравте е неважечко.
 Изберете друго име.',
index 2b16588..6e9cc11 100644 (file)
@@ -1371,15 +1371,6 @@ $1",
 'search-external' => 'ബാഹ്യ അന്വേഷണം',
 'searchdisabled' => '{{SITENAME}} സം‌രംഭത്തിൽ തിരച്ചിൽ ദുർബലപ്പെടുത്തിയിരിക്കുന്നു. താങ്കൾക്ക് ഗൂഗിൾ ഉപയോഗിച്ച് തത്കാലം തിരച്ചിൽ നടത്താവുന്നതാണ്‌. പക്ഷെ ഗൂഗിളിൽ {{SITENAME}} സം‌രംഭത്തിന്റെ സൂചിക കാലഹരണപ്പെട്ടതായിരിക്കാൻ സാദ്ധ്യതയുണ്ട്.',
 
-# Quickbar
-'qbsettings' => 'ദ്രുത സൗകര്യം',
-'qbsettings-none' => 'ഒന്നുമില്ല',
-'qbsettings-fixedleft' => 'സ്ഥിരമായ ഇടത്',
-'qbsettings-fixedright' => 'സ്ഥിരമായ വലത്',
-'qbsettings-floatingleft' => 'ഇടത്തേയ്ക്ക് ഒഴുകി നിൽക്കുക',
-'qbsettings-floatingright' => 'വലത്തേയ്ക്ക് ഒഴുകി നിൽക്കുക',
-'qbsettings-directionality' => 'താങ്കളുടെ ഭാഷയുടെ ലിപിയിൽ എഴുത്തുന്ന ദിശയനുസരിച്ച് ശരിയാക്കിയിരിക്കുന്നു',
-
 # Preferences page
 'preferences' => 'ക്രമീകരണങ്ങൾ',
 'mypreferences' => 'ക്രമീകരണങ്ങൾ',
@@ -1922,7 +1913,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'http-read-error' => 'എച്ച്.റ്റി.റ്റി.പി. വിവരം പ്രദർശിപ്പിക്കുന്നതിൽ പിഴവ്.',
 'http-timed-out' => 'എച്ച്.റ്റി.റ്റി.പി. അഭ്യർത്ഥന സമയം കഴിഞ്ഞു.',
 'http-curl-error' => 'യു.ആർ.എൽ. ശേഖരിക്കുന്നതിൽ പിഴവ്: $1',
-'http-host-unreachable' => 'യു.ആർ.എൽ.-ല്‍ എത്തിപ്പെടാന്‍ സാധിച്ചില്ല',
 'http-bad-status' => 'എച്ച്.റ്റി.റ്റി.പി. അഭ്യർത്ഥനാ വേളയിൽ ഒരു പിഴവുണ്ടായി: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 42527df..9507703 100644 (file)
@@ -1847,7 +1847,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization कृपया हे
 'http-read-error' => 'एचटीटीपी वाचन त्रुटी.',
 'http-timed-out' => 'विनंती वेळ सपला आहे',
 'http-curl-error' => 'आंतरजालपत्ता पकडताना चूक: $1',
-'http-host-unreachable' => 'आंतरजाल पत्त्यापाशी पोहोचले नाही',
 'http-bad-status' => 'एचटीटीपी मागणीदरम्यान एक चूक उद्भवली: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 1fb3462..e3de1e8 100644 (file)
@@ -1243,15 +1243,6 @@ Cuba berikan awalan ''all:'' untuk mencari semua kandungan (termasuk laman perbi
 'search-external' => 'Carian luar',
 'searchdisabled' => 'Ciri pencarian dalam {{SITENAME}} dimatikan. Anda boleh mencari melalui Google. Sila ambil perhatian bahawa indeks dalam Google mungkin bukan yang terkini.',
 
-# Quickbar
-'qbsettings' => 'Bar pantas',
-'qbsettings-none' => 'Tiada',
-'qbsettings-fixedleft' => 'Tetap sebelah kiri',
-'qbsettings-fixedright' => 'Tetap sebelah kanan',
-'qbsettings-floatingleft' => 'Berubah-ubah sebelah kiri',
-'qbsettings-floatingright' => 'Berubah-ubah sebelah kanan',
-'qbsettings-directionality' => 'Tetap, bergantung pada kearahan tulisan bahasa anda',
-
 # Preferences page
 'preferences' => 'Keutamaan',
 'mypreferences' => 'Keutamaan',
@@ -1801,7 +1792,6 @@ Untuk keselamatan optimum, img_auth.php telah dilumpuhkan.',
 'http-read-error' => 'Ralat baca HTTP.',
 'http-timed-out' => 'Permintaan HTTP melebihi waktu tamat.',
 'http-curl-error' => 'Ralat mendapatkan URL: $1',
-'http-host-unreachable' => 'URL tidak dapat dicapai.',
 'http-bad-status' => 'Berlaku masalah ketika permintaan HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 3546379..405cd8e 100644 (file)
@@ -892,14 +892,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'powersearch-togglenone' => 'Арась мезе невтемс',
 'search-external' => 'Ушо йондонь вешнема',
 
-# Quickbar
-'qbsettings' => 'Навигациянь лазнэ',
-'qbsettings-none' => 'Арась мезе невтемс',
-'qbsettings-fixedleft' => 'Керш ёндо кирдезь',
-'qbsettings-fixedright' => 'Вить ёндо кирдезь',
-'qbsettings-floatingleft' => 'Керш ёнга уи',
-'qbsettings-floatingright' => 'Вить ёнга уи',
-
 # Preferences page
 'preferences' => 'Аравтомат',
 'mypreferences' => 'Аравтомат',
index 5e0a58d..958004c 100644 (file)
@@ -628,9 +628,6 @@ Hueliz ōmopolo huiqui nozo ōmozacac.
 'powersearch-togglenone' => 'Ahtlein',
 'search-external' => 'Tlatēmotiliztli calāmpa',
 
-# Quickbar
-'qbsettings-none' => 'Ahtlein',
-
 # Preferences page
 'preferences' => 'Tlaēlēhuiliztli',
 'mypreferences' => 'Notlaēlēhuiliz',
@@ -672,7 +669,7 @@ Hueliz ōmopolo huiqui nozo ōmozacac.
 'prefs-files' => 'Tlahcuilōlli',
 'youremail' => 'Maltzinteyōtl netitlanizyeyāntli:',
 'username' => '{{GENDER:$1|Tlatequitiltilīltōcāitl}}:',
-'uid' => '{{GENDER:$|Tlatequitiltilīlli}} ID:',
+'uid' => '{{GENDER:$1|Tlatequitiltilīlli}} ID:',
 'prefs-memberingroups' => '{{GENDER:$2|Tlacotōncayōtl}} in {{PLURAL:$1|tēolōlolli|tēolōloltin}}',
 'yourrealname' => 'Melāhuac motōcā:',
 'yourlanguage' => 'Tlâtòlli:',
index 6c31d1e..dff0e15 100644 (file)
@@ -1376,15 +1376,6 @@ For å søke i alle, bruk prefikset ''all:'' (inkluderer diskusjonssider, maler,
 'search-external' => 'Eksternt søk',
 'searchdisabled' => 'Søkefunksjonen er slått av. Du kan søke via Google i mellomtiden. Merk at Googles indeksering av {{SITENAME}} muligens er utdatert.',
 
-# Quickbar
-'qbsettings' => 'Brukerinnstillinger for hurtigmeny.',
-'qbsettings-none' => 'Ingen',
-'qbsettings-fixedleft' => 'Fast venstre',
-'qbsettings-fixedright' => 'Fast høyre',
-'qbsettings-floatingleft' => 'Flytende venstre',
-'qbsettings-floatingright' => 'Flytende til høyre',
-'qbsettings-directionality' => '"Låst", f. eks. i posisjon "låst til venstre eller til høyre". For venstre-mot-høyre-språk vil hurtigvelgeren være satt til venstre, for høyre-mot-venstre-språk til høyre.',
-
 # Preferences page
 'preferences' => 'Innstillinger',
 'mypreferences' => 'Innstillinger',
@@ -1937,7 +1928,6 @@ For best mulig sikkerhet er img_auth.php slått av.',
 'http-read-error' => 'HTTP-lesefeil.',
 'http-timed-out' => 'Tidsavbrudd på HTTP-forespørsel.',
 'http-curl-error' => 'Feil under henting av adresse: $1',
-'http-host-unreachable' => 'Kunne ikke nå adressen.',
 'http-bad-status' => 'Det var et problem under HTTP-forespørselen: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 94ea535..ec5d9d6 100644 (file)
@@ -1131,14 +1131,6 @@ Du kannst dat Woord ''all:'' vör dien Söökwoord setten, dat all Naamrüüm (o
 'searchdisabled' => '<p>De Vulltextsöök is wegen Överlast en Stoot deaktiveert. In disse Tied kannst du disse Google-Söök verwennen,
 de aver nich jümmer den aktuellsten Stand weerspegelt.<p>',
 
-# Quickbar
-'qbsettings' => 'Siedenliest',
-'qbsettings-none' => 'Keen',
-'qbsettings-fixedleft' => 'Links, fast',
-'qbsettings-fixedright' => 'Rechts, fast',
-'qbsettings-floatingleft' => 'Links, sweven',
-'qbsettings-floatingright' => 'Rechts, sweven',
-
 # Preferences page
 'preferences' => 'Instellen',
 'mypreferences' => 'För mi Instellen',
@@ -1281,12 +1273,12 @@ Dat kann nich wedder ungeschehn maakt warrn.',
 'group-suppress' => 'Oversights',
 'group-all' => '(all)',
 
-'group-user-member' => 'Bruker',
-'group-autoconfirmed-member' => 'Bestätigt Bruker',
-'group-bot-member' => 'Bot',
-'group-sysop-member' => 'Admin',
-'group-bureaucrat-member' => 'Bürokraat',
-'group-suppress-member' => 'Oversight',
+'group-user-member' => '{{GENDER:$1|Bruker}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|Bestätigt Bruker}}',
+'group-bot-member' => '{{GENDER:$1|Bot}}',
+'group-sysop-member' => '{{GENDER:$1|Admin}}',
+'group-bureaucrat-member' => '{{GENDER:$1|Bürokraat}}',
+'group-suppress-member' => '{{GENDER:$1|Översicht}}',
 
 'grouppage-user' => '{{ns:project}}:Brukers',
 'grouppage-autoconfirmed' => '{{ns:project}}:Bestätigte Brukers',
@@ -1425,6 +1417,7 @@ Dat kann nich wedder ungeschehn maakt warrn.',
 'number_of_watching_users_pageview' => '[{{PLURAL:$1|Een Bruker|$1 Brukers}}, de oppasst]',
 'rc_categories' => 'Blot Sieden ut de Kategorien (trennt mit „|“):',
 'rc_categories_any' => 'All',
+'rc-change-size-new' => '$1 {{PLURAL:$1|byte|bytes}} achter Ännern',
 'newsectionsummary' => '/* $1 */ nee Afsnitt',
 'rc-enhanced-expand' => 'Details wiesen (bruukt JavaScript)',
 'rc-enhanced-hide' => 'Details versteken',
index a3f5da9..84c11d4 100644 (file)
@@ -580,7 +580,7 @@ $messages = array(
 'jumptosearch' => 'zoeken',
 'view-pool-error' => 'De servers zijn op het moment helaas overbelast.
 Te veel gebruikers proberen deze pagina te bekijken.
-Wacht alstublieft even voordat u opnieuw toegang probeert te krijgen tot deze pagina.
+Wacht even voordat u opnieuw toegang probeert te krijgen tot deze pagina.
 
 $1',
 'pool-timeout' => 'De maximaal te wachten tijd voor het wachten op een lock is verstreken',
@@ -720,7 +720,7 @@ Mogelijk is deze al door iemand anders verwijderd.',
 'delete-hook-aborted' => 'Het verwijderen is afgebroken door een hook.
 Er is geen toelichting beschikbaar.',
 'badtitle' => 'Ongeldige paginanaam',
-'badtitletext' => 'De naam van de opgevraagde pagina was ongeldig, leeg of bevatte een verkeerde intertaal- of interwikikoppeling.
+'badtitletext' => 'De naam van de opgegeven pagina was ongeldig, leeg of bevatte een verkeerde intertaal- of interwikikoppeling.
 Wellicht bevat de paginanaam niet toegestane tekens.',
 'perfcached' => 'Deze gegevens komen uit een cache en zijn mogelijk niet actueel. Er {{PLURAL:$1|is maximaal één resultaat|zijn maximaal $1 resultaten}} beschikbaar in de cache.',
 'perfcachedts' => 'Deze gegevens komen uit een cache die voor het laatst is bijgewerkt op $2 om $3. Er {{PLURAL:$4|is maximaal één resultaat|zijn maximaal $4 resultaten}} beschikbaar in de cache.',
@@ -821,7 +821,7 @@ Controleer de schrijfwijze.',
 'nouserspecified' => 'Geef een gebruikersnaam op.',
 'login-userblocked' => 'Deze gebruiker is geblokkeerd.
 Aanmelden is niet mogelijk.',
-'wrongpassword' => 'Het ingegeven wachtwoord is onjuist.
+'wrongpassword' => 'Het opgegeven wachtwoord is onjuist.
 Probeer het opnieuw.',
 'wrongpasswordempty' => 'Het opgegeven wachtwoord was leeg.
 Probeer het opnieuw.',
@@ -1268,12 +1268,12 @@ U kunt deze verschillen bekijken. Er kunnen details te vinden zijn in het [{{ful
 'rev-showdeleted' => 'weergeven',
 'revisiondelete' => 'Versies verwijderen of terugplaatsen',
 'revdelete-nooldid-title' => 'Ongeldige doelversie',
-'revdelete-nooldid-text' => 'U hebt geen doelversie(s) voor deze handeling opgegeven. De aangegeven versie bestaat niet of u probeert de laatste versie te verbergen.',
+'revdelete-nooldid-text' => 'U hebt geen doelversie(s) voor deze handeling opgegeven. De opgegeven versie bestaat niet of u probeert de laatste versie te verbergen.',
 'revdelete-nologtype-title' => 'Er is geen logboektype opgegeven',
 'revdelete-nologtype-text' => 'U hebt geen logboektype opgegeven om deze handeling op uit te voeren.',
 'revdelete-nologid-title' => 'Ongeldige logboekregel',
-'revdelete-nologid-text' => 'U hebt ofwel geen doellogboekregel opgegeven of de aangegeven logboekregel bestaat niet.',
-'revdelete-no-file' => 'Het aangegeven bestand bestaat niet.',
+'revdelete-nologid-text' => 'U hebt ofwel geen doellogboekregel opgegeven of de opgegeven logboekregel bestaat niet.',
+'revdelete-no-file' => 'Het opgegeven bestand bestaat niet.',
 'revdelete-show-file-confirm' => 'Weet u zeker dat u de verwijderde versie van het bestand "<nowiki>$1</nowiki>" van $2 om $3 wilt bekijken?',
 'revdelete-show-file-submit' => 'Ja',
 'revdelete-selected' => "'''Geselecteerde {{PLURAL:$2|bewerking|bewerkingen}} van [[:$1]]:'''",
@@ -1316,7 +1316,7 @@ U hebt geen toegang tot dit object.',
 'revdelete-modify-no-access' => 'Er is een fout opgetreden tijdens het wijzigen van het object van $1 om $2: dit object is gemarkeerd als "beschermd".
 U hebt geen toegang tot dit object.',
 'revdelete-modify-missing' => 'Er is een fout opgetreden bij het wijzigen van versienummer $1: het komt niet voor in de database!',
-'revdelete-no-change' => "'''Waarschuwing:''' het object van $1 om $2 uur had al de aangegeven zichtbaarheidsinstellingen.",
+'revdelete-no-change' => "'''Waarschuwing:''' het object van $1 om $2 uur had al de opgegeven zichtbaarheidsinstellingen.",
 'revdelete-concurrent-change' => 'Er is een fout opgetreden bij het wijzigen van het object van $1 om $2: de status is inmiddels gewijzigd door iemand anders.
 Controleer de logboeken.',
 'revdelete-only-restricted' => 'Er is een fout opgetreden tijdens het verbergen van het item van $1, $2: u kunt geen items onderdrukken uit het zicht van beheerders zonder ook een van de andere zichtbaarheidsopties te selecteren.',
@@ -1343,8 +1343,8 @@ Zorg dat deze wijziging de geschiedenisdoorlopendheid van de pagina behoudt.',
 'mergehistory-from' => 'Bronpagina:',
 'mergehistory-into' => 'Bestemmingspagina:',
 'mergehistory-list' => 'Samenvoegbare bewerkingsgeschiedenis',
-'mergehistory-merge' => 'De volgende versies van [[:$1]] kunnen samengevoegd worden naar [[:$2]].
-Gebruik de kolom met keuzerondjes om alleen de versies gemaakt op en voor de aangegeven tijd samen te voegen.
+'mergehistory-merge' => 'De volgende versies van [[:$1]] kunnen worden samengevoegd naar [[:$2]].
+Gebruik de kolom met keuzerondjes om alleen de versies gemaakt op en voor de opgegeven tijd samen te voegen.
 Let op dat het gebruiken van de navigatiekoppelingen deze kolom opnieuw instelt.',
 'mergehistory-go' => 'Samenvoegbare bewerkingen bekijken',
 'mergehistory-submit' => 'Versies samenvoegen',
@@ -1414,7 +1414,7 @@ Probeer een andere zoekopdracht.',
 'searchprofile-project-tooltip' => 'Zoeken in $1',
 'searchprofile-images-tooltip' => 'Zoeken naar bestanden',
 'searchprofile-everything-tooltip' => "Alle inhoud doorzoeken (inclusief overlegpagina's)",
-'searchprofile-advanced-tooltip' => 'Zoeken in aangegeven naamruimten',
+'searchprofile-advanced-tooltip' => 'Zoeken in opgegeven naamruimten',
 'search-result-size' => '$1 ({{PLURAL:$2|1 woord|$2 woorden}})',
 'search-result-category-size' => '{{PLURAL:$1|1 categorielid|$1 categorieleden}} ({{PLURAL:$2|1 ondercategorie|$2 ondercategorieën}}, {{PLURAL:$3|1 bestand|$3 bestanden}})',
 'search-result-score' => 'Relevantie: $1%',
@@ -1449,15 +1449,6 @@ U kunt ook een naamruimte als voorvoegsel gebruiken.",
 U kunt gebruik maken van Google.
 De gegevens over {{SITENAME}} zijn mogelijk niet bijgewerkt.',
 
-# Quickbar
-'qbsettings' => 'Menubalk',
-'qbsettings-none' => 'Uitgeschakeld',
-'qbsettings-fixedleft' => 'Links vast',
-'qbsettings-fixedright' => 'Rechts vast',
-'qbsettings-floatingleft' => 'Links zwevend',
-'qbsettings-floatingright' => 'Rechts zwevend',
-'qbsettings-directionality' => 'Vast, afhankelijk van de schrijfrichting van uw taal',
-
 # Preferences page
 'preferences' => 'Voorkeuren',
 'mypreferences' => 'Voorkeuren',
@@ -1508,7 +1499,7 @@ Hier volgt een willekeurig gegenereerde waarde die u kunt gebruiken: $1',
 'timezonelegend' => 'Tijdzone:',
 'localtime' => 'Plaatselijke tijd:',
 'timezoneuseserverdefault' => 'Wikistandaard gebruiken ($1)',
-'timezoneuseoffset' => 'Anders (tijdverschil aangeven)',
+'timezoneuseoffset' => 'Anders (tijdverschil opgeven)',
 'timezoneoffset' => 'Tijdsverschil¹:',
 'servertime' => 'Servertijd:',
 'guesstimezone' => 'Vanuit de browser toevoegen',
@@ -1551,7 +1542,7 @@ De tildes worden omgezet in uw ondertekening en een datum en tijd van de bewerki
 'badsiglength' => 'Uw ondertekening is te lang.
 Deze moet minder dan $1 {{PLURAL:$1|teken|tekens}} bevatten.',
 'yourgender' => 'Geslacht:',
-'gender-unknown' => 'Niet aangegeven',
+'gender-unknown' => 'Niet opgegeven',
 'gender-male' => 'Man',
 'gender-female' => 'Vrouw',
 'prefs-help-gender' => 'Optioneel: dit wordt gebruikt om gebruikers correct aan te spreken in de software.
@@ -1776,7 +1767,7 @@ Als u deze opgeeft, kan deze naam gebruikt worden om u erkenning te geven voor u
 'recentchangeslinked-toolbox' => 'Verwante wijzigingen',
 'recentchangeslinked-title' => 'Wijzigingen verwant aan "$1"',
 'recentchangeslinked-noresult' => "Er zijn in de opgegeven periode geen bewerkingen geweest op de pagina's waarheen vanaf hier verwezen wordt.",
-'recentchangeslinked-summary' => "Deze speciale pagina geeft de laatste bewerkingen weer op pagina's waarheen verwezen wordt vanaf een aangegeven pagina of op pagina's in een aangegeven categorie.
+'recentchangeslinked-summary' => "Deze speciale pagina geeft de laatste bewerkingen weer op pagina's waarheen verwezen wordt vanaf een opgegeven pagina of op pagina's in een opgegeven categorie.
 Pagina's die op [[Special:Watchlist|uw volglijst]] staan worden '''vet''' weergegeven.",
 'recentchangeslinked-page' => 'Paginanaam:',
 'recentchangeslinked-to' => "Wijzigingen aan pagina's met koppelingen naar deze pagina bekijken",
@@ -2008,7 +1999,7 @@ De veiligheid kan niet worden gecontroleerd.',
 Uw server is niet ingesteld om deze gegevens door te geven.
 Misschien gebruikt deze CGI, en dan wordt img_auth niet ondersteund.
 Zie https://www.mediawiki.org/wiki/Manual:Image_Authorization voor meer informatie.',
-'img-auth-notindir' => 'Het opgevraagde pad is niet de ingestelde uploadmap.',
+'img-auth-notindir' => 'Het opgegeven pad is niet de ingestelde uploadmap.',
 'img-auth-badtitle' => 'Het was niet mogelijk een geldige paginanaam te maken van "$1".',
 'img-auth-nologinnWL' => 'U bent niet aangemeld en "$1" staat niet op de witte lijst.',
 'img-auth-nofile' => 'Bestand "$1" bestaat niet.',
@@ -2028,7 +2019,6 @@ Om beveiligingsreden is img_auth.php uitgeschakeld.',
 'http-read-error' => 'Fout bij het lezen van HTTP.',
 'http-timed-out' => 'Timeout bij het HTTP-verzoek.',
 'http-curl-error' => 'Fout bij het ophalen van URL: $1',
-'http-host-unreachable' => 'De URL is niet bereikbaar.',
 'http-bad-status' => 'Er is een probleem opgetreden bij het HTTP-verzoek: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -2125,7 +2115,7 @@ U kunt de beschrijving bewerken op de [$2 pagina met de bestandsbeschrijving].',
 'filedelete-success' => "'''$1''' is verwijderd.",
 'filedelete-success-old' => "De versie van '''[[Media:$1|$1]]''' van $3, $2 is verwijderd.",
 'filedelete-nofile' => "'''$1''' bestaat niet.",
-'filedelete-nofile-old' => "Er is geen versie van '''$1''' in het archief met de aangegeven eigenschappen.",
+'filedelete-nofile-old' => "Er is geen versie van '''$1''' in het archief met de opgegeven eigenschappen.",
 'filedelete-otherreason' => 'Andere reden:',
 'filedelete-reason-otherlist' => 'Andere reden',
 'filedelete-reason-dropdown' => '*Veel voorkomende redenen voor verwijderen
@@ -2293,7 +2283,7 @@ Een bestand kan hier dus ten onrechte opgenomen zijn.',
 'booksources-search-legend' => 'Bronnen en gegevens over een boek zoeken',
 'booksources-go' => 'OK',
 'booksources-text' => 'Hieronder staat een lijst met koppelingen naar andere websites die nieuwe of gebruikte boeken verkopen, en die wellicht meer informatie over het boek dat u zoekt hebben:',
-'booksources-invalid-isbn' => 'Het ingegeven ISBN lijkt niet geldig te zijn.
+'booksources-invalid-isbn' => 'Het opgegeven ISBN lijkt niet geldig te zijn.
 Controleer of u wellicht een fout hebt gemaakt bij de invoer.',
 
 # Special:Log
@@ -2576,7 +2566,7 @@ Zie de [[Special:ProtectedPages|lijst met beveiligde pagina's]] voor alle beveil
 'protect-legend' => 'Beveiliging bevestigen',
 'protectcomment' => 'Reden:',
 'protectexpiry' => 'Duur:',
-'protect_expiry_invalid' => 'De aangegeven duur is ongeldig.',
+'protect_expiry_invalid' => 'De opgegeven duur is ongeldig.',
 'protect_expiry_old' => 'Vervaldatum is in het verleden.',
 'protect-unchain-permissions' => 'Overige beveiligingsinstellingen beschikbaar maken',
 'protect-text' => "Hier kunt u het beveiligingsniveau voor de pagina '''$1''' bekijken en wijzigen.",
@@ -3080,7 +3070,7 @@ Een tijdelijke map is niet aanwezig.',
 'xml-error-string' => '$1 op regel $2, kolom $3 (byte $4): $5',
 'import-upload' => 'XML-gegevens uploaden',
 'import-token-mismatch' => 'De sessiegegevens zijn verloren gegaan. Probeer het opnieuw.',
-'import-invalid-interwiki' => 'Het is niet mogelijk van de aangegeven wiki te importeren.',
+'import-invalid-interwiki' => 'Het is niet mogelijk van de opgegeven wiki te importeren.',
 'import-error-edit' => 'De pagina "$1" is niet geïmporteerd omdat u niet de rechten hebt om die te bewerken.',
 'import-error-create' => 'De pagina "$1" is niet geïmporteerd omdat u niet de rechten hebt om die aan te maken.',
 'import-error-interwiki' => 'De pagina "$1" is niet geïmporteerd omdat deze naam is gereserveerd voor externe koppelingen (interwiki).',
@@ -3306,8 +3296,8 @@ Meestal wordt dit door een externe koppeling op een zwarte lijst veroorzaakt.',
 
 $1',
 'filedelete-missing' => 'Het bestand "$1" kan niet verwijderd worden, omdat het niet bestaat.',
-'filedelete-old-unregistered' => 'De aangegeven bestandsversie "$1" staat niet in de database`.',
-'filedelete-current-unregistered' => 'Het aangegeven bestand "$1" staat niet in de database.',
+'filedelete-old-unregistered' => 'De opgegeven bestandsversie "$1" staat niet in de database`.',
+'filedelete-current-unregistered' => 'Het opgegeven bestand "$1" staat niet in de database.',
 'filedelete-archive-read-only' => 'De webserver kan niet in de archiefmap "$1" schrijven.',
 
 # Browsing diffs
@@ -3792,7 +3782,7 @@ Andere velden worden verborgen.
 
 # Email address confirmation
 'confirmemail' => 'E-mailadres bevestigen',
-'confirmemail_noemail' => 'U hebt geen geldig e-mailadres ingegeven in uw [[Special:Preferences|gebruikersvoorkeuren]].',
+'confirmemail_noemail' => 'U hebt geen geldig e-mailadres opgegeven in uw [[Special:Preferences|gebruikersvoorkeuren]].',
 'confirmemail_text' => '{{SITENAME}} eist bevestiging van uw e-mailadres voordat u de e-mailmogelijkheden kunt gebruiken.
 Klik op de onderstaande knop om een bevestigingsbericht te ontvangen.
 Dit bericht bevat een koppeling met een code.
@@ -4090,12 +4080,12 @@ Andere bestandstypen worden direct in het met het MIME-type verbonden programma
 'dberr-cachederror' => 'Deze pagina is een kopie uit de cache en is wellicht niet de meest recente versie.',
 
 # HTML forms
-'htmlform-invalid-input' => 'Er zijn problemen met enkele ingegeven waarden',
-'htmlform-select-badoption' => 'De ingegeven waarde is ongeldig.',
-'htmlform-int-invalid' => 'De ingegeven waarde is geen geheel getal.',
+'htmlform-invalid-input' => 'Er zijn problemen met enkele opgegeven waarden',
+'htmlform-select-badoption' => 'De opgegeven waarde is ongeldig.',
+'htmlform-int-invalid' => 'De opgegeven waarde is geen geheel getal.',
 'htmlform-float-invalid' => 'De waarde die u hebt opgegeven is geen getal.',
-'htmlform-int-toolow' => 'De ingegeven waarde ligt onder de minimumwaarde van $1',
-'htmlform-int-toohigh' => 'De ingegeven waarde ligt boven de maximumwaarde van $1',
+'htmlform-int-toolow' => 'De opgegeven waarde ligt onder de minimumwaarde van $1',
+'htmlform-int-toohigh' => 'De opgegeven waarde ligt boven de maximumwaarde van $1',
 'htmlform-required' => 'Deze waarde is verplicht',
 'htmlform-submit' => 'Opslaan',
 'htmlform-reset' => 'Wijzigingen ongedaan maken',
index d26c1f6..ef507f0 100644 (file)
@@ -1337,15 +1337,6 @@ For å søkja i alle, bruk prefikset ''all:'' (det inkluderer diskusjonssider, m
 I mellomtida kan du søkje gjennom Google.
 Ver merksam på at registra deira kan vera utdaterte.',
 
-# Quickbar
-'qbsettings' => 'Snøggmeny',
-'qbsettings-none' => 'Ingen',
-'qbsettings-fixedleft' => 'Venstre',
-'qbsettings-fixedright' => 'Høgre',
-'qbsettings-floatingleft' => 'Flytande venstre',
-'qbsettings-floatingright' => 'Flytande høgre',
-'qbsettings-directionality' => 'Fast, avhengig av kva retning språket ditt vert lese',
-
 # Preferences page
 'preferences' => 'Innstillingar',
 'mypreferences' => 'Innstillingar',
@@ -1891,7 +1882,6 @@ For best tryggleik, er img_auth.php sett ut av funksjon.',
 'http-read-error' => 'HTTP-lesefeil.',
 'http-timed-out' => 'Tidsavbrot på HTTP-førespurnad.',
 'http-curl-error' => 'Feil under henting av nettadressa: $1',
-'http-host-unreachable' => 'Kunne ikkje nå nettadressa',
 'http-bad-status' => 'Det var eit problem under HTTP-førespurnaden: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 069d949..94ff21a 100644 (file)
@@ -1072,14 +1072,6 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 'powersearch-togglenone' => 'ਕੋਈ ਨਹੀਂ',
 'search-external' => 'ਬਾਹਰੀ ਖੋਜ',
 
-# Quickbar
-'qbsettings' => 'ਤੁਰੰਤ ਬਾਰ',
-'qbsettings-none' => 'ਕੋਈ ਨਹੀਂ',
-'qbsettings-fixedleft' => 'ਕਾਬ੍ਬ੍ਹੇ ਨੂ ਸਥਾਪਿਤ',
-'qbsettings-fixedright' => 'ਸੱਜੇ ਨੂ ਸਥਾਪਿਤ',
-'qbsettings-floatingleft' => 'ਕਾਬ੍ਬ੍ਹੇ ਨੂ ਰੁਲਦੀ',
-'qbsettings-floatingright' => 'ਸੱਜੇ ਨੂ ਰੁਲਦੀ',
-
 # Preferences page
 'preferences' => 'ਮੇਰੀ ਪਸੰਦ',
 'mypreferences' => 'ਪਸੰਦਾਂ',
index e78fa68..290f4e2 100644 (file)
@@ -517,7 +517,7 @@ $messages = array(
 'otherlanguages' => 'W innych językach',
 'redirectedfrom' => '(Przekierowano z $1)',
 'redirectpagesub' => 'Strona przekierowująca',
-'lastmodifiedat' => 'Tę stronę ostatnio zmodyfikowano $2, $1.',
+'lastmodifiedat' => 'Tę stronę ostatnio zmodyfikowano $2, $1.',
 'viewcount' => 'Tę stronę obejrzano {{PLURAL:$1|tylko raz|$1 razy}}.',
 'protectedpage' => 'Strona zabezpieczona',
 'jumpto' => 'Skocz do:',
@@ -1368,15 +1368,6 @@ Zazwyczaj jest to spowodowane przestarzałym linkiem do usuniętej strony. Powó
 W międzyczasie możesz skorzystać z wyszukiwania Google.
 Jednak informacje o treści {{GRAMMAR:D.lp|{{SITENAME}}}} mogą być w Google nieaktualne.',
 
-# Quickbar
-'qbsettings' => 'Pasek szybkiego dostępu',
-'qbsettings-none' => 'Brak',
-'qbsettings-fixedleft' => 'Stały, z lewej',
-'qbsettings-fixedright' => 'Stały, z prawej',
-'qbsettings-floatingleft' => 'Unoszący się, z lewej',
-'qbsettings-floatingright' => 'Unoszący się, z prawej',
-'qbsettings-directionality' => 'Ustawione na stałe, zgodnie z kierunkiem zapisywania w wybranym języku',
-
 # Preferences page
 'preferences' => 'Preferencje',
 'mypreferences' => 'Preferencje',
@@ -1565,7 +1556,7 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'right-autoconfirmed' => 'Edycja stron częściowo zabezpieczonych',
 'right-bot' => 'Oznaczanie edycji jako wykonanych automatycznie',
 'right-nominornewtalk' => 'Drobne zmiany na stronach dyskusji użytkowników nie włączają powiadomienia o nowej wiadomości',
-'right-apihighlimits' => 'Zwiększony limit w zapytaniach, wykonywanych poprzez interfejs API',
+'right-apihighlimits' => 'Zwiększony limit w zapytaniach wykonywanych poprzez interfejs API',
 'right-writeapi' => 'Zapis poprzez interfejs API',
 'right-delete' => 'Usuwanie stron',
 'right-bigdelete' => 'Usuwanie stron z długą historią edycji',
@@ -1936,7 +1927,6 @@ Ponieważ ta wiki została skonfigurowana jako publiczna dla zapewnienia optymal
 'http-read-error' => 'Błąd odczytu HTTP.',
 'http-timed-out' => 'Przekroczony czas żądania HTTP.',
 'http-curl-error' => 'Błąd pobierania z adresu $1',
-'http-host-unreachable' => 'Adres jest nieosiągalny.',
 'http-bad-status' => 'Wystąpił problem z realizacją żądania HTTP $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -2458,8 +2448,8 @@ Naciśnij „wstecz” w przeglądarce, przeładuj stronę, po czym ponownie wyd
 'protectlogpage' => 'Zabezpieczone',
 'protectlogtext' => 'Poniżej znajduje się lista zmian w zabezpieczeniu pojedynczych stron.
 Wszystkie aktywne zabezpieczenia odnajdziesz na liście [[Special:ProtectedPages|zabezpieczonych stron]].',
-'protectedarticle' => '{{GENDER:$2|zabezpieczył|zabezpieczyła}} [[$1]]',
-'modifiedarticleprotection' => '{{GENDER:$2|zmienił|zmieniła}} poziom zabezpieczenia [[$1]]',
+'protectedarticle' => 'zabezpieczono "[[$1]]"',
+'modifiedarticleprotection' => 'zmieniono poziom zabezpieczenia "[[$1]]"',
 'unprotectedarticle' => 'odbezpieczył [[$1]]',
 'movedarticleprotection' => 'przeniósł ustawienia zabezpieczeń z [[$2]] do [[$1]]',
 'protect-title' => 'Zmiana poziomu zabezpieczenia „$1”',
@@ -2483,7 +2473,7 @@ Obecne ustawienia dla strony '''$1''' to:",
 'protect-cascadeon' => 'Ta strona jest zabezpieczona przed edycją, ponieważ jest używana przez {{PLURAL:$1|następującą stronę, która została zabezpieczona|następujące strony, które zostały zabezpieczone}} z włączoną opcją dziedziczenia. Możesz zmienić poziom zabezpieczenia strony, ale nie wpłynie to na dziedziczenie zabezpieczenia.',
 'protect-default' => 'Dostęp mają wszyscy użytkownicy',
 'protect-fallback' => 'Wymaga uprawnień „$1”',
-'protect-level-autoconfirmed' => 'Blokuj nowych i niezarejestrowanych użytkowników',
+'protect-level-autoconfirmed' => 'Dozwolone dla wszystkich poza nowymi i niezalogowanymi użytkownikami',
 'protect-level-sysop' => 'Dozwolone tylko dla administratorów',
 'protect-summary-cascade' => 'dziedziczenie',
 'protect-expiring' => 'wygasa $1 (UTC)',
@@ -2724,7 +2714,7 @@ Przyczyna blokady $1 to: „$2”',
 'blocklogtext' => 'Poniżej znajduje się lista blokad założonych i zdjętych z poszczególnych adresów IP.
 Na liście nie znajdą się adresy IP, które zablokowano w sposób automatyczny.
 By przejrzeć listę obecnie aktywnych blokad, przejdź na stronę [[Special:BlockList|zablokowanych adresów i użytkowników]].',
-'unblocklogentry' => '{{GENDER:$2|zdjął|zdjęła}} blokadę $1',
+'unblocklogentry' => 'zdjęto blokadę z $1',
 'block-log-flags-anononly' => 'tylko anonimowi',
 'block-log-flags-nocreate' => 'blokada tworzenia konta',
 'block-log-flags-noautoblock' => 'automatyczne blokowanie wyłączone',
@@ -3007,7 +2997,7 @@ Brak katalogu dla plików tymczasowych.',
 'tooltip-pt-login' => 'Zachęcamy do zalogowania się, choć nie jest to obowiązkowe.',
 'tooltip-pt-anonlogin' => 'Zachęcamy do zalogowania się, choć nie jest to obowiązkowe',
 'tooltip-pt-logout' => 'Wyloguj',
-'tooltip-ca-talk' => 'Dyskusja o zawartości tej strony.',
+'tooltip-ca-talk' => 'Dyskusja o zawartości tej strony',
 'tooltip-ca-edit' => 'Możesz edytować tę stronę. Przed zapisaniem zmian użyj przycisku podgląd.',
 'tooltip-ca-addsection' => 'Dodaj nowy wątek.',
 'tooltip-ca-viewsource' => 'Ta strona jest zabezpieczona. Możesz zobaczyć tekst źródłowy.',
@@ -4031,11 +4021,11 @@ Grafiki są pokazywane w pełnej rozdzielczości. Inne typy plików są otwieran
 'logentry-delete-revision' => '$1 {{GENDER:$2|zmienił|zmieniła}} widoczność {{PLURAL:$5|wersji|$5 wersji}} strony $3, wykonano następujące operacje: $4',
 'logentry-delete-event-legacy' => '$1 {{GENDER:$2|zmienił|zmieniła}} widoczność zdarzeń w rejestrze strony $3',
 'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|zmienił|zmieniła}} widoczność wersji strony $3',
-'logentry-suppress-delete' => '$1 ukrywa stronę $3',
-'logentry-suppress-event' => '$1 potajemnie zmienia widoczność {{PLURAL:$5|zdarzenia|$5 zdarzeń}} w $3, wykonano następujące operacje: $4',
-'logentry-suppress-revision' => '$1 potajemnie zmienia widoczność {{PLURAL:$5|wersji|$5 wersji}} strony $3, wykonano następujące operacje: $4',
-'logentry-suppress-event-legacy' => '$1 potajemnie zmienia widoczność zdarzenia w rejestrze $3',
-'logentry-suppress-revision-legacy' => '$1 potajemnie zmienia widoczność wersji strony $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|ukrył|ukryła}} stronę $3',
+'logentry-suppress-event' => '$1 potajemnie {{GENDER:$2|zmienił|zmieniła}} widoczność {{PLURAL:$5|zdarzenia|$5 zdarzeń}} w $3, wykonano następujące operacje: $4',
+'logentry-suppress-revision' => '$1 potajemnie {{GENDER:$2|zmienił|zmieniła}} widoczność {{PLURAL:$5|wersji|$5 wersji}} strony $3, wykonano następujące operacje: $4',
+'logentry-suppress-event-legacy' => '$1 potajemnie {{GENDER:$2|zmienił|zmieniła}} widoczność zdarzenia w rejestrze dla strony $3',
+'logentry-suppress-revision-legacy' => '$1 potajemnie {{GENDER:$2|zmienił|zmieniła}} widoczność wersji strony $3',
 'revdelete-content-hid' => 'treść została ukryta',
 'revdelete-summary-hid' => 'opis zmian został ukryty',
 'revdelete-uname-hid' => 'nazwa użytkownika została ukryta',
@@ -4050,9 +4040,9 @@ Grafiki są pokazywane w pełnej rozdzielczości. Inne typy plików są otwieran
 'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|przeniósł|przeniosła}} stronę $3 na $4 w miejsce przekierowania i bez pozostawienia przekierowania pod starym tytułem',
 'logentry-patrol-patrol' => '$1 {{GENDER:$2|oznaczył|oznaczyła}} wersję $4 strony $3 jako sprawdzoną',
 'logentry-patrol-patrol-auto' => '$1 automatycznie {{GENDER:$2|oznaczył|oznaczyła}} wersję $4 strony $3 jako sprawdzoną',
-'logentry-newusers-newusers' => 'Konto użytkownika $1 zostało utworzone',
-'logentry-newusers-create' => 'Konto użytkownika $1 zostało utworzone',
-'logentry-newusers-create2' => 'Konto użytkownika $3 zostało utworzone przez użytkownika $1',
+'logentry-newusers-newusers' => 'Konto {{GENDER:$2|użytkownika|użytkowniczki}} $1 zostało utworzone',
+'logentry-newusers-create' => 'Konto {{GENDER:$2|użytkownika|użytkowniczki}} $1 zostało utworzone',
+'logentry-newusers-create2' => '$1 {{GENDER:$2|utworzył|utworzyła}} konto użytkownika $3',
 'logentry-newusers-byemail' => 'Konto $3 zostało utworzone przez użytkownika $1, hasło wysłano e-mailem',
 'logentry-newusers-autocreate' => '$1 automatycznie {{GENDER:$2|utworzył|utworzyła|utworzył}} konto użytkownika',
 'logentry-rights-rights' => '$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup ($4 → $5)',
index f575b74..fed6a62 100644 (file)
@@ -53,18 +53,18 @@ $messages = array(
 'tog-showtoolbar' => "Smon-e la bara dj'utiss ëd modìfica (a-i va Javascript)",
 'tog-editondblclick' => "Dobia sgnacà për modifiché l'artìcol (a-i va JavaScript)",
 'tog-editsection' => "Abilité le modìfiche ëd session con j'anliure [modifiché]",
-'tog-editsectiononrightclick' => 'Abilité la modìfica dle session ën sgnacand-je ansima<br />  al tìtol col tast drit dël rat (a-i va Javascript)',
-'tog-showtoc' => "Buta le tàole dij contnù<br />(për j'artìcoj che l'han pì che 3 session)",
-'tog-rememberpassword' => "Visesse ëd mia ciav ansima a 's navigador (për al pi $1 {{PLURAL:$1|di|di}})",
-'tog-watchcreations' => "Gionta le pàgine che i creo mi e j'archivi che i cario mi a la lista ëd lòn che im ten-o sot euj",
-'tog-watchdefault' => "Gionta le pàgine che i modìfico mi a la lista dle ròbe ch'i ten-o sot-euj",
-'tog-watchmoves' => "Gionta le pàgine e j'archivi che i tramudo a lòn che im ten-o sot euj",
-'tog-watchdeletion' => "Gionta le pàgine e j'archivi che i scancelo via a la lista ëd lòn che im ten-o sot euj",
-'tog-minordefault' => 'Marca tute le modìfice coma cite<br />(mach coma predefinission dla casela)',
+'tog-editsectiononrightclick' => 'Abilité la modìfica dle session ën sgnacand-je ansima al tìtol col tast drit dël rat (a-i va Javascript)',
+'tog-showtoc' => "Smon-e la tàula dij contnù (për le pàgine che l'han pì che 3 session)",
+'tog-rememberpassword' => "Visesse ëd mia ciav ansima a 's navigador (për al pi $1 {{PLURAL:$1|di}})",
+'tog-watchcreations' => "Gionté le pàgine che i creo mi e j'archivi che i cario mi a la lista ëd lòn che im ten-o sot-euj",
+'tog-watchdefault' => "Gionté le pàgine e j'archivi che i modìfico mi a la lista dle ròbe ch'i ten-o sot-euj",
+'tog-watchmoves' => "Gionté le pàgine e j'archivi che i tramudo a lòn che im ten-o sot-euj",
+'tog-watchdeletion' => "Gionté le pàgine e j'archivi che i scancelo via a la lista ëd lòn che im ten-o sot-euj",
+'tog-minordefault' => 'Marché tute le modìfiche coma cite coma predefinission',
 'tog-previewontop' => 'Smon-e la preuva dzora al quàder ëd modìfica dël test e nen sota',
-'tog-previewonfirst' => 'Smon na preuva la prima vira che as fa na modìfica',
+'tog-previewonfirst' => 'Smon-e na preuva la prima vira che as fa na modìfica',
 'tog-nocache' => 'Disabilité la memòria local ëd le pàgine dël navigador',
-'tog-enotifwatchlistpages' => "Mandeme un mëssagi an pòsta eletrònica quand a-i son dle modìfiche a le pàgine ch'im ten-o sot euj",
+'tog-enotifwatchlistpages' => "Mandeme un mëssagi an pòsta eletrònica quand a-i son dle modìfiche a le pàgine ch'im ten-o sot-euj",
 'tog-enotifusertalkpages' => 'Mand-me un messagi ëd pòsta eletrònica quand a-i son dle modìfiche a mia pàgina dle ciaciarade',
 'tog-enotifminoredits' => "Mandeme un mëssagi an pòsta eletrònica bele che për le modìfiche cite dle pàgine o dj'archivi",
 'tog-enotifrevealaddr' => 'Lassa che a së s-ciàira mia adrëssa ëd pòsta eletrònica ant ij messagi ëd notìfica',
@@ -1094,15 +1094,6 @@ Ch'a preuva a gionté dnans a soa arserca ël prefiss ''all:'' për sërché an
 'search-external' => 'Arserca esterna',
 'searchdisabled' => "L'arserca anterna ëd {{SITENAME}} a l'é nen abilità; për adess a peul prové a dovré un motor d'arserca estern coma Google. (Però che a ten-a da ment che ij contnù ëd {{SITENAME}} listà ant ij motor pùblich a podrìo ëdcò esse nen d'autut agiornà)",
 
-# Quickbar
-'qbsettings' => 'Regolassion dla bara dij menù',
-'qbsettings-none' => 'Gnun',
-'qbsettings-fixedleft' => 'Fissà a la man ësnista',
-'qbsettings-fixedright' => 'Fissà a la man drita',
-'qbsettings-floatingleft' => 'Flotant a la man ësnista',
-'qbsettings-floatingright' => 'Flotant a la man drita',
-'qbsettings-directionality' => 'A pòst, an dipendensa dla diressionalità dë scritura ëd soa lenga',
-
 # Preferences page
 'preferences' => 'Mè gust',
 'mypreferences' => 'Gust',
@@ -1664,7 +1655,6 @@ Për na sicurëssa otimal, img_auth.php a l'é disabilità.",
 'http-read-error' => 'Eror ëd letura HTTP.',
 'http-timed-out' => "L'arcesta HTTP a l'ha finì sò temp.",
 'http-curl-error' => "Eror an sërcand d'arcuperé l'adrëssa dl'aragnà: $1.",
-'http-host-unreachable' => "L'anliura a rispond pa.",
 'http-bad-status' => "A l'é staje un problema durant l'arcesta HTTP: $1 $2",
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 490e4ce..bdacefc 100644 (file)
@@ -654,7 +654,7 @@ $1',
 'passwordreset-emailtitle' => 'د {{SITENAME}} د ګڼون څرګندنې',
 'passwordreset-emailelement' => 'کارن-نوم: $1
 لنډمهاله پټنوم: $2',
-'passwordreset-emailsent' => 'يو يادښتي برېښليک ولېږل شو.',
+'passwordreset-emailsent' => 'د پټنوم بيا پرځای کېدنې لپاره برېښليک درولېږل شو.',
 'passwordreset-emailsent-capture' => 'د يادونې لپاره يو برېښليک ولېږل شو، برېښليک په لاندې توګه ښودل شوی.',
 
 # Special:ChangeEmail
@@ -986,14 +986,6 @@ $1',
 'powersearch-togglenone' => 'هېڅ',
 'search-external' => 'باندنۍ پلټنه',
 
-# Quickbar
-'qbsettings' => 'چټک پټه',
-'qbsettings-none' => 'هېڅ',
-'qbsettings-fixedleft' => 'ثابته کيڼ',
-'qbsettings-fixedright' => 'ثابته ښي',
-'qbsettings-floatingleft' => 'کيڼه لامبا',
-'qbsettings-floatingright' => 'ښي لامبا',
-
 # Preferences page
 'preferences' => 'غوره توبونه',
 'mypreferences' => 'غوره توبونه',
@@ -1578,15 +1570,6 @@ $1',
 'listusers-noresult' => 'هېڅ کوم کارن و نه موندل شو.',
 'listusers-blocked' => '(بنديز لګېدلی)',
 
-# Special:ActiveUsers
-'activeusers' => 'د فعالو کارنانو لړليک',
-'activeusers-intro' => 'دا د هغو کارنانو لړليک دی چې په {{PLURAL:$1|تېرې|تېرو}} $1 {{PLURAL:$1|ورځ|ورځو}} کې يې ونډې ترسره کړي.',
-'activeusers-count' => 'په {{PLURAL:$3|تېرې ورځ|تېرو $3 ورځو}} کې $1 {{PLURAL:$1|سمون|سمونونه}}',
-'activeusers-from' => 'هغه کارنان کتل چې نومونه يې پېلېږي په:',
-'activeusers-hidebots' => 'روباټونه پټول',
-'activeusers-hidesysops' => 'پازوالان پټول',
-'activeusers-noresult' => 'کارن و نه موندل شو.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'د کارن ډلو رښتې',
 'listgrouprights-group' => 'ډله',
@@ -2165,13 +2148,8 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'pageinfo-protect-cascading-yes' => 'هو',
 
 # Skin names
-'skinname-standard' => 'کلاسيک',
-'skinname-nostalgia' => 'نوستالژي',
 'skinname-cologneblue' => 'شين کلون',
 'skinname-monobook' => 'مونوبوک',
-'skinname-myskin' => 'زمابڼه',
-'skinname-chick' => 'شيک',
-'skinname-simple' => 'ساده',
 'skinname-modern' => 'نوی',
 'skinname-vector' => 'وېکټور',
 
index 51107c8..7a64de3 100644 (file)
@@ -28,6 +28,7 @@
  * @author GKnedo
  * @author Giro720
  * @author GoEThe
+ * @author Gusta
  * @author Hamilton Abreu
  * @author Helder.wiki
  * @author Jaideraf
@@ -316,7 +317,7 @@ $magicWords = array(
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'Sublinhar linques:',
+'tog-underline' => 'Sublinhar links:',
 'tog-justify' => 'Justificar parágrafos',
 'tog-hideminor' => 'Ocultar edições menores nas mudanças recentes',
 'tog-hidepatrolled' => 'Ocultar edições patrulhadas nas mudanças recentes',
@@ -1382,15 +1383,6 @@ Tente utilizar o prefixo ''all:'' em sua busca, para pesquisar por todos os cont
 Você poderá pesquisar através do Google enquanto isso.
 Note que os índices do sistema de busca externo poderão conter referências desatualizadas a {{SITENAME}}.',
 
-# Quickbar
-'qbsettings' => 'Configurações da Barra Rápida',
-'qbsettings-none' => 'Nenhuma',
-'qbsettings-fixedleft' => 'Fixo à esquerda',
-'qbsettings-fixedright' => 'Fixo à direita',
-'qbsettings-floatingleft' => 'Flutuando à esquerda',
-'qbsettings-floatingright' => 'Flutuando à direita',
-'qbsettings-directionality' => 'Fixado, dependendo da direcionalidade do seu alfabeto e da sua língua',
-
 # Preferences page
 'preferences' => 'Preferências',
 'mypreferences' => 'Preferências',
@@ -1958,7 +1950,6 @@ Para melhor segurança, o img_auth.php está desativado.',
 'http-read-error' => 'Erro de leitura HTTP.',
 'http-timed-out' => 'Esgotado o tempo de espera da requisição HTTP.',
 'http-curl-error' => 'Erro ao requisitar a URL: $1',
-'http-host-unreachable' => 'Não foi possível atingir a URL.',
 'http-bad-status' => 'Ocorreu um problema durante a requisição HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -2282,15 +2273,6 @@ Necessário no mínimo um domínio de nível superior, por exemplo "*.org".<br /
 'listusers-noresult' => 'Não foram encontrados usuários para a forma pesquisada.',
 'listusers-blocked' => '({{GENDER:$1|bloqueado|bloqueada}})',
 
-# Special:ActiveUsers
-'activeusers' => 'Lista de usuários ativos',
-'activeusers-intro' => 'Esta é uma lista de usuários com algum tipo de atividade nos últimos $1 {{PLURAL:$1|dia|dias}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|ação|ações}} {{PLURAL:$3|no último dia|nos últimos $3 dias}}',
-'activeusers-from' => 'Mostrar usuários começando em:',
-'activeusers-hidebots' => 'Esconder robôs',
-'activeusers-hidesysops' => 'Esconder administradores',
-'activeusers-noresult' => 'Nenhum usuário encontrado.',
-
 # Special:ListGroupRights
 'listgrouprights' => 'Privilégios de grupo de usuários',
 'listgrouprights-summary' => 'O que segue é uma lista dos grupos de usuários definidos neste wiki, com os seus privilégios de acessos associados.
@@ -3093,13 +3075,8 @@ Permite colocar uma justificativa no sumário da edição.',
 
 # Scripts
 'common.js' => '/* Códigos JavaScript aqui colocados serão carregados por todos aqueles que acessarem alguma página deste wiki */',
-'standard.js' => '/* Qualquer JavaScript aqui colocado afetará os usuários do skin Clássico */',
-'nostalgia.js' => '/* Qualquer JavaScript aqui colocado afetará os usuários do skin Nostalgia */',
 'cologneblue.js' => '/* Qualquer JavaScript aqui colocado afetará os usuários do skin Azul colonial */',
 'monobook.js' => '/* Qualquer JavaScript aqui colocado afetará os usuários do skin MonoBook */',
-'myskin.js' => '/* Qualquer JavaScript aqui colocado afetará os usuários do skin MySkin */',
-'chick.js' => '/* Qualquer JavaScript aqui colocado afetará os usuários do skin Chique */',
-'simple.js' => '/* Qualquer JavaScript aqui colocado afetará os usuários do skin Simples */',
 'modern.js' => '/* Qualquer JavaScript aqui colocado afetará os usuários do skin Moderno */',
 'vector.js' => '/* Qualquer JavaScript aqui colocado afetará os usuários do skin Vector */',
 
@@ -3175,13 +3152,8 @@ Tal bloqueio foi provavelmente causado por uma ligação para um ''website'' ext
 'pageinfo-category-files' => 'Número de arquivos',
 
 # Skin names
-'skinname-standard' => 'Clássico',
-'skinname-nostalgia' => 'Nostalgia',
 'skinname-cologneblue' => 'Azul colonial',
 'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => 'MySkin',
-'skinname-chick' => 'Chique',
-'skinname-simple' => 'Simples',
 'skinname-modern' => 'Moderno',
 
 # Patrolling
@@ -4015,7 +3987,7 @@ As imagens serão exibidas em sua resolução máxima, outros tipos de arquivos
 'logentry-move-move_redir-noredirect' => '$1 moveu a página $3 para $4 sem um redirecionamento',
 'logentry-patrol-patrol' => '$1 marcou a revisão $4 da página $3 como patrulhada',
 'logentry-patrol-patrol-auto' => '$1 marcou automaticamente a revisão $4 da página $3 como patrulhada',
-'logentry-newusers-newusers' => 'A conta de usuário $1 foi criada',
+'logentry-newusers-newusers' => 'A conta de usuário $1 foi {{GENDER:$2|criada}}',
 'logentry-newusers-create' => 'A conta de usuário $1 foi criada',
 'logentry-newusers-create2' => 'A conta de usuário $3 foi criada por $1',
 'logentry-newusers-byemail' => 'A conta de usuário $3 foi criada por $1, com a senha sendo enviada por e-mail',
index ee75527..92efbcd 100644 (file)
@@ -2328,15 +2328,8 @@ See also:
 In this sentence, "their indexes" refers to "Google\'s indexes".
 
 Shown on [[Special:Search]] when the internal search is disabled.',
-
-# Quickbar
-'qbsettings' => 'The title of the section in [[Special:Preferences]], only shown when using the skins "Standard/Classic" or "Cologne Blue". The quicbar is the same as the sidebar.',
-'qbsettings-none' => '{{Identical|None}}',
-'qbsettings-fixedleft' => 'Position of the quickbar (sidebar). Used in the preferences.',
-'qbsettings-fixedright' => 'Position of the quickbar (sidebar). Used in the preferences.',
-'qbsettings-floatingleft' => 'Position of the quickbar (sidebar). Used in the preferences.',
-'qbsettings-floatingright' => 'Position of the quickbar (sidebar). Used in the preferences.',
-'qbsettings-directionality' => '"Fixed", as in the position "fixed left or right". For left-to-right languages, the quickbar will be positioned at the left, for right-to-left languages at the right.',
+'search-error' => 'Shown when an error has occurred when performing a search
+* $1 is the localized error that was returned',
 
 # Preferences page
 'preferences' => 'Title of the [[Special:Preferences]] page.
@@ -2415,7 +2408,8 @@ When changing this message, please also update {{msg-mw|vector-editwarning-warni
 {{Identical|Search}}',
 'resultsperpage' => "Option on the 'Search options' tab of [[Special:Preferences]]",
 'stub-threshold' => 'Used in [[Special:Preferences]], tab "Misc".',
-'stub-threshold-disabled' => 'Used in [[Special:Preferences]].',
+'stub-threshold-disabled' => 'Used in [[Special:Preferences]].
+{{Identical|Disabled}}',
 'recentchangesdays' => 'Used in [[Special:Preferences]], tab "Recent changes".',
 'recentchangesdays-max' => 'Shown as hint in [[Special:Preferences]], tab "Recent changes"',
 'recentchangescount' => 'Used in [[Special:Preferences]], tab "Recent changes".',
@@ -3585,12 +3579,6 @@ See also:
 Known messages are:
 * {{msg-mw|http-host-unreachable}}
 * {{msg-mw|http-timed-out}}',
-'http-host-unreachable' => 'Used as error message when executing HTTP request.
-
-See also:
-* {{msg-mw|Http-request-error}}
-* {{msg-mw|Http-read-error}}
-* {{msg-mw|Http-timed-out|28}}',
 'http-bad-status' => 'Parameters:
 * $1 - an HTTP error code (e.g. 404)
 * $2 - the HTTP error message (e.g. File Not Found)',
@@ -7888,7 +7876,8 @@ See also:
 {{Related|Exif-gpsdop}}',
 'exif-gpsdop-moderate' => 'Parameters:
 * $1 - the actual HDOP/PDOP value (5-10 for moderate). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
-{{Related|Exif-gpsdop}}',
+{{Related|Exif-gpsdop}}
+{{Identical|Moderate}}',
 'exif-gpsdop-fair' => 'Parameters:
 * $1 - the actual HDOP/PDOP value (10-20 for fair). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
 {{Related|Exif-gpsdop}}',
index b1560cd..0a4d7e1 100644 (file)
@@ -1362,15 +1362,6 @@ Detalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'search-external' => 'Căutare externă',
 'searchdisabled' => '<p>Ne pare rău! Căutarea după text a fost dezactivată temporar, din motive de performanță. Între timp puteți folosi căutarea prin Google mai jos, însă aceasta poate să dea rezultate învechite.</p>',
 
-# Quickbar
-'qbsettings' => 'Setări pentru bara rapidă',
-'qbsettings-none' => 'Fără',
-'qbsettings-fixedleft' => 'Fixă, în stânga',
-'qbsettings-fixedright' => 'Fixă, în dreapta',
-'qbsettings-floatingleft' => 'Liberă',
-'qbsettings-floatingright' => 'Plutire la dreapta',
-'qbsettings-directionality' => 'Fixat, în funcție de direcția în care se face scrierea în limba dumneavoastră',
-
 # Preferences page
 'preferences' => 'Preferințe',
 'mypreferences' => 'Preferințe',
@@ -1915,7 +1906,6 @@ Pentru securitate optimă, img_auth.php este dezactivat.',
 'http-read-error' => 'S-a produs o eroare în timpul citirii HTTP.',
 'http-timed-out' => 'Cererea HTTP a expirat.',
 'http-curl-error' => 'Eroare la preluarea adresei URL: $1',
-'http-host-unreachable' => 'Adresa URL nu a putut fi accesată.',
 'http-bad-status' => 'A apărut o problemă în timpul solicitării HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 3600dd1..eb8ce61 100644 (file)
@@ -1125,15 +1125,6 @@ Prueve mettènne nnande a l'inderrogaziona toje 'u prefisse '''all:''' pe cercà
 Tu puè cercà ausanne Google.
 Però fa attenzione purcè l'indice lore sus a {{SITENAME}} ponne condenè pàggene ca non ge sonde aggiornate.",
 
-# Quickbar
-'qbsettings' => 'Barra veloce',
-'qbsettings-none' => 'Ninde',
-'qbsettings-fixedleft' => 'Fissete a sinistre (Fixed left)',
-'qbsettings-fixedright' => 'Fissete a destre (Fixed right)',
-'qbsettings-floatingleft' => 'Volanne a sinistre (Floating left)',
-'qbsettings-floatingright' => 'Volanne a destre (Floating right)',
-'qbsettings-directionality' => "Corrette, depende da 'a direzionalità d'u script tune e da 'a lènga toje",
-
 # Preferences page
 'preferences' => 'Me piece accussì',
 'mypreferences' => 'Me piace accussì',
@@ -1702,7 +1693,6 @@ Pe 'na securezze a uerre proprie, img_auth.php jè disabbilitate.",
 'http-read-error' => "Errore jndr'à letture de l' HTTP",
 'http-timed-out' => 'Richieste HTTP fore timbe.',
 'http-curl-error' => "Errore analizzanne l'URL: $1",
-'http-host-unreachable' => "Non ge riesche a raggiungere l'URL",
 'http-bad-status' => "Ha state 'nu probbleme duranne 'a richieste HTTP: $1, $2",
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 43a2d28..6235e6d 100644 (file)
@@ -827,17 +827,17 @@ $2',
 'yourdomainname' => 'Ваш домен:',
 'password-change-forbidden' => 'Вы не можете изменить пароль в этой вики.',
 'externaldberror' => 'Произошла ошибка при аутентификации с помощью внешней базы данных или у вас недостаточно прав для внесения изменений в свою внешнюю учётную запись.',
-'login' => 'Ð\92ойÑ\82и Ð² Ñ\81иÑ\81Ñ\82емÑ\83',
+'login' => 'Ð\9fÑ\80едÑ\81Ñ\82авиÑ\82Ñ\8cÑ\81Ñ\8f Ñ\81иÑ\81Ñ\82еме',
 'nav-login-createaccount' => 'Представиться / зарегистрироваться',
 'loginprompt' => 'Вы должны разрешить «cookies», чтобы представиться системе.',
 'userlogin' => 'Представиться или зарегистрироваться',
 'userloginnocreate' => 'Представиться',
-'logout' => 'Ð\92Ñ\8bÑ\85од Ð¸Ð· Ñ\81иÑ\81Ñ\82емÑ\8b',
-'userlogout' => 'Ð\92Ñ\8bйÑ\82и',
+'logout' => 'Ð\97авеÑ\80Ñ\88ение Ñ\81еанÑ\81а',
+'userlogout' => 'Ð\97авеÑ\80Ñ\88ение Ñ\81еанÑ\81а',
 'notloggedin' => 'Вы не представились системе',
 'nologin' => 'Нет учётной записи? $1.',
 'nologinlink' => 'Создать учётную запись',
-'createaccount' => 'Ð\97аÑ\80егиÑ\81Ñ\82Ñ\80иÑ\80оваÑ\82Ñ\8cÑ\81Ñ\8f',
+'createaccount' => 'СоздаÑ\82Ñ\8c Ñ\83Ñ\87Ñ\91Ñ\82нÑ\83Ñ\8e Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c',
 'gotaccount' => "Вы уже зарегистрированы? '''$1'''.",
 'gotaccountlink' => 'Представьтесь',
 'userlogin-resetlink' => 'Забыли данные для входа?',
@@ -1472,15 +1472,6 @@ $1",
 'search-external' => 'Внешний поиск',
 'searchdisabled' => 'Извините, но встроенный полнотекстовый поиск выключен. Вы можете воспользоваться поиском по сайту через поисковые системы общего назначения, однако имейте в виду, что копия сайта в их кэше может быть несколько устаревшей.',
 
-# Quickbar
-'qbsettings' => 'Панель навигации',
-'qbsettings-none' => 'Не показывать',
-'qbsettings-fixedleft' => 'Неподвижная слева',
-'qbsettings-fixedright' => 'Неподвижная справа',
-'qbsettings-floatingleft' => 'Плавающая слева',
-'qbsettings-floatingright' => 'Плавающая справа',
-'qbsettings-directionality' => 'Закреплённая, в зависимости от направления письменности вашего языка',
-
 # Preferences page
 'preferences' => 'Настройки',
 'mypreferences' => 'Настройки',
@@ -2036,7 +2027,6 @@ $1',
 'http-read-error' => 'Ошибка чтения HTTP.',
 'http-timed-out' => 'Истекло время ожидания HTTP-запроса.',
 'http-curl-error' => 'Ошибка обращения к URL: $1',
-'http-host-unreachable' => 'Невозможно обратиться по указанному URL.',
 'http-bad-status' => 'Во время обработки HTTP-запроса обнаружена проблема: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -2421,7 +2411,7 @@ $1',
 
 # Watchlist
 'watchlist' => 'Список наблюдения',
-'mywatchlist' => 'Ð\9dаблÑ\8eдение',
+'mywatchlist' => 'СпиÑ\81ок Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f',
 'watchlistfor2' => 'Для $1 $2',
 'nowatchlist' => 'Ваш список наблюдения пуст.',
 'watchlistanontext' => 'Вы должны $1, чтобы просмотреть или отредактировать список наблюдения.',
@@ -4086,7 +4076,7 @@ MediaWiki распространяется в надежде, что она бу
 'specialpages-group-highuse' => 'Интенсивно используемые страницы',
 'specialpages-group-pages' => 'Списки страниц',
 'specialpages-group-pagetools' => 'Инструменты для страниц',
-'specialpages-group-wiki' => 'Ð\9fанелÑ\8c Ñ\83пÑ\80авлениÑ\8f',
+'specialpages-group-wiki' => 'Ð\94аннÑ\8bе Ð¸ Ð¸Ð½Ñ\81Ñ\82Ñ\80Ñ\83менÑ\82Ñ\8b',
 'specialpages-group-redirects' => 'Перенаправляющие служебные страницы',
 'specialpages-group-spam' => 'Инструменты против спама',
 
index 5ec61aa..10337e8 100644 (file)
@@ -1856,7 +1856,6 @@ See https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 'http-read-error' => 'HTTP पठनदोषः।',
 'http-timed-out' => 'HTTP अभ्यर्थनं कालातीतम् ।',
 'http-curl-error' => 'दोषाहरणस्य URL: $1',
-'http-host-unreachable' => 'URL प्राप्तुं न शक्यते ।',
 'http-bad-status' => 'HTTP : $1 $2अभ्यर्थने समस्या आसीत् ।',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 72d6282..c7480d1 100644 (file)
@@ -1242,14 +1242,6 @@ $1",
 මේ අතරතුර ඔබ හට ගූගල් ඔස්සේ ගවේෂණය කල හැක.
 {{SITENAME}} අන්තර්ගතය පිළිබඳ ඔවුන්ගේ සූචි යල් පැන ගොස් ඇතිවා විය හැකි බව සටහන් කර ගන්න.',
 
-# Quickbar
-'qbsettings' => 'යුහුතීරුව',
-'qbsettings-none' => 'කිසිවක් නොමැත',
-'qbsettings-fixedleft' => 'ස්ථාවර වම',
-'qbsettings-fixedright' => 'ස්ථාවර දකුණ',
-'qbsettings-floatingleft' => 'ප්ලාවක වම',
-'qbsettings-floatingright' => 'ප්ලාවක දකුණ',
-
 # Preferences page
 'preferences' => 'අභිරුචි',
 'mypreferences' => 'අභිරුචීන්',
@@ -1799,7 +1791,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization බලන්න.',
 'http-read-error' => 'HTTP කියැවුම් දෝෂය.',
 'http-timed-out' => 'HTTP අයැදුම සඳහා වූ කාලය ඉක්මව ඇත.',
 'http-curl-error' => 'අන්තර්ජාල ලිපිනය පමුණුවාගෙන ඒමේ දෝෂය : $1',
-'http-host-unreachable' => 'අන්තර්ජාල ලිපිනය වෙත සේන්දු විය නොහැකි විය',
 'http-bad-status' => 'HTTP ආයාචනයෙහිදී ගැටළුවක් පැන නැගුනි: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 98e6858..3e6e677 100644 (file)
@@ -1264,15 +1264,6 @@ Podrobnosti lahko najdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 Medtem lahko iščete preko Googla.
 Upoštevajte, da so njihovi podatki vsebine {{GRAMMAR:rodilnik|{{SITENAME}}}} morda zastareli.',
 
-# Quickbar
-'qbsettings' => 'Nastavitve hitre vrstice',
-'qbsettings-none' => 'Brez',
-'qbsettings-fixedleft' => 'Levo nepomično',
-'qbsettings-fixedright' => 'Desno nepomično',
-'qbsettings-floatingleft' => 'Levo leteče',
-'qbsettings-floatingright' => 'Desno leteče',
-'qbsettings-directionality' => 'Stalno, odvisno od usmerjenosti pisave vašega jezika',
-
 # Preferences page
 'preferences' => 'Nastavitve',
 'mypreferences' => 'Nastavitve',
@@ -1838,7 +1829,6 @@ Za optimalno varnost je img_auth.php onemogočen.',
 'http-read-error' => 'Napaka branja HTTP.',
 'http-timed-out' => 'Zahteva HTTP je potekla.',
 'http-curl-error' => 'Napaka pri doseganju URL: $1',
-'http-host-unreachable' => 'Ni mogoče doseči URL.',
 'http-bad-status' => 'Med zahtevo HTTP je prišlo do težave: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 36e0f4c..84a2763 100644 (file)
@@ -1795,7 +1795,6 @@ Për siguri optimale, img_auth.php është çaktivizuar.',
 'http-read-error' => 'Gabim në leximin e HTTP.',
 'http-timed-out' => 'Kërkesës HTTP i kaloi koha.',
 'http-curl-error' => 'Gabim gjatë gjetjes së URL-së: $1',
-'http-host-unreachable' => 'Nuk mund të lidheni me adresën URL.',
 'http-bad-status' => 'Ndodhi një problem gjatë kërkesës HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 5935f8a..eef34f2 100644 (file)
@@ -1378,15 +1378,6 @@ Detaljer kan hittas i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 Du kan istället göra sökningar med hjälp av Google.
 Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
 
-# Quickbar
-'qbsettings' => 'Snabbmeny',
-'qbsettings-none' => 'Ingen',
-'qbsettings-fixedleft' => 'Fast vänster',
-'qbsettings-fixedright' => 'Fast höger',
-'qbsettings-floatingleft' => 'Flytande vänster',
-'qbsettings-floatingright' => 'Flytande höger',
-'qbsettings-directionality' => 'Fast, beroende på riktningen av ditt skript och språk',
-
 # Preferences page
 'preferences' => 'Inställningar',
 'mypreferences' => 'Inställningar',
@@ -1942,7 +1933,6 @@ För optimal säkerhet, har img_auth.php blivit avaktiverad.',
 'http-read-error' => 'HTTP-läsfel.',
 'http-timed-out' => 'Time out för HTTP-begäran.',
 'http-curl-error' => 'Fel vid hämtning av URL: $1',
-'http-host-unreachable' => 'URL:en kunde inte nås.',
 'http-bad-status' => 'Det uppstod ett problem under HTTP-begäran: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 0926774..3f2d938 100644 (file)
@@ -1105,15 +1105,6 @@ $1",
 'search-external' => 'வெளித்தேடல்',
 'searchdisabled' => '{{SITENAME}} தளத்தின் தேடல் வசதிகள் தற்காலிகமாக முடக்கப்பட்டுள்ளது. அதுவரை நீங்கள் கீழேயுள்ள கூகிள் தேடலைப் பயன்படுத்தலாம். இது சில சமயம் இற்றைப்படுத்தப்படாததாய் இருக்கக்கூடும்.',
 
-# Quickbar
-'qbsettings' => 'விரைவுச் சட்ட அமைவுகள்',
-'qbsettings-none' => 'எதுவுமில்லை',
-'qbsettings-fixedleft' => 'நிலைத்த இடது',
-'qbsettings-fixedright' => 'நிலைத்த வலது',
-'qbsettings-floatingleft' => 'மிதப்பு இடது',
-'qbsettings-floatingright' => 'மிதப்பு வலது',
-'qbsettings-directionality' => 'உங்கள் மொழியைப் படிக்கும் திசைக்கு ஏற்ப, நிறுவப்பட்டது',
-
 # Preferences page
 'preferences' => 'விருப்பங்கள்',
 'mypreferences' => 'விருப்பத்தேர்வுகள்',
@@ -1635,7 +1626,6 @@ $1',
 'http-read-error' => 'HTTP படிப்பதில் பிழை.',
 'http-timed-out' => 'HTTP கோரியதற்கான நேரம் முடிவடைந்துவிட்டது.',
 'http-curl-error' => '$1 உரலியை பெறுவதில் பிழை நேரிட்டது',
-'http-host-unreachable' => 'இணைய முகவரியை (URL) சென்றடைய முடியவில்லை',
 'http-bad-status' => 'HTTP கோரிக்கையில் பிரச்சினை ஏற்பட்டுள்ளது:$1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -1783,6 +1773,7 @@ $1',
 'disambiguationspage' => 'Template:பக்கவழி நெறிப்படுத்தல்',
 'disambiguations-text' => "பின்வரும் பக்கங்கள் '''பக்கவழி நெறிப்படுத்தல் பக்கத்துக்கு''' இணைக்கப்பட்டுள்ளன. மாறாக இவை பொருத்தமன தலைப்பிற்கு இணைக்கப்பட வேண்டும். <br />[[MediaWiki:Disambiguationspage|பக்கவழி நெறிப்படுத்தல் பக்கங்கத்தில்]] உள்ள வார்ப்புரு இணைக்கப்பட்ட பக்கங்கள்  பக்கவழி நெறிப்படுத்தல் பக்கங்கள் என் கருதப்படும்.",
 
+'pageswithprop' => 'பக்கப் பண்புடைய பக்கங்கள்',
 'pageswithprop-submit' => 'செல்க',
 
 'doubleredirects' => 'இரட்டை வழிமாற்றுகள்',
@@ -1993,7 +1984,7 @@ $1',
 'usermessage-editor' => 'அமைப்பு தூதன்(messenger).',
 
 # Watchlist
-'watchlist' => 'à®\8eனà¯\8d à®\95வனிபà¯\8dபà¯\81பà¯\8d à®ªà®\9fà¯\8dà®\9fியலà¯\8d',
+'watchlist' => 'கவனிப்புப் பட்டியல்',
 'mywatchlist' => 'கவனிப்புப் பட்டியல்',
 'watchlistfor2' => '$1 பயனரின் ($2)',
 'nowatchlist' => 'உங்களுடைய கவனிப்புப் பட்டியலில் ஒரு விடயமும் இல்லை.',
@@ -2142,7 +2133,7 @@ $NEWPAGE
 'protect-default' => 'அனைத்துப் பயனரையும் உள்ளிடு',
 'protect-fallback' => '"$1" அனுமதி தேவை',
 'protect-level-autoconfirmed' => 'புதிய, பதிவு செய்யாத பயனர்களைத் தடை செய்',
-'protect-level-sysop' => 'நிரà¯\81வாà®\95ிà®\95ளà¯\8d à®®à®\9fà¯\8dà®\9fும்',
+'protect-level-sysop' => 'நிரà¯\81வாà®\95ிà®\95ளà¯\88 à®®à®\9fà¯\8dà®\9fà¯\81à®®à¯\8d à®\85னà¯\81மதிà®\95à¯\8dà®\95வும்',
 'protect-summary-cascade' => 'படிநிலை',
 'protect-expiring' => '$1 (UTC) மணிக்கு காலாவதியாகிறது',
 'protect-expiring-local' => 'காலாவதியாகும்$1',
@@ -2207,7 +2198,7 @@ $NEWPAGE
 'undeletedrevisions' => '{{PLURAL:$1|1 திருத்தம் மீட்கப்பட்டது|$1 திருத்தங்கள் மீட்கப்பட்டன}}',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 திருத்தம்|$1 திருத்தங்கள்}} மற்றும் {{PLURAL:$2|1 கோப்பு|$2 கோப்புகள்}} மீட்கப்பட்டன.',
 'undeletedfiles' => '{{PLURAL:$1|ஒரு கோப்பு மீட்டெடுக்கப்பட்டது|$1 கோப்புகள் மீட்டெடுக்கப்பட்டன}}',
-'cannotundelete' => 'நà¯\80à®\95à¯\8dà®\95à®®à¯\8d à®¤à¯\8bலà¯\8dவி; à®µà¯\87à®±à¯\81 à®¯à®¾à®°à®¾à®µà®¤à¯\81 à®®à¯\81னà¯\8dனதாà®\95 à®\87பà¯\8dபà®\95à¯\8dà®\95தà¯\8dதà¯\88 à®¨à¯\80à®\95à¯\8dà®\95ியிரà¯\81à®\95à¯\8dà®\95லாமà¯\8d.',
+'cannotundelete' => 'à®®à¯\80ளà¯\8dவிதà¯\8dதலà¯\8d à®¤à¯\8bலà¯\8dவி: $1',
 'undeletedpage' => "'''$1 மீட்கப்பட்டது'''
 
 அண்மைய நீக்கல்களுக்கும் மீட்புக்களுக்கும் [[Special:Log/delete|நீக்கல் பதிவைப்]] பார்க்கவும்.",
@@ -2756,8 +2747,6 @@ $1',
 'pageinfo-category-files' => 'கோப்புகளின் எண்ணிக்கை',
 
 # Skin names
-'skinname-standard' => 'இயல்பான',
-'skinname-nostalgia' => 'பசுமை நினைவு (Nostalgia)',
 'skinname-cologneblue' => 'கொலோன் (Cologne) நீலம் Blue',
 
 # Patrolling
index 7665827..05f81b7 100644 (file)
@@ -1659,7 +1659,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'http-read-error' => 'HTTP చదువుటలో పొరపాటు.',
 'http-timed-out' => 'HTTP అభ్యర్థనకి కాలం చెల్లింది.',
 'http-curl-error' => 'URLని తేవడంలో పొరపాటు: $1',
-'http-host-unreachable' => 'URLని చేరలేకపోయాం.',
 'http-bad-status' => 'HTTP అభ్యర్ధన చేస్తున్నప్పుడు సమస్య ఉంది: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index d0b2863..53b78be 100644 (file)
@@ -1224,14 +1224,6 @@ $1",
 'search-external' => 'ค้นหาภายนอก',
 'searchdisabled' => 'การค้นหา {{SITENAME}} ปิดใช้งาน คุณสามารถค้นหาผ่านกูเกิลหรือเซิร์ชเอนจินอื่นในเวลาไม่นาน โปรดทราบว่าดัชนีเนื้อหาของ {{SITENAME}} บนเซิร์ชเอนจินอาจเป็นข้อมูลเก่า',
 
-# Quickbar
-'qbsettings' => 'แถบพิเศษ',
-'qbsettings-none' => 'ไม่มี',
-'qbsettings-fixedleft' => 'ตรึงไว้ทางซ้าย',
-'qbsettings-fixedright' => 'ตรึงไว้ทางขวา',
-'qbsettings-floatingleft' => 'ด้านซ้าย',
-'qbsettings-floatingright' => 'ด้านขวา',
-
 # Preferences page
 'preferences' => 'ตั้งค่าส่วนตัว',
 'mypreferences' => 'การตั้งค่า',
@@ -1734,7 +1726,6 @@ $1',
 'http-read-error' => 'การอ่านข้อมูล HTTP ผิดพลาด',
 'http-timed-out' => 'คำขอข้อมูล HTTP เกินเวลาที่กำหนด',
 'http-curl-error' => 'เกิดข้อผิดพลาดในการเรียกข้อมูลจาก URL: $1',
-'http-host-unreachable' => 'ไม่สามารถเข้าถึง URL',
 'http-bad-status' => 'พบปัญหาในระหว่างการข้อข้อมูล HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 037d01e..a0710d5 100644 (file)
@@ -920,7 +920,7 @@ $2
 'passwordreset-emailelement' => "Ім'я користувача: $1
 Тимчасовий пароль: $2",
 'passwordreset-emailsent' => 'Електронний лист для відновлення пароля відправлений.',
-'passwordreset-emailsent-capture' => 'Електронний лист-нагадування був надісланий, як показано нижче.',
+'passwordreset-emailsent-capture' => 'Електронний лист скидання паролю було надіслано, як показано нижче.',
 'passwordreset-emailerror-capture' => 'Електронний лист для відновлення пароля мав бути надісланий, як показано нижче, але його надсилання користувачеві $1 не вдалося.',
 
 # Special:ChangeEmail
@@ -1430,15 +1430,6 @@ $1",
 'search-external' => 'Зовнішній пошук',
 'searchdisabled' => '<p>Вибачте, повнотекстовий пошук тимчасово недоступний через перевантаження сервера; передбачається, що ця функція буде знову включена після установки нового обладнання. Поки що ми пропонуємо вам скористатися Google чи Yahoo!:</p>',
 
-# Quickbar
-'qbsettings' => 'Панель навігації',
-'qbsettings-none' => 'Не показувати панель',
-'qbsettings-fixedleft' => 'Фіксована ліворуч',
-'qbsettings-fixedright' => 'Фіксована праворуч',
-'qbsettings-floatingleft' => 'Плаваюча ліворуч',
-'qbsettings-floatingright' => 'Плаваюча праворуч',
-'qbsettings-directionality' => 'Фіксована, залежно від напрямку письма вашої мови',
-
 # Preferences page
 'preferences' => 'Налаштування',
 'mypreferences' => 'Налаштування',
@@ -2006,7 +1997,6 @@ $1',
 'http-read-error' => 'Помилка читання HTTP.',
 'http-timed-out' => 'Перевищення часу очікування HTTP-запиту.',
 'http-curl-error' => 'Помилка звертання до URL: $1',
-'http-host-unreachable' => 'Неможливо досягнути вказану URL-адресу.',
 'http-bad-status' => 'Під час HTTP-запиту виникла проблема: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -4221,15 +4211,15 @@ MediaWiki поширюється в надії, що вона буде кори
 # New logging system
 'logentry-delete-delete' => '$1 {{GENDER:$2|вилучив|вилучила}} сторінку $3',
 'logentry-delete-restore' => '$1 {{GENDER:$2|відновив|відновила}} сторінку $3',
-'logentry-delete-event' => '$1 змінив видимість {{PLURAL:$5 запису журнала|$5 записів журналу}} на $3: $4',
-'logentry-delete-revision' => '$1 змінив видимість {{PLURAL:$5 версії|$5 версій}} на сторінці $3: $4',
-'logentry-delete-event-legacy' => '$1 змінив видимість записів журналу подій $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-event-legacy' => '$1 {{GENDER:$2|змінив|змінила}} видимість записів журналу подій $3',
 'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|змінив|змінила}} видимість версій на сторінці $3',
-'logentry-suppress-delete' => '$1 подавив сторінку $3',
-'logentry-suppress-event' => '$1 приховано змінив видимість для {{PLURAL:$5|запису|$5 записів}} журналу на $3: $4',
-'logentry-suppress-revision' => '$1 приховано змінив видимість для {{PLURAL:$5 версії|$5 версій}} на сторінці $3: $4',
-'logentry-suppress-event-legacy' => '$1 приховано змінив видимість записів журналу $3',
-'logentry-suppress-revision-legacy' => '$1 приховано змінив видимість версій на сторінці $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|подавив|подавила}} сторінку $3',
+'logentry-suppress-event' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість для {{PLURAL:$5|$5 запису|$5 записів}} журналу на $3: $4',
+'logentry-suppress-revision' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість для {{PLURAL:$5 версії|$5 версій}} на сторінці $3: $4',
+'logentry-suppress-event-legacy' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість записів журналу $3',
+'logentry-suppress-revision-legacy' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість версій на сторінці $3',
 'revdelete-content-hid' => 'вміст приховано',
 'revdelete-summary-hid' => 'опис редагування приховано',
 'revdelete-uname-hid' => "ім'я користувача приховано",
@@ -4242,8 +4232,8 @@ MediaWiki поширюється в надії, що вона буде кори
 '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 відпатрулював версію $4 сторінки $3',
-'logentry-patrol-patrol-auto' => '$1 автоматично відпатрулював версію $4 сторінки $3',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|відпатрулював|відпатрулювала}} версію $4 сторінки $3',
+'logentry-patrol-patrol-auto' => '$1 автоматично {{GENDER:$2|відпатрулював|відпатрулювала}} версію $4 сторінки $3',
 'logentry-newusers-newusers' => 'Створено обліковий запис $1',
 'logentry-newusers-create' => '$1 — створено обліковий запис',
 'logentry-newusers-create2' => '$1 {{GENDER:$2|створив|створила}} обліковий запис {{GENDER:$4|користувача|користувачки}} $3',
index ca34915..aca471a 100644 (file)
@@ -984,9 +984,9 @@ Nó chưa được lưu!'''",
 Các thay đổi của bạn vẫn chưa được lưu!",
 'continue-editing' => 'Đi đến hộp sửa đổi',
 'previewconflict' => 'Phần xem thử này là kết quả của văn bản trong vùng soạn thảo phía trên và nó sẽ xuất hiện như vậy nếu bạn chọn lưu trang.',
-'session_fail_preview' => "'''Những sửa đổi của bạn chưa được lưu giữ do mất dữ liệu về phiên làm việc.
+'session_fail_preview' => "'''Rất tiếc, những sửa đổi của bạn chưa được lưu giữ do mất dữ liệu về phiên làm việc.'''
 Xin hãy thử lần nữa.
-Nếu vẫn không thành công, hãy thử [[Special:UserLogout|đăng xuất]] rồi đăng nhập lại.'''",
+Nếu vẫn không thành công, hãy thử [[Special:UserLogout|đăng xuất]] rồi đăng nhập lại.",
 'session_fail_preview_html' => "'''Những sửa đổi của bạn chưa được lưu giữ do mất dữ liệu về phiên làm việc.'''
 
 ''Do {{SITENAME}} cho phép dùng mã HTML, trang xem thử được ẩn đi để đề phòng bị tấn công bằng JavaScript.''
@@ -1346,15 +1346,6 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'search-external' => 'Tìm kiếm từ bên ngoài',
 'searchdisabled' => 'Chức năng tìm kiếm tại {{SITENAME}} đã bị tắt. Bạn có tìm kiếm bằng Google trong thời gian này. Chú ý rằng các chỉ mục từ {{SITENAME}} của chúng có thể đã lỗi thời.',
 
-# Quickbar
-'qbsettings' => 'Thanh công cụ',
-'qbsettings-none' => 'Không có',
-'qbsettings-fixedleft' => 'Cố định trái',
-'qbsettings-fixedright' => 'Cố định phải',
-'qbsettings-floatingleft' => 'Nổi bên trái',
-'qbsettings-floatingright' => 'Nổi bên phải',
-'qbsettings-directionality' => 'Cố định, tùy theo hướng viết ngôn ngữ của bạn',
-
 # Preferences page
 'preferences' => 'Tùy chọn',
 'mypreferences' => 'Tùy chọn',
@@ -1911,7 +1902,6 @@ Vì lý do bảo mật, img_auth.php đã bị tắt.',
 'http-read-error' => 'Lỗi đọc HTTP.',
 'http-timed-out' => 'Hết thời gian yêu cầu HTTP.',
 'http-curl-error' => 'Có lỗi khi truy xuất URL: $1',
-'http-host-unreachable' => 'Không thể truy cập URL',
 'http-bad-status' => 'Có vấn đề khi yêu cầu HTTP: $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 2da4ece..6313f30 100644 (file)
@@ -11,6 +11,7 @@
  * @author O
  * @author Reedy
  * @author Wu-chinese.com
+ * @author Yfdyh000
  */
 
 $fallback = 'zh-hans';
@@ -900,14 +901,6 @@ $1",
 'search-external' => '外部搜索',
 'searchdisabled' => '{{SITENAME}}个搜索已禁用。侬可以暂时使用Google搜索,须注意渠拉索引个{{SITENAME}}内容作兴会过时。',
 
-# Quickbar
-'qbsettings' => '快速导航排',
-'qbsettings-none' => '呒',
-'qbsettings-fixedleft' => '左许固定',
-'qbsettings-fixedright' => '右许固定',
-'qbsettings-floatingleft' => '左许氽移',
-'qbsettings-floatingright' => '右许氽移',
-
 # Preferences page
 'preferences' => '偏好',
 'mypreferences' => '个人设置',
@@ -1574,12 +1567,12 @@ Variants for Chinese language
 'autosumm-new' => '新页面:$1',
 
 # Watchlist editor
-'watchlistedit-normal-title' => '编辑监列表',
+'watchlistedit-normal-title' => '编辑监列表',
 
 # Watchlist editing tools
 'watchlisttools-view' => '查看搭界个修改',
 'watchlisttools-edit' => '查看并编辑监控列表',
-'watchlisttools-raw' => '编辑源监控列表',
+'watchlisttools-raw' => '编辑原始监视列表',
 
 # Special:Version
 'version' => '版本',
index a9f40c8..eccac8c 100644 (file)
@@ -377,8 +377,8 @@ $messages = array(
 'tog-shownumberswatching' => '显示监视用户数',
 'tog-oldsig' => '当前签名:',
 'tog-fancysig' => '将签名以wiki文本对待(不产生自动链接)',
-'tog-externaleditor' => '默认使用外部编辑器(供高级用户使用,需要在您的计算机上作出一些特别设置。[//www.mediawiki.org/wiki/Manual:External_editors 更多信息。])',
-'tog-externaldiff' => '默认使用外部差异分析(供高级用户使用,需要在您的计算机上作出一些特别设置。[//www.mediawiki.org/wiki/Manual:External_editors 更多信息。])',
+'tog-externaleditor' => '默认使用外部编辑器(供高级用户使用,需要在您的计算机上特别设置。[//www.mediawiki.org/wiki/Manual:External_editors 更多信息。])',
+'tog-externaldiff' => '默认使用外部版本差异工具(供高级用户使用,需要在您的计算机上做特别设置。[//www.mediawiki.org/wiki/Manual:External_editors 更多信息。])',
 'tog-showjumplinks' => '启用“跳转到”访问链接',
 'tog-uselivepreview' => '使用实时预览(需要JavaScript)(实验功能)',
 'tog-forceeditsummary' => '未输入编辑摘要时提醒我',
@@ -389,14 +389,14 @@ $messages = array(
 'tog-watchlisthideanons' => '在监视列表中隐藏匿名用户',
 'tog-watchlisthidepatrolled' => '在监视列表中隐藏已巡查的编辑',
 'tog-ccmeonemails' => '把我给其他用户发送的电子邮件的副本发送给我',
-'tog-diffonly' => '比较差异时不显示页面内容',
+'tog-diffonly' => '比较版本差异时不显示页面内容',
 'tog-showhiddencats' => '显示隐藏分类',
 'tog-noconvertlink' => '停用链接文字转换',
 'tog-norollbackdiff' => '执行回退后不显示差异',
 
 'underline-always' => '总是使用',
 'underline-never' => '从不使用',
-'underline-default' => '浏览器默认设置',
+'underline-default' => '皮肤或浏览器默认设置',
 
 # Font style option in Special:Preferences
 'editfont-style' => '编辑区字体样式:',
@@ -543,7 +543,7 @@ $messages = array(
 'protect_change' => '更改',
 'protectthispage' => '保护本页',
 'unprotect' => '更改保护',
-'unprotectthispage' => '更改本页面的保护',
+'unprotectthispage' => '更改本页面保护设置',
 'newpage' => '新页面',
 'talkpage' => '讨论本页',
 'talkpagelinktext' => '讨论',
@@ -561,7 +561,7 @@ $messages = array(
 'templatepage' => '查看模板页面',
 'viewhelppage' => '查看帮助页面',
 'categorypage' => '查看分类页面',
-'viewtalkpage' => '查看讨论页面',
+'viewtalkpage' => '查看讨论',
 'otherlanguages' => '其他语言',
 'redirectedfrom' => '(重定向自$1)',
 'redirectpagesub' => '重定向页',
@@ -571,9 +571,9 @@ $messages = array(
 'jumpto' => '跳转至:',
 'jumptonavigation' => '导航',
 'jumptosearch' => '搜索',
-'view-pool-error' => '抱歉,服务器超负荷运转。
+'view-pool-error' => '抱歉,服务器目前正超负荷运转。
 过多用户正尝试查看本页面。
-请在再次尝试访问本页面之前稍等片刻
+请稍等片刻后再次尝试访问本页面
 
 $1',
 'pool-timeout' => '等待锁超时',
@@ -595,8 +595,8 @@ $1',
 'mainpage' => '首页',
 'mainpage-description' => '首页',
 'policy-url' => 'Project:方针',
-'portal' => '社å\8cºä¸\93页',
-'portal-url' => 'Project:社å\8cºä¸\93页',
+'portal' => '社å\8cºä¸»页',
+'portal-url' => 'Project:社å\8cºä¸»页',
 'privacy' => '隐私政策',
 'privacypage' => 'Project:隐私权政策',
 
@@ -613,7 +613,7 @@ $1',
 'youhavenewmessages' => '你有$1($2)。',
 'newmessageslink' => '新信息',
 'newmessagesdifflink' => '最后更改',
-'youhavenewmessagesfromusers' => 'ä½ æ\9c\89æ\9d¥è\87ª{{PLURAL:$3|å\85¶ä»\96用户|$3个用户}}的$1($2)。',
+'youhavenewmessagesfromusers' => 'ä½ æ\9c\89æ\9d¥è\87ª{{PLURAL:$3|å\8f¦ä¸\80ä½\8d用户|$3个用户}}的$1($2)。',
 'youhavenewmessagesmanyusers' => '你有来自多个用户的$1($2)。',
 'newmessageslinkplural' => '{{PLURAL:$1|一条新信息|新信息}}',
 'newmessagesdifflinkplural' => '最后{{PLURAL:$1|更改}}',
@@ -645,7 +645,7 @@ $1',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => '页面',
-'nstab-user' => '用户页',
+'nstab-user' => '用户页',
 'nstab-media' => '媒体页面',
 'nstab-special' => '特殊页面',
 'nstab-project' => '项目页面',
@@ -761,8 +761,8 @@ $2',
 'remembermypassword' => '在该浏览器保存我的登录状态(最长$1日)',
 'securelogin-stick-https' => '登录后继续使用HTTPS连接',
 'yourdomainname' => '您的域名:',
-'password-change-forbidden' => '你不能在本wiki更改密码。',
-'externaldberror' => '这可能是由于验证数据库错误或您被禁止更新您的外部账号。',
+'password-change-forbidden' => '您不能在本wiki上更改密码。',
+'externaldberror' => '验证数据库出错或您被禁止更新您的外部账号。',
 'login' => '登录',
 'nav-login-createaccount' => '登录/创建账户',
 'loginprompt' => '你必须启用Cookies才能登录{{SITENAME}}。',
@@ -1335,17 +1335,8 @@ $1",
 'search-external' => '外部搜索',
 'searchdisabled' => '{{SITENAME}}的搜索已被禁用。您可以暂时使用Google进行搜索,须注意他们索引的{{SITENAME}}内容可能会过时。',
 
-# Quickbar
-'qbsettings' => '快速导航栏',
-'qbsettings-none' => '无',
-'qbsettings-fixedleft' => '左侧固定',
-'qbsettings-fixedright' => '右侧固定',
-'qbsettings-floatingleft' => '左侧漂移',
-'qbsettings-floatingright' => '右侧漂移',
-'qbsettings-directionality' => '根据您的语言文本方向固定位置',
-
 # Preferences page
-'preferences' => '系统设置',
+'preferences' => '参数设置',
 'mypreferences' => '系统设置',
 'prefs-edits' => '编辑数:',
 'prefsnologin' => '未登录',
@@ -1406,7 +1397,7 @@ $1",
 'timezoneregion-europe' => '欧洲',
 'timezoneregion-indian' => '印度洋',
 'timezoneregion-pacific' => '太平洋',
-'allowemail' => '接受来自其他用户的邮件',
+'allowemail' => '接受来自其他用户的电子邮件',
 'prefs-searchoptions' => '搜索',
 'prefs-namespaces' => '名字空间',
 'defaultns' => '否则在这些名字空间中搜索:',
@@ -1867,7 +1858,6 @@ $1',
 'http-read-error' => 'HTTP读取错误。',
 'http-timed-out' => 'HTTP请求已过时。',
 'http-curl-error' => '撷取URL时出错:$1',
-'http-host-unreachable' => '无法到达URL。',
 'http-bad-status' => '进行HTTP请求时出现问题:$1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -2213,7 +2203,7 @@ $1',
 'emailpage' => '电邮联系',
 'emailpagetext' => '你可以使用下面的表格发送电子邮件信息至该{{GENDER:$1|用户}}。你在[[Special:Preferences|系统设置]]中输入的电子邮件地址将显示为邮件的“发件人”地址,所以该用户将可以直接回复你。',
 'usermailererror' => 'Mail 对象返回错误:',
-'defemailsubject' => '{{SITENAME}}来自用户“$1”的电子邮件',
+'defemailsubject' => '来自{{SITENAME}}用户“$1”的电子邮件',
 'usermaildisabled' => '用户电子邮件停用',
 'usermaildisabledtext' => '你不能发送电子邮件至本wiki的其他用户',
 'noemailtitle' => '无电子邮件地址',
@@ -2442,7 +2432,7 @@ $UNWATCHURL
 'viewdeletedpage' => '查看被删页面',
 'undeletepagetext' => '以下{{PLURAL:$1|页面|$1个页面}}已被删除,但依然在归档中并可以被恢复。归档可能会被定时清理。',
 'undelete-fieldset-title' => '恢复版本',
-'undeleteextrahelp' => "恢复整个编辑历史时,请清除所有复选框后点击'''''{{int:undeletebtn}}'''''。恢复特定版本时,请选择相应版本前的复选框后点击'''''{{int:undeletebtn}}'''''。",
+'undeleteextrahelp' => "要恢复该页面的整个历史记录时,不选中任何复选框直接点击'''''{{int:undeletebtn}}'''''。要选择性地恢复部分版本时,请选中相应版本前的复选框再点击'''''{{int:undeletebtn}}'''''。",
 'undeleterevisions' => '$1版本存档',
 'undeletehistory' => '如果您恢复了该页面,所有版本都会被恢复到修订历史中。
 如果本页删除后有一个同名的新页面建立,被恢复的版本将会出现在先前的历史中。',
index 4400c88..9bd56c9 100644 (file)
@@ -1284,15 +1284,6 @@ $1",
 'search-external' => '外部搜索',
 'searchdisabled' => '{{SITENAME}}由於性能方面的原因,全文搜索已被暫時停用。您可以暫時透過Google搜索。請留意他們的索引可能會過時。',
 
-# Quickbar
-'qbsettings' => '快速導航條',
-'qbsettings-none' => '無',
-'qbsettings-fixedleft' => '左側固定',
-'qbsettings-fixedright' => '右側固定',
-'qbsettings-floatingleft' => '左側漂移',
-'qbsettings-floatingright' => '右側漂移',
-'qbsettings-directionality' => '固定,取決於你的語言腳本的方向性',
-
 # Preferences page
 'preferences' => '偏好設定',
 'mypreferences' => '偏好設定',
@@ -1826,7 +1817,6 @@ $1',
 'http-read-error' => 'HTTP讀取錯誤。',
 'http-timed-out' => 'HTTP請求已過時。',
 'http-curl-error' => '擷取URL時出錯:$1',
-'http-host-unreachable' => '無法到達URL。',
 'http-bad-status' => '進行HTTP請求時出現問題:$1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -2230,7 +2220,7 @@ Template:消除歧義',
 'notanarticle' => '不是頁面',
 'notvisiblerev' => '上次由不同用戶所作的修訂版本已經刪除',
 'watchnochange' => '在顯示的時間段內您所監視的頁面沒有更改。',
-'watchlist-details' => 'ä¸\8då\8c\85å\90«è¨\8eè«\96é \81ï¼\8cæ\9c\89 $1 é \81å\9c¨æ\82¨ç\9a\84ç\9b£è¦\96å\88\97表ä¸\8a。',
+'watchlist-details' => 'ä¸\8då\8c\85å\90«è¨\8eè«\96é \81ï¼\8cæ\82¨ç\9a\84ç\9b£è¦\96å\88\97表ä¸\8aæ\9c\89 $1 å\80\8bé \81é\9d¢。',
 'wlheader-enotif' => '* 已經啟動電子郵件通知功能。',
 'wlheader-showupdated' => "* 在{{GENDER:|你|妳|你}}上次檢視後有被修改過的頁面會顯示為'''粗體'''",
 'watchmethod-recent' => '檢查被監視頁面的最近編輯',
index c4705d8..e932b5c 100644 (file)
@@ -1,5 +1,6 @@
 {
-       "--title": "MediaWiki Code Documentation",
+       "--title": "MediaWiki core - Documentation",
+       "--footer": "Documentation for MediaWiki core. Generated on {DATE} by {JSDUCK} {VERSION}.",
        "--categories": "./categories.json",
        "--meta-tags": "./MetaTags.rb",
        "--warnings": ["-no_doc"],
@@ -15,4 +16,4 @@
                "../../resources/mediawiki.api",
                "../../resources/jquery/jquery.localize.js"
        ]
-}
\ No newline at end of file
+}
index 8361b1b..a42928e 100644 (file)
@@ -943,19 +943,11 @@ $wgMessageStructure = array(
                'search-external',
                'searchdisabled',
                'googlesearch',
+               'search-error',
        ),
        'opensearch' => array(
                'opensearch-desc',
        ),
-       'quickbar' => array(
-               'qbsettings',
-               'qbsettings-none',
-               'qbsettings-fixedleft',
-               'qbsettings-fixedright',
-               'qbsettings-floatingleft',
-               'qbsettings-floatingright',
-               'qbsettings-directionality',
-       ),
        'preferences' => array(
                'preferences',
                'preferences-summary',
@@ -3878,7 +3870,6 @@ XHTML id names.",
        'diffs'               => 'Diffs',
        'search'              => 'Search results',
        'opensearch'          => 'OpenSearch description',
-       'quickbar'            => 'Quickbar',
        'preferences'         => 'Preferences page',
        'preferences-email'   => 'User preference: email validation using jQuery',
        'userrights'          => 'User rights',
index 62596b2..fbba977 100644 (file)
@@ -98,7 +98,10 @@ foreach ( $mmfl['setupFiles'] as $fileName ) {
        if ( empty( $mmfl['quiet'] ) ) {
                fwrite( STDERR, "Loading data from $fileName\n" );
        }
-       include_once( $fileName );
+       if ( !include_once( $fileName ) ) {
+               fwrite( STDERR, "Unable to read $fileName\n" );
+               exit( 1 );
+       }
 }
 fwrite( STDERR, "\n" );
 $s =
index fbd428f..cccc715 100755 (executable)
@@ -1,2 +1,17 @@
-#!/usr/bin/env sh
-jsduck --config=$(cd $(dirname $0)/..; pwd)/maintenance/jsduck/config.json && echo 'JSDuck execution finished.'
+#!/usr/bin/env bash
+
+JSDUCK_MWVERSION=master
+if [[ "$1" == "--version" && "$2" != "" ]]
+then
+       JSDUCK_MWVERSION="$2"
+elif [[ "$*" != "" ]]
+then
+       echo "Usage $0: [--version <mediawiki version>]"
+       echo
+       exit 1
+fi
+
+jsduck \
+--config=$(cd $(dirname $0)/..; pwd)/maintenance/jsduck/config.json \
+--footer="Documentation for MediaWiki core ($JSDUCK_MWVERSION). Generated on {DATE} by {JSDUCK} {VERSION}." \
+&& echo 'JSDuck execution finished.'
index 0da9d87..6c7e697 100644 (file)
@@ -362,7 +362,7 @@ var mw = ( function ( $, undefined ) {
                         *             'dependencies': ['required.foo', 'bar.also', ...], (or) function () {}
                         *             'group': 'somegroup', (or) null,
                         *             'source': 'local', 'someforeignwiki', (or) null
-                        *             'state': 'registered', 'loading', 'loaded', 'ready', 'error' or 'missing'
+                        *             'state': 'registered', 'loaded', 'loading', 'ready', 'error' or 'missing'
                         *             'script': ...,
                         *             'style': ...,
                         *             'messages': { 'key': 'value' },
@@ -392,7 +392,9 @@ var mw = ( function ( $, undefined ) {
                                // Selector cache for the marker element. Use getMarker() to get/use the marker!
                                $marker = null,
                                // Buffer for addEmbeddedCSS.
-                               cssBuffer = '';
+                               cssBuffer = '',
+                               // Callbacks for addEmbeddedCSS.
+                               cssCallbacks = $.Callbacks();
 
                        /* Private methods */
 
@@ -469,10 +471,15 @@ var mw = ( function ( $, undefined ) {
                        /**
                         * @param {string} [cssText=cssBuffer] If called without cssText,
                         * the internal buffer will be inserted instead.
+                        * @param {Function} [callback]
                         */
-                       function addEmbeddedCSS( cssText ) {
+                       function addEmbeddedCSS( cssText, callback ) {
                                var $style, styleEl;
 
+                               if ( callback ) {
+                                       cssCallbacks.add( callback );
+                               }
+
                                // Yield once before inserting the <style> tag. There are likely
                                // more calls coming up which we can combine this way.
                                // Appending a stylesheet and waiting for the browser to repaint
@@ -530,11 +537,14 @@ var mw = ( function ( $, undefined ) {
                                                } else {
                                                        styleEl.appendChild( document.createTextNode( String( cssText ) ) );
                                                }
+                                               cssCallbacks.fire().empty();
                                                return;
                                        }
                                }
 
                                $( addStyleTag( cssText, getMarker() ) ).data( 'ResourceLoaderDynamicStyleTag', true );
+
+                               cssCallbacks.fire().empty();
                        }
 
                        /**
@@ -879,7 +889,8 @@ var mw = ( function ( $, undefined ) {
                         * @param {string} module Module name to execute
                         */
                        function execute( module ) {
-                               var key, value, media, i, urls, script, markModuleReady, nestedAddScript;
+                               var key, value, media, i, urls, cssHandle, checkCssHandles,
+                                       cssHandlesRegistered = false;
 
                                if ( registry[module] === undefined ) {
                                        throw new Error( 'Module has not been registered yet: ' + module );
@@ -888,7 +899,7 @@ var mw = ( function ( $, undefined ) {
                                } else if ( registry[module].state === 'loading' ) {
                                        throw new Error( 'Module has not completed loading yet: ' + module );
                                } else if ( registry[module].state === 'ready' ) {
-                                       throw new Error( 'Module has already been loaded: ' + module );
+                                       throw new Error( 'Module has already been executed: ' + module );
                                }
 
                                /**
@@ -906,6 +917,80 @@ var mw = ( function ( $, undefined ) {
                                        el.href = url;
                                }
 
+                               function runScript() {
+                                       var script, markModuleReady, nestedAddScript;
+                                       try {
+                                               script = registry[module].script;
+                                               markModuleReady = function () {
+                                                       registry[module].state = 'ready';
+                                                       handlePending( module );
+                                               };
+                                               nestedAddScript = function ( arr, callback, async, i ) {
+                                                       // Recursively call addScript() in its own callback
+                                                       // for each element of arr.
+                                                       if ( i >= arr.length ) {
+                                                               // We're at the end of the array
+                                                               callback();
+                                                               return;
+                                                       }
+
+                                                       addScript( arr[i], function () {
+                                                               nestedAddScript( arr, callback, async, i + 1 );
+                                                       }, async );
+                                               };
+
+                                               if ( $.isArray( script ) ) {
+                                                       nestedAddScript( script, markModuleReady, registry[module].async, 0 );
+                                               } else if ( $.isFunction( script ) ) {
+                                                       registry[module].state = 'ready';
+                                                       script( $ );
+                                                       handlePending( module );
+                                               }
+                                       } catch ( e ) {
+                                               // This needs to NOT use mw.log because these errors are common in production mode
+                                               // and not in debug mode, such as when a symbol that should be global isn't exported
+                                               log( 'Exception thrown by ' + module + ': ' + e.message, e );
+                                               registry[module].state = 'error';
+                                               handlePending( module );
+                                       }
+                               }
+
+                               // This used to be inside runScript, but since that is now fired asychronously
+                               // (after CSS is loaded) we need to set it here right away. It is crucial that
+                               // when execute() is called this is set synchronously, otherwise modules will get
+                               // executed multiple times as the registry will state that it isn't loading yet.
+                               registry[module].state = 'loading';
+
+                               // Add localizations to message system
+                               if ( $.isPlainObject( registry[module].messages ) ) {
+                                       mw.messages.set( registry[module].messages );
+                               }
+
+                               // Make sure we don't run the scripts until all (potentially asynchronous)
+                               // stylesheet insertions have completed.
+                               ( function () {
+                                       var pending = 0;
+                                       checkCssHandles = function () {
+                                               // cssHandlesRegistered ensures we don't take off too soon, e.g. when
+                                               // one of the cssHandles is fired while we're still creating more handles.
+                                               if ( cssHandlesRegistered && pending === 0 && runScript ) {
+                                                       runScript();
+                                                       runScript = undefined; // Revoke
+                                               }
+                                       };
+                                       cssHandle = function () {
+                                               var check = checkCssHandles;
+                                               pending++;
+                                               return function () {
+                                                       if (check) {
+                                                               pending--;
+                                                               check();
+                                                               check = undefined; // Revoke
+                                                       }
+                                               };
+                                       };
+                               }() );
+
                                // Process styles (see also mw.loader.implement)
                                // * back-compat: { <media>: css }
                                // * back-compat: { <media>: [url, ..] }
@@ -924,7 +1009,7 @@ var mw = ( function ( $, undefined ) {
                                                                // Strings are pre-wrapped in "@media". The media-type was just ""
                                                                // (because it had to be set to something).
                                                                // This is one of the reasons why this format is no longer used.
-                                                               addEmbeddedCSS( value );
+                                                               addEmbeddedCSS( value, cssHandle() );
                                                        } else {
                                                                // back-compat: { <media>: [url, ..] }
                                                                media = key;
@@ -941,7 +1026,7 @@ var mw = ( function ( $, undefined ) {
                                                                        addLink( media, value[i] );
                                                                } else if ( key === 'css' ) {
                                                                        // { "css": [css, ..] }
-                                                                       addEmbeddedCSS( value[i] );
+                                                                       addEmbeddedCSS( value[i], cssHandle() );
                                                                }
                                                        }
                                                // Not an array, but a regular object
@@ -958,47 +1043,9 @@ var mw = ( function ( $, undefined ) {
                                        }
                                }
 
-                               // Add localizations to message system
-                               if ( $.isPlainObject( registry[module].messages ) ) {
-                                       mw.messages.set( registry[module].messages );
-                               }
-
-                               // Execute script
-                               try {
-                                       script = registry[module].script;
-                                       markModuleReady = function () {
-                                               registry[module].state = 'ready';
-                                               handlePending( module );
-                                       };
-                                       nestedAddScript = function ( arr, callback, async, i ) {
-                                               // Recursively call addScript() in its own callback
-                                               // for each element of arr.
-                                               if ( i >= arr.length ) {
-                                                       // We're at the end of the array
-                                                       callback();
-                                                       return;
-                                               }
-
-                                               addScript( arr[i], function () {
-                                                       nestedAddScript( arr, callback, async, i + 1 );
-                                               }, async );
-                                       };
-
-                                       if ( $.isArray( script ) ) {
-                                               registry[module].state = 'loading';
-                                               nestedAddScript( script, markModuleReady, registry[module].async, 0 );
-                                       } else if ( $.isFunction( script ) ) {
-                                               registry[module].state = 'ready';
-                                               script( $ );
-                                               handlePending( module );
-                                       }
-                               } catch ( e ) {
-                                       // This needs to NOT use mw.log because these errors are common in production mode
-                                       // and not in debug mode, such as when a symbol that should be global isn't exported
-                                       log( 'Exception thrown by ' + module + ': ' + e.message, e );
-                                       registry[module].state = 'error';
-                                       handlePending( module );
-                               }
+                               // Kick off.
+                               cssHandlesRegistered = true;
+                               checkCssHandles();
                        }
 
                        /**
index 5211b0d..1bd7430 100644 (file)
                                $link.attr( 'title', tooltip );
                        }
 
-                       // Some skins don't have any portlets
-                       // just add it to the bottom of their 'sidebar' element as a fallback
-                       switch ( mw.config.get( 'skin' ) ) {
-                       case 'standard':
-                               $( '#quickbar' ).append( $link.after( '<br/>' ) );
-                               return $link[0];
-                       case 'nostalgia':
-                               $( '#searchform' ).before( $link ).before( ' &#124; ' );
-                               return $link[0];
-                       default: // Skins like chick, modern, monobook, myskin, simple, vector...
-
-                               // Select the specified portlet
-                               $portlet = $( '#' + portlet );
-                               if ( $portlet.length === 0 ) {
-                                       return null;
-                               }
-                               // Select the first (most likely only) unordered list inside the portlet
-                               $ul = $portlet.find( 'ul' ).eq( 0 );
-
-                               // If it didn't have an unordered list yet, create it
-                               if ( $ul.length === 0 ) {
-
-                                       $ul = $( '<ul>' );
+                       // Select the specified portlet
+                       $portlet = $( '#' + portlet );
+                       if ( $portlet.length === 0 ) {
+                               return null;
+                       }
+                       // Select the first (most likely only) unordered list inside the portlet
+                       $ul = $portlet.find( 'ul' ).eq( 0 );
 
-                                       // If there's no <div> inside, append it to the portlet directly
-                                       if ( $portlet.find( 'div:first' ).length === 0 ) {
-                                               $portlet.append( $ul );
-                                       } else {
-                                               // otherwise if there's a div (such as div.body or div.pBody)
-                                               // append the <ul> to last (most likely only) div
-                                               $portlet.find( 'div' ).eq( -1 ).append( $ul );
-                                       }
-                               }
-                               // Just in case..
-                               if ( $ul.length === 0 ) {
-                                       return null;
-                               }
+                       // If it didn't have an unordered list yet, create it
+                       if ( $ul.length === 0 ) {
 
-                               // Unhide portlet if it was hidden before
-                               $portlet.removeClass( 'emptyPortlet' );
+                               $ul = $( '<ul>' );
 
-                               // Wrap the anchor tag in a list item (and a span if $portlet is a Vector tab)
-                               // and back up the selector to the list item
-                               if ( $portlet.hasClass( 'vectorTabs' ) ) {
-                                       $item = $link.wrap( '<li><span></span></li>' ).parent().parent();
+                               // If there's no <div> inside, append it to the portlet directly
+                               if ( $portlet.find( 'div:first' ).length === 0 ) {
+                                       $portlet.append( $ul );
                                } else {
-                                       $item = $link.wrap( '<li></li>' ).parent();
+                                       // otherwise if there's a div (such as div.body or div.pBody)
+                                       // append the <ul> to last (most likely only) div
+                                       $portlet.find( 'div' ).eq( -1 ).append( $ul );
                                }
+                       }
+                       // Just in case..
+                       if ( $ul.length === 0 ) {
+                               return null;
+                       }
 
-                               // Implement the properties passed to the function
-                               if ( id ) {
-                                       $item.attr( 'id', id );
-                               }
-                               if ( accesskey ) {
-                                       $link.attr( 'accesskey', accesskey );
-                                       tooltip += ' [' + accesskey + ']';
-                                       $link.attr( 'title', tooltip );
-                               }
-                               if ( accesskey && tooltip ) {
-                                       util.updateTooltipAccessKeys( $link );
-                               }
+                       // Unhide portlet if it was hidden before
+                       $portlet.removeClass( 'emptyPortlet' );
 
-                               // Where to put our node ?
-                               // - nextnode is a DOM element (was the only option before MW 1.17, in wikibits.js)
-                               if ( nextnode && nextnode.parentNode === $ul[0] ) {
-                                       $(nextnode).before( $item );
+                       // Wrap the anchor tag in a list item (and a span if $portlet is a Vector tab)
+                       // and back up the selector to the list item
+                       if ( $portlet.hasClass( 'vectorTabs' ) ) {
+                               $item = $link.wrap( '<li><span></span></li>' ).parent().parent();
+                       } else {
+                               $item = $link.wrap( '<li></li>' ).parent();
+                       }
 
-                               // - nextnode is a CSS selector for jQuery
-                               } else if ( typeof nextnode === 'string' && $ul.find( nextnode ).length !== 0 ) {
-                                       $ul.find( nextnode ).eq( 0 ).before( $item );
+                       // Implement the properties passed to the function
+                       if ( id ) {
+                               $item.attr( 'id', id );
+                       }
+                       if ( accesskey ) {
+                               $link.attr( 'accesskey', accesskey );
+                               tooltip += ' [' + accesskey + ']';
+                               $link.attr( 'title', tooltip );
+                       }
+                       if ( accesskey && tooltip ) {
+                               util.updateTooltipAccessKeys( $link );
+                       }
 
-                               // If the jQuery selector isn't found within the <ul>,
-                               // or if nextnode was invalid or not passed at all,
-                               // then just append it at the end of the <ul> (this is the default behavior)
-                               } else {
-                                       $ul.append( $item );
-                               }
+                       // Where to put our node ?
+                       // - nextnode is a DOM element (was the only option before MW 1.17, in wikibits.js)
+                       if ( nextnode && nextnode.parentNode === $ul[0] ) {
+                               $(nextnode).before( $item );
 
+                       // - nextnode is a CSS selector for jQuery
+                       } else if ( typeof nextnode === 'string' && $ul.find( nextnode ).length !== 0 ) {
+                               $ul.find( nextnode ).eq( 0 ).before( $item );
 
-                               return $item[0];
+                       // If the jQuery selector isn't found within the <ul>,
+                       // or if nextnode was invalid or not passed at all,
+                       // then just append it at the end of the <ul> (this is the default behavior)
+                       } else {
+                               $ul.append( $item );
                        }
+
+                       return $item[0];
                },
 
                /**
index deff7e6..39302bc 100644 (file)
  * This function will be deleted after it's used, so do not expand it to be
  * generally useful beyond startup.
  *
- * MediaWiki & jQuery compatibility:
- * - Internet Explorer 6.0+
- * - Firefox 10+
- * - Safari 5.0+
- * - Opera 11+
- * - Chrome
+ * See also:
+ * - https://www.mediawiki.org/wiki/Compatibility#Browser
+ * - http://jquerymobile.com/gbs/
+ * - http://jquery.com/browser-support/
  */
 
 /*jshint unused: false */
-function isCompatible() {
-       // IE < 6.0
-       if ( navigator.appVersion.indexOf( 'MSIE' ) !== -1
-               && parseFloat( navigator.appVersion.split( 'MSIE' )[1] ) < 6 )
-       {
-               return false;
+function isCompatible( ua ) {
+       if ( ua === undefined ) {
+               ua = navigator.userAgent;
        }
-       return true;
+
+       // MediaWiki JS or jQuery is known to have issues with:
+       return !(
+               // Internet Explorer < 6
+               ( ua.indexOf( 'MSIE' ) !== -1 && parseFloat( ua.split( 'MSIE' )[1] ) < 6 ) ||
+               // Firefox < 4
+               ( ua.indexOf( 'Firefox/' ) !== -1 && parseFloat( ua.split( 'Firefox/' )[1] ) < 4 ) ||
+               // BlackBerry < 6
+               ua.match( /BlackBerry[^\/]*\/[1-5]\./ ) ||
+               // Open WebOS < 1.5
+               ua.match( /webOS\/1\.[0-4]/ ) ||
+               // Anything PlayStation based.
+               ua.match( /PlayStation/i ) ||
+               // Any Symbian based browsers
+               ua.match( /SymbianOS|Series60/ ) ||
+               // Any NetFront based browser
+               ua.match( /NetFront/ ) ||
+               // Opera Mini < 7
+               ua.match( /Opera Mini\/[0-6]\./ )
+       );
 }
 
 /**
index 264ba69..4341891 100644 (file)
@@ -48,9 +48,6 @@ $wgAutoloadClasses += array(
        //db
        'ORMTableTest' => "$testDir/phpunit/includes/db/ORMTableTest.php",
 
-       //Selenium
-       'SeleniumTestConstants' => "$testDir/selenium/SeleniumTestConstants.php",
-
        # tests/phpunit/includes/api
        'ApiFormatTestBase' => "$testDir/phpunit/includes/api/format/ApiFormatTestBase.php",
        'ApiTestCase' => "$testDir/phpunit/includes/api/ApiTestCase.php",
index 0165cb2..1d4102c 100644 (file)
@@ -363,6 +363,16 @@ Italics and bold
 
 !! end
 
+# this example taken from the simple/Moon article
+!! test
+Italics and possessives
+!! input
+obtained by ''[[Lunar Prospector]]'''s gamma-ray spectrometer
+!! result
+<p>obtained by <i><a href="/index.php?title=Lunar_Prospector&amp;action=edit&amp;redlink=1" class="new" title="Lunar Prospector (page does not exist)">Lunar Prospector</a>'</i>s gamma-ray spectrometer
+</p>
+!! end
+
 ###
 ### 2-quote opening sequence tests
 ###
@@ -397,13 +407,26 @@ Italics and bold: 2-quote opening sequence: (2,4)
 
 
 !! test
-Italics and bold: 2-quote opening sequence: (2,5)
+Italics and bold: 2-quote opening sequence: (2,5) (php)
+!! options
+php
 !! input
 ''foo'''''
 !! result
 <p><i>foo</i>
 </p>
 !!end
+# The PHP parser strips the empty tags out for giggles; parsoid doesn't.
+!! test
+Italics and bold: 2-quote opening sequence: (2,5) (parsoid)
+!! options
+parsoid
+!! input
+''foo'''''
+!! result
+<p><i>foo</i><b></b>
+</p>
+!!end
 
 
 ###
@@ -441,13 +464,26 @@ Italics and bold: 3-quote opening sequence: (3,4)
 
 
 !! test
-Italics and bold: 3-quote opening sequence: (3,5)
+Italics and bold: 3-quote opening sequence: (3,5) (php)
+!! options
+php
 !! input
 '''foo'''''
 !! result
 <p><b>foo</b>
 </p>
 !!end
+# The PHP parser strips the empty tags out for giggles; parsoid doesn't.
+!! test
+Italics and bold: 3-quote opening sequence: (3,5) (parsoid)
+!! options
+parsoid
+!! input
+'''foo'''''
+!! result
+<p><b>foo<i></i></b>
+</p>
+!!end
 
 
 ###
@@ -485,13 +521,26 @@ Italics and bold: 4-quote opening sequence: (4,4)
 
 
 !! test
-Italics and bold: 4-quote opening sequence: (4,5)
+Italics and bold: 4-quote opening sequence: (4,5) (php)
+!! options
+php
 !! input
 ''''foo'''''
 !! result
 <p>'<b>foo</b>
 </p>
 !!end
+# The PHP parser strips the empty tags out for giggles; parsoid doesn't.
+!! test
+Italics and bold: 4-quote opening sequence: (4,5) (parsoid)
+!! options
+parsoid
+!! input
+''''foo'''''
+!! result
+<p>'<b>foo<i></i></b>
+</p>
+!!end
 
 
 ###
@@ -499,13 +548,26 @@ Italics and bold: 4-quote opening sequence: (4,5)
 ###
 
 !! test
-Italics and bold: 5-quote opening sequence: (5,2)
+Italics and bold: 5-quote opening sequence: (5,2) (php)
+!! options
+php
 !! input
 '''''foo''
 !! result
 <p><b><i>foo</i></b>
 </p>
 !!end
+# Parsoid reverses the nesting order, compared to the PHP parser
+!! test
+Italics and bold: 5-quote opening sequence: (5,2) (parsoid)
+!! options
+parsoid
+!! input
+'''''foo''
+!! result
+<p><i><b>foo</b></i>
+</p>
+!!end
 
 
 !! test
@@ -571,23 +633,49 @@ Italics and bold: multiple quote sequences: (2,4,4)
 
 
 !! test
-Italics and bold: multiple quote sequences: (3,4,2)
+Italics and bold: multiple quote sequences: (3,4,2) (php)
+!! options
+php
 !! input
 '''foo''''bar''
 !! result
 <p><b>foo'</b>bar
 </p>
 !!end
+# The PHP parser strips the empty tags out for giggles; parsoid doesn't.
+!! test
+Italics and bold: multiple quote sequences: (3,4,2) (parsoid)
+!! options
+parsoid
+!! input
+'''foo''''bar''
+!! result
+<p><b>foo'</b>bar<i></i>
+</p>
+!!end
 
 
 !! test
-Italics and bold: multiple quote sequences: (3,4,3)
+Italics and bold: multiple quote sequences: (3,4,3) (php)
+!! options
+php
 !! input
 '''foo''''bar'''
 !! result
 <p><b>foo'</b>bar
 </p>
 !!end
+# The PHP parser strips the empty tags out for giggles; parsoid doesn't.
+!! test
+Italics and bold: multiple quote sequences: (3,4,3) (parsoid)
+!! options
+parsoid
+!! input
+'''foo''''bar'''
+!! result
+<p><b>foo'</b>bar<b></b>
+</p>
+!!end
 
 ###
 ### other quote tests
@@ -622,14 +710,32 @@ Italics and bold: other quote tests: (3,2,3,2)
 !!end
 
 
+# The Parsoid team believes the PHP parser's output on this test is wrong.
+# It only checks for convert-to-bold-on-single-character-word when the word
+# matches with a bold tag ("'''") that is *odd* in the list of quote tokens.
+# This means that the bold token in position 2 (0-indexed) gets converted by
+# parsoid, but doesn't get changed by the PHP parser.
 !! test
-Italics and bold: other quote tests: (3,2,3,3)
+Italics and bold: other quote tests: (3,2,3,3) (php)
+!! options
+php
 !! input
 '''this is about ''foo'''s family'''
 !! result
 <p>'<i>this is about </i>foo<b>s family</b>
 </p>
 !!end
+# This is the output the Parsoid team believes to be correct.
+!! test
+Italics and bold: other quote tests: (3,2,3,3) (parsoid)
+!! options
+parsoid
+!! input
+'''this is about ''foo'''s family'''
+!! result
+<p><b>this is about <i>foo'</i>s family</b>
+</p>
+!!end
 
 
 !! test
@@ -2071,8 +2177,13 @@ Definition Lists: Nesting: Test 4
 !! end
 
 
+## The Parsoid team believes the following three test exposes a
+## bug in the PHP parser.  (Parsoid team thinks the PHP parser is
+## wrong to close the <dl> after the <dt> containing the <ul>.)
 !! test
-Definition Lists: Mixed Lists: Test 1
+Definition Lists: Mixed Lists: Test 1 (php)
+!! options
+php
 !! input
 :;* foo
 ::* bar
@@ -2087,7 +2198,19 @@ Definition Lists: Mixed Lists: Test 1
 </dd></dl>
 
 !! end
-
+!! test
+Definition Lists: Mixed Lists: Test 1 (parsoid)
+!! options
+parsoid
+!! input
+:;* foo
+::* bar
+:; baz
+!! result
+<dl><dd><dl><dt><ul><li> foo
+</li></ul></dt><dd><ul><li> bar
+</li></ul></dd><dt> baz</dt></dl></dd></dl>
+!! end
 
 !! test
 Definition Lists: Mixed Lists: Test 2
@@ -2219,9 +2342,15 @@ Definition Lists: Mixed Lists: Test 10
 
 !! end
 
+# The Parsoid team disagrees with the PHP parser's seemingly-random
+# rules regarding dd/dt on the next two tests.  Parsoid is more
+# consistent, and recognizes the shared nesting and keeps the
+# still-open tags around until the nesting is complete.
 
 !! test
-Definition Lists: Mixed Lists: Test 11
+Definition Lists: Mixed Lists: Test 11 (php)
+!! options
+php
 !! input
 *#*#;*;;foo :bar
 *#*#;boo :baz
@@ -2239,10 +2368,23 @@ Definition Lists: Mixed Lists: Test 11
 </li></ul>
 
 !! end
+!! test
+Definition Lists: Mixed Lists: Test 11 (parsoid)
+!! options
+parsoid
+!! input
+*#*#;*;;foo :bar
+*#*#;boo :baz
+!! result
+<ul><li><ol><li><ul><li><ol><li><dl><dt><ul><li><dl><dt><dl><dt>foo&nbsp;</dt><dd>bar
+</dd></dl></dt></dl></li></ul></dt><dt>boo&nbsp;</dt><dd>baz</dd></dl></li></ol></li></ul></li></ol></li></ul>
+!! end
 
 
 !! test
-Definition Lists: Weird Ones: Test 1
+Definition Lists: Weird Ones: Test 1 (php)
+!! options
+php
 !! input
 *#;*::;; foo : bar (who uses this?)
 !! result
@@ -2256,6 +2398,15 @@ Definition Lists: Weird Ones: Test 1
 </li></ol>
 </li></ul>
 
+!! end
+!! test
+Definition Lists: Weird Ones: Test 1 (parsoid)
+!! options
+parsoid
+!! input
+*#;*::;; foo : bar (who uses this?)
+!! result
+<ul><li><ol><li><dl><dt><ul><li><dl><dd><dl><dd><dl><dt><dl><dt> foo&nbsp;</dt><dd> bar (who uses this?)</dd></dl></dt></dl></dd></dl></dd></dl></li></ul></dt></dl></li></ol></li></ul>
 !! end
 
 ###
@@ -2932,7 +3083,9 @@ Normal text. '''''Bold italic text.''''' Normal text.
 
 
 !! test
-Unclosed and unmatched quotes
+Unclosed and unmatched quotes (php)
+!! options
+php
 !! input
 '''''Bold italic text '''with bold deactivated''' in between.'''''
 
@@ -2967,6 +3120,48 @@ Plain ''italic'''s plain
 </p><p>Plain <i>italic'</i>s plain
 </p>
 !! end
+# Parsoid inserts an empty bold tag pair at the end of the line, that the PHP
+# parser strips. The wikitext contains just the first half of the bold
+# quote pair. (There's also a case where Parsoid nests <b> and <i>
+# differently than the PHP parser.)
+!! test
+Unclosed and unmatched quotes (parsoid)
+!! options
+parsoid
+!! input
+'''''Bold italic text '''with bold deactivated''' in between.'''''
+
+'''''Bold italic text ''with italic deactivated'' in between.'''''
+
+'''Bold text..
+
+..spanning two paragraphs (should not work).'''
+
+'''Bold tag left open
+
+''Italic tag left open
+
+Normal text.
+
+<!-- Unmatching number of opening, closing tags: -->
+'''This year''''s election ''should'' beat '''last year''''s.
+
+''Tom'''s car is bigger than ''Susan'''s.
+
+Plain ''italic'''s plain
+!! result
+<p><i><b>Bold italic text </b>with bold deactivated<b> in between.</b></i>
+</p><p><i><b>Bold italic text </b></i><b>with italic deactivated<i> in between.</i></b>
+</p><p><b>Bold text..</b>
+</p><p>..spanning two paragraphs (should not work).<b></b>
+</p><p><b>Bold tag left open</b>
+</p><p><i>Italic tag left open</i>
+</p><p>Normal text.
+</p><p><b>This year'</b>s election <i>should</i> beat <b>last year'</b>s.
+</p><p><i>Tom<b>s car is bigger than </b></i><b>Susan</b>s.
+</p><p>Plain <i>italic'</i>s plain
+</p>
+!! end
 
 ###
 ### Tables
@@ -2978,16 +3173,30 @@ Plain ''italic'''s plain
 # is the bare minimun required by the spec, see:
 # http://www.w3.org/TR/xhtml-modularization/dtd_module_defs.html#a_module_Basic_Tables
 !! test
-A table with no data.
+A table with no data. (php)
+!! options
+php
 !! input
 {||}
 !! result
 !! end
+# Parsoid team replies: empty table tags are legal in HTML5
+!! test
+A table with no data. (parsoid)
+!! options
+parsoid
+!! input
+{||}
+!! result
+<table></table>
+!! end
 
 # A table with nothing but a caption is invalid XHTML, we might want to render
 # this as <p>caption</p>
 !! test
-A table with nothing but a caption
+A table with nothing but a caption (php)
+!! options
+php
 !! input
 {|
 |+ caption
@@ -2997,6 +3206,18 @@ A table with nothing but a caption
 <caption> caption
 </caption><tr><td></td></tr></table>
 
+!! end
+# Parsoid team replies: table with only a caption is legal in HTML5
+!! test
+A table with nothing but a caption (parsoid)
+!! options
+parsoid
+!! input
+{|
+|+ caption
+|}
+!! result
+<table><caption> caption</caption></table>
 !! end
 
 !! test
@@ -10701,10 +10922,22 @@ Handling of &#x0A; in URLs
 !!end
 
 !! test
-5 quotes, code coverage +1 line
+5 quotes, code coverage +1 line (php)
+!! options
+php
+!! input
+'''''
+!! result
+!! end
+# The PHP parser strips the empty tags out for giggles; parsoid doesn't.
+!! test
+5 quotes, code coverage +1 line (parsoid)
+!! options
+parsoid
 !! input
 '''''
 !! result
+<p><i><b></b></i></p>
 !! end
 
 !! test
index c8f3868..e49ea6d 100644 (file)
@@ -12,7 +12,6 @@ class AutoLoaderTest extends MediaWikiTestCase {
 
        protected static function checkAutoLoadConf() {
                global $wgAutoloadLocalClasses, $wgAutoloadClasses, $IP;
-               static $supportsParsekit;
                $supportsParsekit = function_exists( 'parsekit_compile_file' );
 
                // wgAutoloadLocalClasses has precedence, just like in includes/AutoLoader.php
diff --git a/tests/phpunit/includes/CollationTest.php b/tests/phpunit/includes/CollationTest.php
new file mode 100644 (file)
index 0000000..c746208
--- /dev/null
@@ -0,0 +1,109 @@
+<?php
+class CollationTest extends MediaWikiLangTestCase {
+       protected function setUp() {
+               parent::setUp();
+               if ( !extension_loaded( 'intl' ) ) {
+                       $this->markTestSkipped( 'These tests require intl extension' );
+               }
+       }
+
+       /**
+        * Test to make sure, that if you
+        * have "X" and "XY", the binary
+        * sortkey also has "X" being a
+        * prefix of "XY". Our collation
+        * code makes this assumption.
+        *
+        * @param $lang String Language code for collator
+        * @param $base String Base string
+        * @param $extended String String containing base as a prefix.
+        *
+        * @dataProvider prefixDataProvider
+        */
+       function testIsPrefix( $lang, $base, $extended ) {
+               $cp = Collator::create( $lang );
+               $cp->setStrength( Collator::PRIMARY );
+               $baseBin = $cp->getSortKey( $base );
+               // Remove sortkey terminator
+               $baseBin = rtrim( $baseBin, "\0" );
+               $extendedBin = $cp->getSortKey( $extended );
+               $this->assertStringStartsWith( $baseBin, $extendedBin, "$base is not a prefix of $extended" );
+       }
+
+       function prefixDataProvider() {
+               return array(
+                       array( 'en', 'A', 'AA' ),
+                       array( 'en', 'A', 'AAA' ),
+                       array( 'en', 'Д', 'ДЂ' ),
+                       array( 'en', 'Д', 'ДA' ),
+                       // 'Ʒ' should expand to 'Z ' (note space).
+                       array( 'fi', 'Z', 'Ʒ' ),
+                       // 'Þ' should expand to 'th'
+                       array( 'sv', 't', 'Þ' ),
+                       // Javanese is a limited use alphabet, so should have 3 bytes
+                       // per character, so do some tests with it.
+                       array( 'en', 'ꦲ', 'ꦲꦤ' ),
+                       array( 'en', 'ꦲ', 'ꦲД' ),
+                       array( 'en', 'A', 'Aꦲ' ),
+               );
+       }
+       /**
+        * Opposite of testIsPrefix
+        *
+        * @dataProvider notPrefixDataProvider
+        */
+       function testNotIsPrefix( $lang, $base, $extended ) {
+               $cp = Collator::create( $lang );
+               $cp->setStrength( Collator::PRIMARY );
+               $baseBin = $cp->getSortKey( $base );
+               // Remove sortkey terminator
+               $baseBin = rtrim( $baseBin, "\0" );
+               $extendedBin = $cp->getSortKey( $extended );
+               $this->assertStringStartsNotWith( $baseBin, $extendedBin, "$base is a prefix of $extended" );
+       }
+
+       function notPrefixDataProvider() {
+               return array(
+                       array( 'en', 'A', 'B' ),
+                       array( 'en', 'AC', 'ABC' ),
+                       array( 'en', 'Z', 'Ʒ' ),
+                       array( 'en', 'A', 'ꦲ' ),
+               );
+       }
+
+       /**
+        * Test correct first letter is fetched.
+        *
+        * @param $collation String Collation name (aka uca-en)
+        * @param $string String String to get first letter of
+        * @param $firstLetter String Expected first letter.
+        *
+        * @dataProvider firstLetterProvider
+        */
+       function testGetFirstLetter( $collation, $string, $firstLetter ) {
+               $col = Collation::factory( $collation );
+               $this->assertEquals( $firstLetter, $col->getFirstLetter( $string ) );
+       }
+       function firstLetterProvider() {
+               return array(
+                       array( 'uppercase', 'Abc', 'A' ),
+                       array( 'uppercase', 'abc', 'A' ),
+                       array( 'identity', 'abc', 'a' ),
+                       array( 'uca-en', 'abc', 'A' ),
+                       array( 'uca-en', ' ', ' ' ),
+                       array( 'uca-en', 'Êveryone', 'E' ),
+                       array( 'uca-vi', 'Êveryone', 'Ê' ),
+                       // Make sure thorn is not a first letter.
+                       array( 'uca-sv', 'The', 'T' ),
+                       array( 'uca-sv', 'Å', 'Å' ),
+                       array( 'uca-hu', 'dzsdo', 'Dzs' ),
+                       array( 'uca-hu', 'dzdso', 'Dz' ),
+                       array( 'uca-hu', 'CSD', 'Cs' ),
+                       array( 'uca-root', 'CSD', 'C' ),
+                       array( 'uca-fi', 'Ǥ', 'G' ),
+                       array( 'uca-fi', 'Ŧ', 'T' ),
+                       array( 'uca-fi', 'Ʒ', 'Z' ),
+                       array( 'uca-fi', 'Ŋ', 'N' ),
+               );
+       }
+}
index 2e5cbd0..c874375 100644 (file)
@@ -6,6 +6,7 @@ return array(
 
        'mediawiki.tests.qunit.suites' => array(
                'scripts' => array(
+                       'tests/qunit/suites/resources/startup.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.autoEllipsis.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.byteLength.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.byteLimit.test.js',
index 7ae9826..3dda7c7 100644 (file)
        function assertStyleAsync( assert, $element, prop, val, fn ) {
                var styleTestStart,
                        el = $element.get( 0 ),
-                       styleTestTimeout = ( QUnit.config.testTimeout - 200 ) || 5000;
+                       styleTestTimeout = ( QUnit.config.testTimeout || 5000 ) - 200;
 
                function isCssImportApplied() {
                        // Trigger reflow, repaint, redraw, whatever (cross-browser)
                } );
        } );
 
-       QUnit.test( 'mw.loader.implement( styles={ "css": [text, ..] } )', 2, function ( assert ) {
+       QUnit.asyncTest( 'mw.loader.implement( styles={ "css": [text, ..] } )', 2, function ( assert ) {
                var $element = $( '<div class="mw-test-implement-a"></div>' ).appendTo( '#qunit-fixture' );
 
                assert.notEqual(
                mw.loader.implement(
                        'test.implement.a',
                        function () {
-                               QUnit.stop();
-                               setTimeout(function () {
-                                       assert.equal(
-                                               $element.css( 'float' ),
-                                               'right',
-                                               'style is applied'
-                                       );
-                                       QUnit.start();
-                               });
+                               assert.equal(
+                                       $element.css( 'float' ),
+                                       'right',
+                                       'style is applied'
+                               );
+                               QUnit.start();
                        },
                        {
                                'all': '.mw-test-implement-a { float: right; }'
                ] );
        } );
 
-// Backwards compatibility
-       QUnit.test( 'mw.loader.implement( styles={ <media>: text } ) (back-compat)', 2, function ( assert ) {
+       // Backwards compatibility
+       QUnit.asyncTest( 'mw.loader.implement( styles={ <media>: text } ) (back-compat)', 2, function ( assert ) {
                var $element = $( '<div class="mw-test-implement-c"></div>' ).appendTo( '#qunit-fixture' );
 
                assert.notEqual(
                mw.loader.implement(
                        'test.implement.c',
                        function () {
-                               QUnit.stop();
-                               setTimeout(function () {
-                                       assert.equal(
-                                               $element.css( 'float' ),
-                                               'right',
-                                               'style is applied'
-                                       );
-                                       QUnit.start();
-                               });
+                               assert.equal(
+                                       $element.css( 'float' ),
+                                       'right',
+                                       'style is applied'
+                               );
+                               QUnit.start();
                        },
                        {
                                'all': '.mw-test-implement-c { float: right; }'
                ] );
        } );
 
-// Backwards compatibility
+       // Backwards compatibility
        QUnit.asyncTest( 'mw.loader.implement( styles={ <media>: [url, ..] } ) (back-compat)', 4, function ( assert ) {
                var $element = $( '<div class="mw-test-implement-d"></div>' ).appendTo( '#qunit-fixture' ),
                        $element2 = $( '<div class="mw-test-implement-d2"></div>' ).appendTo( '#qunit-fixture' );
                ] );
        } );
 
-// @import (bug 31676)
+       // @import (bug 31676)
        QUnit.asyncTest( 'mw.loader.implement( styles has @import)', 5, function ( assert ) {
                var isJsExecuted, $element;
 
diff --git a/tests/qunit/suites/resources/startup.test.js b/tests/qunit/suites/resources/startup.test.js
new file mode 100644 (file)
index 0000000..8b33df4
--- /dev/null
@@ -0,0 +1,126 @@
+/*global isCompatible: true */
+( function ( $ ) {
+       var testcases = {
+               // Supported: Compatible
+               gradeA: [
+                       // Chrome
+                       'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16',
+                       // Firefox 4+
+                       'Mozilla/5.0 (Windows NT 6.1.1; rv:5.0) Gecko/20100101 Firefox/5.0',
+                       'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0',
+                       'Mozilla/5.0 (Macintosh; I; Intel Mac OS X 11_7_9; de-LI; rv:1.9b4) Gecko/2012010317 Firefox/10.0a4',
+                       'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120403211507 Firefox/12.0',
+                       'Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1',
+                       // Kindle Fire
+                       'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1',
+                       // Safari 5.0+
+                       'Mozilla/5.0 (Macintosh; I; Intel Mac OS X 10_6_7; ru-ru) AppleWebKit/534.31+ (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1',
+                       // Opera 11+
+                       'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.8.131 Version/11.10',
+                       // Internet Explorer 6+
+                       'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)',
+                       'Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; en-US)',
+                       'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; Media Center PC 4.0; SLCC1; .NET CLR 3.0.04320)',
+                       'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)',
+                       'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)',
+                       // IE Mobile
+                       'Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800)',
+                       // BlackBerry 6+
+                       'Mozilla/5.0 (BlackBerry; U; BlackBerry 9300; en) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.570 Mobile Safari/534.8+',
+                       'Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+',
+                       'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.3+ (KHTML, like Gecko) Version/10.0.9.386 Mobile Safari/537.3+',
+                       // Open WebOS 1.4+ (HP Veer 4G)
+                       'Mozilla/5.0 (webOS/2.1.2; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 P160UNA/1.0',
+                       // Firefox Mobile
+                       'Mozilla/5.0 (Mobile; rv:14.0) Gecko/14.0 Firefox/14.0',
+                       // iOS
+                       'Mozilla/5.0 (ipod: U;CPU iPhone OS 2_2 like Mac OS X: es_es) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3',
+                       'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3',
+                       // Android
+                       'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17',
+                       // Recent Opera Mini - JS mostly doesn't work, but serving jQuery doesn't hurt users
+                       'Opera/9.80 (Android; Opera Mini/7.29530/27.1407; U; en) Presto/2.8.119 Version/11.10'
+               ],
+               // Supported: Uncompatible, serve basic content
+               gradeB: [
+                       // Internet Explorer < 6
+                       'Mozilla/2.0 (compatible; MSIE 3.03; Windows 3.1)',
+                       'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)',
+                       'Mozilla/4.0 (compatible; MSIE 5.0; Windows 98;)',
+                       'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
+                       // Firefox < 4
+                       'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2',
+                       'Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.1.1) Gecko/20070311 Firefox/2.0.0.1',
+                       'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3',
+                       // BlackBerry < 6
+                       'BlackBerry9300/5.0.0.716 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/133',
+                       'BlackBerry7250/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1',
+                       // Open WebOS < 1.5 (Palm Pre, Palm Pixi)
+                       'Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0',
+                       'Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1 ',
+                       // SymbianOS
+                       'NokiaN95_8GB-3;Mozilla/5.0 SymbianOS/9.2;U;Series60/3.1 NokiaN95_8GB-3/11.2.011 Profile/MIDP-2.0 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML, like Gecko)',
+                       'Nokia7610/2.0 (5.0509.0) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0 ',
+                       'Mozilla/5.0 (SymbianOS/9.1; U; [en]; SymbianOS/91 Series60/3.0) AppleWebKit/413 (KHTML, like Gecko) Safari/413',
+                       'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-2/091.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.34 Mobile Safari/533.4',
+                       // NetFront
+                       'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)',
+                       'Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 824x1200; rotate)',
+                       'Mozilla/4.08 (Windows; Mobile Content Viewer/1.0) NetFront/3.2',
+                       // Opera Mini < 7
+                       'Opera/9.80 (J2ME/MIDP; Opera Mini/3.1.10423/22.387; U; en) Presto/2.5.25 Version/10.54',
+                       'Opera/9.50 (J2ME/MIDP; Opera Mini/4.0.10031/298; U; en)',
+                       'Opera/9.80 (J2ME/MIDP; Opera Mini/6.24093/26.1305; U; en) Presto/2.8.119 Version/10.54'
+               ],
+               // No explicit support for or against these browsers, they're
+               // given a shot at Grade A at their own risk.
+               gradeX: [
+                       // Gecko
+                       'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060928 (Debian|Debian-1.8.0.7-1) Epiphany/2.14',
+                       'Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.6) Gecko/20070817 IceWeasel/2.0.0.6-g2',
+                       // KHTML
+                       'Mozilla/5.0 (compatible; Konqueror/4.3; Linux) KHTML/4.3.5 (like Gecko)',
+                       // Text browsers
+                       'Links (2.1pre33; Darwin 8.11.0 Power Macintosh; x)',
+                       'Links (6.9; Unix 6.9-astral sparc; 80x25)',
+                       'Lynx/2.8.6rel.4 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8g',
+                       'w3m/0.5.1',
+                       // Bots
+                       'Googlebot/2.1 (+http://www.google.com/bot.html)',
+                       'Mozilla/5.0 (compatible; googlebot/2.1; +http://www.google.com/bot.html)',
+                       'Mozilla/5.0 (compatible; YandexBot/3.0)',
+                       // Scripts
+                       'curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5',
+                       'Wget/1.9',
+                       'Wget/1.10.1 (Red Hat modified)',
+                       // Unknown
+                       'I\'m an unknown browser',
+                       // Empty
+                       ''
+               ]
+       };
+
+       QUnit.module( 'startup', QUnit.newMwEnvironment() );
+
+       QUnit.test( 'isCompatible( Grade A )', testcases.gradeA.length, function ( assert ) {
+               $.each( testcases.gradeA, function ( i, ua ) {
+                               assert.strictEqual( isCompatible( ua ), true, ua );
+                       }
+               );
+       } );
+
+       QUnit.test( 'isCompatible( Grade B )', testcases.gradeB.length, function ( assert ) {
+               $.each( testcases.gradeB, function ( i, ua ) {
+                               assert.strictEqual( isCompatible( ua ), false, ua );
+                       }
+               );
+       } );
+
+       QUnit.test( 'isCompatible( Grade X )', testcases.gradeX.length, function ( assert ) {
+               $.each( testcases.gradeX, function ( i, ua ) {
+                               assert.strictEqual( isCompatible( ua ), true, ua );
+                       }
+               );
+       } );
+
+}( jQuery ) );