Merge "Set Southern Kurdish to use Kurdish ordered list style type"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 23 Jun 2015 11:35:48 +0000 (11:35 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 23 Jun 2015 11:35:48 +0000 (11:35 +0000)
127 files changed:
.gitattributes
RELEASE-NOTES-1.26
docs/linkcache.txt
docs/sitelist.txt
includes/DefaultSettings.php
includes/EditPage.php
includes/FileDeleteForm.php
includes/GlobalFunctions.php
includes/MediaWiki.php
includes/OutputPage.php
includes/ProtectionForm.php
includes/WebRequest.php
includes/api/ApiQuerySiteinfo.php
includes/api/i18n/ja.json
includes/api/i18n/ru.json
includes/content/ContentHandler.php
includes/htmlform/HTMLFormFieldWithButton.php
includes/htmlform/HTMLSelectNamespaceWithButton.php
includes/htmlform/HTMLTextFieldWithButton.php
includes/jobqueue/jobs/RefreshLinksJob.php
includes/media/Bitmap.php
includes/media/ExifBitmap.php
includes/media/Jpeg.php
includes/media/tinyrgb.icc [new file with mode: 0644]
includes/objectcache/ObjectCacheSessionHandler.php
includes/page/Article.php
includes/page/ImagePage.php
includes/page/WikiPage.php
includes/profiler/Profiler.php
includes/profiler/SectionProfiler.php
includes/specials/SpecialBlock.php
includes/specials/SpecialRevisiondelete.php
includes/specials/SpecialTags.php
includes/specials/SpecialUpload.php
includes/specials/SpecialWantedfiles.php
languages/i18n/ast.json
languages/i18n/bcc.json
languages/i18n/be-tarask.json
languages/i18n/bgn.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/fr.json
languages/i18n/gl.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hr.json
languages/i18n/id.json
languages/i18n/ilo.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/ka.json
languages/i18n/km.json
languages/i18n/ko.json
languages/i18n/ksh.json
languages/i18n/ku-latn.json
languages/i18n/la.json
languages/i18n/lad.json
languages/i18n/lb.json
languages/i18n/lrc.json
languages/i18n/lv.json
languages/i18n/mk.json
languages/i18n/mn.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/ne.json
languages/i18n/nn.json
languages/i18n/or.json
languages/i18n/pa.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/sdh.json [new file with mode: 0644]
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/tr.json
languages/i18n/uz.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesEn.php
maintenance/copyFileBackend.php
maintenance/dictionary/mediawiki.dic
maintenance/jsduck/categories.json
resources/Resources.php
resources/src/jquery/jquery.accessKeyLabel.js
resources/src/jquery/jquery.highlightText.js
resources/src/jquery/jquery.mwExtension.js
resources/src/jquery/jquery.tablesorter.js
resources/src/mediawiki.page/mediawiki.page.watch.ajax.js
resources/src/mediawiki.special/mediawiki.special.upload.js
resources/src/mediawiki.widgets/mw.widgets.TitleInputWidget.js
resources/src/mediawiki/mediawiki.RegExp.js [new file with mode: 0644]
resources/src/mediawiki/mediawiki.Title.js
resources/src/mediawiki/mediawiki.Uri.js
resources/src/mediawiki/mediawiki.htmlform.js
resources/src/mediawiki/mediawiki.inspect.js
resources/src/mediawiki/mediawiki.userSuggest.js
resources/src/mediawiki/mediawiki.util.js
tests/parser/preprocess/All_system_messages.expected
tests/parser/preprocess/All_system_messages.txt
tests/phpunit/data/media/srgb.jpg [new file with mode: 0644]
tests/phpunit/data/media/tinyrgb.icc [new file with mode: 0644]
tests/phpunit/data/media/tinyrgb.jpg [new file with mode: 0644]
tests/phpunit/includes/GlobalFunctions/GlobalTest.php
tests/phpunit/includes/MediaWikiTest.php [new file with mode: 0644]
tests/phpunit/includes/media/ExifBitmapTest.php
tests/qunit/QUnitTestResources.php
tests/qunit/suites/resources/jquery/jquery.mwExtension.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.RegExp.test.js [new file with mode: 0644]

index 50ca329..69d7b1b 100644 (file)
@@ -1 +1,2 @@
 *.sh eol=lf
+*.icc binary
index 896d1d5..852023b 100644 (file)
@@ -96,6 +96,7 @@ changes to languages because of Bugzilla reports.
 * The Block class constructor now takes an associative array of parameters
   instead of many optional positional arguments. Calling the constructor the old
   way will issue a deprecation warning.
+* The jquery.mwExtension module was deprecated.
 
 
 == Compatibility ==
index 266f200..13b6961 100644 (file)
@@ -21,4 +21,4 @@ foreach( $pages as $page ){
 }
 
 $batch = new LinkBatch( $titles );
-$batch->execute();
\ No newline at end of file
+$batch->execute();
index 48c7ce5..24e1b9a 100644 (file)
@@ -44,4 +44,4 @@ The XML elements are used as follows:
 ** link: Generic URL template, often the document root.
 ** page_path: (for mediawiki sites) URL template for wiki pages (corresponds to the target wiki's $wgArticlePath setting)
 ** file_path: (for mediawiki sites) URL pattern for application entry points and resources (corresponds to the target wiki's $wgScriptPath setting).
-* forward: Whether using a prefix defined by a localid tag in the URL will cause the request to be redirected to the corresponding page on the target wiki (currently unused). E.g. whether http://wiki.acme.com/wiki/foo:Buzz should be forwarded to http://wiki.foo.com/read/Buzz. (CAVEAT: not yet implement, can be specified but has no effect)
\ No newline at end of file
+* forward: Whether using a prefix defined by a localid tag in the URL will cause the request to be redirected to the corresponding page on the target wiki (currently unused). E.g. whether http://wiki.acme.com/wiki/foo:Buzz should be forwarded to http://wiki.foo.com/read/Buzz. (CAVEAT: not yet implement, can be specified but has no effect)
index 39f739d..a16bccb 100644 (file)
@@ -82,6 +82,14 @@ $wgVersion = '1.26alpha';
  */
 $wgSitename = 'MediaWiki';
 
+/**
+ * When the wiki is running behind a proxy and this is set to true, assumes that the proxy exposes
+ * the wiki on the standard ports (443 for https and 80 for http).
+ * @var bool
+ * @since 1.26
+ */
+$wgAssumeProxiesUseDefaultProtocolPorts = true;
+
 /**
  * URL of the server.
  *
@@ -970,6 +978,14 @@ $wgJpegTran = '/usr/bin/jpegtran';
  */
 $wgExiv2Command = '/usr/bin/exiv2';
 
+
+/**
+ * Path to exiftool binary. Used for lossless ICC profile swapping.
+ *
+ * @since 1.26
+ */
+$wgExiftool = '/usr/bin/exiftool';
+
 /**
  * Scalable Vector Graphics (SVG) may be uploaded as images.
  * Since SVG support is not yet standard in browsers, it is
@@ -1322,6 +1338,14 @@ $wgUploadThumbnailRenderHttpCustomHost = false;
  */
 $wgUploadThumbnailRenderHttpCustomDomain = false;
 
+/**
+ * When this variable is true and JPGs use the sRGB ICC profile, swaps it for the more lightweight
+ * (and free) TinyRGB profile when generating thumbnails.
+ *
+ * @since 1.26
+ */
+$wgUseTinyRGBForJPGThumbnails = false;
+
 /**
  * Default parameters for the "<gallery>" tag
  */
index 4e470e9..3600fb2 100644 (file)
@@ -167,6 +167,12 @@ class EditPage {
         */
        const AS_PARSE_ERROR = 240;
 
+       /**
+        * Status: when changing the content model is disallowed due to
+        * $wgContentHandlerUseDB being false
+        */
+       const AS_CANNOT_USE_CUSTOM_MODEL = 241;
+
        /**
         * HTML id and name for the beginning of the edit form.
         */
@@ -1361,6 +1367,7 @@ class EditPage {
                        case self::AS_HOOK_ERROR:
                                return false;
 
+                       case self::AS_CANNOT_USE_CUSTOM_MODEL:
                        case self::AS_PARSE_ERROR:
                                $wgOut->addWikiText( '<div class="error">' . $status->getWikiText() . '</div>' );
                                return true;
@@ -1543,6 +1550,7 @@ class EditPage {
         */
        function internalAttemptSave( &$result, $bot = false ) {
                global $wgUser, $wgRequest, $wgParser, $wgMaxArticleSize;
+               global $wgContentHandlerUseDB;
 
                $status = Status::newGood();
 
@@ -1663,11 +1671,15 @@ class EditPage {
                        }
                }
 
-               if ( $this->contentModel !== $this->mTitle->getContentModel()
-                       && !$wgUser->isAllowed( 'editcontentmodel' )
-               ) {
-                       $status->setResult( false, self::AS_NO_CHANGE_CONTENT_MODEL );
-                       return $status;
+               if ( $this->contentModel !== $this->mTitle->getContentModel() ) {
+                       if ( !$wgContentHandlerUseDB ) {
+                               $status->fatal( 'editpage-cannot-use-custom-model' );
+                               $status->value = self::AS_CANNOT_USE_CUSTOM_MODEL;
+                               return $status;
+                       } elseif ( !$wgUser->isAllowed( 'editcontentmodel' ) ) {
+                               $status->setResult( false, self::AS_NO_CHANGE_CONTENT_MODEL );
+                               return $status;
+                       }
                }
 
                if ( $this->changeTags ) {
index 6d74af2..bcd6db2 100644 (file)
@@ -297,7 +297,7 @@ class FileDeleteForm {
 
                        if ( $wgUser->isAllowed( 'editinterface' ) ) {
                                $title = wfMessage( 'filedelete-reason-dropdown' )->inContentLanguage()->getTitle();
-                               $link = Linker::link(
+                               $link = Linker::linkKnown(
                                        $title,
                                        wfMessage( 'filedelete-edit-reasonlist' )->escaped(),
                                        array(),
index e2e0666..c618426 100644 (file)
@@ -3495,7 +3495,7 @@ function wfGetPrecompiledData( $name ) {
 }
 
 /**
- * Get a cache key
+ * Make a cache key for the local wiki.
  *
  * @param string $args,...
  * @return string
@@ -3510,7 +3510,9 @@ function wfMemcKey( /*...*/ ) {
 }
 
 /**
- * Get a cache key for a foreign DB
+ * Make a cache key for a foreign DB.
+ *
+ * Must match what wfMemcKey() would produce in context of the foreign wiki.
  *
  * @param string $db
  * @param string $prefix
@@ -3520,6 +3522,7 @@ function wfMemcKey( /*...*/ ) {
 function wfForeignMemcKey( $db, $prefix /*...*/ ) {
        $args = array_slice( func_get_args(), 2 );
        if ( $prefix ) {
+               // Match wfWikiID() logic
                $key = "$db-$prefix:" . implode( ':', $args );
        } else {
                $key = $db . ':' . implode( ':', $args );
@@ -3527,6 +3530,24 @@ function wfForeignMemcKey( $db, $prefix /*...*/ ) {
        return str_replace( ' ', '_', $key );
 }
 
+/**
+ * Make a cache key with database-agnostic prefix.
+ *
+ * Doesn't have a wiki-specific namespace. Uses a generic 'global' prefix
+ * instead. Must have a prefix as otherwise keys that use a database name
+ * in the first segment will clash with wfMemcKey/wfForeignMemcKey.
+ *
+ * @since 1.26
+ * @param string $args,...
+ * @return string
+ */
+function wfGlobalCacheKey( /*...*/ ) {
+       $args = func_get_args();
+       $key = 'global:' . implode( ':', $args );
+       $key = str_replace( ' ', '_', $key );
+       return $key;
+}
+
 /**
  * Get an ASCII string identifying this wiki
  * This is used as a prefix in memcached keys
index 7a0d7b7..932dea2 100644 (file)
@@ -239,63 +239,97 @@ class MediaWiki {
                                }
                                throw new BadTitleError();
                        }
-               // Redirect loops, no title in URL, $wgUsePathInfo URLs, and URLs with a variant
-               } elseif ( $request->getVal( 'action', 'view' ) == 'view' && !$request->wasPosted()
-                       && ( $request->getVal( 'title' ) === null
-                               || $title->getPrefixedDBkey() != $request->getVal( 'title' ) )
-                       && !count( $request->getValueNames( array( 'action', 'title' ) ) )
-                       && Hooks::run( 'TestCanonicalRedirect', array( $request, $title, $output ) )
-               ) {
-                       if ( $title->isSpecialPage() ) {
-                               list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
-                               if ( $name ) {
-                                       $title = SpecialPage::getTitleFor( $name, $subpage );
-                               }
-                       }
-                       $targetUrl = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
-                       // Redirect to canonical url, make it a 301 to allow caching
-                       if ( $targetUrl == $request->getFullRequestURL() ) {
-                               $message = "Redirect loop detected!\n\n" .
-                                       "This means the wiki got confused about what page was " .
-                                       "requested; this sometimes happens when moving a wiki " .
-                                       "to a new server or changing the server configuration.\n\n";
-
-                               if ( $this->config->get( 'UsePathInfo' ) ) {
-                                       $message .= "The wiki is trying to interpret the page " .
-                                               "title from the URL path portion (PATH_INFO), which " .
-                                               "sometimes fails depending on the web server. Try " .
-                                               "setting \"\$wgUsePathInfo = false;\" in your " .
-                                               "LocalSettings.php, or check that \$wgArticlePath " .
-                                               "is correct.";
+               // Handle any other redirects.
+               // Redirect loops, titleless URL, $wgUsePathInfo URLs, and URLs with a variant
+               } elseif ( !$this->tryNormaliseRedirect( $title ) ) {
+
+                       // Special pages
+                       if ( NS_SPECIAL == $title->getNamespace() ) {
+                               // Actions that need to be made when we have a special pages
+                               SpecialPageFactory::executePath( $title, $this->context );
+                       } else {
+                               // ...otherwise treat it as an article view. The article
+                               // may still be a wikipage redirect to another article or URL.
+                               $article = $this->initializeArticle();
+                               if ( is_object( $article ) ) {
+                                       $this->performAction( $article, $requestTitle );
+                               } elseif ( is_string( $article ) ) {
+                                       $output->redirect( $article );
                                } else {
-                                       $message .= "Your web server was detected as possibly not " .
-                                               "supporting URL path components (PATH_INFO) correctly; " .
-                                               "check your LocalSettings.php for a customized " .
-                                               "\$wgArticlePath setting and/or toggle \$wgUsePathInfo " .
-                                               "to true.";
+                                       throw new MWException( "Shouldn't happen: MediaWiki::initializeArticle()"
+                                               . " returned neither an object nor a URL" );
                                }
-                               throw new HttpError( 500, $message );
-                       } else {
-                               $output->setSquidMaxage( 1200 );
-                               $output->redirect( $targetUrl, '301' );
                        }
-               // Special pages
-               } elseif ( NS_SPECIAL == $title->getNamespace() ) {
-                       // Actions that need to be made when we have a special pages
-                       SpecialPageFactory::executePath( $title, $this->context );
-               } else {
-                       // ...otherwise treat it as an article view. The article
-                       // may be a redirect to another article or URL.
-                       $article = $this->initializeArticle();
-                       if ( is_object( $article ) ) {
-                               $this->performAction( $article, $requestTitle );
-                       } elseif ( is_string( $article ) ) {
-                               $output->redirect( $article );
+               }
+       }
+
+       /**
+        * Handle redirects for uncanonical title requests.
+        *
+        * Handles:
+        * - Redirect loops.
+        * - No title in URL.
+        * - $wgUsePathInfo URLs.
+        * - URLs with a variant.
+        * - Other non-standard URLs (as long as they have no extra query parameters).
+        *
+        * Behaviour:
+        * - Normalise title values:
+        *   /wiki/Foo%20Bar -> /wiki/Foo_Bar
+        * - Normalise empty title:
+        *   /wiki/ -> /wiki/Main
+        *   /w/index.php?title= -> /wiki/Main
+        * - Don't redirect anything with query parameters other than 'title' or 'action=view'.
+        *
+        * @return bool True if a redirect was set.
+        */
+       private function tryNormaliseRedirect( $title ) {
+               $request = $this->context->getRequest();
+               $output = $this->context->getOutput();
+
+               if ( $request->getVal( 'action', 'view' ) != 'view'
+                       || $request->wasPosted()
+                       || ( $request->getVal( 'title' ) !== null
+                               && $title->getPrefixedDBkey() == $request->getVal( 'title' ) )
+                       || count( $request->getValueNames( array( 'action', 'title' ) ) )
+                       || !Hooks::run( 'TestCanonicalRedirect', array( $request, $title, $output ) )
+               ) {
+                       return false;
+               }
+
+               if ( $title->isSpecialPage() ) {
+                       list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
+                       if ( $name ) {
+                               $title = SpecialPage::getTitleFor( $name, $subpage );
+                       }
+               }
+               // Redirect to canonical url, make it a 301 to allow caching
+               $targetUrl = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
+               if ( $targetUrl == $request->getFullRequestURL() ) {
+                       $message = "Redirect loop detected!\n\n" .
+                               "This means the wiki got confused about what page was " .
+                               "requested; this sometimes happens when moving a wiki " .
+                               "to a new server or changing the server configuration.\n\n";
+
+                       if ( $this->config->get( 'UsePathInfo' ) ) {
+                               $message .= "The wiki is trying to interpret the page " .
+                                       "title from the URL path portion (PATH_INFO), which " .
+                                       "sometimes fails depending on the web server. Try " .
+                                       "setting \"\$wgUsePathInfo = false;\" in your " .
+                                       "LocalSettings.php, or check that \$wgArticlePath " .
+                                       "is correct.";
                        } else {
-                               throw new MWException( "Shouldn't happen: MediaWiki::initializeArticle()"
-                                       . " returned neither an object nor a URL" );
+                               $message .= "Your web server was detected as possibly not " .
+                                       "supporting URL path components (PATH_INFO) correctly; " .
+                                       "check your LocalSettings.php for a customized " .
+                                       "\$wgArticlePath setting and/or toggle \$wgUsePathInfo " .
+                                       "to true.";
                        }
+                       throw new HttpError( 500, $message );
                }
+               $output->setSquidMaxage( 1200 );
+               $output->redirect( $targetUrl, '301' );
+               return true;
        }
 
        /**
index f02f752..0ed847e 100644 (file)
@@ -3524,8 +3524,25 @@ class OutputPage extends ContextSource {
                        if ( $canonicalUrl !== false ) {
                                $canonicalUrl = wfExpandUrl( $canonicalUrl, PROTO_CANONICAL );
                        } else {
-                               $reqUrl = $this->getRequest()->getRequestURL();
-                               $canonicalUrl = wfExpandUrl( $reqUrl, PROTO_CANONICAL );
+                               if ( $this->isArticleRelated() ) {
+                                       // This affects all requests where "setArticleRelated" is true. This is
+                                       // typically all requests that show content (query title, curid, oldid, diff),
+                                       // and all wikipage actions (edit, delete, purge, info, history etc.).
+                                       // It does not apply to File pages and Special pages.
+                                       // 'history' and 'info' actions address page metadata rather than the page
+                                       // content itself, so they may not be canonicalized to the view page url.
+                                       // TODO: this ought to be better encapsulated in the Action class.
+                                       $action = Action::getActionName( $this->getContext() );
+                                       if ( in_array( $action, array( 'history', 'info' ) ) ) {
+                                               $query = "action={$action}";
+                                       } else {
+                                               $query = '';
+                                       }
+                                       $canonicalUrl = $this->getTitle()->getCanonicalURL( $query );
+                               } else {
+                                       $reqUrl = $this->getRequest()->getRequestURL();
+                                       $canonicalUrl = wfExpandUrl( $reqUrl, PROTO_CANONICAL );
+                               }
                        }
                }
                if ( $canonicalUrl !== false ) {
index 69b64dd..1443d1c 100644 (file)
@@ -541,7 +541,7 @@ class ProtectionForm {
                $out .= Xml::closeElement( 'fieldset' );
 
                if ( $user->isAllowed( 'editinterface' ) ) {
-                       $link = Linker::link(
+                       $link = Linker::linkKnown(
                                $context->msg( 'protect-dropdown' )->inContentLanguage()->getTitle(),
                                $context->msg( 'protect-edit-reasonlist' )->escaped(),
                                array(),
index b9c9b86..c99e484 100644 (file)
@@ -176,6 +176,8 @@ class WebRequest {
         * @return string
         */
        public static function detectServer() {
+               global $wgAssumeProxiesUseDefaultProtocolPorts;
+
                $proto = self::detectProtocol();
                $stdPort = $proto === 'https' ? 443 : 80;
 
@@ -186,13 +188,15 @@ class WebRequest {
                        if ( !isset( $_SERVER[$varName] ) ) {
                                continue;
                        }
+
                        $parts = IP::splitHostAndPort( $_SERVER[$varName] );
                        if ( !$parts ) {
                                // Invalid, do not use
                                continue;
                        }
+
                        $host = $parts[0];
-                       if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ) {
+                       if ( $wgAssumeProxiesUseDefaultProtocolPorts && isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ) {
                                // Bug 70021: Assume that upstream proxy is running on the default
                                // port based on the protocol. We have no reliable way to determine
                                // the actual port in use upstream.
index a112cf0..1ce5761 100644 (file)
@@ -297,7 +297,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                        }
                }
 
-               ApiResult::setArrayType( $data, 'BCarray' );
+               ApiResult::setArrayType( $data, 'assoc' );
                ApiResult::setIndexedTagName( $data, 'ns' );
 
                return $this->getResult()->addValue( 'query', $property, $data );
index 33de5d8..22538cd 100644 (file)
@@ -5,7 +5,8 @@
                        "2nd-player",
                        "Los688",
                        "Whym",
-                       "Mfuji"
+                       "Mfuji",
+                       "Otokoume"
                ]
        },
        "apihelp-main-param-action": "実行する操作です。",
@@ -63,6 +64,7 @@
        "apihelp-edit-param-tags": "この版に適用する変更タグ。",
        "apihelp-edit-param-minor": "細部の編集",
        "apihelp-edit-param-notminor": "細部の編集ではない。",
+       "apihelp-edit-param-bot": "この編集をボットとしてマークする。",
        "apihelp-edit-param-basetimestamp": "編集前の版のタイムスタンプ。編集競合を検出するために使用されます。\n[[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]] で取得できます。",
        "apihelp-edit-param-starttimestamp": "編集作業を開始したときのタイムスタンプ。編集競合を検出するために使用されます。適切な値は <var>[[Special:ApiHelp/main|curtimestamp]]</var> を使用して編集作業を開始するとき (たとえば、編集するページの本文を読み込んだとき) に取得できます。",
        "apihelp-edit-param-createonly": "すでにそのページが存在する場合は編集を行いません。",
index 0b50ad2..c4c7045 100644 (file)
@@ -6,7 +6,8 @@
                        "Eakarpov",
                        "Kaganer",
                        "Mariya",
-                       "Дмитрий"
+                       "Дмитрий",
+                       "WindEwriX"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Документация]]\n* [[mw:API:FAQ|ЧаВО]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Почтовая рассылка]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Новости API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Ошибки и запросы]\n</div>\n<strong>Статус:</strong> Все отображаемые на этой странице функции должны работать, однако API находится в статусе активной разработки, и может измениться в любой момент. Подпишитесь на  [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ почтовую рассылку mediawiki-api-announce], чтобы быть в курсе обновлений.\n\n<strong>Ошибочные запросы:</strong> Если API получает запрос с ошибкой, вернётся заголовок HTTP с ключом \"MediaWiki-API-Error\", после чего значение заголовка и код ошибки будут отправлены обратно и установлены в то же значение. Более подробную информацию см. [[mw:API:Errors_and_warnings|API: Ошибки и предупреждения]].",
@@ -22,7 +23,9 @@
        "apihelp-block-description": "Блокировка участника.",
        "apihelp-block-param-user": "Имя участника, IP-адрес или диапазон IP-адресов, которые вы хотите заблокировать.",
        "apihelp-block-param-reason": "Причина блокировки.",
+       "apihelp-block-param-anononly": "Блокировать только анонимных пользователей (т. е. запретить анонимные правки для этого IP-адреса).",
        "apihelp-block-param-nocreate": "Запретить создание учётных записей.",
+       "apihelp-block-param-watchuser": "Следить за страницей пользователя или IP-участника и страницей обсуждения.",
        "apihelp-checktoken-param-token": "токен для проверки",
        "apihelp-checktoken-param-maxtokenage": "Максимально допустимый возраст токена (в секундах).",
        "apihelp-checktoken-example-simple": "Проверить годность <kbd>csrf</kbd>-токена.",
@@ -50,6 +53,7 @@
        "apihelp-delete-description": "Удалить страницу.",
        "apihelp-delete-param-title": "Заголовок страницы удалить. Совместное использование с <var>$1страницы</var> невозможно.",
        "apihelp-delete-param-watch": "Добавить страницу к текущему списку наблюдения пользователя.",
+       "apihelp-delete-param-unwatch": "Удалить страницу из списка наблюдения текущего пользователя.",
        "apihelp-delete-example-simple": "удалить <kbd>Main Page</kbd>.",
        "apihelp-delete-example-reason": "Удалить <kbd>Main Page</kbd> причина <kbd>Preparing for move</kbd>.",
        "apihelp-disabled-description": "Этот модуль был отключен.",
        "apihelp-edit-param-minor": "Незначительное изменение (малая правка).",
        "apihelp-edit-param-notminor": "Значительное изменение (обычная, не «малая», правка).",
        "apihelp-edit-param-bot": "Пометить правку как сделанную ботом.",
+       "apihelp-edit-param-createonly": "Не редактировать страницу, если она уже существует.",
        "apihelp-edit-param-watch": "Добавить страницу к текущему списку наблюдения пользователя.",
+       "apihelp-edit-param-unwatch": "Удалить страницу из списка наблюдения текущего пользователя.",
        "apihelp-edit-example-edit": "Редактировать страницу",
        "apihelp-emailuser-description": "Письмо участнику",
+       "apihelp-emailuser-param-target": "Адресат электронного письма",
        "apihelp-emailuser-param-subject": "Заголовок темы.",
        "apihelp-emailuser-param-text": "Содержание письма",
        "apihelp-emailuser-param-ccme": "Отправить копию этого сообщения мне.",
        "apihelp-emailuser-example-email": "Отправить письмо пользователю <kbd>WikiSysop</kbd> с текстом <kbd>контентом</kbd>.",
        "apihelp-expandtemplates-description": "Разворачивает все шаблоны в wikitext.",
        "apihelp-expandtemplates-param-title": "Заголовок страницы.",
+       "apihelp-expandtemplates-paramvalue-prop-parsetree": "Дерево разбора XML входных данных.",
        "apihelp-feedcontributions-param-year": "От года (и ранее).",
        "apihelp-feedcontributions-param-month": "От месяца (и ранее).",
+       "apihelp-feedrecentchanges-param-hideminor": "Скрыть малые правки.",
+       "apihelp-feedrecentchanges-param-hidebots": "Скрыть правки ботов.",
+       "apihelp-feedrecentchanges-param-hidepatrolled": "Скрыть отпатруллированные правки.",
        "apihelp-feedrecentchanges-param-tagfilter": "Фильтр по тегам.",
+       "apihelp-feedrecentchanges-example-simple": "Список последних изменений.",
+       "apihelp-feedrecentchanges-example-30days": "Показать последние изменения в течение 30 дней.",
        "apihelp-filerevert-param-comment": "Загрузить комментарий.",
+       "apihelp-help-example-main": "Помощь по главному модулю.",
        "apihelp-help-example-recursive": "Вся справка в одном разделе.",
        "apihelp-import-param-summary": "Импорт итога",
        "apihelp-import-param-xml": "Загруженный XML-файл.",
index b25bf14..468c7e9 100644 (file)
@@ -1023,7 +1023,7 @@ abstract class ContentHandler {
 
        /**
         * Returns true for content models that support caching using the
-        * ParserCache mechanism. See WikiPage::isParserCacheUsed().
+        * ParserCache mechanism. See WikiPage::shouldCheckParserCache().
         *
         * @since 1.21
         *
index 3c8910f..113bb4b 100644 (file)
@@ -54,4 +54,4 @@ class HTMLFormFieldWithButton extends HTMLFormField {
        public function getElement( $element ) {
                return $element . '&#160;' . $this->getInputHTML( '' );
        }
-}
\ No newline at end of file
+}
index 5ab57a3..24b15bd 100644 (file)
@@ -14,4 +14,4 @@ class HTMLSelectNamespaceWithButton extends HTMLSelectNamespace {
        public function getInputHTML( $value ) {
                return $this->mClassWithButton->getElement( parent::getInputHTML( $value ) );
        }
-}
\ No newline at end of file
+}
index 00c0517..c6dac32 100644 (file)
@@ -14,4 +14,4 @@ class HTMLTextFieldWithButton extends HTMLTextField {
        public function getInputHTML( $value ) {
                return $this->mClassWithButton->getElement( parent::getInputHTML( $value ) );
        }
-}
\ No newline at end of file
+}
index f706455..dec944a 100644 (file)
@@ -180,12 +180,12 @@ class RefreshLinksJob extends Job {
                        // Revision ID must be passed to the parser output to get revision variables correct
                        $parserOutput = $content->getParserOutput(
                                $title, $revision->getId(), $parserOptions, false );
-                       $ellapsed = microtime( true ) - $start;
+                       $elapsed = microtime( true ) - $start;
                        // If it took a long time to render, then save this back to the cache to avoid
                        // wasted CPU by other apaches or job runners. We don't want to always save to
                        // cache as this can cause high cache I/O and LRU churn when a template changes.
-                       if ( $ellapsed >= self::PARSE_THRESHOLD_SEC
-                               && $page->isParserCacheUsed( $parserOptions, $revision->getId() )
+                       if ( $elapsed >= self::PARSE_THRESHOLD_SEC
+                               && $page->shouldCheckParserCache( $parserOptions, $revision->getId() )
                                && $parserOutput->isCacheable()
                        ) {
                                $ctime = wfTimestamp( TS_MW, (int)$start ); // cache time
index 09d3807..5af7fbe 100644 (file)
@@ -70,7 +70,8 @@ class BitmapHandler extends TransformationalImageHandler {
        protected function transformImageMagick( $image, $params ) {
                # use ImageMagick
                global $wgSharpenReductionThreshold, $wgSharpenParameter, $wgMaxAnimatedGifArea,
-                       $wgImageMagickTempDir, $wgImageMagickConvertCommand;
+                       $wgImageMagickTempDir, $wgImageMagickConvertCommand, $wgResourceBasePath,
+                       $wgUseTinyRGBForJPGThumbnails;
 
                $quality = array();
                $sharpen = array();
index bf6f7fc..5ba5c68 100644 (file)
@@ -30,6 +30,7 @@
 class ExifBitmapHandler extends BitmapHandler {
        const BROKEN_FILE = '-1'; // error extracting metadata
        const OLD_BROKEN_FILE = '0'; // outdated error extracting metadata.
+       const SRGB_ICC_PROFILE_NAME = 'IEC 61966-2.1 Default RGB colour space - sRGB';
 
        function convertMetadataVersion( $metadata, $version = 1 ) {
                // basically flattens arrays.
@@ -243,4 +244,73 @@ class ExifBitmapHandler extends BitmapHandler {
 
                return 0;
        }
+
+       protected function transformImageMagick( $image, $params ) {
+               global $wgUseTinyRGBForJPGThumbnails;
+
+               $ret = parent::transformImageMagick( $image, $params );
+
+               if ( $ret ) {
+                       return $ret;
+               }
+
+               if ( $params['mimeType'] === 'image/jpeg' && $wgUseTinyRGBForJPGThumbnails ) {
+                       // T100976 If the profile embedded in the JPG is sRGB, swap it for the smaller
+                       // (and free) TinyRGB
+
+                       $this->swapICCProfile(
+                               $params['dstPath'],
+                               self::SRGB_ICC_PROFILE_NAME,
+                               realpath( __DIR__ ) . '/tinyrgb.icc'
+                       );
+               }
+
+               return false;
+       }
+
+       /**
+        * Swaps an embedded ICC profile for another, if found. Depends on exiftool, no-op if not installed.
+        * @param string $filepath File to be manipulated (will be overwritten)
+        * @param string $oldProfileString Exact name of color profile to look for (the one that will be replaced)
+        * @param string $profileFilepath ICC profile file to apply to the file
+        * @since 1.26
+        * @return bool
+        */
+       public function swapICCProfile( $filepath, $oldProfileString, $profileFilepath ) {
+               global $wgExiftool;
+
+               if ( !$wgExiftool || !is_executable( $wgExiftool ) ) {
+                       return false;
+               }
+
+               $cmd = wfEscapeShellArg( $wgExiftool,
+                       '-DeviceModelDesc',
+                       '-S',
+                       '-T',
+                       $filepath
+               );
+
+               $output = wfShellExecWithStderr( $cmd, $retval );
+
+               if ( $retval !== 0 || strcasecmp( trim( $output ), $oldProfileString ) !== 0 ) {
+                       // We can't establish that this file has the expected ICC profile, don't process it
+                       return false;
+               }
+
+               $cmd = wfEscapeShellArg( $wgExiftool,
+                       '-overwrite_original',
+                       '-icc_profile<=' . $profileFilepath,
+                       $filepath
+               );
+
+               $output = wfShellExecWithStderr( $cmd, $retval );
+
+               if ( $retval !== 0 ) {
+                       $this->logErrorForExternalProcess( $retval, $output, $cmd );
+
+                       return false;
+               }
+
+               return true;
+       }
 }
index 5463922..040ff96 100644 (file)
@@ -137,7 +137,7 @@ class JpegHandler extends ExifBitmapHandler {
 
                $rotation = ( $params['rotation'] + $this->getRotation( $file ) ) % 360;
 
-               if ( $wgJpegTran && is_file( $wgJpegTran ) ) {
+               if ( $wgJpegTran && is_executable( $wgJpegTran ) ) {
                        $cmd = wfEscapeShellArg( $wgJpegTran ) .
                                " -rotate " . wfEscapeShellArg( $rotation ) .
                                " -outfile " . wfEscapeShellArg( $params['dstPath'] ) .
diff --git a/includes/media/tinyrgb.icc b/includes/media/tinyrgb.icc
new file mode 100644 (file)
index 0000000..eab973f
Binary files /dev/null and b/includes/media/tinyrgb.icc differ
index 789f1e3..ae3850f 100644 (file)
@@ -31,6 +31,8 @@ class ObjectCacheSessionHandler {
        /** @var array Map of (session ID => SHA-1 of the data) */
        protected static $hashCache = array();
 
+       const TTL_REFRESH_WINDOW = 600; // refresh if expiring in 10 minutes
+
        /**
         * Install a session handler for the current web request
         */
@@ -157,10 +159,24 @@ class ObjectCacheSessionHandler {
        }
 
        /**
-        * Shutdown function. See the comment inside ObjectCacheSessionHandler::install
-        * for rationale.
+        * Shutdown function.
+        * See the comment inside ObjectCacheSessionHandler::install for rationale.
         */
        static function handleShutdown() {
+               global $wgObjectCacheSessionExpiry;
+
+               $now = microtime( true );
+               // Session are only written in object stores when $_SESSION changes,
+               // which also renews the TTL ($wgObjectCacheSessionExpiry). If a user
+               // is active but not causing session data changes, it may suddenly
+               // as they view a form, blocking the first submission.
+               // Make a dummy change every so often to avoid this.
+               if ( !isset( $_SESSION['wsExpiresUnix'] )
+                       || ( $now + self::TTL_REFRESH_WINDOW ) > isset( $_SESSION['wsExpiresUnix'] )
+               ) {
+                       $_SESSION['wsExpiresUnix'] = $now + $wgObjectCacheSessionExpiry;
+               }
+
                session_write_close();
        }
 }
index 5d7f365..450251a 100644 (file)
@@ -574,7 +574,7 @@ class Article implements Page {
                }
 
                # Should the parser cache be used?
-               $useParserCache = $this->mPage->isParserCacheUsed( $parserOptions, $oldid );
+               $useParserCache = $this->mPage->shouldCheckParserCache( $parserOptions, $oldid );
                wfDebug( 'Article::view using parser cache: ' . ( $useParserCache ? 'yes' : 'no' ) . "\n" );
                if ( $user->getStubThreshold() ) {
                        $this->getContext()->getStats()->increment( 'pcache_miss_stub' );
@@ -1774,7 +1774,7 @@ class Article implements Page {
                        Xml::closeElement( 'form' );
 
                        if ( $user->isAllowed( 'editinterface' ) ) {
-                               $link = Linker::link(
+                               $link = Linker::linkKnown(
                                        $ctx->msg( 'deletereason-dropdown' )->inContentLanguage()->getTitle(),
                                        wfMessage( 'delete-edit-reasonlist' )->escaped(),
                                        array(),
index cebc4c4..7ea4ed7 100644 (file)
@@ -1515,6 +1515,18 @@ class ImageHistoryPseudoPager extends ReverseChronologicalPager {
                $s = '';
                $this->doQuery();
                if ( count( $this->mHist ) ) {
+                       if ( $this->mImg->isLocal() ) {
+                               // Do a batch existence check for user pages and talkpages
+                               $linkBatch = new LinkBatch();
+                               for ( $i = $this->mRange[0]; $i <= $this->mRange[1]; $i++ ) {
+                                       $file = $this->mHist[$i];
+                                       $user = $file->getUser( 'text' );
+                                       $linkBatch->add( NS_USER, $user );
+                                       $linkBatch->add( NS_USER_TALK, $user );
+                               }
+                               $linkBatch->execute();
+                       }
+
                        $list = new ImageHistoryList( $this->mImagePage );
                        # Generate prev/next links
                        $navLink = $this->getNavigationBar();
index cb3def3..f7f2528 100644 (file)
@@ -1082,13 +1082,13 @@ class WikiPage implements Page, IDBAccessObject {
         * Should the parser cache be used?
         *
         * @param ParserOptions $parserOptions ParserOptions to check
-        * @param int $oldid
+        * @param int $oldId
         * @return bool
         */
-       public function isParserCacheUsed( ParserOptions $parserOptions, $oldid ) {
+       public function shouldCheckParserCache( ParserOptions $parserOptions, $oldId ) {
                return $parserOptions->getStubThreshold() == 0
                        && $this->exists()
-                       && ( $oldid === null || $oldid === 0 || $oldid === $this->getLatest() )
+                       && ( $oldId === null || $oldId === 0 || $oldId === $this->getLatest() )
                        && $this->getContentHandler()->isParserCacheSupported();
        }
 
@@ -1105,7 +1105,7 @@ class WikiPage implements Page, IDBAccessObject {
         */
        public function getParserOutput( ParserOptions $parserOptions, $oldid = null ) {
 
-               $useParserCache = $this->isParserCacheUsed( $parserOptions, $oldid );
+               $useParserCache = $this->shouldCheckParserCache( $parserOptions, $oldid );
                wfDebug( __METHOD__ . ': using parser cache: ' . ( $useParserCache ? 'yes' : 'no' ) . "\n" );
                if ( $parserOptions->getStubThreshold() ) {
                        wfIncrStats( 'pcache.miss.stub' );
index c65a3f9..9fd5a36 100644 (file)
@@ -297,9 +297,9 @@ abstract class Profiler {
         * @return array List of method entries arrays, each having:
         *   - name     : method name
         *   - calls    : the number of invoking calls
-        *   - real     : real time ellapsed (ms)
+        *   - real     : real time elapsed (ms)
         *   - %real    : percent real time
-        *   - cpu      : CPU time ellapsed (ms)
+        *   - cpu      : CPU time elapsed (ms)
         *   - %cpu     : percent CPU time
         *   - memory   : memory used (bytes)
         *   - %memory  : percent memory used
index bab8eba..63940bc 100644 (file)
@@ -89,9 +89,9 @@ class SectionProfiler {
         * @return array List of method entries arrays, each having:
         *   - name    : method name
         *   - calls   : the number of invoking calls
-        *   - real    : real time ellapsed (ms)
+        *   - real    : real time elapsed (ms)
         *   - %real   : percent real time
-        *   - cpu     : real time ellapsed (ms)
+        *   - cpu     : real time elapsed (ms)
         *   - %cpu    : percent real time
         *   - memory  : memory used (bytes)
         *   - %memory : percent memory used
index 752edc3..b4d4220 100644 (file)
@@ -394,7 +394,7 @@ class SpecialBlock extends FormSpecialPage {
 
                # Link to edit the block dropdown reasons, if applicable
                if ( $user->isAllowed( 'editinterface' ) ) {
-                       $links[] = Linker::link(
+                       $links[] = Linker::linkKnown(
                                $this->msg( 'ipbreason-dropdown' )->inContentLanguage()->getTitle(),
                                $this->msg( 'ipb-edit-dropdown' )->escaped(),
                                array(),
index 7e842d5..77ebac3 100644 (file)
@@ -451,7 +451,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                                Xml::closeElement( 'form' ) . "\n";
                        // Show link to edit the dropdown reasons
                        if ( $this->getUser()->isAllowed( 'editinterface' ) ) {
-                               $link = Linker::link(
+                               $link = Linker::linkKnown(
                                        $this->msg( 'revdelete-reason-dropdown' )->inContentLanguage()->getTitle(),
                                        $this->msg( 'revdelete-edit-reasonlist' )->escaped(),
                                        array(),
index b2305b9..a6847e1 100644 (file)
@@ -337,7 +337,7 @@ class SpecialTags extends SpecialPage {
 
                $preText = $this->msg( 'tags-delete-explanation-initial', $tag )->parseAsBlock();
                $tagUsage = ChangeTags::tagUsageStatistics();
-               if ( $tagUsage[$tag] > 0 ) {
+               if ( isset( $tagUsage[$tag] ) && $tagUsage[$tag] > 0 ) {
                        $preText .= $this->msg( 'tags-delete-explanation-in-use', $tag,
                                $tagUsage[$tag] )->parseAsBlock();
                }
index 1618527..6b0bf41 100644 (file)
@@ -817,7 +817,7 @@ class UploadForm extends HTMLForm {
 
                # Add a link to edit MediaWik:Licenses
                if ( $this->getUser()->isAllowed( 'editinterface' ) ) {
-                       $licensesLink = Linker::link(
+                       $licensesLink = Linker::linkKnown(
                                $this->msg( 'licenses' )->inContentLanguage()->getTitle(),
                                $this->msg( 'licenses-edit' )->escaped(),
                                array(),
index 8a1a6c6..a718aa8 100644 (file)
@@ -52,7 +52,7 @@ class WantedFilesPage extends WantedQueryPage {
                $noForeign = '';
                if ( !$this->likelyToHaveFalsePositives() ) {
                        // Additional messages for grep:
-                       // wantedfiletext-cat-noforeign, wantedfiletext-nocat
+                       // wantedfiletext-cat-noforeign, wantedfiletext-nocat-noforeign
                        $noForeign = '-noforeign';
                }
 
index 501367a..f8258c2 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|miembru|miembros}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|miembru|miembros}}",
        "nrevisions": "$1 {{PLURAL:$1|revisión|revisiones}}",
-       "nviews": "$1 {{PLURAL:$1|vista|vistes}}",
        "nimagelinks": "Usao en $1 {{PLURAL:$1|páxina|páxines}}",
        "ntransclusions": "usao en $1 {{PLURAL:$1|páxina|páxines}}",
        "specialpage-empty": "Nun hai resultaos nestos momentos.",
index 6a09f97..82a3c73 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|member|اعضا}}",
        "nmemberschanged": "$1 → $2   {{PLURAL:$2| عضو|عضو}}",
        "nrevisions": "$1 {{PLURAL:$1|بازبینی|بازبینی ان}}",
-       "nviews": "$1 {{PLURAL:$1|دیستن|دیستن}}",
        "nimagelinks": "$1 × $2, $3 {{PLURAL:$3|صفحه|صفحات}}",
        "ntransclusions": "بی $1 {{PLURAL:$1|تاکدیم|تاکدیم}} استپاده بوته",
        "specialpage-empty": "په ای گزارش هچ نتیجه ای نیست ان.",
index 10167c1..1507ac0 100644 (file)
        "uploaded-setting-href-svg": "Выкарыстаньне тэгу «set» для дадаваньня атрыбуту «href» у бацькоўскі элемэнт заблякаванае.",
        "uploaded-wrong-setting-svg": "Ужываньне тэгу «set» для дадаваньня ў якасьці мэты аддаленага адрасу/зьвестак/сцэнару для любога атрыбуту заблякаванае. У загружаным SVG-файле знойдзена <code>&lt;set to=\"$1\"&gt;</code>.",
        "uploaded-setting-handler-svg": "SVG, які выстаўляе атрыбут «handler» з дапамогай аддаленага адрасу/зьвестак/скрыпту, блякуецца. У загружаным SVG-файле знойдзена <code>$1=\"$2\"</code>.",
+       "uploaded-remote-url-svg": "SVG, які выстаўляе любы атрыбут з дапамогай аддаленага URL-адрасу, блякуецца. У загружаным SVG-файле знойдзена <code>$1=\"$2\"</code>.",
+       "uploaded-image-filter-svg": "У загружаным SVG-файле знойдзены фільтар выяваў з URL-адрасам: <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploadscriptednamespace": "Гэты SVG-файл утрымлівае няслушную прастору назваў «$1»",
        "uploadinvalidxml": "Не атрымалася прааналізаваць XML у загружаным файле.",
        "uploadvirus": "Файл утрымлівае вірус! Падрабязнасьці: $1",
        "nmembers": "$1 {{PLURAL:$1|элемэнт|элемэнты|элемэнтаў}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|элемэнт|элемэнты|элемэнтаў}}",
        "nrevisions": "$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}",
-       "nviews": "$1 {{PLURAL:$1|прагляд|прагляды|праглядаў}}",
        "nimagelinks": "Выкарыстоўваецца на $1 {{PLURAL:$1|старонцы|старонках|старонках}}",
        "ntransclusions": "выкарыстоўваецца на $1 {{PLURAL:$1|старонцы|старонках|старонках}}",
        "specialpage-empty": "Гэтая старонка — пустая.",
index 70ca42a..8dc411f 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|عضو|عضو}}",
        "nmemberschanged": "$1 → $2   {{PLURAL:$2| عضو|عضو}}",
        "nrevisions": "$1 {{PLURAL:$1|نخسه|نخسه}}",
-       "nviews": "$1 {{PLURAL:$1|دیست|دیست}}",
        "nimagelinks": "استفاده بوته بی  $1 {{PLURAL:$1|تاکدیم|تاکدیم}} ئی تا",
        "ntransclusions": "استفاده بوته بی  $1 {{PLURAL:$1|تاکدیم|تاکدیم}} ئی تا",
        "specialpage-empty": "نتیجه په راپور ئا موجود نه اینت.",
index 210a48c..4e6c62f 100644 (file)
        "nmembers": "$1টি {{PLURAL:$1|সদস্য}}",
        "nmemberschanged": "$1 জন → $2 জন {{PLURAL:$2|সদস্য}}",
        "nrevisions": "$1 {{PLURAL:$1|সংশোধন|সংশোধনসমূহ}}",
-       "nviews": "$1 {{PLURAL:$1|বার দেখা হয়েছে|বার দেখা হয়েছে}}",
        "nimagelinks": "$1 {{PLURAL:$1|টি পাতায়| টি পাতায়}} ব্যবহৃত",
        "ntransclusions": "$1 {{PLURAL:$1|টি পাতায়| টি পাতায়}} ব্যবহৃত",
        "specialpage-empty": "এই রিপোর্টের জন্য কোন ফলাফল নেই।",
index 089a250..01a3af0 100644 (file)
        "nlinks": "$1 {{PLURAL:$1|veza|veze}}",
        "nmembers": "$1 {{PLURAL:$1|član|članova}}",
        "nrevisions": "$1 {{PLURAL:$1|revizija|revizije|revizija}}",
-       "nviews": "$1 {{PLURAL:$1|pregled|pregleda}}",
        "nimagelinks": "Koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
        "ntransclusions": "koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
        "specialpage-empty": "Nepostoje rezultati za ovaj izvještaj.",
index cda39a4..ab1be9f 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|element|elements}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|element|elements}}",
        "nrevisions": "$1 {{PLURAL:$1|revisió|revisions}}",
-       "nviews": "$1 {{PLURAL:$1|visita|visites}}",
        "nimagelinks": "S'utilitza en {{PLURAL:$1|una pàgina|$1 pàgines}}",
        "ntransclusions": "utilitzada en {{PLURAL:$1|una pàgina|$1 pàgines}}",
        "specialpage-empty": "Aquesta pàgina és buida.",
index 0ca3544..52f656e 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|хӀума|хӀумнаш}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|хӀума|хӀумнаш}}",
        "nrevisions": "$1 {{PLURAL:$1|верси|версеш}}",
-       "nviews": "$1 {{PLURAL:$1|хьажар}}",
        "nimagelinks": "Лелош ю $1 {{PLURAL:$1|агӀонгахь|агӀонашкахь}}",
        "ntransclusions": "лелош ю $1 {{PLURAL:$1|агӀонгахь|агӀонашкахь}}",
        "specialpage-empty": "Дехаро хӀумма ца елла.",
index d57bb8d..407f9cc 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|položka|položky|položek}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|položka|položky|položek}}",
        "nrevisions": "$1 {{PLURAL:$1|revize|revize|revizí}}",
-       "nviews": "$1 {{PLURAL:$1|návšteva|návštevy|návštev}}",
        "nimagelinks": "Použit na $1 {{PLURAL:$1|stránce|stránkách}}",
        "ntransclusions": "použita na $1 {{PLURAL:$1|stránce|stránkách}}",
        "specialpage-empty": "Tomuto požadavku neodpovídají žádné záznamy.",
index 6d12710..d24f223 100644 (file)
        "nmembers": "{{PLURAL:$1|1 Eintrag|$1 Einträge}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|Mitglied|Mitglieder}}",
        "nrevisions": "{{PLURAL:$1|1 Bearbeitung|$1 Bearbeitungen}}",
-       "nviews": "{{PLURAL:$1|1 Abfrage|$1 Abfragen}}",
        "nimagelinks": "Verwendet auf {{PLURAL:$1|einer Seite|$1 Seiten}}",
        "ntransclusions": "verwendet auf {{PLURAL:$1|einer Seite|$1 Seiten}}",
        "specialpage-empty": "Es sind aktuell keine zutreffenden Einträge vorhanden.",
index 7bcf987..de4119e 100644 (file)
        "copyrightwarning2": "Please note that all contributions to {{SITENAME}} may be edited, altered, or removed by other contributors.\nIf you do not want your writing to be edited mercilessly, then do not submit it here.<br />\nYou are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see $1 for details).\n<strong>Do not submit copyrighted work without permission!</strong>",
        "editpage-head-copy-warn": "-",
        "editpage-tos-summary": "-",
+       "editpage-cannot-use-custom-model": "The content model of this page cannot be changed.",
        "longpage-hint": "-",
        "longpageerror": "<strong>Error: The text you have submitted is {{PLURAL:$1|one kilobyte|$1 kilobytes}} long, which is longer than the maximum of {{PLURAL:$2|one kilobyte|$2 kilobytes}}.</strong>\nIt cannot be saved.",
        "readonlywarning": "<strong>Warning: The database has been locked for maintenance, so you will not be able to save your edits right now.</strong>\nYou may wish to copy and paste your text into a text file and save it for later.\n\nThe administrator who locked it offered this explanation: $1",
        "nmembers": "$1 {{PLURAL:$1|member|members}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|member|members}}",
        "nrevisions": "$1 {{PLURAL:$1|revision|revisions}}",
-       "nviews": "$1 {{PLURAL:$1|view|views}}",
        "nimagelinks": "Used on $1 {{PLURAL:$1|page|pages}}",
        "ntransclusions": "used on $1 {{PLURAL:$1|page|pages}}",
        "specialpage-empty": "There are no results for this report.",
index c936f7c..7b3ab11 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|artículo|artículos}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|miembro|miembros}}",
        "nrevisions": "$1 {{PLURAL:$1|revisión|revisiones}}",
-       "nviews": "$1 {{PLURAL:$1|vista|vistas}}",
        "nimagelinks": "Usado en {{PLURAL:$1|una página|$1 páginas}}",
        "ntransclusions": "usado en {{PLURAL:$1|una página|$1 páginas}}",
        "specialpage-empty": "Esta página está vacía.",
index 084a036..0369741 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|liige|liiget}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|liige|liiget}}",
        "nrevisions": "$1 {{PLURAL:$1|redaktsioon|redaktsiooni}}",
-       "nviews": "$1 {{PLURAL:$1|külastus|külastust}}",
        "nimagelinks": "Kasutuses {{PLURAL:$1|ühel leheküljel|$1 leheküljel}}",
        "ntransclusions": "kasutuses {{PLURAL:$1|ühel leheküljel|$1 leheküljel}}",
        "specialpage-empty": "Vasteid ei leidu.",
index 5f9f1d6..e118c55 100644 (file)
        "nmembers": "{{PLURAL:$1|partaide 1|$1 partaide}}",
        "nmemberschanged": "$1 → {{PLURAL:$2|kide $2|$2 kide}}",
        "nrevisions": "{{PLURAL:$1|berrikuspen 1|$1 berrikuspen}}",
-       "nviews": "{{PLURAL:$1|ikusketa 1|$1 ikusketa}}",
        "nimagelinks": "{{PLURAL:$1|Orrialde batean erabilia|$1 orrialdetan erabilia}}",
        "ntransclusions": "{{PLURAL:$1|orrialde batean erabilia|$1 orrialdetan erabilia}}",
        "specialpage-empty": "Ez dago emaitzarik bilaketa honetarako.",
index b5fedf5..a3c518a 100644 (file)
        "nmembers": "$1 membre{{PLURAL:$1||s}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|membre|membres}}",
        "nrevisions": "$1 version{{PLURAL:$1||s}}",
-       "nviews": "$1 consultation{{PLURAL:$1||s}}",
        "nimagelinks": "Utilisé sur $1 {{PLURAL:$1|page|pages}}",
        "ntransclusions": "Utilisé sur $1 {{PLURAL:$1|page|pages}}",
        "specialpage-empty": "Il n'y a aucun résultat à afficher.",
index c58d94a..c1ce466 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|páxina|páxinas}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|membro|membros}}",
        "nrevisions": "$1 {{PLURAL:$1|revisión|revisións}}",
-       "nviews": "vista {{PLURAL:$1|unha vez|$1 veces}}",
        "nimagelinks": "Empregada {{PLURAL:$1|nunha páxina|en $1 páxinas}}",
        "ntransclusions": "empregado en $1 {{PLURAL:$1|páxina|páxinas}}",
        "specialpage-empty": "Non hai resultados para o que solicitou.",
index 8dd1977..905bd95 100644 (file)
        "nlinks": "$1 {{PLURAL:$1|કડી|કડીઓ}}",
        "nmembers": "$1 {{PLURAL:$1|સદસ્ય|સદસ્યો}}",
        "nrevisions": "$1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}}",
-       "nviews": "$1 {{PLURAL:$1|દેખાવ|દેખાવો}}",
        "nimagelinks": "$1 {{PLURAL:$1|પાના|પાનાઓ}} પર વપરાયો",
        "ntransclusions": "$1 {{PLURAL:$1|પાના|પાનાઓ}} પર વપરાયો",
        "specialpage-empty": "આ પાનું ખાલી છે.",
        "redirect-lookup": "જુઓ:",
        "redirect-value": "કિંમત:",
        "redirect-user": "સભ્ય નામ",
-       "redirect-page": "પાનાàª\82 ઓળખ",
+       "redirect-page": "પà«\83ષà«\8dઠ ઓળખ",
        "redirect-revision": "પાનાંની આવૃત્તિ",
        "redirect-file": "ફાઇલ નામ",
        "redirect-not-exists": "કિંમત મળી નહી",
        "limitreport-walltime-value": "$1 {{PLURAL:$1|સેકંડ|સેકંડો}}",
        "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|બાઇટ|બાઇટ્સ}}",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|બાઇટ|બાઇટ્સ}}",
-       "expand_templates_input": "àª\87નપà«\81àª\9f àª²àª\96ાણ:",
+       "expand_templates_input": "પાઠ àª\89મà«\87રણ:",
        "expand_templates_output": "પરિણામ:",
        "expand_templates_xml_output": "XML આઉટપુટ",
        "expand_templates_ok": "મંજૂર",
index 8b71a64..2156bc7 100644 (file)
        "nmembers": "{{PLURAL:$1|דף אחד|$1 דפים}}",
        "nmemberschanged": "$1 ← {{PLURAL:$2|חבר אחד|$2 חברים}}",
        "nrevisions": "{{PLURAL:$1|גרסה אחת|$1 גרסאות}}",
-       "nviews": "{{PLURAL:$1|צפייה אחת|$1 צפיות}}",
        "nimagelinks": "בשימוש {{PLURAL:$1|בדף אחד|ב־$1 דפים}}",
        "ntransclusions": "בשימוש {{PLURAL:$1|בדף אחד|ב־$1 דפים}}",
        "specialpage-empty": "אין תוצאות.",
index 41493fe..b3ee9c3 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|सदस्य}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|सदस्य}}",
        "nrevisions": "$1 {{PLURAL:$1|अवतरण}}",
-       "nviews": "{{PLURAL:$1|एक|$1}} बार देखा गया है",
        "nimagelinks": "$1 {{PLURAL:$1|पृष्ठ|पृष्ठों}} पर प्रयुक्त",
        "ntransclusions": "$1 {{PLURAL:$1|पृष्ठ|पृष्ठों}} पर प्रयुक्त",
        "specialpage-empty": "इस ब्यौरे के लिये कोई परिणाम नहीं हैं।",
index 503adb2..6e74325 100644 (file)
        "nlinks": "$1 {{PLURAL:$1|poveznica|poveznice|poveznica}}",
        "nmembers": "$1 {{PLURAL:$1|član|članova}}",
        "nrevisions": "$1 {{PLURAL:$1|inačica|inačice|inačica}}",
-       "nviews": "$1 {{PLURAL:$1|put pogledano|puta pogledano|puta pogledano}}",
        "nimagelinks": "Koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
        "ntransclusions": "koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
        "specialpage-empty": "Nema rezultata za traženi izvještaj.",
index a371b2e..fb03d47 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|isi}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|anggota|anggota}}",
        "nrevisions": "$1 {{PLURAL:$1|revisi|revisi}}",
-       "nviews": "dilihat $1 {{PLURAL:$1|kali|kali}}",
        "nimagelinks": "Digunakan pada $1 {{PLURAL:$1|halaman|halaman}}",
        "ntransclusions": "digunakan pada $1 {{PLURAL:$1|halaman|halaman}}",
        "specialpage-empty": "Tak ada yang perlu dilaporkan.",
index 77b3fd3..d15f6e7 100644 (file)
        "nmembers": "$1 a {{PLURAL:$1|kameng|kamkameng}}",
        "nmemberschanged": "$1 → $2 a {{PLURAL:$2|kameng|kamkameng}}",
        "nrevisions": "$1 {{PLURAL:$1|a rebison|kadagiti rebision}}",
-       "nviews": "$1 {{PLURAL:$1|a panangkita|kadagiti panangkita}}",
        "nimagelinks": "Inusar iti $1 a {{PLURAL:$1|panid|pampanid}}",
        "ntransclusions": "inusar iti $1 a {{PLURAL:$1|panid|pampanid}}",
        "specialpage-empty": "Awan dagiti nagbanagan daytoy a reporta.",
index a6b8a8f..ebfec74 100644 (file)
        "disclaimers": "Fyrirvarar",
        "disclaimerpage": "Project:Almennur fyrirvari",
        "edithelp": "Breytingarhjálp",
+       "helppage-top-gethelp": "Hjálp",
        "mainpage": "Forsíða",
        "mainpage-description": "Forsíða",
        "policy-url": "Project:Samþykktir",
        "right-move": "Færa síður",
        "right-move-subpages": "Færa síður með undirsíðum þeirra",
        "right-move-rootuserpages": "Færa notandasíður",
+       "right-move-categorypages": "Færa flokkasíður",
        "right-movefile": "Færa skrár",
        "right-suppressredirect": "Ekki búa til tilvísun frá gamla nafninu þegar síða er færð",
        "right-upload": "Hlaða inn skrám",
        "action-createpage": "skapa síður",
        "action-createtalk": "skapa spjallsíður",
        "action-createaccount": "skapa þennan notandaaðgang",
+       "action-history": "skoða breytingarskrá þessarar síðu",
        "action-minoredit": "merkja þessa breytingu sem minniháttar",
        "action-move": "færa þessa síðu",
        "action-move-subpages": "færa þessa síðu, og undirsíður hennar",
        "action-move-rootuserpages": "Færa notandasíður",
+       "action-move-categorypages": "færa flokkasíður",
        "action-movefile": "færa þessa skrá",
        "action-upload": "hlaða inn þessari skrá",
        "action-reupload": "yfirrita þessa skrá",
        "nlinks": "$1 {{PLURAL:$1|tengill|tenglar}}",
        "nmembers": "$1 {{PLURAL:$1|meðlimur|meðlimir}}",
        "nrevisions": "$1 {{PLURAL:$1|breyting|breytingar}}",
-       "nviews": "$1 {{PLURAL:$1|fletting|flettingar}}",
        "nimagelinks": "Ítengd á $1 {{PLURAL:$1|síðu|síðum}}",
        "ntransclusions": "Ítengd á $1 {{PLURAL:$1|síðu|síðum}}",
        "specialpage-empty": "Þessi síða er tóm.",
        "allmessages-prefix": "Sía með forskeyti:",
        "allmessages-language": "Tungumál:",
        "allmessages-filter-submit": "Áfram",
+       "allmessages-filter-translate": "Þýða",
        "thumbnail-more": "Stækka",
        "filemissing": "Skrá vantar",
        "thumbnail_error": "Villa við gerð smámyndar: $1",
        "exif-devicesettingdescription": "Lýsing stillinga tækisins",
        "exif-subjectdistancerange": "Svið lengdar á viðfangsefni",
        "exif-imageuniqueid": "Einstakt einkenni myndar",
-       "exif-gpsversionid": "GPS tag útgáfa",
+       "exif-gpsversionid": "Útgáfa GPS-taggs",
        "exif-gpslatituderef": "Norður- eða suður breiddargráða",
        "exif-gpslatitude": "Breiddargráða",
        "exif-gpslongituderef": "Austur- eða vestur lengdargráða",
        "version-antispam": "Amapósts sía",
        "version-other": "Aðrar",
        "version-mediahandlers": "Rekill margmiðlunarskráa",
-       "version-parser-extensiontags": "Þáttuð smáforrita tög",
+       "version-parser-extensiontags": "Þáttuð smáforritatögg",
        "version-hook-subscribedby": "Í áskrift af",
        "version-version": "($1)",
        "version-license": "MediaWiki leyfi",
+       "version-ext-colheader-description": "Lýsing",
+       "version-license-title": "Leyfi fyrir $1",
        "version-poweredby-credits": "Þessi wiki er knúin af '''[https://www.mediawiki.org/ MediaWiki]''', höfundaréttur © 2001-$1 $2.",
        "version-poweredby-others": "aðrir",
        "version-license-info": "MediaWiki er frjáls hugbúnaður; þú mátt endurútgefa hann og/eða breyta honum undir GNU General Public leyfi eins og það er gefið út af Free Software stofnuninni, annaðhvort útgáfu 2 eða (að þínu mati) hvaða nýrri útgáfa sem er.\n\nMediaWiki er útgefin í þeirri von að hann sé gagnlegur, en ÁN ALLRAR ÁBYRGÐAR; þar meðtalið er undanskilin ábyrgð við MARKAÐSETNINGU og að hugbúnaðurinn VIRKI Í ÁKVEÐNUM TILGANGI. Sjá GNU General Public leyfið fyrir frekari upplýsingar.\n\nÞú ættir að hafa fengið [{{SERVER}}{{SCRIPTPATH}}/COPYING afrit af  GNU General Public leyfinu] með þessum hugbúnaði, en ef ekki, skrifaðu til Free Software stofnunarinnar, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, Bandaríkjunum eða [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lestu það á netinu]",
        "version-software-product": "Vara",
        "version-software-version": "Útgáfa",
        "version-entrypoints-header-url": "vefslóð",
+       "version-libraries-version": "Útgáfa",
        "redirect-submit": "Áfram",
        "redirect-lookup": "Fletta upp:",
        "redirect-value": "Gildi:",
        "intentionallyblankpage": "Þessi síða er viljandi höfð tóm.",
        "external_image_whitelist": "#Ekki breyta þessari línu<pre>\n#Settu brot úr reglulegum segðum (bara þann hluta sem er á milli //) hér fyrir neðan\n#Þær verða bornar saman við vefslóðir ytri mynda\n#Þær sem passa saman verða sýndar sem myndir, en hinar eingöngu sem tengill á myndina\n#Línur sem byrja á # verða sýndar sem athugasemdir\n#Þetta er hástafafrjálst\n\n#Settu allar reglulegar segðir fyrir ofan þessa línu. Ekki breyta þessari línu.</pre>",
        "tags": "Breyta virkum tögum",
-       "tag-filter": "[[Special:Tags|Tag]] sía:",
+       "tag-filter": "[[Special:Tags|Tagg]]sía:",
        "tag-filter-submit": "Sía",
-       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tög}}]]: $2)",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tagg|Tögg}}]]: $2)",
        "tags-title": "Tög",
-       "tags-intro": "Á þessari síðu er listi yfir þau tög sem hugbúnaðurinn gæti merkt breytingar með og merkingu þeirra.",
-       "tags-tag": "Nafn tags",
+       "tags-intro": "Á þessari síðu er listi yfir þau tögg sem hugbúnaðurinn gæti merkt breytingar með og merkingu þeirra.",
+       "tags-tag": "Heiti taggs",
        "tags-display-header": "Útlit í breytingarskrá",
        "tags-description-header": "Tæmandi merkingarlýsing",
        "tags-active-header": "Virkt?",
        "tags-active-yes": "Já",
        "tags-active-no": "Nei",
        "tags-edit": "breyta",
+       "tags-delete": "eyða",
+       "tags-activate": "virkja",
+       "tags-deactivate": "afvirkja",
        "tags-hitcount": "$1 {{PLURAL:$1|breyting|breytingar}}",
+       "tags-manage-no-permission": "Þú hefur ekki leyfi til að stjórna breytingartöggum.",
+       "tags-create-heading": "Stofna nýtt tagg",
+       "tags-create-submit": "Stofna",
+       "tags-create-no-name": "Þú verður að gefa upp heiti taggsins.",
+       "tags-create-invalid-title-chars": "Taggheiti eiga ekki að innihalda stafi sem má ekki nota í síðutitla.",
+       "tags-create-already-exists": "Taggið „$1“ er nú þegar til.",
+       "tags-delete-title": "Eyða taggi",
+       "tags-delete-reason": "Ástæða:",
+       "tags-delete-not-found": "Taggið „$1“ er ekki til.",
+       "tags-activate-title": "Virkja tagg",
+       "tags-activate-reason": "Ástæða:",
+       "tags-activate-not-found": "Taggið „$1“ er ekki til.",
+       "tags-activate-submit": "Virkja",
+       "tags-deactivate-title": "Afvirkja tagg",
+       "tags-deactivate-reason": "Ástæða:",
+       "tags-deactivate-submit": "Afvirkja",
+       "tags-edit-title": "Breyta töggum",
+       "tags-edit-manage-link": "Stjórna töggum",
        "comparepages": "Bera saman síður",
        "compare-page1": "Síða 1",
        "compare-page2": "Síða 2",
        "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-cancel": "Hætta við",
        "feedback-close": "Búið",
+       "feedback-error-title": "Villa",
        "feedback-error1": "Villa: Óþekkt útkoma frá API",
        "feedback-error2": "Villa: Breytingin mistókst",
        "feedback-error3": "Villa: Ekkert svar frá API",
        "feedback-subject": "Fyrirsögn:",
        "feedback-submit": "Senda",
        "feedback-thanks": "Takk! Ábendingu þinni hefur verið bætt við á síðuna \"[$2 $1]\".",
+       "feedback-thanks-title": "Takk!",
        "searchsuggest-search": "Leita",
        "searchsuggest-containing": "sem innihalda ...",
        "api-error-badaccess-groups": "Þú hefur ekki leyfi til að hlaða inn skrám.",
        "expand_templates_ok": "Í lagi",
        "expand_templates_remove_comments": "Fjarlægja athugasemdir",
        "expand_templates_preview": "Forskoða",
+       "pagelang-language": "Tungumál",
        "mediastatistics": "Margmiðlunar tölfræði",
        "mediastatistics-summary": "Tölfræði um upphaldar skráar gerðir. Hún inniheldur eingöngu nýjustu útgáfu skráarinnar. Gamlar eða eyddar skrár eru ekki teknar með.",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 bæti}} ($2; $3%)",
