Merge "Browser should clear cache for API responses"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 5 Mar 2015 17:01:17 +0000 (17:01 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 5 Mar 2015 17:01:17 +0000 (17:01 +0000)
227 files changed:
StartProfiler.sample
autoload.php
composer.json
docs/extension.schema.json
includes/DefaultSettings.php
includes/GlobalFunctions.php
includes/Html.php
includes/HttpFunctions.php
includes/Import.php
includes/Linker.php
includes/MovePage.php
includes/OutputPage.php
includes/PrefixSearch.php
includes/Setup.php
includes/User.php
includes/UserRightsProxy.php
includes/actions/DeleteAction.php
includes/api/ApiQueryPrefixSearch.php
includes/api/i18n/cs.json
includes/api/i18n/ksh.json
includes/api/i18n/zh-hans.json
includes/db/Database.php
includes/db/LoadBalancer.php
includes/diff/DifferenceEngine.php
includes/externalstore/ExternalStoreHttp.php
includes/filerepo/FileRepo.php
includes/filerepo/ForeignAPIRepo.php
includes/filerepo/RepoGroup.php
includes/filerepo/file/File.php
includes/filerepo/file/LocalFile.php
includes/filerepo/file/OldLocalFile.php
includes/installer/Installer.php
includes/installer/i18n/zh-hant.json
includes/jobqueue/JobQueue.php
includes/jobqueue/JobQueueDB.php
includes/jobqueue/JobQueueFederated.php
includes/jobqueue/JobQueueGroup.php
includes/jobqueue/aggregator/JobQueueAggregator.php
includes/jobqueue/aggregator/JobQueueAggregatorRedis.php
includes/jobqueue/jobs/ThumbnailRenderJob.php
includes/libs/virtualrest/ParsoidVirtualRESTService.php
includes/parser/CacheTime.php
includes/parser/Parser.php
includes/parser/ParserCache.php
includes/parser/ParserOutput.php
includes/poolcounter/PoolWorkArticleView.php
includes/profiler/Profiler.php
includes/profiler/ProfilerXhprof.php
includes/profiler/output/ProfilerOutputDump.php [new file with mode: 0644]
includes/registration/ExtensionProcessor.php
includes/resourceloader/ResourceLoaderFilePageModule.php [deleted file]
includes/resourceloader/ResourceLoaderNoscriptModule.php [deleted file]
includes/resourceloader/ResourceLoaderSiteModule.php
includes/resourceloader/ResourceLoaderUserGroupsModule.php
includes/resourceloader/ResourceLoaderUserModule.php
includes/resourceloader/ResourceLoaderWikiModule.php
includes/site/MediaWikiSite.php
includes/specials/SpecialAllMessages.php
includes/specials/SpecialBlock.php
includes/specials/SpecialMergeHistory.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialNewimages.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUploadStash.php
includes/specials/SpecialUserrights.php
includes/upload/UploadFromUrl.php
languages/LanguageConverter.php
languages/i18n/af.json
languages/i18n/an.json
languages/i18n/ar.json
languages/i18n/arc.json
languages/i18n/as.json
languages/i18n/ast.json
languages/i18n/az.json
languages/i18n/azb.json
languages/i18n/ba.json
languages/i18n/bcl.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bgn.json
languages/i18n/bjn.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/ckb.json
languages/i18n/cs.json
languages/i18n/cy.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/frp.json
languages/i18n/frr.json
languages/i18n/ga.json
languages/i18n/gl.json
languages/i18n/gsw.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hr.json
languages/i18n/hsb.json
languages/i18n/hu.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/ig.json
languages/i18n/ilo.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jv.json
languages/i18n/ka.json
languages/i18n/kab.json
languages/i18n/kk-cyrl.json
languages/i18n/km.json
languages/i18n/kn.json
languages/i18n/ko.json
languages/i18n/krc.json
languages/i18n/ksh.json
languages/i18n/ku-latn.json
languages/i18n/ky.json
languages/i18n/la.json
languages/i18n/lad.json
languages/i18n/lb.json
languages/i18n/li.json
languages/i18n/lt.json
languages/i18n/lv.json
languages/i18n/mai.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/ms.json
languages/i18n/mt.json
languages/i18n/myv.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/oc.json
languages/i18n/or.json
languages/i18n/os.json
languages/i18n/pfl.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/pnb.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/qu.json
languages/i18n/rm.json
languages/i18n/ro.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/rue.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/sc.json
languages/i18n/scn.json
languages/i18n/sco.json
languages/i18n/sh.json
languages/i18n/si.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sq.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/su.json
languages/i18n/sv.json
languages/i18n/sw.json
languages/i18n/ta.json
languages/i18n/te.json
languages/i18n/tg-cyrl.json
languages/i18n/th.json
languages/i18n/tl.json
languages/i18n/tr.json
languages/i18n/ug-arab.json
languages/i18n/uk.json
languages/i18n/vec.json
languages/i18n/vep.json
languages/i18n/vi.json
languages/i18n/war.json
languages/i18n/yi.json
languages/i18n/yo.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesCkb.php
languages/messages/MessagesMhr.php
languages/messages/MessagesMin.php
maintenance/benchmarks/bench_HTTP_HTTPS.php
maintenance/findHooks.php
maintenance/importImages.inc
maintenance/importSiteScripts.php
maintenance/jsduck/config.json
resources/Resources.php
resources/lib/oojs-ui/i18n/kn.json
resources/lib/oojs-ui/oojs-ui-mediawiki.css
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/remove-destructive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/remove-destructive.svg
resources/src/mediawiki/images/help.png [new file with mode: 0644]
resources/src/mediawiki/mediawiki.helplink.css [new file with mode: 0644]
resources/src/mediawiki/mediawiki.user.js
tests/TestsAutoLoader.php
tests/phpunit/ResourceLoaderTestCase.php
tests/phpunit/includes/GlobalFunctions/GlobalTest.php
tests/phpunit/includes/HttpTest.php
tests/phpunit/includes/api/ApiLoginTest.php
tests/phpunit/includes/filebackend/FileBackendTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderWikiModuleTest.php

index 4721a9d..6681b87 100644 (file)
@@ -6,7 +6,7 @@
  *
  * For output, add:
  *  $wgProfiler['output'] = array( 'text' );
- *    'text' can be one (or more) of 'text' 'udp' or 'db'
+ *    'text' can be one (or more) of 'text' 'udp' 'db' or 'dump'
  *    'db' requires creating the profiling table, see patch-profiling.sql
  *
  * The 'text' output will be added to the output page in a comment approriate
@@ -18,6 +18,9 @@
  * The 'db' output expects a database table that can be created by applying
  * maintenance/archives/patch-profiling.sql to your database.
  *
+ * The 'dump' output expects a $wgProfiler['outputDir'] telling it where to
+ * write dump files. The files produced are compatible with the XHProf gui.
+ *
  * For a rudimentary sampling profiler:
  *   $wgProfiler['class'] = 'ProfilerXhprof';
  *   $wgProfiler['output'] = array( 'db' );
index 445d752..998deb9 100644 (file)
@@ -907,6 +907,7 @@ $wgAutoloadLocalClasses = array(
        'Profiler' => __DIR__ . '/includes/profiler/Profiler.php',
        'ProfilerOutput' => __DIR__ . '/includes/profiler/output/ProfilerOutput.php',
        'ProfilerOutputDb' => __DIR__ . '/includes/profiler/output/ProfilerOutputDb.php',
+       'ProfilerOutputDump' => __DIR__ . '/includes/profiler/output/ProfilerOutputDump.php',
        'ProfilerOutputText' => __DIR__ . '/includes/profiler/output/ProfilerOutputText.php',
        'ProfilerOutputUdp' => __DIR__ . '/includes/profiler/output/ProfilerOutputUdp.php',
        'ProfilerSectionOnly' => __DIR__ . '/includes/profiler/ProfilerSectionOnly.php',
@@ -977,14 +978,12 @@ $wgAutoloadLocalClasses = array(
        'ResourceLoaderContext' => __DIR__ . '/includes/resourceloader/ResourceLoaderContext.php',
        'ResourceLoaderEditToolbarModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderEditToolbarModule.php',
        'ResourceLoaderFileModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderFileModule.php',
-       'ResourceLoaderFilePageModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderFilePageModule.php',
        'ResourceLoaderFilePath' => __DIR__ . '/includes/resourceloader/ResourceLoaderFilePath.php',
        'ResourceLoaderImage' => __DIR__ . '/includes/resourceloader/ResourceLoaderImage.php',
        'ResourceLoaderImageModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderImageModule.php',
        'ResourceLoaderLanguageDataModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderLanguageDataModule.php',
        'ResourceLoaderLanguageNamesModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderLanguageNamesModule.php',
        'ResourceLoaderModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderModule.php',
-       'ResourceLoaderNoscriptModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderNoscriptModule.php',
        'ResourceLoaderSiteModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSiteModule.php',
        'ResourceLoaderSkinModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSkinModule.php',
        'ResourceLoaderStartUpModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderStartUpModule.php',
index 11520ef..9e32a0c 100644 (file)
@@ -19,7 +19,7 @@
                "cssjanus/cssjanus": "1.1.1",
                "ext-iconv": "*",
                "leafo/lessphp": "0.5.0",
-               "oojs/oojs-ui": "0.8.2",
+               "oojs/oojs-ui": "0.9.0",
                "php": ">=5.3.3",
                "psr/log": "1.0.0",
                "wikimedia/cdb": "1.0.1",
index e7b32de..dd35d05 100644 (file)
                "APIListModules": {
                        "type": "object"
                },
+               "ValidSkinNames": {
+                       "type": "object"
+               },
                "callback": {
                        "type": [
                                "array",
index fdb05fe..89cc1fd 100644 (file)
@@ -951,7 +951,8 @@ $wgExiv2Command = '/usr/bin/exiv2';
  * are passed as parameters after $srcPath, $dstPath, $width, $height
  */
 $wgSVGConverters = array(
-       'ImageMagick' => '$path/convert -background "#ffffff00" -thumbnail $widthx$height\! $input PNG:$output',
+       'ImageMagick' =>
+               '$path/convert -background "#ffffff00" -thumbnail $widthx$height\! $input PNG:$output',
        'sodipodi' => '$path/sodipodi -z -w $width -f $input -e $output',
        'inkscape' => '$path/inkscape -z -w $width -f $input -e $output',
        'batik' => 'java -Djava.awt.headless=true -jar $path/batik-rasterizer.jar -w $width -d '
@@ -3173,9 +3174,10 @@ $wgFooterIcons = array(
        ),
        "poweredby" => array(
                "mediawiki" => array(
-                       "src" => null, // Defaults to point at
-                                      // "$wgResourceBasePath/resources/assets/poweredby_mediawiki_88x31.png"
-                                      // plus srcset for 1.5x, 2x resolution variants.
+                       // Defaults to point at
+                       // "$wgResourceBasePath/resources/assets/poweredby_mediawiki_88x31.png"
+                       // plus srcset for 1.5x, 2x resolution variants.
+                       "src" => null,
                        "url" => "//www.mediawiki.org/",
                        "alt" => "Powered by MediaWiki",
                )
index 5232413..c0b8913 100644 (file)
@@ -2757,6 +2757,8 @@ function wfShellExecDisabled() {
  * @param array $options Array of options:
  *   - duplicateStderr: Set this to true to duplicate stderr to stdout,
  *     including errors from limit.sh
+ *   - profileMethod: By default this function will profile based on the calling
+ *     method. Set this to a string for an alternative method to profile from
  *
  * @return string Collected stdout as a string
  */
@@ -2775,6 +2777,7 @@ function wfShellExec( $cmd, &$retval = null, $environ = array(),
        }
 
        $includeStderr = isset( $options['duplicateStderr'] ) && $options['duplicateStderr'];
+       $profileMethod = isset( $options['profileMethod'] ) ? $options['profileMethod'] : wfGetCaller();
 
        wfInitShellLocale();
 
@@ -2848,6 +2851,7 @@ function wfShellExec( $cmd, &$retval = null, $environ = array(),
                $desc[3] = array( 'pipe', 'w' );
        }
        $pipes = null;
+       $scoped = Profiler::instance()->scopedProfileIn( __FUNCTION__ . '-' . $profileMethod );
        $proc = proc_open( $cmd, $desc, $pipes );
        if ( !$proc ) {
                wfDebugLog( 'exec', "proc_open() failed: $cmd" );
@@ -2999,7 +3003,8 @@ function wfShellExec( $cmd, &$retval = null, $environ = array(),
  * @return string Collected stdout and stderr as a string
  */
 function wfShellExecWithStderr( $cmd, &$retval = null, $environ = array(), $limits = array() ) {
-       return wfShellExec( $cmd, $retval, $environ, $limits, array( 'duplicateStderr' => true ) );
+       return wfShellExec( $cmd, $retval, $environ, $limits,
+               array( 'duplicateStderr' => true, 'profileMethod' => wfGetCaller() ) );
 }
 
 /**
@@ -3019,15 +3024,6 @@ function wfInitShellLocale() {
        }
 }
 
-/**
- * Alias to wfShellWikiCmd()
- *
- * @see wfShellWikiCmd()
- */
-function wfShellMaintenanceCmd( $script, array $parameters = array(), array $options = array() ) {
-       return wfShellWikiCmd( $script, $parameters, $options );
-}
-
 /**
  * Generate a shell-escaped command line string to run a MediaWiki cli script.
  * Note that $parameters should be a flat array and an option with an argument
@@ -3659,19 +3655,7 @@ function wfGetLBFactory() {
  * Shortcut for RepoGroup::singleton()->findFile()
  *
  * @param string $title String or Title object
- * @param array $options Associative array of options:
- *     time:           requested time for an archived image, or false for the
- *                     current version. An image object will be returned which was
- *                     created at the specified time.
- *
- *     ignoreRedirect: If true, do not follow file redirects
- *
- *     private:        If true, return restricted (deleted) files if the current
- *                     user is allowed to view them. Otherwise, such files will not
- *                     be found.
- *
- *     bypassCache:    If true, do not use the process-local cache of File objects
- *
+ * @param array $options Associative array of options (see RepoGroup::findFile)
  * @return File|bool File, or false if the file does not exist
  */
 function wfFindFile( $title, $options = array() ) {
@@ -4008,16 +3992,6 @@ function wfGetParserCacheStorage() {
        return ObjectCache::getInstance( $wgParserCacheType );
 }
 
-/**
- * Get the cache object used by the language converter
- *
- * @return BagOStuff
- */
-function wfGetLangConverterCacheStorage() {
-       global $wgLanguageConverterCacheType;
-       return ObjectCache::getInstance( $wgLanguageConverterCacheType );
-}
-
 /**
  * Call hook functions defined in $wgHooks
  *
index fe8f57e..bc5cde8 100644 (file)
@@ -159,7 +159,8 @@ class Html {
        }
 
        /**
-        * Returns an HTML link element in a string styled as a button (when $wgUseMediaWikiUIEverywhere is enabled).
+        * Returns an HTML link element in a string styled as a button
+        * (when $wgUseMediaWikiUIEverywhere is enabled).
         *
         * @param string $contents The raw HTML contents of the element: *not*
         *   escaped!
@@ -178,7 +179,8 @@ class Html {
        }
 
        /**
-        * Returns an HTML link element in a string styled as a button (when $wgUseMediaWikiUIEverywhere is enabled).
+        * Returns an HTML link element in a string styled as a button
+        * (when $wgUseMediaWikiUIEverywhere is enabled).
         *
         * @param string $contents The raw HTML contents of the element: *not*
         *   escaped!
index 3728cdf..36e06b5 100644 (file)
@@ -55,9 +55,10 @@ class Http {
         *                                  to avoid attacks on intranet services accessible by HTTP.
         *    - userAgent           A user agent, if you want to override the default
         *                          MediaWiki/$wgVersion
+        * @param string $caller The method making this request, for profiling
         * @return string|bool (bool)false on failure or a string on success
         */
-       public static function request( $method, $url, $options = array() ) {
+       public static function request( $method, $url, $options = array(), $caller = __METHOD__ ) {
                wfDebug( "HTTP: $method: $url\n" );
 
                $options['method'] = strtoupper( $method );
@@ -69,7 +70,7 @@ class Http {
                        $options['connectTimeout'] = 'default';
                }
 
-               $req = MWHttpRequest::factory( $url, $options );
+               $req = MWHttpRequest::factory( $url, $options, $caller );
                $status = $req->execute();
 
                $content = false;
@@ -87,18 +88,21 @@ class Http {
         *
         * @param string $url
         * @param array $options
+        * @param string $caller The method making this request, for profiling
         * @return string
         */
-       public static function get( $url, $options = array() ) {
+       public static function get( $url, $options = array(), $caller = __METHOD__ ) {
                $args = func_get_args();
                if ( isset( $args[1] ) && ( is_string( $args[1] ) || is_numeric( $args[1] ) ) ) {
                        // Second was used to be the timeout
                        // And third parameter used to be $options
                        wfWarn( "Second parameter should not be a timeout." );
-                       $options = isset( $args[2] ) ? $args[2] : array();
+                       $options = isset( $args[2] ) && is_array( $args[2] ) ?
+                               $args[2] : array();
                        $options['timeout'] = $args[1];
+                       $caller = __METHOD__;
                }
-               return Http::request( 'GET', $url, $options );
+               return Http::request( 'GET', $url, $options, $caller );
        }
 
        /**
@@ -107,10 +111,11 @@ class Http {
         *
         * @param string $url
         * @param array $options
+        * @param string $caller The method making this request, for profiling
         * @return string
         */
-       public static function post( $url, $options = array() ) {
-               return Http::request( 'POST', $url, $options );
+       public static function post( $url, $options = array(), $caller = __METHOD__ ) {
+               return Http::request( 'POST', $url, $options, $caller );
        }
 
        /**
@@ -224,11 +229,23 @@ class MWHttpRequest {
 
        public $status;
 
+       /**
+        * @var Profiler
+        */
+       protected $profiler;
+
+       /**
+        * @var string
+        */
+       protected $profileName;
+
        /**
         * @param string $url Url to use. If protocol-relative, will be expanded to an http:// URL
         * @param array $options (optional) extra params to pass (see Http::request())
+        * @param string $caller The method making this request, for profiling
+        * @param Profiler $profiler An instance of the profiler for profiling, or null
         */
-       protected function __construct( $url, $options = array() ) {
+       protected function __construct( $url, $options = array(), $caller = __METHOD__, $profiler = null ) {
                global $wgHTTPTimeout, $wgHTTPConnectTimeout;
 
                $this->url = wfExpandUrl( $url, PROTO_HTTP );
@@ -271,6 +288,10 @@ class MWHttpRequest {
                if ( $this->noProxy ) {
                        $this->proxy = ''; // noProxy takes precedence
                }
+
+               // Profile based on what's calling us
+               $this->profiler = $profiler;
+               $this->profileName = $caller;
        }
 
        /**
@@ -286,11 +307,12 @@ class MWHttpRequest {
         * Generate a new request object
         * @param string $url Url to use
         * @param array $options (optional) extra params to pass (see Http::request())
+        * @param string $caller The method making this request, for profiling
         * @throws MWException
         * @return CurlHttpRequest|PhpHttpRequest
         * @see MWHttpRequest::__construct
         */
-       public static function factory( $url, $options = null ) {
+       public static function factory( $url, $options = null, $caller = __METHOD__ ) {
                if ( !Http::$httpEngine ) {
                        Http::$httpEngine = function_exists( 'curl_init' ) ? 'curl' : 'php';
                } elseif ( Http::$httpEngine == 'curl' && !function_exists( 'curl_init' ) ) {
@@ -300,7 +322,7 @@ class MWHttpRequest {
 
                switch ( Http::$httpEngine ) {
                        case 'curl':
-                               return new CurlHttpRequest( $url, $options );
+                               return new CurlHttpRequest( $url, $options, $caller, Profiler::instance() );
                        case 'php':
                                if ( !wfIniGetBool( 'allow_url_fopen' ) ) {
                                        throw new MWException( __METHOD__ . ': allow_url_fopen ' .
@@ -309,7 +331,7 @@ class MWHttpRequest {
                                                'http://php.net/curl.'
                                        );
                                }
-                               return new PhpHttpRequest( $url, $options );
+                               return new PhpHttpRequest( $url, $options, $caller, Profiler::instance() );
                        default:
                                throw new MWException( __METHOD__ . ': The setting of Http::$httpEngine is not valid.' );
                }
@@ -780,6 +802,12 @@ class CurlHttpRequest extends MWHttpRequest {
                        wfRestoreWarnings();
                }
 
+               if ( $this->profiler ) {
+                       $profileSection = $this->profiler->scopedProfileIn(
+                               __METHOD__ . '-' . $this->profileName
+                       );
+               }
+
                $curlRes = curl_exec( $curlHandle );
                if ( curl_errno( $curlHandle ) == CURLE_OPERATION_TIMEOUTED ) {
                        $this->status->fatal( 'http-timed-out', $this->url );
@@ -791,6 +819,10 @@ class CurlHttpRequest extends MWHttpRequest {
 
                curl_close( $curlHandle );
 
+               if ( $this->profiler ) {
+                       $this->profiler->scopedProfileOut( $profileSection );
+               }
+
                $this->parseHeader();
                $this->setStatus();
 
@@ -899,6 +931,11 @@ class PhpHttpRequest extends MWHttpRequest {
 
                $result = array();
 
+               if ( $this->profiler ) {
+                       $profileSection = $this->profiler->scopedProfileIn(
+                               __METHOD__ . '-' . $this->profileName
+                       );
+               }
                do {
                        $reqCount++;
                        wfSuppressWarnings();
@@ -929,6 +966,9 @@ class PhpHttpRequest extends MWHttpRequest {
                                break;
                        }
                } while ( true );
+               if ( $this->profiler ) {
+                       $this->profiler->scopedProfileOut( $profileSection );
+               }
 
                $this->setStatus();
 
index c036fbe..3ba4306 100644 (file)
@@ -1741,7 +1741,7 @@ class WikiRevision {
 
                // @todo FIXME!
                $src = $this->getSrc();
-               $data = Http::get( $src );
+               $data = Http::get( $src, array(), __METHOD__ );
                if ( !$data ) {
                        wfDebug( "IMPORT: couldn't fetch source $src\n" );
                        fclose( $f );
@@ -1898,7 +1898,7 @@ class ImportStreamSource implements ImportSource {
                # quicker and sorts out user-agent problems which might
                # otherwise prevent importing from large sites, such
                # as the Wikimedia cluster, etc.
-               $data = Http::request( $method, $url, array( 'followRedirects' => true ) );
+               $data = Http::request( $method, $url, array( 'followRedirects' => true ), __METHOD__ );
                if ( $data !== false ) {
                        $file = tmpfile();
                        fwrite( $file, $data );
index 5a05bd4..a9c26c6 100644 (file)
@@ -1388,7 +1388,9 @@ class Linker {
         *
         * @return string
         */
-       public static function formatLinksInComment( $comment, $title = null, $local = false, $wikiId = null ) {
+       public static function formatLinksInComment(
+               $comment, $title = null, $local = false, $wikiId = null
+       ) {
                return preg_replace_callback(
                        '/
                                \[\[
index 065e189..01c25d3 100644 (file)
@@ -370,7 +370,10 @@ class MovePage {
 
                $dbw->commit( __METHOD__ );
 
-               Hooks::run( 'TitleMoveComplete', array( &$this->oldTitle, &$this->newTitle, &$user, $pageid, $redirid, $reason ) );
+               Hooks::run(
+                       'TitleMoveComplete',
+                       array( &$this->oldTitle, &$this->newTitle, &$user, $pageid, $redirid, $reason )
+               );
                return Status::newGood();
        }
 
index 5c146e4..33483eb 100644 (file)
@@ -196,12 +196,6 @@ class OutputPage extends ContextSource {
 
        // Parser related.
 
-       /**
-        * @var int
-        * @todo Unused?
-        */
-       private $mContainsOldMagic = 0;
-
        /** @var int */
        protected $mContainsNewMagic = 0;
 
@@ -1379,7 +1373,8 @@ class OutputPage extends ContextSource {
        }
 
        /**
-        * Add an array of indicators, with their identifiers as array keys and HTML contents as values.
+        * Add an array of indicators, with their identifiers as array
+        * keys and HTML contents as values.
         *
         * In case of duplicate keys, existing values are overwritten.
         *
@@ -1404,6 +1399,34 @@ class OutputPage extends ContextSource {
                return $this->mIndicators;
        }
 
+       /**
+        * Adds help link with an icon via page indicators.
+        * @param string $to
+        * @param bool $overrideBaseUrl
+        * @since 1.25
+        */
+       public function addHelpLink( $to, $overrideBaseUrl = false ) {
+               $this->addModules( 'mediawiki.helplink' );
+               $text = wfMessage( 'helppage-top-gethelp' )->escaped();
+
+               if ( $overrideBaseUrl ) {
+                       $helpUrl = $to;
+               } else {
+                       $helpUrl = "//www.mediawiki.org/wiki/Special:MyLanguage/$to";
+               }
+               $link = Html::rawElement(
+                       'a',
+                       array(
+                               'href' => $helpUrl,
+                               'target' => '_blank',
+                               'class' => 'mw-helplink',
+                       ),
+                       $text
+               );
+
+               $this->setIndicators( array( 'mw-helplink' => $link ) );
+       }
+
        /**
         * Do not allow scripts which can be modified by wiki users to load on this page;
         * only allow scripts bundled with, or generated by, the software.
index 2885679..55a4f49 100644 (file)
@@ -155,7 +155,10 @@ abstract class PrefixSearch {
                        }
                }
                $srchres = array();
-               if ( Hooks::run( 'PrefixSearchBackend', array( $namespaces, $search, $limit, &$srchres, $offset ) ) ) {
+               if ( Hooks::run(
+                       'PrefixSearchBackend',
+                       array( $namespaces, $search, $limit, &$srchres, $offset )
+               ) ) {
                        return $this->titles( $this->defaultSearchBackend( $namespaces, $search, $limit, $offset ) );
                }
                return $this->strings( $this->handleResultFromHook( $srchres, $namespaces, $search, $limit ) );
index 6939f95..7c0c7c4 100644 (file)
@@ -573,7 +573,6 @@ $ps_memcached = Profiler::instance()->scopedProfileIn( $fname . '-memcached' );
 $wgMemc = wfGetMainCache();
 $messageMemc = wfGetMessageCacheStorage();
 $parserMemc = wfGetParserCacheStorage();
-$wgLangConvMemc = wfGetLangConverterCacheStorage();
 
 wfDebugLog( 'caches', 'main: ' . get_class( $wgMemc ) .
        ', message: ' . get_class( $messageMemc ) .
index 03ac4fd..a4f6b77 100644 (file)
@@ -3375,7 +3375,9 @@ class User implements IDBAccessObject {
         * @param WebRequest|null $request WebRequest object to use; $wgRequest will be used if null
         *        is passed.
         */
-       protected function setCookie( $name, $value, $exp = 0, $secure = null, $params = array(), $request = null ) {
+       protected function setCookie(
+               $name, $value, $exp = 0, $secure = null, $params = array(), $request = null
+       ) {
                if ( $request === null ) {
                        $request = $this->getRequest();
                }
index 3be5847..1b9e4b6 100644 (file)
@@ -114,7 +114,8 @@ class UserRightsProxy {
         */
        private static function newFromLookup( $database, $field, $value, $ignoreInvalidDB = false ) {
                global $wgSharedDB, $wgSharedTables;
-               // If the user table is shared, perform the user query on it, but don't pass it to the UserRightsProxy,
+               // If the user table is shared, perform the user query on it,
+               // but don't pass it to the UserRightsProxy,
                // as user rights are normally not shared.
                if ( $wgSharedDB && in_array( 'user', $wgSharedTables ) ) {
                        $userdb = self::getDB( $wgSharedDB, $ignoreInvalidDB );
index 12f0dff..82424eb 100644 (file)
@@ -41,13 +41,14 @@ class DeleteAction extends FormlessAction {
        }
 
        public function show() {
+               $out = $this->getOutput();
                if ( $this->getContext()->getConfig()->get( 'UseMediaWikiUIEverywhere' ) ) {
-                       $out = $this->getOutput();
                        $out->addModuleStyles( array(
                                'mediawiki.ui.input',
                                'mediawiki.ui.checkbox',
                        ) );
                }
+               $out->addHelpLink( 'Help:Sysop deleting and undeleting' );
                $this->page->delete();
        }
 }
index 069e30b..7a31c48 100644 (file)
@@ -48,6 +48,10 @@ class ApiQueryPrefixSearch extends ApiQueryGeneratorBase {
                $searcher = new TitlePrefixSearch;
                $titles = $searcher->searchWithVariants( $search, $limit + 1, $namespaces, $offset );
                if ( $resultPageSet ) {
+                       if ( count( $titles ) > $limit ) {
+                               $this->setContinueEnumParameter( 'offset', $offset + $params['limit'] );
+                               array_pop( $titles );
+                       }
                        $resultPageSet->populateFromTitles( $titles );
                        foreach ( $titles as $index => $title ) {
                                $resultPageSet->setGeneratorData( $title, array( 'index' => $index + $offset + 1 ) );
index edc6ad0..059eb82 100644 (file)
@@ -8,25 +8,25 @@
                        "Cvanca"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentation]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailing list]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API Announcements]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bugs & requests]\n</div>\n<strong>Status:</strong> Všechny funkce zobrazené na této stránce by měly fungovat, ale API rozhraní se stále aktivně vyvíjí a může se kdykoliv změnit. Upozornění na změny získáte přihlášením k [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce mailing list].\n\n<strong>Chybné požadavky:</strong> Pokud jsou do API zaslány chybné požadavky, vrátí se HTTP hlavička s klíčem \"MediaWiki-API-Error\" a hodnota této hlavičky a chybový kód se nastaví na stejnou hodnotu. Více informací najdete na [[mw:API:Errors_and_warnings|API: Errors and warnings]].",
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Dokumentace]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api E-mailová konference]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Oznámení k API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Chyby a požadavky]\n</div>\n<strong>Stav:</strong> Všechny funkce uvedené na této stránce by měly fungovat, ale API se stále aktivně vyvíjí a může se kdykoli změnit. Upozornění na změny získáte přihlášením se k [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ e-mailové konferenci mediawiki-api-announce].\n\n<strong>Chybné požadavky:</strong> Pokud jsou do API zaslány chybné požadavky, bude vrácena HTTP hlavička s klíčem „MediaWiki-API-Error“ a hodnota této hlavičky a chybový kód budou nastaveny na stejnou hodnotu. Více informací najdete [[mw:API:Errors_and_warnings|v dokumentaci]].",
        "apihelp-main-param-action": "Jaká akce se má provést.",
        "apihelp-main-param-format": "Formát výstupu.",
-       "apihelp-main-param-maxlag": "Maximální zpoždění lze použít, když je MediaWiki nainstalováno na cluster s replikovanou databází. Abyste se vyhnuli zhoršování už tak špatného replikačního zpoždění, můžete tímto parametrem nechat klienta čekat, dokud replikační zpoždění neklesne pod uvedenou hodnotu. V případě příliš vysokého zpoždění se vrátí chybový kód „maxlag“ s hlášením typu „Waiting for $host: $lag seconds lagged“.<br />Více informací najdete v [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Maxlag_parameter příručce].",
+       "apihelp-main-param-maxlag": "Maximální zpoždění lze použít, když je MediaWiki nainstalováno na cluster s replikovanou databází. Abyste se vyhnuli zhoršování už tak špatného replikačního zpoždění, můžete tímto parametrem nechat klienta čekat, dokud replikační zpoždění neklesne pod uvedenou hodnotu. V případě příliš vysokého zpoždění se vrátí chybový kód „<samp>maxlag</samp>“ s hlášením typu „<samp>Waiting for $host: $lag seconds lagged</samp>“.<br />Více informací najdete v [[mw:Manual:Maxlag_parameter|příručce]].",
        "apihelp-main-param-smaxage": "Nastaví hlavičku <code>s-maxage</code> na uvedený počet sekund. Chyby se nekešují nikdy.",
        "apihelp-main-param-maxage": "Nastaví hlavičku <code>max-age</code> na uvedený počet sekund. Chyby se nekešují nikdy.",
-       "apihelp-main-param-assert": "Ověřit, zda je uživatel přihlášen s nastavením <kbd>user</kbd>, nebo zda má uživatelské oprávnění bot s <kbd>bot</kbd>.",
+       "apihelp-main-param-assert": "Pokud je nastaveno na „<kbd>user</kbd>“, ověří, že je uživatel přihlášen, pokud je nastaveno na „<kbd>bot</kbd>“, ověří, že má oprávnění „bot“.",
        "apihelp-main-param-requestid": "Libovolná zde uvedená hodnota bude zahrnuta v odpovědi. Lze použít pro rozlišení požadavků.",
        "apihelp-main-param-servedby": "Zahrnout do odpovědi název hostitele, který požadavek obsloužil.",
        "apihelp-main-param-curtimestamp": "Zahrnout do odpovědi aktuální časové razítko.",
        "apihelp-main-param-origin": "Pokud k API přistupujete pomocí mezidoménového AJAXového požadavku (CORS), nastavte tento parametr na doménu původu. Musí být součástí všech předběžných požadavků, takže musí být součástí URI požadavku (nikoli těla POSTu). Hodnota musí přesně odpovídat jednomu z původů v hlavičce Origin:, takže musí být nastavena na něco jako http://en.wikipedia.org nebo https://meta.wikimedia.org. Pokud parametr neodpovídá hlavičce Origin:, bude vrácena odpověď 403. Pokud parametr odpovídá hlavičce Origin: a tento původ je na bílé listině, bude nastavena hlavička Access-Control-Allow-Origin.",
-       "apihelp-main-param-uselang": "Jazyk, který se má použít pro překlad hlášení. Seznam kódů lze načíst z [[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]] se siprop=languages nebo uveďte „user“ pro použití předvoleného jazyka aktuálního uživatele či „content“ pro použití jazyka obsahu této wiki.",
+       "apihelp-main-param-uselang": "Jazyk, který se má použít pro překlad hlášení. Seznam kódů lze načíst z <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> se <kbd>siprop=languages</kbd>, nebo zadejte „<kbd>user</kbd>“ pro použití předvoleného jazyka aktuálního uživatele či „<kbd>content</kbd>“ pro použití jazyka obsahu této wiki.",
        "apihelp-block-description": "Zablokovat uživatele.",
        "apihelp-block-param-user": "Uživatelské jméno, IP adresa nebo rozsah IP adres, které chcete zablokovat.",
        "apihelp-block-param-reason": "Důvod bloku.",
        "apihelp-block-param-anononly": "Zablokovat pouze anonymní uživatele (tj. zakázat editovat anonymně z této IP).",
        "apihelp-block-param-nocreate": "Nedovolit registraci nových uživatelů.",
-       "apihelp-block-param-noemail": "Zakázat uživateli posílat e-maily prostřednictvím wiki. (Vyžaduje oprávnění „blockemail“.)",
-       "apihelp-block-param-hidename": "Skrýt uživatelské jméno v knize zablokování. (Vyžaduje oprávnění „hideuser“.)",
+       "apihelp-block-param-noemail": "Zakázat uživateli posílat e-maily prostřednictvím wiki. (Vyžaduje oprávnění „<code>blockemail</code>“.)",
+       "apihelp-block-param-hidename": "Skrýt uživatelské jméno v knize zablokování. (Vyžaduje oprávnění <code>hideuser</code>.)",
        "apihelp-block-param-allowusertalk": "Povolit uživateli editovat svou vlastní diskusní stránku (závisí na <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-reblock": "Pokud již uživatel blokován je, přepsat současný blok.",
        "apihelp-block-param-watchuser": "Sledovat stránku uživatele nebo IP adresy a jejich diskuzní stránky.",
        "apihelp-createaccount-description": "Vytvořit nový uživatelský účet.",
        "apihelp-createaccount-param-name": "Uživatelské jméno.",
        "apihelp-createaccount-param-password": "Heslo (ignorováno, pokud je nastaveno <var>$1mailpassword</var>).",
+       "apihelp-createaccount-param-domain": "Doména pro externí ověření (volitelné).",
        "apihelp-createaccount-param-email": "E-mailová adresa uživatele (nepovinné).",
        "apihelp-createaccount-param-realname": "Skutečné jméno uživatele (nepovinné).",
        "apihelp-createaccount-param-mailpassword": "Pokud je nastaveno na libovolnou hodnotu, zašle se náhodně vygenerované heslo na e-mail uživatele.",
+       "apihelp-createaccount-param-reason": "Případný důvod pro vytvoření účtu, který se zaznamená do logu.",
        "apihelp-createaccount-param-language": "Kód jazyka, který se má uživateli nastavit jako výchozí (volitelné, výchozí je jazyk obsahu).",
+       "apihelp-createaccount-example-pass": "Vytvořit uživatele <kbd>testuser</kbd> s heslem <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "Vytvořit uživatele <kbd>testmailuser</kbd> a zaslat mu e-mail s náhodně vygenerovaným heslem.",
        "apihelp-delete-description": "Smazat stránku.",
+       "apihelp-delete-param-title": "Název stránky, která se má smazat. Není možné použít společně s <var>$1pageid</var>.",
+       "apihelp-delete-param-pageid": "ID stránky, která se má smazat. Není možné použít společně s <var>$1title</var>.",
+       "apihelp-delete-param-watch": "Přidat stránku na seznam sledovaných.",
        "apihelp-delete-example-simple": "Smazat stránku <kbd>Main Page</kbd>.",
        "apihelp-disabled-description": "Tento modul byl deaktivován.",
        "apihelp-edit-description": "Vytvářet a upravovat stránky.",
@@ -59,8 +65,8 @@
        "apihelp-edit-param-bot": "Označit tuto editaci jako editaci bota.",
        "apihelp-edit-param-createonly": "Needitovat stránku, pokud již existuje.",
        "apihelp-edit-param-nocreate": "Pokud stránka neexistuje, vrátit chybu.",
-       "apihelp-edit-param-watch": "Přidat stránku na váš seznam sledovaných stránek.",
-       "apihelp-edit-param-unwatch": "Odstranit stránku z vašeho seznamu sledovaných stránek.",
+       "apihelp-edit-param-watch": "Přidat stránku na seznam sledovaných.",
+       "apihelp-edit-param-unwatch": "Odstranit stránku ze seznamu sledovaných.",
        "apihelp-edit-param-watchlist": "Bezpodmíněnečně přidat nebo odstranit stránku ze sledovaných stránek aktuálního uživatele, použít nastavení nebo neměnit sledování.",
        "apihelp-edit-param-redirect": "Automaticky opravit přesměrování.",
        "apihelp-edit-example-edit": "Upravit stránku.",
index 41f73b1..ff16616 100644 (file)
        "apihelp-emailuser-example-email": "Donn en <i lang=\"en\" xml:lang=\"en\">e-mail</i> aan dä Metmaacher <kbd lang=\"en\" xml:lang=\"en\">WikiSysop</kbd> schecke mem Täx <kbd>Dä Enhalld</kbd> dren.",
        "apihelp-expandtemplates-description": "Deiht alle Schablohne en Wikkitäx ömsäze.",
        "apihelp-expandtemplates-param-title": "De Övverschreff vun dä Sigg.",
+       "apihelp-filerevert-param-comment": "Aanmärkong huh lahde.",
+       "apihelp-help-example-recursive": "Alle Hölp en eine Sigg.",
+       "apihelp-help-example-help": "Alle Hölp övver de Hölp säälver.",
+       "apihelp-imagerotate-description": "Ein udder mieh Bellder driehje.",
+       "apihelp-imagerotate-param-rotation": "Öm wi vill Jrahd sulle de Bellder noh de Uhr drieh wääde?",
+       "apihelp-imagerotate-example-simple": "Drieh de <kbd>Dattei:Beijschpell.png</kbd> öm <kbd>90</kbd> Jrahd.",
+       "apihelp-imagerotate-example-generator": "Drieh alle Bellder en dä <kbd>Saachjropp:Ömdriehje</kbd> öm <kbd>180</kbd> Jrahd.",
+       "apihelp-login-param-name": "Metmaacher_Nahme.",
+       "apihelp-login-param-password": "Paßwoot.",
+       "apihelp-login-param-domain": "De Domaijn (kann fott bliehve)",
+       "apihelp-login-example-login": "Enlogge.",
        "apihelp-query+allmessages-param-prop": "Wat för en Eijeschaffte holle.",
        "apihelp-query+allmessages-param-filter": "Jiv blohß de Täxte un Nohreesche uß, woh heh dat Täxschtöck dren änthallde es.",
        "apihelp-query+allmessages-param-customised": "Jiv bloß de Täxte un Nohreesche en heh däm Zohschtand uß.",
index fe41252..06c4935 100644 (file)
        "apihelp-query+info-paramvalue-prop-watched": "列出每个页面的被监视状态。",
        "apihelp-query+info-paramvalue-prop-watchers": "监视人员数,如果允许。",
        "apihelp-query+info-paramvalue-prop-readable": "用户是否可以阅读此页面。",
+       "apihelp-query+info-param-testactions": "测试当前用户是否可以在页面上执行某种操作。",
        "apihelp-query+info-param-token": "请改用[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]。",
        "apihelp-query+info-example-simple": "获得有关页面<kbd>Main Page</kbd>的信息。",
        "apihelp-query+info-example-protection": "获取<kbd>首页</kbd>相关的常规和保护信息。",
index 1a7a97d..b3c81f9 100644 (file)
@@ -817,10 +817,6 @@ abstract class DatabaseBase implements IDatabase {
                if ( $user ) {
                        $this->open( $server, $user, $password, $dbName );
                }
-
-               $isMaster = !is_null( $this->getLBInfo( 'master' ) );
-               $trxProf = $this->getTransactionProfiler();
-               $trxProf->recordConnection( $this->mServer, $this->mDBname, $isMaster );
        }
 
        /**
index 917d703..dd95844 100644 (file)
@@ -756,6 +756,10 @@ class LoadBalancer {
                        $db = $e->db;
                }
 
+               $isMaster = !empty( $server['master'] );
+               $trxProf = Profiler::instance()->getTransactionProfiler();
+               $trxProf->recordConnection( $server['host'], $server['dbname'], $isMaster );
+
                $db->setLBInfo( $server );
                if ( isset( $server['fakeSlaveLag'] ) ) {
                        $db->setFakeSlaveLag( $server['fakeSlaveLag'] );
index a0e1a96..77bbd36 100644 (file)
@@ -550,7 +550,7 @@ class DifferenceEngine extends ContextSource {
                $out = $this->getOutput();
                $revHeader = $this->getRevisionHeader( $this->mNewRev );
                # Add "current version as of X" title
-               $out->addHTML( "<hr class='diff-hr' />
+               $out->addHTML( "<hr class='diff-hr' id='mw-oldid' />
                <h2 class='diff-currentversion-title'>{$revHeader}</h2>\n" );
                # Page content may be handled by a hooked call instead...
                # @codingStandardsIgnoreStart Ignoring long lines.
index 345c17b..00030d8 100644 (file)
@@ -31,7 +31,7 @@ class ExternalStoreHttp extends ExternalStoreMedium {
         * @see ExternalStoreMedium::fetchFromURL()
         */
        public function fetchFromURL( $url ) {
-               return Http::get( $url );
+               return Http::get( $url, array(), __METHOD__ );
        }
 
        /**
index d1a16b5..01495a4 100644 (file)
@@ -406,6 +406,7 @@ class FileRepo {
         *   private:        If true, return restricted (deleted) files if the current
         *                   user is allowed to view them. Otherwise, such files will not
         *                   be found. If a User object, use that user instead of the current.
+        *   bypassCache:    If true, do not use the process/persistent cache of File objects
         * @return File|bool False on failure
         */
        public function findFile( $title, $options = array() ) {
@@ -414,17 +415,20 @@ class FileRepo {
                        return false;
                }
                $time = isset( $options['time'] ) ? $options['time'] : false;
+               $flags = !empty( $options['bypassCache'] ) ? File::READ_LATEST : 0;
                # First try the current version of the file to see if it precedes the timestamp
                $img = $this->newFile( $title );
                if ( !$img ) {
                        return false;
                }
+               $img->load( $flags );
                if ( $img->exists() && ( !$time || $img->getTimestamp() == $time ) ) {
                        return $img;
                }
                # Now try an old version of the file
                if ( $time !== false ) {
                        $img = $this->newFile( $title, $time );
+                       $img->load( $flags );
                        if ( $img && $img->exists() ) {
                                if ( !$img->isDeleted( File::DELETED_FILE ) ) {
                                        return $img; // always OK
@@ -445,6 +449,7 @@ class FileRepo {
                $redir = $this->checkRedirect( $title );
                if ( $redir && $title->getNamespace() == NS_FILE ) {
                        $img = $this->newFile( $redir );
+                       $img->load( $flags );
                        if ( !$img ) {
                                return false;
                        }
index 6924f0a..7ead968 100644 (file)
@@ -514,7 +514,7 @@ class ForeignAPIRepo extends FileRepo {
                        $options['timeout'] = 'default';
                }
 
-               $req = MWHttpRequest::factory( $url, $options );
+               $req = MWHttpRequest::factory( $url, $options, __METHOD__ );
                $req->setUserAgent( ForeignAPIRepo::getUserAgent() );
                $status = $req->execute();
 
index fab4216..6ac00de 100644 (file)
@@ -114,7 +114,7 @@ class RepoGroup {
         *   private:        If true, return restricted (deleted) files if the current
         *                   user is allowed to view them. Otherwise, such files will not
         *                   be found.
-        *   bypassCache:    If true, do not use the process-local cache of File objects
+        *   bypassCache:    If true, do not use the process/persistent cache of File objects
         * @return File|bool False if title is not found
         */
        function findFile( $title, $options = array() ) {
index 6ca61b2..4fd332b 100644 (file)
@@ -47,7 +47,7 @@
  *
  * @ingroup FileAbstraction
  */
-abstract class File {
+abstract class File implements IDBAccessObject {
        // Bitfield values akin to the Revision deletion constants
        const DELETED_FILE = 1;
        const DELETED_COMMENT = 2;
@@ -836,6 +836,18 @@ abstract class File {
                return false;
        }
 
+       /**
+        * Load any lazy-loaded file object fields from source
+        *
+        * This is only useful when setting $flags
+        *
+        * Overridden by LocalFile to actually query the DB
+        *
+        * @param integer $flags Bitfield of File::READ_* constants
+        */
+       public function load( $flags = 0 ) {
+       }
+
        /**
         * Returns true if file exists in the repository.
         *
@@ -2008,7 +2020,7 @@ abstract class File {
                                wfDebug( "miss\n" );
                        }
                        wfDebug( "Fetching shared description from $renderUrl\n" );
-                       $res = Http::get( $renderUrl );
+                       $res = Http::get( $renderUrl, array(), __METHOD__ );
                        if ( $res && $this->repo->descriptionCacheExpiry > 0 ) {
                                $wgMemc->set( $key, $res, $this->repo->descriptionCacheExpiry );
                        }
index 699c915..3056ad8 100644 (file)
@@ -127,8 +127,8 @@ class LocalFile extends File {
        /** @var int UNIX timestamp of last markVolatile() call */
        private $lastMarkedVolatile = 0;
 
-       const LOAD_ALL = 1; // integer; load all the lazy fields too (like metadata)
-       const LOAD_VIA_SLAVE = 2; // integer; use a slave to load the data
+       // @note: higher than IDBAccessObject constants
+       const LOAD_ALL = 16; // integer; load all the lazy fields too (like metadata)
 
        const VOLATILE_TTL = 300; // integer; seconds
 
@@ -387,9 +387,9 @@ class LocalFile extends File {
                $this->dataLoaded = true;
                $this->extraDataLoaded = true;
 
-               $dbr = ( $flags & self::LOAD_VIA_SLAVE )
-                       ? $this->repo->getSlaveDB()
-                       : $this->repo->getMasterDB();
+               $dbr = ( $flags & self::READ_LATEST )
+                       ? $this->repo->getMasterDB()
+                       : $this->repo->getSlaveDB();
 
                $row = $dbr->selectRow( 'image', $this->getCacheFields( 'img_' ),
                        array( 'img_name' => $this->getName() ), $fname );
@@ -530,13 +530,18 @@ class LocalFile extends File {
         */
        function load( $flags = 0 ) {
                if ( !$this->dataLoaded ) {
-                       if ( !$this->loadFromCache() ) {
-                               $this->loadFromDB( $this->isVolatile() ? 0 : self::LOAD_VIA_SLAVE );
+                       if ( ( $flags & self::READ_LATEST ) || !$this->loadFromCache() ) {
+                               // b/c for now for data consistency
+                               if ( $this->isVolatile() ) {
+                                       $flags |= self::READ_LATEST;
+                               }
+                               $this->loadFromDB( $flags );
                                $this->saveToCache();
                        }
                        $this->dataLoaded = true;
                }
                if ( ( $flags & self::LOAD_ALL ) && !$this->extraDataLoaded ) {
+                       // @note: loads on name/timestamp to reduce race condition problems
                        $this->loadExtraFromDB();
                }
        }
index 73c614a..fd92e11 100644 (file)
@@ -175,10 +175,12 @@ class OldLocalFile extends LocalFile {
        }
 
        function loadFromDB( $flags = 0 ) {
-
                $this->dataLoaded = true;
 
-               $dbr = $this->repo->getSlaveDB();
+               $dbr = ( $flags & self::READ_LATEST )
+                       ? $this->repo->getMasterDB()
+                       : $this->repo->getSlaveDB();
+
                $conds = array( 'oi_name' => $this->getName() );
                if ( is_null( $this->requestedTime ) ) {
                        $conds['oi_archive_name'] = $this->archive_name;
index 91195e9..c29b462 100644 (file)
@@ -1375,7 +1375,7 @@ abstract class Installer {
                                }
 
                                try {
-                                       $text = Http::get( $url . $file, array( 'timeout' => 3 ) );
+                                       $text = Http::get( $url . $file, array( 'timeout' => 3 ), __METHOD__ );
                                } catch ( Exception $e ) {
                                        // Http::get throws with allow_url_fopen = false and no curl extension.
                                        $text = null;
@@ -1723,7 +1723,7 @@ abstract class Installer {
 
                if ( MWHttpRequest::canMakeRequests() ) {
                        $res = MWHttpRequest::factory( $this->mediaWikiAnnounceUrl,
-                               array( 'method' => 'POST', 'postData' => $params ) )->execute();
+                               array( 'method' => 'POST', 'postData' => $params ), __METHOD__ )->execute();
                        if ( !$res->isOK() ) {
                                $s->warning( 'config-install-subscribe-fail', $res->getMessage() );
                        }
index 934b4b4..07a6f35 100644 (file)
        "config-admin-name-invalid": "指定的使用者名稱 \"<nowiki>$1</nowiki>\" 無效,請改用其他使用者名稱。",
        "config-admin-password-blank": "輸入管理員帳號密碼。",
        "config-admin-password-mismatch": "兩次輸入的密碼並不相同。",
-       "config-admin-email": "電子郵件址:",
+       "config-admin-email": "電子郵件址:",
        "config-admin-email-help": "在此輸入的電子郵件信箱可用來接收 Wiki 上其他使用者所傳送的訊息、重設您的密碼與通知監視清單中頁面更動。您可將此欄位留空。",
        "config-admin-error-user": "建立管理員帳號 \"<nowiki>$1</nowiki>\" 時發送內部錯誤。",
        "config-admin-error-password": "設定管理員 \"<nowiki>$1</nowiki>\" 的密碼時發送內部錯誤:<pre>$2</pre>",
-       "config-admin-error-bademail": "您輸入了不正確的電子郵件位址。",
+       "config-admin-error-bademail": "您輸入了不正確的電郵地址。",
        "config-subscribe": "訂閱 [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 發佈公告郵寄清單]。",
        "config-subscribe-help": "這是一個用於發佈公告的低郵件量郵寄清單,內容包括重要的安全公告。\n您應該訂閱它並在 MediaWiki 發佈新版的時候更新系統。",
-       "config-subscribe-noemail": "您正嘗試不填寫電子郵件位址訂閱發佈公告郵寄清單。 \n請如果您希望訂閱郵寄清單,請提供一個有效的電子郵件位址。",
+       "config-subscribe-noemail": "您正嘗試不填寫電郵地址訂閱發佈公告郵寄清單。 \n請如果您希望訂閱郵寄清單,請提供一個有效的電郵地址。",
        "config-almost-done": "您快要完成了!\n您現在可以跳過其餘的設定項目並且立即安裝 Wiki。",
        "config-optional-continue": "多問我一些問題吧。",
        "config-optional-skip": "我已經不耐煩了,請趕緊安裝 Wiki。",
index 53fcaee..1a730d3 100644 (file)
@@ -49,6 +49,8 @@ abstract class JobQueue {
 
        /** @var BagOStuff */
        protected $dupCache;
+       /** @var JobQueueAggregator */
+       protected $aggr;
 
        const QOS_ATOMIC = 1; // integer; "all-or-nothing" job insertions
 
@@ -76,6 +78,9 @@ abstract class JobQueue {
                        throw new MWException( __CLASS__ . " does not support delayed jobs." );
                }
                $this->dupCache = wfGetCache( CACHE_ANYTHING );
+               $this->aggr = isset( $params['aggregator'] )
+                       ? $params['aggregator']
+                       : new JobQueueAggregatorNull( array() );
        }
 
        /**
@@ -298,7 +303,8 @@ abstract class JobQueue {
         * @throws JobQueueError
         */
        final public function push( $jobs, $flags = 0 ) {
-               $this->batchPush( is_array( $jobs ) ? $jobs : array( $jobs ), $flags );
+               $jobs = is_array( $jobs ) ? $jobs : array( $jobs );
+               $this->batchPush( $jobs, $flags );
        }
 
        /**
@@ -327,6 +333,7 @@ abstract class JobQueue {
                }
 
                $this->doBatchPush( $jobs, $flags );
+               $this->aggr->notifyQueueNonEmpty( $this->wiki, $this->type );
        }
 
        /**
@@ -356,6 +363,10 @@ abstract class JobQueue {
 
                $job = $this->doPop();
 
+               if ( !$job ) {
+                       $this->aggr->notifyQueueEmpty( $this->wiki, $this->type );
+               }
+
                // Flag this job as an old duplicate based on its "root" job...
                try {
                        if ( $job && $this->isRootJobOldDuplicate( $job ) ) {
index 5e8399c..d5f47ff 100644 (file)
@@ -686,7 +686,9 @@ class JobQueueDB extends JobQueue {
                                        $affected = $dbw->affectedRows();
                                        $count += $affected;
                                        JobQueue::incrStats( 'job-recycle', $this->type, $affected, $this->wiki );
+                                       // The tasks recycled jobs or release delayed jobs into the queue
                                        $this->cache->set( $this->getCacheKey( 'empty' ), 'false', self::CACHE_TTL_LONG );
+                                       $this->aggr->notifyQueueNonEmpty( $this->wiki, $this->type );
                                }
                        }
 
index 246c06e..a0a4b7b 100644 (file)
@@ -54,15 +54,9 @@ class JobQueueFederated extends JobQueue {
        /** @var array (partition name => JobQueue) reverse sorted by weight */
        protected $partitionQueues = array();
 
-       /** @var BagOStuff */
-       protected $cache;
-
        /** @var int Maximum number of partitions to try */
        protected $maxPartitionsTry;
 
-       const CACHE_TTL_SHORT = 30; // integer; seconds to cache info without re-validating
-       const CACHE_TTL_LONG = 300; // integer; seconds to cache info that is kept up to date
-
        /**
         * @param array $params Possible keys:
         *  - sectionsByWiki      : A map of wiki IDs to section names.
@@ -126,8 +120,6 @@ class JobQueueFederated extends JobQueue {
                } else {
                        $this->partitionPushRing = new HashRing( $partitionPushMap );
                }
-               // Aggregate cache some per-queue values if there are multiple partition queues
-               $this->cache = count( $partitionMap ) > 1 ? wfGetMainCache() : new EmptyBagOStuff();
        }
 
        protected function supportedOrders() {
@@ -144,15 +136,6 @@ class JobQueueFederated extends JobQueue {
        }
 
        protected function doIsEmpty() {
-               $key = $this->getCacheKey( 'empty' );
-
-               $isEmpty = $this->cache->get( $key );
-               if ( $isEmpty === 'true' ) {
-                       return true;
-               } elseif ( $isEmpty === 'false' ) {
-                       return false;
-               }
-
                $empty = true;
                $failed = 0;
                foreach ( $this->partitionQueues as $queue ) {
@@ -165,7 +148,6 @@ class JobQueueFederated extends JobQueue {
                }
                $this->throwErrorIfAllPartitionsDown( $failed );
 
-               $this->cache->add( $key, $empty ? 'true' : 'false', self::CACHE_TTL_LONG );
                return $empty;
        }
 
@@ -191,13 +173,7 @@ class JobQueueFederated extends JobQueue {
         * @return int
         */
        protected function getCrossPartitionSum( $type, $method ) {
-               $key = $this->getCacheKey( $type );
-
-               $count = $this->cache->get( $key );
-               if ( $count !== false ) {
-                       return $count;
-               }
-
+               $count = 0;
                $failed = 0;
                foreach ( $this->partitionQueues as $queue ) {
                        try {
@@ -209,8 +185,6 @@ class JobQueueFederated extends JobQueue {
                }
                $this->throwErrorIfAllPartitionsDown( $failed );
 
-               $this->cache->set( $key, $count, self::CACHE_TTL_SHORT );
-
                return $count;
        }
 
@@ -279,10 +253,7 @@ class JobQueueFederated extends JobQueue {
                                $ok = false;
                                $this->logException( $e );
                        }
-                       if ( $ok ) {
-                               $key = $this->getCacheKey( 'empty' );
-                               $this->cache->set( $key, 'false', self::CACHE_TTL_LONG );
-                       } else {
+                       if ( !$ok ) {
                                if ( !$partitionRing->ejectFromLiveRing( $partition, 5 ) ) { // blacklist
                                        throw new JobQueueError( "Could not insert job(s), no partitions available." );
                                }
@@ -301,10 +272,7 @@ class JobQueueFederated extends JobQueue {
                                $ok = false;
                                $this->logException( $e );
                        }
-                       if ( $ok ) {
-                               $key = $this->getCacheKey( 'empty' );
-                               $this->cache->set( $key, 'false', self::CACHE_TTL_LONG );
-                       } else {
+                       if ( !$ok ) {
                                if ( !$partitionRing->ejectFromLiveRing( $partition, 5 ) ) { // blacklist
                                        throw new JobQueueError( "Could not insert job(s), no partitions available." );
                                }
@@ -344,9 +312,6 @@ class JobQueueFederated extends JobQueue {
                }
                $this->throwErrorIfAllPartitionsDown( $failed );
 
-               $key = $this->getCacheKey( 'empty' );
-               $this->cache->set( $key, 'true', self::CACHE_TTL_LONG );
-
                return false;
        }
 
@@ -440,10 +405,6 @@ class JobQueueFederated extends JobQueue {
                        'abandonedcount'
                );
 
-               foreach ( $types as $type ) {
-                       $this->cache->delete( $this->getCacheKey( $type ) );
-               }
-
                /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        $queue->doFlushCaches();
@@ -550,14 +511,4 @@ class JobQueueFederated extends JobQueue {
                        $queue->setTestingPrefix( $key );
                }
        }
-
-       /**
-        * @param string $property
-        * @return string
-        */
-       private function getCacheKey( $property ) {
-               list( $db, $prefix ) = wfSplitWikiID( $this->wiki );
-
-               return wfForeignMemcKey( $db, $prefix, 'jobqueue', $this->type, $property );
-       }
 }
index dbb85d7..ebd547a 100644 (file)
@@ -94,6 +94,7 @@ class JobQueueGroup {
                } else {
                        $conf = $conf + $wgJobTypeConf['default'];
                }
+               $conf['aggregator'] = JobQueueAggregator::singleton();
 
                return JobQueue::factory( $conf );
        }
@@ -125,7 +126,6 @@ class JobQueueGroup {
 
                foreach ( $jobsByType as $type => $jobs ) {
                        $this->get( $type )->push( $jobs );
-                       JobQueueAggregator::singleton()->notifyQueueNonEmpty( $this->wiki, $type );
                }
 
                if ( $this->cache->has( 'queues-ready', 'list' ) ) {
@@ -153,9 +153,6 @@ class JobQueueGroup {
                if ( is_string( $qtype ) ) { // specific job type
                        if ( !in_array( $qtype, $blacklist ) ) {
                                $job = $this->get( $qtype )->pop();
-                               if ( !$job ) {
-                                       JobQueueAggregator::singleton()->notifyQueueEmpty( $this->wiki, $qtype );
-                               }
                        }
                } else { // any job in the "default" jobs types
                        if ( $flags & self::USE_CACHE ) {
@@ -179,7 +176,6 @@ class JobQueueGroup {
                                if ( $job ) { // found
                                        break;
                                } else { // not found
-                                       JobQueueAggregator::singleton()->notifyQueueEmpty( $this->wiki, $type );
                                        $this->cache->clear( 'queues-ready' );
                                }
                        }
@@ -381,10 +377,6 @@ class JobQueueGroup {
                                        }
                                }
                        }
-                       // The tasks may have recycled jobs or release delayed jobs into the queue
-                       if ( isset( $tasksRun[$type] ) && !$queue->isEmpty() ) {
-                               JobQueueAggregator::singleton()->notifyQueueNonEmpty( $this->wiki, $type );
-                       }
                }
 
                if ( $count === 0 ) {
index 4c2dfad..febc277 100644 (file)
@@ -34,7 +34,7 @@ abstract class JobQueueAggregator {
        /**
         * @param array $params
         */
-       protected function __construct( array $params ) {
+       public function __construct( array $params ) {
        }
 
        /**
index db9e764..847dd6f 100644 (file)
@@ -44,7 +44,7 @@ class JobQueueAggregatorRedis extends JobQueueAggregator {
         *                    If a hostname is specified but no port, the standard port number
         *                    6379 will be used. Required.
         */
-       protected function __construct( array $params ) {
+       public function __construct( array $params ) {
                parent::__construct( $params );
                $this->servers = isset( $params['redisServers'] )
                        ? $params['redisServers']
index dbc4f23..4b5189d 100644 (file)
@@ -92,9 +92,10 @@ class ThumbnailRenderJob extends Job {
 
                wfDebug( __METHOD__ . ": hitting url {$thumbUrl}\n" );
 
-               $request = MWHttpRequest::factory( $thumbUrl, array(
-                       'method' => 'HEAD',
-                       'followRedirects' => true ) );
+               $request = MWHttpRequest::factory( $thumbUrl, 
+                       array( 'method' => 'HEAD', 'followRedirects' => true ),
+                       __METHOD__
+               );
 
                if ( $wgUploadThumbnailRenderHttpCustomHost ) {
                        $request->setHeader( 'Host', $wgUploadThumbnailRenderHttpCustomHost );
index 03bdf0d..769cecf 100644 (file)
@@ -59,7 +59,7 @@ class ParsoidVirtualRESTService extends VirtualRESTService {
                                throw new Exception( "Only 'local' target wiki is currently supported" );
                        } elseif ( $version !== 'v1' ) {
                                throw new Exception( "Only version 1 exists" );
-                       } else if ( $reqType !== 'page' && $reqType !== 'transform' ) {
+                       } elseif ( $reqType !== 'page' && $reqType !== 'transform' ) {
                                throw new Exception( "Request type must be either 'page' or 'transform'" );
                        }
 
index e382cf3..950c0d4 100644 (file)
@@ -35,7 +35,6 @@ class CacheTime {
        public $mVersion = Parser::VERSION,  # Compatibility check
                $mCacheTime = '',             # Time when this object was generated, or -1 for uncacheable. Used in ParserCache.
                $mCacheExpiry = null,         # Seconds after which the object should expire, use 0 for uncacheable. Used in ParserCache.
-               $mContainsOldMagic,           # Boolean variable indicating if the input contained variables like {{CURRENTDAY}}
                $mCacheRevisionId = null;     # Revision ID that was parsed
 
        /**
@@ -45,21 +44,6 @@ class CacheTime {
                return wfTimestamp( TS_MW, $this->mCacheTime );
        }
 
-       /**
-        * @return bool
-        */
-       public function containsOldMagic() {
-               return $this->mContainsOldMagic;
-       }
-
-       /**
-        * @param bool $com
-        * @return bool
-        */
-       public function setContainsOldMagic( $com ) {
-               return wfSetVar( $this->mContainsOldMagic, $com );
-       }
-
        /**
         * setCacheTime() sets the timestamp expressing when the page has been rendered.
         * This does not control expiry, see updateCacheExpiry() for that!
@@ -133,10 +117,6 @@ class CacheTime {
                        $expire = min( $expire, $wgParserCacheExpireTime );
                }
 
-               if ( $this->containsOldMagic() ) { //compatibility hack
-                       $expire = min( $expire, 3600 ); # 1 hour
-               }
-
                if ( $expire <= 0 ) {
                        return 0; // not cacheable
                } else {
index a9b0c82..2f443c0 100644 (file)
@@ -4096,7 +4096,7 @@ class Parser {
                        return $obj->tc_contents;
                }
 
-               $req = MWHttpRequest::factory( $url );
+               $req = MWHttpRequest::factory( $url, array(), __METHOD__ );
                $status = $req->execute(); // Status object
                if ( $status->isOK() ) {
                        $text = $req->getContent();
index ad131f4..bc8e4a6 100644 (file)
@@ -257,8 +257,6 @@ class ParserCache {
                        $optionsKey->setCacheRevisionId( $revId );
                        $parserOutput->setCacheRevisionId( $revId );
 
-                       $optionsKey->setContainsOldMagic( $parserOutput->containsOldMagic() );
-
                        $parserOutputKey = $this->getParserOutputKey( $page,
                                $popts->optionsHash( $optionsKey->mUsedOptions, $page->getTitle() ) );
 
index f249017..bae3eaa 100644 (file)
@@ -62,12 +62,11 @@ class ParserOutput extends CacheTime {
                '#<(?:mw:)?editsection page="(.*?)" section="(.*?)"(?:/>|>(.*?)(</(?:mw:)?editsection>))#';
 
        public function __construct( $text = '', $languageLinks = array(), $categoryLinks = array(),
-               $containsOldMagic = false, $titletext = ''
+               $unused = false, $titletext = ''
        ) {
                $this->mText = $text;
                $this->mLanguageLinks = $languageLinks;
                $this->mCategories = $categoryLinks;
-               $this->mContainsOldMagic = $containsOldMagic;
                $this->mTitleText = $titletext;
        }
 
index 54cbb27..a702d2e 100644 (file)
@@ -154,7 +154,7 @@ class PoolWorkArticleView extends PoolCounterWork {
                // Make sure file cache is not used on uncacheable content.
                // Output that has magic words in it can still use the parser cache
                // (if enabled), though it will generally expire sooner.
-               if ( !$this->parserOutput->isCacheable() || $this->parserOutput->containsOldMagic() ) {
+               if ( !$this->parserOutput->isCacheable() ) {
                        $wgUseFileCache = false;
                }
 
index 4b74206..69470fd 100644 (file)
@@ -46,6 +46,7 @@ abstract class Profiler {
                'db' => 'ProfilerOutputDb',
                'text' => 'ProfilerOutputText',
                'udp' => 'ProfilerOutputUdp',
+               'dump' => 'ProfilerOutputDump',
        );
 
        /** @var Profiler */
@@ -167,7 +168,7 @@ abstract class Profiler {
                if ( !is_array( $output ) ) {
                        $output = array( $output );
                }
-
+               $stats = null;
                foreach ( $output as $outType ) {
                        if ( !isset( self::$outputTypes[$outType] ) ) {
                                throw new MWException( "'$outType' is an invalid output type" );
@@ -177,7 +178,10 @@ abstract class Profiler {
                        /** @var ProfilerOutput $profileOut */
                        $profileOut = new $class( $this, $this->params );
                        if ( $profileOut->canUse() ) {
-                               $profileOut->log( $this->getFunctionStats() );
+                               if ( is_null( $stats ) ) {
+                                       $stats = $this->getFunctionStats();
+                               }
+                               $profileOut->log( $stats );
                        }
                }
        }
index 7a50497..f36cdc1 100644 (file)
@@ -183,4 +183,12 @@ class ProfilerXhprof extends Profiler {
                }
                return implode( "\n", $out );
        }
+
+       /**
+        * Retrieve raw data from xhprof
+        * @return array
+        */
+       public function getRawData() {
+               return $this->xhprof->getRawData();
+       }
 }
diff --git a/includes/profiler/output/ProfilerOutputDump.php b/includes/profiler/output/ProfilerOutputDump.php
new file mode 100644 (file)
index 0000000..bf4b85c
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Profiler dumping output in xhprof dump file
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Profiler
+ */
+
+/**
+ * Profiler dumping output in xhprof dump file
+ * @ingroup Profiler
+ *
+ * @since 1.25
+ */
+class ProfilerOutputDump extends ProfilerOutput {
+
+       protected $suffix = ".xhprof";
+
+       /**
+        * Can this output type be used?
+        *
+        * @return bool
+        */
+       public function canUse() {
+               if ( empty( $this->params['outputDir'] ) ) {
+                       return false;
+               }
+               return true;
+       }
+
+       public function log( array $stats ) {
+               $data = $this->collector->getRawData();
+               $filename = sprintf( "%s/%s.%s%s", $this->params['outputDir'], uniqid(), $this->collector->getProfileID(), $this->suffix );
+               file_put_contents( $filename, serialize( $data ) );
+       }
+}
index a2dcd59..f85b878 100644 (file)
@@ -44,6 +44,7 @@ class ExtensionProcessor implements Processor {
                'APIMetaModules',
                'APIPropModules',
                'APIListModules',
+               'ValidSkinNames',
        );
 
        /**
diff --git a/includes/resourceloader/ResourceLoaderFilePageModule.php b/includes/resourceloader/ResourceLoaderFilePageModule.php
deleted file mode 100644 (file)
index 8c7fbe7..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-/**
- * Resource loader module for MediaWiki:Filepage.css
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-/**
- * ResourceLoader definition for MediaWiki:Filepage.css
- */
-class ResourceLoaderFilePageModule extends ResourceLoaderWikiModule {
-
-       /**
-        * @param ResourceLoaderContext $context
-        * @return array
-        */
-       protected function getPages( ResourceLoaderContext $context ) {
-               return array(
-                       'MediaWiki:Filepage.css' => array( 'type' => 'style' ),
-               );
-       }
-}
diff --git a/includes/resourceloader/ResourceLoaderNoscriptModule.php b/includes/resourceloader/ResourceLoaderNoscriptModule.php
deleted file mode 100644 (file)
index 61927d7..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/**
- * Resource loader for site customizations for users without JavaScript enabled.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @author Trevor Parscal
- * @author Roan Kattouw
- */
-
-/**
- * Module for site customizations
- */
-class ResourceLoaderNoscriptModule extends ResourceLoaderWikiModule {
-
-       /* Protected Methods */
-
-       /**
-        * Gets list of pages used by this module.  Obviously, it makes absolutely no
-        * sense to include JavaScript files here... :D
-        *
-        * @param ResourceLoaderContext $context
-        *
-        * @return array List of pages
-        */
-       protected function getPages( ResourceLoaderContext $context ) {
-               return array( 'MediaWiki:Noscript.css' => array( 'type' => 'style' ) );
-       }
-
-       /* Methods */
-
-       /**
-        * Gets group name
-        *
-        * @return string Name of group
-        */
-       public function getGroup() {
-               return 'noscript';
-       }
-}
index 35d5c05..19e0bae 100644 (file)
  */
 class ResourceLoaderSiteModule extends ResourceLoaderWikiModule {
 
-       /* Protected Methods */
-
        /**
-        * Gets list of pages used by this module
+        * Get list of pages used by this module
         *
         * @param ResourceLoaderContext $context
-        *
         * @return array List of pages
         */
        protected function getPages( ResourceLoaderContext $context ) {
@@ -51,12 +48,10 @@ class ResourceLoaderSiteModule extends ResourceLoaderWikiModule {
                return $pages;
        }
 
-       /* Methods */
-
        /**
-        * Gets group name
+        * Get group name
         *
-        * @return string Name of group
+        * @return string
         */
        public function getGroup() {
                return 'site';
index ee350cf..417cfce 100644 (file)
  */
 class ResourceLoaderUserGroupsModule extends ResourceLoaderWikiModule {
 
-       /* Protected Members */
-
        protected $origin = self::ORIGIN_USER_SITEWIDE;
        protected $targets = array( 'desktop', 'mobile' );
 
-       /* Protected Methods */
-
        /**
         * @param ResourceLoaderContext $context
         * @return array
@@ -63,9 +59,9 @@ class ResourceLoaderUserGroupsModule extends ResourceLoaderWikiModule {
                return $pages;
        }
 
-       /* Methods */
-
        /**
+        * Get group name
+        *
         * @return string
         */
        public function getGroup() {
index e2d39d0..a097844 100644 (file)
  */
 class ResourceLoaderUserModule extends ResourceLoaderWikiModule {
 
-       /* Protected Members */
-
        protected $origin = self::ORIGIN_USER_INDIVIDUAL;
 
-       /* Protected Methods */
-
        /**
+        * Get list of pages used by this module
+        *
         * @param ResourceLoaderContext $context
-        * @return array
+        * @return array List of pages
         */
        protected function getPages( ResourceLoaderContext $context ) {
                $allowUserJs = $this->getConfig()->get( 'AllowUserJs' );
@@ -74,9 +72,9 @@ class ResourceLoaderUserModule extends ResourceLoaderWikiModule {
                return $pages;
        }
 
-       /* Methods */
-
        /**
+        * Get group name
+        *
         * @return string
         */
        public function getGroup() {
index 1a1a6d0..7b44cc6 100644 (file)
  * because of its dependence on the functionality of
  * Title::isCssJsSubpage.
  */
-abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
+class ResourceLoaderWikiModule extends ResourceLoaderModule {
 
-       /* Protected Members */
-
-       # Origin is user-supplied code
+       // Origin defaults to users with sitewide authority
        protected $origin = self::ORIGIN_USER_SITEWIDE;
 
        // In-object cache for title info
        protected $titleInfo = array();
 
-       /* Abstract Protected Methods */
+       // List of page names that contain CSS
+       protected $styles = array();
+
+       // List of page names that contain JavaScript
+       protected $scripts = array();
+
+       // Group of module
+       protected $group;
+
+       /**
+        * @param array $options For back-compat, this can be omitted in favour of overwriting getPages.
+        */
+       public function __construct( array $options = null ) {
+               if ( isset( $options['styles'] ) ) {
+                       $this->styles = $options['styles'];
+               }
+               if ( isset( $options['scripts'] ) ) {
+                       $this->scripts = $options['scripts'];
+               }
+               if ( isset( $options['group'] ) ) {
+                       $this->group = $options['group'];
+               }
+       }
 
        /**
         * Subclasses should return an associative array of resources in the module.
@@ -57,9 +77,34 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
         * @param ResourceLoaderContext $context
         * @return array
         */
-       abstract protected function getPages( ResourceLoaderContext $context );
+       protected function getPages( ResourceLoaderContext $context ) {
+               $config = $this->getConfig();
+               $pages = array();
+
+               // Filter out pages from origins not allowed by the current wiki configuration.
+               if ( $config->get( 'UseSiteJs' ) ) {
+                       foreach ( $this->scripts as $script ) {
+                               $pages[$script] = array( 'type' => 'script' );
+                       }
+               }
+
+               if ( $config->get( 'UseSiteCss' ) ) {
+                       foreach ( $this->styles as $style ) {
+                               $pages[$style] = array( 'type' => 'style' );
+                       }
+               }
+
+               return $pages;
+       }
 
-       /* Protected Methods */
+       /**
+        * Get group name
+        *
+        * @return string
+        */
+       public function getGroup() {
+               return $this->group;
+       }
 
        /**
         * Get the Database object used in getTitleMTimes(). Defaults to the local slave DB
@@ -105,8 +150,6 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
                return $content->serialize( $format );
        }
 
-       /* Methods */
-
        /**
         * @param ResourceLoaderContext $context
         * @return string
index 9711f04..739d018 100644 (file)
@@ -137,7 +137,7 @@ class MediaWikiSite extends Site {
 
                        // Go on call the external site
                        // @todo we need a good way to specify a timeout here.
-                       $ret = Http::get( $url );
+                       $ret = Http::get( $url, array(), __METHOD__ );
                }
 
                if ( $ret === false ) {
index 0008b10..5211e30 100644 (file)
@@ -59,6 +59,7 @@ class SpecialAllMessages extends SpecialPage {
 
                $this->outputHeader( 'allmessagestext' );
                $out->addModuleStyles( 'mediawiki.special' );
+               $out->addHelpLink( 'Help:System message' );
 
                $this->table = new AllmessagesTablePager(
                        $this,
index c672817..efd3e2d 100644 (file)
@@ -103,6 +103,8 @@ class SpecialBlock extends FormSpecialPage {
                $msg = $this->alreadyBlocked ? 'ipb-change-block' : 'ipbsubmit';
                $form->setSubmitTextMsg( $msg );
 
+               $this->getOutput()->addHelpLink( 'Help:Blocking users' );
+
                # Don't need to do anything if the form has been posted
                if ( !$this->getRequest()->wasPosted() && $this->preErrors ) {
                        $s = $form->formatErrors( $this->preErrors );
index 7e74cd5..368d491 100644 (file)
@@ -152,16 +152,17 @@ class SpecialMergeHistory extends SpecialPage {
 
                if ( count( $errors ) ) {
                        $this->showMergeForm();
-                       $this->getOutput()->addHTML( implode( "\n", $errors ) );
+                       $out->addHTML( implode( "\n", $errors ) );
                } else {
                        $this->showHistory();
                }
        }
 
        function showMergeForm() {
-               $this->getOutput()->addWikiMsg( 'mergehistory-header' );
+               $out = $this->getOutput();
+               $out->addWikiMsg( 'mergehistory-header' );
 
-               $this->getOutput()->addHTML(
+               $out->addHTML(
                        Xml::openElement( 'form', array(
                                'method' => 'get',
                                'action' => wfScript() ) ) .
@@ -185,6 +186,8 @@ class SpecialMergeHistory extends SpecialPage {
                                '</fieldset>' .
                                '</form>'
                );
+
+               $out->addHelpLink( 'Help:Merge history' );
        }
 
        private function showHistory() {
index 86aad12..d488253 100644 (file)
@@ -140,6 +140,7 @@ class MovePageForm extends UnlistedSpecialPage {
                $out = $this->getOutput();
                $out->setPageTitle( $this->msg( 'move-page', $this->oldTitle->getPrefixedText() ) );
                $out->addModules( 'mediawiki.special.movePage' );
+               $out->addHelpLink( 'Help:Moving a page' );
 
                $newTitle = $this->newTitle;
 
index 94e77e3..de19fa4 100644 (file)
@@ -30,6 +30,9 @@ class SpecialNewFiles extends IncludableSpecialPage {
                $this->setHeaders();
                $this->outputHeader();
 
+               $out = $this->getOutput();
+               $out->addHelpLink( 'Help:New images' );
+
                $pager = new NewFilesPager( $this->getContext(), $par );
 
                if ( !$this->including() ) {
@@ -39,9 +42,9 @@ class SpecialNewFiles extends IncludableSpecialPage {
                        $form->displayForm( '' );
                }
 
-               $this->getOutput()->addHTML( $pager->getBody() );
+               $out->addHTML( $pager->getBody() );
                if ( !$this->including() ) {
-                       $this->getOutput()->addHTML( $pager->getNavigationBar() );
+                       $out->addHTML( $pager->getNavigationBar() );
                }
        }
 
index 994a2e5..594628f 100644 (file)
@@ -127,6 +127,8 @@ class SpecialNewpages extends IncludableSpecialPage {
                $this->showNavigation = !$this->including(); // Maybe changed in setup
                $this->setup( $par );
 
+               $out->addHelpLink( 'Help:New pages' );
+
                if ( !$this->including() ) {
                        // Settings
                        $this->form();
index fb2c421..c88c2f1 100644 (file)
@@ -790,6 +790,7 @@ class SpecialUndelete extends SpecialPage {
                        return;
                }
 
+               $out->addHelpLink( 'Help:Undelete' );
                if ( $this->mAllowed ) {
                        $out->setPageTitle( $this->msg( 'undeletepage' ) );
                } else {
index ce8192b..72d02e0 100644 (file)
@@ -160,6 +160,8 @@ class SpecialUpload extends SpecialPage {
                        throw new ErrorPageError( 'uploaddisabled', 'uploaddisabledtext' );
                }
 
+               $this->getOutput()->addHelpLink( 'Help:Managing files' );
+
                # Check permissions
                $user = $this->getUser();
                $permissionRequired = UploadBase::isAllowed( $user );
index 462dbee..4a92bb9 100644 (file)
@@ -252,7 +252,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
                        'method' => 'GET',
                        'timeout' => 'default'
                );
-               $req = MWHttpRequest::factory( $scalerThumbUrl, $httpOptions );
+               $req = MWHttpRequest::factory( $scalerThumbUrl, $httpOptions, __METHOD__ );
                $status = $req->execute();
                if ( !$status->isOK() ) {
                        $errors = $status->getErrorsArray();
index a5edcb0..7dd2b87 100644 (file)
@@ -135,6 +135,7 @@ class UserrightsPage extends SpecialPage {
 
                $out = $this->getOutput();
                $out->addModuleStyles( 'mediawiki.special' );
+               $out->addHelpLink( 'Help:Assigning permissions' );
 
                // show the general form
                if ( count( $available['add'] ) || count( $available['remove'] ) ) {
index 3d410b1..fc59ace 100644 (file)
@@ -287,7 +287,7 @@ class UploadFromUrl extends UploadBase {
                        'Starting download from "' . $this->mUrl . '" ' .
                                '<' . implode( ',', array_keys( array_filter( $options ) ) ) . '>'
                );
-               $req = MWHttpRequest::factory( $this->mUrl, $options );
+               $req = MWHttpRequest::factory( $this->mUrl, $options, __METHOD__ );
                $req->setCallback( array( $this, 'saveTempFileChunk' ) );
                $status = $req->execute();
 
index 43d6063..844888e 100644 (file)
@@ -842,7 +842,7 @@ class LanguageConverter {
         * @param bool $fromCache Load from memcached? Defaults to true.
         */
        function loadTables( $fromCache = true ) {
-               global $wgLangConvMemc;
+               global $wgLanguageConverterCacheType;
 
                if ( $this->mTablesLoaded ) {
                        return;
@@ -850,9 +850,10 @@ class LanguageConverter {
 
                $this->mTablesLoaded = true;
                $this->mTables = false;
+               $cache = ObjectCache::getInstance( $wgLanguageConverterCacheType );
                if ( $fromCache ) {
                        wfProfileIn( __METHOD__ . '-cache' );
-                       $this->mTables = $wgLangConvMemc->get( $this->mCacheKey );
+                       $this->mTables = $cache->get( $this->mCacheKey );
                        wfProfileOut( __METHOD__ . '-cache' );
                }
                if ( !$this->mTables || !array_key_exists( self::CACHE_VERSION_KEY, $this->mTables ) ) {
@@ -869,7 +870,7 @@ class LanguageConverter {
                        $this->postLoadTables();
                        $this->mTables[self::CACHE_VERSION_KEY] = true;
 
-                       $wgLangConvMemc->set( $this->mCacheKey, $this->mTables, 43200 );
+                       $cache->set( $this->mCacheKey, $this->mTables, 43200 );
                        wfProfileOut( __METHOD__ . '-recache' );
                }
        }
index 177315b..94f1841 100644 (file)
        "logentry-upload-revert": "$1 het $3 {{GENDER:$2|opgelaai}}",
        "rightsnone": "(geen)",
        "revdelete-summary": "redigeringsopsomming",
+       "feedback-adding": "U terugvoer word op die bladsy geplaas...",
+       "feedback-bugcheck": "Gaaf! Kontroleer of dit nie dalk een van die [$1 bekende foute] is nie.",
+       "feedback-bugnew": "Ek het gekontroleer. Rapporteer 'n nuwe fout.",
        "feedback-bugornote": "As u reg is om 'n tegniese probleem in detail te beskryf, [$1 rapporteer 'n fout].\nAnders kan u die eenvoudige vorm hieronder gebruik. U kommentaar sal by die bladsy \"[$3 $2]\", saam met u gebruikersnaam en die webblaaier wat u gebruik gevoeg word.",
-       "feedback-subject": "Onderwerp:",
-       "feedback-message": "Boodskap:",
        "feedback-cancel": "Kanselleer",
-       "feedback-submit": "Stuur terugvoer",
-       "feedback-adding": "U terugvoer word op die bladsy geplaas...",
+       "feedback-close": "Gedoen",
        "feedback-error1": "Fout: onbekende resultaat van die API",
        "feedback-error2": "Fout: Wysiging het gefaal",
        "feedback-error3": "Fout: Geen reaksie van API",
+       "feedback-message": "Boodskap:",
+       "feedback-subject": "Onderwerp:",
+       "feedback-submit": "Stuur terugvoer",
        "feedback-thanks": "Dankie! U terugvoer is op die bladsy \"[$2 $1]\" geplaas.",
-       "feedback-close": "Gedoen",
-       "feedback-bugcheck": "Gaaf! Kontroleer of dit nie dalk een van die [$1 bekende foute] is nie.",
-       "feedback-bugnew": "Ek het gekontroleer. Rapporteer 'n nuwe fout.",
        "searchsuggest-search": "Soek",
        "searchsuggest-containing": "bevat...",
        "api-error-badaccess-groups": "U word nie toegelaat om lêers te laai op hierdie wiki.",
index d58ac13..de8316a 100644 (file)
        "logentry-newusers-autocreate": "S'ha creyau automaticament a cuenta $1",
        "rightsnone": "(garra)",
        "revdelete-summary": "editar resumen",
+       "feedback-adding": "Adhibindo comentarios ta la pachina...",
+       "feedback-bugcheck": "Perfecto! Comprebe nomás que no sía un [$1 fallo conoixiu].",
+       "feedback-bugnew": "L'he comprebau. Informar d'un nuevo fallo.",
        "feedback-bugornote": "Si creye que puede describir en detalle un problema tecnico, [$1 informe d'un bug] por favor.\n\nSi no, puet usar o siguient formulario. O suyo comentario será adhibiu a la pachina [$3 $2], de conchunta con o suyo nombre d'usuario y o navegador que fa servir.",
-       "feedback-subject": "Afer:",
-       "feedback-message": "Mensache:",
        "feedback-cancel": "Cancelar",
-       "feedback-submit": "Ninviar comentarios",
-       "feedback-adding": "Adhibindo comentarios ta la pachina...",
+       "feedback-close": "Feito",
        "feedback-error1": "Error: No se reconoixe o resultau de l'API",
        "feedback-error2": "Error: Ha fallato a edición",
        "feedback-error3": "Error: No i hai respuesta de l'API",
+       "feedback-message": "Mensache:",
+       "feedback-subject": "Afer:",
+       "feedback-submit": "Ninviar comentarios",
        "feedback-thanks": "Gracias! O suyo comentario s'ha publicau en a pachina [$2  $1].",
-       "feedback-close": "Feito",
-       "feedback-bugcheck": "Perfecto! Comprebe nomás que no sía un [$1 fallo conoixiu].",
-       "feedback-bugnew": "L'he comprebau. Informar d'un nuevo fallo.",
        "searchsuggest-search": "Mirar",
        "searchsuggest-containing": "que contién...",
        "api-error-badaccess-groups": "No puetz cargar fichers en iste wiki.",
index 95f92cb..9e6a171 100644 (file)
@@ -49,7 +49,8 @@
                        "Omda4wady",
                        "Bibas",
                        "Khaled",
-                       "Emara"
+                       "Emara",
+                       "Macofe"
                ]
        },
        "tog-underline": "سطر تحت الوصلات:",
        "logentry-upload-revert": "{{GENDER:$2|رفع|رفعت}} $1 $3",
        "rightsnone": "(لا شيء)",
        "revdelete-summary": "ملخص التعديل",
+       "feedback-adding": "إضافة تعليقات إلى الصفحة...",
+       "feedback-bugcheck": "رائع! تحقق من أن هذه ليست إحدى [$1 العلل المعروفة].",
+       "feedback-bugnew": "لقد تحققت. بلّغ عن علة جديدة.",
        "feedback-bugornote": "إن كنت مستعدا لشرح  مشكلة تقنية بالتفصيل، رجاءا [$1 قدم تقريرا بالخلل].\nبخلاف ذلك، يمكنك أستخدام الطريقة الأسهل أسفله، سيتم إضافة تعليقك للصفحة \"[$3 $2]\"، بالإضافة إلى اسم المستخدم و نوع المتصفح الذي تستخدمه حاليا.",
-       "feedback-subject": "الموضوع:",
-       "feedback-message": "الرسالة:",
        "feedback-cancel": "إلغاء",
-       "feedback-submit": "أرسل الملاحظات",
-       "feedback-adding": "إضافة تعليقات إلى الصفحة...",
+       "feedback-close": "تم",
        "feedback-error1": "خطأ: لا يمكن التعرف عليها من API",
        "feedback-error2": "خطأ: فشل في تحرير",
        "feedback-error3": "خطأ : لا توجد استجابة من API",
+       "feedback-message": "الرسالة:",
+       "feedback-subject": "الموضوع:",
+       "feedback-submit": "إرسال",
        "feedback-thanks": "شكرا! أُرسلت ملاحظاتك لصفحة \"[$2 $1]\".",
-       "feedback-close": "تم",
-       "feedback-bugcheck": "رائع! تحقق من أن هذه ليست إحدى [$1 العلل المعروفة].",
-       "feedback-bugnew": "لقد تحققت. بلّغ عن علة جديدة.",
        "searchsuggest-search": "بحث",
        "searchsuggest-containing": "يحتوي...",
        "api-error-badaccess-groups": "لا يسمح لك بتحميل الملفات إلى هذه الويكي.",
index 99da3a4..befb4b2 100644 (file)
        "logentry-newusers-autocreate": "ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $1 {{GENDER:$2|ܐܬܬܣܝܡ}} ܝܬܐܝܬ",
        "rightsnone": "(ܠܐ ܡܕܡ)",
        "revdelete-summary": "ܫܚܠܦ ܦܣܝܩܬ̈ܐ",
-       "feedback-subject": "ܡܠܘܐܐ:",
-       "feedback-message": "ܐܓܪܬܐ:",
        "feedback-cancel": "ܒܛܘܠ",
+       "feedback-message": "ܐܓܪܬܐ:",
+       "feedback-subject": "ܡܠܘܐܐ:",
        "searchsuggest-search": "ܒܨܝ",
        "searchsuggest-containing": "ܬܚܒܘܫ...",
        "expandtemplates": "ܐܪܘܚ ܩܠܒ̈ܐ",
index 15fe54d..3243952 100644 (file)
        "logentry-rights-autopromote": "$1ক  $4ৰ পৰা $5লৈ স্বয়ংক্ৰিয়ভাৱে পদোন্নীত কৰা হ’ল",
        "rightsnone": "(নাই)",
        "revdelete-summary": "সম্পাদনাৰ সাৰমৰ্ম",
+       "feedback-adding": "পৃষ্ঠাত প্ৰতিক্ৰিয়া যোগ কৰা হৈছে...",
+       "feedback-bugcheck": "অতি উত্তম! কেৱল পৰীক্ষা কৰক যে ই ইতিমধ্যে [$1 জ্ঞাত বাগসমূহ]ৰ এটা নহয়।",
+       "feedback-bugnew": "মই পৰীক্ষা কৰিলো। এটা নতুন বাগ সংবাদন কৰক",
        "feedback-bugornote": "যদি আপুনি এটা কাৰিকৰী সমস্যাৰ বিৱৰণ দিবলৈ প্ৰস্তুত, অনুগ্ৰহ কৰি [$1 এটা বাগ ৰিপ'ৰ্ট কৰক]।\nনহ'লে আপুনি তলৰ সহজ ফৰ্ম ব্যৱহাৰ কৰিব পাৰিব। আপোনাৰ মন্তব্য আপোনাৰ সদস্যনাম আৰু আপুনি ব্যৱহাৰ কৰা ব্ৰাউজাৰৰ সৈতে \"[$3 $2]\" -পৃষ্ঠাত যোগ কৰা হ'ব।",
-       "feedback-subject": "বিষয়:",
-       "feedback-message": "বাৰ্তা:",
        "feedback-cancel": "বাতিল কৰক",
-       "feedback-submit": "প্ৰতিক্ৰিয়া জমা কৰক",
-       "feedback-adding": "পৃষ্ঠাত প্ৰতিক্ৰিয়া যোগ কৰা হৈছে...",
+       "feedback-close": "কৰা হ’ল",
        "feedback-error1": "ত্ৰুটি: এ.পি.আই.ৰ অজ্ঞাত ফলাফল",
        "feedback-error2": "ত্ৰুটি: সম্পাদনা বিফল হৈছে",
        "feedback-error3": "ত্ৰুটি: এ.পি.আই.ৰ কোনো সঁহাৰি নাই",
+       "feedback-message": "বাৰ্তা:",
+       "feedback-subject": "বিষয়:",
+       "feedback-submit": "প্ৰতিক্ৰিয়া জমা কৰক",
        "feedback-thanks": "ধন্যবাদ ! আপোনাৰ প্ৰতিক্ৰিয়া \"[$2 $1]\" পৃষ্ঠাত প্ৰকাশ কৰা হৈছে।",
-       "feedback-close": "কৰা হ’ল",
-       "feedback-bugcheck": "অতি উত্তম! কেৱল পৰীক্ষা কৰক যে ই ইতিমধ্যে [$1 জ্ঞাত বাগসমূহ]ৰ এটা নহয়।",
-       "feedback-bugnew": "মই পৰীক্ষা কৰিলো। এটা নতুন বাগ সংবাদন কৰক",
        "searchsuggest-search": "সন্ধান কৰক",
        "searchsuggest-containing": "যি আছে...",
        "api-error-badaccess-groups": "এই ৱিকিত ফাইল আপল'ড কৰিবলৈ আপোনাৰ অনুমতি নাই।",
index 0f7b552..1b0c089 100644 (file)
@@ -10,7 +10,8 @@
                        "Xuacu",
                        "לערי ריינהארט",
                        "아라",
-                       "Fitoschido"
+                       "Fitoschido",
+                       "Macofe"
                ]
        },
        "tog-underline": "Sorrayar enllaces:",
        "logentry-upload-revert": "$1 {{GENDER:$2|xubió}} $3",
        "rightsnone": "(nengún)",
        "revdelete-summary": "editar resume",
+       "feedback-adding": "Amestando el comentariu a la páxina...",
+       "feedback-bugcheck": "¡Perfeuto! Comprueba que nun tea yá ente los [$1 fallos conocíos].",
+       "feedback-bugnew": "Yá lo comprobé. Informar d'esti fallu nuevu",
        "feedback-bugornote": "Si tas preparáu pa describir un problema técnicu en detalle, [$1 informa del fallu].\nD'otra miente, pues usar el formulariu cenciellu d'abaxo. El to comentariu apaecerá na páxina \"[$3 $2]\" xunto col to nome d'usuariu y el restolador qu'uses.",
-       "feedback-subject": "Asuntu:",
-       "feedback-message": "Mensaxe:",
        "feedback-cancel": "Encaboxar",
-       "feedback-submit": "Unviar comentarios",
-       "feedback-adding": "Amestando el comentariu a la páxina...",
+       "feedback-close": "Fecho",
        "feedback-error1": "Fallu: Resultáu de la API non reconocíu",
        "feedback-error2": "Fallu: Falló la edición",
        "feedback-error3": "Fallu: Ensin respuesta de la API",
+       "feedback-message": "Mensaxe:",
+       "feedback-subject": "Asuntu:",
+       "feedback-submit": "Unviar",
        "feedback-thanks": "¡Gracies! La to opinión s'espublizó na páxina «[$2  $1]».",
-       "feedback-close": "Fecho",
-       "feedback-bugcheck": "¡Perfeuto! Comprueba que nun tea yá ente los [$1 fallos conocíos].",
-       "feedback-bugnew": "Yá lo comprobé. Informar d'esti fallu nuevu",
        "searchsuggest-search": "Buscar",
        "searchsuggest-containing": "que contién...",
        "api-error-badaccess-groups": "Nun tienes permisu pa xubir ficheros a esta wiki.",
index 552c76f..ad65d06 100644 (file)
        "logentry-newusers-autocreate": "$1 istifadəçi hesabı avtomatik yaradıldı",
        "rightsnone": "(yoxdur)",
        "revdelete-summary": "redaktə xülasəsi",
-       "feedback-subject": "Mövzu:",
-       "feedback-message": "Mesaj:",
+       "feedback-bugnew": "Mən yoxladım. Yeni xəta barədə xəbər ver",
        "feedback-cancel": "İmtina",
-       "feedback-error2": "Xəta: Redaktə qeydə alınmadı",
        "feedback-close": "Oldu",
-       "feedback-bugnew": "Mən yoxladım. Yeni xəta barədə xəbər ver",
+       "feedback-error2": "Xəta: Redaktə qeydə alınmadı",
+       "feedback-message": "Mesaj:",
+       "feedback-subject": "Mövzu:",
        "searchsuggest-search": "Axtar",
        "api-error-filename-tooshort": "Fayl adı qısadır.",
        "api-error-filetype-banned": "Bu tip fayllar qadağandır.",
index cc68c55..4f123e3 100644 (file)
        "logentry-rights-rights-legacy": "$1، $3-ین قروپ عوضولوگونو {{GENDER:$2|دَییشدیردی}}",
        "logentry-rights-autopromote": "$1-ین مقامی اوتوماتیک $4-دن $5-ه {{GENDER:$2|آرتیریلدی}}",
        "rightsnone": "(هئچ)",
+       "feedback-adding": "صحیفه‌یه گئری-بیلدیریم آرتیریلیر...",
+       "feedback-bugcheck": "گؤزل! فقط لوطفاً باخین او [$1 تانینمیش خطالار]دان اولماسین.",
+       "feedback-bugnew": "یوخلادیم. یئنی بیر خطا گؤندر",
        "feedback-bugornote": "بیر تکنیکی خطانی شرح وئرمگه آماده اولساز، لوطفاً [$1 بیر باگ بیلدیرین].\nاو اولماسا، بو آشاغیداکی ساده فورم‌دان ایستیفاده ائده بیلرسینیز. سیزین باخیشینیز، ایستیفاده‌چی آدینیزلا، «[$3 $2]» صحیفه‌سینه آرتیریلاجاق‌دیر.",
-       "feedback-subject": "قونو:",
-       "feedback-message": "مئساژ:",
        "feedback-cancel": "لغو ائت",
-       "feedback-submit": "گئری-بیلدیریمی یول‌لا",
-       "feedback-adding": "صحیفه‌یه گئری-بیلدیریم آرتیریلیر...",
+       "feedback-close": "اولدو",
        "feedback-error1": "خطا: API-دان تانینمامیش نتیجه",
        "feedback-error2": "خطا: دَییشدیرمه باشاری‌سیز اولدو",
        "feedback-error3": "خطا: API-دان جاواب گلمه‌دی",
+       "feedback-message": "مئساژ:",
+       "feedback-subject": "قونو:",
+       "feedback-submit": "گئری-بیلدیریمی یول‌لا",
        "feedback-thanks": "تشکورلر! سیزین گئری-بیلدیریمینیز «[$2 $1]» صحیفه‌سینه گؤندریلدی.",
-       "feedback-close": "اولدو",
-       "feedback-bugcheck": "گؤزل! فقط لوطفاً باخین او [$1 تانینمیش خطالار]دان اولماسین.",
-       "feedback-bugnew": "یوخلادیم. یئنی بیر خطا گؤندر",
        "searchsuggest-search": "آختار",
        "searchsuggest-containing": "ساخلانیلیر...",
        "api-error-badaccess-groups": "سیزین بو ویکی‌یه فایل یوکله‌مک ایجازه‌نیز یوخدور.",
index 93b68e1..a748209 100644 (file)
        "logentry-rights-autopromote": "$1 {{GENDER:$2|}} автоматик рәүештә {{GENDER:$2|}} $4 урынына $5 ителде.",
        "rightsnone": "(юҡ)",
        "revdelete-summary": "үҙгәртеүҙәр тасуирламаһы",
+       "feedback-adding": "Биткә кире белдереү өҫтәлә",
+       "feedback-bugcheck": "Шәп! Тик [$1 билдәле хаталар] исемлегендә оҡшаш белдереүҙең булмауына иғтибар итегеҙ.",
+       "feedback-bugnew": "Тикшерҙем. Яңы хата тураһында белдерергә",
        "feedback-bugornote": "Әгәр Һеҙ техник проблеманы ентекле рәүештә аңлатырға теләһәгеҙ, зинһар, [$1 хата тураһында белдерегеҙ].\nБашҡа осраҡта, ошо ябай форманы ҡуллана алаһығыҙ. Комментарийығыҙ «[$3 $2]» битенә ҡулланыусы исемегеҙ һәм браузер мәғлүмәте менән өҫтәләсәк.",
-       "feedback-subject": "Тема:",
-       "feedback-message": "Хәбәр:",
        "feedback-cancel": "Кире алырға",
-       "feedback-submit": "Кире белдереү ебәрергә",
-       "feedback-adding": "Биткә кире белдереү өҫтәлә",
+       "feedback-close": "Әҙер",
        "feedback-error1": "Хата: API-нан беленмәгән хата",
        "feedback-error2": "Хата: Мөхәррирләү хатаһы",
        "feedback-error3": "Хата: API-нан яуап юҡ",
+       "feedback-message": "Хәбәр:",
+       "feedback-subject": "Тема:",
+       "feedback-submit": "Кире белдереү ебәрергә",
        "feedback-thanks": "Рәхмәт! Һеҙҙең фекерегеҙ «[$2 $1]» битенә өҫтәлде.",
-       "feedback-close": "Әҙер",
-       "feedback-bugcheck": "Шәп! Тик [$1 билдәле хаталар] исемлегендә оҡшаш белдереүҙең булмауына иғтибар итегеҙ.",
-       "feedback-bugnew": "Тикшерҙем. Яңы хата тураһында белдерергә",
        "searchsuggest-search": "Эҙләү",
        "searchsuggest-containing": "эстәлегендә...",
        "api-error-badaccess-groups": "Һеҙгә был викиға файлдар күсереү рөхсәт ителмәй",
index ee89681..7a27bc6 100644 (file)
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|nagliwat}} kan pangrupong pagkamiyembro para sa $3",
        "logentry-rights-autopromote": "$1 awtomatikong {{GENDER:$2|pinagpalangkaw}} gikan sa $4 pasiring sa $5",
        "rightsnone": "(mayô)",
+       "feedback-adding": "Idugang an balik-simbag sa pahina...",
+       "feedback-bugcheck": "Marhay! I-tsek sana baya na ini bakong saro sa mga [$1 bistadong kuto].",
+       "feedback-bugnew": "Pig-tsek ko. Pakireport kan sarong baguhong kuto",
        "feedback-bugornote": "Kun ika andam na iladawan an sarong teknikal na problema na igwang detalye tabi [$1 ipaaram an kuto].\nKun bako man, ika makakagamit nin sayon na porma sa ibaba. An saimong komento idudugang sa pahina \"[$3 $2]\", kaiba an saimong paragamit na ngaran.",
-       "feedback-subject": "Subheto",
-       "feedback-message": "An Mensahe:",
        "feedback-cancel": "Kanselaron",
-       "feedback-submit": "Isumite an balik-simbag",
-       "feedback-adding": "Idugang an balik-simbag sa pahina...",
+       "feedback-close": "Nagibo na",
        "feedback-error1": "Kasalaan: Bakong bistadong resulta gikan sa API",
        "feedback-error2": "Kasalaan: An pagliwat nagpalya",
        "feedback-error3": "Kasalaan: Mayong kasimbagan gikan sa API",
+       "feedback-message": "An Mensahe:",
+       "feedback-subject": "Subheto",
+       "feedback-submit": "Isumite an balik-simbag",
        "feedback-thanks": "Salamat! An saimong balik-simbag pinagposte sa pahina \"[$2 $1]\".",
-       "feedback-close": "Nagibo na",
-       "feedback-bugcheck": "Marhay! I-tsek sana baya na ini bakong saro sa mga [$1 bistadong kuto].",
-       "feedback-bugnew": "Pig-tsek ko. Pakireport kan sarong baguhong kuto",
        "searchsuggest-search": "Hanapa baya",
        "searchsuggest-containing": "may laog na...",
        "api-error-badaccess-groups": "Ika daeng permiso na magkarga nin mga sagunson sa wiking ini.",
index f65cbb8..8d40f90 100644 (file)
        "readonly_lag": "База зьвестак была аўтаматычна заблякаваная да выкананьня рэплікацыі галоўнай базы зьвестак з другаснымі",
        "internalerror": "Унутраная памылка",
        "internalerror_info": "Унутраная памылка: $1",
+       "internalerror-fatal-exception": "Фатальнае выключэньне тыпу «$1»",
        "filecopyerror": "Немагчыма cкапіяваць файл «$1» у «$2».",
        "filerenameerror": "Немагчыма перайменаваць файл «$1» у «$2».",
        "filedeleteerror": "Немагчыма выдаліць файл «$1».",
        "logentry-upload-revert": "$1 {{GENDER:$2|загрузіў|загрузіла}} $3",
        "rightsnone": "(няма)",
        "revdelete-summary": "кароткае апісаньне зьменаў",
+       "feedback-adding": "Даданьне водгуку на старонку…",
+       "feedback-bugcheck": "Выдатна! Толькі праверце, магчыма гэтыя памылкі ўжо [$1 вядомыя].",
+       "feedback-bugnew": "Я праверыў. Гэта новая памылка",
        "feedback-bugornote": "Калі Вы гатовы падрабязна апісаць тэхнічную праблему, калі ласка [$1 паведаміце пра памылку]. \nУ адваротным выпадку, Вы можаце выкарыстоўваць простую форму пададзеную ніжэй. Ваш камэнтар будзе дададзены на старонку «[$3 $2]», разам з Вашым іменем удзельніка і выкарыстоўваемым браўзэрам.",
-       "feedback-subject": "Тэма:",
-       "feedback-message": "Паведамленьне:",
        "feedback-cancel": "Скасаваць",
-       "feedback-submit": "Даслаць водгук",
-       "feedback-adding": "Даданьне водгуку на старонку…",
+       "feedback-close": "Выканана",
        "feedback-error1": "Памылка: невядомы вынік з API",
        "feedback-error2": "Памылка рэдагаваньня",
        "feedback-error3": "Памылка: няма адказу ад API",
+       "feedback-message": "Паведамленьне:",
+       "feedback-subject": "Тэма:",
+       "feedback-submit": "Даслаць водгук",
        "feedback-thanks": "Дзякуй! Ваш водгук быў разьмешчаны на старонцы «[$2 $1]».",
-       "feedback-close": "Выканана",
-       "feedback-bugcheck": "Выдатна! Толькі праверце, магчыма гэтыя памылкі ўжо [$1 вядомыя].",
-       "feedback-bugnew": "Я праверыў. Гэта новая памылка",
        "searchsuggest-search": "Пошук",
        "searchsuggest-containing": "утрымлівае...",
        "api-error-badaccess-groups": "У Вас няма дазволу загружаць файлы ў гэтую вікі.",
index a56ea8c..31853ac 100644 (file)
        "logentry-upload-revert": "$1 {{GENDER:$2|уклаў|уклала}} $3",
        "rightsnone": "(няма)",
        "revdelete-summary": "тлумачэнне праўкі",
+       "feedback-adding": "Даданне водгуку на старонку…",
+       "feedback-bugcheck": "Выдатна! Толькі праверце, што ў спісе [$1 вядомых памылак] яе няма падобнага запісу.",
+       "feedback-bugnew": "Я праверыў. Паведаміць пра новую памылку",
        "feedback-bugornote": "Калі вы гатовыя падрабязна апісаць тэхнічную праблему, калі ласка, [$1 паведаміце пра памылку].\nУ адваротным выпадку вы можаце выкарыстоўваць гэтую простую форму. Ваш каментар будзе дададзены на старонку «[$3 $2]» разам з вашым імем удзельніка і выкарыстоўваемым браўзерам.",
-       "feedback-subject": "Тэма:",
-       "feedback-message": "Паведамленне",
        "feedback-cancel": "Адмена",
-       "feedback-submit": "Даслаць водгук",
-       "feedback-adding": "Даданне водгуку на старонку…",
+       "feedback-close": "Зроблена.",
        "feedback-error1": "Памылка. Невядомы вынік з API",
        "feedback-error2": "Памылка. Збой праўкі",
        "feedback-error3": "Памылка. Няма адказу ад API",
+       "feedback-message": "Паведамленне",
+       "feedback-subject": "Тэма:",
+       "feedback-submit": "Даслаць водгук",
        "feedback-thanks": "Дзякуй! Ваш водгук размешчаны на старонцы «[$2 $1]».",
-       "feedback-close": "Зроблена.",
-       "feedback-bugcheck": "Выдатна! Толькі праверце, што ў спісе [$1 вядомых памылак] яе няма падобнага запісу.",
-       "feedback-bugnew": "Я праверыў. Паведаміць пра новую памылку",
        "searchsuggest-search": "Знайсці",
        "searchsuggest-containing": "змяшчае...",
        "api-error-badaccess-groups": "У Вас няма дазволу загружаць файлы ў гэтую вікі.",
index 2f10797..f540d61 100644 (file)
        "logentry-rights-autopromote": "$1 е автоматично {{GENDER:$2|повишен|повишена}} от $4 до $5",
        "rightsnone": "(никакви)",
        "revdelete-summary": "резюме",
+       "feedback-adding": "Добавяне на коментар към страницата...",
+       "feedback-bugcheck": "Страхотно! Само проверете дали това не сред вече [$1 докладваните грешки].",
+       "feedback-bugnew": "Проверих. Докладвай за нова грешка",
        "feedback-bugornote": "Ако сте готови подробно да опишете технически проблем, моля [$1 докладвайте го тук].\nВ противен случай, можете да използвате лесния формуляр по-долу. Коментарът ви ще бъде добавен към страницата \"[$3 $2]\", наред с вашето потребителско име.",
-       "feedback-subject": "Тема:",
-       "feedback-message": "Съобщение:",
        "feedback-cancel": "Отказване",
-       "feedback-submit": "Оставяне на коментар",
-       "feedback-adding": "Добавяне на коментар към страницата...",
+       "feedback-close": "Готово",
        "feedback-error1": "Грешка: Неразпознат резултат от API",
        "feedback-error2": "Грешка: Неуспешна редакция",
        "feedback-error3": "Грешка: Няма отговор от API",
+       "feedback-message": "Съобщение:",
+       "feedback-subject": "Тема:",
+       "feedback-submit": "Оставяне на коментар",
        "feedback-thanks": "Благодарности! Вашата обратна информация е публикувана на страницата „[$2  $1]“.",
-       "feedback-close": "Готово",
-       "feedback-bugcheck": "Страхотно! Само проверете дали това не сред вече [$1 докладваните грешки].",
-       "feedback-bugnew": "Проверих. Докладвай за нова грешка",
        "searchsuggest-search": "Търсене",
        "api-error-badaccess-groups": "Нямате необходимите права, за да качвате файлове в това уики.",
        "api-error-badtoken": "Вътрешна грешка: неправилен маркер.",
index 15759a5..f43a018 100644 (file)
        "disclaimers": "تکذیب‌ نامه‌هان",
        "disclaimerpage": "Project:ئمومی ئین تکذیب‌ نامه",
        "edithelp": "کومک په ایدیت ئی خاتیرا",
+       "helppage-top-gethelp": "کومک",
        "mainpage": "بُنیادی تاکدیم",
        "mainpage-description": "بُنیادی تاکدیم",
        "policy-url": "Project:سیاست‌ئان",
        "readonly_lag": "مئلوماتین بانک بی انونین وختا اتوماتیکین رکما قُلپ بوته تا که پشتوانی ئی و بُنیادی ئین نخسه گو وت هماهنگ بیئنت",
        "internalerror": "داخلین خطا",
        "internalerror_info": "داخلین خطا: $1",
+       "internalerror-fatal-exception": "خرابکارین استسنائین نمونه \"$1\"",
        "filecopyerror": "نه شه فایل «$1» بی «$2» کاپی بیئت.",
        "filerenameerror": "نه شه فایل «$1» بی «$2» تغیر نام بیئت.",
        "filedeleteerror": "نه بوت فایل «$1» پاک بیئت.",
        "spamprotectiontitle": "سپم ئانی فیلترینگ",
        "spambot_username": "میدیا ویکی ئی تمیزکاری شه سپم هان",
        "spam_reverting": "بیئرگردینتین آخیرین نخسه ئی که بئ $1 ئا لینک نداریت.",
+       "spam_deleting": "موچین نخسه ئان که گۆ\t  $1 ئا لینک انتت، بئ پاک کورتین حالا",
        "simpleantispam-label": "انتی-سپم ئی چیک .\nای قسمت ئا پُر  '''مه کنیت'''!",
        "pageinfo-title": "مئلومات په «$1» ئا",
        "pageinfo-header-basic": "بُنادین مئلومات",
        "pageinfo-toolboxlink": "تاکدیمئ مئلومات",
        "pageinfo-redirectsto": "تغییر مسیر بی",
        "pageinfo-redirectsto-info": "مئلومات",
+       "pageinfo-contentpage": "هیساب بوته بئ ئنوان مهتوائین دیمی",
        "pageinfo-contentpage-yes": "هان",
        "pageinfo-protect-cascading-yes": "هان",
        "pageinfo-category-info": "تهری مئلومات",
        "pageinfo-category-pages": "تاکدیمانی نمبر",
+       "pageinfo-category-subcats": "گۆنڈ تهرئانی اندازه گ",
        "pageinfo-category-files": "فایلانی اندازگ",
        "markaspatrolleddiff": "گشت وارته ئین ئانی برچسپ جتین",
        "markaspatrolledtext": "بئ دیما گشت وارته ئین ئی برچسپ بجن",
        "markedaspatrolled": "گشت وارته ئی برچسپ جته بوت",
+       "markedaspatrolledtext": "بئ انتخاب بوته ئین نخسه شه  [[:$1]] ئا گشت وارته ئین مارک جه ته بوت.",
+       "rcpatroldisabled": "آخیرئین تغیرائانی مارک جه تین غیرپئال اینت",
        "markedaspatrollederror": "گشت وارته ئی برچسپ جته نه بوت",
+       "markedaspatrollederrortext": "یک نخسه ئی را نشانی بکنیت تا مارک بۆارت.",
+       "markedaspatrollederror-noautopatrol": "شما توانیت وتي تغیرائانه مارک بجنیت.",
+       "markedaspatrollednotify": "ای تغیر بئ $1 سرا مارک وارت.",
        "markedaspatrollederrornotify": "گشت وارته ئی برچسپ جتین ناکام ات.",
        "patrol-log-page": "گشتئ سیاه چال",
+       "patrol-log-header": "ای سیاهه شه گشت وارته ئین ایڈیٹ ئان است.",
        "log-show-hide-patrol": "$1 گشت جنوکین سیاهه",
        "deletedrevision": "$1 قدیمی پاک بوته ئین نخسه ئی است",
        "filedeleteerror-short": "خطا بئ فایلی پاک کورتین: $1",
        "filedeleteerror-long": "بی پدا  پاک کورتین ئی وختا خطا رخ دات:\n\n$1",
        "previousdiff": "→دیمتیرین ئی فرق",
        "nextdiff": "نۆکتیرین ئی فرق ←",
+       "mediawarning": "'''هشدار''': ای فایل ممکن اینت که شه خراب ئین کودئان داشته بئیت .\nگۆ آوانی اجرا کورتین ئا ممکن اینت که بئ شمی کمپیوترا تاوان برسیت.",
+       "thumbsize": "ناهُنی ئین بند ئی اندازه گ:",
        "widthheightpage": "$1×$2، $3 {{PLURAL:$3|تاکدیم|تاکدیم}}",
        "file-info": "فایلئ اندازه گ: $1، نوع  MIME $2",
        "file-info-size": "<span dir=\"ltr\">$1 × $2</span> پیکسل، فایلئ اندازه گ: $3، نوع MIME فایلئ: $4",
        "file-info-size-pages": "<span style=\"direction:ltr\">$1 × $2</span> نقطه، فایلئ حجم: $3، نوع MIME فایل: $4، $5 تاکدیم",
        "file-nohires": "گیشتیرین تفکیک پذیری بئ دسترس ئا نه اینت.",
        "svg-long-desc": "اس‌وی‌جی ئی فایل، گۆ\t ابئاد <span dir=\"ltr\">$1 × $2</span> پیکسل، فایل اندازه گ: $3",
+       "svg-long-error": "SVG ئی فایل ناجایز اینت: $1",
        "show-big-image": "اورجینال ئین فایل",
        "show-big-image-preview": "ای دیم دیست ئی اندازه گ: $1.",
        "show-big-image-other": "دیگرین {{PLURAL:$2|کیفیت|کیفیت‌هان}}: $1.",
        "exif-bitspersample": "نقطه بئ هر جز ئی تا",
        "exif-photometricinterpretation": "ٹیک ئانی ترکیب",
        "exif-orientation": "نیمگ ، جهت",
+       "exif-samplesperpixel": "اجزائانی اندازه گ",
+       "exif-planarconfiguration": "دیتا ئی آرایش",
+       "exif-ycbcrsubsampling": "جه هل نمونگ نسبت  Y بئ C",
        "exif-ycbcrpositioning": "Y و C موقیعتان",
        "exif-xresolution": "افقی ئین تفکیک پذیری",
        "exif-yresolution": "عمودین تفکیک پذیری",
        "exif-jpeginterchangeformat": "جابه‌جایی نسبت بئ JPEG SOI",
        "exif-jpeginterchangeformatlength": "بایٹ  JPEG ئی دیتایی",
        "exif-whitepoint": "سپیتین ٹیکئ رنگینی",
+       "exif-primarychromaticities": "اولویتانی رنگیری",
        "exif-datetime": "فایلی تغیر ئی وخت و تاریخ",
        "exif-imagedescription": "اکسئ ئنوان",
        "exif-make": "کامره ئی جۆڑ کنۆکین شرکت",
        "exif-subjectarea": "جسم ئی مساحت",
        "exif-flashenergy": "پلاش ئی قدرت",
        "exif-subjectlocation": "سوژه ئی مکان",
+       "exif-exposureindex": "نوردهگی شاخس",
+       "exif-sensingmethod": "هسگری روش",
        "exif-filesource": "فایلئ منشا",
+       "exif-scenetype": "سه هنه ئی ره کم",
+       "exif-customrendered": "سه پاریشی ئی اکس ئی زوهور",
+       "exif-exposuremode": "نوردهگی هالت",
+       "exif-whitebalance": "سپیت ئین رنگی ته هادول (white balance)",
+       "exif-digitalzoomratio": "دیجیتالین نه زیننکی ئی نیسبت",
+       "exif-gaincontrol": "سه هنه ئی تنزیم",
        "exif-contrast": "کنتراست",
        "exif-saturation": "رنگئ بَزئ",
        "exif-sharpness": "وضوح",
        "exif-gpslongitude": "جوگرافیایی ئین تچکی",
        "exif-gpsaltitude": "بُرزئ",
        "exif-gpstimestamp": "جی‌پی‌اس ئی وخت (اتمی ئین سائت)",
+       "exif-gpsspeed": "جی پی اس ئی گیروکی سور ئه ت",
+       "exif-gpsimgdirection": "اکس ئی نیمه گ",
+       "exif-gpsmapdatum": "جیودیستک ئی نخشه برداری ئی مه لومات",
+       "exif-gpsdestlongitude": "مخسه د ئی جوغراپیائی تچکی",
+       "exif-gpsdestdistance": "پاسیله تا مخسه د ئا",
+       "exif-gpsprocessingmethod": "GPS ئی پروسیس ئی میتود ئی نام",
        "exif-gpsareainformation": "جی‌پی‌اس ئی ناحیه ئی نام",
        "exif-gpsdatestamp": "جی پی اس ئی تاریخ",
+       "exif-jpegfilecomment": "JPEG ئی فایل ئی توزی ئات",
        "exif-keywords": "کیبورد",
        "exif-worldregiondest": "جهانئ منطقه نشان داته بوته",
        "exif-countrydest": "مُلک نشان داته بوته",
        "exif-iimcategory": "تهر",
        "exif-iimsupplementalcategory": "تکمیلین تهر ئان",
        "exif-datetimereleased": "منتشر بوته بی",
+       "exif-identifier": "شناسگ",
        "exif-lens": "استفاده بوته ئین لینز",
        "exif-serialnumber": "کامره ئی سریال نمبر",
        "exif-cameraownername": "کامره ئی واوُند",
        "exif-giffilecomment": "GIF ئی فایلی شرح",
        "exif-intellectualgenre": "مورید ئی رقم",
        "exif-subjectnewscode": "موضو ئی کود",
+       "exif-compression-3": "سی‌سی‌آی‌تی‌تی ئی نمبرئانی ۳ گروپ کودگذاری کورتین",
+       "exif-compression-4": "سی‌سی‌آی‌تی‌تی ئی نمبرئانی ۴ گروپ کودگذاری کورتین",
        "exif-copyrighted-true": "کاپی رایت بوت",
        "exif-unknowndate": "نامئلومین تاریخ",
        "exif-orientation-1": "نورمال",
+       "exif-orientation-2": "اوپۆکی ئین پۆشت و دیم بوته ئین",
        "exif-orientation-3": "۱۸۰ درجه چرخ وارته",
+       "exif-orientation-4": "ئۆمودی ئین پۆشت و دیم بوته ئین",
        "exif-componentsconfiguration-0": "وجود نداریت",
        "exif-exposureprogram-0": "تئریپ نه بوته",
        "exif-exposureprogram-1": "دستی",
        "exif-lightsource-255": "نور ئی دیگه منشا ئان",
        "exif-flash-fired-0": "پلاش جته نه بوت",
        "exif-flash-fired-1": "گو پلاش جتینا",
+       "exif-flash-mode-3": "اوتوماتیکین هاله ت",
+       "exif-flash-redeye-1": "چمانی سۆر ئی زیان کورتین",
+       "exif-focalplaneresolutionunit-2": "اینچ",
+       "exif-sensingmethod-1": "ته ریپ نه بوته",
        "exif-customrendered-0": "عادین ظهور",
        "exif-customrendered-1": "سفارشین ظهور",
        "exif-exposuremode-0": "اوتوماتیکین نوردهی",
        "exif-exposuremode-1": "دستئ نور دهی",
        "exif-exposuremode-2": "Auto bracket",
+       "exif-whitebalance-0": "سپیت ئین رنگی ته هادل ئی اوتوماتیکین تنزیم (white balance)",
+       "exif-whitebalance-1": "سپیت ئین رنگی ته هادل ئی دستی ئین تنزیم (white balance)",
        "exif-scenecapturetype-0": "سٹاندارت",
        "exif-scenecapturetype-1": "چم چران",
        "exif-scenecapturetype-2": "پرتره",
        "namespacesall": "موچ",
        "monthsall": "موچ",
        "confirmemail": "ایمیل ادرسی تائید کورتین",
+       "confirmemail_needlogin": "په وتي ایمیل ئی تائید بوتین ئا خاتیرا په $1 ئا زه رورت داریت.",
+       "confirmemail_success": "شمی ایمیل ادرس تائید بوته.\n\nهمی انون توانیت که [[Special:UserLogin|سایٹ تا داخل به ئیت]] و شه ویکی ئا لیزت به ریت.",
        "confirmemail_loggedin": "شمی ایمیل ادرس انون تائید بوت.",
        "confirmemail_subject": "شمی ایمیل ادرس ئی تأییدی {{SITENAME}}",
        "confirmemail_body": "یک نپر، احتمالاً که شما وت ، شه $1 ئی آی پی ادرس ئا یک کار زوروکئ حساب گۆ «$2» ئی ناما بئ ای ایمیل ادرس ئی تا بئ  {{SITENAME}} ئی تا جۆڑ کورته است.\n\nپه تأیید کورتین ایشی  که ای حساب واقئاً بئ شما مربوت اینت و هم پئال کورتین {{SITENAME}} ایمیلی امکاناتانی خاتیرا ، جهلگی لینک ئا بئ وتي بروزیر ئی تا پاچ بکنیت:\n\n$3\n\nاگر شما ای کار زوروکین حساب ئا راجستر *نه کورته ئیت*، مهربانی بکنیت جهلگی لینک \nئی پدا بگیرێت تا که ای ایمیل ادرس ئی تایید بند بێت:\n\n$5\n\nای تاییدی ئی کوڈ بئ تاریخ $4 ئا شه بین ئه رۆت.\n</div>",
+       "confirmemail_body_changed": "یک نپر، احتمالاً که شما وت ، شه $1 ئی آی پی ادرس ئا یک کار زوروکئ حساب گۆ «$2» ئی ناما بئ ای ایمیل ادرس ئی تا بئ  {{SITENAME}} ئی تا تغیر داته است.\n\nپه تأیید کورتین ایشی  که ای حساب واقئاً بئ شما مربوت اینت و هم پئال کورتین {{SITENAME}} ایمیلی امکاناتانی خاتیرا ، جهلگی لینک ئا بئ وتي بروزیر ئی تا پاچ بکنیت:\n\n$3\n\nاگر شما ای کار زوروکین حساب ئا راجستر *نه کورته ئیت*، مهربانی بکنیت جهلگی لینک \nئی پدا بگیرێت تا که ای ایمیل ادرس ئی تایید بند بێت:\n\n$5\n\nای تاییدی ئی کوڈ بئ تاریخ $4 ئا شه بین ئه رۆت.",
+       "confirmemail_body_set": "یک نپر، احتمالاً که شما وت ، شه $1 ئی آی پی ادرس ئا یک کار زوروکئ حساب گۆ «$2» ئی ناما بئ ای ایمیل ادرس ئی تا بئ  {{SITENAME}} نشانی ئا تغیر دات.\n\nپه تأیید کورتین ایشی  که ای حساب واقئاً بئ شما مربوت اینت و هم پئال کورتین {{SITENAME}} ایمیلی امکاناتانی خاتیرا ، جهلگی لینک ئا بئ وتي بروزیر ئی تا پاچ بکنیت:\n\n$3\n\nاگر شما ای کار زوروکین حساب ئا راجستر *نه کورته ئیت*، مهربانی بکنیت جهلگی لینک \nئی پدا بگیرێت تا که ای ایمیل ادرس ئی تایید بند بێت:\n\n$5\n\nای تاییدی ئی کوڈ بئ تاریخ $4 ئا شه بین ئه رۆت.",
        "confirmemail_invalidated": "ایمیل ادرس ئی تاییدی لگ بوت",
        "invalidateemail": "ایمیل ادرس ئی لگ کورتین",
+       "scarytranscludedisabled": "[ترانسکلۆدینگ میان ویکی ئی په ئال نه اینت]",
        "deletedwhileediting": "'''هشدار''': ای دیم پدا شه آیی که شما آیی ایڈیٹ ئا شرو کورته ئیت، پاک بوته!",
+       "confirmrecreate": "کار زوروک [[User:$1|$1]] ([[User talk:$1|گپ و هبر]]) ای مه قاله ئا پد شه آیی که شوما بئ آیی ایڈی\tٹ کورتین ئا شورو کورتیت ای دلیل ئا پاک کورت :\n: ''$2''\nمهربانی بکنیت تائید بکنیت که شوما ئه لو\tٹیت ای مه قاله ئا پدا جۆڑ بکنیت .",
+       "confirmrecreate-noreason": "کار زوروک [[User:$1|$1]] ([[User talk:$1|گپ و هبر]]) ای دیما پد شه شمئ ایڈی\tٹ ئی شرو ئا پاک کورت. مهربانی بکنیت تائید بکنیت که لو\tٹیت ای دیما پدا جۆڑ بکنیت.",
        "recreate": "پدا جۆڑ کورتین",
        "confirm_purge_button": "قبول داشتین",
+       "confirm-purge-top": "ای دیمی چیهرین هاپیزه ئی پاک کورتین ئا تائید ئه کنیت؟",
        "confirm-watch-button": "قبول داشتین",
+       "confirm-watch-top": "ای دیم بئ شمی دیدارلیست ئا ایزاپه بیئت؟",
        "confirm-unwatch-button": "قبول داشتین",
+       "confirm-unwatch-top": "ای دیم شه شمئ دیدارلیست ئا پاک بیئت؟",
        "quotation-marks": "\"$1\"",
        "imgmultipageprev": "&rarr; دیمتیری تاکدیم",
        "imgmultipagenext": "بئدین تاکدیم &larr;",
        "table_pager_prev": "دیمتیرین تاکدیم",
        "table_pager_first": "اولین تاکدیم",
        "table_pager_last": "آخرین تاکدیم",
+       "table_pager_limit_label": "مواریدئانی اندازه گ بی هر دیمی تا :",
        "table_pager_limit_submit": "برا",
+       "table_pager_empty": "هیچ نتیجه",
+       "autosumm-blank": "تاکدیما خالی کورت",
+       "autosumm-replace": "تاکدیمی جابجایی گۆ '$1'",
+       "autoredircomment": "جهت یی تغیر بئ [[$1]]",
+       "autosumm-new": "نوکین دیمی گۆ «$1» ئا جۆڑ کورت",
+       "autosumm-newblank": "خالی ئین دیمی جۆڑ بوت",
+       "watchlistedit-normal-title": "دیدارلیست ئی ایڈیٹ کورتین",
+       "watchlistedit-normal-legend": "ئینوانانی پاک کورتین شه دیدارلیست ئا",
+       "watchlistedit-normal-submit": "ئنوانانی پاک کورتین",
+       "watchlistedit-normal-done": "$1 ئینوان شه شمی دیدارلیست ئا پاک  {{PLURAL:$1|بوت|بوتنت}}:",
+       "watchlistedit-raw-title": "واچلیستئ آمگین لیستانی ایڈیٹ",
+       "watchlistedit-raw-legend": "واچلیستئ آمگین لیستانی ایڈیٹ",
        "watchlistedit-raw-titles": "ئنوانان:",
+       "watchlistedit-raw-submit": "واچلیست ئی اپڈیٹ",
        "watchlistedit-raw-done": "شمی دیدارلیست اپڈیٹ بوت.",
        "watchlistedit-raw-added": "$1 ئی ئنوان بئ دیدارلیست ئا ایزاپه {{PLURAL:$1|بوت|بوتنت}}:",
        "watchlistedit-raw-removed": "$1 ئی ئنوان پاک {{PLURAL:$1|بوت|بوتنت}}:",
        "watchlistedit-clear-submit": "دیداری ئانی پاک کورتین (ای دائم اینت!)",
        "watchlistedit-clear-done": "شمی دیدارلیست پاک بوت.",
        "watchlistedit-clear-removed": "$1 ئی ئنوان پاک {{PLURAL:$1|بوت|بوتنت}}:",
+       "watchlistedit-too-many": "بازین دیم ایدا په نمایش ئی خاتیرا موجود انت.",
        "watchlisttools-clear": "دیدارلیست ئی پاک کورتین",
        "watchlisttools-raw": "واچلیستئ آمگین لیستانی ایڈیٹ",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|گپ و حبر]])",
        "logentry-upload-revert": "$1 {{GENDER:$2|بُرز کورت}} $3 ئا",
        "rightsnone": "(هیچ)",
        "revdelete-summary": "ایڈیتی خاصه",
-       "feedback-subject": "ئنوان:",
-       "feedback-message": "پیام:",
        "feedback-cancel": "کنسیل",
+       "feedback-close": "کار بوت",
        "feedback-error2": "خطا: پروشت بئ ایڈیٹ ئی تا",
+       "feedback-message": "پیام:",
+       "feedback-subject": "ئنوان:",
        "feedback-thanks": "منتوارن! شمی فیدبک بئ «[$1 $2]» ئی دیمی تا ثبت بوت.",
-       "feedback-close": "کار بوت",
        "searchsuggest-search": "گشتین",
        "api-error-duplicate-popup-title": "تکرارین {{PLURAL:$1|فایل|فایلان}}",
        "api-error-empty-file": "فایلی که دیم داته بوت خالی ات.",
index 1ef0780..d49c547 100644 (file)
        "logentry-newusers-autocreate": "Akun $1 utumatis diulah",
        "rightsnone": "(kadada)",
        "revdelete-summary": "Kasimpulan babakan",
+       "feedback-adding": "Manambahi kitihanbalik ka tungkaran...",
+       "feedback-bugcheck": "Harat! hanyar dipariksa bahwasa ngini lainan salah asa [$1 bug nang dipinandui].",
+       "feedback-bugnew": "Ulun mamariksa. Malapurakan sabuah bug hanyar",
        "feedback-bugornote": "Pabila Pian siap manjalasakan sabuah masalah taknik rinci muhun [lapurakan sabuah bug $1].\nSalain ngitu, Pian kawa mamuruk prmulir nyaman di bawah ngini. Kumintar Pian akan ditambahi ka si tungkaran \"[$3 $2]\", baimbai awan ngaran-pamuruk Pian wan panjalajah nagn Pian puruk.",
-       "feedback-subject": "Parihal:",
-       "feedback-message": "Pasan:",
        "feedback-cancel": "Walangi",
-       "feedback-submit": "Kirimi Kitihanbalik",
-       "feedback-adding": "Manambahi kitihanbalik ka tungkaran...",
+       "feedback-close": "Sudah",
        "feedback-error1": "Kasalahan: kulihan matan API kada-dipinandui",
        "feedback-error2": "Kasalahan: Babakan gagal",
        "feedback-error3": "Kasalahan: Kadada tanggapan matan API",
+       "feedback-message": "Pasan:",
+       "feedback-subject": "Parihal:",
+       "feedback-submit": "Kirimi Kitihanbalik",
        "feedback-thanks": "Tarimakasih! jitihanbalik Pian sudah dipusakan ka si tungkaran \"[$2 $1]\".",
-       "feedback-close": "Sudah",
-       "feedback-bugcheck": "Harat! hanyar dipariksa bahwasa ngini lainan salah asa [$1 bug nang dipinandui].",
-       "feedback-bugnew": "Ulun mamariksa. Malapurakan sabuah bug hanyar",
        "searchsuggest-search": "Gagai",
        "searchsuggest-containing": "isian ...",
        "api-error-missingresult": "Kasalahan intarnal: kada kawa manantuakan napakah panyalinan tuntung.",
index ad9900a..62e3804 100644 (file)
        "qbedit": "সম্পাদনা",
        "qbpageoptions": "এই পাতা",
        "qbmyoptions": "আমার পাতাসমূহ",
-       "faq": "সমà§\8dভাবà§\8dয à¦ªà§\8dরশà§\8dনসমà§\82হ",
+       "faq": "পà§\8dরাà¦\9cিপà§\8dর",
        "faqpage": "Project:প্রাজিপ্র",
        "actions": "কার্যক্রম",
        "namespaces": "নামস্থান",
        "log-name-managetags": "ট্যাগ ব্যবস্থাপনা লগ",
        "rightsnone": "(কিছু নাই)",
        "revdelete-summary": "সম্পাদনা সারাংশ",
+       "feedback-adding": "পাতায় প্রতিক্রিয়া যোগ হচ্ছে...",
+       "feedback-bugcheck": "উত্তম! যাচাই করুন যে এই [$1  জানা বাগের] কোন একটি কিনা।",
+       "feedback-bugnew": "আমি যাচাই করেছি। নতুন বাগ নিবন্ধন করুন।",
        "feedback-bugornote": "কারিগরী ত্রুটির বিস্তারিত বর্ণনা জানতে [$1 বাগ রিপোর্ট করুন]।\nঅথবা নিচের এই সরল ফর্মটি ব্যবহার করতে পারেন। \"[$3 $2]\" পাতায় আপনার ব্যবহারকারী নাম সহ মন্তব্যটি প্রকাশিত হবে।",
-       "feedback-subject": "বিষয়:",
-       "feedback-message": "বার্তা:",
        "feedback-cancel": "বাতিল",
-       "feedback-submit": "প্রতিক্রিয়া জমা",
-       "feedback-adding": "পাতায় প্রতিক্রিয়া যোগ হচ্ছে...",
+       "feedback-close": "সম্পন্ন",
        "feedback-error1": "ত্রুটি: এপিআই হতে অজানা ফলাফল এসেছে",
        "feedback-error2": "ত্রুটি: সম্পাদনা ব্যর্থ",
        "feedback-error3": "ত্রুটি: এপিআই হতে কোন সাড়া নেই",
+       "feedback-message": "বার্তা:",
+       "feedback-subject": "বিষয়:",
+       "feedback-submit": "প্রতিক্রিয়া জমা",
        "feedback-thanks": "ধন্যবাদ! আপনার প্রতিক্রিয়া \"[$2 $1]\" পাতায় পোস্ট করা হয়েছে।",
-       "feedback-close": "সম্পন্ন",
-       "feedback-bugcheck": "উত্তম! যাচাই করুন যে এই [$1  জানা বাগের] কোন একটি কিনা।",
-       "feedback-bugnew": "আমি যাচাই করেছি। নতুন বাগ নিবন্ধন করুন।",
        "searchsuggest-search": "অনুসন্ধান",
        "searchsuggest-containing": "যা আছে...",
        "api-error-badaccess-groups": "আপনার এই উইকিতে ফাইল আপলোডের অনুমতি নেই।",
        "json-error-ctrl-char": "অক্ষর নিয়ন্ত্রণ ত্রুটি, সম্ভবত ভুল এনকোডকৃত",
        "json-error-syntax": "সিনট্যাক্স ত্রুটি",
        "json-error-utf8": "ত্রুটিপূর্ণ ইউটিএফ-৮ অক্ষর, সম্ভবত ভুল এনকোডকৃত",
-       "json-error-unsupported-type": "এনকোড করা যাবে না এমন একটি মানের ধরন দেয়া হয়েছে"
+       "json-error-unsupported-type": "এনকোড করা যাবে না এমন একটি মানের ধরন দেয়া হয়েছে",
+       "headline-anchor-title": "এই অনুচ্ছেদে সংযোগ"
 }
index 50f72da..226a08c 100644 (file)
        "logentry-rights-autopromote": "$1 {{GENDER:$1|je automatski promijenjeno članstvo|su automatski promijenjena članstva}} iz $4 u $5",
        "rightsnone": "(nema)",
        "revdelete-summary": "sažetak",
+       "feedback-adding": "Dodajem povratne informacije na stranicu...",
+       "feedback-bugcheck": "Odlično! Molimo provjerite da se ne radi o nekom [$1 poznatom \"bugu\"].",
+       "feedback-bugnew": "Provjereno. Prijavi novu grešku",
        "feedback-bugornote": "Ako ste spremni detaljno opisati tehnički problem, molimo [$1 prijavite \"bug\" (grešku)].\nInače, možete ispuniti jednostavan obrazac ispod. Vaš komentar bit će dodan na stranicu \"[$3 $2]\" zajedno s Vašim korisničkim imenom.",
-       "feedback-subject": "Tema:",
-       "feedback-message": "Poruka:",
        "feedback-cancel": "Odustani",
-       "feedback-submit": "Pošalji povratnu informaciju",
-       "feedback-adding": "Dodajem povratne informacije na stranicu...",
+       "feedback-close": "Završeno",
        "feedback-error1": "Greška: Neprepoznati rezultat od API",
        "feedback-error2": "Greška: Uređivanje nije uspjelo",
        "feedback-error3": "Greška: Nema odgovora od API",
+       "feedback-message": "Poruka:",
+       "feedback-subject": "Tema:",
+       "feedback-submit": "Pošalji povratnu informaciju",
        "feedback-thanks": "Hvala! Vaša povratna informacija je postavljena na stranicu „[$2 $1]“.",
-       "feedback-close": "Završeno",
-       "feedback-bugcheck": "Odlično! Molimo provjerite da se ne radi o nekom [$1 poznatom \"bugu\"].",
-       "feedback-bugnew": "Provjereno. Prijavi novu grešku",
        "searchsuggest-search": "Traži",
        "searchsuggest-containing": "sadrži...",
        "api-error-badaccess-groups": "Nemate ovlasti da postavljate datoteke na ovoj wiki.",
index 0f2d15b..dc5606b 100644 (file)
        "log-name-managetags": "Registre de gestió d'etiquetes",
        "rightsnone": "(cap)",
        "revdelete-summary": "el resum d'edició",
+       "feedback-adding": "S'està afegint el comentari a la pàgina...",
+       "feedback-bugcheck": "Fantàstic! Comproveu que no sigui un dels [$1 problemes ja coneguts].",
+       "feedback-bugnew": "Ja ho he comprovat. Informeu d'un nou problema",
        "feedback-bugornote": "Si podeu descriure un problema tècnic en detall, [$1 informeu-ne].\nAltrament, podeu fer servir un senzill formulari a continuació. El vostre comentari s'afegirà a la pàgina «[$3 $2]», juntament amb el vostre nom d'usuari i el navegador que esteu emprant.",
-       "feedback-subject": "Assumpte:",
-       "feedback-message": "Missatge:",
        "feedback-cancel": "Canceŀla",
-       "feedback-submit": "Envieu la vostra opinió",
-       "feedback-adding": "S'està afegint el comentari a la pàgina...",
+       "feedback-close": "Fet",
        "feedback-error1": "Error: Resultat de l'API no reconegut",
        "feedback-error2": "Error: Edició fallida",
        "feedback-error3": "Error: No hi ha resposta de l'API",
+       "feedback-message": "Missatge:",
+       "feedback-subject": "Assumpte:",
+       "feedback-submit": "Envia",
        "feedback-thanks": "Gràcies! S'ha publicat la vostra opinió a la pàgina «[$2 $1]».",
-       "feedback-close": "Fet",
-       "feedback-bugcheck": "Fantàstic! Comproveu que no sigui un dels [$1 problemes ja coneguts].",
-       "feedback-bugnew": "Ja ho he comprovat. Informeu d'un nou problema",
        "searchsuggest-search": "Cerca",
        "searchsuggest-containing": "que conté ...",
        "api-error-badaccess-groups": "No teniu permís per a carregar fitxers en aquest wiki.",
        "json-error-utf8": "Caràcters UTF-8 amb errors de format, probablement mal codificats",
        "json-error-recursion": "Una o més referències recursives en el valor per ser codificat",
        "json-error-inf-or-nan": "Un o més valors NAN (número no assignat) o INF (infinit) en el valor per ser codificat",
-       "json-error-unsupported-type": "S'ha donat un valor d'un tipus que no pot ser codificat"
+       "json-error-unsupported-type": "S'ha donat un valor d'un tipus que no pot ser codificat",
+       "headline-anchor-title": "Enllaç a aquesta secció"
 }
index 49e6fd9..188f7c3 100644 (file)
        "revdelete-otherreason": "Кхин бахьна/тӀетохар:",
        "revdelete-reasonotherlist": "Кхин бахьна",
        "revdelete-edit-reasonlist": "Бахьанин могӀам нисбар",
-       "revdelete-offender": "Ð\90гÓ\80она Ð²ÐµÑ\80Ñ\81ен автор:",
+       "revdelete-offender": "Ð\90гÓ\80она Ð²ÐµÑ\80Ñ\81ин автор:",
        "suppressionlog": "Хьулдаран тептар",
        "mergehistory": "Нисдарин истори цхьаьнатохар",
        "mergehistory-box": "Шин агӀона нисдарин истори цхьаьнатохар:",
        "editcomment": "Хийцамаш барна гайтина бахьна: ''$1''.",
        "revertpage": "Нисдарш [[Special:Contributions/$2|$2]] ([[User talk:$2|дийцаре]]) юха даьхна версин [[User:$1|$1]]",
        "revertpage-nouser": "Нисдарш (декъашхочун цӀе хьулйина) юхадаьхина версин {{GENDER:$1|[[User:$1|$1]]}}",
-       "rollback-success": "ЮÑ\85адаÑ\8cÑ\85на $1; Ð½Ð¸Ñ\81даÑ\80Ñ\88, $2 Ð²ÐµÑ\80Ñ\81ен.",
+       "rollback-success": "ЮÑ\85адаÑ\8cÑ\85на $1; Ð½Ð¸Ñ\81даÑ\80Ñ\88, $2 Ð²ÐµÑ\80Ñ\81ин.",
        "sessionfailure-title": "Сеансан гӀалат",
        "sessionfailure": "Карара белхан сеансан гӀалат деллачух тера ду;\nиза дешдерг сацийна «сеанс долаерзийтта».\nДехар до, тӀетаӀе «ЮхугӀо» кнопка, кхин агӀо карлаяккха.",
        "protectlogpage": "Гlаролли тептар",
        "logentry-managetags-create": "$1 {{GENDER:$2|Кхоьллина}} билгало «$4»",
        "rightsnone": "(яц)",
        "revdelete-summary": "хийцамах лаьцна",
+       "feedback-adding": "АгӀона хетарг тӀетохар...",
        "feedback-bugornote": "Хьайн техникин халонах лаьцна яздан хӀума делахь, дехар до, [$1 хаам бе тхоьга].\nДацахь хьан йиш ю хӀокху атта кепаца «[$3 $2]» агӀонг къамел тӀетоха хьан декъашхочун цӀарца, кхин лелош йолу браузер билгал еш.",
-       "feedback-subject": "Къамел:",
-       "feedback-message": "Хаам:",
        "feedback-cancel": "Цаоьшу",
-       "feedback-submit": "Дахьийта хетарг",
-       "feedback-adding": "АгӀона хетарг тӀетохар...",
        "feedback-close": "Кийчча ю",
+       "feedback-message": "Хаам:",
+       "feedback-subject": "Къамел:",
+       "feedback-submit": "Дахьийта хетарг",
        "searchsuggest-search": "Лахар",
        "searchsuggest-containing": "чуьраниг…",
        "api-error-duplicate": "Иштта чулацам болу {{PLURAL:$1|1=[$2 кхин файл]|[$2 кхин файлаш]}} йолуш ю",
index d10bce6..c77b043 100644 (file)
        "logentry-upload-overwrite": "$1 وەشانێکی نوێی $3ی {{GENDER:$2|بار کرد}}",
        "rightsnone": "(ھیچ)",
        "revdelete-summary": "پوختەی دەستکاری",
-       "feedback-subject": "بابەت:",
-       "feedback-message": "پەیام:",
        "feedback-cancel": "ھەڵیوەشێنەوە",
-       "feedback-submit": "تێبینییەکان بنێرە",
        "feedback-close": "کرا",
+       "feedback-message": "پەیام:",
+       "feedback-subject": "بابەت:",
+       "feedback-submit": "تێبینییەکان بنێرە",
        "searchsuggest-search": "گەڕان",
        "searchsuggest-containing": "بە لەبەرگرتنەوەی ...",
        "api-error-empty-file": "ئەو پەڕگەیە کە ناردووتە واڵا بوو.",
index 56ba1ce..75ec097 100644 (file)
@@ -25,7 +25,9 @@
                        "Utar",
                        "Vks",
                        "YjM",
-                       "לערי ריינהארט"
+                       "לערי ריינהארט",
+                       "Cvanca",
+                       "Macofe"
                ]
        },
        "tog-underline": "Podtrhávat odkazy:",
        "versionrequiredtext": "Pro použití této stránky je vyžadováno MediaWiki verze $1. Vizte [[Special:Version|stránku verze]].",
        "ok": "OK",
        "pagetitle": "$1 – {{SITENAME}}",
-       "retrievedfrom": "Citováno z „$1“",
+       "retrievedfrom": "Citováno z \"$1\"",
        "youhavenewmessages": "Máte $1 ($2).",
        "youhavenewmessagesfromusers": "Máte $1 od {{PLURAL:$3|jiného uživatele|$3 jiných uživatelů}} ($2).",
        "youhavenewmessagesmanyusers": "Máte $1 od mnoha dalších uživatelů ($2).",
        "feed-invalid": "Neplatný typ kanálu.",
        "feed-unavailable": "Kanály nejsou dostupné.",
        "site-rss-feed": "RSS kanál {{grammar:2sg|$1}}.",
-       "site-atom-feed": "Atom kanál {{grammar:2sg|$1}}.",
-       "page-rss-feed": "RSS kanál stránky „$1“",
-       "page-atom-feed": "Atom kanál stránky „$1“",
+       "site-atom-feed": "Atom kanál stránky $1",
+       "page-rss-feed": "RSS kanál stránky \"$1\"",
+       "page-atom-feed": "Atom kanál stránky \"$1\"",
        "red-link-title": "$1 (stránka neexistuje)",
        "sort-descending": "Seřadit sestupně",
        "sort-ascending": "Seřadit vzestupně",
        "nstab-help": "Nápověda",
        "nstab-category": "Kategorie",
        "nosuchaction": "Neznámý úkon",
-       "nosuchactiontext": "Činnost („action“) uvedená v URL je neplatná.\nZřejmě jste se při zadávání adresy překlepli nebo jste klikli na chybný odkaz.\nMůže se ale jednat také o chybu {{GRAMMAR:2sg|{{SITENAME}}}}.",
+       "nosuchactiontext": "Akce uvedená v URL je neplatná.\nMožná máte překlep v URL, nebo jste přešli na nesprávný odkaz.\nOpatření uvedené v URL je neplatná.\nMůže to však také odkazovat na chybu v softwaru, jenž je požíván {{SITENAME}}.",
        "nosuchspecialpage": "Neexistující speciální stránka",
        "nospecialpagetext": "<strong>Zadali jste neplatnou speciální stránku.</strong>\n\nZkuste se podívat na [[Special:SpecialPages|seznam všech existujících speciálních stránek]].",
        "error": "Chyba",
        "readonly": "Databáze je uzamčena",
        "enterlockreason": "Udejte důvod zamčení, včetně odhadu, za jak dlouho dojde k odemčení.",
        "readonlytext": "Databáze je nyní uzamčena, takže nelze ukládat nové doplňky a změny. Důvodem je pravděpodobně pravidelná údržba, po které se vše vrátí do normálního stavu.\n\nSprávce serveru, který databázi zamkl, poskytl toto zdůvodnění: $1",
-       "missing-article": "V databázi nebyl nalezen požadovaný text stránky „$1“ $2.\n\nToto je obvykle způsobeno tím, že jste následovali zastaralý odkaz na rozdíl verzí nebo historickou verzi stránky, jež byla smazána.\n\nNení-li toto váš případ, možná jste nalezli chybu v softwaru. Prosíme, ohlaste to [[Special:ListUsers/sysop|správcům]] spolu s URL této stránky.",
+       "missing-article": "V databázi nebyl nalezen požadovaný text stránky \"$1\" $2.\n\nToto je obvykle způsobeno tím, že jste následovali zastaralý odkaz na odlišnou verzi nebo historickou verzi stránky, která již byla smazána.\n\nNení-li toto váš případ, možná jste nalezli chybu v softwaru. Prosíme, nahlaste ji [[Special:ListUsers/sysop|správcům]] spolu s URL této stránky.",
        "missingarticle-rev": "(číslo revize: $1)",
        "missingarticle-diff": "(Rozdíl: $1, $2)",
        "readonly_lag": "Databáze byla automaticky dočasně uzamčena kvůli zpoždění ostatních databázových serverů oproti hlavnímu",
        "internalerror": "Vnitřní chyba",
        "internalerror_info": "Vnitřní chyba: $1",
-       "internalerror-fatal-exception": "Kritická výjimka typu „$1“",
+       "internalerror-fatal-exception": "Kritická výjimka typu \"$1\"",
        "filecopyerror": "Nebylo možné zkopírovat soubor  „$1“ na „$2“.",
        "filerenameerror": "Nebylo možné přejmenovat soubor „$1“ na „$2“.",
        "filedeleteerror": "Nebylo možné smazat soubor „$1“.",
        "directorycreateerror": "Nelze vytvořit adresář „$1“.",
-       "directoryreadonlyerror": "Adresář „$1“ je pouze pro čtení.",
-       "directorynotreadableerror": "Adresář „$1“ nelze číst.",
-       "filenotfound": "Nebylo možné najít soubor „$1“.",
+       "directoryreadonlyerror": "Adresář \"$1\" je pouze pro čtení.",
+       "directorynotreadableerror": "Adresář \"$1\" nelze číst.",
+       "filenotfound": "Nebylo možné najít soubor \"$1\".",
        "unexpected": "Neočekávaná hodnota: \"$1\"=\"$2\".",
        "formerror": "Chyba: nebylo možné odeslat formulář",
-       "badarticleerror": "Tuto činnost nelze na této stránce provést.",
+       "badarticleerror": "Tuto činnost nelze na stránce provést.",
        "cannotdelete": "Nebylo možné smazat stránku nebo soubor „$1“.\nMožná už byl(a) smazán(a) někým jiným.",
        "cannotdelete-title": "Stránku „$1“ nelze smazat",
        "delete-hook-aborted": "Smazání bylo bez bližšího vysvětlení zrušeno přípojným bodem.",
        "userlogout": "Odhlášení",
        "notloggedin": "Nejste přihlášen(a)",
        "userlogin-noaccount": "Nemáte účet?",
-       "userlogin-joinproject": "Přidejte se k {{grammar:3sg|{{SITENAME}}}}",
+       "userlogin-joinproject": "Přidejte se k {{SITENAME}}",
        "nologin": "Dosud nemáte účet? $1.",
        "nologinlink": "Zaregistrujte se",
        "createaccount": "Vytvořit účet",
        "password-login-forbidden": "Použití tohoto uživatelského jména a hesla bylo zakázáno.",
        "mailmypassword": "Poslat nové heslo",
        "passwordremindertitle": "Nové dočasné heslo na {{grammar:4sg|{{SITENAME}}}}",
-       "passwordremindertext": "Někdo (patrně vy, z IP adresy $1) požádal o nové heslo\npro přihlášení do {{grammar:2sg|{{SITENAME}}}} ($4). Uživateli „$2“ bylo\nproto nastaveno dočasné heslo „$3“. Pokud jste to byl(a) vy, můžete se\nnyní přihlásit a zvolit si nové heslo. Platnost tohoto dočasného hesla\nvyprší za {{PLURAL:$5|jeden den|$5 dny|$5 dní}}.\n\nPokud jste o změnu hesla nežádal(a) nebo jste si na původní heslo již\nvzpomněl(a) a už ho změnit nechcete, můžete tuto zprávu ignorovat\na používat staré heslo.",
+       "passwordremindertext": "Někdo (patrně vy, z IP adresy $1) požádal o nové heslo\npro přihlášení k {{SITENAME}} ($4). Uživateli \"$2\" bylo\nproto nastaveno dočasné heslo \"$3\". Pokud jste to byl(a) vy, můžete se nyní přihlásit a zvolit si nové heslo. Platnost tohoto dočasného hesla vyprší za {{PLURAL:$5|jeden den|$5 dní}}.\n\nPokud jste o změnu hesla nežádal(a) nebo jste si na původní heslo již vzpomněl(a) a už ho změnit nechcete, můžete tuto zprávu ignorovat a používat staré heslo.",
        "noemail": "Uživatel „$1“ nemá zaregistrovanou e-mailovou adresu.",
        "noemailcreate": "Musíte uvést platnou e-mailovou adresu",
        "passwordsent": "Dočasné heslo bylo zasláno na e-mailovou adresu registrovanou pro „$1“. Přihlaste se, prosím, znovu, jakmile ho obdržíte.",
        "eauthentsent": "Na zadanou adresu byl zaslán potvrzovací e-mail.\nŽádné další zprávy vám však na tuto adresu nebudou odeslány, dokud podle instrukcí v e-mailu nepotvrdíte, že tato adresa skutečně patří vám.",
        "throttled-mailpassword": "Během {{PLURAL:$1|poslední hodiny|posledních $1 hodin}} již bylo heslo jednou zasláno.\nKvůli prevenci zneužívání lze heslo zaslat jen jednou za $1 {{PLURAL:$1|hodinu|hodiny|hodin}}.",
        "mailerror": "Chyba při zasílání e-mailu: $1",
-       "acct_creation_throttle_hit": "Uživatelé používající vaši IP adresu už dnes vytvořili $1 {{PLURAL:$1|účet|účty|účtů}}, což je dovolené maximum. Proto není v tuto chvíli dovoleno z této IP adresy zakládat další účty.",
+       "acct_creation_throttle_hit": "Uživatelé používající vaši IP adresu už dnes vytvořili $1 {{PLURAL:$1|účet|účty|účtů}}, což je dovolené maximum.\nProto není v tuto chvíli dovoleno z této IP adresy zakládat další účty.",
        "emailauthenticated": "Vaše e-mailová adresa byla ověřena $2 v $3.",
        "emailnotauthenticated": "Vaše e-mailová adresa dosud nebyla ověřena.\nU následujících funkcí nebudou zasílány žádné e-maily.",
        "noemailprefs": "Pro zprovoznění následujících možností musíte zadat svou e-mailovou adresu.",
        "accountcreated": "Účet vytvořen",
        "accountcreatedtext": "Uživatelský účet [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|diskuse]]) byl vytvořen.",
        "createaccount-title": "Vytvoření účtu na {{grammar:6sg|{{SITENAME}}}}",
-       "createaccount-text": "Někdo na {{grammar:6sg|{{SITENAME}}}} ($4) vytvořil účet s vaší e-mailovou adresou.\nJméno účtu: „$2“\nHeslo: „$3“\nMěli byste se co nejdřív přihlásit a změnit si heslo.\n\nPokud byl účet vytvořen omylem, považujte tuto zprávu za bezpředmětnou.",
+       "createaccount-text": "Někdo na {{SITENAME}} ($4) vytvořil účet s vaší e-mailovou adresou.\nJméno účtu: „$2“\nHeslo: „$3“\nMěli byste se co nejdřív přihlásit a změnit si heslo.\n\nPokud byl účet vytvořen omylem, považujte tuto zprávu za bezpředmětnou.",
        "login-throttled": "Provedli jste příliš mnoho pokusů o přihlášení.\nNež to zkusíte znovu, musíte počkat na vypršení lhůty $1.",
        "login-abort-generic": "Vaše přihlášení se nezdařilo – přerušeno",
        "login-migrated-generic": "Váš účet byl zmigrován a vaše uživatelské jméno již nadále na této wiki neexistuje.",
        "resetpass-submit-cancel": "Storno",
        "resetpass-wrong-oldpass": "Nesprávné dočasné nebo aktuální heslo.\nMožná jste si již úspěšně heslo změnili, nebo jste si vyžádali nové dočasné heslo.",
        "resetpass-recycled": "Jako nové heslo si prosím nastavte něco jiného než stávající heslo.",
-       "resetpass-temp-emailed": "Přihlašujete se dočasným heslem, zaslaným e-mailem.\nAbyste dokončili přihlášení, nastavte si zde nové heslo:",
+       "resetpass-temp-emailed": "Přihlašujete se pomocí dočasného hesla, které bylo zasláno e-mailem.\nAbyste dokončili přihlášení, nastavte si nové heslo:",
        "resetpass-temp-password": "Dočasné heslo:",
        "resetpass-abort-generic": "Změna hesla byla zablokována rozšířením.",
        "resetpass-expired": "Platnost vašeho hesla vypršela. Pro přihlášení si nastavte nové heslo.",
        "passwordreset-capture-help": "Pokud zaškrtnete toto políčko, bude e-mail (s dočasným heslem) kromě zaslání uživateli zobrazen i vám.",
        "passwordreset-email": "E-mailová adresa:",
        "passwordreset-emailtitle": "Informace k účtu na {{grammar:6sg|{{SITENAME}}}}",
-       "passwordreset-emailtext-ip": "Někdo (patrně vy, z IP adresy $1) zažádal na {{grammar:6sg|{{SITENAME}}}} ($4) o nastavení nového hesla k vašemu účtu. K této adrese {{PLURAL:$3|je přiřazen následující účet|jsou přiřazeny následující účty}}:\n\n$2\n\n{{PLURAL:$3|Toto dočasné heslo|Tato dočasná hesla}} vyprší {{PLURAL:$5|za jeden den|za $5 dny|za $5 dnů}}.\nNyní byste se měl(a) přihlásit a zvolit si nové heslo. Pokud tento požadavek\nposlal někdo jiný nebo jste si na své staré heslo vzpomněl(a), a nechcete ho\ntedy změnit, můžete tuto zprávu ignorovat a nadále používat původní heslo.",
+       "passwordreset-emailtext-ip": "Někdo (patrně vy, z IP adresy $1) zažádal na {{grammar:6sg|{{SITENAME}}}} ($4) o nastavení nového hesla k vašemu účtu. K této adrese {{PLURAL:$3|je přiřazen následující účet|jsou přiřazeny následující účty}}:\n\n$2\n\n{{PLURAL:$3|Toto dočasné heslo|Tato dočasná hesla}} vyprší za {{PLURAL:$5|jeden den|$5 dny|$5 dnů}}.\nNyní byste se měli přihlásit a zvolit si nové heslo. Pokud tento požadavek poslal někdo jiný nebo jste si na své staré heslo vzpomněli, a nechcete ho tedy změnit, můžete tuto zprávu ignorovat a nadále používat původní heslo.",
        "passwordreset-emailtext-user": "{{gender:$1|Uživatel|Uživatelka}} $1 na {{grammar:6sg|{{SITENAME}}}} {{gender:$1|zažádal|zažádala}} na {{grammar:6sg|{{SITENAME}}}} ($4) o nastavení nového hesla k vašemu\núčtu. K této adrese {{PLURAL:$3|je přiřazen následující účet|jsou přiřazeny následující účty}}:\n\n$2\n\n{{PLURAL:$3|Toto dočasné heslo|Tato dočasná hesla}} vyprší {{PLURAL:$5|za jeden den|za $5 dny|za $5 dnů}}.\nNyní byste se měl(a) přihlásit a zvolit si nové heslo. Pokud tento požadavek\nposlal někdo jiný nebo jste si na své staré heslo vzpomněl(a), a nechcete ho\ntedy změnit, můžete tuto zprávu ignorovat a nadále používat původní heslo.",
        "passwordreset-emailelement": "Uživatelské jméno: $1\nDočasné heslo: $2",
        "passwordreset-emailsent": "E-mail pro získání nového hesla byl odeslán.",
        "anoneditwarning": "'''Varování:''' Nejste přihlášen(a). Pokud uložíte jakoukoli editaci, bude vaše IP adresa zveřejněna v historii této stránky. Pokud se <strong>[$1 přihlásíte]</strong> nebo si <strong>[$2 vytvoříte účet]</strong>, budou vaše editace připsány vašemu uživatelskému jménu a získáte i další výhody.",
        "anonpreviewwarning": "''Nejste přihlášen(a). Uložením zveřejníte svou IP adresu v historii této stránky.''",
        "missingsummary": "'''Připomenutí:''' Nezadali jste shrnutí editace. Pokud ještě jednou kliknete na Uložit změny, bude vaše editace zapsána bez shrnutí.",
-       "selfredirect": "<strong>Upozornění:</strong> Pokušíte se tuto stránku přesměrovat samu na sebe.\nMožná jste uvedli chybný cíl přesměrování nebo editujete špatnou stránku.\nPokud ještě jednou kliknete na „{{int:savearticle}}“, bude přesměrování přesto vytvořeno.",
+       "selfredirect": "<strong>Upozornění:</strong> Pokoušíte se tuto stránku přesměrovat na sebe samu.\nMožná jste zadali chybný cíl přesměrování, nebo editujete špatnou stránku.\nPokud ještě jednou kliknete na \"{{int:savearticle}}\", bude i přesto přesměrování vytvořeno.",
        "missingcommenttext": "Zadejte komentář",
        "missingcommentheader": "'''Připomenutí:''' Nezadali jste předmět/nadpis pro tento komentář.\nPokud ještě jednou kliknete na „{{int:savearticle}}“, bude vaše editace zapsána i bez toho.",
        "summary-preview": "Náhled shrnutí:",
        "subject-preview": "Náhled předmětu/nadpisu:",
        "blockedtitle": "Uživatel zablokován",
        "blockedtext": "'''Vaší IP adrese či uživatelskému jménu byla zablokována možnost editace.'''\n\nZablokování provedl{{GENDER:$4||a}} $1.\nUdaným důvodem bylo ''$2''.\n\n* Začátek blokování: $8\n* Zablokování vyprší: $6\n* Blokovaný uživatel: $7\n\nPokud chcete zablokování prodiskutovat, můžete kontaktovat {{GENDER:$4|uživatele|uživatelku}} $1 či jiného [[{{MediaWiki:Grouppage-sysop}}|správce]].\nUvědomte si, že nemůžete použít nabídku „Poslat e-mail“, jestliže nemáte ve svém [[Special:Preferences|nastavení]] uvedenu platnou e-mailovou adresu nebo pokud vám byla tato možnost zakázána.\nVaše IP adresa je $3 a&nbsp;identifikační číslo bloku je #$5; tyto údaje uvádějte ve všech dotazech na správce.",
-       "autoblockedtext": "Vaše IP adresa byla automaticky zablokována, protože ji používal jiný uživatel, kterého zablokoval $1.\nUdaný důvod blokování:\n\n:''$2''\n\n* Začátek blokování: $8\n* Konec blokování: $6\n* Původně blokovaný uživatel: $7\n\nZablokování můžete prodiskutovat se správcem $1 nebo některým z dalších [[{{MediaWiki:Grouppage-sysop}}|správců]].\n\nUvědomte si však, že funkci „Poslat e-mail tomuto uživateli“ nemůžete použít, pokud nemáte ve svém [[Special:Preferences|nastavení]] zadaný platný e-mail a nebylo vám zablokováno jeho užívání.\n\nVaše současná IP adresa je $3, číslo vašeho zablokování je #$5.\nProsíme, uveďte tyto údaje při komunikaci se správci.",
+       "autoblockedtext": "Vaše IP adresa byla automaticky zablokována, protože ji používal jiný uživatel, kterého zablokoval $1.\nUdaný důvod blokování:\n\n:<em>$2</em>\n\n* Začátek blokování: $8\n* Konec blokování: $6\n* Původně blokovaný uživatel: $7\n\nZablokování můžete prodiskutovat se správcem $1 nebo některým z dalších [[{{MediaWiki:Grouppage-sysop}}|správců]].\n\nUvědomte si však, že funkci „Poslat e-mail tomuto uživateli“ nemůžete použít, pokud nemáte ve svém [[Special:Preferences|uživatelském nastavení]] zadaný platný e-mail a nebylo vám zablokováno jeho užívání.\n\nVaše současná IP adresa je $3, číslo vašeho zablokování je #$5.\nProsíme, uveďte tyto údaje při komunikaci se správci.",
        "blockednoreason": "důvod nebyl zadán",
        "whitelistedittext": "Pro editaci se musíte $1.",
        "confirmedittext": "Pro editaci stránek je vyžadováno potvrzení vaší e-mailové adresy. Na stránce [[Special:Preferences|nastavení]] zadejte a nechte potvrdit svou e-mailovou adresu.",
        "loginreqtitle": "Vyžadováno přihlášení",
        "loginreqlink": "přihlásit",
        "loginreqpagetext": "K prohlížení jiných stránek se musíte $1.",
-       "accmailtitle": "Heslo odesláno.",
+       "accmailtitle": "Heslo odesláno",
        "accmailtext": "Náhodně vygenerované heslo pro uživatele [[User talk:$1|$1]] bylo odesláno na $2. Po přihlášení ho bude možno změnit na [[Special:ChangePassword|stránce pro změnu hesla]].",
        "newarticle": "(Nový)",
        "newarticletext": "Následovali jste odkaz na stránku, která dosud neexistuje.\nPokud ji chcete vytvořit, začněte psát do rámečku níže (více informací najdete v [$1 nápovědě]).\nPokud jste zde omylem, stiskněte ve svém prohlížeči tlačítko <strong>Zpět</strong>.",
        "anontalkpagetext": "----''Toto je diskusní stránka anonymního uživatele, který si dosud nevytvořil účet nebo ho nepoužívá. K&nbsp;jeho identifikaci proto musíme používat číselnou IP adresu. Takovou IP adresu může sdílet několik uživatelů. Pokud jste anonymní uživatel a&nbsp;máte za to, že jsou vám adresovány irelevantní komentáře, prosíme, [[Special:UserLogin/signup|vytvořte si účet]] nebo [[Special:UserLogin|se přihlaste]], vyhnete se tím budoucí záměně s&nbsp;jinými anonymními uživateli.''",
        "noarticletext": "Tato stránka zatím neobsahuje žádný text.\nMůžete [[Special:Search/{{PAGENAME}}|zkusit tento název vyhledat]] na jiných stránkách, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} prohlédnout si příslušné protokolovací záznamy] nebo [{{fullurl:{{FULLPAGENAME}}|action=edit}} tuto stránku založit]</span>.",
        "noarticletext-nopermission": "Tato stránka zatím neobsahuje žádný text.\nMůžete [[Special:Search/{{PAGENAME}}|zkusit tento název vyhledat]] na jiných stránkách nebo <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} si prohlédnout příslušné protokolovací záznamy]</span>, ale na založení této stránky nemáte oprávnění.",
-       "missing-revision": "Revize #$1 stránky s názvem „{{FULLPAGENAME}}“ neexistuje.\n\nToto je obvykle způsobeno tím, že jste následovali zastaralý odkaz na historickou verzi stránky, jež byla smazána.\nPodrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} knize smazaných stránek].",
-       "userpage-userdoesnotexist": "Uživatelský účet „<nowiki>$1</nowiki>“ není zaregistrován. Zkontrolujte, zda skutečně chcete vytvořit či editovat tuto stránku.",
+       "missing-revision": "Revize #$1 stránky s názvem \"{{FULLPAGENAME}}\" neexistuje.\n\nTo je obvykle způsobeno přechodem na zastaralý odkaz na historickou verzi stránky, která již byla smazána.\nPodrobnosti naleznete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} logu smazaných stránek].",
+       "userpage-userdoesnotexist": "Uživatelský účet \"$1\" není zaregistrován. Zkontrolujte, zda skutečně chcete vytvořit či editovat tuto stránku.",
        "userpage-userdoesnotexist-view": "Uživatelský účet „$1“ není zaregistrován.",
        "blocked-notice-logextract": "Tento uživatel je momentálně zablokován.\nZde je pro přehled zobrazen nejnovější záznam z knihy zablokování:",
-       "clearyourcache": "'''Poznámka:''' Po uložení musíte smazat cache vašeho prohlížeče, jinak změny neuvidíte.\n* '''Firefox / Safari:''' Při kliknutí na ''Aktualizovat'' držte ''Shift'' nebo stiskněte ''Ctrl-F5'' nebo ''Ctrl-R'' (na Macu ''⌘-R'').\n* '''Google Chrome:''' Stiskněte ''Ctrl-Shift-R'' (na Macu ''⌘-Shift-R'').\n* '''Internet Explorer:''' Při kliknutí na ''Aktualizovat'' držte ''Ctrl'' nebo stiskněte ''Ctrl-F5''.\n* '''Opera:''' Smažte obsah cache v menu ''Nástroje → Nastavení''.",
-       "usercssyoucanpreview": "'''Tip:''' Použijte tlačítko „{{int:showpreview}}“ k testování vašeho nového CSS před uložením.",
-       "userjsyoucanpreview": "'''Tip:''' Použijte tlačítko „{{int:showpreview}}“ k testování vašeho nového JavaScriptu před uložením.",
-       "usercsspreview": "'''Pamatujte, že si prohlížíte jen náhled vašeho uživatelského CSS.'''\n'''Zatím nebylo uloženo!'''",
-       "userjspreview": "'''Pamatujte, že testujete a prohlížíte pouze náhled vašeho uživatelského JavaScriptu, dosud nebyl uložen!'''",
-       "sitecsspreview": "'''Pamatujte, že si prohlížíte jen náhled tohoto CSS.'''\n'''Zatím nebylo uloženo!'''",
-       "sitejspreview": "'''Pamatujte, že testujete a prohlížíte pouze náhled tohoto JavaScriptu.'''\n'''Dosud nebyl uložen!'''",
-       "userinvalidcssjstitle": "'''Varování:''' Vzhled „$1“ neexistuje. Nezapomeňte, že uživatelské .css a .js soubory používají malá písmena, např. {{ns:user}}:{{BASEPAGENAME}}/vector.css, nikoli {{ns:user}}:{{BASEPAGENAME}}/Vector.css.",
+       "clearyourcache": "<strong>Poznámka:</strong> Po uložení musíte smazat cache vašeho prohlížeče, jinak se změny nezobrazí.\n* <strong>Firefox / Safari:</strong> Při kliknutí na <em>Aktualizovat</em> držte <em>Shift</em>, stistkněte <em>Ctrl-F5</em> nebo <em>Ctrl-R</em> (na Macu <em>⌘-R</em>)\n* <strong>Google Chrome:</strong> Stiskněte <em>Ctrl-Shift-R</em> (na Macu <em>⌘-Shift-R</em>)\n* <strong>Internet Explorer:</strong> Při kliknutí na <em>Aktualizovat</em> držte <em>Ctrl</em> nebo stiskněte <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Smažte obsah cache v menu <em>Nástroje → Nastavení</em>",
+       "usercssyoucanpreview": "<strong>Tip:</strong> Použijte tlačítko \"{{int:showpreview}}\" k testování vašeho nového CSS před uložením.",
+       "userjsyoucanpreview": "<strong>Tip:</strong> Použijte tlačítko \"{{int:showpreview}}\" k testování vašeho nového JavaScriptu před uložením.",
+       "usercsspreview": "<strong>Pamatujte, že si prohlížíte jen náhled vašeho uživatelského CSS, jelikož dosud nebyl uložen!</strong>",
+       "userjspreview": "<strong>Pamatujte, že testujete a prohlížíte pouze náhled vašeho uživatelského JavaScriptu, jelikož dosud nebyl uložen!</strong>'",
+       "sitecsspreview": "<strong>Pamatujte, že si prohlížíte jen náhled tohoto CSS, jelikož dosud nebylo uloženo!</strong>",
+       "sitejspreview": "<strong>Pamatujte, že testujete a prohlížíte pouze náhled tohoto JavaScriptu, jelikož dosud nebyl uložen!</strong>",
+       "userinvalidcssjstitle": "<strong>Varování:</strong> Vzhled „$1“ neexistuje. Nezapomeňte, že uživatelské .css a .js soubory používají malá písmena, např. {{ns:user}}:{{BASEPAGENAME}}/vector.css, nikoli {{ns:user}}:{{BASEPAGENAME}}/Vector.css.",
        "updated": "(Změna uložena)",
        "note": "'''Poznámka:'''&nbsp;",
-       "previewnote": "'''Pamatujte, že toto je pouze náhled.'''\nZměny zatím nebyly uloženy!",
+       "previewnote": "<strong>Pamatujte, že toto je pouze náhled.</strong>\nZměny dosud nebyly uloženy!",
        "continue-editing": "Přejít k editačnímu poli",
        "previewconflict": "Tento náhled ukazuje text tak, jak bude vypadat po uložení stránky.",
-       "session_fail_preview": "'''Váš požadavek se nepodařilo zpracovat kvůli ztrátě dat z relace.\nZkuste to prosím znovu.\nPokud se tento problém bude opakovat, zkuste se [[Special:UserLogout|odhlásit]] a znovu přihlásit.'''",
-       "session_fail_preview_html": "'''Váš požadavek se nepodařilo zpracovat kvůli ztrátě dat z relace.'''\n\n''Jelikož má {{SITENAME}} zapnuto používání neomezeného HTML, náhled se kvůli prevenci proti útokům JavaScriptem nezobrazuje.''\n\n'''Pokud jde o zamýšlenou editaci, zkuste to prosím znovu. Pokud se tento problém bude opakovat, zkuste se [[Special:UserLogout|odhlásit]] a znovu přihlásit.'''",
-       "token_suffix_mismatch": "'''Vaše editace byla odmítnuta, protože Váš prohlížeč komolí některé znaky v editovaném textu.\nEditace byla odmítnuta, aby se zabránilo poškození textu stránky.\nToto se někdy může někdy stát, používáte-li chybující webový anonymizér.'''",
-       "edit_form_incomplete": "'''Část editačního formuláře nedorazila na server; překontrolujte úplnost změn a zkuste to znovu.'''",
+       "session_fail_preview": "<strong>Váš požadavek se nepodařilo zpracovat kvůli ztrátě dat z relace.</strong>\nZkuste to prosím znovu.\nPokud se tento problém bude opakovat, zkuste se [[Special:UserLogout|odhlásit]] a znovu přihlásit.",
+       "session_fail_preview_html": "<strong>Váš požadavek se nepodařilo zpracovat kvůli ztrátě dat z relace.</strong>\n\n<em>Jelikož má {{SITENAME}} zapnuto používání neomezeného HTML, náhled se kvůli prevenci proti útokům JavaScriptem nezobrazuje.</em>\n\n<strong>Pokud jde o zamýšlenou editaci, zkuste to prosím znovu.</strong>\nPokud se tento problém bude opakovat, zkuste se [[Special:UserLogout|odhlásit]] a znovu přihlásit.",
+       "token_suffix_mismatch": "<strong>Vaše editace byla odmítnuta, protože Váš prohlížeč špatně interpretuje některé znaky v editovaném textu.</strong>\nEditace byla odmítnuta, aby se zabránilo poškození textu stránky.\nToto se někdy může stát používáte-li chybující webový anonymizér.",
+       "edit_form_incomplete": "<strong>Část editačního formuláře nedorazila na server; překontrolujte úplnost změn a zkuste to znovu.</strong>",
        "editing": "Editace stránky $1",
        "creating": "Vytváření $1",
        "editingsection": "Editace stránky $1 (část)",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|deaktivoval|deaktivovala}} značku „$4“ pro uživatele a boty",
        "rightsnone": "(žádné)",
        "revdelete-summary": "shrnutí editace",
+       "feedback-adding": "Komentář se přidává na stránku…",
+       "feedback-bugcheck": "Skvělé! Jen zkontrolujte, zda se nejedná o jednu z [$1 už známých chyb].",
+       "feedback-bugnew": "Zkontroloval(a) jsem to. Chci ohlásit novou chybu.",
        "feedback-bugornote": "Pokud dokážete podrobně popsat technický problém, můžete [$1 nahlásit chybu].\nJinak můžete využít jednoduchý formulář níže. Váš komentář bude přidán na stránku „[$3 $2]“ spolu s vaším uživatelským jménem a informací o tom, jaký prohlížeč používáte.",
-       "feedback-subject": "Předmět:",
-       "feedback-message": "Zpráva:",
        "feedback-cancel": "Storno",
-       "feedback-submit": "Odeslat komentář",
-       "feedback-adding": "Komentář se přidává na stránku…",
+       "feedback-close": "Hotovo",
        "feedback-error1": "Chyba: Nerozpoznaný výsledek z API",
        "feedback-error2": "Chyba: Editace se nezdařila",
        "feedback-error3": "Chyba: API nevrátilo žádnou odpověď",
+       "feedback-message": "Zpráva:",
+       "feedback-subject": "Předmět:",
+       "feedback-submit": "Odeslat",
        "feedback-thanks": "Děkujeme! Váš komentář byl přidán na stránku „[$2 $1]“.",
-       "feedback-close": "Hotovo",
-       "feedback-bugcheck": "Skvělé! Jen zkontrolujte, zda se nejedná o jednu z [$1 už známých chyb].",
-       "feedback-bugnew": "Zkontroloval(a) jsem to. Chci ohlásit novou chybu.",
        "searchsuggest-search": "Hledat",
        "searchsuggest-containing": "obsahující…",
        "api-error-badaccess-groups": "Nemáte povoleno nahrávat soubory na tuto wiki.",
index 1fd1887..e7e72e8 100644 (file)
        "logentry-upload-revert": "Mae $1 {{GENDER:$2|wedi uwchlwytho}} $3",
        "rightsnone": "(dim)",
        "revdelete-summary": "crynodeb golygu",
+       "feedback-adding": "Wrthi'n ychwanegu adborth i'r dudalen...",
+       "feedback-bugcheck": "Iawn! Gwnewch yn siwr yn gyntaf nag ydy hwn yn un o'r [$1 bygiau hysbys].",
+       "feedback-bugnew": "Edrychais ar y bygiau hysbys. Mae byg newydd gennyf i'w adrodd",
        "feedback-bugornote": "Os ydych yn barod i ddisgrifio problem technegol yn fanwl gallwch [$1 gyflwyno adroddiad am y bỳg]. Fel arall, gallwch ddefnyddio'r ffurflen syml isod. Fe roddir eich sylwadau ar y dudalen \"[$3 $2]\", ynghyd â'ch enw defnyddiwr ac enw'r gweinydd sydd ar waith gennych.",
-       "feedback-subject": "Gwrthrych:",
-       "feedback-message": "Neges:",
        "feedback-cancel": "Diddymer",
-       "feedback-submit": "Cyflwyner yr Adborth",
-       "feedback-adding": "Wrthi'n ychwanegu adborth i'r dudalen...",
+       "feedback-close": "Yn barod",
        "feedback-error1": "Gwall: Canlyniad anhysbys o'r API",
        "feedback-error2": "Gwall: Methodd y golygu",
        "feedback-error3": "Gwall: Dim ymateb gan yr API",
+       "feedback-message": "Neges:",
+       "feedback-subject": "Gwrthrych:",
+       "feedback-submit": "Cyflwyner yr Adborth",
        "feedback-thanks": "Diolch! Gosodwyd eich adborth ar y dudalen \"[$2 $1]\".",
-       "feedback-close": "Yn barod",
-       "feedback-bugcheck": "Iawn! Gwnewch yn siwr yn gyntaf nag ydy hwn yn un o'r [$1 bygiau hysbys].",
-       "feedback-bugnew": "Edrychais ar y bygiau hysbys. Mae byg newydd gennyf i'w adrodd",
        "searchsuggest-search": "Chwilio",
        "searchsuggest-containing": "yn cynnwys...",
        "api-error-badaccess-groups": "Nid oes caniatad gennych i uwchlwytho ffeiliau ar y wici hwn.",
index da4865d..3af9cee 100644 (file)
        "logentry-upload-revert": "$1 {{GENDER:$2|lagde}} $3 op",
        "rightsnone": "(-)",
        "revdelete-summary": "redigeringsbeskrivelse",
+       "feedback-adding": "Tilføjer kommentar til side...",
+       "feedback-bugcheck": "Skønt! Men tjek venligst, at det ikke er en af de [$1 kendte fejl].",
+       "feedback-bugnew": "Jeg har kontrolleret. Rapporter en ny fejl.",
        "feedback-bugornote": "Hvis du er klar til at beskrive et teknisk problem i detaljer, bedes du [$1 rapportere en fejl].\nEllers kan du bruge den enkle formular nedenfor. Din kommentar vil blive tilføjet siden \"[$3 $2]\" sammen med dit brugernavn og den browser, du anvender.",
-       "feedback-subject": "Emne:",
-       "feedback-message": "Besked:",
        "feedback-cancel": "Afbryd",
-       "feedback-submit": "Send kommentar",
-       "feedback-adding": "Tilføjer kommentar til side...",
+       "feedback-close": "Færdig",
        "feedback-error1": "Fejl: Ukendt resultat fra API",
        "feedback-error2": "Fejl: Redigering mislykkedes",
        "feedback-error3": "Fejl: Intet svar fra API",
+       "feedback-message": "Besked:",
+       "feedback-subject": "Emne:",
+       "feedback-submit": "Send kommentar",
        "feedback-thanks": "Tak! Dine tilbagemeldinger er blevet noteret på siden \"[$2 $1]\".",
-       "feedback-close": "Færdig",
-       "feedback-bugcheck": "Skønt! Men tjek venligst, at det ikke er en af de [$1 kendte fejl].",
-       "feedback-bugnew": "Jeg har kontrolleret. Rapporter en ny fejl.",
        "searchsuggest-search": "Søg",
        "searchsuggest-containing": "indeholder...",
        "api-error-badaccess-groups": "Du har ikke tilladelse til at overføre filer til denne wiki.",
index 40befca..c587f45 100644 (file)
        "disclaimers": "Impressum",
        "disclaimerpage": "Project:Impressum",
        "edithelp": "Bearbeitungshilfe",
+       "helppage-top-gethelp": "Hilfe",
        "mainpage": "Hauptseite",
        "mainpage-description": "Hauptseite",
        "policy-url": "Project:Richtlinien",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|deaktivierte}} die Markierung „$4“ zur Verwendung durch Benutzer und Bots",
        "rightsnone": "(–)",
        "revdelete-summary": "Zusammenfassungskommentar",
+       "feedback-adding": "Rückmeldung wird zur Seite hinzugefügt …",
+       "feedback-back": "Zurück",
+       "feedback-bugcheck": "Super! Bitte überprüfe noch, ob es sich hierbei nicht um einen bereits [$1 bekannten Fehler] handelt.",
+       "feedback-bugnew": "Ich habe es überprüft. Den neuen Fehler melden.",
        "feedback-bugornote": "Sofern du detailliert ein technisches Problem beschreiben möchtest, melde bitte [$1 einen Fehler].\nAnderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kommentar wird, zusammen mit deinem Benutzernamen und der Version des von dir verwendeten Webbrowsers sowie Betriebssystems, auf der Seite „[$3 $2]“ hinzugefügt.",
-       "feedback-subject": "Betreff:",
-       "feedback-message": "Nachricht:",
        "feedback-cancel": "Abbrechen",
-       "feedback-submit": "Rückmeldung senden",
-       "feedback-adding": "Rückmeldung wird zur Seite hinzugefügt …",
+       "feedback-close": "Erledigt",
+       "feedback-external-bug-report-button": "Eine technische Aufgabe einreichen",
+       "feedback-dialog-title": "Rückmeldung senden",
+       "feedback-dialog-intro": "Du kannst das einfache Formular unten verwenden, um deine Rückmeldung einzureichen. Dein Kommentar wird zusammen mit deinem Benutzernamen zur Seite „$1“ hinzugefügt.",
+       "feedback-error-title": "Fehler",
        "feedback-error1": "Fehler: Unbekanntes Ergebnis der API",
        "feedback-error2": "Fehler: Bearbeitung gescheitert",
        "feedback-error3": "Fehler: Keine Antwort von der API",
+       "feedback-message": "Nachricht:",
+       "feedback-subject": "Betreff:",
+       "feedback-submit": "Senden",
+       "feedback-terms": "Ich verstehe, dass meine Benutzeragenteninformationen Informationen über meinen genauen Browser und meine Betriebssystemversion einschließen und öffentlich zusammen mit meiner Rückmeldung geteilt werden.",
+       "feedback-termsofuse": "Ich stimme dem Bereitstellen der Rückmeldung in Übereinstimmung mit den Nutzungsbedingungen zu.",
        "feedback-thanks": "Vielen Dank. Deine Rückmeldung wurde auf der Seite „[$2 $1]“ gespeichert.",
-       "feedback-close": "Erledigt",
-       "feedback-bugcheck": "Super! Bitte überprüfe noch, ob es sich hierbei nicht um einen bereits [$1 bekannten Fehler] handelt.",
-       "feedback-bugnew": "Ich habe es überprüft. Den neuen Fehler melden.",
+       "feedback-thanks-title": "Danke!",
+       "feedback-useragent": "Benutzeragent:",
        "searchsuggest-search": "Suchen",
        "searchsuggest-containing": "enthält …",
        "api-error-badaccess-groups": "Du hast nicht die Berechtigung Dateien in dieses Wiki hochzuladen.",
index d22707e..742138a 100644 (file)
        "logentry-upload-revert": "{{GENDER:$2|Ο|Η}} $1 ανέβασε το $3",
        "rightsnone": "(κανένα)",
        "revdelete-summary": "επεξεργασία σύνοψης",
+       "feedback-adding": "Προσθήκη σχολίων στην σελίδα...",
+       "feedback-bugcheck": "Ωραία! Ελέγξτε μόνο ότι δεν είναι ήδη ένα από τα [$1 γνωστά σφάλματα].",
+       "feedback-bugnew": "Έλεγξα. Αναφέρετε ένα νέο σφάλμα",
        "feedback-bugornote": "Εάν είστε έτοιμοι να περιγράψετε ένα τεχνικό πρόβλημα λεπτομερώς παρακαλούμε [$1  κάντε μια αναφορά σφάλματος].\nΔιαφορετικά, μπορείτε να χρησιμοποιήσετε την παρακάτω απλή φόρμα. Το σχόλιό σας θα προστεθεί στη σελίδα \"[$3  $2]\", μαζί με το όνομα χρήστη σας.",
-       "feedback-subject": "Θέμα:",
-       "feedback-message": "Μήνυμα:",
        "feedback-cancel": "Ακύρωση",
-       "feedback-submit": "Υποβολή σχολίων",
-       "feedback-adding": "Προσθήκη σχολίων στην σελίδα...",
+       "feedback-close": "Ολοκληρώθηκε",
        "feedback-error1": "Σφάλμα: Μη αναγνωρίσιμο αποτέλεσμα από το API",
        "feedback-error2": "Σφάλμα: Η επεξεργασία απέτυχε",
        "feedback-error3": "Σφάλμα: Καμία απάντηση από το API",
+       "feedback-message": "Μήνυμα:",
+       "feedback-subject": "Θέμα:",
+       "feedback-submit": "Υποβολή σχολίων",
        "feedback-thanks": "Ευχαριστούμε! Τα σχόλιά σας έχουν καταχωρηθεί στη σελίδα \"[$2 $1]\".",
-       "feedback-close": "Ολοκληρώθηκε",
-       "feedback-bugcheck": "Ωραία! Ελέγξτε μόνο ότι δεν είναι ήδη ένα από τα [$1 γνωστά σφάλματα].",
-       "feedback-bugnew": "Έλεγξα. Αναφέρετε ένα νέο σφάλμα",
        "searchsuggest-search": "Αναζήτηση",
        "searchsuggest-containing": "περιέχει...",
        "api-error-badaccess-groups": "Δεν επιτρέπεται να ανεβάσετε αρχεία σε αυτό το wiki.",
index 7ff3b25..a81a89e 100644 (file)
        "edithelp": "Editing help",
        "edithelppage": "https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Editing_pages",
        "helppage": "https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents",
+       "helppage-top-gethelp": "Help",
        "mainpage": "Main Page",
        "mainpage-description": "Main page",
        "policy-url": "Project:Policy",
index c1510c9..8f09d5e 100644 (file)
        "blocklogpage": "Registro de bloqueos",
        "blocklog-showlog": "Este usuario ha sido bloqueado previamente. Debajo se provee el registro de bloqueos para mayor referencia:",
        "blocklog-showsuppresslog": "Este usuario ha sido bloqueado y ocultado. Se provee el registro de supresiones para más detalle:",
-       "blocklogentry": "bloqueó a [[$1]] $3 durante un plazo de $2",
+       "blocklogentry": "bloqueó a [[$1]] durante un plazo de $2 $3",
        "reblock-logentry": "cambió el bloqueo para  [[$1]] con una caducidad de $2 $3",
        "blocklogtext": "Esto es un registro de acciones de bloqueo y desbloqueo de usuarios.\nLas direcciones IP bloqueadas automáticamente no aparecen aquí.\nConsulta la [[Special:BlockList|lista de bloqueos]] para ver la lista de bloqueos y prohibiciones de operar en vigor.",
        "unblocklogentry": "desbloqueó a $1",
        "tooltip-pt-login": "Te recomendamos iniciar sesión, aunque no es obligatorio",
        "tooltip-pt-logout": "Salir de la sesión",
        "tooltip-pt-createaccount": "Te recomendamos crear una cuenta e iniciar sesión; sin embargo, no es obligatorio",
-       "tooltip-ca-talk": "Discusión acerca del artículo",
+       "tooltip-ca-talk": "Discusión acerca de la página de contenido",
        "tooltip-ca-edit": "Puedes editar esta página. Utiliza el botón de previsualización antes de guardar",
        "tooltip-ca-addsection": "Iniciar una sección nueva",
        "tooltip-ca-viewsource": "Esta página está protegida.\nPuedes ver su código fuente",
        "tooltip-n-mainpage": "Visitar la página principal",
        "tooltip-n-mainpage-description": "Visitar la página principal",
        "tooltip-n-portal": "Acerca del proyecto, lo que puedes hacer, dónde encontrar información",
-       "tooltip-n-currentevents": "Información de contexto sobre acontecimientos actuales",
+       "tooltip-n-currentevents": "Encuentra información de contexto sobre acontecimientos actuales",
        "tooltip-n-recentchanges": "Lista de cambios recientes en el wiki",
        "tooltip-n-randompage": "Cargar una página al azar",
        "tooltip-n-help": "El lugar para aprender",
        "revdelete-uname-unhid": "nombre de usuario mostrado",
        "revdelete-restricted": "restricciones para administradores aplicadas",
        "revdelete-unrestricted": "restricciones para administradores eliminadas",
+       "logentry-block-block": "$1 {{GENDER:$2|bloqueó}} {{GENDER:$4|$3}} durante un plazo de $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|desbloqueó}} {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1 {{GENDER:$2|cambió}} la configuración del bloqueo de {{GENDER:$4|$3}} durante un plazo de $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|bloqueó}} {{GENDER:$4|$3}} durante un plazo de $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|cambió}} la configuración del bloqueo de {{GENDER:$4|$3}} durante un plazo de $5 $6",
        "logentry-merge-merge": "$1 {{GENDER:$2|combinó}} $3 en $4 (revisiones hasta el $5)",
-       "logentry-move-move": "$1 movió la página $3 a $4",
+       "logentry-move-move": "$1 {{GENDER:$2|trasladó}} la página $3 a $4",
        "logentry-move-move-noredirect": "$1 movió la página $3 a $4 sin dejar una redirección",
        "logentry-move-move_redir": "$1 {{GENDER:$2|trasladó}} la página $3 a $4 sobre una redirección",
        "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|trasladó}} la página $3 a $4 sobre una redirección y sin dejar una redirección",
        "logentry-patrol-patrol": "$1 {{GENDER:$2|marcó}} como patrullada la edición $4 de la página $3",
        "logentry-patrol-patrol-auto": "$1 {{GENDER:$2|marcó}} automáticamente la edición $4 de la página $3 como patrullada",
        "logentry-newusers-newusers": "La cuenta de usuario $1 ha sido {{GENDER:$2|creada}}",
-       "logentry-newusers-create": "La cuenta de usuario $1 ha sido creada",
+       "logentry-newusers-create": "Se ha {{GENDER:$2|creado}} la cuenta de usuario $1",
        "logentry-newusers-create2": "La cuenta de usuario $3 ha sido creada por $1",
        "logentry-newusers-byemail": "la cuenta de usuario $3 ha sido creada por $1 y la contraseña ha sido enviada por correo",
        "logentry-newusers-autocreate": "La cuenta $1 fue creada automáticamente",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|desactivó}} la etiqueta «$4» para evitar su uso por usuarios y bots",
        "rightsnone": "(ninguno)",
        "revdelete-summary": "resumen de edición",
+       "feedback-adding": "Añadiendo comentarios a la página...",
+       "feedback-bugcheck": "¡Perfecto! Únicamente comprueba que no sea un [$1 fallo conocido].",
+       "feedback-bugnew": "Lo he comprobado. Informar de un nuevo fallo.",
        "feedback-bugornote": "Si estás preparado para describir en detalle un problema técnico, [$1 informa de un bug] por favor.\n\nEn otro caso, puedes usar el siguiente formulario. Tu comentario será añadido a la página [$3 $2], junto con tu nombre de usuario y el navegador que usas.",
-       "feedback-subject": "Asunto:",
-       "feedback-message": "Mensaje:",
        "feedback-cancel": "Cancelar",
-       "feedback-submit": "Enviar comentarios",
-       "feedback-adding": "Añadiendo comentarios a la página...",
+       "feedback-close": "Hecho",
        "feedback-error1": "Error: No se reconoce resultado de API",
        "feedback-error2": "Error: Falló la edición",
        "feedback-error3": "Error: No hay respuesta de la API",
+       "feedback-message": "Mensaje:",
+       "feedback-subject": "Asunto:",
+       "feedback-submit": "Enviar",
        "feedback-thanks": "¡Gracias! Su comentario ha sido anotado en la página [$2  $1].",
-       "feedback-close": "Hecho",
-       "feedback-bugcheck": "¡Perfecto! Únicamente comprueba que no sea un [$1 fallo conocido].",
-       "feedback-bugnew": "Lo he comprobado. Informar de un nuevo fallo.",
        "searchsuggest-search": "Buscar",
        "searchsuggest-containing": "que contiene...",
        "api-error-badaccess-groups": "No puedes cargar archivos en este wiki.",
        "limitreport-expensivefunctioncount": "Cuenta de la funcion expansiva del analizador",
        "expandtemplates": "Expandir plantillas",
        "expand_templates_intro": "Esta página especial toma un texto wiki y expande todas sus plantillas recursivamente.\nTambién expande las funciones sintácticas como <code><nowiki>{{</nowiki>#language:…}}</code>, y variables como\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>. De hecho, expande casi cualquier cosa que esté entre llaves dobles.",
-       "expand_templates_title": "Título de la página, útil para expandir {{PAGENAME}} o similares",
+       "expand_templates_title": "Título de la página, útil para expandir {{FULLPAGENAME}} o similares:",
        "expand_templates_input": "Texto a expandir:",
-       "expand_templates_output": "Resultado:",
+       "expand_templates_output": "Resultado",
        "expand_templates_xml_output": "Salida XML",
        "expand_templates_html_output": "Salida HTML en crudo",
        "expand_templates_ok": "Aceptar",
index 338aab2..c272f2f 100644 (file)
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|keelas}} märgise \"$4\" kasutamise kasutajate ja robotite jaoks",
        "rightsnone": "(puudub)",
        "revdelete-summary": "resümee",
+       "feedback-adding": "Tagasiside lisamine leheküljele...",
+       "feedback-bugcheck": "Hästi! Kontrolli vaid, ega tegu pole juba [$1 teada oleva veaga].",
+       "feedback-bugnew": "Kontrollisin. Teata uuest veast",
        "feedback-bugornote": "Kui arvad, et oskad tehnilist probleemi üksikasjalikult kirjeldada, [$1 teata veast].\nKui ei, kasuta allolevat lihtsat vormi. Sinu kommentaar lisatakse koos kasutajanime ja teabega kasutatava võrgulehitsejaga kohta leheküljele \"[$3 $2]\".",
-       "feedback-subject": "Teema:",
-       "feedback-message": "Sõnum:",
        "feedback-cancel": "Loobu",
-       "feedback-submit": "Saada tagasiside",
-       "feedback-adding": "Tagasiside lisamine leheküljele...",
+       "feedback-close": "Valmis",
        "feedback-error1": "Tõrge: Tundmatu API tulemus",
        "feedback-error2": "Tõrge: Redigeerimine ebaõnnestus",
        "feedback-error3": "Tõrge: API ei vasta",
+       "feedback-message": "Sõnum:",
+       "feedback-subject": "Teema:",
+       "feedback-submit": "Saada tagasiside",
        "feedback-thanks": "Aitäh! Sinu tagasiside on postitatud leheküljele \"[$2 $1]\".",
-       "feedback-close": "Valmis",
-       "feedback-bugcheck": "Hästi! Kontrolli vaid, ega tegu pole juba [$1 teada oleva veaga].",
-       "feedback-bugnew": "Kontrollisin. Teata uuest veast",
        "searchsuggest-search": "Otsi",
        "searchsuggest-containing": "sisalduv...",
        "api-error-badaccess-groups": "Sul pole selles vikis üleslaadimisõigust.",
index b98b36b..6fbc6a9 100644 (file)
        "logentry-newusers-create2": "$1 wikilariak $3 erabiltzaile kontua sortu du",
        "rightsnone": "(bat ere ez)",
        "revdelete-summary": "aldaketaren laburpena",
-       "feedback-subject": "Gaia:",
-       "feedback-message": "Mezua:",
-       "feedback-cancel": "Utzi",
-       "feedback-submit": "Feedbacka bidali",
        "feedback-adding": "Orriari feedbacka gehitzen...",
+       "feedback-bugnew": "Txekeatu dut. Bug berria bidaliko",
+       "feedback-cancel": "Utzi",
+       "feedback-close": "Egina",
        "feedback-error1": "Akatsa: APIaren emaitza ez ezagunak",
        "feedback-error2": "Akatsa: Aldaketa ez da egin",
        "feedback-error3": "Akatsa: APIaren erantzunik gabe",
-       "feedback-close": "Egina",
-       "feedback-bugnew": "Txekeatu dut. Bug berria bidaliko",
+       "feedback-message": "Mezua:",
+       "feedback-subject": "Gaia:",
+       "feedback-submit": "Feedbacka bidali",
        "searchsuggest-search": "Bilatu",
        "searchsuggest-containing": "edukian...",
        "api-error-badaccess-groups": "Ez duzu baimendik fitxategi hauek wiki honetara igotzeko.",
index 0eaa7ce..71ee566 100644 (file)
@@ -44,7 +44,8 @@
                        "فلورانس",
                        "Saeidpourbabak",
                        "Arash.pt",
-                       "Signal89"
+                       "Signal89",
+                       "Macofe"
                ]
        },
        "tog-underline": "خط کشیدن زیر پیوندها:",
        "blocked-mailpassword": "نشانی آی‌پی شما از ویرایش بازداشته شده‌است و از این رو به منظور جلوگیری از سوءاستفاده اجازهٔ بهره‌گیری از قابلیت بازیابی گذرواژه را ندارد.",
        "eauthentsent": "یک نامه برای تأیید نشانی رایانامه به نشانی موردنظر ارسال شد.\nقبل از اینکه نامهٔ دیگری قابل ارسال به این نشانی باشد، باید دستورهایی که در آن نامه آمده است را جهت تأیید این مساله که این نشانی متعلق به شماست، اجرا کنید.",
        "throttled-mailpassword": "یک رایانامهٔ بازنشانی گذرواژه در $1 {{PLURAL:$1|ساعت|ساعت}} گذشته فرستاده شده است.\nبرای جلوگیری از سوءاستفاده، هر $1 {{PLURAL:$1|ساعت|ساعت}} تنها یک رایانامهٔ بازنشانی گذرواژه فرستاده می‌شود.",
-       "mailerror": "خطا در فرستادن پست الکترونیکی: $1",
+       "mailerror": "خطا در فرستادن رایانامه: $1",
        "acct_creation_throttle_hit": "بازدیدکنندگان این ویکی که از نشانی آی‌پی شما استفاده می‌کنند در روز گذشته {{PLURAL:$1|یک حساب کاربری|$1 حساب کاربری}} ساخته‌اند، که بیشترین تعداد مجاز در آن بازهٔ زمانی است.\nبه همین خاطر، بازدیدکنندگانی که از این نشانی آی‌پی استفاده می‌کنند نمی‌توانند در حال حاضر حساب جدیدی بسازند.",
        "emailauthenticated": "نشانی رایانامهٔ شما در $2 ساعت $3 تصدیق شد.",
        "emailnotauthenticated": "نشانی رایانامهٔ شما هنوز تصدیق نشده‌است.\nبرای هیچ‌یک از ویژگی‌های زیر رایانامه ارسال نخواهد شد.",
        "prefs-watchlist-token": "رمز فهرست پی‌گیری:",
        "prefs-misc": "متفرقه",
        "prefs-resetpass": "تغییر گذرواژه",
-       "prefs-changeemail": "دگرش Ø¯Ø± Ù\86شاÙ\86Û\8c Ù¾Ø³Øª Ø§Ù\84کترÙ\88Ù\86Û\8cÚ©Û\8c",
+       "prefs-changeemail": "تغÛ\8cÛ\8cر Ø±Ø§Û\8cاÙ\86اÙ\85Ù\87",
        "prefs-setemail": "کار گذاشتن نشانی پست الکترونیکی",
        "prefs-email": "گزینه‌های پست الکترونیکی",
        "prefs-rendering": "نمایش صفحه",
        "trackingcategories-nodesc": "توضیحی وجود ندارد.",
        "trackingcategories-disabled": "رده غیرفعال‌شده است",
        "mailnologin": "نشانی‌ای از فرستنده موجود نیست",
-       "mailnologintext": "برای فرستادن پست الکترونیکی به کاربران دیگر باید [[Special:UserLogin|به سیستم وارد شوید]] و نشانی پست الکترونیکی معتبری در [[Special:Preferences|ترجیح‌های]] خود داشته باشید.",
-       "emailuser": "پست Ø§Ù\84کترÙ\88Ù\86Û\8cÚ©Û\8c",
+       "mailnologintext": "برای فرستادن رایانامه به کاربران دیگر باید [[Special:UserLogin|به سامانه وارد شوید]] و نشانی رایانامهٔ معتبری در [[Special:Preferences|ترجیحات]] خود داشته باشید.",
+       "emailuser": "Ù\81رستادÙ\86 Ù\86اÙ\85Ù\87 Ø¨Ù\87 Ø§Û\8cÙ\86 Ú©Ø§Ø±Ø¨Ø±",
        "emailuser-title-target": "فرستادن پست الکترونیکی به {{GENDER:$1|کاربر}}",
        "emailuser-title-notarget": "فرستادن پست الکترونیکی به کاربر",
        "emailpage": "رایانامه به کاربر",
        "emailpagetext": "شما می‌توانید از فرم زیر برای ارسال یک رایانامه به این {{GENDER:$1|کاربر}} استفاده کنید.\nنشانی رایانامه‌ای که در [[Special:Preferences|ترجیحات کاربریتان]] وارد کرده‌اید در نشانی فرستنده (From) نامه خواهد آمد، تا گیرنده بتواند پاسخ دهد.",
-       "defemailsubject": "پست الکترونیکی {{SITENAME}} از طرف کاربر «$1»",
+       "defemailsubject": "رایانامه {{SITENAME}} از طرف کاربر «$1»",
        "usermaildisabled": "رایانامهٔ کاربر غیرقعال است",
        "usermaildisabledtext": "شما در این ویکی نمی‌توانید به دیگر کاربران رایانامه بفرستید",
        "noemailtitle": "نشانی رایانامه موجود نیست",
        "emailccsubject": "رونوشت پیغام شما به $1: $2",
        "emailsent": "رایانامه فرستاده شد",
        "emailsenttext": "پیام پست الکترونیکی شما فرستاده شد.",
-       "emailuserfooter": "این پست الکترونیکی با استفاده از ویژگی «پست الکترونیکی» {{SITENAME}} توسط $1 به $2 فرستاده شد.",
+       "emailuserfooter": "این رایانامه با استفاده از ویژگی «فرستادن نامه به این کاربر» {{SITENAME}} توسط $1 به $2 فرستاده شد.",
        "usermessage-summary": "گذاشتن پیغام سامانه.",
        "usermessage-editor": "پیغام رسان سامانه",
        "watchlist": "فهرست پی‌گیری",
        "tooltip-feed-rss": "خبرنامه آراس‌اس برای این صفحه",
        "tooltip-feed-atom": "خبرنامهٔ اتم برای این صفحه",
        "tooltip-t-contributions": "فهرست مشارکت‌های این کاربر",
-       "tooltip-t-emailuser": "فرستادن پست الکترونیکی به این کاربر",
+       "tooltip-t-emailuser": "فرستادن رایانامه به این کاربر",
        "tooltip-t-info": "اطلاعات بیشتر دربارهٔ این صفحه",
        "tooltip-t-upload": "بارگذاری تصاویر و پرونده‌های دیگر",
        "tooltip-t-specialpages": "فهرستی از همهٔ صفحه‌های ویژه",
        "revdelete-uname-unhid": "نام کاربری را آشکار کرد",
        "revdelete-restricted": "مدیران را محدود کرد",
        "revdelete-unrestricted": "محدودیت مدیران را لغو کرد",
+       "logentry-block-unblock": "$1 {{GENDER:$2|بازکرد}} {{GENDER:$4|$3}}",
        "logentry-merge-merge": "$1  $3  را به  $4 {{GENDER:$2| ادغام کرد}} (نسخه تا  $5)",
        "logentry-move-move": "$1 صفحهٔ $3 را به $4 {{GENDER:$2|منتقل کرد}}",
        "logentry-move-move-noredirect": "$1 صفحهٔ $3 را بدون برجای‌گذاشتن تغییرمسیر به $4 {{GENDER:$2|منتقل کرد}}",
        "logentry-managetags-create": "$1 برچسب «$4» را {{GENDER:$2|ایجاد کرد}}",
        "rightsnone": "(هیچ)",
        "revdelete-summary": "خلاصه ویرایش",
+       "feedback-adding": "افزودن بازخورد به صفحه...",
+       "feedback-back": "بازگشت",
+       "feedback-bugcheck": "عالی‌است! فقط بررسی کنید که از [$1 ایرادهای شناخته‌شده] نباشد.",
+       "feedback-bugnew": "بررسی کردم. ایرادی تازه را گزارش بده",
        "feedback-bugornote": "اگر آماده‌اید تا مشکلی فنی را با جزئیاتش شرح دهید لطفاً [$1 یک ایراد گزارش دهید]. در غیر این صورت می‌توانید از فرم سادهٔ زیر استفاده کنید. نظر شما به همراه نام کاربری و مرورگرتان به صفحهٔ «[$3 $2]» افزوده خواهد شد.",
-       "feedback-subject": "موضوع:",
-       "feedback-message": "پیغام:",
        "feedback-cancel": "لغو",
-       "feedback-submit": "ارسال بازخورد",
-       "feedback-adding": "افزودن بازخورد به صفحه...",
+       "feedback-close": "انجام شد",
+       "feedback-external-bug-report-button": "پرونده‌سازی یک عمل فنی",
+       "feedback-dialog-title": "ارسال یک بازخورد",
+       "feedback-error-title": "خطا",
        "feedback-error1": "خطا: پاسخ‌های ناشناخته از رابط برنامه‌نویسی نرم‌افزار",
        "feedback-error2": "خطا: شکست در ویرایش",
        "feedback-error3": "خطا: عدم پاسخ از رابط برنامه‌نویسی نرم‌افزار",
+       "feedback-message": "پیغام:",
+       "feedback-subject": "موضوع:",
+       "feedback-submit": "ارسال",
        "feedback-thanks": "سپاس! بازخورد شما در صفحهٔ «[$1 $2]» ثبت شد.",
-       "feedback-close": "انجام شد",
-       "feedback-bugcheck": "عالی‌است! فقط بررسی کنید که از [$1 ایرادهای شناخته‌شده] نباشد.",
-       "feedback-bugnew": "بررسی کردم. ایرادی تازه را گزارش بده",
+       "feedback-thanks-title": "با تشکر!",
+       "feedback-useragent": "رابط کاربر:",
        "searchsuggest-search": "جستجو",
        "searchsuggest-containing": "صفحه‌های دربردارنده...",
        "api-error-badaccess-groups": "شما اجازهٔ بارگذاری پرونده‌ها را در این ویکی ندارید.",
index d04ae36..535d849 100644 (file)
@@ -43,7 +43,8 @@
                        "MrTapsa",
                        "SMAUG",
                        "SuperPete",
-                       "McSalama"
+                       "McSalama",
+                       "Macofe"
                ]
        },
        "tog-underline": "Linkkien alleviivaus:",
        "unusedimages": "Käyttämättömät tiedostot",
        "wantedcategories": "Halutut luokat",
        "wantedpages": "Halutut sivut",
+       "wantedpages-summary": "Luettelo olemattomista sivuista, joihin johtaa eniten linkkejä. Luettelossa ei kuitenkaan ole sellaisia sivuja, joihin johtaa ainoastaan uudelleenohjauksia. Jos haluat nähdä luettelon niistä olemattomista sivuista, joihin on linkki uudelleenohjauksista, katso sivua [[{{#special:BrokenRedirects}}]].",
        "wantedpages-badtitle": "Virheellinen otsikko tuloksissa: $1",
        "wantedfiles": "Halutut tiedostot",
        "wantedfiletext-cat": "Seuraavia tiedostoja käytetään, mutta niitä ei ole olemassa. Ulkopuolissa mediavarastoissa olevat tiedostot voivat näkyä tällä listalla, vaikka ne ovat olemassa. Tällaiset väärät merkinnät on <del>yliviivattu</del>. Lisäksi sellaiset sivut, joihin on sisällytetty tiedostoja, jotka eivät ole olemassa, on luetteloitu [[:$1|täällä]].",
        "revdelete-uname-unhid": "käyttäjätunnus palautettu näkyviin",
        "revdelete-restricted": "asetti rajoitukset ylläpitäjille",
        "revdelete-unrestricted": "poisti rajoitukset ylläpitäjiltä",
+       "logentry-block-block": "$1 {{GENDER:$2|esti}} kohteen {{GENDER:$4|$3}}. Eston kesto on $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|poisti muokkauseston}} käyttäjältä {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1 {{GENDER:$2|muutti}} eston asetuksia kohteessa {{GENDER:$4|$3}}. Eston kesto on $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|esti}} kohteen {{GENDER:$4|$3}}. Eston kesto on $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|muutti}} eston asetuksia kohteessa {{GENDER:$4|$3}}. Eston kesto on $5 $6",
        "logentry-merge-merge": "$1 {{GENDER:$2|yhdisti}} sivun $3 sivuun $4 (versiot $5 saakka)",
        "logentry-move-move": "$1 {{GENDER:$2|siirsi}} sivun $3 uudelle nimelle $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|siirsi}} sivun $3 uudelle nimelle $4 luomatta ohjausta",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|otti pois käytöstä}} merkkauksen \"$4\" käyttäjiltä ja boteilta",
        "rightsnone": "(ei oikeuksia)",
        "revdelete-summary": "yhteenvedon",
+       "feedback-adding": "Lisätään palautetta sivulle...",
+       "feedback-back": "Takaisin",
+       "feedback-bugcheck": "Hyvä! Varmista vielä, että ohjelmointivirhettä ei löydy [$1 tunnettujen virheiden luettelosta].",
+       "feedback-bugnew": "Olen varmistanut. Ilmoitan uuden ohjelmointivirheen",
        "feedback-bugornote": "Jos voit kuvailla teknisen ongelman tarkasti – [$1 ilmoita ohjelmointivirheestä].\nMuussa tapauksessa voit käyttää alla olevaa helpompaa lomaketta. Kommenttisi lisätään sivulle [$3 $2], ja siinä on mukana käyttäjätunnuksesi.",
-       "feedback-subject": "Otsikko",
-       "feedback-message": "Viesti",
        "feedback-cancel": "Peruuta",
-       "feedback-submit": "Lähetä palaute",
-       "feedback-adding": "Lisätään palautetta sivulle...",
+       "feedback-close": "Valmis",
+       "feedback-external-bug-report-button": "Lähetä tekninen tehtävä",
+       "feedback-dialog-title": "Lähetä palautetta",
+       "feedback-dialog-intro": "Voit käyttää tätä helppoa lomaketta palautteesi lähettämiseen. Kommenttisi lisätään sivulle \"$1\" käyttäjätunnuksesi kera.",
+       "feedback-error-title": "Virhe",
        "feedback-error1": "Virhe: Ohjelmointirajapinnan vastausta ei tunnistettu",
        "feedback-error2": "Virhe: Muokkaus epäonnistui",
        "feedback-error3": "Virhe: Ohjelmointirajapinta ei vastaa",
+       "feedback-message": "Viesti",
+       "feedback-subject": "Otsikko",
+       "feedback-submit": "Lähetä",
+       "feedback-termsofuse": "Sitoudun lähettämään palautteen käyttöehtojen määräysten mukaisesti.",
        "feedback-thanks": "Kiitos. Palautteesi on jätetty sivulle [$2 $1].",
-       "feedback-close": "Valmis",
-       "feedback-bugcheck": "Hyvä! Varmista vielä, että ohjelmointivirhettä ei löydy [$1 tunnettujen virheiden luettelosta].",
-       "feedback-bugnew": "Olen varmistanut. Ilmoitan uuden ohjelmointivirheen",
+       "feedback-thanks-title": "Kiitos!",
        "searchsuggest-search": "Hae",
        "searchsuggest-containing": "sisältää...",
        "api-error-badaccess-groups": "Sinulla ei ole oikeutta tallentaa tiedostoja tähän wikiin.",
        "limitreport-templateargumentsize": "Mallineen argumenttien koko<br />(template argument size)",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|tavu|tavua}}",
        "limitreport-expansiondepth": "Highest expansion depth",
-       "limitreport-expensivefunctioncount": "Vaativien parserfunktioiden määrä",
+       "limitreport-expensivefunctioncount": "Vaativien jäsenninfunktioiden lukumäärä",
        "expandtemplates": "Laajenna mallineet",
        "expand_templates_intro": "Tämä toimintosivu ottaa syötteeksi tekstiä ja laajentaa kaikki siinä olevat mallineet rekursiivisesti.\nSe myös laajentaa tuetut parserifunktiot kuten\n<code><nowiki>{{</nowiki>#language:...}}</code> ja -muuttujat kuten\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nKäytännössä se laajentaa melkein kaiken, joka on kaksoisaaltosulkeiden sisällä.",
        "expand_templates_title": "Otsikko (esimerkiksi muuttujaa {{FULLPAGENAME}} varten)",
index 038ac82..698fa7b 100644 (file)
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|a désactivé}} la balise « $4 » pour l’usage des utilisateurs et des robots",
        "rightsnone": "(aucun)",
        "revdelete-summary": "résumé de modification",
+       "feedback-adding": "Ajout de vos commentaires à la page...",
+       "feedback-bugcheck": "Formidable ! Vérifiez simplement que ce n'est pas un des [$1 bogues déjà connus].",
+       "feedback-bugnew": "J'ai vérifié. Signaler un nouveau bogue",
        "feedback-bugornote": "Si vous êtes prêt à décrire un problème technique en détail, veuillez [$1 signaler un bogue].\nSinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentaire sera ajouté à la page « [$3 $2] », avec votre nom d'utilisateur.",
-       "feedback-subject": "Objet :",
-       "feedback-message": "Message :",
        "feedback-cancel": "Annuler",
-       "feedback-submit": "Envoyer vos commentaires",
-       "feedback-adding": "Ajout de vos commentaires à la page...",
+       "feedback-close": "Fait",
        "feedback-error1": "Erreur : Résultat de l'IPA non reconnu",
        "feedback-error2": "Erreur : la modification a échoué",
        "feedback-error3": "Erreur : aucune réponse de l'API",
+       "feedback-message": "Message :",
+       "feedback-subject": "Objet :",
+       "feedback-submit": "Envoyer",
        "feedback-thanks": "Merci ! Votre commentaire a été publié sur la page \"[$2 $1]\".",
-       "feedback-close": "Fait",
-       "feedback-bugcheck": "Formidable ! Vérifiez simplement que ce n'est pas un des [$1 bogues déjà connus].",
-       "feedback-bugnew": "J'ai vérifié. Signaler un nouveau bogue",
        "searchsuggest-search": "Rechercher",
        "searchsuggest-containing": "contenant...",
        "api-error-badaccess-groups": "Vous n'êtes pas autorisé à verser des fichiers sur ce wiki.",
index a132b1a..e5fd8b9 100644 (file)
        "logentry-rights-autopromote": "$1 est étâ nomâ ôtomaticament de $4 a $5",
        "rightsnone": "(nion)",
        "revdelete-summary": "rèsumâ du changement",
+       "feedback-adding": "Aponsa de voutros avis a la pâge...",
+       "feedback-bugcheck": "Formidâblo ! Controlâd simplament qu’o est pas yona de les [$1 cofieries ja cognues].",
+       "feedback-bugnew": "J’é controlâ. Signalar una cofierie novèla",
        "feedback-bugornote": "Se vos éte prèst a dècrire un problèmo tècnico en dètaly, volyéd [$1 signalar una cofierie].\nÔtrament, vos pouede utilisar lo formulèro simplifiâ ce-desot. Voutron comentèro serat apondu a la pâge « [$3 $2] », avouéc voutron nom d’usanciér et lo navigator que vos utilisâd.",
-       "feedback-subject": "Sujèt :",
-       "feedback-message": "Mèssâjo :",
        "feedback-cancel": "Anular",
-       "feedback-submit": "Mandar voutron avis",
-       "feedback-adding": "Aponsa de voutros avis a la pâge...",
+       "feedback-close": "Fêt",
        "feedback-error1": "Èrror : rèsultat de l’API pas recognu",
        "feedback-error2": "Èrror : lo changement at pas reussi",
        "feedback-error3": "Èrror : gins de rèponsa de l’API",
+       "feedback-message": "Mèssâjo :",
+       "feedback-subject": "Sujèt :",
+       "feedback-submit": "Mandar voutron avis",
        "feedback-thanks": "Grant-marci ! Voutron avis at étâ postâ sur la pâge « [$2 $1] ».",
-       "feedback-close": "Fêt",
-       "feedback-bugcheck": "Formidâblo ! Controlâd simplament qu’o est pas yona de les [$1 cofieries ja cognues].",
-       "feedback-bugnew": "J’é controlâ. Signalar una cofierie novèla",
        "searchsuggest-search": "Rechèrchiér",
        "searchsuggest-containing": "que contint...",
        "api-error-badaccess-groups": "Vos éte pas ôtorisâ a tèlèchargiér des fichiérs sur ceti vouiqui.",
index 84d2c23..e53f8ea 100644 (file)
        "readonly_lag": "Det dootenbeenk as speret wurden, amdat jo ferdiald dootenbeenken (slaves) jo mä di hoodserver (master) ufglik kön.",
        "internalerror": "Süsteemfeeler",
        "internalerror_info": "Süsteemfeeler: $1",
+       "internalerror-fatal-exception": "Böös ütjnoomfeeler faan di slach \"$1\"",
        "filecopyerror": "Det datei $1 küd ei efter $2 kopiaret wurd.",
        "filerenameerror": "Det datei $1 küd ei efter $2 amnäämd wurd.",
        "filedeleteerror": "Det datei $1 küd ei stregen wurd.",
        "right-override-export-depth": "Sidjen an onersidjen bit tu en jipde faan 5 eksportiare",
        "right-sendemail": "E-mails tu ööder brükern schüür",
        "right-passwordreset": "Paaswurd faan en brüker turagsaat an det e-mail diartu uunluke",
+       "right-managechangetags": "[[Special:Tags|Markiarangen]] iinracht an uun't dootenbeenk strik",
        "newuserlogpage": "Neiuunmeldangs-logbuk",
        "newuserlogpagetext": "Detheer as en logbuk faan nei iinracht brükerkonten.",
        "rightslog": "Brükerrochten-logbuk",
        "action-viewmyprivateinfo": "din priwoot dooten uuntulukin",
        "action-editmyprivateinfo": "din priwoot dooten tu bewerkin",
        "action-editcontentmodel": "det model faan det sidj tu bewerkin",
+       "action-managechangetags": "markiarangen iinracht an uun't dootenbeenk strik",
        "nchanges": "$1 {{PLURAL:$1|feranrang|feranrangen}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|sant dan leetst beschük}}",
        "enhancedrc-history": "Ferluup",
        "unusedimages": "Datein, diar ei brükt wurd",
        "wantedcategories": "Kategoriin, diar brükt wurd",
        "wantedpages": "Sidjen, diar brükt wurd",
+       "wantedpages-summary": "List faan sidjen, diar't goorei jaft, mä a miast ferwisangen, oober saner sidjen, huar bluas üüb ferwiset woort. För en list faan sidjen, diar't goorei jaft, oober mä ferwisangen luke bi [[{{#special:BrokenRedirects}}]].",
        "wantedpages-badtitle": "Diar as en artiikelnööm ei tuläät uun: $1",
        "wantedfiles": "Datein, diar brükt wurd",
        "wantedfiletext-cat": "Jodiar datein wurd brükt, oober san ei diar. Datein faan ööder archiiwen wurd apfeerd, san oober <del>trochstregen</del>. An jo sidjen, diar sok datein brük, stun uun  [[:$1]].",
        "thumbnail_image-missing": "Det datei as wel ei diar: $1",
        "thumbnail_image-failure-limit": "Detdiar föörskaubil as uun a leetst tidj tufölsis ($1 of muarsis) feranert wurden. Ferschük det leeder man noch ans.",
        "import": "Sidjen importiare",
-       "importinterwiki": "Transwiki import",
-       "import-interwiki-text": "Schük en Wiki an en sidj tu importiarin ütj. A werjuunen an brükernöömer bliiw erhäälen.\nTranswiki-import-aktjuunen wurd uun't [[Special:Log/import|Import-logbuk]] fäästhäälen.",
+       "importinterwiki": "Faan en ööder Wiki importiare",
+       "import-interwiki-text": "Schük en Wiki an en sidj tu importiarin ütj. A werjuunen an brükernöömer bliiw erhäälen.\nImporten faan ööder Wikis wurd uun't [[Special:Log/import|Import-logbuk]] fäästhäälen.",
        "import-interwiki-sourcewiki": "Faan hün Wiki:",
        "import-interwiki-sourcepage": "Faan hün sidj:",
        "import-interwiki-history": "Aal a werjuunen faan det sidj importiare",
        "importcantopen": "Det import-datei küd ei eeben maaget wurd.",
        "importbadinterwiki": "Ferkiard interwiki-link",
        "importsuccess": "Import klaar!",
-       "importnosources": "För di transwiki-import san nian kwelen uunden. Dü könst werjuunen ei direkt huuchschüür.",
+       "importnosources": "För di import san nian ööder Wikis uunden. Dü könst werjuunen ei direkt huuchschüür.",
        "importnofile": "Diar as nian importdatei bestemet wurden.",
        "importuploaderrorsize": "Bi't huuchschüüren faan det importdatei as wat skiaf gingen. Det datei as tu grat.",
        "importuploaderrorpartial": "Bi't huuchschüüren faan det importdatei as wat skiaf gingen. Det datei as bluas dialwiis huuchschüürd wurden.",
        "tags-tag": "Kääntiaken-nööm",
        "tags-display-header": "Nööm üüb feranrangslisten",
        "tags-description-header": "Widjloftag beskriiwang",
+       "tags-source-header": "Kwel",
        "tags-active-header": "Aktiif?",
        "tags-hitcount-header": "Kääntiakent feranrangen",
+       "tags-actions-header": "Aktjuunen",
        "tags-active-yes": "Ja",
        "tags-active-no": "Naan",
+       "tags-source-extension": "Faan en ütjwidjang fäästlaanj",
+       "tags-source-manual": "Manuel faan brükern of bots iinracht",
+       "tags-source-none": "Woort ei muar brükt",
        "tags-edit": "bewerke",
+       "tags-delete": "strik",
+       "tags-activate": "aktiwiare",
+       "tags-deactivate": "de-aktiwiare",
        "tags-hitcount": "$1 {{PLURAL:$1|feranrang|feranrangen}}",
+       "tags-manage-no-permission": "Dü mutst nian feranrangsmarkiarangen bewerke.",
+       "tags-create-heading": "En nei markiarang iinracht",
+       "tags-create-explanation": "Normoolerwiis wurd nei markiarangen för't bewerkin faan brükern an bots iinracht.",
+       "tags-create-tag-name": "Markiarangsnööm:",
+       "tags-create-reason": "Grünj:",
+       "tags-create-submit": "Maage",
+       "tags-create-no-name": "Dü skel en markiarangsnööm uundu.",
+       "tags-create-invalid-chars": "Markiarangsnöömer mut nian komas (<code>,</code>) of swäärsstreger (<code>/</code>) haa.",
+       "tags-create-invalid-title-chars": "Markiarangsnöömer mut nian tiakens haa, diar uk uun sidjennöömer ei föörkem mut.",
+       "tags-create-already-exists": "Det markiarang \"$1\" jaft at al.",
+       "tags-create-warnings-above": "{{PLURAL:$2|Detdiar wäärnang as|Jodiar wäärnangen san}} apdaaget, üs det markiarang \"$1\" iinracht wurd skul:",
+       "tags-create-warnings-below": "Wel dü mä't iinrachten faan detdiar markiarang widjer maage?",
+       "tags-delete-title": "Markiarang strik",
+       "tags-delete-explanation-initial": "Dü beest diarbi, det markiarang \"$1\" uun't dootenbeenk tu striken.",
+       "tags-delete-explanation-in-use": "Hat woort faan {{PLURAL:$2|$2 werjuun of logbuk-iindrach|aal $2 werjuunen an/of logbuk-iindracher}} strgen, huar't uugenblakelk noch iindraanj as.",
+       "tags-delete-explanation-warning": "Detdiar aktjuun könst dü <strong>ei turagdrei</strong> an <strong>koon ei weder turaghaalet wurd</strong>, uk ei faan dootenbeenk-administartooren. Wees seeker, dat dü detdiar markiarang würelk strik wel.",
+       "tags-delete-explanation-active": "<strong>Det markiarang \"$1\" as noch aktiif an woort uk widjerhen iinsaat.</strong> Wan dü det ei wel, gung tu det(jo) steed(en), huar det markiarang iinracht wurden as, an strik det diar.",
+       "tags-delete-reason": "Grünj:",
+       "tags-delete-submit": "Detdiar markiarang för iiwag strik",
+       "tags-delete-not-allowed": "Markiarangen, diar faan en ütjwidjang fäästlaanj wurden san, kön ei stregen wurd, wan det diar ei mögelk maaget wurden as.",
+       "tags-delete-not-found": "Det markiarang \"$1\" jaft at ei.",
+       "tags-delete-too-many-uses": "Det markiarang \"$1\" as mä muar üs $2 {{PLURAL:$2|werjuun|werjuunen}} ferbünjen an koon ei stregen wurd.",
+       "tags-delete-warnings-after-delete": "Det markiarang \"$1\" as stregen wurden, man diar {{PLURAL:$2|as ian wäärnang|san wäärnangen}} aptreeden:",
+       "tags-activate-title": "Markiarang aktiwiare",
+       "tags-activate-question": "Dü beest diarbi, det markiarang \"$1\" tu aktiwiarin.",
+       "tags-activate-reason": "Grünj:",
+       "tags-activate-not-allowed": "Dü könst det markiarang \"$1\" ei aktiwiare.",
+       "tags-activate-not-found": "Det markiarang \"$1\" jaft at ei.",
+       "tags-activate-submit": "Aktiwiare",
+       "tags-deactivate-title": "Markiarang de-aktiwiare",
+       "tags-deactivate-question": "Dü beest diarbi, det markiarang \"$1\" tu de-aktiwiarin.",
+       "tags-deactivate-reason": "Grünj:",
+       "tags-deactivate-not-allowed": "Dü könst det markiarang \"$1\" ei de-aktiwiare.",
+       "tags-deactivate-submit": "De-aktiwiare",
        "comparepages": "Sidjen ferglik",
        "compare-page1": "Sidj 1",
        "compare-page2": "Sidj 2",
        "revdelete-uname-unhid": "brükernööm weder tu sen",
        "revdelete-restricted": "mögelkhaiden för administratooren wechnimen",
        "revdelete-unrestricted": "mögelkhaiden för administratooren ütjwidjet",
+       "logentry-block-block": "$1 {{GENDER:$2|hää}} {{GENDER:$4|$3}} speret mä en sperdüür faan $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|hää det sper}} för {{GENDER:$4|$3}} apheewen.",
+       "logentry-block-reblock": "$1 {{GENDER:$2|hää}} det sper för {{GENDER:$4|$3}} feranert mä en sperdüür faan $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|hää}} {{GENDER:$4|$3}} speret mä en sperdüür faan $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|hää}} det sper för {{GENDER:$4|$3}} feranert mä en sperdüür faan $5 $6",
        "logentry-merge-merge": "$1 {{GENDER:$2|hää}} $3 mä det sidj „$4“ (werjuunen bit tu di $5) tuupfeerd",
        "logentry-move-move": "$1 {{GENDER:$2}} hää det sidj $3 efter $4 fersköwen.",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2}} hää det sidj $3 efter $4 saner widjerfeerang fersköwen.",
        "logentry-upload-upload": "$1 {{GENDER:$2|hää}} $3 huuchschüürd",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|hää}} en nei werjuun faan $3 huuchschüürd",
        "logentry-upload-revert": "$1 {{GENDER:$2|hää}} $3 huuchschüürd",
+       "log-name-managetags": "Markiarangs-logbuk",
+       "log-description-managetags": "Üüb detdiar sidj stun apgoowen mä [[Special:Tags|markiarangen]]. Uun det logbuk stun bluas aktjuunen faan en administaraator; diar kön oober uk feranrangen faan't Wiki-software föörnimen wurd, diar ei uun detheer logbuk stun.",
+       "logentry-managetags-create": "$1 {{GENDER:$2|hää}} det markiarang \"$4\" iinracht",
+       "logentry-managetags-delete": "$1 {{GENDER:$2|hää}} det markiarang „$4“ stregen (faan {{PLURAL:$5|ian werjuun of ään logbuk-iindrach|$5 werjuunen an/of logbuk-iindracher}} wechnimen).",
+       "logentry-managetags-activate": "$1 {{GENDER:$2|hää}} det markiarang \"$4\" för't bewerkin faan brükern of bots iinracht.",
+       "logentry-managetags-deactivate": "$1 {{GENDER:$2|hää}} det markiarang \"$4\" för't bewerkin faan brükern of bots de-aktiwiaret.",
        "rightsnone": "(-)",
        "revdelete-summary": "tuhuupefootings-komäntoor",
+       "feedback-adding": "Komentaar woort tu det sidj skrewen ...",
+       "feedback-back": "Turag",
+       "feedback-bugcheck": "Gud! Luke noch ans efter, of det ei ferlicht en [$1 bekäänden feeler] as.",
+       "feedback-bugnew": "Haa ik efterluket. Nei feeler melde.",
        "feedback-bugornote": "Wan dü en technisk probleem beskriiw wel, wees so gud an skriiw [$1 am di feeler].\nÖöders könst dü uk det formulaar oner brük. Dan komentaar woort tuup mä dan brükernööm an det werjuun faan dan browser üüb det sidj „[$3 $2]“ skrewen.",
-       "feedback-subject": "Teemo:",
-       "feedback-message": "Mädialang:",
        "feedback-cancel": "Ufbreeg",
-       "feedback-submit": "Komentaar ufsjüür",
-       "feedback-adding": "Komentaar woort tu det sidj skrewen ...",
+       "feedback-close": "Klaar",
+       "feedback-external-bug-report-button": "En technisk apgoow iinschüür",
+       "feedback-dialog-title": "Komentaar ufsjüür",
+       "feedback-dialog-intro": "Dü könst det ianfach formulaar diar oner för dan komentaar brük. Dan komentaar komt tuup mä dan brükernööm tu det sidj „$1“.",
+       "feedback-error-title": "Diar as wat skiaf gingen",
        "feedback-error1": "Feeler: Ünbekäänd API-bööd",
        "feedback-error2": "Feeler: Bewerkin as skiaf gingen.",
        "feedback-error3": "Feeler: Nian API-oonswaar",
+       "feedback-message": "Mädialang:",
+       "feedback-subject": "Teemo:",
+       "feedback-submit": "Ufschüür",
+       "feedback-terms": "Ik haa det begreben, dat uun min brüker-informatjuunen uk informatjuunen auer man browser an min bedrifssüsteem stun an dat jo tuup mä man komentaar öfentelk diald wurd.",
+       "feedback-termsofuse": "Ik steme tu, dat man komentaar efter a brüker-reegeln uunwiset woort.",
        "feedback-thanks": "Föl soonk. Dan komentaar as üüb det sidj „[$2 $1]“ skrewen wurden.",
-       "feedback-close": "Klaar",
-       "feedback-bugcheck": "Gud! Luke noch ans efter, of det ei ferlicht en [$1 bekäänden feeler] as.",
-       "feedback-bugnew": "Haa ik efterluket. Nei feeler melde.",
+       "feedback-thanks-title": "Föl soonk!",
+       "feedback-useragent": "Brüker-agent:",
        "searchsuggest-search": "Schük",
        "searchsuggest-containing": "diar banen as ...",
        "api-error-badaccess-groups": "Dü mutst nian datein tu detdiar Wiki huuchschüür.",
        "json-error-utf8": "Ferkiard UTF-8-tiakens, ferlicht ferkiard kodiaret.",
        "json-error-recursion": "Ian of muar rekursiif referensen uun a wäärs tu kodiarin.",
        "json-error-inf-or-nan": "Ään of muar NAN of INF wäärser uun a wäärs tu kodiarin.",
-       "json-error-unsupported-type": "Diar stäänt en wäärs faan en typ, diar ei kodiaret wurd koon."
+       "json-error-unsupported-type": "Diar stäänt en wäärs faan en typ, diar ei kodiaret wurd koon.",
+       "headline-anchor-title": "Ferwisang tu detdiar kirew"
 }
index 79b1c62..b50d4bc 100644 (file)
        "specialpages-group-spam": "Uirlisí turscar",
        "blankpage": "Leathanach bán",
        "htmlform-selectorother-other": "Eile",
-       "feedback-message": "Teachtaireacht:",
        "feedback-cancel": "Cealaigh",
+       "feedback-message": "Teachtaireacht:",
        "searchsuggest-search": "Cuardaigh",
        "expand_templates_remove_comments": "Scrios nótaí tráchta",
        "expand_templates_preview": "Réamhamharc"
index 4b1b64d..56fd9d0 100644 (file)
@@ -19,7 +19,8 @@
                        "Josep Maria 15.",
                        "Fisterraeomar",
                        "Breogan2008",
-                       "VaiPolaSombra"
+                       "VaiPolaSombra",
+                       "Macofe"
                ]
        },
        "tog-underline": "Subliñar as ligazóns:",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|desactivou}} a etiqueta \"$4\" para impedir o seu uso por usuarios e bots",
        "rightsnone": "(ningún)",
        "revdelete-summary": "o resumo de edición",
+       "feedback-adding": "Enviando os comentarios...",
+       "feedback-bugcheck": "Perfecto! Comprobe que aínda non está entre os [$1 erros coñecidos].",
+       "feedback-bugnew": "Comprobeino. Informar deste novo erro",
        "feedback-bugornote": "Se está listo para describir un problema técnico en detalle, [$1 informe do erro].\nEn caso contrario, pode empregar o formulario sinxelo inferior. O seu comentario aparecerá na páxina \"[$3 $2]\" xunto ao seu nome de usuario e o navegador que está usando.",
-       "feedback-subject": "Asunto:",
-       "feedback-message": "Mensaxe:",
        "feedback-cancel": "Cancelar",
-       "feedback-submit": "Enviar os comentarios",
-       "feedback-adding": "Enviando os comentarios...",
+       "feedback-close": "Feito",
        "feedback-error1": "Erro: Resultado da API non recoñecido",
        "feedback-error2": "Erro: Fallo de edición",
        "feedback-error3": "Erro: Non hai resposta da API",
+       "feedback-message": "Mensaxe:",
+       "feedback-subject": "Asunto:",
+       "feedback-submit": "Enviar",
        "feedback-thanks": "Grazas! Os seus comentarios publicáronse na páxina \"[$2 $1]\".",
-       "feedback-close": "Feito",
-       "feedback-bugcheck": "Perfecto! Comprobe que aínda non está entre os [$1 erros coñecidos].",
-       "feedback-bugnew": "Comprobeino. Informar deste novo erro",
        "searchsuggest-search": "Procurar",
        "searchsuggest-containing": "que conteña...",
        "api-error-badaccess-groups": "Non ten os permisos necesarios para cargar ficheiros neste wiki.",
index 01ae396..dd47af1 100644 (file)
        "logentry-rights-autopromote": "$1 isch automatisch vu $4 zue $5 zuegordnet wore",
        "rightsnone": "(keini)",
        "revdelete-summary": "Zämmefassig",
+       "feedback-adding": "Ruggmäldig wird zur Syte dezuegfiegt …",
+       "feedback-bugcheck": "Schen! Bitte iberprief no, eb s sich doderby nit um e scho [$1 bekannte Fähler] handlet.",
+       "feedback-bugnew": "Ich haa s iberprieft. Dr nej Fähler mälde.",
        "feedback-bugornote": "Wän Du detailliert e tächnisch Probläm witt bschryybe, no mäld bitte [$1 ne Fähler].\nSunscht chasch au s eifach Formular unte nutze. Dyy Kommentar wird, zämme mit Dyym Benutzername un dr Version vu Dyym Webbrowser un em Betribssyschtem, uf dr Syte „[$3 $2]“ zuegfiegt.",
-       "feedback-subject": "Beträff:",
-       "feedback-message": "Noochricht:",
        "feedback-cancel": "Abbräche",
-       "feedback-submit": "Ruggmäldig abschigge",
-       "feedback-adding": "Ruggmäldig wird zur Syte dezuegfiegt …",
+       "feedback-close": "Isch gmacht",
        "feedback-error1": "Fäälermäldig: Unbekannts Ergebniss vo de API",
        "feedback-error2": "Fääler: Bearbeitig fehlgschlo",
        "feedback-error3": "Fäälermäldig: Kei Antwort vo de API",
+       "feedback-message": "Noochricht:",
+       "feedback-subject": "Beträff:",
+       "feedback-submit": "Ruggmäldig abschigge",
        "feedback-thanks": "Dankschen. Dyy Ruckmäldig isch uf dr Syte „[$2 $1]“ gspycheret wore.",
-       "feedback-close": "Isch gmacht",
-       "feedback-bugcheck": "Schen! Bitte iberprief no, eb s sich doderby nit um e scho [$1 bekannte Fähler] handlet.",
-       "feedback-bugnew": "Ich haa s iberprieft. Dr nej Fähler mälde.",
        "searchsuggest-search": "Suechi",
        "searchsuggest-containing": "din het s …",
        "api-error-badaccess-groups": "Du derfsch keini Dateie in des Wiki uffelade.",
index c8a040c..ac35a76 100644 (file)
        "logentry-newusers-autocreate": "વપરાશકર્તા ખાતું $1 આપમેળે {{GENDER:$2|બનાવવામાં આવ્યું હતું}}",
        "rightsnone": "(કંઈ નહી)",
        "revdelete-summary": "સંપાદનનો સંક્ષિપ્ત અહેવાલ",
+       "feedback-adding": "પ્રતિભાવ આ પાના પર ઉમેરાઈ રહ્યો છે.",
+       "feedback-bugcheck": "સરસ! જરા જોઈ લેશો કે આ  પહેલેથી જ હાજર [$1 known bugs] નથીને?",
+       "feedback-bugnew": "મેં તપાસ્યું.  નવી ત્રુટીની જાણ કરો.",
        "feedback-bugornote": "જો તમે તકનીકી સમસ્યા વર્ણવવા માંગતા હોય તો  કૃપયા [$1 report a bug] એ બગ અહીં નોંધાવો.\nઅન્યથા, તમે નીચે આપેલ સરળ ફોર્મ વાપરી શકો છો. તમારા સભ્ય નામ અને કયું બ્રાઉઝર વાપરો છો તેની માહિતી સાથે, તમારી ટિપ્પણીનો \"[$3 $2]\" પાનામાં સમાવેશ કરાશે.",
-       "feedback-subject": "વિષય:",
-       "feedback-message": "સંદેશ",
        "feedback-cancel": "રદ કરો",
-       "feedback-submit": "પ્રતિભાવ આપો",
-       "feedback-adding": "પ્રતિભાવ આ પાના પર ઉમેરાઈ રહ્યો છે.",
+       "feedback-close": "સંપન્ન",
        "feedback-error1": "ક્ષતિ:API તરફથી અજાણ પરિણામ",
        "feedback-error2": "ક્ષતિ:ફેરફાર નિષ્ફળ",
        "feedback-error3": "ત્રુટી: API તરફથી કોઈ પ્રત્યુત્તર નથી",
+       "feedback-message": "સંદેશ",
+       "feedback-subject": "વિષય:",
+       "feedback-submit": "પ્રતિભાવ આપો",
        "feedback-thanks": "આભર! તમારા પ્રતિભાવને \"[$2 $1]\" પાના પર મુકાયા છે.",
-       "feedback-close": "સંપન્ન",
-       "feedback-bugcheck": "સરસ! જરા જોઈ લેશો કે આ  પહેલેથી જ હાજર [$1 known bugs] નથીને?",
-       "feedback-bugnew": "મેં તપાસ્યું.  નવી ત્રુટીની જાણ કરો.",
        "searchsuggest-search": "શોધો",
        "searchsuggest-containing": "ધરાવતી...",
        "api-error-badaccess-groups": "આ વિકિ પર ફાઈલ ચઢાવવાની પરવાનગી તમને નથી.",
index 23529df..fbfced5 100644 (file)
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|ביטל|ביטלה}} את הפעלת התגית \"$4\" לשימוש על־ידי משתמשים ובוטים",
        "rightsnone": "(כלום)",
        "revdelete-summary": "תקציר העריכה",
+       "feedback-adding": "הוספת משוב לדף...",
+       "feedback-back": "חזרה",
+       "feedback-bugcheck": "מצוין! נא לבדוק שזה לא אחד מה[$1 באגים הידועים].",
+       "feedback-bugnew": "בדקתי. נא לדווח כבאג חדש",
        "feedback-bugornote": "אם אתם מוכנים לתאר בעיה טכנית בפרטים, אנא [$1 דווחו באג].\nאחרת, תוכלו להשתמש בטופס הפשוט שלהלן. הערתכם תתווסף לדף \"[$3 $2]\", יחד עם שם המשתמש שלכם.",
-       "feedback-subject": "נושא:",
-       "feedback-message": "הודעה:",
        "feedback-cancel": "ביטול",
-       "feedback-submit": "שליחת משוב",
-       "feedback-adding": "הוספת משוב לדף...",
+       "feedback-close": "סיום",
+       "feedback-external-bug-report-button": "דיווח על משימה טכנית",
+       "feedback-dialog-title": "שליחת המשוב",
+       "feedback-dialog-intro": "באפשרותך להשתמש בטופס הפשוט שלהלן כדי לשלוח משוב. ההערה שלך תתווסף לדף \"$1\", יחד עם שם המשתמש שלך.",
+       "feedback-error-title": "שגיאה",
        "feedback-error1": "שגיאה: תוצאה לא מזוהה מה־API",
        "feedback-error2": "שגיאה: העריכה נכשלה",
        "feedback-error3": "שגיאה: אין תשובה מה־API",
+       "feedback-message": "הודעה:",
+       "feedback-subject": "נושא:",
+       "feedback-submit": "שליחה",
+       "feedback-terms": "ידוע לי שפרטי ה־user agent שלי כוללים מידע על הגרסאות המדויקות של הדפדפן ומערכת ההפעלה שלי, ושהם יפורסמו בפומבי לצד המשוב ששלחתי.",
+       "feedback-termsofuse": "מוסכם עלי ששליחת המשוב היא בהתאם לתנאי השימוש.",
        "feedback-thanks": "תודה! המשוב שלך פורסם בדף \"[$2 $1]\".",
-       "feedback-close": "סיום",
-       "feedback-bugcheck": "מצוין! נא לבדוק שזה לא אחד מה[$1 באגים הידועים].",
-       "feedback-bugnew": "בדקתי. נא לדווח כבאג חדש",
+       "feedback-thanks-title": "תודה!",
+       "feedback-useragent": "User agent:",
        "searchsuggest-search": "חיפוש",
        "searchsuggest-containing": "כולל...",
        "api-error-badaccess-groups": "אינך מורשה להעלות קבצים לאתר הוויקי הזה.",
index e85e37a..27e5925 100644 (file)
        "logentry-upload-upload": "$1 {{GENDER:$2|ने}} $3 अपलोड किया",
        "rightsnone": "(कोई नहीं)",
        "revdelete-summary": "संपादन सारांश",
+       "feedback-adding": "पृष्ठ पर प्रतिक्रिया जोड़ना ...",
+       "feedback-bugcheck": "शानदार! जांच ले कहीं ये [ $1 known bugs] पहले से ही न हो ।",
+       "feedback-bugnew": "मैं जाँच कीया। एक नया बग रिपोर्ट करें",
        "feedback-bugornote": "यदि आप किसी तकनीकी परेशानी को विस्तार से समझाने के लिये तैयार हैं तो कृपया [$1 बग फ़ाइल करें]।\nयदि नहीं, तो आप नीचे दिये सरल फ़ॉर्म का प्रयोग कर सकते हैं। आपकी टिप्पणी आपके सदस्य नाम और आपके ब्राउज़र के नाम के सहित \"[$3 $2]\" पृष्ठ में जोड़ दी जाएगी।",
-       "feedback-subject": "विषय:",
-       "feedback-message": "संदेश:",
        "feedback-cancel": "रद्द करें",
-       "feedback-submit": "प्रतिक्रिया भेजें",
-       "feedback-adding": "पृष्ठ पर प्रतिक्रिया जोड़ना ...",
+       "feedback-close": "हो गया",
        "feedback-error1": "त्रुटि: न पहचाना गया परिणाम एपीआई से",
        "feedback-error2": "त्रुटि: संपादन विफल रहा है",
        "feedback-error3": "त्रुटि: एपीआई से कोई प्रतिक्रिया नहीं",
+       "feedback-message": "संदेश:",
+       "feedback-subject": "विषय:",
+       "feedback-submit": "प्रतिक्रिया भेजें",
        "feedback-thanks": "धन्यवाद! आपकी प्रतिक्रिया पृष्ठ में नियुक्त किया गया है \"[ $2  $1 ]\"।",
-       "feedback-close": "हो गया",
-       "feedback-bugcheck": "शानदार! जांच ले कहीं ये [ $1 known bugs] पहले से ही न हो ।",
-       "feedback-bugnew": "मैं जाँच कीया। एक नया बग रिपोर्ट करें",
        "searchsuggest-search": "खोज",
        "searchsuggest-containing": "...से युक्त",
        "api-error-badaccess-groups": "आपको इस विकि के लिए फ़ाइलें अपलोड करने की अनुमति नहीं है.",
index b7387f9..acf9d5f 100644 (file)
        "logentry-upload-revert": "$1 је {{GENDER:$2|postavio|postavila}} $3",
        "rightsnone": "(suradnik)",
        "revdelete-summary": "sažetak",
+       "feedback-adding": "Dodajem povratne informacije na stranicu...",
+       "feedback-bugcheck": "Izvrsno! Molimo provjerite da se ne radi o nekom [$1 poznatom \"bugu\"].",
+       "feedback-bugnew": "Provjereno. Prijavi novi \"bug\"",
        "feedback-bugornote": "Ako ste spremni detaljno opisati tehnički problem molimo [$1 prijavite \"bug\"].\nInače, možete ispuniti jednostavan obrazac u nastavku. Vaš komentar biti će dodan na stranicu \"[$3 $2]\", zajedno s vašim suradničkim imenom i imenom internetskog preglednika koji rabite.",
-       "feedback-subject": "Tema:",
-       "feedback-message": "Poruka:",
        "feedback-cancel": "Odustani",
-       "feedback-submit": "Pošaljite povratnu informaciju",
-       "feedback-adding": "Dodajem povratne informacije na stranicu...",
+       "feedback-close": "Gotovo",
        "feedback-error1": "Pogreška: Neprepoznati rezultat od API funkcije",
        "feedback-error2": "Pogreška: Uređivanje nije uspjelo",
        "feedback-error3": "Pogreška: Nema odgovora od API funkcije",
+       "feedback-message": "Poruka:",
+       "feedback-subject": "Tema:",
+       "feedback-submit": "Pošaljite povratnu informaciju",
        "feedback-thanks": "Hvala! Vaš odgovor je snimljen na stranicu \"[$2 $1]\".",
-       "feedback-close": "Gotovo",
-       "feedback-bugcheck": "Izvrsno! Molimo provjerite da se ne radi o nekom [$1 poznatom \"bugu\"].",
-       "feedback-bugnew": "Provjereno. Prijavi novi \"bug\"",
        "searchsuggest-search": "Traži",
        "searchsuggest-containing": "sadrži....",
        "api-error-badaccess-groups": "Nemate ovlasti za postavljanje datoteka na ovu wiki.",
index 9a2c2a3..1b14141 100644 (file)
        "logentry-upload-revert": "$1 je $3 {{GENDER:$2|nahrał|nahrała}}",
        "rightsnone": "(ničo)",
        "revdelete-summary": "zjeće wobdźěłać",
+       "feedback-adding": "Komentar so stronje přidawa...",
+       "feedback-bugcheck": "Wulkotnje! Skontroluj jenož, hač to jedyn z [$1 znatych zmylkow] njeje.",
+       "feedback-bugnew": "Sym to skontrolował. Nowy zmylk zdźělić",
        "feedback-bugornote": "Jeli sy zwólniwy, techniski problem nadrobnje wopisać, [$1 zdźěl prošu zmylk].\nHewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so stronje \"[$3 $2]\", z twojim wužiwarskim mjenom a z wobhladowakom, kotryž wužiwaš.",
-       "feedback-subject": "Tema:",
-       "feedback-message": "Powěsć:",
        "feedback-cancel": "Přetorhnyć",
-       "feedback-submit": "Komentar wotpósłać",
-       "feedback-adding": "Komentar so stronje přidawa...",
+       "feedback-close": "Dokónčeny",
        "feedback-error1": "Zmylk: Njepřipóznaty wuslědk wot API",
        "feedback-error2": "Zmylk: Wobdźěłanje je so njeporadźiło",
        "feedback-error3": "Zmylk: Žana wotmołwa wot API",
+       "feedback-message": "Powěsć:",
+       "feedback-subject": "Tema:",
+       "feedback-submit": "Komentar wotpósłać",
        "feedback-thanks": "Dźakujemy so! Twój komentar je so k stronje \"[$2 $1]\" pósłał.",
-       "feedback-close": "Dokónčeny",
-       "feedback-bugcheck": "Wulkotnje! Skontroluj jenož, hač to jedyn z [$1 znatych zmylkow] njeje.",
-       "feedback-bugnew": "Sym to skontrolował. Nowy zmylk zdźělić",
        "searchsuggest-search": "Pytać",
        "searchsuggest-containing": "wobsahuje...",
        "api-error-badaccess-groups": "Nimaš prawo dataje do tutoho wikija nahrać.",
index 78e4bfc..95900f2 100644 (file)
        "logentry-upload-upload": "$1 {{GENDER:$2|feltöltötte}} ezt: $3",
        "rightsnone": "(semmi)",
        "revdelete-summary": "a szerkesztési összefoglalóját",
+       "feedback-adding": "Visszajelzés elmentése...",
+       "feedback-bugcheck": "Nagyszerű! Ellenőrizd, hogy ez nem egy [$1 ismert hiba].",
+       "feedback-bugnew": "Ellenőriztem. Új hiba jelentése",
        "feedback-bugornote": "Ha kész technikai problémát részletesen leírni, akkor kérjük [$1 jelents egy hibát]. Egyébként használd az alábbi űrlapot. A hozzászólásod a „[$3 $2]” laphoz kerül felvételre, a szerkesztő neveddel és böngésződ típusával együtt.",
-       "feedback-subject": "Tárgy:",
-       "feedback-message": "Üzenet:",
        "feedback-cancel": "Mégse",
-       "feedback-submit": "Visszajelzés elküldése",
-       "feedback-adding": "Visszajelzés elmentése...",
+       "feedback-close": "Kész",
        "feedback-error1": "Hiba: az API ismeretlen eredménnyel tért vissza",
        "feedback-error2": "Hiba: a szerkesztés nem sikerült",
        "feedback-error3": "Hiba: nem érkezett válasz az API-tól",
+       "feedback-message": "Üzenet:",
+       "feedback-subject": "Tárgy:",
+       "feedback-submit": "Visszajelzés elküldése",
        "feedback-thanks": "Köszönjük. A visszajelzésed elküldve a „[$2 $1]” laphoz.",
-       "feedback-close": "Kész",
-       "feedback-bugcheck": "Nagyszerű! Ellenőrizd, hogy ez nem egy [$1 ismert hiba].",
-       "feedback-bugnew": "Ellenőriztem. Új hiba jelentése",
        "searchsuggest-search": "Keresés",
        "searchsuggest-containing": "tartalmazza…",
        "api-error-badaccess-groups": "Nincs jogod fájlokat feltölteni erre a wikire.",
index 9fcc0dd..61bfa94 100644 (file)
        "logentry-upload-revert": "$1 {{GENDER:$2|ha incargate}} $3",
        "rightsnone": "(nulle)",
        "revdelete-summary": "summario del modification",
+       "feedback-adding": "Le responsa es addite al pagina...",
+       "feedback-bugcheck": "Bon! Ma per favor verifica que iste falta non es [$1 jam cognoscite].",
+       "feedback-bugnew": "Si, io lo ha verificate; reportar un nove falta",
        "feedback-bugornote": "Si tu es preste a describer un problema technic in detalio, per favor [$1 reporta un falta].\nSi non, tu pote usar le formulario facile hic infra. Tu commento essera addite al pagina \"[$3 $2]\", con tu nomine de usator e le navigator del web que tu usa.",
-       "feedback-subject": "Subjecto:",
-       "feedback-message": "Message:",
        "feedback-cancel": "Cancellar",
-       "feedback-submit": "Submitter opinion",
-       "feedback-adding": "Le responsa es addite al pagina...",
+       "feedback-close": "Finite",
        "feedback-error1": "Error: Resultato del API non recognoscite",
        "feedback-error2": "Error: Modification fallite",
        "feedback-error3": "Error: Nulle responsa del API",
+       "feedback-message": "Message:",
+       "feedback-subject": "Subjecto:",
+       "feedback-submit": "Submitter opinion",
        "feedback-thanks": "Gratias! Tu evalutation ha essite publicate in le pagina \"[$2 $1]\".",
-       "feedback-close": "Finite",
-       "feedback-bugcheck": "Bon! Ma per favor verifica que iste falta non es [$1 jam cognoscite].",
-       "feedback-bugnew": "Si, io lo ha verificate; reportar un nove falta",
        "searchsuggest-search": "Cercar",
        "searchsuggest-containing": "continente...",
        "api-error-badaccess-groups": "Tu non ha le permission de incargar files in iste wiki.",
index 47976a4..0e46d5e 100644 (file)
@@ -36,7 +36,8 @@
                        "C5st4wr6ch",
                        "Raynasution",
                        "Arifin.wijaya",
-                       "Ahdan"
+                       "Ahdan",
+                       "Macofe"
                ]
        },
        "tog-underline": "Garis bawahi pranala:",
        "logentry-managetags-create": "$1 {{GENDER:$2|membuat}} tag \"$4\"",
        "rightsnone": "(tidak ada)",
        "revdelete-summary": "ringkasan",
+       "feedback-adding": "Menambahkan umpan balik ke halaman...",
+       "feedback-bugcheck": "Hebat! Hanya periksa bahwa itu bukan satu di antara [$1 bug yang telah dikenal].",
+       "feedback-bugnew": "Saya telah memeriksa. Laporkan bug baru",
        "feedback-bugornote": "Jika Anda sudah siap untuk mendeskripsikan masalah teknis secara rinci silakan [$1 melaporkan bug].\nJika tidak, Anda dapat menggunakan formulir mudah di bawah ini. Komentar Anda akan ditambahkan ke halaman \"[$3 $2]\", bersama dengan nama pengguna Anda dan apa browser yang Anda gunakan.",
-       "feedback-subject": "Perihal:",
-       "feedback-message": "Pesan:",
        "feedback-cancel": "Batal",
-       "feedback-submit": "Kirim Umpan Balik",
-       "feedback-adding": "Menambahkan umpan balik ke halaman...",
+       "feedback-close": "Selesai",
        "feedback-error1": "Galat: Hasil tidak dikenal dari API",
        "feedback-error2": "Galat: Penyuntingan gagal",
        "feedback-error3": "Error: API tidak merespons",
+       "feedback-message": "Pesan:",
+       "feedback-subject": "Perihal:",
+       "feedback-submit": "Kirim",
        "feedback-thanks": "Terima kasih! Umpan balik Anda telah dikirimkan ke halaman \"[$2 $1]\".",
-       "feedback-close": "Selesai",
-       "feedback-bugcheck": "Hebat! Hanya periksa bahwa itu bukan satu di antara [$1 bug yang telah dikenal].",
-       "feedback-bugnew": "Saya telah memeriksa. Laporkan bug baru",
        "searchsuggest-search": "Cari",
        "searchsuggest-containing": "berisi...",
        "api-error-badaccess-groups": "Anda tidak diizinkan mengunggah berkas ke wiki ini.",
index 67697ba..9b4dfcc 100644 (file)
        "revdelete-content-hid": "ihe zọ̀nàri",
        "rightsnone": "(efù)",
        "revdelete-summary": "mmẹkotá orü",
-       "feedback-message": "Ozi:",
        "feedback-close": "Ọméchá.",
+       "feedback-message": "Ozi:",
        "searchsuggest-search": "Chọwa",
        "expand_templates_ok": "Ngwanu"
 }
index 0c2b29e..5fc0be2 100644 (file)
@@ -7,7 +7,8 @@
                        "Saluyot",
                        "Urhixidur",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "Macofe"
                ]
        },
        "tog-underline": "Pinag-ugisan ti silpo:",
        "deleteprotected": "Saanmo a maikkat daytoy a panid gapu ta nasalaknibanen.",
        "deleting-backlinks-warning": "'''Ballaag:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Dagiti dadduma a panid]] ket naisilpo wenno nailak-am manipud ti panid a gangani nga ikkatem.",
        "rollback": "Isubli dagiti panagurnos",
-       "rollback_short": "Isubli",
        "rollbacklink": "isubli",
        "rollbacklinkcount": "agisubli ti $1 {{PLURAL:$1|nga inurnos|nga inur-urnos}}",
        "rollbacklinkcount-morethan": "agisubli ti ad-adu ngem $1 {{PLURAL:$1|nga inurnos|nga inur-urnos}}",
        "sp-contributions-logs": "dagiti listaan",
        "sp-contributions-talk": "tungtungan",
        "sp-contributions-userrights": "panagtaripato kadagiti karbengan ti agar-aramat",
-       "sp-contributions-blocked-notice": "Adama a naserraan daytoy nga agar-aramat.\nTi naudi a naikabil iti listaan ti pannakaserra ket naited dita baba para iti reperensia:",
+       "sp-contributions-blocked-notice": "Agdama a naserraan daytoy nga agar-aramat.\nTi naudi a naikabil iti listaan ti pannakaserra ket naited dita baba para iti reperensia:",
        "sp-contributions-blocked-notice-anon": "Daytoy nga IP a pagtaengan ket agdama a naserraan.\nTi naudi a naikabil iti listaan ti pannakaserra ket adda dita baba para iti reperensia:",
        "sp-contributions-search": "Agbiruk para kadagiti kontribusion",
        "sp-contributions-username": "IP a pagtaengan wenno nagan ti agar-aramat:",
        "import-logentry-interwiki": "nai-transwiki iti $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|rebision|dagiti rebision}} ti naala manipud ti $2",
        "javascripttest": "Panagsubok ti JavaScript",
-       "javascripttest-title": "Agpatpataray kadagiti panagsubok ti $1",
        "javascripttest-pagetext-noframework": "Daytoy a panid ket naireserba para iti panagpataray kadagiti panagsubok ti JavaScript.",
        "javascripttest-pagetext-unknownframework": "Di ammo a tabas ti panagsubok ti \"$1\".",
        "javascripttest-pagetext-frameworks": "Pangngaasi nga agpili ti maysa kadagiti sumaganad a tabas ti panagsubok: $1",
        "javascripttest-pagetext-skins": "Agpili ti kudil a pangipatarayan kadagiti panagsubok:",
        "javascripttest-qunit-intro": "Kitaen ti [ $1 dukomentasion ti panagsubok] idiay mediawiki.org.",
-       "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit test suite",
        "tooltip-pt-userpage": "Panidmo nga agar-aramat",
        "tooltip-pt-anonuserpage": "Ti panid ti agar-aramat para iti daytoy nga IP a pagtaengan a kas ur-urnosem",
        "tooltip-pt-mytalk": "Tungtungam a panid",
        "logentry-upload-revert": "Ni $1 ket {{GENDER:$2|inkargana}} ti $3",
        "rightsnone": "(awan)",
        "revdelete-summary": "Pakabuklan ti inurnos",
+       "feedback-adding": "Agnaynayon ti feedback iti panid...",
+       "feedback-bugcheck": "Nasayaaten! Kitaem tapno saan a dagiti adda idin a [$1 nga ammo a parparikut].",
+       "feedback-bugnew": "Kinitak. Agireporta iti baro a parikut",
        "feedback-bugornote": "No sisasagakan nga agibaga ti teknikal a pakirut a naisalaysay pangngaasi nga [$1 ireporta ti parikut].\nNupay kasta, mausarmo ti nalaka a porma dita baba. Ti komentario nga itedmo ket mainayon iti panid \"[$3 $2], a mairaman ti naganmo nga agar-aramat ken no ania ti pagbasabasa nga us-sarem.",
-       "feedback-subject": "Suheto:",
-       "feedback-message": "Mensahe:",
        "feedback-cancel": "Ukasen",
-       "feedback-submit": "Agited ti Feedback",
-       "feedback-adding": "Agnaynayon ti feedback iti panid...",
+       "feedback-close": "Nalpasen",
        "feedback-error1": "Biddut: Saan a malasin dagiti nagbanagan manipud ti API",
        "feedback-error2": "Biddut: Napaay ti panagurnos",
        "feedback-error3": "Biddut: Awan ti sungbat manipud ti API",
+       "feedback-message": "Mensahe:",
+       "feedback-subject": "Suheto:",
+       "feedback-submit": "Ited",
        "feedback-thanks": "Agyaman! Ti feedbackmo ket naipablaak iti panid \"[$2 $1]\".",
-       "feedback-close": "Nalpasen",
-       "feedback-bugcheck": "Nasayaaten! Kitaem tapno saan a dagiti adda idin a [$1 nga ammo a parparikut].",
-       "feedback-bugnew": "Kinitak. Agireporta iti baro a parikut",
        "searchsuggest-search": "Biruken",
        "searchsuggest-containing": "naglaon ti...",
        "api-error-badaccess-groups": "Saanka mapalubosan nga agikarga kadagiti papeles iti daytoy a wiki.",
index 8be4090..2a6f102 100644 (file)
        "logentry-upload-overwrite": "$1 {{GENDER:$2|hlóð inn}} nýrri útgáfu af $3",
        "rightsnone": "(engum)",
        "revdelete-summary": "breytingarágrip",
+       "feedback-adding": "Bæti við svörun á síðuna...",
+       "feedback-bugcheck": "Frábært! Athugaðu hvort þessi villa hafi verið [$1 tilkynnt áður].",
+       "feedback-bugnew": "Ég athugaði það. Tilkynna nýja villu.",
        "feedback-bugornote": "Ef þú ert reiðubúinn að lýsa tæknilegri villu í smáatriðum, vinsamlegast [$1 tilkynntu villu].\nEf ekki, þá getur þú notað einfalt eyðublað hér fyrir neðan. Athugasemdin þín verður bætt við síðuna \"[$3 $2]\" ásamt notendanafni og nafni vafrarans sem þú ert að nota.",
-       "feedback-subject": "Fyrirsögn:",
-       "feedback-message": "Skilaboð:",
        "feedback-cancel": "Hætta við",
-       "feedback-submit": "Senda svörun",
-       "feedback-adding": "Bæti við svörun á síðuna...",
+       "feedback-close": "Búið",
        "feedback-error1": "Villa: Óþekkt útkoma frá API",
        "feedback-error2": "Villa: Breytingin mistókst",
        "feedback-error3": "Villa: Ekkert svar frá API",
+       "feedback-message": "Skilaboð:",
+       "feedback-subject": "Fyrirsögn:",
+       "feedback-submit": "Senda svörun",
        "feedback-thanks": "Takk! Ábendingu þinni hefur verið bætt við á síðuna \"[$2 $1]\".",
-       "feedback-close": "Búið",
-       "feedback-bugcheck": "Frábært! Athugaðu hvort þessi villa hafi verið [$1 tilkynnt áður].",
-       "feedback-bugnew": "Ég athugaði það. Tilkynna nýja villu.",
        "searchsuggest-search": "Leita",
        "searchsuggest-containing": "sem innihalda ...",
        "api-error-badaccess-groups": "Þú hefur ekki leyfi til að hlaða inn skrám.",
index c4d8038..1fbec26 100644 (file)
        "cannotdelete": "Non è stato possibile cancellare la pagina o il file \"$1\".\nPotrebbe essere stato già cancellato da qualcun altro.",
        "cannotdelete-title": "Impossibile cancellare la pagina \"$1\"",
        "delete-hook-aborted": "La cancellazione è stata annullata dall'hook.\nNon è stata restituita alcuna spiegazione.",
-       "no-null-revision": "Non può essere creata una versione nulla per la pagina \"$1\"",
+       "no-null-revision": "Non è stato possibile creare una versione nulla per la pagina \"$1\"",
        "badtitle": "Titolo non corretto",
        "badtitletext": "Il titolo della pagina richiesta è vuoto, errato oppure deriva da un errore nei collegamenti interlingua o interwiki.\nPotrebbe inoltre contenere uno o più caratteri il cui uso non è ammesso nei titoli.",
        "perfcached": "I dati che seguono sono estratti da una copia ''cache'' del database, e potrebbero non essere aggiornati. Un massimo di {{PLURAL:$1|un risultato è disponibile|$1 risultati sono disponibili}} in cache.",
        "mycustomjsprotected": "Non si dispone dei permessi necessari per modificare questa pagina JavaScript.",
        "myprivateinfoprotected": "Non si dispone dei permessi necessari per modificare i propri dati personali.",
        "mypreferencesprotected": "Non si dispone dei permessi necessari per modificare le proprie preferenze.",
-       "ns-specialprotected": "Non è possibile modificare le pagine speciali.",
+       "ns-specialprotected": "Le pagine speciali non possono essere modificate.",
        "titleprotected": "La creazione di una pagina con questo titolo è stata bloccata da [[User:$1|$1]].\nLa motivazione è la seguente: ''$2''.",
        "filereadonlyerror": "Non è stato possibile modificare il file \"$1\" poiché il repository di file \"$2\" è in modalità di sola lettura.\n\nL'amministratore che lo ha bloccato ha fornito questa motivazione: \"$3\".",
        "invalidtitle-knownnamespace": "Titolo non valido con namespace \"$2\" e testo \"$3\"",
        "logentry-managetags-create": "$1 {{GENERE:$2|ha creato}} il tag \"$4\"",
        "rightsnone": "(nessuno)",
        "revdelete-summary": "oggetto della modifica",
+       "feedback-adding": "Inserimento del feedback nella pagina...",
+       "feedback-bugcheck": "Ottimo! Verifica che non sia già fra i [$1 bug conosciuti].",
+       "feedback-bugnew": "Controllo effettuato. Segnala un nuovo bug",
        "feedback-bugornote": "Se si è in grado di descrivere il problema tecnico riscontrato in maniera precisa, [$1 segnalate il bug]. In alternativa, si può usare il modulo semplificato sottostante. Il commento inserito sarà aggiunto alla pagina \"[$3 $2]\", insieme al proprio nome utente e al browser in uso.",
-       "feedback-subject": "Oggetto:",
-       "feedback-message": "Messaggio:",
        "feedback-cancel": "Annulla",
-       "feedback-submit": "Invia feedback",
-       "feedback-adding": "Inserimento del feedback nella pagina...",
+       "feedback-close": "Fatto",
        "feedback-error1": "Errore: Dalla API è arrivato un risultato non riconosciuto",
        "feedback-error2": "Errore: Non è stato possibile eseguire la modifica",
        "feedback-error3": "Errore: Nessuna risposta dalla API",
+       "feedback-message": "Messaggio:",
+       "feedback-subject": "Oggetto:",
+       "feedback-submit": "Invia",
        "feedback-thanks": "Grazie! Il tuo feedback è stato pubblicato alla pagina \"[$2 $1]\".",
-       "feedback-close": "Fatto",
-       "feedback-bugcheck": "Ottimo! Verifica che non sia già fra i [$1 bug conosciuti].",
-       "feedback-bugnew": "Controllo effettuato. Segnala un nuovo bug",
        "searchsuggest-search": "Ricerca",
        "searchsuggest-containing": "contenente...",
        "api-error-badaccess-groups": "Non sei autorizzato a caricare documenti su questa wiki.",
index 6911ff7..edf2869 100644 (file)
        "logentry-upload-revert": "$1 が $3 を {{GENDER:$2|アップロードしました}}",
        "rightsnone": "(なし)",
        "revdelete-summary": "編集内容の要約",
+       "feedback-adding": "ページへのフィードバックの追加...",
+       "feedback-bugcheck": "Great! [$1 既出のバグ]に既に含まれていないかご確認ください。",
+       "feedback-bugnew": "チェックしました。バグを報告します。",
        "feedback-bugornote": "技術的な問題の詳細を説明する準備ができている場合は、[$1 バグ報告]をお願いします。\n準備ができていない場合は、下の簡易フォームを使用してください。あなたのコメントと利用者名が、ページ「[$3 $2]」に追加されます。",
-       "feedback-subject": "件名:",
-       "feedback-message": "メッセージ:",
        "feedback-cancel": "キャンセル",
-       "feedback-submit": "フィードバックを送信",
-       "feedback-adding": "ページへのフィードバックの追加...",
+       "feedback-close": "完了",
        "feedback-error1": "エラー: 認識できない結果を API が返しました",
        "feedback-error2": "エラー: 編集に失敗しました",
        "feedback-error3": "エラー: API からの応答がありません",
+       "feedback-message": "メッセージ:",
+       "feedback-subject": "件名:",
+       "feedback-submit": "フィードバックを送信",
        "feedback-thanks": "ありがとうございます。フィードバックを「[$2 $1]」のページに投稿しました。",
-       "feedback-close": "完了",
-       "feedback-bugcheck": "Great! [$1 既出のバグ]に既に含まれていないかご確認ください。",
-       "feedback-bugnew": "チェックしました。バグを報告します。",
        "searchsuggest-search": "検索",
        "searchsuggest-containing": "この語句を全文検索",
        "api-error-badaccess-groups": "このウィキへのファイルのアップロードが許可されていません。",
index 15f575c..5a4472c 100644 (file)
        "logentry-rights-autopromote": "$1 otomatis {{GENDER:$2|dipromosikne}} saka $4 nèng $5",
        "rightsnone": "(ora ana)",
        "revdelete-summary": "ringkesan suntingan",
+       "feedback-adding": "Nambahaké lebon saran nèng kaca...",
+       "feedback-bugcheck": "Apik! Pesthèké kuwi dudu sawijining [$1 bug sing dingertèni].",
+       "feedback-bugnew": "Aku wis mriksa. Kandakaké bug anyar",
        "feedback-bugornote": "Yèn Sampéyan siap njelasaké masalah tèhnis kanthi rinci mangga [$1 laporaké bug].\nUtawa, Sampéyan bisa nganggo pormulir gampang ngisor. Tanggepan Sampéyan bakal ditambahaké nèng kaca \"[$3 $2]\", bebarengan karo jeneng panganggo Sampéyan lan pramban sing Sampéyan anggo.",
-       "feedback-subject": "Jejer:",
-       "feedback-message": "Layang:",
        "feedback-cancel": "Batal",
-       "feedback-submit": "Kirim Lebon Saran",
-       "feedback-adding": "Nambahaké lebon saran nèng kaca...",
+       "feedback-close": "Rampung",
        "feedback-error1": "Kasalahan: Asil ora dikenal saka API",
        "feedback-error2": "Kasalahan: Gagal nyunting",
        "feedback-error3": "Kasalahan: Ora ana tanggepan saka API",
+       "feedback-message": "Layang:",
+       "feedback-subject": "Jejer:",
+       "feedback-submit": "Kirim Lebon Saran",
        "feedback-thanks": "Nuwun! Lebon saran Sampéyan wis dipasang nèng kacané \"[$2 $1]\".",
-       "feedback-close": "Rampung",
-       "feedback-bugcheck": "Apik! Pesthèké kuwi dudu sawijining [$1 bug sing dingertèni].",
-       "feedback-bugnew": "Aku wis mriksa. Kandakaké bug anyar",
        "searchsuggest-search": "Golèk",
        "searchsuggest-containing": "ngisi...",
        "api-error-badaccess-groups": "Sampéyan ora dililakaké ngunggah berkas nèng wiki iki.",
index 4fc8d63..9808620 100644 (file)
        "logentry-upload-revert": "მომხმარებელმა $1 {{GENDER:$2|ატვირთა}} $3",
        "rightsnone": "(არცერთი)",
        "revdelete-summary": "ცვლილებების აღწერა",
+       "feedback-adding": "თქვენი შეფასების შენახვა...",
+       "feedback-bugcheck": "კარგია! გთხოვთ, კიდევ ერთხელ შეამოწმეთ, ხომ არ არის აქ რომელიმე უკვე [$1 ნაცნობი შეცდომა].",
+       "feedback-bugnew": "მე შევამოწმე. ახალი შეცდომის შეტყობინება",
        "feedback-bugornote": "თუ თქვენ მზად ხართ დეტალურად აღწეროთ ტექნიკური პრობლემა, გთხოვთ, [$1 შეგვატყობინეთ შეცდომის შესახებ].\nწინააღმდეგ შემთხვევაში თქვენ შეგიძლიათ ისარგებლოთ ამ მარტივი ფორმით. თქვენი კომენტარი დაემატება  „[$3 $2]“ გვერდზე თქვენი მომხმარებლის სახელთან და გამოყენებულ ბრაუზერთან ერთად.",
-       "feedback-subject": "თემა:",
-       "feedback-message": "შეტყობინება:",
        "feedback-cancel": "გაუქმება",
-       "feedback-submit": "შეფასების გაგზავნა",
-       "feedback-adding": "თქვენი შეფასების შენახვა...",
+       "feedback-close": "გაკეთდა",
        "feedback-error1": "შეცდომა. API-ს მოულოდნელი რეზულტატი.",
        "feedback-error2": "შეცდომა: რედაქტირება ვერ განხორციელდა",
        "feedback-error3": "შეცდომა. არ არის API-ს პასუხი .",
+       "feedback-message": "შეტყობინება:",
+       "feedback-subject": "თემა:",
+       "feedback-submit": "შეფასების გაგზავნა",
        "feedback-thanks": "გმადლობთ! თქვენი შეფასება განთავსებულია „[$2 $1]“ გვერდზე.",
-       "feedback-close": "გაკეთდა",
-       "feedback-bugcheck": "კარგია! გთხოვთ, კიდევ ერთხელ შეამოწმეთ, ხომ არ არის აქ რომელიმე უკვე [$1 ნაცნობი შეცდომა].",
-       "feedback-bugnew": "მე შევამოწმე. ახალი შეცდომის შეტყობინება",
        "searchsuggest-search": "ძიება",
        "searchsuggest-containing": "შეიცავს...",
        "api-error-badaccess-groups": "თქვენ არ გაქვთ ამ ვიკიში ფაილების ატვირთვის უფლება.",
index 63ddb1f..c92e9e1 100644 (file)
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|yebeddel|tebeddel}} amyili ar ugraw i $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|yettwasmel|tettwasmel}} s uwurman seg $4 ar $5",
        "rightsnone": "(ulaḥedd)",
+       "feedback-adding": "Rnud iwenniten inek/inem ar usebter...",
+       "feedback-bugcheck": "D ayen igerrzen ! Senqed kan ma mačči d yiwen n [$1 inezriyen i n-sen yakan].",
+       "feedback-bugnew": "Senqedeɣ. Ɛeyyen anezri amaynut",
        "feedback-bugornote": "Ma teḥgiḍ iman-ik/im ad gelmeḍ agnu atekni i tilɣa tummidtin, [$1 ɛeyyen ɣef anezri].\nMulac, tzemreḍ ad seqdeceḍ tiferkit ddaw agi. Awennit inek/inem ad yetwernu ar usebtar « [$3 $2] », s isem-ik/im n umseqdac d iminig i tseqdeceḍ.",
-       "feedback-subject": "Asentel :",
-       "feedback-message": "Izen :",
        "feedback-cancel": "Semmewet",
-       "feedback-submit": "Ceggaɛ iwenniten",
-       "feedback-adding": "Rnud iwenniten inek/inem ar usebter...",
+       "feedback-close": "D ayen",
        "feedback-error1": "Tuccḍa : Agmuḍ n API ur yetwaɛqel ara",
        "feedback-error2": "Tuccḍa  : abeddel yexṣer",
        "feedback-error3": "Tuccḍa : Ulac tamrarut n API",
+       "feedback-message": "Izen :",
+       "feedback-subject": "Asentel :",
+       "feedback-submit": "Ceggaɛ iwenniten",
        "feedback-thanks": "Tanemmirt ! Awennit inek/inem yeffeɣ-d ɣef usebtar \"[$2 $1]\".",
-       "feedback-close": "D ayen",
-       "feedback-bugcheck": "D ayen igerrzen ! Senqed kan ma mačči d yiwen n [$1 inezriyen i n-sen yakan].",
-       "feedback-bugnew": "Senqedeɣ. Ɛeyyen anezri amaynut",
        "searchsuggest-search": "Nadi",
        "searchsuggest-containing": "yesɛan...",
        "api-error-badaccess-groups": "Ur tesɛiḍ ara turagt ad smireḍ ifuyla ɣef wiki agi.",
index 54f1ae9..609f88f 100644 (file)
        "logentry-upload-overwrite": "$1 $3 дегеннің жаңа нұсқасын {{GENDER:$2|жүктеді}}",
        "rightsnone": "(ешқандай)",
        "revdelete-summary": "өңдеменің қысқаша мазмұндамасы",
-       "feedback-subject": "Тақырып:",
-       "feedback-message": "Хабарлама:",
-       "feedback-cancel": "Болдырмау",
-       "feedback-submit": "Кері байланысты жіберу",
        "feedback-adding": "Бетке кері байланыс қосуда...",
+       "feedback-cancel": "Болдырмау",
+       "feedback-close": "Жасалды",
        "feedback-error2": "Қате: Өңдеме сәтсіздікке ұшырады",
+       "feedback-message": "Хабарлама:",
+       "feedback-subject": "Тақырып:",
+       "feedback-submit": "Кері байланысты жіберу",
        "feedback-thanks": "Рахмет! Сіздің кері байланысыңыз \"[$2 $1]\" бетіне қойылды.",
-       "feedback-close": "Жасалды",
        "searchsuggest-search": "Іздеу",
        "searchsuggest-containing": "қамтылуда...",
        "api-error-badaccess-groups": "Сізге бұл уикиге файл жүктеуге рұқсат етілмеген.",
index 4e62612..049cc34 100644 (file)
        "logentry-rights-autopromote": "$1 {{GENDER:$2|ត្រូវបានតំឡើង}}សមាជិកភាពពី $4 ជា $5 ដោយស្វ័យប្រវត្តិ",
        "rightsnone": "(ទទេ)",
        "revdelete-summary": "កែប្រែចំណារពន្យល់",
-       "feedback-subject": "កម្មវត្ថុ ៖",
-       "feedback-message": "សារ​៖",
-       "feedback-cancel": "បោះបង់​",
-       "feedback-submit": "ដាក់ស្នើមតិយោបល់",
        "feedback-adding": "កំពុងបន្ថែមមតិយោបល់ទៅលើទំព័រ...",
+       "feedback-cancel": "បោះបង់​",
+       "feedback-close": "រួចរាល់",
        "feedback-error1": "បញ្ហា៖ លទ្ធផលមិនស្គាល់ពី API",
        "feedback-error2": "បញ្ហា៖ កែប្រែមិនបានសម្រេច",
        "feedback-error3": "បញ្ហា៖ គ្មានចម្លើយតបពី API",
+       "feedback-message": "សារ​៖",
+       "feedback-subject": "កម្មវត្ថុ ៖",
+       "feedback-submit": "ដាក់ស្នើមតិយោបល់",
        "feedback-thanks": "សូមអរគុណ! មតិយោបល់របស់អ្នកត្រូវបានដាក់ផ្សាយនៅលើទំព័រ \"[$2 $1]\"។",
-       "feedback-close": "រួចរាល់",
        "searchsuggest-search": "ស្វែងរក​",
        "searchsuggest-containing": "ដែលមានពាក្យ...",
        "api-error-badaccess-groups": "អ្នកគ្មានការអនុញ្ញាតអោយផ្ទុកឯកសារឡើងទៅក្នុងវិគីនេះទេ។",
index d598f94..9af2ee9 100644 (file)
        "logentry-upload-upload": "$1 {{GENDER:$2|ಅಪ್ಲೋಡ್ ಮಾಡಿದ್ದಾರೆ}} $3",
        "rightsnone": "(ಯಾವೂ ಇಲ್ಲ)",
        "revdelete-summary": "ಸಂಪಾದನೆಯ ತಾತ್ಪರ್ಯ",
-       "feedback-subject": "ವಿಷಯ:",
        "feedback-message": "ಸಂದೇಶ:",
+       "feedback-subject": "ವಿಷಯ:",
        "searchsuggest-search": "ಹುಡುಕು",
        "duration-seconds": "$1 {{PLURAL:$1|ಕ್ಷಣ|ಕ್ಷಣಗಳು}}",
        "duration-minutes": "$1 {{PLURAL:$1|ನಿಮಿಷ|ನಿಮಿಷಗಳು}}",
index e6746bf..ec172cb 100644 (file)
        "logentry-upload-revert": "$1 사용자가 $3 파일을 {{GENDER:$2|올렸습니다}}",
        "rightsnone": "(없음)",
        "revdelete-summary": "편집 요약",
+       "feedback-adding": "문서에 피드백을 올리는 중...",
+       "feedback-bugcheck": "감사합니다! 혹시 해당 사항이 [$1 기존의 버그 보고서]에 올라와 있는지 확인해주세요.",
+       "feedback-bugnew": "확인했습니다. 새로운 버그 보고서를 작성합니다.",
        "feedback-bugornote": "기술적 문제를 구체적으로 설명할 준비가 되었다면 [$1 버그를 신고]해 주세요.\n아니면 아래에 쉬운 양식을 쓸 수 있습니다. 의견은 사용자 이름과 함께 \"[$3 $2]\"에 남겨질 것입니다.",
-       "feedback-subject": "제목:",
-       "feedback-message": "내용:",
        "feedback-cancel": "취소",
-       "feedback-submit": "피드백 제출",
-       "feedback-adding": "문서에 피드백을 올리는 중...",
+       "feedback-close": "완료",
        "feedback-error1": "오류: API 실행 결과를 인식할 수 없음",
        "feedback-error2": "오류: 편집 실패",
        "feedback-error3": "오류: API가 응답하지 않음",
+       "feedback-message": "내용:",
+       "feedback-subject": "제목:",
+       "feedback-submit": "피드백 제출",
        "feedback-thanks": "감사합니다! \"[$2 $1]\" 문서에 의견을 남겼습니다.",
-       "feedback-close": "완료",
-       "feedback-bugcheck": "감사합니다! 혹시 해당 사항이 [$1 기존의 버그 보고서]에 올라와 있는지 확인해주세요.",
-       "feedback-bugnew": "확인했습니다. 새로운 버그 보고서를 작성합니다.",
        "searchsuggest-search": "검색",
        "searchsuggest-containing": "다음 문자열 포함...",
        "api-error-badaccess-groups": "이 위키에 파일을 올릴 권한이 없습니다.",
index a8bbd27..f4fa725 100644 (file)
@@ -34,7 +34,7 @@
        "tog-shownumberswatching": "Бетни, кёзде тургъан тизмелерине къошханланы санын кёргюз",
        "tog-oldsig": "Бусагъатдагъы къол салыннган:",
        "tog-fancysig": "Къол салыуну энчи вики-тексти (автомат джибериусюз)",
-       "tog-uselivepreview": "Терк ал къарауну хайырландыр (экспериментал халда)",
+       "tog-uselivepreview": "Терк ал къарауну хайырландыр",
        "tog-forceeditsummary": "Тюрлендириуню ачыкълау тизгини бош къалса, билдир",
        "tog-watchlisthideown": "Кёзюмде тургъан бетден мени тюрлендириулерими джашыр",
        "tog-watchlisthidebots": "Кёзюмде тургъан бетден ботланы тюрлендириулерин джашыр",
        "otherlanguages": "Башха тилледе",
        "redirectedfrom": "(«$1» бетден джиберилгенди)",
        "redirectpagesub": "Башха бетге джибериучю бет",
+       "redirectto": "Бу бетге редирект:",
        "lastmodifiedat": "Бу бетни ахыр тюрленнгени: $2, $1.",
        "viewcount": "Бу бетге {{PLURAL:$1|бир|$1}} кере киргендиле.",
        "protectedpage": "Джакъланнган бет",
        "pool-queuefull": "Соруула джыйыучу толуду",
        "pool-errorunknown": "Билинмеген халат",
        "pool-servererror": "Пул санаучу къуллукъ ишлемеди ($1).",
+       "poolcounter-usage-error": "Хайырланыу халат: $1",
        "aboutsite": "{{SITENAME}} сайтны юсюнден",
        "aboutpage": "Project:Суратлау",
        "copyright": "Ичиндегиси,  $1 лицензиягъа кёре бериледи (башха белгиленмеген эсе).",
        "hidetoc": "джашыр",
        "collapsible-collapse": "джашыр",
        "collapsible-expand": "кёргюз",
+       "confirmable-confirm": "{{GENDER:$1|Базыбмыса}}?",
+       "confirmable-yes": "Хоу",
+       "confirmable-no": "Огъай",
        "thisisdeleted": "$1 къараргъа неда къайтарыргъа (тургъузтургъа)?",
        "viewdeleted": "$1 къараймыса?",
        "restorelink": "{{PLURAL:$1|джангыз бир кетерилген тюрлендириу|$1 кетерилген тюрлендириу}}",
        "databaseerror": "Информация базада халат",
        "databaseerror-textcl": "Билгиле базада халат чыкъды.",
        "databaseerror-query": "Соруулау: $1",
+       "databaseerror-function": "Функция: $1",
        "databaseerror-error": "Халат: $1",
        "laggedslavemode": "Эс бёлюгюз! Бу бетге ахыр джангыртыула болмазгъа боллукъдула.",
        "readonly": "Информация база джабыкъды",
        "userlogin-helplink2": "Кириуде болушлукъ",
        "userlogin-createanother": "Башха аккаунт къурау",
        "createacct-emailrequired": "Электрон почтаны адреси",
-       "createacct-emailoptional": "Электрон почтаны адреси (амалсыз тюлдю)",
-       "createacct-email-ph": "Электрон почта адресигизни джазыгъыз",
+       "createacct-emailoptional": "Email адресинг (амалсыз керек тюлдю)",
+       "createacct-email-ph": "Email адресинги джаз",
        "createacct-another-email-ph": "Электрон почтаны адресин джаз",
        "createaccountmail": "Эсде болмагъанлай генерация этилген болджаллы паролну хайырландырыу эмда берилген электрон почта адресге ийиу",
        "createacct-realname": "Керти атыгъыз (ажымсыз керек тюлдю)",
        "createacct-reason": "Чурум",
        "createacct-reason-ph": "Башха тергеу джазыуну нек къураусыз",
        "createacct-captcha": "Къоркъуусузлукъну тинтиу",
-       "createacct-imgcaptcha-ph": "Башыракъда кёрюннген текстни джаз",
+       "createacct-imgcaptcha-ph": "Башыракъдагъы текстни джаз",
        "createacct-submit": "Тергеу джазыуну къура",
        "createacct-another-submit": "Энтда бир аккаунт къурау",
        "createacct-benefit-heading": "{{SITENAME}} сизнича адамла бла къуралгъанды.",
        "changeemail-text": "Сизни e-mail адресигизни тюрлендирир ючюн бу форманы толтуругъуз. Тюрлениуню бегитир ючюн паролну джазаргъа керек боллукъду.",
        "changeemail-no-info": "Бу бетни кёрюр ючюн сиз системагъа тергеу джазыуугъуз (аккаунтугъуз) бла кирирге керексиз.",
        "changeemail-oldemail": "Почтаны бусагъатдагъы адреси:",
-       "changeemail-newemail": "ЭлекÑ\82Ñ\80он Ð¿Ð¾Ñ\87Ñ\82анÑ\8b Ð´Ð¶Ð°Ð½Ð³Ñ\8b Ð°Ð´Ñ\80еÑ\81и:",
+       "changeemail-newemail": "Ð\94жангÑ\8b email Ð°Ð´Ñ\80еÑ\81:",
        "changeemail-none": "(джокъ)",
        "changeemail-password": "«{{SITENAME}}» проектде паролугъуз:",
        "changeemail-submit": "Адресни тюрлендир",
        "logentry-rights-autopromote": "$1 къошулуучу, $4 къауумдан автомат халда $5 къауумгъа {{GENDER:$2|кёчюрюлдю}}",
        "rightsnone": "(джокъ)",
        "revdelete-summary": "тюрлениулени ачыкълау",
-       "feedback-subject": "Тема:",
-       "feedback-message": "Билдириу:",
        "feedback-cancel": "Ызына алыу",
-       "feedback-submit": "Оюмунгу джибер",
-       "feedback-error2": "Халат. Тюзетиу ётмеди",
        "feedback-close": "Тындырылды",
+       "feedback-error2": "Халат. Тюзетиу ётмеди",
+       "feedback-message": "Билдириу:",
+       "feedback-subject": "Тема:",
+       "feedback-submit": "Оюмунгу джибер",
        "searchsuggest-search": "Излеу",
        "searchsuggest-containing": "ичиндегиси…",
        "api-error-badtoken": "Ич халат: терс токен.",
index f74650d..5058b0c 100644 (file)
        "versionrequiredtext": "De Version $1 vun MediaWiki Soffwär es nüdich, öm die Sigg heh bruche ze künne. Süch op [[Special:Version|de Versionssigg]], wat mer heh för ene Soffwärstand han.",
        "ok": "Jot!",
        "pagetitle": "$1 — {{SITENAME}}",
+       "backlinksubtitle": "←&nbsp;$1",
        "retrievedfrom": "Di Sigg heh stamp vun „$1“.",
        "youhavenewmessages": "Do häs $1 ($2).",
        "youhavenewmessagesfromusers": "Do häs $1 vun {{PLURAL:$3|enem|$3|keinem}} andere Metmaacher ($2)",
        "logentry-managetags-deactivate": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät dat Kännzeijsche „$4“ för de Metmaacher un de Bots afjeschalldt.",
        "rightsnone": "(nix)",
        "revdelete-summary": "dä Täx en „{{int:summary}}“",
+       "feedback-adding": "Ben di Röckmäldong op di Sigg aam donn&nbsp;…",
+       "feedback-back": "Retuur",
+       "feedback-bugcheck": "Joot. Donn op jeede Vall nohlooer, dat dat bes jäz noch nit [$1 bikannt wohr].",
+       "feedback-bugnew": "Hann esch nohjelooert. Esch jävven ene neue Fähler enn.",
        "feedback-bugornote": "Wann de em Bejreff bes, övver e täschesch Probleem ze schrieve, bes esu jood un donn dat als en [$1 Fählermäldong].\nSöns, nemm dat koote Fommulaa heh dronger.\nWat De doh enjiß, kütt met Dingem Metmaachername un Dingem Brauser op die Sigg „[$3 $2]“ drop.",
-       "feedback-subject": "Theema:",
-       "feedback-message": "Nohreesch:",
        "feedback-cancel": "Stopp! Avbreche!",
-       "feedback-submit": "Lohß jonn!",
-       "feedback-adding": "Ben di Röckmäldong op di Sigg aam donn&nbsp;…",
+       "feedback-close": "Jedonn.",
+       "feedback-external-bug-report-button": "Donne ene Fähler mällde, ene Wonsch för en Verbäßerong ennreische, udder anndere täschneche Idee opbränge.",
+       "feedback-dialog-title": "En Rökmäldong jävve",
+       "feedback-dialog-intro": "Dat Fommolaa kam_mer för en Rökmäldong bruche. Di kütt zesamme met Dingem Metmaacher_Nahme op di Sigg „$1“.",
+       "feedback-error-title": "Fähler",
        "feedback-error1": "Fähler: dat <i lang=\"en\">API</i> säät jät, wat mer nit kenne",
        "feedback-error2": "Fähler: de Sigg ze ändere es donävve jejange",
        "feedback-error3": "Fähler: dat <i lang=\"en\">API</i> joov kein Antwoot",
+       "feedback-message": "Nohreesch:",
+       "feedback-subject": "Theema:",
+       "feedback-submit": "Lohß jonn!",
+       "feedback-terms": "Minge Brauser un sing Enschtällong un mi Bedriefssüßtehm und dänne iehr Väsohne wääde met minge Röckmäldong zersamme öffentlesch jemaat.",
+       "feedback-termsofuse": "Esch donn ming Röckmäldong onger de Bedengonge för der Jebruch maache.",
        "feedback-thanks": "Joot. Dinge Beidraach kütt op die Sigg \"[$2 $1]\".",
-       "feedback-close": "Jedonn.",
-       "feedback-bugcheck": "Joot. Donn op jeede Vall nohlooer, dat dat bes jäz noch nit [$1 bikannt wohr].",
-       "feedback-bugnew": "Hann esch nohjelooert. Esch jävven ene neue Fähler enn.",
+       "feedback-thanks-title": "Ene schöne Dangk och!",
+       "feedback-useragent": "Dä Brauser:",
        "searchsuggest-search": "Söhke",
        "searchsuggest-containing": "dren änthallde…",
        "api-error-badaccess-groups": "Do häs nit et Rääsch, Datteije en heh dat Wiki huhzelaade.",
index db2a0ee..e937b45 100644 (file)
        "logentry-newusers-create": "$1 hesabekî bikarhêneriyê çêkir",
        "rightsnone": "(tune)",
        "revdelete-summary": "kurteyê biguherîne",
-       "feedback-subject": "Mijar:",
-       "feedback-message": "Peyam:",
        "feedback-cancel": "Betal bike",
        "feedback-close": "Çêbû",
+       "feedback-message": "Peyam:",
+       "feedback-subject": "Mijar:",
        "searchsuggest-search": "Lêgerîn",
        "searchsuggest-containing": "dihundirîne...",
        "expand_templates_output": "Encam",
index e5b4a42..1313fe1 100644 (file)
        "logentry-newusers-create2": "$1 эсеп жазуусун түздү",
        "logentry-newusers-autocreate": "Автоматтуу түрдө $1 эсеп жазуусу түзүлдү",
        "rightsnone": "(жок)",
-       "feedback-subject": "Тема:",
-       "feedback-message": "Билдирүү:",
-       "feedback-cancel": "Жокко чыгаруу",
-       "feedback-submit": "Пикир жөнөтүү",
        "feedback-adding": "Баракка пикирди кошуу…",
+       "feedback-bugnew": "Мен текшердим. Жаңы ката жөнүндө маалымдоо",
+       "feedback-cancel": "Жокко чыгаруу",
+       "feedback-close": "Даяр",
        "feedback-error1": "Ката. API'ден белгисиз натыйжа",
        "feedback-error2": "Ката: Оңдоо оңунан чыккан жок",
        "feedback-error3": "Ката: API'ден жооп жок",
-       "feedback-close": "Даяр",
-       "feedback-bugnew": "Мен текшердим. Жаңы ката жөнүндө маалымдоо",
+       "feedback-message": "Билдирүү:",
+       "feedback-subject": "Тема:",
+       "feedback-submit": "Пикир жөнөтүү",
        "searchsuggest-search": "Издөө",
        "searchsuggest-containing": "кармагандар...",
        "api-error-badtoken": "Ички ката: анык эмес токен.",
index badb87d..c65f38d 100644 (file)
        "logentry-newusers-autocreate": "Ratio usoris $1 automatice creata est",
        "rightsnone": "(nullus)",
        "revdelete-summary": "summarium recensionis",
-       "feedback-message": "Nuntius:",
        "feedback-cancel": "Dimittere",
-       "feedback-error2": "Error: Recensio non additur",
        "feedback-close": "Factum",
+       "feedback-error2": "Error: Recensio non additur",
+       "feedback-message": "Nuntius:",
        "searchsuggest-search": "Quaerere",
        "searchsuggest-containing": "continens...",
        "api-error-empty-file": "Fasciculus inmissus vacuus est.",
index a2b0295..15210db 100644 (file)
        "htmlform-yes": "Si",
        "logentry-newusers-autocreate": "El cuento de usuario $1 fue {{GENDER:$2|kreado}} otomatikamente",
        "rightsnone": "(dinguno)",
-       "feedback-subject": "Sujeto",
-       "feedback-message": "Messaje",
        "feedback-cancel": "Anular",
+       "feedback-message": "Messaje",
+       "feedback-subject": "Sujeto",
        "searchsuggest-search": "Bushkar",
        "duration-seconds": "$1{{PLURAL:$1|segundo|segundos}}",
        "duration-minutes": "$1{{PLURAL:$1|minuto|minutos}}",
index 0e3c814..c84a406 100644 (file)
        "logentry-upload-revert": "$1 huet $3 {{GENDER:$2|eropgelueden}}",
        "rightsnone": "(keen)",
        "revdelete-summary": "Resumé änneren",
+       "feedback-adding": "Feedback gëtt bei d'Säit derbäigesat...",
+       "feedback-bugcheck": "Super! Kuckt just no ob et net ee vun de scho [$1 bekannte Feeler] ass.",
+       "feedback-bugnew": "Ech hunn et nogekuckt. Den neie Bug mellen",
        "feedback-bugornote": "Wann Dir bereet sidd fir en technesche Problem am Detail ze beschreiwen da [$1 mellt w.e.g. e Feeler (Bug)].\nSoss kënnt Dir den einfache Formulär hei drënner benotzen. Är Bemierkung gëtt op d'Säit \"[$3 $2]\" derbäigesat, zesumme mat Ärem Benotzernumm an dem Numm vum Browser deen Dir benotzt.",
-       "feedback-subject": "Sujet:",
-       "feedback-message": "Message:",
        "feedback-cancel": "Ofbriechen",
-       "feedback-submit": "Feedback schécken",
-       "feedback-adding": "Feedback gëtt bei d'Säit derbäigesat...",
+       "feedback-close": "Fäerdeg",
        "feedback-error1": "Feeler: Resultat vum API gouf net erkannt",
        "feedback-error2": "Feeler: D'Ännerung gouf net gespäichert",
        "feedback-error3": "Feeler: Keng Äntwert vum API",
+       "feedback-message": "Message:",
+       "feedback-subject": "Sujet:",
+       "feedback-submit": "Feedback schécken",
        "feedback-thanks": "Merci! Äre Feedback gouf op der Säit \"[$2 $1]\" gespäichert.",
-       "feedback-close": "Fäerdeg",
-       "feedback-bugcheck": "Super! Kuckt just no ob et net ee vun de scho [$1 bekannte Feeler] ass.",
-       "feedback-bugnew": "Ech hunn et nogekuckt. Den neie Bug mellen",
        "searchsuggest-search": "Sichen",
        "searchsuggest-containing": "mat ...",
        "api-error-badaccess-groups": "Et ass Iech net erlaabt fir Fichieren op dës Wiki eropzelueden.",
index a876795..64be32e 100644 (file)
        "logentry-newusers-autocreate": "De gebroeker $1 is autematis aangemaak",
        "rightsnone": "(gein)",
        "revdelete-summary": "samevatting bewerke",
+       "feedback-adding": "Feedback weurt aan pagina toegevoeg...",
+       "feedback-bugcheck": "Good! Kónterleer ef of 't neet al ein vanne [$1 bekèndje bugs] is.",
+       "feedback-bugnew": "Gekónterleerdj. Mèlj 'ne nuuj bug.",
        "feedback-bugornote": "Es se zewied bös óm e technisch perbleem in détail te besjrieve, [$1 rapperteer 'ne bug]. \nAnges kin se-n ouch 't einvawdig formeleer hieónger gebroeke. Dien commentaar zal waere toegeveug ane pagina \"[$3 $2]\", same mit diene gebroekersnaam enne browser dae se gebruuks.",
-       "feedback-subject": "Óngerwerp:",
-       "feedback-message": "Berich:",
        "feedback-cancel": "Braek aaf",
-       "feedback-submit": "Slaon feedback óp",
-       "feedback-adding": "Feedback weurt aan pagina toegevoeg...",
+       "feedback-close": "Gedaon",
        "feedback-error1": "Fout: ónbekind rizzeltaot vanne API",
        "feedback-error2": "Fout: bewirking mislök",
        "feedback-error3": "Fout: gein reactie vanne API",
+       "feedback-message": "Berich:",
+       "feedback-subject": "Óngerwerp:",
+       "feedback-submit": "Slaon feedback óp",
        "feedback-thanks": "Danke! Diene feedback is oppe pagina \"[$2 $1]\" geplaats.",
-       "feedback-close": "Gedaon",
-       "feedback-bugcheck": "Good! Kónterleer ef of 't neet al ein vanne [$1 bekèndje bugs] is.",
-       "feedback-bugnew": "Gekónterleerdj. Mèlj 'ne nuuj bug.",
        "searchsuggest-search": "Zeuke",
        "searchsuggest-containing": "bevat...",
        "api-error-badaccess-groups": "Doe moogs gein bestenj uploade óp deze wiki.",
index 9f56b15..f6c692d 100644 (file)
        "logentry-upload-revert": "$1 {{GENDER:$2|įkėlė}} $3",
        "rightsnone": "(jokių)",
        "revdelete-summary": "keitimo paaiškinimas",
+       "feedback-adding": "Pridedamas atsiliepimas į puslapį ...",
+       "feedback-bugcheck": "Puiku! Tiesiog patikrinkite, ar tai ne viena [$1 jau žinomų klaidų].",
+       "feedback-bugnew": "Patikrinau. Pranešti apie naują klaidą",
        "feedback-bugornote": "Jei jūs esate pasirengę aprašyti techninę problemą išsamiau, [$1 praneškite apie programinę klaidą].\nKitu atveju, galite naudotis žemiau esančia paprastesne forma. Jūsų komentaras bus įtrauktas į puslapį „[$3 $2]“, kartu su jūsų naudotojo vardu ir jūsų naudojama naršykle.",
-       "feedback-subject": "Tema:",
-       "feedback-message": "Pranešimas:",
        "feedback-cancel": "Atšaukti",
-       "feedback-submit": "Siųsti Atsiliepimą",
-       "feedback-adding": "Pridedamas atsiliepimas į puslapį ...",
+       "feedback-close": "Atlikta",
        "feedback-error1": "Klaida: Neatpažįstamas rezultatas iš API",
        "feedback-error2": "Klaida: Redagavimas nepavyko",
        "feedback-error3": "Klaida: Jokio atsakymo iš API",
+       "feedback-message": "Pranešimas:",
+       "feedback-subject": "Tema:",
+       "feedback-submit": "Siųsti Atsiliepimą",
        "feedback-thanks": "Ačiū! Jūsų atsiliepimas buvo užregistruotas puslapyje „[$2 $1]“.",
-       "feedback-close": "Atlikta",
-       "feedback-bugcheck": "Puiku! Tiesiog patikrinkite, ar tai ne viena [$1 jau žinomų klaidų].",
-       "feedback-bugnew": "Patikrinau. Pranešti apie naują klaidą",
        "searchsuggest-search": "Ieškoti",
        "searchsuggest-containing": "turintys",
        "api-error-badaccess-groups": "Jums neleidžiama įkelti failus į šią wiki.",
index 09d487e..f294f5a 100644 (file)
        "logentry-upload-overwrite": "$1 augšupielādēja jaunu $3 versiju",
        "rightsnone": "(nav)",
        "revdelete-summary": "izmaiņu kopsavilkums",
-       "feedback-subject": "Temats:",
-       "feedback-message": "Ziņojums:",
-       "feedback-cancel": "Atcelt",
-       "feedback-submit": "Iesniegt atsauksmes",
        "feedback-adding": "Atsauksmes tiek pievienotas lapai...",
+       "feedback-bugnew": "Es pārbaudīju. Ziņot par jaunu kļūdu",
+       "feedback-cancel": "Atcelt",
+       "feedback-close": "Gatavs",
        "feedback-error1": "Kļūda: API neatpazīts rezultāts",
        "feedback-error2": "Kļūda: Labojums neizdevās",
        "feedback-error3": "Kļūda: Nav atbildes no API",
+       "feedback-message": "Ziņojums:",
+       "feedback-subject": "Temats:",
+       "feedback-submit": "Iesniegt atsauksmes",
        "feedback-thanks": "Paldies! Jūsu atsauksmes ir ievietotas lapā \"[$2  $1]\".",
-       "feedback-close": "Gatavs",
-       "feedback-bugnew": "Es pārbaudīju. Ziņot par jaunu kļūdu",
        "searchsuggest-search": "Meklēt",
        "searchsuggest-containing": "Meklējamā frāze:",
        "api-error-badaccess-groups": "Jums nav atļauts augšupielādēt failus šajā wiki.",
index cac7490..0cc6b94 100644 (file)
        "logentry-newusers-autocreate": "खाता $1 छल {{लिंग:$2|बनाएल}} स्वतः",
        "rightsnone": "(कोनो नै)",
        "revdelete-summary": "सम्पादन सारांश",
-       "feedback-subject": "विषय:",
-       "feedback-message": "संदेश:",
-       "feedback-cancel": "रद्द करु",
-       "feedback-submit": "प्रतिक्रिया भेजु",
        "feedback-adding": "पन्ना उपर प्रतिक्रिया जोडु ...",
-       "feedback-error2": "त्रुटि: संपादन विफल भेल",
-       "feedback-close": "भ गेल",
        "feedback-bugcheck": "बहुत निक! जांच करु कि [ $1 known bugs] पहिले स त नै अछि ।",
+       "feedback-cancel": "रद्द करु",
+       "feedback-close": "भ गेल",
+       "feedback-error2": "त्रुटि: संपादन विफल भेल",
+       "feedback-message": "संदेश:",
+       "feedback-subject": "विषय:",
+       "feedback-submit": "प्रतिक्रिया भेजु",
        "searchsuggest-search": "ताकू",
        "searchsuggest-containing": "...सऽ युक्त",
        "api-error-badaccess-groups": "अहि विकी सें अहां कोनो प्रारूप लोड नहि क सकब.",
index c6e20ec..bc4b5f6 100644 (file)
@@ -15,7 +15,8 @@
                        "Urhixidur",
                        "לערי ריינהארט",
                        "아라",
-                       "Milicevic01"
+                       "Milicevic01",
+                       "Macofe"
                ]
        },
        "tog-underline": "Потцртување на врски:",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|ја деактивираше}} ознаката „$4“ за употреба од корисници и ботови",
        "rightsnone": "(нема)",
        "revdelete-summary": "опис на уредување",
+       "feedback-adding": "Го додавам искажаното мислење во страницата...",
+       "feedback-back": "Назад",
+       "feedback-bugcheck": "Одлично! Само проверете да не е една од [$1 веќе познатите грешки].",
+       "feedback-bugnew": "Проверив. Пријави ја како нова грешка.",
        "feedback-bugornote": "Ако сте спремни подробно да го опишете техничкиот проблем, тогаш [$1 пријавете грешка]. \nВо спротивно, послужете се со едноставниот образец подолу. Вашиот коментар ќе стои на страницата „[$3 $2]“, заедно со корисничкото име и прелистувачот што го користите.",
-       "feedback-subject": "Наслов:",
-       "feedback-message": "Порака:",
        "feedback-cancel": "Откажи",
-       "feedback-submit": "Поднеси мислење",
-       "feedback-adding": "Го додавам искажаното мислење во страницата...",
+       "feedback-close": "Готово",
+       "feedback-external-bug-report-button": "Поднеси техничка задача",
+       "feedback-dialog-title": "Поднеси мислење",
+       "feedback-dialog-intro": "Послужете се со едноставниот образец подолу за да го поднесете вашето мислење. Коментарот ќе ви биде додаден на страницата „$1“, заедно со вашето корисничко име.",
+       "feedback-error-title": "Грешка",
        "feedback-error1": "Грешка: Непрепознаен резултат од извршникот",
        "feedback-error2": "Грешка: Уредувањето не успеа",
        "feedback-error3": "Грешка: Извршникот не одговара",
+       "feedback-message": "Порака:",
+       "feedback-subject": "Наслов:",
+       "feedback-submit": "Поднеси",
+       "feedback-terms": "Разбирам дека моите информации за кориснички вршител вклучуваат податоци за точната верзија на прелистувачот и оператиниот систем и дека истите ќе бидат јавно прикажани заедно со моето мислење.",
+       "feedback-termsofuse": "Се согласувам да давам мислење во склад со Условите на употреба.",
        "feedback-thanks": "Благодариме! Вашиот одѕив е објавен на страницата „[$2 $1]“.",
-       "feedback-close": "Готово",
-       "feedback-bugcheck": "Одлично! Само проверете да не е една од [$1 веќе познатите грешки].",
-       "feedback-bugnew": "Проверив. Пријави ја како нова грешка.",
+       "feedback-thanks-title": "Ви благодариме!",
+       "feedback-useragent": "Кориснички вршител:",
        "searchsuggest-search": "Пребарување",
        "searchsuggest-containing": "содржи...",
        "api-error-badaccess-groups": "Не ви е дозволено да подигате податотеки на ова вики.",
index f3c3f3d..54dac91 100644 (file)
        "thumbnail_image-missing": "പ്രമാണം ലഭ്യമല്ലെന്നു കാണുന്നു: $1",
        "thumbnail_image-failure-limit": "ഈ ലഘുചിത്രം സൃഷ്ടിക്കാൻ നിരവധി പരാജയപ്പെട്ട ശ്രമങ്ങൾ ($1 അല്ലെങ്കിൽ കൂടുതൽ) നടന്നിട്ടുണ്ട്. ദയവായി പിന്നീട് ശ്രമിക്കുക.",
        "import": "താളുകൾ ഇറക്കുമതി ചെയ്യുക",
-       "importinterwiki": "à´\85à´¨àµ\8dതർവിà´\95àµ\8dà´\95à´¿ à´\87à´±à´\95àµ\8dà´\95àµ\81മതി",
+       "importinterwiki": "മറàµ\8dà´±àµ\8aà´°àµ\81 à´µà´¿à´\95àµ\8dà´\95à´¿à´¯àµ\80ൽ à´¨à´¿à´¨àµ\8dà´¨àµ\81à´\82 à´\87à´±à´\95àµ\8dà´\95àµ\81മതി à´\9aàµ\86à´¯àµ\8dà´¯àµ\81à´\95",
        "import-interwiki-text": "വിക്കിയും ഇറക്കുമതി ചെയ്യാനുള്ള താളും തിരഞ്ഞെടുക്കുക.\nപുതുക്കൽ തീയതികളും തിരുത്തിയ ആളുകളുടെ പേരും സൂക്ഷിക്കപ്പെടും.\nഅന്തർവിക്കി ഇറക്കുമതിയുടെ എല്ലാ വിവരങ്ങളും [[Special:Log/import|ഇറക്കുമതി പ്രവർത്തനരേഖ]] എന്ന താളിൽ ശേഖരിക്കപ്പെടും.",
        "import-interwiki-sourcewiki": "സ്രോതസ്സ് വിക്കി:",
        "import-interwiki-sourcepage": "സ്രോതസ്സ് താൾ:",
        "logentry-upload-revert": "$1 $3 {{GENDER:$2|അപ്‌ലോഡ് ചെയ്തു}}",
        "rightsnone": "(ഒന്നുമില്ല)",
        "revdelete-summary": "തിരുത്തലിന്റെ ചുരുക്കം",
+       "feedback-adding": "താങ്കളുടെ അഭിപ്രായങ്ങൾ താളിലേയ്ക്ക് ചേർക്കുന്നു...",
+       "feedback-bugcheck": "കൊള്ളാം! [$1 അറിയാവുന്ന ബഗുകളിൽ] ഒന്നല്ല എന്ന് ഒന്നു പരിശോധിച്ചേക്കുക.",
+       "feedback-bugnew": "ഞാൻ പരിശോധിച്ചു. പുതിയൊരു ബഗ് ചേർക്കുക",
        "feedback-bugornote": "സാങ്കേതിക പ്രശ്നം എന്താണെന്ന് വിവരിച്ചെഴുതാൻ താങ്കൾ തയ്യാറാണെങ്കിൽ [$1 ബഗ് അറിയിക്കുക].\nഅല്ലെങ്കിൽ താങ്കൾക്ക് താഴെ എളുപ്പത്തിനായി നൽകിയിരിക്കുന്ന ഫോം ഉപയോഗിക്കാം. താങ്കളുടെ കുറിപ്പ് \"[$3 $2]\" താളിൽ, താങ്കളുടെ ഉപയോക്തൃനാമത്തിന്റെയും ഉപയോഗിക്കുന്ന ബ്രൗസറിന്റെ പേരിന്റെയും ഒപ്പം ചേർക്കുന്നതായിരിക്കും.",
-       "feedback-subject": "വിഷയം:",
-       "feedback-message": "സന്ദേശം:",
        "feedback-cancel": "റദ്ദാക്കുക",
-       "feedback-submit": "അഭിപ്രായം സമർപ്പിക്കുക",
-       "feedback-adding": "താങ്കളുടെ അഭിപ്രായങ്ങൾ താളിലേയ്ക്ക് ചേർക്കുന്നു...",
+       "feedback-close": "ചെയ്തു കഴിഞ്ഞു.",
        "feedback-error1": "പിഴവ്: എ.പി.ഐ.യിൽ നിന്നും തിരിച്ചറിയാനാകാത്ത ഫലം",
        "feedback-error2": "പിഴവ്: തിരുത്തൽ പരാജയപ്പെട്ടു",
        "feedback-error3": "പിഴവ്: എ.പി.ഐ.യിൽ നിന്നും യാതൊരു പ്രതികരണവുമില്ല",
+       "feedback-message": "സന്ദേശം:",
+       "feedback-subject": "വിഷയം:",
+       "feedback-submit": "അഭിപ്രായം സമർപ്പിക്കുക",
        "feedback-thanks": "നന്ദി! താങ്കളുടെ പ്രതികരണം \"[$2 $1]\" എന്ന താളിൽ പ്രസിദ്ധീകരിച്ചിട്ടുണ്ട്.",
-       "feedback-close": "ചെയ്തു കഴിഞ്ഞു.",
-       "feedback-bugcheck": "കൊള്ളാം! [$1 അറിയാവുന്ന ബഗുകളിൽ] ഒന്നല്ല എന്ന് ഒന്നു പരിശോധിച്ചേക്കുക.",
-       "feedback-bugnew": "ഞാൻ പരിശോധിച്ചു. പുതിയൊരു ബഗ് ചേർക്കുക",
        "searchsuggest-search": "തിരയുക",
        "searchsuggest-containing": "ഉൾപ്പെടുന്നവ...",
        "api-error-badaccess-groups": "ഈ വിക്കിയിൽ പ്രമാണങ്ങൾ അപ്‌ലോഡ് ചെയ്യാൻ താങ്കൾക്കനുവാദമില്ല.",
index 00743ad..14b518c 100644 (file)
@@ -18,7 +18,8 @@
                        "Zamwan",
                        "לערי ריינהארט",
                        "아라",
-                       "Pizza1016"
+                       "Pizza1016",
+                       "Macofe"
                ]
        },
        "tog-underline": "Garis bawah pautan:",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|mematikan}} teg \"$4\" untuk kegunaan pengguna dan bot",
        "rightsnone": "(tiada)",
        "revdelete-summary": "ringkasan",
+       "feedback-adding": "Maklum balas sedang diisikan ke dalam laman...",
+       "feedback-bugcheck": "Bagus! Cuma pastikan itu bukan salah satu [$1 pepijat] yang sedia diketahui.",
+       "feedback-bugnew": "Saya dah semak. Laporkan pepijat baru",
        "feedback-bugornote": "Jika anda bersedia untuk menerangkan masalah teknikal secara terperinci, sila [$1 laporkan pepijat]. \nAtaupun, anda boleh menggunakan borang yang mudah di bawah. Ulasan anda akan dicatatkan pada laman \"[$3 $2]\", beserta nama pengguna anda dan pelayar yang anda gunakan.",
-       "feedback-subject": "Perkara:",
-       "feedback-message": "Pesanan:",
        "feedback-cancel": "Batalkan",
-       "feedback-submit": "Hantar Maklum Balas",
-       "feedback-adding": "Maklum balas sedang diisikan ke dalam laman...",
+       "feedback-close": "Siap",
        "feedback-error1": "Perhatian: Hasil dari API tidak dikenali",
        "feedback-error2": "Perhatian: Penyuntingan gagal",
        "feedback-error3": "Perhatian: Tiada gerak balas dari API",
+       "feedback-message": "Pesanan:",
+       "feedback-subject": "Perkara:",
+       "feedback-submit": "Hantar",
        "feedback-thanks": "Terima kasih! Maklum balas anda telah dicatatkan pada laman \"[$2 $1]\".",
-       "feedback-close": "Siap",
-       "feedback-bugcheck": "Bagus! Cuma pastikan itu bukan salah satu [$1 pepijat] yang sedia diketahui.",
-       "feedback-bugnew": "Saya dah semak. Laporkan pepijat baru",
        "searchsuggest-search": "Cari",
        "searchsuggest-containing": "mengandungi...",
        "api-error-badaccess-groups": "Anda tidak dibenarkan memuat naik fail di wiki ini.",
index ed9281c..b4cdaae 100644 (file)
        "logentry-rights-autopromote": "$1 {{GENDER:$2|ġie|ġiet}} awtomatikament {{GENDER:$2|promoss|promossa}} minn $4 għal $5",
        "rightsnone": "(xejn)",
        "revdelete-summary": "Taqsira tal-modifika",
+       "feedback-bugcheck": "Tajjeb ħafna! Ivverifika li mhux diġà fost id-[$1 difetti magħrufa].",
+       "feedback-bugnew": "Ikkontrollajt. Irrapporta d-difett",
        "feedback-bugornote": "Jekk int lest biex tiddeskrivi problema teknika fid-dettall, jekk jogħbok [$1 irraporta l-bug].\nInkella, tista' tuża l-formola sempliċi t'hawn taħt. Il-kumment tiegħek se jiżdied mal-paġna \"[$3 $2]\", flimkien ma' isem l-utent tiegħek.",
-       "feedback-subject": "Suġġett:",
-       "feedback-message": "Messaġġ:",
        "feedback-cancel": "Annulla",
-       "feedback-submit": "Ibgħat il-messaġġ",
+       "feedback-close": "Lest",
        "feedback-error1": "Żball: Riżultat mhux rikonoxxut mill-API",
        "feedback-error2": "Żball: Modifika mhux esegwita",
        "feedback-error3": "Żball: L-ebda risposta mill-API",
+       "feedback-message": "Messaġġ:",
+       "feedback-subject": "Suġġett:",
+       "feedback-submit": "Ibgħat il-messaġġ",
        "feedback-thanks": "Grazzi! Ir-rispons tiegħek ġie ippubblikat fuq il-paġna \"[$2 $1]\".",
-       "feedback-close": "Lest",
-       "feedback-bugcheck": "Tajjeb ħafna! Ivverifika li mhux diġà fost id-[$1 difetti magħrufa].",
-       "feedback-bugnew": "Ikkontrollajt. Irrapporta d-difett",
        "searchsuggest-search": "Fittex",
        "searchsuggest-containing": "li tinkludi...",
        "api-error-fileexists-forbidden": "Fajl bl-isem \"$1\" diġà jeżisti, u ma jistax jiġi miktub fuqu.",
index 32852fb..da14248 100644 (file)
        "htmlform-selectorother-other": "Лия",
        "rightsnone": "(арасть)",
        "revdelete-summary": "витнемадо-петнемадо нурькине йовтавкс",
-       "feedback-subject": "Мезде:",
-       "feedback-message": "Пачтямнэсь:",
        "feedback-cancel": "А теемс",
        "feedback-close": "Анок",
+       "feedback-message": "Пачтямнэсь:",
+       "feedback-subject": "Мезде:",
        "searchsuggest-search": "Вешнемс",
        "api-error-filename-tooshort": "Керьмазлементь а саты кувалмозо",
        "api-error-illegal-filename": "Керьмазлемесь а маштови.",
index 74a44dd..f644256 100644 (file)
@@ -10,7 +10,8 @@
                        "SabineCretella",
                        "לערי ריינהארט",
                        "아라",
-                       "Candalua"
+                       "Candalua",
+                       "Macofe"
                ]
        },
        "tog-underline": "Sottolinia 'e jonte:",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|stutaje}} 'o tag \"$4\" pe' ll'uso d'utente e re bot",
        "rightsnone": "(nisciuno)",
        "revdelete-summary": "cagna 'o riepilego",
+       "feedback-adding": "Azzecca nu feedback/na segnalazione â paggena..",
+       "feedback-back": "Arreto",
+       "feedback-bugcheck": "Tutt'appost! Avite surtanto 'a cuntrullà ca chisto nun è unu d' 'e [$1 bug canusciute].",
+       "feedback-bugnew": "Aggio cuntrullato. Manna nu bug nuovo.",
        "feedback-bugornote": "Si site pronto/a a descrivere nu probblema tecnico ch' 'e dettaglie, pe' piacere [$1 mannate nu bug].\nSi nun site pronto/a, allora putite ausà 'o modulo semprice ca vedite ccà abbascio. 'O commento vuosto sarrà mpezzato dint' 'a paggena [$3 $2]\", seguenno 'o nomme utente vuosto e 'o navigatóre web ca state ausanno.",
-       "feedback-subject": "Suggietto:",
-       "feedback-message": "Mmasciata:",
        "feedback-cancel": "Canciella",
-       "feedback-submit": "Manna nu Feedback, na segnalazione",
-       "feedback-adding": "Azzecca nu feedback/na segnalazione â paggena..",
+       "feedback-close": "Fatto",
+       "feedback-external-bug-report-button": "Archivia na fatica tecnica",
+       "feedback-dialog-title": "Manna 'o feedback",
+       "feedback-dialog-intro": "Putite ausà sempricemente 'o modulo ccà abbascio pe' putè mannà 'o feedback vuosto. 'O cummento sarrà azzeccato â paggena \"$1\", nziem' 'o nomme vuosto.",
+       "feedback-error-title": "Errore",
        "feedback-error1": "Errore: Risultato nun aspettato 'a ll'API",
        "feedback-error2": "Errore: Cagnamiento scassato",
        "feedback-error3": "Errore: Ll'API nun risponne",
+       "feedback-message": "Mmasciata:",
+       "feedback-subject": "Suggietto:",
+       "feedback-submit": "Manna",
+       "feedback-terms": "Me so' fatto/a capace ca ll'aggente 'e nfurmaziune 'e cunto ave accesso a nfurmaziune ncopp'a 'o navigatore e 'o browser ca stongo 'ausà e ca chisto sarrà spartuto pubbrecamente c' 'o feedback mio.",
+       "feedback-termsofuse": "So' d'accordo ca sto a mannà nu feedback cu sti térmene d'uso.",
        "feedback-thanks": "Grazie! 'O feedback vuosto s'è mpizzato dint' 'a paggena \"[$2 $1]\".",
-       "feedback-close": "Fatto",
-       "feedback-bugcheck": "Tutt'appost! Avite surtanto 'a cuntrullà ca chisto nun è unu d' 'e [$1 bug canusciute].",
-       "feedback-bugnew": "Aggio cuntrullato. Manna nu bug nuovo.",
+       "feedback-thanks-title": "Ve ringraziammo!",
+       "feedback-useragent": "Aggente utente:",
        "searchsuggest-search": "Truova",
        "searchsuggest-containing": "tène...",
        "api-error-badaccess-groups": "Tun putite carrecà file ncopp' 'a sta wiki.",
index 93064cc..896ed35 100644 (file)
@@ -42,7 +42,8 @@
                        "לערי ריינהארט",
                        "아라",
                        "Chameleon222",
-                       "Helland"
+                       "Helland",
+                       "Macofe"
                ]
        },
        "tog-underline": "Strek under lenker:",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|deaktiverte}} taggen «$4» for bruk av brukere og roboter",
        "rightsnone": "(ingen)",
        "revdelete-summary": "redigeringssammendrag",
+       "feedback-adding": "Tilføyer tilbakmelding til side ...",
+       "feedback-bugcheck": "Suprert! Bare sjekk at den ikke er en av de [$1 kjente feilene]",
+       "feedback-bugnew": "Jeg sjekket. Rapporter en ny bug.",
        "feedback-bugornote": "Hvis du er klar til å sende inn en detaljert feilrapport, vennligst [$1 rapporter en feil].\nOm det ikke er tilfellet, kan du bruke det enkle skjemaet som du finner under. Kommentaren din vil bli lagt til siden \"[$3 $2]\", sammen med brukernavnet ditt og informasjon om hvilken nettleser du bruker.",
-       "feedback-subject": "Emne:",
-       "feedback-message": "Melding:",
        "feedback-cancel": "Avbryt",
-       "feedback-submit": "Send tilbakemelding",
-       "feedback-adding": "Tilføyer tilbakmelding til side ...",
+       "feedback-close": "Utført",
        "feedback-error1": "Feil: Ukjent resultat fra API",
        "feedback-error2": "Feil: Redigering feilet",
        "feedback-error3": "Feil: Ingen respons fra API",
+       "feedback-message": "Melding:",
+       "feedback-subject": "Emne:",
+       "feedback-submit": "Send",
        "feedback-thanks": "Din tilbakemelding til siden \"[ $2  $1 ]\" er sendt. Takk skal du ha!",
-       "feedback-close": "Utført",
-       "feedback-bugcheck": "Suprert! Bare sjekk at den ikke er en av de [$1 kjente feilene]",
-       "feedback-bugnew": "Jeg sjekket. Rapporter en ny bug.",
        "searchsuggest-search": "Søk",
        "searchsuggest-containing": "inneholder …",
        "api-error-badaccess-groups": "Du har ikke tillatelse til å laste opp filer til denne wikien.",
index 0086fd6..71f2c24 100644 (file)
        "mimesearch": "Zeuken op MIME-type",
        "mimesearch-summary": "Op disse spesiale zied kunnen de bestaanden naor t MIME-type efiltreerd wörden. In de invoer mut altied t media- en subtype staon, bieveurbeeld: <code>aofbeelding/jpeg</code>.",
        "mimetype": "MIME-type:",
-       "download": "binnenhaolen",
+       "download": "neerlaojen",
        "unwatchedpages": "Ziejen die niet evolgd wörden",
        "listredirects": "Lieste van deurverwiezingen",
        "listduplicatedfiles": "Lieste mit bestaanden mit duplikaoten",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|is}} automaties bevorderd van $4 tot $5",
        "rightsnone": "(gien)",
        "revdelete-summary": "samenvatting bewarken",
+       "feedback-adding": "Joew kommentaar wörden op de zied ezet...",
+       "feedback-bugcheck": "Mooi! Kiek nao of t niet al één van de [$1 bekende problemen] is.",
+       "feedback-bugnew": "Ik heb t nao-ekeken. Meld n nieje programmafout",
        "feedback-bugornote": "A'j zovere bin um n technies probleem nauwkeurig te beschrieven, [$1 meld dan n programmafout].\nAanders ku'j oek t eenvoudige formulier hieronder gebruken. Joew kommentaar zal op de zied \"[$3 $2]\" ezet wörden, samen mit joew gebrukersnaam en de webkieker die'j gebruken.",
-       "feedback-subject": "Onderwarp:",
-       "feedback-message": "Bericht:",
        "feedback-cancel": "Aofbreken",
-       "feedback-submit": "Kommentaar geven",
-       "feedback-adding": "Joew kommentaar wörden op de zied ezet...",
+       "feedback-close": "Ree",
        "feedback-error1": "Fout: onbekend resultaot uut de API",
        "feedback-error2": "Fout: de bewarking is mislokt",
        "feedback-error3": "Fout: gien reaksie van de API",
+       "feedback-message": "Bericht:",
+       "feedback-subject": "Onderwarp:",
+       "feedback-submit": "Kommentaar geven",
        "feedback-thanks": "Bedankt! Joew kommentaar is op de zied \"[$2 $1]\" ezet.",
-       "feedback-close": "Ree",
-       "feedback-bugcheck": "Mooi! Kiek nao of t niet al één van de [$1 bekende problemen] is.",
-       "feedback-bugnew": "Ik heb t nao-ekeken. Meld n nieje programmafout",
        "searchsuggest-search": "Zeuken / zuken / zuiken",
        "searchsuggest-containing": "bevat...",
        "api-error-badaccess-groups": "Je maggen gien bestaanden in disse wiki oplaojen.",
index a7c311e..a627e48 100644 (file)
        "logentry-move-move": "$1 द्वारा $3 पृष्ठलाई $4 मा सारियो",
        "rightsnone": "(कुनैपनि होइन)",
        "revdelete-summary": "सम्पादन सारांश",
-       "feedback-subject": "विषय:",
-       "feedback-message": "सन्देश:",
        "feedback-cancel": "रद्द गर्ने",
-       "feedback-submit": "प्रतिकृया बुझाउनुहोस्",
-       "feedback-error2": "त्रुटि: सम्पादन असफल",
        "feedback-close": "गरियो",
+       "feedback-error2": "त्रुटि: सम्पादन असफल",
+       "feedback-message": "सन्देश:",
+       "feedback-subject": "विषय:",
+       "feedback-submit": "प्रतिकृया बुझाउनुहोस्",
        "searchsuggest-search": "खोज",
        "api-error-badaccess-groups": "यस विकिमा तपाईंलाई फाइल अपलोड गर्ने अनुमति छैन।",
        "api-error-copyuploaddisabled": "यस सर्वरमा URL द्वारा अपलोड गर्ने व्यवस्था निस्क्रिय गरिएकोछ।",
index aa4b6d9..8e1f08d 100644 (file)
        "logentry-managetags-create": "$1 heeft het label \"$4\" {{GENDER:$2|aangemaakt}}",
        "rightsnone": "(geen)",
        "revdelete-summary": "bewerkingssamenvatting",
+       "feedback-adding": "Uw terugkoppeling wordt aan de pagina toegevoegd...",
+       "feedback-bugcheck": "Geweldig! Controleer even of het niet al één van de [$1 bekende problemen] is.",
+       "feedback-bugnew": "Heb ik gecontroleerd; nieuw probleem melden",
        "feedback-bugornote": "Als u zover bent om een technisch probleem in detail te beschrijven, [$1 rapporteer dan een bug].\nAnders kunt u ook het eenvoudige formulier hieronder gebruiken. Uw reactie wordt dan toegevoegd aan de pagina \"[$3 $2]\", samen met uw gebruikersnaam en de browser die u gebruikt.",
-       "feedback-subject": "Onderwerp:",
-       "feedback-message": "Bericht:",
        "feedback-cancel": "Annuleren",
-       "feedback-submit": "Terugkoppeling opslaan",
-       "feedback-adding": "Uw terugkoppeling wordt aan de pagina toegevoegd...",
+       "feedback-close": "Afgerond",
        "feedback-error1": "Fout: onbekend resultaat uit de API",
        "feedback-error2": "Fout: de bewerking is mislukt",
        "feedback-error3": "Fout: geen reactie van de API",
+       "feedback-message": "Bericht:",
+       "feedback-subject": "Onderwerp:",
+       "feedback-submit": "Opslaan",
        "feedback-thanks": "Bedankt! Uw terugkoppeling is op de pagina \"[$2 $1]\" geplaatst.",
-       "feedback-close": "Afgerond",
-       "feedback-bugcheck": "Geweldig! Controleer even of het niet al één van de [$1 bekende problemen] is.",
-       "feedback-bugnew": "Heb ik gecontroleerd; nieuw probleem melden",
+       "feedback-thanks-title": "Bedankt!",
        "searchsuggest-search": "Zoeken",
        "searchsuggest-containing": "bevat...",
        "api-error-badaccess-groups": "U mag geen bestanden uploaden in deze wiki.",
index ae69662..02f2d7f 100644 (file)
@@ -21,7 +21,8 @@
                        "Ranveig",
                        "לערי ריינהארט",
                        "아라",
-                       "Gaute"
+                       "Gaute",
+                       "Macofe"
                ]
        },
        "tog-underline": "Strek under lenkjer:",
        "logentry-rights-autopromote": "$1 vart automatisk {{GENDER:$2|forfremja}} frå $4 til $5",
        "rightsnone": "(ingen)",
        "revdelete-summary": "Samandrag",
+       "feedback-adding": "Legg til attendemeldinga til sida...",
+       "feedback-bugcheck": "Bra! No lyt du berre sjå etter om han er ein av dei [$1 kjende feila].",
+       "feedback-bugnew": "Eg såg etter. Rapporter ein ny feil",
        "feedback-bugornote": "Er du klar til å skildra ein teknisk vanske i detalj, gjer vel å [$1 rapportera inn ein feil].\nOm ikkje kan du nytta det enkle skjemaet under. Merknaden din vert lagd til på sida «[$3 $2]», i lag med brukarnamnet ditt og kva for nettlesar du nyttar.",
-       "feedback-subject": "Emne:",
-       "feedback-message": "Melding:",
        "feedback-cancel": "Bryt av",
-       "feedback-submit": "Send attendemelding",
-       "feedback-adding": "Legg til attendemeldinga til sida...",
+       "feedback-close": "Gjort",
        "feedback-error1": "Feil: Ukjent resultat frå API",
        "feedback-error2": "Feil: Brigdinga gjekk ikkje",
        "feedback-error3": "Feil: Saknar svar frå API",
+       "feedback-message": "Melding:",
+       "feedback-subject": "Emne:",
+       "feedback-submit": "Send",
        "feedback-thanks": "Takk! Attendemeldinga di er lagd inn på sida «[$2 $1]».",
-       "feedback-close": "Gjort",
-       "feedback-bugcheck": "Bra! No lyt du berre sjå etter om han er ein av dei [$1 kjende feila].",
-       "feedback-bugnew": "Eg såg etter. Rapporter ein ny feil",
        "searchsuggest-search": "Søk",
        "searchsuggest-containing": "som inneheld …",
        "api-error-badaccess-groups": "Du har ikkje løyve til å lasta opp filer til wikien.",
index d50067a..53a2a49 100644 (file)
        "logentry-upload-revert": "$1 {{GENDER:$2|a telecargat}} $3",
        "rightsnone": "(cap)",
        "revdelete-summary": "modificar lo somari",
-       "feedback-subject": "Subjècte :",
-       "feedback-message": "Messatge :",
-       "feedback-cancel": "Anullar",
-       "feedback-submit": "Mandar vòstres comentaris",
        "feedback-adding": "Apondon de vòstres comentaris a la pagina...",
+       "feedback-bugcheck": "Remirable ! Verificatz simplament qu'es pas un dels [$1 bugs ja coneguts].",
+       "feedback-bugnew": "Ai verificat. Senhalar un bug novèl",
+       "feedback-cancel": "Anullar",
+       "feedback-close": "Fach",
        "feedback-error1": "Error : Resultat de l'IPA pas reconegut",
        "feedback-error2": "Error : la modificacion a fracassat",
        "feedback-error3": "Error : pas cap de responsa de l'API",
+       "feedback-message": "Messatge :",
+       "feedback-subject": "Subjècte :",
+       "feedback-submit": "Mandar vòstres comentaris",
        "feedback-thanks": "Mercé ! Vòstre comentari es estat publicat sus la pagina \"[$2 $1]\".",
-       "feedback-close": "Fach",
-       "feedback-bugcheck": "Remirable ! Verificatz simplament qu'es pas un dels [$1 bugs ja coneguts].",
-       "feedback-bugnew": "Ai verificat. Senhalar un bug novèl",
        "searchsuggest-search": "Recercar",
        "searchsuggest-containing": "que conten...",
        "api-error-badaccess-groups": "Sètz pas autorizat a cargar de fichièrs sus aqueste wiki.",
index 3247b50..a16176a 100644 (file)
        "logentry-upload-revert": "$1, $3 {{GENDER:$2|ଅପଲୋଡ଼ କଲେ}}",
        "rightsnone": "(କିଛି ନାହିଁ)",
        "revdelete-summary": "ସାରକଥା ସମ୍ପାଦନା",
+       "feedback-adding": "ପୃଷ୍ଠାରେ ମତାମତ ଦେଉଛି...",
+       "feedback-bugcheck": "ବହୁତ ଭଲ ! ଖାଲି ଦେଖିଦିଅନ୍ତୁ ଯେ ଏହା ଆଗରୁ ଥିବା [$1 known bugs] ମଧ୍ୟରୁ ନୁହେଁ ତ ।",
+       "feedback-bugnew": "ମୁଁ ଯାଞ୍ଚ କରିଦେଲି । ନୂତନ ଅସୁବିଧାର ବିବରଣ କରନ୍ତୁ ।",
        "feedback-bugornote": "ଦୟାକରି ଆପଣ ଏକ କାରିଗରି ଅସୁବିଧାଟିଏ ଜଣାଇବା ପାଇଁ ଚାହୁଁଥିଲେ ଦୟାକରି [$1 ଏଠାରେ ଅସୁବିଧାଟି ଜଣାନ୍ତୁ] । \nଅଥବା, ଆପଣ ତଳେ ଠିଆ ସହଜ ଆବେଦନ ପତ୍ରଟି ପୁରଣ କରିପାରିବେ ।  ଆପଣଙ୍କ ବ୍ୟବହାରକାରୀ ନାମ ଓ ଆପଣ ବ୍ୟବହାର କରୁଥିବା ବ୍ରାଉଜର ଅନୁସାରେ ଆପଣଙ୍କ ମତାମତ \"[$3 $2]\"ରେ ଯୋଡ଼ାଯିବ ।",
-       "feedback-subject": "ବିଷୟ:",
-       "feedback-message": "ଖବର:",
        "feedback-cancel": "ନାକଚ",
-       "feedback-submit": "ମତାମତ ଦିଅନ୍ତୁ",
-       "feedback-adding": "ପୃଷ୍ଠାରେ ମତାମତ ଦେଉଛି...",
+       "feedback-close": "ହୋଇଗଲା",
        "feedback-error1": "ଭୁଲ: API ରୁ ଅଚିହ୍ନା ଫଳାଫଳ",
        "feedback-error2": "ଅସୁବିଧା: ସମ୍ପାଦନା ବିଫଳ ହେଲା",
        "feedback-error3": "ଅସୁବିଧା: API ରୁ କିଛି ଉତ୍ତର ମିଳିଲା ନାହିଁ",
+       "feedback-message": "ଖବର:",
+       "feedback-subject": "ବିଷୟ:",
+       "feedback-submit": "ମତାମତ ଦିଅନ୍ତୁ",
        "feedback-thanks": "ଧନ୍ୟବାଦ ! ଆପଣଙ୍କର ମତାମତ  \"[$2 $1]\" ପୃଷ୍ଠାରେ ଦର୍ଶାଯାଇଛି ।",
-       "feedback-close": "ହୋଇଗଲା",
-       "feedback-bugcheck": "ବହୁତ ଭଲ ! ଖାଲି ଦେଖିଦିଅନ୍ତୁ ଯେ ଏହା ଆଗରୁ ଥିବା [$1 known bugs] ମଧ୍ୟରୁ ନୁହେଁ ତ ।",
-       "feedback-bugnew": "ମୁଁ ଯାଞ୍ଚ କରିଦେଲି । ନୂତନ ଅସୁବିଧାର ବିବରଣ କରନ୍ତୁ ।",
        "searchsuggest-search": "ଖୋଜନ୍ତୁ",
        "searchsuggest-containing": "ଖୋଜୁଛି...",
        "api-error-badaccess-groups": "ଆପଣଙ୍କୁ ଏହି ଉଇକିରେ ଅପଲୋଡ଼ କରିବାକୁ ଅନୁମତି ଦିଆଯାଇନାହିଁ ।",
index b004f40..1a4f820 100644 (file)
        "logentry-delete-restore": "$1 рацарæзта фарс $3",
        "rightsnone": "(нæй)",
        "revdelete-summary": "ивддзинады мидис",
-       "feedback-subject": "Сæр:",
-       "feedback-message": "Фыстæг:",
        "feedback-cancel": "Ныууадзын",
        "feedback-close": "Æххæст",
+       "feedback-message": "Фыстæг:",
+       "feedback-subject": "Сæр:",
        "searchsuggest-search": "Агурын",
        "api-error-missingparam": "Мидæггаг рæдыд: Курдиаты параметртæ нæй.",
        "api-error-missingresult": "Мидæггаг рæдыд: Нæ рауадис сбæрæг кæнын къопи кæнын куыд бантыстис.",
index 1daa7d7..0799484 100644 (file)
@@ -81,6 +81,7 @@
        "april-date": "$1. Abril",
        "may-date": "$1. Mai",
        "june-date": "$1. Juni",
+       "july-date": "$1. Juli",
        "august-date": "$1. Auguschd",
        "september-date": "$1. Sebdemba",
        "october-date": "$1. Ogdowa",
        "otherlanguages": "In oannare Schbroche",
        "redirectedfrom": "(Nochgschiggd worre vun $1)",
        "redirectpagesub": "Nochschigg-Said",
+       "redirectto": "Umlaidung uff:",
        "lastmodifiedat": "Die Said ischs ledschde Mol gännad worre oam $1, oam $2.",
        "viewcount": "Die Said isch bis jedz {{PLURAL:$1|ämol1|$1 mol}} uffgrufe worre.",
        "protectedpage": "Said schidze",
        "nosuchspecialpage": "Schbezialsaid hodds nedd",
        "error": "Irrdumm",
        "databaseerror": "Daadebongg-Irrdumm",
+       "databaseerror-query": "Abfroche: $1",
        "databaseerror-error": "Fehla: $1",
        "laggedslavemode": "<strong>Baßma uff:</strong> Die Said hodd viellaischd die ledschde Ännarunge nedd.",
        "readonly": "Daadebongg blogiead",
        "createacct-yourpasswordagain": "Password bschdedische",
        "createacct-yourpasswordagain-ph": "Bschdedisch doi Password",
        "remembermypassword": "Moi Kennword uffm Brausa merge (hegschdns fa $1 {{PLURAL:$1|Daach|Daach}})",
+       "userlogin-remembermypassword": "Oagmeld blaiwe",
        "login": "Oamelde",
        "nav-login-createaccount": "Oamelde / Kondo oaleesche",
        "userlogin": "Oamelde / Kondo oaleesche",
        "userloginnocreate": "Oilogge",
        "logout": "Uffhere",
        "userlogout": "Uffhere",
+       "notloggedin": "Bischd nedd oagmeld",
        "userlogin-noaccount": "Hoschd kä Kondo?",
        "userlogin-joinproject": "Bai {{SITENAME}} oamelde",
        "nologin": "Hoschd noch kä Kondo? $1",
        "userlogin-resetlink": "Hoschd doi Daade vagesse?",
        "userlogin-resetpassword-link": "Hoschd doi Kennwoad vagesse?",
        "userlogin-helplink2": "Hilf baim Oamelde",
+       "userlogin-createanother": "Leschda nochä Kondo oa",
        "createacct-emailoptional": "E-Mail-Adresse (fraiwillisch)",
        "createacct-email-ph": "Gewb doi E-Mail-Adress oi",
        "createaccountreason": "Grund:",
+       "createacct-reason": "Bgrindung",
        "createacct-captcha": "Sischahaidsbriefung",
        "createacct-submit": "Leschda ä Kondo oa",
+       "createacct-another-submit": "Leschda ä onnares Kondo oa",
        "createacct-benefit-body1": "{{PLURAL:$1|B'waidung|B'waidunge}}",
        "createacct-benefit-body2": "{{PLURAL:$1|Said|Saide}}",
        "badretype": "Kennword bassd nedd",
        "pt-login-button": "Oilogge",
        "pt-createaccount": "Kondo oaleesche",
        "pt-userlogout": "Uffhere",
+       "changepassword": "Passwoad weggsle",
+       "resetpass_header": "Passwoad weggsle",
        "oldpassword": "Alds Kennword",
        "newpassword": "Naijes Kennword",
        "retypenew": "Naijes Kennword nomol oigewe:",
+       "changepassword-success": "Doi Passwoad isch gweggsld worre!",
        "resetpass_forbidden": "Kennwerda komma nedd wegsle",
        "resetpass-submit-loggedin": "Password wegsle",
        "resetpass-submit-cancel": "Uffhere",
        "resetpass-temp-password": "Bschrengds Kennword",
+       "resetpass-abort-generic": "S'Passwoad weggsle isch vunna Eawaidarung unnabroche worre.",
+       "resetpass-expired": "Doi Passwoad isch abgloffe. Gebbä naijes Passwoad oi.",
        "passwordreset": "Kennword zriggsedze",
        "passwordreset-legend": "Kennword zriggsedze",
        "passwordreset-username": "Middawaida:",
        "passwordreset-capture": "E-Mail õgugge?",
+       "changeemail": "E-Mail-Adress ännare",
        "changeemail-none": "(käni)",
+       "changeemail-submit": "E-Mail-Adress ännare",
        "bold_sample": "Feddi Schrifd",
        "bold_tip": "Feddi Schrifd",
        "italic_sample": "Schebbi Schrifd",
        "template-protected": "(gschizd)",
        "template-semiprotected": "(halwa-gschizd)",
        "hiddencategories": "Die Said kerd zu vaschdeggelde {{PLURAL:$1|1 Sachgrubb|$1 Sachgrubbe}}:",
+       "permissionserrors": "Uugnieschnd Reschde",
        "permissionserrorstext-withaction": "Du därfschd nedd $2, weesch{{PLURAL:$1|m Grund|ede Grind}}:",
        "recreate-moveddeleted-warn": "'''Baßma uff: Du maggschd do ä Said, wuma frija schumol geleschd kabd hod.'''",
        "moveddeleted-notice": "Die Said isch gleschd worre.\nDe Leschoidrach fa die Said isch do unne als Gwell õgewwe.",
        "log-fulllog": "Alli Oidräsch vunde Logbischa õgugge",
        "edit-conflict": "Schdraid ums Ännare.",
        "content-model-text": "Glaategschd",
+       "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
        "post-expand-template-inclusion-warning": "'''Baßma uff:''' Greeß vunde Vorlach isch iwwaschridde. Oinischi Vorlache werren ned bnuzd.",
        "post-expand-template-inclusion-category": "Saide mid Vorlache, wu die Greeß iwwaschridde worre isch",
        "revdelete-text-text": "Gleschdi Ännarunge blaiwen inde Gschischd, awwa Deel dvu sinn fa die Effendlischkaid vaschdeggld.",
        "revdelete-text-file": "Gleschde Ännarunge blaiwen inde Gschischd, awwa Deel dvu sinn fa die Effendlischkaid vaschdeggld.",
        "revdelete-hide-image": "Vaschdegglde Inhald",
-       "revdelete-hide-name": "Vaschdeggls",
+       "revdelete-hide-name": "Vaschdeggls Ziel unn Kenngreeß",
        "revdelete-hide-comment": "Ännas Resimee",
        "revdelete-hide-user": "Middawaidanome/IP-Address",
+       "revdelete-hide-restricted": "Daade voa Adminischdradore unn a Middawaid unnadrigge",
        "revdelete-radio-same": "(dudo nix ännare)",
        "revdelete-radio-set": "Vaschdegld",
        "revdelete-radio-unset": "Sischdba",
        "mergehistory-submit": "Gschischde zõmmefiere",
        "mergehistory-fail": "Gschischde zsommebringen hodd nedd gklabd, gugg nomol uffde Saide unn uffde Zaidoagawe.",
        "mergehistory-fail-toobig": "S'Zsommefiare vunde Saide konn nedd klabbe, sunschd deedn mea als {{PLURAL:$1|eine Version|$1 Gschischde}} vaschowe werre.",
+       "mergehistory-autocomment": "„[[:$1]]“ midd „[[:$2]]“ vabinne",
+       "mergehistory-comment": "„[[:$1]]“ midd „[[:$2]]“ vabinne: $3",
        "mergehistory-reason": "Grund:",
        "revertmerge": "Zõmmefiehrung rigggängisch mache",
        "mergelogpagetext": "Unne hoddsä Lischd midde ledschde Zsommefiarunge vun Gschischde.",
        "compareselectedversions": "Ausgawe midnonna vaglaische",
        "showhideselectedversions": "Zaisch/Vaschdeggl gwehldi Ausgawe",
        "editundo": "zriggnemme",
+       "diff-empty": "(kän Unnaschied)",
        "searchresults": "Eagewnis nochgugge",
        "searchresults-title": "Eagewnis gugge fa \"$1\"",
        "notextmatches": "Kä Iwwaoinschdimmunge midm Tegschd",
        "powersearch-togglenone": "Kään",
        "preferences": "Obzione",
        "mypreferences": "Oischdellunge",
+       "prefsnologintext2": "Logdisch oi unn änna doi Oischdellunge",
+       "prefs-skin": "Ausseje",
+       "skin-preview": "Voaschau",
        "datedefault": "Kä Oischdellunge",
        "prefs-user-pages": "Middawaidasaides",
        "prefs-rc": "Ledschdi Ännarunge",
        "prefs-watchlist": "Beowachdungslischd",
        "prefs-watchlist-edits-max": "Hegschdi Oazahl: 1000",
        "prefs-misc": "Schunschdisches",
+       "prefs-resetpass": "Passwoad weggsle",
+       "prefs-changeemail": "E-Mail-Adress ännare",
        "prefs-rendering": "Uffdridd",
        "saveprefs": "Oischdellunge schbaischere",
        "prefs-editing": "Schaffe",
        "timezoneregion-pacific": "Pazifischa Ozean",
        "prefs-searchoptions": "Nochgugge",
        "default": "Schdondad",
+       "prefs-files": "Dadaije",
        "youremail": "E-Mail:",
        "username": "{{GENDER:$1|Middawaida}}:",
        "prefs-memberingroups": "{{GENDER:$2|Middglied}} vun {{PLURAL:$1|Grubb|Grubbe}}:",
        "gender-unknown": "Do saach isch nix",
        "gender-male": "Isch binnen Monn",
        "gender-female": "Isch binä Fraa",
+       "email": "E-Mail",
        "prefs-help-email": "E-mail muss ned soi, awwa wead fas naijsedze vum Kennwoad bneedischd, wonns vagesse hoschd.",
        "prefs-help-email-others": "Konschd a wehle, ob õnnare disch iwwan Lingg uff doina Dischbedier-Said õschbresche kennen.\nDoi Address werd ned gzaischd, wõnse midda babbln.",
+       "prefs-advancedrc": "Waidari Meschlischkaide",
+       "prefs-advancedrendering": "Waidari Meschlischkaide",
+       "prefs-advancedsearchoptions": "Waidari Meschlischkaide",
+       "prefs-advancedwatchlist": "Waidari Meschlischkaide",
        "prefs-diffs": "Unaschied",
        "userrights-groupsmember": "Midglied vun:",
        "userrights-reason": "Grund:",
        "right-move": "Said bwesche",
        "right-move-subpages": "Said midde Unasaide bwesche",
        "right-movefile": "Saide vaschiewe",
+       "right-suppressredirect": "Kä Umleidunge mache womma Saide vaschiewe dud",
        "right-upload": "Dadaije nufflade",
+       "right-reupload": "Iwwaschraiwb ä Said, wus gibd",
        "right-upload_by_url": "Dadaije vunna Address nufflaade",
        "right-writeapi": "Vawendung vum API fas Schraiwe",
        "right-delete": "Saide lesche",
        "rightslog": "Middawaidareschd-Logbuch",
        "action-edit": "onde Said schaffe",
        "action-history": "Guggda die Gschischd vunde Said oa",
+       "action-move": "Die Said vaschiewe",
+       "action-move-subpages": "Die Said unn alle Unnasaide vaschiewe",
+       "action-move-categorypages": "Grubbesaide vaschiewe",
+       "action-movefile": "Die Said vaschiewe",
+       "action-upload": "Saide nufflaade",
+       "action-reupload": "Iwwaschraiwb die Said, wus schun hodd",
+       "action-delete": "Lesch die Said",
+       "action-deleterevision": "Lesch die Ännarung",
        "action-deletedhistory": "guggda die gleschd Gschischd vunde Said oa",
+       "action-browsearchive": "Gugg noch gleschde Saide",
+       "action-undelete": "Said widdaheaschdelle",
+       "action-suppressrevision": "Vaschdeggelde Ännarunge oagugge unn widdaheaschdelle",
        "action-mergehistory": "Gschisch vunde Said zsommefiere",
+       "action-sendemail": "E-Mails schigge",
        "nchanges": "$1 {{PLURAL:$1|Ännarung|Ännarunge}}",
        "enhancedrc-history": "gschischd",
        "recentchanges": "Ledschdi Ännarunge",
        "rcshowhidebots-show": "Zaische",
        "rcshowhidebots-hide": "Vaschdeggle",
        "rcshowhideliu": "Oagmelde Middawaida $1",
+       "rcshowhideliu-show": "Zaische",
        "rcshowhideliu-hide": "Vaschdegle",
        "rcshowhideanons": "Ned oagmelda Middawaida $1",
        "rcshowhideanons-show": "Zaische",
        "rcshowhideanons-hide": "Vaschdegle",
        "rcshowhidepatr": "$1 iwabriefde Ännarunge",
+       "rcshowhidepatr-show": "Zaische",
+       "rcshowhidepatr-hide": "Vaschdeggle",
        "rcshowhidemine": "Moi Beawaidunge $1",
        "rcshowhidemine-show": "Zaische",
        "rcshowhidemine-hide": "Vaschdegle",
        "uploadlogpage": "Dadaije-Logbuch",
        "filedesc": "Iwwabligg",
        "fileuploadsummary": "Iwwabligg:",
+       "badfilename": "D'Dadainoame hodd sisch uff \"$1\" g'ännad.",
        "file-deleted-duplicate": "Ä Dadai, wu glaisch isch wie die do ([[:$1]]), hoddma schunmol gleschd kabd. Guggdas Logbuch oa, bvoase nufflaade duschd.",
        "savefile": "Dadai schbaischere",
        "lockmanager-notlocked": "„$1“ hod ned uffgmachd were kenne, s'isch ganed gschberd gwesd.",
        "randompage": "Irschndn Adiggl",
        "statistics": "Schdadischdigge",
        "statistics-pages": "Saide",
+       "doubleredirects": "Dobblde Waidalaidung",
        "brokenredirects-edit": "schaffe",
        "brokenredirects-delete": "lesche",
        "withoutinterwiki-submit": "Zaische",
        "nrevisions": "$1 {{PLURAL:$1|Ännarung|Ännarunge}}",
        "nimagelinks": "Used on $1 {{PLURAL:$1|Said|Saide}}",
        "ntransclusions": "oigsedzd uff $1 {{PLURAL:$1|Said|Saide}}",
+       "lonelypages": "Vawaide Saide",
        "uncategorizedpages": "Said ohne Sachgrubb",
        "uncategorizedcategories": "Sachgrubb ohne Sachgrubb",
        "uncategorizedimages": "Dadai ohne Sachgrubb",
        "booksources-search": "Gugg",
        "log": "Logbischa",
        "allpages": "Alle Saide",
+       "nextpage": "Negschd Said ($1)",
        "prevpage": "Voriche Said ($1)",
        "allpagesfrom": "Saide aazaische wu aafange mid:",
        "allpagesto": "Saide aazaische wu ufhere mid:",
        "allarticles": "Alle Saide",
        "allpagessubmit": "Zaische",
+       "allpages-hide-redirects": "Waidalaidunge vaschdeggle",
        "categories": "Sachgrubbe",
        "categoriespagetext": "Folschndi {{PLURAL:$1|Sachgrubb hodd|Sachgrubbe hawen}} Saide odda Dadaije. [[Special:UnusedCategories|Ubnudze Sachgrubbe]] werren do nedd gzaischd. Gugg a uffde [[Special:WantedCategories|gwinschde Sachgrubbe]].",
        "categoriesfrom": "Zaisch Sachgrubbe oagfonge middt:",
        "sp-deletedcontributions-contribs": "Baidräsch",
        "linksearch": "Exderne Lings",
        "linksearch-pat": "Suchmuschda",
+       "linksearch-ok": "Gugge",
        "linksearch-line": "$1 isch vun $2 valinggd",
        "listusers-submit": "Zaische",
        "listusers-noresult": "Kä Middawaida gfunne",
        "ipusubmit": "Die Adreß fraigewwe",
        "ipblocklist": "Gschberrdi IP-Adress un Middawaidanoame",
        "infiniteblock": "ubgrensd",
-       "blocklink": "schbeare",
+       "blocklink": "schberre",
        "unblocklink": "Sperr uffhewe",
        "change-blocklink": "Schberr ännare",
        "contribslink": "Baidräsch",
        "delete_and_move": "Lesche un Verschiewe",
        "delete_and_move_confirm": "Ja, Said lesche",
        "export": "Saide rausgewe",
+       "exportcuronly": "Bloß die ledschd Ännarung vunde Said exboadiere",
        "export-submit": "Saide exbordiere",
        "export-addcattext": "Saide vunde Sachgrubb dzufiesche:",
        "allmessagesname": "Noame",
index e88da5e..e201ba2 100644 (file)
        "logentry-managetags-create": "$1 {{GENDER:$2|utworzył|utworzyła}} znacznik „$4”",
        "rightsnone": "brak",
        "revdelete-summary": "opis zmian",
+       "feedback-adding": "Dodawanie opinii do strony...",
+       "feedback-bugcheck": "Świetnie! Tylko sprawdź, czy nie jest to jeden z już [$1 znanych błędów].",
+       "feedback-bugnew": "Sprawdziłam(łem). Zgłoś nowy błąd",
        "feedback-bugornote": "Jeśli jesteś w stanie szczegółowo opisać problem techniczny, proszę [$1 zgłoś błąd].\nW przeciwnym wypadku można użyć prostego formularza poniżej. Komentarz zostanie dodany do strony \"[$3  $2]\", wraz z nazwą użytkownika.",
-       "feedback-subject": "Temat",
-       "feedback-message": "Wiadomość:",
        "feedback-cancel": "Anuluj",
-       "feedback-submit": "Prześlij opinię",
-       "feedback-adding": "Dodawanie opinii do strony...",
+       "feedback-close": "Gotowe",
        "feedback-error1": "Błąd – nierozpoznana odpowiedź API",
        "feedback-error2": "Błąd – edycja nieudana",
        "feedback-error3": "Błąd – brak odpowiedzi API",
+       "feedback-message": "Wiadomość:",
+       "feedback-subject": "Temat",
+       "feedback-submit": "Wyślij",
        "feedback-thanks": "Dziękujemy! Twoja opinia została opublikowana na stronie \"[$2 $1]\".",
-       "feedback-close": "Gotowe",
-       "feedback-bugcheck": "Świetnie! Tylko sprawdź, czy nie jest to jeden z już [$1 znanych błędów].",
-       "feedback-bugnew": "Sprawdziłam(łem). Zgłoś nowy błąd",
        "searchsuggest-search": "Szukaj",
        "searchsuggest-containing": "zawierające...",
        "api-error-badaccess-groups": "Nie masz uprawnień aby przesyłać pliki do tej wiki.",
index 8e10064..cea3e40 100644 (file)
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|a l'ha disativà}} la tichËtta « $4 » pour l’usagi dj'utent e dij trigomiro",
        "rightsnone": "(gnun)",
        "revdelete-summary": "resumé dla modìfica",
+       "feedback-adding": "Gionta dij coment a la pàgina...",
+       "feedback-bugcheck": "Bin fàit! Ch'a contròla mach ch'a sia pa già un dij [$1 bigat conossù].",
+       "feedback-bugnew": "I l'heu controlà. Signalé n'eror neuv.",
        "feedback-bugornote": "S'a l'é pront a descrive un problema técnich an detaj, për piasì ch'a [$1 signala un bigat]. \nDësnò, a peul dovré ël formolari semplificà sì-sota. Sò coment a sarà giontà a la pàgina «[$3 $2]», con sò stranòm.",
-       "feedback-subject": "Soget:",
-       "feedback-message": "Mëssagi:",
        "feedback-cancel": "Anulé",
-       "feedback-submit": "Spedì ij coment",
-       "feedback-adding": "Gionta dij coment a la pàgina...",
+       "feedback-close": "Fàit",
        "feedback-error1": "Eror: Arzultà ëd l'API nen arconossù",
        "feedback-error2": "Eror: Modìfica falìa",
        "feedback-error3": "Eror: gnun-e rispòste da l'API",
+       "feedback-message": "Mëssagi:",
+       "feedback-subject": "Soget:",
+       "feedback-submit": "Spedì ij coment",
        "feedback-thanks": "Mersì! Sò coment a l'é stàit publicà an sla pàgina \"[$2 $1]\".",
-       "feedback-close": "Fàit",
-       "feedback-bugcheck": "Bin fàit! Ch'a contròla mach ch'a sia pa già un dij [$1 bigat conossù].",
-       "feedback-bugnew": "I l'heu controlà. Signalé n'eror neuv.",
        "searchsuggest-search": "Arserché",
        "searchsuggest-containing": "contenent ...",
        "api-error-badaccess-groups": "Chiel a peul pa carié d'archivi su costa wiki.",
index f391e4c..f125288 100644 (file)
        "logentry-newusers-autocreate": "کھاتہ $1 اپنے آپ ای {{جنس:$2|بنایا گیا}} بنایا گیا۔",
        "rightsnone": "(کوئی وی نئیں)",
        "revdelete-summary": "لکھائی دا خلاصہ",
+       "feedback-adding": "مشورہ  صفے تے دیو۔۔۔۔۔۔۔",
+       "feedback-bugcheck": "بعوت ودیا ! صرف ایہ ویکھو جے کیا ایہ پہلے لبے ہوۓ [$1 known bugs] چو اک تے نئیں۔",
+       "feedback-bugnew": "میں ویکھیا اے۔ نویں بگ دی رپورٹ کرو۔",
        "feedback-bugornote": "اگر تسیں اک تکنیکی مسلے نوں  پوری طراں دسن لئی تیار او تے فیر مہربانی کرکے [$1 بگ بارے دسو]۔  ںئیں تے تسیں تھلے دتا گیا فارم ورتو۔ تواڈی گل صفہ \"[$3 $2]\" تے جڑے گی،  تواڈے ورتن والے ناں تے براؤزر جیہڑا تسیں ورت رۓ او۔",
-       "feedback-subject": "آرٹیکل",
-       "feedback-message": "سنیعہ:",
        "feedback-cancel": "واپس",
-       "feedback-submit": "مشورہ دیو",
-       "feedback-adding": "مشورہ  صفے تے دیو۔۔۔۔۔۔۔",
+       "feedback-close": "ہوگیا۔",
        "feedback-error1": "غلطی: اے پی آئی توں ناں پچھانے گۓ نتارے۔",
        "feedback-error2": "غلطی: تبدیلی نئیں چلی",
        "feedback-error3": "غلطی: اے پی آئی توں کوئی جواب نئیں۔",
+       "feedback-message": "سنیعہ:",
+       "feedback-subject": "آرٹیکل",
+       "feedback-submit": "مشورہ دیو",
        "feedback-thanks": "شکریہ ! تواڈی صلاع  صفہ \"[$2 $1]\" تے چاڑ دتی گئی اے۔",
-       "feedback-close": "ہوگیا۔",
-       "feedback-bugcheck": "بعوت ودیا ! صرف ایہ ویکھو جے کیا ایہ پہلے لبے ہوۓ [$1 known bugs] چو اک تے نئیں۔",
-       "feedback-bugnew": "میں ویکھیا اے۔ نویں بگ دی رپورٹ کرو۔",
        "searchsuggest-search": "کھوج",
        "searchsuggest-containing": "بند کر ریا اے۔۔۔",
        "api-error-badaccess-groups": "تھوانوں ایس وکی تے فائلاں چڑھان دی اجازت نئیں۔",
index 2013bc9..2131326 100644 (file)
        "logentry-upload-upload": "$1 $3 {{GENDER:$2|ورپورته يې کړ}}",
        "rightsnone": "(هېڅ)",
        "revdelete-summary": "لنډيز سمول",
-       "feedback-subject": "سکالو:",
-       "feedback-message": "پيغام:",
        "feedback-cancel": "ناگارل",
        "feedback-close": "ترسره شو",
+       "feedback-message": "پيغام:",
+       "feedback-subject": "سکالو:",
        "searchsuggest-search": "پلټل",
        "api-error-duplicate-popup-title": "غبرګونې {{PLURAL:$1|دوتنه|دوتنې}}.",
        "api-error-empty-file": "کومه دوتنه چې تاسې دلته سپارلې هغه تشه ده.",
index c4af86c..3708544 100644 (file)
        "logentry-upload-upload": "$1 {{GENDER:$2|carregado}} $3",
        "rightsnone": "(nenhum)",
        "revdelete-summary": "sumário de edição",
+       "feedback-adding": "Adicionando os comentários na página...",
+       "feedback-bugcheck": "Perfeito! Apenas verifique se não é um dos [$1 bugs já conhecidos].",
+       "feedback-bugnew": "Eu verifiquei. Relatar um bug novo",
        "feedback-bugornote": "Se você está preparado para descrever detalhadamente um problema técnico, [$1 relate um bug].\nCaso contrário, você poderá usar o formulário simplificado a seguir. Seu comentário será adicionado à página \"[$3 $2]\", junto com o seu nome de usuário e o navegador que estiver usando neste momento.",
-       "feedback-subject": "Assunto:",
-       "feedback-message": "Mensagem:",
        "feedback-cancel": "Cancelar",
-       "feedback-submit": "Enviar Comentários",
-       "feedback-adding": "Adicionando os comentários na página...",
+       "feedback-close": "Feito",
        "feedback-error1": "Erro: O resultado da API não foi reconhecido",
        "feedback-error2": "Erro: A edição falhou",
        "feedback-error3": "Erro: A API não responde",
+       "feedback-message": "Mensagem:",
+       "feedback-subject": "Assunto:",
+       "feedback-submit": "Enviar Comentários",
        "feedback-thanks": "Obrigado! O seu comentário foi adicionado à página \"[$2 $1]\".",
-       "feedback-close": "Feito",
-       "feedback-bugcheck": "Perfeito! Apenas verifique se não é um dos [$1 bugs já conhecidos].",
-       "feedback-bugnew": "Eu verifiquei. Relatar um bug novo",
        "searchsuggest-search": "Pesquisa",
        "searchsuggest-containing": "contendo...",
        "api-error-badaccess-groups": "Você não tem permissão para enviar arquivos para este wiki.",
index dd9d6f0..b0dd4dc 100644 (file)
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|desativou}} a etiqueta \"$1\" para uso de utilizadores e robôs.",
        "rightsnone": "(nenhum)",
        "revdelete-summary": "editar resumo",
+       "feedback-adding": "A acrescentar os comentários à página...",
+       "feedback-bugcheck": "Perfeito! Verifique apenas que não é já um dos [$1 defeitos conhecidos].",
+       "feedback-bugnew": "Eu verifiquei. Comunicar um novo defeito.",
        "feedback-bugornote": "Se está pronto para descrever um problema técnico em detalhe, por favor, [$1 comunique o defeito].\nCaso contrário, pode facilmente usar o formulário abaixo. O seu comentário será adicionado à página \"[$3 $2]\", junto com o seu nome de utilizador e o navegador que está a usar.",
-       "feedback-subject": "Assunto:",
-       "feedback-message": "Mensagem:",
        "feedback-cancel": "Cancelar",
-       "feedback-submit": "Enviar Comentários",
-       "feedback-adding": "A acrescentar os comentários à página...",
+       "feedback-close": "Feito",
        "feedback-error1": "Erro: O resultado da API não foi reconhecido",
        "feedback-error2": "Erro: A edição falhou",
        "feedback-error3": "Erro: A API não responde",
+       "feedback-message": "Mensagem:",
+       "feedback-subject": "Assunto:",
+       "feedback-submit": "Enviar",
        "feedback-thanks": "Obrigado! O seu comentário foi adicionado à página \"[$2 $1]\".",
-       "feedback-close": "Feito",
-       "feedback-bugcheck": "Perfeito! Verifique apenas que não é já um dos [$1 defeitos conhecidos].",
-       "feedback-bugnew": "Eu verifiquei. Comunicar um novo defeito.",
        "searchsuggest-search": "Pesquisa",
        "searchsuggest-containing": "contendo...",
        "api-error-badaccess-groups": "Não tem permissão para enviar ficheiros para esta wiki.",
index 3fab943..9ae0be8 100644 (file)
        "edithelp": "This is the text that appears on the editing help link that is near the bottom of the editing page",
        "edithelppage": "The help page displayed when a user clicks on editing help link which is present on the right of Show changes button.\n{{doc-important|Do not change the \"<tt>Help:</tt>\" part.}}",
        "helppage": "{{ignored}}\nThe link destination used by default in the sidebar, and in {{msg-mw|Noarticletext}}.",
+       "helppage-top-gethelp": "Link to some MediaWiki.org help page or tutorial.\n{{Identical|Help}}",
        "mainpage": "Defines the link and display name of the main page of the wiki. Shown as the top link in the navigation part of the interface. Please do not change it too often, that could break things!\n\nSee also:\n* {{msg-mw|Mainpage}}\n* {{msg-mw|Accesskey-n-mainpage}}\n* {{msg-mw|Tooltip-n-mainpage}}\n{{Identical|Main page}}",
        "mainpage-description": "The same as {{msg-mw|mainpage}}, used as link text on [[MediaWiki:Sidebar]].\n\nThis makes it possible to the change the link destination (the message \"mainpage\") without changing the link text or without disabling translations.\n\nSee also:\n* {{msg-mw|Mainpage-description}}\n* {{msg-mw|Accesskey-n-mainpage-description}}\n* {{msg-mw|Tooltip-n-mainpage-description}}\n{{Identical|Main page}}",
        "policy-url": "{{doc-important|Do not change the <code>Project:</code> part.}}\nThe URL of the project page describing the policies of the wiki.\n\nThis is shown below every page (the left link).",
        "rightslogentry": "This message is displayed in the [[Special:Log/rights|User Rights Log]] when a bureaucrat changes the user groups for a user.\n\nParameters:\n* $1 - the username\n* $2 - list of user groups or {{msg-mw|Rightsnone}}\n* $3 - list of user groups or {{msg-mw|Rightsnone}}\n\nThe name of the bureaucrat who did this task appears before this message.\n\nSimilar to {{msg-mw|Gur-rightslog-entry}}",
        "rightslogentry-autopromote": "This message is displayed in the [[Special:Log/rights|User Rights Log]] when a user is automatically promoted to a user group.\n\nParameters:\n* $1 - (Unused)\n* $2 - a comma separated list of old user groups or {{msg-mw|Rightsnone}}\n* $3 - a comma separated list of new user groups",
        "feedback-adding": "Progress notice",
-       "feedback-back": "Button to go back to the previous action in the feedback dialog.",
+       "feedback-back": "Button to go back to the previous action in the feedback dialog.\n{{Identical|Back}}",
        "feedback-bugcheck": "Message that appears before the user submits a bug, reminding them to check for known bugs.\n\nParameters:\n* $1 - bug list page URL",
        "feedback-bugnew": "Button label - asserts that the user has checked for existing bugs. When clicked will launch an external form to add a new bug in a new tab or window",
        "feedback-bugornote": "When feedback dialog box is opened, this introductory message in small print explains the options to report a bug or add simple feedback.\n\nWe expect that people in a hurry will not read this.\n\nParameters:\n* $1 - Bug note URL\n* $2 - \"Feedback\"\n* $3 - Feedback page URL",
-       "feedback-external-bug-report-button": "A button for submitting an external technical bug report.",
        "feedback-cancel": "Button label\n{{Identical|Cancel}}",
        "feedback-close": "Button label\n{{Identical|Done}}",
+       "feedback-external-bug-report-button": "A button for submitting an external technical bug report.",
        "feedback-dialog-title": "Title of the feedback dialog",
+       "feedback-dialog-intro": "An introduction at the top of the feedback dialog. $1 - Feedback page link",
+       "feedback-error-title": "{{Identical|Error}}",
        "feedback-error1": "Error message, appears when an unknown error occurs submitting feedback",
        "feedback-error2": "Error message, appears when we could not add feedback",
        "feedback-error3": "Error message, appears when we lose our connection to the wiki",
-       "feedback-dialog-intro": "An introduction at the top of the feedback dialog. $1 - Feedback page link",
        "feedback-message": "Label for a textarea; signature refers to a Wikitext signature.\n{{Identical|Message}}",
        "feedback-subject": "Label for a text input\n{{Identical|Subject}}",
        "feedback-submit": "Button label\n{{Identical|Submit}}",
        "feedback-terms": "Label for a checkbox asking for permissions to submit browser information.",
        "feedback-termsofuse": "Label with an agreement about the terms of use.",
        "feedback-thanks": "Thanks message, appears if feedback was successful. Parameters:\n* $1 - \"Feedback\"\n* $2 - Feedback page URL",
-       "feedback-thanks-title": "The title of the message dialog at the end of the submission process that shows error in submitting the feedback.",
        "feedback-thanks-title": "The title of the thank you dialog at the end of the submission process.",
        "feedback-useragent": "A label denoting the user agent in the feedback that is posted to the feedback page.",
        "searchsuggest-search": "Greyed out default text in the simple search box in the Vector skin. (It disappears and lets the user enter the requested search terms when the search box receives focus.)\n\n{{Identical|Search}}",
index 3f1eb6f..b0006be 100644 (file)
        "logentry-rights-autopromote": "{{GENDER:$2|}}$1 sutiyuq ruraqqa kikinmantam ñawparikun $4-manta $5-man",
        "rightsnone": "(-)",
        "revdelete-summary": "yuyarinata llamk'apuy",
+       "feedback-adding": "Willapuyniykita kay p'anqaman yapay: ...",
+       "feedback-bugcheck": "Allillanmi! Llanchirillay [$1 riqsisqapura huk pantasqañachu] mana kanmanchu.",
+       "feedback-bugnew": "Llanchisqañam. Musuq pantasqamanta willay",
        "feedback-bugornote": "Allwiyapi sasachakuymanta imaymanachanta willayta munaspaykiqa, [$1 pantasqamanta willay].\nMana chayqa, kay qatiqpi kaq hunt'ana p'anqatam llamk'achiyta atinki. Willapuyniykiqa \"[$3 $2]\" sutiyuq p'anqamanmi yapasqa kanqa, hinallataqmi ruraqpa sutiykipas qampa llamk'achisqayki llika wamp'unapas.",
-       "feedback-subject": "Yuyancha:",
-       "feedback-message": "Willay:",
        "feedback-cancel": "Ama niy",
-       "feedback-submit": "Willapuyniykita kachay",
-       "feedback-adding": "Willapuyniykita kay p'anqaman yapay: ...",
+       "feedback-close": "Rurasqañam",
        "feedback-error1": "Pantasqa: API nisqamanta taripasqaqa manam riqsirisqachu",
        "feedback-error2": "Pantasqa: Manam llamk'apuyta atinchu",
        "feedback-error3": "Pantasqa: API nisqaqa manam kutipanchu",
+       "feedback-message": "Willay:",
+       "feedback-subject": "Yuyancha:",
+       "feedback-submit": "Willapuyniykita kachay",
        "feedback-thanks": "Añaychayki! Willapuyniykiqa \"[$2 $1]\" sutiyuq p'anqaman yapasqañam.",
-       "feedback-close": "Rurasqañam",
-       "feedback-bugcheck": "Allillanmi! Llanchirillay [$1 riqsisqapura huk pantasqañachu] mana kanmanchu.",
-       "feedback-bugnew": "Llanchisqañam. Musuq pantasqamanta willay",
        "searchsuggest-search": "Maskay",
        "searchsuggest-containing": "kaykunayuq: ...",
        "api-error-badaccess-groups": "Kay wikipiqa willañiqikunata manam churkuyta atinkichu.",
index eeaef1f..871a648 100644 (file)
        "logentry-rights-autopromote": "$1 è vegnì {{GENDER:$2|promovì|promovida}} automaticamain da $4 a $5",
        "rightsnone": "(nagins)",
        "revdelete-summary": "resumaziun da la midada",
+       "feedback-adding": "Agiuntar il resun a la pagina…",
+       "feedback-bugcheck": "Grondius! Controllescha simplamain che quai n'è betg gia in da las [$1 errurs enconuschentas].",
+       "feedback-bugnew": "Jau hai controllà. Rapportar ina nova errur.",
        "feedback-bugornote": "Sche ti vuls descriver detagliadamain in problem techic, lura [$1 rapporta in bug].\nUschiglio pos ti utilisar il formular simpel sutvart. Tes commentari vegn agiuntà a la pagina \"[$3 $2]\" ensemen cun tes num d'utilisader.",
-       "feedback-subject": "Object:",
-       "feedback-message": "Messadi:",
        "feedback-cancel": "Interrumper",
-       "feedback-submit": "Trametter il resun",
-       "feedback-adding": "Agiuntar il resun a la pagina…",
+       "feedback-close": "Terminà",
        "feedback-error1": "Errur: Resultat nunenconuschent dal API",
        "feedback-error2": "Errur: La modificaziun n'è betg reussida",
        "feedback-error3": "Errur: Nagina resposta dal API",
+       "feedback-message": "Messadi:",
+       "feedback-subject": "Object:",
+       "feedback-submit": "Trametter il resun",
        "feedback-thanks": "Grazia! Tes resun è vegnì publitgà sin la pagina \"[$2 $1]\".",
-       "feedback-close": "Terminà",
-       "feedback-bugcheck": "Grondius! Controllescha simplamain che quai n'è betg gia in da las [$1 errurs enconuschentas].",
-       "feedback-bugnew": "Jau hai controllà. Rapportar ina nova errur.",
        "searchsuggest-search": "Tschertgar",
        "searchsuggest-containing": "cuntegna…",
        "api-error-badaccess-groups": "Ti na dastgas betg chargiar datotecas en quest wiki.",
index b6fcb4a..c3b48fc 100644 (file)
@@ -24,7 +24,8 @@
                        "לערי ריינהארט",
                        "아라",
                        "XXN",
-                       "Fitoschido"
+                       "Fitoschido",
+                       "Macofe"
                ]
        },
        "tog-underline": "Sublinierea legăturilor:",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|a dezactivat}} eticheta „$4” de la utilizarea de către utilizatori și roboți",
        "rightsnone": "(niciunul)",
        "revdelete-summary": "descrierea modificărilor",
+       "feedback-adding": "Se adaugă părerea pe pagină...",
+       "feedback-bugcheck": "Minunat! Trebuie doar să verificați dacă nu cumva problema a fost [$1 deja înregistrată].",
+       "feedback-bugnew": "Am verificat. O raportez drept o problemă nouă",
        "feedback-bugornote": "Dacă sunteți pregătit să descrieți o problemă tehnică în detaliu vă rugăm să [$1 raportați un bug].\nÎn caz contrar, puteți utiliza formularul de mai jos. Comentariul dumneavoastră va fi adăugat pe pagina „[$3 $2]”, împreună cu numele de utilizator și numele navigatorului pe care îl folosiți.",
-       "feedback-subject": "Subiect:",
-       "feedback-message": "Mesaj:",
        "feedback-cancel": "Revocare",
-       "feedback-submit": "Trimite părerea",
-       "feedback-adding": "Se adaugă părerea pe pagină...",
+       "feedback-close": "Gata",
        "feedback-error1": "Eroare: Rezultat necunoscut de la API",
        "feedback-error2": "Eroare: editarea nu a reușit",
        "feedback-error3": "Eroare: Niciun răspuns de la API",
+       "feedback-message": "Mesaj:",
+       "feedback-subject": "Subiect:",
+       "feedback-submit": "Trimite",
        "feedback-thanks": "Mulțumim! Comentariile dumneavoastră au fost publicate pe pagina „[ $2  $1 ]”.",
-       "feedback-close": "Gata",
-       "feedback-bugcheck": "Minunat! Trebuie doar să verificați dacă nu cumva problema a fost [$1 deja înregistrată].",
-       "feedback-bugnew": "Am verificat. O raportez drept o problemă nouă",
        "searchsuggest-search": "Căutare",
        "searchsuggest-containing": "conținând...",
        "api-error-badaccess-groups": "Nu aveți dreptul să încărcați fișiere pe acest wiki.",
index 4f2382a..0cd6e56 100644 (file)
@@ -6,7 +6,8 @@
                        "McDutchie",
                        "Reder",
                        "아라",
-                       "C.R."
+                       "C.R.",
+                       "Macofe"
                ]
        },
        "tog-underline": "Collegaminde sottolinèate:",
        "logentry-rights-autopromote": "$1 ha state {{GENDER:$2|promosse}} automaticamende da $4 a $5",
        "rightsnone": "(ninde)",
        "revdelete-summary": "cange 'u riepileghe",
+       "feedback-adding": "Aggiunge feedback a 'a pàgene...",
+       "feedback-bugcheck": "Granne! Appene verificate ca non g'è une de le [$1 bug canusciute].",
+       "feedback-bugnew": "Agghie verificate. Manne 'nu bug nuève",
        "feedback-bugornote": "Ce tu si pronde a descrivere 'nu probbleme tecniche cu le dettaglie pe piacere [$1 manne 'nu bug].\nCe nò, tu puè ausà 'u module facile aqquà sotte. 'U commende tune avène aggiunde a 'a pàgene [$3 $2]\", seguenne 'u nome utende tune e ce browser tu ste ause.",
-       "feedback-subject": "Oggette:",
-       "feedback-message": "Messàgge:",
        "feedback-cancel": "Annulle",
-       "feedback-submit": "Conferme 'a segnalazione",
-       "feedback-adding": "Aggiunge feedback a 'a pàgene...",
+       "feedback-close": "Fatte",
        "feedback-error1": "Errore: resultate inaspettate da l'API",
        "feedback-error2": "Errore: Cangiamende fallite",
        "feedback-error3": "Errore: Nisciuna resposte da l'API",
+       "feedback-message": "Messàgge:",
+       "feedback-subject": "Oggette:",
+       "feedback-submit": "Conferme",
        "feedback-thanks": "Grazie! 'A segnalaziona toje ha state mannate a 'a pàgene \"[$2 $1]\".",
-       "feedback-close": "Fatte",
-       "feedback-bugcheck": "Granne! Appene verificate ca non g'è une de le [$1 bug canusciute].",
-       "feedback-bugnew": "Agghie verificate. Manne 'nu bug nuève",
        "searchsuggest-search": "Cirche",
        "searchsuggest-containing": "tène...",
        "api-error-badaccess-groups": "Tu non ge puè carecà file sus a sta Uicchi.",
index 448959f..cc37d39 100644 (file)
@@ -76,7 +76,8 @@
                        "Tourorist",
                        "Purodha",
                        "Максим777",
-                       "Sealle"
+                       "Sealle",
+                       "Macofe"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "logentry-managetags-create": "$1 создал{{GENDER:$2||а}} метку «$4»",
        "rightsnone": "(нет)",
        "revdelete-summary": "описание изменений",
+       "feedback-adding": "Добавление отзыва на страницу…",
+       "feedback-bugcheck": "Прекрасно! Только проверьте, что в списке [$1 известных ошибок] нет подобной записи.",
+       "feedback-bugnew": "Я проверил. Сообщить о новой ошибке",
        "feedback-bugornote": "Если вы готовы подробно описать техническую проблему, пожалуйста, [$1 сообщите об ошибке].\nВ противном случае вы можете использовать данную простую форму. Ваш комментарий будет добавлен на страницу «[$3 $2]» вместе с вашим именем участника и используемым браузером.",
-       "feedback-subject": "Тема:",
-       "feedback-message": "Сообщение:",
        "feedback-cancel": "Отмена",
-       "feedback-submit": "Отправить отзыв",
-       "feedback-adding": "Добавление отзыва на страницу…",
+       "feedback-close": "Готово",
        "feedback-error1": "Ошибка. Неизвестный результат из API",
        "feedback-error2": "Ошибка. Сбой редактирования",
        "feedback-error3": "Ошибка. Нет ответа от API",
+       "feedback-message": "Сообщение:",
+       "feedback-subject": "Тема:",
+       "feedback-submit": "Отправить",
        "feedback-thanks": "Спасибо! Ваш отзыв размещён на странице «[$2 $1]».",
-       "feedback-close": "Готово",
-       "feedback-bugcheck": "Прекрасно! Только проверьте, что в списке [$1 известных ошибок] нет подобной записи.",
-       "feedback-bugnew": "Я проверил. Сообщить о новой ошибке",
        "searchsuggest-search": "Поиск",
        "searchsuggest-containing": "содержащие…",
        "api-error-badaccess-groups": "Вам не разрешено загружать файлы в эту вики.",
index a538c1a..d158c90 100644 (file)
        "logentry-rights-autopromote": "$1 {{GENDER:$2|быв автоматічно переведеный|была автоматічно переведана}} з $4 на $5",
        "rightsnone": "(жадне)",
        "revdelete-summary": "коментарь едітованя",
+       "feedback-adding": "Коментарь ся придавать на сторінку…",
+       "feedback-bugcheck": "Герешнї! Лем перевірьте, ці то не єдна з [$1 уж знамых хыб].",
+       "feedback-bugnew": "Перевірив(а) єм то. Хочу повідомити нову хыбу.",
        "feedback-bugornote": "Кідь сьте прирыхтованый подробно описати технічный проблем, можете [$1 наголосити хыбу].\nІнакше можете схносновати простый формулать ниже. Ваш коментарь буде приданый на сторінку „[$3 $2]“ разом з вашым іменом хоснователя тай інформаціов о тім, якый бровсер хоснуєте.",
-       "feedback-subject": "Предмет:",
-       "feedback-message": "Повідомлїня:",
        "feedback-cancel": "Сторно",
-       "feedback-submit": "Одослати одозву",
-       "feedback-adding": "Коментарь ся придавать на сторінку…",
+       "feedback-close": "Готово",
        "feedback-error1": "Хыба: Нерозознаый резултат з API",
        "feedback-error2": "Хыба: Едітованя ся не вдало",
        "feedback-error3": "Хыба: API не вернуло жадну одповідь",
+       "feedback-message": "Повідомлїня:",
+       "feedback-subject": "Предмет:",
+       "feedback-submit": "Одослати одозву",
        "feedback-thanks": "Дякуєме! Ваш коментарь быв приданый на сторінку „[$2 $1]“.",
-       "feedback-close": "Готово",
-       "feedback-bugcheck": "Герешнї! Лем перевірьте, ці то не єдна з [$1 уж знамых хыб].",
-       "feedback-bugnew": "Перевірив(а) єм то. Хочу повідомити нову хыбу.",
        "searchsuggest-search": "Глядати",
        "searchsuggest-containing": "обсягуючій...",
        "api-error-badaccess-groups": "Не мате дозволено наладововати файлы на тоту вікі.",
index f2ad2ad..73da4b9 100644 (file)
        "logentry-rights-autopromote": "$1 इत्ययं स्वचालितरूपेण $4 इत्यतः $5 इति यावत् पदोन्नतः",
        "rightsnone": "(कतम)",
        "revdelete-summary": "सम्पादनसांक्षेपिक",
+       "feedback-adding": "पृष्ठे प्रतिस्पन्दः योजनीयः ...",
+       "feedback-bugcheck": "उत्तमम् परिशीलयतु यत्  [ $1 known bugs] पूर्वमेव नासीत् इति ।",
+       "feedback-bugnew": "अहं परीक्षितवान् ।  नूतनदोषं सूचयतु ।",
        "feedback-bugornote": "यदि भवान् कस्याश्चित् तान्त्रिकसमस्यायाः विषये विशदीकर्तुम् इच्छति तर्हि [$1 मत्कुणसञ्चिकां करोतु ।]\nअन्यथा चेत् भवान् सरलप्रपत्रम् उपयोक्तुं शक्नोति । भवतः टीका योजकनाम्ना सह भवतः जालगवाक्षेन सह  \"[$3 $2]\" इत्यस्मिन् पुटे योज्यते ।",
-       "feedback-subject": "विषय:",
-       "feedback-message": "संदेश:",
        "feedback-cancel": "निवर्तयते",
-       "feedback-submit": "प्रतिस्पन्दः प्रेष्यताम्",
-       "feedback-adding": "पृष्ठे प्रतिस्पन्दः योजनीयः ...",
+       "feedback-close": "समापित",
        "feedback-error1": "API इत्यस्मात् दोषः : अज्ञातः परिणामः ।",
        "feedback-error2": "दोषः : सम्पादनं निष्फलं जातम्",
        "feedback-error3": "दोषः : ए पि ऐ तः प्रतिस्पन्दः न प्राप्तः",
+       "feedback-message": "संदेश:",
+       "feedback-subject": "विषय:",
+       "feedback-submit": "प्रतिस्पन्दः प्रेष्यताम्",
        "feedback-thanks": "धन्यवादः ! भवतः प्रतिस्पन्दः \"[ $2  $1 ]\" पृष्ठाय प्रेषितः अस्ति ।",
-       "feedback-close": "समापित",
-       "feedback-bugcheck": "उत्तमम् परिशीलयतु यत्  [ $1 known bugs] पूर्वमेव नासीत् इति ।",
-       "feedback-bugnew": "अहं परीक्षितवान् ।  नूतनदोषं सूचयतु ।",
        "searchsuggest-search": "अन्वेषणम्",
        "searchsuggest-containing": "विद्यन्ते......",
        "api-error-badaccess-groups": "भवान् अस्यां वीक्यां सञ्चिकाः उत्तारयितुम् नानुमतः ।",
index c1c1c47..47647d0 100644 (file)
        "logentry-rights-rights": "$3 бөлөхтөргө киириитин $1 уларыппыт: манныктан $4 манныкка $5",
        "logentry-rights-rights-legacy": "$3 бөлөхтөргө киириитин $1 уларыппыт",
        "logentry-rights-autopromote": "$1 мантан $4 манна $5 көһөрүллүбүт",
+       "logentry-upload-upload": "$1 {{GENDER:$2|укпут}} $3",
        "rightsnone": "(суох)",
        "revdelete-summary": "уларытыылар туһунан",
+       "feedback-adding": "Сирэй туһунан санаа этии...",
+       "feedback-bugcheck": "Бэрт! Ол гынан баран [$1 биллэр алҕастарын] тиһилигэр майгынныыр сурук суоҕун тургут.",
+       "feedback-bugnew": "Мин тургуттум. Атын алҕас туһунан",
        "feedback-bugornote": "Туох кыһалҕаны көрсүбүккүн сиһилии суруйар кыахтаах буоллаххына, бука диэн [$1 алҕас туһунан биллэр].\nОл сатаммат буоллаҕына бу судургу форманы толор. Эн этииҥ ааккын уонна туһанар браузерыҥ аатын кытта манна «[$3 $2]» бэчээттэниэ.",
-       "feedback-subject": "Тиэмэ:",
-       "feedback-message": "Сурук:",
        "feedback-cancel": "Салҕаама",
-       "feedback-submit": "Санаа этиитэ",
-       "feedback-adding": "Сирэй туһунан санаа этии...",
+       "feedback-close": "Сатанна",
        "feedback-error1": "Алҕас: API биллибэт түмүгэ",
        "feedback-error2": "Алҕас: Көннөрүү сатаммата",
        "feedback-error3": "Алҕас: API хоруйдаабата",
+       "feedback-message": "Сурук:",
+       "feedback-subject": "Тиэмэ:",
+       "feedback-submit": "Санаа этиитэ",
        "feedback-thanks": "Махтал! Эн санааҥ бу сирэйгэ \"[$2 $1]\" сурулунна.",
-       "feedback-close": "Сатанна",
-       "feedback-bugcheck": "Бэрт! Ол гынан баран [$1 биллэр алҕастарын] тиһилигэр майгынныыр сурук суоҕун тургут.",
-       "feedback-bugnew": "Мин тургуттум. Атын алҕас туһунан",
        "searchsuggest-search": "Көрдөөһүн",
        "searchsuggest-containing": "тыл баар ыстатыйалара...",
        "api-error-badaccess-groups": "Эн бу биикигэ билэ киллэрэриҥ хааччахтаммыт.",
index 323650e..4eb5167 100644 (file)
        "logentry-upload-revert": "$1 {{GENDER:$2|carrigadu}} $3",
        "rightsnone": "(nisciunu)",
        "revdelete-summary": "ogetu de sa modìfica",
-       "feedback-subject": "Ogetu:",
-       "feedback-message": "Messàgiu:",
        "feedback-cancel": "Annudda",
        "feedback-close": "Fatu",
+       "feedback-message": "Messàgiu:",
+       "feedback-subject": "Ogetu:",
        "searchsuggest-search": "Chirca",
        "expand_templates_ok": "OK",
        "expand_templates_preview": "Antiprima",
index da3ecf5..bbf836f 100644 (file)
        "logentry-upload-revert": "$1 {{GENDER:$2|carricau}} $3",
        "rightsnone": "(nuddu)",
        "revdelete-summary": "riassuntu dô canciamentu",
+       "feedback-adding": "Agghiuncimentu dû cummentu â pàggina...",
+       "feedback-bugcheck": "Bonu! Sulu cuntrolla chi' nun è unu dî [$1 bug già canusciuti].",
+       "feedback-bugnew": "Cuntrullai. Signala nu bug novu",
        "feedback-bugornote": "Si' si' bonu a' discrìviri un prubblema tècnicu di manera dittagghiata, pi' favuri [$1 signala nu bug].\nSi' no, poi adupirari u mòdulu facilitatu ccassutta. U to cummentu sarravi agghiunciutu â pàggina \"[$3 $2]\", nsemmula ô to nomu utenti.",
-       "feedback-subject": "Oggettu:",
-       "feedback-message": "Missaggiu:",
        "feedback-cancel": "Annulla",
-       "feedback-submit": "Manna u cummentu",
-       "feedback-adding": "Agghiuncimentu dû cummentu â pàggina...",
+       "feedback-close": "Finutu",
        "feedback-error1": "Erruri: Risultatu di l'API nun ricanusciutu",
        "feedback-error2": "Erruri: A mudìfica nun riniscìu",
        "feedback-error3": "Erruri: Nudda risposta di l'API",
+       "feedback-message": "Missaggiu:",
+       "feedback-subject": "Oggettu:",
+       "feedback-submit": "Manna u cummentu",
        "feedback-thanks": "Grazzî! U to cummentu fu' affissu ntâ pàggina \"[$2 $1]\".",
-       "feedback-close": "Finutu",
-       "feedback-bugcheck": "Bonu! Sulu cuntrolla chi' nun è unu dî [$1 bug già canusciuti].",
-       "feedback-bugnew": "Cuntrullai. Signala nu bug novu",
        "searchsuggest-search": "Risciduta",
        "searchsuggest-containing": "chi' cunteni...",
        "api-error-badaccess-groups": "Nun hai u pirmissu di carricari file nta sta wiki.",
index 8a4d124..da35e21 100644 (file)
@@ -17,7 +17,8 @@
                        "sco.wikipedia.org editors",
                        "לערי ריינהארט",
                        "아라",
-                       "PiRSquared17"
+                       "PiRSquared17",
+                       "Macofe"
                ]
        },
        "tog-underline": "Unnerline airtins:",
        "deleteprotected": "Ye canna delyte this page cause it's been fended.",
        "deleting-backlinks-warning": "'''Warnishment:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Ither pages]] airt til or transcluide the page ye'r aboot tae delyte.",
        "rollback": "Row back eedits",
-       "rollback_short": "Rowback",
        "rollbacklink": "rowback",
        "rollbacklinkcount": "rowback $1 {{PLURAL:$1|eedit|eedits}}",
        "rollbacklinkcount-morethan": "rowback mair than $1 {{PLURAL:$1|eedit|eedits}}",
        "import-logentry-interwiki": "transwikied $1",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|reveesion|reveesions}} importit fae $2",
        "javascripttest": "JavaScript testin",
-       "javascripttest-title": "Rinnin $1 tests",
        "javascripttest-pagetext-noframework": "This page is reserved fer rinnin JavaScript tests.",
        "javascripttest-pagetext-unknownframework": "Onkent testin framewairk \"$1\".",
        "javascripttest-pagetext-frameworks": "Please chuise yin o the follaein testin framewairks: $1",
        "javascripttest-pagetext-skins": "Chuise ae skin tae rin the tests wi:",
        "javascripttest-qunit-intro": "See [$1 testin documentation] oan mediawiki.org.",
-       "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit test suite",
        "tooltip-pt-userpage": "Yer uiser page",
        "tooltip-pt-anonuserpage": "The uiser page fer the IP address that ye'r eeditin aes",
        "tooltip-pt-mytalk": "Yer tauk page",
        "logentry-upload-revert": "$1 {{GENDER:$2|uplaidit}} $3",
        "rightsnone": "(nane)",
        "revdelete-summary": "eedit the ootline",
+       "feedback-adding": "Eikin feedback til page...",
+       "feedback-bugcheck": "Wunnerfu! Just check that it's na awreadie yin o the [$1 knawn bugs].",
+       "feedback-bugnew": "Ah checkt. Report ae new bug",
        "feedback-bugornote": "Gif yer readie tae describe ae techneecal proablem in detail please [$1 report ae bug].\nItherwise, ye can uiss the easie form ablo. Yer comment will be eikit til the page \"[$3 $2]\", alang wi yer uisername.",
-       "feedback-subject": "Aneat:",
-       "feedback-message": "Message:",
        "feedback-cancel": "Cancel",
-       "feedback-submit": "Haund Feedback In",
-       "feedback-adding": "Eikin feedback til page...",
+       "feedback-close": "Dun",
        "feedback-error1": "Mistak: Onrecognised ootcome fae API",
        "feedback-error2": "Mistak: Eedit failed",
        "feedback-error3": "Mistak: Naw response fae API",
+       "feedback-message": "Message:",
+       "feedback-subject": "Aneat:",
+       "feedback-submit": "Haun-in",
        "feedback-thanks": "Thanks! Yer feedback haes been posted til the page \"[$2 $1]\".",
-       "feedback-close": "Dun",
-       "feedback-bugcheck": "Wunnerfu! Just check that it's na awreadie yin o the [$1 knawn bugs].",
-       "feedback-bugnew": "Ah checkt. Report ae new bug",
        "searchsuggest-search": "Rake",
        "searchsuggest-containing": "containin...",
        "api-error-badaccess-groups": "Ye'r na permittit tae uplaid files til this wiki.",
index afb83b9..c787559 100644 (file)
        "logentry-rights-autopromote": "$1 {{GENDER:$2|je automatski unaprijeđen|je automatski unaprijeđena}} iz $4 u $5",
        "rightsnone": "(nema)",
        "revdelete-summary": "sažetak izmjene",
+       "feedback-adding": "Dodajem povratne informacije na stranicu...",
+       "feedback-bugcheck": "Izvrsno! Molimo provjerite da se ne radi o nekom [$1 poznatom \"bugu\"].",
+       "feedback-bugnew": "Provereno. Prijavi novu grešku",
        "feedback-bugornote": "Ako ste spremni da detaljno opišete tehnički problem, onda [$1 prijavite grešku].\nU suprotnom, poslužite se jednostavnim obrascem ispod. Vaš komentar će stajati na stranici „[$3 $2]“, zajedno s korisničkim imenom i pregledačem koji koristite.",
-       "feedback-subject": "Tema:",
-       "feedback-message": "Poruka:",
        "feedback-cancel": "Odustani",
-       "feedback-submit": "Pošalji povratnu informaciju",
-       "feedback-adding": "Dodajem povratne informacije na stranicu...",
+       "feedback-close": "Gotovo",
        "feedback-error1": "Greška: neprepoznat rezultat od API-ja",
        "feedback-error2": "Greška: Uređivanje nije uspjelo",
        "feedback-error3": "Greška: nema odgovora od API-ja",
+       "feedback-message": "Poruka:",
+       "feedback-subject": "Tema:",
+       "feedback-submit": "Pošalji povratnu informaciju",
        "feedback-thanks": "Hvala! Vaša povratna informacija je postavljena na stranicu „[$2 $1]“.",
-       "feedback-close": "Gotovo",
-       "feedback-bugcheck": "Izvrsno! Molimo provjerite da se ne radi o nekom [$1 poznatom \"bugu\"].",
-       "feedback-bugnew": "Provereno. Prijavi novu grešku",
        "searchsuggest-search": "Traži",
        "searchsuggest-containing": "sadrži...",
        "api-error-badaccess-groups": "Nemate ovlasti da postavljate datoteke na ovoj wiki.",
index 5d76707..0f718ac 100644 (file)
        "logentry-newusers-autocreate": "$1 ගිණුම ස්වංක්‍රීයව නිර්මිතය",
        "rightsnone": "(කිසිවක් නොමැත)",
        "revdelete-summary": "සංස්කරණ සාරාංශය",
-       "feedback-subject": "විෂයය:",
-       "feedback-message": "පණිවුඩය:",
-       "feedback-cancel": "අවලංගු කරන්න",
-       "feedback-submit": "ප්‍රතිචාරය යවන්න",
        "feedback-adding": "ප්‍රතිචාරය පිටුවට එක් කරමින් ...",
+       "feedback-bugcheck": "කදිමයි! දැන් එය දැනටමත් [$1 හඳුනාගත් දෝෂ]වල තිබේ දැයි පිරික්සන්න.",
+       "feedback-bugnew": "මම පරික්ෂා කළා. නව දෝෂය වාර්තා කරන්න",
+       "feedback-cancel": "අවලංගු කරන්න",
+       "feedback-close": "හරි",
        "feedback-error1": "දෝෂය: API ගෙන් හදුනානොගත් ප්‍රතිපල",
        "feedback-error2": "දෝෂය: සංස්කරණය අසාර්ථකයි",
        "feedback-error3": "දෝෂය: API ගෙන් ප්‍රතිචාරයක් නොමැත",
+       "feedback-message": "පණිවුඩය:",
+       "feedback-subject": "විෂයය:",
+       "feedback-submit": "ප්‍රතිචාරය යවන්න",
        "feedback-thanks": "ස්තුතියි! ඔබේ ප්‍රතිචාරය \"[$2 $1]\" පිටුවට එක් කරන ලදී.",
-       "feedback-close": "හරි",
-       "feedback-bugcheck": "කදිමයි! දැන් එය දැනටමත් [$1 හඳුනාගත් දෝෂ]වල තිබේ දැයි පිරික්සන්න.",
-       "feedback-bugnew": "මම පරික්ෂා කළා. නව දෝෂය වාර්තා කරන්න",
        "searchsuggest-search": "ගවේශණය කරන්න",
        "searchsuggest-containing": "ඇතුළත් වෙමින් පවතී...",
        "api-error-badaccess-groups": "මෙම විකියට ගොනු උඩුගතකිරීම සඳහා ඔබට අවසර නැත.",
index 0f10fe1..38984ee 100644 (file)
        "logentry-rights-autopromote": "$1 bol automaticky povýšený z $4 na $5",
        "rightsnone": "(žiadne)",
        "revdelete-summary": "zhrnutie úprav",
+       "feedback-adding": "Pridáva sa komentár na stránku...",
+       "feedback-bugcheck": "Skvelé! Teraz len skontrolujte, či to nie je jedna z už [$1 známych chýb].",
+       "feedback-bugnew": "Skontroloval som. Poslať nové hlásenie o chybe.",
        "feedback-bugornote": "Ak ste pripravený podrobne popísať technický problém, prosím pošlite [$1 hlásenie o chybe]. \nV opačnom prípade môžete použiť zjednodušený formulár nižšie. Váš komentár sa pridá na stránku „[$3 $2]“ spolu s vašim používateľským meno a prehliadačom, ktorý používate.",
-       "feedback-subject": "Predmet:",
-       "feedback-message": "Správa:",
        "feedback-cancel": "Zrušiť",
-       "feedback-submit": "Odoslať komentár",
-       "feedback-adding": "Pridáva sa komentár na stránku...",
+       "feedback-close": "Hotovo",
        "feedback-error1": "Chyba: Nerozpoznaný výsledok z API",
        "feedback-error2": "Chyba: Úprava sa nepodarila",
        "feedback-error3": "Chyba: Žiadna odpoveď z API",
+       "feedback-message": "Správa:",
+       "feedback-subject": "Predmet:",
+       "feedback-submit": "Odoslať komentár",
        "feedback-thanks": "Ďakujeme. Váš komentár bol odoslaný na stránku „[$2 $1]“.",
-       "feedback-close": "Hotovo",
-       "feedback-bugcheck": "Skvelé! Teraz len skontrolujte, či to nie je jedna z už [$1 známych chýb].",
-       "feedback-bugnew": "Skontroloval som. Poslať nové hlásenie o chybe.",
        "searchsuggest-search": "Hľadať",
        "searchsuggest-containing": "obsahuje...",
        "api-error-badaccess-groups": "Nemáte oprávnenie nahrávať súbory na tejto wiki.",
index f4c851f..eb079cb 100644 (file)
        "disclaimers": "Zanikanja odgovornosti",
        "disclaimerpage": "Project:Splošno zanikanje odgovornosti",
        "edithelp": "Pomoč pri urejanju",
+       "helppage-top-gethelp": "Pomoč",
        "mainpage": "Glavna stran",
        "mainpage-description": "Glavna stran",
        "policy-url": "Project:Pravila",
        "logentry-managetags-deactivate": "$1 je {{GENDER:$2|dezaktiviral|dezaktivirala|dezaktiviral(-a)}} oznako »$4« za uporabnike in bote",
        "rightsnone": "(nobeno)",
        "revdelete-summary": "povzetek urejanja",
+       "feedback-adding": "Dodajanje povratne informacije na stran ...",
+       "feedback-back": "Nazaj",
+       "feedback-bugcheck": "Izvrstno! Samo preverite, da ne gre za enega od [$1 že znanih hroščev].",
+       "feedback-bugnew": "Sem preveril. Prijavi nov hrošč",
        "feedback-bugornote": "Če ste pripravljeni podrobno opisati tehnično težavo, vložite [$1 poročilo o hrošču].\nV nasprotnem primeru lahko uporabite preprost obrazec spodaj. Vašo pripombo bomo dodali na stran »[$3 $2]«, skupaj z vašim uporabniškim imenom in podatkom o brskalniku, ki ga uporabljate.",
-       "feedback-subject": "Zadeva:",
-       "feedback-message": "Sporočilo:",
        "feedback-cancel": "Prekliči",
-       "feedback-submit": "Pošlji povratno informacijo",
-       "feedback-adding": "Dodajanje povratne informacije na stran ...",
+       "feedback-close": "Urejeno",
+       "feedback-external-bug-report-button": "Vloži tehnično opravilo",
+       "feedback-dialog-title": "Pošljite povratne informacije",
+       "feedback-dialog-intro": "Spodnji enostavni obrazec lahko uporabite za pošiljanje povratnih informacij. Vašo pripombo bomo dodali na stran »$1« skupaj z vašim uporabniškim imenom.",
+       "feedback-error-title": "Napaka",
        "feedback-error1": "Napaka: Neznan rezultat iz API",
        "feedback-error2": "Napaka: Urejanje je spodletelo",
        "feedback-error3": "Napaka: Ni odgovora od API",
+       "feedback-message": "Sporočilo:",
+       "feedback-subject": "Zadeva:",
+       "feedback-submit": "Pošlji",
+       "feedback-terms": "Razumem, da podatek o uporabniškem agentu vsebuje točne informacije o mojem brskalniku in različici operacijskega sistema ter da bo javno prikazan skupaj z mojimi povratnimi informacijami.",
+       "feedback-termsofuse": "Strinjam se, da posredujem povratne informacije v skladu s Pogoji uporabe.",
        "feedback-thanks": "Havala! Vaše povratne informacije smo objavili na strani »[$2 $1]«.",
-       "feedback-close": "Urejeno",
-       "feedback-bugcheck": "Izvrstno! Samo preverite, da ne gre za enega od [$1 že znanih hroščev].",
-       "feedback-bugnew": "Sem preveril. Prijavi nov hrošč",
+       "feedback-thanks-title": "Hvala!",
+       "feedback-useragent": "Uporabniški agent:",
        "searchsuggest-search": "Iskanje",
        "searchsuggest-containing": "vsebujoč ...",
        "api-error-badaccess-groups": "Nalaganje datotek na ta wiki vam ni dovoljeno.",
index 9c1dc3a..09b383e 100644 (file)
        "logentry-newusers-autocreate": "Llogaria $1 u krijua automatikisht",
        "rightsnone": "(asgjë)",
        "revdelete-summary": "përmbledhja redaktimit",
+       "feedback-adding": "Duke shtuar përshtypjen te faqja...",
+       "feedback-bugcheck": "Shumë mirë! Thjesht kontrolloni që nuk është një nga [$1 problemet e njohura].",
+       "feedback-bugnew": "E kontrollova. Raporto një problem të ri",
        "feedback-bugornote": "Nëse jeni gati për të përshkruar një problem teknik me detaje ju lutemi [$1 raportoni një problem].\nPërndryshe, ju mund të formularin e thjeshtë më poshtë. Komenti juaj do të shtohet te faqja \"[$3 $2]\"\", së bashku me emrin tuaj të përdoruesit dhe shfletuesin të cilin jeni duke përdorur.",
-       "feedback-subject": "Subjekti:",
-       "feedback-message": "Mesazhi:",
        "feedback-cancel": "Anulo",
-       "feedback-submit": "Paraqit përshtypjet",
-       "feedback-adding": "Duke shtuar përshtypjen te faqja...",
+       "feedback-close": "Përfunduar",
        "feedback-error1": "Gabim: Rezultat i panjohur nga API",
        "feedback-error2": "Gabim: Redaktimi dështoi",
        "feedback-error3": "Gabim: Nuk ka përgjigje nga API",
+       "feedback-message": "Mesazhi:",
+       "feedback-subject": "Subjekti:",
+       "feedback-submit": "Paraqit përshtypjet",
        "feedback-thanks": "Faleminderit! Përshtypja juaj është postuar në faqen \"[$2 $1]\".",
-       "feedback-close": "Përfunduar",
-       "feedback-bugcheck": "Shumë mirë! Thjesht kontrolloni që nuk është një nga [$1 problemet e njohura].",
-       "feedback-bugnew": "E kontrollova. Raporto një problem të ri",
        "searchsuggest-search": "Kërko",
        "searchsuggest-containing": "përmban ...",
        "api-error-badaccess-groups": "Ju nuk lejoheni të ngarkoni skeda në këtë wiki.",
index 91605ac..b92847b 100644 (file)
        "logentry-managetags-deactivate": "$1 је {{GENDER:$2|деактивирао|деактивирала}} ознаку „$4“ за употребу од стране корисника и ботова",
        "rightsnone": "(нема)",
        "revdelete-summary": "опис измене",
+       "feedback-adding": "Додајем повратну информацију на страницу…",
+       "feedback-bugcheck": "Одлично! Проверите да ли је грешка [$1 позната од пре].",
+       "feedback-bugnew": "Проверено. Пријави нову грешку",
        "feedback-bugornote": "Ако сте спремни да детаљно опишете технички проблем, онда [$1 пријавите грешку].\nУ супротном, послужите се једноставним обрасцем испод. Ваш коментар ће стајати на страници „[$3 $2]“, заједно с корисничким именом и прегледачем који користите.",
-       "feedback-subject": "Наслов:",
-       "feedback-message": "Порука:",
        "feedback-cancel": "Откажи",
-       "feedback-submit": "Пошаљи повратну информацију",
-       "feedback-adding": "Додајем повратну информацију на страницу…",
+       "feedback-close": "Урађено",
        "feedback-error1": "Грешка: непрепознат резултат од АПИ-ја",
        "feedback-error2": "Грешка: уређивање није успело",
        "feedback-error3": "Грешка: нема одговора од АПИ-ја",
+       "feedback-message": "Порука:",
+       "feedback-subject": "Наслов:",
+       "feedback-submit": "Пошаљи повратну информацију",
        "feedback-thanks": "Хвала! Ваша повратна информација је постављена на страницу „[$2 $1]“.",
-       "feedback-close": "Урађено",
-       "feedback-bugcheck": "Одлично! Проверите да ли је грешка [$1 позната од пре].",
-       "feedback-bugnew": "Проверено. Пријави нову грешку",
        "searchsuggest-search": "Претрага",
        "searchsuggest-containing": "садржи...",
        "api-error-badaccess-groups": "Није вам дозвољено да отпремате датотеке на овај вики.",
index ca523e9..cff5e66 100644 (file)
        "logentry-upload-revert": "$1 je {{GENDER:$2|poslao|poslala}} $3",
        "rightsnone": "(nema)",
        "revdelete-summary": "opis izmene",
+       "feedback-adding": "Dodajem povratnu informaciju na stranicu…",
+       "feedback-bugcheck": "Odlično! Proverite da li je greška [$1 poznata od pre].",
+       "feedback-bugnew": "Provereno. Prijavi novu grešku",
        "feedback-bugornote": "Ako ste spremni da detaljno opišete tehnički problem, onda [$1 prijavite grešku].\nU suprotnom, poslužite se jednostavnim obrascem ispod. Vaš komentar će stajati na stranici „[$3 $2]“, zajedno s korisničkim imenom i pregledačem koji koristite.",
-       "feedback-subject": "Naslov:",
-       "feedback-message": "Poruka:",
        "feedback-cancel": "Otkaži",
-       "feedback-submit": "Pošalji povratnu informaciju",
-       "feedback-adding": "Dodajem povratnu informaciju na stranicu…",
+       "feedback-close": "Urađeno",
        "feedback-error1": "Greška: neprepoznat rezultat od API-ja",
        "feedback-error2": "Greška: uređivanje nije uspelo",
        "feedback-error3": "Greška: nema odgovora od API-ja",
+       "feedback-message": "Poruka:",
+       "feedback-subject": "Naslov:",
+       "feedback-submit": "Pošalji povratnu informaciju",
        "feedback-thanks": "Hvala! Vaša povratna informacija je postavljena na stranicu „[$2 $1]“.",
-       "feedback-close": "Urađeno",
-       "feedback-bugcheck": "Odlično! Proverite da li je greška [$1 poznata od pre].",
-       "feedback-bugnew": "Provereno. Prijavi novu grešku",
        "searchsuggest-search": "Pretraga",
        "searchsuggest-containing": "sadrži...",
        "api-error-badaccess-groups": "Nije vam dozvoljeno da otpremate datoteke na ovaj viki.",
index 09e4a2d..01819be 100644 (file)
        "revdelete-unrestricted": "Watesan akses kuncén dihapuskeun",
        "rightsnone": "(euweuh)",
        "revdelete-summary": "ringkesan ngédit",
-       "feedback-subject": "Ngeunaan:",
-       "feedback-message": "Surat:",
        "feedback-cancel": "Bolay",
+       "feedback-message": "Surat:",
+       "feedback-subject": "Ngeunaan:",
        "searchsuggest-search": "Sungsi",
        "searchsuggest-containing": "ngandung...",
        "api-error-file-too-large": "Berkas nu dikirim gedé teuing.",
index 7620dee..5737055 100644 (file)
@@ -63,7 +63,8 @@
                        "Albinomamba",
                        "Stens51",
                        "Boom",
-                       "Marfuas"
+                       "Marfuas",
+                       "Macofe"
                ]
        },
        "tog-underline": "Stryk under länkar:",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|inaktiverade}} taggen \"$4\" för användning av användare och botar.",
        "rightsnone": "(inga)",
        "revdelete-summary": "sammanfattning",
+       "feedback-adding": "Ge feedback till sida...",
+       "feedback-bugcheck": "Jättebra! Bara kontrollera att det inte är en av de [$1 kända buggarna].",
+       "feedback-bugnew": "Jag kontrollerade. Rapportera ett nytt fel",
        "feedback-bugornote": "Om du har möjlighet att ge en detaljerad teknisk beskrivning av felet kan du lämna en [$1 buggrapport]. \nAnvänd annars formuläret nedan. Din kommentar kommer att läggas till på sidan \"[$3 $2]\", tillsammans med ditt användarnamn.",
-       "feedback-subject": "Ämne:",
-       "feedback-message": "Meddelande:",
        "feedback-cancel": "Avbryt",
-       "feedback-submit": "Skicka in feedback",
-       "feedback-adding": "Ge feedback till sida...",
+       "feedback-close": "Färdig",
        "feedback-error1": "Fel: Okänt resultat från API",
        "feedback-error2": "Fel: Redigeringen misslyckades",
        "feedback-error3": "Fel: Inget svar från API",
+       "feedback-message": "Meddelande:",
+       "feedback-subject": "Ämne:",
+       "feedback-submit": "Skicka",
        "feedback-thanks": "Tack! Din feedback har skickats till sidan \"[$2 $1]\".",
-       "feedback-close": "Färdig",
-       "feedback-bugcheck": "Jättebra! Bara kontrollera att det inte är en av de [$1 kända buggarna].",
-       "feedback-bugnew": "Jag kontrollerade. Rapportera ett nytt fel",
        "searchsuggest-search": "Sök",
        "searchsuggest-containing": "innehåller...",
        "api-error-badaccess-groups": "Du får inte ladda upp filer till denna wiki.",
index 146177a..23cc20a 100644 (file)
        "logentry-newusers-autocreate": "Akaunti ya mtumiaji $1 ilianzishwa na mashine",
        "rightsnone": "(hana)",
        "revdelete-summary": "muhtasari wa kuhariri",
-       "feedback-subject": "Mada:",
-       "feedback-message": "Ujumbe:",
-       "feedback-cancel": "Batilisha",
-       "feedback-submit": "Tuma maoni yako",
        "feedback-adding": "Maoni yako yanaongezwa katika ukurasa...",
+       "feedback-cancel": "Batilisha",
+       "feedback-close": "Tayari",
        "feedback-error1": "Hitilafu: Matokeo ya API hayafahamiki",
        "feedback-error2": "Hitilafu: Hiririo halikufaulu",
        "feedback-error3": "Hitilafu: API ya wiki haiitiki",
+       "feedback-message": "Ujumbe:",
+       "feedback-subject": "Mada:",
+       "feedback-submit": "Tuma maoni yako",
        "feedback-thanks": "Ahsante! Maoni yako yamewekwa kwenye ukurasa wa \"[$2 $1]\".",
-       "feedback-close": "Tayari",
        "searchsuggest-search": "Kutafuta",
        "searchsuggest-containing": "ya maneno...",
        "api-error-empty-file": "Faili ulilowasilisha ni tupu.",
index 227cc9b..f33084f 100644 (file)
        "logentry-newusers-autocreate": "பயனர் கணக்கு $1 தானாக உருவாக்கப்பட்டது",
        "rightsnone": "(எதுவுமில்லை)",
        "revdelete-summary": "தொகுப்பு சுருக்கத்தை",
+       "feedback-adding": "பக்கத்தில் கருத்தைச் சேர்க்கிறது...",
+       "feedback-bugcheck": "சிறப்பு! அது ஏற்கனவே  [ $1 தெரிந்த  bugs ] என்பதை மட்டும்  சரிபார்க்கவும்,",
+       "feedback-bugnew": "நான் சரிபார்த்தாயிற்று. புதிய bug பற்றி கூறு.",
        "feedback-bugornote": "நீங்கள் ஒரு தொழில்நுட்பக் கோளாறு குறித்து விரிவாக விளக்க தாயாராக இருந்தால் தயவுசெய்து [ $1  ஒரு bug பற்றி கூறு].\nஇல்லையெனில், நீங்கள் கீழேயுள்ள எளிதான படிவத்தை பயன்படுத்தலாம்.உங்கள் கருத்துரை \"[$3 $2]\" பக்கத்தில் உங்கள் பயனர் பெயர் மற்றும் உங்கள் உலாவியின் பெயருடன் சேர்க்கப்படும்.",
-       "feedback-subject": "பொருள்:",
-       "feedback-message": "தகவல்:",
        "feedback-cancel": "விட்டுவிடு",
-       "feedback-submit": "கருத்தைச் சமர்ப்பிக்கவும்",
-       "feedback-adding": "பக்கத்தில் கருத்தைச் சேர்க்கிறது...",
+       "feedback-close": "முடிந்தது",
        "feedback-error1": "பிழை: API லிருந்து அங்கீகரிக்கப்படாத முடிவு.",
        "feedback-error2": "பிழை: திருத்தல்  தோல்வியடைந்தது",
        "feedback-error3": "பிழை: API லிருந்து பதிற்குறிப்பு எதுவும் இல்லை.",
+       "feedback-message": "தகவல்:",
+       "feedback-subject": "பொருள்:",
+       "feedback-submit": "கருத்தைச் சமர்ப்பிக்கவும்",
        "feedback-thanks": "நன்றி! உங்கள் கருத்துகள் \"[$2 $1]\" பக்கத்தில்பதிவு செய்யப்பட்டுள்ளது .",
-       "feedback-close": "முடிந்தது",
-       "feedback-bugcheck": "சிறப்பு! அது ஏற்கனவே  [ $1 தெரிந்த  bugs ] என்பதை மட்டும்  சரிபார்க்கவும்,",
-       "feedback-bugnew": "நான் சரிபார்த்தாயிற்று. புதிய bug பற்றி கூறு.",
        "searchsuggest-search": "தேடு",
        "searchsuggest-containing": "கொண்டுள்ளது...",
        "api-error-badaccess-groups": "இந்த விக்கிக்குக் கோப்புகளைப் பதிவேற்றுவதற்கு நீங்கள் அனுமதிக்கப்படவில்லை.",
index a90d3ef..79d47e3 100644 (file)
        "logentry-rights-autopromote": "$1, $4 నుండి $5 కు ఆటోమేటిగ్గా {{GENDER:$2|ప్రమోటు చెయ్యబడ్డారు}}",
        "rightsnone": "(ఏమీలేవు)",
        "revdelete-summary": "మార్పు సంగ్రహం",
+       "feedback-adding": "ఫీడ్‍బ్యాకును పేజీలోకి చేరుస్తున్నాం...",
+       "feedback-bugcheck": "అద్భుతం! ఇది ఇప్పటికే [$1 తెలిసిన బగ్గుల]లో లేదని సరిచూసుకోండి.",
+       "feedback-bugnew": "చూసాను. కొత్త బగ్గును నివేదించు",
        "feedback-bugornote": "ఏదైనా సాంకేతిక సమస్యను మీరు వివరించదలిస్తే [$1 లోపంపై ఫిర్యాదు చెయ్యండి].\nలేదంటే, కింద ఉన్న సులువైన ఫారాన్ని వాడండి. మీ వ్యాఖ్య మీ వాడుకరిపేరుతో సహా  \"[$3 $2]\" పేజీలో చేర్చబడుతుంది.",
-       "feedback-subject": "విషయం:",
-       "feedback-message": "సందేశం:",
        "feedback-cancel": "రద్దుచేయి",
-       "feedback-submit": "ప్రతిస్పందనను దాఖలుచేయి",
-       "feedback-adding": "ఫీడ్‍బ్యాకును పేజీలోకి చేరుస్తున్నాం...",
+       "feedback-close": "పూర్తయ్యింది",
        "feedback-error1": "లోపం: API నుండి గుర్తుపట్టలేని ఫలితం",
        "feedback-error2": "దోషము: సవరణ విఫలమైంది",
        "feedback-error3": "లోపం: API నుండి ప్రతిస్పందన లేదు",
+       "feedback-message": "సందేశం:",
+       "feedback-subject": "విషయం:",
+       "feedback-submit": "ప్రతిస్పందనను దాఖలుచేయి",
        "feedback-thanks": "కృతజ్ఞతలు! మీ ప్రతిస్పందనను “[$2 $1]” పేజీలో చేర్చాం.",
-       "feedback-close": "పూర్తయ్యింది",
-       "feedback-bugcheck": "అద్భుతం! ఇది ఇప్పటికే [$1 తెలిసిన బగ్గుల]లో లేదని సరిచూసుకోండి.",
-       "feedback-bugnew": "చూసాను. కొత్త బగ్గును నివేదించు",
        "searchsuggest-search": "వెతుకు",
        "searchsuggest-containing": "కలిగియున్న...",
        "api-error-badaccess-groups": "ఈ వికీ లోనికి దస్త్రాలను ఎక్కించే అనుమతి మీకు లేదు.",
index 0197a72..9995f12 100644 (file)
        "revdelete-unrestricted": "маҳдудиятҳо аз мудирон бардошта шуданд",
        "rightsnone": "(ҳеҷ)",
        "revdelete-summary": "вироиши хулоса",
-       "feedback-subject": "Мавзӯъ:",
-       "feedback-message": "Пайём:",
        "feedback-cancel": "Лағв",
-       "feedback-submit": "Ирсоли Пешниҳод",
        "feedback-close": "Анҷом шуд.",
+       "feedback-message": "Пайём:",
+       "feedback-subject": "Мавзӯъ:",
+       "feedback-submit": "Ирсоли Пешниҳод",
        "expandtemplates": "Бастдодани шаблонҳо",
        "expand_templates_intro": "Ин саҳифаи вижа матнеро дарёфт карда ва тамоми шаблонҳои ба кор рафта дар онро ба таври бозгаште баст медиҳад. Ҳамчунин тобеҳои таҷзеҳ\n<nowiki>{{</nowiki>#language:...}}, ва мутағйирҳое чун\n<nowiki>{{</nowiki>CURRENTDAY}}&mdash;ро ҳам баст медиҳад – дар воқеъ тақрибан ҳар чиро ки дохили ду акулот бошад.\nИн кор бо садо задани марҳилаи таҷзеҳи марбут дар худи МедиаВики сурат мегирад.",
        "expand_templates_title": "Унвони мавзӯъ, барои {{FULLPAGENAME}} ва ғайра.:",
index 917f0c2..52ff536 100644 (file)
        "createacct-imgcaptcha-ph": "กรอกข้อความที่คุณเห็นด้านบน",
        "createacct-submit": "สร้างบัญชีของคุณ",
        "createacct-another-submit": "สร้างอีกบัญชี",
-       "createacct-benefit-heading": "{{SITENAME}}สรà¹\89าà¸\87à¸\82ึà¹\89à¸\99à¸\88าà¸\81à¸\84à¸\99à¹\80à¸\8aà¹\88à¸\99à¸\84ุà¸\93",
+       "createacct-benefit-heading": "{{SITENAME}}สร้างจากคนเช่นคุณ",
        "createacct-benefit-body1": "$1 การแก้ไข",
        "createacct-benefit-body2": "$1 หน้า",
        "createacct-benefit-body3": "$1 ผู้ร่วมเขียนล่าสุด",
        "subject": "เรื่อง/พาดหัว:",
        "minoredit": "เป็นการแก้ไขเล็กน้อย",
        "watchthis": "เฝ้าดูหน้านี้",
-       "savearticle": "บันทึก",
+       "savearticle": "บันทึกหน้า",
        "preview": "ตัวอย่าง",
        "showpreview": "แสดงตัวอย่าง",
-       "showdiff": "à¹\81สà¸\94à¸\87à¸\84วามเปลี่ยนแปลง",
+       "showdiff": "à¹\81สà¸\94à¸\87à¸\81ารเปลี่ยนแปลง",
        "blankarticle": "<strong>คำเตือน:</strong> หน้าที่คุณกำลังสร้างว่าง หากคุณคลิก \"{{int:savearticle}}\" อีกครั้ง จะสร้างหน้าโดยไม่มีเนื้อหาใด",
        "anoneditwarning": "<strong>คำเตือน:</strong> คุณมิได้ล็อกอิน สาธารณะจะเห็นเลขที่อยู่ไอพีของคุณหากคุณแก้ไข หากคุณ<strong>[$1 ล็อกอิน]</strong>หรือ<strong>[$2 สร้างบัญชี]</strong> การแก้ไขของคุณจะถือว่าเป็นของชื่อผู้ใช้ของคุณ ร่วมกับประโยชน์อื่น",
        "anonpreviewwarning": "<em>คุณมิได้ล็อกอิน การบันทึกจะเก็บเลขที่อยู่ไอพีของคุณในประวัติการแก้ไขของหน้านี้</em>",
        "shown-title": "แสดง $1 ผลลัพธ์ต่อหน้า",
        "viewprevnext": "ดู ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "<strong>มีหน้าชื่อ \"[[:$1]]\" บนวิกินี้</strong>\n{{PLURAL:$2|0=|ดูผลการค้นหาอื่นที่พบเพิ่มเติม}}",
-       "searchmenu-new": "<strong>สรà¹\89าà¸\87หà¸\99à¹\89า \"[[:$1]]\" à¸\9aà¸\99วิà¸\81ิà¸\99ีà¹\89!</strong> {{PLURAL:$2|0=|à¸\94ูหà¸\99à¹\89าà¸\97ีà¹\88à¸\9eà¸\9aà¸\94à¹\89วยà¸\81ารà¸\84à¹\89à¸\99หาà¸\82อà¸\87à¸\84ุà¸\93|à¸\94ูà¸\9cลà¸\81ารà¸\84à¹\89à¸\99หาà¸\97ีà¹\88à¸\9eà¸\9aà¹\80à¸\9eิà¹\88มà¹\80à¸\95ิม}}",
+       "searchmenu-new": "<strong>สรà¹\89าà¸\87หà¸\99à¹\89า \"[[:$1]]\" à¸\9aà¸\99วิà¸\81ิà¸\99ีà¹\89!</strong> {{PLURAL:$2|0=|à¸\94ูหà¸\99à¹\89าà¸\97ีà¹\88à¸\81ารà¸\84à¹\89à¸\99หาà¸\82อà¸\87à¸\84ุà¸\93à¸\9eà¸\9aà¹\80à¸\9eิà¹\88ม|à¸\94ูà¸\9cลà¸\81ารà¸\84à¹\89à¸\99หาà¸\97ีà¹\88à¸\9eà¸\9aà¹\80à¸\9eิà¹\88ม}}",
        "searchprofile-articles": "หน้าเนื้อหา",
        "searchprofile-images": "สื่อประสม",
        "searchprofile-everything": "ทุกอย่าง",
        "recentchanges-feed-description": "ติดตามการปรับปรุงล่าสุดในวิกินี้ในฟีดนี้",
        "recentchanges-label-newpage": "การแก้ไขนี้สร้างหน้าใหม่",
        "recentchanges-label-minor": "เป็นการแก้ไขเล็กน้อย",
-       "recentchanges-label-bot": "à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\99ีà¹\89à¸\81ระà¸\97ำà¹\82à¸\94ยà¸\9aอà¸\95",
+       "recentchanges-label-bot": "à¸\9aอà¸\95à¸\81ระà¸\97ำà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\99ีà¹\89",
        "recentchanges-label-unpatrolled": "การแก้ไขนี้ยังไม่ได้ตรวจสอบ",
-       "recentchanges-label-plusminus": "à¸\82à¸\99าà¸\94à¸\82อà¸\87หà¸\99à¹\89าà¹\80à¸\9bลีà¹\88ยà¸\99à¹\84à¸\9bà¸\94à¹\89วยà¸\88ำà¸\99วà¸\99à¹\84à¸\9aà¸\95à¹\8cà¹\80à¸\97à¹\88าà¸\99ีà¹\89",
+       "recentchanges-label-plusminus": "ขนาดของหน้าเปลี่ยนไปจำนวนไบต์เท่านี้",
        "recentchanges-legend-heading": "'''คำอธิบายสัญลักษณ์:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ดูเพิ่มที่ [[Special:NewPages|รายชื่อหน้าใหม่]])",
        "rcnotefrom": "ด้านล่างเป็นการเปลี่ยนแปลงตั้งแต่ <strong>$3, $4</strong> (แสดงมากสุด <strong>$1</strong>)",
        "listfiles-latestversion-no": "ไม่",
        "file-anchor-link": "ไฟล์",
        "filehist": "ประวัติไฟล์",
-       "filehist-help": "à¸\81à¸\94à¹\80ลือà¸\81วัà¸\99/เวลาเพื่อดูไฟล์ที่ปรากฏในขณะนั้น",
+       "filehist-help": "à¸\84ลิà¸\81วัà¸\99à¸\97ีà¹\88/เวลาเพื่อดูไฟล์ที่ปรากฏในขณะนั้น",
        "filehist-deleteall": "ลบทั้งหมด",
        "filehist-deleteone": "ลบ",
        "filehist-revert": "ย้อน",
        "filehist-current": "ปัจจุบัน",
-       "filehist-datetime": "วัน/เวลา",
+       "filehist-datetime": "วันที่/เวลา",
        "filehist-thumb": "รูปย่อ",
        "filehist-thumbtext": "รูปย่อสำหรับรุ่นเมื่อ $1",
        "filehist-nothumb": "ไม่มีรูปย่อ",
        "filehist-filesize": "ขนาดไฟล์",
        "filehist-comment": "ความเห็น",
        "imagelinks": "การใช้ไฟล์",
-       "linkstoimage": "มี $1 หน้าเชื่อมโยงมายังไฟล์นี้:",
+       "linkstoimage": "$1 หน้าต่อไปนี้โยงมาไฟล์นี้:",
        "linkstoimage-more": "มีหน้าเชื่อมโยงมาไฟล์นี้กว่า $1 หน้า\nรายการต่อไปนี้แสดงการเชื่อมโยง $1 หน้าแรกที่มายังไฟล์นี้เท่านั้น\nมี[[Special:WhatLinksHere/$2|รายการเต็ม]]",
        "nolinkstoimage": "ไม่มีหน้าเชื่อมโยงมายังไฟล์นี้",
        "morelinkstoimage": "ดู[[Special:WhatLinksHere/$1|การเชื่อมโยง]]มายังไฟล์นี้เพิ่มเติม",
        "allpagesto": "แสดงหน้าจบที่:",
        "allarticles": "หน้าทั้งหมด",
        "allinnamespace": "หน้าทั้งหมด (เนมสเปซ $1)",
-       "allpagessubmit": "à¸\94ู",
+       "allpagessubmit": "à¹\84à¸\9b",
        "allpagesprefix": "แสดงหน้าที่ขึ้นต้นด้วย:",
        "allpagesbadtitle": "ชื่อเรื่องนี้ไม่ถูกต้องหรือมีคำเติมหน้าข้ามภาษาหรือข้ามโครงการ \nอาจมีอักขระที่ไม่สามารถใช้ในชื่อเรื่องได้",
        "allpages-bad-ns": "{{SITENAME}} ไม่มีเนมสเปซ \"$1\"",
        "whatlinkshere-prev": "{{PLURAL:$1|ก่อนหน้า|ก่อนหน้า $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|ถัดไป|ถัดไป $1}}",
        "whatlinkshere-links": "← ลิงก์",
-       "whatlinkshere-hideredirs": "$1หà¸\99à¹\89าเปลี่ยนทาง",
+       "whatlinkshere-hideredirs": "$1à¸\81ารเปลี่ยนทาง",
        "whatlinkshere-hidetrans": "$1 ถูกรวมอยู่",
        "whatlinkshere-hidelinks": "$1 ลิงก์",
        "whatlinkshere-hideimages": "$1ลิงก์ไฟล์",
        "tooltip-pt-mytalk": "หน้าพูดคุยของคุณ",
        "tooltip-pt-anontalk": "อภิปรายเกี่ยวกับการแก้ไขจากเลขที่อยู่ไอพีนี้",
        "tooltip-pt-preferences": "การตั้งค่าของคุณ",
-       "tooltip-pt-watchlist": "รายà¸\81ารหà¸\99à¹\89าà¸\97ีà¹\88à¸\84ุà¸\93à¹\80à¸\9dà¹\89าà¸\94ูà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82",
+       "tooltip-pt-watchlist": "รายà¸\81ารหà¸\99à¹\89าà¸\97ีà¹\88à¸\84ุà¸\93à¸\81ำลัà¸\87à¹\80à¸\9dà¹\89าà¸\94ูà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81ลà¸\9bà¸\87",
        "tooltip-pt-mycontris": "รายการหน้าที่คุณเขียน",
        "tooltip-pt-login": "ไม่จำเป็นต้องล็อกอิน แต่แนะนำอย่างยิ่งให้ล็อกอิน",
        "tooltip-pt-logout": "ล็อกเอาต์",
        "tooltip-t-recentchangeslinked": "รายการปรับปรุงล่าสุดในหน้าที่ลิงก์จากหน้านี้",
        "tooltip-feed-rss": "ฟีดชนิดอาร์เอสเอส (RSS) ของหน้านี้",
        "tooltip-feed-atom": "ฟีดอะตอม (Atom) ของหน้านี้",
-       "tooltip-t-contributions": "รายà¸\81ารà¹\80รืà¹\88อà¸\87à¸\97ีà¹\88à¹\80à¸\82ียà¸\99à¹\82à¸\94ยà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\99ีà¹\89",
+       "tooltip-t-contributions": "รายà¸\81ารà¹\80รืà¹\88อà¸\87à¸\97ีà¹\88à¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\99ีà¹\89à¹\80à¸\82ียà¸\99",
        "tooltip-t-emailuser": "ส่งอีเมลถึงผู้ใช้นี้",
        "tooltip-t-info": "สารสนเทศเพิ่มเติมเกี่ยวกับหน้านี้",
        "tooltip-t-upload": "อัปโหลดไฟล์",
        "svg-long-desc-animated": "ไฟล์ SVG ขนาด $1 x $2 ขนาดไฟล์ $3",
        "svg-long-error": "ไฟล์ SVG ไม่ถูกต้อง: $1",
        "show-big-image": "ไฟล์ต้นฉบับ",
-       "show-big-image-preview": "ขนาดของตัวอย่างนี้คือ $1",
-       "show-big-image-other": "{{PLURAL:$2|ขนาด|ขนาด}}อื่น ๆ: $1",
+       "show-big-image-preview": "ขนาดของตัวอย่างนี้: $1",
+       "show-big-image-other": "ความละเอียดอื่น: $1",
        "show-big-image-size": "$1 × $2 พิกเซล",
        "file-info-gif-looped": "วนซ้ำ",
        "file-info-gif-frames": "$1 {{PLURAL:$1|เฟรม|เฟรม}}",
        "yesterday-at": "เมื่อวานเมื่อ $1 น.",
        "bad_image_list": "รูปแบบแสดงต่อไปนี้:\n\nเฉพาะรายการที่แสดง (ในแถวขึ้นต้นด้วย *) โดยลิงก์แรกของแต่ละแถวเป็นลิงก์ไปยังภาพที่เสีย\nโดยลิงก์ถัดไปเป็นข้อยกเว้น เช่น บทความที่ภาพถูกจัดในบรรทัดเดียวกับส่วนข้อความ",
        "metadata": "ข้อมูลแนบ",
-       "metadata-help": "à¹\84à¸\9fลà¹\8cà¸\99ีà¹\89มีà¸\82à¹\89อมูลà¹\80à¸\9eิà¹\88มà¹\80à¸\95ิมà¹\81à¸\99à¸\9aà¹\84วà¹\89 à¸­à¸²à¸\88à¸\88ะมาà¸\88าà¸\81 à¸\81ลà¹\89อà¸\87à¸\94ิà¸\88ิà¸\97ัล à¸ªà¹\81à¸\81à¸\99à¹\80à¸\99อรà¹\8c à¸«à¸£à¸·à¸­à¹\80à¸\84รืà¹\88อà¸\87รัà¸\9aสà¹\88à¸\87à¸\88ีà¸\9eีà¹\80อส à¸­à¸¢à¹\88าà¸\87à¹\84รà¸\81à¹\87à¸\95ามà¸\82à¹\89อมูลà¸\97ีà¹\88à¹\80à¸\81à¹\87à¸\9aà¹\84วà¹\89อาà¸\88à¸\96ูà¸\81à¸\94ัà¸\94à¹\81à¸\9bลà¸\87à¸\96à¹\89าà¹\84à¸\9fลà¹\8cà¸\95à¹\89à¸\99à¸\89à¸\9aัà¸\9aà¸\96ูà¸\81à¹\81à¸\81à¹\89à¹\84à¸\82à¸\88าà¸\81à¸\8bอà¸\9fà¸\95à¹\8cà¹\81วรà¹\8cอืà¹\88à¸\99",
+       "metadata-help": "à¹\84à¸\9fลà¹\8cà¸\99ีà¹\89มีสารสà¸\99à¹\80à¸\97ศà¹\80à¸\9eิà¹\88มà¹\80à¸\95ิม à¸­à¸²à¸\88à¹\80à¸\9eิà¹\88มà¸\88าà¸\81à¸\81ลà¹\89อà¸\87à¸\96à¹\88ายรูà¸\9bà¸\94ิà¸\88ิà¸\97ัลหรือสà¹\81à¸\81à¸\99à¹\80à¸\99อรà¹\8cà¸\97ีà¹\88à¹\83à¸\8aà¹\89à¹\80à¸\9eืà¹\88อสรà¹\89าà¸\87หรือà¹\81à¸\9bลà¸\87ภาà¸\9eà¹\80à¸\9bà¹\87à¸\99à¸\94ิà¸\88ิà¸\97ัล\nหาà¸\81à¹\84à¸\9fลà¹\8cà¸\99ีà¹\89à¸\96ูà¸\81à¸\94ัà¸\94à¹\81à¸\9bรà¸\88าà¸\81สà¸\96าà¸\99ะà¸\95à¹\89à¸\99à¸\89à¸\9aัà¸\9a à¸£à¸²à¸¢à¸¥à¸°à¹\80อียà¸\94à¸\9aาà¸\87อยà¹\88าà¸\87อาà¸\88à¹\84มà¹\88สะà¸\97à¹\89อà¸\99à¹\84à¸\9fลà¹\8cà¸\97ีà¹\88à¸\96ูà¸\81à¸\94ัà¸\94à¹\81à¸\9bลอยà¹\88าà¸\87สมà¸\9aูรà¸\93à¹\8c",
        "metadata-expand": "แสดงรายละเอียดขยาย",
        "metadata-collapse": "ซ่อนรายละเอียดขยาย",
        "metadata-fields": "เขตข้อมูลเมทาเดตาของภาพดังที่แสดงรายการไว้ในข้อความนี้ จะถูกรวมบนหน้าภาพเมื่อตารางเมทาเดตาถูกยุบ เขตข้อมูลอื่น ๆ จะถูกซ่อนโดยปริยาย\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-datetime": "วันที่และเวลาเปลี่ยนไฟล์",
        "exif-imagedescription": "ชื่อภาพ",
        "exif-make": "ผู้ผลิตกล้อง",
-       "exif-model": "รุ่นกล้อง",
+       "exif-model": "รุ่นกล้องถ่ายรูป",
        "exif-software": "ซอฟต์แวร์ที่ใช้",
        "exif-artist": "ผู้สร้างสรรค์",
        "exif-copyright": "ผู้ทรงลิขสิทธิ์",
        "exif-usercomment": "ความเห็นผู้ใช้",
        "exif-relatedsoundfile": "ไฟล์เสียงที่เกี่ยวข้อง",
        "exif-datetimeoriginal": "วันที่และเวลาการก่อกำเนิดข้อมูล",
-       "exif-datetimedigitized": "วัà¸\99à¸\97ีà¹\88à¹\81ละà¹\80วลาà¸\97ีà¹\88à¸\94ิà¸\88ิà¹\84à¸\97à¸\8bà¹\8c",
+       "exif-datetimedigitized": "วัà¸\99à¸\97ีà¹\88à¹\81ละà¹\80วลาà¸\81ารà¹\81à¸\9bลà¸\87à¹\80à¸\9bà¹\87à¸\99à¸\94ิà¸\88ิà¸\97ัล",
        "exif-subsectime": "เสี้ยววินาที วันที่ เวลา",
        "exif-subsectimeoriginal": "เสี้ยววินาที วันที่ เวลาต้นฉบับ",
        "exif-subsectimedigitized": "เสี้ยววินาที วันที่ เวลาที่ดิจิไทซ์",
        "logentry-patrol-patrol": "$1 ทำเครื่องหมายว่ารุ่น $4 ของหน้า $3 ได้รับการตรวจสอบแล้ว",
        "logentry-patrol-patrol-auto": "$1 ทำเครื่องหมายโดยอัตโนมัติว่ารุ่น $4 ของหน้า $3 ได้รับการตรวจสอบแล้ว",
        "logentry-newusers-newusers": "บัญชีผู้ใช้ $1 ถูกสร้าง",
-       "logentry-newusers-create": "บัญชีผู้ใช้ $1 ถูกสร้างขึ้น",
+       "logentry-newusers-create": "บัญชีผู้ใช้ $1 ถูกสร้าง",
        "logentry-newusers-create2": "บัญชีผู้ใช้ $3 ถูกสร้างขึ้นโดย $1",
        "logentry-newusers-byemail": "บัญชีผู้ใช้ $3 ถูกสร้างขึ้นโดย $1 และส่งรหัสผ่านไปทางอีเมลแล้ว",
        "logentry-newusers-autocreate": "บัญชีผู้ใช้ $1 ถูกสร้างขึ้นอัตโนมัติ",
        "logentry-upload-revert": "$1 อัปโหลด $3",
        "rightsnone": "(ไม่มี)",
        "revdelete-summary": "คำอธิบายโดยย่อ",
+       "feedback-adding": "เพิ่มคำติชมเข้าไปที่หน้า...",
+       "feedback-bugcheck": "ยอดเยี่ยม! เพียงตรวจสอบว่าจุดบกพร่องนั้นมิใช่หนึ่งใน[$1 จุดบกพร่องที่ทราบแล้ว]",
+       "feedback-bugnew": "ฉันตรวจสอบแล้ว รายงานจุดบกพร่องใหม่",
        "feedback-bugornote": "หากคุณได้อธิบายปัญหาทางเทคนิคในรายละเอียดแล้ว โปรด[$1 รายงานจุดบกพร่อง]\nมิฉะนั้น คุณสามารถแบบอย่างง่ายด้านล่าง ความเห็นของคุณจะถูกเพิ่มเข้าสู่ \"[$3 $2]\" ร่วมกับชื่อผู้ใช้ของคุณ",
-       "feedback-subject": "เรื่อง:",
-       "feedback-message": "ข้อความ:",
        "feedback-cancel": "ยกเลิก",
+       "feedback-close": "เสร็จสิ้น",
+       "feedback-message": "ข้อความ:",
+       "feedback-subject": "เรื่อง:",
        "feedback-submit": "ส่งคำติชม",
-       "feedback-adding": "เพิ่มคำติชมเข้าไปที่หน้า...",
        "feedback-thanks": "ขอบคุณ! ผลป้อนกลับของคุณถูกโพสต์ไปยังหน้า \"[$2 $1]\" แล้ว",
-       "feedback-close": "เสร็จสิ้น",
-       "feedback-bugcheck": "ยอดเยี่ยม! เพียงตรวจสอบว่าจุดบกพร่องนั้นมิใช่หนึ่งใน[$1 จุดบกพร่องที่ทราบแล้ว]",
-       "feedback-bugnew": "ฉันตรวจสอบแล้ว รายงานจุดบกพร่องใหม่",
        "searchsuggest-search": "ค้นหา",
        "searchsuggest-containing": "มี...",
        "api-error-badaccess-groups": "คุณไม่ได้รับอนุญาตให้อัปโหลดไฟล์มายังวิกินี้",
index 7c119c1..77161d2 100644 (file)
        "logentry-newusers-autocreate": "Automatikong {{GENDER:$2|inilikha}} ang account ng tagagamit na $1",
        "rightsnone": "(wala)",
        "revdelete-summary": "buod ng pagbabago",
+       "feedback-adding": "Idinaragdag ang pakaing-tugon sa pahina...",
+       "feedback-bugcheck": "Mahusay! Suriin lang na hindi pa ito isa sa [$1 nalalamang mga depekto].",
+       "feedback-bugnew": "Sinuri ko na. Mag-ulat ng panibagong sira",
        "feedback-bugornote": "Kung handa ka nang detalyadong maglarawan ng isang suliraning teknikal mangyaring [$1 iulat ang kamalian].\nO kaya, maaari mo ring gamitin ang pinadaling pormularyo sa ibaba.  Madadagdagan ang komento mo sa pahinang \"[$3 $2]\", kasama ang iyong pangalan ng tagagamit.",
-       "feedback-subject": "Paksa:",
-       "feedback-message": "Mensahe:",
        "feedback-cancel": "Huwag ituloy",
-       "feedback-submit": "Magbigay ng komento",
-       "feedback-adding": "Idinaragdag ang pakaing-tugon sa pahina...",
+       "feedback-close": "Nagawa na",
        "feedback-error1": "Kamalian: Hindi nakikilalang kinalabasan mula sa API",
        "feedback-error2": "Kamalian: Nabigo ang pagpatnugot",
        "feedback-error3": "Kamalian: Walang tugon mula sa API",
+       "feedback-message": "Mensahe:",
+       "feedback-subject": "Paksa:",
+       "feedback-submit": "Magbigay ng komento",
        "feedback-thanks": "Salamat! Ang katugunan mo ay naipaskil na sa pahinang \"[$2 $1]\".",
-       "feedback-close": "Nagawa na",
-       "feedback-bugcheck": "Mahusay! Suriin lang na hindi pa ito isa sa [$1 nalalamang mga depekto].",
-       "feedback-bugnew": "Sinuri ko na. Mag-ulat ng panibagong sira",
        "searchsuggest-search": "Maghanap",
        "searchsuggest-containing": "naglalaman ng ...",
        "api-error-badaccess-groups": "Hindi ka pinapayagang makapagkarga ng mga talaksan papunta sa wiking ito.",
index fee88fb..f5b6c84 100644 (file)
        "logentry-upload-overwrite": "$1 $3 dosyasının yeni bir sürümünü {{GENDER:$2|yükledi}}",
        "rightsnone": "(hiçbiri)",
        "revdelete-summary": "değişiklik özeti",
+       "feedback-adding": "Sayfaya geribildirim ekleniyor...",
+       "feedback-bugcheck": "Harika! Sadece [bilinen $1 hatalarından] olmadığını kontrol et.",
+       "feedback-bugnew": "Kontrol ettim. Yeni hata bildir",
        "feedback-bugornote": "Eğer teknik bir problemi detaylarıyla açıklamaya hazırsanız lütfen [$1 bir hata raporlayın]. Diğer taraftan, aşağıdaki kolay formu kullanabilirsiniz. Yorumunuz, kullanıcı adınızla beraber \"[$3 $2]\" sayfasına eklenecektir.",
-       "feedback-subject": "Konu:",
-       "feedback-message": "Mesaj:",
        "feedback-cancel": "İptal",
-       "feedback-submit": "Geribildirimi Gönder",
-       "feedback-adding": "Sayfaya geribildirim ekleniyor...",
+       "feedback-close": "Tamamlandı",
        "feedback-error1": "Hata: Bilinmeyen API sonucu",
        "feedback-error2": "Hata: Düzenleme başarısız oldu",
        "feedback-error3": "Hata: API'den yanıt yok",
+       "feedback-message": "Mesaj:",
+       "feedback-subject": "Konu:",
+       "feedback-submit": "Geribildirimi Gönder",
        "feedback-thanks": "Teşekkürler! Görüşleriniz \"[$2 $1]\" sayfasında paylaşılmıştır.",
-       "feedback-close": "Tamamlandı",
-       "feedback-bugcheck": "Harika! Sadece [bilinen $1 hatalarından] olmadığını kontrol et.",
-       "feedback-bugnew": "Kontrol ettim. Yeni hata bildir",
        "searchsuggest-search": "Ara",
        "searchsuggest-containing": "içeren...",
        "api-error-badaccess-groups": "Bu wiki için dosya yüklemenize izin verilmiyor.",
index 64aa1e6..10942fc 100644 (file)
        "logentry-rights-autopromote": "$1 نىڭ ئىشلەتكۈچى گۇرۇپپىسى ئۆزلۈكىدىن $4 دىن $5 غا يۈكسەلدى",
        "rightsnone": "(يوق)",
        "revdelete-summary": "ئۈزۈندە تەھرىرلە",
+       "feedback-adding": "قايتۇرما ئىنكاسنى بەتكە قوشۇۋاتىدۇ…",
+       "feedback-bugcheck": "قالتىس! كەمتۈكنىڭ ئاللىبۇرۇن يوللانغان [$1 مەلۇملۇق كەمتۈك] ياكى ئەمەسلىكىنى تەكشۈرۈڭ.",
+       "feedback-bugnew": "تەكشۈردۈم. يېڭى بىر كەمتۈك دوكلات قىل",
        "feedback-bugornote": "ئەگەر بىر تېخنىكىلىق مەسىلىنى تەپسىلىي بايان قىلىشقا تەييارلانماقچى بولسىڭىز، [$1 خاتالىق دوكلات]ى يوللاڭ. ياكى تۆۋەندىكى ئاددىي جەدۋەلنى ئىشلىتىڭ. ئىنكاسىڭىز \"[$3 $2]\" بەتكە قوشۇلىدۇ، ئىشلەتكۈچى ئاتىڭىز ۋە ئىشلەتكەن توركۆرگۈڭىز قوشۇپ قويۇلىدۇ.",
-       "feedback-subject": "تېما:",
-       "feedback-message": "ئۇچۇر:",
        "feedback-cancel": "ۋاز كەچ",
-       "feedback-submit": "قايتۇرما ئىنكاس يوللا",
-       "feedback-adding": "قايتۇرما ئىنكاسنى بەتكە قوشۇۋاتىدۇ…",
+       "feedback-close": "تامام",
        "feedback-error1": "خاتالىق: API دىن كەلگەن تونۇيالمايدىغان نەتىجە",
        "feedback-error2": "خاتا:تەھرىرلەش مەغلۇپ بولدى",
        "feedback-error3": "خاتالىق: API دىن ئىنكاس يوق",
+       "feedback-message": "ئۇچۇر:",
+       "feedback-subject": "تېما:",
+       "feedback-submit": "قايتۇرما ئىنكاس يوللا",
        "feedback-thanks": "كۆپ رەھمەت! قايتۇرما ئىنكاسىڭىز \"[$2 $1]\" بەتكە يوللاندى.",
-       "feedback-close": "تامام",
-       "feedback-bugcheck": "قالتىس! كەمتۈكنىڭ ئاللىبۇرۇن يوللانغان [$1 مەلۇملۇق كەمتۈك] ياكى ئەمەسلىكىنى تەكشۈرۈڭ.",
-       "feedback-bugnew": "تەكشۈردۈم. يېڭى بىر كەمتۈك دوكلات قىل",
        "searchsuggest-search": "ئىزدەش",
        "searchsuggest-containing": "ئىچىدە…",
        "api-error-badaccess-groups": "ھۆججەتنى بۇ ۋىكىغا يۈكلەش ھوقۇقىڭىز يوق.",
index cdd2b3c..8ad51b3 100644 (file)
@@ -56,7 +56,8 @@
                        "Andygol",
                        "Ypryima",
                        "Purodha",
-                       "Green Zero"
+                       "Green Zero",
+                       "Macofe"
                ]
        },
        "tog-underline": "Підкреслювання посилань:",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|вимкнув|вимкнула}} мітку «$4» для використання користувачами і ботами",
        "rightsnone": "(нема)",
        "revdelete-summary": "коментар до редагування",
+       "feedback-adding": "Додавання відгуку на сторінку ...",
+       "feedback-bugcheck": "Чудово! Просто перевірте, що це не одна з вже [$1 відомих помилок].",
+       "feedback-bugnew": "Я перевірив. Повідомити про нову помилку",
        "feedback-bugornote": "Якщо ви готові описати технічні проблеми в деталях, будь ласка, [$1 повідомте про помилку].\nАбо можете використати форму нижче. Ваш коментар буде додано на сторінку \"[$3  $2]\", разом з іменем користувача.",
-       "feedback-subject": "Тема:",
-       "feedback-message": "Повідомлення:",
        "feedback-cancel": "Скасувати",
-       "feedback-submit": "Надіслати відгук",
-       "feedback-adding": "Додавання відгуку на сторінку ...",
+       "feedback-close": "Виконано",
        "feedback-error1": "Помилка: Невідомий результаті API",
        "feedback-error2": "Помилка: Збій редагувань",
        "feedback-error3": "Помилка: Немає відповіді від API",
+       "feedback-message": "Повідомлення:",
+       "feedback-subject": "Тема:",
+       "feedback-submit": "Надіслати",
        "feedback-thanks": "Дякуємо! Ваші відгук розміщено на сторінці \"[$2 $1]\".",
-       "feedback-close": "Виконано",
-       "feedback-bugcheck": "Чудово! Просто перевірте, що це не одна з вже [$1 відомих помилок].",
-       "feedback-bugnew": "Я перевірив. Повідомити про нову помилку",
        "searchsuggest-search": "Пошук",
        "searchsuggest-containing": "що містять...",
        "api-error-badaccess-groups": "Вам не дозволено завантажувати файли до цього вікіпроекту.",
index b930c03..a9553cc 100644 (file)
        "logentry-rights-autopromote": "$1 {{GENDER:$2|el|la}} xe stà automategamente promoso/a da $4 a $5",
        "rightsnone": "(nissun)",
        "revdelete-summary": "modifica ogeto",
+       "feedback-adding": "Inserimento del feedback inte ła pàjina...",
+       "feedback-bugcheck": "Otimo! Verifega che nó 'l sia xà infrà i [$1 bug conosui].",
+       "feedback-bugnew": "Controło efetuà. Segnała un novo bug",
        "feedback-bugornote": "Se se xe in grado de descrivare el problema tenico riscontrà in maniera precixa, [$1 segnałare el bug]. In alternadiva, se pol doparar el moduło senplifegà cuà soto. El comento inserio el sarà xontà a ła pàjina \"[$3 $2]\", insieme al propio nome utente.",
-       "feedback-subject": "Ogeto:",
-       "feedback-message": "Messajo:",
        "feedback-cancel": "Anuła",
-       "feedback-submit": "Invia feedback",
-       "feedback-adding": "Inserimento del feedback inte ła pàjina...",
+       "feedback-close": "Fato",
        "feedback-error1": "Eror: Da ła API xe rivà un rexultà nó riconosùo",
        "feedback-error2": "Eror: Nó xe sta posibiłe exeguir ła modifega",
        "feedback-error3": "Errore: Nisuna risposta da ła API",
+       "feedback-message": "Messajo:",
+       "feedback-subject": "Ogeto:",
+       "feedback-submit": "Invia feedback",
        "feedback-thanks": "Grasie! El to feedback el xe sta publicà a ła pàjina \"[$2 $1]\".",
-       "feedback-close": "Fato",
-       "feedback-bugcheck": "Otimo! Verifega che nó 'l sia xà infrà i [$1 bug conosui].",
-       "feedback-bugnew": "Controło efetuà. Segnała un novo bug",
        "searchsuggest-search": "Serca",
        "searchsuggest-containing": "che contien...",
        "api-error-badaccess-groups": "Nó te si autorixà a cargar documenti so sta wiki.",
index 9c2cb03..36f1788 100644 (file)
        "revdelete-unrestricted": "kaidendused heittud administratoriden täht",
        "rightsnone": "(ei ole)",
        "revdelete-summary": "kaik toižetused",
-       "feedback-subject": "Tem:",
-       "feedback-message": "Tedotuz:",
        "feedback-cancel": "Heitta pätand",
+       "feedback-close": "Vaumiž",
        "feedback-error2": "Petuz. Ei voi redaktiruida",
        "feedback-error3": "Petuz. API ei anda vastust",
-       "feedback-close": "Vaumiž",
+       "feedback-message": "Tedotuz:",
+       "feedback-subject": "Tem:",
        "searchsuggest-search": "Ectä",
        "searchsuggest-containing": "mülütajad...",
        "api-error-empty-file": "Teil oigetud fail om pall'az.",
index 57b76fd..0e4881b 100644 (file)
@@ -27,7 +27,8 @@
                        "아라",
                        "Tranquanganh",
                        "Max20091",
-                       "Dinhxuanduyet"
+                       "Dinhxuanduyet",
+                       "Macofe"
                ]
        },
        "tog-underline": "Gạch chân liên kết:",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|đã vô hiệu}} thẻ \"$4\" để sử dụng bởi người dùng và các bot",
        "rightsnone": "(không có)",
        "revdelete-summary": "tóm lược sửa đổi",
+       "feedback-adding": "Đang thêm thông tin phản hồi vào trang…",
+       "feedback-bugcheck": "Tuyệt! Chỉ cần kiểm tra nó chưa được [$1 báo cáo trước đây].",
+       "feedback-bugnew": "Tôi đã kiểm tra – báo cáo lỗi mới",
        "feedback-bugornote": "Nếu bạn đã sẵn sàng để miêu tả các chi tiết của một vấn đề kỹ thuật, xin vui lòng [$1 báo cáo lỗi].\nNếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới. Lời ghi của bạn sẽ được đăng lên trang “[$3 $2]”, cùng với tên người dùng và trình duyệt của bạn.",
-       "feedback-subject": "Tiêu đề:",
-       "feedback-message": "Thông điệp:",
        "feedback-cancel": "Hủy bỏ",
-       "feedback-submit": "Gửi phản hồi",
-       "feedback-adding": "Đang thêm thông tin phản hồi vào trang…",
+       "feedback-close": "Xong",
        "feedback-error1": "Hủy bỏ",
        "feedback-error2": "Lỗi: Sửa đổi thất bại",
        "feedback-error3": "Lỗi: API không có phản ứng",
+       "feedback-message": "Thông điệp:",
+       "feedback-subject": "Tiêu đề:",
+       "feedback-submit": "Gửi",
        "feedback-thanks": "Cảm ơn! Phản hồi của bạn đã được đăng lên trang “[$2 $1]”.",
-       "feedback-close": "Xong",
-       "feedback-bugcheck": "Tuyệt! Chỉ cần kiểm tra nó chưa được [$1 báo cáo trước đây].",
-       "feedback-bugnew": "Tôi đã kiểm tra – báo cáo lỗi mới",
        "searchsuggest-search": "Tìm kiếm",
        "searchsuggest-containing": "có chứa…",
        "api-error-badaccess-groups": "Bạn không được phép tải tập tin lên wiki này.",
index e76c71c..d2df113 100644 (file)
        "logentry-newusers-create2": "An gumaramit nga akawnt nga $3 {{GENDER:$2|ginhimo}} ni $1",
        "logentry-newusers-autocreate": "An gumaramit nga akawnt nga $1 in lugaring nga {{GENDER:$2|ginhimo}}",
        "rightsnone": "(waray)",
-       "feedback-subject": "Himangrawon:",
-       "feedback-message": "Mensahe:",
        "feedback-cancel": "Pasagdi",
-       "feedback-error2": "Sayop: Pakyas an pagliwat",
        "feedback-close": "Human na.",
+       "feedback-error2": "Sayop: Pakyas an pagliwat",
+       "feedback-message": "Mensahe:",
+       "feedback-subject": "Himangrawon:",
        "searchsuggest-search": "Pamilnga",
        "searchsuggest-containing": "nagsusulod. . .",
        "api-error-badaccess-groups": "Diri ka gintutugotan pagkarga paigbaw ha dinhi nga wiki.",
index 03b7754..8a1e925 100644 (file)
        "logentry-upload-upload": "$1 {{GENDER:$2|האט ארויפגעלאדן}} $3",
        "rightsnone": "(גארנישט)",
        "revdelete-summary": "רעדאקטירונג קיצור",
+       "feedback-adding": "צולייגן פֿידבעק צו בלאַט...",
+       "feedback-bugcheck": "געוואלדיק! אבער זייט בודק אז עס איז נישט איינער פון די [$1 באוואוסטע באגן].",
+       "feedback-bugnew": "כ'האב בודק געווען. רעפארטירט א נייעם באג.",
        "feedback-bugornote": "ווען איר זענט גרייט צו באשרייבן א טעכנישן פראבלעם ביטע [$1 מעלדט א פעלער].\nאנדערש, קענט איר ניצן די גרינגע פארעם אונטן. מען וועט צולייגן אייער הערה צום בלאט \"[$3 $2]\", צוזאמען מיט אייער באניצער נאמען און וועלכן בלעטערער איר ניצט.",
-       "feedback-subject": "טעמע:",
-       "feedback-message": "מעלדונג:",
        "feedback-cancel": "אַנולירן",
-       "feedback-submit": "ארײַנגעבן פֿידבעק",
-       "feedback-adding": "צולייגן פֿידבעק צו בלאַט...",
+       "feedback-close": "ערליידיקט",
        "feedback-error1": "טעות: אומבאַקאַנטער רעזולטאַט פון API",
        "feedback-error2": "טעות: רעדאַקטירן דורכפֿאַל",
        "feedback-error3": "טעות: קיין ענטפֿער פון API",
+       "feedback-message": "מעלדונג:",
+       "feedback-subject": "טעמע:",
+       "feedback-submit": "ארײַנגעבן פֿידבעק",
        "feedback-thanks": "ייש\"כ! אײַער פֿידבעק איז געווארן ארויפגעלעגט צום בלאט \"[$2 $1]\".",
-       "feedback-close": "ערליידיקט",
-       "feedback-bugcheck": "געוואלדיק! אבער זייט בודק אז עס איז נישט איינער פון די [$1 באוואוסטע באגן].",
-       "feedback-bugnew": "כ'האב בודק געווען. רעפארטירט א נייעם באג.",
        "searchsuggest-search": "זוכן",
        "searchsuggest-containing": "כולל…",
        "api-error-badaccess-groups": "איר האט נישט קיין רעכטן אַרויפֿלאָדן טעקעס אויף דער וויקי.",
index 4c0af82..bbad72d 100644 (file)
        "logentry-rights-autopromote": "$1 jẹ́ {{GENDER:$2|gbígbénípòga}} nífúnraẹni láti $4 sí $5",
        "rightsnone": "(kòsí)",
        "revdelete-summary": "àkótán àtúnṣe",
+       "feedback-adding": "Ìfikún ìdáhùn sí ojúewé...",
+       "feedback-bugcheck": "Ó dáa bẹ́ẹ̀! Ẹ rí pé kò í ṣe ìkan nínú [$1 àwọn ìsòrò tí a ti mọ̀ tẹ́lẹ̀].",
+       "feedback-bugnew": "Mo ti yẹ́wò. Fi ìsòrò sùn",
        "feedback-bugornote": "Tí ẹ bá ti ṣetán láti ṣàlàyé ìsòrò iṣẹ́ẹ̀rọ́ lẹ́ẹ̀kúnrẹ́rẹ́ ẹ jọ̀wọ́ [$1 ẹ sọ irú ìsòro náà]\nBíbẹ̀ẹ̀kọ́, ẹ le lo fọ́ọ̀mù ìsàlẹ̀. Ẹjọ́ yín yíò jẹ́ fífikún mọ́ ojúewé \"[$3 $2]\", bákannáà mọ́ orúkọ oníṣe yín.",
-       "feedback-subject": "Oríọ̀rọ̀:",
-       "feedback-message": "Ìránṣẹ́:",
        "feedback-cancel": "Fagilé",
-       "feedback-submit": "Ìfisílẹ̀ ìdáhùn",
-       "feedback-adding": "Ìfikún ìdáhùn sí ojúewé...",
+       "feedback-close": "Ṣetán",
        "feedback-error1": "Àsìṣe: Èsì aláìdámọ́ látọ̀dọ̀ API",
        "feedback-error2": "Àsìṣe: Àtúnṣe kùnà",
        "feedback-error3": "Àsìṣe: Kò sí ìdáhùn látọ̀dọ̀ API",
+       "feedback-message": "Ìránṣẹ́:",
+       "feedback-subject": "Oríọ̀rọ̀:",
+       "feedback-submit": "Ìfisílẹ̀ ìdáhùn",
        "feedback-thanks": "Adúpẹ́! Ìdáhùn yín ti jẹ́ fífikún sí ojúewé \"[$2 $1]\".",
-       "feedback-close": "Ṣetán",
-       "feedback-bugcheck": "Ó dáa bẹ́ẹ̀! Ẹ rí pé kò í ṣe ìkan nínú [$1 àwọn ìsòrò tí a ti mọ̀ tẹ́lẹ̀].",
-       "feedback-bugnew": "Mo ti yẹ́wò. Fi ìsòrò sùn",
        "searchsuggest-search": "Ṣàwárí",
        "searchsuggest-containing": "tó ní...",
        "api-error-badaccess-groups": "Ẹ kò ní àṣẹ láti ru fáìlì wọlé sí orí wiki yìí.",
index d19049c..d3fe6ba 100644 (file)
@@ -81,7 +81,8 @@
                        "TianyinLee",
                        "NigelSoft",
                        "Zhuyifei1999",
-                       "Davidzdh"
+                       "Davidzdh",
+                       "LNDDYL"
                ]
        },
        "tog-underline": "链接下划线:",
        "emailsent": "电子邮件已发送",
        "emailsenttext": "您的电子邮件已经发出。",
        "emailuserfooter": "本电子邮件是通过{{SITENAME}}的“电邮联系”功能被$1发送至$2的。",
-       "usermessage-summary": "留下系统息。",
+       "usermessage-summary": "留下系统息。",
        "usermessage-editor": "系统信息编辑器",
        "watchlist": "监视列表",
        "mywatchlist": "监视列表",
        "logentry-managetags-deactivate": "$1 {{GENDER:$2|停用了}}“$4”标签供用户和机器人使用",
        "rightsnone": "(无)",
        "revdelete-summary": "编辑摘要",
+       "feedback-adding": "正在添加反馈至页面...",
+       "feedback-back": "返回",
+       "feedback-bugcheck": "请检查本bug是否为[$1 已知bug]。",
+       "feedback-bugnew": "我检查了。报告新bug",
        "feedback-bugornote": "如果你准备好详细描述一个技术问题,请[$1 报告bug]。或者你可以使用下面的简单表格。你的评论将被添加至页面“[$3 $2]”,附有你的用户名。",
-       "feedback-subject": "主题:",
-       "feedback-message": "信息:",
        "feedback-cancel": "取消",
-       "feedback-submit": "提交反馈",
-       "feedback-adding": "正在添加反馈至页面...",
+       "feedback-close": "完成",
+       "feedback-external-bug-report-button": "提交技术报告",
+       "feedback-dialog-title": "发送反馈",
+       "feedback-dialog-intro": "您可以使用下面的简便表格提交您的反馈。您的评论将连同您的用户名一起加入至页面“$1”。",
+       "feedback-error-title": "错误",
        "feedback-error1": "错误:从API返回无法识别的结果",
        "feedback-error2": "错误:编辑失败",
        "feedback-error3": "错误:API没有响应",
+       "feedback-message": "信息:",
+       "feedback-subject": "主题:",
+       "feedback-submit": "提交",
+       "feedback-terms": "我理解我的用户代理信息包括有关我确切使用的浏览器和操作系统版本,并将在我的反馈旁公开分享。",
+       "feedback-termsofuse": "我同意依照使用条款提供反馈。",
        "feedback-thanks": "谢谢!你的反馈已发布至页面“[$2 $1]”。",
-       "feedback-close": "完成",
-       "feedback-bugcheck": "请检查本bug是否为[$1 已知bug]。",
-       "feedback-bugnew": "我检查了。报告新bug",
+       "feedback-thanks-title": "谢谢您!",
+       "feedback-useragent": "用户代理:",
        "searchsuggest-search": "搜索",
        "searchsuggest-containing": "含有...",
        "api-error-badaccess-groups": "您没有将文件上传到此 wiki 的权限。",
index 5ba0a9a..f43bca0 100644 (file)
@@ -89,9 +89,9 @@
        "tog-fancysig": "將簽名視為 Wikitext 語言 (不自動產生連結)",
        "tog-uselivepreview": "使用即時預覽",
        "tog-forceeditsummary": "未填寫編輯摘要時提示我",
-       "tog-watchlisthideown": "é\9a±è\97\8fç\9b£è¦\96æ¸\85å\96®ä¸­æ\88\91的編輯",
+       "tog-watchlisthideown": "é\9a±è\97\8fç\9b£è¦\96æ¸\85å\96®ä¸­æ\9c¬äºº的編輯",
        "tog-watchlisthidebots": "隱藏監視清單中機器人的編輯",
-       "tog-watchlisthideminor": "隱藏監視清單中的修訂",
+       "tog-watchlisthideminor": "隱藏監視清單中的細微修訂",
        "tog-watchlisthideliu": "隱藏監視清單中已登入使用者的編輯",
        "tog-watchlisthideanons": "隱藏監視清單中匿名使用者的編輯",
        "tog-watchlisthidepatrolled": "隱藏監視清單中已巡查的編輯",
        "deletethispage": "刪除此頁",
        "undeletethispage": "取消刪除此頁",
        "undelete_short": "取消刪除 $1 項修訂",
-       "viewdeleted_short": "檢視 $1 項已刪除的修訂",
+       "viewdeleted_short": "檢視 {{PLURAL:$1|1 項已刪除的修訂|$1 項已刪除的修訂}}",
        "protect": "保護",
        "protect_change": "變更",
        "protectthispage": "保護此頁面",
        "ns-specialprotected": "特殊頁面無法編輯。",
        "titleprotected": "此標題已經被 [[User:$1|$1]] 保護以防止建立,原因是 \"<em>$2</em>\"。",
        "filereadonlyerror": "無法修改檔案 \"$1\" 因為檔案庫 \"$2\" 目前處於唯讀模式。\n\n鎖定的管理員說明:\"$3\"。",
-       "invalidtitle-knownnamespace": "無效的標題,命名空間 \"$2\" 與名稱 \"$3\"",
-       "invalidtitle-unknownnamespace": "無效的標題,不明的命名空間編號 $1 與名稱 \"$2\"",
+       "invalidtitle-knownnamespace": "命名空間 \"$2\" 與名稱 \"$3\" 是無效的標題",
+       "invalidtitle-unknownnamespace": "不明的命名空間編號 $1 與名稱 \"$2\" 是無效的標題",
        "exception-nologin": "未登入",
        "exception-nologin-text": "請先登入以檢視或修改",
        "exception-nologin-text-manual": "請先 $1 以存取此頁面或操作。",
        "userlogin-helplink2": "登入協助",
        "userlogin-loggedin": "您目前已登入 {{GENDER:$1|$1}} 使用者,\n請使用下列表單改登入另一位使用者。",
        "userlogin-createanother": "建立另一個帳號",
-       "createacct-emailrequired": "電子郵件位址",
+       "createacct-emailrequired": "電子郵箱地址",
        "createacct-emailoptional": "電子郵件地址(選填)",
-       "createacct-email-ph": "輸入您的電子郵件地址",
+       "createacct-email-ph": "輸入您的電地址",
        "createacct-another-email-ph": "輸入電子郵件位址",
        "createaccountmail": "使用臨時的隨機密碼,並將它傳送到指定的電子郵件地址",
        "createacct-realname": "真實姓名 (選填)",
        "passwordremindertitle": "{{SITENAME}} 的新臨時密碼",
        "passwordremindertext": "不明人士 (可能是您自己,來自 IP 位址 $1) 要求重設在 {{SITENAME}} ($4) 的密碼。\n給使用者 \"$2\" 的臨時密碼設為 \"$3\"。\n如果這個動作是您做的,您需要立即登入並設定一個新的密碼,\n您的臨時密碼將於{{PLURAL:$5|一|$5}}天內過期。\n\n如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略此訊息並且繼續使用您原本的密碼。",
        "noemail": "使用者 \"$1\" 未登記電子郵件位址。",
-       "noemailcreate": "您需要提供一個有效的電子郵件位址。",
+       "noemailcreate": "您需要提供一個有效的電郵地址。",
        "passwordsent": "使用者 \"$1\" 的新密碼已寄至當出登記的電子郵件位址,\n請稍後收到信件後再登入。",
        "blocked-mailpassword": "您的 IP 位址已被封鎖不允許編輯,密碼復原的功能也同樣被禁止使用以防止被濫用。",
        "eauthentsent": "已寄出一封確認信到您所設定的電子郵件位址。\n在未收到其它電子郵件前,您必須先依照郵件中的指示,確認這個帳號確實是您本人。",
        "throttled-mailpassword": "密碼重設的電子郵件已經在最近 $1 小時內寄出。\n為防止濫用,$1 小時內只能寄出一次密碼重設信件。",
        "mailerror": "傳送電子郵件錯誤:$1",
        "acct_creation_throttle_hit": "使用您目前的 IP 位址的訪客在最近一天建立了 {{PLURAL:$1|1 個帳號|$1 個帳號}},已超出系統允許的上限。\n因此,目前無法讓使用此 IP 位址的訪客建立帳號。",
-       "emailauthenticated": "您的電子郵件位址已於 $2 $3 確認。",
-       "emailnotauthenticated": "您的電子郵件位址尚未確認,\n尚不會寄出以下功能的電子郵件給您。",
+       "emailauthenticated": "您的電子郵箱地址已於 $2 $3 確認。",
+       "emailnotauthenticated": "您的電郵地址尚未確認,\n尚不會寄出以下功能的電子郵件給您。",
        "noemailprefs": "在您的偏好設定中設定電子郵件位址,讓您可以使用這些功能。",
-       "emailconfirmlink": "確認您的電子郵件位址",
+       "emailconfirmlink": "確認您的電郵地址",
        "invalidemailaddress": "無法接受格式不正確的電子郵件地址,\n請輸入正確的電子郵件地址格式或略過填寫該欄位。",
        "cannotchangeemail": "此 Wiki 不允許更改帳號的電子郵件位址。",
        "emaildisabled": "此網站不能傳送電子郵件。",
        "accountcreated": "已建立帳號",
        "accountcreatedtext": "使用者帳號 [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|對話]]) 已建立。",
        "createaccount-title": "{{SITENAME}} 的帳號建立",
-       "createaccount-text": "不明人士使用您的電子郵件位址在 {{SITENAME}} ($4) 建立了一個帳號名稱為 \"$2\",密碼為 \"$3\"。\n您應該立即登入並更改密碼。\n\n如果該帳號是建立錯誤的話,您可以忽略此訊息。",
+       "createaccount-text": "不明人士使用您的電郵地址在 {{SITENAME}} ($4) 建立了一個帳號名稱為 \"$2\",密碼為 \"$3\"。\n您應該立即登入並更改密碼。\n\n如果該帳號是建立錯誤的話,您可以忽略此訊息。",
        "login-throttled": "您已經嘗試太多次的登入動作。\n請稍等 $1 後再試。",
        "login-abort-generic": "您登入失敗 - 已中止",
        "login-migrated-generic": "您的帳號已轉移,且此 Wiki 中您的使用者名稱已不存在。",
        "pt-createaccount": "建立帳號",
        "pt-userlogout": "登出",
        "php-mail-error-unknown": "PHP 的 mail() 函數發生不明錯誤。",
-       "user-mail-no-addy": "試圖傳送沒有電子郵件位址的信件。",
+       "user-mail-no-addy": "試圖傳送沒有電子郵件地址的郵件。",
        "user-mail-no-body": "試圖寄出內容為空的或異常簡短的電子郵件。",
        "changepassword": "變更密碼",
        "resetpass_announce": "要完成登入,您必須設定一個新密碼。",
        "passwordreset-domain": "網域名稱:",
        "passwordreset-capture": "檢視電子郵件內容?",
        "passwordreset-capture-help": "若您勾選此核選方塊,電子郵件 (包含臨時密碼) 將直接顯示,並寄給使用者。",
-       "passwordreset-email": "電子郵位址:",
+       "passwordreset-email": "電子郵位址:",
        "passwordreset-emailtitle": "於 {{SITENAME}} 的帳號詳細資訊",
-       "passwordreset-emailtext-ip": "不明人士 (可能是您自己,來自 IP 位址 $1) 要求重設在 {{SITENAME}} ($4) 的密碼,下列是與此電子郵件位址有關的使用者{{PLURAL:$3|帳號}}:\n\n$2\n\n{{PLURAL:$3|這個臨時密碼|這些臨時密碼}}將會在{{PLURAL:$5|一天|$5 天}}內到期,\n您應立即登入並更改新的密碼。如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略此訊息並且繼續使用您原本的密碼。",
+       "passwordreset-emailtext-ip": "不明人士 (可能是您自己,來自 IP 位址 $1) 要求重設在 {{SITENAME}} ($4) 的密碼,下列是與此電子郵件地址有關的使用者{{PLURAL:$3|帳號}}:\n\n$2\n\n{{PLURAL:$3|這個臨時密碼|這些臨時密碼}}將會在{{PLURAL:$5|一天|$5 天}}內到期,\n您應立即登入並更改新的密碼。如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略本訊息並且繼續使用您原本的密碼。",
        "passwordreset-emailtext-user": "使用者 $1 要求重設在 {{SITENAME}} ($4) 的密碼,下列是與此電子郵件位址有關的使用者{{PLURAL:$3|帳號}}:\n\n$2\n\n{{PLURAL:$3|這個臨時密碼|這些臨時密碼}}將會在{{PLURAL:$5|一天|$5 天}}內到期,\n您應立即登入並更改新的密碼。如果不是您要求重設密碼,或您已想起密碼,並不準備修改,\n您可以忽略此訊息並且繼續使用您原本的密碼。",
        "passwordreset-emailelement": "使用者名稱:$1\n臨時密碼:$2",
        "passwordreset-emailsent": "已寄出重設密碼的電子郵件。",
        "passwordreset-emailsent-capture": "已寄出重設密碼的電子郵件,並於下方顯示。",
        "passwordreset-emailerror-capture": "下列為重設密碼的電子郵件內容,傳送給{{GENDER:$2|使用者}}失敗:$1",
-       "changeemail": "變更電子郵地址",
-       "changeemail-text": "完成此表單以修改您的電子郵地址,您需要輸入您的密碼來確認此次變更。",
+       "changeemail": "變更電子郵地址",
+       "changeemail-text": "完成此表單以修改您的電子郵地址,您需要輸入您的密碼來確認此次變更。",
        "changeemail-no-info": "您必須登入方可直接存取此頁面。",
-       "changeemail-oldemail": "目前的電子郵件位址:",
-       "changeemail-newemail": "新的電子郵件位址:",
+       "changeemail-oldemail": "目前的電郵地址:",
+       "changeemail-newemail": "新的電郵地址:",
        "changeemail-none": "(無)",
        "changeemail-password": "您於 {{SITENAME}} 的密碼:",
-       "changeemail-submit": "變更電子郵",
+       "changeemail-submit": "變更電子郵",
        "changeemail-throttled": "您最近嘗試了太多次登入。\n請等待 $1 後再試。",
-       "resettokens": "重設鑰",
-       "resettokens-text": "您可以在此重設用來存取您帳號相關隱私資料的密鑰。\n\n若您不小心將您的密鑰分享給其他人或您的帳號已遭到入侵、破壞,應該要重設此密鑰。",
-       "resettokens-no-tokens": "沒有可重設的鑰。",
-       "resettokens-legend": "重設鑰",
-       "resettokens-tokens": "鑰:",
+       "resettokens": "重設鑰",
+       "resettokens-text": "您可以在此重設用來存取您帳號相關隱私資料的金鑰。\n\n若您不小心將您的密鑰分享給其他人或您的帳號已遭到入侵、破壞,應該要重設此金鑰。",
+       "resettokens-no-tokens": "沒有可重設的鑰。",
+       "resettokens-legend": "重設鑰",
+       "resettokens-tokens": "鑰:",
        "resettokens-token-label": "$1 (目前為 $2)",
-       "resettokens-watchlist-token": "用來訂閱 [[Special:Watchlist|監視清單]] Atom/RSS 的鑰",
-       "resettokens-done": "已重設鑰。",
-       "resettokens-resetbutton": "重設已選擇的鑰",
+       "resettokens-watchlist-token": "用來訂閱 [[Special:Watchlist|監視清單]] Atom/RSS 的鑰",
+       "resettokens-done": "已重設鑰。",
+       "resettokens-resetbutton": "重設已選擇的鑰",
        "bold_sample": "粗體文字",
        "bold_tip": "粗體文字",
        "italic_sample": "斜體文字",
        "summary-preview": "摘要預覽:",
        "subject-preview": "主旨/標題預覽:",
        "blockedtitle": "使用者已被封鎖",
-       "blockedtext": "<strong>æ\82¨ç\9a\84使ç\94¨è\80\85å\90\8d稱æ\88\96 IP ä½\8då\9d\80以被å°\81é\8e\96ã\80\82</strong>\n\næ\82¨è¢« $1 å°\81é\8e\96ï¼\8c\nå\8e\9få\9b ç\88² <em>$2</em>ã\80\82\n\n* å°\81é\8e\96é\96\8bå§\8bæ\99\82é\96\93ï¼\9a$8\n* å°\81é\8e\96çµ\90æ\9d\9fæ\99\82é\96\93ï¼\9a$6\n* ç\9b¸é\97\9cå°\81é\8e\96å°\8d象ï¼\9a$7\n\næ\82¨å\8f¯ä»¥è\81¯ç¹« $1 æ\88\96å\85¶ä»\96ç\9a\84 [[{{MediaWiki:Grouppage-sysop}}|管ç\90\86å\93¡]] è¨\8eè«\96å°\81é\8e\96ç\9a\84ç\9b¸é\97\9cå\95\8fé¡\8cã\80\82\nè\8b¥æ\82¨å·²å\9c¨ [[Special:Preferences|å\81\8f好設å®\9a]] ä¸­è¨­å®\9aäº\86ä¸\80å\80\8bæ\9c\89æ\95\88ç\9a\84é\9b»å­\90é\83µä»¶ä½\8då\9d\80ï¼\8cä¸\94å°\9aæ\9cªè¢«å°\81é\8e\96é\83µä»¶å\8a\9fè\83½ï¼\8cå\89\87æ\82¨å\8f¯é\80\8fé\81\8e \"å\82³é\80\81é\9b»å­\90é\83µä»¶çµ¦é\80\99ä½\8d使ç\94¨è\80\85\" ç\9a\84å\8a\9fè\83½ä¾\86è\81¯çµ¡ç\9b¸é\97\9c管ç\90\86å\93¡ã\80\82\næ\82¨ç\9b®å\88\96ç\9a\84 IP ä½\8då\9d\80æ\98¯ $3ï¼\8c此次å°\81é\8e\96ç\9a\84 ID ç\88² #$5。\n請您在詢問時附註以上詳細訊息。",
-       "autoblockedtext": "å\9b å\85\88å\89\8dç\9a\84å\8f¦ä¸\80ä½\8d使ç\94¨è\80\85被 $1 å°\81é\8e\96ï¼\8cæ\82¨ç\9a\84 IP ä½\8då\9d\80已被è\87ªå\8b\95å°\81é\8e\96ã\80\82\nå\8e\9få\9b æ\98¯ï¼\9a\n\n:<em>$2</em>\n\n* å°\81é\8e\96é\96\8bå§\8bæ\99\82é\96\93ï¼\9a$8\n* å°\81é\8e\96çµ\90æ\9d\9fæ\99\82é\96\93ï¼\9a$6\n* ç\9b¸é\97\9cå°\81é\8e\96å°\8d象ï¼\9a$7\n\næ\82¨å\8f¯ä»¥è\81¯ç¹« $1 æ\88\96å\85¶ä»\96ç\9a\84 [[{{MediaWiki:Grouppage-sysop}}|管ç\90\86å\93¡]] è¨\8eè«\96å°\81é\8e\96ç\9a\84ç\9b¸é\97\9cå\95\8fé¡\8cã\80\82\nè\8b¥æ\82¨å·²å\9c¨ [[Special:Preferences|å\81\8f好設å®\9a]] ä¸­è¨­å®\9aäº\86ä¸\80å\80\8bæ\9c\89æ\95\88ç\9a\84é\9b»å­\90é\83µä»¶ä½\8då\9d\80ï¼\8cä¸\94å°\9aæ\9cªè¢«å°\81é\8e\96é\83µä»¶å\8a\9fè\83½ï¼\8cå\89\87æ\82¨å\8f¯é\80\8fé\81\8e \"å\82³é\80\81é\9b»å­\90é\83µä»¶çµ¦é\80\99ä½\8d使ç\94¨è\80\85\" ç\9a\84å\8a\9fè\83½ä¾\86è\81¯çµ¡ç\9b¸é\97\9c管ç\90\86å\93¡ã\80\82\næ\82¨ç\9b®å\88\96的 IP 位址是 $3,此次封鎖的 ID 爲 #$5。\n請您在詢問時附註以上詳細訊息。",
+       "blockedtext": "<strong>æ\82¨ç\9a\84使ç\94¨è\80\85å\90\8d稱æ\88\96 IP ä½\8då\9d\80以被å°\81é\8e\96ã\80\82</strong>\n\næ\82¨è¢« $1 å°\81é\8e\96ï¼\8c\nå\8e\9få\9b ç\88² <em>$2</em>ã\80\82\n\n* å°\81é\8e\96é\96\8bå§\8bæ\99\82é\96\93ï¼\9a$8\n* å°\81é\8e\96çµ\90æ\9d\9fæ\99\82é\96\93ï¼\9a$6\n* ç\9b¸é\97\9cå°\81é\8e\96å°\8d象ï¼\9a$7\n\næ\82¨å\8f¯ä»¥è\81¯çµ¡ $1 æ\88\96å\85¶ä»\96ç\9a\84 [[{{MediaWiki:Grouppage-sysop}}|管ç\90\86å\93¡]] è¨\8eè«\96å°\81é\8e\96ç\9a\84ç\9b¸é\97\9cå\95\8fé¡\8cã\80\82\nè\8b¥æ\82¨å·²å\9c¨ [[Special:Preferences|å\81\8f好設å®\9a]] ä¸­è¨­å®\9aäº\86ä¸\80å\80\8bæ\9c\89æ\95\88ç\9a\84é\9b»å­\90é\83µä»¶å\9c°å\9d\80ï¼\8cä¸\94å°\9aæ\9cªè¢«å°\81é\8e\96é\83µä»¶å\8a\9fè\83½ï¼\8cå\89\87æ\82¨å\8f¯é\80\8fé\81\8e \"Email çµ¦æ­¤ä½¿ç\94¨è\80\85\" ç\9a\84å\8a\9fè\83½ä¾\86è\81¯çµ¡ç\9b¸é\97\9c管ç\90\86å\93¡ã\80\82\næ\82¨ç\9b®å\89\8dç\9a\84 IP ä½\8då\9d\80æ\98¯ $3ï¼\8c此次å°\81é\8e\96ç\9a\84 ID ç\82º #$5。\n請您在詢問時附註以上詳細訊息。",
+       "autoblockedtext": "å\9b å\85\88å\89\8dç\9a\84å\8f¦ä¸\80ä½\8d使ç\94¨è\80\85被 $1 å°\81é\8e\96ï¼\8cæ\82¨ç\9a\84 IP ä½\8då\9d\80已被è\87ªå\8b\95å°\81é\8e\96ã\80\82\nå\8e\9få\9b æ\98¯ï¼\9a\n\n:<em>$2</em>\n\n* å°\81é\8e\96é\96\8bå§\8bæ\99\82é\96\93ï¼\9a$8\n* å°\81é\8e\96çµ\90æ\9d\9fæ\99\82é\96\93ï¼\9a$6\n* ç\9b¸é\97\9cå°\81é\8e\96å°\8d象ï¼\9a$7\n\næ\82¨å\8f¯ä»¥è\81¯çµ¡ $1 æ\88\96å\85¶ä»\96ç\9a\84 [[{{MediaWiki:Grouppage-sysop}}|管ç\90\86å\93¡]] è¨\8eè«\96å°\81é\8e\96ç\9a\84ç\9b¸é\97\9cå\95\8fé¡\8cã\80\82\nè\8b¥æ\82¨å·²å\9c¨ [[Special:Preferences|å\81\8f好設å®\9a]] ä¸­è¨­å®\9aäº\86ä¸\80å\80\8bæ\9c\89æ\95\88ç\9a\84é\9b»å­\90é\83µä»¶å\9c°å\9d\80ï¼\8cä¸\94å°\9aæ\9cªè¢«å°\81é\8e\96é\83µä»¶å\8a\9fè\83½ï¼\8cå\89\87æ\82¨å\8f¯é\80\8fé\81\8e ã\80\8cEmail çµ¦æ­¤ä½¿ç\94¨è\80\85ã\80\8d ç\9a\84å\8a\9fè\83½ä¾\86è\81¯çµ¡ç\9b¸é\97\9c管ç\90\86å\93¡ã\80\82\næ\82¨ç\9b®å\89\8d的 IP 位址是 $3,此次封鎖的 ID 爲 #$5。\n請您在詢問時附註以上詳細訊息。",
        "blockednoreason": "未說明原因",
        "whitelistedittext": "請先 $1 才可編輯頁面。",
-       "confirmedittext": "在編輯此頁之前您必須確認您的電子郵件位址。\n請透過 [[Special:Preferences|偏好設定]] 設定並驗證您的電子郵件位址。",
+       "confirmedittext": "在編輯此頁之前您必須確認您的電郵地址。\n請透過 [[Special:Preferences|偏好設定]] 設定並驗證您的電郵地址。",
        "nosuchsectiontitle": "找不到章節",
        "nosuchsectiontext": "您嘗試編輯的章節並不存在。\n可能在您檢視頁面時已經移動或刪除。",
        "loginreqtitle": "需要登入",
        "userpage-userdoesnotexist-view": "使用者帳號 \"$1\" 尚未註冊。",
        "blocked-notice-logextract": "此使用者目前已被封鎖。\n以下為最近的封鎖紀錄以供參考:",
        "clearyourcache": "<strong>注意:</strong>在您儲存之後您必須清除瀏覽器快取才可看到最新的變動。\n* <strong>Firefox / Safari:</strong>按住 <em>Shift</em> 時點選 <em>重新整理</em>,或按 <em>Ctrl-F5</em> 或 <em>Ctrl-R</em> (Mac 則為 <em>⌘-R</em>) \n* <strong>Google Chrome:</strong>按 <em>Ctrl-Shift-R</em> (Mac 則為 <em>⌘-Shift-R</em>) \n* <strong>Internet Explorer:</strong>按住 <em>Ctrl</em> 時點選 <em>重新整理</em>,或按 <em>Ctrl-F5</em>\n* <strong>Opera:</strong>進入 <em>工具 → 偏好設定</em> 中清除快取。",
-       "usercssyoucanpreview": "<strong>提示:</strong>在儲存之前使用 \"{{int:showpreview}}\" 按鈕來測試您的新 CSS。",
-       "userjsyoucanpreview": "<strong>提示:</strong>在儲存之前使用 \"{{int:showpreview}}\" 按鈕來測試您的新 JavaScript。",
+       "usercssyoucanpreview": "<strong>提示:</strong>在儲存之前使用 「{{int:showpreview}}」 按鈕來測試您的新 CSS 。",
+       "userjsyoucanpreview": "<strong>提示:</strong>在儲存之前使用 「{{int:showpreview}}」 按鈕來測試您的新 JavaScript 。",
        "usercsspreview": "<strong>您目前正預覽您的使用者 CSS,CSS 還尚未儲存!</strong>",
        "userjspreview": "<strong>您目前正預覽您的使用者 JavaScript,JavaScript 還尚未儲存!</strong>",
        "sitecsspreview": "<strong>您目前正預覽此 CSS,CSS 還尚未儲存!</strong>",
        "edit_form_incomplete": "<strong>部份編輯的內容未送至伺服器,請檢查您的編輯內容是否完整並再試一次。</strong>",
        "editing": "正在編輯 $1",
        "creating": "正在建立 $1",
-       "editingsection": "正在編輯 $1 (章節)",
+       "editingsection": "正在編輯 $1 (段落)",
        "editingcomment": "正在編輯 $1 (新章節)",
        "editconflict": "編輯衝突:$1",
        "explainconflict": "在您開始編輯之後已有其他人儲存了此頁面。\n上方的文字框內顯示了目前頁面中的文字內容,\n您所變更的文字內容顯示在下方文字框中。\n您須要將您所變更的文字內容合併到已儲存的文字內容當中。\n若您直接點選 \"{{int:savearticle}}\" <strong>只有</strong> 上方文字框中的內容會被儲存。",
        "rev-suppressed-text-view": "此頁面修訂已被 <strong>禁止顯示</strong>。\n您可繼續檢視修訂,可至 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 禁止顯示日誌] 取得詳細資訊。",
        "rev-deleted-no-diff": "因頁面的其中一次修訂已被 <strong>刪除</strong>,您無法檢視差異。\n可至 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌] 取得詳細資訊。",
        "rev-suppressed-no-diff": "因頁面的其中一次修訂已被 <strong>刪除</strong>,您無法檢視差異。",
-       "rev-deleted-unhide-diff": "檢視差異的其中一個修訂已被 <strong>刪除</strong>。\n可至 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌] 取得詳細資。\n若您要繼續,您仍可以 [$1 檢視此差異]。",
+       "rev-deleted-unhide-diff": "檢視差異的其中一個修訂已被 <strong>刪除</strong>。\n可至 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌] 取得詳細資。\n若您要繼續,您仍可以 [$1 檢視此差異]。",
        "rev-suppressed-unhide-diff": "檢視差異的其中一個修訂已被 <strong>禁止顯示</strong>。\n可至 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 禁止顯示日誌] 取得詳細資訊。\n若您要繼續,您仍可以 [$1 檢視此差異]。",
        "rev-deleted-diff-view": "檢視差異的其中一個修訂已被 <strong>刪除</strong>。\n您可繼續檢視差異,可至 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌] 取得詳細資訊。",
        "rev-suppressed-diff-view": "檢視差異的其中一個修訂已被 <strong>禁止顯示</strong>。\n您可繼續檢視差異,可至 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 禁止顯示日誌] 取得詳細資訊。",
        "prefs-editwatchlist-edit": "檢視與移除在您監視清單上的標題",
        "prefs-editwatchlist-raw": "編輯原始監視清單",
        "prefs-editwatchlist-clear": "清除您的監視清單",
-       "prefs-watchlist-days": "監視清單中顯示的天數:",
+       "prefs-watchlist-days": "監視清單中顯示的天數:",
        "prefs-watchlist-days-max": "最多 $1 {{PLURAL:$1|天}}",
        "prefs-watchlist-edits": "展開監視清單中顯示的變更數量上限:",
        "prefs-watchlist-edits-max": "數量上限:1000",
-       "prefs-watchlist-token": "監視清單鑰:",
+       "prefs-watchlist-token": "監視清單鑰:",
        "prefs-misc": "其他",
        "prefs-resetpass": "變更密碼",
-       "prefs-changeemail": "變更電子郵",
+       "prefs-changeemail": "變更電子郵箱地址",
        "prefs-setemail": "設定電子郵件位址",
-       "prefs-email": "電子郵選項",
+       "prefs-email": "電子郵選項",
        "prefs-rendering": "外觀",
        "saveprefs": "儲存",
        "restoreprefs": "還原所有預設設定 (所有項目)",
        "recentchangesdays-max": "最多 $1 {{PLURAL:$1|天}}",
        "recentchangescount": "預設顯示的編輯數:",
        "prefs-help-recentchangescount": "這包含近期變更、頁面歷史以及日誌。",
-       "prefs-help-watchlist-token2": "訂閱您的監視清單所需的密鑰。\n任何人只要知道密鑰就能夠讀取您的監視清單,所以請勿任意與它人共享。\n若有需要 [[Special:ResetTokens|您可重設密鑰]]。",
+       "prefs-help-watchlist-token2": "訂閱您的監視清單所需的金鑰。\n任何人只要知道金鑰就能夠讀取您的監視清單,所以請勿任意與它人共享。\n若有需要 [[Special:ResetTokens|您可重設金鑰]]。",
        "savedprefs": "已儲存您的偏好設定。",
        "timezonelegend": "時區:",
        "localtime": "當地時間:",
        "prefs-custom-js": "自訂 JavaScript",
        "prefs-common-css-js": "所有外觀共用的 CSS/JavaScript:",
        "prefs-reset-intro": "您可以使用此頁面重設您的偏好設定為網站預設值。\n這個動作將無法復原。",
-       "prefs-emailconfirm-label": "電子郵確認:",
-       "youremail": "電子郵:",
+       "prefs-emailconfirm-label": "電子郵確認:",
+       "youremail": "電子郵:",
        "username": "{{GENDER:$1|使用者名稱}}:",
        "prefs-memberingroups": "{{GENDER:$2|所屬}}{{PLURAL:$1|群組}}:",
        "prefs-registration": "註冊時間:",
        "gender-male": "他編輯了 Wiki 頁面",
        "gender-female": "她編輯了 Wiki 頁面",
        "prefs-help-gender": "此偏好設定為選填欄位。\n系統會使用您選擇的方式稱呼您,對他人提及您時也會使用適當語法稱呼。\n此項資訊會被公開。",
-       "email": "電子郵",
+       "email": "電子郵",
        "prefs-help-realname": "真實姓名為選填欄位。\n若提供,真實姓名可能會用來作為您的作品的署名。",
-       "prefs-help-email": "電子郵件位址為選填欄位。\n但在重設密碼時會使用,而您很有可能會忘記密。",
-       "prefs-help-email-others": "您亦可以選擇讓其他使用者用電子郵件與您聯絡,透過您的使用者或對話頁面上方的連結。\n您的電子郵件位址不會實際告知給其他要聯絡您的使用者。",
+       "prefs-help-email": "電子郵件地址為選填欄位。\n但在重設密碼時會使用,而您很有可能會忘記密碼。",
+       "prefs-help-email-others": "您亦可以選擇讓其他使用者透過您的電子郵箱、使用者頁面或對話頁面的連結與您聯絡。\n您的電子郵箱地址不會洩漏給其他要聯絡您的使用者。",
        "prefs-help-email-required": "電子郵件地址是必填項目。",
        "prefs-info": "基本資訊",
        "prefs-i18n": "國際化",
        "prefs-advancedwatchlist": "進階選項",
        "prefs-displayrc": "顯示選項",
        "prefs-displaywatchlist": "顯示選項",
-       "prefs-tokenwatchlist": "鑰",
+       "prefs-tokenwatchlist": "鑰",
        "prefs-diffs": "差異",
        "prefs-help-prefershttps": "此偏好設定將於您下次登入時生效。",
        "prefswarning-warning": "您對您的偏好設定所做的變更尚未儲存。\n若您未點選 \"$1\" 離開此頁面,將不會更新您的偏好設定。",
        "userrights-groupsmember-auto": "所屬隱含群組:",
        "userrights-groups-help": "您可以更改此使用者所屬的群組:\n* 已勾選的核選方塊代表該使用者屬於該群組。\n* 未勾選的核選方塊代表該使用者不屬於該群組。\n* 有 * 號標示代表一旦加入該群組後便不能移除,反之亦然。",
        "userrights-reason": "原因:",
-       "userrights-no-interwiki": "您沒有權限去編輯其它使用者在 Wiki 上的權限。",
+       "userrights-no-interwiki": "您沒有權限去編輯其他 Wiki 上的使用者權限。",
        "userrights-nodatabase": "資料庫 $1 不存在或不在本地主機的。",
        "userrights-nologin": "您必須 [[Special:UserLogin|登入]] 管理員帳號以指定使用者權限。",
        "userrights-notallowed": "您沒有權限加入或刪除使用者權限。",
        "right-editsemiprotected": "編輯保護層級為 \"{{int:protect-level-autoconfirmed}}\" 的頁面",
        "right-editcontentmodel": "編輯頁面的內容模型",
        "right-editinterface": "編輯使用者介面",
-       "right-editusercssjs": "編輯其他使用者的 CSS 和 JavaScript 檔案",
-       "right-editusercss": "編輯其他使用者的 CSS 檔",
-       "right-edituserjs": "編輯其他使用者的 JavaScript 檔",
+       "right-editusercssjs": "編輯其他使用者的 CSS 與 JavaScript 檔",
+       "right-editusercss": "編輯其他使用者的 CSS 檔",
+       "right-edituserjs": "編輯其他使用者的 JavaScript 檔",
        "right-editmyusercss": "編輯自己的使用者 CSS 檔",
        "right-editmyuserjs": "編輯自己的使用者 JavaScript 檔",
        "right-viewmywatchlist": "檢視自己的監視清單",
        "right-editmywatchlist": "編輯自己的監視清單。注意,即使無此權限,某些操作仍會新增頁面至監視清單。",
-       "right-viewmyprivateinfo": "檢視自己的私隱資料 (如:電子郵件位址及真實姓名)",
-       "right-editmyprivateinfo": "編輯自己的隱私資料 (如:電子郵件位址及真實姓名)",
+       "right-viewmyprivateinfo": "檢視自己的私隱資料(如:電子郵件地址及真實姓名)",
+       "right-editmyprivateinfo": "編輯自己的隱私資料(如:電子郵件地址及真實姓名)",
        "right-editmyoptions": "編輯自己的偏好設定",
        "right-rollback": "快速還原最後一位使用者對某一頁面的編輯",
        "right-markbotedits": "標示還原編輯為機械人編輯",
        "nolicense": "尚未選擇",
        "licenses-edit": "編輯授權條款選項",
        "license-nopreview": "(不可預覽)",
-       "upload_source_url": "(您選擇的檔案來自有效可公開存取的 URL)",
+       "upload_source_url": "(您選擇的檔案來自有效可公開存取的 URL)",
        "upload_source_file": "(您在您的電腦上選擇的檔案)",
        "listfiles-delete": "刪除",
        "listfiles-summary": "此特殊頁面顯示所有已上傳的檔案。",
        "mimetype": "MIME 類型:",
        "download": "下載",
        "unwatchedpages": "未監視的頁面",
-       "listredirects": "重新導向頁面清單",
+       "listredirects": "重新導向清單",
        "listduplicatedfiles": "重複檔案清單",
        "listduplicatedfiles-summary": "此清單中包含最新版本的檔案與其他檔案重複的清單,本清單只顯示本地檔案。",
        "listduplicatedfiles-entry": "[[:File:$1|$1]] 有[[$3|其他 $2 個重複檔案]]。",
        "mostinterwikis": "最多跨 Wiki 的頁面",
        "mostrevisions": "最多修訂的頁面",
        "prefixindex": "所有頁面與字首",
-       "prefixindex-namespace": "所有含字首的頁面 ($1 命名空間)",
+       "prefixindex-namespace": "所有含字首的頁面 ($1 命名空間)",
        "prefixindex-strip": "於清單中省略字首",
        "shortpages": "過短的頁面",
        "longpages": "過長的頁面",
        "booksources-text": "下列清單包含其他銷售新書籍或二手書籍的網站連結,可會有你想尋找書籍的進一部資訊:",
        "booksources-invalid-isbn": "您提供的 ISBN 不正確,請檢查複製的來源是否有誤。",
        "specialloguserlabel": "執行者:",
-       "speciallogtitlelabel": "目標 (標題或使用者):",
+       "speciallogtitlelabel": "目標(標題或使用者):",
        "log": "日誌",
        "all-logs-page": "所有公開日誌",
        "alllogstext": "合併顯示所有 {{SITENAME}} 中所有類型的日誌。\n您可以點選下拉式選單選擇日誌的類型,指定使用者名稱 (區分大小寫) 或影響的頁面 (區分大小寫)。",
        "allpagesfrom": "顯示頁面開始於:",
        "allpagesto": "顯示頁面結束於:",
        "allarticles": "所有頁面",
-       "allinnamespace": "所有頁面 ($1 命名空間)",
+       "allinnamespace": "所有頁面 ($1 命名空間)",
        "allpagessubmit": "執行",
        "allpagesprefix": "顯示以此為字首頁面:",
        "allpagesbadtitle": "指定的頁面標題無效、包含內部語言或內部 Wiki 的字首。\n它可能包含一個或多個的不能用於標題的字元。",
        "trackingcategories-nodesc": "沒有可用的描述。",
        "trackingcategories-disabled": "已停用分類",
        "mailnologin": "沒有傳送位址",
-       "mailnologintext": "您必須先 [[Special:UserLogin|登入]]\n並在 [[Special:Preferences|偏好設定]]\n中設定一個有效的電子郵件位址才可以傳送信件給其他使用者。",
+       "mailnologintext": "您必須先 [[Special:UserLogin|登入]]\n並在 [[Special:Preferences|偏好設定]]\n中設定一個有效的電子郵件地址才可以傳送郵件給其他使用者。",
        "emailuser": "Email 此使用者",
        "emailuser-title-target": "Email 給此{{GENDER:$1|使用者}}",
        "emailuser-title-notarget": "E-mail 給使用者",
        "emailpagetext": "您可以使用以下表格傳送電子郵件給這位 {{Gender:$1|使用者}}。\n您在 [[Special:Preferences|偏好設定]] 中所輸入的電子郵件位址將會作為郵件的 \"寄件人\",因此該使用者可直接回覆您。",
        "defemailsubject": "{{SITENAME}} 使用者 \"$1\" 寄來的電子郵件",
        "usermaildisabled": "使用者電子郵件已停用",
-       "usermaildisabledtext": "您不能傳送信件到這個 Wiki 上的其他使用者",
+       "usermaildisabledtext": "您不能傳送郵件到本 Wiki 上的其他使用者",
        "noemailtitle": "沒有電子郵件位址",
        "noemailtext": "此使用者尚未指定一個有效的電子郵件地址。",
        "nowikiemailtext": "此使用者選擇不接收其他使用者的信件。",
        "emailsent": "已寄出電子郵件",
        "emailsenttext": "已寄出您的電子郵件訊息。",
        "emailuserfooter": "這封電子郵件是由 $1 透過 {{SITENAME}} 的 \"Email 給此使用者\" 功能寄給 $2。",
-       "usermessage-summary": "留系統訊息。",
+       "usermessage-summary": "留系統訊息。",
        "usermessage-editor": "系統訊息",
        "watchlist": "監視清單",
        "mywatchlist": "監視清單",
        "interlanguage-link-title": "$1 – $2",
        "common.css": "/* 此 CSS 會套用至所有的介面外觀 */",
        "print.css": "/* 此 CSS 會影響列印版輸出 */",
-       "noscript.css": "/* æ­¤ CSS æ\9c\83å½±é\9f¿æ²\92æ\9c\89å\95\93用 JavaScript 的使用者 */",
+       "noscript.css": "/* æ­¤ CSS æ\9c\83å½±é\9f¿æ²\92æ\9c\89å\95\9f用 JavaScript 的使用者 */",
        "group-autoconfirmed.css": "/* 此 CSS 會影響自動確認的使用者 */",
        "group-bot.css": "/* 此 CSS 會影響機器人 */",
        "group-sysop.css": "/* 這裡的 CSS 會影響管理員 */",
        "pageinfo-few-watchers": "少於 $1 名監視者",
        "pageinfo-redirects-name": "指向此頁面的重新導向頁面數量",
        "pageinfo-subpages-name": "此頁面的子頁面數",
-       "pageinfo-subpages-value": "$1 ($2 個重新導向頁面; $3 個非重新導向頁面)",
+       "pageinfo-subpages-value": "$1 ($2 個{{PLURAL:$2|重新導向}}; $3 個{{PLURAL:$3|非重新導向}})",
        "pageinfo-firstuser": "頁面建立者",
        "pageinfo-firsttime": "頁面建立日期",
        "pageinfo-lastuser": "最近編輯者",
        "confirmemail_pending": "確認碼已傳送至您的電子郵件,\n若您才剛建立好您的帳號,可能需要稍後幾分鐘才能收到。\n若沒有收到,請再重新申請一次確認碼。",
        "confirmemail_send": "電子郵件寄送確認代碼",
        "confirmemail_sent": "已寄出確認電子郵件。",
-       "confirmemail_oncreate": "確認代碼已傳送至您的電子郵件址。\n登入動作不需要使用此代碼,但開啟在 Wiki 中任何以電子郵件為基礎的功能會需要先提供此代碼。",
+       "confirmemail_oncreate": "確認代碼已傳送至您的電子郵件址。\n登入動作不需要使用此代碼,但開啟在 Wiki 中任何以電子郵件為基礎的功能會需要先提供此代碼。",
        "confirmemail_sendfailed": "{{SITENAME}}無法傳送確認郵件,請檢查電子郵件位址是否包含非法字元。\n\n郵件傳送員回應: $1",
        "confirmemail_invalid": "無效的確認碼,該代碼可能已經過期。",
-       "confirmemail_needlogin": "請 $1 以確認您的電子郵件位址。",
+       "confirmemail_needlogin": "請 $1 以確認您的電子郵箱地址。",
        "confirmemail_success": "您的電子郵件已經被確認。您現在可以[[Special:UserLogin|登入]]並使用此網站了。",
-       "confirmemail_loggedin": "已確認您的電子郵件位址。",
+       "confirmemail_loggedin": "已確認您的電子郵箱地址。",
        "confirmemail_subject": "{{SITENAME}} 電子郵件位址確認",
-       "confirmemail_body": "不明人士 (可能是您自己,來自 IP 位址 $1) 已在 {{SITENAME}} 註冊了一個帳號 \"$2\" 並使用了此電子郵件位址。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以開啟在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
+       "confirmemail_body": "不明人士 (可能是您自己,來自 IP 位址 $1) 已在 {{SITENAME}} 註冊了一個帳號 「$2」 並使用了此 Email 地址。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以開啟在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
        "confirmemail_body_changed": "不明人士 (可能是您自己,來自 IP 位址 $1)  已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件位址更改至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以開啟在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
-       "confirmemail_body_set": "不明人士 (可能是您自己,來自 IP 位址 $1) 已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件位址設定至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以開啟在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
+       "confirmemail_body_set": "不明人士 (可能是您自己,來自 IP 位址 $1) 已將在 {{SITENAME}} 帳號 「$2」 的電子郵件地址設定至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以開啟在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
        "confirmemail_invalidated": "已取消電子郵件位址確認",
        "invalidateemail": "取消電子郵件確認",
        "scarytranscludedisabled": "[Interwiki 轉換代碼不可用]",
        "watchlistedit-raw-done": "已更新您的監視清單。",
        "watchlistedit-raw-added": "已新增 $1 個標題:",
        "watchlistedit-raw-removed": "已移除 $1 個標題:",
-       "watchlistedit-clear-title": "清空監視清單",
+       "watchlistedit-clear-title": "清空監視清單",
        "watchlistedit-clear-legend": "清空監視清單",
        "watchlistedit-clear-explain": "將會移除您的監視清單中所有的標題",
        "watchlistedit-clear-titles": "標題:",
        "version-hooks": "連結 (Hooks)",
        "version-parser-extensiontags": "解析器擴充標籤",
        "version-parser-function-hooks": "語法函數連結",
-       "version-hook-name": "é\80£çµ\90å\90\8d稱",
+       "version-hook-name": "é\89¤å\90\8d",
        "version-hook-subscribedby": "署名",
        "version-version": "($1)",
        "version-no-ext-name": "[未命名]",
        "version-poweredby-others": "其他",
        "version-poweredby-translators": " translatewiki.net 翻譯人員",
        "version-credits-summary": "我們感謝以下人士為 [[Special:Version|MediaWiki]] 作出的貢獻。",
-       "version-license-info": "MediaWiki 為自由軟體;您可依據自由軟體基金會所發表的 GNU 通用公共授權條款規定,將本程式重新發佈與/或修改;無論您依據的是本授權條款的第二版或 (您可自行選擇) 之後的任何版本。\n\n本程式發佈的目的是希望可以提供幫助,但不負任何擔保責任;亦無隱含對適售性或 特定用途的適用性的情形擔保。詳情請參照 GNU 通用公共授權。\n\n您應已隨本程式收到 [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU 通用公共授權條款的副本];如果沒有,請信件通知自由軟體基金會,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,或 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html 線上閱讀]。",
+       "version-license-info": "MediaWiki 為自由軟體;您可依據自由軟體基金會所發表的 GNU 通用公共授權條款規定,將本程式重新發佈與/或修改;無論您依據的是本授權條款的第二版或 (您可自行選擇) 之後的任何版本。\n\n本程式發佈的目的是希望可以提供幫助,但不負任何擔保責任;亦無隱含對適售性或 特定用途的適用性的情形擔保。詳情請參照 GNU 通用公共授權。\n\n您應已隨本程式收到 [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU 通用公共授權條款的副本];如果沒有,請寄信通知自由軟體基金會,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,或 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html 線上閱讀]。",
        "version-software": "已經安裝的軟體",
        "version-software-product": "產品",
        "version-software-version": "版本",
        "revdelete-unrestricted": "已移除對管理員的限制",
        "logentry-merge-merge": "$1 將 $3 {{GENDER:$2|合併}}至 $4 (修訂版本至 $5)",
        "logentry-move-move": "$1 {{GENDER:$2|已移動}}頁面 $3 至 $4",
-       "logentry-move-move-noredirect": "$1 已移動頁面 $3 至 $4,不留重新導向頁面",
+       "logentry-move-move-noredirect": "$1 {{GENDER:$2|已移動}}頁面 $3 至 $4,不保留重新導向",
        "logentry-move-move_redir": "$1 已移動頁面 $3 至 $4 並覆蓋原有重新導向",
        "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|已移動}}頁面 $3 覆蓋重新導向頁面至 $4,未留重新導向頁面",
        "logentry-patrol-patrol": "$1 {{GENDER:$2|已標記}}頁面 $3 的修訂 $4 為已巡查",
        "log-description-managetags": "此頁面列出與[[Special:Tags|標籤]]相關的管理工作項目。 在日誌中僅包含由管理員手動所做的操作;被 Wiki 軟體所建立或刪除的標籤項目,不會記錄在此日誌中",
        "rightsnone": "(無)",
        "revdelete-summary": "編輯摘要",
+       "feedback-adding": "正在新增意見回饋至頁面...",
+       "feedback-bugcheck": "很好! 檢查一下您的意見是不是已經被列為 [$1 已知問題]。",
+       "feedback-bugnew": "我已經檢查。 回報新問題",
        "feedback-bugornote": "如果您準備要詳細描述一個技術問題,請至 [$1 回報問題]。\n或您可以使用以下的簡易表單回報問題,您的使用者名稱與評論將被新增到頁面 \"[$3 $2]\"。",
-       "feedback-subject": "主旨:",
-       "feedback-message": "訊息:",
        "feedback-cancel": "取消",
-       "feedback-submit": "送出意見回饋",
-       "feedback-adding": "正在新增意見回饋至頁面...",
+       "feedback-close": "完成",
        "feedback-error1": "錯誤:無法識別 API 回傳的結果",
        "feedback-error2": "錯誤:編輯失敗",
        "feedback-error3": "錯誤:API 沒有回應",
+       "feedback-message": "訊息:",
+       "feedback-subject": "主旨:",
+       "feedback-submit": "送出意見回饋",
        "feedback-thanks": "感謝!您的意見回饋已發佈到頁面 \"[$2 $1]\"。",
-       "feedback-close": "完成",
-       "feedback-bugcheck": "很好! 檢查一下您的意見是不是已經被列為 [$1 已知問題]。",
-       "feedback-bugnew": "我已經檢查。 回報新問題",
        "searchsuggest-search": "搜尋",
        "searchsuggest-containing": "包含...",
        "api-error-badaccess-groups": "您沒有權限在此 Wiki 上傳檔案。",
index a7267dd..393c6e5 100644 (file)
@@ -60,7 +60,7 @@ $specialPageAliases = array(
        'DoubleRedirects'           => array( 'ڕەوانکەرە_دووپاتکراوەکان' ),
        'Emailuser'                 => array( 'ئیمەیل_بەکارھێنەر' ),
        'Export'                    => array( 'ھەناردن' ),
-       'Fewestrevisions'           => array( 'کەمترین__پێداچوونەوەکان' ),
+       'Fewestrevisions'           => array( 'کەمترین_پێداچوونەوەکان' ),
        'Import'                    => array( 'ھاوردن' ),
        'Listadmins'                => array( 'لیستی_بەڕێوبەران' ),
        'Listbots'                  => array( 'لیستی_بۆتەکان' ),
index 9ab687a..074e040 100644 (file)
@@ -68,7 +68,7 @@ $namespaceGenderAliases = array();
 
 $specialPageAliases = array(
        'Blankpage'                 => array( 'Пуста_лаштык' ),
-       'BrokenRedirects'           => array( 'Кӱрылтшӧ__вес_вере_колтымаш-влак' ),
+       'BrokenRedirects'           => array( 'Кӱрылтшӧ_вес_вере_колтымаш-влак' ),
        'Categories'                => array( 'Категорий-влак' ),
        'ComparePages'              => array( 'Лаштык-влакым_тергымаш' ),
        'Emailuser'                 => array( 'Пайдаланышылан_серышым_колташ' ),
index 8a249e1..451e373 100644 (file)
@@ -109,7 +109,7 @@ $specialPageAliases = array(
        'Movepage'                  => array( 'PindahLaman', 'Pindahkan_laman' ),
        'Mycontributions'           => array( 'JariahDenai', 'Jariah_Ambo' ),
        'Mypage'                    => array( 'LamanDenai', 'Laman_Ambo' ),
-       'Mytalk'                    => array( 'RundiangDenai', 'Laman_rundiang__Ambo' ),
+       'Mytalk'                    => array( 'RundiangDenai', 'Laman_rundiang_Ambo' ),
        'Myuploads'                 => array( 'DenaiMuek', 'Nan_Ambo_muek' ),
        'Newimages'                 => array( 'BerkasBaru', 'Berkas_baru' ),
        'Newpages'                  => array( 'LamanBaru', 'Laman_baru' ),
index bb7499b..1569234 100644 (file)
@@ -46,7 +46,7 @@ class BenchHttpHttps extends Benchmarker {
        }
 
        static function doRequest( $proto ) {
-               Http::get( "$proto://localhost/" );
+               Http::get( "$proto://localhost/", array(), __METHOD__ );
        }
 
        // bench function 1
index d17b06d..5cf4536 100644 (file)
@@ -185,7 +185,7 @@ class FindHooks extends Maintenance {
 
                $retval = array();
                while ( true ) {
-                       $json = Http::get( wfAppendQuery( 'http://www.mediawiki.org/w/api.php', $params ) );
+                       $json = Http::get( wfAppendQuery( 'http://www.mediawiki.org/w/api.php', $params ), array(), __METHOD__ );
                        $data = FormatJson::decode( $json, true );
                        foreach ( $data['query']['categorymembers'] as $page ) {
                                if ( preg_match( '/Manual\:Hooks\/([a-zA-Z0-9- :]+)/', $page['title'], $m ) ) {
index b803e3d..4b839a0 100644 (file)
@@ -117,7 +117,7 @@ function findAuxFile( $file, $auxExtension, $maxStrip = 1 ) {
 function getFileCommentFromSourceWiki( $wiki_host, $file ) {
        $url = $wiki_host . '/api.php?action=query&format=xml&titles=File:'
                . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=comment';
-       $body = Http::get( $url );
+       $body = Http::get( $url, array(), __METHOD__ );
        if ( preg_match( '#<ii comment="([^"]*)" />#', $body, $matches ) == 0 ) {
                return false;
        }
@@ -128,7 +128,7 @@ function getFileCommentFromSourceWiki( $wiki_host, $file ) {
 function getFileUserFromSourceWiki( $wiki_host, $file ) {
        $url = $wiki_host . '/api.php?action=query&format=xml&titles=File:'
                . rawurlencode( $file ) . '&prop=imageinfo&&iiprop=user';
-       $body = Http::get( $url );
+       $body = Http::get( $url, array(), __METHOD__ );
        if ( preg_match( '#<ii user="([^"]*)" />#', $body, $matches ) == 0 ) {
                return false;
        }
index e67d077..6566a60 100644 (file)
@@ -59,7 +59,7 @@ class ImportSiteScripts extends Maintenance {
                        $url = wfAppendQuery( $baseUrl, array(
                                'action' => 'raw',
                                'title' => "MediaWiki:{$page}" ) );
-                       $text = Http::get( $url );
+                       $text = Http::get( $url, array(), __METHOD__ );
 
                        $wikiPage = WikiPage::factory( $title );
                        $content = ContentHandler::makeContent( $text, $wikiPage->getTitle() );
@@ -81,7 +81,7 @@ class ImportSiteScripts extends Maintenance {
 
                while ( true ) {
                        $url = wfAppendQuery( $baseUrl, $data );
-                       $strResult = Http::get( $url );
+                       $strResult = Http::get( $url, array(), __METHOD__ );
                        $result = FormatJson::decode( $strResult, true );
 
                        $page = null;
index 3a74804..c2499ff 100644 (file)
@@ -6,7 +6,7 @@
        "--warnings": ["-nodoc(class,public)"],
        "--builtin-classes": true,
        "--warnings-exit-nonzero": true,
-       "--external": "HTMLElement,HTMLDocument,Window,File",
+       "--external": "HTMLElement,HTMLDocument,Window,File,MouseEvent,KeyboardEvent",
        "--footer": "Documentation for MediaWiki core. Generated on {DATE} by {JSDUCK} {VERSION}.",
        "--output": "../../docs/js",
        "--": [
index 58a93a7..faaf852 100644 (file)
@@ -29,12 +29,19 @@ return array(
        /**
         * Special modules who have their own classes
         */
+       'startup' => array( 'class' => 'ResourceLoaderStartUpModule' ),
 
        // Scripts managed by the local wiki (stored in the MediaWiki namespace)
        'site' => array( 'class' => 'ResourceLoaderSiteModule' ),
-       'noscript' => array( 'class' => 'ResourceLoaderNoscriptModule' ),
-       'startup' => array( 'class' => 'ResourceLoaderStartUpModule' ),
-       'filepage' => array( 'class' => 'ResourceLoaderFilePageModule' ),
+       'noscript' => array(
+               'class' => 'ResourceLoaderWikiModule',
+               'styles' => array( 'MediaWiki:Noscript.css' ),
+               'group' => 'noscript',
+       ),
+       'filepage' => array(
+               'class' => 'ResourceLoaderWikiModule',
+               'styles' => array( 'MediaWiki:Filepage.css' ),
+       ),
        'user.groups' => array( 'class' => 'ResourceLoaderUserGroupsModule' ),
 
        // Scripts managed by the current user (stored in their user space)
@@ -884,6 +891,12 @@ return array(
                        'feedback-useragent'
                ),
        ),
+       'mediawiki.helplink' => array(
+               'styles' => array(
+                       'resources/src/mediawiki/mediawiki.helplink.css',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
        'mediawiki.hidpi' => array(
                'scripts' => 'resources/src/mediawiki/mediawiki.hidpi.js',
                'dependencies' => 'jquery.hidpi',
index 0b89e37..b003e8c 100644 (file)
@@ -2,16 +2,20 @@
        "@metadata": {
                "authors": [
                        "Vikassy",
-                       "Nayvik"
+                       "Nayvik",
+                       "Omshivaprakash"
                ]
        },
-       "ooui-outline-control-move-down": "ವಸ್ತು ಕೆಲ್ಗೆ ಸ್ಥಲಾನ್ಥರಿಸು",
-       "ooui-outline-control-move-up": "ವಸ್ತು ಮೆಲೆ ಸ್ಥಲಾನ್ಥರಿಸು",
-       "ooui-outline-control-remove": "ವಸ್ತು ತೆಗೆ",
-       "ooui-toolbar-more": "ಹೆಚ್ಚು",
+       "ooui-outline-control-move-down": "ವಸ್ತುವನ್ನು ಕೆಳಗೆ ಸರಿಸು",
+       "ooui-outline-control-move-up": "ವಸ್ತುವನ್ನು ಮೇಲೆ ಸರಿಸು",
+       "ooui-outline-control-remove": "ವಸ್ತುವನ್ನು ತೆಗೆ",
+       "ooui-toolbar-more": "ಇನ್ನಷ್ಟು",
+       "ooui-toolgroup-expand": "ಇನ್ನಷ್ಟು",
+       "ooui-toolgroup-collapse": "ಕೆಲವೇ ಕೆಲವು",
        "ooui-dialog-message-accept": "ಸರಿ",
-       "ooui-dialog-message-reject": "ರದ್ದು",
+       "ooui-dialog-message-reject": "ರದ್ದುಮಾಡು",
        "ooui-dialog-process-error": "ಎನೋ ಎಡವಟ್ಟಾಗಿದೆ....",
        "ooui-dialog-process-dismiss": "ತೆಗೆದುಹಾಕು",
-       "ooui-dialog-process-retry": "ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ"
+       "ooui-dialog-process-retry": "ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ",
+       "ooui-dialog-process-continue": "ಮುಂದುವರೆಸು"
 }
index ff739d7..fec4686 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.8.2
+ * OOjs UI v0.9.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-02-27T18:02:41Z
+ * Date: 2015-03-04T23:55:44Z
  */
 .oo-ui-progressBarWidget-slide-frames from {
        margin-left: -40%;
        margin-left: 0;
 }
 .oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       margin-right: -0.75em;
-       margin-left: -0.75em;
+       width: 0.9375em;
+       height: 0.9375em;
+       margin: 0.46875em;
 }
-.oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       margin-left: 0;
+       margin-left: 0.46875em;
 }
-.oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       width: 1.9em;
-       height: 1.9em;
+       width: 1.875em;
+       height: 1.875em;
 }
 .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus {
        box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.2);
        margin-right: 0.25em;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #757575;
+       color: #555555;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
        color: #444444;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-       color: #598ad1;
+       color: #0274ff;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
        color: #777777;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-       color: #00c697;
+       color: #00af89;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
        color: #777777;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-       color: #e81915;
+       color: #d11d13;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
        color: #777777;
 }
 .oo-ui-buttonElement-framed > input.oo-ui-buttonElement-button,
 .oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       line-height: 1.9em;
+       line-height: 1.875em;
 }
 .oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
        margin-left: -0.5em;
        margin-right: -0.5em;
 }
 .oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       margin-left: -0.5em;
        margin-right: 0.3em;
 }
+.oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+       /* -0.5 - 0.475 */
+       margin-left: -0.005em;
+       margin-right: -0.005em;
+}
+.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
+.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-iconElement:not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+       margin-left: 0.46875em;
+       margin-right: -0.275em;
+}
 .oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
        color: #ffffff;
        background: #dddddd;
        border: 1px solid #dddddd;
 }
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
-       color: #757575;
+       color: #555555;
        background-color: #ffffff;
-       border: solid 1px #cdcdcd;
+       border: 1px solid #cdcdcd;
 }
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover {
        box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2), 0 0.1em 0 0 rgba(0, 0, 0, 0.2);
        display: block;
        background: rgba(0, 0, 0, 0.4);
 }
+.oo-ui-iconElement .oo-ui-iconElement-icon,
+.oo-ui-iconElement.oo-ui-iconElement-icon {
+       background-size: contain;
+       background-position: center center;
+}
+.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
+.oo-ui-indicatorElement.oo-ui-indicatorElement-indicator {
+       background-size: contain;
+       background-position: center center;
+}
 .oo-ui-lookupElement > .oo-ui-menuSelectWidget {
        z-index: 1;
        width: 100%;
        padding: 1.5em;
 }
 .oo-ui-bookletLayout-outlinePanel {
-       border-right: solid 1px #dddddd;
+       border-right: 1px solid #dddddd;
 }
 .oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget {
        box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25);
        font-weight: bold;
 }
 .oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label {
-       padding-left: 1.75em;
-       line-height: 1.33em;
+       padding-left: 2em;
+       line-height: 1.8em;
 }
 .oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
        left: 0;
        top: 0.25em;
-       width: 1.5em;
-       height: 1.5em;
+       width: 1.875em;
+       height: 1.875em;
 }
 .oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget {
        margin-right: 0;
 .oo-ui-formLayout + .oo-ui-formLayout {
        margin-top: 2em;
 }
-.oo-ui-gridLayout {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 0;
-}
 .oo-ui-menuLayout {
        position: absolute;
        top: 0;
        margin-left: 1.25em;
        font-size: 0.8em;
 }
+.oo-ui-toolGroupTool > .oo-ui-popupToolGroup {
+       margin: 0;
+}
+.oo-ui-toolGroupTool > .oo-ui-popupToolGroup > .oo-ui-popupToolGroup-handle {
+       height: 1.5em;
+       padding: 0.25em;
+}
+.oo-ui-toolGroupTool > .oo-ui-popupToolGroup > .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
+       height: 1.5em;
+       width: 1.5em;
+       opacity: 0.8;
+}
+.oo-ui-toolGroupTool > .oo-ui-popupToolGroup.oo-ui-labelElement > .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
+       line-height: 2.1em;
+}
 .oo-ui-toolGroup {
        display: inline-block;
        vertical-align: middle;
 .oo-ui-barToolGroup > .oo-ui-labelElement-label {
        display: none;
 }
-.oo-ui-barToolGroup .oo-ui-tool {
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool {
        display: inline-block;
        position: relative;
        vertical-align: top;
 }
-.oo-ui-barToolGroup .oo-ui-tool-link {
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
        display: block;
 }
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-iconElement-icon {
        display: block;
 }
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-accel,
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-accel,
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-title {
        display: none;
 }
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link {
        cursor: default;
 }
-.oo-ui-barToolGroup .oo-ui-tool-title,
-.oo-ui-barToolGroup .oo-ui-tool-accel {
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link > .oo-ui-tool-title,
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link > .oo-ui-tool-accel {
        display: none;
 }
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
+.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
        cursor: pointer;
 }
-.oo-ui-barToolGroup .oo-ui-tool-link {
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
        height: 1.5em;
        padding: 0.25em;
 }
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
+.oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-iconElement-icon {
        height: 1.5em;
        width: 1.5em;
        opacity: 0.8;
 }
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-active.oo-ui-widget-enabled {
+.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-tool-active.oo-ui-widget-enabled {
        background-color: #eeeeee;
 }
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
+.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link .oo-ui-iconElement-icon {
        opacity: 0.2;
 }
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconElement-icon {
+.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled > .oo-ui-tool-link .oo-ui-iconElement-icon {
        opacity: 0.8;
 }
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconElement-icon {
+.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled:hover > .oo-ui-tool-link .oo-ui-iconElement-icon {
        opacity: 1;
 }
-.oo-ui-barToolGroup.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
+.oo-ui-barToolGroup.oo-ui-widget-disabled > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-iconElement-icon {
        opacity: 0.2;
 }
 .oo-ui-popupToolGroup {
        position: relative;
        height: 2em;
-       min-width: 2.5em;
+       min-width: 2em;
 }
 .oo-ui-popupToolGroup-handle {
        display: block;
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel:not(:empty) {
        padding-left: 3em;
 }
+.oo-ui-popupToolGroup.oo-ui-iconElement {
+       min-width: 2.5em;
+}
 .oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
        min-width: 3.5em;
 }
 .oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
        margin-right: 2.25em;
 }
-.oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-       top: 0;
-       width: 2em;
-       height: 2em;
-       opacity: 0.8;
-}
 .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
+       top: 0;
        right: 0;
+       width: 0.75em;
+       height: 0.75em;
+       margin: 0.625em;
 }
 .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
+       top: 0;
        left: 0.25em;
+       width: 1.5em;
+       height: 1.5em;
+       margin: 0.25em;
 }
 .oo-ui-popupToolGroup-header {
        line-height: 2.6em;
        top: 2em;
        background-color: white;
 }
+.oo-ui-popupToolGroup .oo-ui-tool-link {
+       padding: 0.25em 0 0.25em 0.25em;
+}
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       height: 2em;
-       width: 2em;
-       min-width: 2em;
+       height: 1.5em;
+       width: 1.5em;
+       min-width: 1.5em;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-       padding-left: 0.25em;
+       padding-left: 0.5em;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel,
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
        cursor: default;
 }
 .oo-ui-listToolGroup .oo-ui-tool {
-       padding: 0 0.5em 0 0.25em;
+       padding: 0 0.75em 0 0.25em;
 }
 .oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
        background-color: #eeeeee;
        box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2), 0 0.1em 0 0 rgba(0, 0, 0, 0.1);
 }
 .oo-ui-menuToolGroup {
-       border: solid 1px #cccccc;
+       border: 1px solid #cccccc;
        border-radius: 0.1em;
 }
 .oo-ui-menuToolGroup .oo-ui-tool {
        border-color: #aaaaaa;
 }
 .oo-ui-menuToolGroup .oo-ui-tool {
-       padding: 0 0.75em 0 0.25em;
+       padding: 0 1em 0 0.25em;
 }
 .oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
        background-image: none;
        pointer-events: none;
 }
 .oo-ui-toolbar-bar {
-       border-bottom: solid 4px rgba(0, 0, 0, 0.15);
+       border-bottom: 4px solid rgba(0, 0, 0, 0.15);
        background: #ffffff;
 }
 .oo-ui-toolbar-bar .oo-ui-toolbar-bar {
 }
 .oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
 .oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-       top: 50%;
-       width: 2em;
-       height: 2em;
-       margin-top: -1em;
+       top: 0;
+       height: 100%;
 }
 .oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon {
+       width: 1.875em;
        left: 0.5em;
 }
 .oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
+       width: 0.9375em;
        right: 0.5em;
 }
 .oo-ui-buttonSelectWidget {
        vertical-align: middle;
 }
 .oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-       height: 1.9em;
+       height: 1.875em;
 }
-.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       height: 1.9em;
+.oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
        margin-top: 0;
 }
 .oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,
        background-position: center center;
        background-repeat: no-repeat;
        line-height: 2.5em;
-       height: 1.9em;
-       width: 1.9em;
+       height: 1.875em;
+       width: 1.875em;
 }
 .oo-ui-iconWidget.oo-ui-widget-disabled {
        opacity: 0.2;
        background-position: center center;
        background-repeat: no-repeat;
        line-height: 2.5em;
-       height: 1.9em;
-       width: 1.9em;
+       height: 0.9375em;
+       width: 0.9375em;
+       margin: 0.46875em;
 }
 .oo-ui-indicatorWidget.oo-ui-widget-disabled {
        opacity: 0.2;
 }
 .oo-ui-progressBarWidget {
        max-width: 50em;
-       border: solid 1px #cccccc;
+       border: 1px solid #cccccc;
        border-radius: 0.1em;
        overflow: hidden;
 }
        overflow: hidden;
 }
 .oo-ui-popupWidget-popup {
-       border: solid 1px #aaaaaa;
+       border: 1px solid #aaaaaa;
        border-radius: 0.2em;
        background-color: #ffffff;
        box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2);
        -webkit-box-sizing: border-box;
           -moz-box-sizing: border-box;
                box-sizing: border-box;
-       border: solid 1px #cccccc;
+       border: 1px solid #cccccc;
 }
 .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover,
 .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus {
 }
 .oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
        left: 0.4em;
-       width: 2em;
+       width: 1.875em;
+       margin-left: 0.1em;
        height: 100%;
        background-position: right center;
 }
 .oo-ui-textInputWidget.oo-ui-indicatorElement input,
 .oo-ui-textInputWidget.oo-ui-indicatorElement textarea {
-       padding-right: 1.9em;
+       padding-right: 1.875em;
 }
 .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       width: 1.6em;
+       width: 0.9375em;
+       margin: 0 0.775em;
        height: 100%;
-       background-position: left center;
 }
 .oo-ui-textInputWidget > .oo-ui-labelElement-label {
        padding: 0.4em;
        position: absolute;
        background: #ffffff;
        margin-top: -1px;
-       border: solid 1px #aaaaaa;
+       border: 1px solid #aaaaaa;
        border-radius: 0 0 0.2em 0.2em;
        padding-bottom: 0.25em;
        box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2), 0 0.1em 0 0 rgba(0, 0, 0, 0.2);
 }
 .oo-ui-dropdownWidget-handle {
        height: 2.5em;
-       border: solid 1px #cccccc;
+       border: 1px solid #cccccc;
        border-radius: 0.1em;
 }
 .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
        line-height: 2.5em;
        margin: 0 1em;
 }
-.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator,
+.oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
+       top: 0;
+       width: 0.9375em;
+       height: 0.9375em;
+       margin: 0.775em;
+}
 .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
        top: 0;
-       width: 2.5em;
-       height: 2.5em;
+       width: 1.875em;
+       height: 1.875em;
+       margin: 0.3em;
 }
 .oo-ui-dropdownWidget:hover .oo-ui-dropdownWidget-handle {
        border-color: #aaaaaa;
 .oo-ui-comboBoxWidget .oo-ui-textInputWidget textarea {
        height: 2.35em;
 }
-.oo-ui-comboBoxWidget .oo-ui-textInputWidget.oo-ui-indicatorElement {
-       padding-right: 1.9em;
-}
-.oo-ui-comboBoxWidget .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       width: 1.9em;
-       background-position: center center;
-       border: solid 1px #cccccc;
-       border-left: none;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-}
 .oo-ui-searchWidget-query {
        position: absolute;
        top: 0;
 .oo-ui-searchWidget-query {
        height: 4em;
        padding: 0 1em;
-       border-bottom: solid 1px #cccccc;
+       border-bottom: 1px solid #cccccc;
 }
 .oo-ui-searchWidget-query .oo-ui-textInputWidget {
        margin: 0.75em 0;
        padding: 0;
        background: none;
 }
-.oo-ui-window-overlay,
-.oo-ui-window-inner-overlay {
+.oo-ui-window-overlay {
        position: absolute;
        top: 0;
        /* @noflip */
        z-index: 1;
        bottom: 0;
 }
-.oo-ui-dialog-content > .oo-ui-window-inner-overlay {
-       z-index: 3;
-}
 .oo-ui-dialog-content > .oo-ui-window-body {
        outline: 1px solid #aaaaaa;
 }
        text-align: left;
 }
 .oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-       border-right: solid 1px #e5e5e5;
+       border-right: 1px solid #e5e5e5;
 }
 .oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
        border-right-width: 0;
 }
 .oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-       border-bottom: solid 1px #e5e5e5;
+       border-bottom: 1px solid #e5e5e5;
 }
 .oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
        border-bottom-width: 0;
 }
 .oo-ui-processDialog-location {
        padding: 0.75em 0;
-       height: 1.9em;
+       height: 1.875em;
        cursor: default;
        text-align: center;
 }
 .oo-ui-processDialog-title {
        font-weight: bold;
-       line-height: 1.9em;
+       line-height: 1.875em;
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button,
 .oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonElement-button {
-       min-width: 1.9em;
-       min-height: 1.9em;
+       min-width: 1.875em;
+       min-height: 1.875em;
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labelElement-label,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labelElement-label,
 .oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labelElement-label {
-       line-height: 1.9em;
+       line-height: 1.875em;
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
        text-align: left;
        margin: 1em;
        padding: 1em;
-       border: solid 1px #ff9e9e;
+       border: 1px solid #ff9e9e;
        background-color: #fff7f7;
        border-radius: 0.25em;
 }
                transform: scale(1);
 }
 .oo-ui-windowManager-modal.oo-ui-windowManager-floating > .oo-ui-dialog > .oo-ui-window-frame {
-       border: solid 1px #aaaaaa;
+       border: 1px solid #aaaaaa;
        border-radius: 0.2em;
        box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2);
 }
index 2793806..bc78b32 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.8.2
+ * OOjs UI v0.9.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-02-27T18:02:31Z
+ * Date: 2015-03-04T23:55:34Z
  */
 /**
  * @class
index 8bb14ec..13fbd72 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.8.2
+ * OOjs UI v0.9.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-02-27T18:02:31Z
+ * Date: 2015-03-04T23:55:34Z
  */
 ( function ( OO ) {
 
@@ -117,6 +117,21 @@ OO.ui.contains = function ( containers, contained, matchContainers ) {
        return false;
 };
 
+/**
+ * Reconstitute a JavaScript object corresponding to a widget created by
+ * the PHP implementation.
+ *
+ * This is an alias for `OO.ui.Element.static.infuse()`.
+ *
+ * @param {string|HTMLElement|jQuery} idOrNode
+ *   A DOM id (if a string) or node for the widget to infuse.
+ * @return {OO.ui.Element}
+ *   The `OO.ui.Element` corresponding to this (infusable) document node.
+ */
+OO.ui.infuse = function ( idOrNode ) {
+       return OO.ui.Element.static.infuse( idOrNode );
+};
+
 ( function () {
        /**
         * Message store for the default implementation of OO.ui.msg
@@ -867,6 +882,103 @@ OO.ui.Element.static.tagName = 'div';
 
 /* Static Methods */
 
+/**
+ * Reconstitute a JavaScript object corresponding to a widget created
+ * by the PHP implementation.
+ *
+ * @param {string|HTMLElement|jQuery} idOrNode
+ *   A DOM id (if a string) or node for the widget to infuse.
+ * @return {OO.ui.Element}
+ *   The `OO.ui.Element` corresponding to this (infusable) document node.
+ *   For `Tag` objects emitted on the HTML side (used occasionally for content)
+ *   the value returned is a newly-created Element wrapping around the existing
+ *   DOM node.
+ */
+OO.ui.Element.static.infuse = function ( idOrNode ) {
+       var obj = OO.ui.Element.static.unsafeInfuse( idOrNode, true );
+       // Verify that the type matches up.
+       // FIXME: uncomment after T89721 is fixed (see T90929)
+       /*
+       if ( !( obj instanceof this['class'] ) ) {
+               throw new Error( 'Infusion type mismatch!' );
+       }
+       */
+       return obj;
+};
+
+/**
+ * Implementation helper for `infuse`; skips the type check and has an
+ * extra property so that only the top-level invocation touches the DOM.
+ * @private
+ * @param {string|HTMLElement|jQuery} idOrNode
+ * @param {boolean} top True only for top-level invocation.
+ * @return {OO.ui.Element}
+ */
+OO.ui.Element.static.unsafeInfuse = function ( idOrNode, top ) {
+       // look for a cached result of a previous infusion.
+       var id, $elem, data, cls, obj;
+       if ( typeof idOrNode === 'string' ) {
+               id = idOrNode;
+               $elem = $( document.getElementById( id ) );
+       } else {
+               $elem = $( idOrNode );
+               id = $elem.attr( 'id' );
+       }
+       data = $elem.data( 'ooui-infused' );
+       if ( data ) {
+               // cached!
+               if ( data === true ) {
+                       throw new Error( 'Circular dependency! ' + id );
+               }
+               return data;
+       }
+       if ( !$elem.length ) {
+               throw new Error( 'Widget not found: ' + id );
+       }
+       data = $elem.attr( 'data-ooui' );
+       if ( !data ) {
+               throw new Error( 'No infusion data found: ' + id );
+       }
+       try {
+               data = $.parseJSON( data );
+       } catch ( _ ) {
+               data = null;
+       }
+       if ( !( data && data._ ) ) {
+               throw new Error( 'No valid infusion data found: ' + id );
+       }
+       if ( data._ === 'Tag' ) {
+               // Special case: this is a raw Tag; wrap existing node, don't rebuild.
+               return new OO.ui.Element( { $element: $elem } );
+       }
+       cls = OO.ui[data._];
+       if ( !cls ) {
+               throw new Error( 'Unknown widget type: ' + id );
+       }
+       $elem.data( 'ooui-infused', true ); // prevent loops
+       data.id = id; // implicit
+       data = OO.copy( data, null, function deserialize( value ) {
+               if ( OO.isPlainObject( value ) ) {
+                       if ( value.tag ) {
+                               return OO.ui.Element.static.unsafeInfuse( value.tag, false );
+                       }
+                       if ( value.html ) {
+                               return new OO.ui.HtmlSnippet( value.html );
+                       }
+               }
+       } );
+       // jscs:disable requireCapitalizedConstructors
+       obj = new cls( data ); // rebuild widget
+       // now replace old DOM with this new DOM.
+       if ( top ) {
+               $elem.replaceWith( obj.$element );
+       }
+       obj.$element.data( 'ooui-infused', obj );
+       // set the 'data-ooui' attribute so we can identify infused widgets
+       obj.$element.attr( 'data-ooui', '' );
+       return obj;
+};
+
 /**
  * Get a jQuery function within a specific document.
  *
@@ -1995,7 +2107,6 @@ OO.ui.Window.prototype.initialize = function () {
        this.$head = $( '<div>' );
        this.$body = $( '<div>' );
        this.$foot = $( '<div>' );
-       this.$innerOverlay = $( '<div>' );
        this.dir = OO.ui.Element.static.getDir( this.$content ) || 'ltr';
        this.$document = $( this.getElementDocument() );
 
@@ -2006,8 +2117,7 @@ OO.ui.Window.prototype.initialize = function () {
        this.$head.addClass( 'oo-ui-window-head' );
        this.$body.addClass( 'oo-ui-window-body' );
        this.$foot.addClass( 'oo-ui-window-foot' );
-       this.$innerOverlay.addClass( 'oo-ui-window-inner-overlay' );
-       this.$content.append( this.$head, this.$body, this.$foot, this.$innerOverlay );
+       this.$content.append( this.$head, this.$body, this.$foot );
 
        return this;
 };
@@ -2295,7 +2405,6 @@ OO.ui.Dialog.prototype.onActionResize = function () {
  */
 OO.ui.Dialog.prototype.onActionClick = function ( action ) {
        if ( !this.isPending() ) {
-               this.currentAction = action;
                this.executeAction( action.getAction() );
        }
 };
@@ -2437,6 +2546,7 @@ OO.ui.Dialog.prototype.detachActions = function () {
  */
 OO.ui.Dialog.prototype.executeAction = function ( action ) {
        this.pushPending();
+       this.currentAction = action;
        return this.getActionProcess( action ).execute()
                .always( this.popPending.bind( this ) );
 };
@@ -2515,6 +2625,7 @@ OO.ui.WindowManager = function OoUiWindowManager( config ) {
        this.preparingToOpen = null;
        this.preparingToClose = null;
        this.currentWindow = null;
+       this.globalEvents = false;
        this.$ariaHidden = null;
        this.onWindowResizeTimeout = null;
        this.onWindowResizeHandler = this.onWindowResize.bind( this );
@@ -3019,13 +3130,21 @@ OO.ui.WindowManager.prototype.updateWindowSize = function ( win ) {
 OO.ui.WindowManager.prototype.toggleGlobalEvents = function ( on ) {
        on = on === undefined ? !!this.globalEvents : !!on;
 
+       var $body = $( this.getElementDocument().body ),
+               // We could have multiple window managers open to only modify
+               // the body class at the bottom of the stack
+               stackDepth = $body.data( 'windowManagerGlobalEvents' ) || 0 ;
+
        if ( on ) {
                if ( !this.globalEvents ) {
                        $( this.getElementWindow() ).on( {
                                // Start listening for top-level window dimension changes
                                'orientationchange resize': this.onWindowResizeHandler
                        } );
-                       $( this.getElementDocument().body ).css( 'overflow', 'hidden' );
+                       if ( stackDepth === 0 ) {
+                               $body.css( 'overflow', 'hidden' );
+                       }
+                       stackDepth++;
                        this.globalEvents = true;
                }
        } else if ( this.globalEvents ) {
@@ -3033,9 +3152,13 @@ OO.ui.WindowManager.prototype.toggleGlobalEvents = function ( on ) {
                        // Stop listening for top-level window dimension changes
                        'orientationchange resize': this.onWindowResizeHandler
                } );
-               $( this.getElementDocument().body ).css( 'overflow', '' );
+               stackDepth--;
+               if ( stackDepth === 0 ) {
+                       $( this.getElementDocument().body ).css( 'overflow', '' );
+               }
                this.globalEvents = false;
        }
+       $body.data( 'windowManagerGlobalEvents', stackDepth );
 
        return this;
 };
@@ -3175,84 +3298,6 @@ OO.ui.HtmlSnippet.prototype.toString = function () {
        return this.content;
 };
 
-/**
- * Reconstitute a JavaScript object corresponding to a widget created
- * by the PHP implementation.
- *
- * @member OO.ui
- * @param {string|HTMLElement|jQuery} idOrNode
- *   A DOM id (if a string) or node for the widget to infuse.
- * @return {OO.ui.Element}
- *   The `OO.ui.Element` corresponding to this (infusable) document node.
- *   For `Tag` objects emitted on the HTML side (used occasionally for content)
- *   the value returned is a newly-created Element wrapping around the existing
- *   DOM node.
- */
-OO.ui.infuse = function ( idOrNode, dontReplace ) {
-       // look for a cached result of a previous infusion.
-       var id, $elem, data, cls, obj;
-       if ( typeof idOrNode === 'string' ) {
-               id = idOrNode;
-               $elem = $( document.getElementById( id ) );
-       } else {
-               $elem = $( idOrNode );
-               id = $elem.attr( 'id' );
-       }
-       data = $elem.data( 'ooui-infused' );
-       if ( data ) {
-               // cached!
-               if ( data === true ) {
-                       throw new Error( 'Circular dependency! ' + id );
-               }
-               return data;
-       }
-       if ( !$elem.length ) {
-               throw new Error( 'Widget not found: ' + id );
-       }
-       data = $elem.attr( 'data-ooui' );
-       if ( !data ) {
-               throw new Error( 'No infusion data found: ' + id );
-       }
-       try {
-               data = $.parseJSON( data );
-       } catch ( _ ) {
-               data = null;
-       }
-       if ( !( data && data._ ) ) {
-               throw new Error( 'No valid infusion data found: ' + id );
-       }
-       if ( data._ === 'Tag' ) {
-               // Special case: this is a raw Tag; wrap existing node, don't rebuild.
-               return new OO.ui.Element( { $element: $elem } );
-       }
-       cls = OO.ui[data._];
-       if ( !cls ) {
-               throw new Error( 'Unknown widget type: ' + id );
-       }
-       $elem.data( 'ooui-infused', true ); // prevent loops
-       data.id = id; // implicit
-       data = OO.copy( data, null, function deserialize( value ) {
-               if ( OO.isPlainObject( value ) ) {
-                       if ( value.tag ) {
-                               return OO.ui.infuse( value.tag, 'rebuilding' );
-                       }
-                       if ( value.html ) {
-                               return new OO.ui.HtmlSnippet( value.html );
-                       }
-               }
-       } );
-       // jscs:disable requireCapitalizedConstructors
-       obj = new cls( data ); // rebuild widget
-       // now replace old DOM with this new DOM.
-       if ( !dontReplace ) {
-               $elem.replaceWith( obj.$element );
-       }
-       obj.$element.data( 'ooui-infused', obj );
-       // set the 'data-ooui' attribute so we can identify infused widgets
-       obj.$element.attr( 'data-ooui', '' );
-       return obj;
-};
-
 /**
  * A list of functions, called in sequence.
  *
@@ -5502,7 +5547,10 @@ OO.ui.LookupElement.prototype.getLookupMenuOptionsFromData = function () {
 };
 
 /**
- * Element containing an OO.ui.PopupWidget object.
+ * PopupElement is mixed into other classes to generate a {@link OO.ui.PopupWidget popup widget}.
+ * A popup is a container for content. It is overlaid and positioned absolutely. By default, each
+ * popup has an anchor, which is an arrow-like protrusion that points toward the popup’s origin.
+ * See {@link OO.ui.PopupWidget PopupWidget} for an example.
  *
  * @abstract
  * @class
@@ -6794,6 +6842,9 @@ OO.ui.ToolGroup.prototype.populate = function () {
                        // Tool is available or is already in this group
                        ( this.toolbar.isToolAvailable( name ) || this.tools[ name ] )
                ) {
+                       // Hack to prevent infinite recursion via ToolGroupTool. We need to reserve the tool before
+                       // creating it, but we can't call reserveTool() yet because we haven't created the tool.
+                       this.toolbar.tools[ name ] = true;
                        tool = this.tools[ name ];
                        if ( !tool ) {
                                // Auto-initialize tools on first use
@@ -7191,7 +7242,7 @@ OO.ui.ProcessDialog.prototype.onDismissErrorButtonClick = function () {
  */
 OO.ui.ProcessDialog.prototype.onRetryButtonClick = function () {
        this.hideErrors();
-       this.executeAction( this.currentAction.getAction() );
+       this.executeAction( this.currentAction );
 };
 
 /**
@@ -7310,8 +7361,9 @@ OO.ui.ProcessDialog.prototype.fitLabel = function () {
  * @param {OO.ui.Error[]} errors Errors to be handled
  */
 OO.ui.ProcessDialog.prototype.showErrors = function ( errors ) {
-       var i, len, $item,
+       var i, len, $item, actions,
                items = [],
+               abilities = {},
                recoverable = true,
                warning = false;
 
@@ -7329,9 +7381,15 @@ OO.ui.ProcessDialog.prototype.showErrors = function ( errors ) {
        }
        this.$errorItems = $( items );
        if ( recoverable ) {
-               this.retryButton.clearFlags().setFlags( this.currentAction.getFlags() );
+               abilities[this.currentAction] = true;
+               // Copy the flags from the first matching action
+               actions = this.actions.get( { actions: this.currentAction } );
+               if ( actions.length ) {
+                       this.retryButton.clearFlags().setFlags( actions[0].getFlags() );
+               }
        } else {
-               this.currentAction.setDisabled( true );
+               abilities[this.currentAction] = false;
+               this.actions.setAbilities( abilities );
        }
        if ( warning ) {
                this.retryButton.setLabel( OO.ui.msg( 'ooui-dialog-process-continue' ) );
@@ -7348,8 +7406,22 @@ OO.ui.ProcessDialog.prototype.showErrors = function ( errors ) {
  */
 OO.ui.ProcessDialog.prototype.hideErrors = function () {
        this.$errors.addClass( 'oo-ui-element-hidden' );
-       this.$errorItems.remove();
-       this.$errorItems = null;
+       if ( this.$errorItems ) {
+               this.$errorItems.remove();
+               this.$errorItems = null;
+       }
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.ProcessDialog.prototype.getTeardownProcess = function ( data ) {
+       // Parent method
+       return OO.ui.ProcessDialog.super.prototype.getTeardownProcess.call( this, data )
+               .first( function () {
+                       // Make sure to hide errors
+                       this.hideErrors();
+               }, this );
 };
 
 /**
@@ -7359,14 +7431,14 @@ OO.ui.ProcessDialog.prototype.hideErrors = function () {
  * Field layouts can be configured with help text and/or labels. Labels are aligned in one of four ways:
  *
  * - **left**: The label is placed before the field-widget and aligned with the left margin.
- *             A left-alignment is used for forms with many fields.
+ *   A left-alignment is used for forms with many fields.
  * - **right**: The label is placed before the field-widget and aligned to the right margin.
- *              A right-alignment is used for long but familiar forms which users tab through,
- *              verifying the current field with a quick glance at the label.
+ *   A right-alignment is used for long but familiar forms which users tab through,
+ *   verifying the current field with a quick glance at the label.
  * - **top**: The label is placed above the field-widget. A top-alignment is used for brief forms
- *            that users fill out from top to bottom.
+ *   that users fill out from top to bottom.
  * - **inline**: The label is placed after the field-widget and aligned to the left.
                An inline-alignment is best used with checkboxes or radio buttons.
*   An inline-alignment is best used with checkboxes or radio buttons.
  *
  * Help text is accessed via a help icon that appears in the upper right corner of the rendered field layout.
  * Please see the [OOjs UI documentation on MediaWiki] [1] for examples and more information.
@@ -7537,9 +7609,6 @@ OO.ui.ActionFieldLayout = function OoUiActionFieldLayout( fieldWidget, buttonWid
        // Parent constructor
        OO.ui.ActionFieldLayout.super.call( this, fieldWidget, config );
 
-       // Mixin constructors
-       OO.ui.LabelElement.call( this, config );
-
        // Properties
        this.fieldWidget = fieldWidget;
        this.buttonWidget = buttonWidget;
@@ -7666,11 +7735,7 @@ OO.mixinClass( OO.ui.FormLayout, OO.ui.GroupElement );
 /* Events */
 
 /**
- * The HTML form was submitted. If the submission is handled, call `e.preventDefault()` to prevent
- * HTML form submission.
- *
  * @event submit
- * @param {jQuery.Event} e Submit event
  */
 
 /* Static Properties */
@@ -7685,258 +7750,95 @@ OO.ui.FormLayout.static.tagName = 'form';
  * @param {jQuery.Event} e Submit event
  * @fires submit
  */
-OO.ui.FormLayout.prototype.onFormSubmit = function ( e ) {
-       this.emit( 'submit', e );
+OO.ui.FormLayout.prototype.onFormSubmit = function () {
+       this.emit( 'submit' );
+       return false;
 };
 
 /**
- * Layout made of proportionally sized columns and rows.
+ * Layout with a content and menu area.
+ *
+ * The menu area can be positioned at the top, after, bottom or before. The content area will fill
+ * all remaining space.
  *
  * @class
  * @extends OO.ui.Layout
- * @deprecated Use OO.ui.MenuLayout or plain CSS instead.
  *
  * @constructor
- * @param {OO.ui.PanelLayout[]} panels Panels in the grid
  * @param {Object} [config] Configuration options
- * @cfg {number[]} [widths] Widths of columns as ratios
- * @cfg {number[]} [heights] Heights of rows as ratios
+ * @cfg {number|string} [menuSize='18em'] Size of menu in pixels or any CSS unit
+ * @cfg {boolean} [showMenu=true] Show menu
+ * @cfg {string} [position='before'] Position of menu, either `top`, `after`, `bottom` or `before`
+ * @cfg {boolean} [collapse] Collapse the menu out of view
  */
-OO.ui.GridLayout = function OoUiGridLayout( panels, config ) {
-       // Allow passing positional parameters inside the config object
-       if ( OO.isPlainObject( panels ) && config === undefined ) {
-               config = panels;
-               panels = config.panels;
-       }
-
-       var i, len, widths;
+OO.ui.MenuLayout = function OoUiMenuLayout( config ) {
+       var positions = this.constructor.static.menuPositions;
 
        // Configuration initialization
        config = config || {};
 
        // Parent constructor
-       OO.ui.GridLayout.super.call( this, config );
+       OO.ui.MenuLayout.super.call( this, config );
 
        // Properties
-       this.panels = [];
-       this.widths = [];
-       this.heights = [];
+       this.showMenu = config.showMenu !== false;
+       this.menuSize = config.menuSize || '18em';
+       this.menuPosition = positions[ config.menuPosition ] || positions.before;
+
+       /**
+        * Menu DOM node
+        *
+        * @property {jQuery}
+        */
+       this.$menu = $( '<div>' );
+       /**
+        * Content DOM node
+        *
+        * @property {jQuery}
+        */
+       this.$content = $( '<div>' );
 
        // Initialization
-       this.$element.addClass( 'oo-ui-gridLayout' );
-       for ( i = 0, len = panels.length; i < len; i++ ) {
-               this.panels.push( panels[ i ] );
-               this.$element.append( panels[ i ].$element );
-       }
-       if ( config.widths || config.heights ) {
-               this.layout( config.widths || [ 1 ], config.heights || [ 1 ] );
-       } else {
-               // Arrange in columns by default
-               widths = this.panels.map( function () { return 1; } );
-               this.layout( widths, [ 1 ] );
-       }
+       this.toggleMenu( this.showMenu );
+       this.updateSizes();
+       this.$menu
+               .addClass( 'oo-ui-menuLayout-menu' )
+               .css( this.menuPosition.sizeProperty, this.menuSize );
+       this.$content.addClass( 'oo-ui-menuLayout-content' );
+       this.$element
+               .addClass( 'oo-ui-menuLayout ' + this.menuPosition.className )
+               .append( this.$content, this.$menu );
 };
 
 /* Setup */
 
-OO.inheritClass( OO.ui.GridLayout, OO.ui.Layout );
-
-/* Events */
+OO.inheritClass( OO.ui.MenuLayout, OO.ui.Layout );
 
-/**
- * @event layout
- */
+/* Static Properties */
 
-/**
- * @event update
- */
+OO.ui.MenuLayout.static.menuPositions = {
+       top: {
+               sizeProperty: 'height',
+               className: 'oo-ui-menuLayout-top'
+       },
+       after: {
+               sizeProperty: 'width',
+               className: 'oo-ui-menuLayout-after'
+       },
+       bottom: {
+               sizeProperty: 'height',
+               className: 'oo-ui-menuLayout-bottom'
+       },
+       before: {
+               sizeProperty: 'width',
+               className: 'oo-ui-menuLayout-before'
+       }
+};
 
 /* Methods */
 
 /**
- * Set grid dimensions.
- *
- * @param {number[]} widths Widths of columns as ratios
- * @param {number[]} heights Heights of rows as ratios
- * @fires layout
- * @throws {Error} If grid is not large enough to fit all panels
- */
-OO.ui.GridLayout.prototype.layout = function ( widths, heights ) {
-       var x, y,
-               xd = 0,
-               yd = 0,
-               cols = widths.length,
-               rows = heights.length;
-
-       // Verify grid is big enough to fit panels
-       if ( cols * rows < this.panels.length ) {
-               throw new Error( 'Grid is not large enough to fit ' + this.panels.length + 'panels' );
-       }
-
-       // Sum up denominators
-       for ( x = 0; x < cols; x++ ) {
-               xd += widths[ x ];
-       }
-       for ( y = 0; y < rows; y++ ) {
-               yd += heights[ y ];
-       }
-       // Store factors
-       this.widths = [];
-       this.heights = [];
-       for ( x = 0; x < cols; x++ ) {
-               this.widths[ x ] = widths[ x ] / xd;
-       }
-       for ( y = 0; y < rows; y++ ) {
-               this.heights[ y ] = heights[ y ] / yd;
-       }
-       // Synchronize view
-       this.update();
-       this.emit( 'layout' );
-};
-
-/**
- * Update panel positions and sizes.
- *
- * @fires update
- */
-OO.ui.GridLayout.prototype.update = function () {
-       var x, y, panel, width, height, dimensions,
-               i = 0,
-               top = 0,
-               left = 0,
-               cols = this.widths.length,
-               rows = this.heights.length;
-
-       for ( y = 0; y < rows; y++ ) {
-               height = this.heights[ y ];
-               for ( x = 0; x < cols; x++ ) {
-                       width = this.widths[ x ];
-                       panel = this.panels[ i ];
-                       dimensions = {
-                               width: ( width * 100 ) + '%',
-                               height: ( height * 100 ) + '%',
-                               top: ( top * 100 ) + '%'
-                       };
-                       // If RTL, reverse:
-                       if ( OO.ui.Element.static.getDir( document ) === 'rtl' ) {
-                               dimensions.right = ( left * 100 ) + '%';
-                       } else {
-                               dimensions.left = ( left * 100 ) + '%';
-                       }
-                       // HACK: Work around IE bug by setting visibility: hidden; if width or height is zero
-                       if ( width === 0 || height === 0 ) {
-                               dimensions.visibility = 'hidden';
-                       } else {
-                               dimensions.visibility = '';
-                       }
-                       panel.$element.css( dimensions );
-                       i++;
-                       left += width;
-               }
-               top += height;
-               left = 0;
-       }
-
-       this.emit( 'update' );
-};
-
-/**
- * Get a panel at a given position.
- *
- * The x and y position is affected by the current grid layout.
- *
- * @param {number} x Horizontal position
- * @param {number} y Vertical position
- * @return {OO.ui.PanelLayout} The panel at the given position
- */
-OO.ui.GridLayout.prototype.getPanel = function ( x, y ) {
-       return this.panels[ ( x * this.widths.length ) + y ];
-};
-
-/**
- * Layout with a content and menu area.
- *
- * The menu area can be positioned at the top, after, bottom or before. The content area will fill
- * all remaining space.
- *
- * @class
- * @extends OO.ui.Layout
- *
- * @constructor
- * @param {Object} [config] Configuration options
- * @cfg {number|string} [menuSize='18em'] Size of menu in pixels or any CSS unit
- * @cfg {boolean} [showMenu=true] Show menu
- * @cfg {string} [position='before'] Position of menu, either `top`, `after`, `bottom` or `before`
- * @cfg {boolean} [collapse] Collapse the menu out of view
- */
-OO.ui.MenuLayout = function OoUiMenuLayout( config ) {
-       var positions = this.constructor.static.menuPositions;
-
-       // Configuration initialization
-       config = config || {};
-
-       // Parent constructor
-       OO.ui.MenuLayout.super.call( this, config );
-
-       // Properties
-       this.showMenu = config.showMenu !== false;
-       this.menuSize = config.menuSize || '18em';
-       this.menuPosition = positions[ config.menuPosition ] || positions.before;
-
-       /**
-        * Menu DOM node
-        *
-        * @property {jQuery}
-        */
-       this.$menu = $( '<div>' );
-       /**
-        * Content DOM node
-        *
-        * @property {jQuery}
-        */
-       this.$content = $( '<div>' );
-
-       // Initialization
-       this.toggleMenu( this.showMenu );
-       this.updateSizes();
-       this.$menu
-               .addClass( 'oo-ui-menuLayout-menu' )
-               .css( this.menuPosition.sizeProperty, this.menuSize );
-       this.$content.addClass( 'oo-ui-menuLayout-content' );
-       this.$element
-               .addClass( 'oo-ui-menuLayout ' + this.menuPosition.className )
-               .append( this.$content, this.$menu );
-};
-
-/* Setup */
-
-OO.inheritClass( OO.ui.MenuLayout, OO.ui.Layout );
-
-/* Static Properties */
-
-OO.ui.MenuLayout.static.menuPositions = {
-       top: {
-               sizeProperty: 'height',
-               className: 'oo-ui-menuLayout-top'
-       },
-       after: {
-               sizeProperty: 'width',
-               className: 'oo-ui-menuLayout-after'
-       },
-       bottom: {
-               sizeProperty: 'height',
-               className: 'oo-ui-menuLayout-bottom'
-       },
-       before: {
-               sizeProperty: 'width',
-               className: 'oo-ui-menuLayout-before'
-       }
-};
-
-/* Methods */
-
-/**
- * Toggle menu.
+ * Toggle menu.
  *
  * @param {boolean} showMenu Show menu, omit to toggle
  * @chainable
@@ -9261,18 +9163,18 @@ OO.ui.MenuToolGroup.prototype.onUpdateState = function () {
  * @mixins OO.ui.PopupElement
  *
  * @constructor
- * @param {OO.ui.Toolbar} toolbar
+ * @param {OO.ui.ToolGroup} toolGroup
  * @param {Object} [config] Configuration options
  */
-OO.ui.PopupTool = function OoUiPopupTool( toolbar, config ) {
+OO.ui.PopupTool = function OoUiPopupTool( toolGroup, config ) {
        // Allow passing positional parameters inside the config object
-       if ( OO.isPlainObject( toolbar ) && config === undefined ) {
-               config = toolbar;
-               toolbar = config.toolbar;
+       if ( OO.isPlainObject( toolGroup ) && config === undefined ) {
+               config = toolGroup;
+               toolGroup = config.toolGroup;
        }
 
        // Parent constructor
-       OO.ui.PopupTool.super.call( this, toolbar, config );
+       OO.ui.PopupTool.super.call( this, toolGroup, config );
 
        // Mixin constructors
        OO.ui.PopupElement.call( this, config );
@@ -9313,417 +9215,185 @@ OO.ui.PopupTool.prototype.onUpdateState = function () {
 };
 
 /**
- * Mixin for OO.ui.Widget subclasses to provide OO.ui.GroupElement.
- *
- * Use together with OO.ui.ItemWidget to make disabled state inheritable.
+ * Tool that has a tool group inside. This is a bad workaround for the lack of proper hierarchical
+ * menus in toolbars (T74159).
  *
  * @abstract
  * @class
- * @extends OO.ui.GroupElement
- *
- * @constructor
- * @param {Object} [config] Configuration options
- */
-OO.ui.GroupWidget = function OoUiGroupWidget( config ) {
-       // Parent constructor
-       OO.ui.GroupWidget.super.call( this, config );
-};
-
-/* Setup */
-
-OO.inheritClass( OO.ui.GroupWidget, OO.ui.GroupElement );
-
-/* Methods */
-
-/**
- * Set the disabled state of the widget.
- *
- * This will also update the disabled state of child widgets.
- *
- * @param {boolean} disabled Disable widget
- * @chainable
- */
-OO.ui.GroupWidget.prototype.setDisabled = function ( disabled ) {
-       var i, len;
-
-       // Parent method
-       // Note: Calling #setDisabled this way assumes this is mixed into an OO.ui.Widget
-       OO.ui.Widget.prototype.setDisabled.call( this, disabled );
-
-       // During construction, #setDisabled is called before the OO.ui.GroupElement constructor
-       if ( this.items ) {
-               for ( i = 0, len = this.items.length; i < len; i++ ) {
-                       this.items[ i ].updateDisabled();
-               }
-       }
-
-       return this;
-};
-
-/**
- * Mixin for widgets used as items in widgets that inherit OO.ui.GroupWidget.
- *
- * Item widgets have a reference to a OO.ui.GroupWidget while they are attached to the group. This
- * allows bidirectional communication.
- *
- * Use together with OO.ui.GroupWidget to make disabled state inheritable.
- *
- * @abstract
- * @class
- *
- * @constructor
- */
-OO.ui.ItemWidget = function OoUiItemWidget() {
-       //
-};
-
-/* Methods */
-
-/**
- * Check if widget is disabled.
- *
- * Checks parent if present, making disabled state inheritable.
- *
- * @return {boolean} Widget is disabled
- */
-OO.ui.ItemWidget.prototype.isDisabled = function () {
-       return this.disabled ||
-               ( this.elementGroup instanceof OO.ui.Widget && this.elementGroup.isDisabled() );
-};
-
-/**
- * Set group element is in.
- *
- * @param {OO.ui.GroupElement|null} group Group element, null if none
- * @chainable
- */
-OO.ui.ItemWidget.prototype.setElementGroup = function ( group ) {
-       // Parent method
-       // Note: Calling #setElementGroup this way assumes this is mixed into an OO.ui.Element
-       OO.ui.Element.prototype.setElementGroup.call( this, group );
-
-       // Initialize item disabled states
-       this.updateDisabled();
-
-       return this;
-};
-
-/**
- * Mixin that adds a menu showing suggested values for a text input.
- *
- * Subclasses must handle `select` and `choose` events on #lookupMenu to make use of selections.
- *
- * Subclasses that set the value of #lookupInput from their `choose` or `select` handler should
- * be aware that this will cause new suggestions to be looked up for the new value. If this is
- * not desired, disable lookups with #setLookupsDisabled, then set the value, then re-enable lookups.
- *
- * @class
- * @abstract
- * @deprecated Use OO.ui.LookupElement instead.
+ * @extends OO.ui.Tool
  *
  * @constructor
- * @param {OO.ui.TextInputWidget} input Input widget
+ * @param {OO.ui.ToolGroup} toolGroup
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$overlay] Overlay for dropdown; defaults to relative positioning
- * @cfg {jQuery} [$container=input.$element] Element to render menu under
  */
-OO.ui.LookupInputWidget = function OoUiLookupInputWidget( input, config ) {
+OO.ui.ToolGroupTool = function OoUiToolGroupTool( toolGroup, config ) {
        // Allow passing positional parameters inside the config object
-       if ( OO.isPlainObject( input ) && config === undefined ) {
-               config = input;
-               input = config.input;
+       if ( OO.isPlainObject( toolGroup ) && config === undefined ) {
+               config = toolGroup;
+               toolGroup = config.toolGroup;
        }
 
-       // Configuration initialization
-       config = config || {};
+       // Parent constructor
+       OO.ui.ToolGroupTool.super.call( this, toolGroup, config );
 
        // Properties
-       this.lookupInput = input;
-       this.$overlay = config.$overlay || this.$element;
-       this.lookupMenu = new OO.ui.TextInputMenuSelectWidget( this, {
-               input: this.lookupInput,
-               $container: config.$container
-       } );
-       this.lookupCache = {};
-       this.lookupQuery = null;
-       this.lookupRequest = null;
-       this.lookupsDisabled = false;
-       this.lookupInputFocused = false;
-
-       // Events
-       this.lookupInput.$input.on( {
-               focus: this.onLookupInputFocus.bind( this ),
-               blur: this.onLookupInputBlur.bind( this ),
-               mousedown: this.onLookupInputMouseDown.bind( this )
-       } );
-       this.lookupInput.connect( this, { change: 'onLookupInputChange' } );
-       this.lookupMenu.connect( this, { toggle: 'onLookupMenuToggle' } );
+       this.innerToolGroup = this.createGroup( this.constructor.static.groupConfig );
 
        // Initialization
-       this.$element.addClass( 'oo-ui-lookupWidget' );
-       this.lookupMenu.$element.addClass( 'oo-ui-lookupWidget-menu' );
-       this.$overlay.append( this.lookupMenu.$element );
+       this.$link.remove();
+       this.$element
+               .addClass( 'oo-ui-toolGroupTool' )
+               .append( this.innerToolGroup.$element );
 };
 
-/* Methods */
+/* Setup */
 
-/**
- * Handle input focus event.
- *
- * @param {jQuery.Event} e Input focus event
- */
-OO.ui.LookupInputWidget.prototype.onLookupInputFocus = function () {
-       this.lookupInputFocused = true;
-       this.populateLookupMenu();
-};
+OO.inheritClass( OO.ui.ToolGroupTool, OO.ui.Tool );
 
-/**
- * Handle input blur event.
- *
- * @param {jQuery.Event} e Input blur event
- */
-OO.ui.LookupInputWidget.prototype.onLookupInputBlur = function () {
-       this.closeLookupMenu();
-       this.lookupInputFocused = false;
-};
-
-/**
- * Handle input mouse down event.
- *
- * @param {jQuery.Event} e Input mouse down event
- */
-OO.ui.LookupInputWidget.prototype.onLookupInputMouseDown = function () {
-       // Only open the menu if the input was already focused.
-       // This way we allow the user to open the menu again after closing it with Esc
-       // by clicking in the input. Opening (and populating) the menu when initially
-       // clicking into the input is handled by the focus handler.
-       if ( this.lookupInputFocused && !this.lookupMenu.isVisible() ) {
-               this.populateLookupMenu();
-       }
-};
+/* Static Properties */
 
 /**
- * Handle input change event.
+ * Tool group configuration. See OO.ui.Toolbar#setup for the accepted values.
  *
- * @param {string} value New input value
+ * @property {Object.<string,Array>}
  */
-OO.ui.LookupInputWidget.prototype.onLookupInputChange = function () {
-       if ( this.lookupInputFocused ) {
-               this.populateLookupMenu();
-       }
-};
+OO.ui.ToolGroupTool.static.groupConfig = {};
 
-/**
- * Handle the lookup menu being shown/hidden.
- * @param {boolean} visible Whether the lookup menu is now visible.
- */
-OO.ui.LookupInputWidget.prototype.onLookupMenuToggle = function ( visible ) {
-       if ( !visible ) {
-               // When the menu is hidden, abort any active request and clear the menu.
-               // This has to be done here in addition to closeLookupMenu(), because
-               // MenuSelectWidget will close itself when the user presses Esc.
-               this.abortLookupRequest();
-               this.lookupMenu.clearItems();
-       }
-};
+/* Methods */
 
 /**
- * Get lookup menu.
+ * Handle the tool being selected.
  *
- * @return {OO.ui.TextInputMenuSelectWidget}
+ * @inheritdoc
  */
-OO.ui.LookupInputWidget.prototype.getLookupMenu = function () {
-       return this.lookupMenu;
+OO.ui.ToolGroupTool.prototype.onSelect = function () {
+       this.innerToolGroup.setActive( !this.innerToolGroup.active );
+       return false;
 };
 
 /**
- * Disable or re-enable lookups.
- *
- * When lookups are disabled, calls to #populateLookupMenu will be ignored.
+ * Handle the toolbar state being updated.
  *
- * @param {boolean} disabled Disable lookups
+ * @inheritdoc
  */
-OO.ui.LookupInputWidget.prototype.setLookupsDisabled = function ( disabled ) {
-       this.lookupsDisabled = !!disabled;
+OO.ui.ToolGroupTool.prototype.onUpdateState = function () {
+       this.setActive( false );
 };
 
 /**
- * Open the menu. If there are no entries in the menu, this does nothing.
+ * Build a OO.ui.ToolGroup from the configuration.
  *
- * @chainable
+ * @param {Object.<string,Array>} group Tool group configuration. See OO.ui.Toolbar#setup for the
+ *   accepted values.
+ * @return {OO.ui.ListToolGroup}
  */
-OO.ui.LookupInputWidget.prototype.openLookupMenu = function () {
-       if ( !this.lookupMenu.isEmpty() ) {
-               this.lookupMenu.toggle( true );
+OO.ui.ToolGroupTool.prototype.createGroup = function ( group ) {
+       if ( group.include === '*' ) {
+               // Apply defaults to catch-all groups
+               if ( group.label === undefined ) {
+                       group.label = OO.ui.msg( 'ooui-toolbar-more' );
+               }
        }
-       return this;
-};
 
-/**
- * Close the menu, empty it, and abort any pending request.
- *
- * @chainable
- */
-OO.ui.LookupInputWidget.prototype.closeLookupMenu = function () {
-       this.lookupMenu.toggle( false );
-       this.abortLookupRequest();
-       this.lookupMenu.clearItems();
-       return this;
+       return this.toolbar.getToolGroupFactory().create( 'list', this.toolbar, group );
 };
 
 /**
- * Request menu items based on the input's current value, and when they arrive,
- * populate the menu with these items and show the menu.
+ * Mixin for OO.ui.Widget subclasses to provide OO.ui.GroupElement.
  *
- * If lookups have been disabled with #setLookupsDisabled, this function does nothing.
+ * Use together with OO.ui.ItemWidget to make disabled state inheritable.
  *
- * @chainable
- */
-OO.ui.LookupInputWidget.prototype.populateLookupMenu = function () {
-       var widget = this,
-               value = this.lookupInput.getValue();
-
-       if ( this.lookupsDisabled ) {
-               return;
-       }
-
-       // If the input is empty, clear the menu
-       if ( value === '' ) {
-               this.closeLookupMenu();
-       // Skip population if there is already a request pending for the current value
-       } else if ( value !== this.lookupQuery ) {
-               this.getLookupMenuItems()
-                       .done( function ( items ) {
-                               widget.lookupMenu.clearItems();
-                               if ( items.length ) {
-                                       widget.lookupMenu
-                                               .addItems( items )
-                                               .toggle( true );
-                                       widget.initializeLookupMenuSelection();
-                               } else {
-                                       widget.lookupMenu.toggle( false );
-                               }
-                       } )
-                       .fail( function () {
-                               widget.lookupMenu.clearItems();
-                       } );
-       }
-
-       return this;
-};
-
-/**
- * Select and highlight the first selectable item in the menu.
+ * @private
+ * @abstract
+ * @class
+ * @extends OO.ui.GroupElement
  *
- * @chainable
+ * @constructor
+ * @param {Object} [config] Configuration options
  */
-OO.ui.LookupInputWidget.prototype.initializeLookupMenuSelection = function () {
-       if ( !this.lookupMenu.getSelectedItem() ) {
-               this.lookupMenu.selectItem( this.lookupMenu.getFirstSelectableItem() );
-       }
-       this.lookupMenu.highlightItem( this.lookupMenu.getSelectedItem() );
+OO.ui.GroupWidget = function OoUiGroupWidget( config ) {
+       // Parent constructor
+       OO.ui.GroupWidget.super.call( this, config );
 };
 
-/**
- * Get lookup menu items for the current query.
- *
- * @return {jQuery.Promise} Promise object which will be passed menu items as the first argument
- * of the done event. If the request was aborted to make way for a subsequent request,
- * this promise will not be rejected: it will remain pending forever.
- */
-OO.ui.LookupInputWidget.prototype.getLookupMenuItems = function () {
-       var widget = this,
-               value = this.lookupInput.getValue(),
-               deferred = $.Deferred(),
-               ourRequest;
+/* Setup */
 
-       this.abortLookupRequest();
-       if ( Object.prototype.hasOwnProperty.call( this.lookupCache, value ) ) {
-               deferred.resolve( this.getLookupMenuItemsFromData( this.lookupCache[ value ] ) );
-       } else {
-               this.lookupInput.pushPending();
-               this.lookupQuery = value;
-               ourRequest = this.lookupRequest = this.getLookupRequest();
-               ourRequest
-                       .always( function () {
-                               // We need to pop pending even if this is an old request, otherwise
-                               // the widget will remain pending forever.
-                               // TODO: this assumes that an aborted request will fail or succeed soon after
-                               // being aborted, or at least eventually. It would be nice if we could popPending()
-                               // at abort time, but only if we knew that we hadn't already called popPending()
-                               // for that request.
-                               widget.lookupInput.popPending();
-                       } )
-                       .done( function ( data ) {
-                               // If this is an old request (and aborting it somehow caused it to still succeed),
-                               // ignore its success completely
-                               if ( ourRequest === widget.lookupRequest ) {
-                                       widget.lookupQuery = null;
-                                       widget.lookupRequest = null;
-                                       widget.lookupCache[ value ] = widget.getLookupCacheItemFromData( data );
-                                       deferred.resolve( widget.getLookupMenuItemsFromData( widget.lookupCache[ value ] ) );
-                               }
-                       } )
-                       .fail( function () {
-                               // If this is an old request (or a request failing because it's being aborted),
-                               // ignore its failure completely
-                               if ( ourRequest === widget.lookupRequest ) {
-                                       widget.lookupQuery = null;
-                                       widget.lookupRequest = null;
-                                       deferred.reject();
-                               }
-                       } );
-       }
-       return deferred.promise();
-};
+OO.inheritClass( OO.ui.GroupWidget, OO.ui.GroupElement );
+
+/* Methods */
 
 /**
- * Abort the currently pending lookup request, if any.
+ * Set the disabled state of the widget.
+ *
+ * This will also update the disabled state of child widgets.
+ *
+ * @param {boolean} disabled Disable widget
+ * @chainable
  */
-OO.ui.LookupInputWidget.prototype.abortLookupRequest = function () {
-       var oldRequest = this.lookupRequest;
-       if ( oldRequest ) {
-               // First unset this.lookupRequest to the fail handler will notice
-               // that the request is no longer current
-               this.lookupRequest = null;
-               this.lookupQuery = null;
-               oldRequest.abort();
+OO.ui.GroupWidget.prototype.setDisabled = function ( disabled ) {
+       var i, len;
+
+       // Parent method
+       // Note: Calling #setDisabled this way assumes this is mixed into an OO.ui.Widget
+       OO.ui.Widget.prototype.setDisabled.call( this, disabled );
+
+       // During construction, #setDisabled is called before the OO.ui.GroupElement constructor
+       if ( this.items ) {
+               for ( i = 0, len = this.items.length; i < len; i++ ) {
+                       this.items[ i ].updateDisabled();
+               }
        }
+
+       return this;
 };
 
 /**
- * Get a new request object of the current lookup query value.
+ * Mixin for widgets used as items in widgets that inherit OO.ui.GroupWidget.
+ *
+ * Item widgets have a reference to a OO.ui.GroupWidget while they are attached to the group. This
+ * allows bidirectional communication.
  *
+ * Use together with OO.ui.GroupWidget to make disabled state inheritable.
+ *
+ * @private
  * @abstract
- * @return {jQuery.Promise} jQuery AJAX object, or promise object with an .abort() method
+ * @class
+ *
+ * @constructor
  */
-OO.ui.LookupInputWidget.prototype.getLookupRequest = function () {
-       // Stub, implemented in subclass
-       return null;
+OO.ui.ItemWidget = function OoUiItemWidget() {
+       //
 };
 
+/* Methods */
+
 /**
- * Get a list of menu item widgets from the data stored by the lookup request's done handler.
+ * Check if widget is disabled.
  *
- * @abstract
- * @param {Mixed} data Cached result data, usually an array
- * @return {OO.ui.MenuOptionWidget[]} Menu items
+ * Checks parent if present, making disabled state inheritable.
+ *
+ * @return {boolean} Widget is disabled
  */
-OO.ui.LookupInputWidget.prototype.getLookupMenuItemsFromData = function () {
-       // Stub, implemented in subclass
-       return [];
+OO.ui.ItemWidget.prototype.isDisabled = function () {
+       return this.disabled ||
+               ( this.elementGroup instanceof OO.ui.Widget && this.elementGroup.isDisabled() );
 };
 
 /**
- * Get lookup cache item from server response data.
+ * Set group element is in.
  *
- * @abstract
- * @param {Mixed} data Response from server
- * @return {Mixed} Cached result data
+ * @param {OO.ui.GroupElement|null} group Group element, null if none
+ * @chainable
  */
-OO.ui.LookupInputWidget.prototype.getLookupCacheItemFromData = function () {
-       // Stub, implemented in subclass
-       return [];
+OO.ui.ItemWidget.prototype.setElementGroup = function ( group ) {
+       // Parent method
+       // Note: Calling #setElementGroup this way assumes this is mixed into an OO.ui.Element
+       OO.ui.Element.prototype.setElementGroup.call( this, group );
+
+       // Initialize item disabled states
+       this.updateDisabled();
+
+       return this;
 };
 
 /**
@@ -9847,14 +9517,16 @@ OO.ui.OutlineControlsWidget.prototype.onOutlineChange = function () {
 };
 
 /**
- * Mixin for widgets with a boolean on/off state.
+ * ToggleWidget is mixed into other classes to create widgets with an on/off state.
+ * Please see OO.ui.ToggleButtonWidget and OO.ui.ToggleSwitchWidget for examples.
  *
  * @abstract
  * @class
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [value=false] Initial value
+ * @cfg {boolean} [value=false] The toggle’s initial on/off state.
+ *  By default, the toggle is in the 'off' state.
  */
 OO.ui.ToggleWidget = function OoUiToggleWidget( config ) {
        // Configuration initialization
@@ -9872,24 +9544,27 @@ OO.ui.ToggleWidget = function OoUiToggleWidget( config ) {
 
 /**
  * @event change
- * @param {boolean} value Changed value
+ *
+ * A change event is emitted when the on/off state of the toggle changes.
+ *
+ * @param {boolean} value Value representing the new state of the toggle
  */
 
 /* Methods */
 
 /**
- * Get the value of the toggle.
+ * Get the value representing the toggle’s state.
  *
- * @return {boolean}
+ * @return {boolean} The on/off state of the toggle
  */
 OO.ui.ToggleWidget.prototype.getValue = function () {
        return this.value;
 };
 
 /**
- * Set the value of the toggle.
+ * Set the state of the toggle: `true` for 'on', `false' for 'off'.
  *
- * @param {boolean} value New value
+ * @param {boolean} value The state of the toggle
  * @fires change
  * @chainable
  */
@@ -10393,7 +10068,26 @@ OO.ui.PopupButtonWidget.prototype.onAction = function () {
 };
 
 /**
- * Button that toggles on and off.
+ * ToggleButtons are buttons that have a state (‘on’ or ‘off’) that is represented by a
+ * Boolean value. Like other {@link OO.ui.ButtonWidget buttons}, toggle buttons can be
+ * configured with {@link OO.ui.IconElement icons}, {@link OO.ui.IndicatorElement indicators},
+ * {@link OO.ui.TitledElement titles}, {@link OO.ui.FlaggedElement styling flags},
+ * and {@link OO.ui.LabelElement labels}. Please see
+ * the [OOjs UI documentation][1] on MediaWiki for more information.
+ *
+ *     @example
+ *     // Toggle buttons in the 'off' and 'on' state.
+ *     var toggleButton1 = new OO.ui.ToggleButtonWidget( {
+ *         label: 'Toggle Button off'
+ *     } );
+ *     var toggleButton2 = new OO.ui.ToggleButtonWidget( {
+ *         label: 'Toggle Button on',
+ *         value: true
+ *     } );
+ *     // Append the buttons to the DOM.
+ *     $( 'body' ).append( toggleButton1.$element, toggleButton2.$element );
+ *
+ * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Buttons_and_Switches#Toggle_buttons
  *
  * @class
  * @extends OO.ui.ButtonWidget
@@ -10401,7 +10095,8 @@ OO.ui.PopupButtonWidget.prototype.onAction = function () {
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [value=false] Initial value
+ * @cfg {boolean} [value=false] The toggle button’s initial on/off
+ *  state. By default, the button is in the 'off' state.
  */
 OO.ui.ToggleButtonWidget = function OoUiToggleButtonWidget( config ) {
        // Configuration initialization
@@ -10428,6 +10123,8 @@ OO.mixinClass( OO.ui.ToggleButtonWidget, OO.ui.ToggleWidget );
 /* Methods */
 
 /**
+ *
+ * @private
  * Handle the button action being triggered.
  */
 OO.ui.ToggleButtonWidget.prototype.onAction = function () {
@@ -10653,9 +10350,24 @@ OO.mixinClass( OO.ui.IconWidget, OO.ui.TitledElement );
 OO.ui.IconWidget.static.tagName = 'span';
 
 /**
- * Indicator widget.
+ * IndicatorWidgets create indicators, which are small graphics that are generally used to draw
+ * attention to the status of an item or to clarify the function of a control. For a list of
+ * indicators included in the library, please see the [OOjs UI documentation on MediaWiki][1].
  *
- * See OO.ui.IndicatorElement for more information.
+ *     @example
+ *     // Example of an indicator widget
+ *     var indicator1 = new OO.ui.IndicatorWidget( {
+ *         indicator: 'alert'
+ *     });
+ *
+ *     // Create a fieldset layout to add a label
+ *     var fieldset = new OO.ui.FieldsetLayout( );
+ *     fieldset.addItems( [
+ *         new OO.ui.FieldLayout( indicator1, {label: 'An alert indicator:'} )
+ *     ] );
+ *     $( 'body' ).append( fieldset.$element );
+ *
+ * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Icons,_Indicators,_and_Labels#Indicators
  *
  * @class
  * @extends OO.ui.Widget
@@ -10850,9 +10562,10 @@ OO.ui.InputWidget.prototype.cleanUpValue = function ( value ) {
  */
 OO.ui.InputWidget.prototype.simulateLabelClick = function () {
        if ( !this.isDisabled() ) {
-               if ( this.$input.is( ':checkbox,:radio' ) ) {
+               if ( this.$input.is( ':checkbox, :radio' ) ) {
                        this.$input.click();
-               } else if ( this.$input.is( ':input' ) ) {
+               }
+               if ( this.$input.is( ':input' ) ) {
                        this.$input[ 0 ].focus();
                }
        }
@@ -10930,7 +10643,6 @@ OO.ui.ButtonInputWidget = function OoUiButtonInputWidget( config ) {
 
        // Properties (must be set before parent constructor, which calls #setValue)
        this.useInputTag = config.useInputTag;
-       this.type = config.type;
 
        // Parent constructor
        OO.ui.ButtonInputWidget.super.call( this, config );
@@ -11015,26 +10727,43 @@ OO.ui.ButtonInputWidget.prototype.setValue = function ( value ) {
 };
 
 /**
- * @inheritdoc
- */
-OO.ui.ButtonInputWidget.prototype.onClick = function ( e ) {
-       var ret = OO.ui.ButtonElement.prototype.onClick.call( this, e );
-       if ( this.type === 'submit' ) {
-               // Never prevent default action (form submission)
-               return true;
-       }
-       return ret;
-};
-
-/**
- * Checkbox input widget.
+ * CheckboxInputWidgets, like HTML checkboxes, can be selected and/or configured with a value.
+ *  Note that these {@link OO.ui.InputWidget input widgets} are best laid out
+ * in {@link OO.ui.FieldLayout field layouts} that use the {@link OO.ui.FieldLayout#align inline}
+ * alignment. For more information, please see the [OOjs UI documentation on MediaWiki][1].
+ *
+ *     @example
+ *     // An example of selected, unselected, and disabled checkbox inputs
+ *     var checkbox1=new OO.ui.CheckboxInputWidget({
+ *          value: 'a',
+ *          selected: true
+ *     });
+ *     var checkbox2=new OO.ui.CheckboxInputWidget({
+ *         value: 'b'
+ *     });
+ *     var checkbox3=new OO.ui.CheckboxInputWidget( {
+ *         value:'c',
+ *         disabled: true
+ *     } );
+ *     // Create a fieldset layout with fields for each checkbox.
+ *     var fieldset = new OO.ui.FieldsetLayout( {
+ *         label: 'Checkboxes'
+ *     } );
+ *     fieldset.addItems( [
+ *         new OO.ui.FieldLayout( checkbox1, {label : 'Selected checkbox', align : 'inline'}),
+ *         new OO.ui.FieldLayout( checkbox2, {label : 'Unselected checkbox', align : 'inline'}),
+ *         new OO.ui.FieldLayout( checkbox3, {label : 'Disabled checkbox', align : 'inline'}),
+ *     ] );
+ *     $( 'body' ).append( fieldset.$element );
+ *
+ * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Inputs
  *
  * @class
  * @extends OO.ui.InputWidget
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [selected=false] Whether the checkbox is initially selected
+ * @cfg {boolean} [selected=false] Select the checkbox initially. By default, the checkbox is not selected.
  */
 OO.ui.CheckboxInputWidget = function OoUiCheckboxInputWidget( config ) {
        // Configuration initialization
@@ -11078,7 +10807,7 @@ OO.ui.CheckboxInputWidget.prototype.onEdit = function () {
 /**
  * Set selection state of this checkbox.
  *
- * @param {boolean} state Whether the checkbox is selected
+ * @param {boolean} state `true` for selected
  * @chainable
  */
 OO.ui.CheckboxInputWidget.prototype.setSelected = function ( state ) {
@@ -11107,8 +10836,24 @@ OO.ui.CheckboxInputWidget.prototype.isSelected = function () {
 };
 
 /**
- * A OO.ui.DropdownWidget synchronized with a `<input type=hidden>` for form submission. Intended to
- * be used within a OO.ui.FormLayout.
+ * DropdownInputWidget is a {@link OO.ui.DropdownWidget DropdownWidget} intended to be used
+ * within a {@link OO.ui.FormLayout form}. The selected value is synchronized with the value
+ * of  a hidden HTML `input` tag. Please see the [OOjs UI documentation on MediaWiki][1] for
+ * more information about input widgets.
+ *
+ *     @example
+ *     // Example: A DropdownInputWidget with three options
+ *     var dropDown=new OO.ui.DropdownInputWidget( {
+ *         label: 'Dropdown menu: Select a menu option',
+ *         options: [
+ *             { data: 'a', label: 'First' } ,
+ *             { data: 'b', label: 'Second'} ,
+ *             { data: 'c', label: 'Third' }
+ *         ]
+ *     } );
+ *     $('body').append(dropDown.$element);
+ *
+ * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Inputs
  *
  * @class
  * @extends OO.ui.InputWidget
@@ -11154,6 +10899,7 @@ OO.ui.DropdownInputWidget.prototype.getInputElement = function () {
 /**
  * Handles menu select events.
  *
+ * @private
  * @param {OO.ui.MenuOptionWidget} item Selected menu item
  */
 OO.ui.DropdownInputWidget.prototype.onMenuSelect = function ( item ) {
@@ -11231,17 +10977,43 @@ OO.ui.DropdownInputWidget.prototype.blur = function () {
 };
 
 /**
- * Radio input widget.
+ * RadioInputWidget creates a single radio button. Because radio buttons are usually used as a set,
+ * in most cases you will want to use a {@link OO.ui.RadioSelectWidget radio select}
+ * with {@link OO.ui.RadioOptionWidget radio options} instead of this class. For more information,
+ * please see the [OOjs UI documentation on MediaWiki][1].
+ *
+ *     @example
+ *     // An example of selected, unselected, and disabled radio inputs
+ *     var radio1=new OO.ui.RadioInputWidget({
+ *         value: 'a',
+ *         selected: true
+ *     });
+ *     var radio2=new OO.ui.RadioInputWidget({
+ *         value: 'b'
+ *     });
+ *     var radio3=new OO.ui.RadioInputWidget( {
+ *         value:'c',
+ *         disabled: true
+ *     } );
+ *     // Create a fieldset layout with fields for each radio button.
+ *     var fieldset = new OO.ui.FieldsetLayout( {
+ *         label: 'Radio inputs'
+ *     } );
+ *     fieldset.addItems( [
+ *         new OO.ui.FieldLayout( radio1, {label : 'Selected', align : 'inline'}),
+ *         new OO.ui.FieldLayout( radio2, {label : 'Unselected', align : 'inline'}),
+ *         new OO.ui.FieldLayout( radio3, {label : 'Disabled', align : 'inline'}),
+ *     ] );
+ *     $( 'body' ).append( fieldset.$element );
  *
- * Radio buttons only make sense as a set, and you probably want to use the OO.ui.RadioSelectWidget
- * class instead of using this class directly.
+ * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Inputs
  *
  * @class
  * @extends OO.ui.InputWidget
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [selected=false] Whether the radio button is initially selected
+ * @cfg {boolean} [selected=false] Select the radio button initially. By default, the radio button is not selected.
  */
 OO.ui.RadioInputWidget = function OoUiRadioInputWidget( config ) {
        // Configuration initialization
@@ -11279,7 +11051,7 @@ OO.ui.RadioInputWidget.prototype.onEdit = function () {
 /**
  * Set selection state of this radio button.
  *
- * @param {boolean} state Whether the button is selected
+ * @param {boolean} state `true` for selected
  * @chainable
  */
 OO.ui.RadioInputWidget.prototype.setSelected = function ( state ) {
@@ -11298,7 +11070,21 @@ OO.ui.RadioInputWidget.prototype.isSelected = function () {
 };
 
 /**
- * Input widget with a text field.
+ * TextInputWidgets, like HTML text inputs, can be configured with options that customize the
+ * size of the field as well as its presentation. In addition, these widgets can be configured
+ * with {@link OO.ui.IconElement icons}, {@link OO.ui.IndicatorElement indicators}, an optional
+ * validation-pattern (used to determine if an input value is valid or not) and an input filter,
+ * which modifies incoming values rather than validating them.
+ * Please see the [OOjs UI documentation on MediaWiki] [1] for more information and examples.
+ *
+ *     @example
+ *     // Example of a text input widget
+ *     var textInput=new OO.ui.TextInputWidget( {
+ *         value: 'Text input'
+ *     } )
+ *     $('body').append(textInput.$element);
+ *
+ * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Inputs
  *
  * @class
  * @extends OO.ui.InputWidget
@@ -11309,19 +11095,22 @@ OO.ui.RadioInputWidget.prototype.isSelected = function () {
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {string} [type='text'] HTML tag `type` attribute
+ * @cfg {string} [type='text'] The value of the HTML `type` attribute
  * @cfg {string} [placeholder] Placeholder text
- * @cfg {boolean} [autofocus=false] Ask the browser to focus this widget, using the 'autofocus' HTML
- *  attribute
- * @cfg {boolean} [readOnly=false] Prevent changes
- * @cfg {number} [maxLength] Maximum allowed number of characters to input
+ * @cfg {boolean} [autofocus=false] Use an HTML `autofocus` attribute to
+ *  instruct the browser to focus this widget.
+ * @cfg {boolean} [readOnly=false] Prevent changes to the value of the text input.
+ * @cfg {number} [maxLength] Maximum number of characters allowed in the input.
  * @cfg {boolean} [multiline=false] Allow multiple lines of text
- * @cfg {boolean} [autosize=false] Automatically resize to fit content
- * @cfg {boolean} [maxRows=10] Maximum number of rows to make visible when autosizing
- * @cfg {string} [labelPosition='after'] Label position, 'before' or 'after'
+ * @cfg {boolean} [autosize=false] Automatically resize the text input to fit its content.
+ *  Use the #maxRows config to specify a maximum number of displayed rows.
+ * @cfg {boolean} [maxRows=10] Maximum number of rows to display when #autosize is set to true.
+ * @cfg {string} [labelPosition='after'] The position of the inline label relative to that of
+ *  the value or placeholder text: `'before'` or `'after'`
  * @cfg {boolean} [required=false] Mark the field as required
- * @cfg {RegExp|string} [validate] Regular expression to validate against (or symbolic name referencing
- *  one, see #static-validationPatterns)
+ * @cfg {RegExp|string} [validate] Validation pattern, either a regular expression or the
+ *  symbolic name of a pattern defined by the class: 'non-empty' (the value cannot be an empty string)
+ *  or 'integer' (the value must contain only numbers).
  */
 OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
        // Configuration initialization
@@ -11406,41 +11195,25 @@ OO.ui.TextInputWidget.static.validationPatterns = {
 /* Events */
 
 /**
- * User presses enter inside the text box.
+ * An `enter` event is emitted when the user presses 'enter' inside the text box.
  *
- * Not called if input is multiline.
+ * Not emitted if the input is multiline.
  *
  * @event enter
  */
 
-/**
- * User clicks the icon.
- *
- * @deprecated Fundamentally not accessible. Make the icon focusable, associate a label or tooltip,
- *  and handle click/keypress events on it manually.
- * @event icon
- */
-
-/**
- * User clicks the indicator.
- *
- * @deprecated Fundamentally not accessible. Make the indicator focusable, associate a label or
- *  tooltip, and handle click/keypress events on it manually.
- * @event indicator
- */
-
 /* Methods */
 
 /**
  * Handle icon mouse down events.
  *
+ * @private
  * @param {jQuery.Event} e Mouse down event
  * @fires icon
  */
 OO.ui.TextInputWidget.prototype.onIconMouseDown = function ( e ) {
        if ( e.which === 1 ) {
                this.$input[ 0 ].focus();
-               this.emit( 'icon' );
                return false;
        }
 };
@@ -11448,13 +11221,13 @@ OO.ui.TextInputWidget.prototype.onIconMouseDown = function ( e ) {
 /**
  * Handle indicator mouse down events.
  *
+ * @private
  * @param {jQuery.Event} e Mouse down event
  * @fires indicator
  */
 OO.ui.TextInputWidget.prototype.onIndicatorMouseDown = function ( e ) {
        if ( e.which === 1 ) {
                this.$input[ 0 ].focus();
-               this.emit( 'indicator' );
                return false;
        }
 };
@@ -11462,6 +11235,7 @@ OO.ui.TextInputWidget.prototype.onIndicatorMouseDown = function ( e ) {
 /**
  * Handle key press events.
  *
+ * @private
  * @param {jQuery.Event} e Key press event
  * @fires enter If enter key is pressed and input is not multiline
  */
@@ -11474,6 +11248,7 @@ OO.ui.TextInputWidget.prototype.onKeyPress = function ( e ) {
 /**
  * Handle element attach events.
  *
+ * @private
  * @param {jQuery.Event} e Element attach event
  */
 OO.ui.TextInputWidget.prototype.onElementAttach = function () {
@@ -11506,7 +11281,7 @@ OO.ui.TextInputWidget.prototype.setValue = function ( value ) {
 };
 
 /**
- * Check if the widget is read-only.
+ * Check if the input is {@link #readOnly read-only}.
  *
  * @return {boolean}
  */
@@ -11515,9 +11290,7 @@ OO.ui.TextInputWidget.prototype.isReadOnly = function () {
 };
 
 /**
- * Set the read-only state of the widget.
- *
- * This should probably change the widget's appearance and prevent it from being used.
+ * Set the {@link #readOnly read-only} state of the input.
  *
  * @param {boolean} state Make input read-only
  * @chainable
@@ -11531,7 +11304,7 @@ OO.ui.TextInputWidget.prototype.setReadOnly = function ( state ) {
 /**
  * Automatically adjust the size of the text input.
  *
- * This only affects multi-line inputs that are auto-sized.
+ * This only affects #multiline inputs that are {@link #autosize autosized}.
  *
  * @chainable
  */
@@ -11590,7 +11363,7 @@ OO.ui.TextInputWidget.prototype.getInputElement = function ( config ) {
 };
 
 /**
- * Check if input supports multiple lines.
+ * Check if the input supports multiple lines.
  *
  * @return {boolean}
  */
@@ -11599,7 +11372,7 @@ OO.ui.TextInputWidget.prototype.isMultiline = function () {
 };
 
 /**
- * Check if input automatically adjusts its size.
+ * Check if the input automatically adjusts its size.
  *
  * @return {boolean}
  */
@@ -11608,7 +11381,7 @@ OO.ui.TextInputWidget.prototype.isAutosizing = function () {
 };
 
 /**
- * Select the contents of the input.
+ * Select the entire text of the input.
  *
  * @chainable
  */
@@ -11618,9 +11391,14 @@ OO.ui.TextInputWidget.prototype.select = function () {
 };
 
 /**
- * Sets the validation pattern to use.
- * @param {RegExp|string|null} validate Regular expression (or symbolic name referencing
- *  one, see #static-validationPatterns)
+ * Set the validation pattern.
+ *
+ * The validation pattern is either a regular expression or the symbolic name of a pattern
+ * defined by the class: 'non-empty' (the value cannot be an empty string) or 'integer' (the
+ * value must contain only numbers).
+ *
+ * @param {RegExp|string|null} validate Regular expression or the symbolic name of a
+ *  pattern (either ‘integer’ or ‘non-empty’) defined by the class.
  */
 OO.ui.TextInputWidget.prototype.setValidation = function ( validate ) {
        if ( validate instanceof RegExp ) {
@@ -11641,17 +11419,19 @@ OO.ui.TextInputWidget.prototype.setValidityFlag = function () {
 };
 
 /**
- * Returns whether or not the current value is considered valid, according to the
- * supplied validation pattern.
+ * Check if a value is valid.
+ *
+ * This method returns a promise that resolves with a boolean `true` if the current value is
+ * considered valid according to the supplied {@link #validate validation pattern}.
  *
- * @return {jQuery.Deferred}
+ * @return {jQuery.Deferred} A promise that resolves to a boolean `true` if the value is valid.
  */
 OO.ui.TextInputWidget.prototype.isValid = function () {
        return $.Deferred().resolve( !!this.getValue().match( this.validate ) ).promise();
 };
 
 /**
- * Set the position of the inline label.
+ * Set the position of the inline label relative to that of the value: `‘before’` or `‘after’`.
  *
  * @param {string} labelPosition Label position, 'before' or 'after'
  * @chainable
@@ -11673,6 +11453,10 @@ OO.ui.TextInputWidget.prototype.setPosition =
 /**
  * Update the position of the inline label.
  *
+ * This method is called by #setLabelPosition, and can also be called on its own if
+ * something causes the label to be mispositioned.
+ *
+ *
  * @chainable
  */
 OO.ui.TextInputWidget.prototype.updatePosition = function () {
@@ -11692,6 +11476,7 @@ OO.ui.TextInputWidget.prototype.updatePosition = function () {
 /**
  * Position the label by setting the correct padding on the input.
  *
+ * @private
  * @chainable
  */
 OO.ui.TextInputWidget.prototype.positionLabel = function () {
@@ -11720,7 +11505,45 @@ OO.ui.TextInputWidget.prototype.positionLabel = function () {
 };
 
 /**
- * Text input with a menu of optional values.
+ * ComboBoxWidgets combine a {@link OO.ui.TextInputWidget text input} (where a value
+ * can be entered manually) and a {@link OO.ui.MenuSelectWidget menu of options} (from which
+ * a value can be chosen instead). Users can choose options from the combo box in one of two ways:
+ *
+ * - by typing a value in the text input field. If the value exactly matches the value of a menu
+ *   option, that option will appear to be selected.
+ * - by choosing a value from the menu. The value of the chosen option will then appear in the text
+ *   input field.
+ *
+ * For more information about menus and options, please see the [OOjs UI documentation on MediaWiki][1].
+ *
+ *     @example
+ *     // Example: A ComboBoxWidget.
+ *     var comboBox=new OO.ui.ComboBoxWidget( {
+ *         label: 'ComboBoxWidget',
+ *         input: { value: 'Option One' },
+ *         menu: {
+ *             items: [
+ *                 new OO.ui.MenuOptionWidget( {
+ *                     data: 'Option 1',
+ *                     label: 'Option One' } ),
+ *                 new OO.ui.MenuOptionWidget( {
+ *                     data: 'Option 2',
+ *                     label: 'Option Two' } ),
+ *                 new OO.ui.MenuOptionWidget( {
+ *                     data: 'Option 3',
+ *                     label: 'Option Three'} ),
+ *                 new OO.ui.MenuOptionWidget( {
+ *                     data: 'Option 4',
+ *                     label: 'Option Four' } ),
+ *                 new OO.ui.MenuOptionWidget( {
+ *                     data: 'Option 5',
+ *                     label: 'Option Five' } )
+ *             ]
+ *         }
+ *     } );
+ *     $('body').append(comboBox.$element);
+ *
+ * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Menu_selects_and_options
  *
  * @class
  * @extends OO.ui.Widget
@@ -11728,9 +11551,11 @@ OO.ui.TextInputWidget.prototype.positionLabel = function () {
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object} [menu] Configuration options to pass to menu widget
- * @cfg {Object} [input] Configuration options to pass to input widget
- * @cfg {jQuery} [$overlay] Overlay layer; defaults to relative positioning
+ * @cfg {Object} [menu] Configuration options to pass to the {@link OO.ui.MenuSelectWidget menu select widget}.
+ * @cfg {Object} [input] Configuration options to pass to the {@link OO.ui.TextInputWidget text input widget}.
+ * @cfg {jQuery} [$overlay] Render the menu into a separate layer. This configuration is useful in cases where
+ *  the expanded menu is larger than its containing `<div>`. The specified overlay layer is usually on top of the
+ *  containing `<div>` and has a larger area. By default, the menu uses relative positioning.
  */
 OO.ui.ComboBoxWidget = function OoUiComboBoxWidget( config ) {
        // Configuration initialization
@@ -11807,6 +11632,7 @@ OO.ui.ComboBoxWidget.prototype.getMenu = function () {
 /**
  * Handle input change events.
  *
+ * @private
  * @param {string} value New value
  */
 OO.ui.ComboBoxWidget.prototype.onInputChange = function ( value ) {
@@ -11825,6 +11651,8 @@ OO.ui.ComboBoxWidget.prototype.onInputChange = function ( value ) {
 /**
  * Handle mouse click events.
  *
+ *
+ * @private
  * @param {jQuery.Event} e Mouse click event
  */
 OO.ui.ComboBoxWidget.prototype.onClick = function ( e ) {
@@ -11838,6 +11666,8 @@ OO.ui.ComboBoxWidget.prototype.onClick = function ( e ) {
 /**
  * Handle key press events.
  *
+ *
+ * @private
  * @param {jQuery.Event} e Key press event
  */
 OO.ui.ComboBoxWidget.prototype.onKeyPress = function ( e ) {
@@ -11850,6 +11680,8 @@ OO.ui.ComboBoxWidget.prototype.onKeyPress = function ( e ) {
 
 /**
  * Handle input enter events.
+ *
+ * @private
  */
 OO.ui.ComboBoxWidget.prototype.onInputEnter = function () {
        if ( !this.isDisabled() ) {
@@ -11860,6 +11692,7 @@ OO.ui.ComboBoxWidget.prototype.onInputEnter = function () {
 /**
  * Handle menu choose events.
  *
+ * @private
  * @param {OO.ui.OptionWidget} item Chosen item
  */
 OO.ui.ComboBoxWidget.prototype.onMenuChoose = function ( item ) {
@@ -11870,6 +11703,8 @@ OO.ui.ComboBoxWidget.prototype.onMenuChoose = function ( item ) {
 
 /**
  * Handle menu item change events.
+ *
+ * @private
  */
 OO.ui.ComboBoxWidget.prototype.onMenuItemsChange = function () {
        var match = this.menu.getItemFromData( this.input.getValue() );
@@ -11898,7 +11733,34 @@ OO.ui.ComboBoxWidget.prototype.setDisabled = function ( disabled ) {
 };
 
 /**
- * Label widget.
+ * LabelWidgets help identify the function of interface elements. Each LabelWidget can
+ * be configured with a `label` option that is set to a string, a label node, or a function:
+ *
+ * - String: a plaintext string
+ * - jQuery selection: a jQuery selection, used for anything other than a plaintext label, e.g., a
+ *   label that includes a link or special styling, such as a gray color or additional graphical elements.
+ * - Function: a function that will produce a string in the future. Functions are used
+ *   in cases where the value of the label is not currently defined.
+ *
+ * In addition, the LabelWidget can be associated with an {@link OO.ui.InputWidget input widget}, which
+ * will come into focus when the label is clicked.
+ *
+ *     @example
+ *     // Examples of LabelWidgets
+ *     var label1 = new OO.ui.LabelWidget({
+ *         label: 'plaintext label'
+ *     });
+ *     var label2 = new OO.ui.LabelWidget({
+ *         label: $( '<a href="default.html">jQuery label</a>'  )
+ *     });
+ *     // Create a fieldset layout with fields for each example
+ *     var fieldset = new OO.ui.FieldsetLayout( );
+ *     fieldset.addItems( [
+ *         new OO.ui.FieldLayout( label1 ),
+ *         new OO.ui.FieldLayout( label2 )
+ *     ] );
+ *     $( 'body' ).append( fieldset.$element );
+ *
  *
  * @class
  * @extends OO.ui.Widget
@@ -11906,7 +11768,8 @@ OO.ui.ComboBoxWidget.prototype.setDisabled = function ( disabled ) {
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {OO.ui.InputWidget} [input] Input widget this label is for
+ * @cfg {OO.ui.InputWidget} [input] {@link OO.ui.InputWidget Input widget} that uses the label.
+ *  Clicking the label will focus the specified input field.
  */
 OO.ui.LabelWidget = function OoUiLabelWidget( config ) {
        // Configuration initialization
@@ -11946,6 +11809,7 @@ OO.ui.LabelWidget.static.tagName = 'span';
 /**
  * Handles label mouse click events.
  *
+ * @private
  * @param {jQuery.Event} e Mouse click event
  */
 OO.ui.LabelWidget.prototype.onClick = function () {
@@ -12132,9 +11996,31 @@ OO.ui.OptionWidget.prototype.setPressed = function ( state ) {
 };
 
 /**
- * Option widget with an option icon and indicator.
+ * DecoratedOptionWidgets are {@link OO.ui.OptionWidget options} that can be configured
+ * with an {@link OO.ui.IconElement icon} and/or {@link OO.ui.IndicatorElement indicator}.
+ * This class is used with OO.ui.SelectWidget to create a selection of mutually exclusive
+ * options. For more information about options and selects, please see the
+ * [OOjs UI documentation on MediaWiki][1].
  *
- * Use together with OO.ui.SelectWidget.
+ *     @example
+ *     // Decorated options in a select widget
+ *     var select=new OO.ui.SelectWidget( {
+ *         items: [
+ *             new OO.ui.DecoratedOptionWidget( {
+ *                 data: 'a',
+ *                 label: 'Option with icon',
+ *                 icon: 'help'
+ *             } ),
+ *             new OO.ui.DecoratedOptionWidget( {
+ *                 data: 'b',
+ *                 label: 'Option with indicator',
+ *                 indicator: 'next'
+ *             } )
+ *         ]
+ *     } );
+ *     $('body').append(select.$element);
+ *
+ * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options
  *
  * @class
  * @extends OO.ui.OptionWidget
@@ -12482,7 +12368,23 @@ OO.ui.OutlineOptionWidget.prototype.setLevel = function ( level ) {
 };
 
 /**
- * Container for content that is overlaid and positioned absolutely.
+ * PopupWidget is a container for content. The popup is overlaid and positioned absolutely.
+ * By default, each popup has an anchor that points toward its origin.
+ * Please see the [OOjs UI documentation on Mediawiki] [1] for more information and examples.
+ *
+ *     @example
+ *     // A popup widget.
+ *     var popup=new OO.ui.PopupWidget({
+ *         $content: $( '<p>Hi there!</p>' ),
+ *         padded: true,
+ *         width: 300
+ *     } );
+ *
+ *     $('body').append(popup.$element);
+ *     // To display the popup, toggle the visibility to 'true'.
+ *     popup.toggle(true);
+ *
+ * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Popups
  *
  * @class
  * @extends OO.ui.Widget
@@ -12491,16 +12393,24 @@ OO.ui.OutlineOptionWidget.prototype.setLevel = function ( level ) {
  * @constructor
  * @param {Object} [config] Configuration options
  * @cfg {number} [width=320] Width of popup in pixels
- * @cfg {number} [height] Height of popup, omit to use automatic height
+ * @cfg {number} [height] Height of popup in pixels. Omit to use the automatic height.
  * @cfg {boolean} [anchor=true] Show anchor pointing to origin of popup
- * @cfg {string} [align='center'] Alignment of popup to origin
- * @cfg {jQuery} [$container] Container to prevent popup from rendering outside of
- * @cfg {number} [containerPadding=10] How much padding to keep between popup and container
+ * @cfg {string} [align='center'] Alignment of the popup: `center`, `left`, or `right`.
+ *  If the popup is right-aligned, the right edge of the popup is aligned to the anchor.
+ *  For left-aligned popups, the left edge is aligned to the anchor.
+ * @cfg {jQuery} [$container] Constrain the popup to the boundaries of the specified container.
+ *  See the [OOjs UI docs on MediaWiki][3] for an example.
+ *  [3]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Popups#containerExample
+ * @cfg {number} [containerPadding=10] Padding between the popup and its container, specified as a number of pixels.
  * @cfg {jQuery} [$content] Content to append to the popup's body
- * @cfg {boolean} [autoClose=false] Popup auto-closes when it loses focus
- * @cfg {jQuery} [$autoCloseIgnore] Elements to not auto close when clicked
- * @cfg {boolean} [head] Show label and close button at the top
- * @cfg {boolean} [padded] Add padding to the body
+ * @cfg {boolean} [autoClose=false] Automatically close the popup when it loses focus.
+ * @cfg {jQuery} [$autoCloseIgnore] Elements that will not close the popup when clicked.
+ *  This config option is only relevant if #autoClose is set to `true`. See the [OOjs UI docs on MediaWiki][2]
+ *  for an example.
+ *  [2]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Popups#autocloseExample
+ * @cfg {boolean} [head] Show a popup header that contains a #label (if specified) and close
+ *  button.
+ * @cfg {boolean} [padded] Add padding to the popup's body
  */
 OO.ui.PopupWidget = function OoUiPopupWidget( config ) {
        // Configuration initialization
@@ -12532,6 +12442,7 @@ OO.ui.PopupWidget = function OoUiPopupWidget( config ) {
        this.align = config.align || 'center';
        this.closeButton = new OO.ui.ButtonWidget( { framed: false, icon: 'close' } );
        this.onMouseDownHandler = this.onMouseDown.bind( this );
+       this.onDocumentKeyDownHandler = this.onDocumentKeyDown.bind( this );
 
        // Events
        this.closeButton.connect( this, { click: 'onCloseButtonClick' } );
@@ -12578,7 +12489,8 @@ OO.mixinClass( OO.ui.PopupWidget, OO.ui.ClippableElement );
 /**
  * Handles mouse down events.
  *
- * @param {jQuery.Event} e Mouse down event
+ * @private
+ * @param {MouseEvent} e Mouse down event
  */
 OO.ui.PopupWidget.prototype.onMouseDown = function ( e ) {
        if (
@@ -12592,6 +12504,8 @@ OO.ui.PopupWidget.prototype.onMouseDown = function ( e ) {
 
 /**
  * Bind mouse down listener.
+ *
+ * @private
  */
 OO.ui.PopupWidget.prototype.bindMouseDownListener = function () {
        // Capture clicks outside popup
@@ -12600,6 +12514,8 @@ OO.ui.PopupWidget.prototype.bindMouseDownListener = function () {
 
 /**
  * Handles close button click events.
+ *
+ * @private
  */
 OO.ui.PopupWidget.prototype.onCloseButtonClick = function () {
        if ( this.isVisible() ) {
@@ -12609,13 +12525,50 @@ OO.ui.PopupWidget.prototype.onCloseButtonClick = function () {
 
 /**
  * Unbind mouse down listener.
+ *
+ * @private
  */
 OO.ui.PopupWidget.prototype.unbindMouseDownListener = function () {
        this.getElementWindow().removeEventListener( 'mousedown', this.onMouseDownHandler, true );
 };
 
 /**
- * Set whether to show a anchor.
+ * Handles key down events.
+ *
+ * @private
+ * @param {KeyboardEvent} e Key down event
+ */
+OO.ui.PopupWidget.prototype.onDocumentKeyDown = function ( e ) {
+       if (
+               e.which === OO.ui.Keys.ESCAPE &&
+               this.isVisible()
+       ) {
+               this.toggle( false );
+               e.preventDefault();
+               e.stopPropagation();
+       }
+};
+
+/**
+ * Bind key down listener.
+ *
+ * @private
+ */
+OO.ui.PopupWidget.prototype.bindKeyDownListener = function () {
+       this.getElementWindow().addEventListener( 'keydown', this.onDocumentKeyDownHandler, true );
+};
+
+/**
+ * Unbind key down listener.
+ *
+ * @private
+ */
+OO.ui.PopupWidget.prototype.unbindKeyDownListener = function () {
+       this.getElementWindow().removeEventListener( 'keydown', this.onDocumentKeyDownHandler, true );
+};
+
+/**
+ * Show, hide, or toggle the visibility of the anchor.
  *
  * @param {boolean} [show] Show anchor, omit to toggle
  */
@@ -12633,9 +12586,9 @@ OO.ui.PopupWidget.prototype.toggleAnchor = function ( show ) {
 };
 
 /**
- * Check if showing a anchor.
+ * Check if the anchor is visible.
  *
- * @return {boolean} anchor is visible
+ * @return {boolean} Anchor is visible
  */
 OO.ui.PopupWidget.prototype.hasAnchor = function () {
        return this.anchor;
@@ -12656,6 +12609,7 @@ OO.ui.PopupWidget.prototype.toggle = function ( show ) {
                if ( show ) {
                        if ( this.autoClose ) {
                                this.bindMouseDownListener();
+                               this.bindKeyDownListener();
                        }
                        this.updateDimensions();
                        this.toggleClipping( true );
@@ -12663,6 +12617,7 @@ OO.ui.PopupWidget.prototype.toggle = function ( show ) {
                        this.toggleClipping( false );
                        if ( this.autoClose ) {
                                this.unbindMouseDownListener();
+                               this.unbindKeyDownListener();
                        }
                }
        }
@@ -12675,8 +12630,8 @@ OO.ui.PopupWidget.prototype.toggle = function ( show ) {
  *
  * Changing the size may also change the popup's position depending on the alignment.
  *
- * @param {number} width Width
- * @param {number} height Height
+ * @param {number} width Width in pixels
+ * @param {number} height Height in pixels
  * @param {boolean} [transition=false] Use a smooth transition
  * @chainable
  */
@@ -12771,14 +12726,42 @@ OO.ui.PopupWidget.prototype.updateDimensions = function ( transition ) {
 };
 
 /**
- * Progress bar widget.
+ * Progress bars visually display the status of an operation, such as a download,
+ * and can be either determinate or indeterminate:
+ *
+ * - **determinate** process bars show the percent of an operation that is complete.
+ *
+ * - **indeterminate** process bars use a visual display of motion to indicate that an operation
+ *   is taking place. Because the extent of an indeterminate operation is unknown, the bar does
+ *   not use percentages.
+ *
+ * The value of the `progress` configuration determines whether the bar is determinate or indeterminate.
+ *
+ *     @example
+ *     // Examples of determinate and indeterminate progress bars.
+ *     var progressBar1=new OO.ui.ProgressBarWidget( {
+ *         progress: 33
+ *     } );
+ *
+ *     var progressBar2=new OO.ui.ProgressBarWidget( {
+ *         progress: false
+ *     } );
+ *     // Create a FieldsetLayout to layout progress bars
+ *     var fieldset = new OO.ui.FieldsetLayout;
+ *     fieldset.addItems( [
+ *        new OO.ui.FieldLayout( progressBar1, {label : 'Determinate', align : 'top'}),
+ *        new OO.ui.FieldLayout( progressBar2, {label : 'Indeterminate', align : 'top'})
+ *     ] );
+ *     $( 'body' ).append( fieldset.$element );
  *
  * @class
  * @extends OO.ui.Widget
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {number|boolean} [progress=false] Initial progress percent or false for indeterminate
+ * @cfg {number|boolean} [progress=false] The type of progress bar (determinate or indeterminate).
+ *  To create a determinate progress bar, specify a number that reflects the initial percent complete.
+ *  By default, the progress bar is indeterminate.
  */
 OO.ui.ProgressBarWidget = function OoUiProgressBarWidget( config ) {
        // Configuration initialization
@@ -12815,18 +12798,18 @@ OO.ui.ProgressBarWidget.static.tagName = 'div';
 /* Methods */
 
 /**
- * Get progress percent
+ * Get the percent of the progress that has been completed. Indeterminate progresses will return `false`.
  *
- * @return {number} Progress percent
+ * @return {number|boolean} Progress percent
  */
 OO.ui.ProgressBarWidget.prototype.getProgress = function () {
        return this.progress;
 };
 
 /**
- * Set progress percent
+ * Set the percent of the process completed or `false` for an indeterminate process.
  *
- * @param {number|boolean} progress Progress percent or false for indeterminate
+ * @param {number|boolean} progress Progress percent or `false` for indeterminate
  */
 OO.ui.ProgressBarWidget.prototype.setProgress = function ( progress ) {
        this.progress = progress;
@@ -13001,9 +12984,28 @@ OO.ui.SearchWidget.prototype.getResults = function () {
  * {@link OO.ui.RadioSelectWidget radio selects}, and {@link OO.ui.MenuSelectWidget
  * menu selects}.
  *
- * This class should be used together with OO.ui.OptionWidget.
+ * This class should be used together with OO.ui.OptionWidget or OO.ui.DecoratedOptionWidget. For more
+ * information, please see the [OOjs UI documentation on MediaWiki][1].
  *
- * For more information, please see the [OOjs UI documentation on MediaWiki][1].
+ *     @example
+ *     // Example of a select widget with three options
+ *     var select=new OO.ui.SelectWidget( {
+ *         items: [
+ *             new OO.ui.OptionWidget( {
+ *                 data: 'a',
+ *                 label: 'Option One',
+ *             } ),
+ *             new OO.ui.OptionWidget( {
+ *                 data: 'b',
+ *                 label: 'Option Two',
+ *             } ),
+ *             new OO.ui.OptionWidget( {
+ *                 data: 'c',
+ *                 label: 'Option Three',
+ *             } ),
+ *         ]
+ *     } );
+ *     $('body').append(select.$element);
  *
  * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options
  *
@@ -13088,6 +13090,7 @@ OO.mixinClass( OO.ui.SelectWidget, OO.ui.GroupWidget );
 
 /**
  * @event choose
+ * A `choose` event is emitted when an item is chosen with the #chooseItem method.
  * @param {OO.ui.OptionWidget|null} item Chosen item
  */
 
@@ -13285,6 +13288,8 @@ OO.ui.SelectWidget.prototype.onKeyDown = function ( e ) {
 
 /**
  * Bind key down listener.
+ *
+ * @protected
  */
 OO.ui.SelectWidget.prototype.bindKeyDownListener = function () {
        this.getElementWindow().addEventListener( 'keydown', this.onKeyDownHandler, true );
@@ -13292,6 +13297,8 @@ OO.ui.SelectWidget.prototype.bindKeyDownListener = function () {
 
 /**
  * Unbind key down listener.
+ *
+ * @protected
  */
 OO.ui.SelectWidget.prototype.unbindKeyDownListener = function () {
        this.getElementWindow().removeEventListener( 'keydown', this.onKeyDownHandler, true );
@@ -13347,6 +13354,10 @@ OO.ui.SelectWidget.prototype.getHighlightedItem = function () {
 /**
  * Toggle pressed state.
  *
+ * Press is a state that occurs when a user mouses down on an item, but
+ * has not yet let go of the mouse. The item may appear selected, but it will not be selected
+ * until the user releases the mouse.
+ *
  * @param {boolean} pressed An option is being pressed
  */
 OO.ui.SelectWidget.prototype.togglePressed = function ( pressed ) {
@@ -13416,6 +13427,10 @@ OO.ui.SelectWidget.prototype.selectItem = function ( item ) {
 /**
  * Press an item.
  *
+ * Press is a state that occurs when a user mouses down on an item, but has not
+ * yet let go of the mouse. The item may appear selected, but it will not be selected until the user
+ * releases the mouse.
+ *
  * @param {OO.ui.OptionWidget} [item] Item to press, omit to depress all
  * @fires press
  * @chainable
@@ -13441,8 +13456,12 @@ OO.ui.SelectWidget.prototype.pressItem = function ( item ) {
 /**
  * Choose an item.
  *
- * Identical to #selectItem, but may vary in subclasses that want to take additional action when
- * an item is selected using the keyboard or mouse.
+ * Note that ‘choose’ should never be modified programmatically. A user can choose
+ * an option with the keyboard or mouse and it becomes selected. To select an item programmatically,
+ * use the #selectItem method.
+ *
+ * This method is identical to #selectItem, but may vary in subclasses that take additional action
+ * when users choose an item with the keyboard or mouse.
  *
  * @param {OO.ui.OptionWidget} item Item to choose
  * @fires choose
@@ -14085,7 +14104,28 @@ OO.inheritClass( OO.ui.OutlineSelectWidget, OO.ui.SelectWidget );
 OO.mixinClass( OO.ui.OutlineSelectWidget, OO.ui.TabIndexedElement );
 
 /**
- * Switch that slides on and off.
+ * ToggleSwitches are switches that slide on and off. Their state is represented by a Boolean
+ * value (`true` for ‘on’, and `false` otherwise, the default). The ‘off’ state is represented
+ * visually by a slider in the leftmost position.
+ *
+ *     @example
+ *     // Toggle switches in the 'off' and 'on' position.
+ *     var toggleSwitch1 = new OO.ui.ToggleSwitchWidget({
+ *         value: false
+ *      } );
+ *     var toggleSwitch2 = new OO.ui.ToggleSwitchWidget({
+ *         value: true
+ *     } );
+ *
+ *     // Create a FieldsetLayout to layout and label switches
+ *     var fieldset = new OO.ui.FieldsetLayout( {
+ *        label: 'Toggle switches'
+ *     } );
+ *     fieldset.addItems( [
+ *         new OO.ui.FieldLayout( toggleSwitch1, {label : 'Off', align : 'top'}),
+ *         new OO.ui.FieldLayout( toggleSwitch2, {label : 'On', align : 'top'})
+ *     ] );
+ *     $( 'body' ).append( fieldset.$element );
  *
  * @class
  * @extends OO.ui.Widget
@@ -14094,7 +14134,8 @@ OO.mixinClass( OO.ui.OutlineSelectWidget, OO.ui.TabIndexedElement );
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [value=false] Initial value
+ * @cfg {boolean} [value=false] The toggle switch’s initial on/off state.
+ *  By default, the toggle switch is in the 'off' position.
  */
 OO.ui.ToggleSwitchWidget = function OoUiToggleSwitchWidget( config ) {
        // Parent constructor
@@ -14137,6 +14178,7 @@ OO.mixinClass( OO.ui.ToggleSwitchWidget, OO.ui.TabIndexedElement );
 /**
  * Handle mouse click events.
  *
+ * @private
  * @param {jQuery.Event} e Mouse click event
  */
 OO.ui.ToggleSwitchWidget.prototype.onClick = function ( e ) {
@@ -14149,6 +14191,7 @@ OO.ui.ToggleSwitchWidget.prototype.onClick = function ( e ) {
 /**
  * Handle key press events.
  *
+ * @private
  * @param {jQuery.Event} e Key press event
  */
 OO.ui.ToggleSwitchWidget.prototype.onKeyPress = function ( e ) {
index 53d6441..c65a5c1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/add-constructive.png differ
index cfbb6d8..0d37afa 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #00C697 }</style>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #00AF89 }</style>
     <g id="add">
         <path id="plus" d="M13 8h-2v3h-3v2h3v3h2v-3h3v-2h-3z"/>
     </g>
index 0a6d487..8c167d9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/check-constructive.png differ
index 90923d5..fb74086 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0, 0, 24, 24"><style>* { fill: #00C697 }</style>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0, 0, 24, 24"><style>* { fill: #00AF89 }</style>
     <g id="check">
         <path d="M7.105 13.473l1.422-1.423 1.901 1.902 4.81-6.952 1.657 1.148-6.26 8.852z"/>
     </g>
index e10c539..0e0d9c2 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/circle-constructive.png differ
index 88e014b..774d44a 100644 (file)
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #00C697 }</style><circle cx="12" cy="12" r="6"></circle></svg>
+<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #00AF89 }</style><circle cx="12" cy="12" r="6"></circle></svg>
index 8b6799f..84e6498 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/remove-destructive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/remove-destructive.png differ
index be51bea..3551e58 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #E81915 }</style>
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #D11D13 }</style>
     <g id="remove">
         <path id="trash-can" d="M12 10h-1v6h1v-6zm-2 0h-1v6h1v-6zm4 0h-1v6h1v-6zm0-4v-1h-5v1h-3v3h1v7.966l1 1.031v-.074.077h6.984l.016-.018v.015l1-1.031v-7.966h1v-3h-3zm1 11h-7v-8h7v8zm1-9h-9v-1h9v1z"/>
     </g>
diff --git a/resources/src/mediawiki/images/help.png b/resources/src/mediawiki/images/help.png
new file mode 100644 (file)
index 0000000..f1bc368
Binary files /dev/null and b/resources/src/mediawiki/images/help.png differ
diff --git a/resources/src/mediawiki/mediawiki.helplink.css b/resources/src/mediawiki/mediawiki.helplink.css
new file mode 100644 (file)
index 0000000..5d45778
--- /dev/null
@@ -0,0 +1,5 @@
+#mw-indicator-mw-helplink a {
+       /* @embed */
+       background: url(images/help.png) no-repeat scroll left center transparent;
+       padding-left: 20px;
+}
index b777cd3..817c856 100644 (file)
@@ -78,7 +78,7 @@
                                crypto = window.crypto || window.msCrypto;
 
                        // Based on https://github.com/broofa/node-uuid/blob/bfd9f96127/uuid.js
-                       if ( crypto ) {
+                       if ( crypto && crypto.getRandomValues ) {
                                // Fill an array with 8 random values, each of which is 8 bits.
                                // Note that Uint8Array is array-like but does not implement Array.
                                rnds = new Uint8Array( 8 );
index 4ed28a8..b410898 100644 (file)
@@ -44,7 +44,6 @@ $wgAutoloadClasses += array(
        'ResourceLoaderTestCase' => "$testDir/phpunit/ResourceLoaderTestCase.php",
        'ResourceLoaderTestModule' => "$testDir/phpunit/ResourceLoaderTestCase.php",
        'ResourceLoaderFileModuleTestModule' => "$testDir/phpunit/ResourceLoaderTestCase.php",
-       'ResourceLoaderWikiModuleTestModule' => "$testDir/phpunit/ResourceLoaderTestCase.php",
        'TestUser' => "$testDir/phpunit/includes/TestUser.php",
        'LessFileCompilationTest' => "$testDir/phpunit/LessFileCompilationTest.php",
 
index 055beb0..deecb31 100644 (file)
@@ -98,10 +98,3 @@ class ResourceLoaderTestModule extends ResourceLoaderModule {
 
 class ResourceLoaderFileModuleTestModule extends ResourceLoaderFileModule {
 }
-
-class ResourceLoaderWikiModuleTestModule extends ResourceLoaderWikiModule {
-       // Override expected via PHPUnit mocks and stubs
-       protected function getPages( ResourceLoaderContext $context ) {
-               return array();
-       }
-}
index 331fb3b..dcafb73 100644 (file)
@@ -691,21 +691,21 @@ class GlobalTest extends MediaWikiTestCase {
        }
 
        /**
-        * @dataProvider provideWfShellMaintenanceCmdList
-        * @covers ::wfShellMaintenanceCmd
+        * @dataProvider provideWfShellWikiCmdList
+        * @covers ::wfShellWikiCmd
         */
-       public function testWfShellMaintenanceCmd( $script, $parameters, $options,
+       public function testWfShellWikiCmd( $script, $parameters, $options,
                $expected, $description
        ) {
                if ( wfIsWindows() ) {
                        // Approximation that's good enough for our purposes just now
                        $expected = str_replace( "'", '"', $expected );
                }
-               $actual = wfShellMaintenanceCmd( $script, $parameters, $options );
+               $actual = wfShellWikiCmd( $script, $parameters, $options );
                $this->assertEquals( $expected, $actual, $description );
        }
 
-       public static function provideWfShellMaintenanceCmdList() {
+       public static function provideWfShellWikiCmdList() {
                global $wgPhpCli;
 
                return array(
index fbd2c31..8a0dff7 100644 (file)
@@ -138,7 +138,7 @@ class HttpTest extends MediaWikiTestCase {
         * HTTP redirects).
         */
        public function testRelativeRedirections() {
-               $h = MWHttpRequestTester::factory( 'http://oldsite/file.ext' );
+               $h = MWHttpRequestTester::factory( 'http://oldsite/file.ext', array(), __METHOD__ );
 
                # Forge a Location header
                $h->setRespHeaders( 'location', array(
@@ -486,7 +486,7 @@ class HttpTest extends MediaWikiTestCase {
 class MWHttpRequestTester extends MWHttpRequest {
        // function derived from the MWHttpRequest factory function but
        // returns appropriate tester class here
-       public static function factory( $url, $options = null ) {
+       public static function factory( $url, $options = null, $caller = __METHOD__ ) {
                if ( !Http::$httpEngine ) {
                        Http::$httpEngine = function_exists( 'curl_init' ) ? 'curl' : 'php';
                } elseif ( Http::$httpEngine == 'curl' && !function_exists( 'curl_init' ) ) {
@@ -496,7 +496,7 @@ class MWHttpRequestTester extends MWHttpRequest {
 
                switch ( Http::$httpEngine ) {
                        case 'curl':
-                               return new CurlHttpRequestTester( $url, $options );
+                               return new CurlHttpRequestTester( $url, $options, $caller );
                        case 'php':
                                if ( !wfIniGetBool( 'allow_url_fopen' ) ) {
                                        throw new MWException( __METHOD__ .
@@ -504,7 +504,7 @@ class MWHttpRequestTester extends MWHttpRequest {
                                                        . 'If possible, curl should be used instead. See http://php.net/curl.' );
                                }
 
-                               return new PhpHttpRequestTester( $url, $options );
+                               return new PhpHttpRequestTester( $url, $options, $caller );
                        default:
                }
        }
index 67a75f3..88a99e9 100644 (file)
@@ -123,7 +123,8 @@ class ApiLoginTest extends ApiTestCase {
                                        "lgname" => $user->username,
                                        "lgpassword" => $user->password
                                )
-                       )
+                       ),
+                       __METHOD__
                );
                $req->execute();
 
index b40d2d2..bfca75a 100644 (file)
@@ -1478,7 +1478,7 @@ class FileBackendTest extends MediaWikiTestCase {
                $url = $this->backend->getFileHttpUrl( array( 'src' => $source ) );
 
                if ( $url !== null ) { // supported
-                       $data = Http::request( "GET", $url );
+                       $data = Http::request( "GET", $url, array(), __METHOD__ );
                        $this->assertEquals( $content, $data,
                                "HTTP GET of URL has right contents ($backendName)." );
                }
index 9dc1805..93a3ebb 100644 (file)
@@ -2,12 +2,94 @@
 
 class ResourceLoaderWikiModuleTest extends ResourceLoaderTestCase {
 
+       /**
+        * @covers ResourceLoaderWikiModule::__construct
+        * @dataProvider provideConstructor
+        */
+       public function testConstructor( $params ) {
+               $module = new ResourceLoaderWikiModule( $params );
+               $this->assertInstanceOf( 'ResourceLoaderWikiModule', $module );
+       }
+
+       public static function provideConstructor() {
+               return array(
+                       // Nothing
+                       array( null ),
+                       array( array() ),
+                       // Unrecognized settings
+                       array( array( 'foo' => 'baz' ) ),
+                       // Real settings
+                       array( array( 'scripts' => array( 'MediaWiki:Common.js' ) ) ),
+               );
+       }
+
+       /**
+        * @dataProvider provideGetPages
+        * @covers ResourceLoaderWikiModule::getPages
+        */
+       public function testGetPages( $params, Config $config, $expected ) {
+               $module = new ResourceLoaderWikiModule( $params );
+               $module->setConfig( $config );
+
+               // Use getDefinitionSummary because getPages is protected
+               $summary = $module->getDefinitionSummary( ResourceLoaderContext::newDummyContext() );
+               $this->assertEquals(
+                       $expected,
+                       $summary['pages']
+               );
+       }
+
+       public static function provideGetPages() {
+               $settings = array(
+                       'UseSiteJs' => true,
+                       'UseSiteCss' => true,
+               );
+
+               $params = array(
+                       'styles' => array( 'MediaWiki:Common.css' ),
+                       'scripts' => array( 'MediaWiki:Common.js' ),
+               );
+
+               return array(
+                       array( array(), new HashConfig( $settings ), array() ),
+                       array( $params, new HashConfig( $settings ), array(
+                               'MediaWiki:Common.js' => array( 'type' => 'script' ),
+                               'MediaWiki:Common.css' => array( 'type' => 'style' )
+                       ) ),
+                       array( $params, new HashConfig( array( 'UseSiteCss' => false ) + $settings ), array(
+                               'MediaWiki:Common.js' => array( 'type' => 'script' ),
+                       ) ),
+                       array( $params, new HashConfig( array( 'UseSiteJs' => false ) + $settings ), array(
+                               'MediaWiki:Common.css' => array( 'type' => 'style' ),
+                       ) ),
+                       array( $params, new HashConfig( array( 'UseSiteJs' => false, 'UseSiteCss' => false ) ), array() ),
+               );
+       }
+
+       /**
+        * @covers ResourceLoaderWikiModule::getGroup
+        * @dataProvider provideGetGroup
+        */
+       public function testGetGroup( $params, $expected ) {
+               $module = new ResourceLoaderWikiModule( $params );
+               $this->assertEquals( $expected, $module->getGroup() );
+       }
+
+       public static function provideGetGroup() {
+               return array(
+                       // No group specified
+                       array( array(), null ),
+                       // A random group
+                       array( array( 'group' => 'foobar' ), 'foobar' ),
+               );
+       }
+
        /**
         * @covers ResourceLoaderWikiModule::isKnownEmpty
         * @dataProvider provideIsKnownEmpty
         */
        public function testIsKnownEmpty( $titleInfo, $group, $expected ) {
-               $module = $this->getMockBuilder( 'ResourceLoaderWikiModuleTestModule' )
+               $module = $this->getMockBuilder( 'ResourceLoaderWikiModule' )
                        ->setMethods( array( 'getTitleInfo', 'getGroup' ) )
                        ->getMock();
                $module->expects( $this->any() )