Merge "Revert "Rollback: Make update of recentchanges table later""
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Fri, 7 Mar 2014 22:54:23 +0000 (22:54 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 7 Mar 2014 22:54:23 +0000 (22:54 +0000)
81 files changed:
RELEASE-NOTES-1.23
includes/PoolCounter.php
includes/WebStart.php
includes/Wiki.php
includes/WikiPage.php
includes/api/ApiRunJobs.php
includes/installer/Installer.i18n.php
includes/installer/WebInstallerPage.php
includes/resourceloader/ResourceLoader.php
includes/templates/NoLocalSettings.php
languages/classes/LanguageUz.php
languages/messages/MessagesAr.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBn.php
languages/messages/MessagesCa.php
languages/messages/MessagesCe.php
languages/messages/MessagesCkb.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesFa.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrp.php
languages/messages/MessagesGu.php
languages/messages/MessagesHe.php
languages/messages/MessagesHr.php
languages/messages/MessagesHsb.php
languages/messages/MessagesIa.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesKo.php
languages/messages/MessagesKsh.php
languages/messages/MessagesMk.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesSco.php
languages/messages/MessagesSq.php
languages/messages/MessagesSv.php
languages/messages/MessagesTe.php
languages/messages/MessagesTh.php
languages/messages/MessagesTk.php
languages/messages/MessagesUk.php
languages/messages/MessagesUz.php
languages/messages/MessagesVi.php
languages/messages/MessagesYi.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
resources/jquery/jquery.client.js
resources/jquery/jquery.hidpi.js
resources/jquery/jquery.localize.js
resources/mediawiki/mediawiki.js
resources/oojs-ui/i18n/vi.json
resources/oojs-ui/oojs-ui.js
resources/oojs-ui/oojs-ui.svg.css
skins/vector/components/search.less
tests/TestsAutoLoader.php
tests/phpunit/ResourceLoaderTestCase.php [new file with mode: 0644]
tests/phpunit/includes/MessageTest.php
tests/phpunit/includes/ResourceLoaderModuleTest.php [deleted file]
tests/phpunit/includes/ResourceLoaderTest.php [deleted file]
tests/phpunit/includes/RevisionStorageTest.php
tests/phpunit/includes/StatusTest.php
tests/phpunit/includes/WikiPageTest.php
tests/phpunit/includes/XmlTest.php
tests/phpunit/includes/api/ApiEditPageTest.php
tests/phpunit/includes/libs/RunningStatTest.php
tests/phpunit/includes/objectcache/BagOStuffTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php [new file with mode: 0644]
tests/phpunit/includes/resourceloader/ResourceLoaderTest.php [new file with mode: 0644]
tests/phpunit/includes/upload/UploadFromUrlTest.php
tests/phpunit/includes/utils/UIDGeneratorTest.php
tests/phpunit/structure/StructureTest.php

index 2b91f88..bdb75e8 100644 (file)
@@ -41,6 +41,8 @@ production.
 * $wgSkipSkin, which has been replaceable by $wgSkipSkins since 2005 (r9249), is
   now formally deprecated.
 * Removed deprecated $wgDisabledActions as it is hardly used anywhere.
+* $wgRateLimitLog has been deprecated and replaced by
+  $wgDebugLogGroup['ratelimit'].
 
 === New features in 1.23 ===
 * ResourceLoader can utilize the Web Storage API to cache modules client-side.
index 3d4c464..85c4c79 100644 (file)
@@ -91,6 +91,13 @@ abstract class PoolCounter {
                return new $class( $conf, $type, $key );
        }
 
+       /**
+        * @return string
+        */
+       public function getKey() {
+               return $this->key;
+       }
+
        /**
         * I want to do this task and I need to do it myself.
         *
@@ -175,7 +182,7 @@ abstract class PoolCounterWork {
         * Do something with the error, like showing it to the user.
         * @return bool
         */
-       function error( $status ) {
+       public function error( $status ) {
                return false;
        }
 
@@ -185,8 +192,10 @@ abstract class PoolCounterWork {
         * @param $status Status
         * @return void
         */
-       function logError( $status ) {
-               wfDebugLog( 'poolcounter', "Pool key '{$this->key}': "
+       public function logError( $status ) {
+               $key = $this->poolCounter->getKey();
+
+               wfDebugLog( 'poolcounter', "Pool key '$key': "
                        . $status->getMessage()->inLanguage( 'en' )->useDatabase( false )->text() );
        }
 
@@ -314,14 +323,14 @@ class PoolCounterWorkViaCallback extends PoolCounterWork {
                return false;
        }
 
-       function fallback() {
+       public function fallback() {
                if ( $this->fallback ) {
                        return call_user_func_array( $this->fallback, array() );
                }
                return false;
        }
 
-       function error( $status ) {
+       public function error( $status ) {
                if ( $this->error ) {
                        return call_user_func_array( $this->error, array( $status ) );
                }
index 58c953a..eb79134 100644 (file)
@@ -126,8 +126,8 @@ if ( defined( 'MW_CONFIG_CALLBACK' ) ) {
 
        # LocalSettings.php is the per site customization file. If it does not exist
        # the wiki installer needs to be launched or the generated file uploaded to
-       # the root wiki directory
-       if ( !file_exists( MW_CONFIG_FILE ) ) {
+       # the root wiki directory. Give a hint, if it is not readable by the server.
+       if ( !is_readable( MW_CONFIG_FILE ) ) {
                require_once "$IP/includes/templates/NoLocalSettings.php";
                die();
        }
index 5c67e5f..d78d7cb 100644 (file)
@@ -644,7 +644,8 @@ class MediaWiki {
                $query['signature'] = ApiRunJobs::getQuerySignature( $query );
 
                if ( !$wgEnableAPI ) {
-                       ApiRunJobs::executeJobs( $n ); // slow fallback
+                       // Fall back to running the job here while the user waits
+                       ApiRunJobs::executeJobs( $n );
                        return;
                }
 
@@ -660,7 +661,8 @@ class MediaWiki {
                wfRestoreWarnings();
                if ( !$sock ) {
                        wfDebugLog( 'runJobs', "Failed to start cron API (socket error $errno): $errstr\n" );
-                       ApiRunJobs::executeJobs( $n ); // slow fallback
+                       // Fall back to running the job here while the user waits
+                       ApiRunJobs::executeJobs( $n );
                        return;
                }
 
index 77a5479..b4aa303 100644 (file)
@@ -1568,7 +1568,7 @@ class WikiPage implements Page, IDBAccessObject {
         * @param $flags Int
         * @return Int updated $flags
         */
-       function checkFlags( $flags ) {
+       public function checkFlags( $flags ) {
                if ( !( $flags & EDIT_NEW ) && !( $flags & EDIT_UPDATE ) ) {
                        if ( $this->exists() ) {
                                $flags |= EDIT_UPDATE;
@@ -3510,7 +3510,7 @@ class PoolWorkArticleView extends PoolCounterWork {
         * @param $parserOptions parserOptions to use for the parse operation
         * @param $content Content|String: content to parse or null to load it; may also be given as a wikitext string, for BC
         */
-       function __construct( Page $page, ParserOptions $parserOptions, $revid, $useParserCache, $content = null ) {
+       public function __construct( Page $page, ParserOptions $parserOptions, $revid, $useParserCache, $content = null ) {
                if ( is_string( $content ) ) { // BC: old style call
                        $modelId = $page->getRevision()->getContentModel();
                        $format = $page->getRevision()->getContentFormat();
@@ -3556,7 +3556,7 @@ class PoolWorkArticleView extends PoolCounterWork {
        /**
         * @return bool
         */
-       function doWork() {
+       public function doWork() {
                global $wgUseFileCache;
 
                // @todo several of the methods called on $this->page are not declared in Page, but present
@@ -3619,7 +3619,7 @@ class PoolWorkArticleView extends PoolCounterWork {
        /**
         * @return bool
         */
-       function getCachedWork() {
+       public function getCachedWork() {
                $this->parserOutput = ParserCache::singleton()->get( $this->page, $this->parserOptions );
 
                if ( $this->parserOutput === false ) {
@@ -3634,7 +3634,7 @@ class PoolWorkArticleView extends PoolCounterWork {
        /**
         * @return bool
         */
-       function fallback() {
+       public function fallback() {
                $this->parserOutput = ParserCache::singleton()->getDirty( $this->page, $this->parserOptions );
 
                if ( $this->parserOutput === false ) {
@@ -3653,7 +3653,7 @@ class PoolWorkArticleView extends PoolCounterWork {
         * @param $status Status
         * @return bool
         */
-       function error( $status ) {
+       public function error( $status ) {
                $this->error = $status;
                return false;
        }
index e16dc5d..e23aaf5 100644 (file)
@@ -94,10 +94,14 @@ class ApiRunJobs extends ApiBase {
                        return;
                }
                try {
-                       // Fallback to running the jobs here while the user waits
                        $group = JobQueueGroup::singleton();
+                       $count = $group->executeReadyPeriodicTasks();
+                       if ( $count > 0 ) {
+                               wfDebugLog( 'jobqueue', "Executed $count periodic queue task(s)." );
+                       }
+
                        do {
-                               $job = $group->pop( JobQueueGroup::USE_CACHE ); // job from any queue
+                               $job = $group->pop( JobQueueGroup::TYPE_DEFAULT, JobQueueGroup::USE_CACHE ); // job from any queue
                                if ( $job ) {
                                        $output = $job->toString() . "\n";
                                        $t = - microtime( true );
index 24bc456..592a1ca 100644 (file)
@@ -358,9 +358,9 @@ In <strong>UTF-8 mode</strong>, MySQL will know what character set your data is
 
        'config-mssql-auth'               => 'Authentication type:',
        'config-mssql-install-auth'       => 'Select the authentication type that will be used to connect to the database during the installation process.
-If you select "Windows Authentication", the credentials of whatever user the webserver is running as will be used.',
+If you select "{{int:config-mssql-windowsauth}}", the credentials of whatever user the webserver is running as will be used.',
        'config-mssql-web-auth'           => 'Select the authentication type that the web server will use to connect to the database server, during ordinary operation of the wiki.
-If you select "Windows Authentication", the credentials of whatever user the webserver is running as will be used.',
+If you select "{{int:config-mssql-windowsauth}}", the credentials of whatever user the webserver is running as will be used.',
        'config-mssql-sqlauth'            => 'SQL Server Authentication',
        'config-mssql-windowsauth'        => 'Windows Authentication',
        'config-site-name'                => 'Name of wiki:',
index f83db54..4bc6cad 100644 (file)
@@ -482,7 +482,7 @@ class WebInstaller_DBConnect extends WebInstallerPage {
                $defaultType = $this->getVar( 'wgDBtype' );
 
                // Messages: config-dbsupport-mysql, config-dbsupport-postgres, config-dbsupport-oracle,
-               // config-dbsupport-sqlite
+               // config-dbsupport-sqlite, config-dbsupport-mssql
                $dbSupport = '';
                foreach ( Installer::getDBTypes() as $type ) {
                        $dbSupport .= wfMessage( "config-dbsupport-$type" )->plain() . "\n";
index 557c1f6..1ccc9cd 100644 (file)
@@ -26,7 +26,7 @@
  * Dynamic JavaScript and CSS resource loading system.
  *
  * Most of the documention is on the MediaWiki documentation wiki starting at:
- *    http://www.mediawiki.org/wiki/ResourceLoader
+ *    https://www.mediawiki.org/wiki/ResourceLoader
  */
 class ResourceLoader {
 
@@ -53,7 +53,7 @@ class ResourceLoader {
        /* Protected Methods */
 
        /**
-        * Loads information stored in the database about modules.
+        * Load information stored in the database about modules.
         *
         * This method grabs modules dependencies from the database and updates modules
         * objects.
@@ -64,7 +64,7 @@ class ResourceLoader {
         * performance improvement.
         *
         * @param array $modules List of module names to preload information for
-        * @param $context ResourceLoaderContext: Context to load the information within
+        * @param ResourceLoaderContext $context Context to load the information within
         */
        public function preloadModuleInfo( array $modules, ResourceLoaderContext $context ) {
                if ( !count( $modules ) ) {
@@ -122,18 +122,19 @@ class ResourceLoader {
        }
 
        /**
-        * Runs JavaScript or CSS data through a filter, caching the filtered result for future calls.
+        * Run JavaScript or CSS data through a filter, caching the filtered result for future calls.
         *
         * Available filters are:
-        *  - minify-js \see JavaScriptMinifier::minify
-        *  - minify-css \see CSSMin::minify
+        *
+        *    - minify-js \see JavaScriptMinifier::minify
+        *    - minify-css \see CSSMin::minify
         *
         * If $data is empty, only contains whitespace or the filter was unknown,
         * $data is returned unmodified.
         *
         * @param string $filter Name of filter to run
         * @param string $data Text to filter, such as JavaScript or CSS text
-        * @return String: Filtered data, or a comment containing an error message
+        * @return string Filtered data, or a comment containing an error message
         */
        protected function filter( $filter, $data ) {
                global $wgResourceLoaderMinifierStatementsOnOwnLine, $wgResourceLoaderMinifierMaxLineLength;
@@ -193,7 +194,7 @@ class ResourceLoader {
        /* Methods */
 
        /**
-        * Registers core modules and runs registration hooks.
+        * Register core modules and runs registration hooks.
         */
        public function __construct() {
                global $IP, $wgResourceModules, $wgResourceLoaderSources, $wgLoadScript, $wgEnableJavaScriptTest;
@@ -220,17 +221,17 @@ class ResourceLoader {
        }
 
        /**
-        * Registers a module with the ResourceLoader system.
+        * Register a module with the ResourceLoader system.
         *
-        * @param $name Mixed: Name of module as a string or List of name/object pairs as an array
+        * @param mixed $name Name of module as a string or List of name/object pairs as an array
         * @param array $info Module info array. For backwards compatibility with 1.17alpha,
         *   this may also be a ResourceLoaderModule object. Optional when using
         *   multiple-registration calling style.
         * @throws MWException: If a duplicate module registration is attempted
         * @throws MWException: If a module name contains illegal characters (pipes or commas)
         * @throws MWException: If something other than a ResourceLoaderModule is being registered
-        * @return Boolean: False if there were any errors, in which case one or more modules were not
-        *     registered
+        * @return boolean False if there were any errors, in which case one or more modules were
+        *   not registered
         */
        public function register( $name, $info = null ) {
                wfProfileIn( __METHOD__ );
@@ -322,8 +323,8 @@ class ResourceLoader {
         * Source properties:
         * 'loadScript': URL (either fully-qualified or protocol-relative) of load.php for this source
         *
-        * @param $id Mixed: source ID (string), or array( id1 => props1, id2 => props2, ... )
-        * @param array $properties source properties
+        * @param mixed $id Source ID (string), or array( id1 => props1, id2 => props2, ... )
+        * @param array $properties Source properties
         * @throws MWException
         */
        public function addSource( $id, $properties = null ) {
@@ -354,9 +355,9 @@ class ResourceLoader {
        }
 
        /**
-        * Get a list of module names
+        * Get a list of module names.
         *
-        * @return Array: List of module names
+        * @return array List of module names
         */
        public function getModuleNames() {
                return array_keys( $this->moduleInfos );
@@ -364,11 +365,12 @@ class ResourceLoader {
 
        /**
         * Get a list of test module names for one (or all) frameworks.
+        *
         * If the given framework id is unknkown, or if the in-object variable is not an array,
         * then it will return an empty array.
         *
-        * @param string $framework Optional. Get only the test module names for one
-        * particular framework.
+        * @param string $framework Get only the test module names for one
+        *   particular framework (optional)
         * @return Array
         */
        public function getTestModuleNames( $framework = 'all' ) {
@@ -416,18 +418,18 @@ class ResourceLoader {
        }
 
        /**
-        * Get the list of sources
+        * Get the list of sources.
         *
-        * @return Array: array( id => array of properties, .. )
+        * @return array Like array( id => array of properties, .. )
         */
        public function getSources() {
                return $this->sources;
        }
 
        /**
-        * Outputs a response to a resource load-request, including a content-type header.
+        * Output a response to a load request, including the content-type header.
         *
-        * @param $context ResourceLoaderContext: Context in which a response should be formed
+        * @param ResourceLoaderContext $context Context in which a response should be formed
         */
        public function respond( ResourceLoaderContext $context ) {
                global $wgCacheEpoch, $wgUseFileCache;
@@ -551,7 +553,7 @@ class ResourceLoader {
 
        /**
         * Send content type and last modified headers to the client.
-        * @param $context ResourceLoaderContext
+        * @param ResourceLoaderContext $context
         * @param string $mtime TS_MW timestamp to use for last-modified
         * @param bool $errors Whether there are commented-out errors in the response
         * @return void
@@ -589,8 +591,11 @@ class ResourceLoader {
        }
 
        /**
+        * Respond with 304 Last Modified if appropiate.
+        *
         * If there's an If-Modified-Since header, respond with a 304 appropriately
         * and clear out the output buffer. If the client cache is too old then do nothing.
+        *
         * @param $context ResourceLoaderContext
         * @param string $mtime The TS_MW timestamp to check the header against
         * @return bool True if 304 header sent and output handled
@@ -624,10 +629,10 @@ class ResourceLoader {
        }
 
        /**
-        * Send out code for a response from file cache if possible
+        * Send out code for a response from file cache if possible.
         *
-        * @param $fileCache ResourceFileCache: Cache object for this request URL
-        * @param $context ResourceLoaderContext: Context in which to generate a response
+        * @param ResourceFileCache $fileCache Cache object for this request URL
+        * @param ResourceLoaderContext $context Context in which to generate a response
         * @return bool If this found a cache file and handled the response
         */
        protected function tryRespondFromFileCache(
@@ -675,10 +680,11 @@ class ResourceLoader {
        }
 
        /**
-        * Generate a CSS or JS comment block. Only use this for public data,
-        * not error message details.
+        * Generate a CSS or JS comment block.
+        *
+        * Only use this for public data, not error message details.
         *
-        * @param $text string
+        * @param string $text
         * @return string
         */
        public static function makeComment( $text ) {
@@ -687,7 +693,7 @@ class ResourceLoader {
        }
 
        /**
-        * Handle exception display
+        * Handle exception display.
         *
         * @param Exception $e to be shown to the user
         * @return string sanitized text that can be returned to the user
@@ -703,7 +709,7 @@ class ResourceLoader {
        }
 
        /**
-        * Generates code for a response
+        * Generate code for a response.
         *
         * @param $context ResourceLoaderContext Context in which to generate a response
         * @param array $modules List of module objects keyed by module name
@@ -887,17 +893,15 @@ class ResourceLoader {
        /* Static Methods */
 
        /**
-        * Returns JS code to call to mw.loader.implement for a module with
-        * given properties.
+        * Return JS code that calls mw.loader.implement with given module properties.
         *
         * @param string $name Module name
-        * @param $scripts Mixed: List of URLs to JavaScript files or String of JavaScript code
-        * @param $styles Mixed: Array of CSS strings keyed by media type, or an array of lists of URLs to
-        * CSS files keyed by media type
-        * @param $messages Mixed: List of messages associated with this module. May either be an
-        *     associative array mapping message key to value, or a JSON-encoded message blob containing
-        *     the same data, wrapped in an XmlJsCode object.
-        *
+        * @param mixed $scripts List of URLs to JavaScript files or String of JavaScript code
+        * @param mixed $styles Array of CSS strings keyed by media type, or an array of lists of URLs
+        *   to CSS files keyed by media type
+        * @param mixed $messages List of messages associated with this module. May either be an
+        *   associative array mapping message key to value, or a JSON-encoded message blob containing
+        *   the same data, wrapped in an XmlJsCode object.
         * @throws MWException
         * @return string
         */
@@ -927,22 +931,24 @@ class ResourceLoader {
        /**
         * Returns JS code which, when called, will register a given list of messages.
         *
-        * @param $messages Mixed: Either an associative array mapping message key to value, or a
-        *     JSON-encoded message blob containing the same data, wrapped in an XmlJsCode object.
-        *
+        * @param mixed $messages Either an associative array mapping message key to value, or a
+        *   JSON-encoded message blob containing the same data, wrapped in an XmlJsCode object.
         * @return string
         */
        public static function makeMessageSetScript( $messages ) {
-               return Xml::encodeJsCall( 'mw.messages.set', array( (object)$messages ) );
+               return Xml::encodeJsCall(
+                       'mw.messages.set',
+                       array( (object)$messages ),
+                       ResourceLoader::inDebugMode()
+               );
        }
 
        /**
         * Combines an associative array mapping media type to CSS into a
         * single stylesheet with "@media" blocks.
         *
-        * @param array $stylePairs Array keyed by media type containing (arrays of) CSS strings.
-        *
-        * @return Array
+        * @param array $stylePairs Array keyed by media type containing (arrays of) CSS strings
+        * @return array
         */
        private static function makeCombinedStyles( array $stylePairs ) {
                $out = array();
@@ -981,16 +987,23 @@ class ResourceLoader {
         *    - ResourceLoader::makeLoaderStateScript( array( $name => $state, ... ) ):
         *         Set the state of modules with the given names to the given states
         *
-        * @param $name string
+        * @param string $name
         * @param $state
-        *
         * @return string
         */
        public static function makeLoaderStateScript( $name, $state = null ) {
                if ( is_array( $name ) ) {
-                       return Xml::encodeJsCall( 'mw.loader.state', array( $name ) );
+                       return Xml::encodeJsCall(
+                               'mw.loader.state',
+                               array( $name ),
+                               ResourceLoader::inDebugMode()
+                       );
                } else {
-                       return Xml::encodeJsCall( 'mw.loader.state', array( $name, $state ) );
+                       return Xml::encodeJsCall(
+                               'mw.loader.state',
+                               array( $name, $state ),
+                               ResourceLoader::inDebugMode()
+                       );
                }
        }
 
@@ -1001,19 +1014,20 @@ class ResourceLoader {
         * and $group as supplied.
         *
         * @param string $name Module name
-        * @param $version Integer: Module version number as a timestamp
+        * @param int $version Module version number as a timestamp
         * @param array $dependencies List of module names on which this module depends
         * @param string $group Group which the module is in.
         * @param string $source Source of the module, or 'local' if not foreign.
         * @param string $script JavaScript code
-        *
         * @return string
         */
        public static function makeCustomLoaderScript( $name, $version, $dependencies, $group, $source, $script ) {
                $script = str_replace( "\n", "\n\t", trim( $script ) );
                return Xml::encodeJsCall(
                        "( function ( name, version, dependencies, group, source ) {\n\t$script\n} )",
-                       array( $name, $version, $dependencies, $group, $source ) );
+                       array( $name, $version, $dependencies, $group, $source ),
+                       ResourceLoader::inDebugMode()
+               );
        }
 
        /**
@@ -1034,22 +1048,28 @@ class ResourceLoader {
         *        Registers modules with the given names and parameters.
         *
         * @param string $name Module name
-        * @param $version Integer: Module version number as a timestamp
+        * @param int $version Module version number as a timestamp
         * @param array $dependencies List of module names on which this module depends
-        * @param string $group group which the module is in.
-        * @param string $source source of the module, or 'local' if not foreign
-        *
+        * @param string $group Group which the module is in
+        * @param string $source Source of the module, or 'local' if not foreign
         * @return string
         */
        public static function makeLoaderRegisterScript( $name, $version = null,
                $dependencies = null, $group = null, $source = null
        ) {
                if ( is_array( $name ) ) {
-                       return Xml::encodeJsCall( 'mw.loader.register', array( $name ) );
+                       return Xml::encodeJsCall(
+                               'mw.loader.register',
+                               array( $name ),
+                               ResourceLoader::inDebugMode()
+                       );
                } else {
                        $version = (int)$version > 1 ? (int)$version : 1;
-                       return Xml::encodeJsCall( 'mw.loader.register',
-                               array( $name, $version, $dependencies, $group, $source ) );
+                       return Xml::encodeJsCall(
+                               'mw.loader.register',
+                               array( $name, $version, $dependencies, $group, $source ),
+                               ResourceLoader::inDebugMode()
+                       );
                }
        }
 
@@ -1065,14 +1085,21 @@ class ResourceLoader {
         *
         * @param string $id source ID
         * @param array $properties source properties (see addSource())
-        *
         * @return string
         */
        public static function makeLoaderSourcesScript( $id, $properties = null ) {
                if ( is_array( $id ) ) {
-                       return Xml::encodeJsCall( 'mw.loader.addSource', array( $id ) );
+                       return Xml::encodeJsCall(
+                               'mw.loader.addSource',
+                               array( $id ),
+                               ResourceLoader::inDebugMode()
+                       );
                } else {
-                       return Xml::encodeJsCall( 'mw.loader.addSource', array( $id, $properties ) );
+                       return Xml::encodeJsCall(
+                               'mw.loader.addSource',
+                               array( $id, $properties ),
+                               ResourceLoader::inDebugMode()
+                       );
                }
        }
 
@@ -1081,7 +1108,6 @@ class ResourceLoader {
         * present.
         *
         * @param string $script JavaScript code
-        *
         * @return string
         */
        public static function makeLoaderConditionalScript( $script ) {
@@ -1093,11 +1119,14 @@ class ResourceLoader {
         * the given value.
         *
         * @param array $configuration List of configuration values keyed by variable name
-        *
         * @return string
         */
        public static function makeConfigSetScript( array $configuration ) {
-               return Xml::encodeJsCall( 'mw.config.set', array( $configuration ), ResourceLoader::inDebugMode() );
+               return Xml::encodeJsCall(
+                       'mw.config.set',
+                       array( $configuration ),
+                       ResourceLoader::inDebugMode()
+               );
        }
 
        /**
@@ -1105,7 +1134,7 @@ class ResourceLoader {
         *
         * For example, array( 'foo.bar', 'foo.baz', 'bar.baz', 'bar.quux' )
         * becomes 'foo.bar,baz|bar.baz,quux'
-        * @param array $modules of module names (strings)
+        * @param array $modules List of module names (strings)
         * @return string Packed query string
         */
        public static function makePackedModulesString( $modules ) {
index 3f49ed3..d5b8d8b 100644 (file)
@@ -75,16 +75,21 @@ if ( !function_exists( 'session_name' ) ) {
 
                <h1>MediaWiki <?php echo htmlspecialchars( $wgVersion ) ?></h1>
                <div class='error'>
-               <p>LocalSettings.php not found.</p>
-               <p>
-               <?php
-               if ( $installerStarted ) {
-                       echo "Please <a href=\"" . htmlspecialchars( $path ) . "mw-config/index." . htmlspecialchars( $ext ) . "\"> complete the installation</a> and download LocalSettings.php.";
-               } else {
-                       echo "Please <a href=\"" . htmlspecialchars( $path ) . "mw-config/index." . htmlspecialchars( $ext ) . "\"> set up the wiki</a> first.";
-               }
-               ?>
-               </p>
+               <?php if ( !file_exists( MW_CONFIG_FILE ) ) { ?>
+                       <p>LocalSettings.php not found.</p>
+                       <p>
+                       <?php
+                       if ( $installerStarted ) {
+                               echo "Please <a href=\"" . htmlspecialchars( $path ) . "mw-config/index." . htmlspecialchars( $ext ) . "\"> complete the installation</a> and download LocalSettings.php.";
+                       } else {
+                               echo "Please <a href=\"" . htmlspecialchars( $path ) . "mw-config/index." . htmlspecialchars( $ext ) . "\"> set up the wiki</a> first.";
+                       }
+                       ?>
+                       </p>
+               <?php } else { ?>
+                       <p>LocalSettings.php not readable.</p>
+                       <p>Please correct file permissions and try again.</p>
+               <?php } ?>
 
                </div>
        </body>
index aa3e4f2..2079c5e 100644 (file)
@@ -69,9 +69,7 @@ class UzConverter extends LanguageConverter {
                'a' => 'а', 'A' => 'А',
                'b' => 'б', 'B' => 'Б',
                'd' => 'д', 'D' => 'Д',
-               'e' => 'е', 'E' => 'Е',
-               ' e' => ' э', ' E' => ' Э', // "э" is used at the beginning of a word instead of "e"
-               'ye' => 'е', 'Ye' => 'Е',
+               'e' => 'э', 'E' => 'Э', // at the beginning of a word and after a vowel, "э" is used instead of "e" (see regex below)
                'f' => 'ф', 'F' => 'Ф',
                'g' => 'г', 'G' => 'Г',
                'g‘' => 'ғ', 'G‘' => 'Ғ', 'gʻ' => 'ғ', 'Gʻ' => 'Ғ',
@@ -112,6 +110,17 @@ class UzConverter extends LanguageConverter {
                );
        }
 
+       function translate( $text, $toVariant ) {
+               if( $toVariant == 'uz-cyrl' ) {
+                       $text = str_replace( 'ye', 'е', $text );
+                       $text = str_replace( 'Ye', 'Е', $text );
+                       $text = str_replace( 'YE', 'Е', $text );
+                       $text = preg_replace( '/([BVGDJZYKLMNPRSTFXCWQʻ‘H])E/u', '$1Е', $text );
+                       $text = preg_replace( '/([bvgdjzyklmnprstfxcwqʻ‘h])e/ui', '$1е', $text );
+               }
+               return parent::translate( $text, $toVariant );
+       }
+
 }
 
 /**
index d333a51..708ffdd 100644 (file)
@@ -1037,9 +1037,9 @@ $2',
 'suspicious-userlogout' => 'رفض طلب خروجك لأنه يبدو كأنه أرسل عن طريق متصفح معطوب أو وسيط تخزين.',
 'createacct-another-realname-tip' => 'الاسم الحقيقي اختياري.
 إذا اخترت توفيره فسيستخدم لنسبة عمل المستخدم إليه.',
-'pt-login' => 'تسجÙ\8aÙ\84 Ø§Ù\84دخÙ\88Ù\84',
-'pt-createaccount' => 'Ø£Ù\86شئ Ø­Ø³Ø§Ø¨Ø§',
-'pt-userlogout' => 'تسجÙ\8aÙ\84 Ø§Ù\84خرÙ\88ج',
+'pt-login' => 'دخول',
+'pt-createaccount' => 'Ø¥Ù\86شاء Ø­Ø³Ø§Ø¨',
+'pt-userlogout' => 'خروج',
 
 # Email sending
 'php-mail-error-unknown' => "خطأ غير معروف في وظيفة البريد PHP's mail()",
@@ -1930,6 +1930,8 @@ $1",
 'rcnotefrom' => "بالأسفل التغييرات منذ '''$2''' (إلى '''$1''' معروضة).",
 'rclistfrom' => 'أظهر التغييرات بدء من $1',
 'rcshowhideminor' => '$1 التعديلات الطفيفة',
+'rcshowhideminor-show' => 'أظهر',
+'rcshowhideminor-hide' => 'أخف',
 'rcshowhidebots' => '$1 البوتات',
 'rcshowhideliu' => '$1 {{GENDER:$1|مستخدمين مسجلين|مستخدمات مسجلات|مستخدمون مسجلون}}',
 'rcshowhideanons' => '$1 المستخدمين المجهولين',
index 7252579..c53a45f 100644 (file)
@@ -386,7 +386,7 @@ $messages = array(
 'category-empty' => "''Гэтая катэгорыя ня ўтрымлівае ні старонак, ні файлаў.''",
 'hidden-categories' => '{{PLURAL:$1|1=Схаваная катэгорыя|Схаваныя катэгорыі}}',
 'hidden-category-category' => 'Схаваныя катэгорыі',
-'category-subcat-count' => '{{PLURAL:$2|Гэтая катэгорыя зьмяшчае наступную падкатэгорыю.|Гэтая катэгорыя зьмяшчае {{PLURAL:$1|наступную $1 падкатэгорыю|наступныя $1 падкатэгорыі|наступныя $1 падкатэгорыяў}} з $2 агулам.}}',
+'category-subcat-count' => '{{PLURAL:$2|1=Гэтая катэгорыя зьмяшчае наступную падкатэгорыю.|Гэтая катэгорыя зьмяшчае {{PLURAL:$1|наступную $1 падкатэгорыю|наступныя $1 падкатэгорыі|наступныя $1 падкатэгорыяў}} з $2 агулам.}}',
 'category-subcat-count-limited' => 'У гэтай катэгорыі $1 {{PLURAL:$1|падкатэгорыя|падкатэгорыі|падкатэгорыяў}}.',
 'category-article-count' => '{{PLURAL:$2|1=Гэтая катэгорыя ўтрымлівае толькі адну старонку.|{{PLURAL:$1|Паказаная $1 старонка|Паказаныя $1 старонкі|Паказаныя $1 старонак}} гэтай катэгорыі з $2.}}',
 'category-article-count-limited' => 'У гэтай катэгорыі $1 {{PLURAL:$1|старонка|старонкі|старонак}}.',
@@ -1687,9 +1687,17 @@ $1",
 'rcshowhidebots-show' => 'Паказаць',
 'rcshowhidebots-hide' => 'Схаваць',
 'rcshowhideliu' => '$1 зарэгістраваных карыстальнікаў',
+'rcshowhideliu-show' => 'Паказаць',
+'rcshowhideliu-hide' => 'Схаваць',
 'rcshowhideanons' => '$1 ананімаў',
+'rcshowhideanons-show' => 'Паказаць',
+'rcshowhideanons-hide' => 'Схаваць',
 'rcshowhidepatr' => '$1 патруляваныя праўкі',
+'rcshowhidepatr-show' => 'Паказаць',
+'rcshowhidepatr-hide' => 'Схаваць',
 'rcshowhidemine' => '$1 мае праўкі',
+'rcshowhidemine-show' => 'Паказаць',
+'rcshowhidemine-hide' => 'Схаваць',
 'rclinks' => 'Паказаць апошнія $1 зьменаў за мінулыя $2 дзён<br />$3',
 'diff' => 'розьн',
 'hist' => 'гіст',
@@ -4070,7 +4078,7 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'api-error-badtoken' => 'Унутраная памылка: няслушны ключ.',
 'api-error-copyuploaddisabled' => 'Загрузка з URL-адрасу забароненая на гэтым сэрвэры.',
 'api-error-duplicate' => 'Ужо {{PLURAL:$1|1=існуе [$2 іншы файл]|існуюць [$2 іншыя файлы]}} з такім жа зьместам.',
-'api-error-duplicate-archive' => 'Раней на сайце {{PLURAL:$1|1=ўжо быў [$2 файл]|былі [$2 файлы]}} з дакладна такім жа зьместам, але {{PLURAL:$1|1=ён быў выдалены|яны былі выдаленыя}}.',
+'api-error-duplicate-archive' => 'Раней на сайце {{PLURAL:$1|1=быў [$2 файл]|былі [$2 файлы]}} з дакладна такім жа зьместам, але {{PLURAL:$1|1=ён быў выдалены|яны былі выдаленыя}}.',
 'api-error-duplicate-archive-popup-title' => 'Дублікаты {{PLURAL:$1|1=файла, які ўжо быў выдалены|файлаў, якія ўжо былі выдаленыя}}',
 'api-error-duplicate-popup-title' => '{{PLURAL:$1|1=Ідэнтычны файл|Ідэнтычныя файлы}}',
 'api-error-empty-file' => 'Дасланы Вамі файл быў пусты.',
index ac198f4..61697d8 100644 (file)
@@ -605,6 +605,9 @@ $2',
 'suspicious-userlogout' => 'আপনার প্রস্থানের অনুরোধ বাতিল হয়েছে কারণ অনুমিত যে আপনার ব্রাউজার অসম্পূর্ণ অথবা পূবর্বতী তথ্য প্রেরণ করেছে।',
 'createacct-another-realname-tip' => 'আসল নাম ঐচ্ছিক।
 আপনি যদি তা দিতে চান, তাহলে তা ব্যবহারকারীকে তাদের কাজের জন্য স্বীকৃতিদানে ব্যবহার করা হবে।',
+'pt-login' => 'প্রবেশ',
+'pt-createaccount' => 'অ্যাকাউন্ট তৈরি করুন',
+'pt-userlogout' => 'প্রস্থান',
 
 # Email sending
 'php-mail-error-unknown' => 'পিএইচপি এর মেইল () কার্যে অজ্ঞাত ভুল',
@@ -634,7 +637,7 @@ $2',
 'resetpass-temp-password' => 'অস্থায়ী শব্দচাবি:',
 'resetpass-abort-generic' => 'শব্দচাবি পরিবর্তন একটি এক্সটেনশনের কারণে স্থগিত করা হয়েছে।',
 'resetpass-expired' => 'আপনার পাসওয়ার্ডের মেয়াদ উত্তীর্ণ হয়েছে। অনুগ্রহ করে নতুন পাসওয়ার্ড নির্ধারণ করুন।',
-'resetpass-expired-soft' => 'আপনার পাসওয়ার্ড মেয়াদ উত্তীর্ণ হয়েছে, এবং আপনাকে একটি নতুন পাসওয়ার্ড নির্ধারণ করতে হবে। অনুগ্রহ করে এখনই একটি নতুন পাসওয়ার্ড নির্ধারণ করুন অথবা পরে পরিবর্তন করতে চাইলে বাতিল বাটনে ক্লিক করুন।',
+'resetpass-expired-soft' => 'আপনার পাসওয়ার্ডের মেয়াদ উত্তীর্ণ হয়েছে এবং আপনাকে একটি নতুন পাসওয়ার্ড নির্ধারণ করতে হবে। অনুগ্রহ করে এখনই একটি নতুন পাসওয়ার্ড নির্ধারণ করুন অথবা পরে পরিবর্তন করতে চাইলে "{{int:resetpass-submit-cancel}}" বাটনে ক্লিক করুন।',
 
 # Special:PasswordReset
 'passwordreset' => 'শব্দচাবি রিসেট',
@@ -1157,6 +1160,7 @@ $1",
 'searchrelated' => 'সম্পর্কিত',
 'searchall' => 'সমস্ত',
 'showingresults' => "নিচে '''$2''' নং থেকে শুরু করে {{PLURAL:$1|'''1''' ফলাফল|'''$1''' ফলাফলসমূহ}} দেখানো হল।",
+'showingresultsinrange' => '#<strong>$2</strong> থেকে #<strong>$3</strong> পরিসীমার মধ্যে {{PLURAL:$1|<strong>১টি</strong> ফলাফল|<strong>$1টি</strong> ফলাফল}} নিচে দেখানো হচ্ছে।',
 'showingresultsnum' => "নিম্নে {{PLURAL:$3|'''1''' ফলাফল|'''$3''' ফলাফলসমূহ}} দেখানো হয়েছে যা শুরু হয়েছে #'''$2''' দিয়ে।",
 'showingresultsheader' => "'''$4''' এর জন্য {{PLURAL:$5|ফলাফল '''$3''' এর '''$1'''|ফলাফলসমূহ '''$3''' এর মধ্যে '''$1 - $2'''}}",
 'search-nonefound' => 'খোঁজকৃত পাতার সাথে মিলে যায় এমন কোনো ফলাফল নেই।',
@@ -1472,14 +1476,26 @@ $1",
 'recentchanges-legend-heading' => "'''ব্যাখ্যামূলক বর্ণনা:'''",
 'recentchanges-legend-newpage' => '(আরও দেখুন [[Special:NewPages|নতুন পাতার তালিকা]])',
 'recentchanges-legend-plusminus' => "(''±১২৩'')",
-'rcnotefrom' => "'''$2'''-এর পরে সংঘটিত পরিবর্তনগুলো নিচে দেখানো হল ('''$1'''টি)।",
-'rclistfrom' => '$1-এর পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও।',
+'rcnotefrom' => '<strong>$2</strong>টা থেকে সংঘটিত পরিবর্তনগুলি (সর্বোচ্চ <strong>$1টি</strong> দেখানো হয়েছে)',
+'rclistfrom' => '$2, $3 তারিখের পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও',
 'rcshowhideminor' => 'অনুল্লেখ্য পরিবর্তনগুলো $1',
+'rcshowhideminor-show' => 'দেখাও',
+'rcshowhideminor-hide' => 'আড়াল করো',
 'rcshowhidebots' => 'বটগুলো $1',
+'rcshowhidebots-show' => 'দেখাও',
+'rcshowhidebots-hide' => 'আড়াল করো',
 'rcshowhideliu' => 'নিবন্ধিত ব্যবহারকারীদের $1',
+'rcshowhideliu-show' => 'দেখাও',
+'rcshowhideliu-hide' => 'আড়াল করো',
 'rcshowhideanons' => 'বেনামী ব্যবহারকারীদের $1',
+'rcshowhideanons-show' => 'দেখাও',
+'rcshowhideanons-hide' => 'আড়াল করো',
 'rcshowhidepatr' => 'পরীক্ষিত সম্পাদনা $1',
+'rcshowhidepatr-show' => 'দেখাও',
+'rcshowhidepatr-hide' => 'আড়াল করো',
 'rcshowhidemine' => 'আমার সম্পাদনাগুলো $1',
+'rcshowhidemine-show' => 'দেখাও',
+'rcshowhidemine-hide' => 'আড়াল করো',
 'rclinks' => "'''প্রদর্শনের ধরন'''<br />
 * বিগত ($2) দিনের শেষ ($1)টি পরিবর্তন দেখাও
 * $3",
index ed2dbcb..0b81c5f 100644 (file)
@@ -737,7 +737,9 @@ Espereu $1 abans de tornar-ho a provar.",
 'suspicious-userlogout' => "S'ha denegat la vostra petició per tancar la sessió ja què sembla que va ser enviada per un navegador defectuós o un proxy cau.",
 'createacct-another-realname-tip' => "El nom real és opcional.
 Si decidiu proporcionar-lo, s'utilitzarà per a reconèixer a l'usuari el seu treball.",
+'pt-login' => 'Iniciar sessió',
 'pt-createaccount' => 'Crea un compte',
+'pt-userlogout' => 'Finalitza la sessió',
 
 # Email sending
 'php-mail-error-unknown' => 'Error desconegut en la funció mail() de PHP',
@@ -2565,6 +2567,7 @@ Per més detalls, la última entrada del registre es mostra a continuació:",
 'sp-contributions-blocked-notice-anon' => 'En aquests moments, aquesta adreça IP es troba blocada.
 Per més detalls, la última entrada del registre es mostra a continuació:',
 'sp-contributions-search' => 'Cerca les contribucions',
+'sp-contributions-suppresslog' => "contribucions suprimides de l'usuari",
 'sp-contributions-username' => "Adreça IP o nom d'usuari:",
 'sp-contributions-toponly' => 'Mostra només revisions superiors',
 'sp-contributions-newonly' => 'Mostra només modificacions que són creacions de pàgina',
index 1fc077a..668daf7 100644 (file)
@@ -327,7 +327,7 @@ $messages = array(
 'tog-usenewrc' => 'Лелабе дика могӀам керла чу хийцамашна (оьшу JavaScript)',
 'tog-numberheadings' => 'Ша шех хlитто терахь корташна',
 'tog-showtoolbar' => 'Гайта лакхара гӀирсан дакъа нисйеш аттон оц тадар чохь (JavaScript)',
-'tog-editondblclick' => 'Нисйе агӀонаш шозза тӀетаӀийча (JavaScript)',
+'tog-editondblclick' => 'Нисъе агӀонаш шозза тӀетаӀийча (JavaScript)',
 'tog-editsectiononrightclick' => 'Нисде дакъа шозза бакъехьар дахка тӀетаӀийча оцу кортан (JavaScript)',
 'tog-rememberpassword' => 'Даглаца сан дӀаяздар хӀокху браузеран тӀехь (цхьан $1 {{PLURAL:$1|дийнахь}})',
 'tog-watchcreations' => 'ТӀетоха ас кхоьллина агӀонаш тергаме могӀам чу',
@@ -470,7 +470,7 @@ $messages = array(
 # Cologne Blue skin
 'qbfind' => 'Лаха',
 'qbbrowse' => 'Хьажар',
-'qbedit' => 'Нисйé',
+'qbedit' => 'Нисъе',
 'qbpageoptions' => 'Агlо нисйар',
 'qbmyoptions' => 'Хьан нисдарш',
 'faq' => 'СиХХ',
@@ -484,7 +484,7 @@ $messages = array(
 'vector-action-undelete' => 'Меттахlоттадé',
 'vector-action-unprotect' => 'ГӀароллех къаста',
 'vector-view-create' => 'Кхоллар',
-'vector-view-edit' => 'Нисйé',
+'vector-view-edit' => 'Нисъе',
 'vector-view-history' => 'АгӀона хийцамаш',
 'vector-view-view' => 'Éшар',
 'vector-view-viewsource' => 'Билглонашка хьажа',
@@ -508,9 +508,9 @@ $messages = array(
 'permalink' => 'Даиман йолу хьажораг',
 'print' => 'Зорба тоха',
 'view' => 'Хьажа',
-'edit' => 'Нисйé',
+'edit' => 'Нисъе',
 'create' => 'Кхолла',
-'editthispage' => 'Нисйé хlара агlо',
+'editthispage' => 'Нисъе хӀъара агӀо',
 'create-this-page' => 'Кхолла хlара агlо',
 'delete' => 'ДӀаяккха',
 'deletethispage' => 'ДӀаяккха хӀара агӀо',
@@ -594,10 +594,10 @@ $1',
 'newmessageslinkplural' => '{{PLURAL:$1|керла хаам|999=керла хаамаш}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|тӀаьхьара бина хийцам|999=тӀаьхьара бина хийцамаш}}',
 'youhavenewmessagesmulti' => 'Хьуна кхаьчна керла хаам оцу $1',
-'editsection' => 'нисйé',
-'editold' => 'нисйé',
+'editsection' => 'нисъе',
+'editold' => 'нисъе',
 'viewsourceold' => 'хьажа йолуш йолучу коде',
-'editlink' => 'нисйé',
+'editlink' => 'нисъе',
 'viewsourcelink' => 'хьажа йолуш йолучу коде',
 'editsectionhint' => 'Нисде дакъа: $1',
 'toc' => 'Чулацам',
@@ -1361,7 +1361,7 @@ $1",
 'group' => 'Тоба:',
 'group-user' => 'Декъашхой',
 'group-autoconfirmed' => 'Ша тӀелаьцболу декъашхой',
-'group-bot' => 'ШаболÑ\85Ñ\85ой',
+'group-bot' => 'Ð\91оÑ\82аÑ\88',
 'group-sysop' => 'Куьйгалхой',
 'group-bureaucrat' => 'Бюрократаш',
 'group-suppress' => 'Ревизораш',
@@ -1369,14 +1369,14 @@ $1",
 
 'group-user-member' => '{{GENDER:$1|декъашхо}}',
 'group-autoconfirmed-member' => '{{GENDER:$1|шашеха тӀелаьцна декъашхо}}',
-'group-bot-member' => 'шаболххо',
+'group-bot-member' => '{{GENDER:$1|бот}}',
 'group-sysop-member' => '{{GENDER:$1|куьйгалхо}}',
 'group-bureaucrat-member' => '{{GENDER:$1|бюрократхо}}',
 'group-suppress-member' => '{{GENDER:$1|ревизор}}',
 
 'grouppage-user' => '{{ns:project}}:Декъашхой',
 'grouppage-autoconfirmed' => '{{ns:project}}:Бакъонаш йолу декъашхой',
-'grouppage-bot' => '{{ns:project}}:ШаболÑ\85Ñ\85ой',
+'grouppage-bot' => '{{ns:project}}:Ð\91оÑ\82аÑ\88',
 'grouppage-sysop' => '{{ns:project}}:Куьйгалхой',
 'grouppage-bureaucrat' => '{{ns:project}}:Бюрократаш',
 'grouppage-suppress' => '{{ns:project}}:Ревизораш',
@@ -1506,7 +1506,7 @@ $1",
 'rcshowhideminor' => '$1 кегийра нисдарш',
 'rcshowhideminor-show' => 'Гайта',
 'rcshowhideminor-hide' => 'Къайладаха',
-'rcshowhidebots' => '$1 шабелхалой',
+'rcshowhidebots' => '$1 боташ',
 'rcshowhidebots-show' => 'Гайта',
 'rcshowhidebots-hide' => 'Къайлабаха',
 'rcshowhideliu' => '$1 шайн цӀершца болу декъашхой',
@@ -1777,7 +1777,7 @@ PICT # тайп тайпан
 
 'brokenredirects' => 'ДIахаьдна долу дIасахьажораш',
 'brokenredirectstext' => 'Лахара дӀасахьажийнарш ю йоцучу агӀонийн тӀе хьажийна:',
-'brokenredirects-edit' => 'нисйé',
+'brokenredirects-edit' => 'нисъе',
 'brokenredirects-delete' => 'дӀаяккха',
 
 'withoutinterwiki' => 'Юкъарвики-хьажорагаш йоцу агӀонаш',
@@ -1916,7 +1916,7 @@ PICT # тайп тайпан
 'activeusers-intro' => 'Лахахь гойтуш бу  {{PLURAL:$1|1=тӀаьхьара $1 динахь|тӀаьхьара $1 деношкахь}} хийцамаш бина декъашхой.',
 'activeusers-count' => '{{PLURAL:$3|1=тӀаьхьарчу $3 динахь|тӀаьхьара $3 деношкахь}} $1 {{PLURAL:$1|1=нисдар|нисдарш}} дина',
 'activeusers-from' => 'Гучé баха декъашхой, болалуш болу тӀера:',
-'activeusers-hidebots' => 'Къайлабаха шабелхалой',
+'activeusers-hidebots' => 'Къайлабаха боташ',
 'activeusers-hidesysops' => 'Къайлабаха куьйгалхой',
 'activeusers-noresult' => 'Декъашхой цакарий.',
 
@@ -2504,7 +2504,7 @@ PICT # тайп тайпан
 'newimages' => 'Керлачу файлийн галерей',
 'newimages-summary' => 'ХӀокху белхан агӀона чохь гойтуш ю дукха хан йоццуш чуйаьхна файлаш.',
 'newimages-legend' => 'Литтар',
-'showhidebots' => '$1 шабелхалой',
+'showhidebots' => '$1 боташ',
 'ilsubmit' => 'Лаха',
 'bydate' => 'терахьашца',
 'sp-newimages-showfrom' => 'Гайта керла файлаш $2, $1 тӀера дуьйна',
@@ -2823,7 +2823,7 @@ MediaWiki яржош ю и шуна пайдане хир яц те аьлла,
 'tags-active-header' => 'Жигара?',
 'tags-hitcount-header' => 'Къастам бина нисдарш',
 'tags-active-yes' => 'ХӀаъ',
-'tags-edit' => 'нисйé',
+'tags-edit' => 'нисъе',
 'tags-hitcount' => '$1 {{PLURAL:$1|хийцам|хийцамаш|хийцамаш}}',
 
 # Special:ComparePages
index 5488a6b..fcf72c6 100644 (file)
@@ -706,6 +706,7 @@ $2',
 'login-throttled' => 'ژمارەیەکی زۆر هەوڵت داوە بۆ چوونە ژوورەوە.
 تکایە پێش هەوڵی دووبارە، نەختێک بوەستە.',
 'loginlanguagelabel' => 'زمان: $1',
+'pt-userlogout' => 'بچۆ دەرەوە',
 
 # Change password dialog
 'changepassword' => 'تێپەڕوشە بگۆڕە',
@@ -1511,6 +1512,8 @@ $1",
 'rcnotefrom' => "ئەوی‌ خوارەوە گۆڕانکارییەکانە لە '''$2'''ەوە (ھەتا '''$1''' نیشاندراو).",
 'rclistfrom' => 'گۆڕانکارییە نوێکان نیشان بدە بە دەستپێکردن لە $1',
 'rcshowhideminor' => 'دەستکارییە بچووکەکان $1',
+'rcshowhideminor-show' => 'نیشان بدە',
+'rcshowhideminor-hide' => 'بشارەوە',
 'rcshowhidebots' => 'بۆتەکان $1',
 'rcshowhideliu' => 'بەکارھێنەرە تۆمارکراوەکان $1',
 'rcshowhideanons' => 'بەکارھێنەرە نەناسراوەکان $1',
index 4ab4fbc..00d942b 100644 (file)
@@ -1242,7 +1242,7 @@ Vær opmæksom på at bevare kontinuiteten i sidehistorikken.
 'showhideselectedversions' => 'Vis/skjul udvalgte versioner',
 'editundo' => 'fjern redigering',
 'diff-empty' => '(Ingen forskel)',
-'diff-multi-sameuser' => '({{PLURAL:$1|En mellemliggende version|$1 mellemliggende versioner}} af den samme bruger, vises ikke)',
+'diff-multi-sameuser' => '({{PLURAL:$1|En mellemliggende version|$1 mellemliggende versioner}} af den samme bruger vises ikke)',
 'diff-multi-otherusers' => '({{PLURAL:$1|En mellemliggende version|$1 mellemliggende versioner}} af {{PLURAL:$2|en anden bruger|$2 andre brugere}} ikke vist)',
 'diff-multi-manyusers' => '({{PLURAL:$1|En mellemliggende version|$1 mellemliggende versioner}} af mere end $2 {{PLURAL:$2|bruger|brugere}} ikke vist)',
 'difference-missing-revision' => '{{PLURAL:$2|En revision|$2 revisioner}} af denne forskel ($1) {{PLURAL:$2|blev|blev}} ikke fundet.
index 9e39cfb..7fbfde8 100644 (file)
@@ -977,7 +977,7 @@ Wenn du ihn angibst, wird er für die Zuordnung der Beiträge verwendet.',
 
 # Change password dialog
 'changepassword' => 'Passwort ändern',
-'resetpass_announce' => 'Um die Anmeldung abzuschließen, musst du ein neues Passwort wählen.',
+'resetpass_announce' => 'Um die Anmeldung abzuschließen, musst du ein neues Passwort festlegen.',
 'resetpass_text' => '<!-- Ergänze den Text hier -->',
 'resetpass_header' => 'Passwort ändern',
 'oldpassword' => 'Altes Passwort:',
@@ -1497,7 +1497,7 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'shown-title' => 'Zeige $1 {{PLURAL:$1|Ergebnis|Ergebnisse}} pro Seite',
 'viewprevnext' => 'Zeige ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Es gibt eine Seite, die den Namen „[[:$1]]“ hat.'''",
-'searchmenu-new' => '<strong>Erstelle die Seite „[[:$1]]“ in diesem Wiki.</strong> {{PLURAL:$2|0=|Siehe auch die mit deiner Suche gefundene Seite.|Siehe auch die gefundenen Suchergebnisse.}}',
+'searchmenu-new' => '<strong>Erstelle die Seite „[[:$1]]“ in diesem Wiki.</strong> {{PLURAL:$2|0=|Siehe auch die über deine Suche gefundene Seite.|Siehe auch die gefundenen Suchergebnisse.}}',
 'searchprofile-articles' => 'Inhaltsseiten',
 'searchprofile-project' => 'Hilfe- und Projektseiten',
 'searchprofile-images' => 'Multimedia',
@@ -1651,7 +1651,7 @@ Diese Information ist öffentlich.',
 'prefs-displaywatchlist' => 'Anzeigeoptionen',
 'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Versionsvergleich',
-'prefs-help-prefershttps' => 'Diese Einstellung wird bei deiner nächsten Anmeldung wirksam',
+'prefs-help-prefershttps' => 'Diese Einstellung wird bei deiner nächsten Anmeldung wirksam.',
 'prefs-tabs-navigation-hint' => 'Tipp: Du kannst die linke und rechte Pfeiltasten benutzen, um zwischen den Registerkarten in der Reiterliste zu navigieren.',
 
 # User preference: email validation using jQuery
@@ -2806,6 +2806,7 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'Diese IP-Adresse ist zurzeit gesperrt.
 Zur Information folgt der aktuelle Auszug aus dem Sperr-Logbuch:',
 'sp-contributions-search' => 'Suche nach Benutzerbeiträgen',
+'sp-contributions-suppresslog' => 'Unterdrückte Benutzerbeiträge',
 'sp-contributions-username' => 'IP-Adresse oder Benutzername:',
 'sp-contributions-toponly' => 'Nur aktuelle Versionen zeigen',
 'sp-contributions-newonly' => 'Nur Seitenerstellungen anzeigen',
index a1f4dd1..3965382 100644 (file)
@@ -659,7 +659,7 @@ Keyepelê {{SITENAME}} eşkeno xeta eşkera bıkero.',
 Seba lista pelanê xasanê vêrdeyan reca kena: [[Special:SpecialPages|{{int:specialpages}}]].',
 
 # General errors
-'error' => 'Ğeta',
+'error' => 'Xeta',
 'databaseerror' => 'Ğetay ardoği',
 'databaseerror-text' => 'Tabanda malumati de ğırabiya persayışi bi
 Na nusteber  zew ğırabin asınena.',
@@ -1433,7 +1433,7 @@ Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'powersearch-togglenone' => 'Çıniyo',
 '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.',
-'search-error' => 'Cı geyrayış de zu ğeta emé meydan:$1',
+'search-error' => 'Cıgeyrayış de yew xeta emê meydan: $1',
 
 # Preferences page
 'preferences' => 'Tercihi',
index 5f61e3d..e2351d6 100644 (file)
@@ -2501,6 +2501,7 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'Toś ta IP-adresa jo tuchylu zablokěrowana.
 Nejnowšy zapisk protokola blokěrowanjow pódawa se dołojce ako referenca:',
 'sp-contributions-search' => 'Pśinoski pytaś',
+'sp-contributions-suppresslog' => 'pódtłocone wužywarske pśinoski',
 'sp-contributions-username' => 'IP-adresa abo wužywarske mě:',
 'sp-contributions-toponly' => 'Jano wuše wersije pokazaś',
 'sp-contributions-newonly' => 'Jano změny pokazaś, kótarež su napóranja bokow',
index d42e385..171951f 100644 (file)
@@ -2785,6 +2785,7 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'Esta dirección IP se encuentra actualmente bloqueada.
 A continuación se muestra la última entrada del registro de bloqueos para mayor referencia.',
 'sp-contributions-search' => 'Buscar contribuciones',
+'sp-contributions-suppresslog' => 'Contribuciones borradas de usuario',
 'sp-contributions-username' => 'Dirección IP o nombre de usuario:',
 'sp-contributions-toponly' => 'Solo mostrar últimas ediciones de página',
 'sp-contributions-newonly' => 'Mostrar solo ediciones que son creaciones de páginas',
index e7bf3ae..b145235 100644 (file)
@@ -873,7 +873,7 @@ Et sisselogimine lõpule viia, pead määrama siin uue parooli:',
 'resetpass-temp-password' => 'Ajutine parool:',
 'resetpass-abort-generic' => 'Tarkvaralisa on paroolimuudatuse abortinud.',
 'resetpass-expired' => 'Sinu parool on iganenud. Palun määra uus parool, et sisse logida.',
-'resetpass-expired-soft' => 'Sinu parool on iganenud ja tuleb uuesti määrata. Palun vali kohe uus parool või klõpsa "Loobu", et määrata see hiljem.',
+'resetpass-expired-soft' => 'Sinu parool on iganenud ja tuleb uuesti määrata. Palun vali kohe uus parool või klõpsa "{{int:resetpass-submit-cancel}}", et määrata see hiljem.',
 
 # Special:PasswordReset
 'passwordreset' => 'Parooli lähtestamine',
@@ -1718,14 +1718,26 @@ See teave on avalik.',
 'recentchanges-label-unpatrolled' => 'Seda muudatust ei ole veel kontrollitud',
 'recentchanges-label-plusminus' => 'Lehekülje suuruse muutus baitides',
 'recentchanges-legend-newpage' => '(vaata ka [[Special:NewPages|uute lehekülgede loendit]])',
-'rcnotefrom' => "Allpool on toodud muudatused alates: '''$2''' (näidatakse kuni '''$1''' muudatust)",
+'rcnotefrom' => 'Allpool on toodud muudatused alates: <strong>$2</strong> (näidatakse kuni <strong>$1</strong> muudatust)',
 'rclistfrom' => 'Näita muudatusi alates: $1',
 'rcshowhideminor' => 'Pisiparandused ($1)',
+'rcshowhideminor-show' => 'näita',
+'rcshowhideminor-hide' => 'peida',
 'rcshowhidebots' => 'Robotid ($1)',
+'rcshowhidebots-show' => 'näita',
+'rcshowhidebots-hide' => 'peida',
 'rcshowhideliu' => 'Registreeritud kasutajad ($1)',
+'rcshowhideliu-show' => 'näita',
+'rcshowhideliu-hide' => 'peida',
 'rcshowhideanons' => 'Anonüümsed kasutajad ($1)',
+'rcshowhideanons-show' => 'näita',
+'rcshowhideanons-hide' => 'peida',
 'rcshowhidepatr' => 'Kontrollitud muudatused ($1)',
+'rcshowhidepatr-show' => 'näita',
+'rcshowhidepatr-hide' => 'peida',
 'rcshowhidemine' => 'Minu parandused ($1)',
+'rcshowhidemine-show' => 'näita',
+'rcshowhidemine-hide' => 'peida',
 'rclinks' => 'Näita viimast $1 muudatust viimase $2 päeva jooksul<br />$3',
 'diff' => 'erin',
 'hist' => 'ajal',
@@ -1855,6 +1867,7 @@ Enne kui jätkad uuesti üleslaadimisega, peaksid paluma olukorda hinnata kellel
 'php-uploaddisabledtext' => 'Failide üleslaadmine on PHP seadetes keelatud.
 Palun vaata <code>file_uploads</code> sätet.',
 'uploadscripted' => 'See fail sisaldab HTML- või skriptikoodi, mida veebilehitseja võib valesti kuvada.',
+'uploadscriptednamespace' => 'See SVG-fail sisaldab keelatud nimeruumi "$1".',
 'uploadinvalidxml' => 'Üleslaaditud failis sisalduvat XMLi ei õnnestunud liigendada.',
 'uploadvirus' => 'Fail sisaldab viirust! Täpsemalt: $1',
 'uploadjava' => 'See fail on ZIP-fail, milles on Java .class-fail.
@@ -2661,8 +2674,10 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'See IP-aadress on parajasti blokeeritud.
 Allpool on toodud viimane blokeerimislogi sissekanne:',
 'sp-contributions-search' => 'Kaastöö otsimine',
+'sp-contributions-suppresslog' => 'varjatud kaastöö',
 'sp-contributions-username' => 'IP-aadress või kasutajanimi:',
 'sp-contributions-toponly' => 'Ainult uusimad redaktsioonid',
+'sp-contributions-newonly' => 'Näita ainult uute lehekülgedega alustamist',
 'sp-contributions-submit' => 'Otsi',
 
 # What links here
index a4bce8e..843bb4d 100644 (file)
@@ -454,7 +454,7 @@ $imageFiles = array(
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'پیوند خط کشی شده در زیر:',
+'tog-underline' => 'خط کشیدن زیر پیوندها:',
 'tog-hideminor' => 'تغییرات جزئی از فهرست تغییرات اخیر پنهان شوند',
 'tog-hidepatrolled' => 'ویرایش‌های گشت‌خورده از فهرست تغییرات اخیر پنهان شوند',
 'tog-newpageshidepatrolled' => 'صفحه‌های گشت‌خورده از فهرست صفحه‌های تازه پنهان شوند',
@@ -908,7 +908,7 @@ $2',
 'userlogin-resetpassword-link' => 'گذرواژه‌تان را فراموش کردید؟',
 'helplogin-url' => 'Help:ورود به سامانه',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|راهنمای ورود به سامانه]]',
-'userlogin-loggedin' => 'Ø´Ù\85ا Ø¯Ø± Ø­Ø§Ù\84 Ø­Ø§Ø¶Ø± Ø¨Ù\87â\80\8cعÙ\86Ù\88اÙ\86 {{GENDER:$1|$1}} Ù\88ارد Ø³Û\8cستÙ\85 Ø´Ø¯Ù\87â\80\8cاÛ\8cد.
+'userlogin-loggedin' => 'شما در حال حاضر به‌عنوان {{GENDER:$1|$1}} وارد شده‌اید.
 از فرم پایین برای ورود به‌عنوان یک کاربر دیگر استفاده کنید.',
 'userlogin-createanother' => 'ایجاد یک حساب کاربری دیگر',
 'createacct-join' => 'اطلاعاتتان را در زیر وارد کنید',
@@ -1001,7 +1001,7 @@ $2',
 'usernamehasherror' => 'نام کاربری نمی‌تواند شامل نویسه‌های درهم باشد',
 'login-throttled' => 'شما به تازگی چندین‌بار برای ثبت ورود تلاش کرده‌اید.
 لطفاً پیش از آنکه دوباره تلاش کنید $1 صبر کنید.',
-'login-abort-generic' => 'ورود شما به سیستم ناموفق بود - خاتمهٔ ناگهانی داده شد',
+'login-abort-generic' => 'ورود شما ناموفق بود - خاتمهٔ ناگهانی داده شد',
 'loginlanguagelabel' => 'زبان: $1',
 'suspicious-userlogout' => 'درخواست شما برای خروج از سامانه رد شد زیرا به نظر می‌رسد که این درخواست توسط یک مرورگر معیوب یا پروکسی میانگیر ارسال شده باشد.',
 'createacct-another-realname-tip' => 'نام واقعی اختیاری است.
@@ -1017,7 +1017,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'تغییر گذرواژه',
-'resetpass_announce' => 'شما باید برای پایان ورود به سیستم،رمز عبور جدیدی را تنظیم کنید.',
+'resetpass_announce' => 'شما باید برای پایان ورود به سامانه، گذرواژهٔ جدیدی را تنظیم کنید.',
 'resetpass_text' => '<!-- اینجا متن اضافه کنید -->',
 'resetpass_header' => 'تغییر گذرواژهٔ حساب کاربری',
 'oldpassword' => 'گذرواژهٔ پیشین:',
@@ -1039,7 +1039,7 @@ $2',
 'resetpass-temp-password' => 'گذرواژهٔ موقت:',
 'resetpass-abort-generic' => 'تغییر گذرواژه به دست یکی از افزونه‌ها لغو شده است.',
 'resetpass-expired' => 'رمز عبور شما منقضی شده‌است. لطفاً برای ورود رمز عبور جدیدی را تنظیم کنید.',
-'resetpass-expired-soft' => 'رمز عبور شما منقضی شده‌است، و نیاز به تنظیم مجدد دارد. لطفاً اکنون رمز عبور جدیدی را انتخاب کنید، یا برای تنظیم مجدد آن بعدآً، دکمهٔ لغو را کلیک کنید.',
+'resetpass-expired-soft' => 'رمز عبور شما منقضی شده‌است، و نیاز به تنظیم مجدد دارد. لطفاً اکنون رمز عبور جدیدی را انتخاب کنید، یا برای تنظیم مجدد آن بعدآً، دکمه "{{int:resetpass-submit-cancel}}" را کلیک کنید.',
 
 # Special:PasswordReset
 'passwordreset' => 'بازنشانی گذرواژه',
@@ -1309,8 +1309,8 @@ $2
 'content-failed-to-parse' => 'عدم موفقیت در تجزیه محتوای $2 برای مدل $1: $3',
 'invalid-content-data' => 'داده محتوای نامعتبر',
 'content-not-allowed-here' => 'محتوای «$1» در صفحهٔ [[$2]] مجاز نیست',
-'editwarning-warning' => 'خروج از این صفحه ممکن است باعث شود که شما هر شانسی که به وجود آورده اید را از دست بدهید.
-اگر شما وارد سیستم شده‌اید، می‌توانید این هشدار را در بخش «در حال ویرایش» ترجیحاتتان غیرفعال کنید.',
+'editwarning-warning' => 'خروج از این صفحه ممکن است باعث شود که شما هر شانسی که به وجود آوردهاید را از دست بدهید.
+اگر شما وارد سامانه شده‌اید، می‌توانید این هشدار را در بخش «{{int:prefs-editing}}» ترجیحاتتان غیرفعال کنید.',
 'editpage-notsupportedcontentformat-title' => 'فرمت محتوا پشتیبانی نشده',
 'editpage-notsupportedcontentformat-text' => 'فرمت محتوای $1 توسط مدل محتوای $2 پشتیبانی نشده‌است.',
 
@@ -1895,7 +1895,7 @@ $1",
 'recentchanges-legend-heading' => "'''اختصارها:'''",
 'recentchanges-legend-newpage' => '(همچنین به [[Special:NewPages|فهرست صفحات جدید]] نگاه کنید)',
 'recentchanges-legend-plusminus' => "('' ±۱۲۳'')",
-'rcnotefrom' => 'در زیر تغییرات از تاریخ <b>$2</b> آمده‌اند (تا <b>$1</b> مورد نشان داده می‌شود).',
+'rcnotefrom' => 'در زیر تغییرات از <strong>$2</strong> (تا <strong>$1</strong> نشان داده شده‌است).',
 'rclistfrom' => 'نمایش تغییرات جدید با شروع از $1',
 'rcshowhideminor' => '$1 ویرایش‌های جزئی',
 'rcshowhideminor-show' => 'نمایش',
@@ -2647,7 +2647,7 @@ $PAGEINTRO $NEWPAGE
 نامه: $PAGEEDITOR_EMAIL
 ویکی: $PAGEEDITOR_WIKI
 
-تا هنگامی که به صفحه سر نزده‌اید، در صورت رخ‌دادنِ احتمالیِ فعالیت بیشتر، تا زمانی که در با کاربریتان در سیستم هستید، اعلانیه‌ای برای شما فرستاده نخواهد شد.
+تا هنگامی که به صفحه سر نزده‌اید، در صورت رخ‌دادنِ احتمالیِ فعالیت بیشتر، تا زمانی که در با کاربریتان در سامانه هستید، اعلانیه‌ای برای شما فرستاده نخواهد شد.
 شما همچنین می‌توانید در صفحهٔ پی‌گیری‌های خود پرچم‌های مربوط به آگاهی‌رسانی را صفر کنید همچنین می‌توانید پرچم‌های آگاهی‌سازی را بازنشانی کنید.
 
 دوستدار شما، سامانهٔ آگاهی‌رسانی {{SITENAME}}
@@ -2882,6 +2882,7 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'این نشانی آی‌پی در حال حاضر بسته است.
 آخرین سیاههٔ بسته شدن در زیر آمده‌است:',
 'sp-contributions-search' => 'جستجوی مشارکت‌ها',
+'sp-contributions-suppresslog' => 'کمک‌های کاربر متوقف شده',
 'sp-contributions-username' => 'نشانی آی‌پی یا نام کاربری:',
 'sp-contributions-toponly' => 'فقط ویرایش‌هایی که آخرین نسخه‌اند نمایش داده شود',
 'sp-contributions-newonly' => 'فقط نمایش ویرایش‌هایی که تولید‌های صفحه هستند',
index a0d7211..1ed8b4a 100644 (file)
@@ -2820,6 +2820,7 @@ $1',
 'sp-contributions-blocked-notice-anon' => "Cette adresse IP est actuellement bloquée.
 La dernière entrée du journal des blocages est indiquée ci-dessous à titre d'information :",
 'sp-contributions-search' => 'Rechercher les contributions',
+'sp-contributions-suppresslog' => 'contributions des utilisateurs supprimées',
 'sp-contributions-username' => "Adresse IP ou nom d'utilisateur :",
 'sp-contributions-toponly' => 'Ne montrer que les contributions qui sont les dernières des articles',
 'sp-contributions-newonly' => 'Afficher uniquement les modifications qui sont des créations de page',
index a11e965..6530ba3 100644 (file)
@@ -522,7 +522,7 @@ $messages = array(
 'articlepage' => 'Vêde la pâge de contegnu',
 'talk' => 'Discussion',
 'views' => 'Vues',
-'toolbox' => 'Bouèta d’outils',
+'toolbox' => 'Outils',
 'userpage' => 'Vêde la pâge utilisator',
 'projectpage' => 'Vêde la pâge projèt',
 'imagepage' => 'Vêde la pâge du fichiér',
@@ -805,7 +805,7 @@ Se vos plét, tornâd èprovar.',
 'passwordtooshort' => 'Voutron contresegno dêt contegnir por lo muens $1 caractèro{{PLURAL:$1||s}}.',
 'password-name-match' => 'Voutron contresegno dêt étre difèrent de voutron nom d’utilisator.',
 'password-login-forbidden' => 'L’usâjo de cél nom d’utilisator et de cél contresegno est étâ dèfendu.',
-'mailmypassword' => 'Recêvre un contresegno novél per mèssageria èlèctronica',
+'mailmypassword' => 'Rebetar a zérô lo contresegno',
 'passwordremindertitle' => 'Contresegno temporèro novél por {{SITENAME}}',
 'passwordremindertext' => 'Yon (probâblament vos, dês l’adrèce IP $1) at demandâ un contresegno
 novél por {{SITENAME}} ($4). Un contresegno temporèro est étâ fêt por
@@ -1715,7 +1715,7 @@ Se vos chouèsésséd de lo balyér, serat empleyê por vos atribuar voutres ôv
 'rc_categories_any' => 'Totes',
 'rc-change-size-new' => '$1 octèt{{PLURAL:$1||s}} aprés changement',
 'newsectionsummary' => '/* $1 */ novèla sèccion',
-'rc-enhanced-expand' => 'Montrar los dètalys (at fôta de JavaScript)',
+'rc-enhanced-expand' => 'Fâre vêre los dètalys',
 'rc-enhanced-hide' => 'Cachiér los dètalys',
 'rc-old-title' => 'fêta avouéc lo titro originâl « $1 »',
 
@@ -2632,9 +2632,9 @@ $1',
 'contributions' => 'Contribucions de l’utilisat{{GENDER:$1|or|rice}}',
 'contributions-title' => 'Lista de les contribucions a l’usanciér $1',
 'mycontris' => 'Contribucions',
-'contribsub2' => 'Por $1 ($2)',
+'contribsub2' => 'Por {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Y at gins de changement que corrèspond a cetos critèros.',
-'uctop' => '(dèrriére)',
+'uctop' => '(d’ora)',
 'month' => 'Dês lo mês (et devant) :',
 'year' => 'Dês l’an (et devant) :',
 
@@ -3234,7 +3234,7 @@ Se vos l’ègzécutâd, voutron sistèmo pôt étre compromês.",
 'file-nohires' => 'Gins de rèsolucion ples hôta disponibla.',
 'svg-long-desc' => 'Fichiér SVG, rèsolucion de $1 × $2 pixèls, talye : $3',
 'svg-long-error' => 'Fichiér SVG envalido : $1',
-'show-big-image' => 'Émâge en rèsolucion ples hôta',
+'show-big-image' => 'Fichiér d’origina',
 'show-big-image-preview' => 'Talye de ceti apèrçu : $1.',
 'show-big-image-other' => '{{PLURAL:$2|Ôtra rèsolucion|Ôtres rèsolucions}} : $1.',
 'show-big-image-size' => '$1 × $2 pixèls',
index c131377..3923db0 100644 (file)
@@ -702,6 +702,9 @@ $2',
 'suspicious-userlogout' => 'લોગ આઉટ કરવાની તમારી વિનંતિ પૂરી ન કરી શકાઇ. એમ લાગે છે કે તેને તૃટિ પામેલ બ્રાઉઝર કે પ્રોક્સી દ્વારા મોકલાઈ હતી.',
 'createacct-another-realname-tip' => 'સાચું નામ મરજીયાત છે.
 જો તમે તે આપવાનું પસંદ કરશો, તો તેનો ઉપયોગ તમે કરેલ યોગદાનનું શ્રેય આપવા માટે થશે.',
+'pt-login' => 'પ્રવેશ કરો',
+'pt-createaccount' => 'ખાતું બનાવો',
+'pt-userlogout' => 'બહાર નીકળો',
 
 # Email sending
 'php-mail-error-unknown' => 'PHPની મેલ() કામગીરીમાં અજ્ઞાત ત્રુટિ',
@@ -710,8 +713,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'ગુપ્તસંજ્ઞા બદલો',
-'resetpass_announce' => 'તમે હંગામી ઇમેઇલ કોડ સાથે લોગ ઇન કર્યું.
-લોગીંગ પુરૂં કરવા માટે તમારે નવી ગુપ્ત સંજ્ઞા (પાસવર્ડ) આપવો પડશે:',
+'resetpass_announce' => 'પ્રવેશ પૂર્ણ કરવા માટે, તમારે નવો પાસવર્ડ ગોઠવવો જ પડશે.',
 'resetpass_text' => '<!-- અહીં ટેક્સટ ઉમેરો -->',
 'resetpass_header' => 'ખાતાની ગુપ્તસંજ્ઞા બદલો',
 'oldpassword' => 'જુની ગુપ્તસંજ્ઞા:',
@@ -1546,11 +1548,23 @@ HTML નાકું ચકાસો',
 'rcnotefrom' => "નીચે '''$2'''થી થયેલાં '''$1''' ફેરફારો દર્શાવ્યાં છે.",
 'rclistfrom' => '$1 બાદ થયેલા નવા ફેરફારો બતાવો',
 'rcshowhideminor' => 'નાના ફેરફારો $1',
+'rcshowhideminor-show' => 'બતાવો',
+'rcshowhideminor-hide' => 'છુપાવો',
 'rcshowhidebots' => 'બૉટો $1',
-'rcshowhideliu' => 'લૉગ ઇન થયેલાં સભ્યો $1',
+'rcshowhidebots-show' => 'બતાવો',
+'rcshowhidebots-hide' => 'છુપાવો',
+'rcshowhideliu' => '$1 નોંધણી કરેલ સભ્યો',
+'rcshowhideliu-show' => 'બતાવો',
+'rcshowhideliu-hide' => 'છુપાવો',
 'rcshowhideanons' => 'અનામી સભ્યો $1',
+'rcshowhideanons-show' => 'બતાવો',
+'rcshowhideanons-hide' => 'છુપાવો',
 'rcshowhidepatr' => '$1 ચોકીયાત ફેરફારો',
+'rcshowhidepatr-show' => 'બતાવો',
+'rcshowhidepatr-hide' => 'છુપાવો',
 'rcshowhidemine' => 'મારા ફેરફારો $1',
+'rcshowhidemine-show' => 'બતાવો',
+'rcshowhidemine-hide' => 'છુપાવો',
 'rclinks' => 'છેલ્લાં $2 દિવસમાં થયેલા છેલ્લાં $1 ફેરફારો દર્શાવો<br />$3',
 'diff' => 'ભેદ',
 'hist' => 'ઇતિહાસ',
@@ -2026,6 +2040,10 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'protectedpages-indef' => 'ફક્ત અનિશ્ચિત સુરક્ષા ધરાવતા પાના',
 'protectedpages-cascade' => 'માત્ર પગથિયામય સુરક્ષા વાળા પગ',
 'protectedpagesempty' => 'આ વિકલ્પો દ્વારા કોઈ પાના સુરક્ષિત કરાયા નથી.',
+'protectedpages-page' => 'પાનું',
+'protectedpages-reason' => 'કારણ',
+'protectedpages-unknown-timestamp' => 'અજ્ઞાત',
+'protectedpages-unknown-performer' => 'અજ્ઞાત સભ્ય',
 'protectedtitles' => 'સંરક્ષિત શીર્ષકો',
 'protectedtitlesempty' => 'આ પરિબળો દ્વારા કોઇ પણ શીર્ષકો સચવાયા નથી.',
 'listusers' => 'સભ્યોની યાદી',
@@ -3599,6 +3617,10 @@ $5
 'imgmultigo' => 'જાઓ!',
 'imgmultigoto' => 'પાના  $1 પર જાવ',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(મૂળભુત ભાષા)',
+'img-lang-go' => 'જાઓ',
+
 # Table pager
 'ascending_abbrev' => 'ચડતો ક્ર્મ',
 'descending_abbrev' => 'ઉતરતો ક્ર્મ',
@@ -3679,7 +3701,14 @@ $5
 'version-hook-name' => 'ખૂંટાનું નામ્',
 'version-hook-subscribedby' => 'દ્વ્રારા લાભાન્વીત',
 'version-version' => '(આવૃત્તિ $1)',
-'version-license' => 'પરવાનો',
+'version-license' => 'મીડિઆવિકિ લાયસન્સ',
+'version-ext-license' => 'લાયસન્સ',
+'version-ext-colheader-version' => 'આવૃત્તિ',
+'version-ext-colheader-license' => 'લાયસન્સ',
+'version-ext-colheader-description' => 'વર્ણન',
+'version-ext-colheader-credits' => 'લેખકો',
+'version-license-title' => '$1 માટે લાયસન્સ',
+'version-credits-title' => '$1 માટે યશ',
 'version-poweredby-credits' => "આ વિકિ  '''[https://www.mediawiki.org/ MediaWiki]''' દ્વારા ચાલે છે, પ્રકાશનાધિકાર © 2001-$1 $2.",
 'version-poweredby-others' => 'અન્યો',
 'version-poweredby-translators' => 'ટ્રાન્સલેટવિકિ.નેટ ભાષાંતરકર્તાઓ',
index f8a3a7a..16ba1ce 100644 (file)
@@ -2794,6 +2794,7 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'כתובת IP זו חסומה כרגע.
 הפעולה האחרונה ביומן החסימות מוצגת להלן:',
 'sp-contributions-search' => 'חיפוש תרומות',
+'sp-contributions-suppresslog' => 'תרומות משתמש מוסתרות',
 'sp-contributions-username' => 'שם משתמש או כתובת IP:',
 'sp-contributions-toponly' => 'הצגת עריכות שהן הגרסאות האחרונות בלבד',
 'sp-contributions-newonly' => 'הצגת עריכות שהן יצירות של דפים בלבד',
index e530b37..6bfdabb 100644 (file)
@@ -845,6 +845,9 @@ Molimo Vas pričekajte $1 prije nego što pokušate ponovno.',
 'suspicious-userlogout' => 'Vaš zahtjev za odjavu je odbijen jer to izgleda kao da je poslan preko pokvarenog preglednika ili keširanog posrednika (proxyja).',
 'createacct-another-realname-tip' => 'Pravo ime nije obvezno. 
 Ako ga navedete, bit će korišteno za pripisivanje Vaših doprinosa.',
+'pt-login' => 'Prijavi se',
+'pt-createaccount' => 'Otvori novi suradnički račun',
+'pt-userlogout' => 'odjavi se',
 
 # Email sending
 'php-mail-error-unknown' => 'Nepoznata pogrješka u funkciji PHP-poruke()',
@@ -1674,11 +1677,23 @@ Ne smije biti duži od $1 {{PLURAL:$1|znaka|znaka|znakova}}.',
 'rcnotefrom' => 'Slijede promjene od <b>$2</b> (prikazano ih je do <b>$1</b>).',
 'rclistfrom' => 'Prikaži nove promjene počevši od $1',
 'rcshowhideminor' => '$1 manje promjene',
+'rcshowhideminor-show' => 'prikaži',
+'rcshowhideminor-hide' => 'sakrij',
 'rcshowhidebots' => '$1 botove',
+'rcshowhidebots-show' => 'prikaži',
+'rcshowhidebots-hide' => 'sakrij',
 'rcshowhideliu' => '$1 prijavljene suradnike',
+'rcshowhideliu-show' => 'prikaži',
+'rcshowhideliu-hide' => 'sakrij',
 'rcshowhideanons' => '$1 neprijavljene suradnike',
+'rcshowhideanons-show' => 'prikaži',
+'rcshowhideanons-hide' => 'sakrij',
 'rcshowhidepatr' => '$1 provjerene promjene',
+'rcshowhidepatr-show' => 'prikaži',
+'rcshowhidepatr-hide' => 'sakrij',
 'rcshowhidemine' => '$1 moje promjene',
+'rcshowhidemine-show' => 'prikaži',
+'rcshowhidemine-hide' => 'sakrij',
 'rclinks' => 'Prikaži posljednjih $1 promjena {{PLURAL:$2|prethodni dan|u posljednja $2 dana|u posljednjih $2 dana}}<br />$3',
 'diff' => 'razl',
 'hist' => 'pov',
index c42c9a4..2b8223d 100644 (file)
@@ -2505,6 +2505,7 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'Tuta IP-adresa je tuchwilu zablokowana.
 Najnowši zapisk w protokolu blokowanjow so deleka jako referenca podawa:',
 'sp-contributions-search' => 'Přinoški pytać',
+'sp-contributions-suppresslog' => 'potłóčene wužiwarske přinoški',
 'sp-contributions-username' => 'IP-adresa abo wužiwarske mjeno:',
 'sp-contributions-toponly' => 'Jenož wyše wersije pokazać',
 'sp-contributions-newonly' => 'Jenož změny pokazać, kotrež su wutworjenja stronow',
index 711de69..0e4159c 100644 (file)
@@ -730,7 +730,7 @@ Pro completar le accesso, tu debe definir un nove contrasigno hic:',
 'resetpass-temp-password' => 'Contrasigno temporari:',
 'resetpass-abort-generic' => 'Le cambio del contrasigno ha essite abortate per un extension.',
 'resetpass-expired' => 'Le contrasigno ha expirate. Per favor defini un nove contrasigno pro aperir session.',
-'resetpass-expired-soft' => 'Le contrasigno ha expirate e debe esser redefinite. Per favor elige un nove contrasigno ora, o clicca sur Cancellar pro redefinir lo plus tarde.',
+'resetpass-expired-soft' => 'Le contrasigno ha expirate e debe esser redefinite. Per favor elige un nove contrasigno ora, o clicca sur "{{int:resetpass-submit-cancel}}" pro redefinir lo plus tarde.',
 
 # Special:PasswordReset
 'passwordreset' => 'Reinitialisar contrasigno',
index ea5b7e7..d74ed9d 100644 (file)
@@ -762,6 +762,7 @@ Vinsamlegast bíðið $1 áður en þú reynir aftur.',
 'loginlanguagelabel' => 'Tungumál: $1',
 'suspicious-userlogout' => 'Beiðni um útskráningu hafnað því hún var líklegast send frá biluðum vafra eða vefseli sem hefur vistað vefsíðuna í flýtiminni.',
 'createacct-another-realname-tip' => 'Alvöru nafn er valfrjálst. Ef þú kýst að gefa það upp, verður það notað til að gefa þér heiður af verkum þínum.',
+'pt-createaccount' => 'Stofna aðgang',
 
 # Email sending
 'php-mail-error-unknown' => 'Óþekkt villa í PHP mail() aðgerð.',
index 79130d2..173e761 100644 (file)
@@ -2651,6 +2651,7 @@ $1',
 'sp-contributions-blocked-notice' => "Questo utente è attualmente bloccato. L'ultimo elemento del registro dei blocchi è riportato di seguito per informazione:",
 'sp-contributions-blocked-notice-anon' => "Questo indirizzo IP è attualmente bloccato. Di seguito è riportato l'ultimo elemento del registro dei blocchi:",
 'sp-contributions-search' => 'Ricerca contributi',
+'sp-contributions-suppresslog' => 'contributi utente soppressi',
 'sp-contributions-username' => 'Indirizzo IP o nome utente:',
 'sp-contributions-toponly' => 'Mostra solo i contributi che sono le ultime revisioni per la pagina',
 'sp-contributions-newonly' => 'Visualizza solo le modifiche che sono creazioni di pagina',
index 533b122..50665d5 100644 (file)
@@ -946,7 +946,7 @@ $1 뒤에 다시 시도하세요.',
 'resetpass-temp-password' => '임시 비밀번호:',
 'resetpass-abort-generic' => '비밀번호 바꾸기가 확장 기능에 의해 중단되었습니다.',
 'resetpass-expired' => '비밀번호가 만료되었습니다. 로그인하려면 새로운 비밀번호를 설정해야 합니다.',
-'resetpass-expired-soft' => '비밀번호가 만료되어 재설정해야 합니다. 지금 새로운 비밀번호를 선택하거나, 취소를 클릭하고 나중에 재설정해주세요.',
+'resetpass-expired-soft' => '비밀번호가 만료되어 재설정해야 합니다. 지금 새로운 비밀번호를 선택하거나, "{{int:resetpass-submit-cancel}}"를 클릭하고 나중에 재설정해주세요.',
 
 # Special:PasswordReset
 'passwordreset' => '비밀번호 재설정',
@@ -1815,14 +1815,26 @@ HTML 태그를 확인하세요.',
 'recentchanges-legend-heading' => "'''범례:'''",
 'recentchanges-legend-newpage' => '([[Special:NewPages|새 문서 목록]]도 보세요)',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnotefrom' => "다음은 '''$2'''에서부터 바뀐 문서 '''$1'''개입니다.",
+'rcnotefrom' => '다음은 <strong>$2</strong>에서부터 바뀐 문서 <strong>$1</strong>개입니다.',
 'rclistfrom' => '$1 이래로 새로 바뀐 문서 보기',
 'rcshowhideminor' => '사소한 편집을 $1',
+'rcshowhideminor-show' => '보이기',
+'rcshowhideminor-hide' => '숨기기',
 'rcshowhidebots' => '봇을 $1',
+'rcshowhidebots-show' => '보이기',
+'rcshowhidebots-hide' => '숨기기',
 'rcshowhideliu' => '등록된 사용자를 $1',
+'rcshowhideliu-show' => '보이기',
+'rcshowhideliu-hide' => '숨기기',
 'rcshowhideanons' => '익명 사용자를 $1',
+'rcshowhideanons-show' => '보이기',
+'rcshowhideanons-hide' => '숨기기',
 'rcshowhidepatr' => '순찰된 편집을 $1',
+'rcshowhidepatr-show' => '보이기',
+'rcshowhidepatr-hide' => '숨기기',
 'rcshowhidemine' => '내 편집을 $1',
+'rcshowhidemine-show' => '보이기',
+'rcshowhidemine-hide' => '숨기기',
 'rclinks' => '최근 $2일간의 $1개 바뀐 문서 보기<br />$3',
 'diff' => '비교',
 'hist' => '역사',
@@ -2805,8 +2817,10 @@ $1',
 'sp-contributions-blocked-notice-anon' => '이 IP 주소는 현재 차단되어 있습니다.
 차단 기록은 다음과 같습니다:',
 'sp-contributions-search' => '기여 검색',
+'sp-contributions-suppresslog' => '삭제된 사용자 기여',
 'sp-contributions-username' => 'IP 주소 또는 사용자 이름:',
 'sp-contributions-toponly' => '최신판만 보기',
+'sp-contributions-newonly' => '새 글인 기여만 보기',
 'sp-contributions-submit' => '검색',
 'sp-contributions-explain' => '',
 
index be47fce..44d0c5f 100644 (file)
@@ -674,7 +674,7 @@ Wann De wells, künnts De Ding [[Special:Preferences|Enschtällonge aanpaße]].'
 'userlogin-resetpassword-link' => 'Paßwoot verjäße?',
 'helplogin-url' => 'Help:Övver et Enlogge',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hölp bem Enlogge]]',
-'userlogin-loggedin' => 'Do bes ald als {{GENDER:$1|dä Metmaacher|de Metmaacherėn|dä Metmaacher|de Metmaacherėn|däMetmaacher}} [[User:$1]] enjelogg. Met heh dämm Fommolaa kanns De jäz ävver onger enem andere Nahme enlogge.',
+'userlogin-loggedin' => 'Do bes ald als {{GENDER:$1|dä Metmaacher|de Metmaacherėn|dä Metmaacher|de Metmaacherėn|däMetmaacher}} [[User:$1|$1]] enjelogg. Met heh dämm Fommolaa kanns De jäz ävver onger enem andere Nahme enlogge.',
 'userlogin-createanother' => 'Donn ene zohsäzlejje Zohjang aanlääje',
 'createacct-join' => 'Jiv Ding Daate en:',
 'createacct-another-join' => 'Maach de nüüdeje Aanjaabe för dä neue Zohjaang.',
@@ -833,7 +833,7 @@ Do häs Der enzwesche e neu Zweschepaßwood jehollt.',
 'resetpass-temp-password' => 'Zweschepasswood:',
 'resetpass-abort-generic' => 'E Zohsazprojramm häd_et nit zohjelohße, et Paßwoot ze ändere.',
 'resetpass-expired' => 'Di Paßwood es afjeloufe. Donn jetz e neu Passwoot för et Enlogg faßlääje.',
-'resetpass-expired-soft' => 'Ding Paßwood es afjeloufe u moß neu jesaz wääde. Bes esu jood_un donn e neu Paßwoot ußsöhke, udder donn op {{int:cancel}} jonn, öm et schpääder ze säze.',
+'resetpass-expired-soft' => 'Ding Paßwood es afjeloufe un moß neu jesaz wääde. Bes esu jood_un donn e neu Paßwoot ußsöhke, udder jangk op {{int:resetpass-submit-cancel}}, öm et schpääder ze säze.',
 
 # Special:PasswordReset
 'passwordreset' => 'Et Paßwoot zeröck säze',
@@ -1748,11 +1748,23 @@ Do kann Der [[Special:ResetTokens|ene neue Schlößel maache lohße]], wann nü
 'rcnotefrom' => 'Hee {{PLURAL:$1|es ein|sin bes op <strong>$1</strong>|es keine}} fun de Änderunge zick dem <strong>$3</strong> öm <strong>$4</strong> Uhr opjelėß.',
 'rclistfrom' => 'Zeich de Änderunge vum $1 aan',
 'rcshowhideminor' => '$1 klein Mini-Änderunge',
+'rcshowhideminor-show' => 'Zeisch',
+'rcshowhideminor-hide' => 'Verschteihsch',
 'rcshowhidebots' => '$1 de Bots ehr Änderunge',
+'rcshowhidebots-show' => 'Zeisch',
+'rcshowhidebots-hide' => 'Verschteihsch',
 'rcshowhideliu' => 'De aanjemeldte Metmaacher ehr Änderunge: $1',
+'rcshowhideliu-show' => 'Zeisch',
+'rcshowhideliu-hide' => 'Verschteihsch',
 'rcshowhideanons' => '$1 de namenlose Metmaacher ehr Änderunge',
+'rcshowhideanons-show' => 'Zeisch',
+'rcshowhideanons-hide' => 'Verschteihsch',
 'rcshowhidepatr' => '$1 de nohjeluurte Änderunge',
+'rcshowhidepatr-show' => 'Zeisch',
+'rcshowhidepatr-hide' => 'Verschteihsch',
 'rcshowhidemine' => '$1 ming eije Änderunge',
+'rcshowhidemine-show' => 'Zeisch',
+'rcshowhidemine-hide' => 'Verschteihsch',
 'rclinks' => 'Zeich de letzte {{int:pipe-separator}}$1{{int:pipe-separator}} Änderunge us de letzte {{int:pipe-separator}}$2{{int:pipe-separator}} Däch, un dun {{int:pipe-separator}}$3',
 'diff' => 'Ungerscheid',
 'hist' => 'Versione',
@@ -1894,6 +1906,7 @@ wann De se noch han wells.',
 'php-uploaddisabledtext' => 'Et Dateie Huhlade es en PHP affjeschalldt.
 Bes esu joot un donn noh de Enshtellung <i lang="en">file_uploads</i> loore.',
 'uploadscripted' => 'En dä Datei es HTML dren oder Code vun enem Skripp, dä künnt Dinge Brauser en do verkihrte Hals krije un usführe.',
+'uploadscriptednamespace' => 'De aanjejovve <i lang="en" xml:lang="en">SVG</i>-Dattei benöds dä verbodde Nahme-Roum „$1“',
 'uploadinvalidxml' => 'Dat <i lang="en" xml:lang="en">XML</i> en dä huh jelaade Dattei kunnt wohr nit en Oodenong beim Ongersöhke.',
 'uploadvirus' => 'Esu ene Dress:
 <br />
@@ -2205,7 +2218,7 @@ All de Sigge em Wiki, och Klaafsigge, Ömleitunge, un esu jet',
 'statistics-views-peredit' => 'Sigge affjeroofe, pro Änderung',
 'statistics-users' => '[[Special:ListUsers|Metmaacher]] aajemelldt',
 'statistics-users-active' => 'Aktive Metmaacher',
-'statistics-users-active-desc' => 'Metmaacher, die {{PLURAL:$1|hück un jesterre|en de läzte $1 Dääsh|hück}} jät jemaat han.',
+'statistics-users-active-desc' => 'Aktiv sin Metmaacher, di {{PLURAL:$1|hück un jesterre|en de läzte $1 Dääsch|hück}} jät jemaat han.',
 'statistics-mostpopular' => 'De miets affjeroofe Sigge',
 
 'pageswithprop' => 'Sigge med en beschtemmpte Eijeschaff',
@@ -2770,8 +2783,10 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'Heh di <i lang="en">IP</i>-Address es em Momang jesperrt.
 De neuste Sperr ier Enndraach em Logbooch es:',
 'sp-contributions-search' => 'Söök noh Metmaacher ier Beidräg',
+'sp-contributions-suppresslog' => 'verschtoche Beidrääch',
 'sp-contributions-username' => 'Metmaachername odder IP-Address:',
 'sp-contributions-toponly' => 'Bloß neuste Versione zeije',
+'sp-contributions-newonly' => 'Blohß neu aanjelaate Sigge zeije.',
 'sp-contributions-submit' => 'Söhke',
 
 # What links here
index 1a2db14..4d4e3b3 100644 (file)
@@ -746,7 +746,7 @@ $2',
 'customjsprotected' => 'Немате дозвола да ја менувате оваа страница со JavaScript  бидејќи содржи туѓи лични нагодувања.',
 'mycustomcssprotected' => 'Немате дозвола да ја уредувате оваа каскадна стилска страница (CSS).',
 'mycustomjsprotected' => 'Немате дозвола да ја уредувате оваа страница со JavaScript.',
-'myprivateinfoprotected' => 'Ð\9dемаÑ\82е Ð´Ð¾Ð·Ð²Ð¾Ð»Ð° Ð´Ð° Ð³Ð¸ Ñ\83Ñ\80едÑ\83ваÑ\82е Ð²Ð°Ñ\88иÑ\82е Ð¿Ñ\80иваÑ\82ни информации.',
+'myprivateinfoprotected' => 'Ð\9dемаÑ\82е Ð´Ð¾Ð·Ð²Ð¾Ð»Ð° Ð´Ð° Ð³Ð¸ Ñ\83Ñ\80едÑ\83ваÑ\82е Ð²Ð°Ñ\88иÑ\82е Ð»Ð¸Ñ\87ни информации.',
 'mypreferencesprotected' => 'Немате дозвола да ги уредувате вашите нагодувања.',
 'ns-specialprotected' => 'Специјални страници не може да се уредуваат.',
 'titleprotected' => "Овој наслов од страна на [[User:$1|$1]] е заштитен и не може да се создаде.
@@ -994,7 +994,7 @@ $2
 
 # Special:ResetTokens
 'resettokens' => 'Врати одново шифри',
-'resettokens-text' => 'Ð\9cожеÑ\82е Ñ\88иÑ\84Ñ\80иÑ\82е Ð´Ð° Ð³Ð¸ Ð²Ñ\80аÑ\82иÑ\82е Ð¾Ð´Ð½Ð¾Ð²Ð¾ Ñ\88Ñ\82о Ð¾Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ñ\83ва Ð¿Ñ\80иÑ\81Ñ\82ап Ð´Ð¾ Ð¸Ð·Ð²ÐµÑ\81ни Ð¿Ñ\80иваÑ\82ни податоци што се однесуваат на вашата овдешна сметка.
+'resettokens-text' => 'Ð\9cожеÑ\82е Ñ\88иÑ\84Ñ\80иÑ\82е Ð´Ð° Ð³Ð¸ Ð²Ñ\80аÑ\82иÑ\82е Ð¾Ð´Ð½Ð¾Ð²Ð¾ Ñ\88Ñ\82о Ð¾Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ñ\83ва Ð¿Ñ\80иÑ\81Ñ\82ап Ð´Ð¾ Ð¸Ð·Ð²ÐµÑ\81ни Ð»Ð¸Ñ\87ни податоци што се однесуваат на вашата овдешна сметка.
 
 Ова треба да се направи ако по грешка сте споделиле нешто со некого или ако сметката ви е изложена на опасност.',
 'resettokens-no-tokens' => 'Нема шифри за враќање.',
@@ -1697,7 +1697,7 @@ $1",
 'right-browsearchive' => 'Пребарување на избришани страници',
 'right-undelete' => 'Обновување избришана страница',
 'right-suppressrevision' => 'Прегледување и враќање на ревизии скриени од администратори',
-'right-suppressionlog' => 'Ð\93ледаÑ\9aе Ð½Ð° Ð¿Ñ\80иваÑ\82ни дневници',
+'right-suppressionlog' => 'Ð\93ледаÑ\9aе Ð½Ð° Ð»Ð¸Ñ\87ни дневници',
 'right-block' => 'Оневозможување на останати корисници да уредуваат',
 'right-blockemail' => 'Оневозможување корисници да праќаат е-пошта',
 'right-hideuser' => 'Блокирање корисници, сокривање од јавноста',
@@ -1715,8 +1715,8 @@ $1",
 'right-editmyuserjs' => 'Уредување на сопствени кориснички податотеки со JavaScript',
 'right-viewmywatchlist' => 'Преглед на вашиот список на набљудувања',
 'right-editmywatchlist' => 'Уредување на вашиот список на набљудувања. Извесни дејства сепак ќе ставаат страници во списокот и без да го имате ова право.',
-'right-viewmyprivateinfo' => 'Ð\9fÑ\80еглед Ð½Ð° Ñ\81опÑ\81Ñ\82вениÑ\82е Ð¿Ñ\80иваÑ\82ни податоци (на пр. е-пошта, вистинско име и презиме)',
-'right-editmyprivateinfo' => 'УÑ\80едÑ\83ваÑ\9aе Ð½Ð° Ñ\81опÑ\81Ñ\82вениÑ\82е Ð¿Ñ\80иваÑ\82ни податоци (на пр. е-пошта, вистинско име и презиме)',
+'right-viewmyprivateinfo' => 'Ð\9fÑ\80еглед Ð½Ð° Ñ\81опÑ\81Ñ\82вениÑ\82е Ð»Ð¸Ñ\87ни податоци (на пр. е-пошта, вистинско име и презиме)',
+'right-editmyprivateinfo' => 'УÑ\80едÑ\83ваÑ\9aе Ð½Ð° Ñ\81опÑ\81Ñ\82вениÑ\82е Ð»Ð¸Ñ\87ни податоци (на пр. е-пошта, вистинско име и презиме)',
 'right-editmyoptions' => 'Уредување на вашите нагодувања',
 'right-rollback' => 'Брзо отповикување на уредувањата на последниот корисник што уредувал одредена страница',
 'right-markbotedits' => 'Означување на вратени уредувања како ботовски уредувања',
@@ -1765,7 +1765,7 @@ $1",
 'action-browsearchive' => 'барање на избришани страници',
 'action-undelete' => 'обнови ја оваа страница',
 'action-suppressrevision' => 'прегледај ја и обнови ја оваа скриена ревизија',
-'action-suppressionlog' => 'преглед на овој приватен дневник',
+'action-suppressionlog' => 'преглед на овој li;en дневник',
 'action-block' => 'оневозможи го овој корисник да уредува',
 'action-protect' => 'измени го степенот на заштита на оваа страница',
 'action-rollback' => 'брзо отповикување на измени направени од последниот уредник на страницата',
@@ -1781,8 +1781,8 @@ $1",
 'action-sendemail' => 'испраќање на е-пошта',
 'action-editmywatchlist' => 'уредување на вашиот список на набљудувања',
 'action-viewmywatchlist' => 'преглед на вашиот список на набљудувања',
-'action-viewmyprivateinfo' => 'пÑ\80еглед Ð½Ð° Ð²Ð°Ñ\88иÑ\82е Ð¿Ñ\80иваÑ\82ни податоци',
-'action-editmyprivateinfo' => 'Ñ\83Ñ\80едÑ\83ваÑ\9aе Ð½Ð° Ð²Ð°Ñ\88иÑ\82е Ð¿Ñ\80иваÑ\82ни податоци',
+'action-viewmyprivateinfo' => 'пÑ\80еглед Ð½Ð° Ð²Ð°Ñ\88иÑ\82е Ð»Ð¸Ñ\87ни податоци',
+'action-editmyprivateinfo' => 'Ñ\83Ñ\80едÑ\83ваÑ\9aе Ð½Ð° Ð²Ð°Ñ\88иÑ\82е Ð»Ð¸Ñ\87ни податоци',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|промена|промени}}',
@@ -2080,7 +2080,7 @@ $1',
 'img-auth-isdir' => 'Се обидувате да пристапите до именикот „$1“.
 Допуштен е само податотечен пристап.',
 'img-auth-streaming' => 'Емитување „$1“.',
-'img-auth-public' => 'ФÑ\83нкÑ\86иÑ\98аÑ\82а Ð½Ð° img_auth.php Ñ\81лÑ\83жи Ð·Ð° Ð¸Ð·Ð»ÐµÐ· Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еки Ð¾Ð´ Ð¿Ñ\80иваÑ\82ни викија.
+'img-auth-public' => 'ФÑ\83нкÑ\86иÑ\98аÑ\82а Ð½Ð° img_auth.php Ñ\81лÑ\83жи Ð·Ð° Ð¸Ð·Ð»ÐµÐ· Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еки Ð¾Ð´ Ð»Ð¸Ñ\87ни викија.
 Ова вики е нагодено како јавно вики.
 Од причини на оптимална сигурност, img_auth.php е оневозможен.',
 'img-auth-noread' => 'Корисникот нема пристап за читање на „$1“.',
@@ -2804,6 +2804,7 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'Оваа IP-адреса е моментално блокирана.
 Подолу е наведен најновиот дневнички запис на блокирање:',
 'sp-contributions-search' => 'Пребарување на придонеси',
+'sp-contributions-suppresslog' => 'притаени придонеси на корисникот',
 'sp-contributions-username' => 'IP-адреса или корисничко име:',
 'sp-contributions-toponly' => 'Прикажувај само последни ревизии',
 'sp-contributions-newonly' => 'Прикажувај само новосоздадени страници',
@@ -2944,7 +2945,7 @@ $1',
 'ip_range_toolarge' => 'Не се дозволени опсежни блокирања поголеми од /$1.',
 'proxyblocker' => 'Блокер на застапници (proxy)',
 'proxyblockreason' => 'Вашата IP-адреса е блокирана бидејќи претставува отворен застапник (proxy).
-Ве молиме контактирајте со вашиот доставувач на Интернет услуги или техничката поддршка и информирајте ги за овој сериозен безбедносен проблем.',
+Ве молиме контактирајте со вашиот семрежен услужник и или техничката поддршка и информирајте ги за овој сериозен безбедносен проблем.',
 'sorbs' => 'DNSBL',
 'sorbsreason' => 'Вашата IP-адреса е запишана како отворен застапник (proxy) во DNSBL кој го користи {{SITENAME}}..',
 'sorbs_create_account_reason' => 'Вашата IP-адреса е наведена како отворен застапникот (proxy) во DNSBL користена од {{SITENAME}}.
index 5972860..a362328 100644 (file)
@@ -897,7 +897,7 @@ Aby dokończyć logowanie, musisz ustawić nowe hasło tutaj:',
 'resetpass-temp-password' => 'Tymczasowe hasło:',
 'resetpass-abort-generic' => 'Zmiana hasła została przerwana przez rozszerzenie.',
 'resetpass-expired' => 'Twoje hasło wygasło. Proszę ustawić nowe hasło do logowania.',
-'resetpass-expired-soft' => 'Twoje hasło wygasło i musi zostać zresetowane. Proszę wybrać nowe hasło albo kliknąć przycisk Anuluj, aby zresetować je później.',
+'resetpass-expired-soft' => 'Twoje hasło wygasło i musi zostać zresetowane. Proszę wybrać nowe hasło albo kliknąć na "{{int:resetpass-submit-cancel}}", aby zresetować je później.',
 
 # Special:PasswordReset
 'passwordreset' => 'Wyczyść hasło',
@@ -1062,11 +1062,11 @@ Upewnij się, czy na pewno zamierza{{GENDER:|łeś|łaś|sz}} utworzyć lub zmod
 'userpage-userdoesnotexist-view' => 'Konto użytkownika „$1” nie jest zarejestrowane.',
 'blocked-notice-logextract' => '{{GENDER:$1|Ten użytkownik|Ta użytkowniczka}} jest obecnie {{GENDER:$1|zablokowany|zablokowana}}.
 Ostatni wpis rejestru blokad jest pokazany poniżej.',
-'clearyourcache' => "'''Uwaga:''' aby zobaczyć zmiany po zapisaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.
-* '''Firefox / Safari:''' Przytrzymaj ''Shift'' podczas klikania ''Odśwież bieżącą stronę'', lub naciśnij klawisze ''Ctrl+F5'' lub ''Ctrl+R'' (''⌘-R'' na komputerze Mac)
-* '''Google Chrome:''' Naciśnij ''Ctrl-Shift-R'' (''⌘-Shift-R'' na komputerze Mac)
-* '''Internet Explorer:''' Przytrzymaj ''Ctrl'' jednocześnie klikając ''Odśwież'' lub naciśnij klawisze ''Ctrl+F5''
-* '''Opera:''' Wyczyść pamięć podręczną w ''Narzędzia → Preferencje''",
+'clearyourcache' => '<strong>Uwaga:</strong> aby zobaczyć zmiany po zapisaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.
+* <strong>Firefox / Safari:</strong> Przytrzymaj <em>Shift</em> podczas klikania <em>Odśwież bieżącą stronę</em>, lub naciśnij klawisze <em>Ctrl+F5</em> lub <em>Ctrl+R</em> (<em>⌘-R</em> na komputerze Mac)
+* <strong>Google Chrome:</strong> Naciśnij <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> na komputerze Mac)
+* <strong>Internet Explorer:</strong> Przytrzymaj <em>Ctrl</em>, jednocześnie klikając <em>Odśwież</em>, lub naciśnij klawisze <em>Ctrl+F5</em>
+* <strong>Opera:</strong> Wyczyść pamięć podręczną w <em>Narzędzia → Preferencje</em>',
 'usercssyoucanpreview' => "'''Podpowiedź:''' Użyj przycisku „Podgląd”, aby przetestować nowy arkusz stylów CSS przed jego zapisaniem.",
 'userjsyoucanpreview' => "'''Podpowiedź:''' Użyj przycisku „Podgląd”, aby przetestować nowy kod JavaScript przed jego zapisaniem.",
 'usercsspreview' => "'''Pamiętaj, że to tylko podgląd arkusza stylów CSS – nic jeszcze nie zostało zapisane!'''",
index f76d06b..3e0ce1b 100644 (file)
@@ -1613,7 +1613,7 @@ A dovrìa ciamé a cheidun con la possibilità ëd vëdde ij dàit dj'archivi el
 'php-uploaddisabledtext' => "Ij cariament d'archivi a son disabilità an PHP.
 Për piasì, ch'a controla l'ampostassion file_uploads.",
 'uploadscripted' => "St'archivi-sì a l'ha andrinta chèich-còs (dël còdes HTML ò pura un senari) che a podrìa esse travajà mal da chèich programa ëd navigassion.",
-'uploadscriptednamespace' => "S'archivi SVG a conten në spassi nominal «1» nen autorisà",
+'uploadscriptednamespace' => "S'archivi SVG a conten në spassi nominal «$1» nen autorisà",
 'uploadinvalidxml' => "L'XML ant l'archivi carià a l'ha nen podù esse analisà.",
 'uploadvirus' => "St'archivi-sì a l'han andrinta un '''vìrus!''' Detaj: $1",
 'uploadjava' => "L'archivi a l'é n'archivi ZIP ch'a conten n'archivi Java .class.
index 8c69d22..27c4a54 100644 (file)
@@ -900,7 +900,7 @@ Para completar a autenticação, tem de definir uma palavra-chave nova aqui:',
 'resetpass-temp-password' => 'Palavra-chave temporária:',
 'resetpass-abort-generic' => 'A alteração da palavra-chave foi cancelada por uma extensão.',
 'resetpass-expired' => 'A sua palavra-chave expirou. Para autenticar-se, defina uma nova.',
-'resetpass-expired-soft' => 'A sua palavra-chave expirou e tem de ser redefinida. Escolha uma nova agora ou clique cancelar para redefini-la mais tarde.',
+'resetpass-expired-soft' => 'A sua palavra-chave expirou e tem de ser redefinida. Escolha uma nova agora ou clique "{{int:resetpass-submit-cancel}}" para redefini-la mais tarde.',
 
 # Special:PasswordReset
 'passwordreset' => 'Redefinir palavra-chave',
@@ -1765,7 +1765,7 @@ Se optar por revelá-lo, ele será utilizado para atribuir-lhe crédito pelo seu
 'recentchanges-label-plusminus' => 'Alteração no tamanho da página, em bytes',
 'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '([[Special:NewPages|lista de páginas novas]])',
-'rcnotefrom' => 'Abaixo estão as mudanças desde <b>$2</b> (mostradas até <b>$1</b>).',
+'rcnotefrom' => 'Abaixo estão as mudanças desde <strong>$2</strong> (mostradas até <strong>$1</strong>).',
 'rclistfrom' => 'Mostrar as novas mudanças a partir das $1',
 'rcshowhideminor' => '$1 edições menores',
 'rcshowhideminor-show' => 'Mostrar',
index 3b0b49a..71639e2 100644 (file)
@@ -2296,6 +2296,7 @@ Entradas <del>riscadas</del> foram resolvidas.',
 'protectedpages-unknown-timestamp' => 'Desconhecido',
 'protectedpages-unknown-performer' => 'Usuário desconhecido',
 'protectedtitles' => 'Títulos protegidos',
+'protectedtitles-summary' => 'Está página lista os títulos já protegidos de criação. Para ver a lista de páginas existentes que estão protegidas, consulte [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'Neste momento, nenhum dos títulos está protegido com estes parâmetros.',
 'listusers' => 'Lista de usuários',
 'listusers-editsonly' => 'Mostrar apenas usuários com edições',
@@ -2743,8 +2744,10 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'Este endereço IP encontra-se bloqueado.
 Segue, para referência, a entrada mais recente no registro de bloqueios:',
 'sp-contributions-search' => 'Navegar pelas contribuições',
+'sp-contributions-suppresslog' => 'Contribuições de usuário eliminadas',
 'sp-contributions-username' => 'Endereço de IP ou usuário:',
 'sp-contributions-toponly' => 'Mostrar somente as edições que sejam a última alteração',
+'sp-contributions-newonly' => 'Mostrar somente as edições que criaram uma nova página.',
 'sp-contributions-submit' => 'Pesquisar',
 
 # What links here
@@ -3096,6 +3099,7 @@ Salve o arquivo no seu computador e importe-o aqui.',
 'import-error-special' => 'A página "$1" não pôde ser importada porque ela pertence a um espaço nominal especial que não suporta páginas.',
 'import-error-invalid' => 'A página "$1" não pôde ser importada por seu nome ser inválido.',
 'import-error-unserialize' => 'Revisão  $2  da página " $1 " não pôde ser desserializada. A revisão foi relatada para usar o modelo de conteúdo  $3  serializado como  $4',
+'import-error-bad-location' => 'A revisão $2, que usa o modelo de conteúdo $3, não pode ser gravada em "$1" nesta wiki, pois o modelo não é suportado nessa página.',
 'import-options-wrong' => '{{PLURAL:$2|Opção com erro|Opções com erros}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'A página raiz dada é um título inválido.',
 'import-rootpage-nosubpage' => 'O espaço nominal $1 da página principal não permite subpáginas.',
index a213e5e..e7c43c6 100644 (file)
@@ -395,8 +395,10 @@ See also:
 Followed by a colon and a list of categories.
 
 Parameters:
-* $1 - number of hidden categories',
-'hidden-category-category' => 'Name of the [[mw:Help:Tracking categories|tracking category]] where hidden categories will be listed.',
+* $1 - number of hidden categories
+{{Identical|Hidden category}}',
+'hidden-category-category' => 'Name of the [[mw:Help:Tracking categories|tracking category]] where hidden categories will be listed.
+{{Identical|Hidden category}}',
 'category-subcat-count' => 'This message is displayed at the top of a category page showing the number of pages in the category.
 
 Parameters:
@@ -6286,9 +6288,6 @@ See also:
 * {{msg-mw|Sp-contributions-deleted}}
 * {{msg-mw|Sp-contributions-userrights}}
 {{Identical|Block log}}',
-'sp-contributions-suppresslog' => 'Used as a display name for a link to log entries of suppressed edits made by that user.
-
-Used as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].',
 'sp-contributions-deleted' => "This is a link anchor used in [[Special:Contributions]]/''name'', when user viewing the page has the right to delete pages, or to restore deleted pages.
 
 Used as link title in [[Special:Contributions]].
@@ -6364,6 +6363,9 @@ Anon version:
 * {{msg-mw|Sp-contributions-blocked-notice-anon}}',
 'sp-contributions-blocked-notice-anon' => 'Same as {{msg-mw|Sp-contributions-blocked-notice}} but for anonymous users.',
 'sp-contributions-search' => 'Used on [[Special:Contributions]]',
+'sp-contributions-suppresslog' => 'Used as a display name for a link to log entries of suppressed edits made by that user.
+
+Used as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].',
 'sp-contributions-username' => 'This message appears whenever someone requests [[Special:Contributions]].
 {{Identical|IP address or username}}',
 'sp-contributions-toponly' => '"top revision" means the "latest revision"',
@@ -8278,7 +8280,8 @@ This message is followed by the total number of times the page has been edited.'
 'pageinfo-magic-words' => 'The list of magic words on the page. Parameters:
 * $1 is the number of magic words on the page.',
 'pageinfo-hidden-categories' => 'The list of hidden categories on the page. Parameters:
-* $1 is the number of hidden categories on the page.',
+* $1 - the number of hidden categories on the page
+{{Identical|Hidden category}}',
 'pageinfo-templates' => 'The list of templates transcluded within the page. Parameters:
 * $1 is the number of templates transcluded within the current page.
 See also:
@@ -9015,12 +9018,14 @@ See also Wikipedia on [[w:Focal_length#In_photography|focal length]].',
 'exif-gpslatituderef' => 'In older versions of mediawiki this referred to if the latitude was North or South. This is no longer used in modern versions of mediawiki except for when using a foreign image repository that is using an older version of mediawiki since the information is now contained in {{msg-mw|exif-gpslatitude}}.
 {{Related|Exif-gpslatitude}}',
 'exif-gpslatitude' => 'The latitude of the location from where the picture was taken from.
-{{Related|Exif-gpslatitude}}',
+{{Related|Exif-gpslatitude}}
+{{Identical|Latitude}}',
 'exif-gpslongituderef' => 'Same as {{msg-mw|exif-gpslatituderef}} but for longitude.
 
 {{Related|Exif-gpslatitude}}',
 'exif-gpslongitude' => 'The longitude of the location from where the picture was taken from.
-{{Related|Exif-gpslatitude}}',
+{{Related|Exif-gpslatitude}}
+{{Identical|Longitude}}',
 'exif-gpsaltituderef' => 'No longer used except for when using foreign image repository with old version of mediawiki. 0 for above sea level, 1 for below sea level.',
 'exif-gpsaltitude' => 'Altitude in meters that the image was taken at.',
 'exif-gpstimestamp' => 'Time (does not include date) that GPS measurement was taken, in UTC. Since often this is at the same time as photo was taken, this is sometimes more reliable than {{msg-mw|exif-datetimeoriginal}}.',
index f340f29..b7256c1 100644 (file)
@@ -2700,6 +2700,7 @@ Ultima blocare este indicată mai jos pentru informare:',
 'sp-contributions-blocked-notice-anon' => 'Această adresă IP este blocată acum.
 Iată aici ultima înregistrare relevantă din jurnalul blocărilor:',
 'sp-contributions-search' => 'Căutare contribuții',
+'sp-contributions-suppresslog' => 'contribuții suprimate ale utilizatorului',
 'sp-contributions-username' => 'Adresă IP sau nume de utilizator:',
 'sp-contributions-toponly' => 'Afișează numai versiunile recente',
 'sp-contributions-newonly' => 'Afișează numai modificările care au dus la crearea de pagini',
index f0fc215..5d425d1 100644 (file)
@@ -591,7 +591,7 @@ Ce tu scacchie de metterle, quiste avène ausate pe dà 'u giuste merite a 'a fa
 
 # Change password dialog
 'changepassword' => "Cange 'a password",
-'resetpass_announce' => "Tu tè colleghete cu 'nu codece mannete pe e-mail temboranee.
+'resetpass_announce' => "Tu tè collegate cu 'nu codece mannate pe e-mail temboranèe.
 Pe spiccià 'a procedure de collegamende, tu a 'mbostà 'na password nove aqquà:",
 'resetpass_text' => "<!-- Mitte 'u teste aqquà -->",
 'resetpass_header' => "Cange 'a password d'u cunde utende",
@@ -1461,7 +1461,7 @@ Ce tu 'u mitte, a fatje ca è fatte t'avène ricanusciute.",
 'recentchanges-label-unpatrolled' => "Stu cangiamende non g'à state angore condrollate",
 'recentchanges-legend-heading' => "'''Leggende:'''",
 'recentchanges-legend-newpage' => "('ndruche pure [[Special:NewPages|elenghe de le pàggene nuève]])",
-'rcnotefrom' => "Sotte stonne le cangiaminde da '''$2''' (fine a '''$1''' mustrete).",
+'rcnotefrom' => "Sotte stonne le cangiaminde da '''$2''' ('nzigne a '''$1''' fatte vedè).",
 'rclistfrom' => 'Fà vedè le urteme cangiaminde partenne da $1',
 'rcshowhideminor' => '$1 cangiaminde stuèdeche',
 'rcshowhidebots' => '$1 bot',
@@ -1600,6 +1600,7 @@ Avissa verificà 'a storie d'a scangellazzione d'u file apprime de condinuà a c
 'php-uploaddisabledtext' => "Le carecaminde de file sonde disabilitate in PHP.<br />
 Pe piacere verifiche le 'mbostaziune d'u ''file_uploads''.",
 'uploadscripted' => "Stu file condene HTML o codece de script ca ponne essere inderpretete jndr'à 'nu mode sbagliete da le browser.",
+'uploadscriptednamespace' => "Stu file SVG tène 'nu namespace illegale '$1'",
 'uploadinvalidxml' => "L'XML jndr'à 'u file carecate non ge pò essere analizzate.",
 'uploadvirus' => "Alanga toje, 'u file condiene 'nu virus! Dettaglie: $1",
 'uploadjava' => "'U file jè 'nu file de tipe ZIP ca condene 'nu file de classe Java.
index 9253b4c..88aaa50 100644 (file)
@@ -2855,6 +2855,7 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'Этот IP-адрес в данный момент заблокирован.
 Ниже приведена последняя запись из журнала блокировок:',
 'sp-contributions-search' => 'Поиск вклада',
+'sp-contributions-suppresslog' => 'удалённый вклад участника',
 'sp-contributions-username' => 'IP-адрес или имя участника:',
 'sp-contributions-toponly' => 'Показывать только правки, являющиеся последними версиями',
 'sp-contributions-newonly' => 'Показывать только правки, являющиеся созданием страниц',
index f3e5c31..cc533dc 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author (vinny)
+ * @author AmaryllisGardener
  * @author Avicennasis
  * @author Derek Ross
  * @author John Reid
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Unnerline airtins:',
-'tog-hideminor' => 'Skauk smaa eidits in recent chynges',
-'tog-hidepatrolled' => 'Skauk patrolled eidits in recent chynges',
+'tog-hideminor' => 'Skauk smaa edits in recent chynges',
+'tog-hidepatrolled' => 'Skauk patrolled edits in recent chynges',
 'tog-newpageshidepatrolled' => 'Skauk patrolled pages frae the new page leet',
-'tog-extendwatchlist' => 'Mak watchleet bigger tae shaw aw chynges,no jyst the maist recent',
-'tog-usenewrc' => 'Groop chynges bi page in recent chynges and watchleet',
+'tog-extendwatchlist' => 'Mak watchleet bigger tae shaw aw chynges, nae juist the maist recent',
+'tog-usenewrc' => 'Groop chynges bi page in recent chynges an watchleet',
 'tog-numberheadings' => 'Auto-nummer heidins',
-'tog-showtoolbar' => 'Shaw eidit tuilbaur',
-'tog-editondblclick' => 'Eidit pages oan dooble-clap (JavaScript)',
+'tog-showtoolbar' => 'Shaw edit tuilbaur',
+'tog-editondblclick' => 'Edit pages on dooble-dab (JavaScript)',
 'tog-editsectiononrightclick' => 'Enable section editin bi richt-clapin on section teitles',
 'tog-rememberpassword' => 'Mynd ma password oan this browser (fer ae maximum o $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'Add pages that Ah mak an files Ah uplaid til ma watchleet',
@@ -41,27 +42,28 @@ $messages = array(
 'tog-watchmoves' => 'Eik pages an files that Ah muiv til ma watchleet',
 'tog-watchdeletion' => 'Eik pages an files that Ah get rid o til ma watchleet',
 'tog-minordefault' => 'Mairk aa edits "smaa" bi defaut',
-'tog-previewontop' => 'Shaw owerview afore eidit kist an no efter it',
-'tog-previewonfirst' => 'Shaw scance oan firstwhile eidit',
+'tog-previewontop' => 'Shaw owerview afore edit kist an no efter it',
+'tog-previewonfirst' => 'Shaw scance on first edit',
 'tog-enotifwatchlistpages' => 'Wab-mail me whan ae page or file on ma watchleet is chynged',
 'tog-enotifusertalkpages' => 'Send me ae wab-mail whan ma uiser tauk page is chynged',
 'tog-enotifminoredits' => 'Send me ae wab-mail fer wee edits o pages an files ava',
 'tog-enotifrevealaddr' => 'Shaw ma email address in notification mails',
 'tog-shownumberswatching' => 'Shaw the nummer o watching uisers',
+'tog-oldsig' => 'Existin signatur:',
 'tog-fancysig' => 'Treat signature as wikitext (wioot aen autæmatic airtin)',
 'tog-uselivepreview' => 'Uise live preview (experimental)',
-'tog-forceeditsummary' => 'Gie me a jottin when A dinnae put in aen eidit owerview',
-'tog-watchlisthideown' => 'Skauk ma eidits frae the watchleet',
-'tog-watchlisthidebots' => 'Skauk bot eidits frae the watchleet',
-'tog-watchlisthideminor' => 'Dinna shaw smaa eidits oan ma watchleet',
-'tog-watchlisthideliu' => 'Skauk eidits bi loggit in uisers frae the watchleet',
-'tog-watchlisthideanons' => 'Skauk eidits bi nameless uisers frae the watchleet',
-'tog-watchlisthidepatrolled' => 'Skauk patrolled eidits frae the watchlist',
+'tog-forceeditsummary' => 'Gie me a jottin when A dinnae put in aen edit owerview',
+'tog-watchlisthideown' => 'Skauk ma edits frae the watchleet',
+'tog-watchlisthidebots' => 'Skauk bot edits frae the watchleet',
+'tog-watchlisthideminor' => 'Dinna shaw smaa edits oan ma watchleet',
+'tog-watchlisthideliu' => 'Skauk edits bi loggit in uisers frae the watchleet',
+'tog-watchlisthideanons' => 'Skauk edits bi nameless uisers frae the watchleet',
+'tog-watchlisthidepatrolled' => 'Skauk patrolled edits frae the watchlist',
 'tog-ccmeonemails' => 'Gie me copies o emails A write tae ither uisers',
 'tog-diffonly' => 'Dinna shaw page contents ablo diffs',
 'tog-showhiddencats' => "Shaw Skauk't categeries",
 'tog-norollbackdiff' => 'Lave oot diff efter rowin back',
-'tog-useeditwarning' => 'Warnish me whan Ah lea aen eidit page wi onhained chynges',
+'tog-useeditwarning' => 'Wairn me whan I leave an edit page wi unhained chynges',
 'tog-prefershttps' => 'Aye uise ae secure connection whan loggit in',
 
 'underline-always' => 'Aye',
@@ -69,7 +71,7 @@ $messages = array(
 'underline-default' => 'Skin or brouser defaut',
 
 # Font style option in Special:Preferences
-'editfont-style' => 'Eidit area font style:',
+'editfont-style' => 'Edit aurie font style:',
 'editfont-default' => 'Brouser defaut',
 'editfont-sansserif' => 'Sans-serif font',
 'editfont-serif' => 'Serif font',
@@ -80,8 +82,8 @@ $messages = array(
 'tuesday' => 'Tysday',
 'wednesday' => 'Wadensday',
 'thursday' => 'Fuirsday',
-'friday' => 'Friday',
-'saturday' => 'Seturday',
+'friday' => 'Fryday',
+'saturday' => 'Setturday',
 'sun' => 'Sun',
 'mon' => 'Mon',
 'tue' => 'Tue',
@@ -89,10 +91,10 @@ $messages = array(
 'thu' => 'Thu',
 'fri' => 'Fri',
 'sat' => 'Sat',
-'january' => 'Januair',
-'february' => 'Febuair',
+'january' => 'Januar',
+'february' => 'Februar',
 'march' => 'Mairch',
-'april' => 'Apryle',
+'april' => 'Aprile',
 'may_long' => 'Mey',
 'june' => 'Juin',
 'july' => 'Julie',
@@ -101,10 +103,10 @@ $messages = array(
 'october' => 'October',
 'november' => 'November',
 'december' => 'December',
-'january-gen' => 'Januair',
-'february-gen' => 'February',
+'january-gen' => 'Januar',
+'february-gen' => 'Februar',
 'march-gen' => 'Mairch',
-'april-gen' => 'Apryle',
+'april-gen' => 'Aprile',
 'may-gen' => 'Mey',
 'june-gen' => 'Juin',
 'july-gen' => 'Julie',
@@ -112,7 +114,7 @@ $messages = array(
 'september-gen' => 'September',
 'october-gen' => 'October',
 'november-gen' => 'November',
-'december-gen' => 'Dizember',
+'december-gen' => 'December',
 'jan' => 'Jan',
 'feb' => 'Feb',
 'mar' => 'Mai',
@@ -125,18 +127,18 @@ $messages = array(
 'oct' => 'Oct',
 'nov' => 'Nov',
 'dec' => 'Diz',
-'january-date' => '$1 Januair',
-'february-date' => '$1 Febuair',
+'january-date' => '$1 Januar',
+'february-date' => '$1 Februar',
 'march-date' => '$1 Mairch',
 'april-date' => '$1 Apryl',
 'may-date' => '$1 Mey',
 'june-date' => '$1 Juin',
-'july-date' => '$1 Juli',
+'july-date' => '$1 Julie',
 'august-date' => '$1 August',
 'september-date' => '$1 September',
 'october-date' => '$1 October',
 'november-date' => '$1 November',
-'december-date' => '$1 Dezember',
+'december-date' => '$1 December',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Category|Categories}}',
@@ -145,7 +147,7 @@ $messages = array(
 'category-media-header' => 'Eetems in category "$1"',
 'category-empty' => "''This category haes no pages or eetems at the meenit.''",
 'hidden-categories' => "{{PLURAL:$1|Skauk't categerie|Skauk't categeries}}",
-'hidden-category-category' => "Skauk't cætegories",
+'hidden-category-category' => 'Skauked categories',
 'category-subcat-count' => '{{PLURAL:$2|This category juist haes the follaein subcategory.|This category haes the follaein {{PLURAL:$1|subcategory|$1 subcategories}}, oot o $2 awthegither.}}',
 'category-subcat-count-limited' => 'This category haes the follaein {{PLURAL:$1|subcategory|$1 subcategories}}.',
 'category-article-count' => '{{PLURAL:$2|This category contains the ae follaein page.|The follaein {{PLURAL:$1|page|$1 pages}} is in this category, oot o $2 total.}}',
@@ -172,7 +174,7 @@ $messages = array(
 # Cologne Blue skin
 'qbfind' => 'Rake',
 'qbbrowse' => 'Brouse',
-'qbedit' => 'Eidit',
+'qbedit' => 'Edit',
 'qbpageoptions' => 'This page',
 'qbmyoptions' => 'Ma pages',
 'faq' => 'ASQ',
@@ -180,13 +182,13 @@ $messages = array(
 
 # Vector skin
 'vector-action-addsection' => 'Add topic',
-'vector-action-delete' => 'Delyte',
+'vector-action-delete' => 'Delete',
 'vector-action-move' => 'Flit',
 'vector-action-protect' => 'Fend',
-'vector-action-undelete' => 'Ondelyte',
+'vector-action-undelete' => 'Undelete',
 'vector-action-unprotect' => 'Chynge protection',
 'vector-view-create' => 'Mak',
-'vector-view-edit' => 'Eidit',
+'vector-view-edit' => 'Edit',
 'vector-view-history' => 'See history',
 'vector-view-view' => 'Read',
 'vector-view-viewsource' => 'View soorce',
@@ -210,15 +212,15 @@ $messages = array(
 'permalink' => 'Permanent airtin',
 'print' => 'Prent',
 'view' => 'View.',
-'edit' => 'Eidit',
+'edit' => 'Edit',
 'create' => 'Mak',
-'editthispage' => 'Eidit this page',
+'editthispage' => 'Edit this page',
 'create-this-page' => 'Mak this page',
-'delete' => 'Delyte',
-'deletethispage' => 'Delyte this page',
-'undeletethispage' => 'Ondelyte this page',
+'delete' => 'Delete',
+'deletethispage' => 'Delete this page',
+'undeletethispage' => 'Undelete this page',
 'undelete_short' => 'Undelete {{PLURAL:$1|ane edit|$1 edits}}',
-'viewdeleted_short' => 'View {{PLURAL:$1|yin deletit eidit|$1 deletit eidits}}',
+'viewdeleted_short' => 'View {{PLURAL:$1|ane deletit edit|$1 deletit edits}}',
 'protect' => 'Fend',
 'protect_change' => 'chynge',
 'protectthispage' => 'Fend this page',
@@ -226,16 +228,16 @@ $messages = array(
 'unprotectthispage' => 'Chynge fend fer this page',
 'newpage' => 'New page',
 'talkpage' => 'Blether ower this page',
-'talkpagelinktext' => 'Tauk',
+'talkpagelinktext' => 'Collogue',
 'specialpage' => 'Byordinar Page',
 'personaltools' => 'Personal tuils',
-'postcomment' => 'Eik a message',
+'postcomment' => 'New section',
 'articlepage' => 'Leuk at content page',
 'talk' => 'Collogue',
 'views' => 'Views',
 'toolbox' => 'Tuilkist',
 'userpage' => 'View uiser page',
-'projectpage' => 'View project page',
+'projectpage' => 'See waurk page',
 'imagepage' => 'look ower image page',
 'mediawikipage' => 'View message page',
 'templatepage' => 'View template page',
@@ -294,12 +296,12 @@ $1',
 'newmessageslinkplural' => '{{PLURAL:$1|ae new message|999=new messages}}',
 'newmessagesdifflinkplural' => 'last {{PLURAL:$1|chynge|999=chynges}}',
 'youhavenewmessagesmulti' => 'Ye hae new messages oan $1',
-'editsection' => 'eidit',
-'editold' => 'eidit',
+'editsection' => 'edit',
+'editold' => 'edit',
 'viewsourceold' => 'ken soorce',
-'editlink' => 'eidit',
-'viewsourcelink' => 'Scance ower the source',
-'editsectionhint' => 'Eidit section: $1',
+'editlink' => 'edit',
+'viewsourcelink' => 'view soorce',
+'editsectionhint' => 'Edit section: $1',
 'toc' => 'Table o contents',
 'showtoc' => 'shaw',
 'hidetoc' => 'scouk',
@@ -307,7 +309,7 @@ $1',
 'collapsible-expand' => 'Mak mair muckle',
 'thisisdeleted' => 'View or cower $1?',
 'viewdeleted' => 'View $1?',
-'restorelink' => '{{PLURAL:$1|yin delyte eidit|$1 delyte eidits}}',
+'restorelink' => '{{PLURAL:$1|ane deletit edit|$1 deletit edits}}',
 'feedlinks' => 'Feed:',
 'feed-invalid' => "This feeds subscrieve's teep isnae habile.",
 'feed-unavailable' => 'Syndication feeds isna available',
@@ -324,7 +326,7 @@ $1',
 'nstab-user' => 'Uiser page',
 'nstab-media' => 'Eetem page',
 'nstab-special' => 'Byordinar page',
-'nstab-project' => 'Project page',
+'nstab-project' => 'Waurk page',
 'nstab-image' => 'Eimage',
 'nstab-mediawiki' => 'Message',
 'nstab-template' => 'Template',
@@ -348,9 +350,9 @@ A leet o valid byordinar pages can be funnd at [[Special:SpecialPages|{{int:spec
 This micht be cause o ae bug in the saffware.',
 'databaseerror-textcl' => 'Ae database speirin mistak has occurred.',
 'databaseerror-query' => 'Speirin: $1',
-'databaseerror-function' => 'Fwnction: $1',
+'databaseerror-function' => 'Function: $1',
 'databaseerror-error' => 'Mistake: $1',
-'laggedslavemode' => '<strong>Warnishment:</strong> Page micht no contain recent updates',
+'laggedslavemode' => '<strong>Wairnin:</strong> Page micht no contain recent updates',
 'readonly' => 'Database lockit',
 'enterlockreason' => "Enter ae raeson fer the lock, inclædin aen estimate o whan the lock'll be lowsed",
 'readonlytext' => "The databae is lockit tae new entries an ither modifeecations the nou,
@@ -372,18 +374,18 @@ Please lat aen [[Special:ListUsers/sysop|admeenistrater]] ken aboot this, makin
 'fileappenderror' => 'Coudna append "$1" til "$2".',
 'filecopyerror' => 'Cuidna copy file "$1" tae "$2".',
 'filerenameerror' => 'Cuidna rename file "$1" tae "$2".',
-'filedeleteerror' => 'Cuidna delyte file "$1".',
+'filedeleteerror' => 'Cuidna delete file "$1".',
 'directorycreateerror' => 'Culdnae mak directory "$1".',
 'filenotfound' => 'Cuidna fin file "$1".',
 'fileexistserror' => 'Culdnae write tae file "$1": file is already here',
 'unexpected' => 'Vailyie isnae expectit: "$1"="$2".',
 'formerror' => 'Mistak: cuidna haun in form',
 'badarticleerror' => 'This action canna be duin tae this page.',
-'cannotdelete' => 'The page or file "$1" coudna be delytit.
-It micht awreadie hae been delytit bi some ither bodie.',
-'cannotdelete-title' => 'Canna delyte page "$1"',
-'delete-hook-aborted' => 'Delytion stappit bi huik.
-It gae nae explanâtion.',
+'cannotdelete' => 'The page or file "$1" coudna be deletit.
+It micht awreadie hae been deletit bi some ither bodie.',
+'cannotdelete-title' => 'Cannae delete page "$1"',
+'delete-hook-aborted' => 'Deletion abortit bi huik.
+It gae no explanâtion.',
 'no-null-revision' => 'Coudna mak new null reveesion fer page "$1"',
 'badtitle' => 'Bad teitle',
 'badtitletext' => 'The requestit page teitle wis invalid, tuim, or a wranglie airtit inter-leid or inter-wiki teitle. It mibbe haes ane or mair chairacters that canna be uised in teitles.',
@@ -391,7 +393,7 @@ It gae nae explanâtion.',
 'perfcachedts' => 'The followin data is cached, an wis hindermaist updated $1. Ae maximum o {{PLURAL:$4|yin result is|$4 results ar}} available in the cache.',
 'querypage-no-updates' => 'Updates for this page ar disablit at the meenit. Data here wilnae be refreshit at the meenit.',
 'viewsource' => 'View soorce',
-'viewsource-title' => 'View source fer $1',
+'viewsource-title' => 'View soorce fer $1',
 'actionthrottled' => 'Action devalit',
 'actionthrottledtext' => 'As an anti-spam meisur, ye ar limitit frae daein this action ower mony times in a ower short tid, an ye hae exceedit this limit. Please try again in a wee.',
 'protectedpagetext' => 'This page haes been protected fer tae prevent eiditing or ither actions.',
@@ -399,10 +401,10 @@ It gae nae explanâtion.',
 'viewyourtext' => 'Ye can view an copy the source o <strong>yer eidits</strong> til this page:',
 'protectedinterface' => 'This page provides interface tex fer the saffware oan this wiki, n is protected fer tae prevent abuise.
 Tae add or chynge owersets fer aw wikis, please uise [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.',
-'editinginterface' => "<strong>Warnishment:</strong> Ye'r eiditing ae page that is uised tae provide interface tex fer the saffware.
-Chynges til this page will affect the appearance o the uiser interface fer ither uisers oan this wiki.
+'editinginterface' => "<strong>Wairnin:</strong> Ye'r editing ae page that is uised tae provide interface tex fer the saftware.
+Chynges tae this page will affect the appearance o the uiser interface fer ither uisers on this wiki.
 Tae add or chynge owersets fer aw wikis, please uise [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.",
-'cascadeprotected' => 'This page haes been protectit fae editin, cause it is inclædit in the follaein {{PLURAL:$1|page|pages}}, that ar protectit wi the "cascadin" optie turnit oan:
+'cascadeprotected' => 'This page haes been protectit fae editin, cause it is includit in the follaein {{PLURAL:$1|page|pages}}, that ar protectit wi the "cascadin" option turned on:
 $2',
 'namespaceprotected' => "Ye dinna hae permeession tae edit pages in the '''$1''' namespace.",
 'customcssprotected' => "Ye dinna hae permeession tae eidit this CSS page cause it contains anither uiser's personal settings.",
@@ -432,21 +434,21 @@ The administrater that lock\'t it affered this explanation: "$3".',
 'logouttext' => "<strong>Ye'r nou loggit oot.</strong>
 
 Note that some pages micht continue tae be displayed as gif ye were still loggit in, til ye clear yer brouser cache.",
-'welcomeuser' => 'Weelcome, $1!',
+'welcomeuser' => 'Walcome, $1!',
 'welcomecreation-msg' => 'Yer accoont haes been creatit.
-Ye can chynge yer {{SITENAME}} [[Special:Preferences|preferences]] gif ye like.',
+Ye can chynge yer {{SITENAME}} [[Special:Preferences|preferences]] if ye lik.',
 'yourname' => 'Yer uiser name',
 'userlogin-yourname' => 'Uisername',
 'userlogin-yourname-ph' => 'Enter yer uisername',
 'createacct-another-username-ph' => 'Enter the uisername',
-'yourpassword' => 'Passwaird:',
-'userlogin-yourpassword' => 'Password.',
-'userlogin-yourpassword-ph' => 'Enter yer password',
-'createacct-yourpassword-ph' => 'Enter ae password',
-'yourpasswordagain' => 'Retype passwaird:',
-'createacct-yourpasswordagain' => 'Confirm password.',
-'createacct-yourpasswordagain-ph' => 'Enter password again.',
-'remembermypassword' => 'Mynd ma login oan this brouser (fer $1 {{PLURAL:$1|day|days}} at the maist)',
+'yourpassword' => 'Passwird:',
+'userlogin-yourpassword' => 'Passwird.',
+'userlogin-yourpassword-ph' => 'Enter yer passwird',
+'createacct-yourpassword-ph' => 'Enter ae passwird',
+'yourpasswordagain' => 'Retype passwird:',
+'createacct-yourpasswordagain' => 'Confirm passwird.',
+'createacct-yourpasswordagain-ph' => 'Enter passwird again.',
+'remembermypassword' => 'Mynd ma login on this brouser (fer $1 {{PLURAL:$1|day|days}} at the maist)',
 'userlogin-remembermypassword' => 'Keep me loggit in',
 'userlogin-signwithsecure' => 'Uise secure connection',
 'yourdomainname' => 'Yer domain:',
@@ -685,7 +687,7 @@ Ye shid dae it gif ye accidentally shaired theim wi somebodie or gif yer accoont
 'showpreview' => 'Scance ower',
 'showlivepreview' => 'Live leuk ower',
 'showdiff' => 'Shaw chynges',
-'anoneditwarning' => "<strong>Warnishment:</strong>Ye'r no loggit in. Yer IP address will be recordit in this page's eidit histerie.",
+'anoneditwarning' => "<strong>Wairnin:</strong>Ye'r no loggit in. Yer IP address will be recordit in this page's edit history.",
 'anonpreviewwarning' => "<em>Ye'r no loggit in. hainin will record yer IP address in this page's eidit history.</em>",
 'missingsummary' => '<strong>Mynd:</strong> Ye\'v no gien aen eidit owerview. Gin ye dab oan "{{int:savearticle}}" again, yer eidit will be haint wioot ane.',
 'missingcommenttext' => 'Please enter a comment ablo.',
@@ -776,7 +778,7 @@ Yer chynges hae no been hained yet!',
 'continue-editing' => 'Gae til eiditing area',
 'previewconflict' => 'This scance reflects the tex in the upper tex eiditin area like it will kythe gin ye chuise tae hain.',
 'session_fail_preview' => '<strong>Sairy! We culdnae process yer eidit acause o ae loss o term data.</strong>
-Please try again. Gin it disnae wairk still, try [[Secial:UserLogout|login oot]] an loggin in again.',
+Please try again. Gin it disnae wairk still, try [[Secial:UserLogout|logging out]] an loggin in again.',
 'session_fail_preview_html' => "<strong>Sairrie! We coudna process yer eidit cause o ae loss o session data.</strong>
 
 <em>Cause {{SITENAME}} haes raw HTML enabled, the preview is skauk't aes ae precaution again JavaScript attacks.</em>
@@ -842,13 +844,13 @@ The delytion an muiv log fer this page is providit here:",
 'moveddeleted-notice' => 'This page haes bin delytit. 
 The delytion an muiv log fer the page ar provided ablo fer reference.',
 'log-fulllog' => 'View ful log',
-'edit-hook-aborted' => 'Eidit aborted bi huik.
+'edit-hook-aborted' => 'Edit abortit bi huik.
 It gae naw explanation.',
 'edit-gone-missing' => 'Coudna update the page.
 It appears tae hae been deletit.',
-'edit-conflict' => 'Eidit conflict.',
-'edit-no-change' => 'Yer eidit wis ignored cause nae chynge wis made til the tex.',
-'postedit-confirmation' => 'Yer eidit wis hained.',
+'edit-conflict' => 'Edit conflict.',
+'edit-no-change' => 'Yer edit wis ignored cause nae chynge wis made til the tex.',
+'postedit-confirmation' => 'Yer edit wis hained.',
 'edit-already-exists' => 'Coudna mak ae new page.
 It awreadie exists.',
 'defaultmessagetext' => 'Defaut message tex',
@@ -889,7 +891,7 @@ Thir arguments hae been left oot.',
 # "Undo" feature
 'undo-success' => 'The eidit can be ondun. Please check the chynges albo tae check that this is whit ye wint tae dae, n than hain the chynges albo tae be duin ondaein the eidit.',
 'undo-failure' => 'The edit culdnae be undone acause o conflictin edits inatween.',
-'undo-norev' => 'The eidit coudna be ondone cause it disna exist or wis deletit.',
+'undo-norev' => 'The edit coudna be ondone cause it disna exist or wis deletit.',
 'undo-nochange' => 'The edit appears tae hae awready been ondone.',
 'undo-summary' => 'Ondae reveesion $1 bi [[Special:Contributions/$2|$2]] ([[User talk:$2|Tauk]])',
 'undo-summary-username-hidden' => "Ondae reveesion $1 bi ae skauk't uiser",
@@ -905,7 +907,7 @@ The raison gien bi $3 is ''$2''",
 
 # History pages
 'viewpagelogs' => 'Leuk at logs fer this page',
-'nohistory' => "Thaur's nae eidit histerie fer this page.",
+'nohistory' => 'Thare is no edit history fer this page.',
 'currentrev' => 'Current reveision',
 'currentrev-asof' => 'Latest reveesion aes o $1',
 'revisionasof' => 'Reveision as o $1',
@@ -936,10 +938,10 @@ It micht hae been delytit fae the wiki, or the name micht hae been chynged.
 Try [[Special:Search|rakin oan the wiki]] fer new pages ye micht be interestit in.',
 
 # Revision deletion
-'rev-deleted-comment' => '(eidit summarie remuived)',
+'rev-deleted-comment' => '(edit summarie remuived)',
 'rev-deleted-user' => '(uisername removit)',
 'rev-deleted-event' => '(log action remuived)',
-'rev-deleted-user-contribs' => "[uisername or IP address remuived - eidit skauk't fae contreebutions]",
+'rev-deleted-user-contribs' => "[uisername or IP address remuived - edit skauk't frae contreebutions]",
 'rev-deleted-text-permission' => 'This page reveesion haes been <strong>delytit</strong>.
 Details can be foond in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} delytion log].',
 'rev-deleted-text-unhide' => 'This page reveesion haes been <strong>delytit</strong>.
@@ -961,17 +963,20 @@ Ye can still [$1 view this diff] gif ye wish tae proceed.',
 'rev-suppressed-unhide-diff' => 'Yin o the reveesions o this diff haes been <strong>suppressed</strong>.
 Details can be foond in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].
 Ye can still [$1 view this diff] gif ye wish tee proceed.',
+'rev-deleted-diff-view' => "Ane o the revisions o this diff haes been '''deletit'''.
+Ye can view this diff; details can be foond in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
 'rev-suppressed-diff-view' => 'Yin o the revisions o this diff haes been <strong>suppressed</strong>.
 Ye can view this diff; details can be foond in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].',
-'rev-delundel' => 'shaw/scug',
+'rev-delundel' => 'chynge veesibility',
 'rev-showdeleted' => 'shaw',
 'revisiondelete' => 'Delyte/ondelyte reveesions',
 'revdelete-nooldid-title' => 'Onvalid target reveesion',
 'revdelete-nooldid-text' => "Ye'v either no speceefied ae target reveesion(s) tae perform this function, the speceefied reveesion disna exeest, or ye'r attemptin tae skauk the current reveesion.",
 'revdelete-no-file' => 'The file speecified disna exist.',
 'revdelete-show-file-confirm' => 'Ar ye sair ye wish tae view ae deletit reveesion o the file "<nowiki>$1</nowiki>" fae $2 at $3?',
-'revdelete-show-file-submit' => 'Ai',
+'revdelete-show-file-submit' => 'Aye',
 'revdelete-selected' => '<strong>{{PLURAL:$2|Selected reveesion|Selected reveesions}} o [[:$1]]:</strong>',
+'logdelete-selected' => "'''{{PLURAL:$1|Selectit log event|Selectit log events}}:'''",
 'revdelete-text' => "<strong>Delytit reveesions an events will still kyth in the page histerie an logs, but pairts o their content will be onaccessible til the public.</strong>
 Ither admeenistraters oan {{SITENAME}} will still be able tae access the skauk't content an can ondelyte it again through this same interface, onless addeetional restreections ar set.",
 'revdelete-confirm' => "Please confirm that ye'r ettlin tae dae this, that ye unnerstaunn the consequences, an that ye'r daein this in accordance wi [[{{MediaWiki:Policy-url}}|the policie]].",
@@ -983,12 +988,12 @@ Ither admeenistraters oan {{SITENAME}} will still be able tae access the skauk't
 'revdelete-hide-text' => 'Reveesion tex',
 'revdelete-hide-image' => 'Skauk file content.',
 'revdelete-hide-name' => 'Skauk aiction an target',
-'revdelete-hide-comment' => 'Eidit summarie',
-'revdelete-hide-user' => "Eiditor's uisername/IP address",
+'revdelete-hide-comment' => 'Edit summarie',
+'revdelete-hide-user' => "Editor's uisername/IP address",
 'revdelete-hide-restricted' => 'Suppress data fae admeenistraters aes weel aes ithers',
 'revdelete-radio-same' => '(dinna chynge)',
 'revdelete-radio-set' => "Skauk't",
-'revdelete-radio-unset' => 'Visible',
+'revdelete-radio-unset' => 'Veesible',
 'revdelete-suppress' => 'Suppress data fae admeenistraters aes weel aes ithers',
 'revdelete-unsuppress' => 'Remuiv restreections oan restored reveesions',
 'revdelete-log' => 'Raison:',
@@ -1009,7 +1014,7 @@ Ye dinna hae access til it.',
 'revdelete-modify-no-access' => 'Mistak modifiein the eitem dated $2, $1: This eitem haes been maurked "restreected".
 Ye dinna hae access til it.',
 'revdelete-modify-missing' => 'Mistak modifiein item ID $1: It is missing fae the database!',
-'revdelete-no-change' => '<strong>Warnishment:</strong> The eitem dated $2, $1 awreadie haed the requested veesibeelitie settins.',
+'revdelete-no-change' => '<strong>Wairnin:</strong> The eitem dated $2, $1 awreadie haed the requested veesibeelitie settins.',
 'revdelete-concurrent-change' => "Mistak modifiein the eitem dated $2, $1: Its status appears tae'v been chynged bi some ither bodie while ye attempted tae modifie it.
 Please check the logs.",
 'revdelete-only-restricted' => 'Mistak hidin the item dated $2, $1: Ye canna suppress eitems fae view bi admeenistraters wioot selectin yin o the ither veesibeelitie opties ava.',
@@ -1020,7 +1025,7 @@ Please check the logs.",
 ** Potentially libelous information',
 'revdelete-otherreason' => 'Ither/addeetional raison:',
 'revdelete-reasonotherlist' => 'Ither raison',
-'revdelete-edit-reasonlist' => 'Eidit delyte raisons',
+'revdelete-edit-reasonlist' => 'Edit delete raisons',
 'revdelete-offender' => 'Reveesion author:',
 
 # Suppression log
@@ -1035,11 +1040,11 @@ Mak sair that this chynge will maintain historical page conteenuitie.',
 'mergehistory-box' => 'Merge reveesions o twa pages:',
 'mergehistory-from' => 'Soorce page:',
 'mergehistory-into' => 'Destinâtion page:',
-'mergehistory-list' => 'Mergeable eidit history',
+'mergehistory-list' => 'Mergeable edit history',
 'mergehistory-merge' => 'The follaein revisions o [[:$1]] can be merged intil [[:$2]].
 Uise the radio button column tae merge in yinly the reveesions maed at an afore the speecified time.
 Note that uising the navigâtion links will reset this column.',
-'mergehistory-go' => 'Shaw mergeable eidits',
+'mergehistory-go' => 'Shaw mergeable edits',
 'mergehistory-submit' => 'Merge reveesions',
 'mergehistory-empty' => 'Naw reveesions can be merged.',
 'mergehistory-success' => '$3 {{PLURAL:$3|reveesion|reveesions}} o [[:$1]] successfully merged intil [[:$2]].',
@@ -1093,7 +1098,7 @@ Details can be foond in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'searchmenu-exists' => "'''There is a page named \"[[:\$1]]\" oan this wiki.'''",
 'searchmenu-new' => '<strong>Mak the page "[[:$1]]" oan this wiki!</strong> {{PLURAL:$2|0=|See the page foond wi yer rake ava.|See the rake affcome foond ava.}}',
 'searchprofile-articles' => 'Content pages',
-'searchprofile-project' => 'Help and Project pages',
+'searchprofile-project' => 'Heelp n Waurk pages',
 'searchprofile-images' => 'Multimedia',
 'searchprofile-everything' => 'Everything',
 'searchprofile-advanced' => 'Advanced',
@@ -1127,14 +1132,14 @@ Details can be foond in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'powersearch-togglelabel' => "Chec':",
 'powersearch-toggleall' => 'Aw',
 'powersearch-togglenone' => 'Nane',
-'search-external' => 'Eixternal rake',
+'search-external' => 'Freemit rake',
 'searchdisabled' => 'Rakin throu {{SITENAME}} is disabled for performance raesons. Ye can rake via Google juist nou. Mynd that thair indexes o {{SITENAME}} content micht be oot o date.',
 'search-error' => 'Ae mistak haes occurred while rakin: $1',
 
 # Preferences page
 'preferences' => 'Ma preferences',
 'mypreferences' => 'Ma preferences',
-'prefs-edits' => 'Nummer o eidits:',
+'prefs-edits' => 'Nummer o edits:',
 'prefsnologintext2' => 'Please $1 tae chynge yer preferences.',
 'prefs-skin' => 'Huil',
 'skin-preview' => 'First Leuk',
@@ -1153,21 +1158,37 @@ Details can be foond in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'prefs-watchlist-token' => 'Watchleet token:',
 'prefs-misc' => 'Antrin settins',
 'prefs-resetpass' => 'Chynge passwaird',
+'prefs-changeemail' => 'Chynge email address',
 'saveprefs' => 'Hain preferences',
+'restoreprefs' => 'Restore aw default settings (in aw sections)',
 'prefs-editing' => 'Editin',
 'searchresultshead' => 'Rake result settins',
+'stub-threshold' => 'Threshold for <a href="#" class="stub">stub link</a> formattin (bytes):',
 'stub-threshold-disabled' => 'Tuckie',
-'recentchangescount' => 'Nummer o eidits tae shaw bi defaut:',
+'recentchangesdays' => 'Days tae shaw in recent chynges:',
+'recentchangescount' => 'Nummer o edits tae shaw bi defaut:',
+'prefs-help-recentchangescount' => 'This includes recent chynges, page histories, an logs.',
 'prefs-help-watchlist-token2' => 'This is the hidlins key til the wab feed o yer watchleet. Onibodie wha kens this can read yer watchleet, sae dinna shair it. Gif ye need to, [[Special:ResetTokens|Ye can reset it]].',
 'savedprefs' => 'Yer preferences haes been hained.',
+'timezoneuseserverdefault' => 'Uise wiki default ($1)',
+'timezoneuseoffset' => 'Ither (specify offset)',
 'servertime' => 'Server time the nou',
 'guesstimezone' => 'Fill in frae brouser',
+'timezoneregion-africa' => 'Africae',
+'timezoneregion-america' => 'Americae',
+'timezoneregion-asia' => 'Asie',
+'timezoneregion-australia' => 'Australie',
+'timezoneregion-pacific' => 'Paceefic Ocean',
 'allowemail' => 'Allou email frae ither uisers',
+'prefs-searchoptions' => 'Rake',
 'defaultns' => 'Itherwise rake in thir namespaces:',
 'default' => 'defaut',
 'prefs-files' => 'Files',
 'prefs-custom-css' => 'Custom CSS',
 'prefs-custom-js' => 'Custom JS',
+'prefs-common-css-js' => 'Shared CSS/JavaScript for aw skins:',
+'prefs-reset-intro' => 'Ye can uise this page tae reset yer preferences tae the steid defaults.
+This cannae be unduin.',
 'youremail' => 'Yer email:',
 'username' => '{{GENDER:$1|Uisername}}:',
 'uid' => '{{GENDER:$1|Uiser}} ID:',
@@ -1175,34 +1196,88 @@ Details can be foond in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'yourrealname' => 'Yer real name:',
 'yourlanguage' => 'Interface leid:',
 'yourvariant' => 'Content leid variant',
+'prefs-help-variant' => 'Yer preferred variant or orthography tae display the content pages o this wiki in.',
 'yournick' => 'New seegnatur:',
+'prefs-help-signature' => 'Comments on collogue pages should be signed wi "<nowiki>~~~~</nowiki>", which will be convertit intae yer signatur an a timestamp.',
 'badsig' => 'Raw signature nae guid; check HTML tags.',
 'badsiglength' => 'Yer nickname is ower lang; it haes tae be $1 {{PLURAL:$1|character|characters}} or less.',
+'yourgender' => 'Hou dae ye prefer tae be describit?',
+'gender-unknown' => 'I prefer nae tae say',
+'prefs-help-gender' => 'Settin this preference is optional.
+The saftware uises its value tae address ye an tae mention ye tae ithers uisin the appropriate grammatical gender.
+This information will be public.',
 'email' => 'E-mail',
 'prefs-help-realname' => 'Rael name is optional an gin ye chuise tae provide it this will be uised tae gie ye attreibution for yer wark.',
 'prefs-help-email' => 'Wab-mail is optional, bit is needed fer passwaird resets, shid ye ferget yer passwaird.',
 'prefs-help-email-others' => 'Ye can chuise tae let ithers contact ye bi wab-mail through ae link oan yer uiser or tauk page.
 Yer wab-mail address isna revealed whan ither uisers contact ye.',
 'prefs-help-email-required' => 'Yer e-mail address is needit.',
+'prefs-i18n' => 'Internaitionalisation',
+'prefs-signature' => 'Signatur',
 'prefs-diffs' => 'Diffs',
+'prefs-help-prefershttps' => 'This preference will tak effect on yer next login.',
 
 # User rights
+'userrights' => 'Uiser richts management',
 'userrights-lookup-user' => 'Manish uiser boorachs',
 'userrights-user-editname' => 'Enter a uisername:',
 'editusergroup' => 'Eidit uiser boorach',
 'editinguser' => 'Chynging uiser richts o uiser <strong>[[User:$1|$1]]</strong> $2',
+'userrights-editusergroup' => 'Edit uiser groups',
+'saveusergroups' => 'Save uiser groups',
 'userrights-groupsmember' => 'Member o:',
+'userrights-groupsmember-auto' => 'Implicit member o:',
+'userrights-groups-help' => 'You mey alter the groups this uiser is in:
+* A checked box means the uiser is in that group.
+* An unchecked box means the uiser is nae in that group.
+* A * indicates that ye cannae remove the group ance you hae addit it, or vice versa.',
+'userrights-no-interwiki' => 'Ye dae nae hae permission tae edit uiser richts on ither wikis.',
+'userrights-nodatabase' => 'Database $1 daes nae exist or is nae local.',
+'userrights-nologin' => 'Ye must [[Special:UserLogin|log in]] wi an admeenistrator accoont tae assign uiser richts.',
+'userrights-notallowed' => 'Ye dae nae hae permission tae add or remove uiser richts.',
+'userrights-changeable-col' => 'Groups ye can chynge',
+'userrights-unchangeable-col' => 'Groups ye cannae chynge',
+'userrights-conflict' => 'Conflict o uiser richts chynges! Please review an confirm yer chynges.',
+'userrights-removed-self' => 'Ye successfully removed yer ain richts. As such, ye are no langer able tae access this page.',
 
 # Groups
 'group-user' => 'Uisers',
+'group-autoconfirmed' => 'Autoconfirmed uisers',
 'group-bot' => 'Bots',
+'group-sysop' => 'Admeenistrators',
+'group-suppress' => 'Owersichts',
 'group-all' => '(aw)',
 
 'group-user-member' => '{{GENDER:$1|uiser}}',
 'group-bot-member' => '{{GENDER:$1|bot}}',
 
 # Rights
-'right-delete' => 'Delyte pages',
+'right-createpage' => 'Create pages (which are nae discussion pages)',
+'right-createaccount' => 'Create new uiser accoonts',
+'right-minoredit' => 'Mark edits as smaa',
+'right-move' => 'Flit pages',
+'right-move-subpages' => 'Flit pages wi thair subpages',
+'right-move-rootuserpages' => 'Flit ruit uiser pages',
+'right-movefile' => 'Flit files',
+'right-suppressredirect' => 'Nae create redirects frae soorce pages when flittin pages',
+'right-upload' => 'Uplaid files',
+'right-reupload' => 'Owerwrite existin files',
+'right-reupload-own' => 'Owerwrite existin files uplaidit bi anesel',
+'right-reupload-shared' => 'Owerride files on the shared media repository locally',
+'right-upload_by_url' => 'Uplaid files frae a URL',
+'right-purge' => 'Purge the steid cache for a page wioot confirmation',
+'right-autoconfirmed' => 'Nae be affectit bi IP-based rate leemits',
+'right-bot' => 'Be treatit as an automatit process',
+'right-nominornewtalk' => 'Nae hae smaa edits tae discussion pages trigger the new messages prompt',
+'right-apihighlimits' => 'Uise heicher leemits in API queries',
+'right-writeapi' => 'Uise o the write API',
+'right-delete' => 'Delete pages',
+'right-bigdelete' => 'Delete pages wi lairge histories',
+'right-deletelogentry' => 'Delete an undelete specific log entries',
+'right-deleterevision' => 'Delete an undelete specific reveesions o pages',
+'right-deletedhistory' => 'View deletit history entries, wioot thair associatit text',
+'right-deletedtext' => 'View deletit text an chynges atween deletit reveesions',
+'right-browsearchive' => 'Rake deletit pages',
 
 # Special:Log/newusers
 'newuserlogpage' => 'Uiser cræftin log',
@@ -1212,7 +1287,7 @@ Yer wab-mail address isna revealed whan ither uisers contact ye.',
 'rightslogtext' => 'This is a log o chynges tae uiser richts.',
 
 # Associated actions - in the sentence "You do not have permission to X"
-'action-edit' => 'eidit this page',
+'action-edit' => 'edit this page',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|chynge|chynges}}',
@@ -1221,8 +1296,8 @@ Yer wab-mail address isna revealed whan ither uisers contact ye.',
 'recentchanges-summary' => 'Follae the maist recent chynges tae the wiki on this page.',
 'recentchanges-feed-description' => 'Follae the maist recent chynges tae the wiki in this feed.',
 'recentchanges-label-newpage' => 'This edit created a freish page',
-'recentchanges-label-minor' => 'This is ae smaa eidit',
-'recentchanges-label-bot' => 'This edit wis performed by a bot',
+'recentchanges-label-minor' => 'This is a smaa edit',
+'recentchanges-label-bot' => 'This edit wis performed bi a bot',
 'recentchanges-label-unpatrolled' => 'This edit haes nae yet bin patrolled',
 'rcnotefrom' => 'Ablo ar the chynges sin <strong>$2</strong> (up til <strong>$1</strong> shawn).',
 'rclistfrom' => 'Shaw new chynges stertin frae $1',
@@ -1288,7 +1363,7 @@ Tae inclæde ae file in ae page, uise ae link in yin o the follaein forms:
 'filestatus' => 'Copyricht status:',
 'filesource' => 'Soorce:',
 'uploadedfiles' => 'Uplaidit files',
-'ignorewarning' => 'Ignore warnishment n hain file oniewey.',
+'ignorewarning' => 'Ignore wairnin n hain file oniewey.',
 'ignorewarnings' => 'Ignore ony warnins',
 'illegalfilename' => 'The filename "$1" haes characters that isna alloud in page teitles. Please rename the file an gie uplaidin it anither shot.',
 'badfilename' => 'Eimage name haes been chynged tae "$1".',
@@ -1301,7 +1376,7 @@ Gif ye still wish tae uplaid yer file, please gae back an uise ae new name.
 'fileexists-shared-forbidden' => 'Ae file wi this name awreadie exists in the shaired file repository.
 Gif ye still wish tae uplaid yer file, please gae back an uise ae new name.
 [[File:$1|thumb|center|$1]]',
-'uploadwarning' => 'Uplaid warnishment',
+'uploadwarning' => 'Uplaid wairnin',
 'savefile' => 'Hain file',
 'uploadedimage' => 'uplaidit "$1"',
 'uploaddisabled' => 'Sorry, uplaidin is disabled.',
@@ -1376,8 +1451,8 @@ Ilka rou contains airtins til the first and seicont redirect, aes weel aes the t
 
 'brokenredirects' => 'Brucken reguidals',
 'brokenredirectstext' => 'The folling redirects link til non-existent pages:',
-'brokenredirects-edit' => 'eidit',
-'brokenredirects-delete' => 'delyte',
+'brokenredirects-edit' => 'edit',
+'brokenredirects-delete' => 'delete',
 
 'withoutinterwiki' => 'Pages athoot leid links',
 'withoutinterwiki-legend' => 'Prefix',
@@ -1465,7 +1540,7 @@ See [[Special:WantedCategories|wanted categories]] ava.',
 'special-categories-sort-abc' => 'sairt by the alphabet',
 
 # Special:DeletedContributions
-'sp-deletedcontributions-contribs' => 'contreibutions',
+'sp-deletedcontributions-contribs' => 'contreebutions',
 
 # Special:LinkSearch
 'linksearch-ns' => 'Namespace:',
@@ -1518,23 +1593,23 @@ Future chynges til this page an its associated tauk page will be leeted there.',
 'changed' => 'chynged',
 
 # Delete
-'deletepage' => 'Delyte page',
+'deletepage' => 'Delete page',
 'excontent' => "content wis: '$1'",
 'excontentauthor' => "content wis: '$1' (an the ae contreibutor wis '[[Special:Contributions/$2|$2]]')",
 'exbeforeblank' => "content afore blankin wis: '$1'",
 'exblank' => 'page wis tuim',
-'delete-confirm' => 'Delyte "$1"',
-'delete-legend' => 'Delyte',
-'historywarning' => "<strong>Warnishment:</strong> The page ye'r aboot tae delete haes ae histerie wi approximatelie $1 {{PLURAL:$1|reveesion|reveesions}}:",
+'delete-confirm' => 'Delete "$1"',
+'delete-legend' => 'Delete',
+'historywarning' => "<strong>Wairnin:</strong> The page ye'r aboot tae delete haes ae history wi approximatelie $1 {{PLURAL:$1|reveesion|reveesions}}:",
 'confirmdeletetext' => "Ye'r aboot tae permanently delete a page or eimage alang wi aa its history frae the database.
 Please confirm that ye intend tae dae this, that ye unnerstaun the consequences,
 an that ye'r daein this in accord wi [[{{MediaWiki:Policy-url}}]].",
 'actioncomplete' => 'Action duin',
 'actionfailed' => 'Action failed',
-'deletedtext' => '"$1" haes been delytit. See $2 fer ae record o recent delytions.',
-'dellogpage' => 'Delytion log',
+'deletedtext' => '"$1" haes been deletit. See $2 fer ae record o recent deletions.',
+'dellogpage' => 'Deletion log',
 'dellogpagetext' => 'Ablo is a leet o the maist recent deletions.',
-'deletionlog' => 'delytion log',
+'deletionlog' => 'deletion log',
 'reverted' => 'Revertit tae aulder reveision',
 'deletecomment' => 'Raeson:',
 'deletereasonotherlist' => 'Ither raeson',
@@ -1605,20 +1680,21 @@ Consult the [[Special:Log/delete|delytion log]] fer ae record o recent delytions
 
 # Contributions
 'contributions' => '{{GENDER:$1|Uiser}} contributions',
-'contributions-title' => 'Uiser contreibutions fer $1',
-'mycontris' => 'Ma contreibutions',
+'contributions-title' => 'Uiser contreebutions fer $1',
+'mycontris' => 'Ma contreebutions',
 'contribsub2' => 'Fer {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Nae chynges wis funnd matchin thir criteria.',
 'uctop' => '(current)',
 'month' => 'Frae month (an afore):',
 'year' => 'Frae year (an afore):',
 
-'sp-contributions-newbies' => "Shaw contreibutions o' freish accounts ainlie",
+'sp-contributions-newbies' => 'Shaw contreebutions o freish accoonts ainlie',
 'sp-contributions-blocklog' => 'block log',
 'sp-contributions-uploads' => 'uploads',
 'sp-contributions-logs' => 'logs',
 'sp-contributions-talk' => 'tauk',
 'sp-contributions-search' => 'Rake fer contreebutions',
+'sp-contributions-suppresslog' => 'suppressed uiser contreebutions',
 'sp-contributions-username' => 'IP address or uisername:',
 'sp-contributions-toponly' => 'Ainlie shaw edits that are latest revisions',
 'sp-contributions-newonly' => 'Yinlie shaw eidits that ar page cræftins',
@@ -1789,12 +1865,12 @@ Hain it til yer computer an uplaid it here.',
 'tooltip-pt-mytalk' => 'Yer tauk page',
 'tooltip-pt-preferences' => 'Ma preferences',
 'tooltip-pt-watchlist' => "Ae leet o pages ye'r moniterin fer chynges",
-'tooltip-pt-mycontris' => 'Leet o yer contreibutions',
+'tooltip-pt-mycontris' => 'Leet o yer contreebutions',
 'tooltip-pt-login' => "It's a guid idea tae log i, but ye dinna hae tae.",
 'tooltip-pt-logout' => 'Log oot',
 'tooltip-ca-talk' => 'Discussion aneat the content page',
-'tooltip-ca-edit' => 'Ye can eidit this page. Please uise the preview button afore Hainin',
-'tooltip-ca-addsection' => 'Start a new section',
+'tooltip-ca-edit' => 'Ye can edit this page. Please uise the preview button afore hainin',
+'tooltip-ca-addsection' => 'Stairt a new section',
 'tooltip-ca-viewsource' => 'This page is protectit.
 Ye can view its soorce',
 'tooltip-ca-history' => "Bygane revisions o' this page",
@@ -1817,7 +1893,7 @@ Ye can view its soorce',
 'tooltip-t-whatlinkshere' => "List o' a' wiki pages that link 'ere",
 'tooltip-t-recentchangeslinked' => 'Recent changes in pages linked frae this page',
 'tooltip-feed-atom' => 'Atom feed fer this page',
-'tooltip-t-contributions' => "View this uiser's contreibutions",
+'tooltip-t-contributions' => "View this uiser's contreebutions",
 'tooltip-t-emailuser' => 'Send ae wab-mail til this uiser',
 'tooltip-t-upload' => 'Uplaid files',
 'tooltip-t-specialpages' => 'Leet o byordinar pages',
@@ -1826,7 +1902,7 @@ Ye can view its soorce',
 'tooltip-ca-nstab-main' => 'Leuk at content page',
 'tooltip-ca-nstab-user' => 'View the uiser page',
 'tooltip-ca-nstab-special' => "This is ae byordinair page, ye cannae eidit th' page itsel",
-'tooltip-ca-nstab-project' => 'View the project page',
+'tooltip-ca-nstab-project' => 'See the waurk page',
 'tooltip-ca-nstab-image' => 'View the file page',
 'tooltip-ca-nstab-template' => 'View the template',
 'tooltip-ca-nstab-category' => 'View the categerie page',
@@ -1836,8 +1912,8 @@ Ye can view its soorce',
 'tooltip-diff' => 'Shaw the chynges that ye makit til the tex.',
 'tooltip-compareselectedversions' => 'See the differs atween the twa selectit versions o this page.',
 'tooltip-watch' => 'Add this page tae yer watchleet',
-'tooltip-rollback' => '"Rowback" reverts eidit(s) til this page o th\' laist contreebuter in yin clap',
-'tooltip-undo' => '"Ondae" reverts this eidit n apens the eidit form in luikower mode. It permits addin ae raison in the owerview.',
+'tooltip-rollback' => '"Rowback" reverts edit(s) tae this page o the lai=st contreibutor in ane dab',
+'tooltip-undo' => '"Ondae" reverts this edit n apens the eidit form in luikower mode. It permits addin ae raison in the owerview.',
 'tooltip-summary' => 'Enter ae short owerview',
 
 # Metadata
@@ -1873,7 +1949,7 @@ Dae <strong>NO</strong> ful this in!',
 'nextdiff' => 'Newer eidit →',
 
 # Media information
-'mediawarning' => '<strong>Warnishment:</strong> This file type micht contain maleecious code.
+'mediawarning' => '<strong>Wairnin:</strong> This file type micht contain maleecious code.
 Bi executing it, yer system micht be compromised.',
 'imagemaxsize' => 'Eimage size limit:<br /><em>(fer file description pages)</em>',
 'file-info-size' => '$1 × $2 pixels, file size: $3, MIME type: $4',
@@ -1962,7 +2038,7 @@ $5
 This confirmation code will expire oan $4.',
 
 # Delete conflict
-'deletedwhileediting' => '<strong>Warnishment:</strong> This page wis delytit efter ye stairted eiditin!',
+'deletedwhileediting' => '<strong>Wairnin:</strong> This page wis deletit efter ye stairted editin!',
 'confirmrecreate' => 'Uiser [[User:$1|$1]] ([[User talk:$1|tauk]]) delytit this page efter ye stairted eiditin wi raison:
 : <em>$2</em>
 Please confirm that ye reallie want tae recræft this page.',
@@ -2018,7 +2094,7 @@ Please confirm that ye reallie want tae recræft this page.',
 # Special:Tags
 'tag-filter' => '[[Special:Tags|Tag]] filter:',
 'tag-filter-submit' => 'Filter',
-'tags-edit' => 'eidit',
+'tags-edit' => 'edit',
 
 # HTML forms
 'htmlform-selectorother-other' => 'Ither',
index e4c82b0..9a20472 100644 (file)
@@ -17,6 +17,7 @@
  * @author Ergon
  * @author Euriditi
  * @author FatosMorina
+ * @author GretaDoci
  * @author Kaganer
  * @author Marinari
  * @author Mdupont
@@ -735,6 +736,8 @@ Për të hyrë tërësisht duhet të vendosni një fjalëkalim të ri këtu:',
 'resetpass-submit-cancel' => 'Anulo',
 'resetpass-wrong-oldpass' => 'Fjalëkalimi momental ose i përkohshëm nuk është i vlefshëm. Ndoshta tanimë me sukses keni ndërruar fjalëkalimin, ose keni kërkuar fjalëkalim të përkohshëm.',
 'resetpass-temp-password' => 'Fjalëkalimi i përkohshëm:',
+'resetpass-expired' => 'Fjalëkalimin tuaj ka skaduar. Ju lutem vendosni një fjalëkalim të ri për të hyr.',
+'resetpass-expired-soft' => 'Fjalëkalimi juaj ka skaduar dhe duhet të rivendoset. Ju lutem zgjidhni një fjalëkalim të ri tani, ose klikoni "{{int:resetpass-submit-cancel}}" për ta rivendosur më vonë.',
 
 # Special:PasswordReset
 'passwordreset' => 'Ndrysho fjalkalimin',
@@ -2420,6 +2423,7 @@ Bllokimi i fundit është shfaqur më poshtë për referencë:',
 'sp-contributions-blocked-notice-anon' => 'Kjo adresë IP është e bllokuar aktualisht.
 Bllokimi i funditë është më poshtë për referencë:',
 'sp-contributions-search' => 'Kërko tek kontributet',
+'sp-contributions-suppresslog' => 'Anëtar me Kontribute të kufizuara',
 'sp-contributions-username' => 'IP Addresa ose Përdoruesi:',
 'sp-contributions-toponly' => 'Trego vetëm redaktimet që janë versionet më të fundit',
 'sp-contributions-submit' => 'Kërko',
index c710c70..0bba5e0 100644 (file)
@@ -897,7 +897,7 @@ För att slutföra inloggningen måste du välja ett nytt lösenord här:',
 'resetpass-temp-password' => 'Tillfälligt lösenord:',
 'resetpass-abort-generic' => 'Lösenordsändring av har avbrutits av ett tillägg.',
 'resetpass-expired' => 'Ditt lösenord har gått ut. Var god välj ett nytt lösenord för att logga in.',
-'resetpass-expired-soft' => 'Ditt lösenord har gått ut och behöver återställas. Var god välj ett nytt lösenord nu eller klicka på avbryt för att återställa det senare.',
+'resetpass-expired-soft' => 'Ditt lösenord har gått ut och behöver återställas. Var god välj ett nytt lösenord nu eller klicka på "{{int:resetpass-submit-cancel}}" för att återställa det senare.',
 
 # Special:PasswordReset
 'passwordreset' => 'Återställ lösenord',
@@ -1750,7 +1750,7 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'recentchanges-legend-heading' => "'''Teckenförklaring:'''",
 'recentchanges-legend-newpage' => '(se även [[Special:NewPages|listan över nya sidor]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnotefrom' => "Nedan visas ändringar sedan '''$2''' (upp till '''$1''' ändringar visas).",
+'rcnotefrom' => 'Nedan visas ändringar sedan <strong>$2</strong> (upp till <strong>$1</strong> ändringar visas).',
 'rclistfrom' => 'Visa ändringar från och med $1',
 'rcshowhideminor' => '$1 mindre ändringar',
 'rcshowhideminor-show' => 'Visa',
@@ -1897,6 +1897,7 @@ Du borde be någon som kan se undanhållen fildata att granska situationen innan
 'uploaddisabledtext' => 'Uppladdning av filer är avstängd.',
 'php-uploaddisabledtext' => 'PHP filuppladdningar är avaktiverade. Kolla inställningarna för file_uploads.',
 'uploadscripted' => 'Denna fil innehåller HTML eller script som felaktigt kan komma att tolkas av webbläsare.',
+'uploadscriptednamespace' => 'Denna SVG-fil innehåller den ogiltiga namnrymden "$1"',
 'uploadinvalidxml' => 'XML-koden i den uppladdade filen kunde inte tolkas.',
 'uploadvirus' => 'Filen innehåller virus! Detaljer: $1',
 'uploadjava' => 'Filen är en ZIP-fil som innehåller en Java .class fil.
@@ -2726,6 +2727,7 @@ Den senaste posten i blockeringsloggen visas nedan som referens:',
 'sp-contributions-search' => 'Sök efter användarbidrag',
 'sp-contributions-username' => 'IP-adress eller användarnamn:',
 'sp-contributions-toponly' => 'Visa endast aktuella sidversioner',
+'sp-contributions-newonly' => 'Visa endast redigeringar där sidor skapas',
 'sp-contributions-submit' => 'Sök',
 
 # What links here
index 958978f..7eb61ee 100644 (file)
@@ -516,7 +516,7 @@ $1',
 'viewsource' => 'మూలాన్ని చూపించు',
 'viewsource-title' => '$1 యొక్క సోర్సు చూడండి',
 'actionthrottled' => 'కార్యాన్ని ఆపేసారు',
-'actionthrottledtext' => 'à°¸à±\8dపామà±\81à°¨à±\81 à°¤à°\97à±\8dà°\97à°¿à°\82à°\9aà°\9fానిà°\95à°¿ à°¤à±\80à°¸à±\81à°\95à±\81à°¨à±\8dà°¨ à°¨à°¿à°°à±\8dణయాల à°µà°²à±\8dà°², à°®à±\80à°°à±\81 à°\88 à°\95ారà±\8dయానà±\8dని à°\85తి à°¤à°\95à±\8dà°\95à±\81à°µ à°¸à°®à°¯à°\82à°²à±\8b à°¬à±\8bà°²à±\86à°¡à°¨à±\8dని à°¸à°¾à°°à±\8dà°²à±\81 à°\9aà±\87à°¯à°\95à±\81à°\82à°¡à°¾ à°\85à°¡à±\8dà°¡à±\81à°\95à±\81à°\82à°\9fà±\81à°¨à±\8dనాము. కొన్ని నిమిషాలు ఆగి మరలా ప్రయత్నించండి.',
+'actionthrottledtext' => 'à°¸à±\8dపామà±\81à°¨à±\81 à°¨à°¿à°°à±\8bధిà°\82à°\9aà±\87à°\82à°¦à±\81à°\95à±\81 à°\97ానà±\81, à°¤à°\95à±\8dà°\95à±\81à°µ à°¸à°®à°¯à°\82à°²à±\8b à°®à°°à±\80 à°\8eà°\95à±\8dà°\95à±\81à°µ à°¸à°¾à°°à±\8dà°²à±\81 à°\88 à°ªà°¨à°¿ à°\9aà±\87à°¯à°\95à±\81à°\82à°¡à°¾ à°ªà°°à°¿à°®à°¿à°¤à°¿ à°µà°¿à°§à°¿à°\82à°\9aà°¾à°\82. à°®à±\80à°°à±\81 à°¦à°¾à°¨à±\8dని à°\85ధిà°\97మిà°\82à°\9aారు. కొన్ని నిమిషాలు ఆగి మరలా ప్రయత్నించండి.',
 'protectedpagetext' => 'ఈ పేజీలో మార్పులు వగైరాలు చెయ్యకుండా ఉండేందుకు గాను, సంరక్షించబడింది.',
 'viewsourcetext' => 'మీరీ పేజీ సోర్సును చూడవచ్చు, కాపీ చేసుకోవచ్చు:',
 'viewyourtext' => 'ఈ పేజీలోని <strong>మీ మార్పుల</strong> యొక్క మూలాన్ని చూడవచ్చు, కాపీచేసుకోవచ్చు:',
@@ -534,8 +534,8 @@ $2',
 'myprivateinfoprotected' => 'మీ అంతరంగిక సమాచారాన్ని సవరించేందుకు మీకు అనుమతి లేదు.',
 'mypreferencesprotected' => 'మీ అభీష్టాలను సవరించేందుకు మీకు అనుమతి లేదు.',
 'ns-specialprotected' => 'ప్రత్యేక పేజీలపై దిద్దుబాట్లు చేయలేరు.',
-'titleprotected' => "ఈ పేజీ [[వాడుకరి:$1|$1]] సృష్టించకుండా సంరక్షించబడింది.
-అందుకు ఇచ్చిన కారణం: ''$2''.",
+'titleprotected' => '[[వాడుకరి:$1|$1]] ఈ పేజీని సృష్టించకుండా ఇది సంరక్షించబడింది.
+అందుకు ఇచ్చిన కారణం: "<em>$2</em>".',
 'filereadonlyerror' => 'ఫైలు ఖజానా "$2" రీడ్-ఓన్లీ స్థితిలో ఉండటం చేత "$1" ఫైలులో మార్పులు చెయ్యలేకపోయాం.
 
 దానికి తాళం వేసిన అధికారి ఇచ్చిన వివరణ ఇది: "$3".',
@@ -582,7 +582,7 @@ $2',
 'nav-login-createaccount' => 'లాగినవండి / ఖాతాని సృష్టించుకోండి',
 'loginprompt' => '{{SITENAME}}లోకి ప్రవేశించాలంటే మీ విహారిణిలో కూకీలు చేతనమై ఉండాలి.',
 'userlogin' => 'లాగినవండి / ఖాతాను సృష్టించుకోండి',
-'userloginnocreate' => 'à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aండి',
+'userloginnocreate' => 'లాà°\97ినవండి',
 'logout' => 'నిష్క్రమించు',
 'userlogout' => 'లాగౌట్',
 'notloggedin' => 'లాగిన్‌ అయిలేరు',
@@ -595,7 +595,7 @@ $2',
 'gotaccountlink' => 'లాగినవండి',
 'userlogin-resetlink' => 'మీ లాగిన్ వివరాలను మరచిపోయారా?',
 'userlogin-resetpassword-link' => 'మీ సంకేతపదాన్ని మర్చిపోయారా?',
-'helplogin-url' => 'సహాయం:లాగినవడం',
+'helplogin-url' => 'Help:లాగినవడం',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|లాగినవడంలో సహాయం]]',
 'userlogin-loggedin' => 'మీరు ఈసరికే {{GENDER:$1|$1}} గా లాగిన్ అయి ఉన్నారు.
 వేరే వాడుకరిగా లాగినయేందుకు కింది ఫారమును వాడండి.',
@@ -710,17 +710,17 @@ $2',
 'changepassword-throttled' => 'కొద్దిసేపటిగా మీరు చాలా లాగిన్ ప్రయత్నాలు చేసారు.
 మళ్ళీ ప్రయత్నించే ముందు $1 ఆగండి.',
 'resetpass_forbidden' => 'సంకేతపదాలను మార్చటం కుదరదు',
-'resetpass-no-info' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°¨à±\87à°°à±\81à°\97à°¾ à°\9aà±\82à°¡à°\9fానిà°\95à°¿ à°®à±\80à°°à±\81 à°²à±\8bనిà°\95à°¿ à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aà°¿వుండాలి.',
+'resetpass-no-info' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°¨à±\87à°°à±\81à°\97à°¾ à°\9aà±\82à°¡à°\9fానిà°\95à°¿ à°®à±\80à°°à±\81 à°²à°¾à°\97ినయి వుండాలి.',
 'resetpass-submit-loggedin' => 'సంకేతపదాన్ని మార్చు',
 'resetpass-submit-cancel' => 'రద్దుచేయి',
 'resetpass-wrong-oldpass' => 'తప్పుడు తాత్కాలిక లేదా ప్రస్తుత సంకేతపదం.
 మీరు మీ సంకేతపదాన్ని ఇప్పటికే విజయవంతంగా మార్చుకొనివుండవచ్చు లేదా కొత్త తాత్కాలిక సంకేతపదం కోసం అభ్యర్థించారు.',
 'resetpass-recycled' => 'మీ ప్రస్తుత సంకేతపదాన్ని వేరే సంకేతపదంతో మార్చుకోండి',
-'resetpass-temp-emailed' => 'à°®à±\80à°°à±\81 à°®à±\80 à°\88à°®à±\86యిలà±\81à°\95à±\81 à°ªà°\82పిà°\82à°\9aà°¿à°¨ à°¤à°¾à°¤à±\8dà°\95ాలిà°\95 à°\95à±\8bà°¡à±\81à°¤à±\8b à°²à±\8bపలిà°\95à°¿ à°µà°\9aà±\8dà°\9aారà±\81. à°ªà±\8dà°°à°µà±\87à°¶à°\82 à°ªà±\82à°°à±\8dతి à°\95ావడానిà°\95à°¿, à°\87à°\95à±\8dà°\95à°¡ à°®à±\80à°°à±\81 à°¤à°ªà±\8dపనిసరిà°\97à°¾ à°\95à±\8aà°¤à±\8dà°¤ à°¸à°\82à°\95à±\87తపదà°\82 à°\87à°µà±\8dవాలి:',
+'resetpass-temp-emailed' => 'à°®à±\80à°°à±\81 à°®à±\80 à°\88à°®à±\86యిలà±\81à°\95à±\81 à°ªà°\82పిà°\82à°\9aà°¿à°¨ à°¤à°¾à°¤à±\8dà°\95ాలిà°\95 à°\95à±\8bà°¡à±\81à°¤à±\8b à°²à°¾à°\97ినయà±\8dయారà±\81. à°²à°¾à°\97à°¿à°¨à±\8dà°¨à±\81 à°ªà±\82à°°à±\8dతి à°\9aà±\87à°¸à±\87à°\82à°¦à±\81à°\95à±\81, à°\87à°\95à±\8dà°\95à°¡ à°®à±\80à°°à±\81 à°¤à°ªà±\8dపనిసరిà°\97à°¾ à°¸à°\82à°\95à±\87తపదà°\82 à°®à°¾à°°à±\8dà°\9aà±\81à°\95à±\8bవాలి:',
 'resetpass-temp-password' => 'తాత్కాలిక సంకేతపదం:',
 'resetpass-abort-generic' => 'ఓ పొడిగింత (ఎక్స్టెన్‍షన్) సంకేతపదం మార్పిడిని ఆపేసింది.',
 'resetpass-expired' => 'మీ సంకేతపదానికి కాలం చెల్లింది. కొత్త సంకేతపదం ఇచ్చి లాగినవండి.',
-'resetpass-expired-soft' => 'మీ సంకేతపదానికి కాలం చెల్లింది, కాబట్టి కొత్తది ఇవ్వాలి. కొత్తది ఇప్పుడే ఇవ్వండి లేదా రద్దు నొక్కి, తరువాత మార్చుకోండి.',
+'resetpass-expired-soft' => 'మీ సంకేతపదానికి కాలం చెల్లింది, కాబట్టి కొత్తది ఇవ్వాలి. కొత్తది ఇప్పుడే ఇవ్వండి లేదా "{{int:resetpass-submit-cancel}}" నొక్కి, తరువాత మార్చుకోండి.',
 
 # Special:PasswordReset
 'passwordreset' => 'సంకేతపదాన్ని మార్చుకోండి',
@@ -759,7 +759,7 @@ $2
 'changeemail' => 'ఈ-మెయిలు చిరునామా మార్పు',
 'changeemail-header' => 'ఖాతా ఈ-మెయిల్ చిరునామాని మార్చండి',
 'changeemail-text' => 'మీ ఈమెయిలు చిరునామాని మార్చుకోడానికి ఈ ఫారాన్ని నింపండి. ఈ మార్పుని నిర్ధారించడానికి మీ సంకేతపదాన్ని ఇవ్వాల్సివస్తుంది.',
-'changeemail-no-info' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°¨à±\87à°°à±\81à°\97à°¾ à°\9aà±\82à°¡à°\9fానిà°\95à°¿ à°®à±\80à°°à±\81 à°²à±\8bనిà°\95à°¿ à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aà°¿వుండాలి.',
+'changeemail-no-info' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°¨à±\87à°°à±\81à°\97à°¾ à°\9aà±\82à°¡à°\9fానిà°\95à°¿ à°®à±\80à°°à±\81 à°²à°¾à°\97ినయి వుండాలి.',
 'changeemail-oldemail' => 'ప్రస్తుత ఈ-మెయిలు చిరునామా:',
 'changeemail-newemail' => 'కొత్త ఈ-మెయిలు చిరునామా:',
 'changeemail-none' => '(ఏమీలేదు)',
@@ -815,8 +815,8 @@ $2
 'anonpreviewwarning' => '<em>మీరు లాగినవలేదు. భద్రపరిస్తే ఈ పేజీ యొక్క దిద్దుబాటు చరిత్రలో మీ ఐపీ చిరునామా నమోదవుతుంది.</em>',
 'missingsummary' => '<strong>గుర్తు చేస్తున్నాం:</strong> మీరు దిద్దుబాటు సారాంశమేమీ ఇవ్వలేదు. పేజీని మళ్ళీ భద్రపరచమని చెబితే సారాంశమేమీ లేకుండానే దిద్దుబాటును భద్రపరుస్తాం.',
 'missingcommenttext' => 'కింద ఓ వ్యాఖ్య రాయండి.',
-'missingcommentheader' => "'''గుర్తు చేస్తున్నాం''': ఈ వ్యాఖ్యకు మీరు విషయం/శీర్షిక పెట్టలేదు.
-\"{{int:savearticle}}\"ని మళ్ళీ నొక్కితే, మీ మార్పుకి విషయం/శీర్షిక ఏమీ లేకుండానే భద్రపరుస్తాం.",
+'missingcommentheader' => '<strong>గుర్తు చేస్తున్నాం:</strong> ఈ వ్యాఖ్యకు మీరు విషయం/శీర్షిక పెట్టలేదు.
+"{{int:savearticle}}"ని మళ్ళీ నొక్కితే, అది లేకుండానే మీ మార్పును భద్రపరుస్తాం.',
 'summary-preview' => 'సారాంశం మునుజూపు:',
 'subject-preview' => 'విషయం/శీర్షిక మునుజూపు:',
 'blockedtitle' => 'వాడుకరి నిరోధించబడ్డారు',
@@ -836,7 +836,7 @@ $2
 'autoblockedtext' => 'మీ ఐపీ చిరునామా ఆటోమాటిగ్గా నిరోధించబడింది. ఎందుకంటే ఇదే ఐపీ చిరునామాని ఓ నిరోధిత వాడుకరి ఉపయోగించారు. ఆ వాడుకరిని $1 నిరోధించారు.
 అందుకు ఇచ్చిన కారణం ఇదీ:
 
-:\'\'$2\'\'
+:<em>$2</em>
 
 * నిరోధం మొదలైన సమయం: $8
 * నిరోధించిన కాలం: $6
@@ -852,7 +852,7 @@ $2
 'whitelistedittext' => 'పుటలలో మార్పులు చెయ్యడానికి $1.',
 'confirmedittext' => 'పేజీల్లో మార్పులు చేసేముందు మీ ఈ-మెయిలు చిరునామా ధృవీకరించాలి. [[Special:Preferences|మీ అభిరుచుల]]లో మీ ఈ-మెయిలు చిరునామా రాసి, ధృవీకరించండి.',
 'nosuchsectiontitle' => 'విభాగాన్ని కనగొనలేకపోయాం',
-'nosuchsectiontext' => 'à°®à±\80à°°à±\81 à°²à±\87ని à°µà°¿à°­à°¾à°\97ానà±\8dని à°®à°¾à°°à±\8dà°\9aడానిà°\95à°¿ ప్రయత్నించారు.
+'nosuchsectiontext' => 'à°\85సలà±\81 à°²à±\87à°¨à±\87 à°²à±\87ని à°µà°¿à°­à°¾à°\97ానà±\8dని à°®à°¾à°°à±\8dà°\9aడానిà°\95à°¿ à°®à±\80à°°à±\81 ప్రయత్నించారు.
 మీరు పేజీని చూస్తూన్నప్పుడు దాన్ని ఎవరైనా తరలించి లేదా తొలగించి ఉండవచ్చు.',
 'loginreqtitle' => 'లాగినవడం తప్పనిసరి',
 'loginreqlink' => 'లాగినవండి',
@@ -860,8 +860,8 @@ $2
 'accmailtitle' => 'సంకేతపదం పంపించబడింది.',
 'accmailtext' => "[[User talk:$1|$1]] కొరకు ఒక యాదృచ్ఛిక సంకేతపదాన్ని $2కి పంపించాం. లాగినయ్యాక, ''[[Special:ChangePassword|సంకేతపదాన్ని మార్చుకోండి]]'' అనే పేజీలో ఈ సంకేతపదాన్ని మార్చుకోవచ్చు.",
 'newarticle' => '(కొత్తది)',
-'newarticletext' => "ఈ లింకుకు సంబంధించిన పేజీ ఉనికిలొ లేదు.
-కింది పెట్టెలో మీ రచనను టైపు చేసి ఆ పేజీని సృష్టించండి (దీనిపై సమాచారం కొరకు [[{{MediaWiki:Helppage}}|సహాయం]] పేజీ చూడండి). మీరిక్కడికి పొరపాటున వచ్చి ఉంటే, మీ బ్రౌజరు '''back''' మీట నొక్కండి.",
+'newarticletext' => 'ఈ లింకుకు సంబంధించిన పేజీ లేనే లేదు.
+కింది పెట్టెలో మీ రచనను టైపు చేసి ఆ పేజీని సృష్టించండి (దీనిపై సమాచారం కొరకు [[{{MediaWiki:Helppage}}|సహాయం పేజీ]] చూడండి). మీరిక్కడికి పొరపాటున వచ్చి ఉంటే, మీ బ్రౌజరు <strong>back</strong> మీట నొక్కండి.',
 'anontalkpagetext' => "----''ఇది ఒక అజ్ఞాత వాడుకరి చర్చా పేజీ. ఆ వాడుకరి ఇంకా తనకై ఖాతాను సృష్టించుకోలేదు, లేదా ఖాతా ఉన్నా దానిని ఉపయోగించడం లేదు. అజ్ఞాత వాడుకరులను గుర్తించడానికి అంకెలతో ఉండే ఐ.పీ. చిరునామాను వాడుతాం. కానీ, ఒకే ఐ.పీ. చిరునామాని చాలా మంది వాడుకరులు ఉపయోగించే అవకాశం ఉంది. మీరు అజ్ఞాత వాడుకరి అయితే మరియు సంబంధంలేని వ్యాఖ్యలు మిమ్మల్ని ఉద్దేశించినట్టుగా అనిపిస్తే, భవిష్యత్తులో ఇతర అజ్ఞాత వాడుకరులతో అయోమయం లేకుండా ఉండటానికి, దయచేసి [[Special:UserLogin/signup|ఖాతాను సృష్టించుకోండి]] లేదా [[Special:UserLogin|లోనికి ప్రవేశించండి]].''",
 'noarticletext' => 'ప్రస్తుతం ఈ పేజీలో పాఠ్యమేమీ లేదు.
 వేరే పేజీలలో [[Special:Search/{{PAGENAME}}|ఈ పేజీ శీర్షిక కోసం వెతకవచ్చు]],
@@ -923,9 +923,9 @@ $2
 'editingold' => '<strong>హెచ్చ రిక: ఈ పేజీ యొక్క కాలం చెల్లిన సంచికను మీరు మరుస్తున్నారు.</strong> దీనిని భద్రపరిస్తే, ఆ సంచిక తరువాత జరిగిన మార్పులన్నీ పోతాయి.',
 'yourdiff' => 'తేడాలు',
 'copyrightwarning' => '{{SITENAME}}కు సమర్పించే అన్ని రచనలూ $2కు లోబడి ప్రచురింపబడినట్లుగా భావించబడతాయి (వివరాలకు $1 చూడండి). మీ రచనలను ఎవ్వరూ మార్చ రాదనీ లెదా వేరే ఎవ్వరూ వాడుకో రాదని మీరు భావిస్తే, ఇక్కడ ప్రచురించకండి.<br /> మీ స్వీయ రచనను గాని, సార్వజనీనమైన రచననుగాని, ఇతర ఉచిత వనరుల నుండి సేకరించిన రచననుగాని మాత్రమే ప్రచురిస్తున్నానని కూడా మీరు ప్రమాణం చేస్తున్నారు. <strong>కాపీహక్కులుగల రచనను తగిన అనుమతి లేకుండా సమర్పించకండి!</strong>',
-'copyrightwarning2' => "{{SITENAME}}లో ప్రచురించే రచనలన్నిటినీ ఇతర రచయితలు సరిదిద్దడం, మార్చడం, తొలగించడం చేసే అవకాశం ఉంది. మీ రచనలను అలా నిర్దాక్షిణ్యంగా దిద్దుబాట్లు చెయ్యడం మీకిష్టం లేకపోతే, వాటిని ఇక్కడ ప్రచురించకండి. <br />
-à°\88 à°°à°\9aననà±\81 à°®à±\80à°°à±\87 à°\9aà±\87సారని, à°²à±\87దా à°\8fà°¦à±\88నా à°¸à°¾à°°à±\8dà°µà°\9cనిà°\95 à°µà°¨à°°à±\81 à°¨à±\81à°\82à°¡à°¿ à°\95ాపà±\80 à°\9aà±\87సి à°¤à±\86à°\9aà±\8dà°\9aారని, à°²à±\87దా à°\85లాà°\82à°\9fà°¿ à°\89à°\9aà°¿à°¤, à°¸à±\8dà°µà±\87à°\9aà±\8dà°\9bà°¾ à°µà°¨à°°à±\81 à°¨à±\81à°\82à°¡ి తెచ్చారని మాకు వాగ్దానం చేస్తున్నారు. (వివరాలకు $1 చూడండి).
-'''తగు అనుమతులు లేకుండా కాపీ హక్కులు గల రచనలను సమర్పించకండి!'''",
+'copyrightwarning2' => '{{SITENAME}}లో ప్రచురించే రచనలన్నిటినీ ఇతర రచయితలు సరిదిద్దడం, మార్చడం, తొలగించడం జరగవచ్చు. మీ రచనలను అలా నిర్దాక్షిణ్యంగా దిద్దుబాట్లు చెయ్యడం మీకిష్టం లేకపోతే, వాటిని ఇక్కడ ప్రచురించకండి. <br />
+à°\85లాà°\97à±\87, à°\88 à°°à°\9aననà±\81 à°®à±\80à°°à±\87 à°\9aà±\87సారని, à°²à±\87దా à°\8fà°¦à±\88నా à°¸à°¾à°°à±\8dà°µà°\9cనిà°\95 à°µà°¨à°°à±\81 à°¨à±\81à°\82à°¡à°¿ à°\97ానà±\80, à°\85లాà°\82à°\9fà°¿ à°\89à°\9aà°¿à°¤, à°¸à±\8dà°µà±\87à°\9aà±\8dà°\9bà°¾ à°µà°¨à°°à±\81 à°¨à±\81à°\82à°¡à°¿ à°\97ానà±\80 à°\95ాపà±\80 à°\9aà±\87à°¸ి తెచ్చారని మాకు వాగ్దానం చేస్తున్నారు. (వివరాలకు $1 చూడండి).
+<strong>తగు అనుమతులు లేకుండా కాపీ హక్కులు గల రచనలను సమర్పించకండి!</strong>',
 'longpageerror' => '<strong>లోపం: మీరు సమర్పించిన పాఠ్యం {{PLURAL:$1|ఒక కిలోబైటు|$1 కిలోబైట్ల}} నిడివి కలిగి ఉంది. ఇది గరిష్ఠ పరిమితి అయిన {{PLURAL:$2|ఒక కిలోబైటుని|$2 కిలోబైట్లను}} మించింది.</strong>
  దీన్ని భద్రపరచలేము.',
 'readonlywarning' => '<strong>హెచ్చరిక: నిర్వహణ కొరకు డేటాబేసుకి తాళం వేసారు. కాబట్టి మీ మార్పుచేర్పులను ఇప్పుడు భద్రపరచలేరు.</strong> 
@@ -936,7 +936,7 @@ $2
 చివరి లాగ్ పద్దును మీ సమాచారం కోసం ఇక్కడ ఇస్తున్నాం:',
 'semiprotectedpagewarning' => '<strong>గమనిక:</strong> నమోదయిన వాడుకరులు మాత్రమే మార్పులు చెయ్యగలిగేలా ఈ పేజీకి సంరక్షించారు.
 మీ సమాచారం కోసం చివరి లాగ్ పద్దుని ఇక్కడ ఇస్తున్నాం:',
-'cascadeprotectedwarning' => "'''హెచ్చరిక:''' ఈ పేజీ, కాస్కేడింగు రక్షణలో ఉన్న కింది {{PLURAL:$1|పేజీ|పేజీల్లో}} ఇంక్లూడు అయి ఉంది కాబట్టి, నిర్వాహకులు తప్ప ఇతరులు దిద్దుబాటు చేసే వీలు లేకుండా పేజీని లాకు చేసాం:",
+'cascadeprotectedwarning' => "'''హెచ్చరిక:''' ఈ పేజీ, కాస్కేడింగు రక్షణలో ఉన్న కింది {{PLURAL:$1|పేజీ|పేజీల్లో}} ఇంక్లూడు అయి ఉంది కాబట్టి, నిర్వాహకులు తప్ప ఇతరులు దిద్దుబాటు చేసే వీలు లేకుండా {{PLURAL:$1|పేజీని|పేజీలను}} లాకు చేసాం:",
 'titleprotectedwarning' => "హెచ్చరిక:  ఈ పేజీని సంరక్షించారు కాబట్టి దీన్ని సృష్టించడానికి [[Special:ListGroupRights|ప్రత్యేక హక్కులు]] ఉండాలి.'''
 మీ సమాచారం కోసం చివరి చిట్టా పద్దుని ఇక్కడ ఇస్తున్నాం:",
 'templatesused' => 'ఈ పేజీలో వాడిన {{PLURAL:$1|మూస|మూసలు}}:',
@@ -1002,8 +1002,8 @@ $2
 # "Undo" feature
 'undo-success' => 'దిద్దుబాటును రద్దు చెయ్యవచ్చు. కింది పోలికను చూసి, మీరు చెయ్యదలచినది ఇదేనని నిర్ధారించుకోండి. ఆ తరువాత మార్పులను భద్రపరచి దిద్దుబాటు రద్దును పూర్తి చెయ్యండి.',
 'undo-failure' => 'మధ్యలో జరిగిన దిద్దుబాట్లతో తలెత్తిన ఘర్షణ కారణంగా ఈ దిద్దుబాటును రద్దు చెయ్యలేక పోయాం.',
-'undo-norev' => 'ఈ దిద్దుబాటును అసలు లేకపోవటం వలన, లేదా తొలగించేయడం వలన రద్దుచేయలేకపోతున్నాం.',
-'undo-summary' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|చర్చ]]) దిద్దుబాటు చేసిన కూర్పు $1 ను రద్దు చేసారు',
+'undo-norev' => 'ఈ దిద్దుబాటు అసలు లేకపోవటం వలన గానీ, లేదా తొలగించేయడం వలన గానీ దాన్ని రద్దుచేయలేకపోతున్నాం.',
+'undo-summary' => '[[Special:Contributions/$2|$2]] ([[వాడుకరి చర్చ:$2|చర్చ]]) యొక్క కూర్పు $1 ను రద్దుచెయ్యి',
 'undo-summary-username-hidden' => 'దాచబడిన వాడుకరి చేసిన కూర్పు $1 ని వెనక్కి తిప్పండి',
 
 # Account creation failure
@@ -1023,16 +1023,16 @@ $3 ఇచ్చిన కారణం: ''$2''",
 'revisionasof' => '$1 నాటి కూర్పు',
 'revision-info' => '$1 నాటి కూర్పు. రచయిత: $2',
 'previousrevision' => '← పాత కూర్పు',
-'nextrevision' => 'à°¦à±\80ని à°¤à°°à±\81వాతి à°¸à°\82à°\9aà°¿à°\95→',
-'currentrevisionlink' => 'ప్రస్తుతపు సంచిక',
+'nextrevision' => 'తరà±\81వాతి à°\95à±\82à°°à±\8dà°ªà±\81 →',
+'currentrevisionlink' => 'ప్రస్తుత కూర్పు',
 'cur' => 'ప్రస్తుత',
-'next' => 'తరà±\8dవాతి',
+'next' => 'తరà±\81వాతి',
 'last' => 'గత',
 'page_first' => 'మొదటి',
 'page_last' => 'చివరి',
 'histlegend' => 'తేడా ఎంపిక: సంచికల యొక్క రేడియో బాక్సులను ఎంచుకొని ఎంటర్‌ నొక్కండి, లేదా పైన/ కింద ఉన్న మీటను నొక్కండి.<br />
 సూచిక: (ప్రస్తుత) = ప్రస్తుత సంచికతో కల తేడాలు, (గత) = ఇంతకు ముందరి సంచికతో గల తేడాలు, చి = చిన్న మార్పు',
-'history-fieldset-title' => 'చరిత్రలో చూడండి',
+'history-fieldset-title' => 'చరిత్ర చూడండి',
 'history-show-deleted' => 'తొలగించినవి మాత్రమే',
 'histfirst' => 'అతి పాతవి',
 'histlast' => 'సరికొత్త',
@@ -3047,6 +3047,7 @@ $1',
 'file-info-size-pages' => '$1 × $2 పిక్సెళ్ళు, దస్త్రపు పరిమాణం: $3, MIME రకం: $4, $5 {{PLURAL:$5|పేజీ|పేజీలు}}',
 'file-nohires' => 'మరింత స్పష్టమైన బొమ్మ లేదు.',
 'svg-long-desc' => 'SVG ఫైలు, నామమాత్రంగా $1 × $2 పిక్సెళ్ళు, ఫైలు పరిమాణం: $3',
+'svg-long-error' => 'చెల్లని SVG దస్త్రం: $1',
 'show-big-image' => 'అసలు దస్త్రం',
 'show-big-image-preview' => 'ఈ మునుజూపు పరిమాణం: $1.',
 'show-big-image-other' => 'ఇతర {{PLURAL:$2|వైశాల్యం|వైశాల్యాలు}}: $1.',
@@ -3692,11 +3693,13 @@ $5
 'version-entrypoints-header-url' => 'చిరునామా',
 
 # Special:Redirect
+'redirect' => 'ఫైలు, వాడుకరి, పేజీ లేదా కూర్పు ఐడీ ప్రకారం దారిమార్పు',
+'redirect-legend' => 'ఫైలు లేదా పేజీకి దారిమార్పు',
 'redirect-submit' => 'వెళ్ళు',
 'redirect-lookup' => 'చూడు:',
 'redirect-value' => 'విలువ:',
 'redirect-user' => 'వాడుకరి ID',
-'redirect-page' => 'à°ªà±\81à°\9f ఐడీ',
+'redirect-page' => 'à°ªà±\87à°\9cà±\80 ఐడీ',
 'redirect-revision' => 'పేజీ కూర్పు',
 'redirect-file' => 'దస్త్రపు పేరు',
 'redirect-not-exists' => 'విలువ కనబడలేదు',
index a910e8e..5d11c18 100644 (file)
@@ -725,6 +725,7 @@ $1',
 'suspicious-userlogout' => 'คำขอล็อกเอาต์ของคุณถูกปฏิเสธเพราะดูเหมือนส่งมาจากเบราว์เซอร์หรือพร็อกซีแคชที่เสีย',
 'createacct-another-realname-tip' => 'ไม่จำเป็นต้องใส่ชื่อจริง
 หากคุณเลือกใส่ชื่อจริง จะใช้เพื่อแสดงที่มาสำหรับงานของตน',
+'pt-userlogout' => 'ล็อกเอาต์',
 
 # Email sending
 'php-mail-error-unknown' => 'เกิดข้อผิดพลาดไม่ทราบสาเหตุในฟังก์ชัน mail() ของพีเอชพี',
@@ -1579,11 +1580,21 @@ $1",
 'rcnotefrom' => "ด้านล่างเป็นการเปลี่ยนแปลงตั้งแต่ '''$2''' (มากสุด '''$1''' รายการ)",
 'rclistfrom' => 'แสดงการเปลี่ยนแปลงใหม่เริ่มตั้งแต่ $1',
 'rcshowhideminor' => '$1การแก้ไขเล็กน้อย',
+'rcshowhideminor-show' => 'แสดง',
+'rcshowhideminor-hide' => 'ซ่อน',
 'rcshowhidebots' => '$1บอต',
+'rcshowhidebots-show' => 'แสดง',
+'rcshowhidebots-hide' => 'ซ่อน',
 'rcshowhideliu' => '$1ผู้ใช้ลงทะเบียน',
 'rcshowhideanons' => '$1ผู้ใช้นิรนาม',
+'rcshowhideanons-show' => 'แสดง',
+'rcshowhideanons-hide' => 'ซ่อน',
 'rcshowhidepatr' => '$1การแก้ไขที่ตรวจสอบแล้ว',
+'rcshowhidepatr-show' => 'แสดง',
+'rcshowhidepatr-hide' => 'ซ่อน',
 'rcshowhidemine' => '$1การแก้ไขของฉัน',
+'rcshowhidemine-show' => 'แสดง',
+'rcshowhidemine-hide' => 'ซ่อน',
 'rclinks' => 'แสดงการปรับปรุงล่าสุด $1 รายการ ในช่วง $2 วันที่ผ่านมา<br />$3',
 'diff' => 'ต่าง',
 'hist' => 'ประวัติ',
index c738797..6efbb1b 100644 (file)
@@ -132,8 +132,8 @@ $messages = array(
 'mar' => 'mar',
 'apr' => 'apr',
 'may' => 'maý',
-'jun' => 'iýun',
-'jul' => 'iýul',
+'jun' => 'iýn',
+'jul' => 'iýl',
 'aug' => 'awg',
 'sep' => 'sen',
 'oct' => 'okt',
@@ -187,8 +187,8 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
 'vector-action-undelete' => 'Öçürmäni yzyna al',
 'vector-action-unprotect' => 'Goragy üýtget',
 'vector-view-create' => 'Döret',
-'vector-view-edit' => 'Redaktirle',
-'vector-view-history' => 'Geçmişi gör',
+'vector-view-edit' => 'Üýtget',
+'vector-view-history' => 'Taryhy gör',
 'vector-view-view' => 'Oka',
 'vector-view-viewsource' => 'Çeşmäni gör',
 'actions' => 'Hereketler',
@@ -199,19 +199,19 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
 'errorpagetitle' => 'Säwlik',
 'returnto' => '$1.',
 'tagline' => '{{SITENAME}} saýtyndan',
-'help' => 'Ýardam',
-'search' => 'Gözle',
+'help' => 'Kömek',
+'search' => 'Gözleg',
 'searchbutton' => 'Gözle',
 'go' => 'Git',
 'searcharticle' => 'Git',
 'history' => 'Sahypanyň geçmişi',
-'history_short' => 'Geçmiş',
+'history_short' => 'Taryh',
 'updatedmarker' => 'soňky gezek görelim bäri täzelenen',
-'printableversion' => 'Print ediş wersiýasy',
+'printableversion' => 'Çap edilýän wersiýa',
 'permalink' => 'Hemişelik çykgyt',
 'print' => 'Print et',
 'view' => 'Görkez',
-'edit' => 'Redaktirle',
+'edit' => 'Üýtget',
 'create' => 'Döret',
 'editthispage' => 'Bu sahypany redaktirle',
 'create-this-page' => 'Bu sahypany döret',
@@ -231,8 +231,8 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
 'postcomment' => 'Täze bölüm',
 'articlepage' => 'Makalany görkez',
 'talk' => 'Çekişme',
-'views' => 'Keşpler',
-'toolbox' => 'Gural sandygy',
+'views' => 'Görnüşler',
+'toolbox' => 'Gurallar',
 'userpage' => 'Ulanyjy sahypasyny görkez',
 'projectpage' => 'Taslama sahypasyny görkez',
 'imagepage' => 'Faýl sahypasyny görkez',
@@ -244,11 +244,11 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
 'otherlanguages' => 'Başga dillerde',
 'redirectedfrom' => '($1 sahypasyndan gönükdirildi)',
 'redirectpagesub' => 'Gönükdirme sahypasy',
-'lastmodifiedat' => 'Bu sahypa iň soňky gezek $2, $1 senesinde üýtgedildi.',
+'lastmodifiedat' => 'Bu sahypanyň iň soňky üýtgedilen gezegi: $2, $1.',
 'viewcount' => 'Bu sahypa {{PLURAL:$1|bir|$1 }} gezek görülipdir.',
 'protectedpage' => 'Goragly sahypa',
-'jumpto' => 'Git we:',
-'jumptonavigation' => 'ulan',
+'jumpto' => 'Şuňa git:',
+'jumptonavigation' => 'nawigasiýa',
 'jumptosearch' => 'gözle',
 'view-pool-error' => 'Gynansak-da, şu wagt serwerler hetdenaşa işli.
 Biçak köp ulanyjy şu sahypany görmäge synanyşýar.
@@ -266,17 +266,17 @@ $1',
 'copyrightpage' => '{{ns:project}}:Awtorlyk hukugy',
 'currentevents' => 'Oba güzeri',
 'currentevents-url' => 'Project:Oba güzeri',
-'disclaimers' => 'Jogapkärçilikden boýun gaçyrma',
-'disclaimerpage' => 'Project:Umumy jogapkärçilikden boýun gaçyrma',
+'disclaimers' => 'Jogapkärçilikden boýun gaçyrmak',
+'disclaimerpage' => 'Project:Umumy jogapkärçilikden boýun gaçyrmak',
 'edithelp' => 'Nähili redaktirlenýär?',
-'helppage' => 'Help:Içindäkiler',
+'helppage' => 'Help:Mazmuny',
 'mainpage' => 'Baş Sahypa',
-'mainpage-description' => 'Baş Sahypa',
+'mainpage-description' => 'Baş sahypa',
 'policy-url' => 'Project:Ýörelge',
 'portal' => 'Çaýhana',
 'portal-url' => 'Project:Çaýhana',
-'privacy' => 'Gizlinlik ýörelgesi',
-'privacypage' => 'Project:Gizlinlik ýörelgesi',
+'privacy' => 'Gizlinlik syýasaty',
+'privacypage' => 'Project:Gizlinlik syýasaty',
 
 'badaccess' => 'Rugsat säwligi',
 'badaccess-group0' => 'Talap edýän bu işiňizi ýerine ýetirmäge size ygtyýar berilmeýär.',
@@ -288,7 +288,7 @@ See [[Special:Version|version page]].
 Bu sahypany ulanmak üçin MediaWikiniň $1 wersiýasy talap edilýär. [[Special:Version|Wersiýa sahypasyna]] serediň.',
 
 'ok' => 'OK',
-'retrievedfrom' => '"$1" adresinden alyndy.',
+'retrievedfrom' => 'Çeşmesi: "$1"',
 'youhavenewmessages' => 'Size $1 bar. ($2)',
 'youhavenewmessagesmulti' => 'Size $1-de täze habar bar.',
 'editsection' => 'redaktirle',
@@ -296,7 +296,7 @@ Bu sahypany ulanmak üçin MediaWikiniň $1 wersiýasy talap edilýär. [[Specia
 'viewsourceold' => 'çeşmäni gör',
 'editlink' => 'redaktirle',
 'viewsourcelink' => 'çeşmesini gör',
-'editsectionhint' => '$1 bölümini redaktirle',
+'editsectionhint' => 'Bölümi üýtget: $1',
 'toc' => 'Mazmuny',
 'showtoc' => 'görkez',
 'hidetoc' => 'gizle',
@@ -309,7 +309,7 @@ Bu sahypany ulanmak üçin MediaWikiniň $1 wersiýasy talap edilýär. [[Specia
 'feed-invalid' => 'Nädogry ýazylyşyk kanaly görnüşi.',
 'feed-unavailable' => 'Sindikasiýa lentalary elýeterli däl',
 'site-rss-feed' => '$1 RSS lentasy',
-'site-atom-feed' => '$1 Atom lentasy',
+'site-atom-feed' => '$1 — Atom-lenta',
 'page-rss-feed' => '"$1" RSS lentasy',
 'page-atom-feed' => '"$1" Atom lentasy',
 'red-link-title' => '$1 (bu sahypa heniz ýazylmandyr)',
@@ -347,9 +347,9 @@ Bar bolan ähli ýörite sahypalary [[Special:SpecialPages|ýörite sahypalar]]
 Maglumat bazasyny gulplan administratoryň düşündirişi: $1',
 'missing-article' => 'Maglumat bazasy tapylmagy talap edilýän "$1" $2 atly sahypa degişli teksti tapyp bilmedi.
 
-Bu Ã½agdaý sahypanyÅ\88 Ã¶Ã§Ã¼rilen bir sahypanyň ozalky wersiýasy bolmaklygyndan ýüze çykýan bolup biler.
+Bu Ã½agdaý sahypanyÅ\88 Ã½oklanylan bir sahypanyň ozalky wersiýasy bolmaklygyndan ýüze çykýan bolup biler.
 
-Eger sebäp ol däl bolsa, programma serişdesinde bir säwlige duşan bolmagyňyz ahmal.
+Eger sebäp ol däl bolsa, programma serişdesinde bir ýalňyşlyga duşan bolmagyňyz ahmal.
 Muny bir [[Special:ListUsers/sysop|administratora]] URL-ni belläp alyp ýetirmekligiňizi haýyş edýäris.',
 'missingarticle-rev' => '(wersiýa#: $1)',
 'missingarticle-diff' => '(Tapawut: $1, $2)',
@@ -408,7 +408,7 @@ Web brauzeriňiziň keşini arassalaýançaňyz käbir sahypalar sessiýaňyzyň
 'yourdomainname' => 'Siziň domeniňiz:',
 'externaldberror' => 'Ýa tassyklama maglumat bazasynyň säwligi bar ýa-da öz ulanyjy hasabyňyzy täzelemegiňize rugsat berilmeýär.',
 'login' => 'Hasaba gir',
-'nav-login-createaccount' => 'Hasaba gir / täze hasap aç',
+'nav-login-createaccount' => 'Hasaba gir / Hasap döret',
 'loginprompt' => '{{SITENAME}} saýtynda sessiýa açmak üçin kukileri işletmegiňiz zerurdyr.',
 'userlogin' => 'Hasaba gir / täze hasap aç',
 'userloginnocreate' => 'Sessiýa aç',
@@ -448,7 +448,7 @@ Ulanyjy atlary baş hem-de setir harplara duýgurdyr.
 'wrongpasswordempty' => 'Paroly boş girizdiňiz. Gaýtadan synanyşmagyňyzy haýyş edýäris.',
 'passwordtooshort' => 'Parollar iň bolmanda {{PLURAL:$1|1 simwoldan|$1 simwoldan}} ybarat bolmalydyr.',
 'password-name-match' => 'Parolyňyz ulanyjy adyňyzdan tapawutly bolmalydyr.',
-'mailmypassword' => 'Maňa e-poçta bilen täze parol iber',
+'mailmypassword' => 'Paroly nol et',
 'passwordremindertitle' => '{{SITENAME}} üçin täze wagtlaýyn parol',
 'passwordremindertext' => 'Kimdir biri (ähtimal özüňiz $1 IP adresinden) {{SITENAME}} ($4) üçin täze parol iberilmegini talap etdi. "$2" ulanyjysy üçin wagtlaýynça "$3" paroly döredildi. Eger bu siziň öz talabyňyz bolsa, onda sessiýa açyp, bir täze parol saýlap almagyňyz zerurdyr. Wagtlaýyn parolyňyzyň möhleti {{PLURAL:$5|1 günden|$5 günden}} gutarjakdyr.
 
@@ -916,7 +916,7 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
 
 # Search results
 'searchresults' => 'Gözleg netijeleri',
-'searchresults-title' => '"$1" üçin gözleg netijeleri',
+'searchresults-title' => '"$1" hakda gözleg netijeleri',
 'toomanymatches' => 'Çakdanaşa köp gabat gelme tapyldy, başgaçarak talap ýazyp görüň',
 'titlematches' => 'Sahypa ady gabat gelýär',
 'textmatches' => 'Sahypa teksti gabat gelýär',
@@ -928,7 +928,8 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
 'shown-title' => 'Sahypa başyna $1 {{PLURAL:$1|netije|netije}} görkez',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => "'''Bu wikide \"[[:\$1]]\" atly sahypa bar'''",
-'searchmenu-new' => "'''Bu wikide \"[[:\$1]]\" sahypasyny döret!'''",
+'searchmenu-new' => '<strong>Bu wikide "[[:$1]]" sahypasyny dörediň!</strong> 
+{{PLURAL:$2|0=|Gözlegde tapylan sahypa-da serediň.|Tapylan gözleg netijelerine-de serediň.}}',
 'searchprofile-articles' => 'Mazmunly sahypalar',
 'searchprofile-project' => 'Ýardam we Taslama sahypalary',
 'searchprofile-images' => 'Multimedia',
@@ -1218,7 +1219,7 @@ $1 {{PLURAL:$1|simwoldan|simwoldan}} köp bolmaly däl.',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|üýtgeşme|üýtgeşme}}',
-'recentchanges' => 'Soňky üýtgeşmeler',
+'recentchanges' => 'Soňky üýtgetmeler',
 'recentchanges-legend' => 'Soňky üýtgeşmeleriň opsiýalary',
 'recentchanges-summary' => 'Wikidäki iň soňky üýtgeşmeleri şu sahypadan yzarlaň.',
 'recentchanges-feed-description' => 'Bu lentadaky wikide edilen iň soňky üýtgeşmeleri yzarlaň.',
@@ -1227,11 +1228,11 @@ $1 {{PLURAL:$1|simwoldan|simwoldan}} köp bolmaly däl.',
 'recentchanges-label-bot' => 'Bu özgerdiş bir bot tarapyndan amala aşyryldy',
 'recentchanges-label-unpatrolled' => 'Bu özgerdişe heniz patrullyk edilmändir',
 'recentchanges-legend-newpage' => '$1 - täze sahypa',
-'rcnotefrom' => '<b>$2</b> senesinden bäri edilen özgerdişler aşakda görkezilýär (<b>$1</b> sanysyna çenli).',
+'rcnotefrom' => '<strong>$2</strong> senesinden soňky üýtgetmeler aşakda görkezilýär (<strong>$1</strong> sanysyna çenli).',
 'rclistfrom' => '$1 senesinden bäri edilen özgerdişleri görkez',
 'rcshowhideminor' => 'ujypsyzja özgerdişleri $1',
 'rcshowhidebots' => 'botlary $1',
-'rcshowhideliu' => 'sessiýasy açyk ulanyjylary $1',
+'rcshowhideliu' => 'Hasaba alnan ulanyjylary $1',
 'rcshowhideanons' => 'anonim ulanyjylary $1',
 'rcshowhidepatr' => 'patrullyk edilen özgerdişleri $1',
 'rcshowhidemine' => 'özgerdişlerimi $1',
@@ -1253,7 +1254,7 @@ $1 {{PLURAL:$1|simwoldan|simwoldan}} köp bolmaly däl.',
 # Recent changes linked
 'recentchangeslinked' => 'Degişli üýtgeşmeler',
 'recentchangeslinked-feed' => 'Degişli üýtgeşmeler',
-'recentchangeslinked-toolbox' => 'Degişli üýtgeşmeler',
+'recentchangeslinked-toolbox' => 'Dahylly üýtgetmeler',
 'recentchangeslinked-title' => '"$1" bilen baglanyşykly üýtgeşmeler',
 'recentchangeslinked-summary' => "Aşakdaky sanaw, görkezilen sahypa (ýa-da görkezilen kategoriýanyň agzalaryna) çykgyt berýän sahypalarda edilen üýtgeşmeleriň sanawydyr.
 [[Special:Watchlist|Gözegçilik sanawyňyzdaky]] sahypalar '''goýy''' ýazgy bilen görkezilýär.",
@@ -1535,7 +1536,7 @@ Giriş formaty: mazmuntip/kiçitip, meselem <code>surat/jpeg</code>.',
 'unusedtemplateswlh' => 'başga çykgytlar',
 
 # Random page
-'randompage' => 'Mesaýy makala',
+'randompage' => 'Çemgeldik sahypa',
 'randompage-nopages' => 'Aşakdaky {{PLURAL:$2|at giňişliginde|at giňişliklerinde}} hiç hili sahypa ýok: $1.',
 
 # Random redirect
@@ -2038,7 +2039,7 @@ Salgylanmak üçin iň soňky blokirleme gündeligi ýazgysy aşakda berilýär:
 'sp-contributions-submit' => 'Gözle',
 
 # What links here
-'whatlinkshere' => 'Bu sahypa çykgytlar',
+'whatlinkshere' => 'Şu ýere çykgytlar',
 'whatlinkshere-title' => '"$1" makalasyna çykgyt berýän sahypalar',
 'whatlinkshere-page' => 'Sahypa:',
 'linkshere' => "'''[[:$1]]''' sahypasyna çykgyt berýän sahypalar:",
@@ -2357,12 +2358,12 @@ Kompýuteriňize ýazdyryň we şu ýere ýükläň.',
 'tooltip-pt-mycontris' => 'Eden goşantlaryňyzyň sanawy',
 'tooltip-pt-login' => 'Hasaba girmegiňiz maslahat berilýär, ýöne hökmany däl.',
 'tooltip-pt-logout' => 'Hasapdan çyk',
-'tooltip-ca-talk' => 'Sahypanyň mazmuny barada garaýşyňy beýan et',
-'tooltip-ca-edit' => 'Bu sahypany redaktirläp bilersiňiz. Ýazdyrmankaňyz synlap görmekligi ýatdan çykarmaň.',
+'tooltip-ca-talk' => 'Esasy sahypa barada çekişme',
+'tooltip-ca-edit' => 'Bu sahypany üýtgedip bilersiňiz. Ýazdyrmankaňyz "synlaw" düwmesine basyp, synlap görüň.',
 'tooltip-ca-addsection' => 'Täze bölüm başlat',
 'tooltip-ca-viewsource' => 'Bu sahypa gorag astynda.
 Onuň çeşmesini görüp bilersiňiz',
-'tooltip-ca-history' => 'Bu sahypanyň ozalky wersiýalary',
+'tooltip-ca-history' => 'Sahypanyň öňki wersiýalary',
 'tooltip-ca-protect' => 'Sahypany goraga al',
 'tooltip-ca-unprotect' => 'Bu sahypanyň goragyny üýtget',
 'tooltip-ca-delete' => 'Sahypany öçür',
@@ -2370,7 +2371,7 @@ Onuň çeşmesini görüp bilersiňiz',
 'tooltip-ca-move' => 'Sahypanyň adyny üýtget',
 'tooltip-ca-watch' => 'Bu sahypany gözegçilige al',
 'tooltip-ca-unwatch' => 'Bu sahypany gözegçilik sanawyňdan aýyr',
-'tooltip-search' => '{{SITENAME}} boýunça gözle',
+'tooltip-search' => '{{SITENAME}} saýtynda gözle',
 'tooltip-search-go' => 'Eger bar bolsa, anyk şu atdaky sahypa git',
 'tooltip-search-fulltext' => 'Şu tekst bar bolan sahypalary gözle',
 'tooltip-p-logo' => 'Baş sahypa baryp gör',
@@ -2378,20 +2379,20 @@ Onuň çeşmesini görüp bilersiňiz',
 'tooltip-n-mainpage-description' => 'Baş sahypa baryp gör',
 'tooltip-n-portal' => 'Taslama hakynda, nämeler edip bolar, nämeler nirede',
 'tooltip-n-currentevents' => 'Bolup geçýän wakalar barada iň täze maglumatlar',
-'tooltip-n-recentchanges' => 'Wikidäki soňky üýtgeşmeleriň sanawy',
-'tooltip-n-randompage' => 'Çem gelen sahypa git',
-'tooltip-n-help' => 'Kömek almak üçin',
-'tooltip-t-whatlinkshere' => 'Bu sahypa çykgyt berýän ähli wiki sahypalarynyň sanawy',
-'tooltip-t-recentchangeslinked' => 'Bu sahypa çykgyt berýän sahypalardaky soňky üýtgeşmeler',
+'tooltip-n-recentchanges' => 'Wikidäki soňky üýtgetmeleriň sanawy',
+'tooltip-n-randompage' => 'Çem gelen sahypany aç',
+'tooltip-n-help' => 'Kömek soralýan ýer',
+'tooltip-t-whatlinkshere' => 'Şu ýere çykgyt berýän ähli wiki-sahypalaryň sanawy',
+'tooltip-t-recentchangeslinked' => 'Bu sahypadan çykgyt alýan sahypalardaky soňky üýtgetmeler',
 'tooltip-feed-rss' => 'Bu sahypa üçin RSS lentasy',
 'tooltip-feed-atom' => 'Bu sahypa üçin atom lentasy',
 'tooltip-t-contributions' => 'Şu ulanyjynyň goşantlarynyň sanawyny gör',
 'tooltip-t-emailuser' => 'Bu ulanyja e-poçta iber',
-'tooltip-t-upload' => 'Suratlary ýa-da multimediýa faýllaryny ýükläň',
-'tooltip-t-specialpages' => 'Ähli ýörite sahypalaryň sanawyny görkez',
-'tooltip-t-print' => 'Bu sahypanyň print etmäge taýýar wersiýasy',
-'tooltip-t-permalink' => 'Sahypanyň bu wersiýasyna hemişelik çykgyt',
-'tooltip-ca-nstab-main' => 'Sahypany görkez',
+'tooltip-t-upload' => 'Faýllary ýükle',
+'tooltip-t-specialpages' => 'Ähli ýörite sahypalaryň sanawy',
+'tooltip-t-print' => 'Bu sahypanyň çap edilýän wersiýasy',
+'tooltip-t-permalink' => 'Sahypanyň şu wersiýasyna hemişelik çykgyt',
+'tooltip-ca-nstab-main' => 'Esasy sahypany gör',
 'tooltip-ca-nstab-user' => 'Ulanyjynyň sahypasyny görkez',
 'tooltip-ca-nstab-media' => 'Media sahypasyny görkez',
 'tooltip-ca-nstab-special' => 'Bu ýörite sahypa, ony redaktirläp bolmaýar',
@@ -2481,7 +2482,7 @@ Ony işletseňiz iş ulgamyňyza howp astyna salmagyňyz mümkin.",
 'file-info-size' => '$1 × $2 piksel, faýlyň ölçegi: $3, MIME tipli: $4',
 'file-nohires' => 'Wersiýanyň mundan uly ölçegi ýok.',
 'svg-long-desc' => 'SVG faýly, nominal $1 × $2 piksel, faýl ölçegi: $3',
-'show-big-image' => 'Suratyň doly ölçegi',
+'show-big-image' => 'Original faýl',
 'file-info-gif-looped' => 'halkaly',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|kadr|kadr}}',
 'file-info-png-looped' => 'halkaly',
@@ -2504,7 +2505,7 @@ Ony işletseňiz iş ulgamyňyza howp astyna salmagyňyz mümkin.",
 'bad_image_list' => 'Format aşakdaky ýaly bolmalydyr:
 
 Diňe sanawyň elementleri (* bilen başlaýanlar) nazara alynýar. Setirdäki ilkinji çykgyt ýaramaz suratyň çykgydy bolmalydyr.
-Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem: surat sahypada setiriçinde görünip biler.',
+Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem: surat sahypada setiriçinde görp biler.',
 
 # Metadata
 'metadata' => 'Meta-maglumat',
index f854fd2..06c92c1 100644 (file)
@@ -947,7 +947,7 @@ $1',
 'resetpass-temp-password' => 'Тимчасовий пароль:',
 'resetpass-abort-generic' => 'Зміну пароля було перервано розширенням.',
 'resetpass-expired' => 'Термін дії вашого пароля закінчився. Будь ласка, встановіть новий пароль для входу в систему.',
-'resetpass-expired-soft' => 'Термін дії вашого пароля закінчився, і тепер він повинен бути змінений. Будь ласка, виберіть новий пароль або натисніть «Скасувати», щоб змінити його пізніше.',
+'resetpass-expired-soft' => 'Термін дії вашого пароля закінчився, і тепер він повинен бути змінений. Будь ласка, виберіть новий пароль або натисніть "{{int:resetpass-submit-cancel}}", щоб змінити його пізніше.',
 
 # Special:PasswordReset
 'passwordreset' => 'Скинути пароль',
@@ -1962,6 +1962,7 @@ $1",
 'uploaddisabledtext' => 'Можливість завантаження файлів відключена.',
 'php-uploaddisabledtext' => 'Завантаження файлів вимкнене у налаштуваннях PHP. Будь ласка, перевірте значення file_uploads.',
 'uploadscripted' => 'Файл містить HTML-код або скрипт, який може неправильно обробитися браузером.',
+'uploadscriptednamespace' => 'Цей SVG-файл містить недопустимий простір імен "$1"',
 'uploadinvalidxml' => 'Не вдалося проаналізувати XML у завантаженому файлі.',
 'uploadvirus' => 'Файл містить вірус! Див. $1',
 'uploadjava' => 'Файл є ZIP-архівом, що містить .class-файл Java.
@@ -2793,8 +2794,10 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'Доступ з цієї IP-адреси зараз заблокований.
 Далі наведено останній запис з журналу блокувань:',
 'sp-contributions-search' => 'Пошук внеску',
+'sp-contributions-suppresslog' => 'вилучений внесок користувача',
 'sp-contributions-username' => "IP-адреса або ім'я користувача:",
 'sp-contributions-toponly' => 'Показувати тільки редагування, що є останніми версіями',
+'sp-contributions-newonly' => 'Показувати тільки редагування, які є створеннями сторінок',
 'sp-contributions-submit' => 'Знайти',
 
 # What links here
index 42a1305..69486ea 100644 (file)
@@ -190,18 +190,18 @@ $messages = array(
 'october' => 'oktabr',
 'november' => 'noyabr',
 'december' => 'dekabr',
-'january-gen' => 'yanvarning',
-'february-gen' => 'fevralning',
-'march-gen' => 'martning',
-'april-gen' => 'aprelning',
-'may-gen' => 'mayning',
-'june-gen' => 'iyunning',
-'july-gen' => 'iyulning',
-'august-gen' => 'avgustning',
-'september-gen' => 'sentabrning',
-'october-gen' => 'oktabrning',
-'november-gen' => 'noyabrning',
-'december-gen' => 'dekabrning',
+'january-gen' => 'yanvar',
+'february-gen' => 'fevral',
+'march-gen' => 'mart',
+'april-gen' => 'aprel',
+'may-gen' => 'may',
+'june-gen' => 'iyun',
+'july-gen' => 'iyul',
+'august-gen' => 'avgust',
+'september-gen' => 'sentabr',
+'october-gen' => 'oktabr',
+'november-gen' => 'noyabr',
+'december-gen' => 'dekabr',
 'jan' => 'yan',
 'feb' => 'fev',
 'mar' => 'mar',
@@ -214,6 +214,17 @@ $messages = array(
 'oct' => 'okt',
 'nov' => 'noy',
 'dec' => 'dek',
+'january-date' => 'Yanvar $1',
+'february-date' => 'Fevral $1',
+'march-date' => 'Mart $1',
+'april-date' => 'Aprel $1',
+'june-date' => 'Iyun $1',
+'july-date' => 'Iyul $1',
+'august-date' => 'Avgust $1',
+'september-date' => 'Sentabr $1',
+'october-date' => 'Oktabr $1',
+'november-date' => 'Noyabr $1',
+'december-date' => 'Dekabr $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Turkum}}',
@@ -293,7 +304,8 @@ $messages = array(
 'create-this-page' => 'Ushbu sahifani yaratish',
 'delete' => 'O‘chirish',
 'deletethispage' => 'Ushbu sahifani o‘chirish',
-'undelete_short' => '$1 ta tahrirni tiklash',
+'undeletethispage' => 'Ushbu sahifani tiklash',
+'undelete_short' => '{{PLURAL:$1|bitta tahrir|$1 ta tahrir}}ni tiklash',
 'viewdeleted_short' => '$1 ta oʻchirilgan tahrirni koʻrish',
 'protect' => 'Himoyalash',
 'protect_change' => 'Oʻzgartirish',
@@ -339,7 +351,7 @@ $1',
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => '{{SITENAME}} haqida',
 'aboutpage' => 'Project:Haqida',
-'copyright' => 'Keltirilgan maʼlumotlar $1 orqali tarqatilmoqda.',
+'copyright' => 'Keltirilgan maʼlumotlar $1 orqali tarqatilmoqda (agar aksinchasi koʻrsatilmagan boʻlsa).',
 'copyrightpage' => '{{ns:project}}:Mualliflik huquqlari',
 'currentevents' => 'Joriy hodisalar',
 'currentevents-url' => 'Project:Joriy hodisalar',
@@ -518,6 +530,7 @@ Ism yozilishini tekshirib koʻring.',
 'accountcreated' => 'Hisob yozuvi yaratildi',
 'login-abort-generic' => 'Tizimga kirishga mufavvaqiyatsiz urinish',
 'loginlanguagelabel' => 'Til: $1',
+'pt-userlogout' => 'Chiqish',
 
 # Change password dialog
 'changepassword' => 'Maxfiy soʻzni oʻzgartirish',
@@ -1026,6 +1039,8 @@ Quyida bu sahifaga oid yoʻqotish va koʻchirish qaydlari keltirilgan:',
 'listfiles_size' => 'Oʻlchami',
 'listfiles_description' => 'Taʼrif',
 'listfiles_count' => 'Versiyalar',
+'listfiles-latestversion-yes' => 'Ha',
+'listfiles-latestversion-no' => 'Yoʻq',
 
 # File description page
 'file-anchor-link' => 'Fayl',
@@ -1069,6 +1084,9 @@ Uning [$2 fayl tavsifi sahifasidan] olingan tavsifi quyida keltirilgan.',
 # Random page
 'randompage' => 'Tasodifiy sahifa',
 
+# Random page in category
+'randomincategory-selectcategory-submit' => 'Oʻtish',
+
 # Statistics
 'statistics' => 'Statistika',
 'statistics-header-pages' => 'Sahifalar statistikasi',
@@ -1084,6 +1102,9 @@ Uning [$2 fayl tavsifi sahifasidan] olingan tavsifi quyida keltirilgan.',
 'statistics-users-active' => 'Faol foydalanuvchilar',
 'statistics-users-active-desc' => 'Oxirgi $1 kun ichida kamida bitta amal qilgan foydalanuvchilar',
 
+'pageswithprop-prop' => 'Xossa nomi:',
+'pageswithprop-submit' => 'Oʻtish',
+
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|bayt}}',
 'ncategories' => '$1 {{PLURAL:$1|turkum|turkumlar}}',
index 3ab410c..f3e2119 100644 (file)
@@ -866,7 +866,7 @@ Xin hãy bỏ qua thông điệp này nếu tài khoản này không phải do b
 
 Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao của bạn.',
 'pt-login' => 'Đăng nhập',
-'pt-createaccount' => 'Tạo tài khoản',
+'pt-createaccount' => 'Mở tài khoản',
 'pt-userlogout' => 'Đăng xuất',
 
 # Email sending
@@ -896,7 +896,7 @@ Có thể bạn đã thay đổi thành công mật khẩu của mình hoặc đ
 'resetpass-temp-password' => 'Mật khẩu tạm:',
 'resetpass-abort-generic' => 'Một phần mở rộng đã hủy bỏ tác vụ thay đổi mật khẩu.',
 'resetpass-expired' => 'Mật khẩu của bạn đã hết hạn. Xin vui lòng tạo lại mật khẩu mới để đăng nhập.',
-'resetpass-expired-soft' => 'Mật khẩu của bạn đã hết hạn và cần được đặt lại. Xin vui lòng chọn một mật khẩu mới lúc bây giờ hoặc bấm Hủy bỏ để đặt lại sau.',
+'resetpass-expired-soft' => 'Mật khẩu của bạn đã hết hạn và cần được đặt lại. Xin vui lòng chọn một mật khẩu mới lúc bây giờ hoặc bấm “{{int:resetpass-submit-cancel}}” để đặt lại sau.',
 
 # Special:PasswordReset
 'passwordreset' => 'Tái tạo mật khẩu',
@@ -1746,7 +1746,7 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'recentchanges-legend-heading' => "'''Chú giải:'''",
 'recentchanges-legend-newpage' => '(xem thêm [[Special:NewPages|danh sách các trang mới]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnotefrom' => "Thay đổi từ '''$2''' (hiển thị tối đa '''$1''' thay đổi).",
+'rcnotefrom' => 'Thay đổi từ <strong>$2</strong> (hiển thị tối đa <strong>$1</strong> thay đổi).',
 'rclistfrom' => 'Hiển thị các thay đổi từ $1.',
 'rcshowhideminor' => '$1 sửa đổi nhỏ',
 'rcshowhideminor-show' => 'Hiện',
@@ -1758,8 +1758,14 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'rcshowhideliu-show' => 'Hiện',
 'rcshowhideliu-hide' => 'Ẩn',
 'rcshowhideanons' => '$1 sửa đổi vô danh',
+'rcshowhideanons-show' => 'Hiện',
+'rcshowhideanons-hide' => 'Ẩn',
 'rcshowhidepatr' => '$1 sửa đổi đã tuần tra',
+'rcshowhidepatr-show' => 'Hiện',
+'rcshowhidepatr-hide' => 'Ẩn',
 'rcshowhidemine' => '$1 sửa đổi của tôi',
+'rcshowhidemine-show' => 'Hiện',
+'rcshowhidemine-hide' => 'Ẩn',
 'rclinks' => 'Xem $1 sửa đổi gần đây nhất trong $2 ngày qua; $3.',
 'diff' => 'khác',
 'hist' => 'sử',
@@ -1886,6 +1892,7 @@ Bạn nên xin một người có quyền xem dữ liệu tập tin bị đàn 
 'uploaddisabledtext' => 'Chức năng tải tập tin đã bị tắt.',
 'php-uploaddisabledtext' => 'Việc tải tập tin trong PHP đã bị tắt. Xin hãy kiểm tra lại thiết lập file_uploads.',
 'uploadscripted' => 'Tập tin này có chứa mã HTML hoặc kịch bản có thể khiến trình duyệt web thông dịch sai.',
+'uploadscriptednamespace' => 'Tập tin SVG này chứa không gian tên “$1” không được cho phép',
 'uploadinvalidxml' => 'Không thể phân tích mã XML trong tập tin tải lên.',
 'uploadvirus' => 'Tập tin có virút! Chi tiết: $1',
 'uploadjava' => 'Tập tin ZIP này chứa một tập tin Java .class.
@@ -2716,6 +2723,7 @@ $1',
 'sp-contributions-search' => 'Tìm kiếm đóng góp',
 'sp-contributions-username' => 'Địa chỉ IP hay tên thành viên:',
 'sp-contributions-toponly' => 'Chỉ hiện các phiên bản mới nhất',
+'sp-contributions-newonly' => 'Chỉ hiện các sửa đổi tạo trang',
 'sp-contributions-submit' => 'Tìm kiếm',
 
 # What links here
index 66e7f42..e7e8770 100644 (file)
@@ -758,7 +758,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'טוישן פאַסווארט',
-'resetpass_announce' => '×\90×\99ר ×\94×\90×\98 ×\90ר×\99×\99× ×\9c×\90×\92×\99ר×\98 ×\9e×\99×\98 ×\90 ×¤×¨×\90×\95×\95×\99×\96×\90ר×\99ש×\9f ×§×\90×\93 ×\92עש×\99ק×\98 ×\93×\95ר×\9b×\9f ×¢-פ×\90ס×\98. ×¦×\95 ×¤×\90רענ×\93×\99×\92×\9f ×\90ר×\99×\99× ×\9c×\90×\92×\99ר×\9f, ×\91ר×\95×\99×\9b×\98 ×\90×\99ר ×\90נש×\98×¢×\9c×\9f ×\90 × ×\99×\99 ×¤×\90ס×\95×\95×\90ר×\98 ×\93×\90:',
+'resetpass_announce' => 'צו פארענדיגן אריינלאגירן, ברויכט איר אנשטעלן א ניי פאסווארט דא:',
 'resetpass_text' => '<!-- לייגט צו טעקסט דא -->',
 'resetpass_header' => 'ענדערן קאנטע פאסווארט',
 'oldpassword' => 'אַלטע פאַסווארט:',
@@ -774,6 +774,7 @@ $2',
 'resetpass-submit-cancel' => 'אַנולירן',
 'resetpass-wrong-oldpass' => 'אומגילטיג צײַטווײַליק אדער לויפֿיק פאַסווארט.
 איר האט מעגלעך שוין געטוישט אייער פאַסווארט מיט הצלחה אדער געבעטן א נײַ  צײַטווײַליק פאַסווארט.',
+'resetpass-recycled' => 'זײַט אזוי גוט שטעטל אירע פאסווארט צו עפעס אנדערש פונעם לויפיקן פאסווארט.',
 'resetpass-temp-password' => 'צײַטווייליק פאַסווארט:',
 'resetpass-abort-generic' => 'פאסווארט ענדערונג איז מבוטל געווארן דורך א פארברייטערונג.',
 
@@ -1260,6 +1261,7 @@ $1",
 'showhideselectedversions' => 'ווײַזן/באַהאַלטן געקליבענע רעוויזיעס',
 'editundo' => 'אַנולירן',
 'diff-empty' => '(קיין אונטערשייד)',
+'diff-multi-sameuser' => '({{PLURAL:$1|איין צווישנדיקע ווערסיע |$1 צווישנדיקע ווערסיעס}} פֿונעם זעלבן באַניצער נישט געוויזן.)',
 'diff-multi-otherusers' => '({{PLURAL:$1|איין מיטלסטע ווערסיע |$1 מיטלסטע ווערסיעס}} פֿון {{PLURAL:$2|איין אנדער באַניצער|$2 באַניצער}} נישט געוויזן.)',
 'diff-multi-manyusers' => '({{PLURAL:$1|איין מיטלסטע ווערסיע |$1 מיטלסטע ווערסיעס}} פֿון מער ווי {{PLURAL:$2|איין באַניצער|$2 באַניצער}} נישט געוויזן.)',
 'difference-missing-revision' => '{{PLURAL:$2|איין ווערסיע|$2 ווערסיעס}} פון דעם דיפערענץ ($1) {{PLURAL:$2|האט}} מען נישט געטראפן.
@@ -1625,9 +1627,10 @@ $1",
 'recentchanges-legend-heading' => "'''לעגענדע:'''",
 'recentchanges-legend-newpage' => '(זעט אויך [[Special:NewPages|די רשימה פון נייע בלעטער]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnotefrom' => "פֿאלגנד זענען די ענדערונגען זײַט '''$2''' (ביז '''$1''')",
+'rcnotefrom' => 'פֿאלגנד זענען די ענדערונגען זײַט <strong>$2</strong> (ביז <strong>$1</strong>).',
 'rclistfrom' => 'װײַזן נײַע ענדערונגען פֿון $1',
 'rcshowhideminor' => '$1 מינערדיגע ענדערונגען',
+'rcshowhideminor-hide' => 'באהאלטן',
 'rcshowhidebots' => '$1 ראבאטן',
 'rcshowhidebots-show' => 'ווײַזן',
 'rcshowhidebots-hide' => 'באַהאַלטן',
index 0bccc5a..aa8ca0a 100644 (file)
@@ -2645,6 +2645,7 @@ $1',
 'sp-contributions-blocked-notice-anon' => '这个IP地址现时正在被封锁中。
 最近的封锁日志项目在下面提供以便参考:',
 'sp-contributions-search' => '搜索贡献',
+'sp-contributions-suppresslog' => '已被删除的用户贡献',
 'sp-contributions-username' => 'IP地址或用户名:',
 'sp-contributions-toponly' => '仅显示最后版本的编辑',
 'sp-contributions-newonly' => '仅显示创建页面的编辑',
index da4012b..62f4b80 100644 (file)
@@ -2606,6 +2606,7 @@ $1',
 'sp-contributions-blocked-notice-anon' => '這個IP地址現時正在被封鎖中。
 最近的封鎖日誌項目在下面提供以便參考:',
 'sp-contributions-search' => '搜尋貢獻記錄',
+'sp-contributions-suppresslog' => '已隱藏的用戶貢獻',
 'sp-contributions-username' => 'IP位址或用戶名稱:',
 'sp-contributions-toponly' => '只顯示最新修訂版本的編輯',
 'sp-contributions-newonly' => '僅顯示建立頁面之編輯',
index 4c6a7ac..6689b7c 100644 (file)
@@ -20,7 +20,7 @@
                 *
                 * @param {Object} nav An object with atleast a 'userAgent' and 'platform' key.
                 * Defaults to the global Navigator object.
-                * @returns {Object} The resulting client object will be in the following format:
+                * @return {Object} The resulting client object will be in the following format:
                 *  {
                 *   'name': 'firefox',
                 *   'layout': 'gecko',
                 * @param {boolean} [exactMatchOnly=false] Only return true if the browser is matched, otherwise
                 * returns true if the browser is not found.
                 *
-                * @returns {boolean} The current browser is in the support map
+                * @return {boolean} The current browser is in the support map
                 */
                test: function ( map, profile, exactMatchOnly ) {
                        /*jshint evil: true */
index 70bfc4e..eb29db9 100644 (file)
@@ -16,8 +16,7 @@
  *
  * Uses window.devicePixelRatio if available, or CSS media queries on IE.
  *
- * @method
- * @returns {number} Device pixel ratio
+ * @return {number} Device pixel ratio
  */
 $.devicePixelRatio = function () {
        if ( window.devicePixelRatio !== undefined ) {
@@ -51,8 +50,7 @@ $.devicePixelRatio = function () {
  * Implement responsive images based on srcset attributes, if browser has no
  * native srcset support.
  *
- * @method
- * @returns {jQuery} This selection
+ * @return {jQuery} This selection
  */
 $.fn.hidpi = function () {
        var $target = this,
@@ -81,11 +79,11 @@ $.fn.hidpi = function () {
 /**
  * Match a srcset entry for the given device pixel ratio
  *
+ * Exposed for testing.
+ *
  * @param {number} devicePixelRatio
  * @param {string} srcset
  * @return {mixed} null or the matching src string
- *
- * Exposed for testing.
  */
 $.matchSrcSet = function ( devicePixelRatio, srcset ) {
        var candidates,
index d9a2b19..e0d9de2 100644 (file)
@@ -9,7 +9,7 @@
  *
  * @param {Object} options
  * @param {string} key
- * @returns {string} Localized message
+ * @return {string} Localized message
  */
 function msg( options, key ) {
        var args = options.params[key] || [];
index a7c946d..597f396 100644 (file)
@@ -381,7 +381,7 @@ var mw = ( function ( $, undefined ) {
                 * values with microsecond precision that are guaranteed to be monotonic. On all other browsers,
                 * it will fall back to using `Date`.
                 *
-                * @returns {number} Current time
+                * @return {number} Current time
                 */
                now: ( function () {
                        var perf = window.performance,
index b545ce6..342ad6f 100644 (file)
@@ -9,5 +9,6 @@
     "ooui-dialog-action-close": "Đóng",
     "ooui-outline-control-move-down": "Chuyển mục xuống",
     "ooui-outline-control-move-up": "Chuyển mục lên",
+    "ooui-outline-control-remove": "Xóa khoản",
     "ooui-toolbar-more": "Thêm"
 }
\ No newline at end of file
index c849f56..fc449e6 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (e1b23620c0)
+ * OOjs UI v0.1.0-pre (8b13d2b7f7)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Wed Mar 05 2014 17:18:44 GMT-0800 (PST)
+ * Date: Thu Mar 06 2014 14:13:03 GMT-0800 (PST)
  */
 ( function () {
 
@@ -21,6 +21,28 @@ OO.ui = {};
 
 OO.ui.bind = $.proxy;
 
+/**
+ * @property {Object}
+ */
+OO.ui.Keys = {
+       'UNDEFINED': 0,
+       'BACKSPACE': 8,
+       'DELETE': 46,
+       'LEFT': 37,
+       'RIGHT': 39,
+       'UP': 38,
+       'DOWN': 40,
+       'ENTER': 13,
+       'END': 35,
+       'HOME': 36,
+       'TAB': 9,
+       'PAGEUP': 33,
+       'PAGEDOWN': 34,
+       'ESCAPE': 27,
+       'SHIFT': 16,
+       'SPACE': 32
+};
+
 /**
  * Get the user's language and any fallback languages.
  *
@@ -29,7 +51,7 @@ OO.ui.bind = $.proxy;
  * In environments that provide a localization system, this function should be overridden to
  * return the user's language(s). The default implementation returns English (en) only.
  *
- * @returns {string[]} Language codes, in descending order of priority
+ * @return {string[]} Language codes, in descending order of priority
  */
 OO.ui.getUserLanguages = function () {
        return [ 'en' ];
@@ -41,7 +63,7 @@ OO.ui.getUserLanguages = function () {
  * @param {Object.<string,Mixed>} obj Object keyed by language code
  * @param {string|null} [lang] Language code, if omitted or null defaults to any user language
  * @param {string} [fallback] Fallback code, used if no matching language can be found
- * @returns {Mixed} Local value
+ * @return {Mixed} Local value
  */
 OO.ui.getLocalValue = function ( obj, lang, fallback ) {
        var i, len, langs;
@@ -108,7 +130,7 @@ var messages = {
  * @abstract
  * @param {string} key Message key
  * @param {Mixed...} [params] Message parameters
- * @returns {string} Translated message with parameters substituted
+ * @return {string} Translated message with parameters substituted
  */
 OO.ui.msg = function ( key ) {
        var message = messages[key], params = Array.prototype.slice.call( arguments, 1 );
@@ -125,12 +147,14 @@ OO.ui.msg = function ( key ) {
        return message;
 };
 
+/** */
 OO.ui.deferMsg = function ( key ) {
        return function () {
                return OO.ui.msg( key );
        };
 };
 
+/** */
 OO.ui.resolveMsg = function ( msg ) {
        if ( $.isFunction( msg ) ) {
                return msg();
@@ -139,31 +163,11 @@ OO.ui.resolveMsg = function ( msg ) {
 };
 
 } )();
-
-// Add more as you need
-OO.ui.Keys = {
-       'UNDEFINED': 0,
-       'BACKSPACE': 8,
-       'DELETE': 46,
-       'LEFT': 37,
-       'RIGHT': 39,
-       'UP': 38,
-       'DOWN': 40,
-       'ENTER': 13,
-       'END': 35,
-       'HOME': 36,
-       'TAB': 9,
-       'PAGEUP': 33,
-       'PAGEDOWN': 34,
-       'ESCAPE': 27,
-       'SHIFT': 16,
-       'SPACE': 32
-};
 /**
  * DOM element abstraction.
  *
- * @class
  * @abstract
+ * @class
  *
  * @constructor
  * @param {Object} [config] Configuration options
@@ -191,11 +195,6 @@ OO.ui.Element = function OoUiElement( config ) {
 
 /* Static Properties */
 
-/**
- * @static
- * @property
- * @inheritable
- */
 OO.ui.Element.static = {};
 
 /**
@@ -212,12 +211,12 @@ OO.ui.Element.static.tagName = 'div';
 /* Static Methods */
 
 /**
- * Gets a jQuery function within a specific document.
+ * Get a jQuery function within a specific document.
  *
  * @static
  * @param {jQuery|HTMLElement|HTMLDocument|Window} context Context to bind the function to
  * @param {OO.ui.Frame} [frame] Frame of the document context
- * @returns {Function} Bound jQuery function
+ * @return {Function} Bound jQuery function
  */
 OO.ui.Element.getJQuery = function ( context, frame ) {
        function wrapper( selector ) {
@@ -238,7 +237,7 @@ OO.ui.Element.getJQuery = function ( context, frame ) {
  *
  * @static
  * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Object to get the document for
- * @returns {HTMLDocument} Document object
+ * @return {HTMLDocument} Document object
  * @throws {Error} If context is invalid
  */
 OO.ui.Element.getDocument = function ( obj ) {
@@ -266,7 +265,7 @@ OO.ui.Element.getDocument = function ( obj ) {
  *
  * @static
  * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Context to get the window for
- * @returns {Window} Window object
+ * @return {Window} Window object
  */
 OO.ui.Element.getWindow = function ( obj ) {
        var doc = this.getDocument( obj );
@@ -278,7 +277,7 @@ OO.ui.Element.getWindow = function ( obj ) {
  *
  * @static
  * @param {jQuery|HTMLElement|HTMLDocument|Window} obj Context to get the direction for
- * @returns {string} Text direction, either `ltr` or `rtl`
+ * @return {string} Text direction, either `ltr` or `rtl`
  */
 OO.ui.Element.getDir = function ( obj ) {
        var isDoc, isWin;
@@ -306,7 +305,7 @@ OO.ui.Element.getDir = function ( obj ) {
  * @param {Window} from Window of the child frame
  * @param {Window} [to=window] Window of the parent frame
  * @param {Object} [offset] Offset to start with, used internally
- * @returns {Object} Offset object, containing left and top properties
+ * @return {Object} Offset object, containing left and top properties
  */
 OO.ui.Element.getFrameOffset = function ( from, to, offset ) {
        var i, len, frames, frame, rect;
@@ -348,7 +347,7 @@ OO.ui.Element.getFrameOffset = function ( from, to, offset ) {
  * @static
  * @param {jQuery} $from
  * @param {jQuery} $to
- * @returns {Object} Translated position coordinates, containing top and left properties
+ * @return {Object} Translated position coordinates, containing top and left properties
  */
 OO.ui.Element.getRelativePosition = function ( $from, $to ) {
        var from = $from.offset(),
@@ -465,7 +464,7 @@ OO.ui.Element.getClosestScrollableContainer = function ( el, dimension ) {
 };
 
 /**
- * Scroll element into view
+ * Scroll element into view.
  *
  * @static
  * @param {HTMLElement} el Element to scroll into view
@@ -528,7 +527,7 @@ OO.ui.Element.scrollIntoView = function ( el, config ) {
  *
  * Override this method to base the result on instance information.
  *
- * @returns {string} HTML tag name
+ * @return {string} HTML tag name
  */
 OO.ui.Element.prototype.getTagName = function () {
        return this.constructor.static.tagName;
@@ -537,7 +536,7 @@ OO.ui.Element.prototype.getTagName = function () {
 /**
  * Get the DOM document.
  *
- * @returns {HTMLDocument} Document object
+ * @return {HTMLDocument} Document object
  */
 OO.ui.Element.prototype.getElementDocument = function () {
        return OO.ui.Element.getDocument( this.$element );
@@ -546,7 +545,7 @@ OO.ui.Element.prototype.getElementDocument = function () {
 /**
  * Get the DOM window.
  *
- * @returns {Window} Window object
+ * @return {Window} Window object
  */
 OO.ui.Element.prototype.getElementWindow = function () {
        return OO.ui.Element.getWindow( this.$element );
@@ -555,7 +554,6 @@ OO.ui.Element.prototype.getElementWindow = function () {
 /**
  * Get closest scrollable container.
  *
- * @method
  * @see #static-method-getClosestScrollableContainer
  */
 OO.ui.Element.prototype.getClosestScrollableElementContainer = function () {
@@ -565,7 +563,7 @@ OO.ui.Element.prototype.getClosestScrollableElementContainer = function () {
 /**
  * Get group element is in.
  *
- * @returns {OO.ui.GroupElement|null} Group element, null if none
+ * @return {OO.ui.GroupElement|null} Group element, null if none
  */
 OO.ui.Element.prototype.getElementGroup = function () {
        return this.elementGroup;
@@ -583,9 +581,8 @@ OO.ui.Element.prototype.setElementGroup = function ( group ) {
 };
 
 /**
- * Scroll element into view
+ * Scroll element into view.
  *
- * @method
  * @see #static-method-scrollIntoView
  * @param {Object} [config={}]
  */
@@ -712,6 +709,10 @@ OO.mixinClass( OO.ui.Frame, OO.EventEmitter );
 
 /* Static Properties */
 
+/**
+ * @static
+ * @inheritdoc
+ */
 OO.ui.Frame.static.tagName = 'iframe';
 
 /* Events */
@@ -921,8 +922,8 @@ OO.ui.Frame.prototype.setSize = function ( width, height ) {
  * There are two ways to specify a title: set the static `title` property or provide a `title`
  * property in the configuration options. The latter will override the former.
  *
- * @class
  * @abstract
+ * @class
  * @extends OO.ui.Element
  * @mixins OO.EventEmitter
  *
@@ -1029,8 +1030,7 @@ OO.ui.Window.static.title = null;
 /**
  * Check if window is visible.
  *
- * @method
- * @returns {boolean} Window is visible
+ * @return {boolean} Window is visible
  */
 OO.ui.Window.prototype.isVisible = function () {
        return this.visible;
@@ -1039,8 +1039,7 @@ OO.ui.Window.prototype.isVisible = function () {
 /**
  * Check if window is opening.
  *
- * @method
- * @returns {boolean} Window is opening
+ * @return {boolean} Window is opening
  */
 OO.ui.Window.prototype.isOpening = function () {
        return this.opening;
@@ -1049,8 +1048,7 @@ OO.ui.Window.prototype.isOpening = function () {
 /**
  * Check if window is closing.
  *
- * @method
- * @returns {boolean} Window is closing
+ * @return {boolean} Window is closing
  */
 OO.ui.Window.prototype.isClosing = function () {
        return this.closing;
@@ -1059,8 +1057,7 @@ OO.ui.Window.prototype.isClosing = function () {
 /**
  * Get the window frame.
  *
- * @method
- * @returns {OO.ui.Frame} Frame of window
+ * @return {OO.ui.Frame} Frame of window
  */
 OO.ui.Window.prototype.getFrame = function () {
        return this.frame;
@@ -1069,7 +1066,7 @@ OO.ui.Window.prototype.getFrame = function () {
 /**
  * Get the title of the window.
  *
- * @returns {string} Title text
+ * @return {string} Title text
  */
 OO.ui.Window.prototype.getTitle = function () {
        return this.title;
@@ -1078,7 +1075,7 @@ OO.ui.Window.prototype.getTitle = function () {
 /**
  * Get the window icon.
  *
- * @returns {string} Symbolic name of icon
+ * @return {string} Symbolic name of icon
  */
 OO.ui.Window.prototype.getIcon = function () {
        return this.icon;
@@ -1137,7 +1134,7 @@ OO.ui.Window.prototype.setIcon = function ( icon ) {
 };
 
 /**
- * Set the position of window to fit with contents..
+ * Set the position of window to fit with contents.
  *
  * @param {string} left Left offset
  * @param {string} top Top offset
@@ -1190,7 +1187,6 @@ OO.ui.Window.prototype.fitWidthToContents = function ( min, max ) {
  *
  * Once this method is called, this.$$ can be used to create elements within the frame.
  *
- * @method
  * @fires initialize
  * @chainable
  */
@@ -1231,7 +1227,6 @@ OO.ui.Window.prototype.initialize = function () {
  *
  * When you override this method, you must call the parent method at the very beginning.
  *
- * @method
  * @abstract
  * @param {Object} [data] Window opening data
  */
@@ -1247,7 +1242,6 @@ OO.ui.Window.prototype.setup = function () {
  *
  * When you override this method, you must call the parent method at the very end.
  *
- * @method
  * @abstract
  * @param {Object} [data] Window closing data
  */
@@ -1260,7 +1254,6 @@ OO.ui.Window.prototype.teardown = function () {
  *
  * Do not override this method. See #setup for a way to make changes each time the window opens.
  *
- * @method
  * @param {Object} [data] Window opening data
  * @fires open
  * @chainable
@@ -1287,7 +1280,6 @@ OO.ui.Window.prototype.open = function ( data ) {
  *
  * See #teardown for a way to do something each time the window closes.
  *
- * @method
  * @param {Object} [data] Window closing data
  * @fires close
  * @chainable
@@ -1328,13 +1320,15 @@ OO.ui.WindowSet = function OoUiWindowSet( factory, config ) {
        this.factory = factory;
 
        /**
-        * List of all windows associated with this window set
+        * List of all windows associated with this window set.
+        *
         * @property {OO.ui.Window[]}
         */
        this.windowList = [];
 
        /**
         * Mapping of OO.ui.Window objects created by name from the #factory.
+        *
         * @property {Object}
         */
        this.windows = {};
@@ -1381,7 +1375,6 @@ OO.mixinClass( OO.ui.WindowSet, OO.EventEmitter );
 /**
  * Handle a window that's being opened.
  *
- * @method
  * @param {OO.ui.Window} win Window that's being opened
  * @param {Object} [config] Window opening information
  * @fires opening
@@ -1397,7 +1390,6 @@ OO.ui.WindowSet.prototype.onWindowOpening = function ( win, config ) {
 /**
  * Handle a window that's been opened.
  *
- * @method
  * @param {OO.ui.Window} win Window that's been opened
  * @param {Object} [config] Window opening information
  * @fires open
@@ -1409,7 +1401,6 @@ OO.ui.WindowSet.prototype.onWindowOpen = function ( win, config ) {
 /**
  * Handle a window that's being closed.
  *
- * @method
  * @param {OO.ui.Window} win Window that's being closed
  * @param {Object} [config] Window closing information
  * @fires closing
@@ -1422,7 +1413,6 @@ OO.ui.WindowSet.prototype.onWindowClosing = function ( win, config ) {
 /**
  * Handle a window that's been closed.
  *
- * @method
  * @param {OO.ui.Window} win Window that's been closed
  * @param {Object} [config] Window closing information
  * @fires close
@@ -1434,8 +1424,7 @@ OO.ui.WindowSet.prototype.onWindowClose = function ( win, config ) {
 /**
  * Get the current window.
  *
- * @method
- * @returns {OO.ui.Window} Current window
+ * @return {OO.ui.Window} Current window
  */
 OO.ui.WindowSet.prototype.getCurrentWindow = function () {
        return this.currentWindow;
@@ -1494,10 +1483,8 @@ OO.ui.WindowSet.prototype.addWindow = function ( win ) {
        this.$element.append( win.$element );
 };
 /**
- * Modal dialog box.
- *
- * @class
  * @abstract
+ * @class
  * @extends OO.ui.Window
  *
  * @constructor
@@ -1549,6 +1536,7 @@ OO.ui.Dialog.static.name = '';
  *
  * @static
  * @property {Object}
+ * @inheritable
  */
 OO.ui.Dialog.static.sizeCssClasses = {
        'small': 'oo-ui-dialog-small',
@@ -1560,8 +1548,6 @@ OO.ui.Dialog.static.sizeCssClasses = {
 
 /**
  * Handle close button click events.
- *
- * @method
  */
 OO.ui.Dialog.prototype.onCloseButtonClick = function () {
        this.close( { 'action': 'cancel' } );
@@ -1570,7 +1556,6 @@ OO.ui.Dialog.prototype.onCloseButtonClick = function () {
 /**
  * Handle window mouse wheel events.
  *
- * @method
  * @param {jQuery.Event} e Mouse wheel event
  */
 OO.ui.Dialog.prototype.onWindowMouseWheel = function () {
@@ -1580,7 +1565,6 @@ OO.ui.Dialog.prototype.onWindowMouseWheel = function () {
 /**
  * Handle document key down events.
  *
- * @method
  * @param {jQuery.Event} e Key down event
  */
 OO.ui.Dialog.prototype.onDocumentKeyDown = function ( e ) {
@@ -1601,7 +1585,6 @@ OO.ui.Dialog.prototype.onDocumentKeyDown = function ( e ) {
 /**
  * Handle frame document key down events.
  *
- * @method
  * @param {jQuery.Event} e Key down event
  */
 OO.ui.Dialog.prototype.onFrameDocumentKeyDown = function ( e ) {
@@ -1709,8 +1692,8 @@ OO.ui.Dialog.prototype.close = function ( data ) {
 /**
  * Container for elements.
  *
- * @class
  * @abstract
+ * @class
  * @extends OO.ui.Element
  * @mixins OO.EventEmitter
  *
@@ -1739,8 +1722,8 @@ OO.mixinClass( OO.ui.Layout, OO.EventEmitter );
 /**
  * User interface control.
  *
- * @class
  * @abstract
+ * @class
  * @extends OO.ui.Element
  * @mixins OO.EventEmitter
  *
@@ -1785,7 +1768,6 @@ OO.mixinClass( OO.ui.Widget, OO.EventEmitter );
 /**
  * Check if the widget is disabled.
  *
- * @method
  * @param {boolean} Button is disabled
  */
 OO.ui.Widget.prototype.isDisabled = function () {
@@ -1795,7 +1777,6 @@ OO.ui.Widget.prototype.isDisabled = function () {
 /**
  * Update the disabled state, in case of changes in parent widget.
  *
- * @method
  * @chainable
  */
 OO.ui.Widget.prototype.updateDisabled = function () {
@@ -1808,7 +1789,6 @@ OO.ui.Widget.prototype.updateDisabled = function () {
  *
  * This should probably change the widgets's appearance and prevent it from being used.
  *
- * @method
  * @param {boolean} disabled Disable widget
  * @chainable
  */
@@ -2690,8 +2670,8 @@ OO.ui.TitledElement.prototype.getTitle = function () {
 /**
  * Generic toolbar tool.
  *
- * @class
  * @abstract
+ * @class
  * @extends OO.ui.Widget
  * @mixins OO.ui.IconedElement
  *
@@ -2750,6 +2730,10 @@ OO.mixinClass( OO.ui.Tool, OO.ui.IconedElement );
 
 /* Static Properties */
 
+/**
+ * @static
+ * @inheritdoc
+ */
 OO.ui.Tool.static.tagName = 'span';
 
 /**
@@ -2799,11 +2783,11 @@ OO.ui.Tool.static.autoAdd = true;
 /**
  * Check if this tool is compatible with given data.
  *
- * @method
  * @static
+ * @method
  * @inheritable
  * @param {Mixed} data Data to check
- * @returns {boolean} Tool can be used with data
+ * @return {boolean} Tool can be used with data
  */
 OO.ui.Tool.static.isCompatibleWith = function () {
        return false;
@@ -2817,7 +2801,6 @@ OO.ui.Tool.static.isCompatibleWith = function () {
  * This is an abstract method that must be overridden in a concrete subclass.
  *
  * @abstract
- * @method
  */
 OO.ui.Tool.prototype.onUpdateState = function () {
        throw new Error(
@@ -2831,7 +2814,6 @@ OO.ui.Tool.prototype.onUpdateState = function () {
  * This is an abstract method that must be overridden in a concrete subclass.
  *
  * @abstract
- * @method
  */
 OO.ui.Tool.prototype.onSelect = function () {
        throw new Error(
@@ -2842,7 +2824,6 @@ OO.ui.Tool.prototype.onSelect = function () {
 /**
  * Check if the button is active.
  *
- * @method
  * @param {boolean} Button is active
  */
 OO.ui.Tool.prototype.isActive = function () {
@@ -2852,7 +2833,6 @@ OO.ui.Tool.prototype.isActive = function () {
 /**
  * Make the button appear active or inactive.
  *
- * @method
  * @param {boolean} state Make button appear active
  */
 OO.ui.Tool.prototype.setActive = function ( state ) {
@@ -2867,7 +2847,6 @@ OO.ui.Tool.prototype.setActive = function ( state ) {
 /**
  * Get the tool title.
  *
- * @method
  * @param {string|Function} title Title text or a function that returns text
  * @chainable
  */
@@ -2880,8 +2859,7 @@ OO.ui.Tool.prototype.setTitle = function ( title ) {
 /**
  * Get the tool title.
  *
- * @method
- * @returns {string} Title text
+ * @return {string} Title text
  */
 OO.ui.Tool.prototype.getTitle = function () {
        return this.title;
@@ -2890,8 +2868,7 @@ OO.ui.Tool.prototype.getTitle = function () {
 /**
  * Get the tool's symbolic name.
  *
- * @method
- * @returns {string} Symbolic name of tool
+ * @return {string} Symbolic name of tool
  */
 OO.ui.Tool.prototype.getName = function () {
        return this.constructor.static.name;
@@ -2899,8 +2876,6 @@ OO.ui.Tool.prototype.getName = function () {
 
 /**
  * Update the title.
- *
- * @method
  */
 OO.ui.Tool.prototype.updateTitle = function () {
        var titleTooltips = this.toolGroup.constructor.static.titleTooltips,
@@ -2931,8 +2906,6 @@ OO.ui.Tool.prototype.updateTitle = function () {
 
 /**
  * Destroy tool.
- *
- * @method
  */
 OO.ui.Tool.prototype.destroy = function () {
        this.toolbar.disconnect( this );
@@ -3002,8 +2975,7 @@ OO.mixinClass( OO.ui.Toolbar, OO.ui.GroupElement );
 /**
  * Get the tool factory.
  *
- * @method
- * @returns {OO.Factory} Tool factory
+ * @return {OO.Factory} Tool factory
  */
 OO.ui.Toolbar.prototype.getToolFactory = function () {
        return this.toolFactory;
@@ -3012,7 +2984,6 @@ OO.ui.Toolbar.prototype.getToolFactory = function () {
 /**
  * Handles mouse down events.
  *
- * @method
  * @param {jQuery.Event} e Mouse down event
  */
 OO.ui.Toolbar.prototype.onMouseDown = function ( e ) {
@@ -3035,11 +3006,11 @@ OO.ui.Toolbar.prototype.initialize = function () {
  * Setup toolbar.
  *
  * Tools can be specified in the following ways:
- *  - A specific tool: `{ 'name': 'tool-name' }` or `'tool-name'`
- *  - All tools in a group: `{ 'group': 'group-name' }`
- *  - All tools: `'*'` - Using this will make the group a list with a "More" label by default
  *
- * @method
+ * - A specific tool: `{ 'name': 'tool-name' }` or `'tool-name'`
+ * - All tools in a group: `{ 'group': 'group-name' }`
+ * - All tools: `'*'` - Using this will make the group a list with a "More" label by default
+ *
  * @param {Object.<string,Array>} groups List of tool group configurations
  * @param {Array|string} [groups.include] Tools to include
  * @param {Array|string} [groups.exclude] Tools to exclude
@@ -3138,7 +3109,7 @@ OO.ui.Toolbar.prototype.releaseTool = function ( tool ) {
  * This is a stub that should be overridden to provide access to accelerator information.
  *
  * @param {string} name Symbolic name of tool
- * @returns {string|undefined} Tool accelerator label if available
+ * @return {string|undefined} Tool accelerator label if available
  */
 OO.ui.Toolbar.prototype.getToolAccelerator = function () {
        return undefined;
@@ -3161,6 +3132,7 @@ OO.inheritClass( OO.ui.ToolFactory, OO.Factory );
 
 /* Methods */
 
+/** */
 OO.ui.ToolFactory.prototype.getTools = function ( include, exclude, promote, demote ) {
        var i, len, included, promoted, demoted,
                auto = [],
@@ -3187,14 +3159,15 @@ OO.ui.ToolFactory.prototype.getTools = function ( include, exclude, promote, dem
  * Get a flat list of names from a list of names or groups.
  *
  * Tools can be specified in the following ways:
- *  - A specific tool: `{ 'name': 'tool-name' }` or `'tool-name'`
- *  - All tools in a group: `{ 'group': 'group-name' }`
- *  - All tools: `'*'`
+ *
+ * - A specific tool: `{ 'name': 'tool-name' }` or `'tool-name'`
+ * - All tools in a group: `{ 'group': 'group-name' }`
+ * - All tools: `'*'`
  *
  * @private
  * @param {Array|string} collection List of tools
  * @param {Object} [used] Object with names that should be skipped as properties; extracted
- *   names will be added as properties
+ *  names will be added as properties
  * @return {string[]} List of extracted names
  */
 OO.ui.ToolFactory.prototype.extract = function ( collection, used ) {
@@ -3257,16 +3230,17 @@ OO.ui.ToolFactory.prototype.extract = function ( collection, used ) {
 /**
  * Collection of tools.
  *
- * @class
+ * Tools can be specified in the following ways:
+ *
+ * - A specific tool: `{ 'name': 'tool-name' }` or `'tool-name'`
+ * - All tools in a group: `{ 'group': 'group-name' }`
+ * - All tools: `'*'`
+ *
  * @abstract
+ * @class
  * @extends OO.ui.Widget
  * @mixins OO.ui.GroupElement
  *
- * Tools can be specified in the following ways:
- *  - A specific tool: `{ 'name': 'tool-name' }` or `'tool-name'`
- *  - All tools in a group: `{ 'group': 'group-name' }`
- *  - All tools: `'*'`
- *
  * @constructor
  * @param {OO.ui.Toolbar} toolbar
  * @param {Object} [config] Configuration options
@@ -3349,7 +3323,6 @@ OO.ui.ToolGroup.static.accelTooltips = false;
 /**
  * Handle mouse down events.
  *
- * @method
  * @param {jQuery.Event} e Mouse down event
  */
 OO.ui.ToolGroup.prototype.onMouseDown = function ( e ) {
@@ -3368,7 +3341,6 @@ OO.ui.ToolGroup.prototype.onMouseDown = function ( e ) {
 /**
  * Handle captured mouse up events.
  *
- * @method
  * @param {Event} e Mouse up event
  */
 OO.ui.ToolGroup.prototype.onCapturedMouseUp = function ( e ) {
@@ -3381,7 +3353,6 @@ OO.ui.ToolGroup.prototype.onCapturedMouseUp = function ( e ) {
 /**
  * Handle mouse up events.
  *
- * @method
  * @param {jQuery.Event} e Mouse up event
  */
 OO.ui.ToolGroup.prototype.onMouseUp = function ( e ) {
@@ -3398,7 +3369,6 @@ OO.ui.ToolGroup.prototype.onMouseUp = function ( e ) {
 /**
  * Handle mouse over events.
  *
- * @method
  * @param {jQuery.Event} e Mouse over event
  */
 OO.ui.ToolGroup.prototype.onMouseOver = function ( e ) {
@@ -3412,7 +3382,6 @@ OO.ui.ToolGroup.prototype.onMouseOver = function ( e ) {
 /**
  * Handle mouse out events.
  *
- * @method
  * @param {jQuery.Event} e Mouse out event
  */
 OO.ui.ToolGroup.prototype.onMouseOut = function ( e ) {
@@ -3429,10 +3398,9 @@ OO.ui.ToolGroup.prototype.onMouseOut = function ( e ) {
  * Only tool links are considered, which prevents other elements in the tool such as popups from
  * triggering tool group interactions.
  *
- * @method
  * @private
  * @param {jQuery.Event} e
- * @returns {OO.ui.Tool|null} Tool, `null` if none was found
+ * @return {OO.ui.Tool|null} Tool, `null` if none was found
  */
 OO.ui.ToolGroup.prototype.getTargetTool = function ( e ) {
        var tool,
@@ -3449,6 +3417,7 @@ OO.ui.ToolGroup.prototype.getTargetTool = function ( e ) {
  * Handle tool registry register events.
  *
  * If a tool is registered after the group is created, we must repopulate the list to account for:
+ *
  * - a tool being added that may be included
  * - a tool already included being overridden
  *
@@ -3469,8 +3438,6 @@ OO.ui.ToolGroup.prototype.getToolbar = function () {
 
 /**
  * Add and remove tools based on configuration.
- *
- * @method
  */
 OO.ui.ToolGroup.prototype.populate = function () {
        var i, len, name, tool,
@@ -3526,8 +3493,6 @@ OO.ui.ToolGroup.prototype.populate = function () {
 
 /**
  * Destroy tool group.
- *
- * @method
  */
 OO.ui.ToolGroup.prototype.destroy = function () {
        var name;
@@ -4947,6 +4912,78 @@ OO.ui.ItemWidget.prototype.setElementGroup = function ( group ) {
 
        return this;
 };
+/**
+ * Creates an OO.ui.IconWidget object.
+ *
+ * @class
+ * @extends OO.ui.Widget
+ * @mixins OO.ui.IconedElement
+ * @mixins OO.ui.TitledElement
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ */
+OO.ui.IconWidget = function OoUiIconWidget( config ) {
+       // Config intialization
+       config = config || {};
+
+       // Parent constructor
+       OO.ui.Widget.call( this, config );
+
+       // Mixin constructors
+       OO.ui.IconedElement.call( this, this.$element, config );
+       OO.ui.TitledElement.call( this, this.$element, config );
+
+       // Initialization
+       this.$element.addClass( 'oo-ui-iconWidget' );
+};
+
+/* Inheritance */
+
+OO.inheritClass( OO.ui.IconWidget, OO.ui.Widget );
+
+OO.mixinClass( OO.ui.IconWidget, OO.ui.IconedElement );
+OO.mixinClass( OO.ui.IconWidget, OO.ui.TitledElement );
+
+/* Static Properties */
+
+OO.ui.IconWidget.static.tagName = 'span';
+/**
+ * Creates an OO.ui.IndicatorWidget object.
+ *
+ * @class
+ * @extends OO.ui.Widget
+ * @mixins OO.ui.IndicatedElement
+ * @mixins OO.ui.TitledElement
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ */
+OO.ui.IndicatorWidget = function OoUiIndicatorWidget( config ) {
+       // Config intialization
+       config = config || {};
+
+       // Parent constructor
+       OO.ui.Widget.call( this, config );
+
+       // Mixin constructors
+       OO.ui.IndicatedElement.call( this, this.$element, config );
+       OO.ui.TitledElement.call( this, this.$element, config );
+
+       // Initialization
+       this.$element.addClass( 'oo-ui-indicatorWidget' );
+};
+
+/* Inheritance */
+
+OO.inheritClass( OO.ui.IndicatorWidget, OO.ui.Widget );
+
+OO.mixinClass( OO.ui.IndicatorWidget, OO.ui.IndicatedElement );
+OO.mixinClass( OO.ui.IndicatorWidget, OO.ui.TitledElement );
+
+/* Static Properties */
+
+OO.ui.IndicatorWidget.static.tagName = 'span';
 /**
  * Container for multiple related buttons.
  *
@@ -6907,7 +6944,7 @@ OO.ui.OutlineItemWidget.prototype.setLevel = function ( level ) {
        return this;
 };
 /**
- * Create an OO.ui.ButtonSelect object.
+ * Create an OO.ui.ButtonOptionWidget object.
  *
  * @class
  * @extends OO.ui.OptionWidget
index 826574e..a8dba0b 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (e1b23620c0)
+ * OOjs UI v0.1.0-pre (8b13d2b7f7)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Wed Mar 05 2014 17:18:44 GMT-0800 (PST)
+ * Date: Thu Mar 06 2014 14:13:03 GMT-0800 (PST)
  */
 
 /* Textures */
   z-index: 4;
 }
 
+.oo-ui-iconWidget {
+  display: inline-block;
+  width: 1.9em;
+  height: 1.9em;
+  line-height: 2.5em;
+  vertical-align: middle;
+  background-position: center center;
+  background-repeat: no-repeat;
+  opacity: 0.8;
+}
+
+.oo-ui-iconWidget.oo-ui-widget-disabled {
+  opacity: 0.2;
+}
+
+.oo-ui-indicatorWidget {
+  display: inline-block;
+  width: 1.9em;
+  height: 1.9em;
+  line-height: 2.5em;
+  vertical-align: middle;
+  background-position: center center;
+  background-repeat: no-repeat;
+  opacity: 0.8;
+}
+
+.oo-ui-indicatorWidget.oo-ui-widget-disabled {
+  opacity: 0.2;
+}
+
 .oo-ui-selectWidget {
   padding: 0;
   margin: 0;
index 365995d..46c3030 100644 (file)
@@ -111,41 +111,3 @@ div#simpleSearch {
                z-index: 1;
        }
 }
-
-// The following styles exist only for backwards-compatibility with
-// cached HTML and are to be removed before 1.23 release.
-
-/* Fix direction changed for awful hacks */
-.sitedir-ltr div#simpleSearch button#searchButton {
-       /* @noflip */
-       direction: ltr;
-}
-.sitedir-rtl div#simpleSearch button#searchButton {
-       /* @noflip */
-       direction: rtl;
-}
-
-div#simpleSearch button#searchButton {
-       position: absolute;
-       padding: 0;
-       padding-top: 0.3em;
-       padding-bottom: 0.2em;
-       padding-right: 0.4em;
-       margin: 0;
-       border: none;
-       background-color: transparent;
-       background-image: none;
-       text-indent: 0;
-
-       /* OVERRIDDEN BY COMPLIANT BROWSERS */
-       img {
-               border: none;
-               margin: 0;
-               margin-top: -3px;
-               padding: 0;
-       }
-       /* IGNORED BY IE6 */
-       > img {
-               margin: 0;
-       }
-}
index ea4b0f6..7a048bf 100644 (file)
@@ -40,6 +40,9 @@ $wgAutoloadClasses += array(
        'MediaWikiPHPUnitCommand' => "$testDir/phpunit/MediaWikiPHPUnitCommand.php",
        'MediaWikiPHPUnitTestListener' => "$testDir/phpunit/MediaWikiPHPUnitTestListener.php",
        'MediaWikiLangTestCase' => "$testDir/phpunit/MediaWikiLangTestCase.php",
+       'ResourceLoaderTestCase' => "$testDir/phpunit/ResourceLoaderTestCase.php",
+       'ResourceLoaderTestModule' => "$testDir/phpunit/ResourceLoaderTestCase.php",
+       'ResourceLoaderFileModuleTestModule' => "$testDir/phpunit/ResourceLoaderTestCase.php",
        'TestUser' => "$testDir/phpunit/includes/TestUser.php",
 
        # tests/phpunit/includes
diff --git a/tests/phpunit/ResourceLoaderTestCase.php b/tests/phpunit/ResourceLoaderTestCase.php
new file mode 100644 (file)
index 0000000..b37aa1a
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+
+abstract class ResourceLoaderTestCase extends MediaWikiTestCase {
+
+       protected static function getResourceLoaderContext() {
+               $resourceLoader = new ResourceLoader();
+               $request = new FauxRequest( array(
+                               'debug' => 'true',
+                               'lang' => 'en',
+                               'modules' => 'startup',
+                               'only' => 'scripts',
+                               'skin' => 'vector',
+                               'target' => 'test',
+               ) );
+               return new ResourceLoaderContext( $resourceLoader, $request );
+       }
+
+       protected function setUp() {
+               parent::setUp();
+
+               $this->setMwGlobals( array(
+                       // For ResourceLoader::inDebugMode since it doesn't have context
+                       'wgResourceLoaderDebug' => true,
+
+                       // Avoid influence from wgInvalidateCacheOnLocalSettingsChange
+                       'wgCacheEpoch' => '20140101000000',
+
+                       // For ResourceLoader::__construct()
+                       'wgResourceLoaderSources' => array(),
+
+                       // For wfScript()
+                       'wgScriptPath' => '/w',
+                       'wgScriptExtension' => '.php',
+                       'wgScript' => '/w/index.php',
+                       'wgLoadScript' => '/w/load.php',
+               ) );
+       }
+}
+
+/* Stubs */
+
+class ResourceLoaderTestModule extends ResourceLoaderModule {}
+
+class ResourceLoaderFileModuleTestModule extends ResourceLoaderFileModule {}
index 71ebd6a..7c99352 100644 (file)
@@ -10,6 +10,33 @@ class MessageTest extends MediaWikiLangTestCase {
                ) );
        }
 
+       public function provideTestParams() {
+               return array(
+                       array( array() ),
+                       array( array( 'foo' ), 'foo' ),
+                       array( array( 'foo', 'bar' ), 'foo', 'bar' ),
+                       array( array( 'baz' ), array( 'baz' ) ),
+                       array( array( 'baz', 'foo' ), array( 'baz', 'foo' ) ),
+                       array( array( 'baz', 'foo' ), array( 'baz', 'foo' ), 'hhh' ),
+                       array( array( 'baz', 'foo' ), array( 'baz', 'foo' ), 'hhh', array( 'ahahahahha' ) ),
+                       array( array( 'baz', 'foo' ), array( 'baz', 'foo' ), array( 'ahahahahha' ) ),
+                       array( array( 'baz' ), array( 'baz' ), array( 'ahahahahha' ) ),
+               );
+       }
+
+       /**
+        * @covers Message::params
+        * @dataProvider provideTestParams
+        */
+       public function testParams( $expected ) {
+               $msg = new Message( 'imasomething' );
+
+               $returned = call_user_func_array( array( $msg, 'params' ),  array_slice( func_get_args(), 1 ) );
+
+               $this->assertSame( $msg, $returned );
+               $this->assertEquals( $expected, $msg->getParams() );
+       }
+
        /**
         * @covers Message::exists
         */
@@ -77,55 +104,84 @@ class MessageTest extends MediaWikiLangTestCase {
        }
 
        /**
-        * FIXME: This should not need database, but Language#formatExpiry does (bug 55912)
-        * @group Database
-        * @todo this should be split up into multiple test methods
         * @covers Message::numParams
-        * @covers Message::durationParams
-        * @covers Message::expiryParams
-        * @covers Message::timeperiodParams
-        * @covers Message::sizeParams
-        * @covers Message::bitrateParams
         */
-       public function testMessageParamTypes() {
+       public function testMessageNumParams() {
                $lang = Language::factory( 'en' );
-
                $msg = new RawMessage( '$1' );
+
                $this->assertEquals(
                        $lang->formatNum( 123456.789 ),
                        $msg->inLanguage( $lang )->numParams( 123456.789 )->plain(),
                        'numParams is handled correctly'
                );
+       }
 
+       /**
+        * @covers Message::durationParams
+        */
+       public function testMessageDurationParams() {
+               $lang = Language::factory( 'en' );
                $msg = new RawMessage( '$1' );
+
                $this->assertEquals(
                        $lang->formatDuration( 1234 ),
                        $msg->inLanguage( $lang )->durationParams( 1234 )->plain(),
                        'durationParams is handled correctly'
                );
+       }
 
+       /**
+        * FIXME: This should not need database, but Language#formatExpiry does (bug 55912)
+        * @group Database
+        * @covers Message::expiryParams
+        */
+       public function testMessageExpiryParams() {
+               $lang = Language::factory( 'en' );
                $msg = new RawMessage( '$1' );
+
                $this->assertEquals(
                        $lang->formatExpiry( wfTimestampNow() ),
                        $msg->inLanguage( $lang )->expiryParams( wfTimestampNow() )->plain(),
                        'expiryParams is handled correctly'
                );
+       }
 
+       /**
+        * @covers Message::timeperiodParams
+        */
+       public function testMessageTimeperiodParams() {
+               $lang = Language::factory( 'en' );
                $msg = new RawMessage( '$1' );
+
                $this->assertEquals(
                        $lang->formatTimePeriod( 1234 ),
                        $msg->inLanguage( $lang )->timeperiodParams( 1234 )->plain(),
                        'timeperiodParams is handled correctly'
                );
+       }
 
+       /**
+        * @covers Message::sizeParams
+        */
+       public function testMessageSizeParams() {
+               $lang = Language::factory( 'en' );
                $msg = new RawMessage( '$1' );
+
                $this->assertEquals(
                        $lang->formatSize( 123456 ),
                        $msg->inLanguage( $lang )->sizeParams( 123456 )->plain(),
                        'sizeParams is handled correctly'
                );
+       }
 
+       /**
+        * @covers Message::bitrateParams
+        */
+       public function testMessageBitrateParams() {
+               $lang = Language::factory( 'en' );
                $msg = new RawMessage( '$1' );
+
                $this->assertEquals(
                        $lang->formatBitrate( 123456 ),
                        $msg->inLanguage( $lang )->bitrateParams( 123456 )->plain(),
diff --git a/tests/phpunit/includes/ResourceLoaderModuleTest.php b/tests/phpunit/includes/ResourceLoaderModuleTest.php
deleted file mode 100644 (file)
index 4643319..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-<?php
-
-class ResourceLoaderModuleTest extends MediaWikiTestCase {
-
-       protected static function getResourceLoaderContext() {
-               $resourceLoader = new ResourceLoader();
-               $request = new FauxRequest( array(
-                               'debug' => 'false',
-                               'lang' => 'en',
-                               'modules' => 'startup',
-                               'only' => 'scripts',
-                               'skin' => 'vector',
-               ) );
-               return new ResourceLoaderContext( $resourceLoader, $request );
-       }
-
-       /**
-        * @covers ResourceLoaderModule::getDefinitionSummary
-        * @covers ResourceLoaderFileModule::getDefinitionSummary
-        */
-       public function testDefinitionSummary() {
-               $context = self::getResourceLoaderContext();
-
-               $baseParams = array(
-                       'scripts' => array( 'foo.js', 'bar.js' ),
-                       'dependencies' => array( 'jquery', 'mediawiki' ),
-                       'messages' => array( 'hello', 'world' ),
-               );
-
-               $module = new ResourceLoaderFileModule( $baseParams );
-
-               $jsonSummary = json_encode( $module->getDefinitionSummary( $context ) );
-
-               // Exactly the same
-               $module = new ResourceLoaderFileModule( $baseParams );
-
-               $this->assertEquals(
-                       $jsonSummary,
-                       json_encode( $module->getDefinitionSummary( $context ) ),
-                       'Instance is insignificant'
-               );
-
-               // Re-order dependencies
-               $module = new ResourceLoaderFileModule( array(
-                       'dependencies' => array( 'mediawiki', 'jquery' ),
-               ) + $baseParams );
-
-               $this->assertEquals(
-                       $jsonSummary,
-                       json_encode( $module->getDefinitionSummary( $context ) ),
-                       'Order of dependencies is insignificant'
-               );
-
-               // Re-order messages
-               $module = new ResourceLoaderFileModule( array(
-                       'messages' => array( 'world', 'hello' ),
-               ) + $baseParams );
-
-               $this->assertEquals(
-                       $jsonSummary,
-                       json_encode( $module->getDefinitionSummary( $context ) ),
-                       'Order of messages is insignificant'
-               );
-
-               // Re-order scripts
-               $module = new ResourceLoaderFileModule( array(
-                       'scripts' => array( 'bar.js', 'foo.js' ),
-               ) + $baseParams );
-
-               $this->assertNotEquals(
-                       $jsonSummary,
-                       json_encode( $module->getDefinitionSummary( $context ) ),
-                       'Order of scripts is significant'
-               );
-
-               // Subclass
-               $module = new ResourceLoaderFileModuleTestModule( $baseParams );
-
-               $this->assertNotEquals(
-                       $jsonSummary,
-                       json_encode( $module->getDefinitionSummary( $context ) ),
-                       'Class is significant'
-               );
-       }
-}
-
-class ResourceLoaderFileModuleTestModule extends ResourceLoaderFileModule {}
diff --git a/tests/phpunit/includes/ResourceLoaderTest.php b/tests/phpunit/includes/ResourceLoaderTest.php
deleted file mode 100644 (file)
index ca8b2b6..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-<?php
-
-class ResourceLoaderTest extends MediaWikiTestCase {
-
-       protected static $resourceLoaderRegisterModulesHook;
-
-       protected function setUp() {
-               parent::setUp();
-
-               // $wgResourceLoaderLESSFunctions, $wgResourceLoaderLESSImportPaths; $wgResourceLoaderLESSVars;
-
-               $this->setMwGlobals( array(
-                       'wgResourceLoaderLESSFunctions' => array(
-                               'test-sum' => function ( $frame, $less ) {
-                                       $sum = 0;
-                                       foreach ( $frame[2] as $arg ) {
-                                               $sum += (int)$arg[1];
-                                       }
-                                       return $sum;
-                               },
-                       ),
-                       'wgResourceLoaderLESSImportPaths' => array(
-                               dirname( __DIR__ ) . '/data/less/common',
-                       ),
-                       'wgResourceLoaderLESSVars' => array(
-                               'foo'  => '2px',
-                               'Foo' => '#eeeeee',
-                               'bar' => 5,
-                       ),
-               ) );
-       }
-
-       /* Hook Methods */
-
-       /**
-        * ResourceLoaderRegisterModules hook
-        */
-       public static function resourceLoaderRegisterModules( &$resourceLoader ) {
-               self::$resourceLoaderRegisterModulesHook = true;
-
-               return true;
-       }
-
-       /* Provider Methods */
-       public static function provideValidModules() {
-               return array(
-                       array( 'TEST.validModule1', new ResourceLoaderTestModule() ),
-               );
-       }
-
-       public static function provideResourceLoaderContext() {
-               $resourceLoader = new ResourceLoader();
-               $request = new FauxRequest();
-               return array(
-                       array( new ResourceLoaderContext( $resourceLoader, $request ) ),
-               );
-       }
-
-       /* Test Methods */
-
-       /**
-        * Ensures that the ResourceLoaderRegisterModules hook is called when a new ResourceLoader object is constructed
-        * @covers ResourceLoader::__construct
-        */
-       public function testCreatingNewResourceLoaderCallsRegistrationHook() {
-               self::$resourceLoaderRegisterModulesHook = false;
-               $resourceLoader = new ResourceLoader();
-               $this->assertTrue( self::$resourceLoaderRegisterModulesHook );
-
-               return $resourceLoader;
-       }
-
-       /**
-        * @dataProvider provideValidModules
-        * @depends testCreatingNewResourceLoaderCallsRegistrationHook
-        * @covers ResourceLoader::register
-        * @covers ResourceLoader::getModule
-        */
-       public function testRegisteredValidModulesAreAccessible(
-               $name, ResourceLoaderModule $module, ResourceLoader $resourceLoader
-       ) {
-               $resourceLoader->register( $name, $module );
-               $this->assertEquals( $module, $resourceLoader->getModule( $name ) );
-       }
-
-       /**
-        * @dataProvider provideResourceLoaderContext
-        * @covers ResourceLoaderFileModule::compileLessFile
-        */
-       public function testLessFileCompilation( $context ) {
-               $basePath = __DIR__ . '/../data/less/module';
-               $module = new ResourceLoaderFileModule( array(
-                       'localBasePath' => $basePath,
-                       'styles' => array( 'styles.less' ),
-               ) );
-               $styles = $module->getStyles( $context );
-               $this->assertStringEqualsFile( $basePath . '/styles.css', $styles['all'] );
-       }
-
-       /**
-        * @dataProvider providePackedModules
-        * @covers ResourceLoader::makePackedModulesString
-        */
-       public function testMakePackedModulesString( $desc, $modules, $packed ) {
-               $this->assertEquals( $packed, ResourceLoader::makePackedModulesString( $modules ), $desc );
-       }
-
-       /**
-        * @dataProvider providePackedModules
-        * @covers ResourceLoaderContext::expandModuleNames
-        */
-       public function testexpandModuleNames( $desc, $modules, $packed ) {
-               $this->assertEquals( $modules, ResourceLoaderContext::expandModuleNames( $packed ), $desc );
-       }
-
-       public static function providePackedModules() {
-               return array(
-                       array(
-                               'Example from makePackedModulesString doc comment',
-                               array( 'foo.bar', 'foo.baz', 'bar.baz', 'bar.quux' ),
-                               'foo.bar,baz|bar.baz,quux',
-                       ),
-                       array(
-                               'Example from expandModuleNames doc comment',
-                               array( 'jquery.foo', 'jquery.bar', 'jquery.ui.baz', 'jquery.ui.quux' ),
-                               'jquery.foo,bar|jquery.ui.baz,quux',
-                       ),
-                       array(
-                               'Regression fixed in r88706 with dotless names',
-                               array( 'foo', 'bar', 'baz' ),
-                               'foo,bar,baz',
-                       ),
-                       array(
-                               'Prefixless modules after a prefixed module',
-                               array( 'single.module', 'foobar', 'foobaz' ),
-                               'single.module|foobar,foobaz',
-                       ),
-               );
-       }
-}
-
-/* Stubs */
-
-class ResourceLoaderTestModule extends ResourceLoaderModule {
-}
-
-/* Hooks */
-global $wgHooks;
-$wgHooks['ResourceLoaderRegisterModules'][] = 'ResourceLoaderTest::resourceLoaderRegisterModules';
index f69fad4..e69660e 100644 (file)
@@ -206,10 +206,12 @@ class RevisionStorageTest extends MediaWikiTestCase {
         */
        public function testFetchRevision() {
                $page = $this->createPage( 'RevisionStorageTest_testFetchRevision', 'one', CONTENT_MODEL_WIKITEXT );
-               $id1 = $page->getRevision()->getId();
+
+               // Hidden process cache assertion below
+               $page->getRevision()->getId();
 
                $page->doEditContent( new WikitextContent( 'two' ), 'second rev' );
-               $id2 = $page->getRevision()->getId();
+               $id = $page->getRevision()->getId();
 
                $res = Revision::fetchRevision( $page->getTitle() );
 
@@ -219,9 +221,8 @@ class RevisionStorageTest extends MediaWikiTestCase {
                        $rows[$row->rev_id] = $row;
                }
 
-               $row = $res->fetchObject();
                $this->assertEquals( 1, count( $rows ), 'expected exactly one revision' );
-               $this->assertArrayHasKey( $id2, $rows, 'missing revision with id ' . $id2 );
+               $this->assertArrayHasKey( $id, $rows, 'missing revision with id ' . $id );
        }
 
        /**
index 4386770..209b54c 100644 (file)
@@ -371,20 +371,11 @@ class StatusTest extends MediaWikiLangTestCase {
        /**
         * @dataProvider provideGetMessage
         * @covers Status::getMessage
-        * @todo test with multiple messages at once
+        * @todo test long and short context messages generated through this method
         */
-       public function testGetMessage( Status $status, $expectedParams = array(), $expectedKey, $shortContext = false, $longContext = false ) {
-               $message = $status->getMessage( $shortContext, $longContext );
+       public function testGetMessage( Status $status, $expectedParams = array(), $expectedKey ) {
+               $message = $status->getMessage();
                $this->assertInstanceOf( 'Message', $message );
-
-               // Loop through until we get to the appropriate depth for the message
-               $loops = $shortContext ? 1 : ( $longContext ? 2 : 0 );
-               for( $i = 1; $i <= $loops; $i++ ) {
-                       $params = $message->getParams();
-                       $this->assertInstanceOf( 'Message', $params[0] );
-                       $message = $params[0];
-               }
-
                $this->assertEquals( $expectedParams, $message->getParams() );
                $this->assertEquals( $expectedKey, $message->getKey() );
        }
@@ -392,7 +383,7 @@ class StatusTest extends MediaWikiLangTestCase {
        /**
         * @return array of arrays with values;
         *    0 => status object
-        *    1 => expected Message Params
+        *    1 => expected Message Params (with no context)
         */
        public static function provideGetMessage() {
                $testCases = array();
@@ -411,21 +402,6 @@ class StatusTest extends MediaWikiLangTestCase {
                        'internalerror_info'
                );
 
-               $testCases[ 'GoodButNoErrorShortContext' ] = array(
-                       $status,
-                       array( "Status::getMessage: Invalid result object: no error text but not OK\n" ),
-                       'internalerror_info',
-                       true
-               );
-
-               $testCases[ 'GoodButNoErrorLongContext' ] = array(
-                       $status,
-                       array( "Status::getMessage: Invalid result object: no error text but not OK\n" ),
-                       'internalerror_info',
-                       false,
-                       true
-               );
-
                $status = new Status();
                $status->warning( 'fooBar!' );
                $testCases[ '1StringWarning' ] = array(
@@ -462,33 +438,6 @@ class StatusTest extends MediaWikiLangTestCase {
 //                     "",
 //             );
 
-               $status = new Status();
-               $status->error( new Message( 'fooBar!', array( 'foo', 'bar' )  ) );
-               $testCases[ '1MessageError' ] = array(
-                       $status,
-                       array( 'foo', 'bar' ),
-                       "fooBar!",
-               );
-
-               $status = new Status();
-               $status->error( new Message( 'fooBar!', array( 'foo', 'bar' )  ) );
-               $testCases[ '1MessageErrorShortContext' ] = array(
-                       $status,
-                       array( 'foo', 'bar' ),
-                       "fooBar!",
-                       true,
-               );
-
-               $status = new Status();
-               $status->error( new Message( 'fooBar!', array( 'foo', 'bar' )  ) );
-               $testCases[ '1MessageErrorLongContext' ] = array(
-                       $status,
-                       array( 'foo', 'bar' ),
-                       "fooBar!",
-                       false,
-                       true,
-               );
-
                return $testCases;
        }
 
index 6cf658f..9b41a9c 100644 (file)
@@ -593,8 +593,6 @@ class WikiPageTest extends MediaWikiLangTestCase {
                }
 
                $page = $this->createPage( $title, $text, $model );
-               $hasLinks = wfGetDB( DB_SLAVE )->selectField( 'pagelinks', 1,
-                       array( 'pl_from' => $page->getId() ), __METHOD__ );
 
                $editInfo = $page->prepareContentForEdit( $page->getContent() );
 
index 8205029..86b4c35 100644 (file)
@@ -144,10 +144,7 @@ class XmlTest extends MediaWikiTestCase {
                $prevYear = $curYear - 1;
 
                $curMonth = intval( gmdate( 'n' ) );
-               $prevMonth = $curMonth - 1;
-               if ( $prevMonth == 0 ) {
-                       $prevMonth = 12;
-               }
+
                $nextMonth = $curMonth + 1;
                if ( $nextMonth == 13 ) {
                        $nextMonth = 1;
index 0a6607e..80c2fde 100644 (file)
@@ -391,7 +391,6 @@ class ApiEditPageTest extends ApiTestCase {
                $rpage->doEditContent( new WikitextContent( "#REDIRECT [[$name]]" ),
                        "testing 1", EDIT_NEW, false, self::$users['sysop']->user );
                $this->forceRevisionDate( $rpage, '20120101000000' );
-               $baseTime = $rpage->getRevision()->getTimestamp();
 
                // new edit to content
                $page->doEditContent( new WikitextContent( "Foo bar" ),
index e24c088..dc5db82 100644 (file)
@@ -32,8 +32,6 @@ class RunningStatTest extends MediaWikiTestCase {
                        return pow( $mean - $x, 2 );
                }, $this->points ) ) / ( count( $rstat ) - 1 );
                $stddev = sqrt( $variance );
-               $min = min( $this->points );
-               $max = max( $this->points );
 
                $this->assertEquals( count( $rstat ), count( $this->points ) );
                $this->assertEquals( $rstat->min, min( $this->points ) );
index aa78394..1670823 100644 (file)
@@ -74,8 +74,6 @@ class BagOStuffTest extends MediaWikiTestCase {
                $fork &= !$this->cache instanceof MultiWriteBagOStuff;
                if ( $fork ) {
                        // callback should take awhile now so that we can test concurrent merge attempts
-                       $usleep = 5000;
-
                        $pid = pcntl_fork();
                        if ( $pid == -1 ) {
                                // can't fork, ignore this test...
diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderModuleTest.php
new file mode 100644 (file)
index 0000000..b25e9b0
--- /dev/null
@@ -0,0 +1,73 @@
+<?php
+
+class ResourceLoaderModuleTest extends ResourceLoaderTestCase {
+
+       /**
+        * @covers ResourceLoaderModule::getDefinitionSummary
+        * @covers ResourceLoaderFileModule::getDefinitionSummary
+        */
+       public function testDefinitionSummary() {
+               $context = self::getResourceLoaderContext();
+
+               $baseParams = array(
+                       'scripts' => array( 'foo.js', 'bar.js' ),
+                       'dependencies' => array( 'jquery', 'mediawiki' ),
+                       'messages' => array( 'hello', 'world' ),
+               );
+
+               $module = new ResourceLoaderFileModule( $baseParams );
+
+               $jsonSummary = json_encode( $module->getDefinitionSummary( $context ) );
+
+               // Exactly the same
+               $module = new ResourceLoaderFileModule( $baseParams );
+
+               $this->assertEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Instance is insignificant'
+               );
+
+               // Re-order dependencies
+               $module = new ResourceLoaderFileModule( array(
+                       'dependencies' => array( 'mediawiki', 'jquery' ),
+               ) + $baseParams );
+
+               $this->assertEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Order of dependencies is insignificant'
+               );
+
+               // Re-order messages
+               $module = new ResourceLoaderFileModule( array(
+                       'messages' => array( 'world', 'hello' ),
+               ) + $baseParams );
+
+               $this->assertEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Order of messages is insignificant'
+               );
+
+               // Re-order scripts
+               $module = new ResourceLoaderFileModule( array(
+                       'scripts' => array( 'bar.js', 'foo.js' ),
+               ) + $baseParams );
+
+               $this->assertNotEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Order of scripts is significant'
+               );
+
+               // Subclass
+               $module = new ResourceLoaderFileModuleTestModule( $baseParams );
+
+               $this->assertNotEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Class is significant'
+               );
+       }
+}
diff --git a/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php b/tests/phpunit/includes/resourceloader/ResourceLoaderTest.php
new file mode 100644 (file)
index 0000000..ab0c8d9
--- /dev/null
@@ -0,0 +1,136 @@
+<?php
+
+class ResourceLoaderTest extends ResourceLoaderTestCase {
+
+       protected static $resourceLoaderRegisterModulesHook;
+
+       protected function setUp() {
+               parent::setUp();
+
+               // $wgResourceLoaderLESSFunctions, $wgResourceLoaderLESSImportPaths; $wgResourceLoaderLESSVars;
+
+               $this->setMwGlobals( array(
+                       'wgResourceLoaderLESSFunctions' => array(
+                               'test-sum' => function ( $frame, $less ) {
+                                       $sum = 0;
+                                       foreach ( $frame[2] as $arg ) {
+                                               $sum += (int)$arg[1];
+                                       }
+                                       return $sum;
+                               },
+                       ),
+                       'wgResourceLoaderLESSImportPaths' => array(
+                               dirname( dirname( __DIR__  ) ) . '/data/less/common',
+                       ),
+                       'wgResourceLoaderLESSVars' => array(
+                               'foo'  => '2px',
+                               'Foo' => '#eeeeee',
+                               'bar' => 5,
+                       ),
+               ) );
+       }
+
+       /* Hook Methods */
+
+       /**
+        * ResourceLoaderRegisterModules hook
+        */
+       public static function resourceLoaderRegisterModules( &$resourceLoader ) {
+               self::$resourceLoaderRegisterModulesHook = true;
+
+               return true;
+       }
+
+       /* Provider Methods */
+       public static function provideValidModules() {
+               return array(
+                       array( 'TEST.validModule1', new ResourceLoaderTestModule() ),
+               );
+       }
+
+       /* Test Methods */
+
+       /**
+        * Ensures that the ResourceLoaderRegisterModules hook is called when a new ResourceLoader object is constructed
+        * @covers ResourceLoader::__construct
+        */
+       public function testCreatingNewResourceLoaderCallsRegistrationHook() {
+               self::$resourceLoaderRegisterModulesHook = false;
+               $resourceLoader = new ResourceLoader();
+               $this->assertTrue( self::$resourceLoaderRegisterModulesHook );
+
+               return $resourceLoader;
+       }
+
+       /**
+        * @dataProvider provideValidModules
+        * @depends testCreatingNewResourceLoaderCallsRegistrationHook
+        * @covers ResourceLoader::register
+        * @covers ResourceLoader::getModule
+        */
+       public function testRegisteredValidModulesAreAccessible(
+               $name, ResourceLoaderModule $module, ResourceLoader $resourceLoader
+       ) {
+               $resourceLoader->register( $name, $module );
+               $this->assertEquals( $module, $resourceLoader->getModule( $name ) );
+       }
+
+       /**
+        * @covers ResourceLoaderFileModule::compileLessFile
+        */
+       public function testLessFileCompilation() {
+               $context = self::getResourceLoaderContext();
+               $basePath = __DIR__ . '/../../data/less/module';
+               $module = new ResourceLoaderFileModule( array(
+                       'localBasePath' => $basePath,
+                       'styles' => array( 'styles.less' ),
+               ) );
+               $styles = $module->getStyles( $context );
+               $this->assertStringEqualsFile( $basePath . '/styles.css', $styles['all'] );
+       }
+
+       /**
+        * @dataProvider providePackedModules
+        * @covers ResourceLoader::makePackedModulesString
+        */
+       public function testMakePackedModulesString( $desc, $modules, $packed ) {
+               $this->assertEquals( $packed, ResourceLoader::makePackedModulesString( $modules ), $desc );
+       }
+
+       /**
+        * @dataProvider providePackedModules
+        * @covers ResourceLoaderContext::expandModuleNames
+        */
+       public function testexpandModuleNames( $desc, $modules, $packed ) {
+               $this->assertEquals( $modules, ResourceLoaderContext::expandModuleNames( $packed ), $desc );
+       }
+
+       public static function providePackedModules() {
+               return array(
+                       array(
+                               'Example from makePackedModulesString doc comment',
+                               array( 'foo.bar', 'foo.baz', 'bar.baz', 'bar.quux' ),
+                               'foo.bar,baz|bar.baz,quux',
+                       ),
+                       array(
+                               'Example from expandModuleNames doc comment',
+                               array( 'jquery.foo', 'jquery.bar', 'jquery.ui.baz', 'jquery.ui.quux' ),
+                               'jquery.foo,bar|jquery.ui.baz,quux',
+                       ),
+                       array(
+                               'Regression fixed in r88706 with dotless names',
+                               array( 'foo', 'bar', 'baz' ),
+                               'foo,bar,baz',
+                       ),
+                       array(
+                               'Prefixless modules after a prefixed module',
+                               array( 'single.module', 'foobar', 'foobaz' ),
+                               'single.module|foobar,foobaz',
+                       ),
+               );
+       }
+}
+
+/* Hooks */
+global $wgHooks;
+$wgHooks['ResourceLoaderRegisterModules'][] = 'ResourceLoaderTest::resourceLoaderRegisterModules';
index 397c100..879d821 100644 (file)
@@ -224,9 +224,6 @@ class UploadFromUrlTest extends ApiTestCase {
 
                $this->deleteFile( 'UploadFromUrlTest.png' );
 
-               $talkRev = Revision::newFromTitle( $talk );
-               $talkSize = $talkRev->getSize();
-
                $exception = false;
                try {
                        $this->doApiRequest( array(
@@ -249,6 +246,9 @@ class UploadFromUrlTest extends ApiTestCase {
                return;
                /*
                // Broken until using leavemessage with ignorewarnings is supported
+               $talkRev = Revision::newFromTitle( $talk );
+               $talkSize = $talkRev->getSize();
+
                $job->run();
 
                $this->assertFalse( wfLocalFile( 'UploadFromUrlTest.png' )->exists() );
index 1a1bbaf..1eab5a3 100644 (file)
@@ -21,9 +21,6 @@ class UIDGeneratorTest extends MediaWikiTestCase {
                }
 
                $lastId = array_shift( $ids );
-               if ( $hostbits ) {
-                       $lastHost = substr( wfBaseConvert( $lastId, 10, 2, $bits ), -$hostbits );
-               }
 
                $this->assertArrayEquals( array_unique( $ids ), $ids, "All generated IDs are unique." );
 
index df00d4d..2393299 100644 (file)
@@ -22,6 +22,7 @@ class StructureTest extends MediaWikiTestCase {
                        'ApiQueryContinueTestBase',
                        'MediaWikiLangTestCase',
                        'MediaWikiTestCase',
+                       'ResourceLoaderTestCase',
                        'PHPUnit_Framework_TestCase',
                        'DumpTestCase',
                ) );