index d12ede8..7668098 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|elemento|elementi}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|elemento|elementi}}",
        "nrevisions": "$1 {{PLURAL:$1|versione|versioni}}",
-       "nviews": "$1 {{PLURAL:$1|visita|visite}}",
        "nimagelinks": "Utilizzato su $1 {{PLURAL:$1|pagina|pagine}}",
        "ntransclusions": "usato in $1 {{PLURAL:$1|pagina|pagine}}",
        "specialpage-empty": "Questa pagina speciale è attualmente vuota.",
index 0031ac2..b6d4dba 100644 (file)
        "content-model-css": "CSS",
        "content-json-empty-object": "空のオブジェクト",
        "content-json-empty-array": "空の配列",
+       "duplicate-args-warning": "<strong>警告:</strong> [[:$1]]は「$3」パラメータの値が複数存在する[[:$2]]を呼び出しています。提供されている最後の値のみが使用されます。",
        "duplicate-args-category": "テンプレート呼び出しで引数が重複しているページ",
        "duplicate-args-category-desc": "引数が重複したテンプレート呼び出しを含むページ。例: <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code>、<code><nowiki>{{foo|bar|1=baz}}</nowiki></code>",
        "expensive-parserfunction-warning": "<strong>警告:</strong> このページでは、高負荷なパーサー関数の呼び出し回数が多過ぎます。\n\n{{PLURAL:$2|呼び出しを $2 回}}未満にしてください ({{PLURAL:$1|現在は $1 回}})。",
        "uploaddisabledtext": "ファイルのアップロードは、無効になっています。",
        "php-uploaddisabledtext": "ファイルのアップロードがPHPで無効化されています。\nfile_uploadsの設定を確認してください。",
        "uploadscripted": "このファイルは、ウェブブラウザーが誤って解釈してしまうおそれがあるHTMLまたはスクリプトコードを含んでいます。",
