Merge "Apply correct line-height to diffs"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 22 May 2014 15:04:34 +0000 (15:04 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 22 May 2014 15:04:34 +0000 (15:04 +0000)
124 files changed:
RELEASE-NOTES-1.23
RELEASE-NOTES-1.24
docs/kss/README.txt
docs/kss/styleguide-template/index.html
includes/Article.php
includes/CategoryViewer.php
includes/Collation.php
includes/DeprecatedGlobal.php
includes/EditPage.php
includes/Export.php
includes/Feed.php
includes/HistoryBlob.php
includes/Import.php
includes/Linker.php
includes/OutputPage.php
includes/Revision.php
includes/SkinTemplate.php
includes/User.php
includes/api/ApiBase.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryRevisions.php
includes/api/ApiQuerySiteinfo.php
includes/api/ApiQueryWatchlist.php
includes/changes/EnhancedChangesList.php
includes/changes/RecentChange.php
includes/db/Database.php
includes/db/DatabaseSqlite.php
includes/filebackend/FileBackend.php
includes/filerepo/file/LocalFile.php
includes/installer/WebInstaller.php
includes/installer/i18n/it.json
includes/installer/i18n/nb.json
includes/installer/i18n/nl.json
includes/installer/i18n/or.json
includes/installer/i18n/te.json
includes/jobqueue/JobQueueFederated.php
includes/limit.sh
includes/parser/Preprocessor_DOM.php
includes/specials/SpecialUndelete.php
includes/utils/IP.php
languages/i18n/ang.json
languages/i18n/bar.json
languages/i18n/be-tarask.json
languages/i18n/bn.json
languages/i18n/ce.json
languages/i18n/ckb.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/egl.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/kn.json
languages/i18n/lb.json
languages/i18n/lmo.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/mt.json
languages/i18n/nb.json
languages/i18n/nl.json
languages/i18n/or.json
languages/i18n/pfl.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/ru.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/sat.json
languages/i18n/si.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/te.json
languages/i18n/th.json
languages/i18n/tl.json
languages/i18n/vi.json
languages/i18n/yi.json
languages/i18n/zh-hant.json
maintenance/deleteEqualMessages.php
resources/Resources.php
resources/lib/oojs-ui/i18n/ast.json
resources/lib/oojs-ui/i18n/ckb.json
resources/lib/oojs-ui/i18n/egl.json
resources/lib/oojs-ui/i18n/eml.json
resources/lib/oojs-ui/i18n/es.json
resources/lib/oojs-ui/i18n/et.json
resources/lib/oojs-ui/i18n/fi.json
resources/lib/oojs-ui/i18n/kn.json
resources/lib/oojs-ui/i18n/ko.json
resources/lib/oojs-ui/i18n/nl.json
resources/lib/oojs-ui/i18n/oc.json
resources/lib/oojs-ui/i18n/pfl.json
resources/lib/oojs-ui/i18n/pl.json
resources/lib/oojs-ui/i18n/pt.json
resources/lib/oojs-ui/i18n/ro.json
resources/lib/oojs-ui/i18n/scn.json
resources/lib/oojs-ui/i18n/sr-ec.json
resources/lib/oojs-ui/i18n/vec.json
resources/lib/oojs-ui/i18n/vi.json
resources/lib/oojs-ui/i18n/yi.json
resources/lib/oojs-ui/oojs-ui.css [deleted file]
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/oojs-ui.svg.css
resources/src/jquery.tipsy/jquery.tipsy.js
resources/src/mediawiki.api/mediawiki.api.js
resources/src/mediawiki.page/mediawiki.page.watch.ajax.js
resources/src/mediawiki.skinning/content.parsoid.less [new file with mode: 0644]
resources/src/mediawiki.ui/styleguide.md
resources/src/mediawiki.ui/vector.less
resources/src/mediawiki/mediawiki.htmlform.js
resources/src/mediawiki/mediawiki.searchSuggest.js
resources/src/mediawiki/mediawiki.user.js
skins/vector/components/watchstar.less
tests/parser/parserTest.inc
tests/parser/parserTests.txt
tests/phpunit/data/media/Portrait.png [new file with mode: 0644]
tests/phpunit/includes/db/DatabaseSqliteTest.php
tests/phpunit/includes/parser/NewParserTest.php
tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.toc.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js

index d010358..baf69c5 100644 (file)
@@ -9,9 +9,9 @@ MediaWiki 1.23 is an alpha-quality branch and is not recommended for use in
 production.
 
 === Configuration changes in 1.23 ===
-* Introduced $wgPagePropsHaveSortkey as a backwards-compatibility switch,
-  for using the old schema of the page_props table, in case the respective
-  schema update was not applied.
+* (bug 13250) Restored method for clearing a watchlist in web UI
+  so that users with large watchlists don't have to perform
+  contortions to clear them.
 * When $wgJobRunRate is higher that zero, jobs are now executed via an
   asynchronous HTTP request to a MediaWiki entry point. This may require
   increasing the number of server worker threads. $wgRunJobsAsync has been
@@ -110,9 +110,6 @@ production.
   'user' or 'bot'. The API will throw an error if the user is not logged
   in (user) or does not have the 'bot' userright (bot). Based off of the
   AssertEdit extension by Steve Sanbeg.
-* WikitextContent will now render redirects with the expected "redirect"
-  header, rather than as an ordered list. Code calling Article::viewRedirect
-  can probably be changed to no longer special-case redirects.
 * [[Special:Diff]] was added, allowing users to create internal links to
   revision comparison pages using syntax such as [[Special:Diff/12345]],
   [[Special:Diff/12345/prev]] or [[Special:Diff/12345/98765]].
@@ -147,7 +144,7 @@ production.
 * Added BaseTemplateAfterPortlet hook to allow injecting html after portlets in skins.
 * Support has been added for a JSON based localisation file format. The
   installer has been updated to use it.
-* Changes to content typography (fonts, line-height, etc.). See
+* Changes to content typography (colors, line-height etc.). See
   https://www.mediawiki.org/wiki/Typography_refresh for further information.
 * The Vector skin's visual treatment of external links has been simplified to a
   single icon (from nine). This should not affect local rules unless they were
@@ -190,8 +187,6 @@ production.
   the JavaScript evaluator were updated to support the new format. Plural rules
   for some languages have changed, most notably Russian. Affected software
   messages have been updated and marked for review at translatewiki.net.
-* (bug 14323) Redirect pages, when viewed with redirect=no, no longer hide the
-  remaining page content.
 * (bug 23542) imagelinks now stores both the redirect and target (as
   templatelinks does).
 * (bug 58167) The web installer no longer throws an exception when PHP is
@@ -210,6 +205,7 @@ production.
   warnings to be printed on Windows due to large path length.
 * (bug 48084) Fixed a bug in the installer that could cause $wgLogo to hold
   the wrong path to the placeholder logo (skins/common/images/wiki.png).
+* (bug 64289) jquery.textSelection: Don't throw errors on empty collections.
 
 === Web API changes in 1.23 ===
 * (bug 54884) action=parse&prop=categories now indicates hidden and missing
@@ -278,9 +274,6 @@ changes to languages because of Bugzilla reports.
 * Support was added for Northern Luri (lrc).
 
 === Other changes in 1.23 ===
-* Added pp_sortkey column to page_props table, so pages can be efficiently
-  queried and sorted by property value (bug 58032).
-  See $wgPagePropsHaveSortkey if you want to postpone the schema change.
 * The rc_type field in the recentchanges table has been superseded by a new
   rc_source field.  The rc_source field is a string representation of the
   change type where rc_type was a numeric constant.  This field is not yet
index bb8dd22..fb23b71 100644 (file)
@@ -11,6 +11,9 @@ production.
 === Configuration changes in 1.24 ===
 * The server's canonical hostname is available as $wgServerName, which is
   exposed in both mw.config and ApiQuerySiteInfo.
+* Introduced $wgPagePropsHaveSortkey as a backwards-compatibility switch,
+  for using the old schema of the page_props table, in case the respective
+  schema update was not applied.
 
 === New features in 1.24 ===
 * Added a new hook, "WhatLinksHereProps", to allow extensions to annotate
@@ -30,6 +33,14 @@ production.
   jQuery.cookie so that getting/setting a cookie is syntactically and functionally
   similar to using the WebRequest#getCookie/WebResponse#setcookie methods.
 * (bug 44740) jQuery upgraded from 1.8.3 to 1.11.1.
+* Changes to content typography (fonts, etc.). See
+  https://www.mediawiki.org/wiki/Typography_refresh for further information.
+* WikitextContent will now render redirects with the expected "redirect"
+  header, rather than as an ordered list. Code calling Article::viewRedirect
+  can probably be changed to no longer special-case redirects.
+* (bug 63903) Thumbnails without an explicit size specification are
+  now resized to a square bounding box. This gives better results for
+  non-landscape thumbnails.
 
 === Bug fixes in 1.24 ===
 * (bug 49116) Footer copyright notice is now always displayed in user language
@@ -41,13 +52,20 @@ production.
   claimed it would.
 * (bug 39035) Improved Vector skin performance by removing collapsibleNav,
   which used to collapse some sidebar elements by default.
+  This removes -list id suffixes like p-lang-list: instead of using things like
+  #p-lang-list, you can do #p-lang .body ul.
 * (bug 890) Links in Special:RecentChanges and Special:Watchlist no longer
   follow redirects to their target pages.
 * Parser now dies early if called recursively, instead of producing subtle bugs.
+* (bug 14323) Redirect pages, when viewed with redirect=no, no longer hide the
+  remaining page content.
 
 === Web API changes in 1.24 ===
 * action=parse API now supports prop=modules, which provides the list of
   ResourceLoader modules that should be used to enhance the parsed content.
+* action=query&meta=siteinfo&siprop=interwikimap returns a new "protorel"
+  field which is true iff protocol-relative urls can be used to access
+  a particular interwiki map entry.
 
 === Languages updated in 1.24 ===
 
@@ -60,9 +78,14 @@ changes to languages because of Bugzilla reports.
 * The deprecated function mw.util.toggleToc was removed.
 * The Special:Search hooks SpecialSearchGo and SpecialSearchResultsAppend
   were removed as they were unused.
+* (bug 65477) User::pingLimiter() now has an additional profile point varying
+  by action being used.
 * mediawiki.util.$content no longer supports old versions of the Vector,
   Monobook, Modern and CologneBlue skins that don't yet implement the "mw-body"
   and/or "mw-body-primary" class name in their html.
+* Added pp_sortkey column to page_props table, so pages can be efficiently
+  queried and sorted by property value (bug 58032).
+  See $wgPagePropsHaveSortkey if you want to postpone the schema change.
 
 ==== Renamed classes ====
 * CLDRPluralRuleConverter_Expression to CLDRPluralRuleConverterExpression
index f9473b8..c383af9 100644 (file)
@@ -1,6 +1,7 @@
 The Makefile, package.json, scripts, styleguide-template, and
-mediawiki.ui/styleguide.md files and directories in here support the automatic
-generation of CSS documentation from the source LESS files using kss for
+mediawiki.ui/styleguide.md files and directories here and in
+resources/src/mediawiki.ui/ support the automatic generation
+of CSS documentation from the source LESS files using kss for
 node.js, https://github.com/kneath/kss
 
 To build and open in your web browser, run:
index 99f3e4f..cb95197 100644 (file)
@@ -28,6 +28,7 @@
                        {{html overview}}
                {{else}}
                        {{#eachSection rootNumber}}
+                       <section>
                                {{#whenDepth 1}}
                                        <h1>{{ reference }}.0 - {{ header }}</h1>
                                {{else}}
                                {{/whenDepth}}
                                {{#ifAny markup modifiers}}
                                                <div>{{html description}}</div>
-                                               <strong>Default styling</strong><br>
-                                               {{modifierMarkup}}
+                                               <h4>Default styling</h4>
+                                               <blockquote>{{modifierMarkup}}</blockquote>
                                                {{#eachModifier}}
-                                               {{html description}}<br>
-                                               <p>{{name}}</p>
-                                               {{modifierMarkup}}
+                                                       <h4>{{name}}</h4>
+                                                       {{html description}}
+                                                       <blockquote>{{modifierMarkup}}</blockquote>
                                                {{/eachModifier}}
                                                <pre class="prettyprint lang-html">{{markup}}</pre>
                                {{else}}
@@ -53,6 +54,7 @@
                                                        {{html description}}
                                                {{/if}}
                                {{/ifAny}}
+                       </section>
                        {{/eachSection}}
                {{/if}}
        </article>
index 3bb1563..09d843d 100644 (file)
  * @internal documentation reviewed 15 Mar 2010
  */
 class Article implements Page {
-       /**@{{
-        * @private
-        */
-
-       /**
-        * The context this Article is executed in
-        * @var IContextSource $mContext
-        */
+       /** @var IContextSource The context this Article is executed in */
        protected $mContext;
 
-       /**
-        * The WikiPage object of this instance
-        * @var WikiPage $mPage
-        */
+       /** @var WikiPage The WikiPage object of this instance */
        protected $mPage;
 
-       /**
-        * ParserOptions object for $wgUser articles
-        * @var ParserOptions $mParserOptions
-        */
+       /** @var ParserOptions ParserOptions object for $wgUser articles */
        public $mParserOptions;
 
        /**
-        * Text of the revision we are working on
-        * @var string $mContent
+        * @var string Text of the revision we are working on
+        * @todo BC cruft
         */
-       var $mContent;                    // !< #BC cruft
+       public $mContent;
 
        /**
-        * Content of the revision we are working on
-        * @var Content
+        * @var Content Content of the revision we are working on
         * @since 1.21
         */
-       var $mContentObject;              // !<
+       protected $mContentObject;
 
-       /**
-        * Is the content ($mContent) already loaded?
-        * @var bool $mContentLoaded
-        */
-       var $mContentLoaded = false;      // !<
+       /** @var bool Is the content ($mContent) already loaded? */
+       protected $mContentLoaded = false;
 
-       /**
-        * The oldid of the article that is to be shown, 0 for the
-        * current revision
-        * @var int|null $mOldId
-        */
-       var $mOldId;                      // !<
+       /** @var int|null The oldid of the article that is to be shown, 0 for the current revision */
+       protected $mOldId;
 
-       /**
-        * Title from which we were redirected here
-        * @var Title $mRedirectedFrom
-        */
-       var $mRedirectedFrom = null;
+       /** @var Title Title from which we were redirected here */
+       protected $mRedirectedFrom = null;
 
-       /**
-        * URL to redirect to or false if none
-        * @var string|bool $mRedirectUrl
-        */
-       var $mRedirectUrl = false;        // !<
+       /** @var string|bool URL to redirect to or false if none */
+       protected $mRedirectUrl = false;
 
-       /**
-        * Revision ID of revision we are working on
-        * @var int $mRevIdFetched
-        */
-       var $mRevIdFetched = 0;           // !<
+       /** @var int Revision ID of revision we are working on */
+       protected $mRevIdFetched = 0;
 
-       /**
-        * Revision we are working on
-        * @var Revision $mRevision
-        */
-       var $mRevision = null;
-
-       /**
-        * ParserOutput object
-        * @var ParserOutput $mParserOutput
-        */
-       var $mParserOutput;
+       /** @var Revision Revision we are working on */
+       protected $mRevision = null;
 
-       /**@}}*/
+       /** @var ParserOutput */
+       public $mParserOutput;
 
        /**
         * Constructor and clear the article
index 305a8e5..49818e6 100644 (file)
  */
 
 class CategoryViewer extends ContextSource {
-       var $limit, $from, $until,
-               $articles, $articles_start_char,
-               $children, $children_start_char,
-               $showGallery, $imgsNoGalley,
-               $imgsNoGallery_start_char,
-               $imgsNoGallery;
+       /** @var int */
+       public $limit;
 
-       /**
-        * @var array
-        */
-       var $nextPage;
+       /** @var array */
+       protected $from;
 
-       /**
-        * @var array
-        */
-       var $flip;
+       /** @var array */
+       protected $until;
 
-       /**
-        * @var Title
-        */
-       var $title;
+       /** @var string[] */
+       public $articles;
 
-       /**
-        * @var Collation
-        */
-       var $collation;
+       /** @var array */
+       public $articles_start_char;
 
-       /**
-        * @var ImageGallery
-        */
-       var $gallery;
+       /** @var array */
+       protected $children;
 
-       /**
-        * Category object for this page
-        * @var Category
-        */
+       /** @var array */
+       protected $children_start_char;
+
+       /** @var bool */
+       protected $showGallery;
+
+       /** @var array */
+       protected $imgsNoGallery_start_char;
+
+       /** @var array */
+       protected $imgsNoGallery;
+
+       /** @var array */
+       protected $nextPage;
+
+       /** @var array */
+       protected $flip;
+
+       /** @var Title */
+       protected $title;
+
+       /** @var Collation */
+       protected $collation;
+
+       /** @var ImageGallery */
+       protected $gallery;
+
+       /** @var Category Category object for this page. */
        private $cat;
 
-       /**
-        * The original query array, to be used in generating paging links.
-        * @var array
-        */
+       /** @var array The original query array, to be used in generating paging links. */
        private $query;
 
        /**
-        * Constructor
-        *
         * @since 1.19 $context is a second, required parameter
         * @param Title $title
         * @param IContextSource $context
index 4e0c6a4..71adb09 100644 (file)
@@ -523,28 +523,6 @@ class IcuCollation extends Collation {
                return count( $this->firstLetterData['chars'] );
        }
 
-       /**
-        * Do a binary search, and return the index of the largest item that sorts
-        * less than or equal to the target value.
-        *
-        * @deprecated since 1.23; use ArrayUtils::findLowerBound() instead
-        *
-        * @param array $valueCallback A function to call to get the value with
-        *     a given array index.
-        * @param int $valueCount The number of items accessible via $valueCallback,
-        *     indexed from 0 to $valueCount - 1
-        * @param array $comparisonCallback A callback to compare two values, returning
-        *     -1, 0 or 1 in the style of strcmp().
-        * @param string $target The target value to find.
-        *
-        * @return int|bool The item index of the lower bound, or false if the target value
-        *     sorts before all items.
-        */
-       function findLowerBound( $valueCallback, $valueCount, $comparisonCallback, $target ) {
-               wfDeprecated( __METHOD__, '1.23' );
-               return ArrayUtils::findLowerBound( $valueCallback, $valueCount, $comparisonCallback, $target );
-       }
-
        static function isCjk( $codepoint ) {
                foreach ( self::$cjkBlocks as $block ) {
                        if ( $codepoint >= $block[0] && $codepoint <= $block[1] ) {
index 8a63786..d1fda2e 100644 (file)
@@ -35,7 +35,11 @@ class DeprecatedGlobal extends StubObject {
                $this->mVersion = $version;
        }
 
+       // @codingStandardsIgnoreStart
+       // PSR2.Methods.MethodDeclaration.Underscore
+       // PSR2.Classes.PropertyDeclaration.ScopeMissing
        function _newObject() {
+
                /* Put the caller offset for wfDeprecated as 6, as
                 * that gives the function that uses this object, since:
                 * 1 = this function ( _newObject )
@@ -51,4 +55,5 @@ class DeprecatedGlobal extends StubObject {
                wfDeprecated( '$' . $this->mGlobal, $this->mVersion, false, 6 );
                return $this->mRealValue;
        }
+       // @codingStandardsIgnoreEnd
 }
index 7be6274..ca11f16 100644 (file)
@@ -175,8 +175,9 @@ class EditPage {
         * The cookie will be removed instantly if the JavaScript runs.
         *
         * Otherwise, though, we don't want the cookies to accumulate.
-        * RFC 2109 ( https://www.ietf.org/rfc/rfc2109.txt ) specifies a possible limit of only 20 cookies per domain.
-        * This still applies at least to some versions of IE without full updates:
+        * RFC 2109 ( https://www.ietf.org/rfc/rfc2109.txt ) specifies a possible
+        * limit of only 20 cookies per domain. This still applies at least to some
+        * versions of IE without full updates:
         * https://blogs.msdn.com/b/ieinternals/archive/2009/08/20/wininet-ie-cookie-internals-faq.aspx
         *
         * A value of 20 minutes should be enough to take into account slow loads and minor
@@ -184,65 +185,160 @@ class EditPage {
         */
        const POST_EDIT_COOKIE_DURATION = 1200;
 
-       /**
-        * @var Article
-        */
-       var $mArticle;
+       /** @var Article */
+       public $mArticle;
 
-       /**
-        * @var Title
-        */
-       var $mTitle;
+       /** @var Title */
+       public $mTitle;
+
+       /** @var null|Title */
        private $mContextTitle = null;
-       var $action = 'submit';
-       var $isConflict = false;
-       var $isCssJsSubpage = false;
-       var $isCssSubpage = false;
-       var $isJsSubpage = false;
-       var $isWrongCaseCssJsPage = false;
-       var $isNew = false; // new page or new section
-       var $deletedSinceEdit;
-       var $formtype;
-       var $firsttime;
-       var $lastDelete;
-       var $mTokenOk = false;
-       var $mTokenOkExceptSuffix = false;
-       var $mTriedSave = false;
-       var $incompleteForm = false;
-       var $tooBig = false;
-       var $kblength = false;
-       var $missingComment = false;
-       var $missingSummary = false;
-       var $allowBlankSummary = false;
-       var $autoSumm = '';
-       var $hookError = '';
-       #var $mPreviewTemplates;
-
-       /**
-        * @var ParserOutput
-        */
-       var $mParserOutput;
-
-       /**
-        * Has a summary been preset using GET parameter &summary= ?
-        * @var bool
-        */
-       var $hasPresetSummary = false;
-
-       var $mBaseRevision = false;
-       var $mShowSummaryField = true;
+
+       /** @var string */
+       protected $action = 'submit';
+
+       /** @var bool */
+       public $isConflict = false;
+
+       /** @var bool */
+       public $isCssJsSubpage = false;
+
+       /** @var bool */
+       public $isCssSubpage = false;
+
+       /** @var bool */
+       public $isJsSubpage = false;
+
+       /** @var bool */
+       protected $isWrongCaseCssJsPage = false;
+
+       /** @var bool New page or new section */
+       protected $isNew = false;
+
+       /** @var bool */
+       protected $deletedSinceEdit;
+
+       /** @var string */
+       public $formtype;
+
+       /** @var bool */
+       public $firsttime;
+
+       /** @var bool|stdClass */
+       protected $lastDelete;
+
+       /** @var bool */
+       protected $mTokenOk = false;
+
+       /** @var bool */
+       protected $mTokenOkExceptSuffix = false;
+
+       /** @var bool */
+       protected $mTriedSave = false;
+
+       /** @var bool */
+       protected $incompleteForm = false;
+
+       /** @var bool */
+       protected $tooBig = false;
+
+       /** @var bool */
+       protected $kblength = false;
+
+       /** @var bool */
+       protected $missingComment = false;
+
+       /** @var bool */
+       protected $missingSummary = false;
+
+       /** @var bool */
+       protected $allowBlankSummary = false;
+
+       /** @var string */
+       protected $autoSumm = '';
+
+       /** @var string */
+       public $hookError = '';
+
+       /** @var ParserOutput */
+       protected $mParserOutput;
+
+       /** @var bool Has a summary been preset using GET parameter &summary= ? */
+       protected $hasPresetSummary = false;
+
+       /** @var bool */
+       protected $mBaseRevision = false;
+
+       /** @var bool */
+       public $mShowSummaryField = true;
 
        # Form values
-       var $save = false, $preview = false, $diff = false;
-       var $minoredit = false, $watchthis = false, $recreate = false;
-       var $textbox1 = '', $textbox2 = '', $summary = '', $nosummary = false;
-       var $edittime = '', $section = '', $sectiontitle = '', $starttime = '';
-       var $oldid = 0, $editintro = '', $scrolltop = null, $bot = true;
-       var $contentModel = null, $contentFormat = null;
+
+       /** @var bool */
+       public $save = false;
+
+       /** @var bool */
+       public $preview = false;
+
+       /** @var bool */
+       protected $diff = false;
+
+       /** @var bool */
+       public $minoredit = false;
+
+       /** @var bool */
+       protected $watchthis = false;
+
+       /** @var bool */
+       protected $recreate = false;
+
+       /** @var string */
+       public $textbox1 = '';
+
+       /** @var string */
+       public $textbox2 = '';
+
+       /** @var string */
+       public $summary = '';
+
+       /** @var bool */
+       protected $nosummary = false;
+
+       /** @var string */
+       public $edittime = '';
+
+       /** @var string */
+       public $section = '';
+
+       /** @var string */
+       public $sectiontitle = '';
+
+       /** @var string */
+       protected $starttime = '';
+
+       /** @var int */
+       public $oldid = 0;
+
+       /** @var string */
+       protected $editintro = '';
+
+       /** @var null */
+       public $scrolltop = null;
+
+       /** @var bool */
+       public $bot = true;
+
+       /** @var null|string */
+       public $contentModel = null;
+
+       /** @var null|string */
+       public $contentFormat = null;
 
        # Placeholders for text injection by hooks (must be HTML)
        # extensions should take care to _append_ to the present value
-       public $editFormPageTop = ''; // Before even the preview
+
+       /** @var string Before even the preview */
+       public $editFormPageTop = '';
        public $editFormTextTop = '';
        public $editFormTextBeforeContent = '';
        public $editFormTextAfterWarn = '';
@@ -258,13 +354,15 @@ class EditPage {
 
        public $suppressIntro = false;
 
-       /**
-        * Set to true to allow editing of non-text content types.
-        *
-        * @var bool
-        */
+       /** @var bool Set to true to allow editing of non-text content types. */
        public $allowNonTextContent = false;
 
+       /** @var bool */
+       protected $edit;
+
+       /** @var bool */
+       public $live;
+
        /**
         * @param Article $article
         */
@@ -411,6 +509,7 @@ class EditPage {
                $this->isCssJsSubpage = $this->mTitle->isCssJsSubpage();
                $this->isCssSubpage = $this->mTitle->isCssSubpage();
                $this->isJsSubpage = $this->mTitle->isJsSubpage();
+               // @todo FIXME: Silly assignment.
                $this->isWrongCaseCssJsPage = $this->isWrongCaseCssJsPage();
 
                # Show applicable editing introductions
@@ -514,7 +613,10 @@ class EditPage {
                wfRunHooks( 'EditPage::showReadOnlyForm:initial', array( $this, &$wgOut ) );
 
                $wgOut->setRobotPolicy( 'noindex,nofollow' );
-               $wgOut->setPageTitle( wfMessage( 'viewsource-title', $this->getContextTitle()->getPrefixedText() ) );
+               $wgOut->setPageTitle( wfMessage(
+                       'viewsource-title',
+                       $this->getContextTitle()->getPrefixedText()
+               ) );
                $wgOut->addBacklinkSubtitle( $this->getContextTitle() );
                $wgOut->addWikiText( $wgOut->formatPermissionsErrorMessage( $permErrors, 'edit' ) );
                $wgOut->addHTML( "<hr />\n" );
@@ -577,7 +679,9 @@ class EditPage {
                } elseif ( $this->section == 'new' ) {
                        // Nothing *to* preview for new sections
                        return false;
-               } elseif ( ( $wgRequest->getVal( 'preload' ) !== null || $this->mTitle->exists() ) && $wgUser->getOption( 'previewonfirst' ) ) {
+               } elseif ( ( $wgRequest->getVal( 'preload' ) !== null || $this->mTitle->exists() )
+                       && $wgUser->getOption( 'previewonfirst' )
+               ) {
                        // Standard preference behavior
                        return true;
                } elseif ( !$this->mTitle->exists()
@@ -747,7 +851,8 @@ class EditPage {
                        ) {
                                $this->allowBlankSummary = true;
                        } else {
-                               $this->allowBlankSummary = $request->getBool( 'wpIgnoreBlankSummary' ) || !$wgUser->getOption( 'forceeditsummary' );
+                               $this->allowBlankSummary = $request->getBool( 'wpIgnoreBlankSummary' )
+                                       || !$wgUser->getOption( 'forceeditsummary' );
                        }
 
                        $this->autoSumm = $request->getText( 'wpAutoSummary' );
@@ -764,7 +869,8 @@ class EditPage {
                        $this->save = false;
                        $this->diff = false;
                        $this->minoredit = false;
-                       $this->watchthis = $request->getBool( 'watchthis', false ); // Watch may be overridden by request parameters
+                       // Watch may be overridden by request parameters
+                       $this->watchthis = $request->getBool( 'watchthis', false );
                        $this->recreate = false;
 
                        // When creating a new section, we can preload a section title by passing it as the
@@ -790,17 +896,26 @@ class EditPage {
                $this->bot = $request->getBool( 'bot', true );
                $this->nosummary = $request->getBool( 'nosummary' );
 
-               $this->contentModel = $request->getText( 'model', $this->contentModel ); #may be overridden by revision
-               $this->contentFormat = $request->getText( 'format', $this->contentFormat ); #may be overridden by revision
+               // May be overridden by revision.
+               $this->contentModel = $request->getText( 'model', $this->contentModel );
+               // May be overridden by revision.
+               $this->contentFormat = $request->getText( 'format', $this->contentFormat );
 
-               if ( !ContentHandler::getForModelID( $this->contentModel )->isSupportedFormat( $this->contentFormat ) ) {
+               if ( !ContentHandler::getForModelID( $this->contentModel )
+                       ->isSupportedFormat( $this->contentFormat )
+               ) {
                        throw new ErrorPageError(
                                'editpage-notsupportedcontentformat-title',
                                'editpage-notsupportedcontentformat-text',
                                array( $this->contentFormat, ContentHandler::getLocalizedName( $this->contentModel ) )
                        );
                }
-               #TODO: check if the desired model is allowed in this namespace, and if a transition from the page's current model to the new model is allowed
+
+               /**
+                * @todo Check if the desired model is allowed in this namespace, and if
+                *   a transition from the page's current model to the new model is
+                *   allowed.
+                */
 
                $this->live = $request->getCheck( 'live' );
                $this->editintro = $request->getText( 'editintro',
@@ -1254,13 +1369,18 @@ class EditPage {
         * @param array|bool $resultDetails
         *
         * @throws ErrorPageError
-        * return bool false, if output is done, true if rest of the form should be displayed
+        * @return bool false, if output is done, true if rest of the form should be displayed
         */
        private function handleStatus( Status $status, $resultDetails ) {
                global $wgUser, $wgOut;
 
-               // FIXME: once the interface for internalAttemptSave() is made nicer, this should use the message in $status
-               if ( $status->value == self::AS_SUCCESS_UPDATE || $status->value == self::AS_SUCCESS_NEW_ARTICLE ) {
+               /**
+                * @todo FIXME: once the interface for internalAttemptSave() is made
+                *   nicer, this should use the message in $status
+                */
+               if ( $status->value == self::AS_SUCCESS_UPDATE
+                       || $status->value == self::AS_SUCCESS_NEW_ARTICLE
+               ) {
                        $this->didSave = true;
                        if ( !$resultDetails['nullEdit'] ) {
                                $this->setPostEditCookie( $status->value );
@@ -1296,7 +1416,10 @@ class EditPage {
                                $sectionanchor = $resultDetails['sectionanchor'];
 
                                // Give extensions a chance to modify URL query on update
-                               wfRunHooks( 'ArticleUpdateBeforeRedirect', array( $this->mArticle, &$sectionanchor, &$extraQuery ) );
+                               wfRunHooks(
+                                       'ArticleUpdateBeforeRedirect',
+                                       array( $this->mArticle, &$sectionanchor, &$extraQuery )
+                               );
 
                                if ( $resultDetails['redirect'] ) {
                                        if ( $extraQuery == '' ) {
@@ -1399,18 +1522,26 @@ class EditPage {
        /**
         * Attempt submission (no UI)
         *
-        * @param array $result Array to add statuses to, currently with the possible keys:
-        *  spam - string - Spam string from content if any spam is detected by matchSpamRegex
-        *  sectionanchor - string - Section anchor for a section save
-        *  nullEdit - boolean - Set if doEditContent is OK.  True if null edit, false otherwise.
-        *  redirect - boolean -  Set if doEditContent is OK.  True if resulting revision is a redirect
+        * @param array $result Array to add statuses to, currently with the
+        *   possible keys:
+        *   - spam (string): Spam string from content if any spam is detected by
+        *     matchSpamRegex.
+        *   - sectionanchor (string): Section anchor for a section save.
+        *   - nullEdit (boolean): Set if doEditContent is OK.  True if null edit,
+        *     false otherwise.
+        *   - redirect (bool): Set if doEditContent is OK. True if resulting
+        *     revision is a redirect.
         * @param bool $bot True if edit is being made under the bot right.
         *
-        * @return Status Status object, possibly with a message, but always with one of the AS_* constants in $status->value,
+        * @return Status Status object, possibly with a message, but always with
+        *   one of the AS_* constants in $status->value,
         *
-        * FIXME: This interface is TERRIBLE, but hard to get rid of due to various error display idiosyncrasies. There are
-        * also lots of cases where error metadata is set in the object and retrieved later instead of being returned, e.g.
-        * AS_CONTENT_TOO_BIG and AS_BLOCKED_PAGE_FOR_USER. All that stuff needs to be cleaned up some time.
+        * @todo FIXME: This interface is TERRIBLE, but hard to get rid of due to
+        *   various error display idiosyncrasies. There are also lots of cases
+        *   where error metadata is set in the object and retrieved later instead
+        *   of being returned, e.g. AS_CONTENT_TOO_BIG and
+        *   AS_BLOCKED_PAGE_FOR_USER. All that stuff needs to be cleaned up some
+        * time.
         */
        function internalAttemptSave( &$result, $bot = false ) {
                global $wgUser, $wgRequest, $wgParser, $wgMaxArticleSize;
@@ -1451,7 +1582,12 @@ class EditPage {
                        # Construct Content object
                        $textbox_content = $this->toEditContent( $this->textbox1 );
                } catch ( MWContentSerializationException $ex ) {
-                       $status->fatal( 'content-failed-to-parse', $this->contentModel, $this->contentFormat, $ex->getMessage() );
+                       $status->fatal(
+                               'content-failed-to-parse',
+                               $this->contentModel,
+                               $this->contentFormat,
+                               $ex->getMessage()
+                       );
                        $status->value = self::AS_PARSE_ERROR;
                        wfProfileOut( __METHOD__ . '-checks' );
                        wfProfileOut( __METHOD__ );
@@ -1461,7 +1597,8 @@ class EditPage {
                # Check image redirect
                if ( $this->mTitle->getNamespace() == NS_FILE &&
                        $textbox_content->isRedirect() &&
-                       !$wgUser->isAllowed( 'upload' ) ) {
+                       !$wgUser->isAllowed( 'upload' )
+               ) {
                                $code = $wgUser->isAnon() ? self::AS_IMAGE_REDIRECT_ANON : self::AS_IMAGE_REDIRECT_LOGGED;
                                $status->setResult( false, $code );
 
@@ -1500,7 +1637,10 @@ class EditPage {
                        wfProfileOut( __METHOD__ );
                        return $status;
                }
-               if ( !wfRunHooks( 'EditFilter', array( $this, $this->textbox1, $this->section, &$this->hookError, $this->summary ) ) ) {
+               if ( !wfRunHooks(
+                       'EditFilter',
+                       array( $this, $this->textbox1, $this->section, &$this->hookError, $this->summary ) )
+               ) {
                        # Error messages etc. could be handled within the hook...
                        $status->fatal( 'hookaborted' );
                        $status->value = self::AS_HOOK_ERROR;
@@ -1622,7 +1762,8 @@ class EditPage {
                                        $content = $content->addSectionHeader( $this->sectiontitle );
 
                                        // Jump to the new section
-                                       $result['sectionanchor'] = $wgParser->guessLegacySectionNameFromWikiText( $this->sectiontitle );
+                                       $result['sectionanchor'] =
+                                               $wgParser->guessLegacySectionNameFromWikiText( $this->sectiontitle );
 
                                        // If no edit summary was specified, create one automatically from the section
                                        // title and have it link to the new section. Otherwise, respect the summary as
@@ -1665,14 +1806,19 @@ class EditPage {
                                                // Probably a duplicate submission of a new comment.
                                                // This can happen when squid resends a request after
                                                // a timeout but the first one actually went through.
-                                               wfDebug( __METHOD__ . ": duplicate new section submission; trigger edit conflict!\n" );
+                                               wfDebug( __METHOD__
+                                                       . ": duplicate new section submission; trigger edit conflict!\n" );
                                        } else {
                                                // New comment; suppress conflict.
                                                $this->isConflict = false;
                                                wfDebug( __METHOD__ . ": conflict suppressed; new section\n" );
                                        }
-                               } elseif ( $this->section == '' && Revision::userWasLastToEdit( DB_MASTER, $this->mTitle->getArticleID(),
-                                                       $wgUser->getId(), $this->edittime ) ) {
+                               } elseif ( $this->section == ''
+                                       && Revision::userWasLastToEdit(
+                                               DB_MASTER, $this->mTitle->getArticleID(),
+                                               $wgUser->getId(), $this->edittime
+                                       )
+                               ) {
                                        # Suppress edit conflict with self, except for section edits where merging is required.
                                        wfDebug( __METHOD__ . ": Suppressing edit conflict, same user.\n" );
                                        $this->isConflict = false;
@@ -1689,13 +1835,23 @@ class EditPage {
                        $content = null;
 
                        if ( $this->isConflict ) {
-                               wfDebug( __METHOD__ . ": conflict! getting section '{$this->section}' for time '{$this->edittime}'"
-                                               . " (article time '{$timestamp}')\n" );
-
-                               $content = $this->mArticle->replaceSectionContent( $this->section, $textbox_content, $sectionTitle, $this->edittime );
+                               wfDebug( __METHOD__
+                                       . ": conflict! getting section '{$this->section}' for time '{$this->edittime}'"
+                                       . " (article time '{$timestamp}')\n" );
+
+                               $content = $this->mArticle->replaceSectionContent(
+                                       $this->section,
+                                       $textbox_content,
+                                       $sectionTitle,
+                                       $this->edittime
+                               );
                        } else {
                                wfDebug( __METHOD__ . ": getting section '{$this->section}'\n" );
-                               $content = $this->mArticle->replaceSectionContent( $this->section, $textbox_content, $sectionTitle );
+                               $content = $this->mArticle->replaceSectionContent(
+                                       $this->section,
+                                       $textbox_content,
+                                       $sectionTitle
+                               );
                        }
 
                        if ( is_null( $content ) ) {
@@ -1779,12 +1935,13 @@ class EditPage {
                                                ->rawParams( $cleanSummary )->inContentLanguage()->text();
                                }
                        } elseif ( $this->section != '' ) {
-                               # Try to get a section anchor from the section source, redirect to edited section if header found
-                               # XXX: might be better to integrate this into Article::replaceSection
-                               # for duplicate heading checking and maybe parsing
+                               # Try to get a section anchor from the section source, redirect
+                               # to edited section if header found.
+                               # XXX: Might be better to integrate this into Article::replaceSection
+                               # for duplicate heading checking and maybe parsing.
                                $hasmatch = preg_match( "/^ *([=]{1,6})(.*?)(\\1) *\\n/i", $this->textbox1, $matches );
-                               # we can't deal with anchors, includes, html etc in the header for now,
-                               # headline would need to be parsed to improve this
+                               # We can't deal with anchors, includes, html etc in the header for now,
+                               # headline would need to be parsed to improve this.
                                if ( $hasmatch && strlen( $matches[2] ) > 0 ) {
                                        $sectionanchor = $wgParser->guessLegacySectionNameFromWikiText( $matches[2] );
                                }
@@ -1803,7 +1960,7 @@ class EditPage {
                }
 
                // Check for length errors again now that the section is merged in
-                       $this->kblength = (int)( strlen( $this->toEditText( $content ) ) / 1024 );
+               $this->kblength = (int)( strlen( $this->toEditText( $content ) ) / 1024 );
                if ( $this->kblength > $wgMaxArticleSize ) {
                        $this->tooBig = true;
                        $status->setResult( false, self::AS_MAX_ARTICLE_SIZE_EXCEEDED );
@@ -1816,8 +1973,8 @@ class EditPage {
                        ( ( $this->minoredit && !$this->isNew ) ? EDIT_MINOR : 0 ) |
                        ( $bot ? EDIT_FORCE_BOT : 0 );
 
-                       $doEditStatus = $this->mArticle->doEditContent( $content, $this->summary, $flags,
-                                                                                                                       false, null, $this->contentFormat );
+               $doEditStatus = $this->mArticle->doEditContent( $content, $this->summary, $flags,
+                                                                                                               false, null, $this->contentFormat );
 
                if ( !$doEditStatus->isOK() ) {
                        // Failure from doEdit()
@@ -2018,9 +2175,14 @@ class EditPage {
                } elseif ( $contextTitle->exists() && $this->section != '' ) {
                        $msg = $this->section == 'new' ? 'editingcomment' : 'editingsection';
                } else {
-                       $msg = $contextTitle->exists() || ( $contextTitle->getNamespace() == NS_MEDIAWIKI && $contextTitle->getDefaultMessageText() !== false ) ?
-                               'editing' : 'creating';
+                       $msg = $contextTitle->exists()
+                               || ( $contextTitle->getNamespace() == NS_MEDIAWIKI
+                                       && $contextTitle->getDefaultMessageText() !== false
+                               )
+                               ? 'editing'
+                               : 'creating';
                }
+
                # Use the title defined by DISPLAYTITLE magic word when present
                $displayTitle = isset( $this->mParserOutput ) ? $this->mParserOutput->getDisplayTitle() : false;
                if ( $displayTitle === false ) {
@@ -2154,14 +2316,16 @@ class EditPage {
         *
         * If $content is null or false or a string, $content is returned unchanged.
         *
-        * If the given Content object is not of a type that can be edited using the text base EditPage,
-        * an exception will be raised. Set $this->allowNonTextContent to true to allow editing of non-textual
+        * If the given Content object is not of a type that can be edited using
+        * the text base EditPage, an exception will be raised. Set
+        * $this->allowNonTextContent to true to allow editing of non-textual
         * content.
         *
         * @param Content|null|bool|string $content
         * @return string The editable text form of the content.
         *
-        * @throws MWException if $content is not an instance of TextContent and $this->allowNonTextContent is not true.
+        * @throws MWException if $content is not an instance of TextContent and
+        *   $this->allowNonTextContent is not true.
         */
        protected function toEditText( $content ) {
                if ( $content === null || $content === false ) {
@@ -2183,16 +2347,18 @@ class EditPage {
        /**
         * Turns the given text into a Content object by unserializing it.
         *
-        * If the resulting Content object is not of a type that can be edited using the text base EditPage,
-        * an exception will be raised. Set $this->allowNonTextContent to true to allow editing of non-textual
+        * If the resulting Content object is not of a type that can be edited using
+        * the text base EditPage, an exception will be raised. Set
+        * $this->allowNonTextContent to true to allow editing of non-textual
         * content.
         *
         * @param string|null|bool $text Text to unserialize
-        * @return Content The content object created from $text. If $text was false or null, false resp. null will be
-        *                 returned instead.
+        * @return Content The content object created from $text. If $text was false
+        *   or null, false resp. null will be  returned instead.
         *
-        * @throws MWException if unserializing the text results in a Content object that is not an instance of TextContent
-        *          and $this->allowNonTextContent is not true.
+        * @throws MWException if unserializing the text results in a Content
+        *   object that is not an instance of TextContent and
+        *   $this->allowNonTextContent is not true.
         */
        protected function toEditContent( $text ) {
                if ( $text === false || $text === null ) {
@@ -2260,9 +2426,16 @@ class EditPage {
 
                // @todo add EditForm plugin interface and use it here!
                //       search for textarea1 and textares2, and allow EditForm to override all uses.
-               $wgOut->addHTML( Html::openElement( 'form', array( 'id' => self::EDITFORM_ID, 'name' => self::EDITFORM_ID,
-                       'method' => 'post', 'action' => $this->getActionURL( $this->getContextTitle() ),
-                       'enctype' => 'multipart/form-data' ) ) );
+               $wgOut->addHTML( Html::openElement(
+                       'form',
+                       array(
+                               'id' => self::EDITFORM_ID,
+                               'name' => self::EDITFORM_ID,
+                               'method' => 'post',
+                               'action' => $this->getActionURL( $this->getContextTitle() ),
+                               'enctype' => 'multipart/form-data'
+                       )
+               ) );
 
                if ( is_callable( $formCallback ) ) {
                        call_user_func_array( $formCallback, array( &$wgOut ) );
@@ -2271,8 +2444,20 @@ class EditPage {
                // Add an empty field to trip up spambots
                $wgOut->addHTML(
                        Xml::openElement( 'div', array( 'id' => 'antispam-container', 'style' => 'display: none;' ) )
-                       . Html::rawElement( 'label', array( 'for' => 'wpAntiSpam' ), wfMessage( 'simpleantispam-label' )->parse() )
-                       . Xml::element( 'input', array( 'type' => 'text', 'name' => 'wpAntispam', 'id' => 'wpAntispam', 'value' => '' ) )
+                       . Html::rawElement(
+                               'label',
+                               array( 'for' => 'wpAntiSpam' ),
+                               wfMessage( 'simpleantispam-label' )->parse()
+                       )
+                       . Xml::element(
+                               'input',
+                               array(
+                                       'type' => 'text',
+                                       'name' => 'wpAntispam',
+                                       'id' => 'wpAntispam',
+                                       'value' => ''
+                               )
+                       )
                        . Xml::closeElement( 'div' )
                );
 
@@ -2389,7 +2574,12 @@ class EditPage {
                                $this->showConflict();
                        } catch ( MWContentSerializationException $ex ) {
                                // this can't really happen, but be nice if it does.
-                               $msg = wfMessage( 'content-failed-to-parse', $this->contentModel, $this->contentFormat, $ex->getMessage() );
+                               $msg = wfMessage(
+                                       'content-failed-to-parse',
+                                       $this->contentModel,
+                                       $this->contentFormat,
+                                       $ex->getMessage()
+                               );
                                $wgOut->addWikiText( '<div class="error">' . $msg->text() . '</div>' );
                        }
                }
@@ -2419,6 +2609,9 @@ class EditPage {
                }
        }
 
+       /**
+        * @return bool
+        */
        protected function showHeader() {
                global $wgOut, $wgUser, $wgMaxArticleSize, $wgLang;
 
@@ -2476,9 +2669,15 @@ class EditPage {
                                        // Let sysop know that this will make private content public if saved
 
                                        if ( !$revision->userCan( Revision::DELETED_TEXT, $wgUser ) ) {
-                                               $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-permission' );
+                                               $wgOut->wrapWikiMsg(
+                                                       "<div class='mw-warning plainlinks'>\n$1\n</div>\n",
+                                                       'rev-deleted-text-permission'
+                                               );
                                        } elseif ( $revision->isDeleted( Revision::DELETED_TEXT ) ) {
-                                               $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-view' );
+                                               $wgOut->wrapWikiMsg(
+                                                       "<div class='mw-warning plainlinks'>\n$1\n</div>\n",
+                                                       'rev-deleted-text-view'
+                                               );
                                        }
 
                                        if ( !$revision->isCurrent() ) {
@@ -2495,7 +2694,10 @@ class EditPage {
                }
 
                if ( wfReadOnly() ) {
-                       $wgOut->wrapWikiMsg( "<div id=\"mw-read-only-warning\">\n$1\n</div>", array( 'readonlywarning', wfReadOnlyReason() ) );
+                       $wgOut->wrapWikiMsg(
+                               "<div id=\"mw-read-only-warning\">\n$1\n</div>",
+                               array( 'readonlywarning', wfReadOnlyReason() )
+                       );
                } elseif ( $wgUser->isAnon() ) {
                        if ( $this->formtype != 'preview' ) {
                                $wgOut->wrapWikiMsg( "<div id=\"mw-anon-edit-warning\">\n$1</div>", 'anoneditwarning' );
@@ -2506,15 +2708,24 @@ class EditPage {
                        if ( $this->isCssJsSubpage ) {
                                # Check the skin exists
                                if ( $this->isWrongCaseCssJsPage ) {
-                                       $wgOut->wrapWikiMsg( "<div class='error' id='mw-userinvalidcssjstitle'>\n$1\n</div>", array( 'userinvalidcssjstitle', $this->mTitle->getSkinFromCssJsSubpage() ) );
+                                       $wgOut->wrapWikiMsg(
+                                               "<div class='error' id='mw-userinvalidcssjstitle'>\n$1\n</div>",
+                                               array( 'userinvalidcssjstitle', $this->mTitle->getSkinFromCssJsSubpage() )
+                                       );
                                }
                                if ( $this->formtype !== 'preview' ) {
                                        if ( $this->isCssSubpage ) {
-                                               $wgOut->wrapWikiMsg( "<div id='mw-usercssyoucanpreview'>\n$1\n</div>", array( 'usercssyoucanpreview' ) );
+                                               $wgOut->wrapWikiMsg(
+                                                       "<div id='mw-usercssyoucanpreview'>\n$1\n</div>",
+                                                       array( 'usercssyoucanpreview' )
+                                               );
                                        }
 
                                        if ( $this->isJsSubpage ) {
-                                               $wgOut->wrapWikiMsg( "<div id='mw-userjsyoucanpreview'>\n$1\n</div>", array( 'userjsyoucanpreview' ) );
+                                               $wgOut->wrapWikiMsg(
+                                                       "<div id='mw-userjsyoucanpreview'>\n$1\n</div>",
+                                                       array( 'userjsyoucanpreview' )
+                                               );
                                        }
                                }
                        }
@@ -2561,16 +2772,27 @@ class EditPage {
 
                if ( $this->tooBig || $this->kblength > $wgMaxArticleSize ) {
                        $wgOut->wrapWikiMsg( "<div class='error' id='mw-edit-longpageerror'>\n$1\n</div>",
-                               array( 'longpageerror', $wgLang->formatNum( $this->kblength ), $wgLang->formatNum( $wgMaxArticleSize ) ) );
+                               array(
+                                       'longpageerror',
+                                       $wgLang->formatNum( $this->kblength ),
+                                       $wgLang->formatNum( $wgMaxArticleSize )
+                               )
+                       );
                } else {
                        if ( !wfMessage( 'longpage-hint' )->isDisabled() ) {
                                $wgOut->wrapWikiMsg( "<div id='mw-edit-longpage-hint'>\n$1\n</div>",
-                                       array( 'longpage-hint', $wgLang->formatSize( strlen( $this->textbox1 ) ), strlen( $this->textbox1 ) )
+                                       array(
+                                               'longpage-hint',
+                                               $wgLang->formatSize( strlen( $this->textbox1 ) ),
+                                               strlen( $this->textbox1 )
+                                       )
                                );
                        }
                }
                # Add header copyright warning
                $this->showHeaderCopyrightWarning();
+
+               return true;
        }
 
        /**
@@ -2587,7 +2809,9 @@ class EditPage {
         *
         * @return array An array in the format array( $label, $input )
         */
-       function getSummaryInput( $summary = "", $labelText = null, $inputAttrs = null, $spanLabelAttrs = null ) {
+       function getSummaryInput( $summary = "", $labelText = null,
+               $inputAttrs = null, $spanLabelAttrs = null
+       ) {
                // Note: the maxlength is overridden in JS to 255 and to make it use UTF-8 bytes, not characters.
                $inputAttrs = ( is_array( $inputAttrs ) ? $inputAttrs : array() ) + array(
                        'id' => 'wpSummary',
@@ -2604,7 +2828,11 @@ class EditPage {
 
                $label = null;
                if ( $labelText ) {
-                       $label = Xml::tags( 'label', $inputAttrs['id'] ? array( 'for' => $inputAttrs['id'] ) : null, $labelText );
+                       $label = Xml::tags(
+                               'label',
+                               $inputAttrs['id'] ? array( 'for' => $inputAttrs['id'] ) : null,
+                               $labelText
+                       );
                        $label = Xml::tags( 'span', $spanLabelAttrs, $label );
                }
 
@@ -2635,7 +2863,12 @@ class EditPage {
                }
                $summary = $wgContLang->recodeForEdit( $summary );
                $labelText = wfMessage( $isSubjectPreview ? 'subject' : 'summary' )->parse();
-               list( $label, $input ) = $this->getSummaryInput( $summary, $labelText, array( 'class' => $summaryClass ), array() );
+               list( $label, $input ) = $this->getSummaryInput(
+                       $summary,
+                       $labelText,
+                       array( 'class' => $summaryClass ),
+                       array()
+               );
                $wgOut->addHTML( "{$label} {$input}" );
        }
 
@@ -2662,7 +2895,8 @@ class EditPage {
 
                $message = $isSubjectPreview ? 'subject-preview' : 'summary-preview';
 
-               $summary = wfMessage( $message )->parse() . Linker::commentBlock( $summary, $this->mTitle, $isSubjectPreview );
+               $summary = wfMessage( $message )->parse()
+                       . Linker::commentBlock( $summary, $this->mTitle, $isSubjectPreview );
                return Xml::tags( 'div', array( 'class' => 'mw-summary-preview' ), $summary );
        }
 
@@ -2754,7 +2988,11 @@ HTML
                        }
                }
 
-               $this->showTextbox( $textoverride !== null ? $textoverride : $this->textbox1, 'wpTextbox1', $attribs );
+               $this->showTextbox(
+                       $textoverride !== null ? $textoverride : $this->textbox1,
+                       'wpTextbox1',
+                       $attribs
+               );
        }
 
        protected function showTextbox2() {
@@ -2778,7 +3016,9 @@ HTML
                        'id' => $name,
                        'cols' => $wgUser->getIntOption( 'cols' ),
                        'rows' => $wgUser->getIntOption( 'rows' ),
-                       'style' => '' // avoid php notices when appending preferences (appending allows customAttribs['style'] to still work
+                       // Avoid PHP notices when appending preferences
+                       // (appending allows customAttribs['style'] to still work).
+                       'style' => ''
                );
 
                $pageLang = $this->mTitle->getPageLanguage();
@@ -2813,7 +3053,12 @@ HTML
                        try {
                                $this->showDiff();
                        } catch ( MWContentSerializationException $ex ) {
-                               $msg = wfMessage( 'content-failed-to-parse', $this->contentModel, $this->contentFormat, $ex->getMessage() );
+                               $msg = wfMessage(
+                                       'content-failed-to-parse',
+                                       $this->contentModel,
+                                       $this->contentFormat,
+                                       $ex->getMessage()
+                               );
                                $wgOut->addWikiText( '<div class="error">' . $msg->text() . '</div>' );
                        }
                }
@@ -3051,14 +3296,19 @@ HTML
                                array( 'class' => 'mw-editButtons-pipe-separator' ),
                                wfMessage( 'pipe-separator' )->text() );
                }
-               $edithelpurl = Skin::makeInternalOrExternalUrl( wfMessage( 'edithelppage' )->inContentLanguage()->text() );
+
+               $message = wfMessage( 'edithelppage' )->inContentLanguage()->text();
+               $edithelpurl = Skin::makeInternalOrExternalUrl( $message );
                $edithelp = '<a target="helpwindow" href="' . $edithelpurl . '">' .
                        wfMessage( 'edithelp' )->escaped() . '</a> ' .
                        wfMessage( 'newwindow' )->parse();
+
                $wgOut->addHTML( "      <span class='cancelLink'>{$cancel}</span>\n" );
                $wgOut->addHTML( "      <span class='editHelp'>{$edithelp}</span>\n" );
                $wgOut->addHTML( "</div><!-- editButtons -->\n" );
+
                wfRunHooks( 'EditPage::showStandardInputs:options', array( $this, $wgOut, &$tabindex ) );
+
                $wgOut->addHTML( "</div><!-- editOptions -->\n" );
        }
 
@@ -3145,6 +3395,9 @@ HTML
                return $this->deletedSinceEdit;
        }
 
+       /**
+        * @return bool|stdClass
+        */
        protected function getLastDelete() {
                $dbr = wfGetDB( DB_SLAVE );
                $data = $dbr->selectRow(
@@ -3180,6 +3433,7 @@ HTML
                                $data->log_comment = wfMessage( 'rev-deleted-comment' )->escaped();
                        }
                }
+
                return $data;
        }
 
@@ -3214,7 +3468,10 @@ HTML
                        $content = $this->toEditContent( $this->textbox1 );
 
                        $previewHTML = '';
-                       if ( !wfRunHooks( 'AlternateEditPreview', array( $this, &$content, &$previewHTML, &$this->mParserOutput ) ) ) {
+                       if ( !wfRunHooks(
+                               'AlternateEditPreview',
+                               array( $this, &$content, &$previewHTML, &$this->mParserOutput ) )
+                       ) {
                                wfProfileOut( __METHOD__ );
                                return $previewHTML;
                        }
@@ -3226,7 +3483,6 @@ HTML
                        if ( $this->mTriedSave && !$this->mTokenOk ) {
                                if ( $this->mTokenOkExceptSuffix ) {
                                        $note = wfMessage( 'token_suffix_mismatch' )->plain();
-
                                } else {
                                        $note = wfMessage( 'session_fail_preview' )->plain();
                                }
@@ -3284,7 +3540,11 @@ HTML
                        # But it's now deprecated, so never mind
 
                        $content = $content->preSaveTransform( $this->mTitle, $wgUser, $parserOptions );
-                       $parserOutput = $content->getParserOutput( $this->getArticle()->getTitle(), null, $parserOptions );
+                       $parserOutput = $content->getParserOutput(
+                               $this->getArticle()->getTitle(),
+                               null,
+                               $parserOptions
+                       );
 
                        $previewHTML = $parserOutput->getText();
                        $this->mParserOutput = $parserOutput;
@@ -3294,13 +3554,19 @@ HTML
                                $note .= "\n\n" . implode( "\n\n", $parserOutput->getWarnings() );
                        }
                } catch ( MWContentSerializationException $ex ) {
-                       $m = wfMessage( 'content-failed-to-parse', $this->contentModel, $this->contentFormat, $ex->getMessage() );
+                       $m = wfMessage(
+                               'content-failed-to-parse',
+                               $this->contentModel,
+                               $this->contentFormat,
+                               $ex->getMessage()
+                       );
                        $note .= "\n\n" . $m->parse();
                        $previewHTML = '';
                }
 
                if ( $this->isConflict ) {
-                       $conflict = '<h2 id="mw-previewconflict">' . wfMessage( 'previewconflict' )->escaped() . "</h2>\n";
+                       $conflict = '<h2 id="mw-previewconflict">'
+                               . wfMessage( 'previewconflict' )->escaped() . "</h2>\n";
                } else {
                        $conflict = '<hr />';
                }
@@ -3557,6 +3823,7 @@ HTML
        public function getEditButtons( &$tabindex ) {
                $buttons = array();
 
+               // @todo FIXME: Hardcoded square brackets.
                $temp = array(
                        'id' => 'wpSave',
                        'name' => 'wpSave',
@@ -3564,11 +3831,13 @@ HTML
                        'tabindex' => ++$tabindex,
                        'value' => wfMessage( 'savearticle' )->text(),
                        'accesskey' => wfMessage( 'accesskey-save' )->text(),
-                       'title' => wfMessage( 'tooltip-save' )->text() . ' [' . wfMessage( 'accesskey-save' )->text() . ']',
+                       'title' => wfMessage( 'tooltip-save' )->text()
+                               . ' [' . wfMessage( 'accesskey-save' )->text() . ']',
                );
                $buttons['save'] = Xml::element( 'input', $temp, '' );
 
                ++$tabindex; // use the same for preview and live preview
+               // @todo FIXME: Hardcoded square brackets.
                $temp = array(
                        'id' => 'wpPreview',
                        'name' => 'wpPreview',
@@ -3576,11 +3845,13 @@ HTML
                        'tabindex' => $tabindex,
                        'value' => wfMessage( 'showpreview' )->text(),
                        'accesskey' => wfMessage( 'accesskey-preview' )->text(),
-                       'title' => wfMessage( 'tooltip-preview' )->text() . ' [' . wfMessage( 'accesskey-preview' )->text() . ']',
+                       'title' => wfMessage( 'tooltip-preview' )->text()
+                               . ' [' . wfMessage( 'accesskey-preview' )->text() . ']',
                );
                $buttons['preview'] = Xml::element( 'input', $temp, '' );
                $buttons['live'] = '';
 
+               // @todo FIXME: Hardcoded square brackets.
                $temp = array(
                        'id' => 'wpDiff',
                        'name' => 'wpDiff',
@@ -3588,7 +3859,8 @@ HTML
                        'tabindex' => ++$tabindex,
                        'value' => wfMessage( 'showdiff' )->text(),
                        'accesskey' => wfMessage( 'accesskey-diff' )->text(),
-                       'title' => wfMessage( 'tooltip-diff' )->text() . ' [' . wfMessage( 'accesskey-diff' )->text() . ']',
+                       'title' => wfMessage( 'tooltip-diff' )->text()
+                               . ' [' . wfMessage( 'accesskey-diff' )->text() . ']',
                );
                $buttons['diff'] = Xml::element( 'input', $temp, '' );
 
@@ -3618,11 +3890,11 @@ HTML
                #$categories = $skin->getCategoryLinks();
 
                $s =
-               '<?xml version="1.0" encoding="UTF-8" ?>' . "\n" .
-               Xml::tags( 'livepreview', null,
-                       Xml::element( 'preview', null, $previewText )
-                       #.      Xml::element( 'category', null, $categories )
-               );
+                       '<?xml version="1.0" encoding="UTF-8" ?>' . "\n" .
+                       Xml::tags( 'livepreview', null,
+                               Xml::element( 'preview', null, $previewText )
+                               #.      Xml::element( 'category', null, $categories )
+                       );
                echo $s;
        }
 
@@ -3778,7 +4050,8 @@ HTML
                $bytesleft = 0;
                $result = "";
                $working = 0;
-               for ( $i = 0; $i < strlen( $invalue ); $i++ ) {
+               $valueLength = strlen( $invalue );
+               for ( $i = 0; $i < $valueLength; $i++ ) {
                        $bytevalue = ord( $invalue[$i] );
                        if ( $bytevalue <= 0x7F ) { // 0xxx xxxx
                                $result .= chr( $bytevalue );
index 7295a76..4c71eb9 100644 (file)
  * @ingroup SpecialPage Dump
  */
 class WikiExporter {
-       var $list_authors = false; # Return distinct author list (when not returning full history)
-       var $author_list = "";
+       /** @var bool Return distinct author list (when not returning full history) */
+       public $list_authors = false;
 
-       var $dumpUploads = false;
-       var $dumpUploadFileContents = false;
+       /** @var bool */
+       public $dumpUploads = false;
+
+       /** @var bool */
+       public $dumpUploadFileContents = false;
+
+       /** @var string */
+       protected $author_list = "";
 
        const FULL = 1;
        const CURRENT = 2;
@@ -49,14 +55,14 @@ class WikiExporter {
        const TEXT = 0;
        const STUB = 1;
 
-       var $buffer;
+       /** @var int */
+       protected $buffer;
 
-       var $text;
+       /** @var int */
+       protected $text;
 
-       /**
-        * @var DumpOutput
-        */
-       var $sink;
+       /** @var DumpOutput */
+       protected $sink;
 
        /**
         * Returns the export schema version.
@@ -1144,7 +1150,6 @@ class DumpPipeOutput extends DumpFileOutput {
                        }
                }
        }
-
 }
 
 /**
@@ -1152,7 +1157,6 @@ class DumpPipeOutput extends DumpFileOutput {
  * @ingroup Dump
  */
 class DumpGZipOutput extends DumpPipeOutput {
-
        /**
         * @param string $file
         */
@@ -1166,7 +1170,6 @@ class DumpGZipOutput extends DumpPipeOutput {
  * @ingroup Dump
  */
 class DumpBZip2Output extends DumpPipeOutput {
-
        /**
         * @param string $file
         */
@@ -1180,7 +1183,6 @@ class DumpBZip2Output extends DumpPipeOutput {
  * @ingroup Dump
  */
 class Dump7ZipOutput extends DumpPipeOutput {
-
        /**
         * @param string $file
         */
@@ -1227,7 +1229,6 @@ class Dump7ZipOutput extends DumpPipeOutput {
  * @ingroup Dump
  */
 class DumpFilter {
-
        /**
         * @var DumpOutput
         * FIXME will need to be made protected whenever legacy code
@@ -1337,7 +1338,6 @@ class DumpFilter {
  * @ingroup Dump
  */
 class DumpNotalkFilter extends DumpFilter {
-
        /**
         * @param object $page
         * @return bool
@@ -1352,8 +1352,11 @@ class DumpNotalkFilter extends DumpFilter {
  * @ingroup Dump
  */
 class DumpNamespaceFilter extends DumpFilter {
-       var $invert = false;
-       var $namespaces = array();
+       /** @var bool */
+       protected $invert = false;
+
+       /** @var array */
+       protected $namespaces = array();
 
        /**
         * @param DumpOutput $sink
@@ -1417,7 +1420,13 @@ class DumpNamespaceFilter extends DumpFilter {
  * @ingroup Dump
  */
 class DumpLatestFilter extends DumpFilter {
-       var $page, $pageString, $rev, $revString;
+       protected $page;
+
+       protected $pageString;
+
+       protected $rev;
+
+       protected $revString;
 
        /**
         * @param object $page
@@ -1543,12 +1552,12 @@ class DumpMultiWriter {
                }
                return $filenames;
        }
-
 }
 
 /**
  * @param string $string
  * @return string
+ * @todo FIXME: Only used in OAI extension. Move over there.
  */
 function xmlsafe( $string ) {
        wfProfileIn( __FUNCTION__ );
index 7089c92..1674b13 100644 (file)
  * @ingroup Feed
  */
 class FeedItem {
-       /**
-        * @var Title
-        */
-       var $title;
+       /** @var Title */
+       protected $title;
+
+       protected $description;
+
+       protected $url;
+
+       protected $date;
 
-       var $description;
-       var $url;
-       var $date;
-       var $author;
-       var $uniqueId;
-       var $comments;
-       var $rssIsPermalink = false;
+       protected $author;
+
+       protected $uniqueId;
+
+       protected $comments;
+
+       public $rssIsPermalink = false;
 
        /**
         * Constructor
@@ -238,27 +242,35 @@ abstract class ChannelFeed extends FeedItem {
         * Return an internet media type to be sent in the headers.
         *
         * @return string
-        * @private
         */
-       function contentType() {
+       private function contentType() {
                global $wgRequest;
+
                $ctype = $wgRequest->getVal( 'ctype', 'application/xml' );
-               $allowedctypes = array( 'application/xml', 'text/xml', 'application/rss+xml', 'application/atom+xml' );
+               $allowedctypes = array(
+                       'application/xml',
+                       'text/xml',
+                       'application/rss+xml',
+                       'application/atom+xml'
+               );
+
                return ( in_array( $ctype, $allowedctypes ) ? $ctype : 'application/xml' );
        }
 
        /**
         * Output the initial XML headers with a stylesheet for legibility
         * if someone finds it in a browser.
-        * @private
         */
-       function outXmlHeader() {
+       protected function outXmlHeader() {
                global $wgStylePath, $wgStyleVersion;
 
                $this->httpHeaders();
                echo '<?xml version="1.0"?>' . "\n";
                echo '<?xml-stylesheet type="text/css" href="' .
-                       htmlspecialchars( wfExpandUrl( "$wgStylePath/common/feed.css?$wgStyleVersion", PROTO_CURRENT ) ) .
+                       htmlspecialchars( wfExpandUrl(
+                               "$wgStylePath/common/feed.css?$wgStyleVersion",
+                               PROTO_CURRENT
+                       ) ) .
                        '"?' . ">\n";
        }
 }
@@ -303,6 +315,7 @@ class RSSFeed extends ChannelFeed {
         * @param FeedItem $item Item to be output
         */
        function outItem( $item ) {
+               // @codingStandardsIgnoreStart Ignore long lines and formatting issues.
        ?>
                <item>
                        <title><?php print $item->getTitle(); ?></title>
@@ -314,6 +327,7 @@ class RSSFeed extends ChannelFeed {
                        <?php if ( $item->getComments() ) { ?><comments><?php print wfExpandUrl( $item->getComments(), PROTO_CURRENT ); ?></comments><?php }?>
                </item>
 <?php
+               // @codingStandardsIgnoreEnd
        }
 
        /**
@@ -348,6 +362,7 @@ class AtomFeed extends ChannelFeed {
                global $wgVersion;
 
                $this->outXmlHeader();
+               // @codingStandardsIgnoreStart Ignore long lines and formatting issues.
                ?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="<?php print $this->getLanguage() ?>">
                <id><?php print $this->getFeedId() ?></id>
                <title><?php print $this->getTitle() ?></title>
@@ -358,6 +373,7 @@ class AtomFeed extends ChannelFeed {
                <generator>MediaWiki <?php print $wgVersion ?></generator>
 
 <?php
+               // @codingStandardsIgnoreEnd
        }
 
        /**
@@ -367,18 +383,16 @@ class AtomFeed extends ChannelFeed {
         * have to change the id? Maybe? Maybe not.
         *
         * @return string
-        * @private
         */
-       function getFeedId() {
+       private function getFeedId() {
                return $this->getSelfUrl();
        }
 
        /**
         * Atom 1.0 requests a self-reference to the feed.
         * @return string
-        * @private
         */
-       function getSelfUrl() {
+       private function getSelfUrl() {
                global $wgRequest;
                return htmlspecialchars( $wgRequest->getFullRequestURL() );
        }
@@ -389,6 +403,7 @@ class AtomFeed extends ChannelFeed {
         */
        function outItem( $item ) {
                global $wgMimeType;
+               // @codingStandardsIgnoreStart Ignore long lines and formatting issues.
        ?>
        <entry>
                <id><?php print $item->getUniqueId(); ?></id>
@@ -412,5 +427,6 @@ class AtomFeed extends ChannelFeed {
         */
        function outFooter() {?>
        </feed><?php
+               // @codingStandardsIgnoreEnd
        }
 }
index da54673..e95536a 100644 (file)
@@ -25,8 +25,7 @@
  * two-part external storage URLs. Used for represent efficient concatenated
  * storage, and migration-related pointer objects.
  */
-interface HistoryBlob
-{
+interface HistoryBlob {
        /**
         * Adds an item of text, returns a stub object which points to the item.
         * You must call setLocation() on the stub object before storing it to the
@@ -71,8 +70,7 @@ interface HistoryBlob
  * Concatenated gzip (CGZ) storage
  * Improves compression ratio by concatenating like objects before gzipping
  */
-class ConcatenatedGzipHistoryBlob implements HistoryBlob
-{
+class ConcatenatedGzipHistoryBlob implements HistoryBlob {
        public $mVersion = 0, $mCompressed = false, $mItems = array(), $mDefaultHash = '';
        public $mSize = 0;
        public $mMaxSize = 10000000;
@@ -83,7 +81,8 @@ class ConcatenatedGzipHistoryBlob implements HistoryBlob
         */
        public function __construct() {
                if ( !function_exists( 'gzdeflate' ) ) {
-                       throw new MWException( "Need zlib support to read or write this kind of history object (ConcatenatedGzipHistoryBlob)\n" );
+                       throw new MWException( "Need zlib support to read or write this "
+                               . "kind of history object (ConcatenatedGzipHistoryBlob)\n" );
                }
        }
 
@@ -190,14 +189,21 @@ class ConcatenatedGzipHistoryBlob implements HistoryBlob
  */
 class HistoryBlobStub {
        /**
-        * One-step cache variable to hold base blobs; operations that
-        * pull multiple revisions may often pull multiple times from
-        * the same blob. By keeping the last-used one open, we avoid
-        * redundant unserialization and decompression overhead.
+        * @var array One-step cache variable to hold base blobs; operations that
+        * pull multiple revisions may often pull multiple times from the same
+        * blob. By keeping the last-used one open, we avoid redundant
+        * unserialization and decompression overhead.
         */
        protected static $blobCache = array();
 
-       var $mOldId, $mHash, $mRef;
+       /** @var int */
+       protected $mOldId;
+
+       /** @var string */
+       protected $mHash;
+
+       /** @var  */
+       protected $mRef;
 
        /**
         * @param string $hash The content hash of the text
@@ -240,10 +246,16 @@ class HistoryBlobStub {
                        $obj = self::$blobCache[$this->mOldId];
                } else {
                        $dbr = wfGetDB( DB_SLAVE );
-                       $row = $dbr->selectRow( 'text', array( 'old_flags', 'old_text' ), array( 'old_id' => $this->mOldId ) );
+                       $row = $dbr->selectRow(
+                               'text',
+                               array( 'old_flags', 'old_text' ),
+                               array( 'old_id' => $this->mOldId )
+                       );
+
                        if ( !$row ) {
                                return false;
                        }
+
                        $flags = explode( ',', $row->old_flags );
                        if ( in_array( 'external', $flags ) ) {
                                $url = $row->old_text;
@@ -254,6 +266,7 @@ class HistoryBlobStub {
                                $row->old_text = ExternalStore::fetchFromUrl( $url );
 
                        }
+
                        if ( !in_array( 'object', $flags ) ) {
                                return false;
                        }
@@ -276,6 +289,7 @@ class HistoryBlobStub {
                        $obj->uncompress();
                        self::$blobCache = array( $this->mOldId => $obj );
                }
+
                return $obj->getItem( $this->mHash );
        }
 
@@ -298,7 +312,8 @@ class HistoryBlobStub {
  * on conversion if $wgLegacySchemaConversion is set to true.
  */
 class HistoryBlobCurStub {
-       var $mCurId;
+       /** @var int */
+       private $mCurId;
 
        /**
         * @param int $curid The cur_id pointed to
@@ -335,50 +350,43 @@ class HistoryBlobCurStub {
  * Requires xdiff 1.5+ and zlib
  */
 class DiffHistoryBlob implements HistoryBlob {
-       /** Uncompressed item cache */
-       var $mItems = array();
+       /** @var array Uncompressed item cache */
+       protected $mItems = array();
 
-       /** Total uncompressed size */
-       var $mSize = 0;
+       /** @var int Total uncompressed size */
+       protected $mSize = 0;
 
        /**
-        * Array of diffs. If a diff D from A to B is notated D = B - A, and Z is
-        * an empty string:
+        * @var array Array of diffs. If a diff D from A to B is notated D = B - A,
+        * and Z is an empty string:
         *
         *              { item[map[i]] - item[map[i-1]]   where i > 0
         *    diff[i] = {
         *              { item[map[i]] - Z                where i = 0
         */
-       var $mDiffs;
+       protected $mDiffs;
 
-       /** The diff map, see above */
-       var $mDiffMap;
+       /** @var array The diff map, see above */
+       protected $mDiffMap;
 
-       /**
-        * The key for getText()
+       /** @var int The key for getText()
         */
-       var $mDefaultKey;
+       protected $mDefaultKey;
 
-       /**
-        * Compressed storage
-        */
-       var $mCompressed;
+       /** @var string Compressed storage */
+       protected $mCompressed;
 
-       /**
-        * True if the object is locked against further writes
-        */
-       var $mFrozen = false;
+       /** @var bool True if the object is locked against further writes */
+       protected $mFrozen = false;
 
        /**
-        * The maximum uncompressed size before the object becomes sad
+        * @var int The maximum uncompressed size before the object becomes sad
         * Should be less than max_allowed_packet
         */
-       var $mMaxSize = 10000000;
+       public $mMaxSize = 10000000;
 
-       /**
-        * The maximum number of text items before the object becomes sad
-        */
-       var $mMaxCount = 100;
+       /** @var int The maximum number of text items before the object becomes sad */
+       public $mMaxCount = 100;
 
        /** Constants from xdiff.h */
        const XDL_BDOP_INS = 1;
@@ -460,7 +468,8 @@ class DiffHistoryBlob implements HistoryBlob {
                );
                $smallFactor = 0.5;
 
-               for ( $i = 0; $i < count( $this->mItems ); $i++ ) {
+               $mItemsCount = count( $this->mItems );
+               for ( $i = 0; $i < $mItemsCount; $i++ ) {
                        $text = $this->mItems[$i];
                        if ( $i == 0 ) {
                                $seqName = 'main';
@@ -496,7 +505,8 @@ class DiffHistoryBlob implements HistoryBlob {
                                $this->mDiffs[] = $this->diff( $tail, $head );
                        }
                        $this->mDiffMap[] = $seq['map'][0];
-                       for ( $i = 1; $i < count( $seq['diffs'] ); $i++ ) {
+                       $diffsCount = count( $seq['diffs'] );
+                       for ( $i = 1; $i < $diffsCount; $i++ ) {
                                $this->mDiffs[] = $seq['diffs'][$i];
                                $this->mDiffMap[] = $seq['map'][$i];
                        }
@@ -606,7 +616,8 @@ class DiffHistoryBlob implements HistoryBlob {
                        return;
                }
                $tail = '';
-               for ( $diffKey = 0; $diffKey < count( $this->mDiffs ); $diffKey++ ) {
+               $mDiffsCount = count( $this->mDiffs );
+               for ( $diffKey = 0; $diffKey < $mDiffsCount; $diffKey++ ) {
                        $textKey = $this->mDiffMap[$diffKey];
                        $text = $this->patch( $tail, $this->mDiffs[$diffKey] );
                        $this->mItems[$textKey] = $text;
index 59fa583..4940c19 100644 (file)
@@ -45,7 +45,9 @@ class WikiImporter {
        function __construct( $source ) {
                $this->reader = new XMLReader();
 
-               stream_wrapper_register( 'uploadsource', 'UploadSourceAdapter' );
+               if ( !in_array(  'uploadsource', stream_get_wrappers() ) ) {
+                       stream_wrapper_register( 'uploadsource', 'UploadSourceAdapter' );
+               }
                $id = UploadSourceAdapter::registerSource( $source );
                if ( defined( 'LIBXML_PARSEHUGE' ) ) {
                        $this->reader->open( "uploadsource://$id", null, LIBXML_PARSEHUGE );
@@ -218,7 +220,11 @@ class WikiImporter {
                        $this->mTargetRootPage = null;
                } elseif ( $rootpage !== '' ) {
                        $rootpage = rtrim( $rootpage, '/' ); //avoid double slashes
-                       $title = Title::newFromText( $rootpage, !is_null( $this->mTargetNamespace ) ? $this->mTargetNamespace : NS_MAIN );
+                       $title = Title::newFromText( $rootpage, !is_null( $this->mTargetNamespace )
+                               ? $this->mTargetNamespace
+                               : NS_MAIN
+                       );
+
                        if ( !$title || $title->isExternal() ) {
                                $status->fatal( 'import-rootpage-invalid' );
                        } else {
@@ -285,12 +291,12 @@ class WikiImporter {
 
        /**
         * Default per-revision callback, performs the import.
-        * @param WikiRevision $rev
+        * @param WikiRevision $revision
         * @return bool
         */
-       public function importLogItem( $rev ) {
+       public function importLogItem( $revision ) {
                $dbw = wfGetDB( DB_MASTER );
-               return $dbw->deadlockLoop( array( $rev, 'importLogItem' ) );
+               return $dbw->deadlockLoop( array( $revision, 'importLogItem' ) );
        }
 
        /**
@@ -310,7 +316,7 @@ class WikiImporter {
         * @param int $revCount
         * @param int $sRevCount
         * @param array $pageInfo
-        * @return
+        * @return bool
         */
        public function finishImportPage( $title, $origTitle, $revCount, $sRevCount, $pageInfo ) {
                $args = func_get_args();
@@ -900,10 +906,16 @@ class WikiImporter {
 
 /** This is a horrible hack used to keep source compatibility */
 class UploadSourceAdapter {
-       static $sourceRegistrations = array();
+       /** @var array */
+       private static $sourceRegistrations = array();
 
+       /** @var string */
        private $mSource;
+
+       /** @var string */
        private $mBuffer;
+
+       /** @var int */
        private $mPosition;
 
        /**
@@ -1042,30 +1054,80 @@ class XMLReader2 extends XMLReader {
  * @ingroup SpecialPage
  */
 class WikiRevision {
-       var $importer = null;
-
-       /**
-        * @var Title
-        */
-       var $title = null;
-       var $id = 0;
-       var $timestamp = "20010115000000";
-       var $user = 0;
-       var $user_text = "";
-       var $model = null;
-       var $format = null;
-       var $text = "";
-       var $content = null;
-       var $comment = "";
-       var $minor = false;
-       var $type = "";
-       var $action = "";
-       var $params = "";
-       var $fileSrc = '';
-       var $sha1base36 = false;
-       var $isTemp = false;
-       var $archiveName = '';
-       var $fileIsTemp;
+       /** @todo Unused? */
+       private $importer = null;
+
+       /** @var Title */
+       public $title = null;
+
+       /** @var int */
+       private $id = 0;
+
+       /** @var string */
+       public $timestamp = "20010115000000";
+
+       /**
+        * @var int
+        * @todo Can't find any uses. Public, because that's suspicious. Get clarity. */
+       public $user = 0;
+
+       /** @var string */
+       public $user_text = "";
+
+       /** @var string */
+       protected $model = null;
+
+       /** @var string */
+       protected $format = null;
+
+       /** @var string */
+       public $text = "";
+
+       /** @var int */
+       protected $size;
+
+       /** @var Content */
+       protected $content = null;
+
+       /** @var string */
+       public $comment = "";
+
+       /** @var bool */
+       protected $minor = false;
+
+       /** @var string */
+       protected $type = "";
+
+       /** @var string */
+       protected $action = "";
+
+       /** @var string */
+       protected $params = "";
+
+       /** @var string */
+       protected $fileSrc = '';
+
+       /** @var bool|string */
+       protected $sha1base36 = false;
+
+       /**
+        * @var bool
+        * @todo Unused?
+        */
+       private $isTemp = false;
+
+       /** @var string */
+       protected $archiveName = '';
+
+       protected $filename;
+
+       /** @var mixed */
+       protected $src;
+
+       /** @todo Unused? */
+       private $fileIsTemp;
+
+       /** @var bool */
        private $mNoUpdates = false;
 
        /**
@@ -1076,7 +1138,8 @@ class WikiRevision {
                if ( is_object( $title ) ) {
                        $this->title = $title;
                } elseif ( is_null( $title ) ) {
-                       throw new MWException( "WikiRevision given a null title in import. You may need to adjust \$wgLegalTitleChars." );
+                       throw new MWException( "WikiRevision given a null title in import. "
+                               . "You may need to adjust \$wgLegalTitleChars." );
                } else {
                        throw new MWException( "WikiRevision given non-object title in import." );
                }
@@ -1438,7 +1501,8 @@ class WikiRevision {
                        'page' => $pageId,
                        'content_model' => $this->getModel(),
                        'content_format' => $this->getFormat(),
-                       'text' => $this->getContent()->serialize( $this->getFormat() ), //XXX: just set 'content' => $this->getContent()?
+                       //XXX: just set 'content' => $this->getContent()?
+                       'text' => $this->getContent()->serialize( $this->getFormat() ),
                        'comment' => $this->getComment(),
                        'user' => $userId,
                        'user_text' => $userText,
@@ -1450,7 +1514,11 @@ class WikiRevision {
 
                if ( $changed !== false && !$this->mNoUpdates ) {
                        wfDebug( __METHOD__ . ": running updates\n" );
-                       $page->doEditUpdates( $revision, $userObj, array( 'created' => $created, 'oldcountable' => $oldcountable ) );
+                       $page->doEditUpdates(
+                               $revision,
+                               $userObj,
+                               array( 'created' => $created, 'oldcountable' => $oldcountable )
+                       );
                }
 
                return true;
@@ -1482,8 +1550,9 @@ class WikiRevision {
                );
                // @todo FIXME: This could fail slightly for multiple matches :P
                if ( $prior ) {
-                       wfDebug( __METHOD__ . ": skipping existing item for Log:{$this->type}/{$this->action}, timestamp " .
-                               $this->timestamp . "\n" );
+                       wfDebug( __METHOD__
+                               . ": skipping existing item for Log:{$this->type}/{$this->action}, timestamp "
+                               . $this->timestamp . "\n" );
                        return;
                }
                $log_id = $dbw->nextSequenceValue( 'logging_log_id_seq' );
@@ -1680,13 +1749,18 @@ class ImportStreamSource {
                }
                if ( !empty( $upload['error'] ) ) {
                        switch ( $upload['error'] ) {
-                               case 1: # The uploaded file exceeds the upload_max_filesize directive in php.ini.
+                               case 1:
+                                       # The uploaded file exceeds the upload_max_filesize directive in php.ini.
                                        return Status::newFatal( 'importuploaderrorsize' );
-                               case 2: # The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.
+                               case 2:
+                                       # The uploaded file exceeds the MAX_FILE_SIZE directive that
+                                       # was specified in the HTML form.
                                        return Status::newFatal( 'importuploaderrorsize' );
-                               case 3: # The uploaded file was only partially uploaded
+                               case 3:
+                                       # The uploaded file was only partially uploaded
                                        return Status::newFatal( 'importuploaderrorpartial' );
-                               case 6: #Missing a temporary folder.
+                               case 6:
+                                       # Missing a temporary folder.
                                        return Status::newFatal( 'importuploaderrortemp' );
                                # case else: # Currently impossible
                        }
@@ -1731,7 +1805,9 @@ class ImportStreamSource {
         * @param int $pageLinkDepth
         * @return Status
         */
-       public static function newFromInterwiki( $interwiki, $page, $history = false, $templates = false, $pageLinkDepth = 0 ) {
+       public static function newFromInterwiki( $interwiki, $page, $history = false,
+               $templates = false, $pageLinkDepth = 0
+       ) {
                if ( $page == '' ) {
                        return Status::newFatal( 'import-noarticle' );
                }
index 894c97d..7724548 100644 (file)
@@ -30,7 +30,6 @@
  * @ingroup Skins
  */
 class Linker {
-
        /**
         * Flags for userToolLinks()
         */
@@ -44,7 +43,8 @@ class Linker {
         * @param string $class The contents of the class attribute; if an empty
         *   string is passed, which is the default value, defaults to 'external'.
         * @return string
-        * @deprecated since 1.18 Just pass the external class directly to something using Html::expandAttributes
+        * @deprecated since 1.18 Just pass the external class directly to something
+        *   using Html::expandAttributes.
         */
        static function getExternalLinkAttributes( $class = 'external' ) {
                wfDeprecated( __METHOD__, '1.18' );
@@ -389,13 +389,15 @@ class Linker {
                if ( $target->getPrefixedText() === '' && $target->hasFragment() ) {
                        return htmlspecialchars( $target->getFragment() );
                }
+
                return htmlspecialchars( $target->getPrefixedText() );
        }
 
        /**
-        * Make appropriate markup for a link to the current article. This is currently rendered
-        * as the bold link text. The calling sequence is the same as the other make*LinkObj static functions,
-        * despite $query not being used.
+        * Make appropriate markup for a link to the current article. This is
+        * currently rendered as the bold link text. The calling sequence is the
+        * same as the other make*LinkObj static functions, despite $query not
+        * being used.
         *
         * @param Title $nt
         * @param string $html [optional]
@@ -403,7 +405,6 @@ class Linker {
         * @param string $trail [optional]
         * @param string $prefix [optional]
         *
-        *
         * @return string
         */
        public static function makeSelfLinkObj( $nt, $html = '', $query = '', $trail = '', $prefix = '' ) {
@@ -491,7 +492,8 @@ class Linker {
                $img = '';
                $success = wfRunHooks( 'LinkerMakeExternalImage', array( &$url, &$alt, &$img ) );
                if ( !$success ) {
-                       wfDebug( "Hook LinkerMakeExternalImage changed the output of external image with url {$url} and alt text {$alt} to {$img}\n", true );
+                       wfDebug( "Hook LinkerMakeExternalImage changed the output of external image "
+                               . "with url {$url} and alt text {$alt} to {$img}\n", true );
                        return $img;
                }
                return Html::element( 'img',
@@ -536,8 +538,9 @@ class Linker {
         * @since 1.20
         * @return string HTML for an image, with links, wrappers, etc.
         */
-       public static function makeImageLink( /*Parser*/ $parser, Title $title, $file, $frameParams = array(),
-               $handlerParams = array(), $time = false, $query = "", $widthOption = null
+       public static function makeImageLink( /*Parser*/ $parser, Title $title,
+               $file, $frameParams = array(), $handlerParams = array(), $time = false,
+               $query = "", $widthOption = null
        ) {
                $res = null;
                $dummy = new DummyLinker;
@@ -587,26 +590,41 @@ class Linker {
                                $hp['width'] = $file->getWidth( $page );
                        }
 
-                       if ( isset( $fp['thumbnail'] ) || isset( $fp['manualthumb'] ) || isset( $fp['framed'] ) || isset( $fp['frameless'] ) || !$hp['width'] ) {
+                       if ( isset( $fp['thumbnail'] )
+                               || isset( $fp['manualthumb'] )
+                               || isset( $fp['framed'] )
+                               || isset( $fp['frameless'] )
+                               || !$hp['width']
+                       ) {
                                global $wgThumbLimits, $wgThumbUpright;
+
                                if ( $widthOption === null || !isset( $wgThumbLimits[$widthOption] ) ) {
                                        $widthOption = User::getDefaultOption( 'thumbsize' );
                                }
 
                                // Reduce width for upright images when parameter 'upright' is used
+                               $useSquare = !isset( $fp['upright'] );
                                if ( isset( $fp['upright'] ) && $fp['upright'] == 0 ) {
                                        $fp['upright'] = $wgThumbUpright;
                                }
-                               // For caching health: If width scaled down due to upright parameter, round to full __0 pixel to avoid the creation of a lot of odd thumbs
+
+                               // For caching health: If width scaled down due to upright
+                               // parameter, round to full __0 pixel to avoid the creation of a
+                               // lot of odd thumbs.
                                $prefWidth = isset( $fp['upright'] ) ?
                                        round( $wgThumbLimits[$widthOption] * $fp['upright'], -1 ) :
                                        $wgThumbLimits[$widthOption];
 
-                               // Use width which is smaller: real image width or user preference width
+                               // Use whichever is smaller: real image width or user preference width
                                // Unless image is scalable vector.
                                if ( !isset( $hp['height'] ) && ( $hp['width'] <= 0 ||
-                                               $prefWidth < $hp['width'] || $file->isVectorized() ) ) {
+                                               $prefWidth < $hp['width'] ||
+                                               ( $useSquare && $prefWidth < $file->getHeight( $page ) ) ||
+                                               $file->isVectorized() ) ) {
                                        $hp['width'] = $prefWidth;
+                                       if ( $useSquare ) {
+                                               $hp['height'] = $prefWidth;
+                                       }
                                }
                        }
                }
@@ -632,8 +650,9 @@ class Linker {
 
                if ( $file && isset( $fp['frameless'] ) ) {
                        $srcWidth = $file->getWidth( $page );
-                       # For "frameless" option: do not present an image bigger than the source (for bitmap-style images)
-                       # This is the same behavior as the "thumb" option does it already.
+                       # For "frameless" option: do not present an image bigger than the
+                       # source (for bitmap-style images). This is the same behavior as the
+                       # "thumb" option does it already.
                        if ( $srcWidth && !$file->mustRender() && $hp['width'] > $srcWidth ) {
                                $hp['width'] = $srcWidth;
                        }
@@ -831,7 +850,9 @@ class Linker {
                        $fp['link-url'] = $url;
                }
 
-               $s = "<div class=\"thumb t{$fp['align']}\"><div class=\"thumbinner\" style=\"width:{$outerWidth}px;\">";
+               $s = "<div class=\"thumb t{$fp['align']}\">"
+                       . "<div class=\"thumbinner\" style=\"width:{$outerWidth}px;\">";
+
                if ( !$exists ) {
                        $s .= self::makeBrokenImageLinkObj( $title, $fp['title'], '', '', '', $time == true );
                        $zoomIcon = '';
@@ -845,7 +866,9 @@ class Linker {
                        $params = array(
                                'alt' => $fp['alt'],
                                'title' => $fp['title'],
-                               'img-class' => ( isset( $fp['class'] ) && $fp['class'] !== '' ? $fp['class'] . ' ' : '' ) . 'thumbimage'
+                               'img-class' => ( isset( $fp['class'] ) && $fp['class'] !== ''
+                                       ? $fp['class'] . ' '
+                                       : '' ) . 'thumbimage'
                        );
                        $params = self::getImageLinkMTOParams( $fp, $query ) + $params;
                        $s .= $thumb->toHtml( $params );
@@ -858,7 +881,8 @@ class Linker {
                                                'class' => 'internal',
                                                'title' => wfMessage( 'thumbnail-more' )->text() ),
                                                Html::element( 'img', array(
-                                                       'src' => $wgStylePath . '/common/images/magnify-clip' . ( $wgContLang->isRTL() ? '-rtl' : '' ) . '.png',
+                                                       'src' => $wgStylePath . '/common/images/magnify-clip'
+                                                               . ( $wgContLang->isRTL() ? '-rtl' : '' ) . '.png',
                                                        'width' => 15,
                                                        'height' => 11,
                                                        'alt' => "" ) ) ) );
@@ -910,7 +934,9 @@ class Linker {
         * @param bool $time A file of a certain timestamp was requested
         * @return string
         */
-       public static function makeBrokenImageLinkObj( $title, $label = '', $query = '', $unused1 = '', $unused2 = '', $time = false ) {
+       public static function makeBrokenImageLinkObj( $title, $label = '',
+               $query = '', $unused1 = '', $unused2 = '', $time = false
+       ) {
                global $wgEnableUploads, $wgUploadMissingFileUrl, $wgUploadNavigationUrl;
                if ( ! $title instanceof Title ) {
                        return "<!-- ERROR -->" . htmlspecialchars( $label );
@@ -922,7 +948,9 @@ class Linker {
                $encLabel = htmlspecialchars( $label );
                $currentExists = $time ? ( wfFindFile( $title ) != false ) : false;
 
-               if ( ( $wgUploadMissingFileUrl || $wgUploadNavigationUrl || $wgEnableUploads ) && !$currentExists ) {
+               if ( ( $wgUploadMissingFileUrl || $wgUploadNavigationUrl || $wgEnableUploads )
+                       && !$currentExists
+               ) {
                        $redir = RepoGroup::singleton()->getLocalRepo()->checkRedirect( $title );
 
                        if ( $redir ) {
@@ -1013,7 +1041,8 @@ class Linker {
 
                if ( !wfRunHooks( 'LinkerMakeMediaLinkFile',
                        array( $title, $file, &$html, &$attribs, &$ret ) ) ) {
-                       wfDebug( "Hook LinkerMakeMediaLinkFile changed the output of link with url {$url} and text {$html} to {$ret}\n", true );
+                       wfDebug( "Hook LinkerMakeMediaLinkFile changed the output of link "
+                               . "with url {$url} and text {$html} to {$ret}\n", true );
                        return $ret;
                }
 
@@ -1047,7 +1076,9 @@ class Linker {
         * @param Title|null $title Title object used for title specific link attributes
         * @return string
         */
-       public static function makeExternalLink( $url, $text, $escape = true, $linktype = '', $attribs = array(), $title = null ) {
+       public static function makeExternalLink( $url, $text, $escape = true,
+               $linktype = '', $attribs = array(), $title = null
+       ) {
                global $wgTitle;
                $class = "external";
                if ( $linktype ) {
@@ -1070,7 +1101,8 @@ class Linker {
                $success = wfRunHooks( 'LinkerMakeExternalLink',
                        array( &$url, &$text, &$link, &$attribs, $linktype ) );
                if ( !$success ) {
-                       wfDebug( "Hook LinkerMakeExternalLink changed the output of link with url {$url} and text {$text} to {$link}\n", true );
+                       wfDebug( "Hook LinkerMakeExternalLink changed the output of link "
+                               . "with url {$url} and text {$text} to {$link}\n", true );
                        return $link;
                }
                $attribs['href'] = $url;
@@ -1111,7 +1143,8 @@ class Linker {
         * @param string $userText User name or IP address
         * @param bool $redContribsWhenNoEdits Should the contributions link be
         *   red if the user has no edits?
-        * @param int $flags Customisation flags (e.g. Linker::TOOL_LINKS_NOBLOCK and Linker::TOOL_LINKS_EMAIL)
+        * @param int $flags Customisation flags (e.g. Linker::TOOL_LINKS_NOBLOCK
+        *   and Linker::TOOL_LINKS_EMAIL).
         * @param int $edits User edit count (optional, for performance)
         * @return string HTML fragment
         */
@@ -1285,11 +1318,11 @@ class Linker {
                return $comment;
        }
 
-       /**
-        * @var Title
-        */
-       static $autocommentTitle;
-       static $autocommentLocal;
+       /** @var Title */
+       private static $autocommentTitle;
+
+       /** @var bool Whether section links should refer to local page */
+       private static $autocommentLocal;
 
        /**
         * Converts autogenerated comments in edit summaries into section links.
@@ -1367,16 +1400,17 @@ class Linker {
                                $auto .= wfMessage( 'colon-separator' )->inContentLanguage()->escaped();
                        }
                        $auto = '<span class="autocomment">' . $auto . '</span>';
-                       $comment = $pre . $link . $wgLang->getDirMark() . '<span dir="auto">' . $auto . $post . '</span>';
+                       $comment = $pre . $link . $wgLang->getDirMark()
+                               . '<span dir="auto">' . $auto . $post . '</span>';
                }
                return $comment;
        }
 
-       /**
-        * @var Title
-        */
-       static $commentContextTitle;
-       static $commentLocal;
+       /** @var Title */
+       private static $commentContextTitle;
+
+       /** @var bool Whether section links should refer to local page */
+       private static $commentLocal;
 
        /**
         * Formats wiki links and media links in text; all other wiki formatting
@@ -1477,7 +1511,12 @@ class Linker {
                }
                if ( $thelink ) {
                        // If the link is still valid, go ahead and replace it in!
-                       $comment = preg_replace( $linkRegexp, StringUtils::escapeRegexReplacement( $thelink ), $comment, 1 );
+                       $comment = preg_replace(
+                               $linkRegexp,
+                               StringUtils::escapeRegexReplacement( $thelink ),
+                               $comment,
+                               1
+                       );
                }
 
                return $comment;
@@ -1736,7 +1775,9 @@ class Linker {
         *
         * @return string HTML headline
         */
-       public static function makeHeadline( $level, $attribs, $anchor, $html, $link, $legacyAnchor = false ) {
+       public static function makeHeadline( $level, $attribs, $anchor, $html,
+               $link, $legacyAnchor = false
+       ) {
                $ret = "<h$level$attribs"
                        . "<span class=\"mw-headline\" id=\"$anchor\">$html</span>"
                        . $link
@@ -1792,10 +1833,13 @@ class Linker {
         * @param array $options
         * @return string
         */
-       public static function generateRollback( $rev, IContextSource $context = null, $options = array( 'verify' ) ) {
+       public static function generateRollback( $rev, IContextSource $context = null,
+               $options = array( 'verify' )
+       ) {
                if ( $context === null ) {
                        $context = RequestContext::getMain();
                }
+
                $editCount = false;
                if ( in_array( 'verify', $options ) ) {
                        $editCount = self::getRollbackEditCount( $rev, true );
@@ -1855,9 +1899,13 @@ class Linker {
                $moreRevs = false;
                foreach ( $res as $row ) {
                        if ( $rev->getRawUserText() != $row->rev_user_text ) {
-                               if ( $verify && ( $row->rev_deleted & Revision::DELETED_TEXT || $row->rev_deleted & Revision::DELETED_USER ) ) {
-                                       // If the user or the text of the revision we might rollback to is deleted in some way we can't rollback
-                                       // Similar to the sanity checks in WikiPage::commitRollback
+                               if ( $verify &&
+                                       ( $row->rev_deleted & Revision::DELETED_TEXT
+                                               || $row->rev_deleted & Revision::DELETED_USER
+                               ) ) {
+                                       // If the user or the text of the revision we might rollback
+                                       // to is deleted in some way we can't rollback. Similar to
+                                       // the sanity checks in WikiPage::commitRollback.
                                        return false;
                                }
                                $moreRevs = true;
@@ -1883,7 +1931,9 @@ class Linker {
         * @param int $editCount Number of edits that would be reverted
         * @return string HTML fragment
         */
-       public static function buildRollbackLink( $rev, IContextSource $context = null, $editCount = false ) {
+       public static function buildRollbackLink( $rev, IContextSource $context = null,
+               $editCount = false
+       ) {
                global $wgShowRollbackEditCount, $wgMiserMode;
 
                // To config which pages are effected by miser mode
@@ -1897,7 +1947,10 @@ class Linker {
                $query = array(
                        'action' => 'rollback',
                        'from' => $rev->getUserText(),
-                       'token' => $context->getUser()->getEditToken( array( $title->getPrefixedText(), $rev->getUserText() ) ),
+                       'token' => $context->getUser()->getEditToken( array(
+                               $title->getPrefixedText(),
+                               $rev->getUserText()
+                       ) ),
                );
                if ( $context->getRequest()->getBool( 'bot' ) ) {
                        $query['bot'] = '1';
@@ -1914,13 +1967,17 @@ class Linker {
                        }
                }
 
-               if ( !$disableRollbackEditCount && is_int( $wgShowRollbackEditCount ) && $wgShowRollbackEditCount > 0 ) {
+               if ( !$disableRollbackEditCount
+                       && is_int( $wgShowRollbackEditCount )
+                       && $wgShowRollbackEditCount > 0
+               ) {
                        if ( !is_numeric( $editCount ) ) {
                                $editCount = self::getRollbackEditCount( $rev, false );
                        }
 
                        if ( $editCount > $wgShowRollbackEditCount ) {
-                               $editCount_output = $context->msg( 'rollbacklinkcount-morethan' )->numParams( $wgShowRollbackEditCount )->parse();
+                               $editCount_output = $context->msg( 'rollbacklinkcount-morethan' )
+                                       ->numParams( $wgShowRollbackEditCount )->parse();
                        } else {
                                $editCount_output = $context->msg( 'rollbacklinkcount' )->numParams( $editCount )->parse();
                        }
@@ -1958,7 +2015,9 @@ class Linker {
         * @param Title|Message|string|null $more An escaped link for "More..." of the templates
         * @return string HTML output
         */
-       public static function formatTemplates( $templates, $preview = false, $section = false, $more = null ) {
+       public static function formatTemplates( $templates, $preview = false,
+               $section = false, $more = null
+       ) {
                global $wgLang;
                wfProfileIn( __METHOD__ );
 
@@ -2062,7 +2121,10 @@ class Linker {
                        $outText .= "</div><ul>\n";
 
                        foreach ( $hiddencats as $titleObj ) {
-                               $outText .= '<li>' . self::link( $titleObj, null, array(), array(), 'known' ) . "</li>\n"; # If it's hidden, it must exist - no need to check with a LinkBatch
+                               # If it's hidden, it must exist - no need to check with a LinkBatch
+                               $outText .= '<li>'
+                                       . self::link( $titleObj, null, array(), array(), 'known' )
+                                       . "</li>\n";
                        }
                        $outText .= '</ul>';
                }
@@ -2128,7 +2190,7 @@ class Linker {
                return $tooltip;
        }
 
-       static $accesskeycache;
+       private static $accesskeycache;
 
        /**
         * Given the id of an interface element, constructs the appropriate
@@ -2225,7 +2287,11 @@ class Linker {
                $html = wfMessage( $msgKey )->escaped();
                $tag = $restricted ? 'strong' : 'span';
                $link = self::link( $sp, $html, array(), $query, array( 'known', 'noclasses' ) );
-               return Xml::tags( $tag, array( 'class' => 'mw-revdelundel-link' ), wfMessage( 'parentheses' )->rawParams( $link )->escaped() );
+               return Xml::tags(
+                       $tag,
+                       array( 'class' => 'mw-revdelundel-link' ),
+                       wfMessage( 'parentheses' )->rawParams( $link )->escaped()
+               );
        }
 
        /**
index 72869e4..0f3612a 100644 (file)
@@ -3269,13 +3269,13 @@ $templates
                                        'rel' => 'alternate',
                                        'type' => 'application/x-wiki',
                                        'title' => $msg,
-                                       'href' => $this->getTitle()->getLocalURL( 'action=edit' )
+                                       'href' => $this->getTitle()->getEditURL(),
                                ) );
                                // Alternate edit link
                                $tags['alternative-edit'] = Html::element( 'link', array(
                                        'rel' => 'edit',
                                        'title' => $msg,
-                                       'href' => $this->getTitle()->getLocalURL( 'action=edit' )
+                                       'href' => $this->getTitle()->getEditURL(),
                                ) );
                        }
                }
index b0423fb..86c3057 100644 (file)
@@ -524,7 +524,7 @@ class Revision implements IDBAccessObject {
        /**
         * Constructor
         *
-        * @param object $row Either a database row or an array
+        * @param object|array $row Either a database row or an array
         * @throws MWException
         * @access private
         */
index 08816ad..cf8b3fc 100644 (file)
@@ -1987,6 +1987,7 @@ abstract class BaseTemplate extends QuickTemplate {
                        'name' => 'search',
                        'placeholder' => wfMessage( 'searchsuggest-search' )->text(),
                        'value' => $this->get( 'search', '' ),
+                       'tabindex' => 1
                );
                $realAttrs = array_merge( $realAttrs, Linker::tooltipAndAccesskeyAttribs( 'search' ), $attrs );
                return Html::element( 'input', $realAttrs );
index 6578341..941a405 100644 (file)
@@ -1672,6 +1672,9 @@ class User {
         * Primitive rate limits: enforce maximum actions per time period
         * to put a brake on flooding.
         *
+        * The method generates both a generic profiling point and a per action one
+        * (suffix being "-$action".
+        *
         * @note When using a shared cache like memcached, IP-address
         * last-hit counters will be shared across wikis.
         *
@@ -1698,6 +1701,7 @@ class User {
 
                global $wgMemc;
                wfProfileIn( __METHOD__ );
+               wfProfileIn( __METHOD__ . '-' . $action );
 
                $limits = $wgRateLimits[$action];
                $keys = array();
@@ -1776,6 +1780,7 @@ class User {
                        }
                }
 
+               wfProfileOut( __METHOD__ . '-' . $action );
                wfProfileOut( __METHOD__ );
                return $triggered;
        }
index a1e02ef..cfd4d01 100644 (file)
@@ -720,6 +720,9 @@ abstract class ApiBase extends ContextSource {
 
        /**
         * Die if none or more than one of a certain set of parameters is set and not false.
+        *
+        * Call getRequireOnlyOneParameterErrorMessages() to get a list of possible errors.
+        *
         * @param array $params User provided set of parameters, as from $this->extractRequestParams()
         * @param string $required,... Names of parameters of which exactly one must be set
         */
@@ -767,6 +770,9 @@ abstract class ApiBase extends ContextSource {
 
        /**
         * Die if more than one of a certain set of parameters is set and not false.
+        *
+        * Call getRequireMaxOneParameterErrorMessages() to get a list of possible errors.
+        *
         * @param array $params User provided set of parameters, as from $this->extractRequestParams()
         * @param string $required,... Names of parameters of which at most one must be set
         */
@@ -807,6 +813,8 @@ abstract class ApiBase extends ContextSource {
        /**
         * Die if none of a certain set of parameters is set and not false.
         *
+        * Call getRequireAtLeastOneParameterErrorMessages() to get a list of possible errors.
+        *
         * @since 1.23
         * @param array $params User provided set of parameters, as from $this->extractRequestParams()
         * @param string $required,... Names of parameters of which at least one must be set
@@ -847,6 +855,11 @@ abstract class ApiBase extends ContextSource {
        }
 
        /**
+        * Get a WikiPage object from a title or pageid param, if possible.
+        * Can die, if no param is set or if the title or page id is not valid.
+        *
+        * Call getTitleOrPageIdErrorMessage() to get a list of possible errors.
+        *
         * @param array $params
         * @param bool|string $load Whether load the object's state from the database:
         *        - false: don't load (if the pageid is given, it will still be loaded)
@@ -884,6 +897,8 @@ abstract class ApiBase extends ContextSource {
        }
 
        /**
+        * Generates the possible error getTitleOrPageId() can die with
+        *
         * @return array
         */
        public function getTitleOrPageIdErrorMessage() {
index c0c10b9..1fb2a69 100644 (file)
@@ -174,7 +174,11 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                $this->addWhereFld( 'rc_namespace', $params['namespace'] );
 
                if ( !is_null( $params['type'] ) ) {
-                       $this->addWhereFld( 'rc_type', $this->parseRCType( $params['type'] ) );
+                       try {
+                               $this->addWhereFld( 'rc_type', RecentChange::parseToRCType( $params['type'] ) );
+                       } catch ( MWException $e ) {
+                               ApiBase::dieDebug( __METHOD__, $e->getMessage() );
+                       }
                }
 
                if ( !is_null( $params['show'] ) ) {
@@ -414,30 +418,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                $vals = array();
 
                $type = intval( $row->rc_type );
-
-               /* Determine what kind of change this was. */
-               switch ( $type ) {
-                       case RC_EDIT:
-                               $vals['type'] = 'edit';
-                               break;
-                       case RC_NEW:
-                               $vals['type'] = 'new';
-                               break;
-                       case RC_MOVE:
-                               $vals['type'] = 'move';
-                               break;
-                       case RC_LOG:
-                               $vals['type'] = 'log';
-                               break;
-                       case RC_EXTERNAL:
-                               $vals['type'] = 'external';
-                               break;
-                       case RC_MOVE_OVER_REDIRECT:
-                               $vals['type'] = 'move over redirect';
-                               break;
-                       default:
-                               $vals['type'] = $type;
-               }
+               $vals['type'] = RecentChange::parseFromRCType( $type );
 
                $anyHidden = false;
 
@@ -607,30 +588,6 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                return $vals;
        }
 
-       private function parseRCType( $type ) {
-               if ( is_array( $type ) ) {
-                       $retval = array();
-                       foreach ( $type as $t ) {
-                               $retval[] = $this->parseRCType( $t );
-                       }
-
-                       return $retval;
-               }
-
-               switch ( $type ) {
-                       case 'edit':
-                               return RC_EDIT;
-                       case 'new':
-                               return RC_NEW;
-                       case 'log':
-                               return RC_LOG;
-                       case 'external':
-                               return RC_EXTERNAL;
-                       default:
-                               ApiBase::dieDebug( __METHOD__, "Unknown type '$type'" );
-               }
-       }
-
        public function getCacheMode( $params ) {
                if ( isset( $params['show'] ) ) {
                        foreach ( $params['show'] as $show ) {
index 592c434..50c3c7b 100644 (file)
@@ -209,7 +209,7 @@ class ApiQueryRevisions extends ApiQueryBase {
                        $this->addWhereFld( 'ct_tag', $params['tag'] );
                }
 
-               if ( isset( $prop['content'] ) || !is_null( $this->difftotext ) ) {
+               if ( isset( $prop['content'] ) || !is_null( $this->diffto ) || !is_null( $this->difftotext ) ) {
                        // For each page we will request, the user must have read rights for that page
                        $user = $this->getUser();
                        /** @var $title Title */
index ea3a084..0a97d04 100644 (file)
@@ -396,6 +396,9 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                $val['language'] = $langNames[$prefix];
                        }
                        $val['url'] = wfExpandUrl( $row['iw_url'], PROTO_CURRENT );
+                       if (substr( $row['iw_url'], 0, 2) == '//') {
+                               $val['protorel'] = true;
+                       }
                        if ( isset( $row['iw_wikiid'] ) ) {
                                $val['wikiid'] = $row['iw_wikiid'];
                        }
index b198883..9a4dd82 100644 (file)
@@ -194,7 +194,11 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                }
 
                if ( !is_null( $params['type'] ) ) {
-                       $this->addWhereFld( 'rc_type', $this->parseRCType( $params['type'] ) );
+                       try {
+                               $this->addWhereFld( 'rc_type', RecentChange::parseToRCType( $params['type'] ) );
+                       } catch ( MWException $e ) {
+                               ApiBase::dieDebug( __METHOD__, $e->getMessage() );
+                       }
                }
 
                if ( !is_null( $params['user'] ) && !is_null( $params['excludeuser'] ) ) {
@@ -292,33 +296,8 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
 
                /* Our output data. */
                $vals = array();
-
                $type = intval( $row->rc_type );
-
-               /* Determine what kind of change this was. */
-               switch ( $type ) {
-                       case RC_EDIT:
-                               $vals['type'] = 'edit';
-                               break;
-                       case RC_NEW:
-                               $vals['type'] = 'new';
-                               break;
-                       case RC_MOVE:
-                               $vals['type'] = 'move';
-                               break;
-                       case RC_LOG:
-                               $vals['type'] = 'log';
-                               break;
-                       case RC_EXTERNAL:
-                               $vals['type'] = 'external';
-                               break;
-                       case RC_MOVE_OVER_REDIRECT:
-                               $vals['type'] = 'move over redirect';
-                               break;
-                       default:
-                               $vals['type'] = $type;
-               }
-
+               $vals['type'] = RecentChange::parseFromRCType( $type );
                $anyHidden = false;
 
                /* Create a new entry in the result for the title. */
@@ -449,35 +428,6 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                return $vals;
        }
 
-       /** Copied from ApiQueryRecentChanges.
-        *
-        * @param string $type
-        * @return string
-        */
-       private function parseRCType( $type ) {
-               if ( is_array( $type ) ) {
-                       $retval = array();
-                       foreach ( $type as $t ) {
-                               $retval[] = $this->parseRCType( $t );
-                       }
-
-                       return $retval;
-               }
-
-               switch ( $type ) {
-                       case 'edit':
-                               return RC_EDIT;
-                       case 'new':
-                               return RC_NEW;
-                       case 'log':
-                               return RC_LOG;
-                       case 'external':
-                               return RC_EXTERNAL;
-                       default:
-                               ApiBase::dieDebug( __METHOD__, "Unknown type '$type'" );
-               }
-       }
-
        public function getAllowedParams() {
                return array(
                        'allrev' => false,
index 6c42601..7307c69 100644 (file)
@@ -90,7 +90,6 @@ class EnhancedChangesList extends ChangesList {
        public function recentChangesLine( &$baseRC, $watched = false ) {
                wfProfileIn( __METHOD__ );
 
-               # If it's a new day, add the headline and flush the cache
                $date = $this->getLanguage()->userDate(
                        $baseRC->mAttribs['rc_timestamp'],
                        $this->getUser()
@@ -98,6 +97,7 @@ class EnhancedChangesList extends ChangesList {
 
                $ret = '';
 
+               # If it's a new day, add the headline and flush the cache
                if ( $date != $this->lastdate ) {
                        # Process current cache
                        $ret = $this->recentChangesBlock();
@@ -121,28 +121,41 @@ class EnhancedChangesList extends ChangesList {
         * @param RCCacheEntry $cacheEntry
         */
        protected function addCacheEntry( RCCacheEntry $cacheEntry ) {
+               $cacheGroupingKey = $this->makeCacheGroupingKey( $cacheEntry );
+
+               if ( !isset( $this->rc_cache[$cacheGroupingKey] ) ) {
+                       $this->rc_cache[$cacheGroupingKey] = array();
+               }
+
+               array_push( $this->rc_cache[$cacheGroupingKey], $cacheEntry );
+       }
+
+       /**
+        * @todo use rc_source to group, if set; fallback to rc_type
+        *
+        * @param RCCacheEntry $cacheEntry
+        *
+        * @return string
+        */
+       protected function makeCacheGroupingKey( RCCacheEntry $cacheEntry ) {
                $title = $cacheEntry->getTitle();
-               $secureName = $title->getPrefixedDBkey();
+               $cacheGroupingKey = $title->getPrefixedDBkey();
 
                $type = $cacheEntry->mAttribs['rc_type'];
 
+               // @todo remove handling for RC_MOVE and RC_MOVE_OVER_REDIRECT (bug 63755)
                if ( $type == RC_MOVE || $type == RC_MOVE_OVER_REDIRECT ) {
-                       # Use an @ character to prevent collision with page names
-                       $this->rc_cache['@@' . ( $this->rcMoveIndex++ )] = array( $cacheEntry );
-               } else {
-                       # Logs are grouped by type
-                       if ( $type == RC_LOG ) {
-                               $secureName = SpecialPage::getTitleFor(
-                                       'Log',
-                                       $cacheEntry->mAttribs['rc_log_type']
-                               )->getPrefixedDBkey();
-                       }
-                       if ( !isset( $this->rc_cache[$secureName] ) ) {
-                               $this->rc_cache[$secureName] = array();
-                       }
-
-                       array_push( $this->rc_cache[$secureName], $cacheEntry );
+                       // Use an # character to prevent collision with page names
+                       $cacheGroupingKey = '##' . ( $this->rcMoveIndex++ );
+               } elseif ( $type == RC_LOG ) {
+                       // Group by log type
+                       $cacheGroupingKey = SpecialPage::getTitleFor(
+                               'Log',
+                               $cacheEntry->mAttribs['rc_log_type']
+                       )->getPrefixedDBkey();
                }
+
+               return $cacheGroupingKey;
        }
 
        /**
index f7beb0c..3a5a869 100644 (file)
@@ -102,6 +102,70 @@ class RecentChange {
                return $rc;
        }
 
+       /**
+        * Parsing text to RC_* constants
+        * @since 1.24
+        * @param string|array $type
+        * @throws MWException
+        * @return int|array RC_TYPE
+        */
+       public static function parseToRCType( $type ) {
+               if ( is_array( $type ) ) {
+                       $retval = array();
+                       foreach ( $type as $t ) {
+                               $retval[] = RecentChange::parseToRCType( $t );
+                       }
+
+                       return $retval;
+               }
+
+               switch ( $type ) {
+                       case 'edit':
+                               return RC_EDIT;
+                       case 'new':
+                               return RC_NEW;
+                       case 'log':
+                               return RC_LOG;
+                       case 'external':
+                               return RC_EXTERNAL;
+                       default:
+                               throw new MWException( "Unknown type '$type'" );
+               }
+       }
+
+       /**
+        * Parsing RC_* constants to human-readable test
+        * @since 1.24
+        * @param int $rc_type
+        * @return string $type
+        */
+       public static function parseFromRCType( $rcType ) {
+               switch ( $rcType ) {
+                       case RC_EDIT:
+                               $type = 'edit';
+                               break;
+                       case RC_NEW:
+                               $type = 'new';
+                               break;
+                       case RC_MOVE:
+                               $type = 'move';
+                               break;
+                       case RC_LOG:
+                               $type = 'log';
+                               break;
+                       case RC_EXTERNAL:
+                               $type = 'external';
+                               break;
+                       case RC_MOVE_OVER_REDIRECT:
+                               $type = 'move over redirect';
+                               break;
+                       default:
+                               $type = "$rcType";
+               }
+
+               return $type;
+       }
+
        /**
         * No uses left in Gerrit on 2013-11-19.
         * @deprecated since 1.22
index 13efb81..8c06ef4 100644 (file)
@@ -3417,6 +3417,11 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        $this->runOnTransactionIdleCallbacks();
                }
 
+               # Avoid fatals if close() was called
+               if ( !$this->isOpen() ) {
+                       throw new DBUnexpectedError( $this, "DB connection was already closed." );
+               }
+
                $this->doBegin( $fname );
                $this->mTrxFname = $fname;
                $this->mTrxDoneWrites = false;
@@ -3475,6 +3480,11 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        }
                }
 
+               # Avoid fatals if close() was called
+               if ( !$this->isOpen() ) {
+                       throw new DBUnexpectedError( $this, "DB connection was already closed." );
+               }
+
                $this->runOnTransactionPreCommitCallbacks();
                $this->doCommit( $fname );
                if ( $this->mTrxDoneWrites ) {
@@ -3525,6 +3535,11 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        }
                }
 
+               # Avoid fatals if close() was called
+               if ( !$this->isOpen() ) {
+                       throw new DBUnexpectedError( $this, "DB connection was already closed." );
+               }
+
                $this->doRollback( $fname );
                $this->mTrxIdleCallbacks = array(); // cancel
                $this->mTrxPreCommitCallbacks = array(); // cancel
index 468ed6d..3e063c6 100644 (file)
@@ -342,8 +342,13 @@ class DatabaseSqlite extends DatabaseBase {
         */
        function numFields( $res ) {
                $r = $res instanceof ResultWrapper ? $res->result : $res;
-
-               return is_array( $r ) ? count( $r[0] ) : 0;
+               if ( is_array($r) && count( $r ) > 0 ){
+                       // The size of the result array is twice the number of fields. (Bug: 65578)
+                       return count( $r[0] ) / 2 ;
+               } else {
+                       // If the result is empty return 0
+                       return 0;
+               }
        }
 
        /**
index a9e312d..2820be2 100644 (file)
@@ -1231,12 +1231,13 @@ abstract class FileBackend {
         *
         * @param array $paths Storage paths
         * @param int $type LockManager::LOCK_* constant
+        * @param int $timeout Timeout in seconds (0 means non-blocking) (since 1.24)
         * @return Status
         */
-       final public function lockFiles( array $paths, $type ) {
+       final public function lockFiles( array $paths, $type, $timeout = 0 ) {
                $paths = array_map( 'FileBackend::normalizeStoragePath', $paths );
 
-               return $this->lockManager->lock( $paths, $type );
+               return $this->lockManager->lock( $paths, $type, $timeout );
        }
 
        /**
@@ -1265,9 +1266,10 @@ abstract class FileBackend {
         * @param array $paths List of storage paths or map of lock types to path lists
         * @param int|string $type LockManager::LOCK_* constant or "mixed"
         * @param Status $status Status to update on lock/unlock
+        * @param int $timeout Timeout in seconds (0 means non-blocking) (since 1.24)
         * @return ScopedLock|null Returns null on failure
         */
-       final public function getScopedFileLocks( array $paths, $type, Status $status ) {
+       final public function getScopedFileLocks( array $paths, $type, Status $status, $timeout = 0 ) {
                if ( $type === 'mixed' ) {
                        foreach ( $paths as &$typePaths ) {
                                $typePaths = array_map( 'FileBackend::normalizeStoragePath', $typePaths );
@@ -1276,7 +1278,7 @@ abstract class FileBackend {
                        $paths = array_map( 'FileBackend::normalizeStoragePath', $paths );
                }
 
-               return ScopedLock::factory( $this->lockManager, $paths, $type, $status );
+               return ScopedLock::factory( $this->lockManager, $paths, $type, $status, $timeout );
        }
 
        /**
index a8fa8bd..300e68e 100644 (file)
@@ -1248,19 +1248,13 @@ class LocalFile extends File {
                        wfProfileOut( __METHOD__ . '-getProps' );
                }
 
+               # Imports or such might force a certain timestamp; otherwise we generate
+               # it and can fudge it slightly to keep (name,timestamp) unique on re-upload.
                if ( $timestamp === false ) {
-                       // Use FOR UPDATE in case lock()/unlock() did not start the transaction
-                       $ltimestamp = $dbw->selectField( 'image', 'img_timestamp',
-                               array( 'img_name' => $this->getName() ), __METHOD__, array( 'FOR UPDATE' ) );
-                       $ltime = $ltimestamp ? wfTimestamp( TS_UNIX, $ltimestamp ) : false;
-                       $ctime = time();
-                       // Avoid a timestamp that is not newer than the last version
-                       if ( $ctime > $ltime ) {
-                               $timestamp = $dbw->timestamp( $ctime );
-                       } else {
-                               sleep( 1 ); // fast enough uploads will go in to the future otherwise
-                               $timestamp = $dbw->timestamp( $ltime + 1 );
-                       }
+                       $timestamp = $dbw->timestamp();
+                       $allowTimeKludge = true;
+               } else {
+                       $allowTimeKludge = false;
                }
 
                $props['description'] = $comment;
@@ -1303,6 +1297,20 @@ class LocalFile extends File {
                        'IGNORE'
                );
                if ( $dbw->affectedRows() == 0 ) {
+                       if ( $allowTimeKludge ) {
+                               # Use FOR UPDATE to ignore any transaction snapshotting
+                               $ltimestamp = $dbw->selectField( 'image', 'img_timestamp',
+                                       array( 'img_name' => $this->getName() ), __METHOD__, array( 'FOR UPDATE' ) );
+                               $lUnixtime = $ltimestamp ? wfTimestamp( TS_UNIX, $ltimestamp ) : false;
+                               # Avoid a timestamp that is not newer than the last version
+                               # TODO: the image/oldimage tables should be like page/revision with an ID field
+                               if ( $lUnixtime && wfTimestamp( TS_UNIX, $timestamp ) <= $lUnixtime ) {
+                                       sleep( 1 ); // fast enough re-uploads would go far in the future otherwise
+                                       $timestamp = $dbw->timestamp( $lUnixtime + 1 );
+                                       $this->timestamp = wfTimestamp( TS_MW, $timestamp ); // DB -> TS_MW
+                               }
+                       }
+
                        # (bug 34993) Note: $oldver can be empty here, if the previous
                        # version of the file was broken. Allow registration of the new
                        # version to continue anyway, because that's better than having
@@ -1836,8 +1844,8 @@ class LocalFile extends File {
        /**
         * Start a transaction and lock the image for update
         * Increments a reference counter if the lock is already held
-        * @throws MWException
-        * @return bool True if the image exists, false otherwise
+        * @throws MWException Throws an error if the lock was not acquired
+        * @return bool success
         */
        function lock() {
                $dbw = $this->repo->getMasterDB();
@@ -1849,21 +1857,22 @@ class LocalFile extends File {
                        }
                        $this->locked++;
                        // Bug 54736: use simple lock to handle when the file does not exist.
-                       // SELECT FOR UPDATE only locks records not the gaps where there are none.
-                       $cache = wfGetMainCache();
-                       $key = $this->getCacheKey();
-                       if ( !$cache->lock( $key, 5 ) ) {
+                       // SELECT FOR UPDATE prevents changes, not other SELECTs with FOR UPDATE.
+                       // Also, that would cause contention on INSERT of similarly named rows.
+                       $backend = $this->getRepo()->getBackend();
+                       $lockPaths = array( $this->getPath() ); // represents all versions of the file
+                       $status = $backend->lockFiles( $lockPaths, LockManager::LOCK_EX, 5 );
+                       if ( !$status->isGood() ) {
                                throw new MWException( "Could not acquire lock for '{$this->getName()}.'" );
                        }
-                       $dbw->onTransactionIdle( function () use ( $cache, $key ) {
-                               $cache->unlock( $key ); // release on commit
+                       $dbw->onTransactionIdle( function () use ( $backend, $lockPaths ) {
+                               $backend->unlockFiles( $lockPaths, LockManager::LOCK_EX ); // release on commit
                        } );
                }
 
                $this->markVolatile(); // file may change soon
 
-               return $dbw->selectField( 'image', '1',
-                       array( 'img_name' => $this->getName() ), __METHOD__, array( 'FOR UPDATE' ) );
+               return true;
        }
 
        /**
@@ -2394,10 +2403,14 @@ class LocalFileRestoreBatch {
                        return $this->file->repo->newGood();
                }
 
-               $exists = $this->file->lock();
+               $this->file->lock();
+
                $dbw = $this->file->repo->getMasterDB();
                $status = $this->file->repo->newGood();
 
+               $exists = (bool)$dbw->selectField( 'image', '1',
+                       array( 'img_name' => $this->file->getName() ), __METHOD__, array( 'FOR UPDATE' ) );
+
                // Fetch all or selected archived revisions for the file,
                // sorted from the most recent to the oldest.
                $conditions = array( 'fa_name' => $this->file->getName() );
@@ -2758,7 +2771,8 @@ class LocalFileMoveBatch {
                $result = $this->db->select( 'oldimage',
                        array( 'oi_archive_name', 'oi_deleted' ),
                        array( 'oi_name' => $this->oldName ),
-                       __METHOD__
+                       __METHOD__,
+                       array( 'FOR UPDATE' ) // ignore snapshot
                );
 
                foreach ( $result as $row ) {
index 085404b..c07fc3a 100644 (file)
@@ -702,7 +702,8 @@ class WebInstaller extends Installer {
                $html = $this->parse( $text, true );
 
                return "<div class=\"mw-help-field-container\">\n" .
-                       "<span class=\"mw-help-field-hint\" title=\"" .  wfMessage( 'config-help-tooltip' )->escaped() . "\">" .
+                       "<span class=\"mw-help-field-hint\" title=\"" .
+                       wfMessage( 'config-help-tooltip' )->escaped() . "\">" .
                        wfMessage( 'config-help' )->escaped() . "</span>\n" .
                        "<span class=\"mw-help-field-data\">" . $html . "</span>\n" .
                        "</div>\n";
index 696f0c3..f774aea 100644 (file)
        "config-nofile": "Il file \"$1\" non può essere trovato. È stato eliminato?",
        "config-extension-link": "Sapevi che il tuo wiki supporta le  [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions estensioni]?\n\nPuoi navigare tra le [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category estensioni per categoria].",
        "mainpagetext": "'''Installazione di MediaWiki completata correttamente.'''",
-       "mainpagedocfooter": "Consultare la [//meta.wikimedia.org/wiki/Help:Contents Guida utente] per maggiori informazioni sull'uso di questo software wiki.\n\n== Per iniziare ==\nI seguenti collegamenti sono in lingua inglese:\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Impostazioni di configurazione]\n* [//www.mediawiki.org/wiki/Manual:FAQ/it Domande frequenti su MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list annunci MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localizza MediaWiki nella tua lingua]"
+       "mainpagedocfooter": "Consulta la [//meta.wikimedia.org/wiki/Special:MyLanguage/Help:Contents Guida utente] per maggiori informazioni sull'uso di questo software wiki.\n\n== Per iniziare ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Impostazioni di configurazione]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Domande frequenti su MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list annunci MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localizza MediaWiki nella tua lingua]"
 }
index 0439b13..c95e9df 100644 (file)
        "config-install-done": "<strong>Gratulrerer!</strong>\nDu har lykkes i å installere MediaWiki.\n\nInstallasjonsprogrammet har generert en <code>LocalSettings.php</code>-fil.\nDen inneholder alle dine konfigureringer.\n\nDu må laste den ned og legge den på hovedfolderen for din wiki-installasjon (der index.php ligger). Nedlastingen skulle ha startet automatisk.\n\nHvis ingen nedlasting ble tilbudt, eller du avbrøt den, kan du få den i gang ved å klikke på lenken under:\n\n$3\n\n<strong>OBS:</strong> Hvis du ikke gjør dette nå, vil den genererte konfigurasjonsfilen ikke være tilgjengelig for deg senere.\n\nNår dette er gjort, kan du <strong>[$2 gå inn i wikien]</strong>.",
        "config-download-localsettings": "Last ned <code>LocalSettings.php</code>",
        "config-help": "hjelp",
+       "config-help-tooltip": "klikk for å utvide",
        "config-nofile": "Filen \"$1\" ble ikke funnet. Kan den være blitt slettet?",
        "config-extension-link": "Visste du at wikien din kan brukes sammen med en mengde [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions utvidelser]?\n\nDu kan sjekke gjennom [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category utvidelser per kategori] eller [//www.mediawiki.org/wiki/Extension_Matrix utvidelsesmatrisen] for å se den komplette listen av utvidelser.",
        "mainpagetext": "'''MediaWiki-programvaren er nå installert.'''",
index 1ee2377..69a1f39 100644 (file)
        "config-nofile": "Het bestand \"$1\" is niet gevonden. Is het verwijderd?",
        "config-extension-link": "Weet u dat u [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions uitbreidingen] kunt gebruiken voor uw wiki?\nU kunt [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category uitbreidingen op categorie] bekijken of ga naar de [//www.mediawiki.org/wiki/Extension_Matrix uitbreidingenmatrix] om de volledige lijst met uitbreidingen te bekijken.",
        "mainpagetext": "'''De installatie van MediaWiki is geslaagd.'''",
-       "mainpagedocfooter": "Raadpleeg de [//meta.wikimedia.org/wiki/Help:Contents Inhoudsopgave handleiding] voor informatie over het gebruik van de wikisoftware.\n\n== Meer hulp over MediaWiki ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lijst met instellingen]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Veelgestelde vragen (FAQ)]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglijst voor aankondigingen van nieuwe versies]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Maak MediaWiki beschikbaar in uw taal]"
+       "mainpagedocfooter": "Raadpleeg de [//meta.wikimedia.org/wiki/Special:MyLanguage/Help:Contents handleiding] voor informatie over het gebruik van de wikisoftware.\n\n== Meer hulp over MediaWiki ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lijst met instellingen]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Veelgestelde vragen (FAQ)]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglijst voor aankondigingen van nieuwe versies]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Maak MediaWiki beschikbaar in uw taal]"
 }
index 91ed66c..83fb3d8 100644 (file)
@@ -5,12 +5,29 @@
                        "Psubhashish"
                ]
        },
+       "config-session-error": "ଅଧିବେଶନ ଆରମ୍ଭରେ ଅସୁବିଧା: $1",
+       "config-your-language": "ଆପଣଙ୍କ ଭାଷା:",
+       "config-your-language-help": "ଇନଷ୍ଟଲ କରିବା ବେଳେ ବ୍ୟବହାର ପାଇଁ ଏକ ଭାଷା ବାଛନ୍ତୁ ।",
+       "config-wiki-language": "ଉଇକି ଭାଷା:",
        "config-back": "← ପଛକୁ",
        "config-continue": "ଚାଲୁରଖିବେ →",
        "config-page-language": "ଭାଷା",
        "config-page-welcome": "ମେଡିଆଉଇକିକୁ ଆପଣଙ୍କୁ ସ୍ଵାଗତ",
+       "config-page-dbconnect": "ଡାଟାବେସ ସହ ଯୋଡ଼ନ୍ତୁ",
+       "config-page-upgrade": "ଏବେର ଇନଷ୍ଟଲେସନଟିକୁ ଅପଗ୍ରେଡ଼ କରନ୍ତୁ",
+       "config-page-dbsettings": "ଡାଟାବେସ ସଂରଚନା",
        "config-page-name": "ନାମ",
        "config-page-options": "ପସନ୍ଦସମୂହ",
+       "config-page-install": "ଇନଷ୍ଟଲ",
+       "config-page-complete": "ଶେଷ ହେଲା!",
+       "config-page-restart": "ଇନଷ୍ଟଲେସନ ପୁନଃଆରମ୍ଭ କରନ୍ତୁ",
+       "config-page-readme": "ପଢ଼ନ୍ତୁ",
+       "config-page-releasenotes": "ପ୍ରକାଶନ ସୂଚନା",
+       "config-page-copying": "ନକଲ କରୁଛି",
+       "config-page-upgradedoc": "ଅପଗ୍ରେଡ଼ କରୁଛି",
+       "config-page-existingwiki": "ଏବେକାର ଉଇକି",
+       "config-restart": "ହଁ, ଏହାକୁ ପୁନରାରମ୍ଭ କରନ୍ତୁ",
+       "config-env-php": "PHP $1 ଇନଷ୍ଟଲ ହେଲା ।",
        "config-license-cc-by-sa": "କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବ୍ୟୁସନ-ସେଆର ଏଲାଇକ",
        "config-license-cc-by-nc-sa": "କ୍ରିଏଟିଭ କମନ୍ସ ଆଟ୍ରିବ୍ୟୁସନ-ନନକମର୍ସିଆଲ ସେଆର ଏଲାଇକ"
 }
index ffd98b2..86b760c 100644 (file)
@@ -73,6 +73,7 @@
        "config-db-username": "డేటాబేసు వాడుకరిపేరు:",
        "config-db-password": "డేటాబేసు సంకేతపదం:",
        "config-db-password-empty": "కొత్త డేటాబేసు వాడుకరి $1 కి ఓ సంకేతపదం ఇవ్వండి. \nసంకేతపదాలేమీ లేకుండా వాడుకరులను సృష్టించేవీలున్నప్పటికీ, అది సురక్షితం కాదు.",
+       "config-db-username-empty": "\"{{int:config-db-username}}\" కి మీరు తప్పకుండా ఏదో ఒక విలువ ఇవ్వాలి.",
        "config-db-install-username": "స్థాపన దశలో డేటాబేసుకు కనెక్టయ్యేందుకు వాడే వాడుకరిపేరును ఇవ్వండి.\nఇది MediaWiki ఖాతా యొక్క వాడుకరిపేరు కాదు; మీ డేటాబేసు కోసం వాడుకరిపేరు.",
        "config-db-install-password": "స్థాపన దశలో డేటాబేసుకు కనెక్టయ్యేందుకు వాడే సంకేతపదాన్ని ఇవ్వండి.\nఇది MediaWiki ఖాతా యొక్క సంకేతపదం కాదు; మీ డేటాబేసు కోసం సంకేతపదం.",
        "config-db-install-help": "స్థాపన దశలో డేటాబేసుకు కనెక్టయ్యేందుకు వాడే వాడుకరిపేరు, సంకేతపదం ఇవ్వండి.",
index 58d5c67..d6f9560 100644 (file)
@@ -195,7 +195,7 @@ class JobQueueFederated extends JobQueue {
                $key = $this->getCacheKey( $type );
 
                $count = $this->cache->get( $key );
-               if ( is_int( $count ) ) {
+               if ( $count !== false ) {
                        return $count;
                }
 
index 82197b5..d71e660 100644 (file)
@@ -76,7 +76,10 @@ if [ "$MW_MEM_LIMIT" -gt 0 ]; then
                # Memory
                echo $(($MW_MEM_LIMIT*1024)) > "$MW_CGROUP"/$$/memory.limit_in_bytes
                # Memory+swap
-               echo $(($MW_MEM_LIMIT*1024)) > "$MW_CGROUP"/$$/memory.memsw.limit_in_bytes
+               # This will be missing if there is no swap
+               if [ -e "$MW_CGROUP"/$$/memory.memsw.limit_in_bytes ]; then
+                       echo $(($MW_MEM_LIMIT*1024)) > "$MW_CGROUP"/$$/memory.memsw.limit_in_bytes
+               fi
        else
                ulimit -v "$MW_MEM_LIMIT"
        fi
index 0d12205..d15b43a 100644 (file)
@@ -91,7 +91,8 @@ class Preprocessor_DOM implements Preprocessor {
                if ( !$result ) {
                        // Try running the XML through UtfNormal to get rid of invalid characters
                        $xml = UtfNormal::cleanUp( $xml );
-                       // 1 << 19 == XML_PARSE_HUGE, needed so newer versions of libxml2 don't barf when the XML is >256 levels deep
+                       // 1 << 19 == XML_PARSE_HUGE, needed so newer versions of libxml2
+                       // don't barf when the XML is >256 levels deep
                        $result = $dom->loadXML( $xml, 1 << 19 );
                }
                wfProfileOut( __METHOD__ . '-loadXML' );
index 6d6b2c1..51235ee 100644 (file)
@@ -550,6 +550,7 @@ class PageArchive {
 
                $ret->seek( $rev_count - 1 ); // move to last
                $row = $ret->fetchObject(); // get newest archived rev
+               $oldPageId = (int)$row->ar_page_id; // pass this to ArticleUndelete hook
                $ret->seek( 0 ); // move back
 
                // grab the content to check consistency with global state before restoring the page.
@@ -642,7 +643,7 @@ class PageArchive {
                        );
                }
 
-               wfRunHooks( 'ArticleUndelete', array( &$this->title, $created, $comment ) );
+               wfRunHooks( 'ArticleUndelete', array( &$this->title, $created, $comment, $oldPageId ) );
 
                if ( $this->title->getNamespace() == NS_FILE ) {
                        $update = new HTMLCacheUpdate( $this->title, 'imagelinks' );
index 1f38631..6c95985 100644 (file)
@@ -67,6 +67,7 @@ define( 'IP_ADDRESS_STRING',
 class IP {
        /** @var IPSet */
        private static $ipSet = null;
+
        /**
         * Determine if a string is as valid IP address or network (CIDR prefix).
         * SIIT IPv4-translated addresses are rejected.
@@ -301,16 +302,6 @@ class IP {
                }
        }
 
-       /**
-        * Given an unsigned integer, returns an IPv6 address in octet notation
-        *
-        * @param $ip_int String: IP address.
-        * @return String
-        */
-       public static function toOctet( $ip_int ) {
-               return self::hexToOctet( wfBaseConvert( $ip_int, 10, 16, 32, false ) );
-       }
-
        /**
         * Convert an IPv4 or IPv6 hexadecimal representation back to readable format
         *
@@ -374,67 +365,19 @@ class IP {
         * @return Boolean
         */
        public static function isPublic( $ip ) {
-               if ( self::isIPv6( $ip ) ) {
-                       return self::isPublic6( $ip );
-               }
-               $n = self::toUnsigned( $ip );
-               if ( !$n ) {
-                       return false;
-               }
-
-               // ip2long accepts incomplete addresses, as well as some addresses
-               // followed by garbage characters. Check that it's really valid.
-               if ( $ip != long2ip( $n ) ) {
-                       return false;
-               }
-
-               static $privateRanges = false;
-               if ( !$privateRanges ) {
-                       $privateRanges = array(
-                               array( '10.0.0.0', '10.255.255.255' ), # RFC 1918 (private)
-                               array( '172.16.0.0', '172.31.255.255' ), # RFC 1918 (private)
-                               array( '192.168.0.0', '192.168.255.255' ), # RFC 1918 (private)
-                               array( '0.0.0.0', '0.255.255.255' ), # this network
-                               array( '127.0.0.0', '127.255.255.255' ), # loopback
-                       );
-               }
-
-               foreach ( $privateRanges as $r ) {
-                       $start = self::toUnsigned( $r[0] );
-                       $end = self::toUnsigned( $r[1] );
-                       if ( $n >= $start && $n <= $end ) {
-                               return false;
-                       }
-               }
-
-               return true;
-       }
-
-       /**
-        * Determine if an IPv6 address really is an IP address, and if it is public,
-        * i.e. not RFC 4193 or similar
-        *
-        * @param $ip String
-        * @return Boolean
-        */
-       private static function isPublic6( $ip ) {
-               static $privateRanges = false;
-               if ( !$privateRanges ) {
-                       $privateRanges = array(
-                               array( 'fc00::', 'fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff' ), # RFC 4193 (local)
-                               array( '0:0:0:0:0:0:0:1', '0:0:0:0:0:0:0:1' ), # loopback
-                       );
-               }
-               $n = self::toHex( $ip );
-               foreach ( $privateRanges as $r ) {
-                       $start = self::toHex( $r[0] );
-                       $end = self::toHex( $r[1] );
-                       if ( $n >= $start && $n <= $end ) {
-                               return false;
-                       }
-               }
-
-               return true;
+               static $privateSet = null;
+               if ( !$privateSet ) {
+                       $privateSet = new IPSet( array(
+                               '10.0.0.0/8', # RFC 1918 (private)
+                               '172.16.0.0/12', # RFC 1918 (private)
+                               '192.168.0.0/16', # RFC 1918 (private)
+                               '0.0.0.0/8', # this network
+                               '127.0.0.0/8', # loopback
+                               'fc00::/7', # RFC 4193 (local)
+                               '0:0:0:0:0:0:0:1', # loopback
+                       ) );
+               }
+               return !$privateSet->match( $ip );
        }
 
        /**
@@ -446,7 +389,7 @@ class IP {
         * hexadecimal string which sorts after the IPv4 addresses.
         *
         * @param string $ip quad dotted/octet IP address.
-        * @return String
+        * @return String|bool false on failure
         */
        public static function toHex( $ip ) {
                if ( self::isIPv6( $ip ) ) {
@@ -465,12 +408,12 @@ class IP {
         * Given an IPv6 address in octet notation, returns a pure hex string.
         *
         * @param string $ip octet ipv6 IP address.
-        * @return String: pure hex (uppercase)
+        * @return String|bool pure hex (uppercase); false on failure
         */
        private static function IPv6ToRawHex( $ip ) {
                $ip = self::sanitizeIP( $ip );
                if ( !$ip ) {
-                       return null;
+                       return false;
                }
                $r_ip = '';
                foreach ( explode( ':', $ip ) as $v ) {
@@ -489,7 +432,7 @@ class IP {
         */
        public static function toUnsigned( $ip ) {
                if ( self::isIPv6( $ip ) ) {
-                       $n = self::toUnsigned6( $ip );
+                       $n = wfBaseConvert( self::IPv6ToRawHex( $ip ), 16, 10 );
                } else {
                        // Bug 60035: an IP with leading 0's fails in ip2long sometimes (e.g. *.08)
                        $ip = preg_replace( '/(?<=\.)0+(?=[1-9])/', '', $ip );
@@ -507,14 +450,6 @@ class IP {
                return $n;
        }
 
-       /**
-        * @param $ip
-        * @return String
-        */
-       private static function toUnsigned6( $ip ) {
-               return wfBaseConvert( self::IPv6ToRawHex( $ip ), 16, 10 );
-       }
-
        /**
         * Convert a network specification in CIDR notation
         * to an integer network and a number of bits
@@ -585,13 +520,10 @@ class IP {
                                return self::parseRange6( $range );
                        }
                        if ( self::isIPv4( $start ) && self::isIPv4( $end ) ) {
-                               $start = self::toUnsigned( $start );
-                               $end = self::toUnsigned( $end );
+                               $start = self::toHex( $start );
+                               $end = self::toHex( $end );
                                if ( $start > $end ) {
                                        $start = $end = false;
-                               } else {
-                                       $start = sprintf( '%08X', $start );
-                                       $end = sprintf( '%08X', $end );
                                }
                        } else {
                                $start = $end = false;
@@ -679,17 +611,11 @@ class IP {
        // Explicit range notation...
                } elseif ( strpos( $range, '-' ) !== false ) {
                        list( $start, $end ) = array_map( 'trim', explode( '-', $range, 2 ) );
-                       $start = self::toUnsigned6( $start );
-                       $end = self::toUnsigned6( $end );
+                       $start = self::toHex( $start );
+                       $end = self::toHex( $end );
                        if ( $start > $end ) {
                                $start = $end = false;
-                       } else {
-                               $start = wfBaseConvert( $start, 10, 16, 32, false );
-                               $end = wfBaseConvert( $end, 10, 16, 32, false );
                        }
-                       # see toHex() comment
-                       $start = "v6-$start";
-                       $end = "v6-$end";
                } else {
                        # Single IP
                        $start = $end = self::toHex( $range );
@@ -812,6 +738,7 @@ class IP {
                        $trusted = self::$ipSet->match( $ip );
                }
                wfProfileOut( __METHOD__ );
+
                return $trusted;
        }
 
index 41eb136..d685f8f 100644 (file)
        "newwindow": "(openaþ in nīwum ēagþyrele)",
        "cancel": "Undōn",
        "moredotdotdot": "Mā...",
-       "morenotlisted": "Mā þe nis on getæle...",
+       "morenotlisted": "Þis getæl nis fulfyled.",
        "mypage": "Mīn tramet",
        "mytalk": "Mīn mōtung",
        "anontalk": "Þisses IP naman mōtung",
        "articlepage": "Sēon innunge tramet",
        "talk": "Mōtung",
        "views": "Sihþa",
-       "toolbox": "Tōlmearc",
+       "toolbox": "Tōlas",
        "userpage": "Sēon brūcendes tramet",
        "projectpage": "Sēon weorces tramet",
        "imagepage": "Sēon ymelan tramet",
        "pool-errorunknown": "Uncūþ wōh",
        "aboutsite": "Gecȳþness ymbe {{GRAMMAR:wrēgendlīc|{{SITENAME}}}}",
        "aboutpage": "Project:Gecȳþness",
-       "copyright": "Man mæg innunge under $1 findan.",
+       "copyright": "Man mæg innunge under $1 findan, būton þǣr hit is elles amearcod.",
        "copyrightpage": "{{ns:project}}:Gelīcnessriht",
        "currentevents": "Gelimpunga þisses tīman",
        "currentevents-url": "Project:Gelimpunga þisses tīman",
        "youhavenewmessages": "Þū hæfst $1 ($2).",
        "youhavenewmessagesfromusers": "Þū hafast $1 fram {{PLURAL:$3|ōðrum brūcende|$3 brūcenda}} ($2).",
        "youhavenewmessagesmanyusers": "Þū hafast $1 fram manigum brūcendum ($2).",
-       "newmessageslinkplural": "{{PLURAL:$1|nīwe ǣrendgewrit|nīwra ǣrendgewrita}}",
+       "newmessageslinkplural": "{{PLURAL:$1|nīwe ǣrendgewrit|999=nīwra ǣrendgewrita}}",
        "youhavenewmessagesmulti": "Þū hæfst nīwu ǣrendu on $1",
        "editsection": "adihtan",
        "editold": "adihtan",
        "viewsource-title": "Fruman for $1 sēon",
        "cascadeprotected": "Þes trament wæs geborgen wiþ adihtunge, for þǣm þe hē is befangen in þissum {{PLURAL:$1|tramente, þe is| tramentum, þe sind}} geborgen settum wyrcende þǣm cyre \"cascading\": $2",
        "exception-nologin": "Ne inloggod",
-       "virus-badscanner": "Bad configuration: Unknown virus scanner: $1",
+       "virus-badscanner": "Yfel gesetedness: Uncūþ wyrmsēcend: <em>$1</em>",
        "virus-unknownscanner": "uncūþ andgund:",
        "logouttext": "'''Þū eart nū ūtmeldod.'''\n\nÞū canst ætfeolan þǣre nytte {{SITENAME}} tō ungecūðum, oþþe þū canst <span class='plainlinks'>[$1 inmeldian eft]</span> tō þǣm ylcan oþþe ōðrum brūcende.\nCnāw þæt sume trametas mihten gīet wesan geīwde swā þū wǣre gīet inmeldod, oþ þæt þū clǣnsie þīnes sēcendtōles hord.",
        "welcomeuser": "Wilcume, $1!",
        "userlogout": "Ūtmeldian",
        "notloggedin": "Nā ingemeldod",
        "userlogin-noaccount": "Næfst þu hordcleofan?",
-       "userlogin-joinproject": "Join {{SITENAME}}",
+       "userlogin-joinproject": "Ƿeorðan gylda of {{SITENAME}}",
        "nologin": "Næfst þū reccinge? $1",
        "nologinlink": "Scieppan reccinge",
        "createaccount": "Scieppan reccinge",
        "gotaccount": "Hafast þū reccinge ǣr? $1.",
        "gotaccountlink": "Inmeldian",
        "userlogin-resetpassword-link": "Forgēate þū þīn gelēafword?",
-       "createaccountmail": "Notian sceortne tīman hlētlic þafungword and sendan hit to þǣm spearcǣrenda naman þe is niðer",
+       "createaccountmail": "Notian hwīlendlic hlīetlic þafungword and sendan hit tō þǣm genamodan spearcǣrendnaman",
        "createaccountreason": "Racu:",
        "badretype": "Þā þafungword þe write þū, bēoþ ungelīc.",
        "userexists": "Se brūcendnama is ǣr gebrocen. Cēos lā ōðerne naman.",
        "nosuchuser": "Þǣr nis nān brūcend þe hæfþ þone naman \"$1\".\nStafena micelnessa sind hefiga and ānlica on brūcendnamum.\nScēawa þīne wrītunge eft, oþþe [[Special:UserLogin/signup|sciepp nīwe reccinge]].",
        "nosuchusershort": "Þǣr nis nān brūcend mid þǣm naman \"$1\".  Scēawa þīne wrītunge.",
        "passwordtooshort": "Þafungword sculon habban læst {{PLURAL:$1|1 stafan|$1 stafena}}.",
-       "mailmypassword": "Sendan nīwe þafungword on spearcǣrende",
+       "mailmypassword": "Settan þafungword eft",
        "acct_creation_throttle_hit": "Nēosiende tō þissum wici, þe þīnne IP-Stōwe brȳcþ, hæfþ gesett {{PLURAL:$1|1 hordcleofan|$1 hordcleofan}} in þǣm læsten dæge. Þu ne canst settan ǣnige māran. Þǣrfram ne cunnon Nēosiende, þe þisne IP-Stōwe brȳcþ, settan ǣnige hordcleofan māran on þisse handhwīle.",
        "accountcreated": "Scōp reccinge",
        "loginlanguagelabel": "Sprǣc: $1",
        "newarticle": "(Nīwe)",
        "newarticletext": "Þū hæfst hlencan tō tramete þe nū gīet ne stent gefolgod.\nTō scieppene þone tramet, onginn tō wrītenne in þǣre mearce þe is beneoþan (seoh þone [$1 helpes tramet] ymb mā cȳþþu).\nGif þū hider be misfēnge cōme, cnoca þīnes webbsēcendes '''on bæc''' cnæpp.",
        "usercssyoucanpreview": "'''Rǣd:''' Brūc þone \"{{int:Forescēaƿian}}\" cnæpp tō costnienne þīne nīwan css/js wrītunge ǣr hit sīe hordod.",
-       "userjsyoucanpreview": "'''Rǣd:''' Brūc þone 'Forescēawian' cnæpp tō āfandienne þīne nīwe css/js beforan sparunge.",
+       "userjsyoucanpreview": "'''Rǣd:''' Brūc þone 'Īwan fōrebysene' cnæpp tō costienne þīnre nīwan JavaScrip fadunge ǣr þū hordie.",
        "updated": "(Ednīwed)",
        "note": "'''Gewritincel:'''",
        "previewnote": "'''Beþenc þe þis is gīet efne fōrebysen.'''\nÞīna andwendunga gīet ne sind hordoda!",
        "template-semiprotected": "(sāmborgen)",
        "hiddencategories": "Þes tramet is gesibb {{PLURAL:$1|1 gehȳdedum flocce|$1 gehȳdedra flocca}}:",
        "nocreate-loggedin": "Þū ne hæfst þafunge to scieppenne nīwe trametas.",
-       "permissionserrors": "Þafunga wōh",
+       "permissionserrors": "Þafunge wōh",
        "permissionserrorstext-withaction": "Þū ne hæfst þafunge tō $2, for {{PLURAL:$1|þisre race|þissum racum}}:",
        "recreate-moveddeleted-warn": "'''Warnung: Þū edsciepst tramet þe wæs ǣr forloren.'''\n\nÞu sceoldest smēagan, hwæðer hit gerādlīc sīe, forþ tō gānne mid þǣre adihtunge þisses trametes.\nÞæt forlēosunge and wegunge ealdhord þisses trametes is hēr geīeht for behēfnesse:",
        "viewpagelogs": "Sēon þisses trametes ealdhold",
        "rev-delundel": "īwan/hȳdan",
        "rev-showdeleted": "īwan",
        "revdelete-show-file-submit": "Gēa",
-       "revdelete-hide-text": "Hȳdan ednīwunge traht",
+       "revdelete-hide-text": "Nēosunge traht",
        "revdelete-hide-image": "Hȳdan ymelan innunge",
-       "revdelete-hide-comment": "Hȳdan adihtunge sceortnesse",
-       "revdelete-hide-user": "Hȳdan adihtendes brūcendnaman/IP address",
+       "revdelete-hide-comment": "Adihtunge sceortness",
+       "revdelete-hide-user": "Adihtendes brūcendnama/IP nama",
        "revdelete-radio-same": "(nā andwendan)",
        "revdelete-radio-set": "Gehȳdd",
        "revdelete-radio-unset": "Gesīene",
        "prevn": "ǣror {{PLURAL:$1|$1}}",
        "nextn": "nīehst {{PLURAL:$1|$1}}",
        "viewprevnext": "Sēon ($1 {{int:pipe-separator}} $2) ($3)",
-       "searchmenu-new": "'''Scieppan þone tramet \"[[:$1]]\" on þissum wiki!'''",
+       "searchmenu-new": "<strong>Scieppan þone tramet \"[[:$1]]\" on þissum wiki!</strong> {{PLURAL:$2|0=|Seoh ēac þone tramet þe wæs gefunden mid þīnre sōcne.|Seoh ēac þā þing þā wǣron gefunden.}}",
        "searchprofile-articles": "Innunge trametas",
        "searchprofile-project": "Helpes and Weorca trametas",
        "searchprofile-images": "Missenendebyrdness",
        "search-section": "(dǣl $1)",
        "search-suggest": "Mǣnst þū: $1",
        "search-interwiki-caption": "Sweostorweorc",
-       "search-interwiki-default": "$1 becymas:",
+       "search-interwiki-default": "Þing fram $1:",
        "search-interwiki-more": "(mā)",
        "searchrelated": "gesibb",
        "searchall": "eall",
        "yourrealname": "Þīn sōða nama:",
        "yourlanguage": "Brūcendofermearces sprǣc",
        "yourvariant": "Sprǣce wendung:",
-       "yourgender": "Gecynd:",
-       "gender-male": "Wer",
-       "gender-female": "Wīf",
+       "yourgender": "Hū līcaþ þē wesan amearcod?",
+       "gender-male": "Hē adihteþ wikitrametas",
+       "gender-female": "Hēo adihteþ wikitrametas",
        "email": "Spearcǣrend",
        "userrights-user-editname": "Wrīt brūcendnaman:",
        "editusergroup": "Adihtan brūcendhēapas",
        "group-user-member": "{{GENDER:$1|brūcend|brūcicge}}",
        "group-bot-member": "{{GENDER:$1|searuþrǣl}}",
        "group-sysop-member": "{{GENDER:$1|bewitend|bewiticge}}",
-       "group-suppress-member": "oferȝesiht",
+       "group-suppress-member": "{{GENDER:$1|uncūþ}}",
        "grouppage-sysop": "{{ns:project}}:Bewitendas",
        "newuserlogpage": "Brūcenda scieppunge ealdhord",
        "rightslog": "Brūcenda riht cranic",
        "recentchanges-label-newpage": "Þēos adihtung scōp nīwne tramet",
        "recentchanges-label-minor": "Þēos is lytel adihtung",
        "recentchanges-label-bot": "Searuþrǣl fremede þās adihtunge",
-       "recentchanges-legend-newpage": "$1 - nīƿu sīde",
-       "rcnotefrom": "Niðer sind þā andwendunga fram '''$2''' (mǣst īweþ '''$1''').",
+       "recentchanges-legend-newpage": "(seoh ēac [[Special:NewPages|getæl nīwra trameta]])",
+       "rcnotefrom": "Niðer sind þā andwendunga fram <strong>$2</strong> (mǣst īweþ <strong>$1</strong>).",
        "rclistfrom": "Īwan nīwa andwendunga fram $3 $2 and siþþan",
        "rcshowhideminor": "$1 lytela adihtunga",
        "rcshowhidebots": "$1 searuþrǣlas",
-       "rcshowhideliu": "$1 inmeldode brūcendas",
+       "rcshowhideliu": "$1 brūcendas on nambēc",
        "rcshowhideanons": "$1 uncūðe brūcendas",
        "rcshowhidemine": "$1 mīna adihtunga",
        "rclinks": "Īwan þā nīwostan $1 andwendunga in þissum nīehstum $2 daga<br />$3",
        "license-header": "Lēaf:",
        "nolicense": "Nān is gecoren",
        "license-nopreview": "(Fōrebysen nis gearu)",
-       "listfiles-summary": "Þes syndriga tramet īweþ ealla forþ gehladena ymelan.\nGif se brūcend asifte hine. synderlīce sind ymelan geīwda þǣre þe se brūcend forþ hlōd þā nīwostan fadunge.",
+       "listfiles-summary": "Þes syndriga tramet īweþ ealla forþ gehladena ymelan.",
        "listfiles_search_for": "Sēcan missenendebyrdnesse naman:",
        "imgfile": "ymele",
        "listfiles": "Ymelena getæl",
        "withoutinterwiki": "Trametas būtan sprǣchlencum",
        "withoutinterwiki-summary": "Þā folgiendan trametas nabbaþ hlencan tō ōðrum sprǣcfadungum.",
        "nbytes": "$1 {{PLURAL:$1|bita|bitena}}",
-       "ncategories": "$1 {{PLURAL:$1|flocca|flocca}}",
+       "ncategories": "$1 {{PLURAL:$1|flocc|flocca}}",
        "nlinks": "$1 {{PLURAL:$1|hlenca|hlencena}}",
        "nmembers": "$1 {{PLURAL:$1|gesīþ|gesīða}}",
        "specialpage-empty": "Nis þǣr nāht þe āh cȳðan þes tramet.",
        "speciallogtitlelabel": "Ende (trametes titul oþþe brūcendes nama):",
        "log": "Ealdhord",
        "allpages": "Ealle trametas",
-       "alphaindexline": "$1 oþ $2",
        "nextpage": "Nīehst tramet ($1)",
        "prevpage": "Ǣrra tramet ($1)",
        "allpagesfrom": "Īwan trametas fram:",
        "watchthispage": "Behealdan þisne tramet",
        "unwatch": "Ablinnan behealdunge",
        "unwatchthispage": "Ablinnan behealdunge",
-       "watchlist-details": "{{PLURAL:$1|Þǣr is $1 tramet|Þǣr sind $1 trameta}} on þīnum behealdunggetæle, nā arīmedum mōtunga trametum.",
+       "watchlist-details": "{{PLURAL:$1|Þǣr is $1 tramet|Þǣr sind $1 trameta}} on þīnum behealdunggetæle, nā sunderlīce arīmedum mōtunga trametum.",
        "wlshowlast": "Īwan þā nīwostan $1 tīda $2 daga $3",
        "watchlist-options": "Behealdungtæles cyras",
        "watching": "Behealdende...",
        "contributions": "{{GENDER:$1|Brūcendes}} forðunga",
        "contributions-title": "Brūcendes forðunga for $1",
        "mycontris": "Mīna forðunga",
-       "contribsub2": "For $1 ($2)",
+       "contribsub2": "For {{GENDER:$3|$1}} ($2)",
        "uctop": "(genge)",
        "month": "Fram mōnþe (and ǣr)",
        "year": "Fram iēare (and ǣr)",
        "file-info-size": "$1 × $2 pixels, ymelan micelu: $3, MIME cynn: $4",
        "file-nohires": "Þǣr nis nǣnig māre micelness.",
        "svg-long-desc": "SVG ymele, rihte $1 × $2 pixela, ymelan micelness: $3",
-       "show-big-image": "Full micelness",
+       "show-big-image": "Frumlicu ymele",
        "imagelisttext": "Niðer is getæl '''$1''' {{PLURAL:$1|ymelan|ymelena}}, endebyrded on $2.",
        "noimages": "Nāht tō sēonne.",
        "ilsubmit": "Sēcan",
index d2efc3a..3ad3ca9 100644 (file)
@@ -13,7 +13,8 @@
                        "Wikifan",
                        "bar.wikipedia.org administrators",
                        "✓",
-                       "아라"
+                       "아라",
+                       "Matthias Klostermayr"
                ]
        },
        "tog-underline": "Links unterstreichen:",
@@ -61,7 +62,7 @@
        "editfont-monospace": "Schrift mid ner festen Zeichenbreaden",
        "editfont-sansserif": "Serifenlose Groteskschrift",
        "editfont-serif": "Schrift mid Serifen",
-       "sunday": "Sundog",
+       "sunday": "Sunda",
        "monday": "Mondog",
        "tuesday": "Deansdog",
        "wednesday": "Midwoch",
        "anoneditwarning": "Obocht: Du bist ned eigloggt.\nDei IP-Adress wead in da Versionsgschicht afzoachnet.",
        "missingsummary": "'''Hiwais:''' du host koa Zåmmfossung ågeem. Wånn du ernait auf „{{int:savearticle}}“ druckst, werd dai Enderung one a Zåmmfossung ywernumma.",
        "missingcommenttext": "Bittschee gib a Zåmmfossung ai.",
-       "summary-preview": "Vurschau vo da Zåmmfossung:",
+       "summary-preview": "Voaschau vo da Zammfossung:",
        "subject-preview": "Vurschau vom Bedreff:",
        "blockedtitle": "Da Benytzer is gsperrt",
        "whitelistedittext": "Du muasst de $1, um Saiten beorwaiten z' kenna.",
        "logempty": "Koane passenden Einträg.",
        "log-title-wildcard": "Da Titel faungt auh mid ....",
        "allpages": "Olle Seitn",
-       "alphaindexline": "$1 bis $2",
        "nextpage": "Naxde Seiten ($1)",
        "prevpage": "Vurherige Seiten ($1)",
        "allpagesfrom": "Seiten auhzoang ob:",
index 20c3645..39381bc 100644 (file)
        "contributions-title": "Унёсак {{GENDER:$1|удзельніка|удзельніцы}} $1",
        "mycontris": "Унёсак",
        "contribsub2": "Для {{GENDER:$3|$1}} ($2)",
+       "contributions-userdoesnotexist": "Рахунак удзельніка «$1» не зарэгістраваны.",
        "nocontribs": "Ня знойдзена зьменаў, якія адпавядаюць гэтым крытэрыям.",
        "uctop": "(апошняя)",
        "month": "Ад месяца (і раней):",
        "movepagetalktext": "Старонка абмеркаваньня будзе перанесеная разам з асноўнай старонкай, '''за выключэньнем:'''\n* Не пустая старонка абмеркаваньня ўжо існуе пад новай назвай, альбо\n* Вы не паставілі адзнаку ў полі ніжэй.\n\nУ такіх выпадках Вы можаце перанесьці ці аб’яднаць старонку абмеркаваньня самастойна.",
        "movearticle": "Перанесьці старонку:",
        "moveuserpage-warning": "'''Папярэджаньне:''' Вы зьбіраецеся перанесьці старонку ўдзельніка. Калі ласка заўважце, што старонка будзе перанесеная, але імя ўдзельніка ''ня'' будзе зьмененае.",
+       "movecategorypage-warning": "<strong>Увага:</strong> вы зьбіраецеся перанесьці старонку катэгорыі. Калі ласка, заўважце, што будзе перанесеная толькі гэтая старонка, а ўсе старонкі з старой катэгорыі <em>ня</em> будуць перанесеныя ў новую.",
        "movenologintext": "Вам неабходна [[Special:UserLogin|ўвайсьці ў сыстэму]], каб перанесьці старонкі.",
        "movenotallowed": "Вы ня маеце дазволу на перанос старонак.",
        "movenotallowedfile": "Вы ня маеце правоў на перайменаваньне файлаў.",
        "cant-move-user-page": "Вы ня маеце правоў для пераносу старонак удзельнікаў (апрача падстаронак).",
        "cant-move-to-user-page": "Вы ня маеце правоў для пераносу старонкі ў прастору ўдзельніка (апрача падстаронак).",
+       "cant-move-category-page": "Вы ня маеце правоў для пераносу старонак катэгорыяў.",
+       "cant-move-to-category-page": "Вы ня маеце правоў для пераносу старонак у прастору назваў катэгорыяў.",
        "newtitle": "Новая назва:",
        "move-watch": "Назіраць за гэтай старонкай",
        "movepagebtn": "Перанесьці старонку",
index 24510b8..831475a 100644 (file)
        "pool-errorunknown": "অজানা ত্রুটি",
        "aboutsite": "{{SITENAME}} বৃত্তান্ত",
        "aboutpage": "Project:বৃত্তান্ত",
-       "copyright": "$1 এর আওতায় প্রকাশিত যদি অন্য কিছু নির্ধারিত না থাকে।",
+       "copyright": "বিষয়বস্তু $1-এর আওতায় প্রকাশিত যদি না অন্য কিছু নির্ধারিত থাকে।",
        "copyrightpage": "{{ns:project}}:কপিরাইট",
        "currentevents": "সমসাময়িক ঘটনা",
        "currentevents-url": "Project:সমসাময়িক ঘটনাসমূহ",
        "createacct-imgcaptcha-ph": "উপরে যে লেখা দেখতে পাচ্ছেন তা লিখুন",
        "createacct-submit": "আপনার অ্যাকাউন্ট তৈরি করুন",
        "createacct-another-submit": "আরেকটি অ্যাকাউন্ট তৈরি করুন",
-       "createacct-benefit-heading": "{{SITENAME}} আপনার মত লোকেরই তৈরি।",
+       "createacct-benefit-heading": "{{SITENAME}} আপনার মত লোকের দ্বারাই তৈরি।",
        "createacct-benefit-body1": "{{PLURAL:$1|টি সম্পাদনা}}",
        "createacct-benefit-body2": "{{PLURAL:$1|টি পাতা}}",
        "createacct-benefit-body3": "জন সাম্প্রতিক {{PLURAL:$1|অবদানকারী}}",
        "revdelete-show-file-confirm": "আপনি কি নিশ্চিত যে \"<nowiki>$1</nowiki>\" ফাইলের $2 তারিখের $3 টার অপসারণ লগ দেখানো হবে?",
        "revdelete-show-file-submit": "হ্যাঁ",
        "revdelete-selected-text": "[[:$2]] পাতার {{PLURAL:$1|নির্বাচিত সংশোধন|নির্বাচিত সংশোধনসমূহ}}:",
+       "revdelete-selected-file": "[[:$2]]-এর {{PLURAL:$1|নির্বাচিত ফাইল সংস্করণ|নির্বাচিত ফাইল সংস্করণগুলি}}:",
        "logdelete-selected": "{{PLURAL:$1|টি নির্বাচিত লগ-ঘটনা|টি নির্বাচিত লগ-ঘটনা}}:",
        "revdelete-confirm": "অনুগ্রহ করে নিশ্চিত করুন যে আপনি এটি করতে চাচ্ছিলেন, আপনি এর ফলাফল সম্পর্কে অবগত আছেন, এবং [[{{MediaWiki:Policy-url}}|নীতিমালার]] উপর ভিত্তি করেই এই কাজটি করছেন।",
        "revdelete-suppress-text": "নিচের বিষয়গুলোর ক্ষেত্রেই '''কেবলমাত্র'''  চাপাচাপি করা যাবে:\n* সম্ভাব্য মানহানিকর তথ্য\n* ভুল ব্যক্তিগত তথ্য\n*: ''বাসার ঠিকানা এবং ফোন নম্বর, সোসাল সিকিউরিটি নম্বর, ইত্যাদি।''",
        "right-move": "পাতা সরান",
        "right-move-subpages": "পাতাগুলোকে তার উপপাতাসহ সরিয়ে নিন",
        "right-move-rootuserpages": "root ব্যবহারকারীর পাতাগুলো সরিয়ে ফেলুন",
+       "right-move-categorypages": "বিষয়শ্রেণী পাতাসমূহ স্থানান্তর করুন",
        "right-movefile": "ফাইল স্থানান্তর",
        "right-suppressredirect": "পাতা স্থানান্তরের সময় মূল পাতায় রিডাইরেক্ট তৈরী করছে না",
        "right-upload": "ফাইল আপলোড করুন",
        "action-createpage": "পাতা তৈরি করো",
        "action-createtalk": "আলাপের পাতা তৈরি করো",
        "action-createaccount": "এই ব্যবহারকারী একাউন্টটি তৈরি করো",
+       "action-history": "এই পাতার ইতিহাস দেখাও",
        "action-minoredit": "এই সম্পাদনাটি অনুল্লেখ্য হিসেবে চিহ্নিত করো",
        "action-move": "পাতাটি সরিয়ে ফেলুন",
        "action-move-subpages": "পাতাটি এবং এর উপপাতাগুলো সরিয়ে ফেলুন",
        "action-move-rootuserpages": "root ব্যবহারকারীর পাতাগুলো সরিয়ে ফেলুন",
+       "action-move-categorypages": "বিষয়শ্রেণী পাতাসমূহ স্থানান্তর করুন",
        "action-movefile": "এই ফাইলটি সরিয়ে ফেলুন",
        "action-upload": "এই ফাইল আপলোড করো",
        "action-reupload": "বিদ্যমান ফাইল প্রতিস্থাপন করো",
        "protectedpages-cascade": "শুধুমাত্র প্রপাতাকার সুরক্ষা",
        "protectedpages-noredirect": "পুনর্নির্দেশনাগুলো লুকাও",
        "protectedpagesempty": "কোন পাতা বর্তমানে এই প্যারামিটারগুলিসহ সুরক্ষিত নয়।",
+       "protectedpages-timestamp": "সময়বার্তা",
        "protectedpages-page": "পাতা",
+       "protectedpages-expiry": "মেয়াদোত্তীর্ণ হবে",
        "protectedpages-performer": "ব্যবহারকারীকে সুরক্ষিত করা হচ্ছে",
        "protectedpages-params": "সুরক্ষা প্যারামিটার",
        "protectedpages-reason": "কারণ",
        "listgrouprights-removegroup-self-all": "নিজের অ্যাকাউন্ট থেকে সকল দল অপসারণ",
        "listgrouprights-namespaceprotection-header": "নামস্থান নিষেধাজ্ঞাসমূহ",
        "listgrouprights-namespaceprotection-namespace": "নামস্থান",
+       "trackingcategories": "বিষয়শ্রেণীসমূহ অনুসরণ করা হচ্ছে",
+       "trackingcategories-msg": "বিষয়শ্রেণী অনুসরণ করা হচ্ছে",
        "trackingcategories-name": "বার্তা নাম",
        "trackingcategories-nodesc": "কোন বর্ণনা নেই।",
+       "trackingcategories-disabled": "বিষয়শ্রেণীটি বিকল",
        "mailnologin": "প্রাপকের ঠিকানা নেই",
        "mailnologintext": "অন্য ব্যবহারকারীদেরকে ই-মেইল পাঠাতে হলে আপনাকে অবশ্যই আগে [[Special:UserLogin|লগ-ইন]] করতে হবে এবং ''[[Special:Preferences|আপনার পছন্দ তালিকায়]] আপনার ই-মেইল ঠিকানাটি ঠিকমত দিতে হবে।",
        "emailuser": "ইমেইল করো",
        "watchnologin": "আপনি এখনও লগ-ইন করেননি।",
        "addwatch": "নজরতালিকায় যোগ করো",
        "addedwatchtext": "\"[[:$1]]\" পাতাটি আপনার [[Special:Watchlist|নজরতালিকাতে]] যোগ করা হয়েছে।\nভবিষ্যতে এই পাতা ও এই পাতার সাথে সম্পর্কিত আলোচনা পাতায় সংঘটিত যাবতীয় পরিবর্তন এখানে তালিকাভুক্ত হবে।",
+       "addedwatchtext-short": "\"$1\" পাতাটি আপনার নজরতালিকায় যোগ করা হয়েছে।",
        "removewatch": "নজরতালিকা থেকে অপসারণ",
        "removedwatchtext": "\"[[:$1]]\" পাতাটি [[Special:Watchlist|নজর তালিকা]] থেকে অপসারিত হয়েছে।",
+       "removedwatchtext-short": "\"$1\" পাতাটি আপনার নজরতালিকা থেকে সরিয়ে নেয়া হয়েছে।",
        "watch": "নজর রাখুন",
        "watchthispage": "নজরে রাখুন",
        "unwatch": "নজর সরিয়ে নিন",
        "movenotallowedfile": "আপনার এই ফাইলটি স্থানান্তরের অনুমতি নেই।",
        "cant-move-user-page": "ব্যবহারকারী পাতা (উপপাতা থেকে পৃথক) স্থানান্তরের আপনার অনুমতি নেই।",
        "cant-move-to-user-page": "আপনার কোনো পাতা ব্যবহারকারী পাতার স্থানান্তরের অনুমতি নেই (ব্যবহারকারী উপপাতা ব্যতিত)।",
+       "cant-move-category-page": "আপনার বিষয়শ্রেণী পাতা স্থানান্তরের অনুমতি নেই।",
+       "cant-move-to-category-page": "আপনার পাতাটিকে বিষয়শ্রেণী পাতায় স্থানান্তরের অনুমতি নেই।",
        "newtitle": "এই নতুন শিরোনামে",
        "move-watch": "এই পাতাটি নজরে রাখুন",
        "movepagebtn": "পাতা সরান",
        "newimages-summary": "এই বিশেষ পাতা সর্বশেষ আপলোডকৃত ফাইল দেখাবে।",
        "newimages-legend": "ছাকনী",
        "newimages-label": "ফাইলের নাম (অথবা এর কোন অংশ):",
+       "newimages-showbots": "বটের আপলোড গুলো দেখাও।",
        "noimages": "দেখার মত কিছু নেই।",
        "ilsubmit": "অনুসন্ধান",
        "bydate": "তারিখ অনুযায়ী",
        "watchlistedit-raw-done": "আপনার নজর তালিকা হালনাগাদ করা হয়েছে।",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 শিরোনাম|$1 শিরোনামসমূহ}} যোগ করা হয়েছে:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 শিরোনাম|$1 শিরোনামসমূহ}} মুছে ফেলা হয়েছে:",
+       "watchlistedit-clear-title": "নজরতালিকা পরিস্কার করা হয়েছে",
+       "watchlistedit-clear-legend": "নজরতালিকা পরিস্কার",
+       "watchlistedit-clear-explain": "সকল শিরোনামসমূহ আপনার নজরতালিকা থেকে সরিয়ে নেয়া হয়েছে।",
+       "watchlistedit-clear-titles": "শিরোনামসমূহ:",
+       "watchlistedit-clear-done": "আপনার নজরতালিকা পরিষ্কার করা হয়েছে।",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|১টি শিরোনাম|$1টি শিরোনাম}} সরিয়ে ফেলা হয়েছে:",
+       "watchlisttools-clear": "নজরতালিকা পরিস্কার করুন",
        "watchlisttools-view": "সম্পর্কিত পরিবর্তনসমূহ দেখুন",
        "watchlisttools-edit": "নজর তালিকা দেখুন এবং সম্পাদনা করুন",
        "watchlisttools-raw": "অশোধিত নজরতালিকা সম্পাদনা করুন",
        "htmlform-no": "না",
        "htmlform-yes": "হ্যাঁ",
        "htmlform-chosen-placeholder": "অপশন নির্বাচন করুন",
+       "htmlform-cloner-create": "আরও যোগ করুন",
        "htmlform-cloner-delete": "অপসারণ",
+       "htmlform-cloner-required": "অন্তত একটি মূল্য আবশ্যক।",
        "sqlite-has-fts": "$1 সহ পূর্ণ টেক্সট সার্চ সমর্থন",
        "sqlite-no-fts": "$1 বাদে পূর্ণ টেক্সট সার্চ সমর্থন",
        "logentry-delete-delete": "$1 কর্তৃক $3 পাতাটি অপসারিত হয়েছে",
        "api-error-overwrite": "ইতিমধ্যেই রয়েছে এমন কোনো ফাইলের প্রতিস্থাপন গ্রহণযোগ্য নয়।",
        "api-error-stashfailed": "অভ্যন্তরীণ ত্রুটি: সার্ভার অস্থায়ী ফাইলটি সংরক্ষণ করতে ব্যর্থ হয়েছে।",
        "api-error-publishfailed": "অভ্যন্তরীন ত্রুটি: সার্ভার অস্থায়ী ফাইলটি প্রকাশ করতে ব্যর্থ হয়েছে।",
+       "api-error-stasherror": "স্ট্যাশে আপলোডের সময় চিত্র আপলোডের সময় একটি সমস্যা দেখা দিয়েছে।",
        "api-error-timeout": "কাঙ্খিত সময়ের মধ্যে সার্ভারের কোন সাড়া পাওয়া যায়নি।",
        "api-error-unclassified": "একটি অজানা ত্রুটি দেখা দিয়েছে",
        "api-error-unknown-code": "অজানা ত্রুটি: \"$1\"",
index e0bc248..aa8fbf8 100644 (file)
        "powersearch-ns": "Цlераши анахь лахар:",
        "powersearch-togglelabel": "Билгалдан:",
        "powersearch-toggleall": "Массо",
-       "powersearch-togglenone": "Хlумма цаоьшу",
+       "powersearch-togglenone": "ХӀумма цаоьшу",
        "search-external": "Арахула лахар",
        "search-error": "Лохуш гӀалат даьлла: $1",
        "preferences": "Гlирс нисбан",
        "pageinfo-edits": "Массо нисдарийн дукхалла",
        "pageinfo-authors": "Башха авторийн дукхалла",
        "pageinfo-recent-edits": "ТӀехьарчу хана нисдарш ($1 хана)",
+       "pageinfo-recent-authors": "ТӀехьарчу хана башха автораш",
        "pageinfo-magic-words": "{{PLURAL:$1|Бозбуунчаллин дош|Бозбуунчаллин дешнаш}} ($1)",
        "pageinfo-hidden-categories": "{{PLURAL:$1|Къайла категори|Къайла категореш}} ($1)",
        "pageinfo-templates": "{{PLURAL:$1|1=Кеп|Кепаш}} ($1)",
        "pageinfo-toolboxlink": "Агlонах болу бовзам",
        "pageinfo-redirectsto": "ДӀасахьажорг",
        "pageinfo-redirectsto-info": "Хаам",
+       "pageinfo-contentpage": "Лорурго чулацаме гойту агӀо",
        "pageinfo-contentpage-yes": "ХӀаъ",
        "pageinfo-protect-cascading": "Чахчарин гӀоралла кхузара",
        "pageinfo-protect-cascading-yes": "ХӀаъ",
index ab76e2f..192a2e1 100644 (file)
@@ -12,7 +12,8 @@
                        "Marmzok",
                        "Muhammed taha",
                        "رزگار",
-                       "아라"
+                       "아라",
+                       "Serwan"
                ]
        },
        "tog-underline": "ھێڵ ھێنان بەژێر بەستەرەکان:",
        "protect-default": "بە ھەموو بەکارھێنەران ڕێگە بدە",
        "protect-fallback": "تەنیا بە بەکارھێنەران بە مافی «$1» ڕێگە بدە",
        "protect-level-autoconfirmed": "تەنیا بە بەکارھێنەرانی پەسندکراو ڕێگە بدە",
-       "protect-level-sysop": "تەنیا بەڕێوەبەران",
+       "protect-level-sysop": "تەنیا بە بەڕێوەبەران ڕێگە بدە",
        "protect-summary-cascade": "تاڤگەیی",
        "protect-expiring": "بەسەردەچێ لە ڕێکەوتی $1 (UTC)",
        "protect-expiring-local": "بە سەر دەچێ لە $1",
        "watchlistedit-raw-done": "لیستی چاودێریەکەت نوێ‌کرایەوە",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 سەردێڕ|$1 سەردێڕ}} زیادکرا:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 سەردێڕ|$1 سەردێڕ}} لابرا:",
+       "watchlistedit-clear-titles": "ناونیشانەکان :",
        "watchlisttools-view": "گۆڕانکارییە پەیوەندیدارەکان ببینە",
        "watchlisttools-edit": "لیستی چاودێری ببینە و دەستکاری بکە",
        "watchlisttools-raw": "لیستی خاوی چاودێری دەستکاری بکە",
index 4bfcdd0..4a2009b 100644 (file)
@@ -73,7 +73,8 @@
                        "Ziko",
                        "Zylbath",
                        "לערי ריינהארט",
-                       "✓"
+                       "✓",
+                       "XenonX3"
                ]
        },
        "tog-underline": "Links unterstreichen:",
        "showhideselectedversions": "Gewählte Versionen zeigen/verstecken",
        "editundo": "rückgängig machen",
        "diff-empty": "(kein Unterschied)",
-       "diff-multi-sameuser": "({{PLURAL:$1|Eine dazwischenliegende Version des gleichen Benutzers wird|$1 dazwischenliegende Versionen des gleichen Benutzers werden}} nicht angezeigt)",
+       "diff-multi-sameuser": "({{PLURAL:$1|Eine dazwischenliegende Version desselben Benutzers wird|$1 dazwischenliegende Versionen desselben Benutzers werden}} nicht angezeigt)",
        "diff-multi-otherusers": "({{PLURAL:$1|Eine dazwischenliegende Version|$1 dazwischenliegende Versionen}} von {{PLURAL:$2|einem anderen Benutzer|$2 Benutzern}} werden nicht angezeigt)",
        "diff-multi-manyusers": "({{PLURAL:$1|$1 dazwischenliegende Versionen}} von mehr als {{PLURAL:$2|$2 Benutzern}}, die nicht angezeigt werden)",
        "difference-missing-revision": "{{PLURAL:$2|Eine Version|$2 Versionen}} dieser Unterschiedsanzeige ($1) {{PLURAL:$2|wurde|wurden}} nicht gefunden.\n\nDieser Fehler wird normalerweise von einem veralteten Link zur Versionsgeschichte einer Seite verursacht, die zwischenzeitlich gelöscht wurde.\nEinzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lösch-Logbuch] vorhanden.",
index 79376f7..21e3fec 100644 (file)
        "view": "Bıvêne",
        "view-foreign": "$1'i bıvin",
        "edit": "Bıvurne",
-       "edit-local": "Lokal şınasnayışi bıvurne",
+       "edit-local": "Şınasnayışê lokali bıvurne",
        "create": "Vıraze",
-       "create-local": "Lokal şınasnayış de ke",
+       "create-local": "Şınasnayışê lokali cı ke",
        "editthispage": "Ena pele bıvurne",
        "create-this-page": "Na pele bınuse",
        "delete": "Bestere",
        "statistics-pages-desc": "Pelanê hemî ke wîkî de estê, pelanê mineqeşeyî, redireksiyon ucb... dehil o.",
        "statistics-files": "Dosyayê bar biye",
        "statistics-edits": "{{SITENAME}} saz kerdış ra hetana newke amora vırnayışan",
-       "statistics-edits-average": "Ser her pele de amarê vurnayîşîyê averageyî",
+       "statistics-edits-average": "Her pele sero nısbi vurnayış",
        "statistics-views-total": "Yekunî bivîne",
        "statistics-views-total-desc": "Peleyê ke çınyê yana xısusiyê e nina zerre nêkerdê",
        "statistics-views-peredit": "Ser her vurnayîşî de vînayîşî",
index ad2e359..8ff1c6c 100644 (file)
@@ -4,7 +4,8 @@
                        "Lévi",
                        "Reder",
                        "Geitost",
-                       "아라"
+                       "아라",
+                       "Shirayuki"
                ]
        },
        "tog-underline": "Tîra 'na rîga sòta i colegamèint.",
        "accmailtitle": "Cêva 'd ingrès spidîda.",
        "accmailtext": "'Na cêva 'd ingrés l'è stêda fâta a chêş per [[User talk:$1|$1]] e l'è stêda spidîda a $2. Cla cêva 'd ingrès ché la pōl èser cambiêda int la pàgina per ''[[Special:ChangePassword|cambiêr la cêva 'd ingrès]]'' subét dôp avèir fât l'ingrès.",
        "newarticle": "(Nōv)",
-       "newarticletext": "Al colegamèint apèina fât al cumbîna cun 'na pàgina ch' an n'é mìa incòra stêda fâta. S'ét vō fêr la pàgina adès, l'é asê cumincêr a scréver al tèst int la caşèla ché sòt (per vedèr infurmasiòun pió precîşi guêrda la [{{MediaWiki:Helppage}}| pàgina 'd ajót]). Se al colegamèint  l'é stê avêrt per erōr, l'é asê clichêr al pulsânt \"Indrē\" dal tó navigadōr.",
+       "newarticletext": "Al colegamèint apèina fât al cumbîna cun 'na pàgina ch' an n'é mìa incòra stêda fâta. S'ét vō fêr la pàgina adès, l'é asê cumincêr a scréver al tèst int la caşèla ché sòt (per vedèr infurmasiòun pió precîşi guêrda la [$1 pàgina 'd ajót]). Se al colegamèint  l'é stê avêrt per erōr, l'é asê clichêr al pulsânt \"Indrē\" dal tó navigadōr.",
        "anontalkpagetext": "----'' Còsta l'è la pàgina 'd discusiòun ed 'n utèint sèinsa nòm, ch' an n' à mìa incòra fât 'n' utèinsa o in tót al manēri an n'è mìa drē druvêrla. Per arcgnòsrel l'è dòunca necesâri druvê al só indirés IP. J indirés IP a pōlen èser spartî cun êter utèint. Se t'è un utèint sèinsa nòm e 't pèins che i cumèint in cla pàgina ché an riguêrden mìa tè, [[Special:UserLogin/signup|fa 'n' utèinsa nōva]] o [[Special:UserLogin|vîn dèinter cun còla ch' ét gh'ê bèle]] per schivşêr, in futûr,  'd èser cunfûş cun 'd j êter utèint sèinsa nòm.''",
        "noarticletext": "In cól mumèint ché la pàgina serchêda l'é vōda. L'é pusébil [[Special:Search/{{PAGENAME}}|serchêr sté tétol]] int al j êtri pàgini dal sît, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchêr int i regéster coleghê] opór  [{{fullurl:{{FULLPAGENAME}}|action=edit}} mudifichêr la pàgina adèsa]</span>.",
        "noarticletext-nopermission": "In cól mumèint ché la pàgina serchêda l'é vōda. L'é pusébil [[Special:Search/{{PAGENAME}}|serchêr sté tétol]] int al j êtri pàgini dal sît o<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchêr int i regéster coleghê] <span>, mó an 't gh'ê mìa al permès ed fêr cla pàgina ché.",
        "parser-template-recursion-depth-warning": "A s'é rivê al lémit 'd arciâm int al mudèl ($1)",
        "language-converter-depth-warning": "A s'é pasê 'l lémit ed fònd dal cunvertidōr ed léngua ($1)",
        "node-count-exceeded-category": "Pàgin in dó vîn pasê 'l nómer ed nōd",
+       "node-count-exceeded-category-desc": "'Na categoréia p'r al pàgini in dó a's pâsa al nómer di nōd.",
        "node-count-exceeded-warning": "Cla pàgina ché l'à pasê 'l nómer di nōd",
        "expansion-depth-exceeded-category": "Pàgini 'n dó vî pasê al fònd de şlargamèint",
+       "expansion-depth-exceeded-category-desc": "Còsta l'é 'na categoréia per pàgini in dó vî pasê al fònd dal şlargamèint.",
        "expansion-depth-exceeded-warning": "Cla pàgina ché la pasê al fònd de şlargamèint",
        "parser-unstrip-loop-warning": "Catê sèria 'd Unistrip",
        "parser-unstrip-recursion-limit": "A s'é pasê i lémit 'd arciâm 'd Unstrip ($1)",
        "revdel-restore": "Câmbia la vidûda.",
        "pagehist": "Stòria 'd la pàgina",
        "deletedhist": "Stòria scanşlêda",
+       "revdelete-hide-current": "Imposébil lughêr l'elemèint cun dâta $1 $2 perchè l'é la revişiòun'd adès.",
+       "revdelete-show-no-access": "Imposébil fêr vèder l'elemèint perché l'é stê arcgnusû cme ''riservê''  e an 's gh'à mìa al permès ed fêrel.",
+       "revdelete-modify-no-access": "Imposébil fêr vèder l'elemèint cun dâta $1 $2 perché l'é stê arcgnusû cme \"riservê\"  e an 's gh'à mìa al permès ed fêrel.",
+       "revdelete-modify-missing": "Imposébil fêr vèder l'elemèint cun ID $1 perché an gh'é mìa int al databêş.",
+       "revdelete-no-change": "<strong>Atèinti:</strong> l'elemèint cun dâta $1 $2 al gh'îva bèle al j impustasiòun  ed vésta dmandê.",
        "revdelete-reasonotherlist": "Êtra ragiòun",
        "revertmerge": "Scanşèla l'uniòun",
        "history-title": "$1 stòria dal mudéfichi",
index 39346b0..554190c 100644 (file)
                        "Chocolate con galleta",
                        "Csbotero",
                        "아라",
-                       "Mcervera"
+                       "Mcervera",
+                       "Wifidel"
                ]
        },
        "tog-underline": "Subrayar los enlaces:",
        "tog-hidepatrolled": "Ocultar las ediciones patrulladas en los cambios recientes",
        "tog-newpageshidepatrolled": "Ocultar las páginas patrulladas de la lista de páginas nuevas",
        "tog-extendwatchlist": "Expandir la lista de seguimiento a todos los cambios, no sólo a los más recientes",
-       "tog-usenewrc": "Agrupar los cambios por página en los cambios recientes y en la lista de seguimiento (requiere JavaScript)",
+       "tog-usenewrc": "Agrupar los cambios por página en los cambios recientes y en la lista de seguimiento",
        "tog-numberheadings": "Numerar automáticamente los encabezados",
        "tog-showtoolbar": "Mostrar la barra de edición",
-       "tog-editondblclick": "Editar las páginas al pulsar dos veces en ellos con el ratón",
+       "tog-editondblclick": "Editar las páginas al hace doble clic",
        "tog-editsectiononrightclick": "Activar la edición de secciones pulsando el botón derecho en los títulos de secciones",
        "tog-watchcreations": "Añadir las páginas que cree y los archivos que suba a mi lista de seguimento",
        "tog-watchdefault": "Añadir las páginas y archivos que edite a mi lista de seguimiento",
        "watchnologin": "No has iniciado sesión",
        "addwatch": "Añadir a la lista de seguimiento",
        "addedwatchtext": "La página «[[:$1]]» ha sido añadida a tu [[Special:Watchlist|lista de seguimiento]]. Los cambios futuros en esta página y en su página de discusión asociada se indicarán ahí.",
+       "addedwatchtext-short": "La página \"$1\" ha sido añadida a tu lista de seguimiento.",
        "removewatch": "Quitar de la lista de seguimiento",
        "removedwatchtext": "Se ha eliminado la página «[[:$1]]» de tu [[Special:Watchlist|lista de seguimiento]].",
+       "removedwatchtext-short": "La página \"$1\" ha sido eliminado de tu lista de seguimiento.",
        "watch": "Vigilar",
        "watchthispage": "Vigilar esta página",
        "unwatch": "Dejar de vigilar",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Una página ha sido borrada|$1 páginas han sido borradas}}:",
        "watchlistedit-clear-title": "Lista de seguimiento limpiada",
        "watchlistedit-clear-legend": "Limpiar lista de seguimiento",
-       "watchlistedit-clear-explain": "Todos los títulos serán removidos de tu lista de seguimiento",
+       "watchlistedit-clear-explain": "Todos los títulos serán eliminados de tu lista de seguimiento",
        "watchlistedit-clear-titles": "Títulos:",
        "watchlistedit-clear-submit": "Vaciar la lista de seguimiento (¡permanente!)",
        "watchlistedit-clear-done": "Se ha vaciado tu lista de seguimiento.",
index 592287c..15ed2f5 100644 (file)
        "edit-gone-missing": "Polnud võimalik lehekülge uuendada.\nTundub, et see on kustutatud.",
        "edit-conflict": "Redigeerimiskonflikt.",
        "edit-no-change": "Sinu redigeerimist ignoreeriti, sest tekstile ei olnud tehtud muudatusi.",
+       "postedit-confirmation-created": "See lehekülg on alustatud.",
+       "postedit-confirmation-restored": "See lehekülg on taastatud.",
        "postedit-confirmation-saved": "Sinu muudatus on salvestatud.",
        "edit-already-exists": "Ei saanud alustada uut lehekülge.\nSee on juba olemas.",
        "defaultmessagetext": "Sõnumi vaiketekst",
        "parser-template-recursion-depth-warning": "Malli rekursiivse kasutamise limiit on ületatud ($1)",
        "language-converter-depth-warning": "Keeleteisendaja sügavuspiir ületatud ($1)",
        "node-count-exceeded-category": "Ületatud sõlmemääraga leheküljed",
+       "node-count-exceeded-category-desc": "Ületatud sõlmemääraga lehekülgede kategooria.",
        "node-count-exceeded-warning": "Lehekülg ületas sõlmemäära.",
        "expansion-depth-exceeded-category": "Ületatud hõrendussügavusega leheküljed",
+       "expansion-depth-exceeded-category-desc": "Ületatud hõrendussügavusega lehekülgede kategooria.",
        "expansion-depth-exceeded-warning": "Lehekülg ületas hõrendussügavuse.",
        "converter-manual-rule-error": "Tõrge keelevariandi käsivahetusreeglis",
        "undo-success": "Selle redaktsiooni käigus tehtud muudatusi saab eemaldada. Palun kontrolli allolevat võrdlust veendumaks, et tahad need muudatused tõepoolest eemaldada. Seejärel saad lehekülje salvestada.",
        "prefs-emailconfirm-label": "E-posti kinnitus:",
        "youremail": "E-posti aadress:",
        "username": "{{GENDER:$1|Kasutajanimi}}:",
-       "uid": "{{GENDER:$1|Kasutaja}} ID:",
        "prefs-memberingroups": "{{PLURAL:$1|Järgmise rühma|Järgmiste rühmade}} {{GENDER:$2|liige}}:",
        "prefs-registration": "Registreerumise aeg:",
        "yourrealname": "Tegelik nimi:",
        "right-move": "Teisaldada lehekülgi",
        "right-move-subpages": "Teisaldada lehekülgi koos nende alamlehtedega",
        "right-move-rootuserpages": "Teisaldada kasutajalehekülgi",
+       "right-move-categorypages": "Teisaldada kategoorialehekülgi",
        "right-movefile": "Teisaldada faile",
        "right-suppressredirect": "Teisaldada lehekülgi ümbersuunamist loomata",
        "right-upload": "Faile üles laadida",
        "action-createpage": "lehekülgi luua",
        "action-createtalk": "arutelulehekülgi luua",
        "action-createaccount": "seda kasutajakontot luua",
+       "action-history": "vaadata selle lehekülje ajalugu",
        "action-minoredit": "seda muudatust pisimuudatuseks märkida",
        "action-move": "seda lehekülge teisaldada",
        "action-move-subpages": "seda lehekülge koos alamlehekülgedega teisaldada",
        "action-move-rootuserpages": "teisaldada kasutajalehekülgi",
+       "action-move-categorypages": "teisaldada kategoorialehekülgi",
        "action-movefile": "seda faili teisaldada",
        "action-upload": "seda faili üles laadida",
        "action-reupload": "seda olemasolevat faili üle kirjutada",
        "recentchanges-label-bot": "Roboti tehtud muudatus",
        "recentchanges-label-unpatrolled": "Seda muudatust ei ole veel kontrollitud",
        "recentchanges-label-plusminus": "Lehekülje suuruse muutus baitides",
+       "recentchanges-legend-heading": "'''Seletus:'''",
        "recentchanges-legend-newpage": "(vaata ka [[Special:NewPages|uute lehekülgede loendit]])",
        "rcnotefrom": "Allpool on toodud muudatused alates: <strong>$2</strong> (näidatakse kuni <strong>$1</strong> muudatust)",
        "rclistfrom": "Näita muudatusi alates: $3, kell $2",
        "log-title-wildcard": "Selle tekstiga algavad pealkirjad",
        "showhideselectedlogentries": "Muuda valitud logisissekannete nähtavust",
        "allpages": "Kõik leheküljed",
-       "alphaindexline": "$1 kuni $2",
        "nextpage": "Järgmine lehekülg ($1)",
        "prevpage": "Eelmine lehekülg ($1)",
        "allpagesfrom": "Näita lehti alates pealkirjast:",
        "watchnologin": "Ei ole sisse logitud",
        "addwatch": "Lisa jälgimisloendisse",
        "addedwatchtext": "Lehekülg \"[[:$1]]\" on lisatud sinu [[Special:Watchlist|jälgimisloendisse]].\nEdasised muudatused sellel leheküljel ja seotud aruteluleheküljel tuuakse ära jälgimisloendis.",
+       "addedwatchtext-short": "Lehekülg \"$1\" on lisatud sinu jälgimisloendisse.",
        "removewatch": "Eemalda jälgimisloendist",
        "removedwatchtext": "Lehekülg \"[[:$1]]\" on [[Special:Watchlist|jälgimisloendist]] eemaldatud.",
+       "removedwatchtext-short": "Lehekülg \"$1\" on eemaldatud sinu jälgimisloendist.",
        "watch": "Jälgi",
        "watchthispage": "Jälgi seda lehekülge",
        "unwatch": "Lõpeta jälgimine",
        "movepagetalktext": "Koos artiklileheküljega teisaldatakse automaatselt ka arutelulehekülg, '''välja arvatud juhtudel, kui:'''\n*uue pealkirja all on juba arutelulehekülg, mis pole tühi;\n*jätad alloleva märkeruudu valimata.\n\nNeil juhtudel saad lehekülje soovi korral käsitsi teisaldada või liita.",
        "movearticle": "Teisalda lehekülg",
        "moveuserpage-warning": "'''Hoiatus:''' Oled teisaldamas kasutajalehekülge. Pane tähele, et teisaldatakse ainult lehekülg ja kasutajat '''ei''' nimetata ümber.",
+       "movecategorypage-warning": "<strong>Hoiatus:</strong> Oled teisaldamas kategoorialehekülge. Pane palun tähele, et teisaldatakse vaid see lehekülg ja ühtegi vanas kategoorias sisalduvat lehekülge <em>ei</em> kategoriseerita ümber uude kategooriasse.",
        "movenologintext": "Lehekülje teisaldamiseks pead registreeruma ja [[Special:UserLogin|sisse logima]].",
        "movenotallowed": "Sul ei ole lehekülgede teisaldamise õigust.",
        "movenotallowedfile": "Sul ei ole failide teisaldamise õigust.",
        "cant-move-user-page": "Sul ei ole õigust teisaldada kasutajalehti (erandiks on kasutajate alamlehed).",
        "cant-move-to-user-page": "Sul ei ole õigust teisaldada lehekülge kasutajaleheks (ei käi kasutaja alamlehe kohta).",
+       "cant-move-category-page": "Sul pole õigust kategoorialehekülgi teisaldada.",
+       "cant-move-to-category-page": "Sul pole õigust teisaldada lehekülge kategoorialeheküljele.",
        "newtitle": "Uue pealkirja alla:",
        "move-watch": "Jälgi lähte- ja sihtlehekülge",
        "movepagebtn": "Teisalda lehekülg",
        "newimages-summary": "Sellel erilehel on viimati üles laaditud failid.",
        "newimages-legend": "Filter",
        "newimages-label": "Failinimi (või selle osa):",
+       "newimages-showbots": "Näita robotite üles laaditud faile",
        "noimages": "Uusi pilte ei ole.",
        "ilsubmit": "Otsi",
        "bydate": "kuupäeva järgi",
        "confirm-watch-top": "Kas lisad selle lehekülje oma jälgimisloendisse?",
        "confirm-unwatch-button": "Sobib",
        "confirm-unwatch-top": "Kas eemaldad selle lehekülje oma jälgimisloendist?",
+       "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← eelmine lehekülg",
        "imgmultipagenext": "järgmine lehekülg →",
        "imgmultigo": "Mine!",
        "watchlistedit-raw-done": "Sinu jälgimisloend on uuendatud.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 lehekülg|$1 lehekülge}} lisatud:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 pealkiri|$1 pealkirja}} eemaldati:",
+       "watchlistedit-clear-title": "Tühjendatud jälgimisloend",
+       "watchlistedit-clear-legend": "Jälgimisloendi tühjendamine",
+       "watchlistedit-clear-explain": "Sinu jälgimisloendist eemaldatakse kõik pealkirjad.",
+       "watchlistedit-clear-titles": "Pealkirjad:",
+       "watchlistedit-clear-submit": "Tühjenda jälgimisloend (jäädavalt!)",
+       "watchlistedit-clear-done": "Sinu jälgimisloend on tühjendatud.",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|Üks pealkiri|$1 pealkirja}} eemaldati:",
+       "watchlistedit-too-many": "Pealkirju on siin kuvamiseks liiga palju.",
+       "watchlisttools-clear": "Tühjenda jälgimisloend",
        "watchlisttools-view": "Näita vastavaid muudatusi",
        "watchlisttools-edit": "Vaata ja redigeeri jälgimisloendit",
        "watchlisttools-raw": "Muuda lähteteksti",
        "fileduplicatesearch-result-n": "Failil \"$1\" on {{PLURAL:$2|1 samane duplikaat|$2 samast duplikaati}}.",
        "fileduplicatesearch-noresults": "Faili nimega \"$1\" ei leidu.",
        "specialpages": "Erileheküljed",
+       "specialpages-note-top": "Seletus",
        "specialpages-note": "* Harilikud erileheküljed.\n* <span class=\"mw-specialpagerestricted\">Piiranguga erileheküljed.</span>",
        "specialpages-group-maintenance": "Hooldusaruanded",
        "specialpages-group-other": "Teised erileheküljed",
        "htmlform-float-invalid": "Määratud väärtus ei ole arvuline.",
        "htmlform-int-toolow": "Antud suurus on väiksem kui minimaalne $1",
        "htmlform-int-toohigh": "Antud suurus on suurem kui maksimaalne $1",
-       "htmlform-required": "See väärtus on nõutav",
+       "htmlform-required": "See väärtus on nõutav.",
        "htmlform-submit": "Saada",
        "htmlform-reset": "Tühista muudatused",
        "htmlform-selectorother-other": "Muu",
        "htmlform-no": "Ei",
        "htmlform-yes": "Jah",
        "htmlform-chosen-placeholder": "Vali säte",
+       "htmlform-cloner-create": "Lisa veel",
+       "htmlform-cloner-delete": "Eemalda",
+       "htmlform-cloner-required": "Vähemalt üks väärtus on nõutav.",
        "sqlite-has-fts": "$1 koos täistekstiotsingu toega",
        "sqlite-no-fts": "$1 ilma täistekstiotsingu toeta",
        "logentry-delete-delete": "$1 {{GENDER:$2|kustutas}} lehekülje $3",
index f45e95f..11eb6ab 100644 (file)
        "token_suffix_mismatch": "'''Zure aldaketa ezeztatua izan da zure bezeroak puntuazio-karaktereak itxuragabetu dituelako.\nAldaketa ezeztatua izan da testuaren galtzea galarazteko.\nHau batzuetan gertatzen da buggyan oinarritutako web proxy zerbitzua erabiltzean.'''",
        "edit_form_incomplete": "'''Aldaketa formularioaren atal batzuk ez dira iritsi zerbitzarira; bi aldiz ziurtatu zure aldaketak osorik daudela eta berriro saiatu.'''",
        "editing": "«$1» aldatzen",
-       "creating": "$1 sortzen",
+       "creating": "«$1» sortzen",
        "editingsection": "«$1» aldatzen (atala)",
        "editingcomment": "«$1» aldatzen (atal berria)",
        "editconflict": "Aldaketa gatazka: $1",
index 450eb53..91336b0 100644 (file)
@@ -71,7 +71,8 @@
                        "ZioNicco",
                        "לערי ריינהארט",
                        "PeppeAeco",
-                       "아라"
+                       "아라",
+                       "Lucas2"
                ]
        },
        "tog-underline": "Sottolinea i collegamenti:",
@@ -94,7 +95,7 @@
        "tog-enotifwatchlistpages": "Inviami una email quando viene modificata una pagina o un file presente tra gli osservati speciali",
        "tog-enotifusertalkpages": "Inviami una email quando viene modificata la mia pagina di discussione",
        "tog-enotifminoredits": "Inviami una email anche per le modifiche minori di pagine e file",
-       "tog-enotifrevealaddr": "Rivela il mio indirizzo e-mail nei messaggi di avviso",
+       "tog-enotifrevealaddr": "Mostra il mio indirizzo nelle e-mail di notifica",
        "tog-shownumberswatching": "Mostra il numero di utenti che hanno la pagina in osservazione",
        "tog-oldsig": "Firma attuale:",
        "tog-fancysig": "Tratta la firma come wikitesto (senza collegamento automatico)",
        "badtitle": "Titolo non corretto",
        "badtitletext": "Il titolo della pagina richiesta è vuoto, errato oppure deriva da un errore nei collegamenti interlingua o interwiki.\nPotrebbe inoltre contenere uno o più caratteri il cui uso non è ammesso nei titoli.",
        "perfcached": "I dati che seguono sono estratti da una copia ''cache'' del database, e potrebbero non essere aggiornati. Un massimo di {{PLURAL:$1|un risultato è disponibile|$1 risultati sono disponibili}} in cache.",
-       "perfcachedts": "I dati che seguono sono estratti da una copia ''cache'' del database, il cui ultimo aggiornamento risale al $1. Un massimo di {{PLURAL:$4|un risultato è disponibile|$4 risultati sono disponibili}} in cache.",
+       "perfcachedts": "I dati che seguono sono estratti da una copia ''cache'' del database, il cui ultimo aggiornamento risale al $1. Un massimo di {{PLURAL:$4|un risultato è disponibile|$4 risultati è disponibile}} in cache.",
        "querypage-no-updates": "Gli aggiornamenti della pagina sono temporaneamente sospesi. I dati in essa contenuti non verranno aggiornati.",
        "viewsource": "Visualizza sorgente",
        "viewsource-title": "Visualizza sorgente di $1",
        "yourtext": "Il tuo testo",
        "storedversion": "La versione memorizzata",
        "nonunicodebrowser": "'''Attenzione: si sta utilizzando un browser non compatibile con i caratteri Unicode. Per consentire la modifica delle pagine senza creare inconvenienti, i caratteri non ASCII vengono visualizzati nella casella di modifica sotto forma di codici esadecimali.'''",
-       "editingold": "'''Attenzione: si sta modificando una versione non aggiornata della pagina.<br />\nSe si sceglie di salvarla, tutti i cambiamenti apportati dopo questa revisione andranno perduti.'''",
+       "editingold": "'''ATTENZIONE: si sta modificando una versione non aggiornata della pagina. Salvandola così, tutti i cambiamenti apportati dopo questa revisione saranno sovrascritti.'''",
        "yourdiff": "Differenze",
        "copyrightwarning": "Per favore tieni presente che tutti i contributi a {{SITENAME}} si considerano pubblicati nei termini d'uso della licenza $2 (vedi $1 per maggiori dettagli).\nSe non desideri che i tuoi testi possano essere modificati e ridistribuiti da chiunque senza alcuna limitazione, non inviarli qui.<br />\nInviando il testo dichiari inoltre, sotto tua responsabilità, che è stato scritto da te personalmente oppure è stato copiato da una fonte di pubblico dominio o similarmente libera.\n'''Non inviare materiale protetto da copyright senza autorizzazione!'''",
        "copyrightwarning2": "Per favore tieni presente che tutti i contributi a {{SITENAME}} possono essere modificati, stravolti o cancellati da altri contributori.\nSe non vuoi che i tuoi testi possano essere alterati, allora non inserirli.<br />\nInviando il testo dichiari inoltre, sotto tua responsabilità, che è stato scritto da te personalmente oppure è stato copiato da una fonte di pubblico dominio o similarmente libera (vedi $1 per maggiori dettagli).\n'''Non inviare materiale protetto da copyright senza autorizzazione!'''",
        "longpageerror": "'''Errore: il testo inviato è lungo {{PLURAL:$1|1|$1}} kilobyte, che è maggiore della dimensione massima consentita ({{PLURAL:$2|1|$2}} kilobyte).'''\nIl testo non può essere salvato.",
-       "readonlywarning": "'''Attenzione: il database è stato bloccato per manutenzione, è quindi impossibile salvare le modifiche in questo momento.'''\nPer non perderle, è possibile copiare quanto inserito finora nella casella di modifica, incollarlo in un programma di elaborazione testi e salvarlo in attesa dello sblocco del database.\n\nL'amministratore che ha bloccato il database ha fornito questa spiegazione: $1",
+       "readonlywarning": "<strong>ATTENZIONE</strong>: il database è bloccato per manutenzione, non è momentaneamente possibile salvare le modifiche effettuate.\nPer non perderle, copiale in un file di testo e salvalo in attesa dello sblocco del database.\n\nL'amministratore che impostato il blocco ha fornito questa spiegazione: $1.",
        "protectedpagewarning": "'''Attenzione: questa pagina è stata bloccata in modo che solo gli utenti con privilegi di amministratore possano modificarla.'''\nL'ultimo elemento del registro è riportato di seguito per informazione:",
        "semiprotectedpagewarning": "'''Nota:''' Questa pagina è stata bloccata in modo che solo gli utenti registrati possano modificarla.\nL'ultimo elemento del registro è riportato di seguito per informazione:",
        "cascadeprotectedwarning": "'''Attenzione:''' Questa pagina è stata bloccata in modo che solo gli utenti con privilegi di amministratore possano modificarla. Ciò avviene perché la pagina è inclusa {{PLURAL:$1|nella pagina indicata di seguito, che è stata protetta|nelle pagine indicate di seguito, che sono state protette}} selezionando la protezione \"ricorsiva\":",
        "node-count-exceeded-category": "Pagine dove viene superato il numero di nodi",
        "node-count-exceeded-category-desc": "Una categoria per pagine dove viene superato il numero di nodi.",
        "node-count-exceeded-warning": "Questa pagina ha superato il numero di nodi",
-       "expansion-depth-exceeded-category": "Pagine dove viene superata la profondità di espansione",
+       "expansion-depth-exceeded-category": "Pagine nelle quali è superata la profondità di espansione",
        "expansion-depth-exceeded-category-desc": "Questa è una categoria per pagine dove viene superata la profondità di espansione.",
        "expansion-depth-exceeded-warning": "Questa pagina ha superato la profondità di espansione",
        "parser-unstrip-loop-warning": "Rilevato ciclo di Unstrip",
        "timezoneregion-europe": "Europa",
        "timezoneregion-indian": "Oceano Indiano",
        "timezoneregion-pacific": "Oceano Pacifico",
-       "allowemail": "Abilita la ricezione di messaggi e-mail da altri utenti",
+       "allowemail": "Abilita la ricezione di messaggi email da altri utenti",
        "prefs-searchoptions": "Ricerca",
        "prefs-namespaces": "Namespace",
        "defaultns": "Altrimenti, cerca in questi namespace:",
        "filehist-dimensions": "Dimensioni",
        "filehist-filesize": "Dimensione del file",
        "filehist-comment": "Commento",
-       "imagelinks": "Uso del file",
+       "imagelinks": "Utilizzo del file",
        "linkstoimage": "{{PLURAL:$1|La seguente pagina contiene|Le seguenti $1 pagine contengono}} collegamenti al file:",
        "linkstoimage-more": "Più di $1 {{PLURAL:$1|pagina punta|pagine puntano}} a questo file.\nDi seguito sono elencate solo {{PLURAL:$1|la prima pagina che punta|le prime $1 pagine che puntano}} a questo file.\nÈ disponibile un [[Special:WhatLinksHere/$2|elenco completo]].",
        "nolinkstoimage": "Nessuna pagina contiene collegamenti al file.",
        "ntransclusions": "usato in $1 {{PLURAL:$1|pagina|pagine}}",
        "specialpage-empty": "Questa pagina speciale è attualmente vuota.",
        "lonelypages": "Pagine orfane",
-       "lonelypagestext": "Le pagine indicate di seguito sono prive di collegamenti provenienti da altre pagine di {{SITENAME}} e non sono incluse in nessuna pagina del sito.",
+       "lonelypagestext": "Le pagine indicate di seguito sono prive di collegamenti provenienti da altre pagine di {{SITENAME}} e non sono incluse in alcuna pagina del sito.",
        "uncategorizedpages": "Pagine prive di categorie",
        "uncategorizedcategories": "Categorie prive di categorie",
        "uncategorizedimages": "File privi di categorie",
        "move": "Sposta",
        "movethispage": "Sposta questa pagina",
        "unusedimagestext": "In questo elenco sono presenti i file caricati e non usati nel sito.\nPotrebbero essere presenti immagini che sono usate da altri siti con un collegamento diretto.",
-       "unusedcategoriestext": "Le pagine delle categorie indicate di seguito sono state create ma non contengono nessuna pagina né sottocategoria.",
+       "unusedcategoriestext": "Le seguenti pagine testuali esistono, sebbene le categorie corrispondenti siano vuote.",
        "notargettitle": "Dati mancanti",
        "notargettext": "Non è stata indicata una pagina o un utente in relazione al quale eseguire l'operazione richiesta.",
        "nopagetitle": "La pagina di destinazione non esiste",
        "trackingcategories-disabled": "La categoria è disabilitata",
        "mailnologin": "Nessun indirizzo cui inviare il messaggio",
        "mailnologintext": "Per inviare messaggi e-mail ad altri utenti è necessario [[Special:UserLogin|accedere al sito]] e aver registrato un indirizzo valido nelle proprie [[Special:Preferences|preferenze]].",
-       "emailuser": "Scrivi all'utente",
+       "emailuser": "Invia una email all'utente",
        "emailuser-title-target": "Invia una email a questo {{GENDER:$1|utente}}",
        "emailuser-title-notarget": "Invia una email a un utente",
-       "emailpage": "Invia un messaggio email all'utente",
+       "emailpage": "Invia una email all'utente",
        "emailpagetext": "Usare il modulo sottostante per inviare un messaggio e-mail all'{{GENDER:$1|utente}} indicato. L'indirizzo specificato nelle [[Special:Preferences|preferenze]] del mittente apparirà nel campo \"Da:\" del messaggio per consentire al destinatario di rispondere direttamente.",
        "defemailsubject": "Messaggio da {{SITENAME}} dall'utente \"$1\"",
        "usermaildisabled": "e-mail utente disabilitata",
        "watchnologin": "Accesso non effettuato",
        "addwatch": "Aggiungi agli osservati speciali",
        "addedwatchtext": "La pagina \"[[:$1]]\" è stata aggiunta alla propria [[Special:Watchlist|lista degli osservati speciali]].\nD'ora in poi, le modifiche apportate alla pagina e alla sua discussione verranno elencate in quella sede.",
+       "addedwatchtext-short": "La pagina \"$1\" è stata aggiunta alla propria lista degli osservati speciali.",
        "removewatch": "Rimuovi dagli osservati speciali",
-       "removedwatchtext": "La pagina \"[[:$1]]\" è stata eliminata dalla [[Special:Watchlist|lista degli osservati speciali]].",
+       "removedwatchtext": "La pagina \"[[:$1]]\" è stata rimossa dalla propria [[Special:Watchlist|lista degli osservati speciali]].",
+       "removedwatchtext-short": "La pagina \"$1\" è stata rimossa dalla propria lista degli osservati speciali.",
        "watch": "Segui",
        "watchthispage": "Segui questa pagina",
        "unwatch": "Non seguire",
        "undelete-fieldset-title": "Ripristina versioni",
        "undeleteextrahelp": "Per recuperare l'intera cronologia della pagina, lasciare tutte le caselle deselezionate e fare clic su '''''{{int:undeletebtn}}'''''.\nPer effettuare un ripristino selettivo, selezionare le caselle corrispondenti alle revisioni da ripristinare e fare clic su '''''{{int:undeletebtn}}'''''.",
        "undeleterevisions": "{{PLURAL:$1|Una revisione|$1 revisioni}} in archivio",
-       "undeletehistory": "Recuperando questa pagina, tutte le sue versioni verranno ripristinate nella relativa cronologia.\nSe dopo la cancellazione è stata creata una nuova pagina con lo stesso titolo, le revisioni recuperate saranno inserite nella cronologia precedente.",
+       "undeletehistory": "Recuperando questa pagina, tutte le sue versioni saranno ripristinate nella relativa cronologia.\nSe dopo la cancellazione è stata creata una nuova pagina con lo stesso titolo, le revisioni recuperate saranno inserite nella cronologia precedente.",
        "undeleterevdel": "Il ripristino non verrà effettuato se determina la cancellazione parziale della versione attuale della pagina o del file interessato. In tal caso, è necessario rimuovere il segno di spunta o l'oscuramento dalle revisioni cancellate più recenti.",
        "undeletehistorynoadmin": "Questa pagina è stata cancellata.\nIl motivo della cancellazione è mostrato qui sotto, assieme ai dettagli dell'utente che ha modificato questa pagina prima della cancellazione.\nIl testo contenuto nelle revisioni cancellate è disponibile solo agli amministratori.",
        "undelete-revision": "Revisione cancellata della pagina $1, inserita il $4 alle $5 da $3:",
        "unblock": "Sblocca utente",
        "blockip": "Blocco utente",
        "blockip-legend": "Blocca l'utente",
-       "blockiptext": "Usare il modulo sottostante per bloccare l'accesso in scrittura a uno specifico indirizzo IP o un utente registrato.\nIl blocco dev'essere operato per prevenire atti di vandalismo e in stretta osservanza della [[{{MediaWiki:Policy-url}}|policy di {{SITENAME}}]].\nIndicare il motivo specifico per il quale si procede al blocco (per esempio, citando i titoli di eventuali pagine oggetto di vandalismo).",
+       "blockiptext": "Usare il modulo sottostante per bloccare l'accesso in scrittura a uno specifico indirizzo IP o a un utente registrato.\nIl blocco dev'essere operato per prevenire atti di vandalismo e in stretta osservanza delle [[{{MediaWiki:Policy-url}}|regole di {{SITENAME}}]].\nIndicare il motivo specifico per il quale si procede al blocco (per esempio, citando i titoli di eventuali pagine oggetto di vandalismo).",
        "ipaddressorusername": "Indirizzo IP o nome utente:",
        "ipbexpiry": "Scadenza del blocco:",
        "ipbreason": "Motivo:",
        "unblocked-id": "Il blocco $1 è stato rimosso",
        "blocklist": "Utenti bloccati",
        "ipblocklist": "Utenti bloccati",
-       "ipblocklist-legend": "Trova un utente bloccato",
+       "ipblocklist-legend": "Cerca un utente bloccato",
        "blocklist-userblocks": "Nascondi i blocchi degli utenti registrati",
        "blocklist-tempblocks": "Nascondi i blocchi temporanei",
        "blocklist-addressblocks": "Nascondi i blocchi di un solo IP",
        "ip_range_toolarge": "Non è possibile bloccare range superiori al /$1",
        "proxyblocker": "Blocco dei proxy aperti",
        "proxyblockreason": "Questo indirizzo IP è stato bloccato perché risulta essere un proxy aperto. Si prega di contattare il proprio fornitore di accesso a Internet o il supporto tecnico e informarli di questo grave problema di sicurezza.",
-       "sorbsreason": "Questo indirizzo IP è elencato come proxy aperto nella blacklist DNSBL utilizzata da {{SITENAME}}.",
-       "sorbs_create_account_reason": "Non è possibile creare nuovi accessi da questo indirizzo IP perché è elencato come proxy aperto nella blacklist DNSBL utilizzata da {{SITENAME}}.",
+       "sorbsreason": "Questo indirizzo IP è elencato come proxy aperto nella lista DNSBL utilizzata da {{SITENAME}}.",
+       "sorbs_create_account_reason": "Non è possibile creare nuove utenze con questo indirizzo IP perché è elencato come proxy aperto nella lista DNSBL utilizzata da {{SITENAME}}.",
        "xffblockreason": "Un indirizzo IP presente nell'intestazione X-Forwarded-For, tuo o del server proxy che stai utilizzando, è stato bloccato. La motivazione originale del blocco è: $1",
        "cant-see-hidden-user": "L'utente che si sta tentando di bloccare è stato già bloccato e nascosto. Poiché non hai il permesso \"hideuser\", non è possibile visualizzare o modificare il blocco dell'utente.",
        "ipbblocked": "Non puoi bloccare o sbloccare altri utenti, perché tu stesso sei bloccato",
        "delete_and_move_text": "==Cancellazione richiesta==\n\nLa pagina specificata come destinazione \"[[:$1]]\" esiste già. Vuoi cancellarla per proseguire con lo spostamento?",
        "delete_and_move_confirm": "Sì, sovrascrivi la pagina esistente",
        "delete_and_move_reason": "Cancellata per rendere possibile lo spostamento da \"[[$1]]\"",
-       "selfmove": "Il nuovo titolo è uguale al vecchio; impossibile spostare la pagina su se stessa.",
+       "selfmove": "Il titolo di destinazione è uguale a quello di provenienza, non è possibile spostare una pagina su se stessa.",
        "immobile-source-namespace": "Non è possibile spostare pagine del namespace \"$1\"",
        "immobile-target-namespace": "Non è possibile spostare pagine nel namespace \"$1\"",
        "immobile-target-namespace-iw": "Un collegamento interwiki non è una destinazione valida per spostare la pagina.",
index 39c481b..37b1add 100644 (file)
        "revdelete-show-file-submit": "はい",
        "revdelete-selected-text": "[[:$2]] の{{PLURAL:$1|選択された版}}:",
        "logdelete-selected": "{{PLURAL:$1|選択された記録項目}}:",
+       "revdelete-text-text": "削除された版は履歴に表示され続けますが、一般の利用者が内容を閲覧できなくなります。",
        "revdelete-text-others": "追加の制限を設定しない限り、{{SITENAME}} の他の管理者は非表示コンテンツにまだアクセスでき、この同じインターフェースを通してそれを復元することができます。",
        "revdelete-confirm": "この操作を行おうとしていること、その結果を理解していること、[[{{MediaWiki:Policy-url}}|方針]]に従っていること、を確認してください。",
        "revdelete-suppress-text": "秘匿は、<strong>以下の場合に限って</strong>使用すべきです:\n* 名誉毀損のおそれがある記述\n* 非公開個人情報\n*: <em>自宅の住所、電話番号、個人を識別できる公的な番号など</em>",
        "watchlistedit-raw-done": "ウォッチリストを更新しました。",
        "watchlistedit-raw-added": "{{PLURAL:$1|$1 ページ}}を追加しました:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|$1 ページ}}を除去しました:",
-       "watchlistedit-clear-title": "ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\82\92白紙化",
+       "watchlistedit-clear-title": "ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81®白紙化",
        "watchlistedit-clear-legend": "ウォッチリストの白紙化",
        "watchlistedit-clear-explain": "ウォッチリストに追加されたページ名がすべて除去されます",
        "watchlistedit-clear-titles": "ページ名:",
index 8213653..06984fb 100644 (file)
        "edit-gone-missing": "ಪುಟವನ್ನು ಪ್ರಸ್ತುತಗೊಳಿಸಲು ಸಾದ್ಯವಿಲ್ಲ, ಪುಟವು ಬಹುಶ: ಅಳಿಸಲ್ಪಟ್ಟಿರಬಹುದು",
        "edit-conflict": "ಸಂಪಾದನಾ ಘರ್ಷಣೆ.",
        "edit-no-change": "ನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ಕಡೆಗಣಿಸಲಾಗಿದೆ ಏಕೆಂದರೆ ಪಠ್ಯದಲ್ಲಿ ಯಾವುದೇ ಬದಲಾವಣೆ ಮಾಡಲಾಗಿಲ್ಲ್ಲ",
-       "postedit-confirmation": "ನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ಉಳಿಸಲಾಗಿದೆ.",
+       "postedit-confirmation-saved": "ನಿಮ್ಮ ಸಂಪಾದನೆಯನ್ನು ಉಳಿಸಲಾಗಿದೆ.",
        "edit-already-exists": "ಹೊಸ ಪುಟವನ್ನು ಸೃಷ್ಟಿಸಲಾಗಲಿಲ್ಲ.\nಅದು ಆಗಲೆ ಅಸ್ಥಿತ್ವದಲ್ಲಿದೆ.",
        "content-model-javascript": "ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್",
        "content-model-css": "ಸಿಎಸ್‍ಎಸ್",
        "prefs-files": "ಫೈಲುಗಳು",
        "youremail": "ಇ-ಅಂಚೆ:",
        "username": "ಸದಸ್ಯತ್ವದ ಹೆಸರು:",
-       "uid": "ಬಳಕೆದಾರ ID:",
        "prefs-memberingroups": "ಈ {{PLURAL:$1|ಗುಂಪಿನ|ಗುಂಪುಗಳ}} ಸದಸ್ಯ:",
        "yourrealname": "ನಿಜ ಹೆಸರು:",
        "yourlanguage": "ಭಾಷೆ:",
        "logempty": "ದಾಖಲೆಗಳಲ್ಲಿ ಇದಕ್ಕೆ ಹೋಲುವ ಯಾವ ವಸ್ತುವೂ ಇಲ್ಲ.",
        "log-title-wildcard": "ಈ ಪದಗಳಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಶೀರ್ಷಿಕೆಗಳನ್ನು ಹುಡುಕು",
        "allpages": "ಎಲ್ಲ ಪುಟಗಳು",
-       "alphaindexline": "$1 ಇಂದ $2",
        "nextpage": "ಮುಂದಿನ ಪುಟ ($1)",
        "prevpage": "ಹಿಂದಿನ ಪುಟ ($1)",
        "allpagesfrom": "ಇದರಿಂದ ಪ್ರಾರಂಭವಾಗುವ ಪುಟಗಳನ್ನು ತೋರಿಸು:",
        "watchnologin": "ಲಾಗಿನ್ ಆಗಿಲ್ಲ",
        "addwatch": "ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರಿಸು",
        "addedwatchtext": "\"[[:$1]]\" ಪುಟವನ್ನು ನಿಮ್ಮ [[Special:Watchlist|ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ]] ಸೇರಿಸಲಾಗಿದೆ. ಈ ಪುಟದ ಮತ್ತು ಇದರ ಚರ್ಚಾ ಪುಟದ ಮುಂದಿನ ಬದಲಾವಣೆಗಳು ವೀಕ್ಷಣಾ ಪಟ್ಟಿಯಲ್ಲಿ ಕಾಣಸಿಗುತ್ತವೆ, ಮತ್ತು [[Special:RecentChanges|ಇತ್ತೀಚೆಗಿನ ಬದಲಾವಣೆಗಳ]] ಪಟ್ಟಿಯಲ್ಲಿ ಈ ಪುಟಗಳನ್ನು ದಪ್ಪಕ್ಷರಗಳಲ್ಲಿ ಕಾಣಿಸಲಾಗುವುದು.\n\n<p>ಈ ಪುಟವನ್ನು ವೀಕ್ಷಣಾ ಪಟ್ಟಿಯಿಂದ ತೆಗೆಯಬಯಸಿದಲ್ಲಿ, ಮೇಲ್ಪಟ್ಟಿಯಲ್ಲಿ ಕಾಣಿಸಿರುವ \"ವೀಕ್ಷಣಾ ಪುಟದಿಂದ ತೆಗೆ\" ಅನ್ನು ಕ್ಲಿಕ್ಕಿಸಿ.",
+       "addedwatchtext-short": "\"$1\" ಪುಟವನ್ನು ನಿಮ್ಮ ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರಿಸಲಾಗಿದೆ.",
        "removewatch": "ವೀಕ್ಷಣಾಪಟ್ಟಿಯಿಂದ ತೆಗೆ",
        "removedwatchtext": "\"[[:$1]]\" ಪುಟವನ್ನು ನಿಮ್ಮ [[Special:Watchlist|ವೀಕ್ಷಣಾಪಟ್ಟಿಯಿಂದ]] ತೆಗೆಯಲಾಗಿದೆ.",
+       "removedwatchtext-short": "\"$1\" ಪುಟವನ್ನು ನಿಮ್ಮ ವೀಕ್ಷಣಾಪಟ್ಟಿಂದ ತೆಗೆಯಲಾಗಿದೆ.",
        "watch": "ವೀಕ್ಷಿಸಿ",
        "watchthispage": "ಈ ಪುಟವನ್ನು ವೀಕ್ಷಿಸಿ",
        "unwatch": "ವೀಕ್ಷಣಾ ಪಟ್ಟಿಯಿಂದ ತೆಗೆ",
        "unblock": "ಬಳಕೆದಾರನ ತಡೆಯನ್ನು ತೆಗೆ",
        "blockip": "ಈ ಸದಸ್ಯನನ್ನು ತಡೆ ಹಿಡಿಯಿರಿ",
        "blockip-legend": "ಬಳಕೆದಾರನನ್ನು ತಡೆಹಿಡಿ",
-       "ipadressorusername": "IP ವಿಳಾಸ ಅಥವ ಬಳಕೆಯ ಹೆಸರು:",
+       "ipaddressorusername": "IP ವಿಳಾಸ ಅಥವ ಬಳಕೆಯ ಹೆಸರು:",
        "ipbexpiry": "ಅಂತ್ಯ:",
        "ipbreason": "ಕಾರಣ:",
        "ipbreason-dropdown": "*ತಡೆಹಿಡಿಯುವಿಕೆಗೆ ಸಾಧಾರಣ ಕಾರಣಗಳು\n** ತಪ್ಪು ಮಾಹಿತಿಯನ್ನು ಸೇರಿಸುವುದು\n** ಪುಟದಲ್ಲಿರುವ ಮಾಹಿತಿಯನ್ನು ತೆಗೆಯುವುದು\n** ಬಾಹ್ಯ ತಾಣಗಳಿಗೆ ಜಾಹೀರಾತಿಗೆ ಕೊಂಡಿ ಸೇರಿಸುವುದು\n** ಪುಟಗಳಲ್ಲಿ ಅರ್ಥವಿಲ್ಲದ ಮಾಹಿತಿ ಸೇರಿಸುವುದು\n** ಬೇರೆಯವರನ್ನು ಬೆದರಿಸುವ/ಕಾಡುವ ವರ್ತನೆ\n** ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಖಾತೆಗಳ ದುರುಪಯೋಗ\n** ಒಪ್ಪಿಗೆಯಿರದಂತಹ ಬಳಕೆಯ ಹೆಸರು",
        "newimages": "ಹೊಸ ಫೈಲುಗಳ ಪ್ರದರ್ಶನ",
        "imagelisttext": "ಕೆಳಗೆ ಇರುವುದು '''$1''' {{PLURAL:$1|ಫೈಲಿನ|ಫೈಲುಗಳ}} ಪಟ್ಟಿ, $2 ಏರ್ಪಾಟಾಗಿದೆ.",
        "newimages-summary": "ಈ ವಿಶೇಷ ಪುಟವು ಕೊನೆಯದಾಗಿ ಅಪ್ಲೋಡ್ ಆಗಿರುವ ಫೈಲುಗಳನ್ನು ತೋರುತ್ತದೆ",
-       "showhidebots": "($1 ಬಾಟ್‍ಗಳು)",
        "noimages": "ನೋಡಲು ಏನೂ ಇಲ್ಲ.",
        "ilsubmit": "ಹುಡುಕು",
        "bydate": "ದಿನಾಂಕಕ್ಕನುಗುಣವಾಗಿ",
index 7069ab4..fc8023c 100644 (file)
        "right-move": "Säite réckelen",
        "right-move-subpages": "Säiten zesumme mat hiren Ënnersäite réckelen",
        "right-move-rootuserpages": "Haapt-Benotzersäite réckelen",
+       "right-move-categorypages": "Kategorie-Säite réckelen",
        "right-movefile": "Fichiere réckelen",
        "right-suppressredirect": "Keng Viruleedung vum alen Numm aus uleeë wann eng Säit geréckelt gëtt",
        "right-upload": "Fichieren eroplueden",
        "movenotallowedfile": "Dir hutt net d'Recht fir Fichieren ze réckelen.",
        "cant-move-user-page": "Dir hutt net déi néideg Rechter fir Benotzerhaaptsäiten ze réckelen.",
        "cant-move-to-user-page": "Dir hutt net d'Recht fir eng Säit op eng Benotzersäit (ausser op eng Ënnersäit vun enger Benotzersäit) ze réckelen.",
+       "cant-move-category-page": "Dir hutt net déi néideg Rechter fir Kategorie-Säiten ze réckelen.",
        "newtitle": "Op den neien Titel:",
        "move-watch": "Dës Säit iwwerwaachen",
        "movepagebtn": "Säit réckelen",
        "tooltip-recreate": "D'Säit nees uleeën, obwuel se geläscht gi war.",
        "tooltip-upload": "Mam eroplueden ufänken",
        "tooltip-rollback": "\"Zrécksetzen\" mécht all Ännerunge vum leschten \"Auteur\" an engem Klick nees réckgängeg.",
-       "tooltip-undo": "\"Zréck\" setzt dës Ännerung zréck a mécht den Ännerungsformulaire am Modus \"kucken ouni ofzespäicheren\" op.\nErlaabt et e Grond an de Resumé derbäizesetzen.",
+       "tooltip-undo": "\"Zréck\" setzt dës Ännerung zréck a mécht den Ännerungsformulaire am Modus \"kucken ouni ofzespäicheren\" op, fir datt een  eventuell eng Ursaach an de Resumé ka schreiwen.",
        "tooltip-preferences-save": "Astellunge späicheren",
        "tooltip-summary": "Gitt e kuerze Resumé an",
        "interlanguage-link-title": "$1 - $2",
index a5dd37a..d3aa496 100644 (file)
        "tog-hidepatrolled": "Scund i mudifegh verifegaa intra i ültem mudifegh",
        "tog-newpageshidepatrolled": "Scund i paginn verifegaa de la lista di paginn növ",
        "tog-extendwatchlist": "Slarga la funziun \"tegn sot ögg\" in manera che la fà vidè tüt i mudifegh, minga dumà l'ültema",
-       "tog-usenewrc": "Dupra i ültem mudifegh avanzaa (ghe vör el JavaScript)",
-       "tog-numberheadings": "Utu-nümerazión di paragraf",
-       "tog-showtoolbar": "Fá vidé ai butún da redataziún (JavaScript)",
-       "tog-editondblclick": "Redatá i pagin cun al dópi clich (JavaScript)",
-       "tog-editsectiononrightclick": "Abilitá redatazziún dai sezziún cun al clic<br />\nsüi titul dai sezziún (JavaScript)",
-       "tog-watchcreations": "Giunta i paginn ch'hoo creaa mì a la lista di paginn che tegni sot ögg",
-       "tog-watchdefault": "Gjüntá i pagin redataa in dala lista dii pagin tegnüü d'öcc",
-       "tog-watchmoves": "Giunta i paginn ch'hoo muvüü a la lista di paginn che tegni sot ögg",
-       "tog-watchdeletion": "Giunta i paginn ch'hoo scancelaa a la lista di paginn che tegni sot ögg",
+       "tog-usenewrc": "Reönés le mudifiche per pàgina endèle ölteme mudìfiche 'ndèi oservàcc speciài",
+       "tog-numberheadings": "Auto-nümerazion di paragraf",
+       "tog-showtoolbar": "Fà ved la barra dei arnés de modifica",
+       "tog-editondblclick": "Redatá i pagin cun al dópi clich",
+       "tog-editsectiononrightclick": "Abilitá mudifica di seziún cun al clic dester sül tìtul",
+       "tog-watchcreations": "Giunta i paginn e i archivi ch'hoo creaa mì a la lista di paginn che tegni sot ögg",
+       "tog-watchdefault": "Gjüntá i pagin e i archivi mudificaa in dela lista dii pagin tegnüü d'öcc",
+       "tog-watchmoves": "Giunta i paginn e i archivi ch'hoo muvüü a la lista di paginn che tegni sot ögg",
+       "tog-watchdeletion": "Giunta i paginne i archivi ch'hoo scancelaa a la lista di paginn che tegni sot ögg",
        "tog-minordefault": "Marca tücc i mudifegh cume piscinìn",
        "tog-previewontop": "Fá vidé un'anteprima anaanz dala finèstra da redatazziún",
        "tog-previewonfirst": "Fá vidé l'anteprima ala prima redatazziún",
+       "tog-enotifwatchlistpages": "Màndem 'na e-mail quan che vé mudificàda 'na pagina o 'n archivi che g'ho 'ntra i mé oservàcc speciài",
        "tog-enotifusertalkpages": "Mandem un messagg e-mail quand che gh'è di mudifegh a la mè pàgina di ciaciarad",
-       "tog-enotifminoredits": "Màndem un messagg e-mail anca per i mudifegh piscinín",
+       "tog-enotifminoredits": "Màndem un messagg e-mail anca per i mudifegh piscinín ai articol e ai archivi",
        "tog-enotifrevealaddr": "Lassa vedè 'l mè indirizz e-mail int i messagg d'avis",
+       "tog-shownumberswatching": "Fa vet el nümer de ütent che té d'ögg l'articol",
        "tog-oldsig": "Firma esistenta:",
        "tog-fancysig": "Trata la firma cume test wiki (senza nissön ligam utumatich)",
-       "tog-watchlisthideown": "Sconda i me mudifich dai pagin che a ten d'ögg",
-       "tog-watchlisthidebots": "Sconda i mudifich di bot da i pagin che a ten d'ögg",
+       "tog-uselivepreview": "Ativa la funzion \"Live Preview\" (anteprima al vul)",
+       "tog-forceeditsummary": "Ciamem cunferma semai che 'l camp oget l'è öt",
+       "tog-watchlisthideown": "Scont le mé mudìfiche endèi oservàcc speciài",
+       "tog-watchlisthidebots": "Sconda i mudifich di bot da i pagin uservaa special",
+       "tog-watchlisthideminor": "Scont le mudìfiche picinìne 'ndèi oservàcc speciai",
+       "tog-watchlisthideliu": "Scont le mudìfiche dei ütèncc registràcc endèi oservàcc speciài",
+       "tog-watchlisthideanons": "Scont le mudìfiche dei ütèncc anònim endèi oservàcc speciài",
+       "tog-watchlisthidepatrolled": "Scont le mudìfiche verificàde endèi oservàcc speciài",
        "tog-ccmeonemails": "Spedissem una copia di messagg spedii a i alter druvadur",
        "tog-diffonly": "Mustra mía el cuntegnüü de la pagina apress ai ''diffs''",
        "tog-showhiddencats": "Fà vidè i categurij scundüü",
        "tog-norollbackdiff": "Mustra mía i ''diffs'' dop che i henn staa ripristinaa cun un rollback",
+       "tog-useeditwarning": "Avìzem quan che so dré a nà fò de 'na pàgina sènsa ìga salvàt le mudìfiche",
+       "tog-prefershttps": "Dopra sèmper 'na conesiù sigüra quan che s'è registràcc",
        "underline-always": "Semper",
        "underline-never": "Mai",
        "underline-default": "Mantegn i impustazión standard del browser o de l'interfàcia",
        "oct": "Utu",
        "nov": "Nuv",
        "dec": "Dic",
+       "january-date": "{{PLURAL:$1|1°|$1}} de zenér",
+       "february-date": "{{PLURAL:$1|1°|$1}} de febrér",
+       "march-date": "{{PLURAL:$1|1°|$1}} de Mars",
+       "april-date": "{{PLURAL:$1|1°|$1}} de Bril",
+       "may-date": "{{PLURAL:$1|1°|$1}} de Magio",
+       "june-date": "{{PLURAL:$1|1°|$1}} de Zögn",
+       "july-date": "{{PLURAL:$1|1°|$1}} de Löi",
+       "august-date": "{{PLURAL:$1|1°|$1}} de Agost",
+       "september-date": "{{PLURAL:$1|1°|$1}} de Setèmber",
+       "october-date": "{{PLURAL:$1|1°|$1}} de Utùer",
+       "november-date": "{{PLURAL:$1|1°|$1}} de Noèmber",
+       "december-date": "{{PLURAL:$1|1°|$1}} de Dezèmber",
        "pagecategories": "{{PLURAL:$1|Categuria|Categurij}}",
        "category_header": "Artìcuj int la categuria \"$1\"",
        "subcategories": "Suta-categurij",
        "category-subcat-count": "{{PLURAL:$2|Quela categuria chì la gh'ha dumà una sota-categuria, missa chì de sota.|Quela categuria chì la gh'ha {{PLURAL:$1|una sota-categuria|$1 sota-categurij}} chì de sota, sü un tutal de $2.}}",
        "category-subcat-count-limited": "Quela categuria chì la gh'ha denter {{PLURAL:$1|la sut-categuria| i $1 sut-categurij}} chì abass.",
        "category-article-count": "{{PLURAL:$2|Quela categuria chì la gh'ha dumà quela pagina chì.|In quela categuria chì gh'è {{PLURAL:$1|la pagina indicada|i $1 paginn indicaa}} de $2 che gh'hinn in tutal.}}",
+       "category-article-count-limited": "Chèsta categuria la g'ha dét {{PLURAL:$1|l'artìcol|i $1 artìcoi}} elencàcc ché sota:",
        "category-file-count": "{{PLURAL:$2|Quela categuria chì la gh'ha denter dumà el file chì suta|Quela categuria chì la gh'ha denter {{PLURAL:$1|'l file|$1 i file}} ripurtaa chì suta, sü un tutal de $2.}}",
+       "category-file-count-limited": "Chèsta categuria la g'ha dét {{PLURAL:$1|l'archivi|i $1 archivi}} elencàcc ché sota:",
        "listingcontinuesabbrev": "cont.",
        "index-category": "Paginn indicizaa",
+       "noindex-category": "Paginn minga indicizaa",
+       "broken-file-category": "Pàgine con dét colegamèncc che va mìa",
        "about": "A pruposit də",
        "article": "Pagina de cuntegnüü",
        "newwindow": "(sa derviss int un'óltra finèstra)",
        "cancel": "Lassa perd",
-       "moredotdotdot": "Püssee",
+       "moredotdotdot": "Amò...",
+       "morenotlisted": "Chèsta lìsta l'è mìa compléta",
        "mypage": "La mè pagina",
        "mytalk": "i mè discüssiun",
        "anontalk": "Ciciarad per quel adress IP chì",
        "navigation": "Navegazión",
        "and": "&#32;e",
        "qbfind": "Tröva",
-       "qbbrowse": "Sföja",
+       "qbbrowse": "Fà passà",
        "qbedit": "Mudifega",
        "qbpageoptions": "Opzión de la pagina",
        "qbmyoptions": "I mè paginn",
        "jumptonavigation": "Navigazión",
        "jumptosearch": "cerca",
        "view-pool-error": "Ne rincress, ma i server a hinn bej caregaa al mument.\nTrop drovat a hinn 'dree pruvà a vardà quela pagina chì.\nPer piasè, specia un mument prima de pruà a vardà anmò quela pagina chì.\n\n$1",
+       "generic-pool-error": "Ne rincress, ma i server a hinn bej caregaa al mument.\nTrop drovat a hinn 'dree pruvà a vardà chèsta risorsa.\nPer piasè, specia un mument prima de pruà a cargà anmò quela risorsa chì.\n\n$1",
        "pool-timeout": "Tép scadìt per l'operasiù de blocàgio",
        "pool-queuefull": "La cùa del \"pool\" l'è piéna",
        "pool-errorunknown": "Erùr mìa cunusìt",
-       "aboutsite": "A prupòsit de {{SITENAME}}",
+       "pool-servererror": "El contör dei pool l'è mìa dispunìbil ($1).",
+       "aboutsite": "A mèret de {{SITENAME}}",
        "aboutpage": "Project:A pruposit",
-       "copyright": "El cuntegnüü a l'è dispunibil sota a una licenza $1.",
+       "copyright": "Se minga marcaa in manera diferenta, el cuntegnüü a l'è dispunibil sota a una licenza $1.",
        "copyrightpage": "{{ns:project}}:Dirit d'autur",
        "currentevents": "Atüalitaa",
        "currentevents-url": "Project:Aveniment Recent",
        "pagetitle-view-mainpage": "{{SITENAME}}",
        "retrievedfrom": "Utegnüü de \"$1\"",
        "youhavenewmessages": "A gh'hii di $1 ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Te g'hét}} $1 de {{PLURAL:$3|'n óter ütènt|$3 ütèncc}} ($2).",
+       "youhavenewmessagesmanyusers": "Te g'hét $1 de divèrsi ütèncc ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|en mesàgio nöf|999=mesàgi nöf}}",
+       "newmessagesdifflinkplural": "{{PLURAL:$1|öltem cambiamènt|999=öltem cambiamèncc}}",
        "youhavenewmessagesmulti": "Te gh'hee di messagg növ ins'el $1",
        "editsection": "mudifega",
        "editold": "mudifega",
        "toc": "Cuntegnüü",
        "showtoc": "fà vidè",
        "hidetoc": "scund",
+       "collapsible-collapse": "sara sü",
+       "collapsible-expand": "slarga",
        "thisisdeleted": "Varda o rimet a post $1?",
        "viewdeleted": "Te vöret vidè $1?",
        "restorelink": "{{PLURAL:$1|1 mudifega scancelada|$1 mudifegh scancelaa}}",
        "page-rss-feed": "Feed RSS per \"$1\"",
        "page-atom-feed": "Feed Atom per \"$1\"",
        "red-link-title": "$1 (la pagina la gh'è minga)",
+       "sort-descending": "Met en ùrden del piö grant al piö pesèn",
+       "sort-ascending": "Met en ùrden del piö pesèn al piö grant",
        "nstab-main": "Articul",
        "nstab-user": "Pagina persunala",
        "nstab-media": "Pagina multimediala",
        "nospecialpagetext": "<strong>T'hee ciamaa una pagina speciala minga valida.</strong>\n\nUna lista di paginn special la se pö truà in de la [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Erur",
        "databaseerror": "Erur in del database",
+       "databaseerror-query": "Ricérca: $1",
+       "databaseerror-function": "Funsiù: $1",
+       "databaseerror-error": "Erur: $1",
        "readonly": "Database blucaa",
        "missing-article": "El database l'ha minga truaa el test d'una pagina che l'avaria duvüü truà, ciamaa \"$1\" $2.\n\nQuest chì a l'è de solet causaa perchè al s'è riciamaa un paragón intra revisión vegg de la pagina o un ligam a una versión vegia d'una pagina che l'è stada scancelada\n\nSe l'è minga inscì, te pudariet vegh truà un bug in del software.\n\nPer piasè, fa raport a 'n'[[Special:ListUsers/sysop|aministradur]], cun la nota de l'URL.",
        "missingarticle-rev": "(revision#: $1)",
        "internalerror": "Erur in del sistema",
        "internalerror_info": "Erur intern: $1",
        "filecopyerror": "L'è mía staa pussibel cubià l'archivi \"$1\" in \"$2\"",
+       "cannotdelete-title": "Se pöl mìa scancelà la pàgina \"$1\"",
        "badtitle": "Títul mía bun",
        "badtitletext": "El titul de la pagina ciamada a l'è vöj, sbajaa o cun carater minga acetaa, opüra al vegn d'un erur in di ligam intra sit wiki diferent o versión in lenguv diferent de l'istess sit.",
        "viewsource": "Còdas surgent",
-       "protectedpagetext": "Cula pagina chi l'è stata blucà per impedinn la mudifica.",
-       "viewsourcetext": "L'è pussibil vèd e cupià el codes surgent de cula pagina chí:",
-       "editinginterface": "'''Ocio''': Te see adree a mudifegà una pàgina che la se dröva per generà 'l test de l'interfacia del prugrama. Qualsìa mudìfega fada la cambierà l'interfacia de tüt i druvadur. Se te gh'hee intenzión de fà una tradüzión, per piasì cunsiderà la pussibilità de druvà [//translatewiki.net/wiki/Main_Page?setlang=lmo translatewiki.net], 'l pruget de lucalizazión de MediaWiki.",
+       "protectedpagetext": "Chela pagina chi l'è stata blucàda per impedinn la mudifica o altre azion.",
+       "viewsourcetext": "L'è pussibil vèd e cupià el codes surgent de chela pagina chí:",
+       "editinginterface": "'''Ocio''': Te see adree a mudifegà una pàgina che la se dröva per generà 'l test de l'interfacia del prugrama. Ogna mudìfega fada la cambierà l'interfacia de tüt i druvadur. Se te gh'hee intenzión de fà una tradüzión, per piasì cunsiderà la pussibilità de druvà [//translatewiki.net/ translatewiki.net], 'l pruget de lucalizazión de MediaWiki.",
        "ns-specialprotected": "I paginn special i pören mía vess mudifegaa",
+       "exception-nologin": "Te seet minga dent in del sistema",
        "logouttext": "'''Adess a sii descuness.'''\n\nA pudé andà inanz a druvà la {{SITENAME}} in manera anònima, o a pudé <span class='plainlinks'>[$1 cunètev anmò]</span> cun l'istess suranomm o cun un suranomm diferent.\nTegné cünt che certi paginn pödass che i seguiten a vedess tant 'me se a füdìssuv anmò cuness, fin quand che hii nò vudaa 'l ''cache'' del voster browser.",
        "yourname": "El to suranóm:",
+       "userlogin-yourname": "Nom del ütènt",
+       "userlogin-yourname-ph": "Mèt dét el tò nòm de ütènt",
+       "createacct-another-username-ph": "Mèt dét el nòm de ütènt",
        "yourpassword": "Parola d'urdin",
-       "yourpasswordagain": "Mett dent ammò la parola d'urdin",
-       "remembermypassword": "Regordass la mè parola d'urdin (for a maximum of $1 {{PLURAL:$1|day|days}})",
+       "userlogin-yourpassword": "Password",
+       "userlogin-yourpassword-ph": "Mèt dét la tò password",
+       "createacct-yourpassword-ph": "Mèt dét la password",
+       "yourpasswordagain": "Tùrna a scrìer la password",
+       "createacct-yourpasswordagain": "Conférma la password",
+       "createacct-yourpasswordagain-ph": "Tùrna a mèter dét la password",
+       "remembermypassword": "Regordass la mé password (per mìa de piö de {{PLURAL:$1|dé|dé}})",
+       "userlogin-remembermypassword": "Tègnem colegàt",
+       "userlogin-signwithsecure": "Dòpra 'na conesiù sigüra",
+       "yourdomainname": "Specificà 'l domini",
+       "password-change-forbidden": "Te pödet mìa cambià password sö chèsta wiki",
+       "externaldberror": "Gh'è 'n erùr söl server de autenticasiù estèrno o sedenò se g'ha mìa le autorizasiù nesesàre per agiurnà i dati de registrasiù estèrni.",
        "login": "Va dent",
        "nav-login-createaccount": "Vena denter / Crea un cünt",
        "loginprompt": "Par cunett a {{SITENAME}}, a duvii abilitá i galet.",
        "logout": "Va fö",
        "userlogout": "Và fö",
        "notloggedin": "Te seet minga dent in del sistema",
+       "userlogin-noaccount": "Sét gnemò registràt?",
+       "userlogin-joinproject": "Regìstret sö {{SITENAME}}",
        "nologin": "Gh'avii anmò da registrav? $1.",
        "nologinlink": "Creé un cünt!",
        "createaccount": "Creá un cünt",
        "gotaccount": "Gh'hee-t giamò un cünt? '''$1'''.",
        "gotaccountlink": "Va dent in del sistema",
-       "createaccountmail": "per indirizz e-mail",
+       "userlogin-resetlink": "Sét desmentegàt i tò dati de registrasiù?",
+       "userlogin-resetpassword-link": "Sét desmentegàt la tò password?",
+       "userlogin-helplink2": "G'hét bezògn de 'na mà per registràt?",
+       "userlogin-createanother": "Créa 'n ótra ütènsa",
+       "createacct-emailrequired": "Indirìs e-mail",
+       "createacct-emailoptional": "Indirìs e-mail (upsiunàl)",
+       "createacct-email-ph": "Mét dét el tò indiris e-mail",
+       "createacct-another-email-ph": "Mét dét l'indirìs e-mail",
+       "createaccountmail": "Dòpra 'na password a càzo temporànea e màndela a l'indirìs e-mail specificàt",
+       "createacct-realname": "Nòm véro (upsiunàl)",
+       "createaccountreason": "Mutìf:",
+       "createacct-reason": "Mutìf:",
+       "createacct-reason-ph": "Perchè sét dré a creà 'n ótra ütènsa?",
+       "createacct-captcha": "Contròl de sigürèsa",
+       "createacct-imgcaptcha-ph": "Mèt dét el tèst che te èdet ché sura",
+       "createacct-submit": "Créa la tò ütènsa",
+       "createacct-another-submit": "Créa 'n ótra ütènsa",
+       "createacct-benefit-heading": "{{SITENAME}} la crès gràsie a le persùne compagn de té.",
+       "createacct-benefit-body1": "{{PLURAL:$1|cambiamènt|cambiamèncc}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|artìcol|artìcoi}}",
+       "createacct-benefit-body3": "{{PLURAL:$1|contribüdur recènt|contribüdur recèncc}}",
        "badretype": "I password che t'hee miss a hinn diferent.",
-       "userexists": "El nom de duvrat che t'hee miss dent a l'è giamò dupraa.\nPer piasè, scerniss un alter suranom.",
+       "userexists": "El nom de duvrat che t'hee miss dent a l'è giamò dupraa.\nPer piasè, scerniss un alter nom.",
        "loginerror": "Erur in de l'andà dent in del sistema.",
+       "createacct-error": "Erùr endèl creà l'ütènsa",
        "createaccounterror": "Se pö minga creà el cünt: $1",
        "nocookiesnew": "El cünt a l'è staa creaa, ma t'hee minga pudüü andà dent in del sistema.\n{{SITENAME}} al dupra i cookies per fà andà i duvrat in del sistema.\nTì te gh'hee i cookies disabilitaa.\nPer piasè, abilita i cookies e pröa anmò a andà dent cunt el tò nom e la password.",
        "noname": "Vüü avii mía specificaa un nomm d'üsüari valévul.",
        "nouserspecified": "Te gh'heet da specificà un nom del druvatt.",
        "wrongpassword": "La ciav che t'hee metüü denter l'è nò giüsta. Pröva turna per piasè.",
        "wrongpasswordempty": "T'hee no metüü denter la parola ciav. Pröva turna per piasè.",
-       "mailmypassword": "Spedissem una password növa per e-mail",
+       "password-name-match": "La tò password la g'ha de éser diferènta del tò nòm de ütènt",
+       "mailmypassword": "Tùrna a defenéser la password",
        "passwordremindertext": "Un quajdün (prubabilment ti, cun l'indiriz IP $1) l'ha ciamaa da mandagh 'na ciav növa per andà denter int 'l sistema de {{SITENAME}} ($4).\nLa ciav per 'l druvadur \"$2\" adess l'è \"$3\".\nSariss mej andà denter int 'l sit almanch una völta prima de cambià la ciav.\nLa to ciav tempuranea la scaderà da chì a {{PLURAL:$5|un dì|$5 dì}}.\n\nSe te nò staa ti a ciamà 'sta ciav chì, o magara t'hee truaa la ciav vegia e te vör pü cambiala, te pör ignurà 'stu messagg chì e 'ndà inanz a druà la ciav vegia.",
+       "noemailcreate": "Bezògna fornéser en indirìs e-mail bù",
        "passwordsent": "Una parola ciav bele növa l'è staa spedii a l'indiriz e-mail registra da l'ütent \"$1\".\nPer piasè, ve drent anmò dop che te l'ricevüü.",
        "blocked-mailpassword": "'L to indirizz IP l'è blucaa, e per quela resón lì te pö mía druvà la funzion de recüper de la password.",
+       "mailerror": "Erùr endel mandà la e-mail: $1",
        "emailauthenticated": "'L tò indirizz e-mail l'è staa verificaa 'l $2 ai $3.",
-       "emailnotauthenticated": "Ul tò adrèss da pòsta letronica l è mia staa gnamò verificaa. Nissün mesacc al saraa mandaa par i servizzi che segütan.",
+       "emailnotauthenticated": "El tò indirìs e-mail l'è gnemò stat confermàt. Nesöna e-mail la sarà mandàda per le funsiù elencàde ché sota.",
        "emailconfirmlink": "Cunferma 'l to indirizz e-mail",
        "accountcreated": "Cunt bell-e-cread",
-       "accountcreatedtext": "'L cünt del druvat $1 l'è bele pruntaa.",
+       "accountcreatedtext": "Ghè stat creàt l'ütènsa per [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|msg]]).",
        "loginlanguagelabel": "Lengua: $1",
+       "pt-login": "Va dent",
+       "pt-login-button": "Va dent",
+       "pt-createaccount": "Creá un cünt",
+       "pt-userlogout": "Va fö (logout)",
        "changepassword": "Mudifega la paròla d'urdin",
+       "resetpass_header": "Càmbia la password de l'ütènsa",
        "oldpassword": "Paròla d'urdin végja:",
        "newpassword": "Paròla d'urdin növa:",
        "retypenew": "Scriv ancamò la paròla d'urdin növa:",
+       "resetpass_submit": "Defenés la password e regìstret (fà 'l log-in)",
+       "changepassword-success": "La tò password l'è stàda cambiàda sènsa erùr!",
+       "resetpass-submit-loggedin": "Càmbia la password",
+       "resetpass-submit-cancel": "Scancèla l'operasiù",
+       "passwordreset": "Tùrna a defenéser la password",
+       "passwordreset-legend": "Tùrna a defenéser la password",
+       "passwordreset-disabled": "La ridefinisiù de la password l'è mìa atìva sö chèsta wiki",
+       "passwordreset-emaildisabled": "Le funsiù de pòsta eletrònica i è stàde disativàde sö chèsta wiki.",
+       "passwordreset-username": "Nòm de ütènt",
+       "passwordreset-domain": "Domini:",
+       "passwordreset-email": "Indirìs e-mail:",
+       "changeemail-none": "(nisü)",
+       "changeemail-password": "La password sö {{SITENAME}}:",
+       "changeemail-submit": "Càmbia l'indirìs e-mail",
+       "changeemail-cancel": "Scancèla l'operasiù",
+       "resettokens": "Redefenés i tokens",
+       "resettokens-legend": "Redefenés i tokens",
+       "resettokens-tokens": "Token:",
+       "resettokens-token-label": "$1 (valùr de adès: $2)",
+       "resettokens-done": "Tokens redefinìcc.",
+       "resettokens-resetbutton": "Redefenés i tokens selesiunàcc",
        "bold_sample": "Test in grasset",
        "bold_tip": "Test in grasset",
        "italic_sample": "Test in cursiv",
        "showpreview": "Famm vedè prima",
        "showdiff": "Famm vedè i cambiament",
        "anoneditwarning": "Tì te set minga entraa. In de la crunulugia de la pagina se vedarà el tò IP.",
+       "missingcommenttext": "Mèt dét en comènt ché sota",
        "summary-preview": "Pröva de l'uget:",
+       "blockedtitle": "Ütènsa blocàda",
        "blockedtext": "'''El to nom del druvadur o el to indirizz IP l'è stat blucaa.'''\n\nEl bloch l'è stat fat da $1.\nEl mutiv per el bloch l'è: ''$2''\n\n* Principi del bloch: $8\n* Scadenza del bloch: $6\n* Blucaa: $7\n\nSe a vurii, a pudii cuntatà $1 o un olter [[{{MediaWiki:Grouppage-sysop}}|aministradur]] per discüt el bloch.\n\nFeegh a ment che la funzion 'Manda un email a quel druvadur chì' l'è mia ativa se avii mia registraa un indirizz e-mail valid ind i voster [[Special:Preferences|preferenz]] o se l'üsagg de 'sta funzion l' è stat blucaa.\n\nL'indirizz IP curent l'è $3, el nümer ID del bloch l'è #$5.\nFee el piasè d'inclüd tüt i detaj chì de sura in qualsessìa dumanda che a decidii de fà.",
-       "accmailtext": "La parola d'urdin per \"$1\" l'è stada mandada a $2.",
-       "newarticle": "(Növ)",
+       "blockednoreason": "Gh'è stat dat nisü mutìf",
+       "loginreqlink": "registràs (fà 'l log-in)",
+       "loginreqpagetext": "Per véder le otre pàgine ghe öl $1.",
+       "accmailtitle": "Password mandàda",
+       "accmailtext": "La password per [[User talk:$1|$1]] l'è stada mandada a $2. Chèsta password la pöl véser cambiàda per [[Special:ChangePassword|cambià la password]] apéna dòpo che te g'harét fat el log-in.",
+       "newarticle": "(Nöf)",
        "newarticletext": "Te seet andaa adree a un ligam a una pagina che la esista gnamò.\nPer creà la pagina, a l'è assee che te tachet a scriv in del box desota (varda la [$1 pagina de vüt] per savèn püssee).\nSe te seet chì per erur, schiscia \"indree\" in sül tò browser.",
-       "anontalkpagetext": "''Questa chí a l'é la pagina da ciciarada d'un druvadur che l'ha nonanmò registraa un cünt, o che 'l le dröva mia.\nPer 'sta reson chí, el pò vess identificaa dumà cunt el sò indirizz nümereg de IP.\n'Stu indirizz IP el pö vess druvaa da püssee d'un druvadur. Se te seet un druvadur anònim e ve someja che un quaj messagg ch'al ga par ch'al gh'a nagòt à vidé con lu, ch'al prœuva a [[Special:UserLogin|creà el sò cunt]].''",
+       "anontalkpagetext": "''Questa chí a l'é la pagina da ciciarada d'un druvadur che l'ha nonanmò registraa un cünt, o che 'l le dröva mia.\nPer 'sta reson chí, el pò vess identificaa dumà cunt el sò indirizz nümereg de IP.\n'Stu indirizz IP el pö vess druvaa da püssee d'un druvadur. Se te seet un druvadur anònim e te someja che un quaj messagg al ga nagòt à vidé con de ti, prœuva a [[Special:UserLogin/signup|creà 'n ütènsa nöa]] o [[Special:UserLogin|regìstret con chèla che te g'hét zà]] inscì de minga vess scunfundüü anmò con quaj alter ütent anomim.''",
        "noarticletext": "Per 'l mument quela pagina chì l'è vöja. Te pòdet [[Special:Search/{{PAGENAME}}|cercà quel articul chì]] int i alter paginn, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercà int i register imparentaa], o sedenò [{{fullurl:{{FULLPAGENAME}}|action=edit}} mudifichè 'sta pagina chì adess-adess]</span>.",
        "clearyourcache": "'''Nòta:''' dòpu che avii salvaa, pudaría véss neçessari de scancelá la memòria \"cache\" dal vòst prugráma də navigazziún in reet par vidé i mudifich faa. '''Mozilla / Firefox / Safari:''' tegní schiscjaa al butún ''Shift'' intaant che sə clica ''Reload'', upüür schiscjá ''Ctrl-Shift-R'' (''Cmd-Shift-R'' sül Apple Mac); '''IE:''' schiscjá ''Ctrl'' intaant che sə clica ''Refresh'', upüür schiscjá ''Ctrl-F5''; '''Konqueror:''': semplicemeent clicá al butún ''Reload'', upüür schiscjá ''F5''; '''Opera''' i üteent pudarían vech büsögn da scancelá cumpletameent la memòria \"cache\" in ''Tools&rarr;Preferences''.",
-       "previewnote": "''''''Atenziun'''! Questa pagina la serviss dumà de vardà. I cambiament hinn minga staa salvaa.'''",
+       "updated": "(Agiurnàt)",
+       "note": "<strong>Ocio:</strong>",
+       "previewnote": "<strong>Atenziun! Questa pagina la serviss dumà de vardà.</strong> I cambiament hinn gnamò staa salvaa.'''",
+       "continue-editing": "Và 'ndel area de mudifica",
        "editing": "Mudifega de $1",
+       "creating": "Creasiù de $1",
        "editingsection": "Mudifega de $1 (sezión)",
        "editingcomment": "Adree a mudifegà $1 (sezión növa)",
+       "editconflict": "Cunflit de edisiù sö $1",
+       "explainconflict": "'N óter ütènt el g'ha salvàt 'na versiù nöa de l'articol entàt che te sìet dré a fà le tò mudìfiche.\nL'area de mudìfica de sura la g'ha dét el test de la pàgina che gh'è on-line adès, isé come che l'è stat agiurnàt de l'óter ütènt.\nLa versiù co le tò mudìfiche envéce te la tróet endèl'area de mudìfica de sòta.\nSemài che te ölarèset confermàle, te g'hét de riportà le tò mudìfiche endèl tèst de l'area de sura.\nA schisà el butù '{{int:savearticle}}', se salvarà '''apéna''' el test che gh'è dét endèl'àrea de mudìfica de sura.",
        "yourtext": "El tò test",
+       "storedversion": "La versiù en memória",
        "yourdiff": "Diferenz",
        "copyrightwarning": "Ten per piasè present che tüt i cuntribüzión a {{SITENAME}} se cunsideren daa sota una licenza $2 (varda $1 per savèn püssee).\nSe te vöret minga che i tò test i poden vess mudifegaa e redistribüii d'una persona qualsessia senza nissüna limitazión, mandei minga a {{SITENAME}}<br />\nCunt el test che te mandet tì te deciaret anca che, sota la tò respunsabilità, che el test te l'hee scrivüü depertì 'me uriginal, o pür che l'è una cobia d'una funt de dumini pübligh o un'altra funt libera in manera cumpagna.<br />\n'''MANDA MINGA DEL MATERIAL CHE L'E' CUERT D'UN DIRIT D'AUTUR SENZA UTURIZAZIUN'''",
-       "protectedpagewarning": "'''Ocio: quela pagina chì l'è stada blucaa in manéra che dumá i dupradur cunt i privilegg de sysop i pören mudificàla.'''",
+       "protectedpagewarning": "'''Ocio: quela pagina chì l'è stada blucaa in manéra che dumá i dupradur cunt i privilegg de sysop i pören mudificàla.''' L'öltem element del register l'è riportàt ché sota per dà 'n riferimènt:",
        "semiprotectedpagewarning": "'''Nota:''' Quela pagina chì l'è stada blucada in manera che dumà i druvadur registraa i pören mudifegàla.\nL'ültima vus del register l'è mustrada chì de suta per riferiment:",
        "templatesused": "{{PLURAL:$1|Mudel|Mudej}} dopraa in quela pagina chì:",
        "templatesusedpreview": "{{PLURAL:$1|Mudel|Mudej}} dopraa in quela pröva chì:",
+       "templatesusedsection": "{{PLURAL:$1|Mudel|Mudej}} dopraa in quela sezion chì:",
        "template-protected": "(prutegiüü)",
        "template-semiprotected": "(semi-prutegiüü)",
        "hiddencategories": "Quela pagina chì la fa part de {{PLURAL:$1|una categuria|$1 categurij}} scundüü:",
+       "nocreate-loggedin": "Te g'hét mìa 'l permès per creà pàgine nöe",
+       "sectioneditnotsupported-title": "Mudìfica dele sesiù mìa suportàda",
+       "sectioneditnotsupported-text": "La mudìfica de le sesiù l'è mìa suportàda en chèsta pàgina.",
+       "permissionserrors": "Erur de permès",
+       "permissionserrorstext": "Te gh'hee minga i permiss per fall, per {{PLURAL:$1|quel motiv chì |quij motiv chì}}:",
        "permissionserrorstext-withaction": "Te gh'hee minga i permiss per $2, per {{PLURAL:$1|quela resón chì |quij resón chì}}:",
        "recreate-moveddeleted-warn": "'''Ocio: te see adree a creà turna una pagina che l'eva giamò stada scancelada.'''\n\nCuntrulee se l'è propi el cas de cuntinuà a mudifegà 'sta pagina chì.\nPer cumudità, la lista di scancelament e di San Martìn l'è ripurtada chi de suta:",
+       "log-fulllog": "Arda el log compléto",
+       "edit-gone-missing": "Se pöl mìa agiurnà la pàgina.\nPar che la sàpe stàda scancelàda.",
+       "edit-conflict": "Cunflit de edisiù",
+       "postedit-confirmation-created": "La pàgina l'è stàda creàda.",
+       "postedit-confirmation-restored": "La pàgina l'è stàda ripristinàda.",
+       "postedit-confirmation-saved": "La tò mudìfica l'è stàda memurizàda.",
+       "edit-already-exists": "Se pöl mìa creà 'na pàgina nöa.\nLa gh'è zamò.",
+       "defaultmessagetext": "Test standard",
+       "content-model-wikitext": "wikitest",
+       "content-model-text": "test normal",
+       "content-model-javascript": "JavaScript",
+       "content-model-css": "CSS",
        "undo-summary": "Scancelada la mudifega $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|Ciciarada]])",
        "viewpagelogs": "Varda i register de quela pagina chì",
+       "currentrev": "Versiù de adès",
        "currentrev-asof": "Versión curenta di $1",
        "revisionasof": "Revisión $1",
+       "revision-info": "Versiù del $4 a le $5 de $2",
        "previousrevision": "←Versión püssee vegia",
        "nextrevision": "Revisión püssee növ →",
        "currentrevisionlink": "Varda la revisión curenta",
        "cur": "Cur",
        "next": "pròssim",
        "last": "ültima",
+       "page_first": "prìma",
+       "page_last": "öltema",
        "histlegend": "Selezion di diferenz: seleziuná i balitt di version de cumpará e pö schisciá ''enter'' upüra al buton in scima ala tabèlina.<br />\nSpiegazzion di símbul: (cur) = diferenza cun la version curenta, (ültima) = diferenza cun l'ültima version, M = mudifega piscinína.",
        "history-fieldset-title": "Varda la cronolugia",
+       "history-show-deleted": "Apéna chèi scancelàcc",
        "histfirst": "Püssee vegg",
        "histlast": "Püssee növ",
+       "historysize": "({{PLURAL:$1|1 byte|$1 bytes}})",
+       "historyempty": "(öda)",
+       "history-feed-title": "Crunulugìa",
+       "history-feed-description": "Crunulogia de la pàgina sö la wiki",
+       "history-feed-item-nocomment": "$1 el $2",
        "rev-deleted-text-permission": "Questa version de la pagina l'è stada '''scancelada'''.\nPer infurmazion, varda ind el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} register di scancelament].",
        "rev-delundel": "fa vidè/scund",
+       "rev-showdeleted": "Fà ved",
+       "revdelete-show-file-submit": "Sé",
+       "revdelete-hide-text": "Test de la versiù",
+       "revdelete-hide-image": "Scont el contenùto de l'archivi",
+       "revdelete-hide-name": "Scont l'asiù e 'l sò ogèt",
+       "revdelete-hide-comment": "Ogèt o mutìf de la mudìfica",
+       "revdelete-hide-user": "Nom o indirìs IP de l'autùr",
+       "revdelete-radio-same": "(càmbia mìa)",
+       "revdelete-radio-set": "Scond",
+       "revdelete-radio-unset": "Fà vèt",
+       "revdelete-log": "Mutìf:",
        "revdel-restore": "Cambia la visibilità",
+       "pagehist": "Crunulugia de la pagina",
+       "deletedhist": "Crunulugìa scancelàda",
+       "revdelete-otherreason": "Alter resón/spiegazión",
+       "revdelete-reasonotherlist": "Alter mutiv",
        "revdelete-edit-reasonlist": "Mudifega i mutiv del scancelament",
+       "mergehistory-submit": "Önés le versiù",
+       "mergehistory-reason": "Mutìf:",
+       "pagemerge-logentry": "el g'ha ünìt [[$1]] a [[$2]] (reviziù 'nfìna al $3)",
        "revertmerge": "Scancela i ünión",
        "history-title": "Cronolugia di mudifegh de \"$1\"",
        "lineno": "Riga $1:",
        "notextmatches": "La vus che t'hee ciamaa la gh'ha minga una curispundenza in del test di paginn.",
        "prevn": "precedent {{PLURAL:$1|$1}}",
        "nextn": "pròssim {{PLURAL:$1|$1}}",
+       "prevn-title": "{{PLURAL:$1|Rezültàt precedènt|$1 rezültàcc precedèncc}}",
+       "nextn-title": "Next $1 {{PLURAL:$1|result|results}}",
        "viewprevnext": "Vidé ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-new": "'''Trà in pee la pagina \"[[:$1]]\" ins quel sit chì!'''",
        "searchprofile-articles": "Paginn de cuntegnüü",
        "searchprofile-advanced": "Avanzaa",
        "searchprofile-articles-tooltip": "Cerca in $1",
        "searchprofile-project-tooltip": "Cerca in $1",
+       "searchprofile-images-tooltip": "Sérca l'archivi",
        "searchprofile-everything-tooltip": "Cerca depertüt (anca int i paginn de discüssion)",
        "searchprofile-advanced-tooltip": "Cerca int i namespace persunalizaa",
        "search-result-size": "$1 ({{PLURAL:$2|1 parola|$2 paroll}})",
+       "search-result-score": "Atinènsa: $1%",
        "search-redirect": "(redirezión $1)",
        "search-section": "(sessión $1)",
        "search-suggest": "Vurivet dì: $1",
        "search-interwiki-caption": "Pruget fredej",
-       "search-interwiki-default": "$1 resültaa",
+       "search-interwiki-default": "Rezültàcc de $1:",
        "search-interwiki-more": "(püssee)",
+       "search-relatedarticle": "Rezültàcc corelàcc",
+       "searcheverything-enable": "Sérca en töcc i namespaces",
+       "searchrelated": "Corelàcc",
+       "searchall": "tücc",
        "powersearch-legend": "Recerca avanzada",
        "powersearch-ns": "Cerca in di namespace:",
+       "powersearch-togglelabel": "Selesiùna:",
+       "powersearch-toggleall": "Töcc",
+       "powersearch-togglenone": "Nisü",
        "preferences": "Preferenz",
-       "mypreferences": "i mè preferenz",
+       "mypreferences": "Preferenz",
        "prefs-edits": "Quantità de mudifegh faa:",
        "prefs-skin": "Aspett de l'interfacia",
-       "datedefault": "Nissüna preferenza",
-       "prefs-personal": "Carateristich dal dupradur",
+       "skin-preview": "Anteprìma",
+       "datedefault": "Nesöna preferènsa",
+       "prefs-labs": "Funsiù sperimentài",
+       "prefs-user-pages": "Pàgine ütènt",
+       "prefs-personal": "Prufil ütènt",
        "prefs-rc": "Cambiament recent",
        "prefs-watchlist": "Paginn tegnüü d'ögg",
        "prefs-watchlist-days": "Nümer de dì da mustrà ind i paginn da tegn d'ögg:",
+       "prefs-watchlist-days-max": "Màsimo $1 {{PLURAL:$1|dé|dé}}",
        "prefs-watchlist-edits": "Nümer de mudifegh da mustrà cunt i fünzión avanzaa:",
        "prefs-misc": "Ólter",
-       "prefs-rendering": "Aparenza",
+       "prefs-resetpass": "Càmbia la password",
+       "prefs-changeemail": "Càmbia l'indirìs e-mail",
+       "prefs-setemail": "Defenés l'indirìs e-mail",
+       "prefs-email": "Upsiù e-mail",
+       "prefs-rendering": "Aspèt",
        "saveprefs": "Tegn i mudifech",
-       "restoreprefs": "Ristabiliss i impustazión de default",
-       "prefs-editing": "Mudifich",
+       "restoreprefs": "Ristabiliss i impustazión de default (en töte le sesiù)",
+       "prefs-editing": "Cazèla de mudìfica",
        "rows": "Riich:",
        "columns": "Culònn:",
        "searchresultshead": "Cerca",
+       "stub-threshold-disabled": "Dezativàt",
        "recentchangescount": "Nümer de mudifegh da mustrà per ''default'':",
        "savedprefs": "I preferenz hinn stai salvaa.",
-       "timezonelegend": "Lucalitaa",
-       "localtime": "Urari lucaal",
-       "servertime": "Urari dal sèrver",
-       "guesstimezone": "Catá l urari dal sèrver",
+       "timezonelegend": "Füs oràre:",
+       "localtime": "Ura local:",
+       "timezoneuseserverdefault": "Dòpra l'ura predefinìda de la wiki ($1)",
+       "timezoneuseoffset": "Oter (specificà la diferènsa)",
+       "servertime": "Ura dal sèrver",
+       "guesstimezone": "Dòpra l'ura del browser",
+       "timezoneregion-africa": "Africa",
+       "timezoneregion-america": "America",
+       "timezoneregion-antarctica": "Antartich",
+       "timezoneregion-arctic": "Artich",
+       "timezoneregion-asia": "Asia",
+       "timezoneregion-atlantic": "Oceano Atlantich",
+       "timezoneregion-australia": "Australia",
+       "timezoneregion-europe": "Europa",
+       "timezoneregion-indian": "Ocean Indian",
+       "timezoneregion-pacific": "Ocean Pacifich",
        "allowemail": "Permètt ai altar üteent də cuntatamm par email",
-       "prefs-searchoptions": "Upzión de ricerca",
-       "defaultns": "Tröva sempar in di caamp:",
+       "prefs-searchoptions": "Ricerca",
+       "prefs-namespaces": "Namespaces",
+       "defaultns": "Sedenò, serca en chèsti namespaces:",
+       "default": "predefinit",
        "prefs-files": "Archivi",
+       "prefs-custom-css": "CSS personalizàt",
+       "prefs-custom-js": "JavaScript personalizat",
+       "prefs-common-css-js": "CSS/JavaScript cundivis per töte le skin:",
        "prefs-emailconfirm-label": "Cunferma de l'e-mail:",
        "youremail": "E-mail",
-       "username": "Nom dal dovrée",
-       "uid": "ID del druvadur:",
-       "prefs-memberingroups": "Mémber {{PLURAL:$1|del grüp|di grüp}}:",
-       "prefs-registration": "Registraa dal:",
+       "username": "{{GENDER:$1|Nom ütent}}:",
+       "prefs-memberingroups": "{{GENDER:$2|Mèmber}} {{PLURAL:$1|del grupo|dei grupi}}:",
+       "prefs-registration": "Data de registrasiù:",
        "yourrealname": "Nomm:",
        "yourlanguage": "Lengua:",
+       "yourvariant": "Variant de la lèngua:",
+       "prefs-help-variant": "La variant o grafia co la qual te preferéset véder le pàgine de la wiki.",
        "yournick": "Suranomm:",
        "prefs-help-signature": "I cument ind i paginn de discüssion i gh'han de vess firmaa cun \"<nowiki>~~~~</nowiki>\" che 'l sarà pö cunvertì int la tua firma cun tacada la data e l'ura.",
        "yourgender": "Géner:",
        "prefs-help-email": "L'e-mail a l'è mia obligatòri, però al permet da mandàv una ciav noeva in cas che ve la desmenteghé. A podé apó scernì da lassà entrà i alter dovrat in contat con violter senza da busogn da svelà la vosta identità.",
        "prefs-info": "Infurmazion de bas",
        "prefs-i18n": "Internaziunalizazión",
-       "prefs-advancedrendering": "Fünzión avanzaa",
+       "prefs-signature": "Fìrma",
+       "prefs-dateformat": "Furmàt de la data",
+       "prefs-timeoffset": "Ure de diferensa",
+       "prefs-advancedediting": "Upsiù generài",
+       "prefs-editor": "Editur",
+       "prefs-preview": "Anteprìma",
+       "prefs-advancedrc": "Upsiù avansàde",
+       "prefs-advancedrendering": "Upsiù avansàde",
+       "prefs-advancedsearchoptions": "Upsiù avansàde",
+       "prefs-advancedwatchlist": "Upsiù avansàde",
+       "prefs-displayrc": "Upsiù de visualizasiù",
+       "prefs-displaywatchlist": "Upsiù de visualizasiù",
+       "prefs-tokenwatchlist": "Token",
+       "prefs-diffs": "Diferènse",
        "userrights": "Gestión di dirit di druvadur",
        "userrights-lookup-user": "Gestion di grüp di druvaduu",
        "userrights-user-editname": "Butée dent un nom da dovrat",
        "group-user": "Druvadur",
        "group-autoconfirmed": "Druvadur che i s'henn cunvalidaa deperlur",
        "group-sysop": "Aministradur",
-       "group-user-member": "Dovratt",
+       "group-all": "(töcc)",
+       "group-user-member": "{{GENDER:$1|ütènt}}",
+       "group-autoconfirmed-member": "{{GENDER:$1|ütènt autoconvalidat|ütènta autoconvalidada|ütent/a autoconvalidat/da}}",
+       "group-bot-member": "{{GENDER:$1|bot}}",
+       "group-sysop-member": "{{GENDER:$1|amministradur|amministradura|amministradur/ra}}",
        "grouppage-user": "{{ns:project}}:Druvadur",
+       "grouppage-autoconfirmed": "{{ns:project}}:Ütèncc autoconvalidàcc",
+       "grouppage-bot": "{{ns:project}}:Bots",
        "grouppage-sysop": "{{ns:project}}:Aministradur",
        "right-edit": "Edita pàgini",
        "right-createaccount": "Crea cünt de dovratt bej-e növ",
-       "newuserlogpage": "Rrgister di druvat növ",
+       "newuserlogpage": "Register di ütent növ",
        "rightslog": "Dirit di druvat",
        "action-edit": "mudifega quela pagina chì",
+       "action-movefile": "Spòsta chèsto archivi",
+       "action-upload": "Càrga sö chèsto archivi",
+       "action-reupload": "surascrìf chèsto archivi (che l'ezìste zà)",
+       "action-sendemail": "mànda e-mail",
        "nchanges": "$1 {{PLURAL:$1|mudifega|mudifegh}}",
+       "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|de l'öltima vìzita}}",
+       "enhancedrc-history": "crunulugìa",
        "recentchanges": "Cambiament recent",
        "recentchanges-legend": "Upzión ültem mudifegh",
        "recentchanges-summary": "In quela pagina chì a gh'è i cambiament püssee recent al cuntegnüü del sit.",
        "recentchanges-label-minor": "Quela chì l'è una mudifega piscinina.",
        "recentchanges-label-bot": "Quela mudifega chì l'ha fada un bot",
        "recentchanges-label-unpatrolled": "Quela mudifega chì a l'è stada mimga anmò verificada.",
-       "recentchanges-legend-newpage": "$1 - pagina növa",
+       "recentchanges-legend-newpage": "(arda apò [[Special:NewPages|la lìsta de le pàgine nöe]])",
        "rcnotefrom": "Chì de sota gh'è la lista di mudifegh de <b>$2</b> (fina a <b>$1</b>).",
        "rclistfrom": "Fà vidè i cambiament növ a partì de $3 $2",
        "rcshowhideminor": "$1 i mudifegh piscinín",
+       "rcshowhideminor-show": "Fà vèd",
+       "rcshowhideminor-hide": "Scond",
        "rcshowhidebots": "$1 i bot",
+       "rcshowhidebots-show": "Fà ved",
+       "rcshowhidebots-hide": "Scond",
        "rcshowhideliu": "$1 i dupradur cunetüü",
+       "rcshowhideliu-show": "Fà ved",
+       "rcshowhideliu-hide": "Scond",
        "rcshowhideanons": "$1 i dupradur anònim",
+       "rcshowhideanons-show": "Fà ved",
+       "rcshowhideanons-hide": "Scond",
+       "rcshowhidepatr-show": "Fà ved",
+       "rcshowhidepatr-hide": "Scond",
        "rcshowhidemine": "$1 i mè mudifich",
+       "rcshowhidemine-show": "Fà ved",
+       "rcshowhidemine-hide": "Scond",
        "rclinks": "Fà vedé i ültim $1 cambiament in di ültim $2 dì<br />$3",
        "diff": "dif",
        "hist": "stòria",
        "minoreditletter": "m",
        "newpageletter": "N",
        "boteditletter": "b",
+       "rc_categories_any": "Töcc",
+       "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} dopo la mudìfica",
        "newsectionsummary": "/* $1 */ sezión növa",
-       "rc-enhanced-expand": "Varda i detali (al vör el JavaScript)",
+       "rc-enhanced-expand": "Fà ved i detali",
        "rc-enhanced-hide": "Scund i detali",
+       "rc-old-title": "creàda en urìgin come \"$1\"",
        "recentchangeslinked": "Cambiament culegaa",
        "recentchangeslinked-feed": "Cambiament culegaa",
        "recentchangeslinked-toolbox": "Cambiament culegaa",
        "recentchangeslinked-summary": "Questa chì a l'è una lista di paginn faa de poch temp ai paginn culigaa a quela specifegada (o a member d'una categuria specifegada).\nI paginn dent in [[Special:Watchlist|la lista ch'it ten-e sot euj]] i resten marcaa in \"grasset\"",
        "recentchangeslinked-page": "Nom de la pagina:",
        "recentchangeslinked-to": "Fà vidè dumà i mudifegh ai paginn culigaa a quela dada",
-       "upload": "Carga sü un file",
+       "upload": "Carga sü un archivi",
        "uploadbtn": "Carga sü",
        "uploadnologin": "Minga cuness",
+       "uploadnologintext": "Per cargà 'n archivi bezògna $1.",
        "uploadlogpage": "Log di file caregaa",
+       "filename": "Nom de l'archivi",
        "filedesc": "Sumari",
        "fileuploadsummary": "Sumari:",
        "ignorewarnings": "Ignora tücc i avertimeent",
        "largefileserver": "Chel archivi-chí al è püssee graant che ul serviduur al sía cunfigüraa da permett.",
+       "savefile": "Salva l'archivi",
        "uploadedimage": "l'ha cargaa \"[[$1]]\"",
        "sourcefilename": "Nomm da l'archivi surgeent:",
        "destfilename": "Nomm da l'archivi da destinazziun:",
        "imgfile": "archivi",
        "listfiles": "Listá i imàgin",
-       "listfiles_date": "Dada",
+       "listfiles_thumb": "Miniadüra",
+       "listfiles_date": "Data",
        "listfiles_name": "Nomm",
-       "listfiles_user": "Dovratt",
-       "filehist": "Storia de l'archivi",
-       "filehist-help": "Schiscia in sü un grüp data/ura per vidè el file cumè che'l se presentava in quel mument là",
+       "listfiles_user": "Ütènt",
+       "listfiles_size": "Dimensiù en byte",
+       "listfiles_description": "Descrisiù",
+       "listfiles_count": "Versiù",
+       "listfiles-latestversion": "Versiù de adès",
+       "listfiles-latestversion-yes": "Sé",
+       "listfiles-latestversion-no": "Nò",
+       "file-anchor-link": "Archivi",
+       "filehist": "Crunulugia de l'archivi",
+       "filehist-help": "Schiscia in sü un grüp data/ura per vidè l'archivi cumè che'l se presentava in quel mument là",
        "filehist-deleteall": "scancela tüt",
        "filehist-deleteone": "Scancèla",
        "filehist-revert": "Butar torna 'me ch'al era",
        "filehist-datetime": "Data/Ura",
        "filehist-thumb": "Miniadüra",
        "filehist-thumbtext": "Miniadüra de la versión di $1",
+       "filehist-nothumb": "Nesöna miniadüra",
        "filehist-user": "Dovrat",
        "filehist-dimensions": "Dimensión",
-       "filehist-comment": "Uget",
-       "imagelinks": "Ligamm al file",
+       "filehist-filesize": "Dimensiù de l'archivi",
+       "filehist-comment": "Comènt",
+       "imagelinks": "Üzo de l'archivi",
        "linkstoimage": "{{PLURAL:$1|Quela pagina chì la gh'ha |$1 Quij paginn chì i gh'hann}} ligam al file:",
        "sharedupload": "Quel archivi chì al vegn de $1 e'l pö vess dupraa da alter pruget",
        "sharedupload-desc-here": "Quel ''file'' chì al vegn de $1 e 'l pö vess druvaa da alter pruget.\nLa descrizión sura la sua [$2 pagina de descrizión del file] l'è mustrada chì suta.",
        "uploadnewversion-linktext": "Carga una versión növa de quel file chì",
        "filerevert-intro": "Te seet adree a bütà turna el file '''[[Media:$1|$1]]''' a la [$4 version del $2, $3].",
-       "filerevert-comment": "Uget:",
-       "filerevert-defaultcomment": "Bütada turna la versión di $2, $1",
+       "filerevert-comment": "Mutif:",
+       "filerevert-defaultcomment": "Ripristinàt la versiù del $2, $1",
+       "filerevert-submit": "Riprìstina 'mè che l'era",
+       "filerevert-success": "'''L'archivi [[Media:$1|$1]]''' l'è stat ripristinat a la [$4 versiù del $2, $3].",
        "filedelete": "Scancela $1",
-       "filedelete-legend": "Scancela 'l file",
+       "filedelete-legend": "Scancela l'archivi",
        "filedelete-intro-old": "Te seet adree a scancelà la versión de '''[[Media:$1|$1]]''' del [$4 $2, $3].",
-       "filedelete-comment": "Reson:",
+       "filedelete-comment": "Mutif:",
+       "filedelete-submit": "Scancèla",
+       "filedelete-success": "L'archivi '''$1''' l'è stat scancelàt.",
+       "filedelete-success-old": "La versiù de l'archivi '''[[Media:$1|$1]]''' del $2, $3  l'è stada scancelada.",
        "filedelete-otherreason": "Alter resón/spiegazión:",
        "filedelete-reason-otherlist": "Óltra resón",
        "filedelete-reason-dropdown": "*I sòlit resón per i scancelament\n** Viulazión de copyright\n** File dubi",
        "unusedtemplates": "Templat mia druvaa",
        "unusedtemplateswlh": "alter culegament",
        "randompage": "Una pagina a cas",
+       "randomincategory-selectcategory-submit": "Và",
        "randomredirect": "Un redirect a cas",
        "statistics": "Statistich",
        "statistics-header-pages": "Statistegh di paginn",
        "statistics-users": "[[Special:ListUsers|Druvadur]] registraa",
        "statistics-users-active": "Druvadur ativ",
        "statistics-users-active-desc": "Druvadur che i hann faa un'azión int {{PLURAL:$1|l'ültem dì|i ültem $1 dì}}",
+       "pageswithprop-submit": "Và",
        "doubleredirects": "Redirezziún dópi",
        "brokenredirects": "Redirezziún interótt",
+       "brokenredirects-edit": "mudifega",
+       "brokenredirects-delete": "scancèla",
+       "withoutinterwiki-legend": "Prefìs",
+       "withoutinterwiki-submit": "Fà ved",
        "nbytes": "$1 {{PLURAL:$1|byte|bytes}}",
        "nmembers": "$1 {{PLURAL:$1|element|element}}",
        "uncategorizedpages": "Paginn ch'i gh'hann mía de categuria",
        "shortpages": "Paginn püssee cürt",
        "longpages": "Paginn püssee lungh",
        "deadendpages": "Pagin senza surtida",
+       "protectedpages-noredirect": "Scond i redirezion (redirect)",
        "listusers": "Lista di dupradur registraa",
        "listusers-editsonly": "Mustra dumà i dupradur cun di mudifegh",
        "listusers-creationsort": "Cavèzza per data de creazión",
        "booksources": "Surgent per i lìber",
        "booksources-search-legend": "Cerca i fónt di liber",
        "booksources-go": "Va",
-       "specialloguserlabel": "Üteent:",
-       "speciallogtitlelabel": "Titul:",
+       "specialloguserlabel": "Ütent:",
+       "speciallogtitlelabel": "Asiù fàda sö:",
        "log": "Register",
        "logempty": "El log l'è vöj.",
        "allpages": "Tücc i pagin",
-       "alphaindexline": "de $1 a $2",
        "prevpage": "Pagina prima ($1)",
        "allpagesfrom": "Fàm vedè i paginn a partì da:",
        "allpagesto": "Fàm ved i paginn fín a:",
        "allarticles": "Tucc i artícoj",
        "allpagessubmit": "Inanz",
        "allpagesprefix": "Varda i pagin ch'i scumenza per:",
+       "allpages-hide-redirects": "Scond i bot",
        "categories": "Categurij",
        "deletedcontributions": "Cuntribüziun scancelaa",
        "deletedcontributions-title": "Cuntribüziun scancelaa",
-       "linksearch": "Ligam de föra",
+       "linksearch": "Sérca ligam de föra",
        "listusersfrom": "Fàm vedè i dupradur a partì da:",
+       "listusers-submit": "Fà ved",
        "activeusers-from": "Fàm vedè i dupradur a partì da:",
+       "activeusers-hidebots": "Scond i bot",
        "listgrouprights": "Dirit del grüp di druvat",
+       "listgrouprights-rights": "Dirìcc",
+       "listgrouprights-helppage": "Help:Diricc del grupo",
        "listgrouprights-members": "(Lista di member)",
        "emailuser": "Manda un email a quel druvadur chì",
        "emailsent": "Messagg spedii",
        "watch": "Tegn d'öcc",
        "watchthispage": "Tegn d'ögg quela pagina chì",
        "unwatch": "Tegn pü d'ögg",
+       "unwatchthispage": "Desmèt de tègner d'öcc",
        "watchlist-details": "{{PLURAL:$1|$1 pagina|$1 paginn}} tegnüü sot ögg, fö che i paginn de discüssión.",
        "wlshowlast": "Fa vidé i ültim $1 ur $2 dì $3",
        "watchlist-options": "Upzión lista d'ussevazión",
        "enotif_body": "Cara $WATCHINGUSERNAME,\n\nLa pàgina $PAGETITLE del sit {{SITENAME}} a l'è stada $CHANGEDORCREATED del $PAGEEDITDATE da $PAGEEDITOR, varda $PAGETITLE_URL per la version curenta.\n\n$NEWPAGE\n\nSumari de la mudifega, metüü denter da l'autur: $PAGESUMMARY $PAGEMINOREDIT\n\nPer cuntatà l'autur:\nper e-mail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nGhe sarà pü mía de nutificazion in cas d'una quaj oltra mudifega, a manch che te veet nò a visità la pàgina in questión.\nDe surapü, te pö mudifegà l'impustazion de l'avis de nutifega per quij paginn che i henn ins la lista di paginn che te tegn d'ögg.\n\n             'L to sistema de nutifega da {{SITENAME}}\n\n--\nPer mudifegà l'impustazión de la lista di paginn che te tegn d'ögg, varda\n{{canonicalurl:Special:Watchlist/edit}}\n\nPer fà di cumünicazion de servizzi e per cercà jüt:\n$HELPPAGE",
        "changed": "cambiaa",
        "deletepage": "Scancela la pagina",
+       "confirm": "Cunférma",
        "excontent": "'l cuntegnüü l'eva: '$1'",
        "excontentauthor": "'l cuntegnüü l'eva: '$1' (e l'ünich cuntribüdur l'eva staa '[[Special:Contributions/$2|$2]]')",
        "exbeforeblank": "Inanz da vess svujaa 'l cuntegnüü l'eva: '$1'",
-       "historywarning": "'''Ocio!''' La pagina che a sii adree a scancelà la gh'a una stòria cun $1 {{PLURAL:$1|revisión|revisionn}}:",
+       "delete-confirm": "Scancèla \"$1\"",
+       "delete-legend": "Scancèla",
+       "historywarning": "'''Ocio!''' La pagina che a sii adree a scancelà la gh'a una crunulugìa cun presapoch $1 {{PLURAL:$1|revision|revision}}:",
        "confirmdeletetext": "A te see lì per scancelà una pagina cun tüta la sua crunulugìa.\nPer piasè, dà la cunferma che te gh'hee intenzión de andà inanz cun 'l scancelament, che te see al curent di cunseguenz, e che te see adree a fàl segónd i regulament de [[{{MediaWiki:Policy-url}}]].",
        "actioncomplete": "Aziun cumpletada",
+       "actionfailed": "Asiù falìda",
        "deletedtext": "La pagina \"$1\" l'è stada scancelada. Varda el $2 per una lista di ültim scancelaziun.",
        "dellogpage": "Register di scancelament",
        "deletionlog": "log di scancelament",
        "protect-title": "Prutezziún da \"$1\"",
        "prot_1movedto2": "[[$1]] spustaa in [[$2]]",
        "protect-legend": "Cunferma de blocch",
-       "protectcomment": "Reson:",
-       "protectexpiry": "Scadenza:",
+       "protectcomment": "Mutìf:",
+       "protectexpiry": "Scadènsa:",
        "protect_expiry_invalid": "Scadenza pü bona",
        "protect_expiry_old": "Scadenza giamò passada",
        "protect-text": "Chì se pö vardà e müdà el nivel de prutezión de la pagina '''$1'''.",
        "undeletebtn": "Rimett a post",
        "undeletelink": "Varda/büta indree",
        "undeletedrevisions": "{{PLURAL:$1|1 revision|$1 versiun}} rimetüü a post",
+       "undelete-search-prefix": "Fà ved i paginn che scumenzen per:",
        "namespace": "Namespace:",
        "invert": "Invertì la seleziòn",
        "blanknamespace": "(Principal)",
        "ipusubmit": "Tö via 'stu bloch chì",
        "unblocked": "[[User:$1|$1]] l'è staa desblucaa",
        "ipblocklist": "Adrèss IP e druvàt blucaa",
+       "blocklist-reason": "Mutìf",
        "infiniteblock": "per semper",
        "expiringblock": "el finiss el $1 a $2",
        "anononlyblock": "dumà i anònim",
        "unblocklink": "desbloca",
        "change-blocklink": "cambia bloch",
        "contribslink": "cuntribüzión",
+       "emaillink": "mànda e-mail",
        "blocklogpage": "Log di blocch",
        "blocklogentry": "l'ha blucaa [[$1]] per un temp de $2 $3",
        "blocklogtext": "Quel chì l'è el register di bloch e desbloch di druvadur.\nI indirizz IP che i henn staa blucaa utumaticament i henn mía cumpres int la lista.\nVarda el [[Special:BlockList|register di IP blucaa]] per la lista de tüt i bloch uperaziunaj ativ.",
        "block-log-flags-nocreate": "blucada la creazión de cünt növ",
        "movepagetext": "Duvraant la büeta chí-da-sota al re-numinerà una pàgina, muveent tüta la suva stòria al nomm nööf. Ul vecc títul al deventarà una pàgina da redirezziun al nööf títul. I liamm a la vegja pàgina i sarà mia cambiaa: assürévas da cuntrulá par redirezziun dopi u rumpüüt.\nA sii respunsàbil da assüráss che i liamm i sigüta a puntá intúe i è süpunüü da ná.\nNutii che la pàgina la sarà '''mia''' muvüda se a gh'è gjamò una pàgina al nööf títul, a maanch che la sía vöja, una redirezziun cun nissüna stòtia d'esizziun passada. Cheest-chí al signífega ch'a pudii renuminá indrée\nuna pàgina intúe l'évuf renuminada via par eruur, e che vüü pudii mia surascriif una pàgina esisteent.\n\n\n<b>ATENZIUN!</b>\nCheest-chí al pöö vess un canbi dràstegh e inaspetaa par una pàgina pupülara: par piasée assürévas ch'a ii capii i cunsegueenz da cheest-chí prima da ná inaanz.",
        "movepagetalktext": "La pagina de discüssión tacada a quel articul chì, la sarà spustada in manera utumatega insema a l'articul, '''asca in quij cas chì:'''\n* quand che la pagina a l'è spustada intra namespace diferent\n* se in del növ titul al gh'è giamò una pagina de discüssiun (minga vöja)\n* el quadret de cunferma chì de sota a l'è staa deseleziónaa.\nIn quij cas chì, se'l var la pena, ghe sarà de spustà a man i infurmazión de la pagina de discüssión.",
-       "movearticle": "Möva l'articul",
+       "movearticle": "Spòsta la pàgina:",
        "newtitle": "Titul növ:",
        "move-watch": "Gionta chela pagina chí ai pàgin à tegní d'œucc.",
        "movepagebtn": "Sposta quela pagina chì",
        "articleexists": "Una pagina che la se ciama cumpagn la gh'è giamò, opüra el nom che hii scernüü al va minga ben. <br />\nChe 'l scerna, per piasè, un nom diferent per quel articul chì.",
        "movetalk": "Sposta anca la pagina de discüssión",
        "movelogpage": "Register di San Martin",
-       "movereason": "Resón:",
-       "revertmove": "büta indree a 'mè che l'era",
-       "delete_and_move": "Scancelá e mööf",
+       "movereason": "Mutìf:",
+       "revertmove": "Riprìstina 'mè che l'era",
+       "delete_and_move": "Scancèla e möf",
+       "delete_and_move_confirm": "Sé, surascrìf la pàgina che gh'è zà",
        "export": "Espurtá pagin",
        "allmessages": "Tücc i messacc dal sistéma",
+       "allmessagesname": "Nòm",
        "allmessagesdefault": "Test standard",
        "allmessagescurrent": "Test curent",
        "allmessagestext": "Chesta chí l è una lista də messácc də sistema dispunibil indal MediaWiki: namespace.",
+       "allmessages-filter-legend": "Fìlter",
+       "allmessages-filter-unmodified": "Mìa mudificàcc",
+       "allmessages-filter-all": "Töcc",
+       "allmessages-filter-modified": "Mudificàcc",
+       "allmessages-prefix": "Fìltra per prefìs:",
+       "allmessages-language": "Lèngua:",
+       "allmessages-filter-submit": "Và",
        "thumbnail-more": "Ingrandí",
        "import": "Impurtá di pagin",
        "tooltip-pt-userpage": "La tò pagina druvat",
        "tooltip-rollback": "El \"Rollback\" al scancela cunt un clich i mudifigh faa a quela pagina chì de l'ültem cuntribüdur",
        "tooltip-undo": "\"Undo\" al scancela questa mudifega chì e la derv la finestra de mudifega in manera de vardà prima. La te lassa giuntàgh una spiegazión de la mudifega.",
        "siteuser": "{{SITENAME}} ütent $1",
+       "pageinfo-contentpage-yes": "Sé",
+       "pageinfo-protect-cascading-yes": "Sé",
        "deletedrevision": "Scancelada la revision vegia de $1.",
        "previousdiff": "← Diferenza püssee vegia",
        "nextdiff": "Mudifega püssee növa →",
        "svg-long-desc": "archivi in furmaa SVG, dimensión nominaj  $1 × $2 pixel, dimensión de l'archivi: $3",
        "show-big-image": "Versión a resolüzión volta",
        "newimages": "Espusizión di imàgin növ",
+       "newimages-legend": "Fìltra",
+       "noimages": "Gh'è negót de éder.",
        "ilsubmit": "Truvá",
+       "bydate": "per data",
        "bad_image_list": "El furmaa a l'è quest chì:\n\nSe tegnen bón dumà i list póntaa (i righ che scumincen per *).\nEl prim ligam de ogni riga la gh'ha de vess un ligam a un file minga desideraa.\nI ligam che i vegnen dopu, in sü l'istessa riga, i vegnen cónsideraa di ecezión (che'l vör dì paginn induè che 'l file se'l pö riciamà in manera nurmala).",
        "metadata": "Metadat",
        "metadata-help": "Quel file chì al gh'ha dent di infurmazión adiziunaj, che l'è prubabil che j'ha giuntaa la fotocamera o 'l scanner dupraa per fàl o digitalizàl. Se el file a l'è staa mudifegaa, un quajvün di detali i pudarien curespund pü ai mudifegh faa.",
        "confirmemail_sent": "Ul mesacc da cunfermazziún l è staa mandaa.",
        "confirmemail_success": "'L voster indirizz e-mail l'è staa cunfermaa: adess a pudii druvà la wiki.",
        "confirmemail_loggedin": "Adess 'l voster indirizz e-mail l'è staa cunfermaa",
+       "confirm_purge_button": "Cunferma",
+       "confirm-watch-button": "OK",
+       "imgmultigo": "Và!",
        "autosumm-blank": "Pagina svujada",
        "watchlisttools-view": "Varda i mudifegh impurtant",
        "watchlisttools-edit": "Varda e mudifega la lista di paginn che te tegnet sut ögg",
        "watchlisttools-raw": "Mudifega la lista in furmaa test",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ciciarade]])",
        "version": "Versiun",
-       "specialpages": "Paginn special"
+       "specialpages": "Paginn special",
+       "tags-active-yes": "Sé",
+       "tags-active-no": "Nò",
+       "tags-edit": "mudìfica",
+       "rightsnone": "(nisü)"
 }
index 189cc1e..9bb0619 100644 (file)
        "excontent": "содржината беше: '$1'",
        "excontentauthor": "содржината беше: '$1' (и единствениот автор беше '$2')",
        "exbeforeblank": "содржината пред бришењето беше: '$1'",
-       "delete-confirm": "Ð\98збÑ\80иÑ\88и „$1“",
+       "delete-confirm": "Ð\91Ñ\80иÑ\88еÑ\9aе Ð½Ð° „$1“",
        "delete-legend": "Бришење",
        "historywarning": "'''Предупредување:''' Страницата што сакате да ја избришете има историја со околу $1 {{PLURAL:$1|преработка|преработки}}:",
        "confirmdeletetext": "На пат сте трајно да избришете страница заедно со нејзината историја.\nПотврдете дека имате намера да го направите ова, дека ги разбирате последиците од тоа и дека го правите во согласност со [[{{MediaWiki:Policy-url}}|правилата]].",
index 8ee8c40..3729789 100644 (file)
        "edit-gone-missing": "ഈ താൾ പുതുക്കുവാൻ സാധിക്കുകയില്ല.\nഇത് മായ്ക്കപ്പെട്ടതായി കാണുന്നു.",
        "edit-conflict": "തിരുത്തൽ സമരസപ്പെടായ്ക.",
        "edit-no-change": "ഇപ്പോഴുള്ള സ്ഥിതിയിൽ നിന്നു യാതൊരു മാറ്റവും ഇല്ലാത്തതിനാൽ താങ്കളുടെ തിരുത്തലുകൾ തിരസ്കരിക്കപ്പെട്ടിരിക്കുന്നു.",
+       "postedit-confirmation-created": "താൾ സൃഷ്ടിച്ചിരിക്കുന്നു.",
+       "postedit-confirmation-restored": "താൾ പുൻഃസ്ഥാപിച്ചിരിക്കുന്നു.",
        "postedit-confirmation-saved": "താങ്കളുടെ തിരുത്ത് സേവ് ചെയ്തിരിക്കുന്നു.",
        "edit-already-exists": "പുതിയ താൾ സൃഷ്ടിക്കാൻ കഴിഞ്ഞില്ല.\nതാൾ ഇപ്പോൾ തന്നെ നിലവിലുണ്ട്.",
        "defaultmessagetext": "സ്വതേയുള്ള സന്ദേശ എഴുത്ത്",
        "right-move": "താളുകൾ നീക്കുക",
        "right-move-subpages": "താളുകൾ അവയുടെ ഉപതാളുകളോടുകൂടീ നീക്കുക",
        "right-move-rootuserpages": "അടിസ്ഥാന ഉപയോക്തൃതാൾ മാറ്റുക",
+       "right-move-categorypages": "വർഗ്ഗ താളുകൾ മാറ്റുക",
        "right-movefile": "പ്രമാണങ്ങൾ നീക്കുക",
        "right-suppressredirect": "താളുകൾ മാറ്റുമ്പോൾ സ്രോതസ്സ് താളിൽ തിരിച്ചുവിടലുകൾ സൃഷ്ടിക്കാതിരിക്കുക",
        "right-upload": "പ്രമാണങ്ങൾ അപ്‌ലോഡ് ചെയ്യുക",
        "action-createpage": "താളുകൾ നിർമ്മിക്കുക",
        "action-createtalk": "സംവാദ താളുകൾ നിർമ്മിക്കുക",
        "action-createaccount": "ഈ ഉപയോക്തൃനാമം സൃഷ്ടിക്കുക",
+       "action-history": "ഈ താളിന്റെ നാൾവഴി കാണുക",
        "action-minoredit": "ഈ തിരുത്തൽ ഒരു ചെറിയ തിരുത്തലായി അടയാളപ്പെടുത്തുക",
        "action-move": "ഈ താൾ മാറ്റുക",
        "action-move-subpages": "ഈ താളും ഇതിന്റെ ഉപതാളുകളും നീക്കുക",
        "watchlistedit-raw-done": "താങ്കളുടെ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക പുതുക്കിയിരിക്കുന്നു.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 താൾ|$1 താളുകൾ}} പട്ടികയിലേക്കു ചേർത്തിരിക്കുന്നു:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 താൾ|$1 താളുകൾ}} പട്ടികയിൽ നിന്നു മാറ്റിയിരിക്കുന്നു:",
+       "watchlistedit-clear-title": "ശ്രദ്ധിക്കുന്നവയുടെ പട്ടിക ശൂന്യമാക്കുക",
+       "watchlistedit-clear-legend": "ശ്രദ്ധിക്കുന്നവയുടെ പട്ടിക ശൂന്യമാക്കുക",
+       "watchlistedit-clear-explain": "താങ്കൾ ശ്രദ്ധിക്കുന്നവയുടെ പട്ടികയിലെ എല്ലാ തലക്കെട്ടുകളും ഒഴിവാക്കിയിരിക്കുന്നു",
+       "watchlistedit-clear-titles": "തലക്കെട്ടുകൾ:",
        "watchlisttools-view": "ബന്ധപ്പെട്ട മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക",
        "watchlisttools-edit": "ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക കാണുക, തിരുത്തുക",
        "watchlisttools-raw": "താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയുടെ മൂലരൂപം തിരുത്തുക",
index fb2765c..4ba7af1 100644 (file)
        "permissionserrorstext": "Inti m'għandhekx dritt li tagħmel hekk, għar-{{PLURAL:$1|raġuni|raġunijiet}} segwenti:",
        "permissionserrorstext-withaction": "M'għandekx il-permessi neċessarji biex $2, minħabba r-{{PLURAL:$1|raġuni|raġunijiet}} segwenti:",
        "recreate-moveddeleted-warn": "'''Twissija: Inti qiegħed toħloq mill-ġdid paġna li ġiet imħassra.'''\n\nAċċerta ruħek jekk huwiex opportun li tkompli timmodifika din il-paġna.\nIr-reġistru tat-tħassir u tal-mixi huwa pprovdut għal aktar konvenjenza:",
-       "moveddeleted-notice": "Din il-paġna ġiet imħassra. Ir-reġistri tat-tħassir u tal-mixi għal din il-paġna huma provduti hawn taħt bħala referenza.",
+       "moveddeleted-notice": "Din il-paġna ġiet imħassra. \nIr-reġistri tat-tħassir u jimxu għal din il-paġna huma provduti hawn taħt bħala referenza.",
        "log-fulllog": "Uri r-reġistru sħiħ",
        "edit-hook-aborted": "Il-modifika ġiet abbandunata mill-''hook''.\nMa ngħatat l-ebda spjegazzjoni.",
        "edit-gone-missing": "Il-paġna ma tistax tiġi aġġornata.\nJidher li din ġiet imħassra.",
index fe08230..33814aa 100644 (file)
        "parser-template-recursion-depth-warning": "Mal er brukt for mange ganger ($1)",
        "language-converter-depth-warning": "Dybdegrense for språkkonvertering overskredet ($1)",
        "node-count-exceeded-category": "Sider hvor antallet noder er overskredet",
+       "node-count-exceeded-category-desc": "En kategori for sider der antallet noder er overskredet.",
        "node-count-exceeded-warning": "Siden har overskredet antallet noder",
        "expansion-depth-exceeded-category": "Sider hvor hvor ekspansjonsdybden er overskredet",
+       "expansion-depth-exceeded-category-desc": "Dette er en kategori for sider hvor ekspansjonsdybden er overskredet.",
        "expansion-depth-exceeded-warning": "Sida har overskredet ekspansjonsdybden",
        "parser-unstrip-loop-warning": "«Unstrip»-loop påvist",
        "parser-unstrip-recursion-limit": "Rekursjonsgrense for taggfjerning overskredet ($1)",
        "right-move": "Flytte sider",
        "right-move-subpages": "Flytte sider med undersider",
        "right-move-rootuserpages": "Flytte hovedbrukersider",
+       "right-move-categorypages": "Flytte kategorisider",
        "right-movefile": "Flytte filer",
        "right-suppressredirect": "Behøver ikke å opprette omdirigeringer ved sideflytting",
        "right-upload": "Laste opp filer",
        "action-move": "flytte denne siden",
        "action-move-subpages": "flytte denne siden og dens undersider",
        "action-move-rootuserpages": "flytte hovedbrukersider",
+       "action-move-categorypages": "flytte kategorisider",
        "action-movefile": "flytte denne filen",
        "action-upload": "laste opp denne filen",
        "action-reupload": "overskrive den nåværende filen",
        "watchnologin": "Ikke logget inn",
        "addwatch": "Legg til i overvåkningslisten",
        "addedwatchtext": "Siden «[[:$1]]» er lagt til [[Special:Watchlist|overvåkningslisten]] din.\nFremtidige endringer til denne siden og den tilhørende diskusjonssiden blir listet opp der.",
+       "addedwatchtext-short": "Siden «$1» har blitt lagt til i overvåkningslisten din.",
        "removewatch": "Fjern fra overvåkningslisten",
        "removedwatchtext": "Siden «[[:$1]]» er fjernet fra [[Special:Watchlist|overvåkningslisten din]].",
+       "removedwatchtext-short": "Siden «$1» har blitt fjernet fra overvåkningslisten din.",
        "watch": "Overvåk",
        "watchthispage": "Overvåk denne siden",
        "unwatch": "Avslutt overvåkning",
        "movepagetalktext": "Den tilhørende diskusjonssiden vil automatisk bli flyttet sammen med siden '''med mindre:'''\n*Det allerede finnes en diskusjonsside som ikke er tom under det nye navnet, eller\n*Du fjerner markeringen i boksen nedenfor.\n\nI disse tilfellene er du nødt til å flytte eller flette siden manuelt, om ønskelig.",
        "movearticle": "Flytt side:",
        "moveuserpage-warning": "'''Advarsel:''' Du er i ferd med å flytte en brukerside. Merk at kun siden vil bli flyttet; brukernavnet vil ''ikke'' bli endret.",
+       "movecategorypage-warning": "<strong>Advarsel:</strong> Du er i ferd med å flytte en kategoriside. Merk at kun siden blir flyttet, og at sider i det gamle kategorinavnet <em>ikke</em> blir omkategorisert til det nye navnet.",
        "movenologintext": "Du må være registrert bruker og være [[Special:UserLogin|logget på]] for å flytte en side.",
        "movenotallowed": "Du har ikke tillatelse til å flytte sider.",
        "movenotallowedfile": "Du har ikke tillatelse til å flytte filer.",
        "cant-move-user-page": "Du har ikke tillatelse til å flytte brukersider (bortsett fra undersider).",
        "cant-move-to-user-page": "Du har ikke tillatelse til å flytte brukersider (bortsett fra undersider).",
+       "cant-move-category-page": "Du har ikke tillatelse til å flytte kategorisider.",
+       "cant-move-to-category-page": "Du har ikke tillatelse til å flytte en side til en kategoriside.",
        "newtitle": "Til ny tittel:",
        "move-watch": "Overvåk kilde- og målsiden",
        "movepagebtn": "Flytt side",
        "tooltip-undo": "«Angre» tilbakestiller denne endringen og åpner redigeringsskjemaet i forhåndsvisningsmodus. Det tillater en å legge til en begrunnelse i redigeringsforklaringen.",
        "tooltip-preferences-save": "Lagre innstillinger",
        "tooltip-summary": "Skriv et kort sammendrag",
-       "interlanguage-link-title": "$1 &ndash; $2",
+       "interlanguage-link-title": "$1  $2",
        "common.css": "/* CSS plassert i denne fila vil gjelde for alle utseender. */",
        "cologneblue.css": "/* CSS i denne fila vil gjelde alle som bruker drakta Kølnerblå */",
        "monobook.css": "/* CSS i denne fila vil gjelde alle som bruker drakta Monobook */",
        "newimages-summary": "Denne spesialsiden viser de sist opplastede filene.",
        "newimages-legend": "Filnavn",
        "newimages-label": "Filnavn (helt eller delvis):",
+       "newimages-showbots": "Vis opplastinger av botter",
        "noimages": "Ingenting å se.",
        "ilsubmit": "Søk",
        "bydate": "etter dato",
        "watchlistedit-raw-done": "Overvåkningslisten din er oppdatert.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Én tittel|$1 titler}} ble lagt til:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Én tittel|$1 titler}} ble fjernet:",
+       "watchlistedit-clear-title": "Rensket overvåkningslisten",
+       "watchlistedit-clear-legend": "Rensk overvåkninslisten",
+       "watchlistedit-clear-explain": "Alle titlene blir fjernet fra overvåkningslisten din",
+       "watchlistedit-clear-titles": "Titler:",
+       "watchlistedit-clear-submit": "Rensk overvåkningslisten (dette er permanent!)",
+       "watchlistedit-clear-done": "Overvåkningslisten din har blitt rensket.",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|Én tittel|$1 titler}} ble fjernet:",
+       "watchlistedit-too-many": "Det er for mange sider til å vise dem her.",
+       "watchlisttools-clear": "Rensk overvåkningslisten",
        "watchlisttools-view": "Vis relevante endringer",
        "watchlisttools-edit": "Vis og rediger overvåkningsliste",
        "watchlisttools-raw": "Rediger rå overvåkningsliste",
index 0254de2..7d993a9 100644 (file)
        "watchnologin": "U bent niet aangemeld",
        "addwatch": "Toevoegen aan volglijst",
        "addedwatchtext": "De pagina \"[[:$1]]\" is toegevoegd aan uw [[Special:Watchlist|volglijst]].\nToekomstige bewerkingen van deze pagina en de bijbehorende overlegpagina worden daar weergegeven.",
+       "addedwatchtext-short": "De pagina \"$1\" is toegevoegd aan uw volglijst.",
        "removewatch": "Verwijderen uit volglijst",
        "removedwatchtext": "De pagina \"[[:$1]]\" is van [[Special:Watchlist|uw volglijst]] verwijderd.",
+       "removedwatchtext-short": "De pagina \"$1\" is verwijderd van uw volglijst.",
        "watch": "Volgen",
        "watchthispage": "Pagina volgen",
        "unwatch": "Niet volgen",
index 18d96f8..d8db86b 100644 (file)
@@ -15,7 +15,7 @@
                ]
        },
        "tog-underline": "ତଳେ ଥିବା ଲିଙ୍କ:",
-       "tog-hideminor": "à¬\9bà­\8bà¬\9fମà­\8bà¬\9f à¬¨à¬\97ଦ ବଦଳସବୁକୁ ଲୁଚାଇବେ",
+       "tog-hideminor": "ନିà¬\95à¬\9fରà­\87 à¬¹à­\8bà¬\87ଥିବା à¬\9bà­\8bà¬\9f ବଦଳସବୁକୁ ଲୁଚାଇବେ",
        "tog-hidepatrolled": "ନଗଦ ବଦଳରେ ଥିବା ଜଗାହୋଇଥିବା ବଦଳ ସବୁକୁ ଲୁଚାଇବେ",
        "tog-newpageshidepatrolled": "ନୂଆ ପୃଷ୍ଠାତାଲିକାରୁ ଜଗାହୋଇଥିବା ବଦଳସବୁକୁ ଲୁଚାଇବେ",
        "tog-extendwatchlist": "କେବଳ ନଗଦ ହିଁ ନୁହେଁ, ସବୁଯାକ ବଦଳକୁ ଦେଖାଇବା ପାଇଁ ଦେଖଣାତାଲିକାକୁ ପୂରା ଦେଖାଇବେ",
        "passwordreset-capture-help": "ଯଦି ଆପଣ ଘରଟିକୁ ଦେଖନ୍ତି ତେବେ (ଅସ୍ଥାୟୀ ପାସୱାର୍ଡ଼ ସହିତ) ଇ-ମେଲଟି ଆପଣଙ୍କୁ ଦେଖାଯିବ ଓ ବାକି ସଭ୍ୟମାନଙ୍କୁ ଚାଲିଯିବ ।",
        "passwordreset-email": "ଇ-ମେଲ ଠିକଣା:",
        "passwordreset-emailtitle": "{{SITENAME}} ର ଖାତା ସବିଶେଷ",
-       "passwordreset-emailtext-ip": "କେହି ଜଣେ (ବୋଧେ ଆପଣ, $1 IP ଠିକଣାରୁ) \n{{SITENAME}} ($4) ସାଇଟରେ ଥିବା ଆପଣଙ୍କ ଖାତାର ସବିଶେଷ ଜାଣିବାକୁ ଅନୁରୋଧ କରିଛନ୍ତି । ଏହି ଇମେଲ ଠିକଣା ସହିତ ତଳଲିଖିତ ବ୍ୟବହାରକାରୀଙ୍କ {{PLURAL:$3|ଖାତା|ଖାତାସମୂହ}} ଯୋଡ଼ା:\n\n$2\n\n{{PLURAL:$3|ଏହି ଅସ୍ଥାୟୀ ପାସୱାର୍ଡ଼ଟି|ଏହି ଅସ୍ଥାୟୀ ପାସୱାର୍ଡ଼ସବୁ}} {{PLURAL:$5|ଦିନକରେ|$5 ଦିନରେ ଅଚଳ}} ହୋଇଯିବ ।\nଆପଣ ଏବେ ଲଗ ଇନ କରି ନୂଆ ପାସୱାର୍ଡ଼ଟିଏ ବାଛନ୍ତୁ । ଯହି ଆଉ କେହି ଜଣେ ଏହି ଅନୁରୋଧ କରିଥାନ୍ତି\nକିମ୍ବା ଆପଣ ଏବେ ନିଜର ମୂଳ ପାସୱାର୍ଡ଼ ମନେ ପକାଇ ପାରିଥାନ୍ତି ତେବେ ଏହି ପାସୱାର୍ଡ଼ଟିକୁ ଆଉ ବଦଳାଇବା ଲୋଡ଼ା ନାହିଁ ।\nଆପଣ ନିଜ ପୁରୁଣା ପାସୱାର୍ଡ଼ଟି ଆଗପରି ବ୍ୟବହାର କରିପାରନ୍ତି ।",
-       "passwordreset-emailtext-user": "{{SITENAME}}ରେ ଥିବା ବ୍ୟବହାରକାରୀ $1 {{SITENAME}} ($4) ସାଇଟରେ ଥିବା ଆପଣଙ୍କ ଖାତାର ସବିଶେଷ ଜାଣିବାକୁ ଅନୁରୋଧ କରିଛନ୍ତି । ଏହି ଇମେଲ ଠିକଣା ସହିତ ତଳଲିଖିତ ବ୍ୟବହାରକାରୀଙ୍କ {{PLURAL:$3|ଖାତା|ଖାତାସମୂହ}} ଯୋଡ଼ା:\n\n$2\n\n{{PLURAL:$3|ଏହି ଅସ୍ଥାୟୀ ପାସୱାର୍ଡ଼ଟି|ଏହି ଅସ୍ଥାୟୀ ପାସୱାର୍ଡ଼ସବୁ}} {{PLURAL:$5|ଦିନକରେ|$5 ଦିନରେ ଅଚଳ}} ହୋଇଯିବ ।\nଆପଣ ଏବେ ଲଗ ଇନ କରି ନୂଆ ପାସୱାର୍ଡ଼ଟିଏ ବାଛନ୍ତୁ । ଯହି ଆଉ କେହି ଜଣେ ଏହି ଅନୁରୋଧ କରିଥାନ୍ତି\nକିମ୍ବା ଆପଣ ଏବେ ନିଜର ମୂଳ ପାସୱାର୍ଡ଼ ମନେ ପକାଇ ପାରିଥାନ୍ତି ତେବେ ଏହି ପାସୱାର୍ଡ଼ଟିକୁ ଆଉ ବଦଳାଇବା ଲୋଡ଼ା ନାହିଁ ।\nଆପଣ ନିଜ ପୁରୁଣା ପାସୱାର୍ଡ଼ଟି ଆଗପରି ବ୍ୟବହାର କରିପାରନ୍ତି ।",
+       "passwordreset-emailtext-ip": "କେହିଜଣେ (ବୋଧେ ଆପଣ, $1 IP addressରୁ) {{SITENAME}} ($4)ରେ ପାସୱାର୍ଡ଼ ରି-ସେଟ କରିବା ପାଇଁ ଅନୁରୋଧ କରିଛନ୍ତି । ଉକ୍ତ ଇମେଲ ଠିକଣା ସହିତ ଏହି {{PLURAL:$3|ସଭ୍ୟ ଖାତାଟି|ସଭ୍ୟ ଖାତାମାନ}} ସମ୍ବନ୍ଧିତ:\n\n$2\n\n{{PLURAL:$3|ଏହି ଅସ୍ଥାୟୀ ପାସୱାର୍ଡ଼ଟି|ଏହି ଅସ୍ଥାୟୀ ପାସୱାର୍ଡ଼ମାନ}} {{PLURAL:$5|ଦିନକ|$5 ଦିନ}}ରେ ଅଚଳ ହୋଇଯିବ ।\nଆପଣ ଏବେ ଲଗ ଇନ କରି ନୂଆ ପାସୱାର୍ଡ଼ଟିଏ ବାଛନ୍ତୁ । ଯଦି ଆଉ କେହି ଏହି ଅନୁରୋଧ କରିଥାନ୍ତି କିମ୍ବା ନିଜର ପୁରୁଣା ପାସୱାର୍ଡ଼ଟି ମନେପଡ଼ିଲା, ଏବଂ ଆଉ ପାସୱାର୍ଡ଼ଟି ବଦଳାଇବାକୁ ଚାହୁଁନାହାଁନ୍ତି ତାହେଲେ ଏହି ମେଲଟିକୁ ଅଣଦେଖା କରି ନିଜର ପୁରୁଣା ପାସୱାର୍ଡ଼ ବ୍ୟବହାର କରନ୍ତୁ ।",
+       "passwordreset-emailtext-user": "$1 ନାମକ ସଭ୍ୟଜଣକ {{SITENAME}}ରେ {{SITENAME}} ($4) ପାଇଁ ଆପଣଙ୍କ ପାସ ୱାର୍ଡ଼ ରିସେଟ କରିବାର ଅନୁରୋଧ କରିଛନ୍ତି । ତଳ {{PLURAL:$3|ଖାତାଟି|ଖାତାମାନ}} ଉକ୍ତ ଇମେଲ ସହିତ ସମ୍ବନ୍ଧିତ:\n\n$2\n\n{{PLURAL:$3|ଏହି ଅସ୍ଥାୟୀ ପାସୱାର୍ଡ଼ଟି|ଏହି ଅସ୍ଥାୟୀ ପାସୱାର୍ଡ଼ମାନ}} {{PLURAL:$5|ଦିନକ|$5 ଦିନ}}ରେ ଅଚଳ ହୋଇଯିବ ।\nଆପଣ ଲଗ ଇନ କରି ନୂଆ ପାସୱାର୍ଡ଼ଟିଏ ବାଛନ୍ତୁ । ଯଦି ଆଉ କେହି ଏହି ଅନୁରୋଧଟି କରିଥାନ୍ତି କିମ୍ବା ଆପଣଙ୍କର ନିଜ ପୁରୁଣା ପାସୱାର୍ଡ଼ଟି ମନେପଡ଼ିଗଲା ତେବେ ଆପଣଙ୍କୁ ଆଉ ପାସୱାର୍ଡ଼ ବଦଳାଇବାର ଆବଶ୍ୟକତା ନାହିଁ । ଆପଣ ଏହି ମେସେଜଟିକୁ ଅଣଦେଖା କରି ନିଜର ପୁରୁଣା ପାସୱାର୍ଡ଼ ବ୍ୟବହାର କରୁଥାନ୍ତୁ ।",
        "passwordreset-emailelement": "ଇଉଜର ନାମ: $1\nଅସ୍ଥାୟୀ ପାସୱାର୍ଡ଼: $2",
        "passwordreset-emailsent": "ଏକ ପାସୱାର୍ଡ଼ ପୁନଃସ୍ଥାପନ ଇମେଲ ପଠାଇଦିଆଯାଇଅଛି ।",
        "passwordreset-emailsent-capture": "ତଳେ ଦେଖାଯାଉଥିବା ଭଳି, ପାସୱାର୍ଡ଼ ପୁନଃସ୍ଥାପନ ଇମେଲଟିଏ ପଠାଇଦିଆଯାଇଛି ।",
-       "passwordreset-emailerror-capture": "à¬\97à­\8bà¬\9fିà¬\8f à¬®à¬¨à­\87ପà¬\95ାà¬\87ବା à¬\87-ମà­\87ଲ à¬¤à¬¿à¬\86ରି à¬\95ରାଯାà¬\87ଥିଲା, à¬¯à¬¾à¬¹à¬¾à¬\95ି à¬¤à¬³à­\87 à¬\85à¬\9bି, à¬\95ିନà­\8dତà­\81 à¬\8fହାà¬\95à­\81 à¬¬à­\8dà­\9fବହାରà¬\95ାରà­\80à¬\95à­\81 à¬ªà¬ à¬¾à¬\87ବାରà­\87 à¬\85ସଫଳ à¬¹à­\87ଲା :$1",
+       "passwordreset-emailerror-capture": "ପାସୱାରà­\8dଡ଼ à¬¬à¬¦à¬³à¬¾à¬\87ବା à¬¸à­\82à¬\9aନା à¬¸à¬¹ à¬\87ମà­\87ଲà¬\9fିà¬\8f à¬¤à¬¿à¬\86ରି à¬¹à­\8bà¬\87à¬\9bି, à¬¯à¬¾à¬¹à¬¾ à¬¤à¬³à­\87 à¬¦à­\87à¬\96ିପାରିବà­\87 à¥¤ à¬\95ିନà­\8dତà­\81 à¬\8fହାà¬\95à­\81 {{GENDER:$2|ସଭà­\8dà­\9f}}à¬\99à­\8dà¬\95à­\81 à¬ªà¬ à¬¾à¬\87ବାରà­\87 à¬¬à¬¿à¬«à¬³ à¬¹à­\87ଲà­\81, à¬\95ାରଣ: $1",
        "changeemail": "ଇ-ମେଲ ଠିକଣା ବଦଳାଇବେ",
        "changeemail-header": "ଖାତା ଇ-ମେଲ ଠିକଣା ବଦଳାଇବେ",
        "changeemail-text": "ଆପଣା ଇ-ମେଲ ଠିକଣା ବଦଳାଇବା ନିମନ୍ତେ ଏହି ଆବେଦନ ପତ୍ରଟି ପୂରଣ କରନ୍ତୁ । ଆପଣଙ୍କୁ ଏହି ବଦଳ ଥୟ କରିବା ପାଇଁ ନିଜର ପାସୱାର୍ଡ଼ ଦେବାକୁ ପଡ଼ିବ ।",
        "changeemail-password": "ଆପଣଙ୍କ {{SITENAME}} ପାସୱାର୍ଡ",
        "changeemail-submit": "ଇ-ମେଲ ପରିର୍ବତ୍ତନ କରନ୍ତୁ",
        "changeemail-cancel": "ନାକଚ",
+       "changeemail-throttled": "ଆପଣ ଏକାଧିକ ଥର ଲଗ ଇନ କରିବାକୁ ଚେଷ୍ଟା କରିଥାଇପାରନ୍ତି ।\nଆଉଥରେ ଚେଷ୍ଟା କରିବା ଆଗରୁ ଦୟାକରି $1 ଅପେକ୍ଷା କରନ୍ତୁ ।",
+       "resettokens": "ଟୋକନ ରିସେଟ କରନ୍ତୁ",
+       "resettokens-no-tokens": "ରିସେଟ କରିବା ପାଇଁ ଆଉ ଟୋକନ ନାହିଁ ।",
+       "resettokens-legend": "ଟୋକନ ରିସେଟ କରନ୍ତୁ",
+       "resettokens-tokens": "ଟୋକନମାନ:",
+       "resettokens-token-label": "$1 (ବର୍ତ୍ତମାନ: $2)",
+       "resettokens-done": "ଟୋକନ ରିସେଟ ହେଲା ।",
+       "resettokens-resetbutton": "ବଛାଯାଇଥିବା ଟୋକନ ରିସେଟ କରନ୍ତୁ",
        "bold_sample": "ମୋଟା ଲେଖା",
        "bold_tip": "ମୋଟା ଲେଖା",
        "italic_sample": "ତେରେଛା ଲେଖା",
        "hr_tip": "ସମାନ୍ତରାଳ ରେଖା (ବେଳେବେଳେ ବ୍ୟବହାର କରିବେ)",
        "summary": "ସାରକଥା:",
        "subject": "ବିଷୟ/ଶିରୋନାମା",
-       "minoredit": "à¬\8fହା à¬\96à­\81ବ à¬\9bà­\8bà¬\9f à¬¬à¬¦à¬³à¬\9fିà¬\8f",
+       "minoredit": "à¬\8fହା à¬\8fà¬\95 à¬¸à¬¾à¬®à¬¾à¬¨à­\8dà­\9f à¬¸à¬®à­\8dପାଦନା",
        "watchthis": "ଏହି ପୃଷ୍ଠାଟିକୁ ଦେଖିବେ",
        "savearticle": "ସାଇତିବେ [Save]",
        "preview": "ସାଇତିବା ଆଗରୁ ଦେଖନ୍ତୁ",
        "loginreqlink": "ଲଗ-ଇନ (Log in)",
        "loginreqpagetext": "ବାକି ପୃଷ୍ଠାମାନ ଦେଖିବା ନିମନ୍ତେ ଆପଣଙ୍କୁ $1 କରିବାକୁ ପଡ଼ିବ ।",
        "accmailtitle": "ପାସୱାର୍ଡ଼ଟି ପଠାଇ ଦିଆଗଲା ।",
-       "accmailtext": "[[User talk:$1|$1]]ଙ୍କ ନିମନ୍ତେ ଏକ ଯାହିତାହି ପାସୱାର୍ଡ଼ $2ଙ୍କ ନିକଟକୁ ପଠାଗଲା ।\n\nଏହି ପାସୱାର୍ଡ଼ଟି ''[[Special:ChangePassword|ପାସୱାର୍ଡ଼ ବଦଳାଇବା]]'' ପୃଷ୍ଠାରେ ଲଗଇନ କରି କରାଯାଇପାରିବ ।",
+       "accmailtext": "[[User talk:$1|$1]] ପାଇଁ $2କୁ ଏକ ଆପେ ଆପେ ତିଆରି ପାସୱାର୍ଡ଼ ପଠାଗଲା । ଏହା ଲଗ ଇନ କଲା ପରେ<em>[[Special:ChangePassword|ପାସୱାର୍ଡ଼ ବଦଳ]]</em> ପୃଷ୍ଠାରେ ବଦଳାଯାଇପାରିବ ।",
        "newarticle": "(ନୁଆ)",
        "newarticletext": "ଆପଣ ଖୋଲିଥିବା ଲିଙ୍କଟିରେ ଏଯାଏଁ କିଛିବି ପୃଷ୍ଠା ନାହିଁ ।\nଏହି ପୃଷ୍ଠାଟିକୁ ତିଆରି କରିବା ପାଇଁ ତଳ ବାକ୍ସରେ ଟାଇପ କରନ୍ତୁ (ଅଧିକ ଜାଣିବା ପାଇଁ [$1 ସାହାଯ୍ୟ ପୃଷ୍ଠା] ଦେଖନ୍ତୁ) ।\nଯଦି ଆପଣ ଏଠାକୁ ଭୁଲରେ ଆସିଯାଇଥାନ୍ତି ତେବେ ଆପଣଙ୍କ ବ୍ରାଉଜରର '''Back''' ପତିଟି ଦବାନ୍ତୁ ।",
        "anontalkpagetext": "----''ଏହା ଏକ ଖାତା ଖୋଲିନଥିବା ବା ଖାତା ବ୍ୟବହାର କରିନଥିବା ଜଣେ ବେନାମି ସଭ୍ୟଙ୍କର ଆଲୋଚନା ପୃଷ୍ଠା ।''\nତେଣୁ ଆମ୍ଭେ ସଂଖ୍ୟା ଦେଇ ସୂଚୀତ IP ଠିକଣା ଦେଇ ତାଙ୍କୁ ଜାଣିବା ।\nଏହି ପ୍ରକାରର ଗୋଟିଏ IP ଠିକଣା ବହୁ ସଭ୍ୟଙ୍କ ଦେଇ ବ୍ୟବହାର କରାଯାଇପାରେ । \nଯଦି ଆପଣ ଜଣେ ଅଜଣା ସଭ୍ୟ ଓ ଭାବୁଛନ୍ତି ଇଆଡୁ ସିଆଡୁ ମତାମତ ସବୁ ଆପଣଙ୍କ ପାଇଁ ଦିଆଯାଇଛି ତେବେ ଦୟାକରି [[Special:UserLogin/signup|ନୂଆ ଖାତାଟିଏ ଖୋଲନ୍ତୁ]] କିମ୍ବା [[Special:UserLogin|ଆଗରୁ ଥିବା ଖାତାରେ ଲଗ ଇନ କରନ୍ତୁ]] ଯାହା ବେନାମି ସଭ୍ୟଙ୍କୁ ନେଇ ଉପୁଜିଥିବା ଦ୍ଵନ୍ଦର ସମାଧାନ କରିବ ।",
        "edit-gone-missing": "ଏହି ପୃଷ୍ଠାଟିକୁ ସତେଜ କରାଯାଇପାରିବ ନାହିଁ ।\nଏହାକୁ ଲିଭାଇ ଦିଆଗଲା ପରି ମନେ ହେଉଛି ।",
        "edit-conflict": "ବଦଳାଇବା ଦ୍ଵନ୍ଦ.",
        "edit-no-change": "ଆପଣଙ୍କ ସମ୍ପାଦନାକୁ ଅଣଦେଖା କରାଗଲା, କାରଣ ଲେଖାରେ କିଛି ବି ବଦଳ କରାଯାଇନଥିଲା ।",
+       "postedit-confirmation-created": "ଏହି ପୃଷ୍ଠାଟି ତିଆରି କରାଗଲା ।",
+       "postedit-confirmation-restored": "ଏହି ପୃଷ୍ଠାଟି ପୁନସ୍ଥାପନ କରାଗଲା ।",
        "postedit-confirmation-saved": "ଆପଣଙ୍କ ବଦଳ ସାଇତା ଗଲା ।",
        "edit-already-exists": "ନୂଆ ପୃଷ୍ଠାଟିଏ ତିଆରି କରିପାରିଲୁଁ ନାହିଁ ।\nଏହା ଆଗରୁ ଅଛି ।",
        "defaultmessagetext": "ଡିଫଲ୍ଟ ମେସେଜ ଲେଖାଗୁଡିକ",
        "content-failed-to-parse": "$1 ପ୍ରକାର ପାଇଁ $2 ଲେଖାକୁ ବର୍ଣ୍ଣନା କରିପାରିଲା ନାହିଁ: $3",
        "invalid-content-data": "ଅବୈଧ ଆଧାର ତଥ୍ୟ",
        "content-not-allowed-here": "\"$1\" ବିଷୟଗୁଡିକ [[$2]]ପୃଷ୍ଠାରେ ରହିପାରିବ ନାହିଁ",
-       "editwarning-warning": "ଏହି ପୃଷ୍ଠାକୁ ଛାଡ଼ି ଚାଲିଗଲେ ହୁଏ ତ ଆପଣ କରିଥିବା କିଛି ସମ୍ପାଦନା ହରାଇ ପାରନ୍ତି ।\nଯଦି ଆପଣ ଲଗ ଇନ କରିଥାନ୍ତି ତେବେ ଆପଣଙ୍କ ପସନ୍ଦର \"ସମ୍ପାଦନା\" ଭାଗରେ ଏହି ଚେତାବନୀଟିକୁ ଅଚଳ କରିପାରିବେ ।",
+       "editwarning-warning": "ଏହି ପୃଷ୍ଠାଟି ଛାଡ଼ି ଚାଲିଗଲେ ଆପଣ ଆଗରୁ କରିଥିବା ସମ୍ପାଦନା ହରାଇବେ । ଯଦି ଆପଣ ଲଗ ଇନ କରିଥାନ୍ତି ନିଜ ପସନ୍ଦ ପୃଷ୍ଠାର \"{{int:prefs-editing}}\" ବିଭାଗରେ ଏହି ଚେତାବନୀଟି ନିଷ୍କ୍ରିୟ କରିପାରିବେ ।",
+       "editpage-notsupportedcontentformat-title": "କଣ୍ଟେଣ୍ଟର ସଂରଚନା ସମର୍ଥିତ ନୁହେଁ",
        "content-model-wikitext": "ଉଇକିଟେକ୍ସଟ",
        "content-model-text": "ଖାଲି ଲେଖା",
        "content-model-javascript": "ଜାଭାସ୍କ୍ରିପ୍ଟ",
        "undo-success": "ଏହି ସମ୍ପାଦନା ପଛକୁ ଫେରାଯାଇପାରିବ ନାହିଁ ।\nଦୟାକରି ତୁଳନା କରି ପରଖିନିଅନ୍ତୁ ଯେ ଆପଣ ଏହାହିଁ କରିବାକୁ ଚାହୁଁଥିଲେ, ଆଉ ସମ୍ପାଦନା ଶେଷ କରିବା ପାଇଁ ତଳେ ଥିବା ବଦଳ ସାଇତି ରଖନ୍ତୁ ।",
        "undo-failure": "ଏହି ସମ୍ପାଦନା ପଛକୁ ଫେରାଯାଇ ପାରିବ ନାହିଁ କାରଣ ମଝିରେ ଘଟିଥିବା ଅନେକ ଛୋଟ ଛୋଟ ବଦଳ ଅସୁବିଧା ତିଆରି କରୁଅଛି ।",
        "undo-norev": "ଏହି ସମ୍ପାଦନାଟି ପଛକୁ ଫେରାଯାଇପାରିବ ନାହିଁ କାରଣ ଏହା ଆଉ ନାହିଁ ବା ଲିଭାଇଦିଆଯାଇଅଛି ।",
+       "undo-nochange": "ଏହି ସମ୍ପାଦନା ପଛକୁ ଫେରାଇଦିଆଯାଇଥିବା ଭଳି ଲାଗୁଛି ।",
        "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|ଆଲୋଚନା]]) ଙ୍କ ଦେଇ କରାଯାଇଥିବା $1 ସଙ୍କଳନଟି ପଛକୁ ଫେରାଇନିଆଗଲା",
+       "undo-summary-username-hidden": "ଜଣେ ଅଜଣା ସଭ୍ୟଙ୍କ ଦେଇ ହୋଇଥିବା $1 ସଂସ୍କରଣଟି ପଛକୁ ଫେରାନ୍ତୁ",
        "cantcreateaccounttitle": "ଖାତାଟିଏ ତିଆରି କରାଯାଇପାରିବ ନାହିଁ",
        "cantcreateaccount-text": "[[User:$3|$3]]ଙ୍କ ଦେଇ ('''$1''') IP ଠିକଣାରୁ ଖାତା ଖୋଲିବାକୁ ବାରଣ କରାଯାଇଅଛି ।\n\n$3ଙ୍କ ଦେଇ ଦିଆଯାଇଥିବା କାରଣ ହେଲା ''$2''",
        "viewpagelogs": "ଏହି ପୃଷ୍ଠା ପାଇଁ ଲଗଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ ।",
        "revdelete-confirm": "ଦୟାକରି ଥୟ କରନ୍ତୁ ଯେ ଆପଣ ଏହା କରିବାକୁ ଚାହୁଁଛନ୍ତି, ଆପଣ ଏହାର ପରିଣାମ ଜାଣନ୍ତି ଓ ଆପଣ [[{{MediaWiki:Policy-url}}|ନୀତି]] ଅନୁସାରେ ଏହା କରୁଛନ୍ତି ।",
        "revdelete-suppress-text": "ଦବାଇ ରଖିବା '''କେବଳ''' ଏହି ତଳଲିଖିତ କ୍ଷେତ୍ରରେ ବ୍ୟବହାର କରାଯିବ:\n* ସମ୍ଭାବିତ ଅପମାନଜଣକ ତଥ୍ୟ\n* ଭୁଲ ବ୍ୟକ୍ତିଗତ ତଥ୍ୟ\n*: ''ଘର ଠିକଣା ଓ ଟେଲିଫୋନ ନମ୍ବର, ଭୋଟର ପରିଚୟ ନମ୍ବର, ଆଦି''",
        "revdelete-legend": "ଦେଖଣା ବାରଣ ସବୁ ଥୟ କରନ୍ତୁ",
-       "revdelete-hide-text": "ସà¬\99à­\8dà¬\95ଳନ à¬²à­\87à¬\96ା à¬²à­\81à¬\9aାà¬\87ଦିà¬\85ନà­\8dତà­\81",
+       "revdelete-hide-text": "ସà¬\82ସà­\8dà¬\95ରଣ à¬²à­\87à¬\96ା",
        "revdelete-hide-image": "ଫାଇଲ ଭିତର ପଦାର୍ଥସବୁ ଲୁଚାଇଦିଅନ୍ତୁ",
        "revdelete-hide-name": "କାମ ଓ ଲକ୍ଷ ସବୁ ଲୁଚାଇଦିଅନ୍ତୁ",
-       "revdelete-hide-comment": "ବଦଳ à¬¸à¬¾à¬°à¬\95ଥା à¬²à­\81à¬\9aାà¬\87ଦିà¬\85ନ୍ତୁ",
-       "revdelete-hide-user": "ସମà­\8dପାଦà¬\95à¬\99à­\8dà¬\95ର à¬\87à¬\89à¬\9cର ନାମ /IP ଲୁଚାଇଦିଅନ୍ତୁ",
+       "revdelete-hide-comment": "ସାରà¬\95ଥା à¬¸à¬®à­\8dପାଦନା à¬\95ରନ୍ତୁ",
+       "revdelete-hide-user": "ସମà­\8dପାଦà¬\95à¬\99à­\8dà¬\95ର à¬¸à¬­à­\8dà­\9f ନାମ /IP ଲୁଚାଇଦିଅନ୍ତୁ",
        "revdelete-hide-restricted": "ପରିଚାଳକ ଓ ବାକିମାନଙ୍କ ଠାରୁ ତଥ୍ୟକୁ ଦବାଇଦିଅନ୍ତୁ",
        "revdelete-radio-same": "(ବଦଳାନ୍ତୁ ନାହିଁ)",
        "revdelete-radio-set": "ଲୁଚାଯାଇଛି",
        "badsig": "ମୂଳ ସନ୍ତକଟି ଅଚଳ ଅଟେ ।\nHTML ଟାଗ ପରଖିନିଅନ୍ତୁ ।",
        "badsiglength": "ଆପଣଙ୍କ ସନ୍ତକଟି ଖୁବ ଲମ୍ବା ।\nଏହା ବୋଧ ହୁଏ $1 {{PLURAL:$1|ଗୋଟି ଅକ୍ଷର|ଗୋଟି ଅକ୍ଷର}}ରୁ ଅଧିକ ।",
        "yourgender": "ଲିଙ୍ଗ:",
-       "gender-unknown": "ଲà­\81à¬\9aାଯାà¬\87ଥିବା",
-       "gender-male": "ପà­\81ରà­\81ଷ",
-       "gender-female": "ନାରà­\80",
-       "prefs-help-gender": "à¬\87à¬\9aà­\8dà¬\9bାଧିନ: à¬¸à¬«à­\8dà¬\9fà­±à­\87ରରà­\87 à¬²à¬¿à¬\99à­\8dà¬\97ବାà¬\9aà¬\95 à¬¸à¬®à­\8dବà­\8bଧନ à¬¨à¬¿à¬®à¬¨à­\8dତà­\87 à¬¬à­\8dà­\9fବହାର à¬\95ରାଯାà¬\87ଥାà¬\8f à¥¤\nà¬\8fହି à¬¤à¬¥à­\8dà­\9f à¬¸à¬¾à¬§à¬¾à¬°à¬£à¬°à­\87 à¬ªà­\8dରà¬\95ାଶିତ ।",
+       "gender-unknown": "à¬\9cଣାà¬\87ବାà¬\95à­\81 à¬\9aାହà­\87à¬\81 à¬¨à¬¾à¬¹à¬¿à¬\81",
+       "gender-male": "ସà­\87 (ପà­\81ରà­\81ଷ) à¬\89à¬\87à¬\95ିପà­\83ଷà­\8dଠା à¬¸à¬®à­\8dପାଦନା à¬\95ରନà­\8dତି",
+       "gender-female": "ସà­\87 (ନାରà­\80) à¬\89à¬\87à¬\95ିପà­\83ଷà­\8dଠା à¬¸à¬®à­\8dପାଦନା à¬\95ରନà­\8dତି",
+       "prefs-help-gender": "à¬\8fହି à¬ªà¬¸à¬¨à­\8dଦ à¬\87à¬\9aà­\8dà¬\9bାଧà­\80ନ à¥¤\nà¬\86ମର à¬¸à¬«à­\8dà¬\9fୱାର à¬\86ପଣà¬\99à­\8dà¬\95à­\81 à¬¸à¬®à­\8dବà­\8bଧନ à¬\95ଲାବà­\87ଳà­\87 à¬²à¬¿à¬\99à­\8dà¬\97ବାà¬\9aà¬\95 à¬¶à¬¬à­\8dଦ à¬¬à­\8dà­\9fବହାର à¬\95ରିଥାà¬\8f à¥¤\nà¬\8fହି à¬¸à­\82à¬\9aନା à¬¸à¬®à¬¸à­\8dତà­\87 à¬ªà¬¢à¬¼à¬¿à¬ªà¬¾à¬°à¬¿à¬¬à­\87 ।",
        "email": "ଇ-ମେଲ",
        "prefs-help-realname": "ପ୍ରକୃତ ନାମ ଦେବା ଆପଣଙ୍କ ଉପରେ ନିର୍ଭର କରେ ।\nଯଦି ଆପଣ ଏହା ଦିଅନ୍ତି, ତେବେ ଏହା ଆପଣଙ୍କ କାମ ପାଇଁ ଶ୍ରେୟ ଦେବାରେ ବ୍ୟବହାର କରାଯାଇପାରିବ ।",
        "prefs-help-email": "ଇ-ମେଲ ଠିକଣାଟି ଇଚ୍ଛାଧୀନ, କିନ୍ତୁ ଆପଣ ଯଦି ପାସୱାର୍ଡ଼ଟି ଭୁଲିଗଲେ ତାହା ଆଉଥରେ ତିଆରିବା ପାଇଁ ଏହା କାମରେ ଲାଗିବ ।",
        "right-move": "ପୃଷ୍ଠାସବୁ ଘୁଞ୍ଚେଇବା",
        "right-move-subpages": "ପୃଷ୍ଠା ସହିତ ସେମାନଙ୍କର ସାନପୃଷ୍ଠାସବୁକୁ ଘୁଞ୍ଚାଇଦେବେ",
        "right-move-rootuserpages": "ମୂଳ ସଭ୍ୟ ପୃଷ୍ଠାସବୁକୁ ଘୁଞ୍ଚାଇଦେବେ",
+       "right-move-categorypages": "ଶ୍ରେଣୀମାନଙ୍କୁ ଘୁଞ୍ଚାନ୍ତୁ",
        "right-movefile": "ଫାଇଲସବୁକୁ ଘୁଞ୍ଚାଇଦେବେ",
        "right-suppressredirect": "ପୃଷ୍ଠାସବୁକୁ ଘୁଞ୍ଚାଇବା ବେଳେ ମୂଳ ପୃଷ୍ଠାର ଫେରନ୍ତା ପୃଷ୍ଠା ତିଆରି କରିବେ ନାହିଁ",
        "right-upload": "ଫାଇଲ ଅପଲୋଡ଼ କରିବେ",
        "right-reupload-shared": "ବଣ୍ଟାଯାଇଥିବା ସ୍ଥାନୀୟ ମାଧ୍ୟମ ଭଣ୍ଡାରର ଫାଇଲ ଗୁଡ଼ିକ ଭରିଦେବେ",
        "right-upload_by_url": "ଏକ URLରୁ ଫାଇଲ ଅପଲୋଡ଼ କରିବେ",
        "right-purge": "ଥୟ କରିବା ବିନା ପୃଷ୍ଠାର ସାଇଟ ଅସ୍ଥାୟୀ ସ୍ମୃତିକୁ ସତେଜ କରିବେ",
-       "right-autoconfirmed": "ଅଧା-କିଳାଯାଇଥିବା ପୃଷ୍ଠାସବୁକୁ ବଦଳାଇବେ",
+       "right-autoconfirmed": "IP-ସମ୍ବନ୍ଧିତ ରେଟ ଲିମିଟ ଦ୍ୱାରା ପ୍ରଭାବିତ ହେବେନାହିଁ",
        "right-bot": "ଏକ ଆପେଆପେ ହେବା ପ୍ରକ୍ରିୟା ଭାବରେ ଗଣିବେ",
        "right-nominornewtalk": "ଆଲୋଚନା ପୃଷ୍ଠାସବୁରେ ଛୋଟ ଛୋଟ ବଦଳ ହେଲେ ତାହା ନୂଆ ଚିଟାଉ ପଠାଇବ",
        "right-apihighlimits": "API ଖୋଜାର ସର୍ବାଧିକ ସୀମା ବ୍ୟବହାର କରିବେ",
        "right-hideuser": "ସାଧାରଣରୁ ଲୁଚାଇ ଏକ ଇଉଜର ନାମକୁ ଅଟକାଇବେ",
        "right-ipblock-exempt": "IP ଅଟକ, ଆପେଆପେ-ଅଟକ ଓ ସୀମା ଅଟକସବୁକୁ ଅଲଗା ଦିଗଗାମୀ କରିବେ",
        "right-proxyunbannable": "ପ୍ରକ୍ସିର ଆପେଆପେ ହେଉଥିବା ଅଟକସବୁକୁ ଅଲଗା ଦିଗଗାମୀ କରିବେ",
-       "right-unblockself": "ସà­\87ମାନà¬\99à­\8dà¬\95à­\81 à¬\85à¬\9fà¬\95ରà­\81 à¬¬à¬¾à¬¹à¬¾à¬° କରିବେ",
-       "right-protect": "à¬\95ିଳିବା à¬¸à­\8dତରà¬\95à­\81 à¬¬à¬¦à¬³à¬¾à¬\87ବà­\87 à¬\93 à¬\95ିଳାଯାà¬\87ଥିବା à¬ªà­\83ଷà­\8dଠାମାନà¬\99à­\8dà¬\95ର à¬¸à¬®à­\8dପାଦନା à¬\95ରିବà­\87",
+       "right-unblockself": "à¬\9cଣà¬\99à­\8dà¬\95à­\81 à¬\85à¬\9fà¬\95ରà­\81 à¬\9aାଡ଼କରିବେ",
+       "right-protect": "ନିରାପତà­\8dତା à¬¬à¬¢à¬¼à¬¾à¬\87 à¬\95à­\8dà­\9fାସà¬\95à­\87ଡ଼-ନିରାପତà­\8dତା à¬ªà­\83ଷà­\8dଠାମାନà¬\99à­\8dà¬\95à­\81 à¬¬à¬¦à¬³à¬¾à¬¨à­\8dତà­\81",
        "right-editprotected": "କିଳାଯାଇଥିବା ପୃଷ୍ଠାମାନଙ୍କର ସମ୍ପାଦନା କରିବେ (କ୍ୟାସକେଡ଼କରା କିଳଣା ବିନା)",
        "right-editinterface": "ସଭ୍ୟଙ୍କ ଇଣ୍ଟରଫେସ ବଦଳାଇବେ",
        "right-editusercssjs": "ବାକି ସଭ୍ୟମାନଙ୍କର CSS ଓ ଜାଭାସ୍କ୍ରିପ୍ଟ ଫାଇଲ ସବୁକୁ ବଦଳାଇବେ",
        "action-protect": "ଏହି ପୃଷ୍ଠାର କିଳିବା ସ୍ତରକୁ ବଦଳାଇବେ",
        "action-rollback": "ଏକ ନିର୍ଦ୍ଦିଷ୍ଟ ପୃଷ୍ଠାକୁ ବଦଳାଇଥିବା ଶେଷ ସଭ୍ୟଙ୍କ ସମ୍ପାଦନାକୁ ସଙ୍ଗେସଙ୍ଗେ ପୁରାପୁରି ପଛକୁ ଫେରାଇଦେବେ",
        "action-import": "ଆଉ ଏକ ଉଇକିରୁ ଏହି ପୃଷ୍ଠାଟି ଆଣିବେ",
-       "action-importupload": "à¬\8fà¬\95 à¬«à¬¾à¬\87ଲ à¬\85ପଲà­\8bଡ଼ରà­\81 à¬\8fହି à¬ªà­\83ଷà­\8dଠାà¬\9fି ଆଣିବେ",
+       "action-importupload": "à¬\8fà¬\95 à¬«à¬¾à¬\87ଲ à¬\85ପଲà­\8bଡ଼ରà­\81 à¬ªà­\83ଷà­\8dଠାମାନ ଆଣିବେ",
        "action-patrol": "ବାକି ମାନଙ୍କ ବଦଳକୁ ଜଗାଯାଇଥିବା ବଦଳ ବୋଲି ଚିହ୍ନିତ କରିବେ",
        "action-autopatrol": "ଆପଣା ସମ୍ପାଦନାସବୁକୁ ଜଗାଯାଇଛି ବୋଲି ଚିହ୍ନିତ କରିବେ",
        "action-unwatchedpages": "ଦେଖାଯାଇନଥିବା ପୃଷ୍ଠାର ଏକ ତାଲିକା ଦେଖାଇବେ",
        "recentchanges-summary": "ଏହି ପୃଷ୍ଠାରେ ଏହି ଉଇକିରେ ନଗଦ ବଦଳର ନିଘା ରଖିବେ",
        "recentchanges-feed-description": "ଏହି ଉଇକିରେ ଏହି ଫିଡ଼ଟିର ନଗଦ ବଦଳ ଦେଖାଇବେ ।",
        "recentchanges-label-newpage": "ଏହି ସମ୍ପାଦନା ଯୋଗୁଁ ନୂଆ ପୃଷ୍ଠାଟିଏ ତିଆରି ହେଲା",
-       "recentchanges-label-minor": "à¬\8fହା à¬\96à­\81ବ à¬¸à¬¾à¬®à¬¾à¬¨à­\8dà­\9f à¬¸à¬®à­\8dପାଦନାà¬\9fିà¬\8f",
+       "recentchanges-label-minor": "à¬\8fହା à¬\8fà¬\95 à¬¸à¬¾à¬®à¬¾à¬¨à­\8dà­\9f à¬¸à¬®à­\8dପାଦନା",
        "recentchanges-label-bot": "ଏହି ବଦଳଟି ଜଣେ '''ବଟ'''ଙ୍କ ଦେଇ କରାଯାଇଥିଲା",
        "recentchanges-label-unpatrolled": "ଏହି ବଦଳଟିକୁ ଏ ଯାଏଁ ପରଖା ଯାଇନାହିଁ",
-       "rcnotefrom": "'''$2''' ପରର ବଦଳସବୁ ତଳେ ଦିଆଗଲା ('''$1''' ଯାଏଁ ଦେଖାଯାଇଛି) ।",
+       "rcnotefrom": "<strong>$2</strong> ପର ଠାରୁ (<strong>$1</strong> ଯାଏଁ ଏଠାରେ ଅଛି) ସମସ୍ତ ବଦଳ ତଳେ ଦେଖିପାରିବେ:",
        "rclistfrom": "$3 $2ରୁ ଆରମ୍ଭ କରି ନୂଆ ବଦଳଗୁଡ଼ିକ ଦେଖାଇବେ",
        "rcshowhideminor": "ଛୋଟମୋଟ ବଦଳ $1",
        "rcshowhideminor-show": "ଦେଖାଇବେ",
        "rc_categories_any": "ଯେ କୌଣସି",
        "rc-change-size-new": "ବଦଳପରେ $1 {{PLURAL:$1|byte|bytes}}",
        "newsectionsummary": "/* $1 */ ନୂଆ ଭାଗ",
-       "rc-enhanced-expand": "ପà­\81ରା à¬¦à­\87à¬\96ାà¬\87ବà­\87 (à¬\9cାଭାସà­\8dà¬\95à­\8dରିପà­\8dà¬\9f à¬¦à¬°à¬\95ାର)",
+       "rc-enhanced-expand": "ସବିଶà­\87ଷ à¬¦à­\87à¬\96ାନà­\8dତà­\81",
        "rc-enhanced-hide": "ବେଶି କଥାସବୁ ଲୁଚାଇଦିଅ",
        "rc-old-title": "ପ୍ରକୃତରେ \"$1\" ଭାବେ ତିଆରି କରାଯାଇକଥିଲା",
        "recentchangeslinked": "ଏଇମାତ୍ର ବଦଳାଯାଇଥିବା ପୃଷ୍ଠାର ଲିଙ୍କ",
        "reuploaddesc": "ଅପଲୋଡ଼କୁ ନାକଚ କରିବେ ଓ ଅପଲୋଡ଼ ଫର୍ମକୁ ଫେରିବେ",
        "upload-tryagain": "ବଦଳିଥିବ ଫାଇଲ ବଖାଣ ପଠାଇବା",
        "uploadnologin": "ଲଗ‌‌ ଇନ କରିନାହାନ୍ତି",
-       "uploadnologintext": "ଫାà¬\87ଲ à¬\85ପଲà­\8bଡ଼ à¬\95ରିବା à¬¨à¬¿à¬®à¬¨à­\8dତà­\87 à¬\86ପଣà¬\99à­\8dà¬\95à­\81 [[Special:UserLogin|ଲà¬\97 à¬\87ନ]] à¬\95ରିବାà¬\95à­\81 à¬ªà¬¡à¬¼à¬¿ବ ।",
+       "uploadnologintext": "à¬\85ପଲà­\8bଡ଼ à¬\95ରିବା à¬ªà¬¾à¬\87à¬\81 $1 à¬\95ରିବାà¬\95à­\81 à¬¹à­\87ବ ।",
        "upload_directory_missing": "ଅପଲୋଡ଼ ସୂଚି ($1)ଟି ମିଳୁନାହିଁ ଓ ୱେବସର୍ଭର ଦେଇ ତିଆରି କରାଯାଇପାରିଲା ନାହିଁ ।",
        "upload_directory_read_only": "ଅପଲୋଡ଼ ସୂଚି ($1)ଟି ସବୁ ୱେବସର୍ଭରରେ ଲେଖାଯାଇ ପାରିବ ନାହିଁ ।",
        "uploaderror": "ଅପଲୋଡ଼ କରିବାରେ ଅସୁବିଧା",
        "license-nopreview": "(ସାଇତିବା ଆଗଦେଖଣା ମିଳୁନାହିଁ)",
        "upload_source_url": "(ଏକ ବୈଧ ସାଧାରଣରେ ଖୋଲାଯାଇପାରୁଥିବା URL)",
        "upload_source_file": "(ଆପଣଙ୍କ କମ୍ପୁଟରରେ ଥିବା ଏକ ଫାଇଲ)‌",
-       "listfiles-summary": "à¬\8fହି à¬¬à¬¿à¬¶à­\87ଷ à¬ªà­\83ଷà­\8dଠାà¬\9fି à¬¸à¬¬à­\81ଯାà¬\95 à¬\85ପଲà­\8bଡ଼ à¬\95ରାଯାà¬\87ଥିବା à¬«à¬¾à¬\87ଲ à¬¦à­\87à¬\96ାà¬\87ଥାà¬\8f à¥¤\nବà¬\9bାହà­\87ବା à¬¬à­\87ଳà­\87 à¬\95à­\87ବଳ à¬¸à¬­à­\8dà­\9fà¬\99à­\8dà¬\95 à¬¦à­\87à¬\87 à¬¨à¬\97ଦ à¬\85ପଲà­\8bଡ଼ à¬\95ରାଯାà¬\87ଥିବା à¬«à¬¾à¬\87ଲ à¬¦à­\87à¬\96ାଯାଇଥାଏ ।",
+       "listfiles-summary": "à¬\8fହି à¬¬à¬¿à¬¶à­\87ଷ à¬ªà­\83ଷà­\8dଠାà¬\9fି à¬\85ପଲà­\8bଡ଼ à¬¹à­\8bà¬\87ଥିବା à¬¸à¬®à¬¸à­\8dତ à¬«à¬¾à¬\87ଲ à¬¦à­\87à¬\96ାଇଥାଏ ।",
        "listfiles_search_for": "ମାଧ୍ୟମ ନାମଟି ଖୋଜିବେ:",
        "imgfile": "ଫାଇଲ",
        "listfiles": "ଫାଇଲ ତାଲିକା",
        "listfiles_size": "ଆକାର",
        "listfiles_description": "ବିବରଣୀ",
        "listfiles_count": "ସଂସ୍କରଣ",
+       "listfiles-latestversion": "ବର୍ତ୍ତମାନର ସଂସ୍କରଣ",
+       "listfiles-latestversion-yes": "ହଁ",
+       "listfiles-latestversion-no": "ନାଁ",
        "file-anchor-link": "ଫାଇଲ",
        "filehist": "ଫାଇଲ ଇତିହାସ",
        "filehist-help": "ଏହା ଫାଇଲଟି ସେତେବେଳେ ଯେମିତି ଦିଶୁଥିଲା ତାହା ଦେଖିବା ପାଇଁ ତାରିଖ/ବେଳା ଉପରେ କ୍ଲିକ କରନ୍ତୁ",
        "unusedtemplateswlh": "ଅନ୍ୟ ସଂଯୋଗ",
        "randompage": "ଯାହିତାହି ପୃଷ୍ଠା",
        "randompage-nopages": "ତଳେ ଥିବା {{PLURAL:$2|ନେମସ୍ପେସ|ନେମସ୍ପେସ}}: $1ରେ ଗୋଟିଏ ବି ପୃଷ୍ଠା ନାହିଁ ।",
+       "randomincategory-selectcategory-submit": "ଯାଆନ୍ତୁ",
        "randomredirect": "ଯାହିତାହି ପୁନପ୍ରେରଣ",
        "randomredirect-nopages": "\"$1\" ନାମରେ ଗୋଟିଏ ବି ପୁନପ୍ରେରଣ ନାହିଁ ।",
        "statistics": "ହିସାବ",
        "pageswithprop-submit": "ଯିବା",
        "doubleredirects": "ଯୋଡ଼ା ପୁନପ୍ରେରଣ",
        "doubleredirectstext": "ଏହି ପୃଷ୍ଠା ବାକି ବହୁବିକଳ୍ପ ପୃଷ୍ଠାମାନଙ୍କ ସହ ଯୋଡ଼ିଥାଏ ।\nପ୍ରତ୍ୟେକ ଧାଡ଼ିରେ ପ୍ରଥମ ଓ ଶେଷ ପୁନପ୍ରେରଣ ସହ ଯୋଡ଼ିବା ଲିଙ୍କ ରହିଥାଏ, ଆହୁରି ମଧ୍ୟ ଏଥିରେ ଦ୍ଵିତୀୟ ପୁନପ୍ରେରଣର ଲକ୍ଷ ସହ ଯୋଡ଼ିବାର ଲିଙ୍କ ଥାଏ , ଯାହାକି ସାଧାରଣତ \"ପ୍ରକୃତ\" ଲକ୍ଷ ପୃଷ୍ଠା ହୋଇଥାଏ, ଯାହାକୁ ପ୍ରଥମ ପୁନପ୍ରେରଣ ପୃଷ୍ଠା ଯୋଡ଼ିଥାଏ ।\n<del>କଟାହୋଇଥିବା</del> ନିବେଶସବୁ ସଜଡ଼ାଗଲା ।",
-       "double-redirect-fixed-move": "[[$1]]à¬\95à­\81 à¬\98à­\81à¬\9eà­\8dà¬\9aାଯାà¬\87à¬\85à¬\9bି à¥¤\nà¬\8fବà­\87 à¬\8fହା [[$2]]à¬\95à­\81 à¬ªà­\81ନପà­\8dରà­\87ରିତ à¬¹à­\8bà¬\87ଥାà¬\8f ।",
-       "double-redirect-fixed-maintenance": "[[$1]] à¬°à­\81 [[$2]] à¬\95à­\81 à¬¦à­\81à¬\87à¬\9fି à¬ªà­\81ନପà­\8dରà­\87ରଣରà­\87 à¬¥à¬¿à¬¬à¬¾ à¬\85ସà­\81ବିଧା à¬¸à­\81ଧାରିଦà­\87ଲà­\81à¬\81 à¥¤",
+       "double-redirect-fixed-move": "[[$1]]à¬\95à­\81 à¬\98à­\81à¬\9eà­\8dà¬\9aାଯାà¬\87à¬\85à¬\9bି à¥¤\nà¬\8fବà­\87 à¬\86ପà­\87 à¬\86ପà­\87 à¬\85ପଡà­\87à¬\9f à¬¹à­\8bà¬\87ଥାà¬\8f à¬\8fବà¬\82 à¬\8fବà­\87 [[$2]]à¬\95à­\81 à¬ªà­\81ନପà­\8dରà­\87ରିତ à¬¹à­\8bà¬\87à¬\9bି ।",
+       "double-redirect-fixed-maintenance": "[[$1]] à¬°à­\81 [[$2]] à¬¯à¬¾à¬\8fà¬\81 à¬¥à¬¿à¬¬à¬¾ à¬¦à­\81à¬\87à¬\9fି à¬\85ନାବଶà­\8dà­\9fà¬\95 à¬ªà­\81ନରà­\8dପà­\8dରà­\87ରଣ à¬°à¬\95à­\8dଷଣାବà­\87à¬\95à­\8dଷଣା à¬\95ଲାବà­\87ଳà­\87 à¬¸à¬\9cାଡ଼ିଦà­\87ଲà­\81 à¥¤",
        "double-redirect-fixer": "ପୁନପ୍ରେରଣ ସୁଧାରକ",
        "brokenredirects": "ଭଙ୍ଗା ପୁନପ୍ରେରଣ",
        "brokenredirectstext": "ତଳଲିଖିତ ପୁନପ୍ରେରଣ ସବୁ ସ୍ଥିତିହିନ ପୃଷ୍ଠାମାନଙ୍କୁ ପୁନପ୍ରେରିତ ହୋଇଥାଏ :",
        "protectedpages-indef": "କେବଳ ଆସିମୀତ କାଳ ପାଇଁ କିଳିବା",
        "protectedpages-cascade": "କିଲାଯାଇଥିବା ପୃଷ୍ଠାସବୁକୁ ଏକାଠି ସଜାଇ ରଖୁଅଛୁଁ",
        "protectedpagesempty": "ଏହି ସବୁ ସଜାଣି ସହ ଗୋଟିଏ ବି ପୃଷ୍ଠା ଏବେ କିଳାଯାଇ ନାହିଁ ।",
+       "protectedpages-timestamp": "ସମୟ",
+       "protectedpages-page": "ପୃଷ୍ଠା",
+       "protectedpages-expiry": "ଅଚଳ ହେବ",
+       "protectedpages-unknown-performer": "ଅଜଣା ସଭ୍ୟ",
        "protectedtitles": "କିଳାଯାଇଥିବା ଶିରୋନାମାମାନ",
        "protectedtitlesempty": "ଏହି ସବୁ ସଜାଣି ସହ ଗୋଟିଏ ବି ପୃଷ୍ଠା ଏବେ କିଳାଯାଇ ନାହିଁ ।",
        "listusers": "ବ୍ୟବହାରକାରୀଙ୍କ ତାଲିକା",
        "activeusers-noresult": "ଜଣେ ବି ସଭ୍ୟ ମିଳିଲେ ନାହିଁ ।",
        "listgrouprights": "ସଭ୍ୟ ଗୋଠ ଅଧିକାରସମୂହ",
        "listgrouprights-summary": "ତଳେ ଉଇକି ସ୍ଥିର କରାଯାଇଥିବା ଏକ ଏକ ବ୍ୟବହାରକାରୀ ଗୋଠର ତାଲିକା ଦିଆଯାଇଛି, ସେଥିରେ ସେମାନଙ୍କ ବ୍ୟବହାର ଅଧିକାର ବାବଦରେ ମଧ୍ୟ ଦିଆଯାଇଛି ।\nସେଥିରେ ବୋଧେ [[{{MediaWiki:Listgrouprights-helppage}}|ଅଧିକ ବ୍ୟକ୍ତିଗତ ବିବରଣୀ ଥାଇପାରେ]] ।",
-       "listgrouprights-key": "* <span class=\"listgrouprights-granted\">à¬\85ନà­\81ମà­\8bଦିତ à¬\85ଧିà¬\95ାର</span>\n* <span class=\"listgrouprights-revoked\">ଫà­\87ରାà¬\87 à¬¨à¬¿à¬\86ଯାଇଥିବା ଅଧିକାର</span>",
+       "listgrouprights-key": "* <span class=\"listgrouprights-granted\">à¬\85ନà­\81ମà­\8bଦିର à¬\85ଧିà¬\95ାର</span>\n* <span class=\"listgrouprights-revoked\">à¬\85à¬\9fà¬\95ାଯାଇଥିବା ଅଧିକାର</span>",
        "listgrouprights-group": "ଗୋଠ",
        "listgrouprights-rights": "ଅଧିକାର",
        "listgrouprights-helppage": "Help:ଗୋଠ ଅଧିକାର",
        "listgrouprights-removegroup-self": "{{PLURAL:$2|ଗୋଠଟିଏ|ଗୋଟି ଗୋଠ}} ନିଜ ଖାତାରୁ ହଟାଇବେ: $1",
        "listgrouprights-addgroup-self-all": "ନିଜ ଖାତାରେ ସବୁଯାକ ଗୋଠ ଯୋଡ଼ିବେ",
        "listgrouprights-removegroup-self-all": "ନିଜ ଖାତାରୁ ସବୁଯାକ ଗୋଠ ହଟାଇଦେବେ",
+       "listgrouprights-namespaceprotection-namespace": "ନେମସ୍ପେସ",
+       "listgrouprights-namespaceprotection-restrictedto": "ସଭ୍ୟଙ୍କୁ ସମ୍ପାଦନା ପାଇଁ ଦିଆଯାଇଥିବା ଅଧିକାର",
+       "trackingcategories": "ଶ୍ରେଣୀମାନ ତଦାରଖ କରାଯାଉଛି",
+       "trackingcategories-name": "ନାମ ମେସେଜ କରନ୍ତୁ",
+       "trackingcategories-nodesc": "କୌଣସି ବିବରଣ ନାହିଁ ।",
+       "trackingcategories-disabled": "ଶ୍ରେଣୀ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି",
        "mailnologin": "ଗୋଟିଏ ବି ପଠାଇବା ଠିକଣା ନାହିଁ",
        "mailnologintext": "ଆପଣ ନିଜ [[Special:Preferences|ପସନ୍ଦସବୁ]]ରେ [[Special:UserLogin|ଲଗ ଇନ]] କରିଥିଲେ ଓ ନିଜର ଏକ ସଚଳ ଇ-ମେଲ ଠିକଣା ଥିଲେ ଯାଇ ବାକି ସବୁ ସଭ୍ୟଙ୍କୁ ଇ-ମେଲ ପଠାଇପାରିବେ ।",
        "emailuser": "ଏହି ସଭ୍ୟଙ୍କୁ ଇମେଲ କରିବେ",
        "watchnologin": "ଲଗ‌‌ ଇନ କରିନାହାନ୍ତି",
        "addwatch": "ଦେଖଣାତାଲିକାରେ ଯୋଡ଼ିବେ",
        "addedwatchtext": "\"[[:$1]]\" ପୃଷ୍ଠାଟି ଆପଣଙ୍କ [[Special:Watchlist|ଦେଖଣାତାଲିକା]]ରେ ଯୋଡ଼ିଦିଆଗଲା ।\nଏହି ପୃଷ୍ଠାରେ ଭବିଷ୍ୟତର ଅଦଳ ବଦଳ ଓ ତାହା ସହ ଯୋଡ଼ା ଆଲୋଚନା ପୃଷ୍ଠା ସେଠାରେ ଦିଆଯିବ ।",
+       "addedwatchtext-short": "\"$1\" ପୃଷ୍ଠାଟି ଆପଣଙ୍କ ଦେଖଣାତାଲିକାରେ ଯୋଡ଼ାଗଲା ।",
        "removewatch": "ଦେଖଣା ତାଲିକାରୁ ହଟାଇବେ",
        "removedwatchtext": "\"[[:$1]]\" ପୃଷ୍ଠାଟି [[Special:Watchlist|ଆପଣଙ୍କ ଦେଖଣାତାଳିକା]]ରୁ ହଟାଗଲା ।",
+       "removedwatchtext-short": "\"$1\" ପୃଷ୍ଠାଟି ଆପଣଙ୍କ ଦେଖଣାତାଲିକାରୁ ହଟାଗଲା ।",
        "watch": "ଦେଖିବେ",
        "watchthispage": "ଏହି ପୃଷ୍ଠାଟିକୁ ଦେଖିବେ",
        "unwatch": "ଦେଖନାହିଁ",
        "unwatchthispage": "ଦେଖନ୍ତୁ ନାହିଁ",
        "notanarticle": "ବିଷୟବସ୍ତୁର ପୃଷ୍ଠାଟିଏ ନୁହେଁ",
        "notvisiblerev": "ଜଣେ ଅଲଗା ବ୍ୟବହାରକାରୀଙ୍କ ଦେଇ କରାଯାଇଥିବା ସେଶ ସଂସ୍କରଣଟି ଲିଭାଇଦିଆଗଲା ।",
-       "watchlist-details": "ଆପଣଙ୍କ ଦେଖଣା ତାଲିକାରେ ଆଲୋଚନା ପୃଷ୍ଠାକୁ ଛାଡ଼ି {{PLURAL:$1|$1 ଟି ପୃଷ୍ଠା|$1 ଟି ପୃଷ୍ଠା}} ଅଛି ।",
+       "watchlist-details": "ଆପଣଙ୍କ ଦେଖଣା ତାଲିକାରେ {{PLURAL:$1|$1 ଟି ପୃଷ୍ଠା|$1 ଟି ପୃଷ୍ଠା}} ଅଛି, ଆଲୋଚନା ପୃଷ୍ଠାମାନଙ୍କୁ ଅଲଗା ଗଣାଯାଇନାହିଁ ।",
        "wlheader-enotif": "ଇମେଲ ସୂଚନା ସଚଳ କରାଗଲା ।",
        "wlheader-showupdated": "ଆପଣ ଶେଷଥର ଦେଖିଥିବା ପୃଷ୍ଠାଗୁଡ଼ିକ '''ମୋଟା ଅକ୍ଷର'''ରେ ଦେଖାଯାଉଅଛି ।",
        "wlshowlast": "ଶେଷ $1 ଘଣ୍ଟା $2 ଦିନ $3 ଦେଖାଇବେ",
        "contributions-title": "$1 ପାଇଁ ବ୍ୟବହାରକାରୀଙ୍କ ଦାନ",
        "mycontris": "ଅବଦାନ",
        "contribsub2": "$1 ($2) ପାଇଁ",
+       "contributions-userdoesnotexist": "ଇଉଜର ନାମ \"$1\" ତିଆରି କରାଯାଇ ନାହିଁ ।",
        "nocontribs": "ଏହି ନିର୍ଣ୍ଣାୟକବଳୀ ନିମନ୍ତେ କିଛି ବି ବଦଳ ମେଳ ଖାଇଲା ନାହିଁ ।",
        "uctop": "(ଏବେକାର)",
        "month": "ମାସରୁ (ଓ ତା ଆଗରୁ)",
        "sp-contributions-newbies-sub": "ନୂଆ ଖାତାମାନଙ୍କ ନିମନ୍ତେ",
        "sp-contributions-newbies-title": "ନୂଆ ଖାତାମାନଙ୍କ ନିମନ୍ତେ ସଭ୍ୟ ଅବଦାନ",
        "sp-contributions-blocklog": "ଲଗଟିକୁ ଅଟକାଇଦେବେ",
+       "sp-contributions-suppresslog": "ସଭ୍ୟଙ୍କ ଅବଦାନ ଲୁଚାଯାଇଛି",
        "sp-contributions-deleted": "ଲିଭାଇ ଦିଆଯାଇଥିବା ସଭ୍ୟଙ୍କ ଅବଦାନସମୂହ",
        "sp-contributions-uploads": "ଅପଲୋଡ଼ସବୁ",
        "sp-contributions-logs": "ଲଗସବୁ",
        "pageinfo-length": "ପୃଷ୍ଠା ଲମ୍ବ(ବାଇଟରେ)",
        "pageinfo-article-id": "ପୃଷ୍ଠା ଆଇଡ଼ି",
        "pageinfo-language": "ପୃଷ୍ଠା ବିଷୟବସ୍ତୁର ଭାଷା",
-       "pageinfo-robot-policy": "à¬\96à­\8bà¬\9cିବା à¬\87à¬\9eà­\8dà¬\9cିନ à¬¸à­\8dଥିତି",
-       "pageinfo-robot-index": "ସà­\82à¬\9aà­\80ପତà­\8dର à¬\95ରିହà­\87à¬\89ଥିବା",
-       "pageinfo-robot-noindex": "ସà­\82à¬\9aà­\80ପତà­\8dର à¬\95ରିହà­\87à¬\89ନଥିବା",
+       "pageinfo-robot-policy": "ସà­\8dà­±à­\9fà¬\82à¬\9aାଳà¬\95 (bot) à¬¦à­\8dୱାରା à¬¸à­\82à¬\9aà­\80 à¬¨à¬¿à¬°à­\8dମିତ",
+       "pageinfo-robot-index": "à¬\85ନà­\81ମà­\8bଦିତ",
+       "pageinfo-robot-noindex": "à¬\85ନà­\81ନମà­\8bଦିତ",
        "pageinfo-views": "ଦେଖଣା ସଂଖ୍ୟା",
        "pageinfo-watchers": "ପୃଷ୍ଠା ଦେଖଣାହାରି ସଂଖ୍ୟା",
        "pageinfo-few-watchers": "$1ରୁ କମ {{PLURAL:$1|ଦେଖଣାକାରୀ|ଦେଖଣାକାରୀଗଣ}}",
-       "pageinfo-redirects-name": "ଏହି ପୃଷ୍ଠାକୁ ଲେଉଟାଣି ଅଛି",
+       "pageinfo-redirects-name": "ଏହି ପୃଷ୍ଠା ସହ ସମ୍ବନ୍ଧିତ ପୁନର୍ପ୍ରେରଣ",
        "pageinfo-subpages-name": "ଏହି ପୃଷ୍ଠାରେ ଥିବା ଉପପୃଷ୍ଠା",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|redirect|redirects}}; $3 {{PLURAL:$3|non-redirect|non-redirects}})",
        "pageinfo-firstuser": "ପୃଷ୍ଠା ତିଆରିକରିଛନ୍ତି",
        "svg-long-desc": "SVG ଫାଇଲ, ସାଧାରଣ ମାପ $1 × $2 ପିକ୍ସେଲ, ଫାଇଲ ଆକାର: $3",
        "svg-long-desc-animated": "Animated SVG ଫାଇଲ, ସାଧାରଣ ମାପ $1 × $2 ପିକ୍ସେଲ, ଫାଇଲ ଆକାର: $3",
        "svg-long-error": "ଅବୈଧ SVG ଫାଇଲ: $1",
-       "show-big-image": "ପà­\81ରା à¬¬à¬¡à¬¼ à¬\86à¬\95ାରରà­\87",
+       "show-big-image": "ମà­\82ଳ à¬«à¬¾à¬\87ଲ",
        "show-big-image-preview": "ଏହି ଦେଖଣାର ଆକାର: $1 ।",
        "show-big-image-other": "ବାକି {{PLURAL:$2|ରେଜୋଲୁସନ|ରେଜୋଲୁସନ}}: $1.",
        "show-big-image-size": "$1 × $2 ପିକ୍ସେଲ",
        "hours-ago": "$1 {{PLURAL:$1|ଘଣ୍ଟା}} ଆଗରୁ",
        "minutes-ago": "$1 {{PLURAL:$1|ମିନିଟ|ମିନିଟ}} ଆଗରୁ",
        "seconds-ago": "$1 {{PLURAL:$1|ସେକେଣ୍ଡ|ସେକେଣ୍ଡ}} ଆଗରୁ",
+       "monday-at": "ସୋମବାର, $1 ବେଳେ",
+       "tuesday-at": "ମଙ୍ଗଳବାର, $1 ବେଳେ",
+       "wednesday-at": "ବୁଧବାର, $1 ବେଳେ",
+       "thursday-at": "ଗୁରୁବାର, $1 ବେଳେ",
+       "friday-at": "ଶୁକ୍ରବାର, $1 ବେଳେ",
+       "saturday-at": "ଶନିବାର, $1 ବେଳେ",
+       "sunday-at": "ରବିବାର, $1 ବେଳେ",
+       "yesterday-at": "ଗତକାଲି, $1 ବେଳେ",
        "bad_image_list": "ଗଢ଼ଣଟି ଏମିତି ହେବ:\n\nକେବଳ (ଯେଉଁ ଧାଡ଼ିଗୁଡ଼ିକ * ରୁ ଆରମ୍ଭ ହୋଇଥାଏ) ସେହି ସବୁକୁ ହିସାବକୁ ନିଆଯିବ ।\nଗୋଟିଏ ଧାଡ଼ିର ପ୍ରଥମ ଲିଙ୍କଟି ଗୋଟିଏ ଖରାପ ଫାଇଲର ଲିଙ୍କ ହୋଇଥିବା ଦରକାର ।\nପ୍ରଥମ ଲିଙ୍କ ପରର ସବୁ ଲିଙ୍କକୁ ନିଆରା ବୋଲି ଧରାଯିବ । ମାନେ, ସେଇସବୁ ପୃଷ୍ଠାଦରେ ଯେଉଁଠି ଫାଇଲଟି ଧାଡ଼ି ଭିତରେ ରହିଥିବ ।",
        "metadata": "ମେଟାଡାଟା",
        "metadata-help": "ଏହି ଫରଦଟିରେ ଗୁଡ଼ାଏ ଅଧିକ କଥା ଅଛି, ବୋଧହୁଏ ଡିଜିଟାଲ କାମେରା କିମ୍ବା ସ୍କାନରରେ ନିଆଯାଇଛି । ଯଦି ଫାଇଲଟି ତାର ମୂଳ ଭାଗଠୁ ବଦଳାଜାଇଥାଏ ତେବେ କିଛି ଅଁଶ ଠିକ ଭାବେ ଦେଖାଯାଇ ନପାରେ ।",
        "exif-compression-3": "CCITT ଗୋଠ ୩ ଫାକ୍ସ ଏନକୋଡ଼ିଙ୍ଗ",
        "exif-compression-4": "CCITT ଗୋଠ ୪ ଫାକ୍ସ ଏନକୋଡ଼ିଙ୍ଗ",
        "exif-copyrighted-true": "ସତ୍ଵାଧିକାର ଥିବା",
-       "exif-copyrighted-false": "ପବà­\8dଲିà¬\95 à¬¡à­\8bମà­\87ନ",
+       "exif-copyrighted-false": "à¬\95ପିରାà¬\87à¬\9f à¬¤à¬¥à­\8dà­\9f à¬¦à¬¿à¬\86ଯାà¬\87ନାହିà¬\81",
        "exif-unknowndate": "ଅଜଣା ତାରିଖ",
        "exif-orientation-1": "ସାଧାରଣ",
        "exif-orientation-2": "ଭୂସମାନ୍ତର ଭାବେ ବୁଲାଇଦିଆଯାଇଛି",
        "imgmultipagenext": "ପର ପୃଷ୍ଠା →",
        "imgmultigo": "ଯିବା!",
        "imgmultigoto": "$1 ପୃଷ୍ଠାକୁ ଯିବେ",
+       "img-lang-default": "(ଡିଫଲ୍ଟ ଭାଷା)",
        "ascending_abbrev": "ସାନରୁ ବଡ କ୍ରମରେ",
        "descending_abbrev": "ବଖାଣ",
        "table_pager_next": "ପର ପୃଷ୍ଠା",
        "watchlistedit-raw-done": "ଆପଣଙ୍କ ଦେଖଣା ତାଲିକାଟି ଅପଡେଟ ହେଇଯାଇଛି ।",
        "watchlistedit-raw-added": "{{PLURAL:$1|ନାମଟିଏ|$1 ଗୋଟି ନାମ}} ଯୋଗ କରାଗଲା:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|ନାମଟିଏ|$1 ଗୋଟି ନାମ}} କାଢ଼ିଦିଆଗଲା:",
+       "watchlistedit-clear-titles": "ନାମ:",
        "watchlisttools-view": "ଦରକାରୀ ବଦଳଗୁଡ଼ିକ ଦେଖାଇବେ",
        "watchlisttools-edit": "ଦେଖିବା ତାଲିକାଟିକୁ ଦେଖିବେ ଓ ବଦଳାଇବେ",
        "watchlisttools-raw": "ଫାଙ୍କା ଦେଖଣା ତାଲିକାଟିର ସମ୍ପାଦନା କରିବେ",
        "version-hook-name": "ହୁକ ନାମ",
        "version-hook-subscribedby": "କାହା ଦେଇ ମଗାଯାଇଛି",
        "version-version": "(ଭାଗ $1)",
-       "version-license": "ଲାà¬\87ସà­\87ନà­\8dସ",
+       "version-license": "ମିଡ଼ିà¬\86à¬\89à¬\87à¬\95ି à¬¸à­\8dୱତà­\8dà­±",
        "version-ext-license": "ଲାଇସେନ୍ସ",
        "version-ext-colheader-name": "ଏକ୍ସଟେନସନ",
        "version-ext-colheader-version": "ସଂସ୍କରଣ",
        "version-entrypoints": "ନିବେଶ ହେଉଥିବା ସ୍ଥାନର URLଗୁଡିକ",
        "version-entrypoints-header-entrypoint": "ପ୍ରବେଶ ବିନ୍ଦୁ",
        "version-entrypoints-header-url": "ଇଉଆରଏଲ",
+       "redirect-submit": "ଯାଆନ୍ତୁ",
+       "redirect-lookup": "ଖୋଜନ୍ତୁ:",
+       "redirect-value": "ମୂଲ୍ୟ:",
+       "redirect-user": "ସଭ୍ୟ ଆଇଡ଼ି",
+       "redirect-page": "ପୃଷ୍ଠା ଆଇଡ଼ି",
+       "redirect-revision": "ପୃଷ୍ଠା ସଂସ୍କରଣ",
+       "redirect-file": "ଫାଇଲ ନାମ",
+       "redirect-not-exists": "ମୂଳ୍ୟ ମିଳିଲା ନାହିଁ",
        "fileduplicatesearch": "ଏହାର ନକଲ ପୃଷ୍ଠା ଖୋଜିବେ ।",
        "fileduplicatesearch-summary": "ହାସ୍ ମୂଲ୍ୟକୁ ନେଇ ଦୁଇଥର ଥିବା ଫାଇଲ ଖୋଜନ୍ତୁ ।",
        "fileduplicatesearch-legend": "ନକଲ ପାଇଁ ଖୋଜନ୍ତୁ ।",
        "fileduplicatesearch-result-n": "\"$1\" ଫାଇଲର {{PLURAL:$2|1 ଗୋଟି ଏକାଭଳି|$2 ଗୋଟି ଏକାଭଳି}} ଫାଇଲ ଅଛି ।",
        "fileduplicatesearch-noresults": "\"$1\" ନାମରେ ଗୋଟିଏ ବି ଫାଇଲ ମିଳିଲା ନାହିଁ ।",
        "specialpages": "ବିଶେଷ ପୃଷ୍ଠା",
+       "specialpages-note-top": "ଲିଜେଣ୍ଡ",
        "specialpages-note": "* ସାଧାରଣ ବିଶେଷ ପୃଷ୍ଠାମାନ ।\n* <span class=\"mw-specialpagerestricted\">କିଳାଯାଇଥିବା ବିଶେଷ ପୃଷ୍ଠାମାନ ।</span>",
        "specialpages-group-maintenance": "ରକ୍ଷଣାବେକ୍ଷଣା ବିବରଣୀ",
        "specialpages-group-other": "ବାକି ବିଶେଷ ପୃଷ୍ଠା",
        "tags-tag": "ଚିହ୍ନ ନାମ",
        "tags-display-header": "ବଦଳ ତାଲିକାରେ ଦେଖଣା",
        "tags-description-header": "ଅର୍ଥର ପୁରା ବିବରଣୀ",
+       "tags-active-header": "ସକ୍ରିୟ କି?",
        "tags-hitcount-header": "ଚିହ୍ନିତ ବଦଳ",
+       "tags-active-yes": "ହଁ",
+       "tags-active-no": "ନାଁ",
        "tags-edit": "ସମ୍ପାଦନା",
        "tags-hitcount": "$1 {{PLURAL:$1|ବଦଳ|ବଦଳସବୁ}}",
        "comparepages": "ବଦଳ ତୁଳନା କରିବେ",
        "dberr-problems": "କ୍ଷମାକରିବେ !  ଏହି ସାଇଟରେ ଟିକେ ବୈଷୟିକ ତ୍ରୁଟି ଦେଖାଦେଇଛି ।",
        "dberr-again": "କିଛି ମିନିଟ ଅପେକ୍ଷା କରିବା ସହ ଆଉ ଥରେ ଲୋଡ କରନ୍ତୁ ।",
        "dberr-info": "(ଡାଟାବେସ ସର୍ଭର ସହ ଯୋଗାଯୋଗ କରିପାରିଲୁ ନାହିଁ: $1)",
+       "dberr-info-hidden": "(ଡାଟାବେସ ସର୍ଭର ସହ ଯୋଗାଯୋଗ କରିପାରିଲୁ ନାହିଁ)",
        "dberr-usegoogle": "ଏହି ସମୟ ଭିତରେ ଆପଣ ଗୁଗଲରେ ଖୋଜି ପାରିବେ ।",
        "dberr-outofdate": "ଜାଣିରଖନ୍ତୁ ଯେ ଆମ ବିଷୟବସ୍ତୁକୁ ନେଇ ସେମାନେ ତିଆରିଥିବା ସୂଚି ବହୁପୁରାତନ ହୋଇପାରେ ।",
        "dberr-cachederror": "ଏହା ଅନୁରୋଧ କରାଯାଇଥିବା ପୃଷ୍ଠାର ଏକ ଆଗରୁ ସାଇତାଥିବା ନକଲ ଓ ସତେଜ ହୋଇ ନଥାଇପାରେ ।",
        "htmlform-selectorother-other": "ବାକି",
        "htmlform-no": "ନାହିଁ",
        "htmlform-yes": "ହଁ",
+       "htmlform-chosen-placeholder": "ବିକଳ୍ପଟିଏ ବାଛନ୍ତୁ",
+       "htmlform-cloner-create": "ଅଧିକ ଯୋଡ଼ନ୍ତୁ",
+       "htmlform-cloner-delete": "ବାହାର କରନ୍ତୁ",
+       "htmlform-cloner-required": "ଅତି କମରେ ଗୋଟିଏ ମୂଲ୍ୟ ଲୋଡ଼ା",
        "sqlite-has-fts": "ପୁରା ଟେକ୍ସ୍ଟ ଖୋଜା ସହଯୋଗ ସହିତ $1",
        "sqlite-no-fts": "ପୁରା ଟେକ୍ସ୍ଟ ଖୋଜା ସହଯୋଗ ବିନା $1",
-       "logentry-delete-delete": "$1 $3 ପୃଷ୍ଠାଟି ଲିଭାଇଦେଲେ",
-       "logentry-delete-restore": "$1 $3 ପୃଷ୍ଠାଟି ପୁନସ୍ଥାପନ କଲେ",
+       "logentry-delete-delete": "$1, $3 ପୃଷ୍ଠାଟି {{GENDER:$2|ଲିଭାଇଦେଲେ}}",
+       "logentry-delete-restore": "$1, $3 ପୃଷ୍ଠାଟି {{GENDER:$2|ପୁନସ୍ଥାପନ କଲେ}}",
        "logentry-delete-event": "$1 $3 ବେଳେ {{PLURAL:$5|ଏକ ଇତିହାସର ଘଟଣାର|$5 ଇତିହାସର ଘଟଣାମାନଙ୍କର}} ଦେଖଣା ବଦଳାଇ ଦେଲେ: $4",
        "logentry-delete-revision": "$1 $3 ପୃଷ୍ଠାରେ {{PLURAL:$5|ସଙ୍କଳନଟିଏର|$5 ସଙ୍କଳନମାନଙ୍କର}} ଦେଖଣା ବଦଳାଇ ଦେଲେ: $4",
        "logentry-delete-event-legacy": "$1 $3 ରେ ଇତିହାସର ଘଟଣାସବୁର ଦେଖଣା ବଦଳାଇଦେଲେ",
index 69f8e48..405c9c0 100644 (file)
        "tog-hideminor": "Vaschdegg klääne Bearwaidunge",
        "tog-hidepatrolled": "Vaschdegg gsischdede Ännarunge",
        "tog-extendwatchlist": "Zaisch alle Ännarunge unn ned nur die ledschde",
-       "tog-showtoolbar": "Wergzaisch fas Beawaide zaische (dodezu brauchd's JavaScript)",
+       "tog-showtoolbar": "Wergzaisch fas Schaffe zaische",
        "tog-previewontop": "Vorbligg owwahalwb vum Beaawaidungsfenschda zaische",
        "tog-previewonfirst": "Zaischen Vorbligg baim erschdemol Schaffe",
-       "tog-oldsig": "Voahonneni Unnaschfrid",
-       "tog-uselivepreview": "Uuvazeschada Vorbligg (bneedischd JavaScript) (vasugswais)",
+       "tog-oldsig": "Voahonneni Unnaschrifd",
+       "tog-uselivepreview": "Uuvazeschada Vorbligg (vasugswais)",
        "tog-showhiddencats": "Zaisch vaschdeglde Grubbe",
        "underline-always": "Imma",
        "underline-never": "Gaaned",
        "oct": "Ogd",
        "nov": "Nov",
        "dec": "Dez",
+       "january-date": "$1. Janua",
+       "february-date": "$1. Februa",
+       "march-date": "$1. Meaz",
+       "april-date": "$1. Abril",
+       "may-date": "$1. Mai",
+       "june-date": "$1. Juni",
+       "august-date": "$1. Auguschd",
+       "september-date": "$1. Sebdemba",
+       "october-date": "$1. Ogdowa",
+       "november-date": "$1. Nowemba",
+       "december-date": "$1. Dezemba",
        "pagecategories": "{{PLURAL:$1|Sachgrubb|Sachgrubbe}}",
        "category_header": "Saide inde Sachgrubb „$1“",
        "subcategories": "Unnagrubbe",
        "navigation": "Nawigadzion",
        "and": "&#32;unn",
        "qbfind": "Finne",
-       "qbbrowse": "Duaschschdewere",
-       "qbedit": "Beawaide",
+       "qbbrowse": "Schdewere",
+       "qbedit": "Schaffe",
        "qbpageoptions": "Die Said",
        "qbmyoptions": "Moi Saide",
        "faq": "Ofd gschdeldi Froche",
        "vector-action-protect": "Schidze",
        "vector-action-undelete": "Zriggbringe",
        "vector-view-create": "Õleesche",
-       "vector-view-edit": "Beawaide",
+       "vector-view-edit": "Drõ schaffe",
        "vector-view-history": "Dadaigschischd",
        "vector-view-view": "Lese",
        "vector-view-viewsource": "Gwelltegschd zaische",
        "permalink": "Schdendischa Lingg",
        "print": "Drugge",
        "view": "Ogugge",
-       "edit": "Beawaide",
+       "edit": "Schaffe",
+       "edit-local": "Gugg uff $1",
        "create": "Õleesche",
-       "editthispage": "Die Said beawaide",
+       "editthispage": "Onde Said schaffe",
        "create-this-page": "Mach die Said",
        "delete": "Lesche",
        "deletethispage": "Lesch die Said",
+       "undeletethispage": "Said widdaheaschdelle",
        "undelete_short": "{{PLURAL:$1|ä Ännarung|$1 Ännarunge}} widdaheaschdelle",
        "viewdeleted_short": "Zaisch {{PLURAL:$1|ä gleschdi Ännarung|$1 gleschde Ännarunge}}",
        "protect": "schidze",
        "redirectedfrom": "(Nochgschiggd worre vun $1)",
        "redirectpagesub": "Nochschigg-Said",
        "lastmodifiedat": "Die Said ischs ledschde Mol gännad worre õm $1, õm $2.",
-       "viewcount": "Die Said isch bis jedz {{PLURAL:$1|$1|$1}} mol uffgrufe worre.",
+       "viewcount": "Die Said isch bis jedz {{PLURAL:$1|ämol1|$1 mol}} uffgrufe worre.",
        "protectedpage": "Said schidze",
        "jumpto": "Hubs uff:",
        "jumptonavigation": "Nawigadzion",
        "pool-errorunknown": "Ubkonnde Irrdumm",
        "aboutsite": "Iwwa {{SITENAME}}",
        "aboutpage": "Project:Iwwa",
-       "copyright": "Was do drin schded isch unna $1 vafieschba.",
+       "copyright": "Was do drin schded isch unna $1 vafieschba, wonn nedd onnaschda vameagd.",
        "copyrightpage": "{{ns:project}}:Urhewareschd",
        "currentevents": "Aggduelli Gscheniss",
        "currentevents-url": "Project: Leschdi Gschneniss",
        "disclaimers": "Hafdungsausschluß",
        "disclaimerpage": "Project:Impressum",
-       "edithelp": "Unaschdizung fas Beawaide",
+       "edithelp": "Unaschdizung fas Schaffe",
        "mainpage": "Schdadsaid",
        "mainpage-description": "Schdadsaid",
        "policy-url": "Project:Grundsedz",
        "ok": "Alla gud",
        "retrievedfrom": "Vun \"$1\"",
        "youhavenewmessages": "Du hoschd $1 ($2).",
-       "newmessagesdifflinkplural": "ledschdi {{PLURAL:$1|Ännarung|Ännarunge}}",
+       "newmessagesdifflinkplural": "ledschdi {{PLURAL:$1|Ännarung|999=Ännarunge}}",
        "youhavenewmessagesmulti": "Do hoschd ä Nochrischd grischd: $1",
-       "editsection": "beawaide",
-       "editold": "beawaide",
+       "editsection": "schaffe",
+       "editold": "schaffe",
        "viewsourceold": "Gwelltegschd õgugge",
-       "editlink": "beawaide",
+       "editlink": "schaffe",
        "viewsourcelink": "Gwell õgugge",
        "editsectionhint": "Deel ännare: $1",
        "toc": "Inhald",
        "nosuchspecialpage": "Schbezialsaid hodds nedd",
        "error": "Irrdumm",
        "databaseerror": "Daadebongg-Irrdumm",
+       "databaseerror-error": "Fehla: $1",
+       "laggedslavemode": "<strong>Baßma uff:</strong> Die Said hodd viellaischd die ledschde Ännarunge nedd.",
        "readonly": "Daadebongg blogiead",
        "missing-article": "De Tegschd fa „$1“ $2 isch inde Daadebongg nedd gfunne worre.\n\nNoamalawees heeßd des, dass die Said gleschd worre isch.\n\nWonnse des awwa nedd isch, hoschd villaischdn Irdumm inde Daadebongg gfunne.\nBidde meldsm [[Special:ListUsers/sysop|Adminischdrador]], un gebbde URL dzu õ.",
        "missingarticle-rev": "(Ausgawenumma#: $1)",
        "virus-unknownscanner": "Uubekonnda Viresucha:",
        "welcomeuser": "Willkumme, $1!",
        "yourname": "Middawaidanõme:",
+       "userlogin-yourname": "Middawaida",
+       "userlogin-yourname-ph": "Gebb doin Nome oi",
+       "createacct-another-username-ph": "Middawaida",
        "yourpassword": "Kennword:",
+       "userlogin-yourpassword": "Password",
+       "userlogin-yourpassword-ph": "Gebb doi Password oi",
+       "createacct-yourpassword-ph": "Gebbä Password oi",
        "yourpasswordagain": "Kennword nomol oigewe:",
+       "createacct-yourpasswordagain": "Password bschdedische",
+       "createacct-yourpasswordagain-ph": "Bschdedisch doi Password",
        "remembermypassword": "Moi Kennword uffm Brausa merge (hegschdns fa $1 {{PLURAL:$1|Daach|Daach}})",
        "login": "Õmelde",
        "nav-login-createaccount": "Õmelde / Kondo õleesche",
        "userloginnocreate": "Oilogge",
        "logout": "Uffhere",
        "userlogout": "Uffhere",
+       "userlogin-noaccount": "Hoschd kä Kondo?",
        "nologin": "Hoschd noch kä Kondo? $1",
        "nologinlink": "E Kondo õleesche",
        "createaccount": "Kondo õleesche",
        "updated": "(Gännad)",
        "note": "'''Hiwes:'''",
        "previewnote": "'''Deng'g drõõ, dasses nua e Vorschau isch.'''\nDoi Ännarunge sinn noch nedd gschbaischadd worre!",
-       "editing": "Õm $1 beawaide",
+       "editing": "Õm $1 schaffe",
        "creating": "Magsch $1",
-       "editingsection": "$1 beawaide (de Deel)",
-       "editingcomment": "$1 beawaide (de Deel)",
+       "editingsection": "$1 schaffe (Deel)",
+       "editingcomment": "$1 schaffe (Deel)",
        "editconflict": "Schdraid ums Ännare: $1",
        "yourtext": "Doin Tegschd",
        "storedversion": "Gschbaischerdi Version",
        "revdelete-show-file-submit": "Ja",
        "revdelete-hide-image": "Vaschdegglde Inhald",
        "revdelete-hide-name": "Vaschdeggls",
-       "revdelete-hide-comment": "Vaschdeggls Resimee",
-       "revdelete-hide-user": "Vaschdeggl Middawaidanome/IP",
+       "revdelete-hide-comment": "Ännas Resimee",
+       "revdelete-hide-user": "Middawaidanome/IP-Address",
        "revdelete-radio-same": "(dudo nix ännare)",
-       "revdelete-radio-set": "Ja",
-       "revdelete-radio-unset": "",
+       "revdelete-radio-set": "Vaschdegld",
+       "revdelete-radio-unset": "Sischdba",
        "revdelete-log": "Grund:",
        "revdelete-submit": "Uff die {{PLURAL:$1|gewehld Asugab|gewehldi Ausgawe}} owende",
        "revdel-restore": "Sischdbakaid ännare",
        "shown-title": "Zaisch $1 {{PLURAL:$1|Eagewnis}} bro Said",
        "viewprevnext": "Gugg ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''Dohods ä Said \"[[:$1]]\".'''",
-       "searchmenu-new": "'''Mach die Said „[[:$1]]“ im Wiki.'''",
+       "searchmenu-new": "<strong>Mach die Said „[[:$1]]“ im Wiki!</strong> {{PLURAL:$2|0=|Gugg a uffde Said, wu middoina Such gfunne worre isch.|Gugg a uffde gfunnene Sucheagewnis.}}",
        "searchprofile-articles": "Inhald",
        "searchprofile-project": "Hilf- un Brojegdsaide",
        "searchprofile-images": "Multimedia",
        "search-section": "(Abschnidd $1)",
        "search-suggest": "Hoschd gemäänd: $1",
        "search-interwiki-caption": "Schweschterprojekt",
-       "search-interwiki-default": "$1 Ergebnis:",
+       "search-interwiki-default": "Eagewnis vun $1:",
        "search-interwiki-more": "(meh)",
        "search-relatedarticle": "Vawond",
        "searcheverything-enable": "Gugg iwwaraal",
        "default": "Schdondad",
        "youremail": "E-Mail:",
        "username": "{{GENDER:$1|Middawaida}}:",
-       "uid": "{{GENDER:$1|Middawaida}}-Numma:",
        "prefs-memberingroups": "{{GENDER:$2|Middglied}} vun {{PLURAL:$1|Grubb|Grubbe}}:",
        "yourrealname": "Birschalischa Nõme:",
        "yourlanguage": "Schbrooch:",
        "yournick": "Naiji Unnaschfrid",
-       "yourgender": "Gschleschd:",
-       "gender-unknown": "Ghoim gkalde",
-       "gender-male": "Männlisch",
-       "gender-female": "Waiblisch",
+       "yourgender": "Wasfa'ä Gschleschd bischdn?",
+       "gender-unknown": "Do saach isch nix",
+       "gender-male": "Isch binnen Monn",
+       "gender-female": "Isch binä Fraa",
        "prefs-help-email": "E-mail muss ned soi, awwa wead fas naijsedze vum Kennwoad bneedischd, wonns vagesse hoschd.",
        "prefs-help-email-others": "Konschd a wehle, ob õnnare disch iwwan Lingg uff doina Dischbedier-Said õschbresche kennen.\nDoi Address werd ned gzaischd, wõnse midda babbln.",
        "prefs-diffs": "Unaschied",
        "right-undelete": "Said widdaheaschdelle",
        "newuserlogpage": "Naijõmeldungs-Logbuch",
        "rightslog": "Middawaidareschd-Logbuch",
-       "action-edit": "die Said beawaide",
+       "action-edit": "onde Said schaffe",
        "nchanges": "$1 {{PLURAL:$1|Ännarung|Ännarunge}}",
        "recentchanges": "Ledschdi Ännarunge",
        "recentchanges-legend": "Wehl ä Õzaisch fa die ledschde Ännarunge",
        "recentchanges-label-minor": "S'ische glenni Beawaidung",
        "recentchanges-label-bot": "Ännarunge duaschn Bod",
        "recentchanges-label-unpatrolled": "Die Ännarung isch noch nedd iwwabriefd worre",
-       "rcnotefrom": "Unne sinn Ännarunge said '''$2''' (bis '''$1''').",
+       "rcnotefrom": "Unne sinn Ännarunge said <strong>$2<-strong> (bis <strong>$1<-strong>).",
        "rclistfrom": "Zaisch die ledschde Ännarunge ab $3 $2",
        "rcshowhideminor": "Glenni Ännarunge $1",
        "rcshowhidebots": "Bots $1",
        "randompage": "Irschndn Adiggl",
        "statistics": "Schdadischdigge",
        "statistics-pages": "Saide",
-       "brokenredirects-edit": "beawaide",
+       "brokenredirects-edit": "schaffe",
        "brokenredirects-delete": "lesche",
        "withoutinterwiki-submit": "Zaische",
        "nbytes": "$1 {{PLURAL:$1|Byte|Bytes}}",
        "ncategories": "$1 {{PLURAL:$1|Sachgrubb|Sachgrubbe}}",
        "ninterwikis": "$1 {{PLURAL:$1|interwiki|interwikis}}",
        "nlinks": "$1 {{PLURAL:$1|Lingg|Linggs}}",
-       "nmembers": "$1 {{PLURAL:$1|Middawaida|Middawaida}}",
+       "nmembers": "$1 {{PLURAL:$1|Oidraach|Oidrääch}}",
        "nrevisions": "$1 {{PLURAL:$1|Ännarung|Ännarunge}}",
        "nimagelinks": "Used on $1 {{PLURAL:$1|Said|Saide}}",
        "ntransclusions": "oigsedzd uff $1 {{PLURAL:$1|Said|Saide}}",
        "booksources-go": "Geh",
        "log": "Logbischa",
        "allpages": "Alle Saide",
-       "alphaindexline": "vun $1 bis $2",
        "prevpage": "Voriche Said ($1)",
        "allpagesfrom": "Saide aazaische wu aafange mid:",
        "allpagesto": "Saide aazaische wu ufhere mid:",
        "watch": "Beowachde",
        "watchthispage": "Die Said beowachde",
        "unwatch": "Nemme beowachde",
-       "watchlist-details": "S hodd {{PLURAL:$1|$1 Said|$1 Saide}} uff doina Beowachdungslischd, Dischbediersaide zeeln nedd.",
+       "watchlist-details": "S hodd {{PLURAL:$1|$1 Said|$1 Saide}} uff doina Beowachdungslischd, Dischbediersaide zeeln nedd gdrennd.",
        "wlshowlast": "Die ledschde $1 Schdunnd $2 Daach $3 zaische",
        "watchlist-options": "Meschlischkaide vunde Beowachdungslischd",
        "watching": "Beowachde ...",
        "protect_expiry_old": "Zaidraum licht in de Vergangehääd.",
        "protect-text": "Du kannscht de Schutzstatus vun de Said '''$1''' aagucke un ännere.",
        "protect-locked-access": "Doi Kondo hodd kä Reschd um de Schudzsdadus vunna Said zu ännare.\nDo hodds die Oischdellunge vunde Said '''$1''':",
-       "protect-cascadeon": "Die Said isch gschizd, wail se {{PLURAL:$1|zu derre Said ghert|zu denne Saide ghert}}, wu e Kaskadesperrung gelt.\nDer Schutzstatus vun derre Said kannscht ännere, awwer des hot kää Aifluss uff d Kaskadesperrung.",
+       "protect-cascadeon": "Die Said isch gschizd, wail se {{PLURAL:$1|zu derre Said kead|zu denne Saide kead}}, wuä Kaskadeschberrung gild.\nÄnnarunge vum Saideschudz hodd awwa kän Oifluß uff die Kaskadeschberrung.",
        "protect-default": "Alle Middawaida erlauwe",
        "protect-fallback": "Bloß fa Laid mid \"$1\" Bereschdischung",
        "protect-level-autoconfirmed": "Naiji un nedd õgmeld Middawaida schberre",
        "protect-cantedit": "Du kannscht de Schutzstatus vun derre Said nit ännere, wail Du nid d Berechdichung dezu hoscht.",
        "restriction-type": "Berechdichung:",
        "restriction-level": "Schudsewene:",
-       "restriction-edit": "Beawaide",
+       "restriction-edit": "Schaffe",
        "restriction-move": "Verschiewe",
        "undelete": "Widderherschdelle",
        "undeletebtn": "Widderherschdelle",
        "tooltip-pt-login": "Du konnschd disch õmelde, awwa mugschd ned",
        "tooltip-pt-logout": "Uffhere",
        "tooltip-ca-talk": "Iwwa d Inhaldssaid dischbediere",
-       "tooltip-ca-edit": "Du konnschd die Said beawaide.\nBidde nemmde Vorschau-Gnobb vorm Schbaischare",
+       "tooltip-ca-edit": "Du konnschd onde Said schaffe.\nBidde nemmde Vorschau-Gnobb vorm Schbaischare",
        "tooltip-ca-addsection": "N'naije Abschnidd õleche",
        "tooltip-ca-viewsource": "Die Said isch gschizd. Du konnschdda de Gwelltegschd õgugge.",
        "tooltip-ca-history": "Ledschdi Ausgawe vunde Said",
        "file-nohires": "Ke heheri Ufflesung vafieschba.",
        "svg-long-desc": "SVG-Datei, Grundgreß $1 × $2 Pixels, Dadaigreß: $3",
        "show-big-image": "Uaschbringlischi Dadai",
-       "showhidebots": "(Bots $1)",
        "ilsubmit": "Such",
        "bad_image_list": "Uffbau: bloß Zaile, wu midm * õfonge werren briggsischdischd.\nDe erschd Lingg mussn Lingg zu änna uuerwinschde Dadai soi.\nÕnnare Linggs inde glaische Zail werren als Ausnõhm gnumme, des heesd, Saide, wu inde Dadai vorkumme dirfn.",
        "metadata": "Medadaade",
        "namespacesall": "alle",
        "monthsall": "alle",
        "watchlisttools-view": "Die wischdische Ännarunge õgugge",
-       "watchlisttools-edit": "Beowachdunglischd õgugge un beawaide",
-       "watchlisttools-raw": "Im große Tegschdfeld beawaide",
+       "watchlisttools-edit": "Beowachdunglischd õgugge un drõ schaffe",
+       "watchlisttools-raw": "Im große Tegschdfeld schaffe",
        "duplicate-defaultsort": "'''Baßma uff:''' De Schlissl \"$2\" dudde frijare Schlissl \"$1\" iwwaschraiwe.",
        "specialpages": "Schbezialsaide",
        "specialpages-group-other": "Onare bsundare Saide",
index 5c6e497..6998c57 100644 (file)
        "watchnologin": "Nie jesteś zalogowany",
        "addwatch": "Dodaj do listy obserwowanych",
        "addedwatchtext": "Strona „[[:$1|$1]]” została dodana do Twojej [[Special:Watchlist|listy obserwowanych]].\nKażda zmiana treści tej strony lub związanej z nią strony dyskusji zostanie odnotowana na tej liście.",
+       "addedwatchtext-short": "Strona „$1” została dodana do twojej listy obserwowanych.",
        "removewatch": "Usuń z listy obserwowanych",
        "removedwatchtext": "Strona „[[:$1]]” została usunięta z Twojej [[Special:Watchlist|listy obserwowanych]].",
+       "removedwatchtext-short": "Strona „$1” została usunięta z twojej listy obserwowanych.",
        "watch": "Obserwuj",
        "watchthispage": "Obserwuj",
        "unwatch": "Nie obserwuj",
index e49d587..aab1129 100644 (file)
        "contribslink": "contribs",
        "emaillink": "enviar um e-mail",
        "autoblocker": "Você foi automaticamente bloqueado, pois o seu Endereço IP foi recentemente usado por \"[[User:$1|$1]]\". \nO motivo apresentado para o bloqueio de $1 é: \"$2\".",
-       "blocklogpage": "Registro de bloqueio",
+       "blocklogpage": "Registro de bloqueios",
        "blocklog-showlog": "Este usuário já foi bloqueado anteriormente.\nO registro de bloqueio é fornecido abaixo, para referência:",
        "blocklog-showsuppresslog": "O usuário foi bloqueado e ocultado anteriormente.\nO registro de supressão é fornecido abaixo para referência:",
        "blocklogentry": "bloqueou \"[[$1]]\" por $2. $3",
index a55fa60..d0b5e25 100644 (file)
        "blocklogpage": "{{doc-logpage}}\n\nThe page name of [[Special:Log/block]]. Also appears in the drop down menu of [[Special:Log]] pages and in the action links of Special:Contributions/''Username'' pages (e.g. \"For Somebody (talk | block log | logs)\").\n\n{{Identical|Block log}}",
        "blocklog-showlog": "Parameters:\n* $1 - (Optional) the blocked user. Can be used for GENDER\nSee also:\n* {{msg-mw|Blocklog-showsuppresslog}}\n* {{msg-mw|Globalblocking-showlog}}",
        "blocklog-showsuppresslog": "Parameters:\n* $1 - (Optional) the blocked user. Can be used for GENDER",
-       "blocklogentry": "This is the text of an entry in the Block log, and recent changes, after hour (and date, only in the Block log) and sysop name:\n* $1 - the blocked user or IP (with link to contributions and talk)\n* $2 - the duration of the block (hours, days etc.) or the specified expiry date\n* $3 - contains \"(details) (''reason'')\"\nSee also:\n* {{msg-mw|Unblocklogentry}}\n* {{msg-mw|Reblock-logentry}}",
+       "blocklogentry": "This is the text of an entry in the Block log, and recent changes, after hour (and date, only in the Block log) and sysop name:\n* $1 - the blocked user or IP (with link to contributions and talk)\n* $2 - the duration of the block (hours, days etc.) or the specified expiry date\n* $3 - contains \"(details) (''reason'')\", or empty string\nSee also:\n* {{msg-mw|Unblocklogentry}}\n* {{msg-mw|Reblock-logentry}}",
        "reblock-logentry": "This is the text of an entry in the Block log (and Recent Changes), after hour (and date, only in the Block log) and sysop name.\n\nParameters:\n* $1 - the user being reblocked\n* $2 - the expiry time of the block\n* $3 - extra parameters like \"account creation blocked\" (they are automatically between brackets)",
        "blocklogtext": "Appears on top of [[Special:Log/block]].",
        "unblocklogentry": "This is the text of an entry in the Block log (and Recent Changes), after hour (and date, only in the Block log) and sysop name:\n* $1 is the user being unblocked",
index b00ad18..64676fd 100644 (file)
        "watchlistanontext": "Vă rugăm să vă $1 pentru a vizualiza sau edita elementele din lista dumneavoastră de pagini urmărite.",
        "watchnologin": "Nu sunteți autentificat",
        "addwatch": "Adăugă la lista de pagini urmărite",
-       "addedwatchtext": "Pagina „[[:$1]]” a fost adăugată la lista dumneavoastră de [[Special:Watchlist|pagini urmărite]].\nModificările viitoare efectuate asupra acestei pagini dar și asupra paginii de discuție asociată vor fi listate acolo.",
+       "addedwatchtext": "Pagina „[[:$1]]” a fost adăugată în lista dumneavoastră de [[Special:Watchlist|pagini urmărite]].\nModificările viitoare efectuate asupra acestei pagini dar și asupra paginii de discuție asociată vor fi listate acolo.",
+       "addedwatchtext-short": "Pagina „$1” a fost adăugată în lista dumneavoastră de pagini urmărite.",
        "removewatch": "Elimină din lista de pagini urmărite",
        "removedwatchtext": "Pagina „[[:$1]]” a fost eliminată din [[Special:Watchlist|lista de pagini urmărite]].",
+       "removedwatchtext-short": "Pagina „$1” a fost eliminată din lista de pagini urmărite.",
        "watch": "Urmărire",
        "watchthispage": "Urmărește pagina",
        "unwatch": "Nu mai urmări",
index 104c5ce..22a2dfc 100644 (file)
@@ -64,7 +64,8 @@
                        "Умар",
                        "לערי ריינהארט",
                        "Meshkov.a",
-                       "아라"
+                       "아라",
+                       "Eroha"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "movepagetalktext": "Присоединённая страница обсуждения будет также автоматически переименована, '''кроме случаев, когда:'''\n\n*Не пустая страница обсуждения уже существует под таким же именем или\n*Вы не поставили галочку в поле ниже.\n\nВ этих случаях, вы будете вынуждены переместить или объединить страницы вручную, если это нужно.",
        "movearticle": "Переименовать страницу",
        "moveuserpage-warning": "'''Внимание.''' Вы собираетесь переименовать страницу участника. Пожалуйста, обратите внимание, что переименована будет только страница, участник '''не''' будет переименован.",
-       "movecategorypage-warning": "<strong>Ð\9fÑ\80едÑ\83пÑ\80еждение:</strong> Ð\92Ñ\8b Ñ\81обиÑ\80аеÑ\82еÑ\81Ñ\8c Ð¿ÐµÑ\80еименовать страницу категории. Пожалуйста, обратите внимание, что будет перемещена только эта страница, а все страницы старой категории <em>не</em> будут перекатегоризованы в новую.",
+       "movecategorypage-warning": "<strong>Ð\9fÑ\80едÑ\83пÑ\80еждение:</strong> Ð\92Ñ\8b Ñ\81обиÑ\80аеÑ\82еÑ\81Ñ\8c Ð¿ÐµÑ\80емеÑ\81Ñ\82ить страницу категории. Пожалуйста, обратите внимание, что будет перемещена только эта страница, а все страницы старой категории <em>не</em> будут перекатегоризованы в новую.",
        "movenologintext": "Вы должны [[Special:UserLogin|представиться системе]],\nчтобы иметь возможность переименовать страницы.",
        "movenotallowed": "У вас нет разрешения переименовывать страницы.",
        "movenotallowedfile": "У вас нет разрешения переименовывать файлы.",
        "cant-move-user-page": "У вас нет разрешения переименовывать основные страницы участников.",
        "cant-move-to-user-page": "У вас нет прав переименовывать страницу в страницу участника (можно переименовать в подстраницу).",
        "cant-move-category-page": "У вас нет разрешения переименовывать страницы категорий.",
-       "cant-move-to-category-page": "У вас нет разрешения переименовывание страницы в страницу категории.",
+       "cant-move-to-category-page": "У вас нет разрешения переименовывать страницы в страницу категории.",
        "newtitle": "Новое название",
        "move-watch": "Включить эту страницу в список наблюдения",
        "movepagebtn": "Переименовать страницу",
        "watchlistedit-raw-done": "Ваш список наблюдения сохранён.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Была добавлена|Было добавлено|Были добавлены}} $1 {{PLURAL:$1|запись|записей|записи}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|Была удалена|Было удалено|Были удалены}} $1 {{PLURAL:$1|запись|записей|записи}}:",
-       "watchlistedit-clear-title": "Ð\9eÑ\87иÑ\89еннÑ\8bй Ñ\81пиÑ\81ок Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f",
+       "watchlistedit-clear-title": "СпиÑ\81ок Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f Ð¾Ñ\87иÑ\89ен",
        "watchlistedit-clear-legend": "Очистить список наблюдения",
        "watchlistedit-clear-explain": "Все записи будут удалены из вашего списка наблюдения",
        "watchlistedit-clear-titles": "Заголовки:",
index 5702a92..40defaf 100644 (file)
        "group": "समूहः :",
        "group-user": "योजकाः",
        "group-autoconfirmed": "स्वदृढितयोजकाः",
-       "group-bot": "बà¥\8bट्स्",
+       "group-bot": "बà¥\89ट्स्",
        "group-sysop": "प्रबन्धकाः",
        "group-bureaucrat": "अधिकारिणः",
        "group-suppress": "अलक्ष्यम्",
        "group-all": "(सर्वे)",
-       "group-user-member": "{{GENDER:$1|योजक}}",
+       "group-user-member": "{{GENDER:$1|योजक}}",
        "group-autoconfirmed-member": "{{GENDER:$1|स्वदृढितयोजकः}}",
        "group-bot-member": "{{GENDER:$1|बॉट्}}",
        "group-sysop-member": "{{GENDER:$1|प्रबन्धकः}}",
        "grouppage-bot": "{{ns:project}}:बॉट्स्",
        "grouppage-sysop": "{{ns:project}}:प्रबन्धकाः",
        "grouppage-bureaucrat": "{{ns:project}}:अधिकारिणः",
-       "grouppage-suppress": "{{ns:project}}:अक्ष्यम्",
+       "grouppage-suppress": "{{ns:project}}:à¤\85लà¤\95à¥\8dषà¥\8dयमà¥\8d",
        "right-read": "पृष्ठानि पठ्यताम्",
        "right-edit": "पृष्ठानि सम्पाद्यताम्",
        "right-createpage": "पृष्ठानि निर्मियताम् ।(येषां सम्भाषणपृष्ठं न स्यात् ।)",
        "right-move-rootuserpages": "मूलयोजकपुष्ठानि चाल्यताम्",
        "right-move-categorypages": "वर्गपृष्ठानि चाल्यताम्",
        "right-movefile": "सञ्चिकाः चाल्यताम्",
-       "right-suppressredirect": "पृष्ठं यदा चालयति, तदा मूलपृष्ठात् प्रतिप्रषणं मास्तु ।",
+       "right-suppressredirect": "पà¥\83षà¥\8dठà¤\82 à¤¯à¤¦à¤¾ à¤\9aालयति, à¤¤à¤¦à¤¾ à¤®à¥\82लपà¥\83षà¥\8dठातà¥\8d à¤ªà¥\8dरतिपà¥\8dरà¥\87षणà¤\82 à¤®à¤¾à¤¸à¥\8dतà¥\81 à¥¤",
        "right-upload": "उपारोहण(upload)सञ्चिकाः",
        "right-reupload": "वर्तमानसञ्चिकाः नवीनसञ्चिकाभिः परिवर्त्यताम्",
-       "right-reupload-own": "अन्येन उपारोहिताः (upload) सञ्चिकाः नवीनसञ्चिकाभिः परिवर्त्यताम",
-       "right-reupload-shared": "विभà¤\95à¥\8dतमाधà¥\8dयमà¥\87न (shared media) à¤¸à¥\8dथानिय-उपारोहिताः सञ्चिकाः नवीनसञ्चाकाभिः परिवर्त्यताम्",
+       "right-reupload-own": "अन्येन उपारोहिताः (upload) सञ्चिकाः नवीनसञ्चिकाभिः परिवर्त्यताम",
+       "right-reupload-shared": "विभà¤\95à¥\8dतमाधà¥\8dयमà¥\87न (shared media) à¤¸à¥\8dथानà¥\80य-उपारोहिताः सञ्चिकाः नवीनसञ्चाकाभिः परिवर्त्यताम्",
        "right-upload_by_url": "सर्वासङ्केतात् (URL) उपारोहिताः सञ्चिकाः",
        "right-purge": "पृष्ठस्य उपस्मृतिं (cache) रिक्तीक्रियताम्",
-       "right-autoconfirmed": "अल्परक्षितपुटनि सम्पादयतु ।",
-       "right-bot": "एतां स्वसञ्चालितप्रणालित्वेन स्वीकरोतु ।",
-       "right-nominornewtalk": "चर्चापुटानां लघुसम्पादनं न भवतु । नूतनसन्देशान् चोदयतु ।",
-       "right-apihighlimits": "API प्रश्नेषु उन्नतसीमम् उपयोजयतु ।",
-       "right-writeapi": "श्वेतं API उपयोगः ।",
-       "right-delete": "पुटानि परिमार्जयतु ।",
-       "right-bigdelete": "दीर्घेतिहासयुक्तपुटानि परिमार्जयतु ।",
-       "right-deletelogentry": "निर्दिष्टनामाभिलेकप्रवेशं परिमार्जयतु अपरिमार्जयतु च ।",
-       "right-deleterevision": "निर्दिष्टावरतरणस्य पुटानि अपमर्जतु, अनपमर्जतु ।",
-       "right-deletedhistory": " तत्सम्बद्धपाठैः विनाअपमर्जितेतिहासप्रवेशस्य दर्शनम् ।",
-       "right-deletedtext": "अपमर्जितावतरणेषु परिवर्तनं, अपमर्जितपाठान् च अवलोकयतु ।",
-       "right-browsearchive": "अपमर्जितपुटानि अन्विषतु ।",
-       "right-undelete": "पुटम् अनपमर्जतु ।",
-       "right-suppressrevision": "प्रशासकेभ्यः सङ्गुप्तावतरणानि पुनरालोक्य पुनरानयतु ।",
-       "right-suppressionlog": "स्वायत्तनामाबिलेखं पश्यतु ।",
-       "right-block": "अन्ययोजकान् सम्पादनेन अवरोधतु ।",
-       "right-blockemail": "योजकस्य विद्युन्मानसन्देशप्रेषणम् अवरोधतु ।",
-       "right-hideuser": "योजकनाम अवरोधतु । तेन सर्वजनोपयोगात् गोपयतु ।",
-       "right-ipblock-exempt": "IP अवरोधं मार्गयतु, स्वयम् अवरोधः, निर्दिष्टावरोधः ।",
-       "right-proxyunbannable": "अन्येषां स्वयंचालितावरोधं परिहरतु ।",
-       "right-unblockself": "स्वयम् अनवरोधं करोतु ।",
-       "right-protect": "सुरक्षास्तरान् परिवर्तयतु । सुरक्षितपुटानि सम्पादयतु ।",
-       "right-editprotected": "सुरक्षितपुटानि सम्पादयतु ।",
-       "right-editinterface": "योजकमाध्यमं सम्पादयतु ।",
-       "right-editusercssjs": "अन्ययोजकान् सम्पादयतु । सि.एस्.एस्. जावलालिपिसञ्चिकाः च ।",
-       "right-editusercss": "अन्ययोजकान् सम्पादयतु सि.एस्.एस्. सञ्चिकाः ।",
-       "right-edituserjs": "अन्ययोजकान सम्पादयतु जावालिपिसञ्चिकाः ।",
+       "right-autoconfirmed": "सार्वसङ्केत()आधारितेन मूल्यनियन्त्रणेन सह अस्य सम्बन्धः नास्ति",
+       "right-bot": "स्वसञ्चालितप्रणालित्वेन एतां स्वीक्रियताम्",
+       "right-nominornewtalk": "सम्भाषणपृष्ठस्य लघुपरिवर्तनानां विषये मा सूच्यताम्",
+       "right-apihighlimits": "API प्रश्नेषु उन्नतसीमाः उपयोज्यताम्",
+       "right-writeapi": "योग्यस्य API इत्यस्य उपयोगं करोतु",
+       "right-delete": "पृष्ठानि अपाक्रियताम्",
+       "right-bigdelete": "दीर्घेतिहासयुक्तपृष्ठानि अपाक्रियताम्",
+       "right-deletelogentry": "योग्यसंरक्षितावल्याः निवेशान् (entries) अपाक्रियताम्, अनपाक्रियतां च",
+       "right-deleterevision": "योग्यपृष्ठस्य संस्करणानि अपाक्रियताम्",
+       "right-deletedhistory": "अपाकृत-निवेशानाम् इतिहासं पश्यतु (तत्सम्बद्धपाठं विना)",
+       "right-deletedtext": "अपाकृतपाठाः, अपाकृतसंस्करणयोः परिवर्तनानि च पश्यतु",
+       "right-browsearchive": "अपाकृतपृष्ठानि अन्विष्यताम्",
+       "right-undelete": "इदं पृष्ठं न अपाक्रियताम्",
+       "right-suppressrevision": "प्रबन्धकैः निगूढितानि संस्करणानि पुनःपश्यतु, पुनस्थापयतु च",
+       "right-suppressionlog": "वैयक्तिकसंस्करणानि दृश्यताम्",
+       "right-block": "अस्य योजकस्य सम्पादनानि अवरुध्यताम्",
+       "right-blockemail": "ई-पत्रप्रेषयितुम् एनं योजकम् अवरुद्ध्यताम्",
+       "right-hideuser": "प्रयोक्तृनाम अवरुध्यताम्, तत् अन्ययोजकेभ्यः गोप्यतां च",
+       "right-ipblock-exempt": "स्वयम् अवरोधितं, समूहावरोधिम् अन्तर्जालसङ्केतम् (IP) अवगण्य अग्रे गच्छतु",
+       "right-proxyunbannable": "प्रतिनिधीनां (of prxies) स्वयम्-अवरोधान् अवगण्य अग्रे गच्छतु",
+       "right-unblockself": "स्वं अनवरुध्यताम्",
+       "right-protect": "सुरक्षास्तरं परिवर्त्यतां, क्रमबद्धानि सुरक्षितपृष्ठानि सम्पाद्यतां च",
+       "right-editprotected": "\"{{int:protect-level-sysop}}\"-त्वेन संरक्षितानि पृष्ठानि सम्पाद्यताम्",
+       "right-editsemiprotected": "\"{{int:protect-level-autoconfirmed}}\"-त्वेन संरक्षितानि पृष्ठानि सम्पाद्यताम्",
+       "right-editinterface": "योजकमाध्यमं सम्पाद्यताम्",
+       "right-editusercssjs": "अन्यस्य योजकस्य CSS, JavaScript सञ्चिकाः सम्पाद्यताम्",
+       "right-editusercss": "अन्यस्य योजकस्य CSS सञ्चिकाः सम्पाद्यताम्",
+       "right-edituserjs": "अन्यस्य योजकस्य JavaScript सञ्चिकाः सम्पाद्यताम्",
+       "right-editmyusercss": "स्वस्य CSS सञ्चिकाः सम्पाद्यताम्",
+       "right-editmyuserjs": "स्वस्य JavaScript सञ्चिकाः सम्पाद्यताम्",
+       "right-viewmywatchlist": "स्वस्य अवेक्षणावलिः दृष्यताम्",
        "right-rollback": "अन्तिमयोजकस्य सम्पादनं शीघ्रं प्रचालयतु यः निर्दिष्टपुटं सम्पादितवान् ।",
        "right-markbotedits": "प्रतिचालितसम्पादनानि स्वचालितसम्पदनं इव  अङ्कितानिकरोतु ।",
        "right-noratelimit": "मूल्यनियत्या प्रभावितं नस्यात् ।",
index 7b89944..d179005 100644 (file)
        "tog-watchlisthidebots": "Кэтээн көрүү тиһигэр робот уларытыытын көрдөрүмэ",
        "tog-watchlisthideminor": "Кыра уларытыылары кэтээмэ",
        "tog-watchlisthideliu": "Бэлиэтэммит кыттааччылар уларытыыларын кэтиир тиһиккэ көрдөрүмэ",
-       "tog-watchlisthideanons": "Ааттарын эппэтэх кыттааччылар уларытыыларын кэтээһин испииһэгэр көрдөрүмэ",
+       "tog-watchlisthideanons": "Ааттарын эппэтэх кыттааччылар уларытыыларын кэтээһин тиһигэр көрдөрүмэ",
        "tog-watchlisthidepatrolled": "Ботурууллааччы көрбүт көннөрүүтүн кэтээһин испииһэгэр көрдөрүмэ",
        "tog-ccmeonemails": "Атын кыттааччыларга суруйбут суруктарбын бэйэбэр эмиэ ыыт",
        "tog-diffonly": "Икки барылы тэҥнииргэ сирэй иһин көрдөрүмэ",
        "tog-showhiddencats": "Кистэммит категориялары көрдөр",
        "tog-norollbackdiff": "Төннөрүү кэнниттэн барыллар уратыларын көрдөрүмэ",
-       "tog-useeditwarning": "ЭÑ\80Ñ\8dдÑ\8dÑ\8dкÑ\81ийÑ\8dлииÑ\80 Ñ\81иÑ\80Ñ\8dйÑ\82Ñ\8dн Ñ\83лаÑ\80Ñ\8bÑ\82Ñ\8bÑ\8bлаÑ\80бÑ\8bн Ð±Ð¸Ð³Ñ\8dÑ\80гÑ\8dппÑ\8dккÑ\8d тахсаары гыннахпына сэрэтээр",
+       "tog-useeditwarning": "УлаÑ\80Ñ\8bÑ\82Ñ\8bÑ\8bлаÑ\80бÑ\8bн Ð±Ð¸Ð³Ñ\8dÑ\80гÑ\8dппÑ\8dккÑ\8d Ñ\81иÑ\80Ñ\8dйÑ\82Ñ\8dн тахсаары гыннахпына сэрэтээр",
        "tog-prefershttps": "Манна киирэргэ куруук көмүскэллээх холбонууну туттарга",
        "underline-always": "Куруук",
        "underline-never": "Аннынан тардыма",
        "namespaces": "Аат даллара",
        "variants": "Барыллар",
        "navigation-heading": "Навигация",
-       "errorpagetitle": "СÑ\8bÑ\8bһа",
+       "errorpagetitle": "Ð\90лÒ\95аÑ\81",
        "returnto": "Төттөрү $1 сирэйгэ.",
        "tagline": "{{SITENAME}} диэн сиртэн ылыллыбыт",
        "help": "Көмө",
        "searchbutton": "Бул",
        "go": "Бар",
        "searcharticle": "Көрдөр",
-       "history": "Ð\98Ñ\81Ñ\82оÑ\80иÑ\8fта",
-       "history_short": "Ð\98Ñ\81Ñ\82оÑ\80иÑ\8f",
+       "history": "УÑ\81Ñ\82Ñ\83оÑ\80Ñ\83йата",
+       "history_short": "УÑ\81Ñ\82Ñ\83оÑ\80Ñ\83йа",
        "updatedmarker": "Кэнники киириим кэнниттэн уларыйыылар",
-       "printableversion": "Ð\91Ñ\8dÑ\87Ñ\8dÑ\8dÑ\82Ñ\82ииÑ\80гÑ\8d Ð°Ð½Ð°Ð°Ð½ ÐºÓ©Ñ\80Ò¯Ò¯",
-       "permalink": "Ð\9aÑ\83Ñ\80Ñ\83Ñ\83к Ð±Ð°Ð°Ñ\80 Ñ\8bйÑ\8bннÑ\8cÑ\8bк",
+       "printableversion": "Ð\91Ñ\8dÑ\87Ñ\8dÑ\8dÑ\82Ñ\82ииÑ\80гÑ\8d Ð°Ð½Ð°Ð»Ð»Ð°Ð°Ñ\85 Ð±Ð°Ñ\80Ñ\8bл",
+       "permalink": "Ð\9aÑ\83Ñ\80Ñ\83Ñ\83к Ð±Ð°Ð°Ñ\80 Ñ\81игÑ\8d",
        "print": "Бэчээттээ",
        "view": "Көрүү",
        "view-foreign": "Манна көрүү: $1",
        "create-this-page": "Бу сирэйи ай",
        "delete": "Соттор",
        "deletethispage": "Бу сирэйи соттор",
-       "undeletethispage": "Бу сирэйи сөргүт (төннөр)",
-       "undelete_short": "Төттөрү аҕал {{PLURAL:$1|биир уларытыыны|$1 уларытыылары}}",
+       "undeletethispage": "Бу сирэйи сөргүт",
+       "undelete_short": "{{PLURAL:$1|Биир уларытыыны|$1 уларытыыны}} сөргүт",
        "viewdeleted_short": "{{PLURAL:$1|Соҕотох сотторуллубут көннөрүүнү|$1 сотторуллубут көннөрүүнү}} көрүү",
        "protect": "Уларыппат гын",
        "protect_change": "уларытыы",
        "protectthispage": "Бу сирэйи уларыппат гын",
-       "unprotect": "УлаÑ\80Ñ\8bÑ\82аÑ\80Ñ\8b ÐºÓ©Ò¥Ò¯Ð»Ð»Ñ\8dÑ\8d",
+       "unprotect": "Ð\9aөмүÑ\81кÑ\8dлин Ñ\83лаÑ\80Ñ\8bÑ\82",
        "unprotectthispage": "Бу сирэй көмүскэлин уларыт",
        "newpage": "Саҥа сирэй",
        "talkpage": "Бу сирэйи ырыт",
        "talkpagelinktext": "Ырытыы",
        "specialpage": "Анал сирэй",
-       "personaltools": "ТÑ\83Ñ\81 Ð±Ñ\8dйÑ\8d Ñ\82Ñ\83Ñ\82Ñ\82аÑ\80 Ñ\82Ñ\83Ñ\80Ñ\83оÑ\80Ñ\83Ñ\83лаÑ\80а",
+       "personaltools": "ТÑ\83Ñ\81 Ð±Ñ\8dйÑ\8d Ñ\82Ñ\83Ñ\82Ñ\82аÑ\80 Ñ\82Ñ\8dÑ\80иллÑ\8dÑ\80Ñ\8d",
        "postcomment": "Саҥа түһүмэх",
        "articlepage": "Ыстатыйаны көр",
        "talk": "Ырытыы",
-       "views": "Көрүүлэр",
+       "views": "Көрүү",
        "toolbox": "Сэп-сэбиргэл",
        "userpage": "Кыттааччы туһунан сирэй",
        "projectpage": "Бырайыак сирэйэ",
        "right-move": "Сирэйдэр ааттарын уларытыы",
        "right-move-subpages": "Сирэйдэр ааттарын иһигэр киирэр сирэйдэри кытта уларытыы",
        "right-move-rootuserpages": "Кыттааччылар сирэйдэрин аатын уларытыы",
+       "right-move-categorypages": "Категория сирэйдэрин аатын уларытыы",
        "right-movefile": "билэлэр ааттарын уларытыы",
        "right-suppressredirect": "Аатын уларытарга урукку ааттан утаарыы сирэй кыайан оҥоһуллубат",
        "right-upload": "Билэлэри киллэр",
        "action-move": "бу сирэй аатын уларытыы",
        "action-move-subpages": "бу сирэй уонна кини аннынааҕы сирэйдэр ааттарын уларытыы",
        "action-move-rootuserpages": "кыттааччылар тус сирэйдэрин аатын уларытыы",
+       "action-move-categorypages": "категория сирэйдэрин аатын уларытыы",
        "action-movefile": "бу билэни аатын уларытарга",
        "action-upload": "бу билэни суруттар",
        "action-reupload": "баар билэни хат суруйуу",
        "doubleredirects": "Хос көһөрөөһүн",
        "doubleredirectstext": "Бу сирэйгэ атын сиргэ утаарар хос утаарыылар тиһиктэрэ көстөр.\nХас устуруока аайы бастакы уонна иккис утаарыга сигэ баар, ону таһынан иккис утаарыыга баар сирэй аадырыһа (аата) баар, ол аата бастакы утаарыы дьиҥинэн ханна утаарыахтааҕа көстөр.\n<del>Сотуллубут</del> суруктар көннөрүллүбүттэр.",
        "double-redirect-fixed-move": "[[$1]] сирэй аата уларытыллыбыт.\nАптамаатынан саҥардыллыбыт уонна бу сирэйгэ утаарар [[$2]].",
-       "double-redirect-fixed-maintenance": "[[$1]] сирэйтэн [[$2]] сирэйгэ хос утаарыыны көннөрүү.",
+       "double-redirect-fixed-maintenance": "[[$1]] сирэйтэн [[$2]] сирэйгэ хос утаарыыны көннөрүү оҥоһулла сылдьар.",
        "double-redirect-fixer": "Утаарыылары көннөрөөччү",
        "brokenredirects": "Быстыбыт көһөрүүлэр",
        "brokenredirectstext": "Бу утаарыы сирэйдэрэ суох ыстатыйаларга сигэнэллэр (ыыталлар):",
        "watchnologin": "Бэйэҕин билиһиннэр",
        "addwatch": "Кэтэбил тиһигэр киллэр",
        "addedwatchtext": "«[[:$1]]» сирэй [[Special:Watchlist|кэтэбил тиһигэр]] киирдэ.\nСирэй уларытыылара уонна кинини кытта ситимнээх ырытыы сирэйин уларытыылара бүгүҥҥүттэн онно көстөр буолуохтара.",
+       "addedwatchtext-short": "\"$1\" диэн сирэй кэтэбилиҥ тиһигэр эбилиннэ.",
        "removewatch": "Кэтэбил тиһигиттэн сот",
        "removedwatchtext": "[[:$1]]\" сирэй [[Special:Watchlist|кэтэбилиҥ тиһигиттэн]] сотулунна.",
+       "removedwatchtext-short": "\"$1\" диэн сирэй кэтэбилиҥ тиһигиттэн сотулунна.",
        "watch": "Кэтээ",
        "watchthispage": "Бу сирэйи кэтээ",
        "unwatch": "Кэтээмэ",
        "movepagetalktext": "Холбонуллубут ырытыы (баар буоллаҕына) эмиэ аатын уларытыа. Ол сатаммат түбэлтэлэрэ:\n*Маннык ааттаах кураанах буолбатах ырытыы баар буоллаҕына\n*Манна бэлиэ туруорбатаххына.\n\nИти түгэннэргэ сирэйдэри бэйэҥ көһөрүөхтээххин эбэтэр холбуохтааххын.",
        "movearticle": "Бу аатын уларыт:",
        "moveuserpage-warning": "'''Болҕой:''' Эн кыттааччы тус сирэйин аатын уларытаары гынныҥ. Инньэ гыннаххына сирэй аата эрэ уларыйыа, кыттааччы бэйэтин аата уларыйыа '''суоҕа'''.",
+       "movecategorypage-warning": "<strong>Сэрэтии:</strong> Категория сирэйин көһөрөөрү гынныҥ. Бука диэн, өйдөө, бу эрэ сирэй көһүө, эргэ категория атын сирэйдэрэ саҥа категорияҕа <em>киириэхтэрэ суоҕа</em>.",
        "movenologintext": "Эн аакын [[Special:UserLogin|билиһиннэрдэххинэ]] эрэ сирэй аатын уларытар кыахтаныаҥ.",
        "movenotallowed": "Cирэйдэр ааттарын уларытар кыаҕыҥ суох.",
        "movenotallowedfile": "Билэлэр ааттарын уларытар кыаҕыҥ суох.",
        "cant-move-user-page": "Эн кыттааччылар сүрүн сирэйдэрин аатын уларытар кыаҕыҥ суох.",
        "cant-move-to-user-page": "Эн кыттааччы аатын далыгар сирэйдэри уларытар кыаҕыҥ суох (анныкы сирэйдэриттэн ураты).",
+       "cant-move-category-page": "Категория сирэйин аатын уларытар кыаҕыҥ суох эбит.",
+       "cant-move-to-category-page": "Сирэй аатын уларытан категория сирэйэ гынар кыаҕыҥ суох эбит.",
        "newtitle": "Саҥа аата:",
        "move-watch": "Кэтээн көрөргө",
        "movepagebtn": "Аатын уларыт",
        "newimages-summary": "Бу анал сирэй киллэриллибит билэлэр испииһэктэрин көрдөрөр.",
        "newimages-legend": "Фильтр",
        "newimages-label": "Билэ аата (эбэтэр сорҕото):",
+       "newimages-showbots": "Руобаттар хачайдааһыннарын көрдөр",
        "noimages": "Ойуу суох.",
        "ilsubmit": "Көрдөт",
        "bydate": "айыллыбыт кэминэн",
        "watchlistedit-raw-done": "Саҥа испииһэк бигэргэтилиннэ.",
        "watchlistedit-raw-added": "Тиһиккэ {{PLURAL:$1|1 пуун эбилиннэ|$1 пуун эбии киирдэ}}:",
        "watchlistedit-raw-removed": "Испииһэктэн {{PLURAL:$1|1 пуун|$1 пуун}} көҕүрээтэ:",
+       "watchlistedit-clear-title": "Кэтэбил тиһигэ ыраастанна",
+       "watchlistedit-clear-legend": "Кэтэбил тиһигин сот",
+       "watchlistedit-clear-explain": "Кэтэбилиҥ тиһигиттэн бары суруктар сотуллуохтара",
+       "watchlistedit-clear-titles": "Баһа:",
+       "watchlistedit-clear-submit": "Кэтэбил тиһигин сот (сөргүтүллүбэт!)",
+       "watchlistedit-clear-done": "Кэтэбилиҥ тиһигэ ыраастанна.",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|соҕотох сурук|$1 сурук}} сотулунна:",
+       "watchlistedit-too-many": "Манна кыайан көстүбэт элбэх сирэй.",
+       "watchlisttools-clear": "Кэтэбил тиһигин сот",
        "watchlisttools-view": "Атыҥҥа сабыдыаллаах уларытыылар",
        "watchlisttools-edit": "Кэтэбил испииһэгин көрүү/уларытыы",
        "watchlisttools-raw": "\"Сиикэй\" испииһэги уларытыы",
index 485e6a2..99d07b5 100644 (file)
@@ -11,7 +11,8 @@
                        "Salvator",
                        "Samar88",
                        "Srabony90",
-                       "아라"
+                       "아라",
+                       "Shirayuki"
                ]
        },
        "tog-underline": "Joṛaoko latarre dag udugoḱma:",
        "accmailtitle": "Uku nambar do kulena.",
        "accmailtext": "[[User talk:$1 $1]] lạgit́te aćte benaoen uku nambar do $2 kul hoena.\nBhitri bolo kateḱ noa nãwã ekaunṭ lạgit uku nambar \"[[Special:ChangePassword Change password]]\" sakam khonem bodol daṛyakya.",
        "newarticle": "(Nãwa)",
-       "newarticletext": "Am do oka mitṭen joṛaoem pańja akada, onaṭak do bạnuḱa.\nOna sakam tear lạgit́te, latar reaḱ baksore ol ehoṕmẽ (arhõ jạsti baḍae lạgit́te [[{{mediaWiki:Helppage}}help page] pańjaemẽ).\nAm do judi nonḍe vulkatem heć akan khan, tobe amaḱ sendrakore '''back''' baṭon linmẽ.",
+       "newarticletext": "Am do oka mitṭen joṛaoem pańja akada, onaṭak do bạnuḱa.\nOna sakam tear lạgit́te, latar reaḱ baksore ol ehoṕmẽ (arhõ jạsti baḍae lạgit́te [$1 help page] pańjaemẽ).\nAm do judi nonḍe vulkatem heć akan khan, tobe amaḱ sendrakore '''back''' baṭon linmẽ.",
        "noarticletext": "Nitoḱ noa sakamre do ol bạnuḱa.\n\nYou can [[Special:Search/{{PAGENAME}}|search for this page title]] in other pages,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],\nor [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this page]</span>.",
        "noarticletext-nopermission": "Noa sakamre do nitoḱ o̠l banuḱa.\n\nYou can [[Special:Search/{{PAGENAME}}|search for this page title]] in other pages,\nor <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs]</span>.",
        "userpage-userdoesnotexist": "\"<nowiki>$1</nowiki>\" ńutuman jahãe beoharićaḱ ekaunṭ do baṅ resṭri hoeakana. Daya kate biḍạo katet́ ńelmẽ noa sakam do benoa/sompadonem menet́ kana se baṅ.",
        "prefs-files": "Rẽtko",
        "youremail": "E-mail:",
        "username": "Beoharićaḱ ńutum:",
-       "uid": "Beoharićaḱ cinhạo nombor",
        "yourrealname": "Sạri ńutum",
        "yourlanguage": "Pạrsi:",
        "gender-male": "Baba hoṛ",
        "booksources-go": "Calaḱme",
        "log": "Cạbiko",
        "allpages": "joto sakam",
-       "alphaindexline": "$1 hạbić $2",
        "allarticles": "Sanam sakam",
        "allpagessubmit": "Calaḱme",
        "categories": "rokom sokom",
index 5ff85ce..2b0e7f7 100644 (file)
        "permalink": "ස්ථාවර සබැඳුම",
        "print": "මුද්‍රණය කරන්න",
        "view": "දසුන",
+       "view-foreign": "$1 බලන්න",
        "edit": "සංස්කරණය",
+       "edit-local": "ස්ථානික විස්තරය සංස්කරනය කරන්න",
        "create": "තනන්න",
+       "create-local": "ස්ථානීය විස්තරයක් එක් කරන්න",
        "editthispage": "මෙම පිටුව සංස්කරණය කරන්න",
        "create-this-page": "මෙම පිටුව තනන්න",
        "delete": "මකන්න",
        "jumptonavigation": "සංචලනය",
        "jumptosearch": "සොයන්න",
        "view-pool-error": "සමාවන්න, ස'වරයන් මෙම අවස්ථාවෙහිදී අධිපූරණය වී ඇත.\nපමණට වඩා පරිශීලක පිරිසක් මෙම පිටුව නැරඹීමට උත්සහ දරති.\nමද වේලාවක් පමාවී නැවත උත්සාහ කරන්න.\n\n$1",
+       "generic-pool-error": "සමාවන්න, මේ මොහොතේ සර්වරයන් උපරිමව භාවිතා කෙරෙමින් පවතී. \nබොහෝ පිරිසක් මෙම පිටුව නැරඹීමට උත්සහ දරති.\nකරුණාකර මද වේලාවක් ප්‍රමාද වී නැවත උත්සාහ කරන්න.",
        "pool-timeout": "අගුල සඳහා බලාපොරොත්තුවෙන් සිටීම කල් ඉකුත්වනලදී",
        "pool-queuefull": "පොරොත්තු ලේඛනය පිරී ඇත",
        "pool-errorunknown": "හඳුනා නොගත් දෝෂය",
index c0ac8e6..b1c6414 100644 (file)
        "resetpass-abort-generic": "Промену лозинке је спречио додатак.",
        "resetpass-expired": "Ваша лозинка је истекла. Поставите нову лозинку да бисте се пријавили.",
        "resetpass-expired-soft": "Ваша лозинка је истекла и морате поставити нову. Поставите нову лозинку или кликните „{{int:resetpass-submit-cancel}}“ да је поставите касније.",
+       "resetpass-validity-soft": "Ваша лозинка није ваљана: $1\n\nМолимо изаберите нову или кликните „{{int:resetpass-submit-cancel}}“ да ресетујете касније.",
        "passwordreset": "Обнављање лозинке",
        "passwordreset-text-one": "Попуните овај образац да бисте ресетовали лозинку.",
        "passwordreset-text-many": "{{PLURAL:$1|Испуните једно од поља како би сте добили привремену лозинку на е-пошту.}}",
        "session_fail_preview": "'''Нисмо могли да обрадимо вашу измену због губитка података сесије.'''\nПокушајте поново.\nАко и даље не ради, покушајте да се [[Special:UserLogout|одјавите]] и поново пријавите.",
        "session_fail_preview_html": "'''Нисмо могли да обрадимо вашу измену због губитка података сесије.'''\n\n''Будући да је на овом викију омогућен унос HTML ознака, преглед је сакривен као мера предострожности против напада преко јаваскрипта.''\n\n'''Ако сте покушали да направите праву измену, покушајте поново.\nАко и даље не ради, покушајте да се [[Special:UserLogout|одјавите]] и поново пријавите.'''",
        "token_suffix_mismatch": "'''Ваша измена је одбачена јер је ваш прегледач убацио знакове интерпункције у новчић уређивања.\nТо се понекад догађа када се користи неисправан посредник.'''",
-       "edit_form_incomplete": "'''Неки делови обрасца за уређивање нису достигли до сервера. Проверите да ли су измене промењене и покушајте поново.'''",
+       "edit_form_incomplete": "<strong>Неки делови обрасца за уређивање нису стигли до сервера. Проверите да ли су ваше измене непромењене и покушајте поново.</strong>",
        "editing": "Уређујете $1",
        "creating": "Прављење странице $1",
        "editingsection": "Уређујете $1 (одељак)",
        "right-edituserjs": "уређивање туђих JavaScript датотека",
        "right-editmyusercss": "уређивање сопствених CSS датотека",
        "right-editmyuserjs": "уређивање сопствених JavaScript датотека",
-       "right-viewmywatchlist": "Види списак надгледања",
+       "right-viewmywatchlist": "vidi sopstveni spisak nadgledanja",
        "right-viewmyprivateinfo": "видите своје личне податке (нпр. адресу е-поште, право име)",
        "right-editmyprivateinfo": "уређивање сопствених личних података (нпр. адресу е-поште, право име)",
        "right-editmyoptions": "уредите своја подешавања",
        "action-siteadmin": "закључавање или откључавање базе података",
        "action-sendemail": "слање е-порука",
        "action-editmywatchlist": "измени свој списак надгледања",
-       "action-viewmywatchlist": "види списак надгледања",
+       "action-viewmywatchlist": "пÑ\80еглед Ð²Ð°Ñ\88ег списак надгледања",
        "action-viewmyprivateinfo": "прегледање ваших личних података",
        "action-editmyprivateinfo": "уређивање ваших личних података",
        "nchanges": "$1 {{PLURAL:$1|измена|измене|измена}}",
        "download": "преузми",
        "unwatchedpages": "Ненадгледане странице",
        "listredirects": "Списак преусмерења",
-       "listduplicatedfiles": "Списак дупликата датотека",
+       "listduplicatedfiles": "Списак дуплираних датотека",
        "listduplicatedfiles-summary": "Ово је списак датотека које су дупликат неких других датотека. Само локалне датотеке су приказане.",
        "listduplicatedfiles-entry": "[[:File:$1|$1]] има [[$3|{{PLURAL:$2|један дупликат|$2 дупликата}}]].",
        "unusedtemplates": "Некоришћени шаблони",
        "watchnologin": "Нисте пријављени",
        "addwatch": "Додај на списак надгледања",
        "addedwatchtext": "Страница „[[:$1]]“ је додата на ваш [[Special:Watchlist|списак надгледања]].\nБудуће измене ове странице и њене странице за разговор биће наведене тамо.",
+       "addedwatchtext-short": "Страница „$1“ је додата на ваш списак надгледања",
        "removewatch": "Уклони са списка надгледања",
        "removedwatchtext": "Страница „[[:$1]]“ је уклоњена с вашег [[Special:Watchlist|списка надгледања]].",
+       "removedwatchtext-short": "Страница „$1“ је уклоњена с вашег списка надгледања.",
        "watch": "Надгледај",
        "watchthispage": "Надгледај ову страницу",
        "unwatch": "Прекини надгледање",
        "watchlistedit-raw-done": "Ваш списак надгледања је ажуриран.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Додат је један наслов|Додата су $1 наслова|Додато је $1 наслова}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 наслов је уклоњен|Уклоњена су $1 наслова|Уклоњено је $1 наслова}}:",
+       "watchlistedit-clear-titles": "Наслови:",
        "watchlisttools-view": "прикажи сродне измене",
        "watchlisttools-edit": "прикажи и уреди списак надгледања",
        "watchlisttools-raw": "измени сиров списак надгледања",
        "redirect-legend": "Преусмери на датотеку или страницу",
        "redirect-submit": "Иди",
        "redirect-value": "Вредност:",
-       "redirect-user": "Кориснички ID:",
+       "redirect-user": "Кориснички ID",
        "redirect-page": "ID странице",
        "redirect-file": "Назив датотеке",
        "redirect-not-exists": "Вредност није пронађена",
index 7ac235d..2cda89e 100644 (file)
        "jumptonavigation": "navigaciju",
        "jumptosearch": "pretragu",
        "view-pool-error": "Nažalost, serveri su trenutno preopterećeni.\nPreviše korisnika pokušava da pregleda ovu stranicu.\nSačekajte neko vreme pre nego što ponovo pokušate da joj pristupite.\n\n$1",
+       "generic-pool-error": "Nažalost, serveri su trenutno preopterećeni.\nPreviše korisnika pokušava da vidi ovaj resurs.\nSačekajte neko vreme pre nego što ponovo pokušate da mu pristupite.",
        "pool-timeout": "Istek vremena čeka na zaključavanje",
        "pool-queuefull": "Red je pun zahteva",
        "pool-errorunknown": "Nepoznata greška",
        "virus-unknownscanner": "nepoznati antivirus:",
        "logouttext": "'''Odjavljeni ste.'''\n\nImajte na umu da neke stranice mogu nastaviti da se prikazuju kao da ste još prijavljeni, sve dok ne očistite privremenu memoriju svog pregledača.",
        "welcomeuser": "Dobrodošli, $1!",
+       "welcomecreation-msg": "Vaš nalog je otvoren.\nNe zaboravite da promenite svoja [[Special:Preferences|podešavanja]].",
        "yourname": "Korisničko ime:",
        "userlogin-yourname": "Korisničko ime",
        "userlogin-yourname-ph": "Unesite vaše korisničko ime",
        "retypenew": "Potvrda lozinke:",
        "resetpass_submit": "Postavi lozinku i prijavi me",
        "changepassword-success": "Vaša lozinka je uspešno promenjena.",
+       "changepassword-throttled": "Previše puta ste pokušali da se prijavite.\nMolimo vas da sačekate $1 pre nego što pokušate ponovo.",
        "resetpass_forbidden": "Lozinka ne može biti promenjena",
        "resetpass-no-info": "Morate biti prijavljeni da biste pristupili ovoj stranici.",
        "resetpass-submit-loggedin": "Promeni lozinku",
        "changeemail-oldemail": "Trenutna e-adresa:",
        "changeemail-newemail": "Nova e-adresa:",
        "changeemail-none": "(ništa)",
+       "changeemail-password": "Vaša lozinka:",
        "changeemail-submit": "Promeni",
        "changeemail-cancel": "Otkaži",
+       "changeemail-throttled": "Previše puta ste pokušali da se prijavite.\nMolimo vas da sačekate $1 pre nego što pokušate ponovo.",
+       "resettokens": "Resetuje tokene",
+       "resettokens-no-tokens": "Nema tokena za resetovanje.",
+       "resettokens-legend": "Resetuje tokene",
+       "resettokens-tokens": "Tokeni:",
        "resettokens-token-label": "$1 (trenutna vrednost: $2)",
+       "resettokens-watchlist-token": "Token za veb dovod (Atom/RSS) vašeg [[Special:Watchlist|spiska nadgledanja]]",
+       "resettokens-done": "Tokeni su resetovani",
+       "resettokens-resetbutton": "Resetuj izabrane tokene",
        "bold_sample": "Podebljan tekst",
        "bold_tip": "Podebljan tekst",
        "italic_sample": "Iskošeni tekst",
        "session_fail_preview": "'''Nismo mogli da obradimo vašu izmenu zbog gubitka podataka sesije.'''\nPokušajte ponovo.\nAko i dalje ne radi, pokušajte da se [[Special:UserLogout|odjavite]] i ponovo prijavite.",
        "session_fail_preview_html": "'''Nismo mogli da obradimo vašu izmenu zbog gubitka podataka sesije.'''\n\n''Budući da je na ovom vikiju omogućen unos HTML oznaka, pregled je sakriven kao mera predostrožnosti protiv napada preko javaskripta.''\n\n'''Ako ste pokušali da napravite pravu izmenu, pokušajte ponovo.\nAko i dalje ne radi, pokušajte da se [[Special:UserLogout|odjavite]] i ponovo prijavite.'''",
        "token_suffix_mismatch": "'''Vaša izmena je odbačena jer je vaš pregledač ubacio znakove interpunkcije u novčić uređivanja.\nTo se ponekad događa kada se koristi neispravan posrednik.'''",
-       "edit_form_incomplete": "'''Neki delovi obrasca za uređivanje nisu dostigli do servera. Proverite da li su izmene promenjene i pokušajte ponovo.'''",
+       "edit_form_incomplete": "<strong>Neki delovi obrasca za uređivanje nisu stigli do servera. Proverite da li su vaše izmene nepromenjene i pokušajte ponovo.</strong>",
        "editing": "Uređujete $1",
        "creating": "Pravljenje stranice $1",
        "editingsection": "Uređujete $1 (odeljak)",
        "edit-gone-missing": "Ne mogu da ažuriram stranicu.\nIzgleda da je obrisana.",
        "edit-conflict": "Sukob izmena.",
        "edit-no-change": "Vaša izmena je zanemarena jer nije bilo nikakvih izmena u tekstu.",
+       "postedit-confirmation-created": "Stranica je napravljena.",
+       "postedit-confirmation-restored": "Stranica je vraćena.",
        "postedit-confirmation-saved": "Vaša izmena je sačuvana.",
        "edit-already-exists": "Ne mogu da napravim stranicu.\nIzgleda da ona već postoji.",
        "defaultmessagetext": "Podrazumevani tekst poruke",
        "invalid-content-data": "Neispravni podaci sadržaja",
        "content-not-allowed-here": "Sadržaj modela „$1“ nije dozvoljen na stranici [[$2]]",
        "editwarning-warning": "Ako napustite ovu stranicu, izgubićete sve izmene koje ste napravili.\nAko ste prijavljeni, možete onemogućiti ovo upozorenje u svojim podešavanjima, u odeljku „{{int:prefs-editing}}“.",
+       "editpage-notsupportedcontentformat-title": "Format sadržaja nije podržan",
        "content-model-wikitext": "vikitekst",
        "content-model-text": "čist tekst",
        "content-model-javascript": "javaskript",
        "undo-success": "Izmena se može vratiti.\nProverite razlike ispod, pa sačuvajte izmene.",
        "undo-failure": "Ova izmena se ne može poništiti zbog konflikta izmena.",
        "undo-norev": "Ne mogu da vratim izmenu jer ne postoji ili je obrisana.",
+       "undo-nochange": "Izgleda da je izmena već poništena.",
        "undo-summary": "Poništena izmena $1 {{GENDER:$2|korisnika|korisnice}} [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]])",
        "undo-summary-username-hidden": "Poništi izmenu $1 skrivenog korisnika",
        "cantcreateaccounttitle": "Ne mogu da otvorim nalog",
        "shown-title": "Prikaži $1 {{PLURAL:$1|rezultat|rezultata|rezultata}} po stranici",
        "viewprevnext": "Pogledaj ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "'''Postoji i članak pod nazivom „[[:$1]]“.'''",
-       "searchmenu-new": "'''Napravite stranicu „[[:$1]]“.'''",
+       "searchmenu-new": "<strong>Napravite stranicu „[[:$1]]“!</strong> {{PLURAL:$2|0=|Vidi takođe razultate pretrage.}}",
        "searchprofile-articles": "Članci",
        "searchprofile-project": "Stranice pomoći i projekata",
        "searchprofile-images": "Datoteke",
        "search-section": "(odeljak $1)",
        "search-suggest": "Da li ste mislili na: $1",
        "search-interwiki-caption": "Bratski projekti",
-       "search-interwiki-default": "$1 rezultati:",
+       "search-interwiki-default": "Rezultati sa $1:",
        "search-interwiki-more": "(više)",
        "search-relatedarticle": "Povezano",
        "searcheverything-enable": "svi imenski prostori",
        "powersearch-togglenone": "ništa",
        "search-external": "Spoljna pretraga",
        "searchdisabled": "Pretraga je onemogućena.\nU međuvremenu možete tražiti preko Gugla.\nUpamtite da njegovi popisi ovog vikija mogu biti zastareli.",
+       "search-error": "Došlo je do greške prilikom pretrage: $1",
        "preferences": "Podešavanja",
        "mypreferences": "Podešavanja",
        "prefs-edits": "Broj izmena:",
        "userrights-changeable-col": "Grupe koje možete da promenite",
        "userrights-unchangeable-col": "Grupe koje ne možete da promenite",
        "userrights-irreversible-marker": "$1*",
+       "userrights-removed-self": "Uspešno ste sebi skinuli prava. Zbog toga nije vam dozvoljen pristup ovoj stranici.",
        "group": "Grupa:",
        "group-user": "Korisnici",
        "group-autoconfirmed": "Automatski potvrđeni korisnici",
        "right-editusercssjs": "uređivanje tuđih CSS i javaskript datoteka",
        "right-editusercss": "uređivanje tuđih CSS datoteka",
        "right-edituserjs": "uređivanje tuđih JavaScript datoteka",
+       "right-editmyusercss": "uređivanje sopstvenih CSS datoteka",
        "right-editmyuserjs": "uređivanje sopstvenih JavaScript datoteka",
+       "right-viewmywatchlist": "vidi sopstveni spisak nadgledanja",
        "right-viewmyprivateinfo": "vidite svoje lične podatke (npr. adresu e-pošte, pravo ime)",
        "right-editmyprivateinfo": "uređivanje sopstvenih ličnih podataka (npr. adresu e-pošte, pravo ime)",
        "right-editmyoptions": "uredite svoja podešavanja",
        "action-createpage": "pravljenje stranica",
        "action-createtalk": "pravljenje stranica za razgovor",
        "action-createaccount": "otvaranje ovog korisničkog naloga",
+       "action-history": "gledanje istorije ove stranice",
        "action-minoredit": "označavanje ove izmene kao manje",
        "action-move": "premesti ovu stranicu",
        "action-move-subpages": "premeštanje ove stranice i njenih podstranica",
        "action-block": "blokiranje daljih izmena ovog korisnika",
        "action-protect": "menjanje stepena zaštite ove stranice",
        "action-rollback": "brzo vraćanje izmena poslednjeg korisnika koji je menjao određenu stranicu",
-       "action-import": "uvoz ove stranice s drugog vikija",
-       "action-importupload": "uvoz ove stranice slanjem datoteke",
+       "action-import": "uvoženje stranica iz drugih vikija",
+       "action-importupload": "uvoženje stranica iz otpremljene datoteke",
        "action-patrol": "označavanje tuđih izmena pregledanim",
        "action-autopatrol": "samooznačavanje izmena pregledanim",
        "action-unwatchedpages": "pregledanje spiska nenadgledanih stranica",
        "action-siteadmin": "zaključavanje ili otključavanje baze podataka",
        "action-sendemail": "slanje e-poruka",
        "action-editmywatchlist": "izmeni svoj spisak nadgledanja",
+       "action-viewmywatchlist": "pregled vašeg spisak nadgledanja",
+       "action-viewmyprivateinfo": "pregledanje vaših ličnih podataka",
+       "action-editmyprivateinfo": "uređivanje vaših ličnih podataka",
        "nchanges": "$1 {{PLURAL:$1|izmena|izmene|izmena}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|izmena od vaše poslednje posete}}",
        "enhancedrc-history": "istorija",
        "download": "preuzmi",
        "unwatchedpages": "Nenadgledane stranice",
        "listredirects": "Spisak preusmerenja",
+       "listduplicatedfiles": "Spisak dupliranih datoteka",
+       "listduplicatedfiles-summary": "Ovo je spisak datoteka koje su duplikat nekih drugih datoteka. Samo lokalne datoteke su prikazane.",
+       "listduplicatedfiles-entry": "[[:File:$1|$1]] ima [[$3|{{PLURAL:$2|jedan duplikat|$2 duplikata}}]].",
        "unusedtemplates": "Nekorišćeni šabloni",
        "unusedtemplatestext": "Ova stranica navodi sve stranice u imenskom prostoru {{ns:template}} koje nisu uključene ni na jednoj drugoj stranici.\nPre brisanja proverite da li druge stranice vode do tih šablona.",
        "unusedtemplateswlh": "ostale veze",
        "randompage": "Slučajna stranica",
        "randompage-nopages": "Nema stranica u {{PLURAL:$2|sledećem imenskom prostoru|sledećim imenskim prostorima}}: $1.",
        "randomincategory": "Slučajna stranica u kategoriji",
+       "randomincategory-invalidcategory": "„$1“ nije valjano ime kategorije",
+       "randomincategory-nopages": "Nema stranica u kategoriji [[:Category:$1|$1]].",
        "randomincategory-selectcategory-submit": "Idi",
        "randomredirect": "Slučajno preusmerenje",
        "randomredirect-nopages": "Nema preusmerenja u imenskom prostoru „$1”.",
        "pageswithprop-submit": "Idi",
        "doubleredirects": "Dvostruka preusmerenja",
        "doubleredirectstext": "Ova stranica prikazuje stranice koje preusmeravaju na druga preusmerenja.\nSvaki red sadrži veze prema prvom i drugom preusmerenju, kao i odredišnu stranicu drugog preusmerenja koja je obično „pravi“ članak na koga prvo preusmerenje treba da upućuje.\n<del>Precrtani</del> unosi su već rešeni.",
-       "double-redirect-fixed-move": "[[$1]] je premešten.\nSada je preusmerenje na [[$2]].",
-       "double-redirect-fixed-maintenance": "Ispravljanje dvostrukih preusmerenja iz [[$1]] u [[$2]].",
+       "double-redirect-fixed-move": "[[$1]] je premešten.\nAutomatski je ažurirano i sada preusmerava na [[$2]].",
+       "double-redirect-fixed-maintenance": "Automatski ispravlja dvostruka preusmerenja iz [[$1]] u [[$2]]. Kao deo održavanja.",
        "double-redirect-fixer": "Ispravljač preusmerenja",
        "brokenredirects": "Pokvarena preusmerenja",
        "brokenredirectstext": "Sledeća preusmerenja upućuju na nepostojeće stranice:",
        "deadendpagestext": "Sledeće stranice nemaju veze do drugih stranica na ovom vikiju.",
        "protectedpages": "Zaštićene stranice",
        "protectedpages-indef": "Samo neograničene zaštite",
+       "protectedpages-summary": "Na ovoj stranici se nalazi spisak trenutno zaštićenih stranica. Za spisak zaštićenih naslova vidi [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].",
        "protectedpages-cascade": "Samo prenosive zaštite",
        "protectedpages-noredirect": "Sakrij preusmerenja",
        "protectedpagesempty": "Nema zaštićenih stranica s ovim parametrima.",
        "protectedpages-unknown-timestamp": "nema",
        "protectedpages-unknown-performer": "nema",
        "protectedtitles": "Zaštićeni naslovi",
+       "protectedtitles-summary": "Na ovoj stranici se nalazi spisak trenutno zaštićenih naslova. Za spisak trenutno zaštićenih stranica vidi [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
        "protectedtitlesempty": "Nema zaštićenih naslova s ovim parametrima.",
        "listusers": "Spisak korisnika",
        "listusers-editsonly": "Prikaži samo korisnike koji su uređivali",
        "listusers-blocked": "({{GENDER:$1|blokiran|blokirana|blokiran}})",
        "activeusers": "Spisak aktivnih korisnika",
        "activeusers-intro": "Ovo je spisak korisnika koji su bili aktivni {{PLURAL:$1|prethodni dan|u poslednja $1 dana|u poslednjih $1 dana}}.",
-       "activeusers-count": "$1 {{PLURAL:$1|izmena|izmene|izmena}} {{PLURAL:$3|prethodni dan|u poslednja $3 dana|u poslednjih $3 dana}}",
+       "activeusers-count": "$1 {{PLURAL:$1|radnja|radnje|radnji}} {{PLURAL:$3|prethodni dan|u poslednja $3 dana|u poslednjih $3 dana}}",
        "activeusers-from": "Prikaži korisnike počev od:",
        "activeusers-hidebots": "Sakrij botove",
        "activeusers-hidesysops": "Sakrij administratore",
        "listgrouprights-removegroup-self": "uklanjanje {{PLURAL:$2|grupe|grupa}} sa svog naloga: $1",
        "listgrouprights-addgroup-self-all": "Dodaj sve grupe na sopstveni nalog",
        "listgrouprights-removegroup-self-all": "Ukloni sve grupe sa sopstvenog naloga",
+       "listgrouprights-namespaceprotection-namespace": "Imenski prostor",
+       "trackingcategories-nodesc": "Opis nije dostupan.",
        "mailnologin": "Nema adrese za slanje",
        "mailnologintext": "Morate biti [[Special:UserLogin|prijavljeni]] i imati ispravnu e-adresu u [[Special:Preferences|podešavanjima]] da biste slali e-poruke drugim korisnicima.",
        "emailuser": "Pošalji e-poruku",
        "contributions-title": "Doprinosi {{GENDER:$1|korisnika|korisnice}} $1",
        "mycontris": "Doprinosi",
        "contribsub2": "Za {{GENDER:$3|$1}} ($2)",
+       "contributions-userdoesnotexist": "Korisnički nalog „$1“ nije registrovan.",
        "nocontribs": "Nema izmena koje odgovaraju navedenim kriterijumima.",
        "uctop": "(poslednja)",
        "month": "od meseca (i ranije):",
        "range_block_disabled": "Administratorska mogućnost za blokiranje raspona IP adresa je onemogućena.",
        "ipb_expiry_invalid": "Vreme isteka je neispravno.",
        "ipb_expiry_temp": "Sakrivene blokade korisnika moraju biti trajne.",
-       "ipb_hide_invalid": "Ne mogu da potisnem ovaj nalog. Možda ima previše izmena.",
+       "ipb_hide_invalid": "Ne mogu da potisnem ovaj nalog; ima više od {{PLURAL:$1|jedne izmene|$1 izmena}}.",
        "ipb_already_blocked": "„$1“ je već blokiran",
        "ipb-needreblock": "$1 je već blokiran. Želite li da promenite podešavanja?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Druga blokada|Druge blokade}}",
        "importuploaderrortemp": "Ne mogu da pošaljem datoteku za uvoz.\nNedostaje privremena fascikla.",
        "import-parse-failure": "Pogrešno raščlanjivanje XML-a.",
        "import-noarticle": "Nema stranice za uvoz!",
-       "import-nonewrevisions": "Sve izmene su prethodno uvezene.",
+       "import-nonewrevisions": "Izmene nisu uvezene (sve su već bile ili prisutne ili preskočene zbog greški).",
        "xml-error-string": "$1 u redu $2, kolona $3 (bajt $4): $5",
        "import-upload": "Otpremanje XML podataka",
        "import-token-mismatch": "Gubitak podataka o sesiji.\nPokušajte ponovo.",
        "just-now": "upravo sad",
        "hours-ago": "Pre $1 {{PLURAL:$1|sat|sata|sati}}",
        "minutes-ago": "Pre $1 {{PLURAL:$1|minut|minuta}}",
+       "seconds-ago": "Pre $1 {{PLURAL:$1|sekunda|sekundi}}",
+       "monday-at": "Ponedeljak u $1",
+       "tuesday-at": "Utorak u $1",
+       "wednesday-at": "Sreda u $1",
+       "thursday-at": "Četvrtak u $1",
+       "friday-at": "Petak u $1",
+       "saturday-at": "Subota u $1",
+       "sunday-at": "Nedelja u $1",
+       "yesterday-at": "Juče u $1",
        "bad_image_list": "Format je sledeći:\n\nRazmatraju se samo nabrajanja (redovi koji počinju sa zvezdicom).\nPrva veza u redu mora da bude veza do neispravne datoteke.\nSve daljnje veze u istom redu smatraju se izuzecima.",
        "variantname-zh-hans": "hans",
        "variantname-zh-hant": "hant",
        "imgmultipagenext": "sledeća stranica →",
        "imgmultigo": "Idi!",
        "imgmultigoto": "Idi na stranicu $1",
+       "img-lang-default": "(podrazumevani jezik)",
        "img-lang-go": "Idi",
        "ascending_abbrev": "rast.",
        "descending_abbrev": "opad.",
        "watchlistedit-raw-done": "Vaš spisak nadgledanja je ažuriran.",
        "watchlistedit-raw-added": "{{PLURAL:$1|Dodat je jedan naslov|Dodata su $1 naslova|Dodato je $1 naslova}}:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 naslov je uklonjen|Uklonjena su $1 naslova|Uklonjeno je $1 naslova}}:",
+       "watchlistedit-clear-titles": "Naslovi:",
        "watchlisttools-view": "prikaži srodne izmene",
        "watchlisttools-edit": "prikaži i uredi spisak nadgledanja",
        "watchlisttools-raw": "izmeni sirov spisak nadgledanja",
        "version-hook-subscribedby": "Prijavljeno od",
        "version-version": "(izdanje $1)",
        "version-svn-revision": "(izm. $2)",
-       "version-license": "Licenca",
+       "version-license": "Medijaviki licenca",
        "version-ext-license": "Licenca",
+       "version-ext-colheader-name": "Ekstenzija",
        "version-ext-colheader-version": "Verzija",
        "version-ext-colheader-license": "Licenca",
        "version-ext-colheader-description": "Opis",
        "version-ext-colheader-credits": "Autori",
+       "version-license-title": "Licenca za $1",
        "version-poweredby-credits": "Ovaj viki pokreće '''[https://www.mediawiki.org/ Medijaviki]''', autorska prava © 2001-$1 $2.",
        "version-poweredby-others": "ostali",
+       "version-poweredby-translators": "translatewiki.net prevodioci",
        "version-credits-summary": "Želeli bismo da zahvalimo sledećim ljudima na njihovom doprinosu [[Special:Version|Medijavikiji]].",
        "version-license-info": "Medijaviki je slobodan softver možete ga redistribuirati i/ili modifikovati pod uslovima GNU-ove opšte javne licence verzija 2 ili svake sledeće koju objavi Zadužbina za slobodan softver.\n\nMedijaviki se redistribuirati u nadi da će biti od koristi, ali BEZ IKAKVE GARANCIJE čak i bez PODRAZUMEVANE GARANCIJE FUNKCIONALNOSTI ili PRIKLADNOSTI ZA ODREĐENEU NAMENU. Pogledajte GNU-ovu opštu javnu licencu za više informacija.\n\nTrebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove opšte javne licence] zajedno s ovim programom. Ako niste, pišite na Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA ili [//www.gnu.org/licenses/old-licenses/gpl-2.0.html pročitajte ovde].",
        "version-software": "Instalirani softver",
        "redirect-legend": "Preusmeri na datoteku ili stranicu",
        "redirect-submit": "Idi",
        "redirect-value": "Vrednost:",
+       "redirect-user": "Korisnički ID",
+       "redirect-page": "ID stranice",
        "redirect-file": "Naziv datoteke",
        "redirect-not-exists": "Vrednost nije pronađen",
        "fileduplicatesearch": "Pretraga duplikata",
        "api-error-ok-but-empty": "Unutrašnja greška: server ne odgovara.",
        "api-error-overwrite": "Zamenjivanje postojeće datoteke je zabranjeno.",
        "api-error-stashfailed": "Unutrašnja greška: server ne može da sačuva privremenu datoteku.",
+       "api-error-publishfailed": "Unutrašnja greška: server nije uspeo da objavi privremenu datoteku.",
        "api-error-timeout": "Server nije odgovorio u očekivano vreme.",
        "api-error-unclassified": "Došlo je do nepoznate greške",
        "api-error-unknown-code": "Nepoznata greška: „$1“",
        "duration-centuries": "$1 {{PLURAL:$1|vek|veka|vekova}}",
        "duration-millennia": "$1 {{PLURAL:$1|milenijum|milenijuma|milenijuma}}",
        "rotate-comment": "Slika je rotirana za $1° u smeru kazaljke na satu",
+       "limitreport-cputime-value": "$1 {{PLURAL:$1|sekunda|sekund|sekundi}}",
+       "limitreport-walltime-value": "$1 {{PLURAL:$1|sekund|sekunde|sekundi}}",
+       "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|bajt|bajta|bajtova}}",
+       "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bajt|bajta|bajtova}}",
        "expandtemplates": "Zamena šablona",
        "expand_templates_intro": "Ova posebna stranica uzima tekst i menja sve šablone u njemu rekurzivno.\nTakođe menja funkcije parsera kao što je <code><nowiki>{{</nowiki>#language:…}}</code> i promenljive kao što je <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nZapravo praktično sve što se nalazi između vitičastih zagrada.",
        "expand_templates_title": "Naziv konteksta; za {{STRANICA}} itd.:",
index 777299d..7b9d9ce 100644 (file)
        "edit-gone-missing": "పేజీని తాజాకరించలేకపోయాం.\nదాన్ని తొలగించినట్టున్నారు.",
        "edit-conflict": "దిద్దుబాటు ఘర్షణ.",
        "edit-no-change": "పాఠ్యంలో మార్పులేమీ చెయ్యలేదు కాబట్టి, మీ మార్పును పట్టించుకోవట్లేదు.",
+       "postedit-confirmation-created": "పేజీ సృష్టించబడినది.",
        "postedit-confirmation-saved": "మీ మార్పు భద్రమయ్యింది.",
        "edit-already-exists": "కొత్త పేజీని సృష్టించలేకపోయాం.\nఅది ఇప్పటికే ఉంది.",
        "defaultmessagetext": "అప్రమేయ సందేశపు పాఠ్యం",
        "right-move": "పేజీలను తరలించడం",
        "right-move-subpages": "పేజీలను వాటి ఉపపేజీలతో బాటుగా తరలించడం",
        "right-move-rootuserpages": "వాడుకరుల ప్రధాన పేజీలను తరలించగలగడం",
+       "right-move-categorypages": "వర్గ పేజీలను తరలించు",
        "right-movefile": "ఫైళ్ళను తరలించడం",
        "right-suppressredirect": "పేజీని తరలించేటపుడు పాత పేరు నుండి దారిమార్పును సృష్టించకుండా ఉండటం",
        "right-upload": "దస్త్రాలను ఎక్కించడం",
        "action-move": "ఈ పేజీని తరలించే",
        "action-move-subpages": "ఈ పేజీని, దీని ఉపపేజీలనూ తరలించే",
        "action-move-rootuserpages": "ప్రధాన వాడుకరి పేజీలని తరలించే",
+       "action-move-categorypages": "వర్గ పేజీలను తరలించు",
        "action-movefile": "ఈ ఫైలుని తరలించే",
        "action-upload": "ఈ దస్త్రాన్ని ఎక్కించే",
        "action-reupload": "ఈ ఫైలుని తిరగవ్రాసే",
        "watchnologin": "లాగిన్‌ అయిలేరు",
        "addwatch": "వీక్షణ జాబితాలో చేర్చు",
        "addedwatchtext": "\"[[:$1]]\" అనే పుట మీ [[Special:Watchlist|వీక్షణ జాబితా]]లో చేరింది.\nభవిష్యత్తులో ఈ పుటకి మరియు సంబంధిత చర్చాపుటకి జరిగే మార్పులు అక్కడ కనిపిస్తాయి.",
+       "addedwatchtext-short": "\"$1\" పేజీ మీ వీక్షణజాబితాకు చేర్చబడినది.",
        "removewatch": "వీక్షణ జాబితా నుండి తొలగించు",
        "removedwatchtext": "\"[[:$1]]\" అనే పేజీ [[Special:Watchlist|మీ వీక్షణ జాబితా]] నుండి తొలగించబడినది.",
+       "removedwatchtext-short": "\"$1\" పేజీ మీ వీక్షణ జాబితానుండి తొలగించబడినది.",
        "watch": "వీక్షించు",
        "watchthispage": "ఈ పుట మీద కన్నేసి ఉంచు",
        "unwatch": "వీక్షించవద్దు",
        "newimages-summary": "ఇటీవలే ఎగుమతైన ఫైళ్ళను ఈ ప్రత్యేక పేజీ చూపిస్తుంది.",
        "newimages-legend": "పడపోత",
        "newimages-label": "ఫైలుపేరు (లేదా దానిలోని భాగం):",
+       "newimages-showbots": "బాట్లు చేసిన అప్లోడ్లు చూపించు",
        "noimages": "చూసేందుకు ఏమీ లేదు.",
        "ilsubmit": "వెతుకు",
        "bydate": "తేదీ వారీగ",
        "watchlistedit-raw-done": "మీ వీక్షణ జాబితాను తాజాకరించాం.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 శీర్షికను|$1 శీర్షికలను}} చేర్చాం:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 శీర్షికను|$1 శీర్షికలను}} తీసివేశాం:",
+       "watchlistedit-clear-titles": "శీర్షికలు:",
+       "watchlistedit-clear-submit": "వీక్షణ జాబితా శుభ్రం చేయి (ఇది శాశ్వతం!)",
+       "watchlistedit-clear-done": "మీ వీక్షణ జాబితాను శుభ్రం చేశాం.",
+       "watchlisttools-clear": "వీక్షణజాబితాను శుభ్రం చేయి",
        "watchlisttools-view": "సంబంధిత మార్పులను చూడండి",
        "watchlisttools-edit": "వీక్షణ జాబితాను చూడండి లేదా మార్చండి",
        "watchlisttools-raw": "ముడి వీక్షణ జాబితాలో మార్పులు చెయ్యి",
        "htmlform-chosen-placeholder": "ఒక ఐచ్ఛికాన్ని ఎంచుకోండి",
        "htmlform-cloner-create": "ఇంకా చేర్చు",
        "htmlform-cloner-delete": "తొలగించు",
+       "htmlform-cloner-required": "కనీసం ఒక విలువు అయినా ఇవ్వాలి.",
        "sqlite-has-fts": "$1 పూర్తి-పాఠ్య అన్వేషణ తోడ్పాటుతో",
        "sqlite-no-fts": "$1 పూర్తి-పాఠ్య అన్వేషణ తోడ్పాటు లేకుండా",
        "logentry-delete-delete": "$1 $3 పేజీని {{GENDER:$2|తొలగించారు}}",
index 79c6d4c..ffd0c95 100644 (file)
@@ -38,7 +38,7 @@
        "tog-watchmoves": "เพิ่มและไฟล์ที่ฉันเปลี่ยนชื่อเข้ารายการเฝ้าดู",
        "tog-watchdeletion": "เพิ่มหน้าและไฟล์ที่ฉันลบเข้ารายการเฝ้าดู",
        "tog-minordefault": "กำหนดให้การแก้ไขทุกครั้งเป็นการแก้ไขเล็กน้อยโดยปริยาย",
-       "tog-previewontop": "à¹\81สà¸\94à¸\87à¸\95ัวอยà¹\88าà¸\87à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\9aนกล่องแก้ไข",
+       "tog-previewontop": "à¹\83หà¹\89à¸\95ัวอยà¹\88าà¸\87à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¹\81สà¸\94à¸\87à¸\81à¹\88อนกล่องแก้ไข",
        "tog-previewonfirst": "แสดงตัวอย่างการแก้ไขสำหรับการแก้ไขครั้งแรก",
        "tog-enotifwatchlistpages": "อีเมลหาเมื่อหน้าหรือไฟล์ในรายการเฝ้าดูมีการเปลี่ยนแปลง",
        "tog-enotifusertalkpages": "อีเมลหาเมื่อหน้าคุยกับผู้ใช้ของฉันมีการเปลี่ยนแปลง",
index 0c39b04..65c09af 100644 (file)
        "loginprompt": "Dapat na pinapahintulutan mo ang mga kuki (''cookie'') upang makalagda sa {{SITENAME}}.",
        "userlogin": "Lumagda / lumikha ng account",
        "userloginnocreate": "Lumagda",
-       "logout": "Umalis sa pagkakalagda",
-       "userlogout": "Umalis sa pagkakalagda",
+       "logout": "Umalis sa pagkaka-login",
+       "userlogout": "Umalis sa pagkaka-login",
        "notloggedin": "Hindi nakalagda",
        "userlogin-noaccount": "Wala ka pa bang account?",
        "userlogin-joinproject": "Sumali sa {{SITENAME}}",
        "passwordremindertext": "Mayroong (na maaaring ikaw, mula sa adres ng IP na $1) humiling ng isang bagong\npassword para sa {{SITENAME}} ($4). Isang pansamantalang password ang nilikha\npara sa tagagamit na \"$2\" at itinakda sa \"$3\".  Kung ito ang iyong pakay,\nkailangan mo na ngayong mag-login at pumili ng isang bagong password.\nMawawala/magtatapos ang bisa ang pansamantala mong password sa loob ng {{PLURAL:$5|isang araw|$5 araw}}.\n\nKung ibang tao ang humiling nito, o kung naalala mo na ang iyong password,\nat hindi mo na ibig pang baguhin ito, maaari mong huwag pansinin ang mensaheng ito at\nmagpatuloy sa paggamit ng iyong lumang password.",
        "noemail": "Walang nakatalang adres ng e-liham para sa tagagamit na \"$1\".",
        "noemailcreate": "Kailangan mong magbigay ng may-bisang direksiyong e-liham",
-       "passwordsent": "Isang bagong hudyat ang ipinadala sa adres ng e-liham na nakatala para kay \"$1\".\nLumagda/Tumala lang po muli pagkaraan mong matanggap ito.",
+       "passwordsent": "Isang bagong password ang ipinadala sa email address na nakatala para kay \"$1\".\nPaki login muli pagkaraan mong matanggap ito.",
        "blocked-mailpassword": "Hinarangan sa paggawa ng mga pagbabago ang iyong adres ng IP, at kaya hindi rin pinapahintulutang gumamit ng tungkuling makabawi ng hudyat para maiwasan ang pangaabuso.",
        "eauthentsent": "Nagpadala ng isang email na pangkompirmasyon doon sa tinukoy na email address.\nBago magpadala ng iba email sa account, kailangan mong sundin ang mga tagubiling nasa loob ng email, para mapatunayang iyo talaga ang account.",
        "throttled-mailpassword": "Nagpadala na ng isang paalalang pang-password, nitong huling {{PLURAL:$1|oras|$1 oras}}.\nPara maiwasin ang pangaabuso, isang paalalang pang-password lamang ang ipapadala bawat {{PLURAL:$1|oras|$1 oras}}.",
        "continue-editing": "Pumunta sa pook ng pamamatnugot",
        "previewconflict": "Ipinamamalas ng paunang tinging ito ang teksto sa loob ng pangitaas na pook-patnugutan ng teksto ayon sa lilitaw na anyo nito kapag pinili mo ang pagsagip.",
        "session_fail_preview": "'''Paumanhin! Hindi namin maproseso ang iyong pagbabago hinggil sa pagkawala ng datos ng sesyon.'''\nPakiulit muli.\nKung hindi ito gumana, subukang [[Special:UserLogout|umalis sa pagkalagda]] at bumalik muli.",
-       "session_fail_preview_html": "'''Paumanhin! Hindi namin maproseso ang iyong pagbabago hinggil sa pagkawala ng datos ng sesyon.'''\n\n''Dahil naka-andar ang hilaw na HTML sa {{SITENAME}}, nakatago ang paunang tingin bilang pag-iingat sa mga paglusob ng JavaScript.''\n\n'''Kung lehitimong pagbabago ito, paki-ulit muli.'''\nKung hindi pa rin ito gumagana, subukang [[Special:UserLogout|umalis sa pagkakalagda]] at lumagda muli.",
+       "session_fail_preview_html": "'''Paumanhin! Hindi namin maproseso ang iyong pagbabago hinggil sa pagkawala ng datos ng sesyon.'''\n\n''Dahil naka-andar ang hilaw na HTML sa {{SITENAME}}, nakatago ang paunang tingin bilang pag-iingat sa mga paglusob ng JavaScript.''\n\n'''Kung lehitimong pagbabago ito, paki-ulit muli.'''\nKung hindi pa rin ito gumagana, subukang [[Special:UserLogout|mag-logout]] at mag-login muli.",
        "token_suffix_mismatch": "'''Hindi tinanggap ang iyong pagbabago dahil sinira ng kliyente ang mga karakter na bantas sa ''token'' ng mamatnugot.\nTinanggihan ang pagbabago upang maiwasan ang korapsyon ng teksto ng artikulo.\nKadalasang nangyayari ito kapag gumagamit ka ng masurot na serbisyo ng hindi-nakikilalang apoderadong (''anonymous proxy'') nasa web.",
        "edit_form_incomplete": "'''Ilan sa mga bahagi ng pormularyong pampatnugot ay hindi nakarating sa tagapaghain; suriing muli na ang iyong mga pagbabago ay buo at subukang muli.'''",
        "editing": "Binabago ang $1",
        "listgrouprights-addgroup-self-all": "Idagdag ang lahat ng mga pangkat sa sariling account",
        "listgrouprights-removegroup-self-all": "Alisin ang lahat ng mga pangkat mula sa sariling account",
        "mailnologin": "Walang adres na mapagpapadalahan",
-       "mailnologintext": "Kailangan mong [[Special:UserLogin|lumagda]] at magkaroon ng tanggap na e-liham sa iyong [[Special:Preferences|mga kagustuhan]] para makapagpadala ng e-liham sa ibang mga tagagamit.",
+       "mailnologintext": "Kailangan mong [[Special:UserLogin|maglogin]] at magkaroon ng balidong email address sa iyong [[Special:Preferences|mga kagustuhan]] para makapagpadala ng e-mail sa ibang mga tagagamit.",
        "emailuser": "Padalhan ng e-liham ang tagagamit",
        "emailuser-title-target": "Padalhan ng elektronikong liham ang {{GENDER:$1|tagagamit}} na ito",
        "emailuser-title-notarget": "Padalhan ng e-liham ang tagagamit",
        "revertpage-nouser": "Ibinalik ang mga pagbabago ni (tinanggal ang bansag) patungo sa huling rebisyon ni [[User:$1|$1]]",
        "rollback-success": "Ibinalik ang mga pagbabago ni $1; ibinalik sa huling bersyon ni $2.",
        "sessionfailure-title": "Nabigong pulong",
-       "sessionfailure": "Tila mayroong suliraning may kaugnayan sa iyong sesyon/panahon ng pagkakalagda;\nKinansela ang galaw/gawaing ito bilang pagiingat laban sa pagnanakaw (panghahaydyak) ng sesyon/panahon.\nPakipindot ang pindutang \"ibalik\" (''back'') at ikarga uli ang pinanggalingan mong pahina, sumubok uli pagkaraan.",
+       "sessionfailure": "Tila mayroong suliraning may kaugnayan sa iyong sesyon ng login;\nKinansela ang gawaing ito bilang pag-iingat laban sa pagnanakaw ng sesyon.\nPakipindot ang pindutang \"ibalik\" Bumalik muli sa nakaraang pahina at ikarga uli (''reload'') ito at pagkatapos subukan muli.",
        "protectlogpage": "Talaan ng pagsasanggalang",
        "protectlogtext": "Nasa ibaba ang isang talaan ng mga pagbabago sa mga pruteksiyon ng pahina.\nTingnan ang [[Special:ProtectedPages|talaan ng pinuprutektahang mga pahina]] para sa talaan ng kasalukuyang gumaganang mga pagprutekta ng pahina.",
        "protectedarticle": "ipinagsanggalang ang \"[[$1]]\"",
        "tooltip-pt-watchlist": "Ang talaan ng mga pagbabago sa mga pahinang binabantayan mo",
        "tooltip-pt-mycontris": "Talaan ng mga ambag mo",
        "tooltip-pt-login": "Hinihimok kang lumagda, bagaman hindi ito kinakailangan.",
-       "tooltip-pt-logout": "Umalis sa pagkakalagda",
+       "tooltip-pt-logout": "Umalis sa pagkaka-login",
        "tooltip-ca-talk": "Usapan tungkol sa nilalaman ng pahinang ito",
        "tooltip-ca-edit": "Maaaring baguhin ang pahinang ito. Paki gamit ang buton ng paunang tingin bago itala.",
        "tooltip-ca-addsection": "Magsimula ng isang bagong seksiyon",
        "confirmemail_sendfailed": "Hindi maipadala ng {{SITENAME}} ang iyong liham ng pagpapatotoo (kumpirmasyon).\nPakisuri ang iyong adres ng e-liham kung may mga hindi tanggap na mga panitik/karakter.\n\nIbinalik ng tagapagpadala ang: $1",
        "confirmemail_invalid": "Hindi tamang kodigo ng kumpirmasyon.  Maaaring lumagpas na sa taning ang kodigo.",
        "confirmemail_needlogin": "Kailangan mong $1 upang kumpirmahin/mapatotohanan ang iyong adres ng e-liham.",
-       "confirmemail_success": "Nakumpirma/napatotohanan na ang adres ng e-liham mo. Maaari ka ng [[Special:UserLogin|lumagda]] at maglibang sa wiki.",
+       "confirmemail_success": "Napatotohanan na ang email address mo. Maaari ka ng [[Special:UserLogin|mag-login]] at ikalugod ang wiki.",
        "confirmemail_loggedin": "Natiyak na ngayon ang tirahan ng e-liham mo.",
        "confirmemail_subject": "Kumpirmasyon/pagpapatotoong pang-adres ng e-liham ng {{SITENAME}}",
        "confirmemail_body": "May isang tao, malamang ikaw, na mula sa IP address na $1,\nang nagtala ng isang account na \"$2\" na mayroong ganitong email address sa {{SITENAME}}.\n\nPara patotohanang ikaw nga ang may-ari ng account ito at para buhayin ang mga tampok (features) sa email sa {{SITENAME}}, buksan ang link na ito sa iyong browser:\n\n$3\n\nKung *hindi* mo itinala ang account, sundan mo ang link na ito\npara kanselahin o huwag nang ituloy ang pagpapatotoo ng email address:\n\n$5\n\nMagwawalang-saysay ang kodigo ng pagpapatotoong ito sa $4.",
index 5f868d7..8ab9b6e 100644 (file)
        "parser-template-loop-warning": "Phát hiện bản mẫu lặp vòng: [[$1]]",
        "parser-template-recursion-depth-warning": "Bản mẫu đã vượt quá giới hạn về độ sâu đệ quy ($1)",
        "language-converter-depth-warning": "Đã vượt quá giới hạn độ sâu của bộ chuyển đổi ngôn ngữ ($1)",
-       "node-count-exceeded-category": "Những trang có số nốt vượt quá giới hạn cho phép",
+       "node-count-exceeded-category": "Trang có số nốt vượt quá giới hạn cho phép",
+       "node-count-exceeded-category-desc": "Thể loại chứa các trang có số nốt vượt quá giới hạn cho phép.",
        "node-count-exceeded-warning": "Trang có nhiều nốt quá",
-       "expansion-depth-exceeded-category": "Những trang có độ sâu bung bản mẫu vượt quá giới hạn cho phép",
+       "expansion-depth-exceeded-category": "Trang có độ sâu bung bản mẫu vượt quá giới hạn cho phép",
+       "expansion-depth-exceeded-category-desc": "Thể loại này chứa các trang có độ sâu bung bản mẫu vượt quá giới hạn cho phép.",
        "expansion-depth-exceeded-warning": "Trang bung bản mẫu sâu quá",
        "parser-unstrip-loop-warning": "Vòng lặp unstrip",
        "parser-unstrip-recursion-limit": "Đã vượt quá giới hạn về độ sâu đệ quy unstrip ($1)",
        "right-move": "Di chuyển trang",
        "right-move-subpages": "Di chuyển trang cùng với các trang con của nó",
        "right-move-rootuserpages": "Di chuyển các trang cá nhân chính",
+       "right-move-categorypages": "Di chuyển trang thể loại",
        "right-movefile": "Di chuyển tập tin",
        "right-suppressredirect": "Không tạo đổi hướng từ tên cũ khi di chuyển trang",
        "right-upload": "Tải tập tin lên",
        "action-move": "di chuyển trang này",
        "action-move-subpages": "di chuyển trang này và các trang con",
        "action-move-rootuserpages": "di chuyển trang cá nhân chính",
+       "action-move-categorypages": "di chuyển trang thể loại",
        "action-movefile": "di chuyển tập tin này",
        "action-upload": "tải tập tin này lên",
        "action-reupload": "ghi đè lên tập tin có sẵn này",
        "watchnologin": "Chưa đăng nhập",
        "addwatch": "Thêm vào danh sách theo dõi",
        "addedwatchtext": "Trang “[[:$1]]” đã vào [[Special:Watchlist|danh sách theo dõi]] của bạn.\nNhững sửa đổi đối với trang này và trang thảo luận của nó sẽ được liệt kê ở đấy.",
+       "addedwatchtext-short": "Trang “$1” đã được thêm vào danh sách theo dõi của bạn.",
        "removewatch": "Gỡ khỏi danh sách theo dõi",
        "removedwatchtext": "Trang “[[:$1]]” đã được đưa ra khỏi [[Special:Watchlist|danh sách theo dõi]] của bạn.",
+       "removedwatchtext-short": "Trang “$1” đã được xóa khỏi danh sách theo dõi của bạn.",
        "watch": "Theo dõi",
        "watchthispage": "Theo dõi trang này",
        "unwatch": "Ngừng theo dõi",
        "movepagetalktext": "Trang thảo luận đi kèm sẽ được tự động di chuyển theo '''trừ khi''':\n*Đã tồn tại một trang thảo luận không trống tại tên mới, hoặc\n*Bạn không đánh vào ô bên dưới.\n\nTrong những trường hợp đó, bạn phải di chuyển hoặc hợp nhất trang theo kiểu thủ công nếu muốn.",
        "movearticle": "Di chuyển trang:",
        "moveuserpage-warning": "'''Cảnh báo:''' Bạn sắp di chuyển trang cá nhân của người dùng. Xin lưu ý rằng chỉ có trang này sẽ được di chuyển, còn người dùng sẽ ''không'' đổi tên.",
+       "movecategorypage-warning": "<strong>Cảnh báo:</strong> Bạn sắp sửa di chuyển một trang thể loại. Lưu ý rằng chỉ trang này sẽ được di chuyển, còn trang nào được xếp vào thể loại cũ sẽ <em>không</em> được xếp vào thể loại mới.",
        "movenologintext": "Bạn phải là thành viên đã mở tài khoản và [[Special:UserLogin|đăng nhập]] mới di chuyển trang được.",
        "movenotallowed": "Bạn không có quyền di chuyển trang.",
        "movenotallowedfile": "Bạn không có đủ quyền để di chuyển tập tin.",
        "cant-move-user-page": "Bạn không có quyền di chuyển trang cá nhân (ngoại trừ trang con).",
        "cant-move-to-user-page": "Bạn không có quyền di chuyển một trang đến trang cá nhân (ngoại trừ đến trang con của trang cá nhân).",
+       "cant-move-category-page": "Bạn không có quyền di chuyển trang thể loại.",
+       "cant-move-to-category-page": "Bạn không có quyền di chuyển một trang vào không gian tên Thể loại.",
        "newtitle": "Tên mới",
        "move-watch": "Theo dõi trang này",
        "movepagebtn": "Di chuyển trang",
        "newimages-summary": "Trang đặc biệt này hiển thị các tập tin được tải lên gần đây nhất.",
        "newimages-legend": "Bộ lọc",
        "newimages-label": "Tên tập tin (hoặc một phần tên):",
+       "newimages-showbots": "Xem các tập tin do bot tải lên",
        "noimages": "Chưa có hình.",
        "ilsubmit": "Tìm kiếm",
        "bydate": "theo ngày",
        "watchlistedit-raw-done": "Danh sách các trang bạn theo dõi đã được cập nhật.",
        "watchlistedit-raw-added": "$1 {{PLURAL:$1|tựa đề|tựa đề}} đã được thêm vào:",
        "watchlistedit-raw-removed": "$1 {{PLURAL:$1|tựa đề|tựa đề}} đã được xóa khỏi danh sách:",
+       "watchlistedit-clear-title": "Đã xóa sạch danh sách theo dõi",
+       "watchlistedit-clear-legend": "Xóa sạch danh sách theo dõi",
+       "watchlistedit-clear-explain": "Tất cả các tiêu đề sẽ được xóa khỏi danh sách theo dõi của bạn.",
+       "watchlistedit-clear-titles": "Các tiêu đề:",
+       "watchlistedit-clear-submit": "Xóa sạch danh sách theo dõi (không thể lùi lại!)",
+       "watchlistedit-clear-done": "Đã xóa sạch danh sách theo dõi của bạn.",
+       "watchlistedit-clear-removed": "$1 tựa đề đã được xóa khỏi danh sách:",
+       "watchlistedit-too-many": "Danh sách có quá nhiều trang để hiển thị.",
+       "watchlisttools-clear": "Xóa sạch danh sách theo dõi",
        "watchlisttools-view": "Xem thay đổi trên các trang theo dõi",
        "watchlisttools-edit": "Xem và sửa danh sách theo dõi",
        "watchlisttools-raw": "Sửa danh sách theo dõi dạng thô",
index e35ecc3..8978542 100644 (file)
        "resetpass-abort-generic": "פאסווארט ענדערונג איז מבוטל געווארן דורך א פארברייטערונג.",
        "resetpass-expired": "אירע פאסווארט איז אויסגעגאנגען. זײַט אזוי גוט שטעלט א נײַ פאסווארט כדי ארײַנלאגירן.",
        "resetpass-expired-soft": "אײַער פאסווארט איז אויסגעגאנגען און דארף ווערן צוריקגעשטעלט. זײַט אזוי גוט קלויבט א נײַ פאסווארט אצינד, אדער קליקט \"{{int:resetpass-submit-cancel}}\" כדי עס צוריקשטעלן שפעטער.",
+       "resetpass-validity-soft": "אײַער פאסווארט איז נישט גילטיק: $1\n\nזײַט אזוי גוט קלויבט א נײַ פאסווארט אצינד, אדער קליקט \"{{int:resetpass-submit-cancel}}\" כדי עס צוריקשטעלן שפעטער.",
        "passwordreset": "צוריקשטעלן פאַסווארט",
        "passwordreset-text-one": "דערגאַנצט די פאָרעם צוריקצושטעלן אײַער פאַסווארט.",
        "passwordreset-text-many": "{{PLURAL:$1|דערגאַנצט איינע פֿון די פֿעלדער כדי צו באקומען א פראוויזאריש פאַסווארט דור כן פאסט.}}",
        "right-move": "באוועג בלעטער",
        "right-move-subpages": "באַוועגן בלעטער מיט זייערע אונטערבלעטער",
        "right-move-rootuserpages": "באַוועגן באַניצער הויפטבלעטער",
+       "right-move-categorypages": "באוועגן קאטעגאריע בלעטער",
        "right-movefile": "באַוועגן טעקעס",
        "right-suppressredirect": "נישט שאַפֿן א ווײַטערפֿירונג פֿונעם אַלטן בלאַט בײַם באַוועגן אַ בלאַט",
        "right-upload": "ארויפלאדן טעקעס",
        "action-move": "באַוועגן דעם בלאַט",
        "action-move-subpages": "באַוועגן דעם בלאַט מיט זײַנע אונטערבלעטער",
        "action-move-rootuserpages": "באַוועגן באַניצער הויפטבלעטער",
+       "action-move-categorypages": "באוועגן קאטעגאריע בלעטער",
        "action-movefile": "באַוועגן די טעקע",
        "action-upload": "אַרויפֿלאָדן די טעקע",
        "action-reupload": "איבערשרײַבן די עקזיסטירנדע טעקע",
        "unwatchedpages": "בלעטער וואס זענען נישט אויפגעפאסט",
        "listredirects": "ליסטע פון ווײַטערפֿירונגען",
        "listduplicatedfiles": "ליסטע פון טעקעס מיט דופליקאטן",
+       "listduplicatedfiles-entry": "[[:טעקע:$1|$1]] האט [[$3|{{PLURAL:$2|א דופליקאט|$2 דופליקאטן}}]].",
        "unusedtemplates": "נישט באניצטע מוסטערן",
        "unusedtemplatestext": "דער בלאט ווײַזט אלע בלעטער אינעם {{ns:template}} נאמענטייל וואס זענען נישט אײַנגעשלאסן אין אן אנדער בלאט. געדענקט צו באקוקן אנדערע בלעטער פאר לינקען צו די מוסטערן איידער איר מעקט זיי אויס.",
        "unusedtemplateswlh": "אנדערע פֿאַרבינדונגען",
        "protectedpages-timestamp": "צײַטשטעמפל",
        "protectedpages-page": "בלאַט",
        "protectedpages-expiry": "גייט אויס",
+       "protectedpages-performer": "געשטיצט דורך",
+       "protectedpages-params": "שוץ־פאראמעטערס",
        "protectedpages-reason": "אורזאַך",
        "protectedpages-unknown-timestamp": "אומבאַוואוסט",
        "protectedpages-unknown-performer": "אומבאוואוסטער באניצער",
        "listgrouprights-addgroup-self-all": "צולייגן אַלע גרופעס צו אייגענער קאנטע",
        "listgrouprights-removegroup-self-all": "אראָפנעמען אַלע גרופעס פֿון אייגענער קאנטע",
        "listgrouprights-namespaceprotection-namespace": "נאָמענטייל",
+       "trackingcategories-name": "מעלדונג נאמען",
+       "trackingcategories-desc": "קאטעגאריע אײַנשליסן קריטעריע",
        "mailnologin": "נישטא קיין אדרעס צו שיקן",
        "mailnologintext": "איר ברויכט זײַן [[Special:UserLogin|אַרײַנלאגירט]] און האָבן א גילטיגן ע־פאסט אַדרעס אין אײַער [[Special:Preferences|פרעפֿערענצן]] צו שיקן ע־פאסט צו אַנדערע באַניצער.",
        "emailuser": "שיקן ע-פאסט צו דעם באַניצער",
        "movenotallowedfile": "איר האט נישט קיין רשות צו באוועגן טעקעס.",
        "cant-move-user-page": "איר זענט נישט דערלויבט צו באַוועגן באַניצער בלעטער (אחוץ אונטערבלעטער).",
        "cant-move-to-user-page": "איר זענט נישט דערלויבט צו באַוועגן א בלאַט צו א באַניצער בלאַט (אַחוץ צו א באַניצער אונטערבלאַט).",
+       "cant-move-category-page": "איר זענט נישט דערלויבט צו באוועגן קאטעגאריע בלעטער.",
        "newtitle": "צו נייעם קעפל:",
        "move-watch": "אויפֿפאַסן אויף דעם בלאַט",
        "movepagebtn": "באַוועגן בלאַט",
        "confirm-watch-top": "צולייגן דעם בלאט צו אייער אויפֿפאסונג ליסטע?",
        "confirm-unwatch-button": "יאָ",
        "confirm-unwatch-top": "אראפנעמען דעם בלאט פון אייער אויפפאסונג ליסטע?",
+       "quotation-marks": "„$1“",
        "imgmultipageprev": "→ פֿריערדיגער בלאַט",
        "imgmultipagenext": "צום קומענדיגן בלאט ←",
        "imgmultigo": "גייט!",
        "imgmultigoto": "אריבער צו בלאט $1",
+       "img-lang-default": "(גרונטשפראך)",
+       "img-lang-go": "גיין",
        "ascending_abbrev": "ארויף",
        "descending_abbrev": "נידערן",
        "table_pager_next": "נעקסטער בלאט",
        "watchlistedit-raw-done": "אייער אויפֿפאַסונג ליסטע איז געווארן דערהײַנטיקט",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 טיטל איז|$1 טיטלען זענען}} געווען צוגעלייגט:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 טיטל איז|$1 טיטלען זענען}} געווען אַראָפגענומען:",
+       "watchlistedit-clear-titles": "טיטלען:",
+       "watchlisttools-clear": "ליידיקן די אויפפאסן ליסטע",
        "watchlisttools-view": "ווייזן שייכדיגע ענדערונגען",
        "watchlisttools-edit": "זען און רעדאקטירן די אויפֿפאסונג ליסטע",
        "watchlisttools-raw": "רעדאקטירן די רויע אויפֿפאסונג ליסטע",
        "version-hook-name": "נאמען פון hook",
        "version-version": "(ווערסיע $1)",
        "version-license": "מעדיעוויקי ליצענץ",
+       "version-ext-license": "ליצענץ",
        "version-poweredby-others": "אַנדערע",
        "version-poweredby-translators": "translatewiki.net איבערזעצער",
        "version-credits-summary": "מיר ווילן אנערקענען די פֿאלגנדע מענטשן פֿאר זייער בײַשטײַערוג צו [[Special:Version|מעדיעוויקי]].",
        "fileduplicatesearch-info": "$1 × $2 פיקסעל<br />טעקע גרייס: $3<br /> טיפ MIME: $4",
        "fileduplicatesearch-noresults": "קיין טעקע מיטן נאמען \"$1\" נישט געטראפֿן.",
        "specialpages": "ספּעציעלע זײַטן",
+       "specialpages-note-top": "לעגענדע",
        "specialpages-note": "* נארמאַלע באַזונדערע בלעטער.\n* <span class=\"mw-specialpagerestricted\">באַגרענעצטע באַזונדערע בלעטער.</span>",
        "specialpages-group-maintenance": "אויפֿהאַלטונג באַריכטן",
        "specialpages-group-other": "אַנדערע ספעציעלע בלעטער",
index eb30dc1..459f6f2 100644 (file)
@@ -65,7 +65,7 @@
        "tog-editondblclick": "啟用滑鼠雙擊編輯頁面",
        "tog-editsectiononrightclick": "啟用滑鼠右鍵點選章節標題編輯",
        "tog-watchcreations": "將我建立的頁面和上傳的檔案加入監視列表",
-       "tog-watchdefault": "將我更改的頁面和檔案加入監視列表",
+       "tog-watchdefault": "將我編輯的頁面和檔案加入監視列表",
        "tog-watchmoves": "將我移動的頁面和檔案加入監視列表",
        "tog-watchdeletion": "將我刪除的頁面和檔案加入監視列表",
        "tog-minordefault": "預設標記所有的編輯為小修訂",
        "help": "說明",
        "search": "搜尋",
        "searchbutton": "搜尋",
-       "go": "進入",
+       "go": "前往",
        "searcharticle": "進入",
        "history": "頁面歷史",
        "history_short": "歷史",
        "changeemail-cancel": "取消",
        "changeemail-throttled": "您最近嘗試了太多次登入。\n請等待 $1 後再試。",
        "resettokens": "重設密鑰",
-       "resettokens-text": "你可以在這裡重設與您的帳戶私隱有關連的密鑰。\n\n如果您意外地與任何一個人分享這些密鑰,或者您的帳戶被入侵、受到破壞,您應該重設密鑰。",
+       "resettokens-text": "您可以在此重設用來存取您帳號相關隱私資料的密鑰。\n\n若您不小心將您的密鑰分享給其他人或您的帳號已遭到入侵、破壞,應該要重設此密鑰。",
        "resettokens-no-tokens": "沒有可重設的密鑰。",
-       "resettokens-legend": "重設密鑰",
+       "resettokens-legend": "重設密鑰",
        "resettokens-tokens": "密鑰:",
        "resettokens-token-label": "$1 (目前為 $2)",
-       "resettokens-watchlist-token": "用於訂閱 [[Special:Watchlist|監視列表]] 的 Atom/RSS 的密鑰",
+       "resettokens-watchlist-token": "用來訂閱 [[Special:Watchlist|監視列表]] Atom/RSS 的密鑰",
        "resettokens-done": "已重設密鑰。",
        "resettokens-resetbutton": "重設已選擇的密鑰",
        "bold_sample": "粗體文字",
        "explainconflict": "有人在{{GENDER:|你|妳|你}}開始編輯後更改了頁面。\n上面的文字框內顯示的是目前本頁的內容。\n{{GENDER:|你|妳|你}}所做的修改顯示在下面的文字框中。\n{{GENDER:|你|妳|你}}應當將{{GENDER:|你|妳|你}}所做的修改加入現有的內容中。\n'''只有'''在上面文字框中的內容會在{{GENDER:|你|妳|你}}點擊「{{int:savearticle}}」後被保存。",
        "yourtext": "您的文字",
        "storedversion": "已儲存修訂版本",
-       "nonunicodebrowser": "'''警告: 您的瀏覽器不兼容Unicode編碼。'''這裡有一個工作區將使您能安全地編輯頁面: 非ASCII字元將以十六進製編碼模式出現在編輯框中。",
+       "nonunicodebrowser": "<strong>警告:您的瀏覽器不相容 Unicode。</strong>\n暫時解決的方式是先在您可安全編輯頁面的地方編輯:非 ASCII 字元在編輯框中會以 16 進位編碼顯示。",
        "editingold": "'''警告:{{GENDER:|你|妳|你}}正在編輯的是本頁的舊版本。'''\n如果{{GENDER:|你|妳|你}}保存它的話,在本版本之後的任何修改都會遺失。",
        "yourdiff": "差異",
        "copyrightwarning": "請注意您對{{SITENAME}}的所有貢獻都被認為是在$2下發佈,請檢視在$1的細節。\n如果您不希望您的文字被任意修改和再散佈,請不要提交。<br />\n您同時也要向我們保證您所提交的內容是您自己所作,或得自一個不受版權保護或相似自由的來源。\n'''不要在未獲授權的情況下發表!'''<br />",
        "permissionserrors": "權限錯誤",
        "permissionserrorstext": "由於下列{{PLURAL:$1|原因}},您沒有權限進行目前的動作:",
        "permissionserrorstext-withaction": "由於下列{{PLURAL:$1|原因}},您沒有權限進行 $2 的動作:",
-       "recreate-moveddeleted-warn": "'''警告: {{GENDER:|你|妳|你}}現在重新建立一個先前曾經刪除過的頁面。'''\n\n{{GENDER:|你|妳|你}}應該要考慮一下繼續編輯這一個頁面是否合適。\n為方便起見,這一個頁面的刪除記錄已經在下面提供:",
+       "recreate-moveddeleted-warn": "<strong>警告:您正重新建立先前已刪除的頁面。</strong>\n\n您應考慮是否繼續編輯此頁。\n在此提供刪除與移動日誌方便作為參考:",
        "moveddeleted-notice": "此頁面已刪除。\n下方提供此頁面的刪除和移動日誌以便參考。",
        "log-fulllog": "檢視完整日誌",
        "edit-hook-aborted": "編輯已被 Hook 中止。\n且未回應無任何說明。",
        "prefs-watchlist": "監視列表",
        "prefs-watchlist-days": "監視列表中顯示的天數:",
        "prefs-watchlist-days-max": "最多 $1 {{PLURAL:$1|天}}",
-       "prefs-watchlist-edits": "å±\95é\96\8bç\9a\84ç\9b£è¦\96å\88\97表中顯示è®\8aæ\9b´æ¬¡æ\95¸上限:",
-       "prefs-watchlist-edits-max": "æ\9c\80大æ\95¸é\87\8f:1000",
+       "prefs-watchlist-edits": "å±\95é\96\8bç\9b£è¦\96å\88\97表中顯示ç\9a\84è®\8aæ\9b´æ\95¸é\87\8f上限:",
+       "prefs-watchlist-edits-max": "æ\95¸é\87\8fä¸\8aé\99\90:1000",
        "prefs-watchlist-token": "監視列表密鑰:",
        "prefs-misc": "雜項",
        "prefs-resetpass": "變更密碼",
        "recentchangesdays-max": "最多 $1 {{PLURAL:$1|天}}",
        "recentchangescount": "預設顯示的編輯數:",
        "prefs-help-recentchangescount": "這包含最近變更、頁面歷史以及日誌。",
-       "prefs-help-watchlist-token2": "這是一個秘密的密鑰,用於訂源您的監視列表。\n知道它的人將能夠讀取您的監視列表,所以您不應該分享它。[[Special:ResetTokens|如有需要重設此密鑰,請點擊這裡]]。",
+       "prefs-help-watchlist-token2": "訂閱您的監視列表所需的密鑰。\n任何人只要知道密鑰就能夠讀取您的監視列表,所以請勿任意與它人共享。\n若有需要 [[Special:ResetTokens|您可重設密鑰]]。",
        "savedprefs": "您的偏好設定已儲存。",
        "timezonelegend": "時區:",
        "localtime": "當地時間:",
        "upload_directory_missing": "遺失上傳目錄($1)且網頁伺服器無權限建立。",
        "upload_directory_read_only": "上傳目錄($1)不存在或無寫權限。",
        "uploaderror": "上傳錯誤",
-       "upload-recreate-warning": "'''警告:一個相同名字的檔案曾經被刪除或者移動至別處。'''\n\n這個頁面的刪除和移動日誌在這裏提供以便參考:",
+       "upload-recreate-warning": "<strong>警告:曾有檔案使用此名稱已被刪除或者移動至它處。</strong>\n\n在此提供刪除與移動日誌方便作為參考:",
        "uploadtext": "使用下面的表單來上傳檔案。\n要檢視或搜尋以前上傳的檔案,可至 [[Special:FileList|檔案上傳清單]],(重新)上傳會在 [[Special:Log/upload|上傳日誌]] 中記錄,而刪除則會在 [[Special:Log/delete|刪除日誌]] 中記錄。\n\n要在頁面中引用檔案,可使用以下其中一種方式連結:\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> 顯示完整尺吋的圖片\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code></strong> 會在左方放置一張 200 像素寬的圖片於框中,並顯示 \"alt text\" 作為描述\n* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> 直接連結到圖片而不顯示預覽",
        "upload-permitted": "允許的檔案類型:$1。",
        "upload-preferred": "建議的檔案類型:$1。",
        "fileexists-forbidden": "已存在相同名稱的檔案,且不能覆蓋;請返回並用一個新的名稱來上傳此檔案。[[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "在共享檔案庫中已存在此名稱的檔案。\n如果{{GENDER:|你|妳|你}}仍然想去上載它的話,請返回並用一個新的名稱來上傳此檔案。[[File:$1|thumb|center|$1]]",
        "file-exists-duplicate": "這個檔案是跟以下的{{PLURAL:$1|一|多}}個檔案重覆:",
-       "file-deleted-duplicate": "一個相同名稱的檔案 ([[:$1]]) 在先前刪除過。您應該在重新上傳之前檢查一下該檔案之刪除紀錄。",
+       "file-deleted-duplicate": "一個相同名稱的檔案 ([[:$1]]) 在先前刪除過。您應該在重新上傳之前檢查一下該檔案之刪除日誌。",
        "file-deleted-duplicate-notitle": "在此之前已有與此相同的檔案已被刪除,並且禁止顯示標題。\n您在重新上傳前,應請求有權力檢視隱藏檔案的使用者重新審查。",
        "uploadwarning": "上載警告",
        "uploadwarning-text": "請修改以下的檔案描述並重試。",
        "randomincategory-invalidcategory": "\"$1\" 不是一個有效的分類名稱。",
        "randomincategory-nopages": "[[:Category:$1]]中沒有頁面。",
        "randomincategory-selectcategory": "從分類中獲取隨機頁面:$1 $2",
-       "randomincategory-selectcategory-submit": "å\89\8då¾\80",
+       "randomincategory-selectcategory-submit": "å\9f·è¡\8c",
        "randomredirect": "隨機重新導向",
        "randomredirect-nopages": "在命名空間 \"$1\" 中沒有重新導向頁面。",
        "statistics": "統計",
        "statistics-mostpopular": "被查閱次數最多的頁面",
        "pageswithprop": "擁有屬性的頁面",
        "pageswithprop-legend": "有頁面屬性的頁面",
-       "pageswithprop-text": "此頁列出所有頁面使用了特定的頁面屬性。",
+       "pageswithprop-text": "此頁面用來查詢使用了指定屬性的頁面。",
        "pageswithprop-prop": "屬性名稱:",
-       "pageswithprop-submit": "進入",
-       "pageswithprop-prophidden-long": "長文本屬性值已被隱藏($1)",
-       "pageswithprop-prophidden-binary": "已隱藏二進位屬性值($1)",
+       "pageswithprop-submit": "執行",
+       "pageswithprop-prophidden-long": "已隱藏過長的屬性值 ($1)",
+       "pageswithprop-prophidden-binary": "已隱藏二進位屬性值 ($1)",
        "doubleredirects": "雙重的重新導向頁面",
        "doubleredirectstext": "這一頁列出所有重定向頁面重定向到另一個重定向頁的頁面。每一行都包含到第一和第二個重定向頁面的連結,以及第二個重定向頁面的目標,通常顯示的都會是\"真正\"的目標頁面,也就是第一個重定向頁面應該指向的頁面。\n<del>已劃去</del>的為已經解決之項目。",
        "double-redirect-fixed-move": "[[$1]] 已完成移動。\n此頁面已自動更新並重新導向至 [[$2]]。",
        "fewestrevisions": "最少修訂的頁面",
        "nbytes": "$1 個位元組",
        "ncategories": "$1 個分類",
-       "ninterwikis": "$1 個跨維基",
+       "ninterwikis": "$1 個跨維基連結",
        "nlinks": "$1 個連結",
-       "nmembers": "$1個成員",
-       "nmemberschanged": "$1 → $2個成員",
-       "nrevisions": "$1修訂",
-       "nviews": "$1次瀏覽",
-       "nimagelinks": "用於$1個頁面中",
-       "ntransclusions": "用於$1個頁面中",
-       "specialpage-empty": "這個報告的結果為空。",
+       "nmembers": "$1 個成員",
+       "nmemberschanged": "$1 → $2 個成員",
+       "nrevisions": "$1 次修訂",
+       "nviews": "$1 次檢視",
+       "nimagelinks": "被 $1 個頁面使用",
+       "ntransclusions": "被 $1 個頁面使用",
+       "specialpage-empty": "此報表無查無任何結果。",
        "lonelypages": "孤立頁面",
        "lonelypagestext": "下列頁面尚未被 {{SITENAME}} 中的其它頁面連結或引用。",
        "uncategorizedpages": "待分類頁面",
        "mostlinkedtemplates": "最多連結的樣版",
        "mostcategories": "最多分類頁面",
        "mostimages": "最多連結檔案",
-       "mostinterwikis": "最多跨維基頁面",
+       "mostinterwikis": "æ\9c\80å¤\9a跨維å\9fºé\80£çµ\90ç\9a\84é \81é\9d¢",
        "mostrevisions": "最多修訂頁面",
        "prefixindex": "所有頁面與字首",
        "prefixindex-namespace": "所有含字首的頁面 ($1 命名空間)",
        "booksources": "圖書資源",
        "booksources-search-legend": "尋找圖書資源",
        "booksources-isbn": "國際標準書號:",
-       "booksources-go": "送出",
+       "booksources-go": "執行",
        "booksources-text": "以下是一份銷售新書或二手書的列表,並可能有{{GENDER:|你|妳|你}}正尋找的書的進一步訊息:",
        "booksources-invalid-isbn": "提供的ISBN號碼並不正確,請檢查原始複製來源號碼是否有誤。",
        "specialloguserlabel": "操作者:",
        "speciallogtitlelabel": "目標 (標題或使用者):",
        "log": "日誌",
        "all-logs-page": "所有公開日誌",
-       "alllogstext": "綜合顯示 {{SITENAME}} 的上傳、刪除、保護、查封以及站務日誌。",
-       "logempty": "在日誌中不存在匹配項。",
-       "log-title-wildcard": "搜尋以這個文字開始的標題",
-       "showhideselectedlogentries": "顯示/隱藏所選的日誌項目",
+       "alllogstext": "合併顯示所有 {{SITENAME}} 中所有類型的日誌。\n您可以點選下拉式選單選擇日誌的類型,指定使用者名稱 (區分大小寫) 或影響的頁面 (區分大小寫)。",
+       "logempty": "無符合條件的日誌。",
+       "log-title-wildcard": "搜尋以此欄位文字為字首的標題",
+       "showhideselectedlogentries": "顯示/隱藏已選擇的日誌項目",
        "allpages": "所有頁面",
        "nextpage": "下一頁 ($1)",
        "prevpage": "上一頁 ($1)",
        "allpagesto": "顯示從此處結束的頁面:",
        "allarticles": "所有頁面",
        "allinnamespace": "所有頁面 ($1 命名空間)",
-       "allpagessubmit": "提交",
+       "allpagessubmit": "執行",
        "allpagesprefix": "顯示以此為字首頁面:",
        "allpagesbadtitle": "指定的頁面標題無效、包含內部語言或內部 Wiki 的字首。\n它可能包含一個或多個的不能用於標題的字元。",
        "allpages-bad-ns": "{{SITENAME}} 沒有 \"$1\" 命名空間。",
        "notvisiblerev": "最後一次由其他使用者所作的修訂已經被刪除",
        "watchlist-details": "您的監視列表上共有 $1 個頁面 (不包含對話頁面)。",
        "wlheader-enotif": "已經啟動電子郵件通知功能。",
-       "wlheader-showupdated": "在{{GENDER:|你|妳|你}}上次檢視後有被修改過的頁面會顯示為'''粗體'''。",
-       "wlnote2": "以下是新近<strong>$1</strong>小時的更改,截至$2 $3。",
-       "wlshowlast": "顯示最近$1小時;$2天;$3的修改。",
+       "wlheader-showupdated": "在您最後一次檢視過後修改的頁面會以 <strong>粗體</strong> 顯示。",
+       "wlnote2": "以下為截至 $2 $3 最近 <strong>$1</strong> 小時的變更。",
+       "wlshowlast": "顯示最近 $1 小時,$2 天,$3 的修改",
        "watchlist-options": "監視列表選項",
        "watching": "正在監視...",
        "unwatching": "正在停止監視...",
        "watcherrortext": "更改「$1」的監視列表設定時發生錯誤。",
-       "enotif_reset": "將所有頁面標為已閱讀",
+       "enotif_reset": "將所有頁面標為已檢視",
        "enotif_impersonal_salutation": "{{SITENAME}} 使用者",
-       "enotif_subject_deleted": "{{SITENAME}}的「$1」頁面被$2刪除",
-       "enotif_subject_created": "{{SITENAME}}  $2 已建立頁面 $1",
-       "enotif_subject_moved": "{{SITENAME}}的「$1」頁面被$2移動",
-       "enotif_subject_restored": "{{SITENAME}}的「$1」頁面被$2恢復",
-       "enotif_subject_changed": "{{SITENAME}}的「$1」頁面被$2修改",
-       "enotif_body_intro_deleted": "{{SITENAME}}的「$1」頁面於$PAGEEDITDATE被$2刪除,請見$3。",
-       "enotif_body_intro_created": "{{SITENAME}}  $2 已建立頁面 $1 於 $PAGEEDITDATE,請參考目前的版本 $3。",
-       "enotif_body_intro_moved": "{{SITENAME}}的「$1」頁面於$PAGEEDITDATE被$2移動,請見$3瀏覽當前版本。",
-       "enotif_body_intro_restored": "{{SITENAME}}的「$1」頁面於$PAGEEDITDATE被$2恢復,請見$3瀏覽當前版本。",
-       "enotif_body_intro_changed": "{{SITENAME}}的「$1」頁面於$PAGEEDITDATE被$2修改,請見 $3 瀏覽當前版本。",
-       "enotif_lastvisited": "請參閱 $1 檢視你上次訪問後的所有更改。",
-       "enotif_lastdiff": "請參閱 $1 檢視該更改。",
+       "enotif_subject_deleted": "{{SITENAME}} $2 已刪除頁面 $1",
+       "enotif_subject_created": "{{SITENAME}} $2 已建立頁面 $1",
+       "enotif_subject_moved": "{{SITENAME}} $2 已移動頁面 $1",
+       "enotif_subject_restored": "{{SITENAME}} $2 已還原頁面 $1",
+       "enotif_subject_changed": "{{SITENAME}} $2 已修改頁面 $1",
+       "enotif_body_intro_deleted": "{{SITENAME}} $2 已刪除頁面 $1 於 $PAGEEDITDATE,詳見 $3。",
+       "enotif_body_intro_created": "{{SITENAME}} $2 已建立頁面 $1 於 $PAGEEDITDATE,詳見目前的修訂 $3。",
+       "enotif_body_intro_moved": "{{SITENAME}} $2 已移動頁面 $1 於 $PAGEEDITDATE,詳見目前的修訂 $3。",
+       "enotif_body_intro_restored": "{{SITENAME}} $2 已還原頁面 $1 於 $PAGEEDITDATE,詳見目前的修訂 $3。",
+       "enotif_body_intro_changed": "{{SITENAME}} $2 已修改頁面 $1 於 $PAGEEDITDATE,詳見目前的修訂 $3。",
+       "enotif_lastvisited": "請參考 $1 檢視自您上次檢視後所有的變更。",
+       "enotif_lastdiff": "請參考 $1 檢視此變更。",
        "enotif_anon_editor": "匿名使用者 $1",
-       "enotif_body": "$WATCHINGUSERNAME 您好,\n\n$PAGEINTRO $NEWPAGE\n\n編輯摘要:$PAGESUMMARY $PAGEMINOREDIT\n\n聯絡此編輯者:\n\n信箱:$PAGEEDITOR_EMAIL\n本站:$PAGEEDITOR_WIKI\n\n在您檢視該頁面之前,接下來的變更系統不會再向您發出通知。您也可以在監視列表中重設您所有監視頁面的通知狀態。\n\n{{SITENAME}} 通知系統啟\n\n--\n更改您的電子郵件通知設定,請至:\n{{canonicalurl:{{#special:Preferences}}}}\n\n更改您的監視列表設定,請至:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\n從監視列表中刪除此頁面,請至:\n$UNWATCHURL\n\n回函並取得更多協助:\n$HELPPAGE",
+       "enotif_body": "$WATCHINGUSERNAME 您好,\n\n$PAGEINTRO $NEWPAGE\n\n編輯摘要:$PAGESUMMARY $PAGEMINOREDIT\n\n編輯者聯絡方式:\n信箱:$PAGEEDITOR_EMAIL\n本站:$PAGEEDITOR_WIKI\n\n在您檢視該頁面之前,接下來的變更系統不會再向您發出通知。您也可以在監視列表中重設您所有監視頁面的通知狀態。\n\n{{SITENAME}} 通知系統啟\n\n--\n更改您的電子郵件通知設定,請至:\n{{canonicalurl:{{#special:Preferences}}}}\n\n更改您的監視列表設定,請至:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\n從監視列表中刪除此頁面,請至:\n$UNWATCHURL\n\n回函並取得進一步協助:\n$HELPPAGE",
        "created": "建立了",
        "changed": "更改",
        "deletepage": "刪除頁面",
        "confirm": "確認",
-       "excontent": "內容為: 「$1」",
-       "excontentauthor": "內容為:「$1」(而且唯一貢獻者為「[[Special:Contributions/$2|$2]]」)",
-       "exbeforeblank": "被清空前的內容為:「$1」",
+       "excontent": "內容為:\"$1\"",
+       "excontentauthor": "內容為:\"$1\" (且僅有一位貢獻者 \"[[Special:Contributions/$2|$2]]\")",
+       "exbeforeblank": "被清空前的內容為:\"$1\"",
        "delete-confirm": "刪除「$1」",
        "delete-legend": "刪除",
-       "historywarning": "'''警告: '''您將要刪除的頁內含有約$1次{{PLURAL:$1|修訂}}的歷史:",
-       "confirmdeletetext": "您即將刪除一個頁面或圖片以及其歷史。\n請確定您要進行此項操作,並且了解其後果,同時您的行為符合[[{{MediaWiki:Policy-url}}]]。",
+       "historywarning": "<strong>警告:</strong>您正要刪除的頁面內含有約 $1 次{{PLURAL:$1|的修訂}}歷史:",
+       "confirmdeletetext": "您正要刪除一個頁面或圖片以及其所有歷史。\n請確定您了解要進行此項操作所造成的後果,同時確認您的行為符合[[{{MediaWiki:Policy-url}}]] 規範。",
        "actioncomplete": "操作完成",
        "actionfailed": "操作失敗",
-       "deletedtext": "「$1」已經被刪除。最近刪除的記錄請參見$2。",
-       "dellogpage": "刪除紀錄",
-       "dellogpagetext": "以下是最近的刪除的列表。",
-       "deletionlog": "刪除紀錄",
+       "deletedtext": "已刪除 \"$1\"。\n請參考 $2 檢視最近的刪除記錄。",
+       "dellogpage": "刪除日誌",
+       "dellogpagetext": "以下為最近刪除記錄的列表。",
+       "deletionlog": "刪除日誌",
        "reverted": "還原到較早的版本",
-       "deletecomment": "理由:",
-       "deleteotherreason": "其它/附加的理由:",
+       "deletecomment": "原因:",
+       "deleteotherreason": "其它/額外的原因:",
        "deletereasonotherlist": "其它理由",
        "deletereason-dropdown": "*常見的刪除原因\n** 濫發廣告訊息\n** 破壞資料\n** 侵犯版權\n** 作者請求\n** 損壞的重新導向頁面",
        "delete-edit-reasonlist": "編輯刪除理由",
        "delete-toobig": "這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除此類頁面的動作已經被限制,以防止在{{SITENAME}}上的意外擾亂。",
        "delete-warning-toobig": "這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除它可能會擾亂{{SITENAME}}的資料庫操作;在繼續此動作前請小心。",
-       "deleting-backlinks-warning": "'''警告:'''您要刪除的頁面有[[Special:WhatLinksHere/{{FULLPAGENAME}}|其他頁面]]連接至此或包含此頁面。",
+       "deleting-backlinks-warning": "<strong>警告:</strong>您正要刪除的頁面有[[Special:WhatLinksHere/{{FULLPAGENAME}}|其他頁面]]連結或引用。",
        "rollback": "還原編輯",
        "rollback_short": "還原",
        "rollbacklink": "還原",
        "sessionfailure-title": "登入資訊失敗",
        "sessionfailure": "似乎您的登錄會話有問題;\n為了防止會話劫持,這個操作已經被取消。\n請返回先前的頁面,重新載入該頁面,然後重試。",
        "protectlogpage": "保護日誌",
-       "protectlogtext": "ä¸\8bé\9d¢æ\98¯é \81é\9d¢ä¿\9dè­·ä¿®æ\94¹å\88\97表ã\80\82\nè«\8bå\8f\83è\80\83[[Special:ProtectedPages|ä¿\9dè­·é \81é\9d¢æ¸\85å\96®]]以檢è¦\96ç\9b®å\89\8dé\80²è¡\8cç\9a\84é \81é\9d¢ä¿\9dè­·。",
-       "protectedarticle": "已保護「[[$1]]」",
-       "modifiedarticleprotection": "已變更「[[$1]]」的保護等級",
-       "unprotectedarticle": "已解除「[[$1]]」的保護",
-       "movedarticleprotection": "已將「[[$2]]」的保護設定移動至「[[$1]]」",
-       "protect-title": "變更「$1」的保護等級",
-       "protect-title-notallowed": "檢視「$1」的保護等級",
-       "prot_1movedto2": "[[$1]]移動到[[$2]]",
+       "protectlogtext": "以ä¸\8bç\82ºè®\8aæ\9b´é \81é\9d¢ä¿\9dè­·ç\9a\84å\88\97表ã\80\82\nè«\8bå\8f\83è\80\83 [[Special:ProtectedPages|å\8f\97ä¿\9dè­·é \81é\9d¢å\88\97表]] æª¢è¦\96ç\9b®å\89\8då\8f\97ä¿\9dè­·é \81é\9d¢。",
+       "protectedarticle": "已保護 \"[[$1]]\"",
+       "modifiedarticleprotection": "已變更 \"[[$1]]\" 的保護層級",
+       "unprotectedarticle": "已解除 \"[[$1]]\" 的保護",
+       "movedarticleprotection": "已移動 \"[[$2]]\" 的保護設定至 \"[[$1]]\"",
+       "protect-title": "變更 \"$1\" 的保護層級",
+       "protect-title-notallowed": "檢視 \"$1\" 的保護層級",
+       "prot_1movedto2": "已移動 [[$1]] 至 [[$2]]",
        "protect-badnamespace-title": "不可保護的命名空間",
-       "protect-badnamespace-text": "這個命名空間內的頁面無法設為保護。",
-       "protect-norestrictiontypes-text": "此頁不可被保護因沒有任何限制可用。",
+       "protect-badnamespace-text": "命名空間內的頁面無法設為保護。",
+       "protect-norestrictiontypes-text": "無法保護此頁面,無可限制的項目。",
        "protect-norestrictiontypes-title": "不可保護的頁面",
        "protect-legend": "確認保護",
-       "protectcomment": "理由:",
-       "protectexpiry": "到期:",
-       "protect_expiry_invalid": "輸入的終止時間無效。",
-       "protect_expiry_old": "終止時間已過去。",
+       "protectcomment": "原因:",
+       "protectexpiry": "期限:",
+       "protect_expiry_invalid": "無效的期限。",
+       "protect_expiry_old": "期限已結束。",
        "protect-unchain-permissions": "解除鎖定更多的保護選項",
-       "protect-text": "{{GENDER:|你|妳|你}}可以在這裡瀏覽和修改對頁面'''$1'''的保護級別。",
-       "protect-locked-blocked": "您不能在被封鎖期間更改保護級別。\n以下為 <strong>$1</strong> 頁面目前的設定:",
-       "protect-locked-dblock": "在資料庫鎖定時無法更改保護級別。\n以下是'''$1'''現時的保護級別:",
-       "protect-locked-access": "您的賬戶權限不能修改保護級別。\n以下是'''$1'''現時的保護級別:",
-       "protect-cascadeon": "以下$1個頁面包含着本頁面的同時,啟動了連鎖保護,因此本頁面目前也被保護。您可以設定本頁面的保護級別,但這並不會對連鎖保護有所影響。",
+       "protect-text": "您可以在此檢視與修改頁面 <strong>$1</strong> 的保護層級。",
+       "protect-locked-blocked": "頁面被封鎖,無法更改保護層級。\n以下為頁面 <strong>$1</strong> 目前的設定:",
+       "protect-locked-dblock": "資料庫被鎖定,無法更改保護層級。\n以下為頁面 <strong>$1</strong> 目前的設定:",
+       "protect-locked-access": "您的帳號沒有權限更改保護層級。\n以下為頁面 <strong>$1</strong> 目前的設定:",
+       "protect-cascadeon": "此頁面目前受保護,因此頁面被下列啟動連鎖保護的 $1 個頁面引用。\n更改此頁面的保護層級不會影響連鎖保護的作用。",
        "protect-default": "允許所有使用者",
        "protect-fallback": "僅允許有 \"$1\" 權限的使用者",
        "protect-level-autoconfirmed": "僅允許已自動確認的使用者",
        "protect-level-sysop": "僅允許管理員",
-       "protect-summary-desc": "[$1=$2]($3)",
+       "protect-summary-desc": "[$1=$2] ($3)",
        "protect-summary-cascade": "連鎖",
-       "protect-expiring": "期限至 $1 (UTC)",
-       "protect-expiring-local": "$1到期",
+       "protect-expiring": "期限至 $1 (UTC)",
+       "protect-expiring-local": "期限至 $1",
        "protect-expiry-indefinite": "無限期",
        "protect-cascade": "保護本頁中包含的頁面 (連鎖保護)",
-       "protect-cantedit": "您無法更改這個頁面的保護等級,因為您沒有權限去編輯它。",
+       "protect-cantedit": "您沒有編輯權限,無法更改此頁面的保護層級。",
        "protect-othertime": "其它時間:",
        "protect-othertime-op": "其它時間",
-       "protect-existing-expiry": "現時到期之時間: $2 $3",
-       "protect-otherreason": "其它/附加的理由:",
+       "protect-existing-expiry": "已設定期限:$2 $3",
+       "protect-otherreason": "其它/額外的原因:",
        "protect-otherreason-op": "其它理由",
-       "protect-dropdown": "*通用保護理由\n** 過量的破壞\n** 過量的灌水\n** 反生產性編輯戰\n** 高流量頁面",
-       "protect-edit-reasonlist": "編輯保護理由",
+       "protect-dropdown": "*常見的保護原因\n** 過度的破壞\n** 過多垃圾訊息\n** 反生產性的編輯戰\n** 高流量頁面",
+       "protect-edit-reasonlist": "編輯保護原因",
        "protect-expiry-options": "1 小時:1 hour,1 天:1 day,1 週:1 week,2 週:2 weeks,1 個月:1 month,3 個月:3 months,6 個月:6 months,1 年:1 year,不限期:infinite",
        "restriction-type": "權限:",
-       "restriction-level": "限制級別:",
+       "restriction-level": "限制層級:",
        "minimum-size": "大小下限",
        "maximum-size": "大小上限:",
        "pagesize": "(位元組)",
        "undeletelink": "檢視/還原",
        "undeleteviewlink": "檢視",
        "undeleteinvert": "反向選擇",
-       "undeletecomment": "理由:",
+       "undeletecomment": "原因:",
        "undeletedrevisions": "$1個修訂版本已經恢復",
        "undeletedrevisions-files": "$1 個版本和 $2 個檔案被恢復",
        "undeletedfiles": "$1 個檔案被恢復",
        "sp-contributions-newonly": "僅顯示建立頁面之編輯",
        "sp-contributions-submit": "搜尋",
        "whatlinkshere": "連入頁面",
-       "whatlinkshere-title": "連結到「$1」的頁面",
+       "whatlinkshere-title": "連結到 \"$1\" 的頁面",
        "whatlinkshere-page": "頁面:",
        "linkshere": "以下頁面連結到[[:$1]]:",
        "nolinkshere": "沒有頁面連結到[[:$1]]。",
        "nolinkshere-ns": "已選擇的命名空間中沒有頁面連結到 [[:$1]]。",
        "isredirect": "重新導向頁面",
-       "istemplate": "å\8c\85å\90«",
+       "istemplate": "å¼\95ç\94¨",
        "isimage": "檔案連結",
        "whatlinkshere-prev": "前 $1 筆",
        "whatlinkshere-next": "後 $1 筆",
        "whatlinkshere-links": "← 連入",
        "whatlinkshere-hideredirs": "$1 重新導向頁面",
-       "whatlinkshere-hidetrans": "$1嵌入",
-       "whatlinkshere-hidelinks": "$1連結",
-       "whatlinkshere-hideimages": "$1檔案連結",
+       "whatlinkshere-hidetrans": "$1 引用",
+       "whatlinkshere-hidelinks": "$1 連結",
+       "whatlinkshere-hideimages": "$1 檔案連結",
        "whatlinkshere-filters": "搜尋",
        "autoblockid": "自動查封 #$1",
        "block": "封鎖使用者",
        "moveuserpage-warning": "<strong>警告:</strong> 您正要移動使用者頁面,請注意只有使用者頁面會變更名稱,並<em>不會</em>重新命名使用者。",
        "movecategorypage-warning": "<strong>警告:</strong>您將要移動分類頁面。請注意此操作只頁面,舊分類中的頁面將<em>不會</em>移動到新的分類。",
        "movenologintext": "您必須是已註冊的使用者並且 [[Special:UserLogin|登入]] 才可移動頁面。",
-       "movenotallowed": "您並沒有許可權去移動頁面。",
-       "movenotallowedfile": "您並沒有許可權去移動檔案。",
-       "cant-move-user-page": "您沒有權限去移動使用者頁面 (除了它的子頁面)。",
-       "cant-move-to-user-page": "您沒有權限去移動頁面至使用者頁面 (除了使用者子頁面)。",
-       "cant-move-category-page": "您沒有移動分類頁面的權限。",
-       "cant-move-to-category-page": "您沒有權限移動頁面分類頁面。",
-       "newtitle": "新標題:",
-       "move-watch": "監視來源以及目標頁",
+       "movenotallowed": "您沒有權限移動頁面。",
+       "movenotallowedfile": "您沒有權限移動檔案。",
+       "cant-move-user-page": "您沒有權限移動使用者頁面 (除使用者子頁面外)。",
+       "cant-move-to-user-page": "您沒有權限移動頁面至使用者頁面 (除使用者子頁面外)。",
+       "cant-move-category-page": "您沒有權限移動分類頁面。",
+       "cant-move-to-category-page": "您沒有權限移動頁面分類頁面。",
+       "newtitle": "新標題",
+       "move-watch": "監視來源以及目標頁",
        "movepagebtn": "移動頁面",
        "pagemovedsub": "移動成功",
-       "movepage-moved": "'''「$1」已經移動到「$2」'''",
+       "movepage-moved": "<strong>已移動 \"$1\" 至 \"$2\"</strong>",
        "movepage-moved-redirect": "已建立重新導向頁面。",
-       "movepage-moved-noredirect": "建ç«\8bé\87\8dæ\96°å°\8eå\90\91é \81é\9d¢å\8a\9fè\83½å·²è¢«ç¦\81æ­¢ã\80\82",
+       "movepage-moved-noredirect": "å·²ç¦\81止建ç«\8bé\87\8dæ\96°å°\8eå\90\91é \81é\9d¢ã\80\82",
        "articleexists": "該名字的頁面已經存在,或者您選擇的名字無效。請再選一個名字。",
        "cantmove-titleprotected": "您不可以移動這個頁面到這個位置,因為該新標題已經被保護以防止建立。",
        "movetalk": "移動相關的對話頁面",
        "allmessages-filter-modified": "曾修改",
        "allmessages-prefix": "以字首搜尋:",
        "allmessages-language": "語言:",
-       "allmessages-filter-submit": "å¾\80",
+       "allmessages-filter-submit": "å\9f·è¡\8c",
        "allmessages-filter-translate": "翻譯",
        "thumbnail-more": "放大",
        "filemissing": "無法找到檔案",
        "import-rootpage-nosubpage": "命名空間 \"$1\" 的根頁面不允許子頁面。",
        "importlogpage": "匯入日誌",
        "importlogpagetext": "來自其它 wiki 的行政性的帶編輯歷史匯入頁面。",
-       "import-logentry-upload": "透過檔案上傳匯入$1",
-       "import-logentry-upload-detail": "$1個修訂",
-       "import-logentry-interwiki": "跨wiki$1",
-       "import-logentry-interwiki-detail": "來自$2的$1個修訂",
-       "javascripttest": "JavaScript測試",
-       "javascripttest-title": "運行$1測試。",
-       "javascripttest-pagetext-noframework": "這個頁面預留了作JavaScript測試。",
-       "javascripttest-pagetext-unknownframework": "未知的測試框架「$1」。",
-       "javascripttest-pagetext-frameworks": "è«\8bé\81¸æ\93\87以ä¸\8bå\85¶ä¸­ä¸\80å\80\8b測試æ¡\86æ\9e:$1",
-       "javascripttest-pagetext-skins": "選擇行測試的外觀:",
-       "javascripttest-qunit-intro": "請看mediawiki.org的[$1 測試說明]",
-       "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit æ¸¬è©¦å¥\97件",
+       "import-logentry-upload": "透過檔案上傳匯入 $1",
+       "import-logentry-upload-detail": "$1 個修訂",
+       "import-logentry-interwiki": "跨 Wiki $1",
+       "import-logentry-interwiki-detail": "來自 $2 的 $1 個修訂",
+       "javascripttest": "JavaScript 測試",
+       "javascripttest-title": "執行 $1 測試。",
+       "javascripttest-pagetext-noframework": "此頁面保留用來作為 JavaScript 測試使用。",
+       "javascripttest-pagetext-unknownframework": "不明的測試 Framework \"$1\"。",
+       "javascripttest-pagetext-frameworks": "è«\8bé\81¸æ\93\87ä¸\8bå\88\97ä¸\80種測試 Framework:$1",
+       "javascripttest-pagetext-skins": "選擇行測試的外觀:",
+       "javascripttest-qunit-intro": "請參考 mediawiki.org 的 [$1 測試說明文件]。",
+       "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit æ¸¬è©¦å·¥å\85·",
        "tooltip-pt-userpage": "您的使用者頁面",
        "tooltip-pt-anonuserpage": "您編輯使用的 IP 位址所對應的使用者頁面",
        "tooltip-pt-mytalk": "您的對話頁面",
        "tooltip-pt-preferences": "您的偏好設定",
        "tooltip-pt-watchlist": "您所監視頁面的變更列表",
        "tooltip-pt-mycontris": "您的貢獻列表",
-       "tooltip-pt-login": "建議您登入,儘管並非必須。",
+       "tooltip-pt-login": "雖可不登入,但仍建議您登入。",
        "tooltip-pt-logout": "登出",
        "tooltip-ca-talk": "關於頁面正文的討論",
        "tooltip-ca-edit": "您可以編輯此頁,請在儲存之前先預覽一下。",
        "scarytranscludefailed": "[樣版 $1 讀取失敗]",
        "scarytranscludefailed-httpstatus": "[樣版 $1 讀取失敗:HTTP $2]",
        "scarytranscludetoolong": "[URL 地址太長]",
-       "deletedwhileediting": "'''警告:'''此頁在您開始編輯之後已經被刪除﹗",
+       "deletedwhileediting": "<strong>警告:</strong>此頁在您開始編輯之後已經被刪除﹗",
        "confirmrecreate": "在您編輯的同時,使用者 [[User:$1|$1]] ([[User talk:$1|對話]]) 刪除了此頁面,原因為:\n: <em>$2</em>\n請確認您是否真的要重新建立此頁面。",
        "confirmrecreate-noreason": "在您編輯的同時,使用者 [[User:$1|$1]] ([[User talk:$1|對話]]) 刪除了此頁面,請確認您是否真的要重新建立此頁面。",
        "recreate": "重建",
        "version-parser-function-hooks": "語法函數連結",
        "version-hook-name": "連結名稱",
        "version-hook-subscribedby": "署名",
-       "version-version": "(版本 $1)",
+       "version-version": "($1)",
        "version-license": "MediaWiki 授權條款",
        "version-ext-license": "授權條款",
        "version-ext-colheader-name": "擴充套件",
        "redirect": "依檔案、使用者、頁面或修訂 ID 重新導向",
        "redirect-legend": "重新導向至檔案或頁面",
        "redirect-summary": "此特殊頁面可用來重新導向至檔案 (指定檔案名稱)、頁面 (指定修訂 ID 或頁面 ID) 或使用者頁面 (指定使用者 ID)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/page/64308]]、[[{{#Special:Redirect}}/revision/328429]] 或 [[{{#Special:Redirect}}/user/101]]。",
-       "redirect-submit": "提交",
+       "redirect-submit": "執行",
        "redirect-lookup": "尋找:",
        "redirect-value": "值:",
        "redirect-user": "使用者 ID",
index c30a86e..1a54df1 100644 (file)
@@ -172,7 +172,6 @@ class DeleteEqualMessages extends Maintenance {
                foreach ( $messageInfo['results'] as $result ) {
                        wfWaitForSlaves();
                        $dbw->ping();
-                       $dbw->begin( __METHOD__ );
                        $title = Title::makeTitle( NS_MEDIAWIKI, $result['title'] );
                        $this->output( "\n* [[$title]]" );
                        $page = WikiPage::factory( $title );
@@ -185,7 +184,6 @@ class DeleteEqualMessages extends Maintenance {
                                $error = ''; // Passed by ref
                                $page->doDeleteArticle( 'Orphaned talk page of no longer required message', false, 0, false, $error, $user );
                        }
-                       $dbw->commit( __METHOD__ );
                }
                $this->output( "\n\ndone!\n" );
        }
index c2112ae..9a13423 100644 (file)
@@ -133,6 +133,14 @@ return array(
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
 
+       'mediawiki.skinning.content.parsoid' => array(
+               // Style Parsoid HTML+RDFa output consistent with wikitext from PHP parser
+               // with the commonInterface.css styles; skinStyles should be used if your
+               // skin over-rides common content styling.
+               'skinStyles' => array(
+                       'default' => 'resources/src/mediawiki.skinning/content.parsoid.less',
+               ),
+       ),
 
        /**
         * Skins
index 416d6be..eb39dac 100644 (file)
@@ -10,5 +10,9 @@
        "ooui-outline-control-move-down": "Mover abaxo l'elementu",
        "ooui-outline-control-move-up": "Mover arriba l'elementu",
        "ooui-outline-control-remove": "Desaniciar elementu",
-       "ooui-toolbar-more": "Más"
+       "ooui-toolbar-more": "Más",
+       "ooui-dialog-confirm-title": "Confirmar",
+       "ooui-dialog-confirm-default-prompt": "¿Tas seguru?",
+       "ooui-dialog-confirm-default-ok": "Aceutar",
+       "ooui-dialog-confirm-default-cancel": "Encaboxar"
 }
index 884a462..eadae99 100644 (file)
@@ -2,8 +2,12 @@
        "@metadata": {
                "authors": [
                        "Calak",
-                       "Muhammed taha"
+                       "Muhammed taha",
+                       "Serwan"
                ]
        },
-       "ooui-dialog-action-close": "دایخە"
+       "ooui-dialog-action-close": "دایخە",
+       "ooui-dialog-confirm-default-prompt": "ئایا تۆ دڵنیات ؟",
+       "ooui-dialog-confirm-default-ok": "باشە",
+       "ooui-dialog-confirm-default-cancel": "پاشگەزبوونەوە"
 }
index 831da51..d4ef2d5 100644 (file)
@@ -1,12 +1,17 @@
 {
        "@metadata": {
                "authors": [
-                       "Lévi"
+                       "Lévi",
+                       "Gloria sah"
                ]
        },
        "ooui-dialog-action-close": "Sèra",
        "ooui-outline-control-move-down": "Spôsta in bâs",
        "ooui-outline-control-move-up": "Spôsta in êlt",
        "ooui-outline-control-remove": "Armōv l'elemèint",
-       "ooui-toolbar-more": "Êter"
+       "ooui-toolbar-more": "Êter",
+       "ooui-dialog-confirm-title": "Cunfermèr",
+       "ooui-dialog-confirm-default-prompt": "Sî-'v sicùr?",
+       "ooui-dialog-confirm-default-ok": "'D acòrdi",
+       "ooui-dialog-confirm-default-cancel": "Scanślèr"
 }
index 35f26c6..0b54f41 100644 (file)
@@ -7,7 +7,11 @@
        },
        "ooui-dialog-action-close": "Sèra",
        "ooui-outline-control-move-down": "Spôsta in bâs",
-       "ooui-outline-control-move-up": "Spôsta in êlt",
+       "ooui-outline-control-move-up": "Spôsta in êlta",
        "ooui-outline-control-remove": "Tór vìa 'l elemèint",
-       "ooui-toolbar-more": "Êter"
+       "ooui-toolbar-more": "Êter",
+       "ooui-dialog-confirm-title": "Cunfirmèr",
+       "ooui-dialog-confirm-default-prompt": "Sî-'v sicùr?",
+       "ooui-dialog-confirm-default-ok": "'D acòrdi",
+       "ooui-dialog-confirm-default-cancel": "Scanślèr"
 }
index d2b89a7..76485ea 100644 (file)
                        "Jduranboger",
                        "PoLuX124",
                        "Ralgis",
-                       "Thehelpfulone"
+                       "Thehelpfulone",
+                       "Gloria sah"
                ]
        },
        "ooui-dialog-action-close": "Cerrar",
        "ooui-outline-control-move-down": "Bajar elemento",
        "ooui-outline-control-move-up": "Subir elemento",
        "ooui-outline-control-remove": "Eliminar elemento",
-       "ooui-toolbar-more": "Más"
+       "ooui-toolbar-more": "Más",
+       "ooui-dialog-confirm-title": "Confirmar",
+       "ooui-dialog-confirm-default-prompt": "¿Está seguro?",
+       "ooui-dialog-confirm-default-ok": "Aceptar",
+       "ooui-dialog-confirm-default-cancel": "Cancelar"
 }
index 03db1a8..164685c 100644 (file)
@@ -9,5 +9,9 @@
        "ooui-outline-control-move-down": "Liiguta üksust allapoole",
        "ooui-outline-control-move-up": "Liiguta üksust ülespoole",
        "ooui-outline-control-remove": "Eemalda üksus",
-       "ooui-toolbar-more": "Veel"
+       "ooui-toolbar-more": "Veel",
+       "ooui-dialog-confirm-title": "Kinnitus",
+       "ooui-dialog-confirm-default-prompt": "Kas oled kindel?",
+       "ooui-dialog-confirm-default-ok": "Sobib",
+       "ooui-dialog-confirm-default-cancel": "Loobu"
 }
index bf05121..8e8b81e 100644 (file)
@@ -20,5 +20,9 @@
        "ooui-outline-control-move-down": "Siirrä kohdetta alaspäin",
        "ooui-outline-control-move-up": "Siirrä kohdetta ylöspäin",
        "ooui-outline-control-remove": "Poista kohde",
-       "ooui-toolbar-more": "Lisää"
+       "ooui-toolbar-more": "Lisää",
+       "ooui-dialog-confirm-title": "Vahvista",
+       "ooui-dialog-confirm-default-prompt": "Oletko varma?",
+       "ooui-dialog-confirm-default-ok": "OK",
+       "ooui-dialog-confirm-default-cancel": "Peruuta"
 }
index 73297b4..76b654b 100644 (file)
@@ -1,10 +1,15 @@
 {
        "@metadata": {
                "authors": [
-                       "Vikassy"
+                       "Vikassy",
+                       "Nayvik"
                ]
        },
        "ooui-dialog-action-close": "ಮುಚ್ಚಿ",
        "ooui-outline-control-remove": "ವಸ್ತು ತೆಗೆ",
-       "ooui-toolbar-more": "ಹೆಚ್ಚು"
+       "ooui-toolbar-more": "ಹೆಚ್ಚು",
+       "ooui-dialog-confirm-title": "ಧೃಡಪಡಿಸು",
+       "ooui-dialog-confirm-default-prompt": "ನೀವು ಖ‍ಚಿತವಾಗಿದ್ದೀರಾ?",
+       "ooui-dialog-confirm-default-ok": "ಸರಿ",
+       "ooui-dialog-confirm-default-cancel": "ರದ್ದು"
 }
index 8ce236e..afd8753 100644 (file)
@@ -5,12 +5,17 @@
                        "Hym411",
                        "Kwj2772",
                        "LFM",
-                       "아라"
+                       "아라",
+                       "고기랑"
                ]
        },
        "ooui-dialog-action-close": "닫기",
        "ooui-outline-control-move-down": "항목을 아래로 옮기기",
        "ooui-outline-control-move-up": "항목을 위로 옮기기",
        "ooui-outline-control-remove": "항목 지우기",
-       "ooui-toolbar-more": "더 보기"
+       "ooui-toolbar-more": "더 보기",
+       "ooui-dialog-confirm-title": "확인",
+       "ooui-dialog-confirm-default-prompt": "확실합니까?",
+       "ooui-dialog-confirm-default-ok": "확인",
+       "ooui-dialog-confirm-default-cancel": "취소"
 }
index 2160937..dbae538 100644 (file)
                        "Siebrand",
                        "Southparkfan",
                        "सरोज कुमार ढकाल",
-                       "Sjoerddebruin"
+                       "Sjoerddebruin",
+                       "Gloria sah"
                ]
        },
        "ooui-dialog-action-close": "Sluiten",
        "ooui-outline-control-move-down": "Item omlaag verplaatsen",
        "ooui-outline-control-move-up": "Item omhoog verplaatsen",
        "ooui-outline-control-remove": "Item verwijderen",
-       "ooui-toolbar-more": "Meer"
+       "ooui-toolbar-more": "Meer",
+       "ooui-dialog-confirm-title": "Bevestigen",
+       "ooui-dialog-confirm-default-prompt": "Weet u het zeker?",
+       "ooui-dialog-confirm-default-ok": "Oké",
+       "ooui-dialog-confirm-default-cancel": "Annuleren"
 }
index 4f8a988..a7f43a3 100644 (file)
@@ -1,12 +1,16 @@
 {
        "@metadata": {
                "authors": [
-                       "Cedric31"
+                       "Cedric31",
+                       "Gloria sah"
                ]
        },
        "ooui-dialog-action-close": "Tampar",
        "ooui-outline-control-move-down": "Far davalar l’element",
        "ooui-outline-control-move-up": "Far montar l’element",
        "ooui-outline-control-remove": "Suprimir l’element",
-       "ooui-toolbar-more": "Mai"
+       "ooui-toolbar-more": "Mai",
+       "ooui-dialog-confirm-title": "Confirmar",
+       "ooui-dialog-confirm-default-prompt": "Sètz segur ?",
+       "ooui-dialog-confirm-default-cancel": "Anullar"
 }
index 0ee623e..b51f70d 100644 (file)
@@ -8,5 +8,8 @@
        "ooui-outline-control-move-down": "Bweeschs nunna",
        "ooui-outline-control-move-up": "Bweeschs nuff",
        "ooui-outline-control-remove": "Leschs",
-       "ooui-toolbar-more": "Mea"
+       "ooui-toolbar-more": "Mea",
+       "ooui-dialog-confirm-default-prompt": "Bischda sischa?",
+       "ooui-dialog-confirm-default-ok": "OK",
+       "ooui-dialog-confirm-default-cancel": "Abbresche"
 }
index 2d70f17..bea0c3a 100644 (file)
@@ -14,7 +14,9 @@
                        "Woytecr",
                        "Wpedzich",
                        "Jacenty359",
-                       "Matik7"
+                       "Matik7",
+                       "Gloria sah",
+                       "Andrzej aa"
                ]
        },
        "ooui-dialog-action-close": "Zamknij",
@@ -24,5 +26,6 @@
        "ooui-toolbar-more": "Więcej",
        "ooui-dialog-confirm-title": "Potwierdź",
        "ooui-dialog-confirm-default-prompt": "Jesteś pewien?",
+       "ooui-dialog-confirm-default-ok": "OK",
        "ooui-dialog-confirm-default-cancel": "Anuluj"
 }
index 7fe2247..e9ad6de 100644 (file)
@@ -20,5 +20,6 @@
        "ooui-toolbar-more": "Mais",
        "ooui-dialog-confirm-title": "Confirmar",
        "ooui-dialog-confirm-default-prompt": "Tem a certeza?",
+       "ooui-dialog-confirm-default-ok": "Aceitar",
        "ooui-dialog-confirm-default-cancel": "Cancelar"
 }
index b1bfb32..4f379e4 100644 (file)
@@ -4,12 +4,17 @@
                        "AlimanRuna",
                        "Firilacroco",
                        "Minisarm",
-                       "Stelistcristi"
+                       "Stelistcristi",
+                       "Gloria sah"
                ]
        },
        "ooui-dialog-action-close": "Închide",
        "ooui-outline-control-move-down": "Mută elementul mai jos",
        "ooui-outline-control-move-up": "Mută elementul mai sus",
        "ooui-outline-control-remove": "Elimină elementul",
-       "ooui-toolbar-more": "Mai mult"
+       "ooui-toolbar-more": "Mai mult",
+       "ooui-dialog-confirm-title": "Confirmă",
+       "ooui-dialog-confirm-default-prompt": "Ești sigur?",
+       "ooui-dialog-confirm-default-ok": "OK",
+       "ooui-dialog-confirm-default-cancel": "Renunță"
 }
index 6297b85..a063cc8 100644 (file)
@@ -3,11 +3,13 @@
                "authors": [
                        "Gazeb",
                        "Gmelfi",
-                       "HalanTul"
+                       "HalanTul",
+                       "Gloria sah"
                ]
        },
        "ooui-dialog-action-close": "Chiùi",
        "ooui-outline-control-move-down": "Sposta di sutta",
        "ooui-outline-control-move-up": "Sposta di supra",
-       "ooui-toolbar-more": "Àutri cosi"
+       "ooui-toolbar-more": "Àutri cosi",
+       "ooui-dialog-confirm-title": "Cunferma"
 }
index 889f623..08bbb59 100644 (file)
@@ -10,5 +10,8 @@
        "ooui-outline-control-move-down": "Премести ставку на доле",
        "ooui-outline-control-move-up": "Премести ставку на горе",
        "ooui-outline-control-remove": "Уклони ставку",
-       "ooui-toolbar-more": "Више"
+       "ooui-toolbar-more": "Више",
+       "ooui-dialog-confirm-title": "Потврди",
+       "ooui-dialog-confirm-default-ok": "У реду",
+       "ooui-dialog-confirm-default-cancel": "Откажи"
 }
index dde9316..1a91cdb 100644 (file)
@@ -2,11 +2,14 @@
        "@metadata": {
                "authors": [
                        "Candalua",
-                       "GatoSelvadego"
+                       "GatoSelvadego",
+                       "Gloria sah"
                ]
        },
        "ooui-dialog-action-close": "Sara",
        "ooui-outline-control-move-down": "Sposta in baso",
        "ooui-outline-control-move-up": "Sposta in sima",
-       "ooui-toolbar-more": "Altro"
+       "ooui-toolbar-more": "Altro",
+       "ooui-dialog-confirm-title": "Conferma",
+       "ooui-dialog-confirm-default-ok": "Va ben"
 }
index 377c254..9cc4543 100644 (file)
@@ -10,5 +10,9 @@
        "ooui-outline-control-move-down": "Chuyển mục xuống",
        "ooui-outline-control-move-up": "Chuyển mục lên",
        "ooui-outline-control-remove": "Xóa khoản",
-       "ooui-toolbar-more": "Thêm"
+       "ooui-toolbar-more": "Thêm",
+       "ooui-dialog-confirm-title": "Xác nhận",
+       "ooui-dialog-confirm-default-prompt": "Bạn có chắc chắn?",
+       "ooui-dialog-confirm-default-ok": "OK",
+       "ooui-dialog-confirm-default-cancel": "Hủy bỏ"
 }
index 091dbaf..01a22d1 100644 (file)
@@ -10,5 +10,9 @@
        "ooui-outline-control-move-down": "רוקן עלעמענט אראפ",
        "ooui-outline-control-move-up": "רוקן עלעמענט ארויף",
        "ooui-outline-control-remove": "אַראָפנעמען איינס",
-       "ooui-toolbar-more": "נאך"
+       "ooui-toolbar-more": "נאך",
+       "ooui-dialog-confirm-title": "באַשטעטיקן",
+       "ooui-dialog-confirm-default-prompt": "איר זענט זיכער?",
+       "ooui-dialog-confirm-default-ok": "יאָ",
+       "ooui-dialog-confirm-default-cancel": "אַנולירן"
 }
diff --git a/resources/lib/oojs-ui/oojs-ui.css b/resources/lib/oojs-ui/oojs-ui.css
deleted file mode 100644 (file)
index acdb4ab..0000000
+++ /dev/null
@@ -1,1172 +0,0 @@
-/*!
- * OOjs UI v0.1.0
- * https://www.mediawiki.org/wiki/OOjs_UI
- *
- * Copyright 2011–2014 OOjs Team and other contributors.
- * Released under the MIT license
- * http://oojs.mit-license.org
- *
- * Date: Fri May 16 2014 15:50:17 GMT-0700 (PDT)
- */
-
-/* Textures */
-
-.oo-ui-texture-pending {
-  background-image: /* @embed */ url(images/textures/pending.gif);
-}
-
-.oo-ui-texture-transparency {
-  background-image: /* @embed */ url(images/textures/transparency.png);
-}
-
-/* RTL Definitions */
-
-/* @noflip */
-
-.oo-ui-rtl {
-  direction: rtl;
-}
-
-/* @noflip */
-
-.oo-ui-ltr {
-  direction: ltr;
-}
-
-.oo-ui-dialog {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  padding: 1em;
-  line-height: 1em;
-  /* Fix for strange opacity-related rendering issues.
-          CAUTION: -webkit-backface-visibility: hidden; is EXTREMELY DANGEROUS.
-          If applied to a VE surface directly, it will break selection of
-          FocusableNodes, and in the past it's caused transparent PNGs to
-          render as opaque black images. For some reason applying it to the dialog
-          wrapper in the main document fixes opacity-related behavior in the iframe
-          document, but doesn't break the surface inside the iframe. */
-
-  -webkit-backface-visibility: hidden;
-          backface-visibility: hidden;
-}
-
-.oo-ui-dialog > .oo-ui-window-frame {
-  position: fixed;
-  right: 0;
-  left: 0;
-  min-height: 12em;
-  margin: auto;
-  overflow: hidden;
-}
-
-.oo-ui-dialog > .oo-ui-window-frame .oo-ui-frame {
-  width: 100%;
-  height: 100%;
-}
-
-.oo-ui-dialog-content .oo-ui-window-foot {
-  bottom: 0;
-  height: 4.8em;
-  padding: 1em;
-}
-
-.oo-ui-dialog-content .oo-ui-window-foot .oo-ui-buttonedElement-framed {
-  float: left;
-  margin: 0.125em 0.25em;
-}
-
-.oo-ui-dialog-content .oo-ui-window-foot .oo-ui-flaggableElement-primary,
-.oo-ui-dialog-content .oo-ui-window-foot .oo-ui-flaggableElement-constructive,
-.oo-ui-dialog-content .oo-ui-window-foot .oo-ui-flaggableElement-destructive {
-  float: right;
-}
-
-.oo-ui-dialog-content-footless .oo-ui-window-foot {
-  display: none;
-}
-
-.oo-ui-frame {
-  padding: 0;
-  margin: 0;
-}
-
-.oo-ui-frame-body {
-  padding: 0;
-  margin: 0;
-  background: none;
-}
-
-.oo-ui-frame-content:focus {
-  outline: none;
-}
-
-.oo-ui-toolbar {
-  clear: both;
-}
-
-.oo-ui-toolbar-bar {
-  line-height: 1em;
-}
-
-.oo-ui-toolbar-bottom .oo-ui-toolbar-bar {
-  position: absolute;
-}
-
-.oo-ui-toolbar-actions {
-  float: right;
-}
-
-.oo-ui-toolbar-tools {
-  float: left;
-}
-
-.oo-ui-toolbar-tools,
-.oo-ui-toolbar-actions,
-.oo-ui-toolbar-shadow {
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-toolbar-actions .oo-ui-popupWidget {
-  -webkit-user-select: all;
-     -moz-user-select: all;
-      -ms-user-select: all;
-          user-select: all;
-  -webkit-touch-callout: default;
-}
-
-.oo-ui-toolbar-shadow {
-  position: absolute;
-  width: 100%;
-  pointer-events: none;
-  background-position: left top;
-  background-repeat: repeat-x;
-}
-
-.oo-ui-toolGroup {
-  display: inline-block;
-  margin: 0.3em;
-  vertical-align: middle;
-}
-
-.oo-ui-toolGroup-empty {
-  display: none;
-}
-
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-window-head {
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-window-icon {
-  float: left;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-window-title {
-  float: left;
-  white-space: nowrap;
-  cursor: default;
-}
-
-.oo-ui-window-overlay {
-  position: absolute;
-  top: 0;
-  left: 0;
-}
-
-.oo-ui-buttonedElement .oo-ui-buttonedElement-button {
-  display: inline-block;
-  vertical-align: middle;
-  cursor: pointer;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-buttonedElement .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  display: none;
-  margin-left: 0;
-}
-
-.oo-ui-buttonedElement .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator {
-  display: none;
-  margin-right: -0.75em;
-}
-
-.oo-ui-buttonedElement.oo-ui-widget-disabled .oo-ui-buttonedElement-button {
-  cursor: default;
-}
-
-.oo-ui-buttonedElement.oo-ui-indicatedElement .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
-.oo-ui-buttonedElement.oo-ui-iconedElement .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  display: inline-block;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-buttonedElement-frameless {
-  position: relative;
-  display: inline-block;
-}
-
-.oo-ui-buttonedElement-frameless .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  display: inline-block;
-  margin-left: 0.25em;
-  vertical-align: middle;
-}
-
-.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-  display: inline-block;
-  padding: 0.2em 0.8em;
-  margin: 0.1em 0;
-  text-align: center;
-  vertical-align: top;
-}
-
-.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-  display: inline-block;
-  line-height: 1.9em;
-  vertical-align: middle;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-iconedElement .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  margin-right: -0.5em;
-  margin-left: -0.5em;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-iconedElement.oo-ui-labeledElement .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-  margin-right: 0.3em;
-  margin-left: -0.5em;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled .oo-ui-buttonedElement-button,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
-  cursor: default;
-}
-
-.oo-ui-clippableElement-clippable {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
-  overflow-y: hidden;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-  width: 100%;
-  padding: 1.5em;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-
-.oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
-  padding: 2em;
-}
-
-.oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 3em;
-  left: 0;
-  overflow-y: auto;
-}
-
-.oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-  position: absolute;
-  right: 0;
-  bottom: 0;
-  left: 0;
-}
-
-.oo-ui-fieldLayout {
-  margin-bottom: 1em;
-}
-
-.oo-ui-fieldLayout:last-child {
-  margin-bottom: 0;
-}
-
-.oo-ui-fieldLayout:before,
-.oo-ui-fieldLayout:after {
-  display: table;
-  content: " ";
-}
-
-.oo-ui-fieldLayout:after {
-  clear: both;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labeledElement-label,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labeledElement-label {
-  display: block;
-  float: left;
-  width: 35%;
-  padding-top: 0.5em;
-  margin-right: 5%;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-  display: block;
-  float: left;
-  width: 60%;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labeledElement-label {
-  text-align: right;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labeledElement-label {
-  display: inline-block;
-  padding: 0.75em 0.5em 0.5em 0.5em;
-  vertical-align: middle;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-  display: inline-block;
-  padding: 0.5em 0;
-  vertical-align: middle;
-}
-
-.oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labeledElement-label {
-  padding: 0.5em 0;
-}
-
-.oo-ui-fieldsetLayout {
-  position: relative;
-  padding: 0;
-  margin: 0;
-}
-
-.oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
-  margin-top: 2em;
-}
-
-.oo-ui-fieldsetLayout-labeled {
-  margin-top: -0.75em;
-}
-
-.oo-ui-fieldsetLayout > .oo-ui-labeledElement-label {
-  padding: 0.25em 0;
-  margin-bottom: 0.5em;
-}
-
-.oo-ui-fieldsetLayout.oo-ui-iconedElement > .oo-ui-labeledElement-label {
-  padding-left: 1.75em;
-  line-height: 1.33em;
-}
-
-.oo-ui-fieldsetLayout.oo-ui-iconedElement > .oo-ui-iconedElement-icon {
-  position: absolute;
-  top: 0.25em;
-  left: 0;
-  display: block;
-  width: 2em;
-  height: 2em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-gridLayout {
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-}
-
-.oo-ui-labelWidget {
-  padding: 0.5em 0;
-}
-
-.oo-ui-panelLayout-scrollable {
-  overflow-y: auto;
-}
-
-.oo-ui-stackLayout > .oo-ui-panelLayout {
-  display: none;
-}
-
-.oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-  position: relative;
-  display: block;
-}
-
-.oo-ui-barToolGroup > .oo-ui-iconedElement-icon,
-.oo-ui-barToolGroup > .oo-ui-labeledElement-label {
-  display: none;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool {
-  position: relative;
-  display: inline-block;
-  vertical-align: top;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-link {
-  display: block;
-  height: 1.5em;
-  padding: 0.25em;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  display: block;
-  width: 1.5em;
-  height: 1.5em;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: none;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-
-.oo-ui-barToolGroup .oo-ui-tool-title,
-.oo-ui-barToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-
-.oo-ui-barToolGroup.oo-ui-widget-enabled .oo-ui-tool-link {
-  cursor: pointer;
-}
-
-.oo-ui-listToolGroup .oo-ui-toolGroup-tools {
-  padding: 0.25em;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool {
-  display: inline-block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool-link {
-  display: block;
-  padding-right: 0.5em;
-  white-space: nowrap;
-  cursor: pointer;
-}
-
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-
-.oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-  min-width: 8em;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool {
-  display: block;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool-link {
-  display: block;
-  padding: 0.25em 1em 0.25em 0.25em;
-  white-space: nowrap;
-  cursor: pointer;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  background-image: none;
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  background-image: /* @embed */ url(images/icons/check.png);
-}
-
-.oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-  cursor: default;
-}
-
-.oo-ui-popupToolGroup {
-  position: relative;
-  height: 2em;
-  min-width: 2.5em;
-}
-
-.oo-ui-popupToolGroup.oo-ui-indicatedElement.oo-ui-iconedElement {
-  min-width: 3.5em;
-}
-
-.oo-ui-popupToolGroup-handle {
-  display: block;
-  cursor: pointer;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,
-.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
-  position: absolute;
-  top: 0;
-  width: 2em;
-  height: 2em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator {
-  right: 0;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
-  left: 0.25em;
-}
-
-.oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-  margin: 0 1em;
-  font-size: 0.8em;
-  line-height: 2.6em;
-}
-
-.oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-  cursor: default;
-}
-
-.oo-ui-popupToolGroup.oo-ui-iconedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-  margin-left: 3em;
-}
-
-.oo-ui-popupToolGroup.oo-ui-indicatedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-  margin-right: 2.25em;
-}
-
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-  position: absolute;
-  top: 2em;
-  left: -1px;
-  z-index: 4;
-  display: none;
-}
-
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconedElement-icon {
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-  display: block;
-}
-
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-  display: inline-block;
-  width: 2em;
-  height: 2em;
-  margin-right: 0.25em;
-  vertical-align: middle;
-}
-
-.oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-  display: inline-block;
-  font-size: 0.8em;
-  line-height: 2em;
-  vertical-align: middle;
-}
-
-.oo-ui-popupToolGroup .oo-ui-tool-accel {
-  display: none;
-}
-
-.oo-ui-popupTool .oo-ui-popupWidget {
-  margin-left: 1.25em;
-  font-size: 0.8em;
-}
-
-.oo-ui-popupTool .oo-ui-popupWidget-popup,
-.oo-ui-popupTool .oo-ui-popupWidget-tail {
-  z-index: 4;
-}
-
-.oo-ui-iconWidget {
-  display: inline-block;
-  width: 1.9em;
-  height: 1.9em;
-  line-height: 2.5em;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  opacity: 0.8;
-}
-
-.oo-ui-iconWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-
-.oo-ui-indicatorWidget {
-  display: inline-block;
-  width: 1.9em;
-  height: 1.9em;
-  line-height: 2.5em;
-  vertical-align: middle;
-  background-position: center center;
-  background-repeat: no-repeat;
-  opacity: 0.8;
-}
-
-.oo-ui-indicatorWidget.oo-ui-widget-disabled {
-  opacity: 0.2;
-}
-
-.oo-ui-selectWidget {
-  padding: 0;
-  margin: 0;
-  list-style: none;
-}
-
-.oo-ui-optionWidget {
-  position: relative;
-  display: block;
-  margin: 0;
-  list-style: none;
-  cursor: pointer;
-  border: none;
-}
-
-.oo-ui-optionWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-
-.oo-ui-optionWidget .oo-ui-labeledElement-label {
-  display: block;
-  overflow: hidden;
-  line-height: 1.5em;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
-
-.oo-ui-optionWidget .oo-ui-iconedElement-icon,
-.oo-ui-optionWidget .oo-ui-indicatedElement-indicator {
-  position: absolute;
-  top: 50%;
-  width: 2em;
-  height: 2em;
-  margin-top: -1em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-optionWidget .oo-ui-iconedElement-icon {
-  left: 0.5em;
-}
-
-.oo-ui-optionWidget .oo-ui-indicatedElement-indicator {
-  right: 0.5em;
-}
-
-.oo-ui-menuWidget {
-  position: absolute;
-}
-
-.oo-ui-menuWidget input {
-  position: absolute;
-  width: 0;
-  height: 0;
-  overflow: hidden;
-  opacity: 0;
-}
-
-.oo-ui-popupWidget-popup {
-  position: absolute;
-  overflow: hidden;
-}
-
-.oo-ui-popupWidget-tail {
-  display: none;
-}
-
-.oo-ui-popupWidget-tailed .oo-ui-popupWidget-popup {
-  margin-top: 7px;
-}
-
-.oo-ui-popupWidget-tailed .oo-ui-popupWidget-tail {
-  position: absolute;
-  display: block;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-popupWidget-head {
-  height: 2.5em;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-popupWidget-head .oo-ui-buttonWidget {
-  float: right;
-  margin: 0.25em;
-}
-
-.oo-ui-popupWidget-head .oo-ui-labeledElement-label {
-  float: left;
-  margin: 0.75em 1em;
-  cursor: default;
-}
-
-.oo-ui-popupWidget-body {
-  clear: both;
-}
-
-.oo-ui-buttonGroupWidget {
-  border-radius: 0.3em;
-}
-
-.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-  margin-bottom: -1px;
-  margin-left: -1px;
-  border-radius: 0;
-}
-
-.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:first-child .oo-ui-buttonedElement-button {
-  margin-left: 0;
-  border-bottom-left-radius: 0.3em;
-  border-top-left-radius: 0.3em;
-}
-
-.oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:last-child .oo-ui-buttonedElement-button {
-  border-top-right-radius: 0.3em;
-  border-bottom-right-radius: 0.3em;
-}
-
-.oo-ui-buttonOptionWidget {
-  display: inline-block;
-  background-color: transparent;
-}
-
-.oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button {
-  position: relative;
-  height: 1.9em;
-}
-
-.oo-ui-buttonOptionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon,
-.oo-ui-buttonOptionWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator {
-  position: static;
-  display: inline-block;
-  height: 1.9em;
-  margin-top: 0;
-  vertical-align: middle;
-}
-
-.oo-ui-buttonSelectWidget {
-  display: inline-block;
-  white-space: nowrap;
-}
-
-.oo-ui-buttonWidget {
-  display: inline-block;
-  vertical-align: middle;
-}
-
-.oo-ui-inlineMenuWidget {
-  position: relative;
-  display: inline-block;
-  min-width: 20em;
-  margin: 0.25em 0;
-}
-
-.oo-ui-inlineMenuWidget-handle {
-  display: inline-block;
-  width: 100%;
-  height: 2.5em;
-  cursor: pointer;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator,
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
-  position: absolute;
-  top: 0;
-  width: 2.5em;
-  height: 2.5em;
-  background-position: center center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator {
-  right: 0;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
-  left: 0.25em;
-}
-
-.oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
-  margin: 0 0.5em;
-  line-height: 2.5em;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-iconedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
-  margin-left: 3em;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-indicatedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
-  margin-right: 2em;
-}
-
-.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
-  z-index: 1;
-  width: 100%;
-}
-
-.oo-ui-inlineMenuWidget.oo-ui-widget-disabled .oo-ui-inlineMenuWidget-handle {
-  cursor: default;
-}
-
-.oo-ui-menuItemWidget {
-  position: relative;
-}
-
-.oo-ui-menuItemWidget .oo-ui-iconedElement-icon {
-  display: none;
-}
-
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-  background-color: transparent;
-}
-
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconedElement-icon {
-  display: block;
-}
-
-.oo-ui-menuSectionItemWidget {
-  cursor: default;
-}
-
-.oo-ui-outlineControlsWidget {
-  height: 3em;
-}
-
-.oo-ui-outlineControlsWidget-adders,
-.oo-ui-outlineControlsWidget-movers {
-  float: left;
-  height: 2em;
-  padding: 0;
-  margin: 0.5em;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-outlineControlsWidget > .oo-ui-iconedElement-icon {
-  float: left;
-  width: 1.5em;
-  height: 2em;
-  margin: 0.5em 0 0.5em 0.5em;
-  background-position: right center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-outlineControlsWidget-adders {
-  float: left;
-  margin-left: 0;
-}
-
-.oo-ui-outlineControlsWidget-adders .oo-ui-buttonWidget {
-  float: left;
-}
-
-.oo-ui-outlineControlsWidget-movers {
-  float: right;
-}
-
-.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-  float: right;
-}
-
-.oo-ui-outlineItemWidget {
-  position: relative;
-  padding: 0.75em;
-  cursor: pointer;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-popupButtonWidget {
-  position: relative;
-}
-
-.oo-ui-popupButtonWidget .oo-ui-popupWidget {
-  position: absolute;
-  left: 1em;
-  cursor: auto;
-}
-
-.oo-ui-searchWidget-query {
-  position: absolute;
-  top: 0;
-  right: 0;
-  left: 0;
-  height: 4em;
-  padding: 0 1em;
-}
-
-.oo-ui-searchWidget-query .oo-ui-textInputWidget {
-  width: 100%;
-  margin: 0.75em 0;
-}
-
-.oo-ui-searchWidget-results {
-  position: absolute;
-  top: 4em;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  padding: 1em;
-  overflow-x: hidden;
-  overflow-y: auto;
-  line-height: 0;
-}
-
-.oo-ui-textInputWidget {
-  position: relative;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-textInputWidget input,
-.oo-ui-textInputWidget textarea {
-  display: inline-block;
-  width: 100%;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  resize: none;
-}
-
-.oo-ui-textInputWidget-icon {
-  position: absolute;
-  top: 0;
-  left: 0;
-  height: 100%;
-  background-position: right center;
-  background-repeat: no-repeat;
-}
-
-.oo-ui-toggleSwitchWidget {
-  position: relative;
-  display: inline-block;
-  width: 4em;
-  height: 2em;
-  overflow: hidden;
-  vertical-align: middle;
-  cursor: pointer;
-  -webkit-transform: translateZ(0);
-     -moz-transform: translateZ(0);
-      -ms-transform: translateZ(0);
-       -o-transform: translateZ(0);
-          transform: translateZ(0);
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-
-.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-  cursor: default;
-}
-
-.oo-ui-toggleSwitchWidget-grip {
-  position: absolute;
-  top: 0.25em;
-  left: 0.25em;
-  display: block;
-  width: 1.5em;
-  height: 1.5em;
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  -webkit-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-     -moz-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-      -ms-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-       -o-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-          transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-}
-
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
-  position: absolute;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  -webkit-transition: opacity 200ms ease-in-out;
-     -moz-transition: opacity 200ms ease-in-out;
-      -ms-transition: opacity 200ms ease-in-out;
-       -o-transition: opacity 200ms ease-in-out;
-          transition: opacity 200ms ease-in-out;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  -webkit-touch-callout: none;
-}
-
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-  left: 2.25em;
-  margin-left: -2px;
-}
-
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-  left: 0.25em;
-  margin-left: 0;
-}
-
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-  display: none;
-}
-
-/* Icons */
-
-.oo-ui-icon-add-item {
-  background-image: /* @embed */ url(images/icons/add-item.png);
-}
-
-.oo-ui-icon-advanced {
-  background-image: /* @embed */ url(images/icons/advanced.png);
-}
-
-.oo-ui-icon-alert {
-  background-image: /* @embed */ url(images/icons/alert.png);
-}
-
-.oo-ui-icon-check {
-  background-image: /* @embed */ url(images/icons/check.png);
-}
-
-.oo-ui-icon-clear {
-  background-image: /* @embed */ url(images/icons/clear.png);
-}
-
-.oo-ui-icon-close {
-  background-image: /* @embed */ url(images/icons/close.png);
-}
-
-.oo-ui-icon-code {
-  background-image: /* @embed */ url(images/icons/code.png);
-}
-
-.oo-ui-icon-collapse {
-  background-image: /* @embed */ url(images/icons/collapse.png);
-}
-
-.oo-ui-icon-comment {
-  background-image: /* @embed */ url(images/icons/comment.png);
-}
-
-.oo-ui-icon-expand {
-  background-image: /* @embed */ url(images/icons/expand.png);
-}
-
-.oo-ui-icon-help {
-  background-image: /* @embed */ url(images/icons/help.png);
-}
-
-.oo-ui-icon-info {
-  background-image: /* @embed */ url(images/icons/info.png);
-}
-
-.oo-ui-icon-link {
-  background-image: /* @embed */ url(images/icons/link.png);
-}
-
-.oo-ui-icon-menu {
-  background-image: /* @embed */ url(images/icons/menu.png);
-}
-
-.oo-ui-icon-next {
-  background-image: /* @embed */ url(images/icons/move-ltr.png);
-}
-
-.oo-ui-icon-picture {
-  background-image: /* @embed */ url(images/icons/picture.png);
-}
-
-.oo-ui-icon-previous {
-  background-image: /* @embed */ url(images/icons/move-rtl.png);
-}
-
-.oo-ui-icon-redo {
-  background-image: /* @embed */ url(images/icons/arched-arrow-ltr.png);
-}
-
-.oo-ui-icon-remove {
-  background-image: /* @embed */ url(images/icons/remove.png);
-}
-
-.oo-ui-icon-search {
-  background-image: /* @embed */ url(images/icons/search.png);
-}
-
-.oo-ui-icon-settings {
-  background-image: /* @embed */ url(images/icons/settings.png);
-}
-
-.oo-ui-icon-tag {
-  background-image: /* @embed */ url(images/icons/tag.png);
-}
-
-.oo-ui-icon-undo {
-  background-image: /* @embed */ url(images/icons/arched-arrow-rtl.png);
-}
-
-.oo-ui-icon-window {
-  background-image: /* @embed */ url(images/icons/window.png);
-}
-
-/* Indicators */
-
-.oo-ui-indicator-alert {
-  background-image: /* @embed */ url(images/indicators/alert.png);
-}
-
-.oo-ui-indicator-down {
-  background-image: /* @embed */ url(images/indicators/down.png);
-}
-
-.oo-ui-indicator-required {
-  background-image: /* @embed */ url(images/indicators/required.png);
-}
-
-.oo-ui-indicator-up {
-  background-image: /* @embed */ url(images/indicators/up.png);
-}
\ No newline at end of file
index cbfc470..2edd389 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (d4086ff6e6)
+ * OOjs UI v0.1.0-pre (0436296667)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Fri May 16 2014 16:32:36 GMT-0700 (PDT)
+ * Date: Wed May 21 2014 13:17:11 GMT-0700 (PDT)
  */
 ( function ( OO ) {
 
@@ -986,6 +986,7 @@ OO.ui.Frame.prototype.setSize = function ( width, height ) {
  * @fires initialize
  */
 OO.ui.Window = function OoUiWindow( config ) {
+       var element = this;
        // Parent constructor
        OO.ui.Window.super.call( this, config );
 
@@ -1016,7 +1017,14 @@ OO.ui.Window = function OoUiWindow( config ) {
                .append( this.frame.$element );
 
        // Events
-       this.frame.connect( this, { 'load': 'initialize' } );
+       this.frame.on( 'load', function () {
+               element.initialize();
+               // Undo the visibility: hidden; hack and apply display: none;
+               // We can do this safely now that the iframe has initialized
+               // (don't do this from within #initialize because it has to happen
+               // after the all subclasses have been handled as well).
+               element.$element.hide().css( 'visibility', '' );
+       } );
 };
 
 /* Setup */
@@ -1261,12 +1269,6 @@ OO.ui.Window.prototype.initialize = function () {
                this.$overlay
        );
 
-       // Undo the visibility: hidden; hack from the constructor and apply display: none;
-       // We can do this safely now that the iframe has initialized
-       this.$element.hide().css( 'visibility', '' );
-
-       this.emit( 'initialize' );
-
        return this;
 };
 
@@ -1955,14 +1957,10 @@ OO.ui.ConfirmationDialog.prototype.initialize = function () {
 
        this.$promptContainer = this.$( '<div>' ).addClass( 'oo-ui-dialog-confirm-promptContainer' );
 
-       this.cancelButton = new OO.ui.ButtonWidget( {
-               'flags': [ 'destructive' ]
-       } );
+       this.cancelButton = new OO.ui.ButtonWidget();
        this.cancelButton.connect( this, { 'click': [ 'emit', 'cancel' ] } );
 
-       this.okButton = new OO.ui.ButtonWidget( {
-               'flags': [ 'constructive' ]
-       } );
+       this.okButton = new OO.ui.ButtonWidget();
        this.okButton.connect( this, { 'click': [ 'emit', 'ok' ] } );
 
        // Make the buttons
@@ -1984,10 +1982,12 @@ OO.ui.ConfirmationDialog.prototype.initialize = function () {
 /*
  * Open a confirmation dialog.
  *
- * @param {object} [data] Window opening data including text of the dialog and text for the buttons
- * @param {jQuery|string} [data.prompt] The text of the dialog.
- * @param {jQuery|string|Function|null} [data.okLabel] The text used on the OK button
- * @param {jQuery|string|Function|null} [data.cancelLabel] The text used on the cancel button
+ * @param {Object} [data] Window opening data including text of the dialog and text for the buttons
+ * @param {jQuery|string} [data.prompt] Text to display or list of nodes to use as content of the dialog.
+ * @param {jQuery|string|Function|null} [data.okLabel] Label of the OK button
+ * @param {jQuery|string|Function|null} [data.cancelLabel] Label of the cancel button
+ * @param {string|string[]} [data.okFlags="constructive"] Flags for the OK button
+ * @param {string|string[]} [data.cancelFlags="destructive"] Flags for the cancel button
  */
 OO.ui.ConfirmationDialog.prototype.setup = function ( data ) {
        // Parent method
@@ -1995,7 +1995,9 @@ OO.ui.ConfirmationDialog.prototype.setup = function ( data ) {
 
        var prompt = data.prompt || OO.ui.deferMsg( 'ooui-dialog-confirm-default-prompt' ),
                okLabel = data.okLabel || OO.ui.deferMsg( 'ooui-dialog-confirm-default-ok' ),
-               cancelLabel = data.cancelLabel || OO.ui.deferMsg( 'ooui-dialog-confirm-default-cancel' );
+               cancelLabel = data.cancelLabel || OO.ui.deferMsg( 'ooui-dialog-confirm-default-cancel' ),
+               okFlags = data.okFlags || 'constructive',
+               cancelFlags = data.cancelFlags || 'destructive';
 
        if ( typeof prompt === 'string' ) {
                this.$promptContainer.text( prompt );
@@ -2003,8 +2005,8 @@ OO.ui.ConfirmationDialog.prototype.setup = function ( data ) {
                this.$promptContainer.empty().append( prompt );
        }
 
-       this.okButton.setLabel( okLabel );
-       this.cancelButton.setLabel( cancelLabel );
+       this.okButton.setLabel( okLabel ).clearFlags().setFlags( okFlags );
+       this.cancelButton.setLabel( cancelLabel ).clearFlags().setFlags( cancelFlags );
 };
 /**
  * Element with a button.
@@ -2297,15 +2299,19 @@ OO.ui.FlaggableElement.prototype.clearFlags = function () {
 /**
  * Add one or more flags.
  *
- * @param {string[]|Object.<string, boolean>} flags List of flags to add, or list of set/remove
- *  values, keyed by flag name
+ * @param {string|string[]|Object.<string, boolean>} flags One or more flags to add, or an object
+ *  keyed by flag name containing boolean set/remove instructions.
  * @chainable
  */
 OO.ui.FlaggableElement.prototype.setFlags = function ( flags ) {
        var i, len, flag,
                classPrefix = 'oo-ui-flaggableElement-';
 
-       if ( $.isArray( flags ) ) {
+       if ( typeof flags === 'string' ) {
+               // Set
+               this.flags[flags] = true;
+               this.$element.addClass( classPrefix + flags );
+       } else if ( $.isArray( flags ) ) {
                for ( i = 0, len = flags.length; i < len; i++ ) {
                        flag = flags[i];
                        // Set
@@ -4066,14 +4072,14 @@ OO.ui.GridLayout = function OoUiGridLayout( panels, config ) {
                this.$element.append( panels[i].$element );
        }
        if ( config.widths || config.heights ) {
-               this.layout( config.widths || [1], config.heights || [1] );
+               this.layout( config.widths || [ 1 ], config.heights || [ 1 ] );
        } else {
                // Arrange in columns by default
                widths = [];
                for ( i = 0, len = this.panels.length; i < len; i++ ) {
                        widths[i] = 1;
                }
-               this.layout( widths, [1] );
+               this.layout( widths, [ 1 ] );
        }
 };
 
@@ -4229,7 +4235,8 @@ OO.ui.BookletLayout = function OoUiBookletLayout( config ) {
                this.outlineWidget = new OO.ui.OutlineWidget( { '$': this.$ } );
                this.outlinePanel = new OO.ui.PanelLayout( { '$': this.$, 'scrollable': true } );
                this.gridLayout = new OO.ui.GridLayout(
-                       [this.outlinePanel, this.stackLayout], { '$': this.$, 'widths': [1, 2] }
+                       [ this.outlinePanel, this.stackLayout ],
+                       { '$': this.$, 'widths': [ 1, 2 ] }
                );
                this.outlineVisible = true;
                if ( this.editable ) {
@@ -7232,9 +7239,9 @@ OO.ui.OutlineControlsWidget = function OoUiOutlineControlsWidget( outline, confi
                'add': 'onOutlineChange',
                'remove': 'onOutlineChange'
        } );
-       this.upButton.connect( this, { 'click': ['emit', 'move', -1] } );
-       this.downButton.connect( this, { 'click': ['emit', 'move', 1] } );
-       this.removeButton.connect( this, { 'click': ['emit', 'remove'] } );
+       this.upButton.connect( this, { 'click': [ 'emit', 'move', -1 ] } );
+       this.downButton.connect( this, { 'click': [ 'emit', 'move', 1 ] } );
+       this.removeButton.connect( this, { 'click': [ 'emit', 'remove' ] } );
 
        // Initialization
        this.$element.addClass( 'oo-ui-outlineControlsWidget' );
index 6546cb4..7de5a84 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (d4086ff6e6)
+ * OOjs UI v0.1.0-pre (0436296667)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Fri May 16 2014 16:32:36 GMT-0700 (PDT)
+ * Date: Wed May 21 2014 13:17:11 GMT-0700 (PDT)
  */
 
 /* Textures */
index f920e8b..58a99a5 100644 (file)
         return (typeof thing == 'function') ? (thing.call(ctx)) : thing;
     }
 
-    function fixTitle($ele) {
-        if ($ele.attr('title') || typeof($ele.attr('original-title')) != 'string') {
-            $ele.attr('original-title', $ele.attr('title') || '').removeAttr('title');
-        }
-    }
-
     function Tipsy(element, options) {
         this.$element = $(element);
         this.options = options;
         this.enabled = true;
-        fixTitle(this.$element);
+        this.fixTitle();
     }
 
     Tipsy.prototype = {
             }
         },
 
+
+        fixTitle: function() {
+            var $e = this.$element;
+            if ($e.attr('title') || typeof($e.attr('original-title')) != 'string') {
+                $e.attr('original-title', $e.attr('title') || '').removeAttr('title');
+            }
+        },
+
         getTitle: function() {
             var title, $e = this.$element, o = this.options;
-            fixTitle($e);
+            this.fixTitle();
             if (typeof o.title == 'string') {
                 title = $e.attr(o.title == 'title' ? 'original-title' : o.title);
             } else if (typeof o.title == 'function') {
 
         tip: function() {
             if (!this.$tip) {
-                this.$tip = $('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"/></div>');
+                this.$tip = $('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"></div>');
             }
             return this.$tip;
         },
         if (options === true) {
             return this.data('tipsy');
         } else if (typeof options == 'string') {
-            return this.data('tipsy')[options]();
+            var tipsy = this.data('tipsy');
+            if (tipsy) tipsy[options]();
+            return this;
         }
 
         options = $.extend({}, $.fn.tipsy.defaults, options);
             if (options.delayIn == 0) {
                 tipsy.show();
             } else {
+                tipsy.fixTitle();
                 setTimeout(function() { if (tipsy.hoverState == 'in') tipsy.show(); }, options.delayIn);
             }
         };
         return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w';
     };
 
+    /**
+     * yields a closure of the supplied parameters, producing a function that takes
+     * no arguments and is suitable for use as an autogravity function like so:
+     *
+     * @param margin (int) - distance from the viewable region edge that an
+     *        element should be before setting its tooltip's gravity to be away
+     *        from that edge.
+     * @param prefer (string, e.g. 'n', 'sw', 'w') - the direction to prefer
+     *        if there are no viewable region edges effecting the tooltip's
+     *        gravity. It will try to vary from this minimally, for example,
+     *        if 'sw' is preferred and an element is near the right viewable 
+     *        region edge, but not the top edge, it will set the gravity for
+     *        that element's tooltip to be 'se', preserving the southern
+     *        component.
+     */
+     $.fn.tipsy.autoBounds = function(margin, prefer) {
+        return function() {
+            var dir = {ns: prefer[0], ew: (prefer.length > 1 ? prefer[1] : false)},
+                boundTop = $(document).scrollTop() + margin,
+                boundLeft = $(document).scrollLeft() + margin,
+                $this = $(this);
+
+            if ($this.offset().top < boundTop) dir.ns = 'n';
+            if ($this.offset().left < boundLeft) dir.ew = 'w';
+            if ($(window).width() + $(document).scrollLeft() - $this.offset().left < margin) dir.ew = 'e';
+            if ($(window).height() + $(document).scrollTop() - $this.offset().top < margin) dir.ns = 's';
+
+            return dir.ns + (dir.ew ? dir.ew : '');
+        }
+    };
+
 })(jQuery);
index af33165..f8dc836 100644 (file)
                        }
                },
                // Keyed by ajax url and symbolic name for the individual request
-               deferreds = {};
+               promises = {};
 
-       // Pre-populate with fake ajax deferreds to save http requests for tokens
+       // Pre-populate with fake ajax promises to save http requests for tokens
        // we already have on the page via the user.tokens module (bug 34733).
-       deferreds[ defaultOptions.ajax.url ] = {};
+       promises[ defaultOptions.ajax.url ] = {};
        $.each( mw.user.tokens.get(), function ( key, value ) {
                // This requires #getToken to use the same key as user.tokens.
                // Format: token-type + "Token" (eg. editToken, patrolToken, watchToken).
-               deferreds[ defaultOptions.ajax.url ][ key ] = $.Deferred()
+               promises[ defaultOptions.ajax.url ][ key ] = $.Deferred()
                        .resolve( value )
                        .promise( { abort: function () {} } );
        } );
                                        function ( code ) {
                                                if ( code === 'badtoken' ) {
                                                        // Clear from cache
-                                                       deferreds[ api.defaults.ajax.url ][ tokenType + 'Token' ] =
+                                                       promises[ api.defaults.ajax.url ][ tokenType + 'Token' ] =
                                                                params.token = undefined;
 
                                                        // Try again, once
                 */
                getToken: function ( type ) {
                        var apiPromise,
-                               deferredGroup = deferreds[ this.defaults.ajax.url ],
-                               d = deferredGroup && deferredGroup[ type + 'Token' ];
+                               promiseGroup = promises[ this.defaults.ajax.url ],
+                               d = promiseGroup && promiseGroup[ type + 'Token' ];
 
                        if ( !d ) {
-                               d = $.Deferred();
+                               apiPromise = this.get( { action: 'tokens', type: type } );
 
-                               apiPromise = this.get( { action: 'tokens', type: type } )
-                                       .done( function ( data ) {
+                               d = apiPromise
+                                       .then( function ( data ) {
                                                // If token type is not available for this user,
-                                               // key '...token' is missing or can contain Boolean false
+                                               // key '...token' is either missing or set to boolean false
                                                if ( data.tokens && data.tokens[type + 'token'] ) {
-                                                       d.resolve( data.tokens[type + 'token'] );
-                                               } else {
-                                                       d.reject( 'token-missing', data );
+                                                       return data.tokens[type + 'token'];
                                                }
-                                       } )
-                                       .fail( d.reject );
 
-                               // Attach abort handler
-                               d.abort = apiPromise.abort;
+                                               return $.Deferred().reject( 'token-missing', data );
+                                       }, function () {
+                                               // Clear promise. Do not cache errors.
+                                               delete promiseGroup[ type + 'Token' ];
+
+                                               // Pass on to allow the caller to handle the error
+                                               return this;
+                                       } )
+                                       // Attach abort handler
+                                       .promise( { abort: apiPromise.abort } );
 
-                               // Store deferred now so that we can use this again even if it isn't ready yet
-                               if ( !deferredGroup ) {
-                                       deferredGroup = deferreds[ this.defaults.ajax.url ] = {};
+                               // Store deferred now so that we can use it again even if it isn't ready yet
+                               if ( !promiseGroup ) {
+                                       promiseGroup = promises[ this.defaults.ajax.url ] = {};
                                }
-                               deferredGroup[ type + 'Token' ] = d;
+                               promiseGroup[ type + 'Token' ] = d;
                        }
 
-                       return d.promise( { abort: d.abort } );
+                       return d;
                }
        };
 
index 3b0aeee..15e9aba 100644 (file)
                        $li.prop( 'id', 'ca-' + action );
                }
 
-               // Special case for vector icon
-               if ( $li.hasClass( 'icon' ) ) {
-                       if ( state === 'loading' ) {
-                               $link.addClass( 'loading' );
-                       } else {
-                               $link.removeClass( 'loading' );
-                       }
+               if ( state === 'loading' ) {
+                       $link.addClass( 'loading' );
+               } else {
+                       $link.removeClass( 'loading' );
                }
        }
 
 
                        $link = $( this );
 
+                       if ( $link.hasClass( 'loading' ) ) {
+                               return;
+                       }
+
                        updateWatchLink( $link, action, 'loading' );
 
                        api = new mw.Api();
diff --git a/resources/src/mediawiki.skinning/content.parsoid.less b/resources/src/mediawiki.skinning/content.parsoid.less
new file mode 100644 (file)
index 0000000..0ab4b37
--- /dev/null
@@ -0,0 +1,76 @@
+/**
+ * Style Parsoid HTML+RDFa output consistent with wikitext from PHP parser.
+ */
+
+/**
+ * References
+ *
+ * Parser and Extension:Cite output reference numbers for <sup>[1]</sup> for <ref> tags.
+ *
+ * Markup:
+ * Cake is good<sup>[2]</sup>
+ * The cake is a lie<span class="reference">[1]</span>
+ *
+ * Styleguide 1.1.
+ */
+span.reference {
+       font-size: smaller;
+       line-height: normal;
+       vertical-align: super;
+}
+
+/**
+ * Block media items
+ */
+figure[typeof*='mw:Image'] {
+       margin: 0;
+
+       a {
+               border: 0;
+       }
+
+       .mw-halign-right {
+               /* @noflip */
+               margin: .5em 0 1.3em 1.4em;
+               /* @noflip */
+               clear: left;
+               /* @noflip */
+               float: left;
+       }
+
+       /* @noflip */
+       .mw-halign-left {
+               /* @noflip */
+               margin: .5em 1.4em 1.3em 0;
+               /* @noflip */
+               clear: right;
+               /* @noflip */
+               float: right;
+       }
+
+       .mw-halign-center {
+               margin-left: auto;
+               margin-right: auto;
+       }
+
+       figcaption {
+               display: table-caption;
+               caption-side: bottom;
+               /* In mw-core the font-size is duplicated, 94% in thumbiner
+                  and again 94% in thumbcaption. 88% for font size of the
+                  caption results in the same behavior. */
+               font-size: 88%;
+               line-height: 1.4em;
+               text-align: left;
+
+               /* taken from .thumbcaption */
+               padding: 3px;
+       }
+}
+
+figure[typeof~='mw:Image/Thumb'], figure[typeof~='mw:Image/Frame'] {
+       display: table;
+       overflow: hidden;
+       text-align: center;
+       padding: 3px;
+}
index b7eea54..61691c7 100644 (file)
@@ -1,26 +1,11 @@
-#Wikimedia projects
+#mediawiki.ui
 
-This is the living style guide for MediaWiki UI used in Wikimedia Projects. It is generated from existing CSS programmatically. Please use it as a reference when developing code for MediaWiki to ensure your design is consistent with others across the site. Note this document is a work in progress and subject to change.
-
-##Brand
-
-Imagine a world in which every single human being can freely share in the sum of all knowledge.
-
-Sharing knowledge is the heart of our movement. Specifically, we care about sharing the “… highest possible quality to every single person on the planet in their own language” (Jimmy Wales). The focus of our identity is being credible and is moving toward being more inviting. We want our contributors to keep contributing while our assuring our readers that the information on any of the Wikimedia projects is reliable and accurate. Our personality should embody both of those traits with a slight sense of rebellion. We are unlike traditional projects (for instance, Encyclopedias that are only created by a few select individuals). We are a global movement, and as Jimmy Wales puts it: “Wikipedia is like rock’n’roll; it’s a cultural shift."
+This is the living style guide for mediawiki.ui.  It is generated from the mediawiki.ui LESS source code programmatically. Please use it as a reference when developing code for MediaWiki to ensure your design is consistent with others across the site. Note this document is a work in progress and subject to change.
 
 ##Design Philosophy
 
-The Wikimedia movement is a global volunteer community that aims to collect and develop the world's knowledge and to make it available to everyone for free, for any purpose. “Imagine a world in which every single human being can freely share in the sum of all knowledge.” 
-
-###Credible
-We strive for the most accurate, high quality and neutral information on all Wikimedia projects. We are fact-based and honest. We do not take sides. We are fair and impartial. 
-
 ###Inviting
-We are geeky about collecting and developing knowledge. We invite and welcome every single human being to share their knowledge with us and the rest of the world. We are open-minded and have a strong sense of community. Our aesthetics should be clean and encourage interaction. 
+Our aesthetics should be clean and encourage interaction.
 
 ###Worldly
-We are thoughtful and are aware of cultural differences. We are careful about words, color usage, and images that might offend. We are also aware of limited connectivity in some areas of the world and are thoughtful of image sizes and loading speed. 
-
-###Humble
-We are respectful of contributors’ effort and knowledge. We have a wealth of knowledge on all projects and many people to thank for that. We are humble. We are helpful and welcome help to expand the sum of all knowledge. 
-
+We are thoughtful and are aware of cultural differences. We are careful about words, color usage, and images that might offend. We are also aware of limited connectivity in some areas of the world and are thoughtful of image sizes and loading speed.  We work to support accessibility.
index 08690a3..df51efc 100644 (file)
@@ -12,7 +12,7 @@
 //
 // Third choice: Arial
 //
-// Our content is predominantly text, hence visual hierarchy must be clear. Use these recommended type sizes to inform and establish information hierarchy and organization. 
+// Wiki content is often predominantly text; hence, visual hierarchy must be clear. Use these recommended type sizes to inform and establish information hierarchy and organization.
 //
 // Unless if you plan to put extra attention and manually adjust spacing, avoid justifying texts and paragraphs as they are harder to read and create unnecessary visual distractions. Along with centered text, they convey a formal and less friendly environment. 
 //
index f7aa7f8..8be1321 100644 (file)
         * @return {jQuery|null}
         */
        function hideIfGetField( $el, name ) {
-               var sel, $found, $p;
+               var $found, $p,
+                       suffix = name.replace( /^([^\[]+)/, '[$1]' );
+
+               function nameFilter() {
+                       return this.name === name ||
+                               ( this.name === ( 'wp' + name ) ) ||
+                               this.name.slice( -suffix.length ) === suffix;
+               }
 
-               sel = '[name="' + name + '"],' +
-                       '[name="wp' + name + '"],' +
-                       '[name$="' + name.replace( /^([^\[]+)/, '[$1]' ) + '"]';
                for ( $p = $el.parent(); $p.length > 0; $p = $p.parent() ) {
-                       $found = $p.find( sel );
-                       if ( $found.length > 0 ) {
+                       $found = $p.find( '[name]' ).filter( nameFilter );
+                       if ( $found.length ) {
                                return $found;
                        }
                }
@@ -43,7 +47,7 @@
         * @return {Array} 2 elements: jQuery of dependent fields, and test function
         */
        function hideIfParse( $el, spec ) {
-               var op, i, l, v, $field, $fields, func, funcs, getVal;
+               var op, i, l, v, $field, $fields, fields, func, funcs, getVal;
 
                op = spec[0];
                l = spec.length;
                        case 'NAND':
                        case 'NOR':
                                funcs = [];
-                               $fields = $();
+                               fields = [];
                                for ( i = 1; i < l; i++ ) {
                                        if ( !$.isArray( spec[i] ) ) {
                                                throw new Error( op + ' parameters must be arrays' );
                                        }
                                        v = hideIfParse( $el, spec[i] );
-                                       $fields = $fields.add( v[0] );
+                                       fields.push( v[0] );
                                        funcs.push( v[1] );
                                }
+                               $fields = $( fields );
 
                                l = funcs.length;
                                switch ( op ) {
                                }
                                v = spec[2];
 
-                               if ( $field.first().attr( 'type' ) === 'radio' ||
-                                       $field.first().attr( 'type' ) === 'checkbox'
+                               if ( $field.first().prop( 'type' ) === 'radio' ||
+                                       $field.first().prop( 'type' ) === 'checkbox'
                                ) {
                                        getVal = function () {
                                                var $selected = $field.filter( ':checked' );
-                                               return $selected.length > 0 ? $selected.val() : '';
+                                               return $selected.length ? $selected.val() : '';
                                        };
                                } else {
                                        getVal = function () {
         */
        $.fn.goIn = function ( instantToggle ) {
                if ( instantToggle === true ) {
-                       return $( this ).show();
+                       return this.show();
                }
-               return $( this ).stop( true, true ).fadeIn();
+               return this.stop( true, true ).fadeIn();
        };
 
        /**
         */
        $.fn.goOut = function ( instantToggle ) {
                if ( instantToggle === true ) {
-                       return $( this ).hide();
+                       return this.hide();
                }
-               return $( this ).stop( true, true ).fadeOut();
+               return this.stop( true, true ).fadeOut();
        };
 
        /**
         * Bind a function to the jQuery object via live(), and also immediately trigger
         * the function on the objects with an 'instant' parameter set to true.
+        *
+        * @method liveAndTestAtStart
+        * @deprecated since 1.24 Use .on() and .each() directly.
         * @param {Function} callback
         * @param {boolean|jQuery.Event} callback.immediate True when the event is called immediately,
         *  an event object when triggered from an event.
+        * @return jQuery
+        * @chainable
         */
-       $.fn.liveAndTestAtStart = function ( callback ) {
-               $( this )
+       mw.log.deprecate( $.fn, 'liveAndTestAtStart', function ( callback ) {
+               this
+                       // Can't really migrate to .on() generically, needs knowledge of
+                       // calling code to know the correct selector. Fix callers and
+                       // get rid of this .liveAndTestAtStart() hack.
                        .live( 'change', callback )
                        .each( function () {
                                callback.call( this, true );
                        } );
-       };
+       } );
 
        function enhance( $root ) {
 
-               // Animate the SelectOrOther fields, to only show the text field when
-               // 'other' is selected.
-               $root.find( '.mw-htmlform-select-or-other' ).liveAndTestAtStart( function ( instant ) {
+               /**
+                * @ignore
+                * @param {boolean|jQuery.Event} instant
+                */
+               function handleSelectOrOther( instant ) {
                        var $other = $root.find( '#' + $( this ).attr( 'id' ) + '-other' );
                        $other = $other.add( $other.siblings( 'br' ) );
                        if ( $( this ).val() === 'other' ) {
                        } else {
                                $other.goOut( instant );
                        }
-               } );
+               }
+
+               // Animate the SelectOrOther fields, to only show the text field when
+               // 'other' is selected.
+               $root
+                       .on( 'change', '.mw-htmlform-select-or-other', handleSelectOrOther )
+                       .each( function () {
+                               handleSelectOrOther.call( this, true );
+                       } );
 
                // Set up hide-if elements
                $root.find( '.mw-htmlform-hide-if' ).each( function () {
-                       var $el = $( this ),
-                               spec = $el.data( 'hideIf' ),
-                               v, $fields, test, func;
+                       var v, $fields, test, func,
+                               $el = $( this ),
+                               spec = $el.data( 'hideIf' );
 
                        if ( !spec ) {
                                return;
                                        $el.show();
                                }
                        };
-                       $fields.change( func );
+                       $fields.on( 'change', func );
                        func();
                } );
 
index cbdf666..c2c70b0 100644 (file)
@@ -3,7 +3,7 @@
  */
 ( function ( mw, $ ) {
        $( function () {
-               var map, resultRenderCache, searchboxesSelectors,
+               var api, map, resultRenderCache, searchboxesSelectors,
                        // Region where the suggestions box will appear directly below
                        // (using the same width). Can be a container element or the input
                        // itself, depending on what suits best in the environment.
                $( searchboxesSelectors.join( ', ' ) )
                        .suggestions( {
                                fetch: function ( query ) {
-                                       var $el;
-
-                                       if ( query.length !== 0 ) {
-                                               $el = $( this );
-                                               $el.data( 'request', ( new mw.Api() ).get( {
-                                                       action: 'opensearch',
-                                                       search: query,
-                                                       namespace: 0,
-                                                       suggest: ''
-                                               } ).done( function ( data ) {
-                                                       $el.suggestions( 'suggestions', data[1] );
-                                               } ) );
-                                       }
+                                       var $textbox = this,
+                                               node = this[0];
+
+                                       api = api || new mw.Api();
+
+                                       $.data( node, 'request', api.get( {
+                                               action: 'opensearch',
+                                               search: query,
+                                               namespace: 0,
+                                               suggest: ''
+                                       } ).done( function ( data ) {
+                                               $textbox.suggestions( 'suggestions', data[1] );
+                                       } ) );
                                },
                                cancel: function () {
-                                       var apiPromise = $( this ).data( 'request' );
-                                       // If the delay setting has caused the fetch to have not even happened
-                                       // yet, the apiPromise object will have never been set.
-                                       if ( apiPromise && $.isFunction( apiPromise.abort ) ) {
-                                               apiPromise.abort();
-                                               $( this ).removeData( 'request' );
+                                       var node = this[0],
+                                               request = $.data( node, 'request' );
+
+                                       if ( request ) {
+                                               request.abort();
+                                               $.removeData( node, 'request' );
                                        }
                                },
                                result: {
                                        render: renderFunction,
                                        select: function () {
-                                               return true; // allow the form to be submitted
+                                               // allow the form to be submitted
+                                               return true;
                                        }
                                },
                                delay: 120,
index 0cf897a..c5694b7 100644 (file)
                        return mw.config.get( 'wgUserName' );
                },
 
-               /**
-                * @inheritdoc #getName
-                * @deprecated since 1.20 Use #getName instead
-                */
-               name: function () {
-                       return user.getName();
-               },
-
                /**
                 * Get date user registered, if available
                 *
                        return user.getName() === null;
                },
 
-               /**
-                * @inheritdoc #isAnon
-                * @deprecated since 1.20 Use #isAnon instead
-                */
-               anonymous: function () {
-                       return user.isAnon();
-               },
-
                /**
                 * Get an automatically generated random ID (stored in a session cookie)
                 *
                }
        };
 
+       /**
+        * @method name
+        * @inheritdoc #getName
+        * @deprecated since 1.20 Use #getName instead
+        */
+       mw.log.deprecate( user, 'name', user.getName, 'Use mw.user.getName instead.' );
+
+       /**
+        * @method anonymous
+        * @inheritdoc #isAnon
+        * @deprecated since 1.20 Use #isAnon instead
+        */
+       mw.log.deprecate( user, 'anonymous', user.isAnon, 'Use mw.user.isAnon instead.' );
+
 }( mediaWiki, jQuery ) );
index 1a6d1fc..a389ed6 100644 (file)
@@ -36,6 +36,8 @@
        .rotation(700ms);
        /* Suppress the hilarious rotating focus outline on Firefox */
        outline: none;
+       cursor: default;
+       pointer-events: none;
        background-position: 50% 60%;
        -webkit-transform-origin: 50% 57%;
        transform-origin: 50% 57%;
index 1875ac5..0bbee17 100644 (file)
@@ -1015,6 +1015,34 @@ class ParserTest {
                                'fileExists'  => true
                ), $this->db->timestamp( '20010115123500' ), $user );
 
+               $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Portrait.png' ) );
+               # again, note that size/width/height below are ignored; see above.
+               $image->recordUpload2( '', 'Upload of tall bitmap', 'Some tall bitmap', array(
+                       'size'        => 12345,
+                       'width'       => 180,
+                       'height'      => 240,
+                       'bits'        => 8,
+                       'media_type'  => MEDIATYPE_BITMAP,
+                       'mime'        => 'image/png',
+                       'metadata'    => serialize( array() ),
+                       'sha1'        => wfBaseConvert( '', 16, 36, 31 ),
+                       'fileExists'  => true
+               ), $this->db->timestamp( '20140515134200' ), $user );
+
+               $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Portrait.svg' ) );
+               # again, note that size/width/height below are ignored; see above.
+               $image->recordUpload2( '', 'Upload of tall SVG', 'Some tall SVG', array(
+                       'size'        => 12345,
+                       'width'       => 180,
+                       'height'      => 240,
+                       'bits'        => 24,
+                       'media_type'  => MEDIATYPE_DRAWING,
+                       'mime'        => 'image/svg+xml',
+                       'metadata'    => serialize( array() ),
+                       'sha1'        => wfBaseConvert( '', 16, 36, 31 ),
+                       'fileExists'  => true
+               ), $this->db->timestamp( '20140325124200' ), $user );
+
                # This image will be blacklisted in [[MediaWiki:Bad image list]]
                $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Bad.jpg' ) );
                $image->recordUpload2( '', 'zomgnotcensored', 'Borderline image', array(
@@ -1144,6 +1172,13 @@ class ParserTest {
                        '<?xml version="1.0" encoding="utf-8"?>' .
                        '<svg xmlns="http://www.w3.org/2000/svg"' .
                        ' version="1.1" width="240" height="180"/>' );
+               wfMkdirParents( $dir . '/9/93', null, __METHOD__ );
+               copy( "$IP/tests/phpunit/data/media/Portrait.png", "$dir/9/93/Portrait.png" );
+               wfMkdirParents( $dir . '/f/fc', null, __METHOD__ );
+               file_put_contents( "$dir/f/fc/Portrait.svg",
+                       '<?xml version="1.0" encoding="utf-8"?>' .
+                       '<svg xmlns="http://www.w3.org/2000/svg"' .
+                       ' version="1.1" width="180" height="240"/>' );
                wfMkdirParents( $dir . '/5/5f', null, __METHOD__ );
                copy( "$IP/tests/phpunit/data/media/LoremIpsum.djvu", "$dir/5/5f/LoremIpsum.djvu" );
 
@@ -1230,6 +1265,17 @@ class ParserTest {
                                "$dir/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png",
                                "$dir/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png",
 
+                               "$dir/9/93/Portrait.png",
+                               "$dir/thumb/9/93/Portrait.png/165px-Portrait.png",
+
+                               "$dir/f/fc/Portrait.svg",
+                               "$dir/thumb/f/fc/Portrait.svg/165px-Portrait.svg.png",
+                               "$dir/thumb/f/fc/Portrait.svg/225px-Portrait.svg.png",
+                               "$dir/thumb/f/fc/Portrait.svg/247px-Portrait.svg.png",
+                               "$dir/thumb/f/fc/Portrait.svg/330px-Portrait.svg.png",
+                               "$dir/thumb/f/fc/Portrait.svg/337px-Portrait.svg.png",
+                               "$dir/thumb/f/fc/Portrait.svg/450px-Portrait.svg.png",
+
                                "$dir/math/f/a/5/fa50b8b616463173474302ca3e63586b.png",
                        )
                );
@@ -1241,10 +1287,18 @@ class ParserTest {
                                "$dir/thumb/3/3a/Foobar.jpg",
                                "$dir/thumb/3/3a",
                                "$dir/thumb/3",
+                               "$dir/9/93",
+                               "$dir/9",
+                               "$dir/thumb/9/93/Portrait.png",
+                               "$dir/thumb/9/93/",
+                               "$dir/thumb/9/",
                                "$dir/e/ea",
                                "$dir/e",
+                               "$dir/f/fc/",
                                "$dir/f/ff/",
                                "$dir/f/",
+                               "$dir/thumb/f/fc/Portrait.svg",
+                               "$dir/thumb/f/fc/",
                                "$dir/thumb/f/ff/Foobar.svg",
                                "$dir/thumb/f/ff/",
                                "$dir/thumb/f/",
index 569c165..55801aa 100644 (file)
@@ -7755,7 +7755,7 @@ Magic Word: {{NUMBEROFFILES}}
 !! wikitext
 {{NUMBEROFFILES}}
 !! html
-<p>5
+<p>7
 </p>
 !! end
 
@@ -10793,12 +10793,16 @@ parsoid=wt2html,wt2wt,html2html
 # Image sizing.
 # See https://www.mediawiki.org/wiki/Help:Images#Size_and_frame
 # and https://bugzilla.wikimedia.org/show_bug.cgi?id=62258
-# Foobar has actual size of 1941x220
+# Foobar.jpg has actual size of 1941x220
+# Portrait.svg has actual size of 180x240
+# Portrait.png has actual size of 180x240
 # 1. Thumbs & frameless always reduce, can't be enlarged unless it's
 #    a scalable format.
 # 2. Framed images always ignore size options; always render at default size.
 # 3. "Unspecified format" and border are the only types which can be
 #    enlarged.
+# 4. Without an explicit size specification, thumbnails are
+#    resized to a square bounding box.
 
 !! test
 Image: "unspecified format" and border enlarge
@@ -10916,6 +10920,55 @@ parsoid=wt2html,wt2wt,html2html
 <figure class="mw-default-size" typeof="mw:Image/Frame"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></figure><figure typeof="mw:Image/Frame"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></figure><figure typeof="mw:Image/Frame"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></figure><figure typeof="mw:Image/Frame"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"/></a></figure>
 !! end
 
+!! test
+Image: thumbnails of the default size use a square bounding box.
+!! options
+thumbsize=220
+!! wikitext
+[[File:Foobar.jpg|thumb|landscape thumb]]
+
+[[File:Foobar.jpg|frameless|landscape frameless]]
+
+[[File:Portrait.png|thumb|should use 220x220px bounding box]]
+
+[[File:Portrait.png|frameless|should use 220x220px bounding box]]
+
+[[File:Portrait.svg|thumb|should use 220x220px bounding box]]
+
+[[File:Portrait.svg|frameless|should use 220x220px bounding box]]
+!! html/php
+<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>landscape thumb</div></div></div>
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="landscape frameless"><img alt="landscape frameless" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>
+</p>
+<div class="thumb tright"><div class="thumbinner" style="width:167px;"><a href="/wiki/File:Portrait.png" class="image"><img alt="" src="http://example.com/images/thumb/9/93/Portrait.png/165px-Portrait.png" width="165" height="220" class="thumbimage" srcset="http://example.com/images/9/93/Portrait.png 1.5x, http://example.com/images/9/93/Portrait.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Portrait.png" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>should use 220x220px bounding box</div></div></div>
+<p><a href="/wiki/File:Portrait.png" class="image" title="should use 220x220px bounding box"><img alt="should use 220x220px bounding box" src="http://example.com/images/thumb/9/93/Portrait.png/165px-Portrait.png" width="165" height="220" srcset="http://example.com/images/9/93/Portrait.png 1.5x, http://example.com/images/9/93/Portrait.png 2x" /></a>
+</p>
+<div class="thumb tright"><div class="thumbinner" style="width:167px;"><a href="/wiki/File:Portrait.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/fc/Portrait.svg/165px-Portrait.svg.png" width="165" height="220" class="thumbimage" srcset="http://example.com/images/thumb/f/fc/Portrait.svg/247px-Portrait.svg.png 1.5x, http://example.com/images/thumb/f/fc/Portrait.svg/330px-Portrait.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Portrait.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>should use 220x220px bounding box</div></div></div>
+<p><a href="/wiki/File:Portrait.svg" class="image" title="should use 220x220px bounding box"><img alt="should use 220x220px bounding box" src="http://example.com/images/thumb/f/fc/Portrait.svg/165px-Portrait.svg.png" width="165" height="220" srcset="http://example.com/images/thumb/f/fc/Portrait.svg/247px-Portrait.svg.png 1.5x, http://example.com/images/thumb/f/fc/Portrait.svg/330px-Portrait.svg.png 2x" /></a>
+</p>
+!! end
+
+!! test
+Image: bitmap thumbnails reduce only if thumb size is smaller than inherent size.
+!! options
+thumbsize=300
+!! wikitext
+[[File:Portrait.png|thumb|should use inherent 180x240px size]]
+
+[[File:Portrait.png|frameless|should use inherent 180x240px size]]
+
+[[File:Portrait.svg|thumb|will resize to 300x300px]]
+
+[[File:Portrait.svg|frameless|will resize to 300x300px]]
+!! html/php
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Portrait.png" class="image"><img alt="" src="http://example.com/images/9/93/Portrait.png" width="180" height="240" class="thumbimage" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Portrait.png" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>should use inherent 180x240px size</div></div></div>
+<p><a href="/wiki/File:Portrait.png" class="image" title="should use inherent 180x240px size"><img alt="should use inherent 180x240px size" src="http://example.com/images/9/93/Portrait.png" width="180" height="240" /></a>
+</p>
+<div class="thumb tright"><div class="thumbinner" style="width:227px;"><a href="/wiki/File:Portrait.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/fc/Portrait.svg/225px-Portrait.svg.png" width="225" height="300" class="thumbimage" srcset="http://example.com/images/thumb/f/fc/Portrait.svg/337px-Portrait.svg.png 1.5x, http://example.com/images/thumb/f/fc/Portrait.svg/450px-Portrait.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Portrait.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>will resize to 300x300px</div></div></div>
+<p><a href="/wiki/File:Portrait.svg" class="image" title="will resize to 300x300px"><img alt="will resize to 300x300px" src="http://example.com/images/thumb/f/fc/Portrait.svg/225px-Portrait.svg.png" width="225" height="300" srcset="http://example.com/images/thumb/f/fc/Portrait.svg/337px-Portrait.svg.png 1.5x, http://example.com/images/thumb/f/fc/Portrait.svg/450px-Portrait.svg.png 2x" /></a>
+</p>
+!! end
+
 ###################
 
 !! test
diff --git a/tests/phpunit/data/media/Portrait.png b/tests/phpunit/data/media/Portrait.png
new file mode 100644 (file)
index 0000000..b5a92f6
Binary files /dev/null and b/tests/phpunit/data/media/Portrait.png differ
index b4c1953..88bf7d9 100644 (file)
@@ -431,4 +431,22 @@ class DatabaseSqliteTest extends MediaWikiTestCase {
                $row = $res->fetchRow();
                $this->assertFalse( (bool)$row['a'] );
        }
+
+       /**
+        * @covers DatabaseSqlite::numFields
+        */
+       public function testNumFields() {
+               $db = new DatabaseSqliteStandalone( ':memory:' );
+
+               $databaseCreation = $db->query( 'CREATE TABLE a ( a_1 )', __METHOD__ );
+               $this->assertInstanceOf( 'ResultWrapper', $databaseCreation, "Failed to create table a" );
+               $res = $db->select( 'a' , '*');
+               $this->assertEquals( 0,  $db->numFields($res), "expects to get 0 fields for an empty table" );
+               $insertion = $db->insert( 'a', array( 'a_1' => 10 ), __METHOD__ );
+               $this->assertTrue( $insertion, "Insertion failed" );
+               $res = $db->select( 'a' , '*');
+               $this->assertEquals( 1,  $db->numFields($res), "wrong number of fields" );
+
+               $this->assertTrue( $db->close(), "closing database" );
+       }
 }
index 14bcac0..26efa4a 100644 (file)
@@ -285,6 +285,34 @@ class NewParserTest extends MediaWikiTestCase {
                                        'fileExists'  => true
                        ), $this->db->timestamp( '20010115123500' ), $user );
                }
+               $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Portrait.png' ) );
+               if ( !$this->db->selectField( 'image', '1', array( 'img_name' => $image->getName() ) ) ) {
+                       $image->recordUpload2( '', 'Upload of tall bitmap', 'Some tall bitmap', array(
+                                       'size'        => 12345,
+                                       'width'       => 180,
+                                       'height'      => 240,
+                                       'bits'        => 8,
+                                       'media_type'  => MEDIATYPE_BITMAP,
+                                       'mime'        => 'image/png',
+                                       'metadata'    => serialize( array() ),
+                                       'sha1'        => wfBaseConvert( '', 16, 36, 31 ),
+                                       'fileExists'  => true
+                       ), $this->db->timestamp( '20140515134200' ), $user );
+               }
+               $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Portrait.svg' ) );
+               if ( !$this->db->selectField( 'image', '1', array( 'img_name' => $image->getName() ) ) ) {
+                       $image->recordUpload2( '', 'Upload of tall SVG', 'Some tall SVG', array(
+                                       'size'        => 12345,
+                                       'width'       => 180,
+                                       'height'      => 240,
+                                       'bits'        => 24,
+                                       'media_type'  => MEDIATYPE_DRAWING,
+                                       'mime'        => 'image/svg+xml',
+                                       'metadata'    => serialize( array() ),
+                                       'sha1'        => wfBaseConvert( '', 16, 36, 31 ),
+                                       'fileExists'  => true
+                       ), $this->db->timestamp( '20140325124200' ), $user );
+               }
 
                # A DjVu file
                $image = wfLocalFile( Title::makeTitle( NS_FILE, 'LoremIpsum.djvu' ) );
@@ -499,6 +527,10 @@ class NewParserTest extends MediaWikiTestCase {
                $backend->store( array(
                        'src' => "$IP/skins/monobook/headbg.jpg", 'dst' => "$base/local-public/0/09/Bad.jpg"
                ) );
+               $backend->prepare( array( 'dir' => "$base/local-public/9/93" ) );
+               $backend->store( array(
+                       'src' => "$IP/tests/phpunit/data/media/Portrait.png", 'dst' => "$base/local-public/9/93/Portrait.png"
+               ) );
                $backend->prepare( array( 'dir' => "$base/local-public/5/5f" ) );
                $backend->store( array(
                        'src' => "$IP/tests/phpunit/data/media/LoremIpsum.djvu", 'dst' => "$base/local-public/5/5f/LoremIpsum.djvu"
@@ -513,6 +545,15 @@ class NewParserTest extends MediaWikiTestCase {
                $backend->quickCreate( array(
                        'content' => $data, 'dst' => "$base/local-public/f/ff/Foobar.svg"
                ) );
+
+               $data = '<?xml version="1.0" encoding="utf-8"?>' .
+                       '<svg xmlns="http://www.w3.org/2000/svg"' .
+                       ' version="1.1" width="180" height="240"/>';
+
+               $backend->prepare( array( 'dir' => "$base/local-public/f/fc" ) );
+               $backend->quickCreate( array(
+                       'content' => $data, 'dst' => "$base/local-public/f/fc/Portrait.svg"
+               ) );
        }
 
        /**
@@ -587,6 +628,9 @@ class NewParserTest extends MediaWikiTestCase {
                                "$base/local-thumb/5/5f/LoremIpsum.djvu/page2-3720px-LoremIpsum.djvu.jpg",
                                "$base/local-thumb/5/5f/LoremIpsum.djvu/page2-4960px-LoremIpsum.djvu.jpg",
 
+                               "$base/local-public/9/93/Portrait.png",
+                               "$base/local-thumb/9/93/Portrait.png/165px-Portrait.png",
+
                                "$base/local-public/f/ff/Foobar.svg",
                                "$base/local-thumb/f/ff/Foobar.svg/180px-Foobar.svg.png",
                                "$base/local-thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png",
@@ -598,6 +642,14 @@ class NewParserTest extends MediaWikiTestCase {
                                "$base/local-thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png",
                                "$base/local-thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png",
 
+                               "$base/local-public/f/fc/Portrait.svg",
+                               "$base/local-thumb/f/fc/Portrait.svg/165px-Portrait.svg.png",
+                               "$base/local-thumb/f/fc/Portrait.svg/225px-Portrait.svg.png",
+                               "$base/local-thumb/f/fc/Portrait.svg/247px-Portrait.svg.png",
+                               "$base/local-thumb/f/fc/Portrait.svg/330px-Portrait.svg.png",
+                               "$base/local-thumb/f/fc/Portrait.svg/337px-Portrait.svg.png",
+                               "$base/local-thumb/f/fc/Portrait.svg/450px-Portrait.svg.png",
+
                                "$base/local-public/math/f/a/5/fa50b8b616463173474302ca3e63586b.png",
                        )
                );
index 2cca7c8..f156c72 100644 (file)
@@ -99,7 +99,7 @@
                this.server.respond();
        } );
 
-       QUnit.test( 'getToken( cached )', function ( assert ) {
+       QUnit.test( 'getToken( pre-populated )', function ( assert ) {
                QUnit.expect( 2 );
 
                var api = new mw.Api();
                assert.equal( this.server.requests.length, 0, 'Requests made' );
        } );
 
-       QUnit.test( 'getToken( uncached )', function ( assert ) {
-               QUnit.expect( 2 );
+       QUnit.test( 'getToken()', function ( assert ) {
+               QUnit.expect( 5 );
 
-               var api = new mw.Api();
+               var test = this,
+                       api = new mw.Api();
 
                // Get a token of a type that isn't prepopulated by user.tokens.
                // Could use "block" or "delete" here, but those could in theory
                // be added to user.tokens, use a fake one instead.
                api.getToken( 'testaction' )
                        .done( function ( token ) {
-                               assert.ok( token.length, 'Got a token' );
+                               assert.ok( token.length, 'Got testaction token' );
                        } )
                        .fail( function ( err ) {
-                               assert.equal( '', err, 'API error' );
+                               assert.equal( err, '', 'API error' );
+                       } );
+               api.getToken( 'testaction' )
+                       .done( function ( token ) {
+                               assert.ok( token.length, 'Got testaction token (cached)' );
+                       } )
+                       .fail( function ( err ) {
+                               assert.equal( err, '', 'API error' );
                        } );
 
-               assert.equal( this.server.requests.length, 1, 'Requests made' );
+               // Don't cache error (bug 65268)
+               api.getToken( 'testaction2' )
+                       .fail( function ( err ) {
+                               assert.equal( err, 'bite-me', 'Expected error' );
+                       } )
+                       .always( function () {
+                               // Make this request after the first one has finished.
+                               // If we make it simultaneously we still want it to share
+                               // the cache, but as soon as it is fulfilled as error we
+                               // reject it so that the next one tries fresh.
+                               api.getToken( 'testaction2' )
+                                       .done( function ( token ) {
+                                               assert.ok( token.length, 'Got testaction2 token (error was not be cached)' );
+                                       } )
+                                       .fail( function ( err ) {
+                                               assert.equal( err, '', 'API error' );
+                                       } );
+
+                               assert.equal( test.server.requests.length, 3, 'Requests made' );
+
+                               test.server.requests[2].respond( 200, { 'Content-Type': 'application/json' },
+                                       '{ "tokens": { "testaction2token": "0123abc" } }'
+                               );
+                       } );
 
-               this.server.respond( function ( request ) {
-                       request.respond( 200, { 'Content-Type': 'application/json' },
-                               '{ "tokens": { "testactiontoken": "0123abc" } }'
-                       );
-               } );
+               this.server.requests[0].respond( 200, { 'Content-Type': 'application/json' },
+                       '{ "tokens": { "testactiontoken": "0123abc" } }'
+               );
+
+               this.server.requests[1].respond( 200, { 'Content-Type': 'application/json' },
+                       '{ "error": { "code": "bite-me", "info": "Smite me, O Mighty Smiter" } }'
+               );
        } );
 
        QUnit.test( 'postWithToken( tokenType, params )', function ( assert ) {
index 3f856b9..e43516b 100644 (file)
@@ -1,5 +1,10 @@
 ( function ( mw, $ ) {
-       QUnit.module( 'mediawiki.toc', QUnit.newMwEnvironment() );
+       QUnit.module( 'mediawiki.toc', QUnit.newMwEnvironment( {
+               setup: function () {
+                       // Prevent live cookies like mw_hidetoc=1 from interferring with the test
+                       this.stub( $, 'cookie' ).returns( null );
+               }
+       } ) );
 
        QUnit.asyncTest( 'toggleToc', 4, function ( assert ) {
                var tocHtml, $toggleLink, $tocList;
index 0bfd501..91321a2 100644 (file)
@@ -9,16 +9,14 @@
                assert.ok( mw.user.options instanceof mw.Map, 'options instance of mw.Map' );
        } );
 
-       QUnit.test( 'user status', 11, function ( assert ) {
+       QUnit.test( 'user status', 7, function ( assert ) {
 
                // Forge an anonymous user
                mw.config.set( 'wgUserName', null );
                delete mw.config.values.wgUserId;
 
                assert.strictEqual( mw.user.getName(), null, 'user.getName() returns null when anonymous' );
-               assert.strictEqual( mw.user.name(), null, 'user.name() compatibility' );
                assert.assertTrue( mw.user.isAnon(), 'user.isAnon() returns true when anonymous' );
-               assert.assertTrue( mw.user.anonymous(), 'user.anonymous() compatibility' );
                assert.strictEqual( mw.user.getId(), 0, 'user.getId() returns 0 when anonymous' );
 
                // Not part of startUp module
@@ -26,9 +24,7 @@
                mw.config.set( 'wgUserId', 123 );
 
                assert.equal( mw.user.getName(), 'John', 'user.getName() returns username when logged-in' );
-               assert.equal( mw.user.name(), 'John', 'user.name() compatibility' );
                assert.assertFalse( mw.user.isAnon(), 'user.isAnon() returns false when logged-in' );
-               assert.assertFalse( mw.user.anonymous(), 'user.anonymous() compatibility' );
                assert.strictEqual( mw.user.getId(), 123, 'user.getId() returns correct ID when logged-in' );
 
                assert.equal( mw.user.id(), 'John', 'user.id Returns username when logged-in' );