+       "uploaded-script-svg": "アップロードされたSVGファイルにスクリプト可能な要素「$1」が見つかりました。",
+       "uploaded-hostile-svg": "アップロードされたSVGファイルのスタイル要素に安全ではないCSSが見つかりました。",
        "uploadscriptednamespace": "この SVG ファイルは無効な名前空間「$1」を含んでいます。",
        "uploadinvalidxml": "アップロードされたファイルに含まれる XML が構文解析できませんでした。",
        "uploadvirus": "このファイルはウイルスを含んでいます!\n詳細: $1",
        "nmembers": "$1項目",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|項目}}",
        "nrevisions": "$1版",
-       "nviews": "$1回の閲覧",
        "nimagelinks": "$1 {{PLURAL:$1|ページ}}で使用",
        "ntransclusions": "$1 {{PLURAL:$1|ページ}}で使用",
        "specialpage-empty": "該当するものはありません。",
        "movedarticleprotection": "が保護の設定を「[[$2]]」から「[[$1]]」へ移動しました",
        "protect-title": "「$1」の保護レベルを変更",
        "protect-title-notallowed": "「$1」の保護レベルを表示",
-       "prot_1movedto2": "[[$1]] を [[$2]] へ移動",
+       "prot_1movedto2": "[[$1]] を [[$2]] へ移動しました",
        "protect-badnamespace-title": "保護不可能な名前空間",
        "protect-badnamespace-text": "この名前空間のページは保護できません。",
        "protect-norestrictiontypes-text": "利用できる制限の種類がないため、このページは保護できません。",
        "import-interwiki-history": "このページのすべての版を複製する",
        "import-interwiki-templates": "すべてのテンプレートを含める",
        "import-interwiki-submit": "取り込み",
+       "import-mapping-default": "既定の場所へインポート",
+       "import-mapping-namespace": "名前空間へインポート:",
+       "import-mapping-subpage": "次のページの下位ページとしてインポート:",
        "import-upload-filename": "ファイル名:",
        "import-comment": "コメント:",
        "importtext": "元のウィキで[[Special:Export|書き出し機能]]を使用してファイルに書き出してください。\nそれをコンピューターに保存した後、こちらへアップロードしてください。",
        "tags-edit-existing-tags-none": "(なし)",
        "tags-edit-new-tags": "新しいタグ:",
        "tags-edit-remove-all-tags": "(すべてのタグを除去)",
+       "tags-edit-chosen-no-results": "一致するタグが見つかりません",
        "tags-edit-reason": "理由:",
+       "tags-edit-success": "変更が正常に適用されました。",
        "tags-edit-failure": "変更は適用できませんでした: $1",
        "tags-edit-nooldid-title": "無効な対象版",
+       "tags-edit-none-selected": "追加または削除するには、少なくとも1つ以上のタグを選択してください。",
        "comparepages": "ページの比較",
        "compare-page1": "ページ 1",
        "compare-page2": "ページ 2",
        "feedback-error1": "エラー: 認識できない結果を API が返しました",
        "feedback-error2": "エラー: 編集に失敗しました",
        "feedback-error3": "エラー: API からの応答がありません",
+       "feedback-error4": "エラー: 指定されたフィードバックに投稿することができません",
        "feedback-message": "メッセージ:",
        "feedback-subject": "件名:",
        "feedback-submit": "送信",
index 00ee265..98a43a2 100644 (file)
        "nmembers": "$1 წევრი",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|წევრი|წევრი}}",
        "nrevisions": "$1 რედაქტირება",
-       "nviews": "$1 ჩვენება",
        "nimagelinks": "გამოიყენება $1 {{PLURAL:$1|გვერდზე}}",
        "ntransclusions": "გამოიყენება $1 {{PLURAL:$1|გვერდზე}}",
        "specialpage-empty": "ეს გვერდი ცარიელია.",
index f41a574..a02df75 100644 (file)
        "nmembers": "$1{{PLURAL:$1|សមាជិក|សមាជិក}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|សមាជិក|សមាជិក}}",
        "nrevisions": "$1 {{PLURAL:$1|កំណែប្រែ}}",
-       "nviews": "$1 {{PLURAL:$1|ការចូលមើល}}",
        "nimagelinks": "ត្រូវបានប្រើនៅលើទំព័រចំនួន $1។",
        "ntransclusions": "ត្រូវបានប្រើនៅលើទំព័រចំនួន $1",
        "specialpage-empty": "គ្មានលទ្ធផលសម្រាប់របាយណ៍នេះទេ។",
index 5c753cc..3f5de68 100644 (file)
        "nmembers": "{{PLURAL:$1|문서}} $1개",
        "nmemberschanged": "$1 → $2{{PLURAL:$2|개}}",
        "nrevisions": "{{PLURAL:$1|판}} $1개",
-       "nviews": "$1번 {{PLURAL:$1|읽음}}",
        "nimagelinks": "{{PLURAL:$1|문서}} $1개에서 사용됨",
        "ntransclusions": "{{PLURAL:$1|문서}} $1개에서 사용됨",
        "specialpage-empty": "명령에 대한 결과가 없습니다.",
index 0285261..a94723e 100644 (file)
        "nmembers": "met {{PLURAL:$1|ein Sigg|$1 Sigge}} dren",
        "nmemberschanged": "met&nbsp;$1&nbsp;→&nbsp;{{PLURAL:$2|eine Sigg|$2&nbsp;Sigge|keine Sigg}}",
        "nrevisions": "{{PLURAL:$1|Ein Änderong|$1 Änderonge|Keij Änderong}}",
-       "nviews": "{{PLURAL:$1|Eine Avrof|$1 Avrofe|Keine Avrof}}",
        "nimagelinks": "Weed op {{PLURAL:$1|eine Sigg|$1 Sigge|keine Sigg}} jebruch",
        "ntransclusions": "weed op {{PLURAL:$1|eine Sigg|$1 Sigge|keine Sigg}} jebruch",
        "specialpage-empty": "Heh en dä Leß es nix dren.",
index 8270157..0867b83 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|endam|endam}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|endam}}",
        "nrevisions": "$1 {{PLURAL:$1|guherandin|guherandin}}",
-       "nviews": "$1 {{PLURAL:$1|dîtin|dîtin}}",
        "lonelypages": "Rûpelên sêwî",
        "uncategorizedpages": "Rûpelên bêkategorî",
        "uncategorizedcategories": "Kategoriyên bê kategorî",
index d9e7d9f..aeda6d3 100644 (file)
        "nlinks": "$1 {{PLURAL:$1|nexus|nexus}}",
        "nmembers": "$1 {{PLURAL:$1|inest|insunt}}",
        "nrevisions": "$1 {{PLURAL:$1|emendatio|emendationes}}",
-       "nviews": "$1 {{PLURAL:$1|visa|visae}}",
        "lonelypages": "Paginae non annexae",
        "uncategorizedpages": "Paginae sine categoriis",
        "uncategorizedcategories": "Categoriae sine categoriis",
        "watchlisttools-view": "Mutationes paginarum observatarum inspicere",
        "watchlisttools-edit": "Indicem paginarum observatarum inspicere vel recensere",
        "watchlisttools-raw": "Indicem paginarum observatarum quasi textum recensere",
+       "hebrew-calendar-m2": "Hesuan",
        "hebrew-calendar-m4": "Tebeth",
+       "hebrew-calendar-m5": "Sabat",
        "hebrew-calendar-m8": "Iar",
        "hebrew-calendar-m11": "Ab",
+       "hebrew-calendar-m2-gen": "Hesuan",
        "hebrew-calendar-m4-gen": "Tebeth",
+       "hebrew-calendar-m5-gen": "Sabat",
        "hebrew-calendar-m8-gen": "Iar",
        "hebrew-calendar-m11-gen": "Ab",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|disputatio]])",
index 15210db..9011be4 100644 (file)
@@ -10,7 +10,8 @@
                        "Taichi",
                        "Universal Life",
                        "לערי ריינהארט",
-                       "아라"
+                       "아라",
+                       "StevenJ81"
                ]
        },
        "tog-underline": "Suliñar los atamientos:",
        "watchlisttools-view": "Ver los trocamientos",
        "watchlisttools-edit": "Ver i trocar tu lista de escogidas",
        "watchlisttools-raw": "Troca tu lista de escogidas en crudo",
+       "hebrew-calendar-m1": "Tishre",
+       "hebrew-calendar-m2": "Heshvan",
+       "hebrew-calendar-m1-gen": "Tishre",
+       "hebrew-calendar-m2-gen": "Heshvan",
        "duplicate-defaultsort": "'''Aviso:''' la klave primaria para ordenamiento \"$2\" anula la primera \"$1\"",
        "version": "Versión",
        "version-specialpages": "Pajinas espesiales",
index 8608546..fb0f294 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|Member|Memberen}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|Member|Memberen}}",
        "nrevisions": "$1 {{PLURAL:$1|Versioun|Versiounen}}",
-       "nviews": "$1 {{PLURAL:$1|Offro|Offroen}}",
        "nimagelinks": "Benotzt op {{PLURAL:$1|enger Säit|$1 Säiten}}",
        "ntransclusions": "benotzt op {{PLURAL:$1|enger Säit|$1 Säiten}}",
        "specialpage-empty": "Dës Säit ass eidel.",
index bebdd92..af04196 100644 (file)
@@ -8,15 +8,15 @@
                        "Mjbmr"
                ]
        },
-       "tog-underline": "هوم پیوند زیرخط دار:",
-       "tog-hideminor": "قام كردن ويرايشتيا كؤچك مئن آلشتيا تازه",
-       "tog-hidepatrolled": "قام كردن ويرايشتيا تیه دیار کرده مئن آلشتيا تازه",
-       "tog-newpageshidepatrolled": "بلگیا تیه دیار کرده نه مئن نوم گه بلگیا تازه قام کو",
-       "tog-extendwatchlist": "سیل برگه نه سی نشو دئن تمام آلشتیا واکو نه فقط سی بیشتر تازه باوا.",
-       "tog-usenewrc": "دسÙ\87 Ø¨Ù\86Û\8c Ø¢Ù\84شتÛ\8cا Ù\88ا Ø¨Ù\84Ú¯Ù\87 Ø¯ Ø¢Ù\84شتÛ\8cا ØªØ§Ø²Ù\87 Ù\88 Ø³Û\8cÙ\84 Ø¨رگ",
-       "tog-numberheadings": "سربÙ\84Ú¯Ù\87 Ø®Ù\88د Ø´Ù\85ارÙ\87 Ú¯Ø±",
-       "tog-showtoolbar": "نوار اوزار ويرايشت نشون بيه",
-       "tog-editondblclick": "بلگيا نه وا دوبار پورنين ويرايشت بكيد",
+       "tog-underline": "هوم پئیڤأند زیرخأط دار:",
+       "tog-hideminor": "قام کئردئن ڤیرایشتیا کوچئک مین آلئشتیا تازە",
+       "tog-hidepatrolled": "قام کئردئن ڤیرایشتیا تیە دیار کئردە مین آلئشتیا تازە",
+       "tog-newpageshidepatrolled": "بألگە یا تیە دیار کئردە نە مئن نومگە بألگە یا تازە قام کو",
+       "tog-extendwatchlist": "سئیل بأرگە نە سی نئشوٙ دأئن تأموٙم آلئشتیا ڤا کو نە فأقأط سی بیشتئر تازە باڤیا.",
+       "tog-usenewrc": "دأسÛ\95 Ø¨Ø£Ù\86Û\8c Ø¢Ù\84ئشتÛ\8cا Ú¤Ø§ Ø¨Ø£Ù\84Ú¯Û\95 Ø¯ Ø¢Ù\84ئشتÛ\8cا ØªØ§Ø²Û\95 Ù\88 Ø³Ø¦Û\8cÙ\84 Ø¨Ø£رگ",
+       "tog-numberheadings": "سأربأÙ\84Ú¯Û\95 Ø®Ù\88د Ø´Ù\85ارئشت Ú©Ù\88",
+       "tog-showtoolbar": "نأڤار أڤزار ڤیرایئشت نە نئشو بیە",
+       "tog-editondblclick": "بألگە یا نە ڤا د نۊ پوٙرنیئن ڤیرایئشت بأکیت",
        "tog-editsectiononrightclick": "بهرجا ویرایشت نه وا راس پورنین د بهرجا داسونیا کنشتگر کو",
        "tog-watchcreations": "بلگیایی که مه راس کمه و جانیایایی که مه سوار کمه اضاف کو د سیل برگه مه",
        "tog-watchdefault": "بلگیا و جانیایی که مه ویرایشت کمه اضاف کو د سیل برگم",
        "sat": "شمه",
        "january": "جانڤیە",
        "february": "فئڤریە",
-       "march": "Ù\85ارش",
-       "april": "آبريل",
-       "may_long": "Ù\85ا",
-       "june": "جوئن",
-       "july": "جولای",
-       "august": "اگوست",
-       "september": "سپتامر",
-       "october": "اÙ\83تور",
-       "november": "نوامر",
-       "december": "دسامر",
+       "march": "Ù\85ارس",
+       "april": "آڤریل",
+       "may_long": "Ù\85ئÛ\8c",
+       "june": "جوٙأن",
+       "july": "جÙ\88Ù\99Ù\84اÛ\8c",
+       "august": "Ø¢گوست",
+       "september": "سئپتامر",
+       "october": "ئÙ\88Ú©تور",
+       "november": "نوڤامر",
+       "december": "دئساÙ\85ر",
        "january-gen": "جانويه",
        "february-gen": "فوريه",
        "march-gen": "مارش",
        "october-gen": "اكتور",
        "november-gen": "نوامر",
        "december-gen": "دسامر",
-       "jan": "جانویه",
+       "jan": "جانڤیە",
        "feb": "فئڤریە",
-       "mar": "Ù\85ارش",
-       "apr": "آبريل",
-       "may": "Ù\85ا",
-       "jun": "جوئن",
-       "jul": "جÙ\88Ù\84ا",
-       "aug": "اÙ\88گوست",
-       "sep": "سپتامر",
-       "oct": "اÙ\83تÙ\88ر",
-       "nov": "نوامر",
-       "dec": "دسامر",
+       "mar": "Ù\85ارس",
+       "apr": "آڤریل",
+       "may": "Ù\85ئÛ\8c",
+       "jun": "جوٙأن",
+       "jul": "جÙ\88Ù\99Ù\84اÛ\8c",
+       "aug": "Ø¢گوست",
+       "sep": "سئپتامر",
+       "oct": "ئÙ\88کتÙ\88Ú¤ر",
+       "nov": "نوڤامر",
+       "dec": "دئساÙ\85ر",
        "january-date": "جانويه $1",
        "february-date": "فوريه  $1",
        "march-date": "مارس  $1",
        "tagline": "د {{SITENAME}}",
        "help": "هومياری",
        "search": "پئی جوٙری",
-       "searchbutton": "پی جوری",
+       "searchbutton": "پئی جوٙری",
        "go": "رو",
        "searcharticle": "رو",
        "history": "ويرگار بلگه",
        "currentevents": "پيشومدل تازه باو",
        "currentevents-url": "پروجه:پيشومدل تازه باو",
        "disclaimers": "تیە پوٙشکاریا",
-       "disclaimerpage": "پروجه:منكر بيئن کلی",
+       "disclaimerpage": "پوروجە: تیە پوٙشی کئردئن هأمە گئر",
        "edithelp": "هومياری سی ويرايشت",
        "helppage-top-gethelp": "هومياری",
        "mainpage": "سأرآسوٙنە",
        "portal": "درآسونه کومله یکی",
        "portal-url": "پروجه:سرآسونه کومله یکی",
        "privacy": "پوٙلتیک رازینە داری",
-       "privacypage": "پروجه: خط مشی رازینه کاری کردن",
+       "privacypage": "پوروجە: رأگڤاری رازینە کاری کئردئن",
        "badaccess": "خطا :صلاداری کو",
        "badaccess-group0": "شما صلا انجوم کاری که حاستیت نارین",
        "badaccess-groups": "ای کاری که شما هاستیته سی کاریاریا د  {{PLURAL:$2|گرو|یکی د گرویا}}: $1 کم بیه",
        "pagetitle": "$1 - {{SITENAME}}",
        "pagetitle-view-mainpage": "{{SITENAME}}",
        "backlinksubtitle": "← $1",
-       "retrievedfrom": "د نو زنه بیه د\"$1\"",
+       "retrievedfrom": "د نۊ زئنە بیە د\"$1\"",
        "youhavenewmessages": "شما داريت $1($2)",
        "youhavenewmessagesfromusers": "{{PLURAL:$4|شما }} $1 د {{PLURAL:$3|کاریار هنی|$3 کاریاریا}}داریتو($2).",
        "youhavenewmessagesmanyusers": "شما $1 د  فره کاریار داريت ($2).",
        "feed-invalid": "نوع مشترک بین هوال حون نامعتور",
        "feed-unavailable": "هوال حونیا د دسرس نئین",
        "site-rss-feed": "هوال حون RSS سی $1",
-       "site-atom-feed": "هوال حون Atom سی $1",
+       "site-atom-feed": "هأڤال حوٙن Atom سی $1",
        "page-rss-feed": "هوال حون RSS سی «$1»",
        "page-atom-feed": "هوال حون Atom سی $1",
        "feed-atom": "اتم",
        "nmembers": "$1 {{PLURAL:$1|اندوم|اندوميا}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|اندوم|اندومیا}}",
        "nrevisions": "$1 {{جمس:$1|وانئری|وانئریا}}",
-       "nviews": "$1 {{PLURAL:$1|دیئن|دیئنیا}}",
        "nimagelinks": "$1 {{PLURAL:$1|بلگه|بلگيا}} استفاده بیه",
        "ntransclusions": "$1 {{PLURAL:$1|بلگه|بلگيا}} استفاده بیه",
        "specialpage-empty": "نتیجه ای د ای گزارشت نئ.",
index e5c0665..f0b3079 100644 (file)
        "note": "'''Piezīme: '''",
        "previewnote": "'''Atceries, ka šis ir tikai pirmskats un teksts vēl nav saglabāts!'''",
        "continue-editing": "Pāriet uz labošanas lauku",
-       "session_fail_preview": "'''Neizdevās apstrādāt tavas izmaiņas, jo tika pazaudēti sesijas dati.\nLūdzu mēģini vēlreiz.\nJa tas joprojām nedarbojas, mēģini [[Special:UserLogout|izlogoties ārā]] un ielogoties no jauna.'''",
+       "session_fail_preview": "'''Neizdevās apstrādāt tavas izmaiņas, jo tika pazaudēti sesijas dati.\nLūdzu mēģini vēlreiz saglabāt izmaiņas.\nJa tas joprojām nedarbojas, mēģini [[Special:UserLogout|izlogoties ārā]] un ielogoties no jauna.'''",
        "session_fail_preview_html": "'''Neizdevās apstrādāt tavas izmaiņas, jo tika pazaudēti sesijas dati.'''\n\n''Tā, kā {{grammar:ģenitīvs|{{SITENAME}}}} darbojas neapstrādāts HTML, pirmskats ir paslēpts, lai aizsargātos no JavaScripta  uzbrukumiem.''\n\n'''Ja šis bija parasts rediģēšanas mēģinājums, mēģini vēlreiz.\nJa tas joprojām nedarbojas, mēģini [[Special:UserLogout|izlogoties ārā]] un ielogoties no jauna.'''",
        "editing": "Labot $1",
        "creating": "Izveido lapu $1",
        "nlinks": "$1 {{PLURAL:$1|saites|saite|saites}}",
        "nmembers": "$1 {{PLURAL:$1|lapas|lapa|lapas}}",
        "nrevisions": "$1 {{PLURAL:$1|versijas|versija|versijas}}",
-       "nviews": "skatīta $1 {{PLURAL:$1|reizes|reizi|reizes}}",
        "nimagelinks": "Izmantots $1 {{PLURAL:$1|lapās|lapā|lapās}}",
        "ntransclusions": "izmantots $1 {{PLURAL:$1|lapās|lapā|lapās}}",
        "specialpage-empty": "Šim ziņojumam nav rezultātu.",
index b99ecee..f3bb621 100644 (file)
        "action-undelete": "обнови ја страницава",
        "action-suppressrevision": "прегледај ја и обнови ја оваа скриена преработка",
        "action-suppressionlog": "преглед на овој li;en дневник",
-       "action-block": "оневозможи го овој корисник да уредува",
+       "action-block": "оневозможување на уредувањето на корисников",
        "action-protect": "измени го степенот на заштита на оваа страница",
        "action-rollback": "брзо отповикување на измени направени од последниот уредник на страницата",
        "action-import": "увоз на страници од друго вики",
        "nmembers": "$1 {{PLURAL:$1|член|членови}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|член|членови}}",
        "nrevisions": "$1 {{PLURAL:$1|измена|измени}}",
-       "nviews": "$1 {{PLURAL:$1|преглед|прегледи}}",
        "nimagelinks": "Се користи на $1 {{PLURAL:$1|страница|страници}}",
        "ntransclusions": "се користи на $1 {{PLURAL:$1|страница|страници}}",
        "specialpage-empty": "Нема резултати од пребарувањето на овој извештај.",
        "ipbreason-dropdown": "*Вообичаени причини за блокирање\n** Вметнување лажни информации\n** Бришење на содржини од страниците\n** Спам-врски кон надворешни мрежни места\n** Вметнување глупости во страниците\n** Непристојно однесување\n** Навредување на други корисници\n** Неприфатливо корисничко име",
        "ipb-hardblock": "Спречи ги најавените корисници да уредуваат од оваа IP-адреса",
        "ipbcreateaccount": "Оневозможи создавање кориснички сметки",
-       "ipbemailban": "Ð\9eневозможи Ð³Ð¾ корисникот да праќа е-пошта",
+       "ipbemailban": "Ð\9eневозможи Ð¼Ñ\83 Ð½Ð° корисникот да праќа е-пошта",
        "ipbenableautoblock": "Автоматски блокирај ја последната IP-адреса што ја користел корисникот и сите понатамошни адреси од кои ќе се обиде да уредува",
        "ipbsubmit": "Блокирај го овој корисник",
        "ipbother": "Друг рок:",
index f7562e6..82d1415 100644 (file)
        "nlinks": "$1 линк",
        "nmembers": "$1 гишүүн",
        "nrevisions": "$1 засвар",
-       "nviews": "$1 удаа үзсэн",
        "nimagelinks": "$1 {{PLURAL:$1|хуудсанд|хуудсанд}} ашигласан",
        "specialpage-empty": "Энэ мэдүүлэгт үр дүн гарсангүй.",
        "lonelypages": "Өнчин хуудсууд",
index 22001cb..db816b4 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|elemento|elemente}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|membro|membre}}",
        "nrevisions": "$1 {{PLURAL:$1|verzione|verziune}}",
-       "nviews": "$1 {{PLURAL:$1|visita|visite}}",
        "nimagelinks": "Ausate ncopp'a {{PLURAL:$1|na paggena|$1 paggene}}",
        "ntransclusions": "ausate ncopp'a {{PLURAL:$1|na paggena|$1 paggene}}",
        "specialpage-empty": "Nun ce stanno risultate pe' stu report.",
index 7f498e9..61ce1ca 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|medlem|medlemmer}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|medlem|medlemmer}}",
        "nrevisions": "$1 {{PLURAL:$1|revisjon|revisjoner}}",
-       "nviews": "$1 {{PLURAL:$1|visning|visninger}}",
        "nimagelinks": "Brukt på $1 {{PLURAL:$1|side|sider}}",
        "ntransclusions": "brukt på $1 {{PLURAL:$1|side|sider}}",
        "specialpage-empty": "Denne siden er tom.",
index d8660a7..077e1c8 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|सदस्य|सदस्यहरू}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|सदस्य|सदस्यहरू}}",
        "nrevisions": "$1 {{PLURAL:$1|पुनरावलोकन|पुनरावलोकनहरु}}",
-       "nviews": "$1 {{PLURAL:$1|अवलोकन|अवलोकनहरु}}",
        "nimagelinks": "$1 {{PLURAL:$1|पृष्ठ|पृष्ठहरु}}माथि प्रयोग गरिएको",
        "ntransclusions": "$1 {{PLURAL:$1पृष्ठमा प्रयोग गरिएको|पृष्ठहरूमा प्रयोग गरिएका}}",
        "specialpage-empty": "यो पृष्ठ खाली छ।",
index fd1efc6..2984e93 100644 (file)
        "nlinks": "{{PLURAL:$1|Éi lenkje|$1 lenkjer}}",
        "nmembers": "$1 {{PLURAL:$1|medlem|medlemmer}}",
        "nrevisions": "{{PLURAL:$1|Éin versjon|$1 versjonar}}",
-       "nviews": "{{PLURAL:$1|Éi vising|$1 visingar}}",
        "nimagelinks": "Brukt på $1 {{PLURAL:$1|side|sider}}",
        "ntransclusions": "brukt på $1 {{PLURAL:$1|side|sider}}",
        "specialpage-empty": "Det er ingen resultat for denne rapporten.",
index ba56063..7e67800 100644 (file)
@@ -12,7 +12,8 @@
                        "Shisir 1945",
                        "ଶିତିକଣ୍ଠ ଦାଶ",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Nistha.aslp"
                ]
        },
        "tog-underline": "ଲିଙ୍କତଳେଗାର ଟାଣିବା:",
        "watchthis": "ଏହି ପୃଷ୍ଠାଟିକୁ ଦେଖିବେ",
        "savearticle": "ସାଇତିବେ [Save]",
        "preview": "ସାଇତିବା ଆଗରୁ ଦେଖନ୍ତୁ",
-       "showpreview": "ଦେଖଣା [Preview]",
+       "showpreview": "ପà­\82ରà­\8dବଦà­\87à¬\96ଣା [Preview]",
        "showdiff": "ବଦଳଗୁଡ଼ିକ ଦେଖାଇବେ",
        "blankarticle": "<strong>ଚେତାବନୀ:</strong> ଆପଣ ସମ୍ପାଦନା କରୁଥିବା ଏହି ପୃଷ୍ଠାଟି ଫାଙ୍କା ଅଛି ।\nଯଦି ଆପଣ \"{{int:savearticle}}\" ଉପରେ ଆଉଥରେ କ୍ଲିକ କରନ୍ତି, ପୃଷ୍ଠାଟି କୌଣସି ବିଷୟବସ୍ତୁ ନଥାଇ ତିଆରି ହୋଇଯିବ ।",
        "anoneditwarning": "<strong>ସାବଧାନ:</strong> ଆପଣ ଲଗ-ଇନ କରିନାହାନ୍ତି । ଅଧିକ ସମ୍ପାଦନା କଲେ ଆପଣଙ୍କ IP Address ଟି ସମସ୍ତଙ୍କୁ ଦେଖାଯିବ । <strong>[$1ଲଗ ଇନ କଲେ]</strong> କିମ୍ବା <strong>[$2 ନୂଆ ଖାତାଟିଏ ତିଆରି କଲେ]</strong>, ଆପଣଙ୍କ ସମ୍ପାଦନାର ଶ୍ରେୟ ଅନ୍ୟାନ୍ୟ ସୁବିଧା ସହିତ ଆପଣଙ୍କ ଇଉଜର ନାମରେ ଦିଆହେବ ।",
        "prefs-timeoffset": "ସମୟ ଆରମ୍ଭ",
        "prefs-advancedediting": "ସାଧାରଣ ବିକଳ୍ପ",
        "prefs-editor": "ସମ୍ପାଦକ",
-       "prefs-preview": "ଦେଖଣା",
+       "prefs-preview": "ପà­\82ରà­\8dବଦà­\87à¬\96ଣା",
        "prefs-advancedrc": "ଉନ୍ନତ ବିକଳ୍ପସମୂହ",
        "prefs-advancedrendering": "ଉନ୍ନତ ବିକଳ୍ପସମୂହ",
        "prefs-advancedsearchoptions": "ଉନ୍ନତ ବିକଳ୍ପସମୂହ",
        "nmembers": "$1 {{PLURAL:$1|member|ସଭ୍ୟ}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|ସଭ୍ୟ|ସଭ୍ୟଗଣ}}",
        "nrevisions": "$1 ଗୋଟି {{PLURAL:$1|ସଂସ୍କରଣ|ସଂସ୍କରଣ}}",
-       "nviews": "$1 ଟି {{PLURAL:$1|ଦେଖଣା|ଦେଖଣା}}",
        "nimagelinks": "$1 ଟି {{PLURAL:$1|ପୃଷ୍ଠା|ପୃଷ୍ଠା}}ରେ ବ୍ୟବହାର କରାଯାଇଅଛି",
        "ntransclusions": "$1ଟି {{PLURAL:$1|ପୃଷ୍ଠା|ପୃଷ୍ଠା}}ରେ ବ୍ୟବହାର କରାଯାଇଅଛି",
        "specialpage-empty": "ଏହି ଅନୁରୋଧ ପାଇଁ କିଛି ଫଳାଫଳ ମିଳିଲା ନାହିଁ ।",
        "expand_templates_remove_nowiki": "ଫଳାଫଳରେ <nowiki> ଟ୍ୟାଗମାନଙ୍କୁ ଦବାଇଦିଅନ୍ତୁ",
        "expand_templates_generate_xml": "XML ପାର୍ସ ସଂରଚନା ଦେଖାନ୍ତୁ",
        "expand_templates_generate_rawhtml": "କେବଳ HTML କୋଡ଼ ଦେଖାନ୍ତୁ",
-       "expand_templates_preview": "ଦେଖଣା",
+       "expand_templates_preview": "ପà­\82ରà­\8dବଦà­\87à¬\96ଣା",
        "pagelanguage": "ପୃଷ୍ଠା ଭାଷା ବଛା",
        "pagelang-name": "ପୃଷ୍ଠା",
        "pagelang-language": "ଭାଷା",
index 804a2c7..7b74390 100644 (file)
        "disclaimers": "ਦਾਅਵੇ",
        "disclaimerpage": "Project:ਆਮ ਦਾਅਵੇ",
        "edithelp": "ਸੋਧ ਸਬੰਧੀ ਮਦਦ",
+       "helppage-top-gethelp": "ਮਦਦ",
        "mainpage": "ਮੁੱਖ ਸਫ਼ਾ",
        "mainpage-description": "ਮੁੱਖ ਸਫ਼ਾ",
        "policy-url": "Project:ਨੀਤੀ",
        "wrongpassword": "ਗ਼ਲਤ ਪਾਸਵਰਡ ਦਿੱਤਾ ਹੈ। ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।",
        "wrongpasswordempty": "ਖ਼ਾਲੀ ਪਾਸਵਰਡ ਦਿੱਤਾ ਹੈ। ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।",
        "passwordtooshort": "ਪਾਸਵਰਡ {{PLURAL:$1|1 ਅੱਖਰ|$1 ਅੱਖਰਾਂ}} ਦਾ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ।",
+       "passwordtoolong": "ਪਾਸਵਰਡ {{PLURAL:$1|1 ਅੱਖਰ|$1 ਅੱਖਰਾਂ}} ਤੋਂ ਵੱਡਾ ਨਹੀਂ ਹੋ ਸਕਦਾ।",
        "password-name-match": "ਤੁਹਾਡਾ ਪਛਾਣ-ਸ਼ਬਦ ਤੁਹਾਡੇ ਵਰਤੋਂਕਾਰ ਨਾਂ ਤੋਂ ਵੱਖਰਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।",
        "password-login-forbidden": "ਇਹ ਯੂਜ਼ਰ-ਨਾਂ ਅਤੇ ਪਾਸਵਰਡ ਵਰਤਣ ਦੀ ਮਨਾਹੀ ਹੈ।",
        "mailmypassword": "ਨਵਾਂ ਪਾਸਵਰਡ ਈ-ਮੇਲ ਕਰੋ",
        "nlinks": "$1 {{PLURAL:$1|ਲਿੰਕ|ਲਿੰਕ}}",
        "nmembers": "$1 {{PLURAL:$1|ਮੈਂਬਰ|ਮੈਂਬਰਾਂ}}",
        "nrevisions": "$1 {{PLURAL:$1|ਰੀਵਿਜ਼ਨ|ਰੀਵਿਜ਼ਨਾਂ}}",
-       "nviews": "$1 {{PLURAL:$1|ਫੇਰੀ|ਫੇਰੀਆਂ}}",
        "nimagelinks": "$1 {{PLURAL:$1|ਸਫ਼ੇ|ਸਫ਼ਿਆਂ}} ’ਤੇ ਵਰਤਿਆ ਹੋਇਆ",
        "ntransclusions": "$1 {{PLURAL:$1|ਸਫ਼ੇ|ਸਫ਼ਿਆਂ}} ’ਤੇ ਵਰਤਿਆ ਹੋਇਆ",
        "specialpage-empty": "ਇਸ ਰਿਪੋਟ ਦਾ ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ ਹੈ।",
        "exif-artist": "ਲੇਖਕ",
        "exif-copyright": "ਕਾਪੀਰਾਈਟ ਟਾਇਟਲ",
        "exif-exifversion": "ਐਗਜ਼ਿਫ਼ ਦਾ ਰੂਪ",
+       "exif-colorspace": "ਰੰਗ ਸਪੇਸ",
        "exif-pixelydimension": "ਤਸਵੀਰ ਦੀ ਚੌੜਾਈ",
        "exif-pixelxdimension": "ਤਸਵੀਰ ਦੀ ਲੰਬਾਈ",
        "exif-usercomment": "ਵਰਤੋਂਕਾਰ ਦੀਆਂ ਟਿੱਪਣੀਆਂ",
index a83fec2..4e27b54 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|element|elementy|elementów}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|element|elementy|elementów}}",
        "nrevisions": "$1 {{PLURAL:$1|wersja|wersje|wersji}}",
-       "nviews": "odwiedzono $1 {{PLURAL:$1|raz|razy}}",
        "nimagelinks": "Używane na $1 {{PLURAL:$1|stronie|stronach}}",
        "ntransclusions": "używany na $1 {{PLURAL:$1|stronie|stronach}}",
        "specialpage-empty": "Ta strona raportu jest pusta.",
index 8dea52f..7148987 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|membro|membros}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|membro|membros}}",
        "nrevisions": "$1 {{PLURAL:$1|revisão|revisões}}",
-       "nviews": "$1 {{PLURAL:$1|visita|visitas}}",
        "nimagelinks": "Utilizada em $1 {{PLURAL:$1|página|páginas}}",
        "ntransclusions": "usada {{PLURAL:$1|numa página|em $1 páginas}}",
        "specialpage-empty": "Atualmente não há dados a serem exibidos nesta página.",
index e2522ca..3a81bc4 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|membro|membros}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|membro|membros}}",
        "nrevisions": "$1 {{PLURAL:$1|edição|edições}}",
-       "nviews": "$1 {{PLURAL:$1|visita|visitas}}",
        "nimagelinks": "Usada {{PLURAL:$1|numa página|em $1 páginas}}",
        "ntransclusions": "usada {{PLURAL:$1|numa página|em $1 páginas}}",
        "specialpage-empty": "Não existem dados para apresentar.",
index dff3dfb..9638138 100644 (file)
        "copyrightwarning2": "Copyright warning displayed under the edit box in editor\n*$1 - license name",
        "editpage-head-copy-warn": "{{ignored}}Custom copyright warning in the header of an edit page.",
        "editpage-tos-summary": "{{notranslate}}",
+       "editpage-cannot-use-custom-model": "Error message shown if the database does not support changing the content model of a page.",
        "longpage-hint": "{{notranslate}}\n* <tt>$1</tt>: Size of the textbox formatted for output, using an appropriate unit ({{msg-mw|size-bytes}}, {{msg-mw|size-kilobytes}}, {{msg-mw|size-megabytes}}, {{msg-mw|size-gigabytes}})\n* <tt>$2</tt>: Size of the textbox in bytes, not formatnum",
        "longpageerror": "Warning displayed when trying to save a text larger than the maximum size allowed.\n\nParameters:\n* $1 - submitted size (in kilobytes)\n* $2 - maximum size (in kilobytes)",
        "readonlywarning": "Parameters:\n* $1 - reason",
        "nmembers": "Appears in brackets after each category listed on the special page [[Special:WantedCategories]].\n\nParameters:\n* $1 - the number of members of the category\nSee also:\n* {{msg-mw|Nmemberschanged}}",
        "nmemberschanged": "Appears in brackets after each category listed on the special page [[Special:WantedCategories]] if the number of pages in the category has changed since the list was last refreshed.\n\nParameters:\n* $1 - the original number of members of the category\n* $2 - the current one\nSee also:\n* {{msg-mw|Nmembers}}",
        "nrevisions": "Used as link text in [[Special:FewestRevisions]].\n\nThe link points to the page history (action=history).\n\nParameters:\n* $1 - number of revisions",
-       "nviews": "This message is used on [[Special:PopularPages]] to say how many times each page has been viewed.\n\nPreceded by the page title, like: Page title ($1 views)\n\nParameters:\n* $1 - the number of views",
        "nimagelinks": "Used on [[Special:MostLinkedFiles]] to indicate how often a specific file is used.\n\nParameters:\n* $1 - number of pages\nSee also:\n* {{msg-mw|Ntransclusions}}",
        "ntransclusions": "Used on [[Special:MostTranscludedPages]] to indicate how often a template is in use.\n\nParameters:\n* $1 - number of pages\nSee also:\n* {{msg-mw|Nimagelinks}}",
        "specialpage-empty": "Used on a special page when there is no data. For example on [[Special:Unusedimages]] when all images are used.",
index 1496d42..acc8753 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|membru|membri|de membri}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|membru|membri|de membri}}",
        "nrevisions": "{{PLURAL:$1|o versiune|$1 versiuni|$1 de versiuni}}",
-       "nviews": "{{PLURAL:$1|o accesare|$1 accesări|$1 de accesări}}",
        "nimagelinks": "Utilizat pe $1 {{PLURAL:$1|pagină|pagini}}",
        "ntransclusions": "utilizat pe $1 {{PLURAL:$1|pagină|pagini}}",
        "specialpage-empty": "Această pagină este goală.",
index 15690b5..7d0cf38 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|membre|membre}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|membre}}",
        "nrevisions": "$1 {{PLURAL:$1|revisione|revisiune}}",
-       "nviews": "$1 {{PLURAL:$1|visite|visite}}",
        "nimagelinks": "Ausate sus a $1 {{PLURAL:$1|pàgene|pàggene}}",
        "ntransclusions": "ausate sus a $1 {{PLURAL:$1|pàgene|pàggene}}",
        "specialpage-empty": "Non ge stonne resultete pe stu report.",
index b06fe21..d1647d9 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|объект|объекта|объектов}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|объект|объекта|объектов}}",
        "nrevisions": "$1 {{PLURAL:$1|версия|версии|версий}}",
-       "nviews": "$1 {{PLURAL:$1|просмотр|просмотра|просмотров}}",
        "nimagelinks": "Используется на $1 {{PLURAL:$1|странице|страницах}}",
        "ntransclusions": "используется на $1 {{PLURAL:$1|странице|страницах}}",
        "specialpage-empty": "Запрос не дал результатов.",
index a890c7e..fa51788 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|योजकः|योजकाः}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|सदस्यः|सदस्याः}}",
        "nrevisions": "$1 {{PLURAL:$1|पुनरावृत्तिः}}",
-       "nviews": "$1 {{PLURAL:$1|परिसन्धिः|परिसन्धयः}}",
        "nimagelinks": "$1 {{PLURAL:$1|पुटम्|पुटानि}} प्रयुक्तानि ।",
        "ntransclusions": "$1 {{PLURAL:$1|पुटम्|पुटानि}} प्रयुक्तानि ।",
        "specialpage-empty": "अस्य वृत्तस्य परिणामः नास्ति ।",
index 6b38049..1148f68 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|кыттааччы|кыттааччылаах}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|эбийиэк|эбийиэктээх}}",
        "nrevisions": "$1 {{PLURAL:$1|барыллаах|барыл баар}}",
-       "nviews": "$1 көрүүлээх",
        "nimagelinks": "$1 {{PLURAL:$1|сирэйгэ|ахсааннаах сирэйгэ}} туттуллар",
        "ntransclusions": "$1 {{PLURAL:$1|сирэйгэ|ахсааннаах сирэйгэ}} туттуллар",
        "specialpage-empty": "Көрдөөн тугу да булбата.",
diff --git a/languages/i18n/sdh.json b/languages/i18n/sdh.json
new file mode 100644 (file)
index 0000000..015e408
--- /dev/null
@@ -0,0 +1,629 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Ashkan P.",
+                       "Calak",
+                       "Kurdbuddha",
+                       "Mjbmr",
+                       "Paraw2",
+                       "아라"
+               ]
+       },
+       "tog-numberheadings": "ژمارەکردنی خۆدکاری سەرتیترەکان",
+       "underline-always": "هەمیشە",
+       "underline-never": "هیچ وەخت",
+       "sunday": "یەێشەمە",
+       "monday": "دوشەممە",
+       "tuesday": "سێشەمە",
+       "wednesday": "چوارشەمە",
+       "thursday": "پەنجشەمە",
+       "friday": "جومعە",
+       "saturday": "شەممە",
+       "sun": "یەێشەمە",
+       "mon": "دووشەمە",
+       "tue": "سێشەمە",
+       "wed": "چوارشەمە",
+       "thu": "پەنجشەمە",
+       "fri": "جومعە",
+       "sat": "شەممە",
+       "january": "ژانویە",
+       "february": "فڤریە",
+       "march": "مارس",
+       "april": "ئاڤریل",
+       "may_long": "مەی",
+       "june": "ژووەن",
+       "july": "ژووئیە",
+       "august": "ئووت",
+       "september": "سپتامبر",
+       "october": "ئۆکتۆبر",
+       "november": "نۆڤامبر",
+       "december": "دسامبر",
+       "january-gen": "ژانویە",
+       "february-gen": "فڤریە",
+       "march-gen": "مارس",
+       "april-gen": "ئاڤریل",
+       "may-gen": "مەی",
+       "june-gen": "ژووەن",
+       "july-gen": "ژووئیە",
+       "august-gen": "ئووت",
+       "september-gen": "سپتامبر",
+       "october-gen": "ئۆکتۆبر",
+       "november-gen": "نۆڤامبر",
+       "december-gen": "دسامبر",
+       "jan": "ژانویه",
+       "feb": "فڤریە",
+       "mar": "مارس",
+       "apr": "ئاڤریل",
+       "may": "مەی",
+       "jun": "ژووەن",
+       "jul": "ژووئیە",
+       "aug": "ئووت",
+       "sep": "سپتامبر",
+       "oct": "ئۆکتۆبر",
+       "nov": "نۆڤامبر",
+       "dec": "دسامبر",
+       "pagecategories": "{{PLURAL:$1|پۆل|پۆلەگان}}",
+       "category_header": "پەڕەگان پۆل «$1»",
+       "subcategories": "ژێرپۆلەگان",
+       "category-media-header": "پەڕگەگان پۆل «$1»",
+       "category-empty": "''ئەی پۆلە ئێرەنگە ھۊچ پەڕە یا پەڕگەێگ لە خوەیا نیەگرێت.‌''",
+       "hidden-categories": "{{PLURAL:$1|پۆل شاریاێ}}",
+       "category-subcat-count": "{{PLURAL:$2|ئەی پۆلە تەنیا ژێرپۆل خوارەو لەتێیە.| ئەی پۆلە ئەی {{PLURAL:$1|ژێرپۆل|$1 ژێرپۆلەیل}} خوارەو لەتێیە، لە سەرجەم $2 گلە.}}",
+       "category-article-count": "{{PLURAL:$2|ئەی پۆلە تەنیا ئەی پەڕە لەخوەیگرتیە.|{{PLURAL:$1|پەڕە|$1 پەڕە}} لە ئەی پۆلە، لە سەرجەم $2 پەڕە ھەس.}}",
+       "category-file-count": "{{PLURAL:$2|ئەی پۆلە تەنیا ئەی پەڕە لەخوەیگرتیە.|{{PLURAL:$1|پەڕە|$1 پەڕە}} لە ئەی پۆلە، لە سەرجەم $2 پەڕە ھەس.}}",
+       "listingcontinuesabbrev": "(دریژە)",
+       "noindex-category": "پەڕە پێرستنەکریاێەگان",
+       "about": "دەربارە",
+       "newwindow": "(لە پەڕەێگ نوو واز کریەێد)",
+       "cancel": "لاوردن",
+       "moredotdotdot": "بیشتر",
+       "morenotlisted": "ئی لیستە تەواو نییە",
+       "mypage": "پەڕە",
+       "mytalk": "وەتوویش",
+       "navigation": "ڕێدەرکردن",
+       "qbfind": "پیا بکە",
+       "qbbrowse": "بگەرد",
+       "qbedit": "وێراشتە",
+       "qbpageoptions": "ئێ لاپەڕەیە",
+       "qbmyoptions": "پەڕەگانم",
+       "faq": "پرسیار و جواو (FAQ)",
+       "faqpage": "پرۆژە:پرسیار و جواو",
+       "actions": "کردارەگان",
+       "namespaces": "شوونناوەگان",
+       "variants": "شێوەزارەگان",
+       "errorpagetitle": "غەڵەت",
+       "returnto": "بەورەو ئڕاێ $1.",
+       "help": "یارمەتی",
+       "search": "مینە",
+       "searchbutton": "مینە",
+       "go": "بچوو",
+       "searcharticle": "بچوو",
+       "history": "دیروک پەڕە",
+       "history_short": "دیروک پەڕە",
+       "printableversion": "نسخەێ ئامادەێ چاپ",
+       "permalink": "بەسیار ھەمیشەیی",
+       "view": "دۊنن",
+       "edit": "وێراشتە",
+       "create": "درسکردن",
+       "delete": "لاوردن",
+       "protect": "بپیەرێزەێ",
+       "protect_change": "گووڕیان",
+       "newpage": "پەڕەێ نوو",
+       "talkpagelinktext": "وەتوویش",
+       "specialpage": "پەڕەێ تایوەت",
+       "personaltools": "ئامڕازە تاقەکەسیەگان",
+       "talk": "وەتوویش",
+       "views": "دۊننەگان",
+       "toolbox": "ئامڕازەگان",
+       "otherlanguages": "وە زوانەیل ترەک",
+       "redirectedfrom": "(ڕەوانەکریاێ لە $1)",
+       "lastmodifiedat": "ئەی پەڕە دۊاجار لە $2ی $1 نوو کریاس.",
+       "protectedpage": "پەڕەێ پاڕێزریا",
+       "jumpto": "واز بووە ئڕاێ:",
+       "jumptonavigation": "ڕێدەرکردن",
+       "jumptosearch": "مینە",
+       "aboutsite": "سەبارەت وە {{SITENAME}}",
+       "copyrightpage": "{{ns:project}}:مافەیل لەوەرگرتن",
+       "currentevents": "ڕووداوەیل ئێرەنگەیی",
+       "currentevents-url": "Project:ڕووداوەیل ئێرەنگەیی",
+       "disclaimers": "رەێکردن",
+       "disclaimerpage": "Project:رەێکردن گشتی",
+       "edithelp": "ڕێنوانی وێراشتەکردن",
+       "helppage-top-gethelp": "کۆمەک",
+       "mainpage": "دەسپێک",
+       "mainpage-description": "دەسپێک",
+       "policy-url": "پرۆژە:سیاسەت",
+       "portal": "دەرانەێ ئەوکاربەرەیل",
+       "portal-url": "Project:دەرانەێ ئەوکاربەرەیل",
+       "privacy": "سیاسەت ھەشاریەتی",
+       "privacypage": "Project:پیەرێزانن زانیاریەگان",
+       "ok": "باشە",
+       "retrievedfrom": "وەرگیریاێ لە «$1»",
+       "youhavenewmessages": "$1 دێڕی ($2).",
+       "editsection": "وێراشتە",
+       "editold": "وێراشتە",
+       "viewsourceold": "سەرچاوەگەێ بۊن",
+       "editlink": "وێراشتە",
+       "viewsourcelink": "سەرچاوەگەێ بۊن",
+       "editsectionhint": "وێراشتە کردن بەش: $1",
+       "toc": "ناوەرۆک",
+       "showtoc": "نیشانی بیە",
+       "collapsible-collapse": "جەمیەو کە",
+       "confirmable-yes": "بەڵێ",
+       "confirmable-no": "نە",
+       "feedlinks": "خۆراک:",
+       "site-atom-feed": "خواردەمەنی ئەتۆم ئڕاێ $1",
+       "page-atom-feed": "خواردەمەنی ئەتۆم ئڕاێ «$1»",
+       "red-link-title": "$1 (پەڕە بوون نەیرێد)",
+       "nstab-main": "پەڕە",
+       "nstab-user": "پەڕەێ ئەوکاربەر",
+       "nstab-special": "پەڕەێ تایوەت",
+       "nstab-project": "پەڕەێ پرۆژە",
+       "nstab-image": "پەڕگە",
+       "nstab-mediawiki": "پەیام",
+       "nstab-help": "پەڕەێ کۆمەک",
+       "nstab-category": "پول",
+       "missing-article": "دەیتابەیسەگە نەتۊەنست دەق پەڕەێگ وە ناو «$1» $2 پێیابکەێد ک ئەشێ پێیابکردیاتاد.\n\nئیە فرەتر لە مدووێ وەدۊاچین بەستیارێگ جیاواز یادیرۆک کۆنەێ پەڕەێگ سڕیاێ ڕوو دەێد.\n\nئەگەر لەێوا نیە، ئەوە گەھا گرفتێگ لەێ نەرمامێرە پێیاکردیەسە.\nتکایە ئیە وە ئاماژەدان وە ناونیشان URLـەگەیەو وە [[Special:ListUsers/sysop|وەڕێوەوەرێگ]] ڕاپۆرت بدە.",
+       "missingarticle-rev": "(نسخە#: $1)",
+       "badtitle": "ناونیشان خراو",
+       "badtitletext": "سەرناو پەڕەێ داخوازیاێ بەتاڵە، چووڵە یا سەرناوێگ نێوان-زوانی یا نێوان-ویکیئیە ک وە شێوەێگ ھەڵە بەسیار پی دەریاس.\nگەھا یەک یا چەند کاراکتر لەتێ بوود ک نیەکریەێد لە سەرناوەگان ئەوکار بوەێد.",
+       "viewsource": "سەرچاوەگەێ بۊن",
+       "yourname": "ناو ئەوکاربەری",
+       "userlogin-yourname": "ناو ئەوکاربەری",
+       "userlogin-yourname-ph": "ناو ئەوکاربەریت بنۊس",
+       "createacct-another-username-ph": "ناو ئەوکاربەریت بنۊس",
+       "yourpassword": "تێپەڕوشە",
+       "userlogin-yourpassword": "تێپەڕوشە",
+       "userlogin-yourpassword-ph": "تێپەڕوشەگەت بنۊس",
+       "createacct-yourpassword-ph": "تێپەڕوشەێگ بنۊس",
+       "yourpasswordagain": "دیسان تێپەڕوشەگە بنۊسەو:",
+       "remembermypassword": "تێپەروشەگەم لەسەر ئەی کامپیوترە پاشدەس بکە (ئەو پەڕی $1 {{PLURAL:$1|ڕووژ}}ە)",
+       "login": "بچووە ناو",
+       "nav-login-createaccount": "بچووە ناو / ھەژمار درس بکە",
+       "userlogin": "بچووە ناو / ھەژمار درس بکە",
+       "userloginnocreate": "بچووە ناو",
+       "logout": "بچووە دەیشت",
+       "userlogout": "بچووە دەرەو",
+       "nologin": "ھەژمار نەێری؟  $1.",
+       "nologinlink": "ھەژمارێگ درس بکە",
+       "createaccount": "ھەژمار درس بکە",
+       "gotaccount": "لێرە ھەژمار دێرید؟ $1.",
+       "gotaccountlink": "بچووە ناو",
+       "userlogin-resetlink": "وردەکاریەیل ناوچینت لە ھۊرەو بردیتە؟",
+       "createacct-emailrequired": "ناونیشان ئیمەیل",
+       "createaccountreason": "هووکار:",
+       "createacct-reason": "هووکار",
+       "nouserspecified": "بایەد ناو ئەوکاربەری دابین بکەی.",
+       "login-userblocked": "ئەێ ئەوکاربەرە بلاک کریاێە. چۊنە ناو قەدەغەنە.",
+       "mailmypassword": "تێپەڕوشەێگ نوو بنارە ئڕاێ ئیمەیلەگەم",
+       "accountcreated": "هەژمار درس کریا",
+       "loginlanguagelabel": "زوان: $1",
+       "pt-login": "بچووە ناو",
+       "pt-login-button": "بچووە ناو",
+       "oldpassword": "تێپەڕوشەێ قەدیمی:",
+       "newpassword": "تێپەڕوشەێ نوو:",
+       "retypenew": "تێپەڕوشەێ نوو دوبارە بنۊسەو:",
+       "passwordreset-username": "ناو ئەوکاربەری:",
+       "changeemail-none": "(هۊچ)",
+       "bold_sample": "دەق پڕرەنگ",
+       "bold_tip": "دەق پڕرەنگ",
+       "italic_sample": "دەق کەژ",
+       "italic_tip": "دەق کەژ",
+       "link_sample": "سەردێڕ بەسیار",
+       "link_tip": "بەسیار ناوخوەێ",
+       "extlink_sample": "http://www.example.com سەردێڕ بەسیار",
+       "extlink_tip": "بەسیار دەرەکی (لەھۊرت بوود نۊسین پێشگر http:// )",
+       "headline_sample": "دەق سەردێڕ",
+       "headline_tip": "سەردێڕ ئاست ۲",
+       "nowiki_sample": "لە ئیرە دەق نەڕازانیاێ تێ‌بخە",
+       "nowiki_tip": "لەوەرچاو نەگرتن داڕشانەگان ویکی",
+       "image_tip": "وێنەێ ناو دەق",
+       "media_tip": "بەسیار پەڕگە",
+       "sig_tip": "ئیمزاگەت وەرد مۆر ڕێکەفت",
+       "hr_tip": "هێڵ ئاسوویی (کەم ئەوکاری بوەین)",
+       "summary": "کورتەێ وێراشتە:",
+       "minoredit": "ئیە وێراشتەێگ بۊچگە",
+       "watchthis": "ئەی پەڕە بخە ژێر چاودێری",
+       "savearticle": "پەڕەگە پاشدەس بکە",
+       "preview": "پێشدۊنن",
+       "showpreview": "پێشدۊنن نیشان بدە",
+       "showdiff": "گووڕانکاریەگان نیشان بدە",
+       "anoneditwarning": "'''ھۆشیار بوو:''' نەچیتەسە ناو.\nناونیشان IP تۆ لە دیرۆک وێراشتەگان ئەی پەڕەیە تۆمار کریەێد.",
+       "newarticle": "(نوو)",
+       "newarticletext": "وە دۊاێ بەستیار پەڕەێگ کەفتیە کە ھێمان درس نەکریاس.\nئڕاێ درس کردن پەڕەگە، لە چوارچووەگەی خوارەو دەس بکە وە تایپ کردن. (ئڕاێ زانیاری فرەتر\n[$1 یارمەتی] بۊنە).\nئەگەر وە ھەڵە ھاتیدە ئێرە، لە سەر دوگمەێ '''back''' وێبگەڕەگەت کلیک بکە.",
+       "noarticletext": "ئێرەنگە ھۊچ دەقێگ لەی پەڕە نیە.\nتۊەنید ئڕاێ ئەی ناوە لە [[Special:Search/{{PAGENAME}}|پەڕەگان ترەک مینە بکەید]]، <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} لە پێرستەگان مینە بکەید]، یا [{{fullurl:{{FULLPAGENAME}}|action=edit}} ئەی پەڕەیە وێراشتە بکەید]</span>.",
+       "noarticletext-nopermission": "ئێرەنگە ھۊچ دەقێگ لە ئەی پەڕەیە نیە.\nتۊەنی لە پەڕەگان تر [[Special:Search/{{PAGENAME}}|ئەڕاێ ئەی ناوە بگەڕی]]، یا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} لە لۆگە پەیوەندیدارەگان بگەڕی]</span>، وەڵێم نیەتۊەنی ئەی پەڕەیە درس بکەی.",
+       "updated": "(وەڕووژکریا)",
+       "previewnote": "'''لە ھۊرت نەچوود ئیە تەنیا پێشدۊننە.'''\nگووڕانکاریەگانت ھێمان پاشدەس نەکریانە!",
+       "editing": "وێراشتەکردن $1",
+       "editingsection": "وێراشتەکردن: $1 (بەش)",
+       "yourdiff": "جیاوازیەیل",
+       "templatesused": "ئەو {{PLURAL:$1|داڕێژە ک لە ئەی پەڕە ئەوکاربریاێە|داڕێژەیلە ک لە ئەی پەڕە ئەوکاربریانە}}:",
+       "template-protected": "(پیەرێزیاێ)",
+       "template-semiprotected": "(نیوەپیەرێزیاێ)",
+       "hiddencategories": "ئەی پەڕە ئەندام {{PLURAL:$1|١ پۆل شاریاێە|$1 پۆل شاریاێە}}:",
+       "permissionserrorstext-withaction": "لەسەر ئەی {{PLURAL:$1|مدوو|مدووەیل}} خوارەو، دەسەڵات نەێرید ئەڕاێ $2:",
+       "recreate-moveddeleted-warn": "'''ھووشیار بوو: لەپسا پەڕەێگ درس کەید ک لە پێشەو سڕیاێە.'''\n\nئیە لەوەر چاو بگرە کە وێراشتەکردن ئەی پەڕە وەقازاشتە یا نە.\nپێرست سڕاندن و جیوەجیکردن ئەی پەڕە ئڕاێ ئاسانی لێرە ھاتیە:",
+       "moveddeleted-notice": "ئەی پەڕەیە سڕیاێە.\nپێرست سڕاندن و جیوەجیکردن ئڕاێ پەڕەگە لە ژێرەو نیشان دەریاس.",
+       "content-model-wikitext": "ویکیدەق",
+       "content-model-text": "دەق ساکار",
+       "content-model-javascript": "جاڤاسکریپت",
+       "post-expand-template-inclusion-warning": "'''ئاگاداری:''' قەوارەێ داڕێژەگە فرە گەورەس.\nپوورێد بڕێگ لە داڕێژەگان لەخوەیەو نەگرێتەو.",
+       "post-expand-template-inclusion-category": "ئەو لاپەڕەیلە ک قەوارەێ داڕێژەێەیل تێان لە ھەد تێپەڕۊە",
+       "post-expand-template-argument-warning": "'''ئاگاداری:''' ئەی پەڕە لانکەم یەک داڕێژە لەتێیە کە قەوارەێ فرە گەورەس.<br />\nئەی وەڵگە (argument) ئەوکار نەخریاێە.",
+       "post-expand-template-argument-category": "ئەو پەڕەیلێگ ک داڕێژەێ ئەوکارنەخریاێ لەتێیانە",
+       "viewpagelogs": "لۆگەگان ئەی پەڕەیە بۊن",
+       "currentrev-asof": "دۊایین نسخە $1",
+       "revisionasof": "وازخوەنی نسخەێ $1",
+       "revision-info": "نسخەێ $1 لە لایەن $2",
+       "previousrevision": "→نسخەێ کۆنەتر",
+       "nextrevision": "نسخەێ نووتر←",
+       "currentrevisionlink": "نسخەێ ئێرەنگە",
+       "cur": "ئێرەنگە",
+       "next": "پاش",
+       "last": "پێشین",
+       "page_first": "یەکمین",
+       "page_last": "دۊایین",
+       "histlegend": "ھەڵوژانن جیاوازی: نسخەگان ئڕاێ ھەڵسەنگانین دیاری بکە و ئینتر یا دوگمەگەێ خوارەو بکوتە.<br />\nڕێنوانی: '''({{int:cur}})''' = جیاوازی وەگەرد دۊایین نسخە، '''({{int:last}})''' = جیاوازی وەگەرد نسخەێ پێشین، '''{{int:minoreditletter}}''' = وێراشتەێ بۊچگ.",
+       "history-fieldset-title": "گەشت دیرۆک",
+       "history-show-deleted": "تەنیا سڕیاێەگان",
+       "histfirst": "کۆنەترین",
+       "histlast": "نووترین",
+       "historyempty": "(پووچ)",
+       "rev-delundel": "نیشان بدە/بشارەو",
+       "revdelete-show-file-submit": "بەڵێ",
+       "revdel-restore": "دیمەنەگەێ بگووڕنە",
+       "mergehistory-reason": "هووکار:",
+       "revertmerge": "لەیەک جیاکردن",
+       "history-title": "دیرۆک وازخوانیەگان «$1»",
+       "lineno": "ھێڵ $1:",
+       "compareselectedversions": "نسخە ھەڵوژیاێەگان ھەڵبسەنگنە",
+       "editundo": "بەتاڵکردن",
+       "searchresults": "ئاکامەگان مینە",
+       "searchresults-title": "ئاکامەگان مینە ئڕاێ «$1»",
+       "prevn": "{{PLURAL:$1|$1}}ی پێشین",
+       "nextn": "{{PLURAL:$1|$1}} دۊاتر",
+       "prevn-title": "$1 {{PLURAL:$1|ئەنجام}} پێشین",
+       "nextn-title": "$1 {{PLURAL:$1|ئەنجام}} دۊاتر",
+       "shown-title": "لە هەر پەڕەێگ $1 {{PLURAL:$1|ئەنجام}} نیشان‌ بدە",
+       "viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) بۊنە",
+       "searchmenu-exists": "'''پەڕەێگ وە ناو «[[:$1]]» لە ئەی ویکیە ھەس.'''",
+       "searchmenu-new": "'''لە ئەی ویکیە پەڕەێ « [[:$1]] » درس بکە!'''",
+       "searchprofile-articles": "پەڕەگان ناوەڕۆکی",
+       "searchprofile-images": "مالتیمیدیا",
+       "searchprofile-everything": "گشت چشت",
+       "searchprofile-advanced": "پێشکەفتێ",
+       "searchprofile-articles-tooltip": "مینە لە $1",
+       "searchprofile-images-tooltip": "مینە ئڕاێ پەڕگەگان",
+       "searchprofile-everything-tooltip": "لە گشت ناوەرۆکێگ مینە بکە (تەنانەت پەڕەگان وتوویشیش)",
+       "searchprofile-advanced-tooltip": "مینە لەناو شوونناوە دڵخوازەگان",
+       "search-redirect": "(ڕەوانەکەر $1)",
+       "search-section": "(بەش $1)",
+       "search-suggest": "ئایا مەبەستت ئیە بۊ: $1",
+       "search-interwiki-more": "(زوورم)",
+       "searchrelated": "پێوەس",
+       "searchall": "گشت",
+       "search-nonefound": "ھۊچ ئاکامێگ کە وە داواکاریەگەت بخوەێد پێیا نۊ.",
+       "powersearch-toggleall": "گشت",
+       "mypreferences": "ھەڵوژیاێەیل",
+       "prefs-skin": "پووستە",
+       "prefs-editing": "وێراشتەکردن",
+       "searchresultshead": "مینە",
+       "timezoneregion-africa": "ئافریقا",
+       "timezoneregion-america": "ئامریکا",
+       "timezoneregion-asia": "ئاسیا",
+       "timezoneregion-australia": "ئۆسترالیا",
+       "timezoneregion-europe": "ئورووپا",
+       "timezoneregion-indian": "ئوقیانووس هند",
+       "prefs-searchoptions": "جوورسن",
+       "youremail": "ئیمەیل",
+       "yourrealname": "ناو ڕاسەگانی:",
+       "yourlanguage": "زوان:",
+       "email": "ئیمەیل",
+       "prefs-help-email": "دانان ناونیشان ئیمەیل دڵخوازانەس، وەڵێم ئەگەر تێپەڕوشەگەت لە ھۊرتەو بچوود، ئەڕاێ نووکردن تێپەڕوشە ھەوەجە پی ھەس.",
+       "prefs-help-email-others": "ھەرلەێوا تۊەنی ھەڵوژانید ک ئەوکاربەرەیل تر، لە ڕێگەێ پەڕەێ ئەوکاربەریەگەت یا وەتوویشەگەت، بێ ئاشکراکردن کەسایەتیت، پێوەندی وەگەردت بگرن.\nئیمەیلەگەت تا کاتێگ ک کەسێگ وەگەردت پێوەندی بگرێد، ئاشکرا نیەود.",
+       "prefs-editor": "وێراشتەکەر",
+       "group-all": "(گشت)",
+       "right-read": "خوەنین پەڕەگان",
+       "right-edit": "وێراشتەکردن پەڕەگان",
+       "newuserlogpage": "پێرست درسکردن ئەوکاربەر",
+       "action-edit": "ئەی پەڕە وێراشتە بکە",
+       "nchanges": "$1 {{PLURAL:$1|گووڕانکاری}}",
+       "recentchanges": "دۊایین گووڕانکاریەیل",
+       "recentchanges-legend": "ھەڵوژیاێەگان دۊایین گووڕانکاریەگان",
+       "recentchanges-feed-description": "شوون دۊایین گووڕانکاریەگان ئەی ویکیە بگرە لە ئەی «خواردەمەنی»ەو.",
+       "recentchanges-label-newpage": "ئەی وێراشتەیە لاپەڕەێگ نوو درس کرد",
+       "recentchanges-label-minor": "ئییە وێراشتەێگ بۊچگە",
+       "recentchanges-label-bot": "ئەی وێراشتە لە لایەن بۆتێگ پێک هاتیە",
+       "recentchanges-label-unpatrolled": "ئەی وێراشتەیە ھێمان پاس نەدریاس",
+       "rcnotefrom": "لە خوارەو گووڕانکاریەگان لە '''$2'''ەو (تا '''$1''' نیشاندەریاس).",
+       "rclistfrom": "گووڕانکاریە نووەگان نیشان بدە وە دەسپێکردن لە $3 $2",
+       "rcshowhideminor": "وێراشتە بۊچگەیل $1",
+       "rcshowhidebots": "بۆتەگان $1",
+       "rcshowhideliu": "ئەوکاربەرە تۆمارکریاێەگان $1",
+       "rcshowhideanons": "ئەوکاربەرە نەناسیاوەگان $1",
+       "rcshowhidepatr": "وێراشتە نەگەردیاێەگان $1",
+       "rcshowhidemine": "وێراشتەگانم $1",
+       "rclinks": "دۊایین $1 گووڕانکاری $2 ڕووژ ویەردە نیشان بدە<br />$3",
+       "hist": "دیرۆک",
+       "hide": "بشارەو",
+       "minoreditletter": "بێجگە",
+       "rc-enhanced-expand": "وردەکاریەگان نیشان بدە",
+       "rc-enhanced-hide": "وردەکاریەگان بشارەو",
+       "recentchangeslinked": "گووڕانکاریە پەیوەندیدارەگان",
+       "recentchangeslinked-toolbox": "گووڕانکاری پەیوەندیدارەگان",
+       "recentchangeslinked-title": "گووڕانکاریە پەیوەندیدارەگان وە \"$1\" ـەو",
+       "recentchangeslinked-summary": "ئیە پێرستێگ لە گووڕانکاریەگان دۊایی لە ئەو پەڕەیلەسە ک بەسیار دێرن لە پەڕەێگ دیاریکریاێ (یا ئڕاێ ئەندامەگان پۆلێگ دیاریکریاێ)\nپەڕەگان [[Special:Watchlist|پێرست چاودێریەگەت]] '''پڕرەنگن'''.",
+       "recentchangeslinked-page": "ناو پەڕە:",
+       "recentchangeslinked-to": "وەجیگەێ ئەوە، گووڕانکاریەگان ئەو پەڕەیلە نیشان بدە ک بەسیار وە پەڕەی دیاریکریاێ دێرن.",
+       "upload": "پەڕگەێگ بار بکە",
+       "uploadlogpage": "پێرست بارکردن",
+       "filesource": "سەرچاوە:",
+       "license": "مۆڵەتناوە:",
+       "license-header": "مۆڵەتناوە",
+       "imgfile": "پەڕگە",
+       "listfiles": "پێرست پەڕگەیل",
+       "listfiles_name": "ناو",
+       "listfiles_user": "ئەوکاربەر",
+       "listfiles_count": "وەشانەیل",
+       "listfiles-latestversion-yes": "ئەرێ",
+       "listfiles-latestversion-no": "نە",
+       "file-anchor-link": "پەڕگە",
+       "filehist": "دیرۆک پەڕگە",
+       "filehist-help": "کرتە بکە لەسەر یەکێگ لە ڕێکەوت/کاتەگان ئڕاێ دۊنن پەڕگەگە وە ئەو شێوەێ لەو کاتە بۊە.",
+       "filehist-revert": "وەرۊپاش کردن",
+       "filehist-current": "دەق ئێرەنگەیی",
+       "filehist-datetime": "ڕێکەفت/سات",
+       "filehist-thumb": "بەن کلگی",
+       "filehist-thumbtext": "بەن کلگی ئڕاێ نسخەێ  $1",
+       "filehist-user": "ئەوکاربەر",
+       "filehist-dimensions": "ئەنازە",
+       "filehist-comment": "شرۆڤە",
+       "imagelinks": "ئەوکاربردن پەڕگە",
+       "linkstoimage": "لە ئەی {{PLURAL:$1|پەڕەێ خوارەو بەسیار دریانە|$1 پەڕەێ خوارەو بەسیار دریانە}} ئڕاێ ئەی پەڕگە:",
+       "nolinkstoimage": "‌لاپەڕەێگ نیە ک بەسیار وە ئەی پەڕگە بیاشتاد.",
+       "sharedupload-desc-here": "ئەی پەڕگە لە $1ەوەسە و پووڕێد لە پرۆژەگان دیگەیش ئەوکار بیاتاد.\nپێناسەگەێ لەسەر [$2 پەڕەێ شیەوکردن پەڕگەگە] لە خوارەو نیشان دریاس.",
+       "randompage": "پەڕەێگ وەناکاو",
+       "statistics": "ئامارەگان",
+       "statistics-pages": "پەڕەیل",
+       "pageswithprop-submit": "بچوو",
+       "brokenredirects-edit": "وێراشتە",
+       "prefixindex": "گشت پەڕەگان وە پێشگرەو",
+       "protectedpages-page": "پەڕە",
+       "protectedpages-unknown-timestamp": "نەناسریاێ",
+       "protectedpages-unknown-performer": "ئەوکاربەر نەناسریاێ",
+       "listusers": "پێرست ئەوکاربەرەیل",
+       "usercreated": "لە $1، $2 {{GENDER:$3|درس کریاس}}",
+       "newpages": "پەڕە نووەگان",
+       "newpages-username": "ناو ئەوکاربەری:",
+       "move": "جیوەجیکردن",
+       "pager-newer-n": "{{PLURAL:$1|یەکێگ نووتر|$1 نووتر}}",
+       "pager-older-n": "{{PLURAL:$1|یەکێگ کۆنەتر|$1ی کۆنەتر}}",
+       "booksources": "سەرچاوەگان کتاو",
+       "booksources-search-legend": "مینەێ سەرچاوەێ کتاو بکە",
+       "booksources-search": "گەردین",
+       "log": "لۆگەگان",
+       "allpages": "گشت پەڕەگان",
+       "allarticles": "گشت پەڕەگان",
+       "allpagessubmit": "بچوو",
+       "categories": "پۆلەگان",
+       "linksearch-ok": "مینە",
+       "linksearch-line": "$1 بەسیارپێ‌دەریاێە لە $2",
+       "listgrouprights-rights": "مافەیل",
+       "listgrouprights-members": "(پێرست ئەندامەگان)",
+       "trackingcategories-name": "ناو پەیام",
+       "emailuser": "ئیمەیل بنارە ئەڕاێ ئەی ئەوکاربەرە",
+       "emailusername": "ناو ئەوکاربەری:",
+       "emailmessage": "پەیام:",
+       "emailsend": "کل بکە",
+       "watchlist": "پێرست چاودێری",
+       "mywatchlist": "پێرست چاودێری",
+       "watchlistfor2": "ئڕاێ $1 $2",
+       "unwatch": "لاوردن چاودێری",
+       "watchlist-details": "بێجگە پەڕەگان وەتوویش، {{PLURAL:$1|$1 پەڕە}} لە پێرست چاودێریەگەتە.",
+       "wlshowlast": "دۊایین $1 دەمژمار $2 ڕووژ  نیشان بدە",
+       "watchlist-options": "ھەڵوژیاێەگان پێرست چاودێری",
+       "actioncomplete": "کردارەگە وە ئەنجام رەسی",
+       "actionfailed": "کردارەگە سەرنەکەفت",
+       "dellogpage": "پێرست لاوردنەگان",
+       "rollbacklink": "گەڕانن",
+       "protectlogpage": "پێرست پیەرێزکردن",
+       "protectedarticle": "«[[$1]]» پیەرێزان",
+       "restriction-edit": "وێراشتە",
+       "undeletelink": "بۊنە/بارەوەێ",
+       "undeleteviewlink": "دۊنن",
+       "undelete-search-submit": "مینە",
+       "undelete-show-file-submit": "بەڵێ",
+       "namespace": "شوونناوەگان",
+       "invert": "ھەڵوژیاێەگان وەزێزەو بکە",
+       "contributions": "بەشدارییەگان {{GENDER:$1|ئەوکاربەر}}",
+       "contributions-title": "بەشداریەگان ئەوکاربەر $1",
+       "mycontris": "بەشداریەیل",
+       "contribsub2": "ئڕاێ {{GENDER:$3|$1}} ($2)",
+       "uctop": "(ئێرەنگە)",
+       "month": "لە مانگ (و پێشتر لەوە):",
+       "year": "لە ساڵ (و پێشتر لەوە):",
+       "sp-contributions-newbies": "تەنیا بەشداریەگان ئەوکاربەرە تازەگان نیشان بدە",
+       "sp-contributions-blocklog": "پێرست بەساێن",
+       "sp-contributions-uploads": "بارکردنەگان",
+       "sp-contributions-logs": "پێرستەگان",
+       "sp-contributions-talk": "وەتوویش",
+       "sp-contributions-search": "مینە کردن ئڕاێ بەشداریەگان",
+       "sp-contributions-username": "ناونیشان ئایپی (IP) یا ناو ئەوکاربەری:",
+       "sp-contributions-toponly": "تەنیا ئەو وێراشتەیلە نیشانبدە ک دۊایین نسخەن",
+       "sp-contributions-submit": "مینە بکە",
+       "whatlinkshere": "بەسیارەگان وە ئێرە",
+       "whatlinkshere-title": "ئەو پەڕەیلە ک وە «$1» بەسیار دێرن",
+       "whatlinkshere-page": "پەڕە:",
+       "linkshere": "ئەی پەڕەیلە بەستیار دێرن وە '''[[:$1]]''':",
+       "nolinkshere": "هۊچ لاپەڕەێگ بەسیار وە '''[[:$1]]''' نەێرێد .",
+       "isredirect": "پەڕەێ ڕەوانەکەر",
+       "istemplate": "ناوتەپیاێەگان (transclusions)",
+       "isimage": "بەسیار پەڕگە",
+       "whatlinkshere-prev": "{{PLURAL:$1|پێشتر|$1 پێشتر}}",
+       "whatlinkshere-next": "{{PLURAL:$1|دیگە|$1 تر}}",
+       "whatlinkshere-links": "← بەسیارەگان",
+       "whatlinkshere-hideredirs": "ڕەوانەکەرەگان $1",
+       "whatlinkshere-hidetrans": "$1 ناوتەپیاێەگان (transclusions)",
+       "whatlinkshere-hidelinks": "$1 بەسیار",
+       "whatlinkshere-hideimages": "$1 بەسیارەگان پەڕگە",
+       "whatlinkshere-filters": "پاڵووینکەرەگان",
+       "ipboptions": "٢ دەمژمار:2 hours,١ رووژ:1 day,٣ رووژ:3 days,١ ھەفتە:1 week,٢ ھەفتە:2 weeks,١ مانگ:1 month,٣ مانگ:3 months,٦ مانگ:6 months,١ ساڵ:1 year,بێ‌سنوور:infinite",
+       "ipblocklist": "ئەوکاربەرە بەسریاێەگان",
+       "ipblocklist-submit": "مینە",
+       "blocklink": "بەسان",
+       "unblocklink": "بەسان لاوە",
+       "change-blocklink": "بەسان بگووڕنەو",
+       "contribslink": "بەشداریەیل",
+       "blocklogpage": "پێرست بەساێن",
+       "blocklogentry": "[[$1]] ئڕاێ ماوەێ $2 بەسان $3",
+       "block-log-flags-nocreate": "درسکردن ھەژمار ناچالاک کریا",
+       "movelogpage": "پێرست جیوەجیکردن",
+       "revertmove": "وەرۊپاش کردن",
+       "export": "ھەناردن پەڕەگان",
+       "allmessagesname": "ناو",
+       "allmessagesdefault": "دەق بنەڕەتی (Default)",
+       "allmessages-filter-all": "گشت",
+       "allmessages-language": "زوان",
+       "allmessages-filter-submit": "بچوو",
+       "allmessages-filter-translate": "ھەڵگەردانن",
+       "thumbnail-more": "گەورەکردن",
+       "thumbnail_error": "هەڵە لە کات درست‌کردن بەن کلگی: $1",
+       "tooltip-pt-userpage": "پەڕەێ ئەوکاربەریەگەت",
+       "tooltip-pt-mytalk": "پەڕەێ وەتوویشەگەت",
+       "tooltip-pt-preferences": "ھەڵوژیاێەیلت",
+       "tooltip-pt-watchlist": "پێرست ئەو پەڕەیل ک چاودێری لە گووڕانکاریەگانیان کەید",
+       "tooltip-pt-mycontris": "پێرست بەشداریەیلت",
+       "tooltip-pt-login": "پێشنیار ئەوپیت کریەێد بچیدە ناو؛ ھەرچەن زووری نیە",
+       "tooltip-pt-logout": "دەرچین",
+       "tooltip-ca-talk": "وەتوویش سەبارەت وە ناوەڕۆک پەڕە",
+       "tooltip-ca-edit": "تۊەنی وێراشتەێ ئەی پەڕەیە بکەید. تکایە وەر لە پاشدەسکردن دوگمەێ پێشدۊنن ئەوکاربوەێن.",
+       "tooltip-ca-addsection": "بەشێگ نوو دەس پی بکە",
+       "tooltip-ca-viewsource": "ئەی پەڕە پیەرێزیاێە.\nتۊەنی سەرچاوەگەێ بۊنید",
+       "tooltip-ca-history": "نسخەگان پێشین ئەی پەڕە",
+       "tooltip-ca-protect": "ئەی پەڕە بپارێزەو",
+       "tooltip-ca-delete": "ئەی پەڕەیە بسڕەو",
+       "tooltip-ca-move": "ئەی پەڕە جیوەجی بکە",
+       "tooltip-ca-watch": "ئەی پەڕە بخە سەر پێرست چاودێریت",
+       "tooltip-ca-unwatch": "ئەی پەڕە لە پێرست چاودێریەگەت لابدە",
+       "tooltip-search": "لە {{SITENAME}} مینە بکە",
+       "tooltip-search-go": "ئەگەر پووڕێد بچوو پەڕەێگ ک وە تەواوی ئەی ناوە بیاشتاد",
+       "tooltip-search-fulltext": "لە پەڕەگان مینە بکە ئڕا ئەی دەقە",
+       "tooltip-p-logo": "دۊنن پەڕەێ دەسپێک",
+       "tooltip-n-mainpage": "سەردان پەڕەێ سەرەکی بکە",
+       "tooltip-n-mainpage-description": "سەردان پەڕەێ سەرەکی بکە",
+       "tooltip-n-portal": "سەبارەت وە پڕۆژەگە، چە تۊەنی بکەید، لە کوورە چشتەگان پێیا بکەید",
+       "tooltip-n-currentevents": "سەبارەت وە ڕووداوەیل ئێرەنگەیی زانیاری پێشینە وەدەس بارین",
+       "tooltip-n-recentchanges": "پێرست دۊایین گووڕانکاریەیل لە ئەی ویکیە",
+       "tooltip-n-randompage": "پەڕەێ وەناکاوێگ نیشان بدە",
+       "tooltip-n-help": "جێگەێ ئەورەسین",
+       "tooltip-t-whatlinkshere": "پێرست گشت پەڕەگان ویکی ک بەسیار دریانە وە ئێرە",
+       "tooltip-t-recentchangeslinked": "دۊایین گووڕانکاریەگان لە ئەو پەڕەیلە ک ئەی پەڕە وەپیان بەسیار دێرد",
+       "tooltip-feed-atom": "خواردەمەنی ئەتۆم ئڕاێ ئەی پەڕە",
+       "tooltip-t-contributions": "پێرست بەشداریەگان ئەی ئەوکاربەر",
+       "tooltip-t-emailuser": "ئیمەیلێگ بنارە ئڕاێ ئەی ئەوکاربەرە",
+       "tooltip-t-specialpages": "پێرست گشت پەڕە تایوەتەگان",
+       "tooltip-t-print": "نسخەێ چاپی ئەی پەڕە",
+       "tooltip-t-permalink": "بەسیار ھەمیشەیی وە ئەی وەشان لە ئەی پەڕە",
+       "tooltip-ca-nstab-main": "دۊنن پەڕەێ ناوەڕۆک",
+       "tooltip-ca-nstab-user": "پەڕەێ ئەوکاربەر تەماشا بکە",
+       "tooltip-ca-nstab-special": "ئیە پەڕەێگ تایبەتە، نیەتۊەنی خوەێ ئەی پەڕە وێراشتە بکەید",
+       "tooltip-ca-nstab-project": "دۊنن پەڕەێ پرۆژە",
+       "tooltip-ca-nstab-image": "دۊنن پەڕەێ پەڕگە",
+       "tooltip-ca-nstab-template": "دۊنن قاڵبەگە",
+       "tooltip-ca-nstab-category": "پەڕەێ پۆلەگە بۊن",
+       "tooltip-minoredit": "ئیە وەک گووڕانکاریەێگ بۊچگ دیاریەو بکە",
+       "tooltip-save": "گووڕانکاریەگان خوەت پاشدەس بکە",
+       "tooltip-preview": "پێشدۊنن گووڕانکاریەگان، تکایە پێش لە پاشدەس کردن، ئیە ئەوکار بوەین.",
+       "tooltip-diff": "نیشاندان گووڕانکارییەگانت لە دەقەگە",
+       "tooltip-compareselectedversions": "جیاوازیەگان دو دەق دیاریکریاێەگەێ ئەی پەڕە بۊنە.",
+       "tooltip-watch": "ئەی پەڕە بخە سەر پێرست چاودێریت",
+       "tooltip-upload": "دەسکردن وە بارکردن",
+       "tooltip-rollback": "«گەڕانن» گووڕانکاری/گووڕانکاریەگان ئەی پەڕە وە یەک کرتە گەڕانێدەو ئڕاێ دۊایین بەشداریکەر",
+       "tooltip-undo": "«بەتاڵکردن» ئەی گووڕانکاریە گووڕنێدەو و فۆرم وێراشتەکردن لە شێوەی پێشدۊنن وازەو کەێد. ئەی جوورە پووڕێد مدووێگ لە کورتەێ وێراشتە بنۊسریەێد.",
+       "tooltip-summary": "کۆرتەێگ لە لی بنۊسە",
+       "pageinfo-redirectsto-info": "زانیاری",
+       "pageinfo-contentpage-yes": "بەڵێ",
+       "pageinfo-protect-cascading-yes": "بەڵێ",
+       "previousdiff": "→ گووڕانکاری کۆنەتر",
+       "nextdiff": "گووڕانکاری نووتر ←",
+       "file-info-size": "$1 × $2 پیکسێل، قەوارەێ پەڕگە: $3، جوور MIME: $4",
+       "file-nohires": "رەزۆلوشن سەرتر لەیە لە وەردەستەو نیە.",
+       "svg-long-desc": "پەڕگەێ SVG، وە ناو $1 × $2 پیکسڵ، قەوارەێ پەڕگە: $3",
+       "show-big-image": "پەڕگەێ رەسەن",
+       "ilsubmit": "مینە",
+       "bad_image_list": "فۆرمەت وە شێوەێ خوارەسە:\n\nتەنیا ئەو باوەتەیلە ک پێرست کریانە (واتە ئەو ھێڵەیلە ک وە * دەس پێ کەن) لە وەر چاون.\nیەکەم بەسیار لە سەر ھەر ھێڵێگ، ئەشێ بەسیار فایلێگ خراو بوود.\nگشت بەسیارەگان دۊاێ ئەوە لە ئەو ھێڵە، چۊ نائاسایی(ئستسنا) تیەنە ئەژمار.",
+       "metadata": "متادەیتا",
+       "metadata-help": "ئەی پەڕگە زانیاری فرەێگ لەتێیە، ک گەھا دۊردۊن (camera) یا ئسکەنێر (scanner) خستۊە سەری. ئەگەر پەڕگەگە لە حاڵەتە سەرەتاییەگەیەو دەسکاری کریاۊد، گاھەس بڕێگ لە وردەکاریەیل، زانیارەگان وێنە گووڕیاێەگە وە تەواوی نیشان نەدەن.",
+       "metadata-fields": "کاڵگەگان (fields) میتادەیتاێ وێنە ک لە ئەی پەیامە وەڕزارەو کریانە، کاتێگ جەدوەل میتادەیتا کووکریاێ بوود لە پەڕەی وێنە نیشان دەریەن.\nکاڵگەگان تر لە حاڵەتی بنەڕەتی شاریاێن.\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-imagedescription": "ناونیشان وێنە",
+       "exif-pixelxdimension": "بەرزی وێنە",
+       "exif-flash": "فلەش",
+       "exif-keywords": "کلیل‌وشەیل",
+       "exif-writer": "نۊسەر",
+       "exif-languagecode": "زوان",
+       "exif-nickname": "ناو غەیرڕەسمی وێنەگە",
+       "exif-lightsource-0": "نەناسریاێ",
+       "exif-lightsource-4": "فلەش",
+       "exif-focalplaneresolutionunit-2": "ئینچ",
+       "exif-contrast-1": "نەرم",
+       "exif-contrast-2": "ڕەق",
+       "exif-sharpness-1": "نەرم",
+       "exif-sharpness-2": "ڕەق",
+       "exif-subjectdistancerange-0": "نەناسریاێ",
+       "exif-gpsdestdistance-m": "مایل",
+       "exif-dc-rights": "مافەیل",
+       "exif-iimcategory-hth": "تەندروسی",
+       "exif-iimcategory-lab": "کارگەری",
+       "exif-iimcategory-pol": "ڕامیاری",
+       "exif-iimcategory-rel": "دین و باوەڕ",
+       "exif-iimcategory-sci": "زانست و تێکنۆلۆژی",
+       "exif-iimcategory-spo": "وەرزش",
+       "exif-iimcategory-wea": "ئاو و هەوا",
+       "namespacesall": "گشت",
+       "monthsall": "گشت",
+       "confirm_purge_button": "باشە",
+       "confirm-watch-button": "باشە",
+       "confirm-unwatch-button": "باشە",
+       "semicolon-separator": "؛&#32;",
+       "imgmultigo": "بچوو!",
+       "img-lang-go": "بچوو",
+       "table_pager_limit_submit": "بچوو",
+       "watchlisttools-view": "گووڕانکاریە پەیوەندیدارەگان بۊنە",
+       "watchlisttools-edit": "پێرست چاودێری بۊنە و وێراشتەێ بکە",
+       "watchlisttools-raw": "پێرست خام چاودێریەگان وێراشتە بکە",
+       "duplicate-defaultsort": "'''ئاگاداری''' کلیل بنەڕەتی \"$2''، کلیل بنەڕەتی \"$1\" بەتاڵ کەێد.",
+       "version": "وەشان",
+       "version-skin-colheader-name": "پووستە",
+       "version-ext-colheader-credits": "نۊسەرەیل",
+       "version-software-version": "وەشان",
+       "fileduplicatesearch-submit": "مینەکردن",
+       "specialpages": "پەڕە تایوەتەگان",
+       "external_image_whitelist": " #ئەی ھێڵە ھەر وە ئەی جوورە ک ھەس، وەر بدەین<pre>\n#رستە وەنەزمەگان (regular expression) (تەنیا ئەو بەشە کە لە نێوان // جێ گرێد) لە خوارەو بنەین\n#ئیانە وەرد نیشانی ئینترنتی وێنەیل دەرەکی بەسیار دریای (hotlinked) چەترگیەن (تەتبیق دریەن).\n#ئەوانە ک چەترگیانە، چۊ وێنە نیشان دریەن؛ وەگەرنە تەنیا بەسیارێگ وە وێنە نیشان دەریەێد.\n#ئەو ھێڵەیلە وە # دەس پێ کەن، جوور شرۆڤە (comments) گیریەنە وەر چەو\n#ئەی ھێڵەیلە وە گەورە و بۊچگی پیتەگان ھەستیارە (case-insensitive)\n\n#گشت رستە وەنەزمەگان (regex) لە ژۊەر ئەی ھێڵە بنەین. ئەی ھێڵ ھەر وە ئەی جوورە کە ھەس، وەر بدەین</pre>",
+       "tag-filter": "پاڵووین [[Special:Tags|تاگ]]:",
+       "tags-active-yes": "بەڵێ",
+       "tags-active-no": "نە",
+       "tags-edit": "وێراشتە",
+       "htmlform-no": "نە",
+       "htmlform-yes": "بەڵێ",
+       "feedback-message": "پەیام:",
+       "searchsuggest-search": "مینە",
+       "expand_templates_ok": "باشە",
+       "pagelang-name": "پەڕە",
+       "pagelang-language": "زوان",
+       "special-characters-group-latin": "لاتین",
+       "special-characters-group-greek": "یوونانی",
+       "special-characters-group-cyrillic": "سیریلیک",
+       "special-characters-group-arabic": "عەرەبی",
+       "special-characters-group-persian": "پارسی",
+       "special-characters-group-hebrew": "عبری",
+       "special-characters-group-bangla": "بەنگالی",
+       "special-characters-group-tamil": "تامیل",
+       "special-characters-group-telugu": "تێلوگو",
+       "special-characters-group-sinhala": "سینھالا",
+       "special-characters-group-gujarati": "گوجەراتی",
+       "special-characters-group-devanagari": "دێڤاناگاری",
+       "special-characters-group-thai": "تایلەندی",
+       "special-characters-group-lao": "لائۆ",
+       "special-characters-group-khmer": "کمێر"
+}
index 19f6302..e593b4d 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|člen|členovia|členov}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|člen|členovia|členov}}",
        "nrevisions": "$1 {{PLURAL:$1|revízia|revízie|revízií}}",
-       "nviews": "$1 {{PLURAL:$1|návšteva|návštevy|návštev}}",
        "nimagelinks": "Použité na $1 {{PLURAL:$1|stránke|stránkach}}",
        "ntransclusions": "použité na $1 {{PLURAL:$1|stránke|stránkach}}",
        "specialpage-empty": "Táto správa neobsahuje žiadne položky.",
index 60bb78a..6a47a44 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|element|elementa|elementi|elementov|elementov}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|element|elementa|elementi|elementov}}",
        "nrevisions": "$1 {{PLURAL:$1|redakcija|redakciji|redakcije|redakcij|redakcij}}",
-       "nviews": "$1 {{PLURAL:$1|ogled|ogleda|ogledi|ogledov|ogledov}}",
        "nimagelinks": "Uporabljeno na $1 {{PLURAL:$1|strani|straneh}}",
        "ntransclusions": "uporabljeno na $1 {{PLURAL:$1|strani|straneh}}",
        "specialpage-empty": "Za to poročilo ni rezultatov.",
index b94f561..7061a50 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|члан|члана|чланова}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|члан|члана|чланова}}",
        "nrevisions": "$1 {{PLURAL:$1|измена|измене|измена}}",
-       "nviews": "$1 {{PLURAL:$1|преглед|прегледа|прегледа}}",
        "nimagelinks": "Користи се на $1 {{PLURAL:$1|страници|странице|страница}}",
        "ntransclusions": "користи се на $1 {{PLURAL:$1|страници|странице|страница}}",
        "specialpage-empty": "Нема резултата за овај извештај.",
index 42fc130..81d2447 100644 (file)
        "nmembers": "$1 {{PLURAL:$1|član|člana|članova}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|član|člana|članova}}",
        "nrevisions": "$1 {{PLURAL:$1|izmena|izmene|izmena}}",
-       "nviews": "$1 {{PLURAL:$1|pregled|pregleda|pregleda}}",
        "nimagelinks": "Koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
        "ntransclusions": "koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
        "specialpage-empty": "Nema rezultata za ovaj izveštaj.",
index cce2fd2..c42aa89 100644 (file)
        "content-model-css": "CSS",
        "content-json-empty-object": "Tomt objekt",
        "content-json-empty-array": "Tomt fält",
+       "duplicate-args-warning": "<strong>Varning:</strong> [[:$1]] anropar [[:$2]] med mer än ett värde för \"$3\"-parametern. Endast det sista värdet kommer att användas.",
        "duplicate-args-category": "Sidor som använder upprepade argument i mallanrop",
        "duplicate-args-category-desc": "Sidan innehåller mallanrop som använder repeterade argument, så som <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> eller <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "Varning: Denna sida innehåller för många anrop av resurskrävande parserfunktioner.\n\nAntalet anrop får vara högst $2, nu görs {{PLURAL:$1|$1 anrop}}",
        "badsig": "Det är något fel med råsignaturen, kontrollera HTML-koden.",
        "badsiglength": "Din signatur är för lång.\nDen får inte vara längre än $1 {{PLURAL:$1|tecken|tecken}}.",
        "yourgender": "Hur vill du att andra refererar till dig?",
-       "gender-unknown": "Jag föredrar att inte uppge det",
+       "gender-unknown": "När jag omnämns ska mjukvaran använda könsneutrala ord närhelst det är möjligt",
        "gender-male": "Han redigerar wikisidor",
        "gender-female": "Hon redigerar wikisidor",
        "prefs-help-gender": "Denna inställning är valfri.\nProgramvaran använder detta värde för att adressera dig till andra med rätt genus. Denna information kommer att vara offentlig.",
        "uploaded-hostile-svg": "Hittade osäker CSS i den uppladdade filens stilelement.",
        "uploaded-href-unsafe-target-svg": "Hittade href till ett osäkert mål <code>&lt;$1 $2=\"$3\"&gt;</code> i den uppladdade SVG-filen.",
        "uploaded-animate-svg": "Hittades taggen \"animate\" som kan ändra href med hjälp av attributen \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code> i den uppladdade SVG-filen.",
+       "uploaded-setting-href-svg": "Användning av taggen \"set\" för att lägga till attributen \"href\" till överordnade element blockeras.",
        "uploaded-image-filter-svg": "Hittade bildfilter med URL: <code>&lt;$1 $2=\"$3\"&gt;</code> i den uppladdade SVG-filen.",
        "uploadscriptednamespace": "Denna SVG-fil innehåller den ogiltiga namnrymden \"$1\".",
        "uploadinvalidxml": "XML-koden i den uppladdade filen kunde inte tolkas.",
        "nmembers": "$1 {{PLURAL:$1|medlem|medlemmar}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|medlem|medlemmar}}",
        "nrevisions": "$1 {{PLURAL:$1|version|versioner}}",
-       "nviews": "$1 {{PLURAL:$1|visning|visningar}}",
        "nimagelinks": "Används på $1 {{PLURAL:$1|sida|sidor}}",
        "ntransclusions": "används på $1 {{PLURAL:$1|sida|sidor}}",
        "specialpage-empty": "Det finns inga resultat för denna rapport.",
index c37821f..8797346 100644 (file)
        "nmembers": "{{PLURAL:$1|üye|üye}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|üye|üye}}",
        "nrevisions": "{{PLURAL:$1|değişiklik|değişiklikler}}",
-       "nviews": "$1 {{PLURAL:$1|görünüm|görünüm}}",
        "nimagelinks": "$1 {{PLURAL:$1|sayfada|sayfada}} kullanılıyor",
        "ntransclusions": "$1 {{PLURAL:$1|sayfada|sayfada}} kullanılıyor",
        "specialpage-empty": "Bu rapor için hiç sonuç yok.",
index ecb2e46..aa1146a 100644 (file)
        "prefs-displayrc": "Tasvirlash moslamalari",
        "prefs-displaywatchlist": "Tasvirlash moslamalari",
        "prefs-diffs": "Versiyalar farqi",
-       "userrights": "Foydalanuvchining huquqlarini boshqarish",
+       "userrights": "Foydalanuvchi huquqlarini oʻzgartirish",
        "userrights-user-editname": "Foydalanuvchi nomi:",
        "editusergroup": "Guruhlardagi aʼzoligini oʻzgartirish",
        "userrights-groupsmember": "Aʼzolik:",
        "rcshowhidebots": "Botlarni $1",
        "rcshowhidebots-show": "koʻrsat",
        "rcshowhidebots-hide": "yashir",
-       "rcshowhideliu": "Roʻyxatdan oʻtgan foydalanuvchilarni $1",
+       "rcshowhideliu": "Roʻyxatdan oʻtganlarni $1",
        "rcshowhideliu-show": "koʻrsat",
        "rcshowhideliu-hide": "yashir",
-       "rcshowhideanons": "Anonim foydalanuvchilarni $1",
+       "rcshowhideanons": "Anonimlarni $1",
        "rcshowhideanons-show": "koʻrsat",
        "rcshowhideanons-hide": "yashir",
        "rcshowhidepatr": "Tekshirilgan tahrirlarni $1",
        "filedelete-intro": "Siz ushbu faylni — <strong>[[Media:$1|$1]]</strong> va uning tarixini butunlay oʻchirib tashlamoqchi boʻlyapsiz.",
        "filedelete-comment": "Sabab:",
        "filedelete-submit": "O‘chirish",
+       "filedelete-success": "<strong>$1</strong> oʻchirildi.",
        "filedelete-reason-dropdown": "* Umumiy sabablar\n** mualliflik huquqlari buzilyapti\n** mavjud faylning nusxasi",
        "mimetype": "MIME-tur:",
        "download": "yuklash",
        "sp-contributions-uploads": "yuklamalar",
        "sp-contributions-logs": "qaydlar",
        "sp-contributions-talk": "munozara",
-       "sp-contributions-userrights": "foydalanuvchining huquqlarini boshqarish",
+       "sp-contributions-userrights": "huquqlarini oʻzgartirish",
        "sp-contributions-blocked-notice": "Ushbu foydalanuvchi hozirda tahrirlashdan chetlatilgan. Quyida chetlatish qaydlaridan soʻnggi yozuv keltirilgan:",
        "sp-contributions-search": "Hissalarni qidirish",
        "sp-contributions-username": "IP-manzil yoki foydalanuvchi nomi:",
index d1699a3..101e5e4 100644 (file)
        "nmembers": "$1个成员",
        "nmemberschanged": "$1 → $2个成员",
        "nrevisions": "$1个版本",
-       "nviews": "$1次浏览",
        "nimagelinks": "用于$1个页面中",
        "ntransclusions": "用于$1个页面中",
        "specialpage-empty": "此报告无结果。",
index 39f7b1e..6875c06 100644 (file)
        "nmembers": "$1 個成員",
        "nmemberschanged": "$1 → $2 個成員",
        "nrevisions": "$1 次修訂",
-       "nviews": "$1 次檢視",
        "nimagelinks": "被 $1 個頁面使用",
        "ntransclusions": "被 $1 個頁面使用",
        "specialpage-empty": "此報表無查無任何結果。",
index 23b702c..8abb491 100644 (file)
@@ -451,7 +451,6 @@ $specialPageAliases = array(
        'PageLanguage'              => array( 'PageLanguage' ),
        'PasswordReset'             => array( 'PasswordReset' ),
        'PermanentLink'             => array( 'PermanentLink', 'PermaLink' ),
-       'Popularpages'              => array( 'PopularPages' ),
        'Preferences'               => array( 'Preferences' ),
        'Prefixindex'               => array( 'PrefixIndex' ),
        'Protectedpages'            => array( 'ProtectedPages' ),
index 9ed63c3..b39ff55 100644 (file)
@@ -226,8 +226,8 @@ class CopyFileBackend extends Maintenance {
                        }
                        $t_start = microtime( true );
                        $fsFiles = $src->getLocalReferenceMulti( array( 'srcs' => $srcPaths, 'latest' => 1 ) );
-                       $ellapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
-                       $this->output( "\n\tDownloaded these file(s) [{$ellapsed_ms}ms]:\n\t" .
+                       $elapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
+                       $this->output( "\n\tDownloaded these file(s) [{$elapsed_ms}ms]:\n\t" .
                                implode( "\n\t", $srcPaths ) . "\n\n" );
                }
 
@@ -281,12 +281,12 @@ class CopyFileBackend extends Maintenance {
                        sleep( 10 ); // wait and retry copy again
                        $status = $dst->doQuickOperations( $ops, array( 'bypassReadOnly' => 1 ) );
                }
-               $ellapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
+               $elapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
                if ( !$status->isOK() ) {
                        $this->error( print_r( $status->getErrorsArray(), true ) );
                        $this->error( "$wikiId: Could not copy file batch.", 1 ); // die
                } elseif ( count( $copiedRel ) ) {
-                       $this->output( "\n\tCopied these file(s) [{$ellapsed_ms}ms]:\n\t" .
+                       $this->output( "\n\tCopied these file(s) [{$elapsed_ms}ms]:\n\t" .
                                implode( "\n\t", $copiedRel ) . "\n\n" );
                }
        }
@@ -318,12 +318,12 @@ class CopyFileBackend extends Maintenance {
                        sleep( 10 ); // wait and retry copy again
                        $status = $dst->doQuickOperations( $ops, array( 'bypassReadOnly' => 1 ) );
                }
-               $ellapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
+               $elapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
                if ( !$status->isOK() ) {
                        $this->error( print_r( $status->getErrorsArray(), true ) );
                        $this->error( "$wikiId: Could not delete file batch.", 1 ); // die
                } elseif ( count( $deletedRel ) ) {
-                       $this->output( "\n\tDeleted these file(s) [{$ellapsed_ms}ms]:\n\t" .
+                       $this->output( "\n\tDeleted these file(s) [{$elapsed_ms}ms]:\n\t" .
                                implode( "\n\t", $deletedRel ) . "\n\n" );
                }
        }
index dd27c8c..f19c64f 100644 (file)
@@ -1434,6 +1434,7 @@ excludepage
 excludeuser
 executables
 exempt
+exiftool
 existingwiki
 exists
 exiv
@@ -3158,7 +3159,6 @@ pnmtopng
 pointsize
 poolcounter
 popts
-popularpages
 portlet
 portlets
 posplus
index 7e73e64..96c05a1 100644 (file)
@@ -23,6 +23,7 @@
                                "classes": [
                                        "mw.Title",
                                        "mw.Uri",
+                                       "mw.RegExp",
                                        "mw.messagePoster.*",
                                        "mw.notification",
                                        "mw.Notification_",
index c280770..d75c8a1 100644 (file)
@@ -148,7 +148,7 @@ return array(
                'scripts' => 'resources/src/jquery/jquery.accessKeyLabel.js',
                'dependencies' => array(
                        'jquery.client',
-                       'jquery.mwExtension',
+                       'mediawiki.RegExp',
                ),
                'messages' => array( 'brackets', 'word-separator' ),
                'targets' => array( 'mobile', 'desktop' ),
@@ -247,7 +247,7 @@ return array(
        ),
        'jquery.highlightText' => array(
                'scripts' => 'resources/src/jquery/jquery.highlightText.js',
-               'dependencies' => 'jquery.mwExtension',
+               'dependencies' => 'mediawiki.RegExp',
                'targets' => array( 'desktop', 'mobile' ),
        ),
        'jquery.hoverIntent' => array(
@@ -309,7 +309,7 @@ return array(
                'styles' => 'resources/src/jquery/jquery.tablesorter.css',
                'messages' => array( 'sort-descending', 'sort-ascending' ),
                'dependencies' => array(
-                       'jquery.mwExtension',
+                       'mediawiki.RegExp',
                        'mediawiki.language.months',
                ),
        ),
@@ -954,7 +954,7 @@ return array(
        'mediawiki.htmlform' => array(
                'scripts' => 'resources/src/mediawiki/mediawiki.htmlform.js',
                'dependencies' => array(
-                       'jquery.mwExtension',
+                       'mediawiki.RegExp',
                        'jquery.byteLimit',
                ),
                'messages' => array(
@@ -978,6 +978,7 @@ return array(
                'scripts' => 'resources/src/mediawiki/mediawiki.inspect.js',
                'dependencies' => array(
                        'jquery.byteLength',
+                       'mediawiki.RegExp',
                        'json',
                ),
                'targets' => array( 'desktop', 'mobile' ),
@@ -1020,6 +1021,10 @@ return array(
                'scripts' => 'resources/src/mediawiki/mediawiki.notify.js',
                'targets' => array( 'desktop', 'mobile' ),
        ),
+       'mediawiki.RegExp' => array(
+               'scripts' => 'resources/src/mediawiki/mediawiki.RegExp.js',
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
        'mediawiki.pager.tablePager' => array(
                'styles' => 'resources/src/mediawiki/mediawiki.pager.tablePager.less',
                'position' => 'top',
@@ -1085,7 +1090,7 @@ return array(
                'scripts' => 'resources/src/mediawiki/mediawiki.util.js',
                'dependencies' => array(
                        'jquery.accessKeyLabel',
-                       'jquery.mwExtension',
+                       'mediawiki.RegExp',
                        'mediawiki.notify',
                ),
                'position' => 'top', // For $wgPreloadJavaScriptMwUtil
@@ -1377,7 +1382,7 @@ return array(
                        'mediawiki.page.startup',
                        'mediawiki.util',
                        'jquery.accessKeyLabel',
-                       'jquery.mwExtension',
+                       'mediawiki.RegExp',
                ),
                'messages' => array(
                        'watch',
index 867c25e..1ac34a5 100644 (file)
@@ -112,7 +112,7 @@ function getAccessKeyLabel( element ) {
  */
 function updateTooltipOnElement( element, titleElement ) {
        var array = ( mw.msg( 'word-separator' ) + mw.msg( 'brackets' ) ).split( '$1' ),
-               regexp = new RegExp( $.map( array, $.escapeRE ).join( '.*?' ) + '$' ),
+               regexp = new RegExp( $.map( array, mw.RegExp.escape ).join( '.*?' ) + '$' ),
                oldTitle = titleElement.title,
                rawTitle = oldTitle.replace( regexp, '' ),
                newTitle = rawTitle,
index 1338218..8deb669 100644 (file)
@@ -3,7 +3,7 @@
  * TODO: Add a function for restoring the previous text.
  * TODO: Accept mappings for converting shortcuts like WP: to Wikipedia:.
  */
-( function ( $ ) {
+( function ( $, mw ) {
 
        $.highlightText = {
 
@@ -29,7 +29,7 @@
                                // non latin characters can make regex think a new word has begun: do not use \b
                                // http://stackoverflow.com/questions/3787072/regex-wordwrap-with-utf8-characters-in-js
                                // look for an occurrence of our pattern and store the starting position
-                               match = node.data.match( new RegExp( '(^|\\s)' + $.escapeRE( pat ), 'i' ) );
+                               match = node.data.match( new RegExp( '(^|\\s)' + mw.RegExp.escape( pat ), 'i' ) );
                                if ( match ) {
                                        pos = match.index + match[1].length; // include length of any matched spaces
                                        // create the span wrapper for the matched text
@@ -70,4 +70,4 @@
                } );
        };
 
-}( jQuery ) );
+}( jQuery, mediaWiki ) );
index e6e33ad..5484212 100644 (file)
@@ -1,9 +1,11 @@
 /*
  * JavaScript backwards-compatibility alternatives and other convenience functions
+ *
+ * @deprecated since 1.26 Dated collection of miscellaneous utilities. Methods are
+ *  either trivially inline, obsolete, or have a better place elsewhere.
  */
-( function ( $ ) {
-
-       $.extend( {
+( function ( $, mw ) {
+       $.each( {
                trimLeft: function ( str ) {
                        return str === null ? '' : str.toString().replace( /^\s+/, '' );
                },
@@ -14,9 +16,6 @@
                ucFirst: function ( str ) {
                        return str.charAt( 0 ).toUpperCase() + str.slice( 1 );
                },
-               escapeRE: function ( str ) {
-                       return str.replace( /([\\{}()|.?*+\-\^$\[\]])/g, '\\$1' );
-               },
                isDomElement: function ( el ) {
                        return !!el && !!el.nodeType;
                },
@@ -28,7 +27,7 @@
                                return true;
                        }
                        // the for-loop could potentially contain prototypes
-                       // to avoid that we check it's length first
+                       // to avoid that we check its length first
                        if ( v.length === 0 ) {
                                return true;
                        }
                        }
                        return true;
                }
+       }, function ( key, value ) {
+               mw.log.deprecate( $, key, value );
        } );
 
-}( jQuery ) );
+       mw.log.deprecate( $, 'escapeRE', function ( str ) {
+               return str.replace( /([\\{}()|.?*+\-\^$\[\]])/g, '\\$1' );
+       }, 'Use mediawiki.RegExp instead.' );
+
+} )( jQuery, mediaWiki );
index 3278ad5..c8e3cb3 100644 (file)
                        // Construct regex for number identification
                        for ( i = 0; i < ascii.length; i++ ) {
                                ts.transformTable[localised[i]] = ascii[i];
-                               digits.push( $.escapeRE( localised[i] ) );
+                               digits.push( mw.RegExp.escape( localised[i] ) );
                        }
                }
                digitClass = '[' + digits.join( '', digits ) + ']';
                for ( i = 0; i < 12; i++ ) {
                        name = mw.language.months.names[i].toLowerCase();
                        ts.monthNames[name] = i + 1;
-                       regex.push( $.escapeRE( name ) );
+                       regex.push( mw.RegExp.escape( name ) );
                        name = mw.language.months.genitive[i].toLowerCase();
                        ts.monthNames[name] = i + 1;
-                       regex.push( $.escapeRE( name ) );
+                       regex.push( mw.RegExp.escape( name ) );
                        name = mw.language.months.abbrev[i].toLowerCase().replace( '.', '' );
                        ts.monthNames[name] = i + 1;
-                       regex.push( $.escapeRE( name ) );
+                       regex.push( mw.RegExp.escape( name ) );
                }
 
                // Build piped string
index d252f0e..50f280a 100644 (file)
@@ -86,7 +86,7 @@
                        if ( actionPaths.hasOwnProperty( key ) ) {
                                parts = actionPaths[key].split( '$1' );
                                for ( i = 0; i < parts.length; i++ ) {
-                                       parts[i] = $.escapeRE( parts[i] );
+                                       parts[i] = mw.RegExp.escape( parts[i] );
                                }
                                m = new RegExp( parts.join( '(.+)' ) ).exec( url );
                                if ( m && m[1] ) {
index d0dfb28..ea1eb99 100644 (file)
                                fname = fname.replace( / /g, '_' );
                                // Capitalise first letter if needed
                                if ( mw.config.get( 'wgCapitalizeUploads' ) ) {
-                                       fname = fname.charAt( 0 ).toUpperCase().concat( fname.slice( 1 ) );
+                                       fname = fname[0].toUpperCase() + fname.slice( 1 );
                                }
 
                                // Output result
index 1bc1d3d..26b2f5d 100644 (file)
@@ -64,7 +64,7 @@
                }
 
                // Dont send leading ':' to open search
-               if ( value.charAt( 0 ) === ':' ) {
+               if ( value[0] === ':' ) {
                        value = value.slice( 1 );
                }
 
diff --git a/resources/src/mediawiki/mediawiki.RegExp.js b/resources/src/mediawiki/mediawiki.RegExp.js
new file mode 100644 (file)
index 0000000..1da4ab4
--- /dev/null
@@ -0,0 +1,22 @@
+( function ( mw ) {
+       /**
+        * @class mw.RegExp
+        */
+       mw.RegExp = {
+               /**
+                * Escape string for safe inclusion in regular expression
+                *
+                * The following characters are escaped:
+                *
+                *     \ { } ( ) | . ? * + - ^ $ [ ]
+                *
+                * @since 1.26
+                * @static
+                * @param {string} str String to escape
+                * @return {string} Escaped string
+                */
+               escape: function ( str ) {
+                       return str.replace( /([\\{}()|.?*+\-\^$\[\]])/g, '\\$1' );
+               }
+       };
+}( mediaWiki ) );
index 3efb7ec..e46eca5 100644 (file)
                        .replace( rUnderscoreTrim, '' );
 
                // Process initial colon
-               if ( title !== '' && title.charAt( 0 ) === ':' ) {
+               if ( title !== '' && title[0] === ':' ) {
                        // Initial colon means main namespace instead of specified default
                        namespace = NS_MAIN;
                        title = title
                }
 
                // Any remaining initial :s are illegal.
-               if ( title.charAt( 0 ) === ':' ) {
+               if ( title[0] === ':' ) {
                        return false;
                }
 
                title = $.trim( title.replace( rWhitespace, ' ' ) );
 
                // Process initial colon
-               if ( title !== '' && title.charAt( 0 ) === ':' ) {
+               if ( title !== '' && title[0] === ':' ) {
                        // Initial colon means main namespace instead of specified default
                        namespace = NS_MAIN;
                        title = title
                getName: function () {
                        if ( $.inArray( this.namespace, mw.config.get( 'wgCaseSensitiveNamespaces' ) ) !== -1 ) {
                                return this.title;
-                       } else {
-                               return $.ucFirst( this.title );
                        }
+                       return this.title[0].toUpperCase() + this.title.slice( 1 );
                },
 
                /**
index abfb279..07d8900 100644 (file)
                                        this.port = defaultUri.port;
                                }
                        }
-                       if ( this.path && this.path.charAt( 0 ) !== '/' ) {
+                       if ( this.path && this.path[0] !== '/' ) {
                                // A real relative URL, relative to defaultUri.path. We can't really handle that since we cannot
                                // figure out whether the last path component of defaultUri.path is a directory or a file.
                                throw new Error( 'Bad constructor arguments' );
index 4a4a97e..7fdaa6e 100644 (file)
                        $ul = $( this ).prev( 'ul.mw-htmlform-cloner-ul' );
 
                        html = $ul.data( 'template' ).replace(
-                               new RegExp( $.escapeRE( $ul.data( 'uniqueId' ) ), 'g' ),
+                               new RegExp( mw.RegExp.escape( $ul.data( 'uniqueId' ) ), 'g' ),
                                'clone' + ( ++cloneCounter )
                        );
 
index 22d3cbb..31cd6c4 100644 (file)
                 */
                grep: function ( pattern ) {
                        if ( typeof pattern.test !== 'function' ) {
-                               // Based on Y.Escape.regex from YUI v3.15.0
-                               pattern = new RegExp( pattern.replace( /[\-$\^*()+\[\]{}|\\,.?\s]/g, '\\$&' ), 'g' );
+                               pattern = new RegExp( mw.RegExp.escape( pattern ), 'g' );
                        }
 
                        return $.grep( inspect.getLoadedModules(), function ( moduleName ) {
index 3964f0b..df10204 100644 (file)
@@ -15,7 +15,7 @@
                                list: 'allusers',
                                // Prefix of list=allusers is case sensitive. Normalise first
                                // character to uppercase so that "fo" may yield "Foo".
-                               auprefix: userInput.charAt( 0 ).toUpperCase() + userInput.slice( 1 ),
+                               auprefix: userInput[0].toUpperCase() + userInput.slice( 1 ),
                                aulimit: maxRows
                        } ).done( function ( data ) {
                                var users = $.map( data.query.allusers, function ( userObj ) {
index 6723e5f..13bf455 100644 (file)
                                url = location.href;
                        }
                        // Get last match, stop at hash
-                       var     re = new RegExp( '^[^#]*[&?]' + $.escapeRE( param ) + '=([^&#]*)' ),
+                       var     re = new RegExp( '^[^#]*[&?]' + mw.RegExp.escape( param ) + '=([^&#]*)' ),
                                m = re.exec( url );
                        if ( m ) {
                                // Beware that decodeURIComponent is not required to understand '+'
index 2ee805e..3665e3c 100644 (file)
@@ -3193,13 +3193,6 @@ About
 &lt;/td&gt;&lt;td&gt;
 <template lineStart="1"><title>int:Nstab-wp</title></template>
 &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
-[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nviews&amp;action=edit nviews]&lt;br&gt;
-[[MediaWiki_talk:Nviews|Talk]]
-&lt;/td&gt;&lt;td&gt;
-$1 views
-&lt;/td&gt;&lt;td&gt;
-<template lineStart="1"><title>int:Nviews</title></template>
-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
 [http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ok&amp;action=edit ok]&lt;br&gt;
 [[MediaWiki_talk:Ok|Talk]]
 &lt;/td&gt;&lt;td&gt;
@@ -3319,13 +3312,6 @@ Personal tools
 &lt;/td&gt;&lt;td&gt;
 <template lineStart="1"><title>int:Personaltools</title></template>
 &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
-[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Popularpages&amp;action=edit popularpages]&lt;br&gt;
-[[MediaWiki_talk:Popularpages|Talk]]
-&lt;/td&gt;&lt;td&gt;
-Popular pages
-&lt;/td&gt;&lt;td&gt;
-<template lineStart="1"><title>int:Popularpages</title></template>
-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
 [http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Portal&amp;action=edit portal]&lt;br&gt;
 [[MediaWiki_talk:Portal|Talk]]
 &lt;/td&gt;&lt;td&gt;
index 4a30f56..c619df7 100644 (file)
@@ -3193,13 +3193,6 @@ About
 </td><td>
 {{int:Nstab-wp}}
 </td></tr><tr><td>
-[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nviews&action=edit nviews]<br>
-[[MediaWiki_talk:Nviews|Talk]]
-</td><td>
-$1 views
-</td><td>
-{{int:Nviews}}
-</td></tr><tr><td>
 [http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ok&action=edit ok]<br>
 [[MediaWiki_talk:Ok|Talk]]
 </td><td>
@@ -3319,13 +3312,6 @@ Personal tools
 </td><td>
 {{int:Personaltools}}
 </td></tr><tr><td>
-[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Popularpages&action=edit popularpages]<br>
-[[MediaWiki_talk:Popularpages|Talk]]
-</td><td>
-Popular pages
-</td><td>
-{{int:Popularpages}}
-</td></tr><tr><td>
 [http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Portal&action=edit portal]<br>
 [[MediaWiki_talk:Portal|Talk]]
 </td><td>
diff --git a/tests/phpunit/data/media/srgb.jpg b/tests/phpunit/data/media/srgb.jpg
new file mode 100644 (file)
index 0000000..b965dc4
Binary files /dev/null and b/tests/phpunit/data/media/srgb.jpg differ
diff --git a/tests/phpunit/data/media/tinyrgb.icc b/tests/phpunit/data/media/tinyrgb.icc
new file mode 100644 (file)
index 0000000..eab973f
Binary files /dev/null and b/tests/phpunit/data/media/tinyrgb.icc differ
diff --git a/tests/phpunit/data/media/tinyrgb.jpg b/tests/phpunit/data/media/tinyrgb.jpg
new file mode 100644 (file)
index 0000000..12a8e09
Binary files /dev/null and b/tests/phpunit/data/media/tinyrgb.jpg differ
index 5c28ece..e89e36f 100644 (file)
@@ -687,6 +687,105 @@ class GlobalTest extends MediaWikiTestCase {
                $this->assertEquals( $expected, $actual, $description );
        }
 
+       public function wfWikiID() {
+               $this->setMwGlobals( array(
+                       'wgDBname' => 'example',
+                       'wgDBprefix' => '',
+               ) );
+               $this->assertEquals(
+                       wfWikiID(),
+                       'example'
+               );
+
+               $this->setMwGlobals( array(
+                       'wgDBname' => 'example',
+                       'wgDBprefix' => 'mw_',
+               ) );
+               $this->assertEquals(
+                       wfWikiID(),
+                       'example-mw_'
+               );
+       }
+
+       public function testWfMemcKey() {
+               // Just assert the exact output so we can catch unintentional changes to key
+               // construction, which would effectively invalidate all existing cache.
+
+               $this->setMwGlobals( array(
+                       'wgCachePrefix' => false,
+                       'wgDBname' => 'example',
+                       'wgDBprefix' => '',
+               ) );
+               $this->assertEquals(
+                       wfMemcKey( 'foo', '123', 'bar' ),
+                       'example:foo:123:bar'
+               );
+
+               $this->setMwGlobals( array(
+                       'wgCachePrefix' => false,
+                       'wgDBname' => 'example',
+                       'wgDBprefix' => 'mw_',
+               ) );
+               $this->assertEquals(
+                       wfMemcKey( 'foo', '123', 'bar' ),
+                       'example-mw_:foo:123:bar'
+               );
+
+               $this->setMwGlobals( array(
+                       'wgCachePrefix' => 'custom',
+                       'wgDBname' => 'example',
+                       'wgDBprefix' => 'mw_',
+               ) );
+               $this->assertEquals(
+                       wfMemcKey( 'foo', '123', 'bar' ),
+                       'custom:foo:123:bar'
+               );
+       }
+
+       public function testWfForeignMemcKey() {
+               $this->setMwGlobals( array(
+                       'wgCachePrefix' => false,
+                       'wgDBname' => 'example',
+                       'wgDBprefix' => '',
+               ) );
+               $local = wfMemcKey( 'foo', 'bar' );
+
+               $this->setMwGlobals( array(
+                       'wgDBname' => 'other',
+                       'wgDBprefix' => 'mw_',
+               ) );
+               $this->assertEquals(
+                       wfForeignMemcKey( 'example', '', 'foo', 'bar' ),
+                       $local,
+                       'Match output of wfMemcKey from local wiki'
+               );
+       }
+
+       public function testWfGlobalCacheKey() {
+               $this->setMwGlobals( array(
+                       'wgCachePrefix' => 'ignored',
+                       'wgDBname' => 'example',
+                       'wgDBprefix' => ''
+               ) );
+               $one = wfGlobalCacheKey( 'some', 'thing' );
+               $this->assertEquals(
+                       $one,
+                       'global:some:thing'
+               );
+
+               $this->setMwGlobals( array(
+                       'wgDBname' => 'other',
+                       'wgDBprefix' => 'mw_'
+               ) );
+               $two = wfGlobalCacheKey( 'some', 'thing' );
+
+               $this->assertEquals(
+                       $one,
+                       $two,
+                       'Not fragmented by wiki id'
+               );
+       }
+
        public static function provideWfShellWikiCmdList() {
                global $wgPhpCli;
 
diff --git a/tests/phpunit/includes/MediaWikiTest.php b/tests/phpunit/includes/MediaWikiTest.php
new file mode 100644 (file)
index 0000000..df94d3e
--- /dev/null
@@ -0,0 +1,157 @@
+<?php
+
+class MediaWikiTest extends MediaWikiTestCase {
+       protected function setUp() {
+               parent::setUp();
+
+               $this->setMwGlobals( array(
+                       'wgServer' => 'http://example.org',
+                       'wgScriptPath' => '/w',
+                       'wgScript' => '/w/index.php',
+                       'wgArticlePath' => '/wiki/$1',
+                       'wgActionPaths' => array(),
+               ) );
+       }
+
+       public static function provideTryNormaliseRedirect() {
+               return array(
+                       array(
+                               // View: Canonical
+                               'url' => 'http://example.org/wiki/Foo_Bar',
+                               'query' => array(),
+                               'title' => 'Foo_Bar',
+                               'redirect' => false,
+                       ),
+                       array(
+                               // View: Escaped title
+                               'url' => 'http://example.org/wiki/Foo%20Bar',
+                               'query' => array(),
+                               'title' => 'Foo_Bar',
+                               'redirect' => 'http://example.org/wiki/Foo_Bar',
+                       ),
+                       array(
+                               // View: Script path
+                               'url' => 'http://example.org/w/index.php?title=Foo_Bar',
+                               'query' => array( 'title' => 'Foo_Bar' ),
+                               'title' => 'Foo_Bar',
+                               'redirect' => false,
+                       ),
+                       array(
+                               // View: Script path with implicit title from page id
+                               'url' => 'http://example.org/w/index.php?curid=123',
+                               'query' => array( 'curid' => '123' ),
+                               'title' => 'Foo_Bar',
+                               'redirect' => false,
+                       ),
+                       array(
+                               // View: Script path with implicit title from revision id
+                               'url' => 'http://example.org/w/index.php?oldid=123',
+                               'query' => array( 'oldid' => '123' ),
+                               'title' => 'Foo_Bar',
+                               'redirect' => false,
+                       ),
+                       array(
+                               // View: Script path without title
+                               'url' => 'http://example.org/w/index.php',
+                               'query' => array(),
+                               'title' => 'Main_Page',
+                               'redirect' => 'http://example.org/wiki/Main_Page',
+                       ),
+                       array(
+                               // View: Script path with empty title
+                               'url' => 'http://example.org/w/index.php?title=',
+                               'query' => array( 'title' => '' ),
+                               'title' => 'Main_Page',
+                               'redirect' => 'http://example.org/wiki/Main_Page',
+                       ),
+                       array(
+                               // View: Index with escaped title
+                               'url' => 'http://example.org/w/index.php?title=Foo%20Bar',
+                               'query' => array( 'title' => 'Foo Bar' ),
+                               'title' => 'Foo_Bar',
+                               'redirect' => 'http://example.org/wiki/Foo_Bar',
+                       ),
+                       array(
+                               // View: Script path with escaped title
+                               'url' => 'http://example.org/w/?title=Foo_Bar',
+                               'query' => array( 'title' => 'Foo_Bar' ),
+                               'title' => 'Foo_Bar',
+                               'redirect' => false,
+                       ),
+                       array(
+                               // View: Root path with escaped title
+                               'url' => 'http://example.org/?title=Foo_Bar',
+                               'query' => array( 'title' => 'Foo_Bar' ),
+                               'title' => 'Foo_Bar',
+                               'redirect' => false,
+                       ),
+                       array(
+                               // View: Canonical with redundant query
+                               'url' => 'http://example.org/wiki/Foo_Bar?action=view',
+                               'query' => array( 'action' => 'view' ),
+                               'title' => 'Foo_Bar',
+                               'redirect' => false,
+                       ),
+                       array(
+                               // Edit: Canonical view url with action query
+                               'url' => 'http://example.org/wiki/Foo_Bar?action=edit',
+                               'query' => array( 'action' => 'edit' ),
+                               'title' => 'Foo_Bar',
+                               'redirect' => false,
+                       ),
+                       array(
+                               // View: Index with action query
+                               'url' => 'http://example.org/w/index.php?title=Foo_Bar&action=view',
+                               'query' => array( 'title' => 'Foo_Bar', 'action' => 'view' ),
+                               'title' => 'Foo_Bar',
+                               'redirect' => false,
+                       ),
+                       array(
+                               // Edit: Index with action query
+                               'url' => 'http://example.org/w/index.php?title=Foo_Bar&action=edit',
+                               'query' => array( 'title' => 'Foo_Bar', 'action' => 'edit' ),
+                               'title' => 'Foo_Bar',
+                               'redirect' => false,
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider provideTryNormaliseRedirect
+        * @covers MediaWiki::tryNormaliseRedirect
+        */
+       public function testTryNormaliseRedirect( $url, $query, $title, $expectedRedirect = false ) {
+               // Set SERVER because interpolateTitle() doesn't use getRequestURL(),
+               // whereas tryNormaliseRedirect does().
+               $_SERVER['REQUEST_URI'] = $url;
+
+               $req = new FauxRequest( $query );
+               $req->setRequestURL( $url );
+               // This adds a virtual 'title' query parameter. Normally called from Setup.php
+               $req->interpolateTitle();
+
+               $titleObj = Title::newFromText( $title );
+
+               // Set global context since some involved code paths don't yet have context
+               $context = RequestContext::getMain();
+               $context->setRequest( $req );
+               $context->setTitle( $titleObj );
+
+               $mw = new MediaWiki( $context );
+
+               $method = new ReflectionMethod( $mw, 'tryNormaliseRedirect' );
+               $method->setAccessible( true );
+               $ret = $method->invoke( $mw, $titleObj );
+
+               $this->assertEquals(
+                       $expectedRedirect !== false,
+                       $ret,
+                       'Return true only when redirecting'
+               );
+
+               $this->assertEquals(
+                       $expectedRedirect ?: '',
+                       $context->getOutput()->getRedirect()
+               );
+       }
+}
index 41330f4..adbc977 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * @group Media
  */
-class ExifBitmapTest extends MediaWikiTestCase {
+class ExifBitmapTest extends MediaWikiMediaTestCase {
 
        /**
         * @var ExifBitmapHandler
@@ -143,4 +143,41 @@ class ExifBitmapTest extends MediaWikiTestCase {
                $res = $this->handler->convertMetadataVersion( $metadata, 1 );
                $this->assertEquals( $expected, $res );
        }
+
+       /**
+        * @dataProvider provideSwappingICCProfile
+        * @covers BitmapHandler::swapICCProfile
+        */
+       public function testSwappingICCProfile( $sourceFilename, $controlFilename, $newProfileFilename, $oldProfileName ) {
+               global $wgExiftool;
+
+               if ( !$wgExiftool || !is_file( $wgExiftool ) ) {
+                       $this->markTestSkipped( "Exiftool not installed, cannot test ICC profile swapping" );
+               }
+
+               $this->setMwGlobals( 'wgUseTinyRGBForJPGThumbnails', true );
+
+               $sourceFilepath = $this->filePath . $sourceFilename;
+               $controlFilepath = $this->filePath . $controlFilename;
+               $profileFilepath = $this->filePath . $newProfileFilename;
+               $filepath = $this->getNewTempFile();
+
+               copy( $sourceFilepath, $filepath );
+
+               $file = $this->dataFile( $sourceFilename, 'image/jpeg' );
+               $this->handler->swapICCProfile( $filepath, $oldProfileName, $profileFilepath );
+
+               $this->assertEquals( sha1( file_get_contents( $filepath ) ), sha1( file_get_contents( $controlFilepath ) ) );
+       }
+
+       public function provideSwappingICCProfile() {
+               return array(
+                       // File with sRGB should end up with TinyRGB
+                       array( 'srgb.jpg', 'tinyrgb.jpg', 'tinyrgb.icc', 'IEC 61966-2.1 Default RGB colour space - sRGB' ),
+                       // File with TinyRGB should be left unchanged
+                       array( 'tinyrgb.jpg', 'tinyrgb.jpg', 'tinyrgb.icc', 'IEC 61966-2.1 Default RGB colour space - sRGB' ),
+                       // File with no profile should be left unchanged
+                       array( 'test.jpg', 'test.jpg', 'tinyrgb.icc', 'IEC 61966-2.1 Default RGB colour space - sRGB' )
+               );
+       }
 }
index 9093797..c6f3a23 100644 (file)
@@ -66,6 +66,7 @@ return array(
                        'tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.messagePoster.factory.test.js',
+                       'tests/qunit/suites/resources/mediawiki/mediawiki.RegExp.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.template.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js',
@@ -108,6 +109,7 @@ return array(
                        'mediawiki.api.watch',
                        'mediawiki.jqueryMsg',
                        'mediawiki.messagePoster',
+                       'mediawiki.RegExp',
                        'mediawiki.Title',
                        'mediawiki.toc',
                        'mediawiki.Uri',
index 795c2bb..911e9d0 100644 (file)
@@ -1,5 +1,14 @@
 ( function ( $ ) {
-       QUnit.module( 'jquery.mwExtension', QUnit.newMwEnvironment() );
+       QUnit.module( 'jquery.mwExtension', QUnit.newMwEnvironment( {
+               // This entire module is deprecated.
+               // Surpress deprecation warnings in test output.
+               setup: function () {
+                       this.suppressWarnings();
+               },
+               teardown: function () {
+                       this.restoreWarnings();
+               }
+       }) );
 
        QUnit.test( 'String functions', 7, function ( assert ) {
                assert.equal( $.trimLeft( '  foo bar  ' ), 'foo bar  ', 'trimLeft' );
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.RegExp.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.RegExp.test.js
new file mode 100644 (file)
index 0000000..2388497
--- /dev/null
@@ -0,0 +1,38 @@
+( function ( mw, $ ) {
+       QUnit.module( 'mediawiki.RegExp' );
+
+       QUnit.test( 'escape', 16, function ( assert ) {
+               var specials, normal;
+
+               specials = [
+                       '\\',
+                       '{',
+                       '}',
+                       '(',
+                       ')',
+                       '[',
+                       ']',
+                       '|',
+                       '.',
+                       '?',
+                       '*',
+                       '+',
+                       '-',
+                       '^',
+                       '$'
+               ];
+
+               normal = [
+                       'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
+                       'abcdefghijklmnopqrstuvwxyz',
+                       '0123456789'
+               ].join( '' );
+
+               $.each( specials, function ( i, str ) {
+                       assert.propEqual( str.match( new RegExp( mw.RegExp.escape( str ) ) ), [ str ], 'Match ' + str );
+               } );
+
+               assert.equal( mw.RegExp.escape( normal ), normal, 'Alphanumerals are left alone' );
+       } );
+
+}( mediaWiki, jQuery ) );