Merge "action=edit API with section=new would fail if page didn't exist"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sat, 17 Aug 2013 20:06:58 +0000 (20:06 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sat, 17 Aug 2013 20:06:58 +0000 (20:06 +0000)
102 files changed:
RELEASE-NOTES-1.22
docs/hooks.txt
includes/AutoLoader.php
includes/CategoryViewer.php
includes/DefaultSettings.php
includes/EditPage.php
includes/HTMLForm.php
includes/ImageGallery.php [deleted file]
includes/ImagePage.php [changed mode: 0644->0755]
includes/ImageQueryPage.php
includes/Preferences.php
includes/ProtectionForm.php
includes/SiteStats.php
includes/Skin.php
includes/SkinTemplate.php
includes/Title.php
includes/User.php
includes/UserMailer.php
includes/WikiPage.php
includes/actions/InfoAction.php
includes/api/ApiMain.php
includes/db/Database.php
includes/filerepo/file/ForeignAPIFile.php
includes/gallery/ImageGalleryBase.php [new file with mode: 0644]
includes/gallery/NolinesImageGallery.php [new file with mode: 0644]
includes/gallery/PackedImageGallery.php [new file with mode: 0644]
includes/gallery/PackedOverlayImageGallery.php [new file with mode: 0644]
includes/gallery/TraditionalImageGallery.php [new file with mode: 0644]
includes/installer/CliInstaller.php
includes/installer/Installer.i18n.php
includes/installer/WebInstaller.php
includes/installer/WebInstallerPage.php
includes/job/jobs/DoubleRedirectJob.php
includes/media/MediaTransformOutput.php
includes/parser/Parser.php
includes/search/SearchEngine.php
includes/search/SearchUpdate.php
includes/specials/SpecialJavaScriptTest.php
includes/specials/SpecialNewimages.php
includes/specials/SpecialProtectedpages.php
includes/specials/SpecialProtectedtitles.php
includes/specials/SpecialSearch.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUserrights.php
languages/Language.php
languages/LanguageConverter.php
languages/messages/MessagesAr.php
languages/messages/MessagesAst.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBs.php
languages/messages/MessagesCe.php
languages/messages/MessagesCs.php
languages/messages/MessagesCv.php
languages/messages/MessagesCy.php
languages/messages/MessagesDiq.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFo.php
languages/messages/MessagesFr.php
languages/messages/MessagesHe.php
languages/messages/MessagesHi.php
languages/messages/MessagesIa.php
languages/messages/MessagesJa.php
languages/messages/MessagesKa.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKm.php
languages/messages/MessagesKo.php
languages/messages/MessagesLb.php
languages/messages/MessagesLv.php
languages/messages/MessagesMg.php
languages/messages/MessagesMk.php
languages/messages/MessagesMr.php
languages/messages/MessagesNb.php
languages/messages/MessagesOc.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRue.php
languages/messages/MessagesSl.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesSv.php
languages/messages/MessagesTr.php
languages/messages/MessagesUk.php
languages/messages/MessagesVi.php
languages/messages/MessagesYi.php
languages/messages/MessagesZh_hans.php
maintenance/rebuildLocalisationCache.php
resources/Resources.php [changed mode: 0644->0755]
resources/jquery/jquery.tablesorter.js
resources/mediawiki.action/mediawiki.action.edit.styles.css [new file with mode: 0644]
resources/mediawiki.page/mediawiki.page.gallery.js [new file with mode: 0644]
resources/mediawiki.page/mediawiki.page.image.pagination.js [new file with mode: 0644]
skins/common/shared.css
tests/parser/parserTests.txt
tests/phpunit/includes/LanguageConverterTest.php

index cfe553e..e6836da 100644 (file)
@@ -43,6 +43,9 @@ production.
   an entry for 'bar.com' will still match 'foo.bar.com' but not 'foobar.com'.
 * $wgCopyUploadTimeout and $wgCopyUploadAsyncTimeout added to change the timeout times for
   fetching the file during upload by url.
+* New key added to $wgGalleryOptions - $wgGalleryOptions['mode'] to set
+  default gallery mode.
+* New hook 'GalleryGetModes' to allow extensions to make new gallery modes.
 
 === New features in 1.22 ===
 * (bug 44525) mediawiki.jqueryMsg can now parse (whitelisted) HTML elements and attributes.
@@ -184,6 +187,8 @@ production.
   setcookie() or setrawcookie() should begin using this instead.
 * New hook WebResponseSetCookie, called from WebResponse::setcookie().
 * New hook ResetSessionID, called when the session id is reset.
+* Add a mode parameter to <gallery> tag with potential options of "traditional",
+  "nolines", "packed", "packed-overlay", or "packed-hover".
 
 === Bug fixes in 1.22 ===
 * Disable Special:PasswordReset when $wgEnableEmail is false. Previously one
index 50b97a3..9d3da1c 100644 (file)
@@ -1117,6 +1117,12 @@ $reason: reason
  $title: An optional title object used to links to sections. Can be null.
  $local: Boolean indicating whether section links should refer to local page.
 
+'GalleryGetModes': Get list of classes that can render different modes of a
+ gallery
+$modeArray: An associative array mapping mode names to classes that implement
+ that mode. It is expected all registered classes are a subclass of
+ ImageGalleryBase.
+
 'GetAutoPromoteGroups': When determining which autopromote groups a user is
 entitled to be in.
 &$user: user to promote.
@@ -1976,13 +1982,6 @@ $data: the data stored in old_text.  The meaning depends on $flags: if external
 $flags: a comma-delimited list of strings representing the options used.  May
   include: utf8 (this will always be set for new revisions); gzip; external.
 
-'SearchUpdate': Prior to search update completion. Return false to stop any
-further text/content processing
-$id : Page id
-$title : Title object
-$text : Current text being indexed
-$content : Content object for text being indexed.
-
 'SearchGetNearMatchBefore': Perform exact-title-matches in "go" searches before
 the normal operations.
 $allSearchTerms : Array of the search terms in all content languages
index 42d7d88..45ad168 100644 (file)
@@ -136,7 +136,6 @@ $wgAutoloadLocalClasses = array(
        'ICacheHelper' => 'includes/CacheHelper.php',
        'IcuCollation' => 'includes/Collation.php',
        'IdentityCollation' => 'includes/Collation.php',
-       'ImageGallery' => 'includes/ImageGallery.php',
        'ImageHistoryList' => 'includes/ImagePage.php',
        'ImageHistoryPseudoPager' => 'includes/ImagePage.php',
        'ImagePage' => 'includes/ImagePage.php',
@@ -721,6 +720,16 @@ $wgAutoloadLocalClasses = array(
        'RCDatabaseLogEntry' => 'includes/logging/LogEntry.php',
        'RightsLogFormatter' => 'includes/logging/RightsLogFormatter.php',
 
+       # Image gallery
+
+       'ImageGallery' => 'includes/gallery/TraditionalImageGallery.php',
+       'ImageGalleryBase' => 'includes/gallery/ImageGalleryBase.php',
+       'NolinesImageGallery' => 'includes/gallery/NolinesImageGallery.php',
+       'TraditionalImageGallery' => 'includes/gallery/TraditionalImageGallery.php',
+       'PackedImageGallery' => 'includes/gallery/PackedImageGallery.php',
+       'PackedHoverImageGallery' => 'includes/gallery/PackedOverlayImageGallery.php',
+       'PackedOverlayImageGallery' => 'includes/gallery/PackedOverlayImageGallery.php',
+
        # includes/media
        'BitmapHandler' => 'includes/media/Bitmap.php',
        'BitmapHandler_ClientOnly' => 'includes/media/Bitmap_ClientOnly.php',
index a98f792..0c44e96 100644 (file)
@@ -141,8 +141,9 @@ class CategoryViewer extends ContextSource {
                $this->children = array();
                $this->children_start_char = array();
                if ( $this->showGallery ) {
-                       $this->gallery = new ImageGallery();
+                       $this->gallery = ImageGalleryBase::factory();
                        $this->gallery->setHideBadImages();
+                       $this->gallery->setContext( $this->getContext() );
                } else {
                        $this->imgsNoGallery = array();
                        $this->imgsNoGallery_start_char = array();
@@ -648,11 +649,6 @@ class CategoryViewer extends ContextSource {
         * returned?  This function says what. Each type is considered independently
         * of the other types.
         *
-        * Note for grepping: uses the messages category-article-count,
-        * category-article-count-limited, category-subcat-count,
-        * category-subcat-count-limited, category-file-count,
-        * category-file-count-limited.
-        *
         * @param int $rescnt The number of items returned by our database query.
         * @param int $dbcnt The number of items according to the category table.
         * @param string $type 'subcat', 'article', or 'file'
@@ -700,8 +696,12 @@ class CategoryViewer extends ContextSource {
                        $this->cat->refreshCounts();
                } else {
                        # Case 3: hopeless.  Don't give a total count at all.
+                       # Give grep a chance to find the usages: category-subcat-count-limited,
+                       # category-article-count-limited, category-file-count-limited
                        return $this->msg( "category-$type-count-limited" )->numParams( $rescnt )->parseAsBlock();
                }
+               # Give grep a chance to find the usages: category-subcat-count-limited,
+               # category-article-count-limited, category-file-count-limited
                return $this->msg( "category-$type-count" )->numParams( $rescnt, $totalcnt )->parseAsBlock();
        }
 }
index 0266659..87c1b6b 100644 (file)
@@ -1203,6 +1203,7 @@ $wgGalleryOptions = array(
        'imageHeight' => 120, // Height of the cells containing images in galleries (in "px")
        'captionLength' => 25, // Length of caption to truncate (in characters)
        'showBytes' => true, // Show the filesize in bytes in categories
+       'mode' => 'traditional',
 );
 
 /**
index fe1ca00..f244828 100644 (file)
@@ -967,6 +967,7 @@ class EditPage {
                                                $undoMsg = 'norev';
                                        }
 
+                                       // Give grep a chance to find the usages: undo-success, undo-failure, undo-norev
                                        $class = ( $undoMsg == 'success' ? '' : 'error ' ) . "mw-undo-{$undoMsg}";
                                        $this->editFormPageTop .= $wgOut->parse( "<div class=\"{$class}\">" .
                                                wfMessage( 'undo-' . $undoMsg )->plain() . '</div>', true, /* interface */true );
@@ -1920,6 +1921,7 @@ class EditPage {
                global $wgOut, $wgUser;
 
                $wgOut->addModules( 'mediawiki.action.edit' );
+               $wgOut->addModuleStyles( 'mediawiki.action.edit.styles' );
 
                if ( $wgUser->getOption( 'uselivepreview', false ) ) {
                        $wgOut->addModules( 'mediawiki.action.edit.preview' );
@@ -2936,7 +2938,9 @@ HTML
 
                $cancel = $this->getCancelLink();
                if ( $cancel !== '' ) {
-                       $cancel .= wfMessage( 'pipe-separator' )->text();
+                       $cancel .= Html::element( 'span',
+                               array( 'class' => 'mw-editButtons-pipe-separator' ),
+                               wfMessage( 'pipe-separator' )->text() );
                }
                $edithelpurl = Skin::makeInternalOrExternalUrl( wfMessage( 'edithelppage' )->inContentLanguage()->text() );
                $edithelp = '<a target="helpwindow" href="' . $edithelpurl . '">' .
index e06a934..84e7874 100644 (file)
@@ -968,9 +968,10 @@ class HTMLForm extends ContextSource {
         * @param $fields array[]|HTMLFormField[] array of fields (either arrays or objects)
         * @param string $sectionName ID attribute of the "<table>" tag for this section, ignored if empty
         * @param string $fieldsetIDPrefix ID prefix for the "<fieldset>" tag of each subsection, ignored if empty
+        * @param boolean &$hasUserVisibleFields Whether the section had user-visible fields
         * @return String
         */
-       public function displaySection( $fields, $sectionName = '', $fieldsetIDPrefix = '' ) {
+       public function displaySection( $fields, $sectionName = '', $fieldsetIDPrefix = '', &$hasUserVisibleFields = false ) {
                $displayFormat = $this->getDisplayFormat();
 
                $html = '';
@@ -990,20 +991,38 @@ class HTMLForm extends ContextSource {
                                if ( $labelValue != '&#160;' && $labelValue !== '' ) {
                                        $hasLabel = true;
                                }
-                       } elseif ( is_array( $value ) ) {
-                               $section = $this->displaySection( $value, "mw-htmlform-$key", "$fieldsetIDPrefix$key-" );
-                               $legend = $this->getLegend( $key );
-                               if ( isset( $this->mSectionHeaders[$key] ) ) {
-                                       $section = $this->mSectionHeaders[$key] . $section;
-                               }
-                               if ( isset( $this->mSectionFooters[$key] ) ) {
-                                       $section .= $this->mSectionFooters[$key];
+
+                               if ( get_class( $value ) !== 'HTMLHiddenField' &&
+                                               get_class( $value ) !== 'HTMLApiField' ) {
+                                       $hasUserVisibleFields = true;
                                }
-                               $attributes = array();
-                               if ( $fieldsetIDPrefix ) {
-                                       $attributes['id'] = Sanitizer::escapeId( "$fieldsetIDPrefix$key" );
+                       } elseif ( is_array( $value ) ) {
+                               $subsectionHasVisibleFields = false;
+                               $section = $this->displaySection( $value, "mw-htmlform-$key", "$fieldsetIDPrefix$key-", $subsectionHasVisibleFields );
+                               $legend = null;
+
+                               if ( $subsectionHasVisibleFields === true ) {
+                                       // Display the section with various niceties.
+                                       $hasUserVisibleFields = true;
+
+                                       $legend = $this->getLegend( $key );
+
+                                       if ( isset( $this->mSectionHeaders[$key] ) ) {
+                                               $section = $this->mSectionHeaders[$key] . $section;
+                                       }
+                                       if ( isset( $this->mSectionFooters[$key] ) ) {
+                                               $section .= $this->mSectionFooters[$key];
+                                       }
+
+                                       $attributes = array();
+                                       if ( $fieldsetIDPrefix ) {
+                                               $attributes['id'] = Sanitizer::escapeId( "$fieldsetIDPrefix$key" );
+                                       }
+                                       $subsectionHtml .= Xml::fieldset( $legend, $section, $attributes ) . "\n";
+                               } else {
+                                       // Just return the inputs, nothing fancy.
+                                       $subsectionHtml .= $section;
                                }
-                               $subsectionHtml .= Xml::fieldset( $legend, $section, $attributes ) . "\n";
                        }
                }
 
diff --git a/includes/ImageGallery.php b/includes/ImageGallery.php
deleted file mode 100644 (file)
index b4ef904..0000000
+++ /dev/null
@@ -1,425 +0,0 @@
-<?php
-/**
- * Image gallery.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-/**
- * Image gallery
- *
- * Add images to the gallery using add(), then render that list to HTML using toHTML().
- *
- * @ingroup Media
- */
-class ImageGallery {
-       var $mImages, $mShowBytes, $mShowFilename;
-       var $mCaption = false;
-
-       /**
-        * Hide blacklisted images?
-        */
-       var $mHideBadImages;
-
-       /**
-        * Registered parser object for output callbacks
-        * @var Parser
-        */
-       var $mParser;
-
-       /**
-        * Contextual title, used when images are being screened
-        * against the bad image list
-        */
-       protected $contextTitle = false;
-
-       protected $mAttribs = array();
-
-       /**
-        * Fixed margins
-        */
-       const THUMB_PADDING = 30;
-       const GB_PADDING = 5;
-       // 2px borders on each side + 2px implied padding on each side
-       const GB_BORDERS = 8;
-
-       /**
-        * Create a new image gallery object.
-        */
-       function __construct() {
-               global $wgGalleryOptions;
-               $this->mImages = array();
-               $this->mShowBytes = $wgGalleryOptions['showBytes'];
-               $this->mShowFilename = true;
-               $this->mParser = false;
-               $this->mHideBadImages = false;
-               $this->mPerRow = $wgGalleryOptions['imagesPerRow'];
-               $this->mWidths = $wgGalleryOptions['imageWidth'];
-               $this->mHeights = $wgGalleryOptions['imageHeight'];
-               $this->mCaptionLength = $wgGalleryOptions['captionLength'];
-       }
-
-       /**
-        * Register a parser object
-        *
-        * @param $parser Parser
-        */
-       function setParser( $parser ) {
-               $this->mParser = $parser;
-       }
-
-       /**
-        * Set bad image flag
-        */
-       function setHideBadImages( $flag = true ) {
-               $this->mHideBadImages = $flag;
-       }
-
-       /**
-        * Set the caption (as plain text)
-        *
-        * @param string $caption Caption
-        */
-       function setCaption( $caption ) {
-               $this->mCaption = htmlspecialchars( $caption );
-       }
-
-       /**
-        * Set the caption (as HTML)
-        *
-        * @param string $caption Caption
-        */
-       public function setCaptionHtml( $caption ) {
-               $this->mCaption = $caption;
-       }
-
-       /**
-        * Set how many images will be displayed per row.
-        *
-        * @param $num Integer >= 0; If perrow=0 the gallery layout will adapt to screensize
-        * invalid numbers will be rejected
-        */
-       public function setPerRow( $num ) {
-               if ( $num >= 0 ) {
-                       $this->mPerRow = (int)$num;
-               }
-       }
-
-       /**
-        * Set how wide each image will be, in pixels.
-        *
-        * @param $num Integer > 0; invalid numbers will be ignored
-        */
-       public function setWidths( $num ) {
-               if ( $num > 0 ) {
-                       $this->mWidths = (int)$num;
-               }
-       }
-
-       /**
-        * Set how high each image will be, in pixels.
-        *
-        * @param $num Integer > 0; invalid numbers will be ignored
-        */
-       public function setHeights( $num ) {
-               if ( $num > 0 ) {
-                       $this->mHeights = (int)$num;
-               }
-       }
-
-       /**
-        * Instruct the class to use a specific skin for rendering
-        *
-        * @param $skin Skin object
-        * @deprecated since 1.18 Not used anymore
-        */
-       function useSkin( $skin ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               /* no op */
-       }
-
-       /**
-        * Add an image to the gallery.
-        *
-        * @param $title Title object of the image that is added to the gallery
-        * @param $html  String: Additional HTML text to be shown. The name and size of the image are always shown.
-        * @param $alt   String: Alt text for the image
-        * @param $link  String: Override image link (optional)
-        * @param $handlerOpts Array: Array of options for image handler (aka page number)
-        */
-       function add( $title, $html = '', $alt = '', $link = '', $handlerOpts = array() ) {
-               if ( $title instanceof File ) {
-                       // Old calling convention
-                       $title = $title->getTitle();
-               }
-               $this->mImages[] = array( $title, $html, $alt, $link, $handlerOpts );
-               wfDebug( 'ImageGallery::add ' . $title->getText() . "\n" );
-       }
-
-       /**
-        * Add an image at the beginning of the gallery.
-        *
-        * @param $title Title object of the image that is added to the gallery
-        * @param $html  String: Additional HTML text to be shown. The name and size of the image are always shown.
-        * @param $alt   String: Alt text for the image
-        * @param $link  String: Override image link (optional)
-        * @param $handlerOpts Array: Array of options for image handler (aka page number)
-        */
-       function insert( $title, $html = '', $alt = '', $link = '', $handlerOpts = array() ) {
-               if ( $title instanceof File ) {
-                       // Old calling convention
-                       $title = $title->getTitle();
-               }
-               array_unshift( $this->mImages, array( &$title, $html, $alt, $link, $handlerOpts ) );
-       }
-
-       /**
-        * isEmpty() returns true if the gallery contains no images
-        * @return bool
-        */
-       function isEmpty() {
-               return empty( $this->mImages );
-       }
-
-       /**
-        * Enable/Disable showing of the file size of an image in the gallery.
-        * Enabled by default.
-        *
-        * @param $f Boolean: set to false to disable.
-        */
-       function setShowBytes( $f ) {
-               $this->mShowBytes = (bool)$f;
-       }
-
-       /**
-        * Enable/Disable showing of the filename of an image in the gallery.
-        * Enabled by default.
-        *
-        * @param $f Boolean: set to false to disable.
-        */
-       function setShowFilename( $f ) {
-               $this->mShowFilename = (bool)$f;
-       }
-
-       /**
-        * Set arbitrary attributes to go on the HTML gallery output element.
-        * Should be suitable for a <ul> element.
-        *
-        * Note -- if taking from user input, you should probably run through
-        * Sanitizer::validateAttributes() first.
-        *
-        * @param array $attribs of HTML attribute pairs
-        */
-       function setAttributes( $attribs ) {
-               $this->mAttribs = $attribs;
-       }
-
-       /**
-        * Return a HTML representation of the image gallery
-        *
-        * For each image in the gallery, display
-        * - a thumbnail
-        * - the image name
-        * - the additional text provided when adding the image
-        * - the size of the image
-        *
-        * @return string
-        */
-       function toHTML() {
-               if ( $this->mPerRow > 0 ) {
-                       $maxwidth = $this->mPerRow * ( $this->mWidths + self::THUMB_PADDING + self::GB_PADDING + self::GB_BORDERS );
-                       $oldStyle = isset( $this->mAttribs['style'] ) ? $this->mAttribs['style'] : '';
-                       # _width is ignored by any sane browser. IE6 doesn't know max-width so it uses _width instead
-                       $this->mAttribs['style'] = "max-width: {$maxwidth}px;_width: {$maxwidth}px;" . $oldStyle;
-               }
-
-               $attribs = Sanitizer::mergeAttributes(
-                       array( 'class' => 'gallery' ), $this->mAttribs );
-
-               $output = Xml::openElement( 'ul', $attribs );
-               if ( $this->mCaption ) {
-                       $output .= "\n\t<li class='gallerycaption'>{$this->mCaption}</li>";
-               }
-
-               $lang = $this->getLang();
-               $params = array(
-                       'width' => $this->mWidths,
-                       'height' => $this->mHeights
-               );
-               # Output each image...
-               foreach ( $this->mImages as $pair ) {
-                       $nt = $pair[0];
-                       $text = $pair[1]; # "text" means "caption" here
-                       $alt = $pair[2];
-                       $link = $pair[3];
-                       // $pair[4] is per image handler options
-                       $transformOptions = $params + $pair[4];
-
-                       $descQuery = false;
-                       if ( $nt->getNamespace() == NS_FILE ) {
-                               # Get the file...
-                               if ( $this->mParser instanceof Parser ) {
-                                       # Give extensions a chance to select the file revision for us
-                                       $options = array();
-                                       wfRunHooks( 'BeforeParserFetchFileAndTitle',
-                                               array( $this->mParser, $nt, &$options, &$descQuery ) );
-                                       # Fetch and register the file (file title may be different via hooks)
-                                       list( $img, $nt ) = $this->mParser->fetchFileAndTitle( $nt, $options );
-                               } else {
-                                       $img = wfFindFile( $nt );
-                               }
-                       } else {
-                               $img = false;
-                       }
-
-                       if ( !$img ) {
-                               # We're dealing with a non-image, spit out the name and be done with it.
-                               $thumbhtml = "\n\t\t\t" . '<div style="height: ' . ( self::THUMB_PADDING + $this->mHeights ) . 'px;">'
-                                       . htmlspecialchars( $nt->getText() ) . '</div>';
-
-                               if ( $this->mParser instanceof Parser ) {
-                                       $this->mParser->addTrackingCategory( 'broken-file-category' );
-                               }
-                       } elseif ( $this->mHideBadImages && wfIsBadImage( $nt->getDBkey(), $this->getContextTitle() ) ) {
-                               # The image is blacklisted, just show it as a text link.
-                               $thumbhtml = "\n\t\t\t" . '<div style="height: ' . ( self::THUMB_PADDING + $this->mHeights ) . 'px;">' .
-                                       Linker::link(
-                                               $nt,
-                                               htmlspecialchars( $nt->getText() ),
-                                               array(),
-                                               array(),
-                                               array( 'known', 'noclasses' )
-                                       ) .
-                                       '</div>';
-                       } elseif ( !( $thumb = $img->transform( $transformOptions ) ) ) {
-                               # Error generating thumbnail.
-                               $thumbhtml = "\n\t\t\t" . '<div style="height: ' . ( self::THUMB_PADDING + $this->mHeights ) . 'px;">'
-                                       . htmlspecialchars( $img->getLastError() ) . '</div>';
-                       } else {
-                               $vpad = ( self::THUMB_PADDING + $this->mHeights - $thumb->height ) / 2;
-
-                               $imageParameters = array(
-                                       'desc-link' => true,
-                                       'desc-query' => $descQuery,
-                                       'alt' => $alt,
-                                       'custom-url-link' => $link
-                               );
-                               # In the absence of both alt text and caption, fall back on providing screen readers with the filename as alt text
-                               if ( $alt == '' && $text == '' ) {
-                                       $imageParameters['alt'] = $nt->getText();
-                               }
-
-                               # Set both fixed width and min-height.
-                               $thumbhtml = "\n\t\t\t" .
-                                       '<div class="thumb" style="width: ' . ( $this->mWidths + self::THUMB_PADDING ) . 'px;">'
-                                       # Auto-margin centering for block-level elements. Needed now that we have video
-                                       # handlers since they may emit block-level elements as opposed to simple <img> tags.
-                                       # ref http://css-discuss.incutio.com/?page=CenteringBlockElement
-                                       . '<div style="margin:' . $vpad . 'px auto;">'
-                                       . $thumb->toHtml( $imageParameters ) . '</div></div>';
-
-                               // Call parser transform hook
-                               if ( $this->mParser && $img->getHandler() ) {
-                                       $img->getHandler()->parserTransformHook( $this->mParser, $img );
-                               }
-                       }
-
-                       //TODO
-                       // $linkTarget = Title::newFromText( $wgContLang->getNsText( MWNamespace::getUser() ) . ":{$ut}" );
-                       // $ul = Linker::link( $linkTarget, $ut );
-
-                       if ( $this->mShowBytes ) {
-                               if ( $img ) {
-                                       $fileSize = htmlspecialchars( $lang->formatSize( $img->getSize() ) );
-                               } else {
-                                       $fileSize = wfMessage( 'filemissing' )->escaped();
-                               }
-                               $fileSize = "$fileSize<br />\n";
-                       } else {
-                               $fileSize = '';
-                       }
-
-                       $textlink = $this->mShowFilename ?
-                               Linker::link(
-                                       $nt,
-                                       htmlspecialchars( $lang->truncate( $nt->getText(), $this->mCaptionLength ) ),
-                                       array(),
-                                       array(),
-                                       array( 'known', 'noclasses' )
-                               ) . "<br />\n" :
-                               '';
-
-                       # ATTENTION: The newline after <div class="gallerytext"> is needed to accommodate htmltidy which
-                       # in version 4.8.6 generated crackpot html in its absence, see:
-                       # http://bugzilla.wikimedia.org/show_bug.cgi?id=1765 -Ævar
-
-                       # Weird double wrapping (the extra div inside the li) needed due to FF2 bug
-                       # Can be safely removed if FF2 falls completely out of existence
-                       $output .=
-                               "\n\t\t" . '<li class="gallerybox" style="width: ' . ( $this->mWidths + self::THUMB_PADDING + self::GB_PADDING ) . 'px">'
-                                       . '<div style="width: ' . ( $this->mWidths + self::THUMB_PADDING + self::GB_PADDING ) . 'px">'
-                                       . $thumbhtml
-                                       . "\n\t\t\t" . '<div class="gallerytext">' . "\n"
-                                       . $textlink . $text . $fileSize
-                                       . "\n\t\t\t</div>"
-                                       . "\n\t\t</div></li>";
-               }
-               $output .= "\n</ul>";
-
-               return $output;
-       }
-
-       /**
-        * @return Integer: number of images in the gallery
-        */
-       public function count() {
-               return count( $this->mImages );
-       }
-
-       /**
-        * Set the contextual title
-        *
-        * @param $title Title: contextual title
-        */
-       public function setContextTitle( $title ) {
-               $this->contextTitle = $title;
-       }
-
-       /**
-        * Get the contextual title, if applicable
-        *
-        * @return mixed Title or false
-        */
-       public function getContextTitle() {
-               return is_object( $this->contextTitle ) && $this->contextTitle instanceof Title
-                       ? $this->contextTitle
-                       : false;
-       }
-
-       /**
-        * Determines the correct language to be used for this image gallery
-        * @return Language object
-        */
-       private function getLang() {
-               global $wgLang;
-               return $this->mParser
-                       ? $this->mParser->getTargetLanguage()
-                       : $wgLang;
-       }
-
-} //class
old mode 100644 (file)
new mode 100755 (executable)
index 8cfbc73..5fa44d5
@@ -401,6 +401,7 @@ class ImagePage extends Article {
 
                                $isMulti = $this->displayImg->isMultipage() && $this->displayImg->pageCount() > 1;
                                if ( $isMulti ) {
+                                       $out->addModules( 'mediawiki.page.image.pagination' );
                                        $out->addHTML( '<table class="multipageimage"><tr><td>' );
                                }
 
@@ -450,7 +451,6 @@ class ImagePage extends Article {
                                        $formParams = array(
                                                'name' => 'pageselector',
                                                'action' => $wgScript,
-                                               'onchange' => 'document.pageselector.submit();',
                                        );
                                        $options = array();
                                        for ( $i = 1; $i <= $count; $i++ ) {
index eeec5cd..75f7ba6 100644 (file)
@@ -42,7 +42,8 @@ abstract class ImageQueryPage extends QueryPage {
         */
        protected function outputResults( $out, $skin, $dbr, $res, $num, $offset ) {
                if ( $num > 0 ) {
-                       $gallery = new ImageGallery();
+                       $gallery = ImageGalleryBase::factory();
+                       $gallery->setContext( $this->getContext() );
 
                        # $res might contain the whole 1,000 rows, so we read up to
                        # $num [should update this to use a Pager]
index 709f15c..2bb1e64 100644 (file)
@@ -335,35 +335,44 @@ class Preferences {
 
                // see if there are multiple language variants to choose from
                if ( !$wgDisableLangConversion ) {
-                       $variants = $wgContLang->getVariants();
+                       foreach ( LanguageConverter::$languagesWithVariants as $langCode ) {
+                               if ( $langCode == $wgContLang->getCode() ) {
+                                       $variants = $wgContLang->getVariants();
 
-                       if ( count( $variants ) > 1 ) {
-                               $variantArray = array();
-                               foreach ( $variants as $v ) {
-                                       $v = str_replace( '_', '-', strtolower( $v ) );
-                                       $variantArray[$v] = $wgContLang->getVariantname( $v, false );
-                               }
+                                       if ( count( $variants ) <= 1 ) {
+                                               continue;
+                                       }
 
-                               $options = array();
-                               foreach ( $variantArray as $code => $name ) {
-                                       $display = wfBCP47( $code ) . ' - ' . $name;
-                                       $options[$display] = $code;
-                               }
+                                       $variantArray = array();
+                                       foreach ( $variants as $v ) {
+                                               $v = str_replace( '_', '-', strtolower( $v ) );
+                                               $variantArray[$v] = $lang->getVariantname( $v, false );
+                                       }
 
-                               $defaultPreferences['variant'] = array(
-                                       'label-message' => 'yourvariant',
-                                       'type' => 'select',
-                                       'options' => $options,
-                                       'section' => 'personal/i18n',
-                                       'help-message' => 'prefs-help-variant',
-                               );
+                                       $options = array();
+                                       foreach ( $variantArray as $code => $name ) {
+                                               $display = wfBCP47( $code ) . ' - ' . $name;
+                                               $options[$display] = $code;
+                                       }
 
-                               if ( !$wgDisableTitleConversion ) {
-                                       $defaultPreferences['noconvertlink'] =
-                                               array(
-                                               'type' => 'toggle',
+                                       $defaultPreferences['variant'] = array(
+                                               'label-message' => 'yourvariant',
+                                               'type' => 'select',
+                                               'options' => $options,
                                                'section' => 'personal/i18n',
-                                               'label-message' => 'tog-noconvertlink',
+                                               'help-message' => 'prefs-help-variant',
+                                       );
+
+                                       if ( !$wgDisableTitleConversion ) {
+                                               $defaultPreferences['noconvertlink'] = array(
+                                                       'type' => 'toggle',
+                                                       'section' => 'personal/i18n',
+                                                       'label-message' => 'tog-noconvertlink',
+                                               );
+                                       }
+                               } else {
+                                       $defaultPreferences["variant-$langCode"] = array(
+                                               'type' => 'api',
                                        );
                                }
                        }
@@ -969,6 +978,8 @@ class Preferences {
 
                foreach ( $watchTypes as $action => $pref ) {
                        if ( $user->isAllowed( $action ) ) {
+                               // Give grep a chance to find the usages:
+                               // tog-watchdefault, tog-watchmoves, tog-watchdeletion, tog-watchcreations
                                $defaultPreferences[$pref] = array(
                                        'type' => 'toggle',
                                        'section' => 'watchlist/advancedwatchlist',
index 4d41d9e..94ebc61 100644 (file)
@@ -365,6 +365,8 @@ class ProtectionForm {
 
                foreach ( $this->mRestrictions as $action => $selected ) {
                        /* Not all languages have V_x <-> N_x relation */
+                       // Give grep a chance to find the usages:
+                       // restriction-edit, restriction-move, restriction-create, restriction-upload
                        $msg = wfMessage( 'restriction-' . $action );
                        $out .= "<tr><td>" .
                        Xml::openElement( 'fieldset' ) .
index 199c64f..6e2359a 100644 (file)
@@ -297,50 +297,56 @@ class SiteStatsUpdate implements DeferrableUpdate {
                if ( $rate && ( $rate < 0 || mt_rand( 0, $rate - 1 ) != 0 ) ) {
                        $this->doUpdatePendingDeltas();
                } else {
-                       $dbw = wfGetDB( DB_MASTER );
-
-                       $lockKey = wfMemcKey( 'site_stats' ); // prepend wiki ID
-                       if ( $rate ) {
-                               // Lock the table so we don't have double DB/memcached updates
-                               if ( !$dbw->lockIsFree( $lockKey, __METHOD__ )
-                                       || !$dbw->lock( $lockKey, __METHOD__, 1 ) // 1 sec timeout
-                               ) {
-                                       $this->doUpdatePendingDeltas();
-                                       return;
-                               }
-                               $pd = $this->getPendingDeltas();
-                               // Piggy-back the async deltas onto those of this stats update....
-                               $this->views += ( $pd['ss_total_views']['+'] - $pd['ss_total_views']['-'] );
-                               $this->edits += ( $pd['ss_total_edits']['+'] - $pd['ss_total_edits']['-'] );
-                               $this->articles += ( $pd['ss_good_articles']['+'] - $pd['ss_good_articles']['-'] );
-                               $this->pages += ( $pd['ss_total_pages']['+'] - $pd['ss_total_pages']['-'] );
-                               $this->users += ( $pd['ss_users']['+'] - $pd['ss_users']['-'] );
-                               $this->images += ( $pd['ss_images']['+'] - $pd['ss_images']['-'] );
-                       }
-
                        // Need a separate transaction because this a global lock
-                       $dbw->begin( __METHOD__ );
-
-                       // Build up an SQL query of deltas and apply them...
-                       $updates = '';
-                       $this->appendUpdate( $updates, 'ss_total_views', $this->views );
-                       $this->appendUpdate( $updates, 'ss_total_edits', $this->edits );
-                       $this->appendUpdate( $updates, 'ss_good_articles', $this->articles );
-                       $this->appendUpdate( $updates, 'ss_total_pages', $this->pages );
-                       $this->appendUpdate( $updates, 'ss_users', $this->users );
-                       $this->appendUpdate( $updates, 'ss_images', $this->images );
-                       if ( $updates != '' ) {
-                               $dbw->update( 'site_stats', array( $updates ), array(), __METHOD__ );
-                       }
+                       wfGetDB( DB_MASTER )->onTransactionIdle( array( $this, 'tryDBUpdateInternal' ) );
+               }
+       }
 
-                       if ( $rate ) {
-                               // Decrement the async deltas now that we applied them
-                               $this->removePendingDeltas( $pd );
-                               // Commit the updates and unlock the table
-                               $dbw->unlock( $lockKey, __METHOD__ );
+       /**
+        * Do not call this outside of SiteStatsUpdate
+        *
+        * @return void
+        */
+       public function tryDBUpdateInternal() {
+               global $wgSiteStatsAsyncFactor;
+
+               $dbw = wfGetDB( DB_MASTER );
+               $lockKey = wfMemcKey( 'site_stats' ); // prepend wiki ID
+               if ( $wgSiteStatsAsyncFactor ) {
+                       // Lock the table so we don't have double DB/memcached updates
+                       if ( !$dbw->lockIsFree( $lockKey, __METHOD__ )
+                               || !$dbw->lock( $lockKey, __METHOD__, 1 ) // 1 sec timeout
+                       ) {
+                               $this->doUpdatePendingDeltas();
+                               return;
                        }
+                       $pd = $this->getPendingDeltas();
+                       // Piggy-back the async deltas onto those of this stats update....
+                       $this->views += ( $pd['ss_total_views']['+'] - $pd['ss_total_views']['-'] );
+                       $this->edits += ( $pd['ss_total_edits']['+'] - $pd['ss_total_edits']['-'] );
+                       $this->articles += ( $pd['ss_good_articles']['+'] - $pd['ss_good_articles']['-'] );
+                       $this->pages += ( $pd['ss_total_pages']['+'] - $pd['ss_total_pages']['-'] );
+                       $this->users += ( $pd['ss_users']['+'] - $pd['ss_users']['-'] );
+                       $this->images += ( $pd['ss_images']['+'] - $pd['ss_images']['-'] );
+               }
+
+               // Build up an SQL query of deltas and apply them...
+               $updates = '';
+               $this->appendUpdate( $updates, 'ss_total_views', $this->views );
+               $this->appendUpdate( $updates, 'ss_total_edits', $this->edits );
+               $this->appendUpdate( $updates, 'ss_good_articles', $this->articles );
+               $this->appendUpdate( $updates, 'ss_total_pages', $this->pages );
+               $this->appendUpdate( $updates, 'ss_users', $this->users );
+               $this->appendUpdate( $updates, 'ss_images', $this->images );
+               if ( $updates != '' ) {
+                       $dbw->update( 'site_stats', array( $updates ), array(), __METHOD__ );
+               }
 
-                       $dbw->commit( __METHOD__ );
+               if ( $wgSiteStatsAsyncFactor ) {
+                       // Decrement the async deltas now that we applied them
+                       $this->removePendingDeltas( $pd );
+                       // Commit the updates and unlock the table
+                       $dbw->unlock( $lockKey, __METHOD__ );
                }
        }
 
index de9c9dc..b714886 100644 (file)
@@ -82,6 +82,8 @@ abstract class Skin extends ContextSource {
        static function getSkinNameMessages() {
                $messages = array();
                foreach ( self::getSkinNames() as $skinKey => $skinName ) {
+                       // Give grep a chance to find the usages:
+                       // skinname-cologneblue, skinname-monobook, skinname-modern, skinname-vector
                        $messages[] = "skinname-$skinKey";
                }
                return $messages;
index cca1c6c..bce9ca4 100644 (file)
@@ -291,6 +291,7 @@ class SkinTemplate extends Skin {
                if ( $out->isSyndicated() ) {
                        $feeds = array();
                        foreach ( $out->getSyndicationLinks() as $format => $link ) {
+                               // Give grep a chance to find the usages: feed-atom, feed-rss
                                $feeds[$format] = array(
                                        'text' => $this->msg( "feed-$format" )->text(),
                                        'href' => $link
index 7818742..734e009 100644 (file)
@@ -1441,7 +1441,7 @@ class Title {
                                $url = str_replace( '$1', $dbkey, $wgArticlePath );
                                wfRunHooks( 'GetLocalURL::Article', array( &$this, &$url ) );
                        } else {
-                               global $wgVariantArticlePath, $wgActionPaths;
+                               global $wgVariantArticlePath, $wgActionPaths, $wgContLang;
                                $url = false;
                                $matches = array();
 
@@ -1463,6 +1463,7 @@ class Title {
 
                                if ( $url === false &&
                                        $wgVariantArticlePath &&
+                                       $wgContLang->getCode() === $this->getPageLanguage()->getCode() &&
                                        $this->getPageLanguage()->hasVariants() &&
                                        preg_match( '/^variant=([^&]*)$/', $query, $matches ) )
                                {
index fedc6a9..72f66f0 100644 (file)
@@ -1240,7 +1240,10 @@ class User {
 
                $defOpt = $wgDefaultUserOptions;
                // Default language setting
-               $defOpt['language'] = $defOpt['variant'] = $wgContLang->getCode();
+               $defOpt['language'] = $wgContLang->getCode();
+               foreach ( LanguageConverter::$languagesWithVariants as $langCode ) {
+                       $defOpt[$langCode == $wgContLang->getCode() ? 'variant' : "variant-$langCode"] = $langCode;
+               }
                foreach ( SearchEngine::searchableNamespaces() as $nsnum => $nsname ) {
                        $defOpt['searchNs' . $nsnum] = !empty( $wgNamespacesToBeSearchedDefault[$nsnum] );
                }
@@ -3736,6 +3739,8 @@ class User {
                } elseif ( $type === true ) {
                        $message = 'confirmemail_body_changed';
                } else {
+                       // Give grep a chance to find the usages:
+                       // confirmemail_body_changed, confirmemail_body_set
                        $message = 'confirmemail_body_' . $type;
                }
 
index 0d77159..0c880d6 100644 (file)
@@ -752,9 +752,13 @@ class EmailNotification {
                $postTransformKeys['$PAGESUMMARY'] = $this->summary == '' ? ' - ' : $this->summary;
 
                # Now build message's subject and body
+               # Give grep a chance to find the usages: enotif_subject_deleted, enotif_subject_created,
+               # enotif_subject_moved, enotif_subject_restored, enotif_subject_changed
                $this->subject = wfMessage( 'enotif_subject_' . $this->pageStatus )->inContentLanguage()
                        ->params( $pageTitle, $keys['$PAGEEDITOR'] )->text();
 
+               # Give grep a chance to find the usages: enotif_body_intro_deleted, enotif_body_intro_created,
+               # enotif_body_intro_moved, enotif_body_intro_restored, enotif_body_intro_changed
                $keys['$PAGEINTRO'] = wfMessage( 'enotif_body_intro_' . $this->pageStatus )
                        ->inContentLanguage()->params( $pageTitle, $keys['$PAGEEDITOR'], $pageTitleUrl )
                        ->text();
index 9d61abc..ce26fb9 100644 (file)
@@ -2978,6 +2978,29 @@ class WikiPage implements Page, IDBAccessObject {
 
        /**#@-*/
 
+       /**
+        * Returns a list of categories this page is a member of.
+        * Results will include hidden categories
+        *
+        * @return TitleArray
+        */
+       public function getCategories() {
+               $id = $this->getId();
+               if ( $id == 0 ) {
+                       return TitleArray::newFromResult( new FakeResultWrapper( array() ) );
+               }
+
+               $dbr = wfGetDB( DB_SLAVE );
+               $res = $dbr->select( 'categorylinks',
+                       array( 'cl_to AS page_title, ' . NS_CATEGORY . ' AS page_namespace' ),
+                       // Have to do that since DatabaseBase::fieldNamesWithAlias treats numeric indexes
+                       // as not being aliases, and NS_CATEGORY is numeric
+                       array( 'cl_from' => $id ),
+                       __METHOD__ );
+
+               return TitleArray::newFromResult( $res );
+       }
+
        /**
         * Returns a list of hidden categories this page is a member of.
         * Uses the page_props and categorylinks tables.
index 012a655..1fe19d5 100644 (file)
@@ -116,6 +116,9 @@ class InfoAction extends FormlessAction {
 
                // Render page information
                foreach ( $pageInfo as $header => $infoTable ) {
+                       // Give grep a chance to find the usages:
+                       // pageinfo-header-basic, pageinfo-header-edits, pageinfo-header-restrictions,
+                       // pageinfo-header-properties, pageinfo-category-info
                        $content .= $this->makeHeader( $this->msg( "pageinfo-${header}" )->escaped() ) . "\n";
                        $table = "\n";
                        foreach ( $infoTable as $infoRow ) {
@@ -278,6 +281,7 @@ class InfoAction extends FormlessAction {
 
                // Use robot policy logic
                $policy = $this->page->getRobotPolicy( 'view', $pOutput );
+               // Give grep a chance to find the usages: pageinfo-robot-index, pageinfo-robot-noindex
                $pageInfo['header-basic'][] = array(
                        $this->msg( 'pageinfo-robot-policy' ), $this->msg( "pageinfo-robot-${policy['index']}" )
                );
@@ -393,6 +397,8 @@ class InfoAction extends FormlessAction {
                                $message = $this->msg( 'protect-default' )->escaped();
                        } else {
                                // Administrators only
+                               // Give grep a chance to find the usages:
+                               // protect-level-autoconfirmed, protect-level-sysop
                                $message = $this->msg( "protect-level-$protectionLevel" );
                                if ( $message->isDisabled() ) {
                                        // Require "$1" permission
@@ -402,6 +408,8 @@ class InfoAction extends FormlessAction {
                                }
                        }
 
+                       // Give grep a chance to find the usages:
+                       // restriction-edit, restriction-move, restriction-create, restriction-upload
                        $pageInfo['header-restrictions'][] = array(
                                $this->msg( "restriction-$restrictionType" ), $message
                        );
index 6dd6d59..4dd1713 100644 (file)
@@ -1150,7 +1150,7 @@ class ApiMain extends ApiBase {
                $this->setHelp();
                // Get help text from cache if present
                $key = wfMemcKey( 'apihelp', $this->getModuleName(),
-                       SpecialVersion::getVersion( 'nodb' ) );
+                       str_replace( ' ', '_', SpecialVersion::getVersion( 'nodb' ) ) );
                if ( $wgAPICacheHelpTimeout > 0 ) {
                        $cached = $wgMemc->get( $key );
                        if ( $cached ) {
index 8caacf7..623010f 100644 (file)
@@ -3110,10 +3110,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        foreach ( $callbacks as $callback ) {
                                try {
                                        $this->clearFlag( DBO_TRX ); // make each query its own transaction
-                                       $callback();
+                                       call_user_func( $callback );
                                        $this->setFlag( $autoTrx ? DBO_TRX : 0 ); // restore automatic begin()
-                               } catch ( Exception $e ) {
-                               }
+                               } catch ( Exception $e ) {}
                        }
                } while ( count( $this->mTrxIdleCallbacks ) );
 
@@ -3134,7 +3133,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        $this->mTrxPreCommitCallbacks = array(); // recursion guard
                        foreach ( $callbacks as $callback ) {
                                try {
-                                       $callback();
+                                       call_user_func( $callback );
                                } catch ( Exception $e ) {}
                        }
                } while ( count( $this->mTrxPreCommitCallbacks ) );
index 8829cd9..ed96d44 100644 (file)
@@ -86,7 +86,7 @@ class ForeignAPIFile extends File {
         * @return string
         */
        static function getProps() {
-               return 'timestamp|user|comment|url|size|sha1|metadata|mime';
+               return 'timestamp|user|comment|url|size|sha1|metadata|mime|mediatype';
        }
 
        // Dummy functions...
@@ -245,10 +245,12 @@ class ForeignAPIFile extends File {
        }
 
        /**
-        * @todo FIXME: May guess wrong on file types that can be eg audio or video
         * @return int|string
         */
        function getMediaType() {
+               if ( isset( $this->mInfo['mediatype'] ) ) {
+                       return $this->mInfo['mediatype'];
+               }
                $magic = MimeMagic::singleton();
                return $magic->getMediaType( null, $this->getMimeType() );
        }
diff --git a/includes/gallery/ImageGalleryBase.php b/includes/gallery/ImageGalleryBase.php
new file mode 100644 (file)
index 0000000..f8b8c50
--- /dev/null
@@ -0,0 +1,331 @@
+<?php
+/**
+ * Image gallery.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Image gallery
+ *
+ * Add images to the gallery using add(), then render that list to HTML using toHTML().
+ *
+ * @ingroup Media
+ */
+abstract class ImageGalleryBase extends ContextSource {
+       var $mImages, $mShowBytes, $mShowFilename, $mMode;
+       var $mCaption = false;
+
+       /**
+        * Hide blacklisted images?
+        */
+       var $mHideBadImages;
+
+       /**
+        * Registered parser object for output callbacks
+        * @var Parser
+        */
+       var $mParser;
+
+       /**
+        * Contextual title, used when images are being screened
+        * against the bad image list
+        */
+       protected $contextTitle = false;
+
+       protected $mAttribs = array();
+
+       static private $modeMapping = false;
+
+       /**
+        * Get a new image gallery. This is the method other callers
+        * should use to get a gallery.
+        *
+        * @param String|bool $mode Mode to use. False to use the default.
+        */
+       static function factory( $mode = false ) {
+               global $wgGalleryOptions, $wgContLang;
+               self::loadModes();
+               if ( !$mode ) {
+                       $mode = $wgGalleryOptions['mode'];
+               }
+
+               $mode = $wgContLang->lc( $mode );
+
+               if ( isset( self::$modeMapping[$mode] ) ) {
+                       return new self::$modeMapping[$mode]( $mode );
+               } else {
+                       throw new MWException( "No gallery class registered for mode $mode" );
+               }
+       }
+
+       static private function loadModes() {
+               if ( self::$modeMapping === false ) {
+                       self::$modeMapping = array(
+                               'traditional' => 'TraditionalImageGallery',
+                               'nolines' => 'NolinesImageGallery',
+                               'packed' => 'PackedImageGallery',
+                               'packed-hover' => 'PackedHoverImageGallery',
+                               'packed-overlay' => 'PackedOverlayImageGallery',
+                       );
+                       // Allow extensions to make a new gallery format.
+                       wfRunHooks( 'GalleryGetModes', self::$modeMapping );
+               }
+       }
+
+       /**
+        * Create a new image gallery object.
+        *
+        * You should not call this directly, but instead use
+        * ImageGalleryBase::factory().
+        */
+       function __construct( $mode = 'traditional' ) {
+               global $wgGalleryOptions;
+               $this->mImages = array();
+               $this->mShowBytes = $wgGalleryOptions['showBytes'];
+               $this->mShowFilename = true;
+               $this->mParser = false;
+               $this->mHideBadImages = false;
+               $this->mPerRow = $wgGalleryOptions['imagesPerRow'];
+               $this->mWidths = $wgGalleryOptions['imageWidth'];
+               $this->mHeights = $wgGalleryOptions['imageHeight'];
+               $this->mCaptionLength = $wgGalleryOptions['captionLength'];
+               $this->mMode = $mode;
+       }
+
+       /**
+        * Register a parser object. If you do not set this
+        * and the output of this gallery ends up in parser
+        * cache, the javascript will break!
+        *
+        * @note This also triggers using the page's target
+        *  language instead of the user language.
+        *
+        * @param $parser Parser
+        */
+       function setParser( $parser ) {
+               $this->mParser = $parser;
+       }
+
+       /**
+        * Set bad image flag
+        */
+       function setHideBadImages( $flag = true ) {
+               $this->mHideBadImages = $flag;
+       }
+
+       /**
+        * Set the caption (as plain text)
+        *
+        * @param string $caption Caption
+        */
+       function setCaption( $caption ) {
+               $this->mCaption = htmlspecialchars( $caption );
+       }
+
+       /**
+        * Set the caption (as HTML)
+        *
+        * @param string $caption Caption
+        */
+       public function setCaptionHtml( $caption ) {
+               $this->mCaption = $caption;
+       }
+
+       /**
+        * Set how many images will be displayed per row.
+        *
+        * @param $num Integer >= 0; If perrow=0 the gallery layout will adapt to screensize
+        * invalid numbers will be rejected
+        */
+       public function setPerRow( $num ) {
+               if ( $num >= 0 ) {
+                       $this->mPerRow = (int)$num;
+               }
+       }
+
+       /**
+        * Set how wide each image will be, in pixels.
+        *
+        * @param $num Integer > 0; invalid numbers will be ignored
+        */
+       public function setWidths( $num ) {
+               if ( $num > 0 ) {
+                       $this->mWidths = (int)$num;
+               }
+       }
+
+       /**
+        * Set how high each image will be, in pixels.
+        *
+        * @param $num Integer > 0; invalid numbers will be ignored
+        */
+       public function setHeights( $num ) {
+               if ( $num > 0 ) {
+                       $this->mHeights = (int)$num;
+               }
+       }
+
+       /**
+        * Allow setting additional options. This is meant
+        * to allow extensions to add additional parameters to
+        * <gallery> parser tag.
+        *
+        * @param Array $options Attributes of gallery tag.
+        */
+       public function setAdditionalOptions( $options ) { }
+
+       /**
+        * Instruct the class to use a specific skin for rendering
+        *
+        * @param $skin Skin object
+        * @deprecated since 1.18 Not used anymore
+        */
+       function useSkin( $skin ) {
+               wfDeprecated( __METHOD__, '1.18' );
+               /* no op */
+       }
+
+       /**
+        * Add an image to the gallery.
+        *
+        * @param $title Title object of the image that is added to the gallery
+        * @param $html  String: Additional HTML text to be shown. The name and size of the image are always shown.
+        * @param $alt   String: Alt text for the image
+        * @param $link  String: Override image link (optional)
+        * @param $handlerOpts Array: Array of options for image handler (aka page number)
+        */
+       function add( $title, $html = '', $alt = '', $link = '', $handlerOpts = array() ) {
+               if ( $title instanceof File ) {
+                       // Old calling convention
+                       $title = $title->getTitle();
+               }
+               $this->mImages[] = array( $title, $html, $alt, $link, $handlerOpts );
+               wfDebug( 'ImageGallery::add ' . $title->getText() . "\n" );
+       }
+
+       /**
+        * Add an image at the beginning of the gallery.
+        *
+        * @param $title Title object of the image that is added to the gallery
+        * @param $html  String: Additional HTML text to be shown. The name and size of the image are always shown.
+        * @param $alt   String: Alt text for the image
+        * @param $link  String: Override image link (optional)
+        * @param $handlerOpts Array: Array of options for image handler (aka page number)
+        */
+       function insert( $title, $html = '', $alt = '', $link = '', $handlerOpts = array() ) {
+               if ( $title instanceof File ) {
+                       // Old calling convention
+                       $title = $title->getTitle();
+               }
+               array_unshift( $this->mImages, array( &$title, $html, $alt, $link, $handlerOpts ) );
+       }
+
+       /**
+        * isEmpty() returns true if the gallery contains no images
+        * @return bool
+        */
+       function isEmpty() {
+               return empty( $this->mImages );
+       }
+
+       /**
+        * Enable/Disable showing of the file size of an image in the gallery.
+        * Enabled by default.
+        *
+        * @param $f Boolean: set to false to disable.
+        */
+       function setShowBytes( $f ) {
+               $this->mShowBytes = (bool)$f;
+       }
+
+       /**
+        * Enable/Disable showing of the filename of an image in the gallery.
+        * Enabled by default.
+        *
+        * @param $f Boolean: set to false to disable.
+        */
+       function setShowFilename( $f ) {
+               $this->mShowFilename = (bool)$f;
+       }
+
+       /**
+        * Set arbitrary attributes to go on the HTML gallery output element.
+        * Should be suitable for a <ul> element.
+        *
+        * Note -- if taking from user input, you should probably run through
+        * Sanitizer::validateAttributes() first.
+        *
+        * @param array $attribs of HTML attribute pairs
+        */
+       function setAttributes( $attribs ) {
+               $this->mAttribs = $attribs;
+       }
+
+       /**
+        * Display an html representation of the gallery
+        *
+        * @return String The html
+        */
+       abstract public function toHTML();
+
+       /**
+        * @return Integer: number of images in the gallery
+        */
+       public function count() {
+               return count( $this->mImages );
+       }
+
+       /**
+        * Set the contextual title
+        *
+        * @param $title Title: contextual title
+        */
+       public function setContextTitle( $title ) {
+               $this->contextTitle = $title;
+       }
+
+       /**
+        * Get the contextual title, if applicable
+        *
+        * @return mixed Title or false
+        */
+       public function getContextTitle() {
+               return is_object( $this->contextTitle ) && $this->contextTitle instanceof Title
+                       ? $this->contextTitle
+                       : false;
+       }
+
+       /**
+        * Determines the correct language to be used for this image gallery
+        * @return Language object
+        */
+       protected function getRenderLang() {
+               return $this->mParser
+                       ? $this->mParser->getTargetLanguage()
+                       : $this->getLanguage();
+       }
+
+       /* Old constants no longer used.
+       const THUMB_PADDING = 30;
+       const GB_PADDING = 5;
+       const GB_BORDERS = 8;
+       */
+
+}
+
diff --git a/includes/gallery/NolinesImageGallery.php b/includes/gallery/NolinesImageGallery.php
new file mode 100644 (file)
index 0000000..9e0a494
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Nolines image gallery. Like "traditional" but without borders and
+ * less padding.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+class NolinesImageGallery extends TraditionalImageGallery {
+
+       protected function getThumbPadding() {
+               return 0;
+       }
+
+       protected function getGBBorders() {
+               return 0;
+       }
+
+       protected function getVPad( $boxHeight, $thumbHeight ) {
+               return 0;
+       }
+}
diff --git a/includes/gallery/PackedImageGallery.php b/includes/gallery/PackedImageGallery.php
new file mode 100644 (file)
index 0000000..9149f8c
--- /dev/null
@@ -0,0 +1,91 @@
+<?php
+/**
+ * Packed image gallery. All images adjusted to be same height.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+class PackedImageGallery extends TraditionalImageGallery {
+
+       /**
+        * We artificially have 1.5 the resolution neccessary so that
+        * we can scale it up by that much on the client side, without
+        * worrying about requesting a new image.
+        */
+       const SCALE_FACTOR = 1.5;
+
+       protected function getVPad( $boxHeight, $thumbHeight ) {
+               return ( $this->getThumbPadding() + $boxHeight - $thumbHeight/ self::SCALE_FACTOR ) / 2;
+       }
+
+       protected function getThumbPadding() {
+               return 0;
+       }
+
+       protected function getGBPadding() {
+               return 2;
+       }
+
+       /**
+        * @param File $img The file being transformed. May be false
+        */
+       protected function getThumbParams( $img ) {
+               if ( $img && $img->getMediaType() === MEDIATYPE_AUDIO ) {
+                       $width = $this->mWidths;
+               } else {
+                       // We want the width not to be the constraining
+                       // factor, so use random big number.
+                       $width = $this->mHeights * 10 + 100;
+               }
+               // self::SCALE_FACTOR so the js has some room to manipulate sizes.
+               return array(
+                       'width' => $width * self::SCALE_FACTOR,
+                       'height' => $this->mHeights * self::SCALE_FACTOR,
+               );
+       }
+
+       protected function getThumbDivWidth( $thumbWidth ) {
+               // Require at least 60px wide, so caption is wide enough to work.
+               if ( $thumbWidth < 60 * self::SCALE_FACTOR ) {
+                       $thumbWidth = 60 * self::SCALE_FACTOR;
+               }
+               return $thumbWidth / self::SCALE_FACTOR + $this->getThumbPadding();
+       }
+
+       /**
+        * @param MediaTransformOutput|bool $thumb the thumbnail, or false if no thumb (which can happen)
+        */
+       protected function getGBWidth( $thumb ) {
+               $thumbWidth = $thumb ? $thumb->getWidth() : $this->mWidths * self::SCALE_FACTOR;
+               return $this->getThumbDivWidth( $thumbWidth ) + $this->getGBPadding();
+       }
+
+       protected function adjustImageParameters( $thumb, &$imageParameters ) {
+               // Re-adjust back to normal size.
+               $imageParameters['override-width'] = ceil( $thumb->getWidth() / self::SCALE_FACTOR );
+               $imageParameters['override-height'] = ceil( $thumb->getHeight() / self::SCALE_FACTOR );
+       }
+
+       /**
+        * Add javascript which auto-justifies the rows by manipulating the image sizes.
+        * Also ensures that the hover version of this degrades gracefully.
+        */
+       protected function getModules() {
+               return array( 'mediawiki.page.gallery' );
+       }
+}
diff --git a/includes/gallery/PackedOverlayImageGallery.php b/includes/gallery/PackedOverlayImageGallery.php
new file mode 100644 (file)
index 0000000..bba06fc
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Packed overlay image gallery. All images adjusted to be same height and
+ * image caption being placed over top of image.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+class PackedOverlayImageGallery extends PackedImageGallery {
+
+       /**
+        * Add the wrapper html around the thumb's caption
+        *
+        * @param String $galleryText The caption
+        * @param MediaTransformOutput|boolean $thumb The thumb this caption is for or false for bad image.
+        */
+       protected function wrapGalleryText( $galleryText, $thumb ) {
+
+               // If we have no text, do not output anything to avoid
+               // ugly white overlay.
+               if ( trim( $galleryText ) === '' ) {
+                       return '';
+               }
+
+               # ATTENTION: The newline after <div class="gallerytext"> is needed to accommodate htmltidy which
+               # in version 4.8.6 generated crackpot html in its absence, see:
+               # http://bugzilla.wikimedia.org/show_bug.cgi?id=1765 -Ævar
+
+               $thumbWidth = $this->getGBWidth( $thumb ) - $this->getThumbPadding() - $this->getGBPadding();
+               $captionWidth = ceil( $thumbWidth - 20 );
+
+               $outerWrapper = '<div class="gallerytextwrapper" style="width: ' . $captionWidth . 'px">';
+               return "\n\t\t\t" . $outerWrapper . '<div class="gallerytext">' . "\n"
+                                       . $galleryText
+                                       . "\n\t\t\t</div>";
+       }
+}
+
+/**
+ * Same as Packed except different CSS is applied to make the
+ * caption only show up on hover. If a touch screen is detected,
+ * falls back to PackedHoverGallery. Degrades gracefully for
+ * screen readers.
+ */
+class PackedHoverImageGallery extends PackedOverlayImageGallery { }
diff --git a/includes/gallery/TraditionalImageGallery.php b/includes/gallery/TraditionalImageGallery.php
new file mode 100644 (file)
index 0000000..223fb07
--- /dev/null
@@ -0,0 +1,328 @@
+<?php
+/**
+ * Image gallery.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+class TraditionalImageGallery extends ImageGalleryBase {
+
+
+       /**
+        * Return a HTML representation of the image gallery
+        *
+        * For each image in the gallery, display
+        * - a thumbnail
+        * - the image name
+        * - the additional text provided when adding the image
+        * - the size of the image
+        *
+        * @return string
+        */
+       function toHTML() {
+               if ( $this->mPerRow > 0 ) {
+                       $maxwidth = $this->mPerRow * ( $this->mWidths + $this->getAllPadding() );
+                       $oldStyle = isset( $this->mAttribs['style'] ) ? $this->mAttribs['style'] : '';
+                       # _width is ignored by any sane browser. IE6 doesn't know max-width so it uses _width instead
+                       $this->mAttribs['style'] = "max-width: {$maxwidth}px;_width: {$maxwidth}px;" . $oldStyle;
+               }
+
+               $attribs = Sanitizer::mergeAttributes(
+                       array( 'class' => 'gallery mw-gallery-' . $this->mMode ), $this->mAttribs );
+
+               $modules = $this->getModules();
+
+               if ( $this->mParser ) {
+                       $this->mParser->getOutput()->addModules( $modules );
+               } else {
+                       $this->getOutput()->addModules( $modules );
+               }
+               $output = Xml::openElement( 'ul', $attribs );
+               if ( $this->mCaption ) {
+                       $output .= "\n\t<li class='gallerycaption'>{$this->mCaption}</li>";
+               }
+
+               $lang = $this->getRenderLang();
+               # Output each image...
+               foreach ( $this->mImages as $pair ) {
+                       $nt = $pair[0];
+                       $text = $pair[1]; # "text" means "caption" here
+                       $alt = $pair[2];
+                       $link = $pair[3];
+
+                       $descQuery = false;
+                       if ( $nt->getNamespace() === NS_FILE ) {
+                               # Get the file...
+                               if ( $this->mParser instanceof Parser ) {
+                                       # Give extensions a chance to select the file revision for us
+                                       $options = array();
+                                       wfRunHooks( 'BeforeParserFetchFileAndTitle',
+                                               array( $this->mParser, $nt, &$options, &$descQuery ) );
+                                       # Fetch and register the file (file title may be different via hooks)
+                                       list( $img, $nt ) = $this->mParser->fetchFileAndTitle( $nt, $options );
+                               } else {
+                                       $img = wfFindFile( $nt );
+                               }
+                       } else {
+                               $img = false;
+                       }
+
+                       $params = $this->getThumbParams( $img );
+                       // $pair[4] is per image handler options
+                       $transformOptions = $params + $pair[4];
+
+                       $thumb = false;
+
+                       if ( !$img ) {
+                               # We're dealing with a non-image, spit out the name and be done with it.
+                               $thumbhtml = "\n\t\t\t" . '<div class="thumb" style="height: ' . ( $this->getThumbPadding() + $this->mHeights ) . 'px;">'
+                                       . htmlspecialchars( $nt->getText() ) . '</div>';
+
+                               if ( $this->mParser instanceof Parser ) {
+                                       $this->mParser->addTrackingCategory( 'broken-file-category' );
+                               }
+                       } elseif ( $this->mHideBadImages && wfIsBadImage( $nt->getDBkey(), $this->getContextTitle() ) ) {
+                               # The image is blacklisted, just show it as a text link.
+                               $thumbhtml = "\n\t\t\t" . '<div class="thumb" style="height: ' . ( $this->getThumbPadding() + $this->mHeights ) . 'px;">' .
+                                       Linker::link(
+                                               $nt,
+                                               htmlspecialchars( $nt->getText() ),
+                                               array(),
+                                               array(),
+                                               array( 'known', 'noclasses' )
+                                       ) .
+                                       '</div>';
+                       } elseif ( !( $thumb = $img->transform( $transformOptions ) ) ) {
+                               # Error generating thumbnail.
+                               $thumbhtml = "\n\t\t\t" . '<div class="thumb" style="height: ' . ( $this->getThumbPadding() + $this->mHeights ) . 'px;">'
+                                       . htmlspecialchars( $img->getLastError() ) . '</div>';
+                       } else {
+                               $vpad = $this->getVPad( $this->mHeights, $thumb->getHeight() );
+
+                               $imageParameters = array(
+                                       'desc-link' => true,
+                                       'desc-query' => $descQuery,
+                                       'alt' => $alt,
+                                       'custom-url-link' => $link
+                               );
+                               # In the absence of both alt text and caption, fall back on providing screen readers with the filename as alt text
+                               if ( $alt == '' && $text == '' ) {
+                                       $imageParameters['alt'] = $nt->getText();
+                               }
+
+                               $this->adjustImageParameters( $thumb, $imageParameters );
+
+                               # Set both fixed width and min-height.
+                               $thumbhtml = "\n\t\t\t" .
+                                       '<div class="thumb" style="width: ' . $this->getThumbDivWidth( $thumb->getWidth() ) . 'px;">'
+                                       # Auto-margin centering for block-level elements. Needed now that we have video
+                                       # handlers since they may emit block-level elements as opposed to simple <img> tags.
+                                       # ref http://css-discuss.incutio.com/?page=CenteringBlockElement
+                                       . '<div style="margin:' . $vpad . 'px auto;">'
+                                       . $thumb->toHtml( $imageParameters ) . '</div></div>';
+
+                               // Call parser transform hook
+                               if ( $this->mParser && $img->getHandler() ) {
+                                       $img->getHandler()->parserTransformHook( $this->mParser, $img );
+                               }
+                       }
+
+                       //TODO
+                       // $linkTarget = Title::newFromText( $wgContLang->getNsText( MWNamespace::getUser() ) . ":{$ut}" );
+                       // $ul = Linker::link( $linkTarget, $ut );
+
+                       if ( $this->mShowBytes ) {
+                               if ( $img ) {
+                                       $fileSize = htmlspecialchars( $lang->formatSize( $img->getSize() ) );
+                               } else {
+                                       $fileSize = $this->msg( 'filemissing' )->escaped();
+                               }
+                               $fileSize = "$fileSize<br />\n";
+                       } else {
+                               $fileSize = '';
+                       }
+
+                       $textlink = $this->mShowFilename ?
+                               Linker::link(
+                                       $nt,
+                                       htmlspecialchars( $lang->truncate( $nt->getText(), $this->mCaptionLength ) ),
+                                       array(),
+                                       array(),
+                                       array( 'known', 'noclasses' )
+                               ) . "<br />\n" :
+                               '';
+
+
+                       $galleryText  = $textlink . $text . $fileSize;
+                       $galleryText = $this->wrapGalleryText( $galleryText, $thumb );
+
+                       # Weird double wrapping (the extra div inside the li) needed due to FF2 bug
+                       # Can be safely removed if FF2 falls completely out of existence
+                       $output .=
+                               "\n\t\t" . '<li class="gallerybox" style="width: ' . $this->getGBWidth( $thumb ) . 'px">'
+                                       . '<div style="width: ' . $this->getGBWidth( $thumb ) . 'px">'
+                                       . $thumbhtml
+                                       . $galleryText
+                                       . "\n\t\t</div></li>";
+               }
+               $output .= "\n</ul>";
+
+               return $output;
+       }
+
+
+       /**
+        * Add the wrapper html around the thumb's caption
+        *
+        * @param String $galleryText The caption
+        * @param MediaTransformOutput|boolean $thumb The thumb this caption is for or false for bad image.
+        */
+       protected function wrapGalleryText( $galleryText, $thumb ) {
+               # ATTENTION: The newline after <div class="gallerytext"> is needed to accommodate htmltidy which
+               # in version 4.8.6 generated crackpot html in its absence, see:
+               # http://bugzilla.wikimedia.org/show_bug.cgi?id=1765 -Ævar
+
+               return "\n\t\t\t" . '<div class="gallerytext">' . "\n"
+                                       . $galleryText
+                                       . "\n\t\t\t</div>";
+       }
+
+       /**
+        * How much padding such the thumb have between image and inner div that
+        * that contains the border. This is both for verical and horizontal
+        * padding. (However, it is cut in half in the vertical direction).
+        * @return int
+        */
+       protected function getThumbPadding() {
+               return 30;
+       }
+
+       /**
+        *
+        * @note GB stands for gallerybox (as in the <li class="gallerybox"> element)
+        *
+        * @return int
+        */
+       protected function getGBPadding() {
+               return 5;
+       }
+
+       /**
+        * Get how much extra space the borders around the image takes up.
+        *
+        * For this mode, it is 2px borders on each side + 2px implied padding on
+        * each side from the stylesheet, giving us 2*2+2*2 = 8.
+        * @return int
+        */
+       protected function getGBBorders() {
+               return 8;
+       }
+
+       /**
+        * Get total padding.
+        *
+        * @return int How many pixels of whitespace surround the thumbnail.
+        */
+       protected function getAllPadding() {
+               return $this->getThumbPadding() + $this->getGBPadding() + $this->getGBBorders();
+       }
+
+       /**
+        * Get vertical padding for a thumbnail
+        *
+        * Generally this is the total height minus how high the thumb is.
+        *
+        * @param int $boxHeight How high we want the box to be.
+        * @param int $thumbHeight How high the thumbnail is.
+        * @return int How many vertical padding to add on each side.
+        */
+       protected function getVPad( $boxHeight, $thumbHeight ) {
+               return ( $this->getThumbPadding() + $boxHeight - $thumbHeight ) / 2;
+       }
+
+       /**
+        * Get the transform parameters for a thumbnail.
+        *
+        * @param File $img The file in question. May be false for invalid image
+        */
+       protected function getThumbParams( $img ) {
+               return array(
+                       'width' => $this->mWidths,
+                       'height' => $this->mHeights
+               );
+       }
+
+       /**
+        * Get the width of the inner div that contains the thumbnail in
+        * question. This is the div with the class of "thumb".
+        *
+        * @param int $thumbWidth The width of the thumbnail.
+        * @return int Width of inner thumb div.
+        */
+       protected function getThumbDivWidth( $thumbWidth ) {
+               return $this->mWidths + $this->getThumbPadding();
+       }
+
+       /**
+        * Width of gallerybox <li>.
+        *
+        * Generally is the width of the image, plus padding on image
+        * plus padding on gallerybox.
+        *
+        * @note Important: parameter will be false if no thumb used.
+        * @param Mixed $thumb MediaTransformObject object or false.
+        * @return int width of gallerybox element
+        */
+       protected function getGBWidth( $thumb ) {
+               return $this->mWidths + $this->getThumbPadding() + $this->getGBPadding();
+       }
+
+       /**
+        * Get a list of modules to include in the page.
+        *
+        * Primarily intended for subclasses.
+        *
+        * @return Array modules to include
+        */
+       protected function getModules() {
+               return array();
+       }
+
+       /**
+        * Adjust the image parameters for a thumbnail.
+        *
+        * Used by a subclass to insert extra high resolution images.
+        * @param MediaTransformOutput $thumb The thumbnail
+        * @param Array $imageParameters Array of options
+        */
+       protected function adjustImageParameters( $thumb, &$imageParameters ) { }
+}
+
+/**
+ * Backwards compatibility. This always uses traditional mode
+ * if called the old way, for extensions that may expect traditional
+ * mode.
+ *
+ * @deprecated 1.22 Use ImageGalleryBase::factory instead.
+ */
+class ImageGallery extends TraditionalImageGallery {
+       function __construct( $mode = 'traditional' ) {
+               wfDeprecated( __METHOD__, '1.22' );
+               parent::__construct( $mode );
+       }
+}
index e3bcb6f..d4e19f6 100644 (file)
@@ -137,6 +137,9 @@ class CliInstaller extends Installer {
        }
 
        public function startStage( $step ) {
+               // Give grep a chance to find the usages: config-install-database, config-install-tables,
+               // config-install-interwiki, config-install-stats, config-install-keys, config-install-sysop,
+               // config-install-mainpage
                $this->showMessage( "config-install-$step" );
        }
 
index 12af01d..5971731 100644 (file)
@@ -11196,7 +11196,7 @@ PHP 5.2.9 이후와 libxml2 2.7.3 이후로 업그레이드하세요. ([//bugs.p
 
 PostgreSQL을 사용하면 유닉스 소켓을 통해 연결되도록 입력란을 비워두세요.',
        'config-db-host-oracle' => '데이터베이스 TNS:',
-       'config-db-host-oracle-help' => 'ì\9c í\9a¨í\95\9c [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm 로컬 연결 이름]을 입력하세요. tnsnames.ora 파일이 이 설치에 보여야 합니다.<br />10g 이후의 클라이언트 라이브러리를 사용하는 경우 [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm 쉬운 연결] 네이밍 메소드도 사용할 수 있습니다.',
+       'config-db-host-oracle-help' => 'ì\98¬ë°\94른 [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm 로컬 연결 이름]을 입력하세요. tnsnames.ora 파일이 이 설치에 보여야 합니다.<br />10g 이후의 클라이언트 라이브러리를 사용하는 경우 [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm 쉬운 연결] 네이밍 메소드도 사용할 수 있습니다.',
        'config-db-wiki-settings' => '이 위키 식별',
        'config-db-name' => '데이터베이스 이름:',
        'config-db-name-help' => '위키를 식별하기 위한 이름을 선택하세요.
@@ -11436,7 +11436,7 @@ MySQL의 UTF-8 모드를 보다 더 효율적이고 유니코드 문자의 전
        'config-license-gfdl' => 'GNU 자유 문서 사용 허가서 1.3 이상',
        'config-license-pd' => '퍼블릭 도메인',
        'config-license-cc-choose' => '다른 크리에이티브 커먼즈 라이선스 선택',
-       'config-license-help' => "많은 공개 위키는 모든 기여를 [http://freedomdefined.org/Definition 자유 라이선스] 하에 넣습니다.
+       'config-license-help' => "많은 공개 위키는 모든 기여를 [http://freedomdefined.org/Definition 자유 라이선스]에 따라 넣습니다.
 이렇게 하면 커뮤니티 소유권의 이해를 할 수 있도록 하고 장기적인 기여를 장려합니다.
 일반적으로 개인 또는 회사 위키에 대해서는 필요하지 않습니다.
 
@@ -11444,7 +11444,7 @@ MySQL의 UTF-8 모드를 보다 더 효율적이고 유니코드 문자의 전
 
 위키백과는 이전에 GNU 자유 문서 사용 허가서를 사용했습니다.
 GFDL은 유효한 라이선스이지만 내용을 이해하기 어렵습니다.
-GFDL í\95\98ì\97\90 ì\82¬ì\9a©ì\9d\84 í\97\88ê°\80í\95\9c ë\82´ì\9a©ì\9d\84 ì\9e¬ì\82¬ì\9a©í\95\98ë\8a\94 ê²\83ë\8f\84 ì\96´ë µì\8aµë\8b\88ë\8b¤.",
+GFDLì\97\90 ë\94°ë\9d¼ ì\82¬ì\9a©ì\9d´ í\97\88ê°\80ë\90\9c ë\82´ì\9a©ì\9d\84 ì\9e¬ì\82¬ì\9a©í\95\98ë\8a\94 ê²\83ë\8f\84 ì\96´ë µì\8aµë\8b\88ë\8b¤.",
        'config-email-settings' => '이메일 설정',
        'config-enable-email' => '발신 이메일 활성화',
        'config-enable-email-help' => '이메일을 작동하려면 [http://www.php.net/manual/en/mail.configuration.php PHP의 메일 설정]을 올바르게 설정해야 합니다.
@@ -12277,6 +12277,7 @@ Dës Datebank-Type ginn ënnerstëtzt: $1.
 Wann Dir op engem gesharte Server sidd, da frot Ären Hosting-Provider fir de passenden Datebank-Driver z'installéieren.
 Wann Dir PHP selwer compiléiert hutt, da reconfiguréiert en mat dem ageschalten Datebank-Client, zum Beispill an deem Dir <code>./configure --with-mysql</code> benotzt.
 Wann Dir PHP vun engem Debian oder Ubuntu Package aus installéiert hutt, da musst Dir och den php5-mysql Modul installéieren.",
+       'config-outdated-sqlite' => "'''Warnung:''' SQLite $1 ass installéiert. Allerdengs brauch MediaWiki SQLite $2 oder méi nei. SQLite ass dofir net disponibel.",
        'config-memory-bad' => "'''Opgepasst:''' De Parameter <code>memory_limit</code> vu PHP ass $1.
 Dat ass wahrscheinlech ze niddreg.
 D'Installatioun kéint net fonctionnéieren.",
@@ -12287,7 +12288,9 @@ D'Installatioun kéint net fonctionnéieren.",
        'config-no-uri' => "'''Feeler:''' Déi aktuell URI konnt net festgestallt ginn.
 Installatioun ofgebrach.",
        'config-using-server' => 'De Servernumm "<nowiki>$1</nowiki>" gëtt benotzt.',
+       'config-using-uri' => 'D\'Server URL  "<nowiki>$1$2</nowiki>" gëtt benotzt.',
        'config-db-type' => 'Datebanktyp:',
+       'config-db-host' => 'Host vun der Datebank:',
        'config-db-host-oracle' => 'Datebank-TNS:',
        'config-db-wiki-settings' => 'Dës Wiki identifizéieren',
        'config-db-name' => 'Numm vun der Datebank:',
@@ -12403,7 +12406,10 @@ Dir kënnt elo déi Astellungen déi nach iwwreg sinn iwwersprangen an d'Wiki el
        'config-install-user' => 'Datebank Benotzer uleeën',
        'config-install-user-alreadyexists' => 'De Benotzer "$1" gëtt et schonn!',
        'config-install-user-create-failed' => 'D\'Opmaache vum Benotzer "$1" huet net fonctionnéiert: $2',
+       'config-install-user-grant-failed' => 'D\'Bäisetze vu Rechter fir de Benotzer "$1" huet net fonctionnéiert: $2',
        'config-install-user-missing' => 'De Benotzer "$1" deen ugi gouf gëtt et net.',
+       'config-install-user-missing-create' => 'De spezifizéierte Benotzer "$1" gëtt et net.
+Klickt d\'Checkbox "Benotzerkont uleeën" wann Dir dee Benotzer uleeë wëllt.',
        'config-install-tables' => 'Tabelle ginn ugeluecht',
        'config-install-interwiki' => 'Standard Interwiki-Tabell gëtt ausgefëllt',
        'config-install-interwiki-list' => 'De Fichier <code>interwiki.list</code> gouf net fonnt.',
@@ -19566,6 +19572,7 @@ $messages['ug-arab'] = array(
  * @author AS
  * @author Ahonc
  * @author Alex Khimich
+ * @author Andriykopanytsia
  * @author Base
  * @author Diemon.ukr
  * @author Ата
@@ -19700,6 +19707,8 @@ MediaWiki вимагає підтримку UTF-8 для коректної ро
        'config-mod-security' => "'''Увага''': на Вашому веб-сервері увімкнено [http://modsecurity.org/ mod_security]. У разі неправильних налаштувать, він може викликати проблеми MediaWiki або іншого ПЗ, яке дозволяє користувачам надсилати довільний вміст.
 Зверніться до [http://modsecurity.org/documentation/ документації mod_security] або підтримки Вашого хостера, якщо під час роботи виникають незрозумілі помилки.",
        'config-diff3-bad' => 'GNU diff3 не знайдено.',
+       'config-git' => 'Знайшов програму управління версіями Git: <code>$1</code>.',
+       'config-git-bad' => 'Програму управління версіями Git  не знайдено.',
        'config-imagemagick' => 'Виявлено ImageMagick: <code>$1</code>.
 Буде ввімкнуто відображення мініатюр, якщо ви дозволите завантаження файлів.',
        'config-gd' => 'Виявлено вбудовано графічну бібліотеку GD.
@@ -19720,7 +19729,7 @@ MediaWiki вимагає підтримку UTF-8 для коректної ро
        'config-using531' => 'MediaWiki не можна використовувати разом з PHP $1 через помилку з параметрами-посиланнями <code>__call()</code>.
 Оновіть PHP до версії 5.3.2 і вище або відкотіть до PHP 5.3.0 щоб уникнути цієї проблеми.
 Встановлення скасовано.',
-       'config-suhosin-max-value-length' => 'Suhosin Ð²Ñ\81Ñ\82ановлено Ñ\96 Ð¾Ð±Ð¼ÐµÐ¶Ñ\83Ñ\94 Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñ\83 Ð¿Ð°Ñ\80амеÑ\82Ñ\80а GET Ð´Ð¾ $1 Ð±Ð°Ð¹Ñ\82Ñ\96в. Ð\9aомпоненÑ\82 MediaWiki ResourceLoader Ð±Ñ\83де Ð¾Ð±Ñ\85одиÑ\82и Ñ\86е Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ\8f, Ð¾Ð´Ð½Ð°Ðº Ñ\86е Ð·Ð¼ÐµÐ½Ñ\88иÑ\82Ñ\8c Ð¿Ñ\80одÑ\83кÑ\82ивнÑ\96Ñ\81Ñ\82Ñ\8c. Ð¯ÐºÑ\89о Ñ\86е Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾, Ð\92ам Ð²Ð°Ñ\80Ñ\82о Ð²Ñ\81Ñ\82ановиÑ\82и Ð·Ð½Ð°Ñ\87еннÑ\8f <code>suhosin.get.max_value_length</code> 1024 Ñ\96 Ð±Ñ\96лÑ\8cÑ\88е Ñ\83 <code>php.ini</code> Ñ\96 Ð²Ñ\81Ñ\82ановиÑ\82и Ñ\82аке Ð¶ Ð·Ð½Ð°Ñ\87еннÑ\8f <code>$wgResourceLoaderMaxQueryLength</code> Ñ\83 LocalSettings.php .', # Fuzzy
+       'config-suhosin-max-value-length' => 'Suhosin Ð²Ñ\81Ñ\82ановлено Ñ\96 Ð¾Ð±Ð¼ÐµÐ¶Ñ\83Ñ\94 Ð¿Ð°Ñ\80амеÑ\82Ñ\80а GET  <code>length</code> Ð´Ð¾ $1 Ð±Ð°Ð¹Ñ\82а. Ð\9aомпоненÑ\82 MediaWiki ResourceLoader Ð±Ñ\83де Ð¾Ð±Ñ\85одиÑ\82и Ñ\86е Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ\8f, Ð¾Ð´Ð½Ð°Ðº Ñ\86е Ð·Ð¼ÐµÐ½Ñ\88иÑ\82Ñ\8c Ð¿Ñ\80одÑ\83кÑ\82ивнÑ\96Ñ\81Ñ\82Ñ\8c. Ð¯ÐºÑ\89о Ñ\86е Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾, Ð\92ам Ð²Ð°Ñ\80Ñ\82о Ð²Ñ\81Ñ\82ановиÑ\82и Ð·Ð½Ð°Ñ\87еннÑ\8f <code>suhosin.get.max_value_length</code> Ñ\8fк 1024 Ñ\96 Ð±Ñ\96лÑ\8cÑ\88е Ñ\83 <code>php.ini</code> Ñ\96 Ð²Ñ\81Ñ\82ановиÑ\82и Ñ\82аке Ð¶ Ð·Ð½Ð°Ñ\87еннÑ\8f <code>$wgResourceLoaderMaxQueryLength</code> Ñ\83 LocalSettings.php .',
        'config-db-type' => 'Тип бази даних:',
        'config-db-host' => 'Хост бази даних:',
        'config-db-host-help' => 'Якщо сервер бази даних знаходиться на іншому сервері, введіть тут ім\'я хосту і IP адресу.
@@ -19809,7 +19818,7 @@ $1
        'config-missing-db-host' => 'Ви повинні ввести значення параметру «Хост бази даних»',
        'config-missing-db-server-oracle' => 'Ви повинні ввести значення параметру «TNS бази даних»',
        'config-invalid-db-server-oracle' => 'Неприпустиме TNS бази даних "$1".
-Використовуйте тільки ASCII букви (a-z, A-Z), цифри (0-9), знаки підкреслення (_) і крапки (.).',
+Використовуйте "TNS Name" або рядок "Easy Connect"  ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Методи найменування Oracle])',
        'config-invalid-db-name' => 'Неприпустима назва бази даних "$1".
 Використовуйте тільки ASCII букви (a-z, A-Z), цифри (0-9), знаки підкреслення (_) і дефіси (-).',
        'config-invalid-db-prefix' => 'Неприпустимий префікс бази даних "$1".
@@ -19884,6 +19893,12 @@ chmod a+w $3</pre>',
 
 Якщо Ваша інсталяція MySQL підтримує InnoDB, дуже рекомендується вибрати цей двигун.
 Якщо Ваша інсталяція MySQL не підтримує InnoDB, можливо настав час її оновити.",
+       'config-mysql-only-myisam-dep' => '"\'Зауваження:"\' MyISAM є єдиним механізмом для зберігання MySQL, який не рекомендується для використання з MediaWiki, оскільки:
+* слабо підтримує паралелізм через блокування таблиць
+* більш схильний до пошкоджень, ніж інші двигуни
+* код MediaWiki не завжди розглядає MyISAM, як повинен
+
+Твоє встановлення MySQL не підтримує InnoDB, можливо, потрібно оновити.',
        'config-mysql-engine-help' => "'''InnoDB''' є завжди кращим вибором, оскільки краще підтримує паралельний доступ.
 
 '''MyISAM''' може бути швидшим для одного користувача або в інсталяціях read-only.
@@ -19937,7 +19952,7 @@ chmod a+w $3</pre>',
        'config-optional-continue' => 'Запитуйте ще.',
        'config-optional-skip' => 'Це вже втомлює, просто встановити вікі.',
        'config-profile' => 'Профіль прав користувача:',
-       'config-profile-wiki' => 'ТÑ\80адиÑ\86Ñ\96йна Ð²Ñ\96кÑ\96', # Fuzzy
+       'config-profile-wiki' => 'Ð\92Ñ\96дкÑ\80иÑ\82а Ð²Ñ\96кÑ\96',
        'config-profile-no-anon' => 'Необхідно створити обліковий запис',
        'config-profile-fishbowl' => 'Тільки для авторизованих редакторів',
        'config-profile-private' => 'Приватна вікі',
@@ -19947,12 +19962,12 @@ chmod a+w $3</pre>',
 Одначе, MediaWiki може бути корисна по-різному, й інколи важко переконати у вигідності відкритої вікі-роботи.
 Тож у Вас є вибір.
 
-'''{{int:config-profile-wiki}}''' дозволяє редагувати будь-кому, навіть без входження в систему.
+Модель '''{{int:config-profile-wiki}}''' дозволяє редагувати будь-кому, навіть без входження в систему.
 Вікі з вимогою \"'''{{int:config-profile-no-anon}}'''\" дає певний облік, але може відвернути випадкових дописувачів.
 Спосіб \"'''{{int:config-profile-fishbowl}}'''\" дозволяє редагувати підтвердженим користувачам, а переглядати сторінки і історію можуть усі.
 '''{{int:config-profile-private}}''' дозволяє переглядати сторінки і редагувати лише підтвердженим користувачам.
 
-Детальніші конфігурації прав користувачів доступні після встановлення, див. [//www.mediawiki.org/wiki/Manual:User_rights відповідний розділ посібника].", # Fuzzy
+Детальніші конфігурації прав користувачів доступні після встановлення, див. [//www.mediawiki.org/wiki/Manual:User_rights відповідний розділ посібника].",
        'config-license' => 'Авторські права і ліцензія:',
        'config-license-none' => 'Без ліцензії у нижньому колонтитулі',
        'config-license-cc-by-sa' => 'Creative Commons Attribution Share Alike',
@@ -19998,9 +20013,12 @@ GFDL — допустима ліцензія, але у ній важко роз
 В ідеалі, вона не має бути доступною через інтернет.',
        'config-logo' => 'URL логотипу:',
        'config-logo-help' => 'Стандартна схема оформлення MediaWiki містить вільне для логотипу місце над бічною панеллю розміром 135x160 пікселів. 
+
 Завантажте зображення відповідного розміру і введіть тут його URL.
 
-Якщо Вам не потрібен логотип, залиште це поле пустим.', # Fuzzy
+Ви можете використати <code>$wgStylePath</code> або <code>$wgScriptPath</code>, якщо ваш логотип пов\'язаний з цими шляхами.
+
+Якщо Вам не потрібен логотип, залиште це поле пустим.',
        'config-instantcommons' => 'Увімкнути Instant Commons',
        'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] це функція, що дозволяє вікі використовувати зображення, звуки та інші медіа, розміщені на [//commons.wikimedia.org/ Вікісховищі].
 Для цього MediaWiki необхідний доступ до інтернету.
@@ -20034,7 +20052,7 @@ GFDL — допустима ліцензія, але у ній важко роз
        'config-install-alreadydone' => "'''Увага:''' Здається, Ви вже встановлювали MediaWiki і зараз намагаєтесь встановити її знову.
 Будь ласка, перейдіть на наступну сторінку.",
        'config-install-begin' => 'Натискаючи "{{int:config-continue}}", Ви розпочинаєте встановлення MediaWiki.
-Якщо Ви все ще хочете внести зміни, натисніть "Назад".', # Fuzzy
+Якщо Ви все ще хочете внести зміни, натисніть "{{int:config-back}}".',
        'config-install-step-done' => 'виконано',
        'config-install-step-failed' => 'не вдалося',
        'config-install-extensions' => 'У тому числі розширення',
@@ -20092,6 +20110,9 @@ $3
        'config-download-localsettings' => 'Завантажити <code>LocalSettings.php</code>',
        'config-help' => 'допомога',
        'config-nofile' => 'Файл "$1" не знайдено. Його видалено?',
+       'config-extension-link' => 'Чи знаєте ви, що ваше вікі підтримує [//www.mediawiki.org/wiki/Manual:Extensions розширення]?
+
+Ви можете переглядати [//www.mediawiki.org/wiki/Category:Extensions_by_category розширення по категорії] або в [//www.mediawiki.org/wiki/Extension_Matrix матрицю розширень] щоб побачити повний список розширень.',
        'mainpagetext' => 'Програмне забезпечення «MediaWiki» успішно встановлене.',
        'mainpagedocfooter' => 'Інформацію про роботу з цією вікі можна знайти в [//meta.wikimedia.org/wiki/Help:Contents посібнику користувача].
 
index 10c7b96..da84316 100644 (file)
@@ -540,6 +540,11 @@ class WebInstaller extends Installer {
                $s .= "</ul><br/><ul>\n";
                $s .= $this->getPageListItem( 'Restart', true, $currentPageName );
                $s .= "</ul></div>\n"; // end list pane
+               // Give grep a chance to find the usages:
+               // 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
                $s .= Html::element( 'h2', array(),
                        wfMessage( 'config-page-' . strtolower( $currentPageName ) )->text() );
 
@@ -557,6 +562,11 @@ class WebInstaller extends Installer {
         */
        private function getPageListItem( $pageName, $enabled, $currentPageName ) {
                $s = "<li class=\"config-page-list-item\">";
+               // Give grep a chance to find the usages:
+               // 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
                $name = wfMessage( 'config-page-' . strtolower( $pageName ) )->text();
 
                if ( $enabled ) {
index 87c4a8f..a017894 100644 (file)
@@ -1219,6 +1219,9 @@ class WebInstaller_Install extends WebInstallerPage {
        }
 
        public function startStage( $step ) {
+               // Give grep a chance to find the usages: config-install-database, config-install-tables,
+               // config-install-interwiki, config-install-stats, config-install-keys, config-install-sysop,
+               // config-install-mainpage
                $this->addHTML( "<li>" . wfMessage( "config-install-$step" )->escaped() . wfMessage( 'ellipsis' )->escaped() );
                if ( $step == 'extension-tables' ) {
                        $this->startLiveBox();
index 0be03b3..918d9b3 100644 (file)
@@ -142,6 +142,8 @@ class DoubleRedirectJob extends Job {
                $oldUser = $wgUser;
                $wgUser = $user;
                $article = WikiPage::factory( $this->title );
+               // Give grep a chance to find the usages:
+               // double-redirect-fixed-move, double-redirect-fixed-maintenance
                $reason = wfMessage( 'double-redirect-fixed-' . $this->reason,
                        $this->redirTitle->getPrefixedText(), $newTitle->getPrefixedText()
                )->inContentLanguage()->text();
index 8632399..fde38bb 100644 (file)
@@ -298,6 +298,8 @@ class ThumbnailImage extends MediaTransformOutput {
         *     valign       vertical-align property, if the output is an inline element
         *     img-class    Class applied to the \<img\> tag, if there is such a tag
         *     desc-query   String, description link query params
+        *     override-width     Override width attribute. Should generally not set
+        *     override-height    Override height attribute. Should generally not set
         *     custom-url-link    Custom URL to link to
         *     custom-title-link  Custom Title object to link to
         *     custom target-link Value of the target attribute, for custom-target-link
@@ -359,6 +361,12 @@ class ThumbnailImage extends MediaTransformOutput {
                if ( !empty( $options['img-class'] ) ) {
                        $attribs['class'] = $options['img-class'];
                }
+               if ( isset( $options['override-height'] ) ) {
+                       $attribs['height'] = $options['override-height'];
+               }
+               if ( isset( $options['override-width'] ) ) {
+                       $attribs['width'] = $options['override-width'];
+               }
 
                // Additional densities for responsive images, if specified.
                if ( !empty( $this->responsiveUrls ) ) {
index 8fdf407..ba5c8de 100644 (file)
@@ -2909,7 +2909,7 @@ class Parser {
                                $value = $this->mTitle->canTalk() ? wfUrlencode( $this->mTitle->getTalkNsText() ) : '';
                                break;
                        case 'subjectspace':
-                               $value = $this->mTitle->getSubjectNsText();
+                               $value = str_replace( '_', ' ', $this->mTitle->getSubjectNsText() );
                                break;
                        case 'subjectspacee':
                                $value = ( wfUrlencode( $this->mTitle->getSubjectNsText() ) );
@@ -5047,7 +5047,19 @@ class Parser {
         */
        function renderImageGallery( $text, $params ) {
                wfProfileIn( __METHOD__ );
-               $ig = new ImageGallery();
+
+               $mode = false;
+               if ( isset( $params['mode'] ) ) {
+                       $mode = $params['mode'];
+               }
+
+               try {
+                       $ig = ImageGalleryBase::factory( $mode );
+               } catch ( MWException $e ) {
+                       // If invalid type set, fallback to default.
+                       $ig = ImageGalleryBase::factory( false );
+               }
+
                $ig->setContextTitle( $this->mTitle );
                $ig->setShowBytes( false );
                $ig->setShowFilename( false );
@@ -5075,6 +5087,7 @@ class Parser {
                if ( isset( $params['heights'] ) ) {
                        $ig->setHeights( $params['heights'] );
                }
+               $ig->setAdditionalOptions( $params );
 
                wfRunHooks( 'BeforeParserrenderImageGallery', array( &$this, &$ig ) );
 
index bfe7dda..b691c75 100644 (file)
@@ -95,6 +95,7 @@ class SearchEngine {
        public function supports( $feature ) {
                switch ( $feature ) {
                case 'list-redirects':
+               case 'search-update':
                        return true;
                case 'title-suffix-filter':
                default:
@@ -557,6 +558,17 @@ class SearchEngine {
        public function getTextFromContent( Title $t, Content $c = null ) {
                return $c ? $c->getTextForSearchIndex() : '';
        }
+
+       /**
+        * If an implementation of SearchEngine handles all of its own text processing
+        * in getTextFromContent() and doesn't require SearchUpdate::updateText()'s
+        * rather silly handling, it should return true here instead.
+        *
+        * @return bool
+        */
+       public function textAlreadyUpdatedForIndex() {
+               return false;
+       }
 }
 
 /**
index 7146917..22e4724 100644 (file)
@@ -89,27 +89,33 @@ class SearchUpdate implements DeferrableUpdate {
 
                wfProfileIn( __METHOD__ );
 
-               $search = SearchEngine::create();
-               $normalTitle = $search->normalizeText(
-                       Title::indexTitle( $this->title->getNamespace(), $this->title->getText() ) );
+               $page = WikiPage::newFromId( $this->id );
+               $indexTitle = Title::indexTitle( $this->title->getNamespace(), $this->title->getText() );
 
-               if ( WikiPage::newFromId( $this->id ) === null ) {
-                       $search->delete( $this->id, $normalTitle );
-                       wfProfileOut( __METHOD__ );
-                       return;
-               } elseif ( $this->content === false ) {
-                       $search->updateTitle( $this->id, $normalTitle );
-                       wfProfileOut( __METHOD__ );
-                       return;
-               }
+               foreach ( SearchEngine::getSearchTypes() as $type ) {
+                       $search = SearchEngine::create( $type );
+                       if ( !$search->supports( 'search-update' ) ) {
+                               continue;
+                       }
 
-               $text = $search->getTextFromContent( $this->title, $this->content );
-               if( wfRunHooks( 'SearchUpdate', array( $this->id, $this->title, &$text, $this->content ) ) ) {
-                       $text = self::updateText( $text );
-               }
+                       $normalTitle = $search->normalizeText( $indexTitle );
 
-               # Perform the actual update
-               $search->update( $this->id, $normalTitle, $search->normalizeText( $text ) );
+                       if ( $page === null ) {
+                               $search->delete( $this->id, $normalTitle );
+                               continue;
+                       } elseif ( $this->content === false ) {
+                               $search->updateTitle( $this->id, $normalTitle );
+                               continue;
+                       }
+
+                       $text = $search->getTextFromContent( $this->title, $this->content );
+                       if ( !$search->textAlreadyUpdatedForIndex() ) {
+                               $text = self::updateText( $text );
+                       }
+
+                       # Perform the actual update
+                       $search->update( $this->id, $normalTitle, $search->normalizeText( $text ) );
+               }
 
                wfProfileOut( __METHOD__ );
        }
index f79fdd7..5f4c1d2 100644 (file)
@@ -62,6 +62,7 @@ class SpecialJavaScriptTest extends SpecialPage {
                        $out->addHtml( $summary );
                } elseif ( isset( self::$frameworks[$framework] ) ) {
                        // Matched! Display proper title and initialize the framework
+                       // Give grep a chance to find the usages: javascripttest-qunit-name
                        $out->setPageTitle( $this->msg(
                                'javascripttest-title',
                                $this->msg( "javascripttest-$framework-name" )->plain()
@@ -92,6 +93,7 @@ class SpecialJavaScriptTest extends SpecialPage {
        private function getFrameworkListHtml() {
                $list = '<ul>';
                foreach ( self::$frameworks as $framework => $initFn ) {
+                       // Give grep a chance to find the usages: javascripttest-qunit-name
                        $list .= Html::rawElement(
                                'li',
                                array(),
index 8e92e4a..fa9b2d3 100644 (file)
@@ -117,7 +117,8 @@ class NewFilesPager extends ReverseChronologicalPager {
 
        function getStartBody() {
                if ( !$this->gallery ) {
-                       $this->gallery = new ImageGallery();
+                       $this->gallery = ImageGalleryBase::factory();
+                       $this->gallery->setContext( $this->getContext() );
                }
 
                return '';
index 78931a0..90c0782 100644 (file)
@@ -123,6 +123,8 @@ class SpecialProtectedpages extends SpecialPage {
 
                $description_items = array();
 
+               // Give grep a chance to find the usages:
+               // restriction-level-sysop, restriction-level-autoconfirmed
                $protType = $this->msg( 'restriction-level-' . $row->pr_level )->escaped();
 
                $description_items[] = $protType;
@@ -308,6 +310,8 @@ class SpecialProtectedpages extends SpecialPage {
 
                // First pass to load the log names
                foreach ( Title::getFilteredRestrictionTypes( true ) as $type ) {
+                       // Give grep a chance to find the usages:
+                       // restriction-edit, restriction-move, restriction-create, restriction-upload
                        $text = $this->msg( "restriction-$type" )->text();
                        $m[$text] = $type;
                }
index 21bdf02..540d0d0 100644 (file)
@@ -101,6 +101,8 @@ class SpecialProtectedtitles extends SpecialPage {
 
                $link = Linker::link( $title );
                $description_items = array();
+               // Give grep a chance to find the usages:
+               // restriction-level-sysop, restriction-level-autoconfirmed
                $protType = $this->msg( 'restriction-level-' . $row->pt_create_perm )->escaped();
                $description_items[] = $protType;
                $lang = $this->getLanguage();
@@ -183,6 +185,8 @@ class SpecialProtectedtitles extends SpecialPage {
                // First pass to load the log names
                foreach ( $wgRestrictionLevels as $type ) {
                        if ( $type != '' && $type != '*' ) {
+                               // Give grep a chance to find the usages:
+                               // restriction-level-sysop, restriction-level-autoconfirmed
                                $text = $this->msg( "restriction-level-$type" )->text();
                                $m[$text] = $type;
                        }
index 4634c4f..8609c74 100644 (file)
@@ -101,7 +101,7 @@ class SpecialSearch extends SpecialPage {
 
                $this->load();
 
-               $this->searchEngineType = $request->getVal( 'backend' );
+               $this->searchEngineType = $request->getVal( 'srbackend' );
 
                if ( $request->getVal( 'fulltext' )
                        || !is_null( $request->getVal( 'offset' ) )
index efde5cb..3a057ea 100644 (file)
@@ -682,7 +682,8 @@ class SpecialUpload extends SpecialPage {
                        return '';
                }
 
-               $gallery = new ImageGallery;
+               $gallery = ImageGalleryBase::factory();
+               $gallery->setContext( $this->getContext() );
                $gallery->setShowBytes( false );
                foreach ( $dupes as $file ) {
                        $gallery->add( $file->getTitle() );
index 77f2063..26923f7 100644 (file)
@@ -598,6 +598,7 @@ class UserrightsPage extends SpecialPage {
                        if ( $column === array() ) {
                                continue;
                        }
+                       // Give grep a chance to find the usages: userrights-changeable-col, userrights-unchangeable-col
                        $ret .= Xml::element( 'th', null, $this->msg( 'userrights-' . $name . '-col', count( $column ) )->text() );
                }
                $ret .= "</tr>\n<tr>\n";
index 262d86f..2523814 100644 (file)
@@ -2089,6 +2089,9 @@ class Language {
                $segments = array();
 
                foreach ( $intervals as $intervalName => $intervalValue ) {
+                       // Give grep a chance to find the usages:
+                       // duration-centuries, duration-decades, duration-years, duration-days,
+                       // duration-hours, duration-minutes, duration-seconds
                        $message = wfMessage( 'duration-' . $intervalName )->numParams( $intervalValue );
                        $segments[] = $message->inLanguage( $this )->escaped();
                }
index a02fc8a..11d36a8 100644 (file)
@@ -246,7 +246,7 @@ class LanguageConverter {
         * @return Mixed: variant if one found, false otherwise.
         */
        protected function getUserVariant() {
-               global $wgUser;
+               global $wgUser, $wgContLang;
 
                // memoizing this function wreaks havoc on parserTest.php
                /*
@@ -259,7 +259,11 @@ class LanguageConverter {
                // Don't call this on stub objects because that causes infinite
                // recursion during initialisation
                if ( $wgUser->isLoggedIn() ) {
-                       $ret = $wgUser->getOption( 'variant' );
+                       if ( $this->mMainLanguageCode == $wgContLang->getCode() ) {
+                               $ret = $wgUser->getOption( 'variant' );
+                       } else {
+                               $ret = $wgUser->getOption( 'variant-' . $this->mMainLanguageCode );
+                       }
                } else {
                        // figure out user lang without constructing wgLang to avoid
                        // infinite recursion
index c307e30..111bcf5 100644 (file)
@@ -1248,9 +1248,9 @@ $2
 'editconflict' => 'تضارب في التحرير: $1',
 'explainconflict' => "لقد عدل شخص آخر هذه الصفحة بعد أن بدأت أنت بتحريرها.
 صندوق النصوص العلوي يحتوي على النص الموجود حاليا في الصفحة.
-والتغييرات التي قمت أنت بها موجودة في الصندوق في أسفل الصفحة.
\8aجب Ø£Ù\86 ØªÙ\82Ù\88Ù\85 Ø¨Ø¯Ù\85ج ØªØºÙ\8aÙ\8aراتÙ\83 في النص الموجود حاليا.
-'''Ù\81Ù\82Ø·''' Ù\85ا Ù\87Ù\88 Ù\85Ù\88جÙ\88د Ù\81Ù\8a Ø§Ù\84صÙ\86دÙ\88Ù\82 Ø§Ù\84عÙ\84Ù\88Ù\8a Ù\87Ù\88 Ù\85ا Ø³Ù\8aتÙ\85 Ø­Ù\81ظÙ\87 Ø¹Ù\86د Ø§Ù\84ضغط Ø¹Ù\84Ù\89 Ø²Ø± \"Ø­Ù\81ظ Ø§Ù\84صÙ\81حة\".",
+التعديلات التي أجريتها أنت معروضة في الصندوق أسفله.
\88Ù\8aÙ\84زÙ\85 Ø¯Ù\85جÙ\87ا في النص الموجود حاليا.
+'''Ù\84Ù\86 Ù\8aØ­Ù\81ظ''' Ø¨Ø¹Ø¯ Ø§Ù\84ضغط Ø¹Ù\84Ù\89 Ø²Ø± \"احÙ\81ظ Ø§Ù\84صÙ\81حة\" '''Ø¥Ù\84ا''' Ù\85ا Ù\87Ù\88 Ù\85Ù\88جÙ\88د Ù\81Ù\8a Ø§Ù\84صÙ\86دÙ\88Ù\82 Ø§Ù\84عÙ\84Ù\88Ù\8a.",
 'yourtext' => 'نصك',
 'storedversion' => 'النسخة المخزنة',
 'nonunicodebrowser' => "'''تحذير: متصفحك لا يتوافق مع الترميز الموحد.
index f42d931..1b14cda 100644 (file)
@@ -487,10 +487,9 @@ L'alministrador que lu bloquió dio esti motivu: «$3».",
 'virus-unknownscanner' => 'antivirus desconocíu:',
 
 # Login and logout pages
-'logouttext' => "'''Agora tas desconeutáu.'''
+'logouttext' => "'''Zarró la sesión.'''
 
-Pues siguir usando {{SITENAME}} de forma anónima, o pues <span class='plainlinks'>[$1 volver entrar]</span> como'l mesmu o como otru usuariu.
-Ten en cuenta que dalgunes páxines puen siguir apaeciendo como si tovía tuvieres coneutáu, hasta que llimpies la caché del restolador.",
+Tenga en cuenta que dalgunes páxines puen siguir apaeciendo como si inda tuviera la sesión aniciada, mentanto nun llimpie la caché del navegador.",
 'welcomeuser' => '¡Bienllegáu, $1!',
 'welcomecreation-msg' => "Creóse la to cuenta.
 Nun t'escaezas de camudar les tos [[Special:Preferences|preferencies de {{SITENAME}}]].",
@@ -537,7 +536,7 @@ Nun t'escaezas de camudar les tos [[Special:Preferences|preferencies de {{SITENA
 'createacct-emailoptional' => 'Direición de corréu electrónicu (opcional)',
 'createacct-email-ph' => 'Escriba la so direición de corréu electrónicu',
 'createacct-another-email-ph' => 'Escriba la direición de corréu electrónicu',
-'createaccountmail' => 'Usar una contraseña al debalu temporal y unviala a la direición de corréu electrónicu conseñada más abaxo',
+'createaccountmail' => 'Usar una contraseña al debalu temporal y unviala a la direición de corréu electrónicu conseñada',
 'createacct-realname' => 'Nome real (opcional)',
 'createaccountreason' => 'Motivu:',
 'createacct-reason' => 'Motivu',
@@ -627,6 +626,8 @@ Por favor espera enantes d'intentalo otra vuelta.",
 'login-abort-generic' => 'Falló la identificación - Encaboxao',
 'loginlanguagelabel' => 'Llingua: $1',
 'suspicious-userlogout' => "La to solicitú de zarrar sesión refugose porque paez qu'unvióla un restolador frañíu o un proxy de caché.",
+'createacct-another-realname-tip' => "El nome real ye opcional.
+Si decide conseñalu, va usase p'atribuir el trabayu al usuariu.",
 
 # Email sending
 'php-mail-error-unknown' => 'Fallu desconocíu na función mail() de PHP.',
@@ -1353,10 +1354,10 @@ Esta información sedrá pública.",
 'userrights-no-interwiki' => "Nun tienes permisu pa editar los derechos d'usuariu n'otres wikis.",
 'userrights-nodatabase' => 'La base de datos $1 nun esiste o nun ye llocal.',
 'userrights-nologin' => "Tien d'[[Special:UserLogin|aniciar sesión]] con una cuenta d'alministrador pa dar permisos d'usuariu.",
-'userrights-notallowed' => "La to cuenta nun tien permisu p'amestar o desaniciar permisos d'usuariu.",
+'userrights-notallowed' => "Nun tien autorización p'amestar o desaniciar permisos d'usuariu.",
 'userrights-changeable-col' => 'Grupos que pues camudar',
 'userrights-unchangeable-col' => 'Grupos que nun pues camudar',
-'userrights-conflict' => "¡Hai un conflictu de permisos d'usuariu! Por favor, vuelva a aplicar los cambios.",
+'userrights-conflict' => "¡Conflictu de cambiu de permisos d'usuariu! Por favor, revise y confirme los cambios.",
 'userrights-removed-self' => 'Retiró correutamente los sos propios drechos. Poro, yá nun tendrá accesu a esta páxina.',
 
 # Groups
@@ -2997,13 +2998,13 @@ Probablemente tea causao por un enllaz a un sitiu esternu de la llista prieta.',
 'pageinfo-length' => 'Llonxitú de la páxina (en bytes)',
 'pageinfo-article-id' => 'ID de la páxina',
 'pageinfo-language' => 'Llingua del conteníu de la páxina',
-'pageinfo-robot-policy' => 'Estáu del motor de busca',
-'pageinfo-robot-index' => 'Pue ser índiz',
-'pageinfo-robot-noindex' => 'Nun pue ser índiz',
+'pageinfo-robot-policy' => 'Indexación por robots',
+'pageinfo-robot-index' => 'Permitío',
+'pageinfo-robot-noindex' => 'Torgao',
 'pageinfo-views' => 'Númberu de visites',
 'pageinfo-watchers' => 'Númberu de vixilantes de la páxina',
 'pageinfo-few-watchers' => 'Menos de $1 {{PLURAL:$1|vixilante|vixilantes}}',
-'pageinfo-redirects-name' => 'Redireiciones a esta páxina',
+'pageinfo-redirects-name' => 'Númberu de redireiciones a esta páxina',
 'pageinfo-subpages-name' => "Subpáxines d'esta páxina",
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redireición|redireiciones}}; $3 {{PLURAL:$3|non-redireición|non-redireiciones}})',
 'pageinfo-firstuser' => 'Creador de la páxina',
@@ -3978,4 +3979,19 @@ D\'otra miente, pues usar el formulariu cenciellu d\'abaxo. El to comentariu apa
 # Image rotation
 'rotate-comment' => 'Imaxe xirada $1 {{PLURAL:$1|grau|graos}} en sentíu horariu',
 
+# Limit report
+'limitreport-title' => 'Datos de perfiláu del analizador:',
+'limitreport-cputime' => 'Usu de tiempu de CPU',
+'limitreport-cputime-value' => '$1 {{PLURAL: $1|segundu|segundos}}',
+'limitreport-walltime' => 'Usu de tiempu real',
+'limitreport-walltime-value' => '$1 {{PLURAL: $1|segundu|segundos}}',
+'limitreport-ppvisitednodes' => 'Cuenta de noyos visitaos pol preprocesador',
+'limitreport-ppgeneratednodes' => 'Cuenta de noyos xeneraos pol preprocesador',
+'limitreport-postexpandincludesize' => "Tamañu d'inclusión de post-espansión",
+'limitreport-postexpandincludesize-value' => '$1/$2 bytes',
+'limitreport-templateargumentsize' => 'Tamañu del argumentu de plantía',
+'limitreport-templateargumentsize-value' => '$1/$2 bytes',
+'limitreport-expansiondepth' => "Máxima fondura d'espansión",
+'limitreport-expensivefunctioncount' => "Cuenta de funciones d'analís costoses",
+
 );
index dce2230..ef9f680 100644 (file)
@@ -650,6 +650,8 @@ Pakilaog sana tabi nin sarong tugmadong koreo o pabayae na mayong laman an surat
 'login-abort-generic' => 'An saimong paglaog dae nakadagos - Pinundo',
 'loginlanguagelabel' => 'Lengguwahe: $1',
 'suspicious-userlogout' => 'An hinahagad mong magluwas pinagpundo nin huli ta ini gayod pinagpadara sa paagi nin sarong pasang kilyaw o proksing hilom.',
+'createacct-another-realname-tip' => 'An totoong pangaran opsyonal.
+Kun gustuhon mong itao ini, ini paggagamiton sa pagtatao nin pagkakabistohan kan paragamit para sa saindang mga kaggibohan.',
 
 # Email sending
 'php-mail-error-unknown' => 'Bakong bantog na kasalaan sa PHP mail() function.',
@@ -3954,4 +3956,17 @@ Kun bako man, ika makakagamit nin sayon na porma sa ibaba. An saimong komento id
 # Image rotation
 'rotate-comment' => 'An imahe pinagbirik ni $1 {{PLURAL:$1|grado|mga grado}} hitsado',
 
+# Limit report
+'limitreport-title' => 'Datos panungdanan kan parabangay:',
+'limitreport-cputime' => 'Oras na ginagamit kan CPU',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|segundo|segundos}}',
+'limitreport-walltime' => 'Tunay na oras na ginagamit',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|segundo|segundos}}',
+'limitreport-ppvisitednodes' => 'Bilang kan tagapagsumpay sa pangenot na tagapagprosesong pinagbisita',
+'limitreport-ppgeneratednodes' => 'Bilang kan tagapagsumpay sa pangenot na tagapagprosesong pinagpuyos',
+'limitreport-postexpandincludesize' => 'Bigak kan paskil kabali an sukol',
+'limitreport-postexpandincludesize-value' => '$1/$2 mga bayta',
+'limitreport-templateargumentsize' => 'Sukol kan argumentong panguyog',
+'limitreport-templateargumentsize-value' => '$1/$2 mga bayta',
+
 );
index d5c7db9..2315c2b 100644 (file)
@@ -583,9 +583,9 @@ $1',
 
 # Main script and global functions
 'nosuchaction' => 'Няма такога дзеяньня',
-'nosuchactiontext' => 'Дзеяньне, пазначанае праз URL, зьяўляецца няслушным.
-Магчыма Вы ўвялі няслушны URL, ці перайшлі па няслушнай спасылцы.
\93Ñ\8dÑ\82а Ð¼Ð¾Ð¶Ð° Ð±Ñ\8bÑ\86Ñ\8c Ñ\96 Ð¿Ð°Ð¼Ñ\8bлкай Ñ\83 Ð¿Ñ\80агÑ\80амнÑ\8bм Ð·Ð°Ð±ÐµÑ\81Ñ\8cпÑ\8fÑ\87Ñ\8dньні {{GRAMMAR:родны|{{SITENAME}}}}.',
+'nosuchactiontext' => 'Дзеяньне, пазначанае ў URL, зьяўляецца няслушным.
+Магчыма, вы ўвялі няслушны URL або перайшлі па няслушнай спасылцы.
\93Ñ\8dÑ\82а Ð¼Ð¾Ð¶Ð° Ð±Ñ\8bÑ\86Ñ\8c Ñ\96 Ð¿Ð°Ð¼Ñ\8bлкай Ñ\83 Ð°Ð¿Ñ\80агÑ\80амаваньні {{GRAMMAR:родны|{{SITENAME}}}}.',
 'nosuchspecialpage' => 'Такой спэцыяльнай старонкі не існуе',
 'nospecialpagetext' => '<strong>Спэцыяльная старонка, да якой Вы зьвярнуліся, не існуе.</strong>
 
@@ -686,8 +686,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''Вы выйшлі з сыстэмы.'''
 
-Вы можаце працягваць працу ў {{GRAMMAR:месны|{{SITENAME}}}} ананімна, альбо можаце <span class='plainlinks'>[$1 ўвайсьці ў сыстэму]</span> як той жа альбо іншы ўдзельнік.
-Некаторыя старонкі могуць паказвацца, быццам Вы ўсё яшчэ ў сыстэме. Каб гэтага пазьбегнуць, трэба ачысьціць кэш браўзэра.",
+Некаторыя старонкі могуць яшчэ паказваць, нібы вы ў сыстэме. Каб гэтага пазьбегнуць, трэба ачысьціць кэш браўзэра.",
 'welcomeuser' => 'Вітаем, $1!',
 'welcomecreation-msg' => 'Ваш рахунак быў створаны.
 Не забудзьцеся зьмяніць Вашыя [[Special:Preferences|налады ў {{GRAMMAR:месны|{{SITENAME}}}}]].',
@@ -814,6 +813,8 @@ $2',
 'login-abort-generic' => 'Не атрымалася ўвайсьці ў сыстэму, скасавана',
 'loginlanguagelabel' => 'Мова: $1',
 'suspicious-userlogout' => 'Ваш запыт на выхад з сыстэмы быў адхілены, таму што выглядае, што ён быў дасланы пашкоджаным браўзэрам альбо кэшаваным проксі-сэрвэрам.',
+'createacct-another-realname-tip' => 'Сапраўднае імя паведамляць неабавязкова.
+Калі Вы яго пазначыце, яно будзе выкарыстоўвацца для пазначэньня Вашай працы.',
 
 # Email sending
 'php-mail-error-unknown' => 'Узьнікла невядомая памылка ў функцыі PHP mail()',
@@ -1528,10 +1529,10 @@ $1",
 'userrights-no-interwiki' => 'Вы ня маеце дазволу зьмяняць правы ўдзельнікаў іншых вікаў.',
 'userrights-nodatabase' => 'Базы зьвестак $1 не існуе альбо яна не зьяўляецца лякальнай.',
 'userrights-nologin' => 'Вы павінны [[Special:UserLogin|ўвайсьці ў сыстэму]] як адміністратар, каб прызначаць правы ўдзельнікам.',
-'userrights-notallowed' => 'Ваш рахунак ня мае права прызначаць ці выдаляць правы ўдзельнікам.',
+'userrights-notallowed' => 'Вы ня маеце права прызначаць ці выдаляць правы ўдзельнікам.',
 'userrights-changeable-col' => 'Групы, якія Вы можаце мяняць',
 'userrights-unchangeable-col' => 'Групы, якія Вы ня можаце мяняць',
-'userrights-conflict' => 'Канфлікт правоў удзельнікаў! Калі ласка, захавайце зьмены яшчэ раз.',
+'userrights-conflict' => 'Канфлікт пры зьмене правоў удзельнікаў! Калі ласка, праверце і захавайце вашыя зьмены.',
 'userrights-removed-self' => 'Вы пасьпяхова пазбавілі сябе ўласных правоў. З гэтай прычыны вы больш ня маеце доступу да гэтай старонкі.',
 
 # Groups
@@ -3505,7 +3506,7 @@ $1',
 'exif-xyresolution-i' => '$1 пунктаў на цалю',
 'exif-xyresolution-c' => '$1 пунктаў на сантымэтар',
 
-'exif-colorspace-65535' => 'Некалібраванае',
+'exif-colorspace-65535' => 'Некалібраваная',
 
 'exif-componentsconfiguration-0' => 'не існуе',
 
@@ -4128,5 +4129,17 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 
 # Limit report
 'limitreport-title' => 'Зьвесткі прафіляваньня парсэра:',
+'limitreport-cputime' => 'Працэсарны час',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|сэкунда|сэкунды|сэкундаў}}',
+'limitreport-walltime' => 'Сапраўдны час',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|сэкунда|сэкунды|сэкундаў}}',
+'limitreport-ppvisitednodes' => 'Колькасьць наведаных прэпрацэсарам вузлоў',
+'limitreport-ppgeneratednodes' => 'Колькасьць створаных прэпрацэсарам вузлоў',
+'limitreport-postexpandincludesize' => 'Памер уключэньняў па разгортваньні',
+'limitreport-postexpandincludesize-value' => '$1/$2 байт',
+'limitreport-templateargumentsize' => 'Памер аргумэнтаў шаблёнаў',
+'limitreport-templateargumentsize-value' => '$1/$2 байт',
+'limitreport-expansiondepth' => 'Найбольшая глыбіня разгортваньня',
+'limitreport-expensivefunctioncount' => 'Колькасьць дарагіх функцыяў парсэра',
 
 );
index f0f7f11..3b2e442 100644 (file)
@@ -850,6 +850,7 @@ Da biste završili prijavu, morate unijeti novu šifru ovdje:',
 'resetpass-wrong-oldpass' => 'Privremena ili trenutna šifra nije validna.
 Možda ste već uspješno promijenili Vašu šifru ili ste tražili novu privremenu šifru.',
 'resetpass-temp-password' => 'Privremena šifra:',
+'resetpass-abort-generic' => 'Promjenu šifre/lozinke je prekinula ekstenzija.',
 
 # Special:PasswordReset
 'passwordreset' => 'Poništavanje šifre',
@@ -1497,7 +1498,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'prefs-signature' => 'Potpis',
 'prefs-dateformat' => 'Format datuma',
 'prefs-timeoffset' => 'Vremenska razlika',
-'prefs-advancedediting' => 'Općenito',
+'prefs-advancedediting' => 'Opće opcije',
 'prefs-editor' => 'Urednik',
 'prefs-preview' => 'Prethodni pregled',
 'prefs-advancedrc' => 'Napredne opcije',
@@ -1600,8 +1601,9 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'right-ipblock-exempt' => 'Zaobilaženje IP blokada, autoblokada i blokada IP grupe',
 'right-proxyunbannable' => 'Zaobilaženje automatskih blokada proxy-ja',
 'right-unblockself' => 'Deblokiranje samog sebe',
-'right-protect' => 'Promjena nivoa zaštite i uređivanje zaštićenih stranica',
-'right-editprotected' => 'Uređivanje zaštićenih stranica (bez povezanih zaštita)',
+'right-protect' => 'Promjena nivoa zaštite i uređivanje kaskadno zaštićenih stranica',
+'right-editprotected' => 'Uređivanje stranice zaštićenih kao "{{int:protect-level-sysop}}"',
+'right-editsemiprotected' => 'Uređivanje stranica zaštićenih kao  "{{int:protect-level-autoconfirmed}}"',
 'right-editinterface' => 'Uređivanje korisničkog interfejsa',
 'right-editusercssjs' => 'Uređivanje CSS i JS datoteka drugih korisnika',
 'right-editusercss' => 'Uređivanje CSS datoteka drugih korisnika',
@@ -2285,7 +2287,8 @@ Podržani {{PLURAL:$2|protokol|protokoli}}: <code>$1</code> (default je http://
 'listgrouprights' => 'Prava korisničkih grupa',
 'listgrouprights-summary' => 'Slijedi spisak korisničkih grupa na ovoj wiki, s njihovim pravima pristupa.
 O svakoj od njih postoje i [[{{MediaWiki:Listgrouprights-helppage}}|dodatne informacije]].',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">Dodano pravo</span>
+'listgrouprights-key' => 'Legenda:
+* <span class="listgrouprights-granted">Dodano pravo</span>
 * <span class="listgrouprights-revoked">Uklonjeno pravo</span>',
 'listgrouprights-group' => 'Grupa',
 'listgrouprights-rights' => 'Prava',
@@ -2466,7 +2469,7 @@ nastavite s oprezom.',
 Posljednja izmjena je bila od korisnika [[User:$3|$3]] ([[User talk:$3|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Sažetak izmjene je bio: \"''\$1''\".",
 'revertpage' => 'Vraćene izmjene [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na posljednju izmjenu korisnika [[User:$1|$1]]',
-'revertpage-nouser' => 'Vraćene izmjene korisnika (korisničko ime uklonjeno) na posljednju reviziju koju je načinio [[User:$1|$1]]',
+'revertpage-nouser' => 'Vraćene izmjene skrivenog korisnika na posljednju reviziju koju je načinio [[User:$1|$1]]',
 'rollback-success' => 'Poništene izmjene korisnika $1;
 vraćeno na posljednju verziju koju je sačuvao $2.',
 
@@ -2488,6 +2491,7 @@ Pogledajte [[Special:ProtectedPages|spisak zaštićenih stranica]] za pregled tr
 'protect-badnamespace-title' => 'Nezaštitljiv imenski prostor',
 'protect-badnamespace-text' => 'Stranice u ovom imenskom prostoru se ne mogu zaštititi.',
 'protect-norestrictiontypes-text' => 'Ova stranica se ne može zaštititi jer nema dostupnih oblika ograničenja.',
+'protect-norestrictiontypes-title' => 'Nezaštitljiva strana',
 'protect-legend' => 'Potvrdite zaštitu',
 'protectcomment' => 'Razlog:',
 'protectexpiry' => 'Ističe:',
@@ -3145,7 +3149,7 @@ Ovo je vjerovatno izazvao vezom ka vanjskoj nepoželjnoj stranici.',
 'pageinfo-views' => 'Broj pogleda',
 'pageinfo-watchers' => 'Broj pratitelja stranice',
 'pageinfo-few-watchers' => 'Manje od $1 {{PLURAL:$1|pratioca|pratilaca}}',
-'pageinfo-redirects-name' => 'Preusmjeravanja na ovu stranicu',
+'pageinfo-redirects-name' => 'Broj preusmjeravanja na ovu stranicu',
 'pageinfo-subpages-name' => 'Podstranice ove stranice',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|preusmjerenje|preusmjerenja}}; $3 {{PLURAL:$3|nepreusmjerenje|nepreusmjerenja}})',
 'pageinfo-firstuser' => 'Korisnik koji je napravio stranicu',
@@ -3741,9 +3745,9 @@ $5
 
 Ovaj kod za potvrdu će isteći u $4.',
 'confirmemail_body_set' => 'Neko, vjerovatno Vi, je sa IP adrese $1
-je postavio adresu e-pošte računa "$2" na ovu adresu za {{SITENAME}}.
+postavio adresu e-pošte računa "$2" na ovu adresu za {{SITENAME}}.
 
-Da potvrdite da ovaj nalog stvarno pripada Vama i da reaktivirate mogućnosti e-pošte na {{SITENAME}}, otvorite ovaj link u Vašem pregledniku:
+Da potvrdite da ovaj račun stvarno pripada Vama i da aktivirate mogućnosti e-pošte na {{SITENAME}}, otvorite ovaj link u Vašem pregledniku:
 
 $3
 
@@ -3751,7 +3755,7 @@ Ako ovaj račun *ne* pripada Vama, pratite ovaj link da prekinete odobravanje ad
 
 $5
 
-Ovaj kod za potvrdu će isteći u $4.',
+Ovaj kôd za potvrdu će isteći u $4.',
 'confirmemail_invalidated' => 'Potvrda e-mail adrese otkazana',
 'invalidateemail' => 'Odustani od e-mail potvrde',
 
index 22cad63..281c51a 100644 (file)
@@ -786,7 +786,7 @@ $1',
 'mailerror' => 'Кехат дохьуьйтуш гӀалат ду: $1',
 'emailauthenticated' => 'Хьан почтан адрес бакъдина $2 $3.',
 'accountcreated' => 'Декъашхочун дӀаяздар кхоьллина',
-'accountcreatedtext' => 'Кхоллина декъашхо дlавазвар $1.',
+'accountcreatedtext' => 'Кхоьллина декъашхочун [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|дийцаре.]]) дӀаяздар.',
 'loginlanguagelabel' => 'Мотт: $1',
 
 # Change password dialog
@@ -942,7 +942,8 @@ $1',
 
 # "Undo" feature
 'undo-success' => 'Нисйинарг а тlе цалаца мега. Дехар до, хьажа цхьатерра йуй башхо, тешна хила, баккъалла иза хийцам буйте хьуна безарг, тlакха тlе таlайе «дlайазйе агlо», хийцам хlотта ба.',
-'undo-summary' => 'Юхадаьккхина {{GENDER:$2|декъашхочун|декъашхочун}} [[Special:Contributions/$2|$2]] ([[User talk:$2|дийц.]]) нисдар $1',
+'undo-summary' => 'Юхадаьккхина {{GENDER:$2|декъашхочун}} [[Special:Contributions/$2|$2]] ([[User talk:$2|дийц.]]) нисдар $1',
+'undo-summary-username-hidden' => 'Юхадаьккхина декъашхочун нисдарш $1, цунна цӀе дӀахьулйина',
 
 # History pages
 'viewpagelogs' => 'Гайта хlокху агlонан тептар',
@@ -1275,7 +1276,7 @@ $1',
 'uploadbtn' => 'Файл чуяккхар',
 'uploadnologintext' => 'Серверан чу файлаш яха хьо $1.',
 'upload-permitted' => 'Магийна файлашан тайпанаш: $1.',
-'uploadlogpage' => 'Чуйахаран тéптар',
+'uploadlogpage' => 'Чуяхаран тéптар',
 'uploadlogpagetext' => 'Лахахьа гойтуш бу могlам тlаьххьара чуяхна файлаши. Ишта хьажа. [[Special:ImageList|файлаши могlам]] йа [[Special:NewImages|галеларе файлаши]].',
 'filename' => 'Файлан цӀе',
 'filedesc' => 'Файлах лаьцна',
@@ -1433,6 +1434,7 @@ PICT # тайп тайпан
 'nbytes' => '$1 {{PLURAL:$1|байт|байташ|байт}}',
 'ncategories' => '$1 {{PLURAL:$1|категори|категореш|категореш}}',
 'ninterwikis' => '$1 {{PLURAL:$1|юкъарвики-хьажориг|юкъарвики-хьажоригаш}}',
+'nlinks' => '$1 {{PLURAL:$1|хьажориг|хьажоригаш}}',
 'nmembers' => '$1 {{PLURAL:$1|хӀума|хӀумнаш}}',
 'nimagelinks' => 'Лелош ю $1 {{PLURAL:$1|агӀоначохь|агӀонашкахь|агӀонашкахь}}',
 'ntransclusions' => 'лелош ю $1 {{PLURAL:$1|агӀоначохь|агӀонашкахь|агӀонашкахь}}',
@@ -1627,7 +1629,7 @@ PICT # тайп тайпан
 'rollbacklink' => 'юхаяккха',
 'rollbacklinkcount' => 'юхадаккха $1 {{PLURAL:$1|нисдар|нисдарш}}',
 'rollbacklinkcount-morethan' => 'Юхадаккха $1 дукха {{PLURAL:$1|нисдар|нисдарш|нисдарш}}',
-'revertpage' => 'Нисдарш [[Special:Contributions/$2|$2]] ([[User talk:$2|дийцаре]]) йуха йаьхна башхаллийн [[User:$1|$1]]',
+'revertpage' => 'Нисдарш [[Special:Contributions/$2|$2]] ([[User talk:$2|дийцаре]]) юха даьхна башхаллийн [[User:$1|$1]]',
 'rollback-success' => 'Юха даьхна $1; нисдарш, $2 версен.',
 
 # Protect
@@ -1709,7 +1711,9 @@ PICT # тайп тайпан
 # Namespace form on various pages
 'namespace' => 'Цlерийн ана:',
 'invert' => 'Хаьржинарг хилийта',
+'tooltip-invert' => 'ХӀоттае хӀара билгало, хаьржинчу цӀерийн меттиган агӀонашан хийцамаш къайлабаха (кхин дихкина цӀерийн меттигаш, гайтина елахь)',
 'namespace_association' => 'Йихкина меттиг',
+'tooltip-namespace_association' => 'ХӀоттае хӀара билгало, иштта дийцарийн (я кхин) цӀерийн меттиг юкъахь хилийта',
 'blanknamespace' => '(Коьрта)',
 
 # Contributions
@@ -1718,7 +1722,7 @@ PICT # тайп тайпан
 'mycontris' => 'Сан къинхьегам',
 'contribsub2' => 'Къинхьегам $1 ($2)',
 'uctop' => ' (тlаьхьара)',
-'month' => 'Ð\91еÑ\82Ñ\82аÑ\86а (йа хьалхе):',
+'month' => 'Ð\91аÑ\82Ñ\82аÑ\86а (Ñ\8f хьалхе):',
 'year' => 'Шерачохь (я хьалхе):',
 
 'sp-contributions-newbies' => 'Гайта бекъ къинхьегам, керла дlабазбиначара бина болу',
@@ -1773,7 +1777,7 @@ PICT # тайп тайпан
 ** Масийтта лараман яздар зуламан лелаяр
 ** Магитина йоцу декъашхочун цӀе',
 'ipb-hardblock' => 'Шаш довзийтина болу декъашхошна бехкам бе хӀокху IP-адресца тадарш дан',
-'ipbcreateaccount' => 'Цамагдо Ñ\87Ñ\83далаÑ\80',
+'ipbcreateaccount' => 'Цамаго ÐºÐµÑ\80ла Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н Ð´Ó\80аÑ\8fздаÑ\80Ñ\88 ÐºÑ\85олла',
 'ipbemailban' => 'Цамагдо декъашхошка хааман кехаташ кхехьийта',
 'ipbenableautoblock' => 'Блоктоха декъашхочо лелош йолу IP-адресашна',
 'ipbsubmit' => 'Блоктоха хӀокху декъашхочун/адресна',
@@ -2108,6 +2112,8 @@ PICT # тайп тайпан
 'exif-yresolution' => 'Локхалла',
 'exif-datetime' => 'Файл хийцина терахь а хан',
 'exif-imagedescription' => 'Суьртан цӏе',
+'exif-make' => 'Камера арахоьцург',
+'exif-model' => 'Камеран модель',
 'exif-software' => 'Лелина программа',
 'exif-copyright' => 'Авторан бакъо ерг',
 'exif-colorspace' => 'Беснашан хьал',
@@ -2115,6 +2121,12 @@ PICT # тайп тайпан
 'exif-pixelxdimension' => 'Суьртан локхалла',
 'exif-datetimeoriginal' => 'Дуьххьарлера терахь а хан',
 'exif-datetimedigitized' => 'Оцифровк йина терахь а хан а',
+'exif-exposuretime' => 'Экспозицин хан',
+'exif-fnumber' => 'Диафрагмин дукхалла',
+'exif-maxaperturevalue' => 'Минимальни диафрагмин дукхалла',
+'exif-focallength' => 'Фокусни бохалла',
+'exif-sensingmethod' => 'Сенсоран тайп',
+'exif-filesource' => 'Файлан хьост',
 'exif-imageuniqueid' => 'Суьртан номер (ID)',
 'exif-gpsaltitude' => 'Локхалла',
 'exif-gpsdestlatitude' => 'Объектан дохалла',
@@ -2140,6 +2152,8 @@ PICT # тайп тайпан
 
 'exif-xyresolution-i' => '$1 тӏадамаш дюйман',
 
+'exif-filesource-3' => 'Терахьийн суртдохку аппарат',
+
 'exif-scenetype-1' => 'Сурт даьккхина нис дуьххьал',
 
 'exif-gaincontrol-0' => 'Яц',
index f945a81..d4076dd 100644 (file)
@@ -909,6 +909,8 @@ Počkejte chvíli, než to zkusíte znovu.',
 'login-abort-generic' => 'Vaše přihlášení se nezdařilo – přerušeno',
 'loginlanguagelabel' => 'Jazyk: $1',
 'suspicious-userlogout' => 'Váš požadavek na odhlášení byl odmítnut, neboť to vypadá, že ho poslal rozbitý prohlížeč nebo cachující proxy.',
+'createacct-another-realname-tip' => 'Skutečné jméno je nepovinné.
+Pokud se ho rozhodnete uvést, bude použito pro označení autorství vaší práce.',
 
 # Email sending
 'php-mail-error-unknown' => 'Neznámá chyba v PHP funkci mail()',
@@ -1571,7 +1573,8 @@ Tuto operaci nelze vrátit zpět.',
 'gender-female' => 'Ženské',
 'prefs-help-gender' => 'Volitelné: používáno softwarem pro správné oslovování v závislosti na pohlaví. Tato informace je veřejná.',
 'email' => 'E-mail',
-'prefs-help-realname' => 'Skutečné jméno (volitelné): pokud ho zadáte, bude použito pro označení autorství vaší práce.',
+'prefs-help-realname' => 'Skutečné jméno je nepovinné.
+Pokud se ho rozhodnete uvést, bude použito pro označení autorství vaší práce.',
 'prefs-help-email' => 'Uvedení e-mailu není povinné, ale umožní zaslání nového hesla v případě, že své heslo zapomenete.',
 'prefs-help-email-others' => 'Také můžete dovolit ostatním uživatelům vás prostřednictvím uživatelské stránky kontaktovat.
 Vaše adresa v takovém případě není prozrazena.',
index 5ec5ba4..670db69 100644 (file)
@@ -215,12 +215,12 @@ $messages = array(
 'unprotectthispage' => 'Хӳтĕлеве пăрахăçла',
 'newpage' => 'Çĕнĕ статья',
 'talkpage' => 'Сӳтсе явасси',
-'talkpagelinktext' => 'Сӳтсе яв',
+'talkpagelinktext' => 'Сӳтсе явни',
 'specialpage' => 'Ятарлă страницă',
 'personaltools' => 'Ман хатĕрсем',
 'postcomment' => 'Хуравла',
 'articlepage' => 'Статьяна пăх',
-'talk' => 'СӳÑ\82Ñ\81е Ñ\8fваÑ\81Ñ\81и',
+'talk' => 'СӳÑ\82Ñ\81е Ñ\8fвни',
 'views' => 'Пурĕ пăхнă',
 'toolbox' => 'Ĕç хатĕрĕсем',
 'userpage' => 'Хутшăнакан страницине пăх',
index 2f9900f..9aa88ac 100644 (file)
@@ -490,6 +490,7 @@ Efallai fod rhywun arall eisoes wedi'i dileu.",
 'cannotdelete-title' => "Ni ellir dileu'r dudalen '$1'",
 'delete-hook-aborted' => 'Terfynwyd y dilead cyn pryd gan fachyn.
 Ni roddodd eglurhad.',
+'no-null-revision' => 'Ni lwyddwyd i wneud diwygiad newydd heb unrhyw newid ynddo, i\'r dudalen "$1"',
 'badtitle' => 'Teitl gwael',
 'badtitletext' => "Mae'r teitl a ofynnwyd amdano yn annilys, yn wag, neu cysylltu'n anghywir rhwng ieithoedd neu wicïau. Gall fod ynddo un nod neu ragor na ellir eu defnyddio mewn teitlau.",
 'perfcached' => "Mae'r wybodaeth ganlynol yn gopi cadw; mae'n bosib nad y fersiwn diweddaraf ydyw. Cedwir hyd at {{PLURAL:$1||un canlyniad yn unig|ddau ganlyniad|dri canlyniad|$1 chanlyniad|$1 canlyniad}} yn y copi cadw.",
@@ -656,6 +657,8 @@ Oedwch ychydig cyn mentro eto.',
 'login-abort-generic' => 'Ni lwyddodd y mewngofnodi - Rhoddwyd y gorau iddo',
 'loginlanguagelabel' => 'Iaith: $1',
 'suspicious-userlogout' => 'Gwrthodwyd eich cais i allgofnodi oherwydd ei fod yn ymddangos mai gweinydd wedi torri neu ddirprwy gelc a anfonodd y cais.',
+'createacct-another-realname-tip' => "Gallwch ddewis roi eich enw go iawn.
+Os y gwnewch, fe gaiff yr enw go iawn ei defnyddio wrth dadogi'ch gwaith.",
 
 # Email sending
 'php-mail-error-unknown' => 'Gwall anhysbys yng ngweithrediad post() PHP',
@@ -1361,7 +1364,7 @@ Mae'r wybodaeth hon ar gael i'r cyhoedd.",
 'userrights-notallowed' => 'Nid oes ganiatâd priodol gennych i ychwanegu neu dynnu hawliau defnyddwyr.',
 'userrights-changeable-col' => 'Grwpiau y gallwch eu newid',
 'userrights-unchangeable-col' => 'Grwpiau na allwch eu newid',
-'userrights-conflict' => 'Gwrthdaro gyda hawliau defnyddiwr! Gwnewch eich newidiadau eto.',
+'userrights-conflict' => "Gwrthdaro oherwydd newid i hawliau defnyddiwr! Adolygwch eich newidiadau a'u cadarnhau.",
 'userrights-removed-self' => "Rydych wedi llwyddo rhoi'r gorau i'ch galluoedd. Gan hynny, nid ydych yn cael myned i'r dudalen hon bellach.",
 
 # Groups
@@ -3922,4 +3925,14 @@ Dylech fod wedi derbyn [{{SERVER}}{{SCRIPTPATH}}/COPYING gopi o GNU General Publ
 # Image rotation
 'rotate-comment' => "Trowyd y llun $1 {{PLURAL:$1|gradd|radd|radd|gradd}} gyda'r cloc",
 
+# Limit report
+'limitreport-cputime' => 'Defnydd amser CPU',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|eiliad}}',
+'limitreport-walltime' => 'Defnydd amser real',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|eiliad}}',
+'limitreport-postexpandincludesize-value' => '$1/$2 beit',
+'limitreport-templateargumentsize' => 'Maint arg y nodyn',
+'limitreport-templateargumentsize-value' => '$1/$2 beit',
+'limitreport-expansiondepth' => 'Uchafswm dyfnder yr ehangu',
+
 );
index 71064cf..51737d0 100644 (file)
@@ -1521,7 +1521,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'prefs-signature' => 'İmza',
 'prefs-dateformat' => 'Formatê tarixi',
 'prefs-timeoffset' => 'Wext offset',
-'prefs-advancedediting' => 'Genel',
+'prefs-advancedediting' => 'Herayen weçinayış',
 'prefs-editor' => 'Timarkar',
 'prefs-preview' => 'Verqayt',
 'prefs-advancedrc' => 'Tercihê raverberdey',
@@ -1602,7 +1602,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'right-reupload-shared' => 'Dosyeyê ke ambarê medyao barekerde de, inan mehelli wedare',
 'right-upload_by_url' => 'Yew URL ra dosyan bar bıke',
 'right-purge' => 'Virê sita seba yew pele bêdestur bestere.',
-'right-autoconfirmed' => 'Pelanê ke nême kılit biyê, inan bıvurne',
+'right-autoconfirmed' => 'Perê ke nême kılit biyê, inan bıvurne',
 'right-bot' => 'Zey yew karê xoserkerdey be',
 'right-nominornewtalk' => 'Pelanê werênayışan rê vurnayışê qıckeki çıniyê, qutiya mesacanê newiyan bıgurene',
 'right-apihighlimits' => 'Persanê API de sinoranê berzêran bıgurene',
@@ -1622,7 +1622,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'right-hideuser' => 'Yew namey karberi  şari ra dızdeni/miyanki bloke bıke',
 'right-ipblock-exempt' => 'Blokanê IPi, oto-blokan u blokanê menzıli ra ravêre',
 'right-proxyunbannable' => 'Blokanê otomatikiê proksiyan ra ravêre',
-'right-unblockself' => 'İnan ake',
+'right-unblockself' => 'Blokeyınan ake',
 'right-protect' => 'Sewiyanê pawıtışi (mıhafezey) bıvurne u pelanê kılitbiyaiyan sero bıgureye.',
 'right-editprotected' => 'Pera pawıtiyan sero bıxebteye (bê pawıtena kaskadi (game be game))',
 'right-editsemiprotected' => 'Xısusi pera timaryayış "{{int:protect-level-autoconfirmed}}"',
@@ -2097,6 +2097,10 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 'randompage' => 'Pela raştameyiye',
 'randompage-nopages' => 'Ena {{PLURAL:$2|cayêname|cayênameyî}} de enê pelan çin o: $1.',
 
+# Special:RandomInCategory
+'randomincategory-invalidcategory' => '"$1" namedı kategori çıniya',
+'randomincategory-selectcategory-submit' => 'Şo',
+
 # Random redirect
 'randomredirect' => 'Xoseri hetenayış',
 'randomredirect-nopages' => 'Ena cayênameyê "$1"î de redereksiyonî çin o.',
@@ -2308,7 +2312,7 @@ Qeydeyê {{PLURAL:$2|protoqol|protoqoli}}:destegbiyayey: <code>$1</code> (qet ye
 'listgrouprights-summary' => 'wikiya cêrın a ke tede grubê karberi nişane biyê, listeya heqê cıresayişê inan o.
 qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed]] belka esto.',
 'listgrouprights-key' => '* <span class="listgrouprights-granted">Heqa daiye</span>
-* <span class="listgrouprights-revoked">Heqa guretiye</span>',
+* <span class="listgrouprights-revoked">Heqa gıreti</span>',
 'listgrouprights-group' => 'Grube',
 'listgrouprights-rights' => 'Heqqî',
 'listgrouprights-helppage' => 'Help:Heqqanê gruban',
@@ -3152,12 +3156,12 @@ Tı eşkeno yew sebeb bınus.',
 'pageinfo-article-id' => 'Kamiya pele',
 'pageinfo-language' => 'Zıwanê zerreyê pele',
 'pageinfo-robot-policy' => 'Weziyetê motor de cıgeyrayışi',
-'pageinfo-robot-index' => 'İIndeksbiyayen',
+'pageinfo-robot-index' => 'İndeksbiyayen',
 'pageinfo-robot-noindex' => 'İndeksnêbiyayen',
 'pageinfo-views' => 'Amarina mocnayışan',
 'pageinfo-watchers' => 'Amariya pela serykeran',
 'pageinfo-few-watchers' => '$1 ra tayê {{PLURAL:$1|seyrker|seyrkeri}}',
-'pageinfo-redirects-name' => 'Hetenayışê na pela',
+'pageinfo-redirects-name' => 'Hetenayışê na perer',
 'pageinfo-redirects-value' => '$1',
 'pageinfo-subpages-name' => 'Bınpelê na pela',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|hetenayış|hetenayışi}}; $3 {{PLURAL:$3|raykerdışt|raykerdışi}})',
@@ -4088,6 +4092,7 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'version-license' => 'Lisans',
 'version-poweredby-credits' => "Ena wiki, dezginda '''[//www.mediawiki.org/ MediaWiki]''' ya piya vıraziyaya, heqê telifi © 2001-$1 $2.",
 'version-poweredby-others' => 'Zewmi',
+'version-poweredby-translators' => "Açernere translatewiki.net'i",
 'version-credits-summary' => 'Ma qayılime ke [[Special:Version|MediaWiki]] rê ke kami destek dayo wa mayê vanime inan bışınasne.',
 'version-license-info' => "MediaWiki xoseri jew nuştereno; MediaWiki'yer, weqfê xoseri nuşteren GNU lisansiya merdumi şene ke vıla kerê, bıvurnê u timar kerê.
 
@@ -4162,6 +4167,7 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 'tags' => 'Etiketê vurnayîşê raştî',
 'tag-filter' => 'Avrêcê [[Special:Tags|Etiketi]]:',
 'tag-filter-submit' => 'Avrêc',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Etiket|Etiketi}}]]: $2)',
 'tags-title' => 'Etiketan',
 'tags-intro' => 'Eno pel de listeyê eyiketî este ke belki software pê ey edit kenî.',
 'tags-tag' => 'Nameyê etiketi',
index 5bf18f4..13cf829 100644 (file)
@@ -1002,17 +1002,17 @@ Contraseña temporal: $2',
 'changeemail-cancel' => 'Cancelar',
 
 # Special:ResetTokens
-'resettokens' => 'Restablecer fichas',
-'resettokens-text' => 'Puede restablecer las fichas que permiten el acceso a ciertos datos privados asociados a tu cuenta aquí.
+'resettokens' => 'Restablecer claves',
+'resettokens-text' => 'Puede restablecer las claves que permiten el acceso a ciertos datos privados asociados a tu cuenta aquí.
 
-Deberías hacerlo si accidentalmente la haz compartido con alguien o si su cuenta ha sido comprometida.',
-'resettokens-no-tokens' => 'No hay fichas para restablecer.',
-'resettokens-legend' => 'Restablecer fichas',
-'resettokens-tokens' => 'Fichas:',
+Deberías hacerlo si accidentalmente la has compartido con alguien o si su cuenta ha sido comprometida.',
+'resettokens-no-tokens' => 'No hay claves para restablecer.',
+'resettokens-legend' => 'Restablecer claves',
+'resettokens-tokens' => 'Claves:',
 'resettokens-token-label' => '$1 (valor actual: $2)',
-'resettokens-watchlist-token' => 'Lista de seguimiento de la red de fichas',
-'resettokens-done' => 'restablecimiento de fichas.',
-'resettokens-resetbutton' => 'Restablecer las fichas',
+'resettokens-watchlist-token' => 'Lista de seguimiento de la red de claves',
+'resettokens-done' => 'Restablecimiento de claves.',
+'resettokens-resetbutton' => 'Restablecer las claves',
 
 # Edit page toolbar
 'bold_sample' => 'Texto en negrita',
@@ -1548,6 +1548,9 @@ Mientras tanto puedes buscar mediante Google, pero ten en cuenta que sus índice
 'recentchangesdays-max' => '(máximo {{PLURAL:$1|un día|$1 días}})',
 'recentchangescount' => 'Número de ediciones a mostrar de manera predeterminada:',
 'prefs-help-recentchangescount' => 'Esto incluye cambios recientes, historiales de página, y registros.',
+'prefs-help-watchlist-token2' => 'Esta es la llave secreta al feed de tu lista de seguimiento web.
+Toda persona que la sepa será capaz de leer tu lista, así que no la compartiremos.
+[[Special:ResetTokens|Has clic aquí si necesitas reiniciarlo]].',
 'savedprefs' => 'Tus preferencias han sido guardadas.',
 'timezonelegend' => 'Zona horaria:',
 'localtime' => 'Hora local:',
@@ -1616,6 +1619,7 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'prefs-displayrc' => 'Opciones de mostrado',
 'prefs-displaysearchoptions' => 'Opciones de visualización',
 'prefs-displaywatchlist' => 'Opciones de visualización',
+'prefs-tokenwatchlist' => 'Clave',
 'prefs-diffs' => 'Diferencias',
 
 # User preference: email validation using jQuery
@@ -1640,10 +1644,10 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'userrights-no-interwiki' => 'No tienes permiso para editar los grupos a los que pertenece un usuario en otros wikis.',
 'userrights-nodatabase' => 'La base de datos $1 no existe o no es local.',
 'userrights-nologin' => 'Debes [[Special:UserLogin|iniciar sesión]] con una cuenta de administrador para poder editar los grupos de los usuarios.',
-'userrights-notallowed' => 'Tu cuenta no tiene permiso para añadir o retirar permisos de usuario.',
+'userrights-notallowed' => 'No tienes permiso para agregar o quitar derechos de usuario.',
 'userrights-changeable-col' => 'Grupos que puedes cambiar',
 'userrights-unchangeable-col' => 'Grupos que no puedes cambiar',
-'userrights-conflict' => 'Hay un conflicto de permisos de usuario. Aplica tus cambios de nuevo.',
+'userrights-conflict' => '¡Conflicto de cambio de los derechos de usuario! Por favor, revisar y confirmar tus cambios.',
 'userrights-removed-self' => 'Usted eliminado con éxito sus propios derechos. Por lo tanto, usted ya no es capaz de acceder a esta página.',
 
 # Groups
@@ -1708,7 +1712,7 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'right-hideuser' => 'Bloquear un nombre de usuario, haciéndolo invisible',
 'right-ipblock-exempt' => 'Pasar por encima de bloqueos de IPs, auto-bloqueos y bloqueos de rangos.',
 'right-proxyunbannable' => 'Pasar por encima de bloqueos automáticos de proxies',
-'right-unblockself' => 'Desbloquearse',
+'right-unblockself' => 'Desbloquearse uno mismo',
 'right-protect' => 'Cambiar niveles de protección y editar páginas protegidas en cascada',
 'right-editprotected' => 'Editar páginas protegidas como «{{int:protect-level-sysop}}»',
 'right-editsemiprotected' => 'Editar páginas protegidas como «{{int:protect-level-autoconfirmed}}»',
@@ -2196,7 +2200,8 @@ Entrada: contenttype/subtype, p. ej. <code>image/jpeg</code>.',
 # Special:RandomInCategory
 'randomincategory' => 'Página aleatoria en categoría',
 'randomincategory-invalidcategory' => '"$1" no es una categoría válida.',
-'randomincategory-nopages' => 'No hay páginas en la categoría [[:Categoría:$1|$1]].',
+'randomincategory-nopages' => 'No hay páginas en la categoría [[:Category:$1|$1]].',
+'randomincategory-selectcategory' => 'Obtener una página aleatoria de categoría: $1 $2.',
 'randomincategory-selectcategory-submit' => 'Ir',
 
 # Random redirect
@@ -2235,6 +2240,8 @@ Una página es considerada página de desambiguación si utiliza la plantilla qu
 'pageswithprop-text' => 'Esta página muestra las páginas que usan la propiedad de una página en particular',
 'pageswithprop-prop' => 'Nombre de la propiedad',
 'pageswithprop-submit' => 'Ir',
+'pageswithprop-prophidden-long' => 'hay un largo valor en la propiedad texto ocultada ($1  kilobytes)',
+'pageswithprop-prophidden-binary' => 'valor de la propiedad binaria ocultada ($1 kilobytes)',
 
 'doubleredirects' => 'Redirecciones dobles',
 'doubleredirectstext' => 'Esta página contiene una lista de páginas que redirigen a otras páginas de redirección.
@@ -2411,7 +2418,8 @@ Es necesario, por lo menos, un dominio de alto nivel, por ejemplo "*.org".<br />
 'listgrouprights' => 'Permisos del grupo de usuarios',
 'listgrouprights-summary' => 'La siguiente es una lista de los grupos de usuario definidos en esta wiki y de sus privilegios de acceso asociados.
 Puede haber información adicional sobre privilegios individuales en [[{{MediaWiki:Listgrouprights-helppage}}]]',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">Derecho concedido</span>
+'listgrouprights-key' => 'Leyenda:
+* <span class="listgrouprights-granted">Derecho concedido</span>
 * <span class="listgrouprights-revoked">Derecho revocado</span>',
 'listgrouprights-group' => 'Grupo',
 'listgrouprights-rights' => 'Derechos',
@@ -3262,13 +3270,13 @@ Esto podría estar causado por un enlace a un sitio externo incluido en la lista
 'pageinfo-length' => 'Longitud de la página (en bytes)',
 'pageinfo-article-id' => 'Identificador ID de la página',
 'pageinfo-language' => 'Idioma de la página',
-'pageinfo-robot-policy' => 'Estado del motor de búsqueda',
-'pageinfo-robot-index' => 'Indexable',
-'pageinfo-robot-noindex' => 'No indexable',
+'pageinfo-robot-policy' => 'Indexación por robots',
+'pageinfo-robot-index' => 'Permitido',
+'pageinfo-robot-noindex' => 'No permitido',
 'pageinfo-views' => 'Número de vistas',
 'pageinfo-watchers' => 'Número de usuarios que vigilan la página',
 'pageinfo-few-watchers' => 'Menos de $1 {{PLURAL:$1|vigilante|vigilantes}}',
-'pageinfo-redirects-name' => 'Redirecciones a esta página',
+'pageinfo-redirects-name' => 'Número de redirecciones a esta página',
 'pageinfo-redirects-value' => '$1',
 'pageinfo-subpages-name' => 'Subpáginas de esta página',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redirección|redirecciones}}; $3 {{PLURAL:$3|no-redirección|no-redirecciones}})',
@@ -3875,7 +3883,7 @@ Este código de confirmación expirará el $4.',
 'confirmemail_body_set' => 'Alguien, probablemente tu desde la dirección IP $1,
 ha cambiado la dirección de correo electrónico de la cuenta $2 a esta dirección en {{SITENAME}}.
 
-Para confirmar que esta cuenta realmente te pertenece y reactivar las capacidades del correo electrónico en {{SITENAME}}, abre este enlace en tu navegador:
+Para confirmar que esta cuenta realmente te pertenece y activar las capacidades del correo electrónico en {{SITENAME}}, abre este enlace en tu navegador:
 
 $3
 
@@ -4080,7 +4088,7 @@ Has recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública
 'tags' => 'Cambio de etiquetas válida',
 'tag-filter' => 'Filtro de [[Special:Tags|etiquetas]]:',
 'tag-filter-submit' => 'Filtro',
-'tag-list-wrapper' => '([[Especial:Etiquetas|{{PLURAL:$1|Etiqueta|Etiquetas}}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Etiqueta|Etiquetas}}]]: $2)',
 'tags-title' => 'Etiquetas',
 'tags-intro' => 'Esta página lista las etiquetas con las que el software puede marcar una edición y su significado.',
 'tags-tag' => 'Nombre de etiqueta',
@@ -4244,4 +4252,16 @@ En otro caso, puedes usar el siguiente formulario. Tu comentario será añadido
 # Image rotation
 'rotate-comment' => 'Imagen girada por $1 {{PLURAL:$1|grado|grados}} en el sentido de las agujas del reloj',
 
+# Limit report
+'limitreport-title' => 'Analizador de datos de perfiles:',
+'limitreport-cputime' => 'Tiempo de uso de CPU',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|segundo|segundos}}',
+'limitreport-walltime' => 'Tiempo Real de uso',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|segundo|segundos}}',
+'limitreport-ppvisitednodes' => 'Preprocesador visitó la cantidad de nodos',
+'limitreport-ppgeneratednodes' => 'Preprocesador genera el número de nodos',
+'limitreport-postexpandincludesize' => 'Post-Expand incluyen el tamaño',
+'limitreport-templateargumentsize' => 'Argumento del tamaño de la plantilla',
+'limitreport-expansiondepth' => 'Máxima expansión de profundidad',
+
 );
index c53119c..8d713b2 100644 (file)
@@ -834,6 +834,8 @@ Palun pea nüüd pisut vahet.',
 'login-abort-generic' => 'Sisselogimine ebaõnnestus – Katkestatud',
 'loginlanguagelabel' => 'Keel: $1',
 'suspicious-userlogout' => 'Sinu väljalogimiskatse nurjus, sest see näis olevat katkise veebilehitseja või puhverserveri saadetud.',
+'createacct-another-realname-tip' => 'Tegelik nimi on valikuline.
+Kui otsustad selle sisestada, kasutatakse seda kasutaja töö temale omistamiseks.',
 
 # Email sending
 'php-mail-error-unknown' => 'Tundmatu tõrge PHP funktsioonis mail().',
@@ -1545,7 +1547,7 @@ See ei tohi olla pikem kui {{PLURAL:$1|üks märk|$1 märki}}.',
 'userrights-notallowed' => 'Sul pole õigust kasutajaõigusi lisada ega eemaldada.',
 'userrights-changeable-col' => 'Rühmad, mida sa saad muuta',
 'userrights-unchangeable-col' => 'Rühmad, mida sa ei saa muuta',
-'userrights-conflict' => 'Kasutajaõiguste konflikt! Palun tee muudatused uuesti.',
+'userrights-conflict' => 'Kasutajaõiguste muutmise konflikt! Palun vaata oma muudatused üle ja kinnita need.',
 'userrights-removed-self' => 'Võtsid edukalt endalt õigused. Seetõttu sellele leheküljele sa enam ligi ei pääse.',
 
 # Groups
@@ -3840,6 +3842,7 @@ Sa võid [[Special:EditWatchlist|kasutada ka harilikku tekstiredaktorit]].',
 'version-license' => 'Litsents',
 'version-poweredby-credits' => "See viki kasutab '''[//www.mediawiki.org/ MediaWiki]''' tarkvara. Autoriõigus © 2001–$1 $2.",
 'version-poweredby-others' => 'teised',
+'version-poweredby-translators' => 'translatewiki.net-i tõlkijad',
 'version-credits-summary' => 'Tahame tunnustada järgmisi inimesi [[Special:Version|MediaWikile]] tehtud kaastöö eest.',
 'version-license-info' => "MediaWiki on vaba tarkvara; tohid seda taaslevitada ja/või selle põhjal teisendeid luua vastavalt Vaba Tarkvara Fondi avaldatud GNU Üldise Avaliku Litsentsi versioonis 2 või hilisemas seatud tingimustele.
 
@@ -3996,6 +3999,7 @@ GNU Üldise Avaliku Litsentsi [{{SERVER}}{{SCRIPTPATH}}/COPYING eksemplar] peaks
 'logentry-newusers-autocreate' => 'Konto $1 {{GENDER:$2|loodi}} automaatselt',
 'logentry-rights-rights' => '$1 {{GENDER:$2|muutis}} kasutaja $3 rühmaliikmesust; enne oli $4, nüüd on $5',
 'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|muutis}} kasutaja $3 rühmaliikmesust',
+'logentry-rights-autopromote' => '$1 {{GENDER:$2|viidi}} automaatselt üle teise rühma; enne oli $4, nüüd on $5',
 'rightsnone' => '(puudub)',
 
 # Feedback
@@ -4074,4 +4078,10 @@ Kui ei, kasuta allolevat lihtsat vormi. Sinu kommentaar lisatakse koos kasutajan
 # Image rotation
 'rotate-comment' => 'Pilti pööratud $1 {{PLURAL:$1|kraad|kraadi}} päripäeva',
 
+# Limit report
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|sekund|sekundit}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekund|sekundit}}',
+'limitreport-postexpandincludesize-value' => '$1/$2 baiti',
+'limitreport-templateargumentsize-value' => '$1/$2 baiti',
+
 );
index 2f2bf76..c72c649 100644 (file)
@@ -2703,7 +2703,7 @@ $PAGEINTRO $NEWPAGE
 شما می‌توانید سطح محافظت این صفحه را تغییر بدهید اما این کار تاثیری بر محافظت آبشاری صفحه نخواهد گذاشت.',
 'protect-default' => 'همهٔ کاربرها',
 'protect-fallback' => 'فقط به کاربرهایی که دسترسی «$1» دارند، اجازه داده می‌شود',
-'protect-level-autoconfirmed' => 'تÙ\86Ù\87ا Ú©Ø§Ø±Ø¨Ø±Ø§Ù\86 ØªØ§Ø¦یدشده',
+'protect-level-autoconfirmed' => 'تÙ\86Ù\87ا Ú©Ø§Ø±Ø¨Ø±Ø§Ù\86 ØªØ£Û\8cیدشده',
 'protect-level-sysop' => 'فقط مدیران',
 'protect-summary-cascade' => 'آبشاری',
 'protect-expiring' => 'زمان سرآمدن $1 (UTC)',
index 64c57bd..550e367 100644 (file)
@@ -922,12 +922,12 @@ Väliaikainen salasana: $2',
 'changeemail-cancel' => 'Peruuta',
 
 # Special:ResetTokens
-'resettokens' => 'Uudista tunnisteet.',
+'resettokens' => 'Uudista tunnisteet',
 'resettokens-text' => 'Tällä sivulla voit uudistaa tunnisteesi, joiden avulla hallitaan pääsyä käyttäjätiliisi liittyviin yksityisiin tietoihin.
 
 Sinun pitää tehdä tämä jos olet vahingossa jakanut ne jonkun kanssa tai käyttäjätiliisi on saatettu kajota.',
 'resettokens-no-tokens' => 'Tunnisteita ei löydy uudistettavaksi.',
-'resettokens-legend' => 'Uudista tunnisteet.',
+'resettokens-legend' => 'Uudista tunnisteet',
 'resettokens-tokens' => 'Tunnisteet:',
 'resettokens-token-label' => '$1 (nykyinen arvo: $2)',
 'resettokens-watchlist-token' => 'Tarkkailulistan verkkosyötteen tunniste',
index 8904dad..6dda924 100644 (file)
@@ -486,6 +486,7 @@ Møguliga hevur onkur annar longu strikað hana.',
 'cannotdelete-title' => 'Kann ikki strika síðu "$1"',
 'delete-hook-aborted' => 'Ein húkur (hook) forðaði fyri sletting.
 Ongin frágreiðing varð givin.',
+'no-null-revision' => 'Tað bar ikki til at upprætta nýggja tóma versjón fyri síðuna "$1"',
 'badtitle' => 'Ógyldugt heiti',
 'badtitletext' => 'Umbidna síðan er ógyldugt, tómt ella skeivt tilslóðað heiti millum mál ella wikur.',
 'perfcached' => 'Fylgjandi upplýsingar eru "fangaðir" (cached) og eru møguliga ikki dagførdir. Í mesta lagi {{PLURAL:$1|eitt úrslit er|$1 úrslit eru}} tøk í cache.',
@@ -517,6 +518,8 @@ $2',
 'customjsprotected' => 'Tú hevur ikki loyvir til at rætta hesa JavaScript síðuna, tí hon inniheldur persónligar innstillingar hjá øðrum brúkara.',
 'mycustomcssprotected' => 'Tú hevur ikki loyvi til at rætta hesa CSS síðuna.',
 'mycustomjsprotected' => 'Tú hevur ikki loyvi til at rætta hesa JavaScript síðuna.',
+'myprivateinfoprotected' => 'Tú hevur ikki loyvi til at rætta tína privatu kunning.',
+'mypreferencesprotected' => 'Tú hevur ikki loyvi til at rætta tínar preferensur.',
 'ns-specialprotected' => 'Serstakar síður kunnu ikki rættast.',
 'titleprotected' => '[[User:$1|$1]] hevur vart hetta heitið frá skapan.
 Givin orsøk er "\'\'$2\'\'".',
@@ -535,8 +538,8 @@ Umboðsstjórin sum stongdi hana, gav hesa frágreiðing: "$3".',
 
 # Login and logout pages
 'logouttext' => "'''Tú hevur nú ritað út.'''
-Tú kanst halda fram at brúka {{SITENAME}} sum dulnevndur, ella kanst tú <span class='plainlinks'>[\$1 logga á aftur]</span> sum sami ella sum annar brúkari. 
-Legg til merkis, at summar síður framvegis vera vístar, sum um tú enn vart loggaður á, til tú hevur reinsa tín brovsara fyri \"cache\".",
+Legg til merkis, at summar síður framvegis vera vístar, sum um tú enn vart loggað/ur á, til tú hevur reinsað tín brovsara fyri \"cache\".",
 'welcomeuser' => 'Vælkomin, $1!',
 'welcomecreation-msg' => 'Tín konta er nú stovnað.
 Gloym ikki at broyta tínar [[Special:Preferences|{{SITENAME}}-innstillingar]].',
@@ -583,7 +586,7 @@ Gloym ikki at broyta tínar [[Special:Preferences|{{SITENAME}}-innstillingar]].'
 'createacct-emailoptional' => 'Teldupost adressa (valfrítt)',
 'createacct-email-ph' => 'Skrivað tína email adressu',
 'createacct-another-email-ph' => 'Skriva tína t-post adressu',
-'createaccountmail' => 'Nýt eitt fyribils tilvildarligt loyniorð og send tað til t-post adressuna niðanfyri',
+'createaccountmail' => 'Nýt eitt fyribils tilvildarligt loyniorð og send tað til nevndu t-post adressuna',
 'createacct-realname' => 'Veruligt navn (valfrítt)',
 'createaccountreason' => 'Orsøk:',
 'createacct-reason' => 'Orsøk',
@@ -668,6 +671,8 @@ Vinarliga bíða áðrenn tú roynir aftur.',
 'login-abort-generic' => 'Tað miseydnaðist tær at rita inn - avbrotið',
 'loginlanguagelabel' => 'Mál: $1',
 'suspicious-userlogout' => 'Tín fyrispurningur um at útrita var noktaður, tí tað sær út til at hann varð sendur frá einum oyðiløgdum kaga ella caching proxy.',
+'createacct-another-realname-tip' => 'Veruligt navn er valfrítt.
+Um tú velur at skriva tað, so verður tað nýtt til at geva brúkaranum æruna fyri hennara/hansara  arbeiði.',
 
 # Email sending
 'php-mail-error-unknown' => "Ókend villa í PHP'sa teldupost () funktión.",
@@ -740,7 +745,13 @@ Fyribils loyniorð: $2',
 'changeemail-cancel' => 'Ógilda',
 
 # Special:ResetTokens
+'resettokens' => 'Nullstilla lyklar',
+'resettokens-no-tokens' => 'Tað eru ongir lyklar at nullstilla.',
+'resettokens-legend' => 'Nullstilla lyklar',
+'resettokens-tokens' => 'Lyklar:',
 'resettokens-token-label' => '$1 (dagsins virði: $2)',
+'resettokens-done' => 'Nullstilla lyklar.',
+'resettokens-resetbutton' => 'Nullstilla útvaldu lyklar (tokens)',
 
 # Edit page toolbar
 'bold_sample' => 'Feitir stavir',
@@ -977,6 +988,8 @@ Hetta parametur er tí ikki tikið við.",
 'node-count-exceeded-category' => 'Síður har talið av notum (node) er ov høgt',
 'node-count-exceeded-warning' => 'Síðan hevur og høgt tal av notum (node-count)',
 'expansion-depth-exceeded-category' => 'Síður ið fara yvir loyvdu víðkanar-dýpdina',
+'expansion-depth-exceeded-warning' => 'Síðan fór út um markið fyri víðkanardýpdina',
+'parser-unstrip-loop-warning' => 'Unstrip loop varð funnið',
 
 # "Undo" feature
 'undo-success' => 'Rættingin kann takast burtur aftur.
@@ -984,6 +997,7 @@ Vinarliga kanna eftir samanberingina niðanfyri fyri at vátta, at hetta er tað
 'undo-failure' => 'Rættingin kundi ikki takast burtur orsakað av konfliktum við rættingum sum eru gjørdar eftir at tú fór í gongd at rætta.',
 'undo-norev' => 'Rættingin kann ikki takast burtur, tí at hon er ikki til ella var strikað.',
 'undo-summary' => 'Tak burtur versjón $1 hjá [[Special:Contributions/$2|$2]] ([[User talk:$2|kjak]])',
+'undo-summary-username-hidden' => 'Angra versjón $1 sum ein fjaldur brúkari hevur gjørt',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Tað ber ikki til at upprætta konto',
@@ -1058,6 +1072,7 @@ Tú kanst síggja munin; smálutir eru at finna í [{{fullurl:{{#Special:Log}}/s
 'revdelete-show-file-confirm' => 'Ert tú vís/ur í, at tú ynskir at síggja eina strikaða endurskoðan av fíluni "<nowiki>$1</nowiki>" frá $2 kl. $3?',
 'revdelete-show-file-submit' => 'Ja',
 'revdelete-selected' => "'''{{PLURAL:$2|Valda versjón|Valdar versjónir}} hjá [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Útvald logghending|Útvaldar logghendingar}}:'''",
 'revdelete-confirm' => 'Vinarliga vátta, at tú ætlar at gera hetta, at tú skilir avleiðingarnar, og at tú ger hetta í samsvari við [[{{MediaWiki:Policy-url}}|mannagongdirnar]].',
 'revdelete-legend' => 'Set avmarkinga fyri sjónligheit',
 'revdelete-hide-text' => 'Goym burtur tekstin á hesi versjónini',
@@ -1076,6 +1091,8 @@ Tú kanst síggja munin; smálutir eru at finna í [{{fullurl:{{#Special:Log}}/s
 'revdelete-failure' => "'''Versjóns sjónligheitin kundi ikki dagførast:'''
 $1",
 'logdelete-success' => "'''Sjónligheit broytt við hepni.'''",
+'logdelete-failure' => "'''Tað bar ikki til at broyta loggsjónligheitina:'''
+$1",
 'revdel-restore' => 'broyt sjónligheit',
 'revdel-restore-deleted' => 'strikaðar rættingar',
 'revdel-restore-visible' => 'sjónligar broytingar',
@@ -1090,6 +1107,11 @@ Tú hevur ikki atgongd til hann.',
 'revdelete-modify-missing' => 'Feilur hendi undir broytan av luti ID $1: Hann er ikki at finna í dátabasuni!',
 'revdelete-no-change' => "'''Ávaring:''' Pettið ið er dagfest $1, kl. $2 hevði longu tær umbidnu innstillingar fyri sjónligheit.",
 'revdelete-concurrent-change' => 'Ein feilur hendi, meðan tú dagførdi tekstin frá $1, kl. $2: Teksturin sær út til at vera blivin broyttur av onkrum øðrum, meðan tú royndi at rætta hann.',
+'revdelete-reason-dropdown' => '*Vanligar orsøkir til sletting
+** Brot á upphavsrætting
+** Ópassandi viðmerking ella persónlig kunning
+** Ósømiligt brúkaranavn
+** Upplýsingar sum kunnu vera ærumeiðandi',
 'revdelete-otherreason' => 'Onnur orsøk',
 'revdelete-reasonotherlist' => 'Onnur orsøk',
 'revdelete-edit-reasonlist' => 'Rætta strikingar orsøkir',
@@ -1136,6 +1158,7 @@ Tryggja tær, at henda broyting fer at varðveita framhaldssøguna hjá síðuni
 'compareselectedversions' => 'Bera saman valdar útgávur',
 'showhideselectedversions' => 'Vís/fjal valdu versjónir',
 'editundo' => 'afturstilla',
+'diff-empty' => '(Ongin munur)',
 'diff-multi' => '({{PLURAL:$1|Ein versjón herímillum|$1 versjónir sum liggja ímillum}} av {{PLURAL:$2|einum brúkara|$2 brúkarar}} ikki víst)',
 'diff-multi-manyusers' => '({{PLURAL:$1|Ein versjón sum liggur ímillum|$1 versjónir sum liggja ímillum}} skrivaðar av meira enn $2 {{PLURAL:$2|brúkara|brúkarum}} ikki víst)',
 
@@ -1317,6 +1340,7 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'prefs-displayrc' => 'Vís møguleikar',
 'prefs-displaysearchoptions' => 'Vís møguleikar',
 'prefs-displaywatchlist' => 'Vís møguleikar',
+'prefs-tokenwatchlist' => 'Lykil',
 'prefs-diffs' => 'Munir',
 
 # User preference: email validation using jQuery
@@ -1341,10 +1365,11 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'userrights-no-interwiki' => 'Tú hevur ikki loyvi til at rætta brúkara rættindi á øðrum wikium.',
 'userrights-nodatabase' => 'Dátugrunnurin $1 er ikki til ella er hann ikki lokalur.',
 'userrights-nologin' => 'Tú mást [[Special:UserLogin|rita inn]] sum administrator fyri at kunna áseta brúkararættindi.',
-'userrights-notallowed' => 'Tín konto hevur ikki loyvi til at seta ella taka burtur brúkara rættindi.',
+'userrights-notallowed' => 'Tú hevur ikki loyvi til at geva ella taka burtur brúkara rættindi.',
 'userrights-changeable-col' => 'Bólkar sum tú kanst broyta',
 'userrights-unchangeable-col' => 'Bólkar, ið tú ikki kanst broyta',
-'userrights-conflict' => 'Ósamsvar viðvíkjandi brúkararættindum! Vinarliga royn aftur at goyma tínar broytingar.',
+'userrights-conflict' => 'Ósamsvar viðvíkjandi broytingum í brúkararættindum! Vinarliga endurskoða og vátta tínar broytingar.',
+'userrights-removed-self' => 'Tað eydnaðist tær at taka burtur tíni egnu rættindi. Tí kanst tú ikki longur fáa atgongd til hesa síðuna.',
 
 # Groups
 'group' => 'Bólkur:',
@@ -1387,8 +1412,12 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'right-reupload-own' => 'Yvirskriva verandi fílur, sum tú hevur lagt upp',
 'right-upload_by_url' => 'Legg fílur upp frá einum URL',
 'right-autoconfirmed' => 'Skal ikki ávirkast av IP-baseraðum avmarkingum',
+'right-writeapi' => 'Nýtsla av skrivi-API',
 'right-delete' => 'Strika síður',
 'right-bigdelete' => 'Strika síður við nógvum versjónum',
+'right-deletelogentry' => 'Strika og endurstovna serstakir loggpostar',
+'right-deleterevision' => 'Strika og endurstovna serstakar versjónir av síðum',
+'right-deletedhistory' => 'Hygg eftir slettaðum versjónum, uttan tilhoyrandi tekstin',
 'right-deletedtext' => 'Sí strikaðan tekst og broytingar ímillum strikaðar endurskoðanir',
 'right-browsearchive' => 'Leita í strikaðum síðum',
 'right-undelete' => 'Endurstovnað eina síðu',
@@ -1400,6 +1429,7 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'right-unblockself' => 'Taka burtur sperring hjá sær sjálvum',
 'right-protect' => 'Broyt verjustøður og rætta kaskadu-vardar síður',
 'right-editprotected' => 'Rætta síður sum eru vardar sum "{{int:protect-level-sysop}}"',
+'right-editsemiprotected' => 'Rætta síður sum er vardar sum "{{int:protect-level-autoconfirmed}}"',
 'right-editinterface' => 'Rætta brúkaramarkamótið',
 'right-editusercssjs' => 'Rætta CSS og JavaScript fílur hjá øðrum brúkarum',
 'right-editusercss' => 'Rætta CSS fílur hjá øðrum brúkarum',
@@ -1407,6 +1437,10 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'right-editmyusercss' => 'Rætta tínar egnu brúkara CSS fílur',
 'right-editmyuserjs' => 'Rætta tínar egnu brúkara JavaScript fílur',
 'right-viewmywatchlist' => 'Síggj tín egna eftirlitslista',
+'right-editmywatchlist' => 'Rætta tín egna eftirlitslista. Legg til merkis at summar handlingar fara framvegis at leggja síður afturat sjálvt uttan hesi rættindi.',
+'right-viewmyprivateinfo' => 'Síggj tíni egnu privatu upplýsingar (t.d. teldupostadressu, veruligt navn)',
+'right-editmyprivateinfo' => 'Rætta tíni egnu privatu dáta (t.d. teldupost adresssu, veruligt navn)',
+'right-editmyoptions' => 'Rætta tínar egnu innstillingar',
 'right-rollback' => 'Rulla skjótt aftur (tak burtur) rættingarnar hjá tí seinasta brúkaranum á einari ávísari síðu',
 'right-markbotedits' => 'Markera afturrullaðar rættingar sum rættingar frá einum botti',
 'right-noratelimit' => 'Ikki ávirkað av hámarksferð',
@@ -1414,6 +1448,7 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'right-importupload' => 'Innflyt síður frá frá einari fílu sum er løgd út',
 'right-patrol' => 'Marka broytingar hjá øðrum sum eftirkannaðar',
 'right-autopatrol' => 'Hava eins egnu rættingar sjálvvirkamdi vístar sum eftirkannaðar',
+'right-patrolmarks' => 'Síggj tær seinastu eftirlitsmerktu broytingar',
 'right-unwatchedpages' => 'Sí lista við síðum sum ikki eru eftiransaðar',
 'right-mergehistory' => 'Samanflætta søguna hjá hesum síðum',
 'right-userrights' => 'Rætta øll brúkaraloyvir',
@@ -1444,7 +1479,9 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'action-movefile' => 'flyt hesa fílu',
 'action-upload' => 'send hesa fílu upp',
 'action-reupload' => 'yvirskriva hesa verandi fíluna',
+'action-reupload-shared' => 'seta hesa fíluna til síðis í eina felags goymslu',
 'action-upload_by_url' => 'legg henda fílin upp frá einari URL-adressu',
+'action-writeapi' => 'nýt skrivi-API',
 'action-delete' => 'Strika hesa síðu',
 'action-deleterevision' => 'sletta hesa versjónina',
 'action-deletedhistory' => 'hygg at strikingar søguni hjá hesi síðu',
@@ -1456,6 +1493,7 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'action-protect' => 'broyt verjustøðuna hjá hesi síðu',
 'action-rollback' => 'rulla skjótt aftur rættingarnar hjá tí seinasta brúkaranum, sum rættaði eina ávísa síðu',
 'action-import' => 'innflyt hesa síðu frá aðrari wiki',
+'action-importupload' => 'innflyt hesa síðuna frá einari fílu sum er løgd út',
 'action-patrol' => 'markað rætting hjá øðrum sum eftirhugda',
 'action-autopatrol' => 'fá tina rætting merkta sum eftirhugda',
 'action-unwatchedpages' => 'Síggj listan yvir síður sum ikki eru eftiransaðar',
@@ -1466,12 +1504,15 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'action-sendemail' => 'send teldupostar',
 'action-editmywatchlist' => 'rætta tín eftirlitslista',
 'action-viewmywatchlist' => 'síggja tín eftirlitslista',
+'action-viewmyprivateinfo' => 'hygg at tínari privatu kunning',
+'action-editmyprivateinfo' => 'rætta tína privatu kunning',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|broyting|broytingar}}',
 'recentchanges' => 'Seinastu broytingar',
 'recentchanges-legend' => 'Nýligar broytingar møguleikar',
 'recentchanges-summary' => 'Á hesi síðu kanst tú fylgja teimum nýggjastu broytingunum á hesi wiki.',
+'recentchanges-noresult' => 'Ongar broytingar í nevnda tíðarskeiðnum passa til hesi krøvini.',
 'recentchanges-feed-description' => "Við hesum feed'inum kanst tú fylgja teimum seinastu broytingunum á hesi wiki'ini.",
 'recentchanges-label-newpage' => 'Henda rætting upprættaði eina nýggja síðu',
 'recentchanges-label-minor' => 'Hetta er ein lítil rætting',
@@ -1552,6 +1593,8 @@ Vinarliga gev fíluni nýtt navn og royn at senda hana upp (uploada) enn einafer
 'filename-toolong' => 'Fílunøvn mugu ikki vera longri enn 240 bytes.',
 'badfilename' => 'Myndin er umnevnd til "$1".',
 'filetype-badmime' => 'Fílur av slagnum MIME "$1" eru ikki loyvd at verða send up (uploada).',
+'filetype-unwanted-type' => "'''\".\$1\"''' er eitt óynskt fíluslag.
+{{PLURAL:\$3|Ynskta fíluslag er|Ynskt fílusløg eru}} \$2.",
 'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|er ikki eitt loyvt fíluslag|eru ikki loyvd fílusløg}}.
 Loyvt/loyvd {{PLURAL:$3|fíluslag er|fílusløg eru}} $2.',
 'filetype-missing' => 'Fílan hevur ongan enda (sum t.d. ".jpg").',
@@ -1596,13 +1639,21 @@ Um tú álíkavæl ynskir at leggja út tína fílu, vinarliga far so aftur og v
 'fileexists-shared-forbidden' => 'Ein fíla við tí sama navninum finst longu í felags fílusavninum.
 Um tú enn ynskir at leggja út tína fílu, vinarliga far so aftur og vel eitt annað navn.
 [[File:$1|thumb|center|$1]]',
+'file-exists-duplicate' => 'Henda fílan er tann sama sum {{PLURAL:$1|henda fílan|hesar fílurnar}}:',
 'file-deleted-duplicate' => 'Ein fíla, sum er líka sum henda ([[:$1]]) er fyrr blivin strikað.
 Tú eigur at kanna eftir strikingarsøguna hjá hesi fílu, áðrenn tú heldur áframm við at leggja hana út enn einaferð.',
 'uploadwarning' => 'Ávaring',
+'uploadwarning-text' => 'Vinarliga broyt frágreiðingina fyri fíluna og royn umaftur.',
 'savefile' => 'Goym fílu',
 'uploadedimage' => 'sent "[[$1]]" upp',
 'overwroteimage' => 'legði út eina nýggja versjón av "[[$1]]"',
+'uploaddisabled' => 'Útleggjan av fílum er óvirkin.',
+'copyuploaddisabled' => 'Útleggjan frá URL er óvirkið.',
 'uploadfromurl-queued' => 'Tín útlegging er komin í bíðirøð.',
+'uploaddisabledtext' => 'Útleggjan av fílum er óvirkið.',
+'php-uploaddisabledtext' => 'Fíluútleggjan er óvirkið í PHP.
+Vinarliga kanna eftir innstillingunum fyri file_uploads.',
+'uploadscripted' => 'Henda fílan inniheldur HTML ella skriptkotu, sum í ávísum førum kunnu feillesast av einum internetkaga.',
 'uploadvirus' => 'Fílan inniheldur ein virus!
 Smálutir: $1',
 'upload-source' => 'Keldufíla',
@@ -1624,8 +1675,13 @@ Vinarliga vel eitt navn ið greiður eitt sindur frá til tína fílu.",
 
 $1',
 'upload-warning-subj' => 'Ávaring um upplótan',
+'upload-warning-msg' => 'Tað var ein trupulleiki við at leggja út frá [$2]. Tú kanst venda aftur til [[Special:Upload/stash/$1|upload formularin]] fyri at rætta henda trupulleikan.',
 
+'upload-proto-error' => 'Skeiv protokol',
+'upload-proto-error-text' => 'Fjarútleggjan krevur netadressur sum byrja við <code>http://</code> ella <code>ftp://</code>.',
 'upload-file-error' => 'Innvortis brek',
+'upload-file-error-text' => 'Ein innanhýsis feilur hendi, tá ein roynd var gjørd at upprætta eina fyribils fílu á ambætaranum.
+Vinarliga set teg í samband við ein [[Special:ListUsers/sysop|administrator]].',
 'upload-misc-error' => 'Ókend villa tá tú legði út',
 'upload-misc-error-text' => "Ein ókend villa fór fram meðan tú legði út.
 Vinariga vátta, at URL'urin er gyldugur og atkomuligur og royn aftur.
@@ -1656,6 +1712,7 @@ Um trupulleikin heldur fram, set teg so vinarliga í samband við ein [[Special:
 'backend-fail-readonly' => 'Goymslu backend "$1" er í løtuni í "bara-lesa" støðu. Orsøkin til hetta er: "\'\'$2\'\'"',
 'backend-fail-connect' => 'Tað bar ikki til at fáa samband við goymslu-backend "$1".',
 'backend-fail-internal' => 'Ein ókendur feilur hendi í goymsluskipanini (backend) "$1".',
+'backend-fail-contenttype' => 'Tað bar ikki til at avgera slagi av fíluni ið skuldi goymast á "$1".',
 
 # Lock manager
 'lockmanager-notlocked' => 'Kundi ikki lata upp "$1"; hon er ikki stongd.',
@@ -1777,12 +1834,14 @@ Kanska ynskir tú at rætta frágreiðingina til fíluna á [$2 fílu frágreið
 'filedelete-success' => "'''$1''' er blivin strikað.",
 'filedelete-success-old' => "Versjónin av '''[[Media:$1|$1]]''' frá kl. $3, hin $2 er blivið strikað.",
 'filedelete-nofile' => "'''$1''' er ikki til.",
+'filedelete-nofile-old' => "Tað er ongin goymd versjón av '''$1''' við teimum nevndu eginleikunum.",
 'filedelete-otherreason' => 'Onnur/aðrar orsøkir:',
 'filedelete-reason-otherlist' => 'Onnur orsøk',
 'filedelete-reason-dropdown' => '*Vanligar orsøkir til sletting
 ** Brot á upphavsrættin
 ** Fílan kemur fyri tvær ferðir',
 'filedelete-edit-reasonlist' => 'Rætta orsøkina til striking',
+'filedelete-maintenance' => 'Orsakað av viðlíkahaldsarbeiði eru sletting og endurstovnan av fílum fyribils óvirkin.',
 'filedelete-maintenance-title' => 'Ógjørligt at sletta fílu',
 
 # MIME search
@@ -1798,13 +1857,24 @@ Kanska ynskir tú at rætta frágreiðingina til fíluna á [$2 fílu frágreið
 
 # Unused templates
 'unusedtemplates' => 'Óbrúktar fyrimyndir',
+'unusedtemplatestext' => 'Henda síðan hevur ein lista við øllum síðum í {{ns:template}} navnarúminum, sum ikki eru á aðrari síðu.
+Minst til at kanna eftir um aðrar síður slóða til fyrimyndirnar, áðrenn tú slettar tær.',
 'unusedtemplateswlh' => 'aðrar slóðir',
 
 # Random page
 'randompage' => 'Tilvildarlig síða',
+'randompage-nopages' => 'Tað eru ongar síður í hesum {{PLURAL:$2|navnarúminum|navnarúmunum}}: $1.',
+
+# Special:RandomInCategory
+'randomincategory' => 'Tilvildarlig síða í bólkinum',
+'randomincategory-invalidcategory' => '"$1" kann ikki brúkast sum bólkaheiti.',
+'randomincategory-nopages' => 'Tað eru ongar síður í [[:Category:$1]].',
+'randomincategory-selectcategory' => 'Fá tilvildarliga síðu frá bólki: $1 $2.',
+'randomincategory-selectcategory-submit' => 'Far',
 
 # Random redirect
 'randomredirect' => 'Tilvildarlig ávísingarsíða',
+'randomredirect-nopages' => 'Tað eru ongar víðaristillingar til navnarúmið "$1".',
 
 # Statistics
 'statistics' => 'Hagtøl',
@@ -1817,15 +1887,28 @@ Kanska ynskir tú at rætta frágreiðingina til fíluna á [$2 fílu frágreið
 'statistics-pages' => 'Síður',
 'statistics-pages-desc' => 'Allar síður í wiki, kjaksíður, ávísingar og so framvegis rokna uppí',
 'statistics-files' => 'Fílur lagdar upp',
+'statistics-edits' => 'Síðurættingar síðan {{SITENAME}} varð stovnað',
 'statistics-edits-average' => 'Miðal rættingar pr. síðu',
+'statistics-views-total' => 'Sýningar tilsamans',
+'statistics-views-total-desc' => 'Sýningar á síðum ið ikki eru til longur og á serstakar síður eru ikki taldar við',
+'statistics-views-peredit' => 'Sýningar fyri hvørja rætting',
 'statistics-users' => 'Skrásettir [[Special:ListUsers|brúkarir]]',
 'statistics-users-active' => 'Virknir brúkarir',
+'statistics-users-active-desc' => 'Brúkarar ið hava framt eina handling seinasta/u {{PLURAL:$1|døgnið|$1 dagarnar}}',
 'statistics-mostpopular' => 'Mest sæddu síður',
 
 'disambiguations' => 'Síður sum vísa til síður við fleirfaldum týdningi',
 'disambiguationspage' => 'Template:fleiri týdningar',
-
+'disambiguations-text' => "Hesar síður innihalda í minsta lagi ein leinkju til eina '''síðu við fleiri týdningum'''.
+Tær eiga heldur at slóða til ein meira passandi síðu í staðin.<br />
+Ein síða verður sædd sum ein síða við fleiri týdningum, um hon brúkar eina fyrimynd, sum slóðar frá [[MediaWiki:Disambiguationspage]].",
+
+'pageswithprop' => 'Síður við síðueginleika',
+'pageswithprop-legend' => 'Síður við einum síðueginleika',
+'pageswithprop-text' => 'Henda síðan vísir síður ein lista yvir síður, sum hava ein serstakan síðueginleika.',
+'pageswithprop-prop' => 'Navn á eginleika:',
 'pageswithprop-submit' => 'Far',
+'pageswithprop-prophidden-long' => 'langur tekstur eginleikavirði er fjalt ($1 kilobytes)',
 
 'doubleredirects' => 'Tvífaldað ávísing',
 'doubleredirectstext' => 'Henda síða gevur yvirlit yvir síður, sum vísa víðari til aðrar víðaristillaðar síður.
@@ -1843,6 +1926,7 @@ Víðaristilling verður nú gjørd til [[$2]].',
 
 'withoutinterwiki' => 'Síður uttan málslóðir',
 'withoutinterwiki-summary' => 'Fylgjandi síður slóða ikki til útgávur á øðrum málum:',
+'withoutinterwiki-legend' => 'Prefiks',
 'withoutinterwiki-submit' => 'Skoða',
 
 'fewestrevisions' => 'Greinir við minstum útgávum',
@@ -1853,6 +1937,7 @@ Víðaristilling verður nú gjørd til [[$2]].',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikiir}}',
 'nlinks' => '$1 {{PLURAL:$1|slóð|slóðir}}',
 'nmembers' => '$1 {{PLURAL:$1|limur|limir}}',
+'nrevisions' => '$1 {{PLURAL:$1|versjón|versjónir}}',
 'nviews' => '$1 {{PLURAL:$1|skoðan|skoðanir}}',
 'nimagelinks' => 'Brúkt á $1 {{PLURAL:$1|síðu|síðum}}',
 'ntransclusions' => 'brúkt á $1 {{PLURAL:$1|síðu|síðum}}',
@@ -1868,6 +1953,7 @@ Víðaristilling verður nú gjørd til [[$2]].',
 'popularpages' => 'Umtóktar síður',
 'wantedcategories' => 'Ynsktir bólkar',
 'wantedpages' => 'Ynsktar síður',
+'wantedpages-badtitle' => 'Ógyldugt heiti í úrslitunum: $1',
 'wantedfiles' => 'Ynsktar fílir',
 'wantedtemplates' => 'Ynsktar fyrimyndir',
 'mostlinked' => 'Síður við flest ávísingum',
@@ -1878,11 +1964,15 @@ Víðaristilling verður nú gjørd til [[$2]].',
 'mostinterwikis' => 'Síður við flestum interwiki-slóðum',
 'mostrevisions' => 'Greinir við flestum útgávum',
 'prefixindex' => 'Allar síður við forskoyti (prefiks)',
+'prefixindex-namespace' => 'Allar síður við prefiksi (navnarúmið $1)',
+'prefixindex-strip' => 'Tak burtur prefiks í listanum',
 'shortpages' => 'Stuttar síður',
 'longpages' => 'Langar síður',
 'deadendpages' => 'Gøtubotnssíður',
 'deadendpagestext' => 'Hesar síðurnar slóða ikki til aðrar síður í {{SITENAME}}.',
 'protectedpages' => 'Friðaðar síður',
+'protectedpages-indef' => 'Bert verjur sum vara óendaligt',
+'protectedpages-cascade' => 'Bert niðurarvaðar verjur',
 'protectedpagestext' => 'Hesar síður eru vardar móti flyting ella rætting',
 'protectedpagesempty' => 'Ongar síður eru í løtuni vardar á henda hátt.',
 'protectedtitles' => 'Vard heiti',
@@ -1900,6 +1990,7 @@ Víðaristilling verður nú gjørd til [[$2]].',
 'movethispage' => 'Flyt hesa síðuna',
 'unusedimagestext' => 'Fylgjandi fílur eru til, men eru ikki lagdar inn á nakra síðu.
 Vinarliga legg merki til, at vevsíður kunnu slóða til eina fílu við beinleiðis URL, og tí kann hon enn síggjast her, hóast at hon er í regluligari nýtslu.',
+'unusedcategoriestext' => 'Hesar bólkasíður eru til, sjálvt um ongin onnur síða ella bólkur brúkar tær.',
 'notargettitle' => 'Onki mál',
 'nopagetext' => 'Síðan ið tú leitar eftir er ikki til.',
 'pager-newer-n' => '{{PLURAL:$1|nýggjari 1|nýggjari $1}}',
@@ -1918,23 +2009,40 @@ Vinarliga legg merki til, at vevsíður kunnu slóða til eina fílu við beinle
 'all-logs-page' => 'Allir almennir loggar',
 'alllogstext' => 'Samansett sýning av øllum atkomuligum loggum hjá {{SITENAME}}.
 Tú kanst avmarka sýningina við at velja slag av loggi, brúkaranavn (sum er følsamt fyri stórum og lítlum bókstavum) ella ávirkaðu síðuna (sum eisini er følsom fyri stórum og lítlum bókstavum).',
+'log-title-wildcard' => 'Leita í heitum sum byrja við hesum teksti',
+'showhideselectedlogentries' => 'Vís/fjal útvaldu loggarnir',
 
 # Special:AllPages
 'allpages' => 'Allar síður',
 'alphaindexline' => '$1 til $2',
 'nextpage' => 'Næsta síða ($1)',
 'prevpage' => 'Fyrrverandi síða ($1)',
+'allpagesfrom' => 'Vís síður sum byrja við:',
+'allpagesto' => 'Vís síður sum enda við:',
 'allarticles' => 'Allar greinir',
 'allinnamespace' => 'Allar síður ($1 navnarúm)',
+'allnotinnamespace' => 'Allar síður (tó ikki í $1 navnarúminum)',
 'allpagesprev' => 'Undanfarnu',
 'allpagesnext' => 'Næstu',
 'allpagessubmit' => 'Far',
+'allpagesprefix' => 'Vís síður við prefiksi:',
+'allpagesbadtitle' => 'Síðuheitið ið tú skrivaði var skeivt ella hevði eitt inter-málsligt ella inter-wiki prefiks.
+Tað inniheldur møguliga ein ella fleiri bókstavir ella tekn sum ikki kunnu nýtast í síðuheitum.',
+'allpages-bad-ns' => '{{SITENAME}} hevur ikki navnarúmið "$1".',
+'allpages-hide-redirects' => 'Vís ikki umstillingar',
+
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Tú sær eina støðumynd av hesi síðu, sum kann vera upp til $1 gomul.',
+'cachedspecial-viewing-cached-ts' => 'Tú hyggur eftir einari støðumynd (cached version) av hesi síðu, sum kann vera ikki heilt dagførd.',
+'cachedspecial-refresh-now' => 'Síggj seinastu.',
 
 # Special:Categories
 'categories' => 'Bólkar',
 'categoriespagetext' => 'Fylgjandi {{PLURAL:$1|bólkur inniheldur|bólkar innihalda}} síður ella miðlar (media).
 [[Special:UnusedCategories|Ikki brúktir bólkar]] eru ikki vístar her.
 Sí eisini [[Special:WantedCategories|ynsktir bólkar]].',
+'categoriesfrom' => 'Vís bólkar, byrja við:',
+'special-categories-sort-abc' => 'uppdeil í bókstavarøð',
 
 # Special:DeletedContributions
 'deletedcontributions' => 'Slettaði brúkaraíkøst',
@@ -1942,6 +2050,8 @@ Sí eisini [[Special:WantedCategories|ynsktir bólkar]].',
 'sp-deletedcontributions-contribs' => 'íkøst',
 
 # Special:LinkSearch
+'linksearch' => 'Leitan í uttanhýsis slóðum',
+'linksearch-pat' => 'Leita eftir leinkjum til:',
 'linksearch-ns' => 'Navnarúm:',
 'linksearch-ok' => 'Leita',
 'linksearch-line' => '$1 slóðar frá $2',
@@ -1950,6 +2060,7 @@ Sí eisini [[Special:WantedCategories|ynsktir bólkar]].',
 'listusersfrom' => 'Vís brúkarar ið byrja við:',
 'listusers-submit' => 'Sýna',
 'listusers-noresult' => 'Ongin brúkari var funnin.',
+'listusers-blocked' => '(sperraður/sperrað)',
 
 # Special:ActiveUsers
 'activeusers' => 'Listi yvir aktivar brúkarar',
@@ -2019,7 +2130,9 @@ Teldupost adressan sum tú skrivaði í [[Special:Preferences|tíni brúkara yns
 'mywatchlist' => 'Eftirlitslisti',
 'watchlistfor2' => 'Fyri $1 $2',
 'nowatchlist' => 'Tú hevur ongar lutir í eftirlitinum.',
+'watchlistanontext' => 'Vinarliga $1 fyri at síggja ella rætta lutir í tínum eftirlitslista.',
 'watchnologin' => 'Tú hevur ikki ritað inn',
+'watchnologintext' => 'Tú mást vera [[Special:UserLogin|innritað/ur]] fyri at broyta tín eftirlitslista.',
 'addwatch' => 'Legg til eftirlitslista',
 'addedwatchtext' => 'Síðan  "[[:$1]]" er løgd undir [[Special:Watchlist|eftirlitslistan]] hjá tær.
 Framtíðar broytingar á hesi síðu og tilknýttu kjaksíðuni verða at síggja har.',
@@ -2030,9 +2143,14 @@ Framtíðar broytingar á hesi síðu og tilknýttu kjaksíðuni verða at sígg
 'unwatch' => 'strika eftirlit',
 'unwatchthispage' => 'Halt uppat við at hava eftirlit',
 'notanarticle' => 'Ongin innihaldssíða',
+'notvisiblerev' => 'Seinasta versjón av einum øðrum brúkara er blivin slettað',
 'watchlist-details' => '{{PLURAL:$1|$1 síða|$1 síður}} á tínum vaktarlista, kjaksíður ikki íroknaðar.',
+'wlheader-enotif' => 'Tað ber nú til at senda teldupost.',
+'wlheader-showupdated' => "Síður sum eru broyttar síðan tú seinast vitjaði tær, eru vístar við '''feitum'''.",
+'watchmethod-recent' => 'kanna eftir nýligum rættingum á eftirlitssíðum',
 'watchmethod-list' => 'kannar síður undir eftirliti fyri feskar broytingar',
 'watchlistcontains' => 'Títt eftirlit inniheldur {{PLURAL:$1|eina síðu|$1 síður}}.',
+'iteminvalidname' => "Trupulleiki við luti '$1', ógyldugt navn...",
 'wlnote' => "Niðanfyri {{PLURAL:$1|stendur seinasta broytingin|standa seinastu '''$1''' broytingarnar}} seinasta/u {{PLURAL:$2| tíman|'''$2''' tímarnar}} hin $3 kl. $4",
 'wlshowlast' => 'Vís seinastu $1 tímar $2 dagar $3',
 'watchlist-options' => 'Møguleikar í ansingarlistanum',
@@ -2040,7 +2158,9 @@ Framtíðar broytingar á hesi síðu og tilknýttu kjaksíðuni verða at sígg
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Eftirlitir...',
 'unwatching' => 'Strikar eftirlit...',
+'watcherrortext' => 'Ein feilur hendi, meðan tú royndi at broyta innstillingarnar fyri tín eftirlitslista fyri "$1".',
 
+'enotif_mailer' => '{{SITENAME}} fráboðanarmeylur',
 'enotif_reset' => 'Markera allar síður sum vitjaðar',
 'enotif_impersonal_salutation' => '{{SITENAME}}brúkari',
 'enotif_subject_deleted' => '{{SITENAME}} síðan $1 er blivin {{GENDER:$2|slettað}} av $2',
@@ -2049,6 +2169,10 @@ Framtíðar broytingar á hesi síðu og tilknýttu kjaksíðuni verða at sígg
 'enotif_subject_restored' => '{{SITENAME}} síðan $1 er blivin {{GENDER:$2|endurupprættað}} av $2',
 'enotif_subject_changed' => '{{SITENAME}} síðan $1 er blivin {{GENDER:$2|broytt}} av $2',
 'enotif_body_intro_deleted' => '{{SITENAME}} síðan $1 er blivin {{GENDER:$2|slettað}} $PAGEEDITDATE av $2, sí $3.',
+'enotif_body_intro_created' => '{{SITENAME}} síðan $1 er blivin {{GENDER:$2|upprættað}} hin $PAGEEDITDATE av $2, sí $3 fyri at síggja tað nýggjastu versjónina.',
+'enotif_body_intro_moved' => '{{SITENAME}} síðan $1 er blivin {{GENDER:$2|flutt}} hin $PAGEEDITDATE av $2, sí $3 fyri at síggja nýggjastu versjónina.',
+'enotif_body_intro_restored' => '{{SITENAME}} síðan $1 varð {{GENDER:$2|endurstovnað}} hin $PAGEEDITDATE av $2, sí $3 fyri at síggja nýggjastu versjóninina.',
+'enotif_body_intro_changed' => '{{SITENAME}} síðan $1 varð {{GENDER:$2|broytt}} hin $PAGEEDITDATE av $2, sí $3 fyri at síggja nýggjastu versjónina.',
 'enotif_lastvisited' => 'Sí $1 fyri allar broytingar síðan tína seinastu vitjan.',
 'enotif_lastdiff' => 'Sí $1 fyri at síggja hesa broyting.',
 'enotif_anon_editor' => 'dulnevndur brúkari $1',
@@ -2107,20 +2231,53 @@ Seinasta broytingin á síðuni var av [[User:$3|$3]] ([[User talk:$3|kjak]]{{in
 'rollback-success' => 'Tók burtur rættingar hjá $1;
 broytti tað aftur til seinastu versjón hjá $2.',
 
+# Edit tokens
+'sessionfailure-title' => 'Sesjónsfeilur',
+'sessionfailure' => 'Tað sær út til at vera ein trupulleiki við tínari innritanar sesjón; henda handlingin var ógildað sum fyribirgingar handling móti kapring av sesjónini.
+Far aftur til ta fyrru síðuna, uppfríska síðuna og royn so aftur.',
+
 # Protect
 'protectlogpage' => 'Friðingarbók',
+'protectlogtext' => 'Niðanfyri er ein listi yvir broytingar til verju av síðum.
+Sí [[Special:ProtectedPages|listan fyri vardar síður]] fyri at síggja listan yvir síður sum í løtuni er vardar.',
 'protectedarticle' => 'friðaði "[[$1]]"',
+'modifiedarticleprotection' => 'broytti verjustøðuna fyri "[[$1]]"',
 'unprotectedarticle' => 'strikaði friðing á "[[$1]]"',
+'movedarticleprotection' => 'flutti verjuinnstillingar frá "[[$2]]" til "[[$1]]"',
 'protect-title' => 'Friðar "$1"',
+'protect-title-notallowed' => 'Sí verjustøðuna fyri "$1"',
 'prot_1movedto2' => '$1 flutt til $2',
+'protect-badnamespace-title' => 'Navnarúm ið ikki kann verjast',
+'protect-badnamespace-text' => 'Síður í navnarúminum kunnu ikki verjast.',
+'protect-norestrictiontypes-text' => 'Henda síðan kann ikki verða vard, tí tað eru ongar avmarkingar tøkar.',
+'protect-norestrictiontypes-title' => 'Síða sum ikki kann verjast',
 'protect-legend' => 'Vátta friðing',
 'protectcomment' => 'Orsøk:',
 'protectexpiry' => 'Gongur út:',
+'protect-text' => "Her kanst tú síggja og broyta verjustøðuna fyri síðuna '''$1'''.",
+'protect-locked-blocked' => "Tú kanst ikki broyta verjustøðu á síðu, meðan tú ert sperrað/ur.
+Her er aktuella innstillingin hjá síðuni '''$1''':",
 'protect-default' => 'Loyv øllum brúkarum',
 'protect-fallback' => 'Loyv bert brúkarum við "$1" loyvi',
 'protect-level-autoconfirmed' => 'Loyv bert autováttaðum brúkarum',
 'protect-level-sysop' => 'Loyv bert umboðsstjórum',
+'protect-summary-cascade' => 'niðurarvað',
 'protect-expiring' => 'gongur út $1 (UTC)',
+'protect-expiring-local' => 'gongur út $1',
+'protect-expiry-indefinite' => 'óavmarkaða tíð',
+'protect-cascade' => 'Veit verju til síður sum eru nevndar á hesi síðu (niðurarvað verja)',
+'protect-cantedit' => 'Tú kanst ikki broyta verjustøðuna hjá hesi síðu, tí tú hevur ikki rætt til at skriva/rætta hana.',
+'protect-othertime' => 'Annað tíðarskeið:',
+'protect-othertime-op' => 'annað tíðarskeið',
+'protect-existing-expiry' => 'Í løtuni gongur tíðin út: $3, $2',
+'protect-otherreason' => 'Onnur orsøk:',
+'protect-otherreason-op' => 'Aðrar orsøkir',
+'protect-dropdown' => '*Vanligar orsøkir til verju
+** Afturvendandi herverk
+** Afturvendandi spamming
+** Redaktiónskríggj
+** Síða sum hevur sera nógv vitjandi',
+'protect-edit-reasonlist' => 'Orsøkir til at síðan er vard móti rættingum',
 'protect-expiry-options' => '1 tími:1 hour,1 dagur:1 day,1 vika:1 week,2 vikur:2 weeks,1 mánaður:1 month,3 mánaðir:3 months,6 mánaðir:6 months,1 ár:1 year,óendaligt:infinite',
 'restriction-type' => 'Verndstøða:',
 'restriction-level' => 'Verjustig',
@@ -2134,20 +2291,48 @@ broytti tað aftur til seinastu versjón hjá $2.',
 'restriction-create' => 'Upprætta',
 'restriction-upload' => 'Legg upp',
 
+# Restriction levels
+'restriction-level-sysop' => 'fult vard',
+'restriction-level-autoconfirmed' => 'hálvt vard',
+'restriction-level-all' => 'eitt hvørt stig',
+
 # Undelete
 'undelete' => 'Endurstovna strikaðar síður',
+'undeletepage' => 'Síggj og endurstovna slettaðar síður',
+'undeletepagetitle' => "'''Fylgjandi inniheldur slettaðar versjónir av [[:$1|$1]]'''.",
+'viewdeletedpage' => 'Síggj slettaðar síður',
+'undeletepagetext' => 'Fylgjandi {{PLURAL:$1|síða er blivin slettað men er|$1 síður eru blivnar slettaðar men eru}} enn í goymsluni og kann/kunnu endurstovnast.
+Goymslan kann til tíðir verða reinsað út (slettað).',
+'undelete-fieldset-title' => 'Endurstovnað versjónir',
+'undelete-revision' => 'Slettað versjón av $1 (frá $4 kl. $5) av $3:',
+'undelete-nodiff' => 'Ongin eldri versjón varð funnin.',
 'undeletebtn' => 'Endurstovna',
 'undeletelink' => 'síggj/endurstovna',
 'undeleteviewlink' => 'Hygg',
 'undeletereset' => 'Endurset',
+'undeleteinvert' => 'Umvent val',
 'undeletecomment' => 'Orsøk:',
+'undeletedrevisions' => '{{PLURAL:$1|1 versjón|$1 versjónir}} endurstovnað/ar',
+'undeletedrevisions-files' => '{{PLURAL:$1|1 versjón|$1 versjónir}} og {{PLURAL:$2|1 fíla|$2 fílur}} endurstovnað/ar',
 'undeletedfiles' => '{{PLURAL:$1|1 fíla endurstovna|$1 fílur endurstovnaðar}}',
+'cannotundelete' => 'Endurstovnan miseydnaðist:
+$1',
+'undeletedpage' => "'''$1 er endurstovnað'''
+
+Sí [[Special:Log/delete|slettingarloggin]] fyri at síggja seinastu strikingar og endurstovningar.",
+'undelete-header' => 'Far til [[Special:Log/delete|slettingarloggin]] fyri at síggja nýliga slettaðar síður.',
+'undelete-search-title' => 'Leita eftir slettaðum síðum',
+'undelete-search-box' => 'Leita eftir slettaðum síðum',
+'undelete-search-prefix' => 'Vís síður sum byrja við:',
 'undelete-search-submit' => 'Leita',
+'undelete-no-results' => 'Ongar síður sum passaðu til vóru funnar í arkivinum yvir slettaðar síður.',
 'undelete-show-file-submit' => 'Ja',
 
 # Namespace form on various pages
 'namespace' => 'Navnarúm:',
 'invert' => 'Umvend val',
+'namespace_association' => 'Tilknýtt navnarúm',
+'tooltip-namespace_association' => 'Set kross í henda kassan soleiðis at kjak- ella evnisnavnarúm, sum hava samband við tað valda navnarúmið, eisini vera tikin við',
 'blanknamespace' => '(Greinir)',
 
 # Contributions
@@ -2160,10 +2345,18 @@ broytti tað aftur til seinastu versjón hjá $2.',
 'year' => 'Frá ár (og áðrenn):',
 
 'sp-contributions-newbies' => 'Vís bert íkast frá nýggjum kontoum',
+'sp-contributions-newbies-sub' => 'Fyri nýggjar kontur',
+'sp-contributions-newbies-title' => 'Brúkaraíkøst viðvíkjandi nýggjum kontum',
 'sp-contributions-blocklog' => 'bannagerðabók',
+'sp-contributions-deleted' => 'slettaði brúkaraíkøst',
 'sp-contributions-uploads' => 'uploads',
 'sp-contributions-logs' => 'gerðalistar (logglistar)',
 'sp-contributions-talk' => 'kjak',
+'sp-contributions-userrights' => 'stýring av brúkararættindum',
+'sp-contributions-blocked-notice' => 'Hesin brúkarin er í løtuni sperraður.
+Tann seinasti sperringarloggurin verður vístur niðanfyri til kunningar:',
+'sp-contributions-blocked-notice-anon' => 'Henda IP adressan er í løtuni sperrað.
+Tann seinasti sperringarloggurin verður vístur niðanfyri til kunningar:',
 'sp-contributions-search' => 'Leita eftir íkøstum',
 'sp-contributions-username' => 'IP adressa ella brúkaranavn:',
 'sp-contributions-toponly' => 'Vís bara rættingar sum eru tær seinastu versjónirnar',
@@ -2175,6 +2368,7 @@ broytti tað aftur til seinastu versjón hjá $2.',
 'whatlinkshere-page' => 'Síða:',
 'linkshere' => "Hesar síður slóða til '''[[:$1]]''':",
 'nolinkshere' => "Ongar síður slóða til '''[[:$1]]'''.",
+'nolinkshere-ns' => "Ongar síður slóða til '''[[:$1]]''' í tí valda navnarúminum.",
 'isredirect' => 'ávísingarsíða',
 'istemplate' => 'leggjast innan í',
 'isimage' => 'fílu slóð',
@@ -2194,42 +2388,111 @@ broytti tað aftur til seinastu versjón hjá $2.',
 'blockip-title' => 'Sperra brúkara',
 'blockip-legend' => 'Sperra brúkara',
 'ipadressorusername' => 'IP-adressa ella brúkaranavn:',
+'ipbexpiry' => 'Gongur út:',
 'ipbreason' => 'Orsøk:',
 'ipbreasonotherlist' => 'Onnur orsøk',
+'ipbreason-dropdown' => '*Vanligar orsøkir fyri sperring
+** Innsetan av følskum upplýsingum
+** Tekur burtur innihald av síðum
+** Spammar leinkjur til uttanhýsis síður
+** Skrivar tvætl á síður
+** Ber seg skeivt at/ger seg inn á brúkarar
+** Misnýtir fleiri kontur
+** Brúkaranavn ið ikki kann góðtakast',
+'ipb-hardblock' => 'Forða innritaðum brúkarum at skriva/rætta frá hesi IP adressuni',
+'ipbcreateaccount' => 'Forða fyri upprættan av konto',
+'ipbemailban' => 'Forða brúkara at senda teldupost',
+'ipbenableautoblock' => 'Sperrað sjálvvirkandi tað seinastu IP adressuna, sum hesin brúkari brúkti og allar fylgjandi IP adressur, sum viðkomandi roynir at rætta/skriva frá',
 'ipbsubmit' => 'Banna henda brúkaran',
+'ipbother' => 'Annað tíðarskeið:',
 'ipboptions' => '2 tímar:2 hours, 1 dagur:1 day, 3 dagar:3 days, 1 vika:1 week, 2 vikur:2 weeks, 1 mánaður:1 month, 3 mánaðir:3 months, 6 mánaðir:6 months, 1 ár:1 year, óendaligt:infinite',
+'ipbotheroption' => 'annað',
+'ipbotherreason' => 'Onnur orsøk:',
+'ipbhidename' => 'Fjal brúkaranavn í rættingum og listum',
+'ipbwatchuser' => 'Halt eyga við brúkara og kjaksíðum hjá hesum brúkara',
+'ipb-disableusertalk' => 'Forða hesum brúkaranum at rætta sína egnu kjaksíðu, meðan viðkomandi er sperrað/ur',
+'ipb-change-block' => 'Endurnýggja sperringina av hesum brúkara við hesum innstillingum',
+'ipb-confirm' => 'Vátta sperring',
 'badipaddress' => 'Ógyldug IP-adressa',
 'blockipsuccesssub' => 'Banning framd',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] er blivin sperraður.<br />
+Sí [[Special:BlockList|sperringarlistan]] fyri at síggja allar sperringar.',
+'ipb-blockingself' => 'Tú ert í ferð við at sperra teg sjálvan! Ert tú vís/ur í at tú ynskir at gera tað?',
+'ipb-edit-dropdown' => 'Rætta orsøkir til sperring',
 'ipb-unblock-addr' => 'Óbanna $1',
+'ipb-unblock' => 'Tak burtur sperring frá einum brúkaranavni ella IP adressu',
+'ipb-blocklist' => 'Vís allar verandi sperringar',
+'ipb-blocklist-contribs' => 'Íkøst hjá $1',
+'unblockip' => 'Tak burtur sperring av brúkara',
 'ipusubmit' => 'Strika hesa blokaduna',
 'unblocked' => '[[User:$1|$1]] er ikki blokkaður longur',
+'unblocked-range' => '$1 er ikki longur sperraður.',
+'unblocked-id' => 'Sperring $1 er tikin burtur.',
+'blocklist' => 'Sperraðir brúkarar',
 'ipblocklist' => 'Bannaðir brúkarar',
 'ipblocklist-legend' => 'Finn ein sperraðan brúkara',
 'blocklist-userblocks' => 'Fjal sperringar av kontum',
 'blocklist-tempblocks' => 'Fjal fyribils sperringar',
 'blocklist-addressblocks' => 'Fjal einkult IP sperringar',
+'blocklist-expiry' => 'Gongur út',
+'blocklist-by' => 'Administrator ið sperraði',
+'blocklist-reason' => 'Orsøk',
 'ipblocklist-submit' => 'Leita',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Onnur sperring|Aðrar sperringar}}',
+'infiniteblock' => 'óendaligt',
 'expiringblock' => 'gongur út $1kl. $2',
 'anononlyblock' => 'anon. bara',
+'blocklist-nousertalk' => 'kann ikki skriva á sína egnu kjaksíðu',
+'ipblocklist-empty' => 'Sperringslistin er tómur.',
+'ipblocklist-no-results' => 'Umbidnað IP adressan ella brúkaranavnið er ikki sperrað.',
 'blocklink' => 'banna',
 'unblocklink' => 'óbanna',
 'change-blocklink' => 'broyt blokkering',
 'contribslink' => 'íkøst',
+'emaillink' => 'send teldupost',
+'autoblocker' => 'Sjálvvirkandi sperring tí at tín IP adressa nýliga er blivin brúkt av "[[User:$1|$1]]".
+Orsøkin ið varð nevnd fyri at sperra $1 er "\'\'$2\'\'"',
 'blocklogpage' => 'Bannagerðabók',
+'blocklog-showlog' => 'Hesin brúkarin hevur fyrr verið sperraður.
+Sperringarloggurin er vístur niðanfyri til kunningar:',
 'blocklogentry' => 'sperring [[$1]]  sum varir til $2 $3',
+'reblock-logentry' => 'broytti innstillingina fyri sperring av [[$1]] sum varðir fram til $2 $3',
 'unblocklogentry' => 'óbannaði $1',
+'block-log-flags-anononly' => 'bert dulnevndir brúkarar',
 'block-log-flags-nocreate' => 'upprætting av brúkarakonto er sperrað',
+'block-log-flags-noautoblock' => 'sjálvvirkandi sperring ikki virkin',
+'block-log-flags-noemail' => 'tú kanst ikki senda teldupost',
+'block-log-flags-nousertalk' => 'tú kanst ikki skriva á tína egnu kjaksíðu',
+'block-log-flags-hiddenname' => 'brúkaranavnið er fjalt',
+'ipb_already_blocked' => '"$1" er longu sperrað/ur',
+'ipb-needreblock' => '$1 er longu sperraður. Ynskir tú at broyta innstillingarnar?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Onnur sperring|Aðrar sperringar}}',
+'unblock-hideuser' => 'Tú kanst ikki taka burtur sperringina hjá hesum brúkara, eftirsum brúkaranavnið hjá viðkomandi er fjalt.',
+'blockme' => 'Sperra meg',
+'proxyblocker' => 'Proxy sperring',
+'proxyblocker-disabled' => 'Henda funksjónin er ikki virkin.',
 'proxyblocksuccess' => 'Liðugt.',
 
 # Developer tools
+'lockdb' => 'Stong dátagrunn',
+'unlockdb' => 'Lat dátagrunnin upp',
 'lockdbtext' => 'At læsa dátugrunnin steðgar møguleikanum hjá øllum
 brúkarum at broyta síður, broyta innstillingar sínar, broyta sínar eftirlitslistar og
 onnur ting, ið krevja broytingar í dátugrunninum.
 Vinarliga vátta, at hetta er tað, ið tú ætlar at gera, og at tú fert
 at læsa dátugrunnin upp aftur tá ið viðgerðin er liðug.',
+'lockconfirm' => 'Ja, eg vil veruliga stongja dátagrunnin.',
+'unlockconfirm' => 'Ja, eg vil veruliga læsa dátagrunnin upp.',
+'lockbtn' => 'Stong dátagrunnin',
+'unlockbtn' => 'Læs upp dátagrunnin',
 'locknoconfirm' => 'Tú krossaði ikki váttanarkassan.',
+'lockdbsuccesssub' => 'Tað eydnaðist at stongja dátagrunnin',
+'unlockdbsuccesssub' => 'Dátagrunnurin er opin',
 'lockdbsuccesstext' => 'Dátugrunnurin er læstur.
 <br />Minst til at [[Special:UnlockDB|læsa upp]] aftur, tá ið viðgerðin er liðug.',
+'unlockdbsuccesstext' => 'Dátagrunnurin er latin upp aftur.',
+'databasenotlocked' => 'Dátagrunnurin er ikki stongdur.',
+'lockedbyandtime' => '(av {{GENDER:$1|$1}} hin $2 kl. $3)',
 
 # Move page
 'move-page' => 'Flyt $1',
@@ -2258,14 +2521,23 @@ Hetta merkir at tú kanst umnevna eina síðu aftur hagani hon kom, um tú gjør
 Hetta kann vera ein ógvuslig og óvæntað flyting av einari vældámdari síðu.
 Vinarliga tryggja tær, at tú skilur avleiðingarnar av hesum áðrenn tú heldur áfam.",
 'movearticle' => 'Flyt síðu:',
+'moveuserpage-warning' => "'''Ávaring:''' Tú ert í ferð við at flyta eina brúkarasíðu. Legg vinarliga til merkis, at bert síðan verður flutt og brúkarin fær ''ikki'' nýtt navn.",
 'movenologin' => 'Hevur ikki ritað inn',
+'movenologintext' => 'Tú skalt vera ein skrásettur brúkari og [[Special:UserLogin|innritað/ur]] fyri at kunna flyta eina síðu.',
+'movenotallowed' => 'Tú hevur ikki loyvi til at flyta síður.',
+'movenotallowedfile' => 'Tú hevur ikki loyvi til at flyta fílur.',
+'cant-move-user-page' => 'Tú hevur ikki loyvi til at flyta brúkarasíður (uttan undirsíður).',
+'cant-move-to-user-page' => 'Tú hevur ikki loyvi til at flyta eina síðu til eina brúkarasíðu (uttan til eina undirsíðu hjá einum brúkara).',
 'newtitle' => 'Til nýtt heiti:',
 'move-watch' => 'Hav eftirlit við hesi síðuni',
 'movepagebtn' => 'Flyt síðu',
 'pagemovedsub' => 'Flyting væleydnað',
+'movepage-moved' => '\'\'\'"$1" er blivin flutt til "$2"\'\'\'',
+'movepage-moved-redirect' => 'Ein víðaristilling er blivin upprættað.',
 'articleexists' => 'Ein síða finst longu við hasum navninum,
 ella er navnið tú valdi ógyldugt.
 Vinarliga vel eitt annað navn.',
+'cantmove-titleprotected' => 'Tú kanst ikki flyta eina síðu til hetta heitið, tí tað nýggja heitið er vart móti upprættan',
 'movedto' => 'flyt til',
 'movetalk' => 'Flyt kjaksíðuna eisini, um hon er til.',
 'movelogpage' => 'Flyt gerðabók',
@@ -2279,9 +2551,31 @@ Grein við navninum "[[:$1]]" finst longu. Ynskir tú at strika hana til tess at
 'delete_and_move_reason' => 'Er strikað fyri at gera pláss til flyting frá "[[$1]]"',
 'immobile-source-namespace' => 'Tað ber ikki til at flyta síðu í navnaøkinum "$1"',
 'immobile-target-namespace' => 'Tað ber ikki til at flyta síður inn til navnaøkið "$1"',
+'move-leave-redirect' => 'Lat eina umstilling vera eftir',
+'protectedpagemovewarning' => "'''Ávaring:''' Henda síðan er blivin friðað, so at einans brúkarar við umboðsstjóra heimildum kunnu flyta hana.
+Tann seinasti loggurin er goymdur niðanfyri til ávísingar:",
+'semiprotectedpagemovewarning' => "'''Legg til merkis:''' Henda síðan er blivin friðað, so at einans skrásettir brúkarar kunnu flyta hana.
+Tann seinasti loggposturin er vístur niðanfyri til ávísingar:",
+'move-over-sharedrepo' => '== Fílan er til ==
+[[:$1]] finst í einari felagsgoymslu. At flyta fíluna til hetta heitið fer at seta til síðis tann deilda fílin.',
+'file-exists-sharedrepo' => 'Fílunavnið ið tú valdi, verður longu brúkt í einari felags goymslu. 
+Vinarliga vel eitt annað navn.',
 
 # Export
 'export' => 'Útflyt síður',
+'exportall' => 'Útflyt allar síður',
+'exportcuronly' => 'Tak bert verandi versjón við, ikki alla søguna',
+'exportnohistory' => "----
+'''Legg til merkis:''' Tað ber í løtuni ikki til at útflyta alla søguna hjá síðum henda vegin.",
+'exportlistauthors' => 'Tak við eitt fult yvirlit yvir skrivarar fyri hvørja síðu',
+'export-submit' => 'Útflyt',
+'export-addcattext' => 'Legg afturat síður frá bólki:',
+'export-addcat' => 'Legg afturat',
+'export-addnstext' => 'Legg afturat síður frá navnarúmi:',
+'export-addns' => 'Legg afturat',
+'export-download' => 'Goym sum fílu',
+'export-templates' => 'Tak fyrimyndir við',
+'export-pagelinks' => 'Tak við slóðaðar síður til eina dýpd á:',
 
 # Namespace 8 related
 'allmessages' => 'Øll kervisboð',
@@ -2292,22 +2586,58 @@ Grein við navninum "[[:$1]]" finst longu. Ynskir tú at strika hana til tess at
 Vinarliga vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//translatewiki.net translatewiki.net] um tú ynskir at geva títt íkast til ta generisku MediaWiki lokalisatiónina.',
 'allmessagesnotsupportedDB' => "'''{{ns:special}}:AllMessages''' er ikki stuðlað orsakað av at '''\$wgUseDatabaseMessages''' er sløkt.",
 'allmessages-filter-legend' => 'Filtur',
+'allmessages-filter-unmodified' => 'Óbroytt',
+'allmessages-filter-all' => 'Øll',
+'allmessages-filter-modified' => 'Broytt',
 'allmessages-language' => 'Mál:',
+'allmessages-filter-submit' => 'Far',
 
 # Thumbnails
 'thumbnail-more' => 'Víðka',
 'filemissing' => 'Fíla vantar',
 'thumbnail_error' => 'Feilur við upprættan av thumbnail (lítlari mynd): $1',
+'thumbnail_error_remote' => 'Feilboð frá $1:
+$2',
+'djvu_page_error' => 'DjVu síða uttanfyri økið',
+'djvu_no_xml' => 'Tað bar ikki til at heinta XML fyri DjVu fílu',
+'thumbnail-temp-create' => 'Tað bar ikki til at upprættað eina fyribils pinkalítla stødd (thumbnail) av fíluni',
+'thumbnail_invalid_params' => 'Ógyldug thumbnail parametur',
+'thumbnail_image-type' => 'Myndaslagið verður ikki stuðlað',
+'thumbnail_image-missing' => 'Fílan sær út til at mangla: $1',
 
 # Special:Import
 'import' => 'Innflyt síður',
+'importinterwiki' => 'Innflyt frá aðrari wiki',
+'import-interwiki-text' => 'Vel eina wiki og síðuheiti at innflyta.
+Dato og nøvnini á høvundunum í versjónini verða varveitt.
+Allar transwiki innflytingar handlingar verða goymdar í [[Special:Log/import|innflytingarlogginum]].',
+'import-interwiki-source' => 'Kelduwiki/síða:',
+'import-interwiki-history' => 'Avrita alla versjónssøguna fyri hesa síðu',
+'import-interwiki-templates' => 'Tak allar fyrimyndir við',
 'import-interwiki-submit' => 'Innflyta',
+'import-upload-filename' => 'Fílunavn',
+'import-comment' => 'Viðmerking:',
+'importtext' => "Útflyt fíluna frá kelduwiki'ini við at nýta [[Special:Export|útflutningstólið]].
+Goym hana á tínari teldu og legg hana so út her.",
+'importstart' => 'Innflytur síður...',
+'import-revision-count' => '$1 {{PLURAL:$1|versjón|versjónir}}',
+'importnopages' => 'Ongar síður eru at innflyta.',
+'imported-log-entries' => 'Innflutti $1 {{PLURAL:$1|loggpost|loggpostar}}.',
 'importfailed' => 'Innflutningur miseydnaður: $1',
+'importnotext' => 'Tómt ella ongin tekstur',
 'importsuccess' => 'Innflutningur er liðugur!',
+'import-noarticle' => 'Ongin síða at innflyta!',
+'import-nonewrevisions' => 'Allar versjónir eru longu innfluttar.',
+'xml-error-string' => '$1 á linju $2, rekkju $3 (byte $4): $5',
+
+# JavaScriptTest
+'javascripttest' => 'Royndarkoyring av JavaScript',
+'javascripttest-title' => 'Koyrir $1 royndir',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Tín brúkarasíða',
 'tooltip-pt-mytalk' => 'Tín kjaksíða',
+'tooltip-pt-anontalk' => 'Kjak um rættingar frá hesi IP adressuni',
 'tooltip-pt-preferences' => 'Tínar innstillingar',
 'tooltip-pt-watchlist' => 'Ein listi við síðum sum tú eftiransar fyri broytingum',
 'tooltip-pt-mycontris' => 'Yvirlit yvir títt íkast',
@@ -2320,6 +2650,7 @@ Vinarliga vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] o
 'tooltip-ca-viewsource' => 'Henda síðan er friðað. Tú kanst síggja keldukotuna.',
 'tooltip-ca-history' => 'Fyrrverandi útgávur av hesi síðu.',
 'tooltip-ca-protect' => 'Friða hesa síðuna',
+'tooltip-ca-unprotect' => 'Broyt verju av hesi síðu',
 'tooltip-ca-delete' => 'Strika hesa síðuna',
 'tooltip-ca-undelete' => 'Endurnýggja skrivingina á hesi síðu áðrenn hon varð strikað',
 'tooltip-ca-move' => 'Flyt hesa síðuna',
@@ -2362,26 +2693,63 @@ Vinarliga vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] o
 'tooltip-diff' => 'Vís hvørjar broytingar tú hevur gjørt í tekstinum',
 'tooltip-compareselectedversions' => 'Sí munin millum tær báðar valdu versjónirnar av hesi síðu',
 'tooltip-watch' => 'Set hesa síðu á tín vaktarlista',
+'tooltip-watchlistedit-normal-submit' => 'Tak burtur heiti',
+'tooltip-watchlistedit-raw-submit' => 'Dagfør eftirlitslista',
+'tooltip-recreate' => 'Endurstovna síðuna sjálvt um hon er blivin slettað',
+'tooltip-upload' => 'Byrja upload',
 'tooltip-rollback' => '"Rulla aftur" tekur burtur rætting(ar) hjá tí seinasta íkastgevaranum til hesa síðuna við einum klikki',
 'tooltip-undo' => '"Angra" tekur burtur hesa rættingina og letur upp rættingarsíðuna við forskoðan. Tað loyvir at tú skrivar eina orsøk í samandráttin.',
+'tooltip-preferences-save' => 'Goym innstillingar',
 'tooltip-summary' => 'Skriva stuttan samandrátt',
 
 # Attribution
 'anonymous' => 'Dulnevndir {{PLURAL:$1|brúkari|brúkarar}} í {{SITENAME}}',
 'siteuser' => '{{SITENAME}}brúkari $1',
 'anonuser' => '{{SITENAME}} dulnevndur brúkari $1',
+'lastmodifiedatby' => 'Henda síðan varð seinast broytt kl. $2 hin $1 av $3.',
 'othercontribs' => 'Grundað á arbeiði eftir $1.',
 'others' => 'onnur',
 'siteusers' => '{{SITENAME}} {{PLURAL:$2|brúkari|brúkarar}} $1',
 'anonusers' => '{{SITENAME}} dulnevndur/ir {{PLURAL:$2|brúkari|brúkarar}} $1',
+'creditspage' => 'Høvundar á síðuni',
+'nocredits' => 'Tað eru ongir upplýsingar tøkir um høvundar fyri hesa síðuna.',
+
+# Spam protection
+'spamprotectiontitle' => 'Spamm verjufiltur',
+'spamprotectiontext' => 'Teksturin ið tú ynskti at goyma varð sperraður av spammfilturinum. Orsøkin til hetta er nokk ein leinkja til eina eksterna heimasíðu, sum er á svartalista.',
+'spamprotectionmatch' => 'Hesin teksturin var tann ið útloystið okkara spammfiltur: $1',
+'spambot_username' => 'MediaWiki spamm-reinsan',
 
 # Info page
 'pageinfo-title' => 'Kunning um "$1"',
+'pageinfo-header-basic' => 'Grundleggjandi kunning',
 'pageinfo-header-edits' => 'Rættingarsøga',
+'pageinfo-header-restrictions' => 'Verja av síðu',
+'pageinfo-header-properties' => 'Síðueginleikar',
+'pageinfo-display-title' => 'Vís heitið',
+'pageinfo-default-sort' => 'Standard sorteringslykil',
+'pageinfo-length' => 'Síðulongd (í bytes)',
+'pageinfo-article-id' => 'Síðu ID',
+'pageinfo-language' => 'Mál á síðuinnihaldinum',
+'pageinfo-robot-index' => 'Loyvt',
+'pageinfo-robot-noindex' => 'Ikki loyvt',
 'pageinfo-views' => 'Tal av skoðanum',
 'pageinfo-watchers' => 'Tal av síðu eygleiðarum',
+'pageinfo-few-watchers' => 'Færri enn $1 {{PLURAL:$1|eftirlitsbrúkari|eftirlitsbrúkarar}}',
+'pageinfo-redirects-name' => 'Tal av víðaristillingum til hesa síðu',
 'pageinfo-edits' => 'Tal av rættingum í alt',
 'pageinfo-authors' => 'Tal av ymiskum høvundum í alt',
+'pageinfo-toolboxlink' => 'Kunning um síðuna',
+'pageinfo-redirectsto' => 'Snarvegir til',
+'pageinfo-redirectsto-info' => 'kunning',
+'pageinfo-contentpage' => 'Telur við sum ein innihaldssíða',
+'pageinfo-contentpage-yes' => 'Ja',
+'pageinfo-protect-cascading-yes' => 'Ja',
+'pageinfo-protect-cascading-from' => 'Verjur eru niðurarvaðar frá',
+'pageinfo-category-info' => 'Kunning um bólkin',
+'pageinfo-category-pages' => 'Tal av síðum',
+'pageinfo-category-subcats' => 'Tal av undirbólkum',
+'pageinfo-category-files' => 'Tal av fílum',
 
 # Skin names
 'skinname-cologneblue' => 'Cologne-bláur',
@@ -2394,6 +2762,13 @@ Vinarliga vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] o
 'rcpatroldisabled' => 'Ansanin eftir nýkomnum broytingum er óvirkin',
 'rcpatroldisabledtext' => 'Hentleikin við ansing eftir nýkomnum broytingum er óvirkin í løtuni.',
 'markedaspatrollederror' => 'Tað ber ikki til at merkja síðuna sum eftirhugda',
+'markedaspatrollederrortext' => 'Tú mást velja eina versjón fyri at merkja hana sum eftirhugda.',
+'markedaspatrollederror-noautopatrol' => 'Tú hevur ikki loyvi til at merkja tína egnu broyting sum kannaða.',
+'markedaspatrollednotify' => 'Henda broytingin til $1 er blivið merkt sum eftirkannað.',
+'markedaspatrollederrornotify' => 'Tað miseydnaðist at merkja sum eftirkannað.',
+
+# Patrol log
+'patrol-log-page' => 'Eftirlitsloggur',
 
 # Browsing diffs
 'previousdiff' => '← Eldri broytingar',
index b5ecc1e..044ce51 100644 (file)
@@ -939,6 +939,8 @@ Veuillez attendre avant d'essayer à nouveau.",
 'login-abort-generic' => 'Votre tentative de connexion a échoué',
 'loginlanguagelabel' => 'Langue : $1',
 'suspicious-userlogout' => "Votre demande de déconnexion a été refusée car il semble qu'elle a été envoyée par un navigateur cassé ou la mise en cache d'un proxy.",
+'createacct-another-realname-tip' => 'Le vrai nom est optionnel.
+Si vous décidez de le fournir, il sera utilisé pour attribuer à l’utilisateur ses travaux.',
 
 # Email sending
 'php-mail-error-unknown' => 'Erreur inconnue dans la fonction mail() de PHP.',
@@ -3217,8 +3219,7 @@ Vous pouvez toutefois en visualiser la source.',
 'tooltip-recreate' => 'Recréer la page même si celle-ci a été effacée',
 'tooltip-upload' => "Démarrer l'import",
 'tooltip-rollback' => '« Révoquer » annule en un clic la ou les modification(s) de cette page par son dernier contributeur.',
-'tooltip-undo' => "« Défaire » révoque cette modification et ouvre la fenêtre de modification en mode prévisualisation.
-Permet de rétablir la version précédente et d'ajouter un motif dans la boîte de résumé.",
+'tooltip-undo' => '« Annuler » rétablit la modification précédente et ouvre la fenêtre de modification en mode prévisualisation. Il est possible d’ajouter une raison dans le résumé.',
 'tooltip-preferences-save' => 'Sauvegarder les préférences',
 'tooltip-summary' => 'Entrez un bref résumé',
 
index 19042d4..c3a9ae8 100644 (file)
@@ -4330,8 +4330,8 @@ $5
 'limitreport-cputime-value' => '{{PLURAL:$1|שנייה|$1 שניות}}',
 'limitreport-walltime' => 'זמן אמיתי',
 'limitreport-walltime-value' => '{{PLURAL:$1|שנייה|$1 שניות}}',
-'limitreport-ppvisitednodes' => 'מספר הצמתים בהם ביקר קדם����־המפענח',
-'limitreport-ppgeneratednodes' => 'מספר הצמתים שיצר קדם����־המפענח',
+'limitreport-ppvisitednodes' => 'מספר הצמתים בהם ביקר קדם-המפענח',
+'limitreport-ppgeneratednodes' => 'מספר הצמתים שיצר קדם-המפענח',
 'limitreport-postexpandincludesize' => 'גודל הטקסט המוכלל לאחר הפריסה',
 'limitreport-postexpandincludesize-value' => '$1/$2 בתים',
 'limitreport-templateargumentsize' => 'גודל הפרמטרים של התבניות',
index 2d4cbe2..cecb502 100644 (file)
@@ -2551,9 +2551,9 @@ $1',
 'sp-contributions-newbies-sub' => 'नये सदस्योंके लिये',
 'sp-contributions-newbies-title' => 'नए सदस्यों द्वारा योगदान',
 'sp-contributions-blocklog' => 'ब्लॉक सूची',
-'sp-contributions-deleted' => 'सदसà¥\8dयà¥\8bà¤\82 à¤\95à¥\8b à¤¯à¥\8bà¤\97दान à¤\9cà¥\8b à¤¹à¤\9fाà¤\8f à¤\9cा à¤\9aà¥\81à¤\95à¥\87 à¤¹à¥\88à¤\82',
+'sp-contributions-deleted' => 'हà¤\9fाà¤\8f à¤\97à¤\8f à¤¸à¤¦à¤¸à¥\8dय à¤¯à¥\8bà¤\97दान',
 'sp-contributions-uploads' => 'अपलोड',
-'sp-contributions-logs' => 'à¤\9aिà¤\9fà¥\8dठà¥\87',
+'sp-contributions-logs' => 'लà¥\89à¤\97',
 'sp-contributions-talk' => 'वार्ता',
 'sp-contributions-userrights' => 'सदस्य अधिकार प्रबंधन',
 'sp-contributions-blocked-notice' => 'यह सदस्य फ़िलहाल अवरोधित हैं। सदंर्भ के लिए ताज़ातरीन अवरोध चिट्ठा प्रविष्टि नीचे है:',
index c70f8d4..8fdd6c2 100644 (file)
@@ -706,6 +706,8 @@ Per favor attende ante de probar lo novemente.',
 'login-abort-generic' => 'Apertura de session non succedite - Abortate',
 'loginlanguagelabel' => 'Lingua: $1',
 'suspicious-userlogout' => 'Le requesta de clauder le session ha essite refusate proque illo pare haber essite inviate per un navigator o proxy de cache defectuose.',
+'createacct-another-realname-tip' => 'Le nomine real es optional.
+Si tu opta pro dar lo, isto essera usate pro dar al usator attribution pro su contributiones.',
 
 # Email sending
 'php-mail-error-unknown' => 'Error incognite in le function mail() de PHP',
@@ -4087,4 +4089,19 @@ Si non, tu pote usar le formulario facile hic infra. Tu commento essera addite a
 # Image rotation
 'rotate-comment' => 'Imagine rotate de $1 {{PLURAL:$1|grado|grados}} in senso horologic',
 
+# Limit report
+'limitreport-title' => 'Datos de rendimento del analysator syntactic:',
+'limitreport-cputime' => 'Tempore de uso del CPU',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|secunda|secundas}}',
+'limitreport-walltime' => 'Tempore de uso real',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|secunda|secundas}}',
+'limitreport-ppvisitednodes' => 'Numero de nodos de preprocessor visitate',
+'limitreport-ppgeneratednodes' => 'Numero de nodos de preprocessor generate',
+'limitreport-postexpandincludesize' => 'Dimension de inclusion post expansion',
+'limitreport-postexpandincludesize-value' => '$1/$2 bytes',
+'limitreport-templateargumentsize' => 'Dimension del argumento del patrono',
+'limitreport-templateargumentsize-value' => '$1/$2 bytes',
+'limitreport-expansiondepth' => 'Maxime profunditate de expansion',
+'limitreport-expensivefunctioncount' => 'Numero de functiones analysator costose',
+
 );
index be56d12..5d13fb4 100644 (file)
@@ -934,6 +934,8 @@ Cookieを有効にしていることを確認して、このページを再読
 'login-abort-generic' => 'ログインに失敗しました - 中止',
 'loginlanguagelabel' => '言語: $1',
 'suspicious-userlogout' => '壊れたブラウザーまたはキャッシュプロキシによって送信された可能性があるため、ログアウト要求は拒否されました。',
+'createacct-another-realname-tip' => '本名は省略できます。
+入力すると、その利用者の著作物の帰属表示に使われます。',
 
 # Email sending
 'php-mail-error-unknown' => 'PHPのmail()関数での不明なエラーです。',
@@ -2329,8 +2331,8 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'nmembers' => '$1項目',
 'nrevisions' => '$1版',
 'nviews' => '$1回の閲覧',
-'nimagelinks' => '$1ページで使用',
-'ntransclusions' => '$1ページで使用',
+'nimagelinks' => '$1 {{PLURAL:$1|ページ}}で使用',
+'ntransclusions' => '$1 {{PLURAL:$1|ページ}}で使用',
 'specialpage-empty' => '該当するものはありません。',
 'lonelypages' => '孤立しているページ',
 'lonelypagestext' => '以下のページは、{{SITENAME}}の他のページからリンクも参照読み込みもされていません。',
@@ -2894,7 +2896,7 @@ $1',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]をブロックしました。<br />
 [[Special:BlockList|ブロックの一覧]]を参照してください。',
 'ipb-blockingself' => '自分自身をブロックしようとしています! 本当に実行しますか?',
-'ipb-confirmhideuser' => '秘匿が有効になっている利用者をブロックしようとしています。実行すると、すべての一覧や記録項目で利用者名が表示されません。本当に実行しますか?',
+'ipb-confirmhideuser' => '利用者名の秘匿を有効にしてブロックしようとしています。実行すると、すべての一覧や記録項目で利用者名が表示されません。本当に実行しますか?',
 'ipb-edit-dropdown' => 'ブロック理由を編集',
 'ipb-unblock-addr' => '$1のブロックを解除',
 'ipb-unblock' => '利用者またはIPアドレスのブロックを解除',
index 294bef1..8d1fa52 100644 (file)
@@ -1071,8 +1071,8 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
 *შემოკლებები: (მიმდ.) = სხვაობა მიმდინარე ვერსიასთან, (ბოლო) = სხვაობა წინა ვერსიასთან, მ = მცირე შესწორება.',
 'history-fieldset-title' => 'დათვალიერების ისტორია',
 'history-show-deleted' => 'მხოლოდ წაშლილი',
-'histfirst' => 'á\83\9eá\83\98á\83 á\83\95á\83\94á\83\9aი',
-'histlast' => 'á\83£á\83\99á\83\90á\83\9cá\83\90á\83¡á\83\99á\83\9cá\83\94á\83\9aი',
+'histfirst' => 'á\83£á\83«á\83\95á\83\94á\83\9aá\83\94á\83¡ი',
+'histlast' => 'á\83£á\83\90á\83®á\83\9aá\83\94á\83¡ი',
 'historysize' => '($1 ბაიტი)',
 'historyempty' => '(ცარიელი)',
 
@@ -1397,7 +1397,7 @@ $1",
 'prefs-signature' => 'ხელმოწერა',
 'prefs-dateformat' => 'თარიღის ფორმატი',
 'prefs-timeoffset' => 'სასაათო სარტყლის ცვლილება',
-'prefs-advancedediting' => 'á\83\92á\83\90á\83¤á\83\90á\83 á\83\97á\83\9dá\83\94á\83\91á\83£á\83\9aი პარამეტრები',
+'prefs-advancedediting' => 'á\83\9bá\83\97á\83\90á\83\95á\83\90á\83 ი პარამეტრები',
 'prefs-editor' => 'რედაქტორი',
 'prefs-advancedrc' => 'გაფართოებული პარამეტრები',
 'prefs-advancedrendering' => 'გაფართოებული პარამეტრები',
index 3e5eed8..753ac25 100644 (file)
@@ -10,6 +10,7 @@
  * @author AlefZet
  * @author Alibek Kisybay
  * @author Arystanbek
+ * @author Bakytgul Salykhova
  * @author Daniyar
  * @author GaiJin
  * @author Kaztrans
@@ -784,7 +785,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''Жүйеден шықтыңыз.'''
 
-Жүйеге кірместен де {{SITENAME}} жобасын пайдалана аласыз, немесе баяғы не өзге қатысушы ретінде жүйеге <span class='plainlinks'>[$1 қайта кіруіңізге]</span> болады.
+Жүйеге кірмесеңіз де {{SITENAME}} жобасын пайдалана аласыз, немесе баяғы не өзге қатысушы ретінде жүйеге <span class='plainlinks'>[$1 қайта кіруіңізге]</span> болады.
 Аңғартпа: Кейбір беттер шолғышыңыздың кэшін тазартқанша әлі де жүйеге кіріп отырғаныңыздай көрінуі мүмкін.",
 'welcomeuser' => 'Қош келдіңіз, $1!',
 'welcomecreation-msg' => 'Сіздің тіркеліміңіз жасалынды.
@@ -832,7 +833,7 @@ $2',
 'createacct-emailoptional' => 'Е-поштаның мекен-жайы (міндетті емес)',
 'createacct-email-ph' => 'Е-пошта мекен-жайыңызды енгізіңіз',
 'createacct-another-email-ph' => 'Е-пошта мекен-жайын енгізіңіз',
-'createaccountmail' => 'Ð\95-поÑ\88Ñ\82амен',
+'createaccountmail' => 'УаÒ\9bÑ\8bÑ\82Ñ\88а Ð±ÐµÑ\80Ñ\96лген ÐºÑ\96лÑ\82Ñ\81өздÑ\96 Ð¿Ð°Ð¹Ð´Ð°Ð»Ð°Ð½Ñ\8bÒ£Ñ\8bз Ð¶Ó\99не Ð¾Ð½Ñ\8b ÐºÓ©Ñ\80Ñ\81еÑ\82Ñ\96лген Ñ\8dлекÑ\82Ñ\80ондÑ\8bÒ\9b Ð¿Ð¾Ñ\88Ñ\82аÒ\93а Ð¶Ñ\96беÑ\80Ñ\96Ò£Ñ\96з',
 'createacct-realname' => 'Нақты атыңыз (ерікті)',
 'createaccountreason' => 'Себебі:',
 'createacct-reason' => 'Себебі:',
@@ -1515,10 +1516,10 @@ $1",
 'userrights-no-interwiki' => 'Басқа уикилердегі қатысушы құқықтарын өңдеуге рұқсатыңыз жоқ.',
 'userrights-nodatabase' => '$1 дерекқоры жоқ не жергілікті емес.',
 'userrights-nologin' => 'Қатысушы құқықтарын тағайындау үшін әкімші тіркелгісімен [[Special:UserLogin|кіруіңіз]] жөн.',
-'userrights-notallowed' => 'Қатысушы құқықтарын қосуға немесе алып тастауға тіркелгіңізде рұқсат жоқ.',
+'userrights-notallowed' => 'Сізге қатысушы құқықтарын қосуға немесе алып тастауға рұқсат берілмеген.',
 'userrights-changeable-col' => 'Өзгерте алатын топтар',
 'userrights-unchangeable-col' => 'Өзгерте алмайтын топтар',
-'userrights-conflict' => 'Қатысушы құқықтар қақтығысы! Өзгертулеріңізді қайта қарап көріңіз.',
+'userrights-conflict' => 'Қатысушы құқықтарының қақтығысы! Өзгертулеріңізді қайта қарап шығыңыз және құптаңыз.',
 'userrights-removed-self' => 'Өзіңіздің құқықтарыңызды сәтті алып тастадыңыз.  As such, you are no longer able to access this page.',
 
 # Groups
@@ -1583,7 +1584,7 @@ $1",
 'right-hideuser' => 'Баршадан жасырып, қатысушы атын бұғаттау',
 'right-ipblock-exempt' => 'IP бұғаттауларды, өзбұғаттауларды және ауқым бұғаттауларды орағыту',
 'right-proxyunbannable' => 'Прокси серверлердің өзбұғаттауларын орағыту',
-'right-unblockself' => 'Өздерін бұғаттамау (Бұғаттаудан шығару)',
+'right-unblockself' => 'Бұғаттаудан шығару',
 'right-protect' => 'Қорғау деңгейлерін өзгерту және баулы-қорғаулы беттерді өңдеу',
 'right-editprotected' => 'Қорғалған беттерді өңдеу "{{int:protect-level-sysop}}"',
 'right-editsemiprotected' => 'Қорғалған беттерді өңдеу "{{int:protect-level-autoconfirmed}}"',
@@ -1667,6 +1668,7 @@ $1",
 'recentchanges' => 'Жуықтағы өзгерістер',
 'recentchanges-legend' => 'Жуықтағы өзгерістер баптаулары',
 'recentchanges-summary' => 'Бұл бетте осы уикидегі болған жуықтағы өзгерістер байқалады.',
+'recentchanges-noresult' => 'Бұл талап бойынша көрсетілген уақыттан бері өзгерістер болған жоқ.',
 'recentchanges-feed-description' => 'Бұл арнаменен уикидегі ең соңғы өзгерістер қадағаланады.',
 'recentchanges-label-newpage' => 'Бұл өңдеме арқылы жаңа бет басталды',
 'recentchanges-label-minor' => 'Бұл шағын өңдеме',
@@ -2939,34 +2941,34 @@ $2',
 # Info page
 'pageinfo-title' => '"$1" үшін ақпараттар',
 'pageinfo-header-basic' => 'Негізгі ақпарат',
-'pageinfo-header-edits' => 'Тарихын өңдеу',
+'pageinfo-header-edits' => 'Өңдеу тарихы',
 'pageinfo-header-restrictions' => 'Бет қорғалуы',
-'pageinfo-header-properties' => 'Бет сипаты',
+'pageinfo-header-properties' => 'Ð\91еÑ\82 Ñ\81ипаÑ\82Ñ\82аÑ\80Ñ\8b',
 'pageinfo-display-title' => 'Бейнебет атауы',
 'pageinfo-length' => 'Бет ұзындығы (байтпен)',
-'pageinfo-article-id' => 'Бет ID',
+'pageinfo-article-id' => 'Бет ID',
 'pageinfo-language' => 'Бет мәлімет тілі',
-'pageinfo-robot-policy' => 'Ð\86здеÑ\83 ÐºÒ¯Ð¹і',
-'pageinfo-robot-index' => 'Ð\98ндекÑ\81Ñ\82елеÑ\82Ñ\96н',
-'pageinfo-robot-noindex' => 'Ð\98ндекÑ\81Ñ\82елмейÑ\82Ñ\96н',
+'pageinfo-robot-policy' => 'Ð\98ндекÑ\81Ñ\82еÑ\83дÑ\96 Ñ\80обоÑ\82 Ð¶Ò¯Ñ\80гÑ\96зеді',
+'pageinfo-robot-index' => 'РұÒ\9bÑ\81аÑ\82 Ð±ÐµÑ\80Ñ\96лген',
+'pageinfo-robot-noindex' => 'РұÒ\9bÑ\81аÑ\82 ÐµÑ\82Ñ\96лмеген',
 'pageinfo-views' => 'Қараушылар саны',
 'pageinfo-watchers' => 'Бетті қараушылар саны',
 'pageinfo-few-watchers' => '$1 азырақ {{PLURAL:$1|қараушы|қараушы}}',
-'pageinfo-redirects-name' => 'Бұл бетке айтатылғандар',
-'pageinfo-subpages-name' => 'Бұл беттің төменгі беттері',
-'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|айдатқыш|айдатқыштыр}}; $3 {{PLURAL:$3|айдатқыш емес|айдатқыш еместер}})',
+'pageinfo-redirects-name' => 'Бұл бетке айдатылғандар саны',
+'pageinfo-subpages-name' => 'Бұл беттің төменгі беттер саны',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|айдатқыш|айдатқыш}}; $3 {{PLURAL:$3|айдатқыш емес|айдатқыш емес}})',
 'pageinfo-firstuser' => 'Бетті бастаушы',
 'pageinfo-firsttime' => 'Беттің басталған уақыты',
 'pageinfo-lastuser' => 'Соңғы өңдеуші',
 'pageinfo-lasttime' => 'Соңғы өңделген уақыты',
 'pageinfo-edits' => 'Барлық өңдеме саны',
 'pageinfo-authors' => 'Барлық белгілі авторлар саны',
-'pageinfo-recent-edits' => 'Жуықтағы өңдеме саны ($1 соңғы)',
+'pageinfo-recent-edits' => 'Жуықтағы өңдеме саны (соңғы $1де)',
 'pageinfo-recent-authors' => 'Жуықтағы белгілі авторлар саны',
 'pageinfo-magic-words' => 'Сиқырлы {{PLURAL:$1|сөз|сөздер}} ($1)',
 'pageinfo-hidden-categories' => 'Жасырылған {{PLURAL:$1|санат|санаттар}} ($1)',
 'pageinfo-templates' => 'Кіріктірілген {{PLURAL:$1|үлгі|үлгілер}} ($1)',
-'pageinfo-transclusions' => '($1) дегенге кіріктірілген {{PLURAL:$1|бет|беттер}}',
+'pageinfo-transclusions' => 'Kіріктірілген {{PLURAL:$1|бет|беттер}} ($1)',
 'pageinfo-toolboxlink' => 'Бет ақпараттары',
 'pageinfo-redirectsto' => 'Айдатылғандар',
 'pageinfo-redirectsto-info' => 'Информация',
@@ -2979,7 +2981,7 @@ $2',
 'pageinfo-category-files' => 'Файлдар саны',
 
 # Skin names
-'skinname-cologneblue' => 'Ð\9aөлн зеңгірлігі (cologneblue)',
+'skinname-cologneblue' => 'Ð\9aөк зеңгірлігі (cologneblue)',
 'skinname-monobook' => 'Дара кітап (monobook)',
 'skinname-modern' => 'Заманауи (modern)',
 
index 68bb1c3..8c9c9a8 100644 (file)
@@ -675,17 +675,16 @@ $2',
 'virus-unknownscanner' => 'កម្មវិធីប្រឆាំងមេរោគមិនស្គាល់៖',
 
 # Login and logout pages
-'logouttext' => "'''á\9e¥á\9e¡á\9e¼á\9e\9cá\9e\93á\9f\81á\9f\87á\9e\9bá\9f\84á\9e\80á\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9e¶á\9e\93á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9f\81á\9e\89á\9e\96á\9e¸á\9e\82á\9e\8eá\9e\93á\9e¸á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\9bá\9f\84á\9e\80á\9e¢á\9f\92á\9e\93á\9e\80á\9e á\9e¾á\9e\99á\9f\94'''
+'logouttext' => "'''ឥឡូវនេះលោកអ្នកបានកត់ឈ្មោះចេញហើយ។'''
 
-អ្នកអាចបន្តប្រើប្រាស់{{SITENAME}}ក្នុងភាពអនាមិក ឬ <span class='plainlinks'>[$1 កត់ឈ្មោះចូលម្ដងទៀត]</span>ក្នុងនាមជាអ្នកប្រើប្រាស់ដដែលឬផ្សេងទៀត។
-
-សូមកត់សំគាល់ថាទំព័រមួយចំនួនប្រហែលជានៅតែបង្ហាញដូចពេលលោកអ្នកកត់ឈ្មោះចូលក្នុងគណនីរបស់លោកអ្នកដដែល។ ប្រសិនបើមានករណីនេះកើតឡើង សូមសំអាត សតិភ្ជាប់នៃកម្មវិធីរុករករបស់លោកអ្នក។",
+សូមកត់សម្គាល់ថាទំព័រមួយចំនួនប្រហែលជានៅតែបង្ហាញដូចពេលលោកអ្នកកត់ឈ្មោះចូលដដែល ទាល់តែលោកអ្នកសម្អាត សតិភ្ជាប់នៃកម្មវិធីរុករករបស់លោកអ្នកសិន។",
 'welcomeuser' => 'សូមស្វាគមន៍ $1!',
 'welcomecreation-msg' => 'គណនីរបស់អ្នកត្រូវបានបង្កើតហើយ។
 កុំភ្លេចផ្លាស់ប្ដូរ[[Special:Preferences|ចំណង់ចំណូលចិត្ត{{SITENAME}}]]របស់អ្នក។',
 'yourname' => 'អត្តនាម៖',
 'userlogin-yourname' => 'អត្តនាម',
 'userlogin-yourname-ph' => 'បញ្ចូលអត្តនាមរបស់អ្នក',
+'createacct-another-username-ph' => 'បញ្ចូលអត្ថនាម',
 'yourpassword' => 'ពាក្យសម្ងាត់៖',
 'userlogin-yourpassword' => 'ពាក្យ​សម្ងាត់',
 'userlogin-yourpassword-ph' => 'បញ្ចូលពាក្យសម្ងាត់របស់អ្នក',
@@ -721,10 +720,12 @@ $2',
 'helplogin-url' => 'Help:ការកត់ឈ្មោះចូល',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ជំនួយក្នុងការកត់ឈ្មោះចូល]]',
 'createacct-join' => 'បំពេញព័ត៌មានរបស់អ្នកខាងក្រោម។',
+'createacct-another-join' => 'បញ្ចូលព័ត៌មានគណនីថ្មីខាងក្រោម។',
 'createacct-emailrequired' => 'អាសយដ្ឋានអ៊ីមែល',
 'createacct-emailoptional' => 'អាសយដ្ឋានអ៊ីមែល (ដាក់ក៏បានមិនដាក់ក៏បាន)',
 'createacct-email-ph' => 'បញ្ចូលអាសយដ្ឋានអ៊ីមែលរបស់អ្នក',
-'createaccountmail' => 'ប្រើប្រាស់ពាក្យសំងាត់ព្រៀងបណ្ដោះអាសនុ្ន រួចផ្ញើវាទៅកាន់អាសយដ្ឋានអ៊ីមែលខាងក្រោម',
+'createacct-another-email-ph' => 'បញ្ចូលអាសយដ្ឋានអ៊ីមែល',
+'createaccountmail' => 'ប្រើប្រាស់ពាក្យសម្ងាត់ចៃដន្យបណ្ដោះអាសនុ្ន រួចផ្ញើវាទៅកាន់អាសយដ្ឋានអ៊ីមែលខាងក្រោម',
 'createacct-realname' => 'ឈ្មោះពិត (ដាក់ក៏បានមិនដាក់ក៏បាន)',
 'createaccountreason' => 'មូលហេតុ៖',
 'createacct-reason' => 'មូលហេតុ',
@@ -732,6 +733,7 @@ $2',
 'createacct-captcha' => 'ត្រួតពិនិត្យសុវត្ថិភាព',
 'createacct-imgcaptcha-ph' => 'បញ្ចូលឃ្លាដែលអ្នកឃើញខាងលើ',
 'createacct-submit' => 'បង្កើតគណនីរបស់អ្នក',
+'createacct-another-submit' => 'បង្កើតគណនីមួយទៀត',
 'createacct-benefit-heading' => '{{SITENAME}} ត្រូវបង្កើតឡើងដោយបុគ្គលដូចអ្នកជាដើម។',
 'createacct-benefit-body1' => '{{PLURAL:$1|កំណែ|កំណែ}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|ទំព័រ|ទំព័រ}}',
@@ -823,6 +825,7 @@ $2',
 សូមរងចាំមួយរយៈ មុនពេលសាកល្បងម្ដងទៀត។',
 'login-abort-generic' => 'អ្នកចុះឈ្មោះចូលមិនបានសម្រេចទេ។ ការចុះឈ្មោះចូលត្រូវបានបោះបង់។',
 'loginlanguagelabel' => 'ភាសា៖ $1',
+'createacct-another-realname-tip' => 'អ្នកអាចផ្ដល់ឈ្មោះពិតរបស់អ្នកក៏បានមិនផ្ដល់ក៏បាន។ បើអ្នកផ្ដល់ឱ្យ វានឹងត្រូវបានប្រើប្រាស់់ដើម្បីបញ្ជាក់ភាពជាម្ចាស់​លើការរួមចំណែក​នានា​របស់អ្នក។',
 
 # Email sending
 'php-mail-error-unknown' => 'កំហុសមិនស្គាល់នៅក្នុងអនុគមន៍ mail() របស់ PHP',
@@ -1484,7 +1487,7 @@ $1",
 'prefs-signature' => 'ហត្ថលេខា​',
 'prefs-dateformat' => 'ទំរង់កាលបរិច្ឆេទ',
 'prefs-timeoffset' => 'កែប្រែម៉ោង',
-'prefs-advancedediting' => 'ទូទៅ​',
+'prefs-advancedediting' => 'á\9e\87á\9e\98á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\91á\9e¼á\9e\91á\9f\85â\80\8b',
 'prefs-editor' => 'អ្នកកែប្រែ',
 'prefs-preview' => 'មើលជាមុន',
 'prefs-advancedrc' => 'ជំរើសថ្នាក់ខ្ពស់',
@@ -1494,6 +1497,7 @@ $1",
 'prefs-displayrc' => 'ជំរើសការបង្ហាញ',
 'prefs-displaysearchoptions' => 'ជំរើសការបង្ហាញ',
 'prefs-displaywatchlist' => 'ជំរើសការបង្ហាញ',
+'prefs-tokenwatchlist' => 'កូនសោរ',
 'prefs-diffs' => 'ភាពខុសគ្នា',
 
 # User preference: email validation using jQuery
@@ -1518,7 +1522,7 @@ $1",
 'userrights-no-interwiki' => 'អ្នកគ្មានការអនុញ្ញាតកែប្រែសិទ្ធិរបស់អ្នកប្រើប្រាស់លើវិគីផ្សេងទេ។',
 'userrights-nodatabase' => 'មូលដ្ឋានទិន្នន័យ $1 មិនមាន ឬ ស្ថិតនៅខាងក្រៅ។',
 'userrights-nologin' => 'អ្នកត្រូវតែ [[Special:UserLogin|កត់ឈ្មោះចូល]]ដោយប្រើគណនីអ្នកអភិបាលដើម្បីផ្ដល់សិទ្ធិឱ្យអ្នកប្រើប្រាស់​។',
-'userrights-notallowed' => 'á\9e\82á\9e\8eá\9e\93á\9e¸á\9e\9aá\9e\94á\9e\9fá\9f\8bអ្នកគ្មានការអនុញ្ញាតដើម្បីបន្ថែមឬដកសិទ្ធិរបស់អ្នកប្រើប្រាស់ដទៃទេ។',
+'userrights-notallowed' => 'á\9e\9bá\9f\84á\9e\80អ្នកគ្មានការអនុញ្ញាតដើម្បីបន្ថែមឬដកសិទ្ធិរបស់អ្នកប្រើប្រាស់ដទៃទេ។',
 'userrights-changeable-col' => 'ក្រុមនានាដែលអ្នកអាចផ្លាស់ប្ដូរបាន',
 'userrights-unchangeable-col' => 'ក្រុមនានាដែលអ្នកមិនអាចផ្លាស់ប្ដូរបាន',
 
@@ -1582,8 +1586,8 @@ $1",
 'right-hideuser' => 'ហាមឃាត់អ្នកប្រើប្រាស់ម្នាក់ រួចលាក់មិនអោយបង្ហាញជាសាធារណៈ',
 'right-ipblock-exempt' => 'ការហាមឃាត់IPជាប្រយោល ការហាមឃាត់ស្វ័យប្រវត្តិនិងការហាមឃាត់មានកំរិត',
 'right-proxyunbannable' => 'ពង្វាងការរាំងខ្ទប់ស្វ័យប្រវត្តិរបស់ប្រុកស៊ី',
-'right-unblockself' => 'á\9e\88á\9e\94á\9f\8bá\9e á\9e¶á\9e\98á\9e\83á\9e¶á\9e\8fá\9f\8bá\9e\96á\9e½á\9e\80á\9e\82á\9f\81',
-'right-protect' => 'ប្ដូរកម្រិតការពាររួចកែប្រែទំព័រដែលបានការពារ',
+'right-unblockself' => 'á\9e\88á\9e\94á\9f\8bá\9e\9aá\9e¶á\9f\86á\9e\84á\9e\81á\9f\92á\9e\91á\9e\94á\9f\8bá\9e\93á\9e\9aá\9e\8eá\9e¶á\9e\98á\9f\92á\9e\93á\9e¶á\9e\80á\9f\8b',
+'right-protect' => 'ប្ដូរកម្រិតការពាររួចកែប្រែទំព័រដែលបានការពារជាថ្នាក់',
 'right-editprotected' => 'កែប្រែទំព័រដែលបានការពារដោយ "{{int:protect-level-sysop}}"',
 'right-editinterface' => 'កែប្រែអន្តរមុខអ្នកប្រើប្រាស់',
 'right-editusercssjs' => 'កែប្រែឯកសារ CSS និង JS របស់អ្នកប្រើប្រាស់ផ្សេងទៀត',
@@ -2231,7 +2235,8 @@ $1',
 # Special:ListGroupRights
 'listgrouprights' => 'សិទ្ធិនិងក្រុមអ្នកប្រើប្រាស់',
 'listgrouprights-summary' => 'ខាងក្រោមនេះជាបញ្ជីរាយឈ្មោះក្រុមអ្នកប្រើប្រាស់ដែលបានកំណត់ជាមួយនឹងសិទ្ធិរបស់គេនៅលើវិគីនេះ។ មាន[[{{MediaWiki:Listgrouprights-helppage}}|ព័ត៌មានបន្ថែម]] អំពីសិទ្ធិផ្ទាល់ខ្លួន។',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">សិទ្ធិ​ដែល​បាន​ផ្តល់​ជូន​</span>
+'listgrouprights-key' => 'កំណត់សម្គាល់៖
+* <span class="listgrouprights-granted">សិទ្ធិ​ដែល​បាន​ផ្តល់​ជូន​</span>
 * <span class="listgrouprights-revoked">សិទ្ធិ​ដែល​បាន​ដក​ហូត​</span>',
 'listgrouprights-group' => 'ក្រុម',
 'listgrouprights-rights' => 'សិទ្ធិ',
@@ -3001,11 +3006,12 @@ $1',
 'pageinfo-length' => 'ប្រវែងទំព័រ (គិតជាបៃ)',
 'pageinfo-article-id' => 'អត្តលេខទំព័រ',
 'pageinfo-language' => 'ភាសារបស់ខ្លឹមសារទំព័រ',
-'pageinfo-robot-policy' => 'á\9e\9fá\9f\92á\9e\90á\9e¶á\9e\93á\9e\97á\9e¶á\9e\96á\9e\98á\9f\89á\9e¶á\9e\9fá\9f\8aá\9e¸á\9e\93á\9e\9fá\9f\92á\9e\9cá\9f\82á\9e\84á\9e\9aá\9e\80',
-'pageinfo-robot-index' => 'á\9e¢á\9e¶á\9e\85á\9e\8aá\9e¶á\9e\80á\9f\8bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\9bá\9e·á\9e\94á\9e·á\9e\80á\9f\92á\9e\9aá\9e\98',
-'pageinfo-robot-noindex' => 'á\9e\98á\9e·á\9e\93á\9e¢á\9e¶á\9e\85á\9e\8aá\9e¶á\9e\80á\9f\8bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\9bá\9e·á\9e\94á\9e·á\9e\80á\9f\92á\9e\9aá\9e\98',
+'pageinfo-robot-policy' => 'á\9e\8aá\9e¶á\9e\80á\9f\8bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\9bá\9e·á\9e\94á\9e·á\9e\80á\9f\92á\9e\9aá\9e\98á\9e\8aá\9f\84á\9e\99á\9e\9aá\9e¼á\9e\94á\9e\99á\9e\93á\9f\92á\9e\8f',
+'pageinfo-robot-index' => 'á\9e¢á\9e\93á\9e»á\9e\89á\9f\92á\9e\89á\9e¶á\9e\8f',
+'pageinfo-robot-noindex' => 'á\9e\98á\9e·á\9e\93á\9e¢á\9e\93á\9e»á\9e\89á\9f\92á\9e\89á\9e¶á\9e\8f',
 'pageinfo-views' => 'ចំនួនការបើកមើល',
 'pageinfo-watchers' => 'ចំនួនអ្នកតាមដានទំព័រ',
+'pageinfo-few-watchers' => 'អ្នកតាមដានតិចជាង $1 {{PLURAL:$1|នាក់|នាក់}}',
 'pageinfo-redirects-name' => 'ចំនួនការបញ្ជូនបន្តមកកាន់ទំព័រនេះ',
 'pageinfo-subpages-name' => 'ទំព័ររងរបស់ទំព័រនេះ',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|ទំព័របញ្ជូនបន្ត|ទំព័របញ្ជូនបន្ត}}; $3 {{PLURAL:$3|ទំព័រមិនបញ្ជូនបន្ត|ទំព័រមិនបញ្ជូនបន្ត}})',
@@ -3264,7 +3270,7 @@ $1',
 'exif-compression-1' => 'លែងបានបង្ហាប់',
 
 'exif-copyrighted-true' => 'រក្សាសិទ្ឋ',
-'exif-copyrighted-false' => 'á\9e\9fá\9e¶á\9e\92á\9e¶á\9e\9aá\9e\8eá\9f\88',
+'exif-copyrighted-false' => 'á\9e\9fá\9f\92á\9e\90á\9e¶á\9e\93á\9e\97á\9e¶á\9e\96á\9e\9aá\9e\80á\9f\92á\9e\9fá\9e¶á\9e\9fá\9e·á\9e\91á\9f\92á\9e\92á\9e·á\9e\98á\9e·á\9e\93á\9e\91á\9e¶á\9e\93á\9f\8bá\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8b',
 
 'exif-unknowndate' => 'មិនដឹងកាលបរិច្ឆេទ',
 
index c356f18..842402f 100644 (file)
@@ -541,7 +541,7 @@ $messages = array(
 'history_short' => '역사',
 'updatedmarker' => '마지막으로 방문한 뒤 바뀜',
 'printableversion' => '인쇄용 문서',
-'permalink' => '고유링크',
+'permalink' => '고유 링크',
 'print' => '인쇄',
 'view' => '보기',
 'edit' => '편집',
@@ -713,7 +713,7 @@ URL을 잘못 입력하였거나, 잘못된 링크를 따라갔을 수 있습니
 'filecopyerror' => '"$1" 파일을 "$2"로 복사할 수 없습니다.',
 'filerenameerror' => '"$1" 파일을 "$2"로 옮길 수 없습니다.',
 'filedeleteerror' => '"$1" 파일을 삭제할 수 없습니다.',
-'directorycreateerror' => '"$1" ë\94\94ë \89í\86 리를 만들 수 없습니다.',
+'directorycreateerror' => '"$1" ë\94\94ë \89í\84°리를 만들 수 없습니다.',
 'filenotfound' => '"$1" 파일을 찾을 수 없습니다.',
 'fileexistserror' => '"$1" 파일이 이미 있어 여기에 쓸 수 없습니다.',
 'unexpected' => '예상되지 않은 값: "$1"="$2"',
@@ -912,6 +912,8 @@ $2',
 'login-abort-generic' => '로그인에 실패했습니다 - 중지됨',
 'loginlanguagelabel' => '언어: $1',
 'suspicious-userlogout' => '브라우저에 이상이 있거나 캐싱 프록시에서 로그아웃을 요청했기 때문에 로그아웃이 거부되었습니다.',
+'createacct-another-realname-tip' => '실명은 선택 사항입니다.
+실명을 입력하면 문서 기여에 사용자의 이름이 들어가게 됩니다.',
 
 # Email sending
 'php-mail-error-unknown' => 'PHP의 mail() 함수에서 알 수 없는 오류가 발생했습니다.',
@@ -979,7 +981,7 @@ $2
 # Special:ChangeEmail
 'changeemail' => '이메일 주소 바꾸기',
 'changeemail-header' => '계정 메일 주소 바꾸기',
-'changeemail-text' => '이메일 주소를 바꾸려면 이 양식을 작성해주세요. 바뀜 내용을 확인하기 위해 비밀번호를 입력해야 합니다.',
+'changeemail-text' => '이메일 주소를 바꾸려면 이 양식을 작성해주세요. 바뀜을 확인하기 위해 비밀번호를 입력해야 합니다.',
 'changeemail-no-info' => '이 특수 문서에 직접 접근하려면 반드시 로그인해야 합니다.',
 'changeemail-oldemail' => '현재 이메일 주소 :',
 'changeemail-newemail' => '새 이메일 주소:',
@@ -1231,7 +1233,7 @@ $2개 보다 적게 {{PLURAL:$2|써야}} 하지만 {{PLURAL:$1|지금은 $1개
 'post-expand-template-inclusion-warning' => "'''경고:''' 틀 포함 크기가 너무 큽니다.
 일부 틀은 포함되지 않을 수 있습니다.",
 'post-expand-template-inclusion-category' => '사용한 틀의 크기가 지나치게 큰 문서의 목록',
-'post-expand-template-argument-warning' => "'''경고:''' 이 문서는 전개 후 크기가 너무 큰 틀 변수가 하나 이상 포함되어 있습니다.
+'post-expand-template-argument-warning' => "'''경고:''' 이 문서는 전개하면 크기가 너무 큰 틀 변수가 하나 이상 포함되어 있습니다.
 이 변수는 생략했습니다.",
 'post-expand-template-argument-category' => '생략된 틀 변수를 포함한 문서',
 'parser-template-loop-warning' => '재귀적인 틀이 발견되었습니다: [[$1]]',
@@ -1397,31 +1399,31 @@ $1",
 'mergehistory' => '문서 역사 합치기',
 'mergehistory-header' => '이 문서는 한 문서에서 다른 문서로 문서 역사를 합치게 할 것입니다.
 이전 문서를 역사적 기록으로 계속 남겨둘 것인지 확인해주세요.',
-'mergehistory-box' => '두 문서의 역사 합치기:',
-'mergehistory-from' => '원본 문서 이름:',
-'mergehistory-into' => '새 문서 이름:',
-'mergehistory-list' => '병합 가능한 문서 역사',
-'mergehistory-merge' => '[[:$1]] 문서의 다음 판이 [[:$2]] 문서로 ë³\91í\95©ë\90  ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤.
+'mergehistory-box' => '두 문서의  합치기:',
+'mergehistory-from' => '원본 문서:',
+'mergehistory-into' => '대상 문서:',
+'mergehistory-list' => '합칠 수 있는 문서 역사',
+'mergehistory-merge' => '[[:$1]] 문서의 다음 판이 [[:$2]] 문서로 í\95©ì¹  ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤.
 병합하려는 판과 그 이전의 판을 선택하시려면 라디오 버튼을 이용해주세요.
 둘러보기 링크를 이용하는 것은 이 문서를 초기화시킬 것입니다.',
 'mergehistory-go' => '합칠 수 있는 편집 보기',
-'mergehistory-submit' => '문서 역사 합치기',
+'mergehistory-submit' => ' 합치기',
 'mergehistory-empty' => '합칠 수 있는 판이 없습니다.',
 'mergehistory-success' => '[[:$1]] 문서의 {{PLURAL:$3|판}} $3개가 [[:$2]]에 성공적으로 합쳐졌습니다.',
-'mergehistory-fail' => '문서 역사 합치기 명령을 수행할 수 없습니다. 문서와 시간 변수를 다시 확인하십시오.',
+'mergehistory-fail' => '역사 합치기를 수행할 수 없습니다, 문서와 시간 변수를 다시 확인하세요.',
 'mergehistory-no-source' => '원본인 $1 문서가 존재하지 않습니다.',
 'mergehistory-no-destination' => '대상인 $1 문서가 존재하지 않습니다.',
-'mergehistory-invalid-source' => '원본 문서 ì\9d´ë¦\84ì\97\90ë\8a\94 ë°\98ë\93\9cì\8b\9c ì\9c í\9a¨í\95\9c ì \9c목ì\9d\84 ì\9e\85ë ¥í\95´ì\95¼ í\95©ë\8b\88ë\8b¤.',
-'mergehistory-invalid-destination' => '대상 문서 ì\9d´ë¦\84ì\97\90ë\8a\94 ë°\98ë\93\9cì\8b\9c ì\9c í\9a¨í\95\9c ì \9c목ì\9d\84 ì\9e\85ë ¥í\95´ì\95¼ í\95©ë\8b\88ë\8b¤.',
+'mergehistory-invalid-source' => '원본 문서ë\8a\94 ì\98¬ë°\94른 ì \9c목ì\9d´ì\96´ì\95¼ í\95©ë\8b\88ë\8b¤.',
+'mergehistory-invalid-destination' => '대상 문서ë\8a\94 ì\98¬ë°\94른 ì \9c목ì\9d´ì\96´ì\95¼ í\95©ë\8b\88ë\8b¤.',
 'mergehistory-autocomment' => '[[:$1]] 문서를 [[:$2]] 문서로 합침',
 'mergehistory-comment' => '[[:$1]] 문서를 [[:$2]] 문서로 합침: $3',
-'mergehistory-same-destination' => '원본 문서 이름과  문서 이름은 달라야 합니다',
+'mergehistory-same-destination' => '원본 문서 이름과 대상 문서 이름은 달라야 합니다',
 'mergehistory-reason' => '이유:',
 
 # Merge log
-'mergelog' => '병합 기록',
-'pagemerge-logentry' => '사용자가 [[$1]]을 [[$2]]에 병합했습니다 ($3판이 위로 옮겨짐)',
-'revertmerge' => '병합 해제',
+'mergelog' => '합치기 기록',
+'pagemerge-logentry' => '사용자가 [[$1]]을 [[$2]]에 합쳤습니다 ($3판이 위로 옮겨짐)',
+'revertmerge' => '합치기 해제',
 'mergelogpagetext' => '다음은 한 문서의 역사를 다른 문서의 역사와 합친 최근 기록입니다.',
 
 # Diffs
@@ -1627,7 +1629,7 @@ HTML 태그를 확인하세요.',
 'prefs-diffs' => '차이',
 
 # User preference: email validation using jQuery
-'email-address-validity-valid' => 'ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8cê°\80 ì\9c í\9a¨í\95\9c ê²\83ì\9c¼ë¡\9c ë³´ì\9e\85ë\8b\88ë\8b¤.',
+'email-address-validity-valid' => 'ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8cê°\80 ì\98¬ë°\94른 ê²\83ì\9c¼ë¡\9c ë³´ì\9e\85ë\8b\88ë\8b¤',
 'email-address-validity-invalid' => '올바른 이메일 주소를 입력하세요',
 
 # User rights
@@ -1885,7 +1887,7 @@ HTML 태그를 확인하세요.',
 이름을 바꾸어 다시 시도해 주세요.',
 'filename-toolong' => '파일 이름은 240바이트를 넘을 수 없습니다.',
 'badfilename' => '파일 이름이 "$1"로 바뀌었습니다.',
-'filetype-mime-mismatch' => '파일 확장자 ".$1"와 이 파일의 MIME($2)가 일치하지 않습니다.',
+'filetype-mime-mismatch' => '".$1" 파일 확장자와 이 파일의 MIME($2)가 일치하지 않습니다.',
 'filetype-badmime' => '"$1" MIME을 가진 파일은 올릴 수 없습니다.',
 'filetype-bad-ie-mime' => '인터넷 익스플로러가 잠재적으로 위험한 파일 형식으로 판단되어 사용이 금지된 "$1"로 인식할 수 있기 때문에 이 파일을 올릴 수 없습니다.',
 'filetype-unwanted-type' => "'''\".\$1\"''' 확장자는 추천하지 않습니다.
@@ -1932,7 +1934,7 @@ $2 {{PLURAL:$3|형식만 사용할 수 있습니다}}.',
 그래도 파일을 올리시려면, 뒤로 돌아가서 다른 이름으로 시도해 주시기 바랍니다.
 [[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => '같은 이름의 파일이 이미 위키미디어 공용에 있습니다.
-í\8c\8cì\9d¼ì\9d\84 ì\97\85ë¡\9cë\93\9cí\95\98길 ì\9b\90í\95\98ì\8b ë\8b¤ë©´ ë\92¤ë¡\9c ë\8f\8cì\95\84ê°\80ì\84\9c ë\8b¤ë¥¸ ì\9d´ë¦\84ì\9c¼ë¡\9c ì\8b\9cë\8f\84í\95´ ì£¼ì\8b\9c기 ë°\94ë\9e\8dë\8b\88ë\8b¤.
+ê·¸ë\9e\98ë\8f\84 í\8c\8cì\9d¼ì\9d\84 ì\98¬ë¦¬ë ¤ë©´ ë\92¤ë¡\9c ë\8f\8cì\95\84ê°\80ì\84\9c ë\8b¤ë¥¸ ì\9d´ë¦\84ì\9c¼ë¡\9c ì\8b\9cë\8f\84í\95´ ì£¼ì\8b\9c기 ë°\94ë\9e\8dë\8b\88ë\8b¤.
 [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => '현재 올리고 있는 {{PLURAL:$1|파일}}이 아래 파일과 중복됩니다:',
 'file-deleted-duplicate' => '이 파일과 같은 파일 ([[:$1]])이 이전에 삭제된 적이 있습니다. 파일을 다시 올리기 전에 문서의 삭제 기록을 확인해 주시기 바랍니다.',
@@ -1998,29 +2000,29 @@ URL이 올바르고 접근 가능한지를 확인하고 다시 시도하세요.
 'upload-too-many-redirects' => 'URL이 너무 많은 넘겨주기에 연결되어 있습니다.',
 'upload-unknown-size' => '크기를 알 수 없음',
 'upload-http-error' => 'HTTP 오류 발생: $1',
-'upload-copy-upload-invalid-domain' => 'ì\9d´ ë\8f\84ë©\94ì\9d¸ì\97\90 ì\86\8dí\95\98ì§\80 ì\95\8aë\8a\94 ì\9b¹ì\82¬ì\9d´í\8a¸ì\9d\98 í\8c\8cì\9d¼ì\9d\84 ì\97\85ë¡\9cë\93\9cí\95  수 없습니다.',
+'upload-copy-upload-invalid-domain' => 'ì\9d´ ë\8f\84ë©\94ì\9d¸ì\97\90 ì\86\8dí\95\98ì§\80 ì\95\8aë\8a\94 ì\9b¹ì\82¬ì\9d´í\8a¸ì\9d\98 í\8c\8cì\9d¼ì\9d\84 ì\98¬ë¦´ 수 없습니다.',
 
 # File backend
-'backend-fail-stream' => '$1 파일을 스트리밍할 수 없습니다.',
-'backend-fail-backup' => '$1 파일을 백업할 수 없습니다.',
+'backend-fail-stream' => '"$1" 파일을 스트림할 수 없습니다.',
+'backend-fail-backup' => '"$1" 파일을 백업할 수 없습니다.',
 'backend-fail-notexists' => '$1 파일이 존재하지 않습니다.',
 'backend-fail-hashes' => '비교 해시값을 얻지 못했습니다.',
-'backend-fail-notsame' => '$1 파일과 같은 이름을 가진 다른 파일이 존재합니다.',
-'backend-fail-invalidpath' => '$1 경로가 유효하지 않습니다.',
-'backend-fail-delete' => '$1 파일을 삭제할 수 없습니다.',
+'backend-fail-notsame' => '"$1" 파일과 같은 이름을 가진 다른 파일이 존재합니다.',
+'backend-fail-invalidpath' => '"$1"(은)는 올바른 저장소 경로가 아닙니다.',
+'backend-fail-delete' => '"$1" 파일을 삭제할 수 없습니다.',
 'backend-fail-describe' => '"$1" 파일에 대한 메타데이터를 바꿀 수 없습니다.',
-'backend-fail-alreadyexists' => '$1 파일이 이미 존재합니다.',
-'backend-fail-store' => '$1 파일을 $2 경로에 저장하지 못했습니다.',
-'backend-fail-copy' => '$1 파일을 $2 경로에 복사하지 못했습니다.',
-'backend-fail-move' => '$1 파일을 $2 경로로 이동하지 못했습니다.',
+'backend-fail-alreadyexists' => '"$1" 파일이 이미 존재합니다.',
+'backend-fail-store' => '"$1" 파일을 "$2" 경로에 저장하지 못했습니다.',
+'backend-fail-copy' => '"$1" 파일을 "$2" 경로에 복사하지 못했습니다.',
+'backend-fail-move' => '"$1" 파일을 "$2" 경로로 옮기지 못했습니다.',
 'backend-fail-opentemp' => '임시 파일을 열 수 없습니다.',
 'backend-fail-writetemp' => '임시 파일을 쓸 수 없습니다.',
 'backend-fail-closetemp' => '임시 파일을 닫을 수 없습니다.',
-'backend-fail-read' => '$1 파일을 읽을 수 없습니다.',
-'backend-fail-create' => '$1 파일을 저장하지 못했습니다.',
-'backend-fail-maxsize' => '$2{{PLURAL:$2|바이트}}보다 커서 $1 파일을 저장하지 못했습니다.',
+'backend-fail-read' => '"$1" 파일을 읽을 수 없습니다.',
+'backend-fail-create' => '"$1" 파일을 저장할 수 없습니다.',
+'backend-fail-maxsize' => '{{PLURAL:$2|1 바이트|$2 바이트}}보다 커서 "$1" 파일을 저장하지 못했습니다.',
 'backend-fail-readonly' => '"$1" 저장 백엔드가 읽기 전용입니다. 자세한 이유는 다음과 같습니다: "$2"',
-'backend-fail-synced' => '파일 "$1"은 내부 저장 백엔드에 불안정한 상태로 있습니다.',
+'backend-fail-synced' => '"$1" 파일은 내부 저장 백엔드에 불안정한 상태로 있습니다',
 'backend-fail-connect' => '"$1" 저장 백엔드에 접속하지 못했습니다.',
 'backend-fail-internal' => '"$1" 저장 백엔드에 알 수 없는 오류가 발생했습니다.',
 'backend-fail-contenttype' => '"$1"에 저장하기 위한 파일의 내용 유형을 결정하지 못했습니다.',
@@ -2067,11 +2069,11 @@ URL이 올바르고 접근 가능한지를 확인하고 다시 시도하세요.
 서버가 이 정보를 받을 수 있도록 설정되어 있지 않습니다.
 이러한 경우는 서버가 CGI 기반이고 img_auth를 지원하지 않을 때 나타날 수 있습니다.
 https://www.mediawiki.org/wiki/Manual:Image_Authorization 을 참고하십시오.',
-'img-auth-notindir' => 'ì\9a\94ì²­í\95\9c ê²½ë¡\9cê°\80 ì\84¤ì \95í\95\9c ì\98¬ë¦¬ê¸° ë\94\94ë \89í\86 리에 없습니다.',
+'img-auth-notindir' => 'ì\9a\94ì²­í\95\9c ê²½ë¡\9cê°\80 ì\84¤ì \95í\95\9c ì\98¬ë¦¬ê¸° ë\94\94ë \89í\84°리에 없습니다.',
 'img-auth-badtitle' => '"$1"에서 올바른 제목을 만들 수 없습니다.',
 'img-auth-nologinnWL' => '로그인하지 않았으며 "$1" 파일은 화이트리스트에 존재하지 않습니다.',
 'img-auth-nofile' => '"$1" 파일이 없습니다.',
-'img-auth-isdir' => '"$1" ë\94\94ë \89í\86 리에 접근을 시도했습니다.
+'img-auth-isdir' => '"$1" ë\94\94ë \89í\84°리에 접근을 시도했습니다.
 파일에만 접근할 수 있습니다.',
 'img-auth-streaming' => '"$1" 파일을 전송하는 중입니다.',
 'img-auth-public' => 'img_auth.php는 개인 위키 파일을 바깥 사이트로 전송하는 기능입니다.
@@ -2084,8 +2086,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization 을 참고하십시오
 'http-invalid-url' => '잘못된 URL: $1',
 'http-invalid-scheme' => '"$1"로 시작하는 URL은 지원되지 않습니다.',
 'http-request-error' => '알 수 없는 오류로 HTTP 요청에 실패했습니다.',
-'http-read-error' => 'HTTP 읽기 오류.',
-'http-timed-out' => 'HTTP 요청 시간 초과.',
+'http-read-error' => 'HTTP 읽기 오류입니다.',
+'http-timed-out' => 'HTTP 요청 시간 초과입니다.',
 'http-curl-error' => 'URL 열기 오류: $1',
 'http-bad-status' => 'HTTP 요청 중 오류 발생: $1 $2',
 
@@ -2093,7 +2095,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization 을 참고하십시오
 'upload-curl-error6' => 'URL 접근 불가',
 'upload-curl-error6-text' => 'URL에 접근할 수 없습니다.
 URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
-'upload-curl-error28' => 'ì\97\85ë¡\9cë\93\9c 시간 초과',
+'upload-curl-error28' => 'ì\98¬ë¦¬ê¸° 시간 초과',
 'upload-curl-error28-text' => '사이트에서 응답하는 시간이 너무 깁니다.
 사이트 접속이 가능한지 확인한 다음 다시 시도하세요.
 해당 사이트에 접속이 많을 경우 접속이 원활한 시간대에 시도하세요.',
@@ -2217,7 +2219,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'randompage-nopages' => '{{PLURAL:$2|다음}} 이름공간에는 문서가 없습니다: $1',
 
 # Special:RandomInCategory
-'randomincategory' => '분류에 임의 문서',
+'randomincategory' => '분류에 있는 임의 문서',
 'randomincategory-invalidcategory' => '"$1"(은)는 올바른 분류 이름이 아닙니다.',
 'randomincategory-nopages' => '[[:Category:$1]]에 문서가 없습니다.',
 'randomincategory-selectcategory' => '분류에서 임의 문서 얻기: $1 $2',
@@ -2465,7 +2467,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'emailuser-title-notarget' => '사용자에게 이메일 보내기',
 'emailpage' => '사용자에게 이메일 보내기',
 'emailpagetext' => '이 {{GENDER:$1|사용자}}가 환경 설정에 올바른 이메일 주소를 적었다면, 아래 양식을 통해 이메일을 보낼 수 있습니다.
\9d´ë©\94ì\9d¼ì\9d\84 ë°\9bì\9d\80 ì\82¬ì\9a©ì\9e\90ê°\80 ë°\94ë¡\9c ë\8bµì\9e¥í\95  ì\88\98 ì\9e\88ë\8f\84ë¡\9d í\95\98기 ì\9c\84í\95´ [[Special:Preferences|ì\82¬ì\9a©ì\9e\90 í\99\98ê²½ ì\84¤ì \95]]ì\97\90 ì \81ì\9d\80 ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8cê°\80 "ë°\9cì\8b ì\9e\90" ì \95ë³´ì\97\90 ë\93¤ì\96´ê°\91ë\8b\88ë\8b¤. ë\94°ë\9d¼ì\84\9c ì\88\98ì\8b ì\9e\90ê°\80 당신에게 직접 답장을 보낼 수 있습니다.',
\9d´ë©\94ì\9d¼ì\9d\84 ë°\9bì\9d\80 ì\82¬ì\9a©ì\9e\90ê°\80 ë°\94ë¡\9c ë\8bµì\9e¥í\95  ì\88\98 ì\9e\88ë\8f\84ë¡\9d í\95\98기 ì\9c\84í\95´ [[Special:Preferences|ì\82¬ì\9a©ì\9e\90 í\99\98ê²½ ì\84¤ì \95]]ì\97\90 ì \81ì\9d\80 ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8cê°\80 "ë³´ë\82´ë\8a\94 ì\82¬ë\9e\8c" ì \95ë³´ì\97\90 ë\93¤ì\96´ê°\91ë\8b\88ë\8b¤. ë\94°ë\9d¼ì\84\9c ë°\9bë\8a\94 ì\82¬ë\9e\8cì\9d´ 당신에게 직접 답장을 보낼 수 있습니다.',
 'usermailererror' => '메일 개체에서 오류 발생:',
 'defemailsubject' => '"$1" 사용자가 보낸 {{SITENAME}} 이메일',
 'usermaildisabled' => '사용자 이메일 비활성화됨',
@@ -2479,8 +2481,8 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'emailusername' => '사용자 이름:',
 'emailusernamesubmit' => '확인',
 'email-legend' => '{{SITENAME}}의 다른 사용자에게 이메일을 보내기',
-'emailfrom' => '이메일 발신자:',
-'emailto' => '수신자:',
+'emailfrom' => '보내는 사람:',
+'emailto' => '받는 사람:',
 'emailsubject' => '제목:',
 'emailmessage' => '내용:',
 'emailsend' => '보내기',
@@ -3110,7 +3112,7 @@ $2',
 'thumbnail-temp-create' => '임시 섬네일 파일을 만들 수 없습니다.',
 'thumbnail-dest-create' => '대상 경로에 섬네일을 저장할 수 없습니다.',
 'thumbnail_invalid_params' => '섬네일 매개변수가 잘못되었습니다.',
-'thumbnail_dest_directory' => 'ì\83\88 ëª©ì \81 ë\94\94ë \89í\86 리를 만들 수 없습니다.',
+'thumbnail_dest_directory' => 'ì\83\88 ëª©ì \81 ë\94\94ë \89í\84°리를 만들 수 없습니다.',
 'thumbnail_image-type' => '해당 파일 형식은 지원하지 않습니다',
 'thumbnail_gd-library' => 'GD 라이브러리 설정이 잘못되었습니다: $1 함수를 찾을 수 없습니다.',
 'thumbnail_image-missing' => '파일을 찾을 수 없습니다: $1',
@@ -3640,7 +3642,7 @@ Variants for Chinese language
 'exif-serialnumber' => '카메라 일련 번호',
 'exif-cameraownername' => '카메라 소유자',
 'exif-label' => '레이블',
-'exif-datetimemetadata' => '메타데이터 최종 수정일',
+'exif-datetimemetadata' => '메타데이터가 마지막으로 수정된 날짜',
 'exif-nickname' => '그림의 비공식적 이름',
 'exif-rating' => '평가 (5점 만점)',
 'exif-rightscertificate' => '권리 관리 인증서',
@@ -4147,7 +4149,7 @@ $5
 #모든 정규 표현식은 이 줄 위에 넣어 주십시오. 그리고 이 줄은 그대로 두십시오.</pre>',
 
 # Special:Tags
-'tags' => 'ì\9c í\9a¨í\95\9c í\8e¸ì§\91ì\97\90 ë\8c\80í\95\9c 태그',
+'tags' => 'ì\98¬ë°\94른 í\8e¸ì§\91 태그',
 'tag-filter' => '[[Special:Tags|태그]] 필터:',
 'tag-filter-submit' => '필터',
 'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|태그}}]]: $2)',
@@ -4292,10 +4294,10 @@ $5
 'api-error-publishfailed' => '내부 오류: 서버가 임시 파일을 게시하지 못했습니다.',
 'api-error-timeout' => '서버가 제 시간 내에 응답하지 않았습니다.',
 'api-error-unclassified' => '알 수 없는 오류가 발생했습니다.',
-'api-error-unknown-code' => '알 수 없는 오류: "$1".',
+'api-error-unknown-code' => '알 수 없는 오류: "$1"',
 'api-error-unknown-error' => '내부 오류: 파일을 올리려 하는 도중에 무엇인가가 잘못되었습니다.',
-'api-error-unknown-warning' => '알 수 없는 경고: "$1".',
-'api-error-unknownerror' => '알 수 없는 오류: "$1".',
+'api-error-unknown-warning' => '알 수 없는 경고: "$1"',
+'api-error-unknownerror' => '알 수 없는 오류: "$1"',
 'api-error-uploaddisabled' => '이 위키에서 파일 올리기가 비활성화되어 있습니다.',
 'api-error-verification-error' => '파일이 손상되었거나 잘못된 확장자를 사용하고 있습니다.',
 
@@ -4321,7 +4323,9 @@ $5
 'limitreport-walltime-value' => '$1{{PLURAL:$1|초}}',
 'limitreport-ppvisitednodes' => '전처리기가 방문한 노드 수',
 'limitreport-ppgeneratednodes' => '전처리기가 생성한 노드 수',
+'limitreport-postexpandincludesize' => '전개한 뒤 포함 크기',
 'limitreport-postexpandincludesize-value' => '$1/$2 바이트',
+'limitreport-templateargumentsize' => '틀 인수 크기',
 'limitreport-templateargumentsize-value' => '$1/$2 바이트',
 'limitreport-expansiondepth' => '최대 전개 깊이',
 'limitreport-expensivefunctioncount' => '부하 높은 파서 함수 수',
index 5d8c08b..c06f080 100644 (file)
@@ -722,7 +722,7 @@ Dofir kënne Visiteure déi dës IP-Adress benotzen den Ament keng Benotzerkonte
 Dowéinst ass et bis ewell net méiglech, fir déi folgend Funktiounen E-Mailen ze schécken oder ze kréien.',
 'noemailprefs' => 'Gitt eng E-Mailadress bei Ären Astellungen un, fir datt déi Funktioune funktionéieren.',
 'emailconfirmlink' => 'Confirméiert är E-Mailadress w.e.g..',
-'invalidemailaddress' => 'Dës E-Mail-Adress gëtt net akzeptéiert well se en ongëltegt Format (z.B. ongëlteg Zeechen) ze hu schéngt.
+'invalidemailaddress' => 'Dës E-Mail-Adress gëtt net akzeptéiert well se en ongëltegt Format (z. B. ongëlteg Zeechen) ze hu schéngt.
 Gitt eng valabel E-Mail-Adress an oder loosst dëst Feld eidel.',
 'cannotchangeemail' => 'Mailadresse vu Benotzerkonte kënnen op dëser Wiki net geännert ginn.',
 'emaildisabled' => 'Dëse Site ka keng Maile schécken.',
@@ -739,6 +739,9 @@ Waart w.e.g. ier Dir et nach eng Kéier versicht.",
 'login-abort-generic' => 'Dir sidd net ageloggt - Aloggen ofgebrach',
 'loginlanguagelabel' => 'Sprooch: $1',
 'suspicious-userlogout' => 'Är Ufro fir Iech auszeloggen gouf refuséiert well et esou ausgesäit wéi wann se vun engem Futtise Browser oder Proxy-Tëschespäicher kënnt.',
+'createacct-another-realname-tip' => "De richtegen Numm ass fakultativ.
+
+Wann Dir en ugitt, gëtt e benotzt fir d'Benotzerattributiounen fir Är Aarbecht zouzeuerdnen.",
 
 # Email sending
 'php-mail-error-unknown' => 'Onbekannte Feeler an der PHP-Mail-Fonctioun',
@@ -1347,6 +1350,7 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'recentchangesdays-max' => '(Maximal $1 {{PLURAL:$1|Dag|Deeg}})',
 'recentchangescount' => 'Zuel vun den Ännerungen déi als Standard gewise ginn:',
 'prefs-help-recentchangescount' => 'Inklusiv Rezent Ännerungen, Versiounshistoriquen a Logbicher.',
+'prefs-help-watchlist-token2' => 'Dëst ass de geheime Schlëssel fir de Webfeed vun Ärer Iwwerwaachungslëscht. Jiddereen deen e kënnt kann Är Iwwerwaachungslëscht liesen, dofir sollt Dir en net weider ginn. [[Special:ResetTokens|Klickt hei wann dir en zrécksetze musst]].',
 'savedprefs' => 'Är Astellunge goufe gespäichert.',
 'timezonelegend' => 'Zäitzon:',
 'localtime' => 'Lokalzäit:',
@@ -3835,6 +3839,7 @@ Dir misst eng [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun der GNU General Public
 'tags' => 'Valabel Ännerungsmarkéierungen',
 'tag-filter' => '[[Special:Tags|Markéierungs]]-Filter:',
 'tag-filter-submit' => 'Filter',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Tag|Tags}}]]: $2)',
 'tags-title' => 'Markéierungen',
 'tags-intro' => 'Op dëser Säit stinn all déi Taggen, déi vun dëser Software fir Ännerungen unzeweise benotzt ginn, an hir Bedeitung.',
 'tags-tag' => 'Numm vun der Markéierung',
@@ -3996,4 +4001,12 @@ Soss kënnt Dir den einfache Formulär hei drënner benotzen. Är Bemierkung gë
 # Image rotation
 'rotate-comment' => 'Bild ëm $1 {{PLURAL:$1|Grad}} an der Richtung vun der Auer gedréint',
 
+# Limit report
+'limitreport-cputime' => 'CPU-Zäit-Notzung',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|Sekonn|Sekonnen}}',
+'limitreport-walltime' => 'Echtzäitnotzung',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|Sekonn|Sekonnen}}',
+'limitreport-postexpandincludesize-value' => '$1/$2 Byten',
+'limitreport-templateargumentsize-value' => '$1/$2 Byten',
+
 );
index 47150d1..19e8505 100644 (file)
@@ -97,7 +97,7 @@ $messages = array(
 'tog-useeditwarning' => 'Brīdināt mani, kad es atstāju lapas rediģēšanu nesaglabājot izmaiņas',
 
 'underline-always' => 'vienmēr',
-'underline-never' => 'nekad',
+'underline-never' => 'Nekad',
 'underline-default' => 'kā pārlūkā vai apdarē',
 
 # Font style option in Special:Preferences
@@ -122,18 +122,18 @@ $messages = array(
 'thu' => 'Ce',
 'fri' => 'Pk',
 'sat' => 'Se',
-'january' => 'Janvārs',
-'february' => 'Februārs',
-'march' => 'martā',
-'april' => 'aprīlī',
-'may_long' => 'maijā',
-'june' => 'jūnijā',
-'july' => 'jūlijā',
-'august' => 'augustā',
-'september' => 'septembrī',
-'october' => 'oktobrī',
-'november' => 'novembrī',
-'december' => 'decembrī',
+'january' => 'Janvāris',
+'february' => 'Februāris',
+'march' => 'Marts',
+'april' => 'Aprīlis',
+'may_long' => 'Maijs',
+'june' => 'Jūnijs',
+'july' => 'Jūlijs',
+'august' => 'Augusts',
+'september' => 'Septembris',
+'october' => 'Oktobris',
+'november' => 'Novembris',
+'december' => 'Decembris',
 'january-gen' => 'Janvāra',
 'february-gen' => 'Februāra',
 'march-gen' => 'Marta',
@@ -488,6 +488,7 @@ Vari turpināt to izmantot anonīmi, vari <span class='plainlinks'>[$1 atgriezti
 'createacct-reason' => 'Iemesls',
 'createacct-reason-ph' => 'Kāpēc jūs veidojat citu kontu',
 'createacct-captcha' => 'Drošības pārbaude',
+'createacct-submit' => 'Izveidot savu kontu',
 'createacct-another-submit' => 'Izveidot citu lietotāja kontu',
 'createacct-benefit-body1' => '{{PLURAL:$1|labojums|labojumi}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|lapa|lapas}}',
@@ -591,7 +592,7 @@ Pagaidu parole: $2',
 'changeemail-cancel' => 'Atcelt',
 
 # Edit page toolbar
-'bold_sample' => 'Teksts boldā',
+'bold_sample' => 'Teksts treknrakstā',
 'bold_tip' => 'Teksts treknrakstā',
 'italic_sample' => 'Teksts kursīvā',
 'italic_tip' => 'Teksts kursīvā',
@@ -706,7 +707,7 @@ Pēdējais bloķēšanas reģistra ieraksts ir apskatāms zemāk:',
 'updated' => '(Atjaunots)',
 'note' => "'''Piezīme: '''",
 'previewnote' => "'''Atceries, ka šis ir tikai pirmskats un teksts vēl nav saglabāts!'''",
-'continue-editing' => 'Turpināt labošanu',
+'continue-editing' => 'Pāriet uz labošanas lauku',
 'session_fail_preview' => "'''Neizdevās apstrādāt tavas izmaiņas, jo tika pazaudēti sesijas dati.
 Lūdzu mēģini vēlreiz.
 Ja tas joprojām nedarbojas, mēģini [[Special:UserLogout|izlogoties ārā]] un ielogoties no jauna.'''",
@@ -765,7 +766,7 @@ Tu vari atgriezties atpakaļ un izmainīt esošu lapu, vai arī [[Special:UserLo
 'nocreate-loggedin' => 'Tev nav atļaujas veidot jaunas lapas.',
 'sectioneditnotsupported-title' => 'Sadaļa rediģēšana nav atbalstīta',
 'sectioneditnotsupported-text' => 'Sadaļu rediģēsana šajā lapā nav atļauta.',
-'permissionserrors' => 'Atļaujas kļūdas',
+'permissionserrors' => 'Atļauju kļūda',
 'permissionserrorstext' => 'Tev nav atļauts veikt šo darbību {{PLURAL:$1|šāda iemesla|šādu iemeslu}} dēļ:',
 'permissionserrorstext-withaction' => 'Tev nav atļauts $2 {{PLURAL:$1|šāda iemesla|šādu iemeslu}} dēļ:',
 'recreate-moveddeleted-warn' => "'''Brīdinājums: Tu atjauno lapu, kas ir tikusi izdzēsta'''
@@ -781,14 +782,18 @@ Netika sniegts paskaidrojums.',
 Izskatās, ka lapa ir dzēsta.',
 'edit-conflict' => 'Labošanas konflikts.',
 'edit-no-change' => 'Tavs labojums tika ignorēts, jo tekstā netika izdarītas izmaiņas.',
+'postedit-confirmation' => 'Jūsu labojums tika saglabāts.',
 'edit-already-exists' => 'Nevar izveidot jaunu lapu.
 Tā jau eksistē.',
 'defaultmessagetext' => 'Noklusētais ziņojuma teksts',
 'invalid-content-data' => 'Nederīgi satura dati',
+'content-not-allowed-here' => '"$1" saturs nav atļauts lapā [[$2]]',
 'editwarning-warning' => 'Atstājot šo lapu tu zaudēsi izdarītās izmaiņas. 
 Ja esi pieteicies, jūs vari atspējot šo brīdinājumu savās izvēlēs sadaļā "rediģēšana"',
 
 # Content models
+'content-model-wikitext' => 'vikiteksts',
+'content-model-text' => 'vienkāršs teksts',
 'content-model-javascript' => 'JavaScript kods',
 'content-model-css' => 'CSS stils',
 
@@ -932,11 +937,13 @@ $1",
 # Diffs
 'history-title' => '"$1" versiju hronoloģija',
 'difference-title' => 'Atšķirības starp "$1" versijām',
+'difference-title-multipage' => 'Atšķirības starp lapām "$1" un "$2"',
 'difference-multipage' => '(Atšķirības starp lapām)',
 'lineno' => '$1. rindiņa:',
 'compareselectedversions' => 'Salīdzināt izvēlētās versijas',
 'showhideselectedversions' => 'Rādīt/slēpt izvēlētās versijas',
 'editundo' => 'atcelt',
+'diff-empty' => '(Nav atšķirību)',
 'diff-multi' => '({{PLURAL:$1|Viena starpversija|$1 starpversijas}} no {{PLURAL:$2|viena lietotāja|$2 lietotājiem}} nav parādīta)',
 
 # Search results
@@ -970,6 +977,7 @@ $1",
 'searchprofile-everything-tooltip' => 'Meklēt visur (ieskaitot diskusiju lapas)',
 'searchprofile-advanced-tooltip' => 'Izvēlēties nosaukumvietas, kurās meklēt',
 'search-result-size' => '$1 ({{PLURAL:$2|1 vārds|$2 vārdi}})',
+'search-result-category-size' => '$1 {{PLURAL:$1|apakšelements|apakšelementi}} ($2 {{PLURAL:$2|apakškategorija|apakškategorijas}}, $3 {{PLURAL:$3|fails|faili}})',
 'search-result-score' => 'Atbilstība: $1%',
 'search-redirect' => '(pāradresēts no $1)',
 'search-section' => '(sadaļa $1)',
@@ -978,7 +986,7 @@ $1",
 'search-interwiki-default' => 'Rezultāti no $1:',
 'search-interwiki-more' => '(vairāk)',
 'search-relatedarticle' => 'Saistītais',
-'mwsuggest-disable' => 'Atslēgt AJAX ieteikumus',
+'mwsuggest-disable' => 'Atslēgt meklēšanas ieteikumus',
 'searcheverything-enable' => 'Meklēt visās nosaukumvietās',
 'searchrelated' => 'saistītais',
 'searchall' => 'viss',
@@ -1071,7 +1079,7 @@ Pagaidām vari meklēt, izmantojot Google vai Yahoo.
 'prefs-emailconfirm-label' => 'E-pasta statuss:',
 'youremail' => 'Tava e-pasta adrese:',
 'username' => '{{GENDER:$1|Lietotājvārds}}:',
-'uid' => 'Lietotāja ID:',
+'uid' => '{{GENDER:$1|Lietotāja|Lietotājas}} ID:',
 'prefs-memberingroups' => 'Pieder {{PLURAL:$1|grupai|grupām}}:',
 'prefs-registration' => 'Reģistrēšanās datums:',
 'yourrealname' => 'Tavs īstais vārds:',
@@ -1099,7 +1107,9 @@ Ja tu izvēlies to norādīt, tas tiks izmantots, lai identificētu tavu darbu (
 'prefs-signature' => 'Paraksts',
 'prefs-dateformat' => 'Datuma formāts',
 'prefs-timeoffset' => 'Laika nobīde',
-'prefs-advancedediting' => 'Papildus uzstādījumi',
+'prefs-advancedediting' => 'Vispārīgi uzstādījumi',
+'prefs-editor' => 'Redaktors',
+'prefs-preview' => 'Priekšskatījums',
 'prefs-advancedrc' => 'Papildus uzstādījumi',
 'prefs-advancedrendering' => 'Papildus uzstādījumi',
 'prefs-advancedsearchoptions' => 'Papildus uzstādījumi',
@@ -1150,7 +1160,7 @@ Ja tu izvēlies to norādīt, tas tiks izmantots, lai identificētu tavu darbu (
 'group-bot-member' => '{{GENDER:$1|bots}}',
 'group-sysop-member' => '{{GENDER:$1|administrators|administratore}}',
 'group-bureaucrat-member' => '{{GENDER:$1|birokrāts|birokrāte}}',
-'group-suppress-member' => 'novērotājs',
+'group-suppress-member' => '{{GENDER:$1|novērotājs|novērotāja}}',
 
 'grouppage-user' => '{{ns:project}}:Lietotāji',
 'grouppage-autoconfirmed' => '{{ns:project}}:Automātiski apstiprināti lietotāji',
@@ -1261,6 +1271,7 @@ Ja tu izvēlies to norādīt, tas tiks izmantots, lai identificētu tavu darbu (
 'recentchanges' => 'Pēdējās izmaiņas',
 'recentchanges-legend' => 'Pēdējo izmaiņu iespējas',
 'recentchanges-summary' => 'Šajā lapā ir uzskaitītas pēdējās izdarītās izmaiņas.',
+'recentchanges-noresult' => 'Norādītajā periodā šiem kritērijiem neatbilst neviena izmaiņa.',
 'recentchanges-feed-description' => 'Sekojiet līdzi jaunākajām izmaiņām vikijā izmantojot šo barotni.',
 'recentchanges-label-newpage' => 'Šī ir jaunizveidota lapa',
 'recentchanges-label-minor' => 'Šī ir maznozīmīga izmaiņa',
@@ -1477,6 +1488,7 @@ Atļauta ir tikai failu piekļuve.',
 # HTTP errors
 'http-invalid-url' => 'Nederīgs URL: $1',
 'http-read-error' => 'HTTP nolasīšanas kļūda.',
+'http-timed-out' => 'HTTP pieprasījumam ir iestājies noilgums.',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
 'upload-curl-error6' => 'URL nevarēja sasniegt',
@@ -1586,6 +1598,11 @@ Apraksts ir [$2 faila apraksta lapā], kas ir parādīta zemāk.',
 # Random page
 'randompage' => 'Nejauša lapa',
 
+# Special:RandomInCategory
+'randomincategory' => 'Nejauša lapa kategorijā',
+'randomincategory-invalidcategory' => '"$1" nav derīgs kategorijas nosaukums.',
+'randomincategory-selectcategory-submit' => 'Aiziet',
+
 # Random redirect
 'randomredirect' => 'Nejauša pāradresācijas lapa',
 
@@ -1615,6 +1632,8 @@ Apraksts ir [$2 faila apraksta lapā], kas ir parādīta zemāk.',
 Šīs saites vajadzētu izlabot, lai tās vestu tieši uz attiecīgo lapu.<br />
 Lapu uzskata par nozīmju atdalīšanas lapu, ja tā satur veidni, uz kuru ir saite no [[MediaWiki:Disambiguationspage]].",
 
+'pageswithprop-submit' => 'Aiziet',
+
 'doubleredirects' => 'Divkāršas pāradresācijas lapas',
 'doubleredirectstext' => 'Šajā lapā ir uzskaitītas pāradresācijas lapas, kuras pāradresē uz citām pāradresācijas lapām.
 Katrā rindiņā ir saites uz pirmo un otro pāradresācijas lapu, kā arī pirmā rindiņa no otrās pāradresācijas lapas teksta, kas parasti ir faktiskā "gala" lapa, uz kuru vajadzētu būt saitei pirmajā lapā.
@@ -1944,6 +1963,7 @@ Lūdzu, spied \"''back''\" un atjaunini iepriekšējo lapu. Tad mēģini vēlrei
 'protect-title' => 'Izmainīt "$1" aizsargāšanas līmeni?',
 'protect-title-notallowed' => 'Apskatīt "$1" aizsrdzības līmeni',
 'prot_1movedto2' => '"[[$1]]" pārdēvēju par "[[$2]]"',
+'protect-norestrictiontypes-title' => 'Neaizsargājama lapa',
 'protect-legend' => 'Apstiprināt aizsargāšanu',
 'protectcomment' => 'Iemesls:',
 'protectexpiry' => 'Beidzas:',
@@ -2435,7 +2455,7 @@ Lūdzu, mēģiniet vēlreiz.',
 'tooltip-t-permalink' => 'Paliekoša saite uz šo lapas versiju',
 'tooltip-ca-nstab-main' => 'Apskatīt rakstu',
 'tooltip-ca-nstab-user' => 'Apskatīt lietotāja lapu',
-'tooltip-ca-nstab-media' => 'Apskatīt multimēdiju lapu',
+'tooltip-ca-nstab-media' => 'Apskatīt multimediju lapu',
 'tooltip-ca-nstab-special' => 'Šī ir īpašā lapa, tu nevari izmainīt pašu lapu.',
 'tooltip-ca-nstab-project' => 'Apskatīt projekta lapu',
 'tooltip-ca-nstab-image' => 'Apskatīt attēla lapu',
@@ -2491,7 +2511,7 @@ To visticamāk izraisīja ārēja saite uz melnajā sarakstā esošu interneta v
 'pageinfo-language' => 'Lappuses satura valoda',
 'pageinfo-views' => 'Skatījumu skaits',
 'pageinfo-watchers' => 'Lapas uzraudzītāju skaits',
-'pageinfo-redirects-name' => 'Pāradresācijas uz šo lapu',
+'pageinfo-redirects-name' => 'Pāradresāciju skaits uz šo lapu',
 'pageinfo-subpages-name' => 'Šīs lapas apakšlapas',
 'pageinfo-lastuser' => 'Pēdējais labotājs',
 'pageinfo-edits' => 'Kopējais izmaiņu skaits',
@@ -2500,6 +2520,10 @@ To visticamāk izraisīja ārēja saite uz melnajā sarakstā esošu interneta v
 'pageinfo-redirectsto-info' => 'info',
 'pageinfo-contentpage-yes' => 'Jā',
 'pageinfo-protect-cascading-yes' => 'Jā',
+'pageinfo-category-info' => 'Kategorijas informācija',
+'pageinfo-category-pages' => 'Lapu skaits',
+'pageinfo-category-subcats' => 'Apakškategoriju skaits',
+'pageinfo-category-files' => 'Failu skaits',
 
 # Patrolling
 'markaspatrolleddiff' => 'Atzīmēt kā pārbaudītu',
@@ -3117,6 +3141,8 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 'htmlform-submit' => 'Iesniegt',
 'htmlform-reset' => 'Atcelt izmaiņas',
 'htmlform-selectorother-other' => 'Citi',
+'htmlform-no' => 'Nē',
+'htmlform-yes' => 'Jā',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 ar pilnteksta meklēšanas atbalstu',
@@ -3163,6 +3189,7 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 # API errors
 'api-error-copyuploaddisabled' => 'Augšupielāde no URL šajā serverī ir atspējota.',
 'api-error-filename-tooshort' => 'Faila nosaukums ir pārāk īss.',
+'api-error-filetype-banned' => 'Šis failu veids ir aizliegts.',
 'api-error-http' => 'Iekšēja kļūda: Nevar izveidot savienojumu ar serveri.',
 'api-error-ok-but-empty' => 'Iekšēja kļūda: Nav atbildes no servera.',
 'api-error-timeout' => 'Serveris neatbildēja paredzētajā laikā.',
@@ -3171,4 +3198,8 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 'api-error-unknown-warning' => 'Nezināms brīdinājums: $1',
 'api-error-uploaddisabled' => 'Augšupielāde šajā wiki  ir atslēgta.',
 
+# Limit report
+'limitreport-postexpandincludesize-value' => '$1/$2 baiti',
+'limitreport-templateargumentsize-value' => '$1/$2 baiti',
+
 );
index 672130a..9fffabc 100644 (file)
@@ -3192,9 +3192,52 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
 'exif-gpsareainformation' => 'Anaram-paritra GPS',
 'exif-gpsdatestamp' => 'Daty GPS',
 'exif-countrycreated' => 'Firenena nangalana ilay sary',
+'exif-worldregiondest' => 'Faritany aseho',
+'exif-countrydest' => 'Firenena aseho',
+'exif-countrycodedest' => 'Kaodim-pirenena aseho',
+'exif-provinceorstatedest' => 'Faritany aseho',
+'exif-citydest' => 'Tanàna aseho',
+'exif-sublocationdest' => 'Fari-tanàna aseho',
+'exif-objectname' => 'Lohateny fohy',
+'exif-specialinstructions' => 'Torolalana manokana',
+'exif-headline' => 'Lohateny',
+'exif-credit' => 'Isaorana/mpanome',
+'exif-source' => 'Fiaviana',
+'exif-editstatus' => "Sata ara-panontan'ny sary",
+'exif-urgency' => 'Ilaina maika',
+'exif-fixtureidentifier' => 'Anarana zavatra miverimberina',
+'exif-locationdest' => 'Toerana aseho',
+'exif-locationdestcode' => "Kaodin'ny toerana aseho",
+'exif-objectcycle' => "Ora tanjon'ilay aino aman-jery",
+'exif-contact' => 'Fampahalalana mikasika ny fifandraisana',
+'exif-writer' => 'Mpanoratra',
+'exif-languagecode' => 'Fiteny',
+'exif-iimcategory' => 'Sokajy',
+'exif-iimsupplementalcategory' => 'Sokajy fanampiny',
+'exif-datetimeexpires' => 'Asa ampiasaina aoriany',
+'exif-datetimereleased' => 'Navoaka ny',
+'exif-originaltransmissionref' => "Kaodin-toeran'ny fampitana niaviana",
+'exif-identifier' => 'Mpamaritra',
+'exif-lens' => 'Lojy nampiasaina',
+'exif-serialnumber' => "Isa laharan'ny fakan-tsary",
 'exif-cameraownername' => "Tompon'ilay mpaka sary",
+'exif-datetimemetadata' => "Daty nanovana faran'ny metadata",
+'exif-nickname' => "Solonanaran'ilay sary",
+'exif-rating' => "Naoty (ampahan'ny 5)",
+'exif-rightscertificate' => 'Sertifikà fitantanana ny zo',
+'exif-copyrighted' => "Satan'ny zom-pamorona",
+'exif-copyrightowner' => "Tompon'ny zom-pamorona",
+'exif-usageterms' => 'Fepe-pampiasana',
+'exif-webstatement' => 'Fanamnbarana ny zom-pamorona online',
+'exif-originaldocumentid' => 'ID manokana ny rakitra niaviana',
 'exif-licenseurl' => "URl an'ilay lisansa",
+'exif-morepermissionsurl' => 'Fampahalanana hafa mikasika ny lisansa',
+'exif-attributionurl' => "Rehefa mampiasa ity asa ity dia asio rohy mankany amin'i",
+'exif-preferredattributionname' => 'Rehefa mampiasa ilay asa, isaory',
 'exif-pngfilecomment' => "Famoahan-kevitra momban'ilay rakitra PNG",
+'exif-contentwarning' => 'Fampitandremana mikasika ny votoatiny',
+'exif-giffilecomment' => 'Famoahan-kevitry ny rakirta GIF',
+'exif-intellectualgenre' => 'Karazan-javatra',
 
 'exif-copyrighted-true' => "Iharan'ny zom-pamorona",
 'exif-copyrighted-false' => "Toetran'ny zom-pamorona tsy voafaritra",
@@ -3212,14 +3255,24 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
 'exif-meteringmode-0' => 'Tsy fantatra',
 'exif-meteringmode-1' => 'Elanelana',
 'exif-meteringmode-3' => 'Spot',
+'exif-meteringmode-4' => 'Spot maro',
 'exif-meteringmode-5' => 'Modely',
+'exif-meteringmode-6' => 'An-tsilany',
 'exif-meteringmode-255' => 'Hafa',
 
+'exif-lightsource-0' => 'Tsy fantatra',
+'exif-lightsource-1' => "Hazavan'andro",
+'exif-lightsource-9' => "Toetr'andro mazava",
+'exif-lightsource-10' => "Toetr'andro mandrahona",
+'exif-lightsource-11' => 'Haloka',
+
 # Flash modes
 'exif-flash-mode-3' => 'Toetra aotômatika',
 
 'exif-focalplaneresolutionunit-2' => 'Posy',
 
+'exif-sensingmethod-1' => 'Tsy voafaritra',
+
 'exif-subjectdistancerange-1' => 'Makrô',
 
 # Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
index b4aecaa..c2d11c7 100644 (file)
@@ -359,7 +359,7 @@ $messages = array(
 'tog-usenewrc' => 'Промени во групи по страници во списокот на скорешни промени (бара JavaScript)',
 'tog-numberheadings' => 'Нумерирај ги заглавијата',
 'tog-showtoolbar' => 'Прикажи алатник за уредување (JavaScript)',
-'tog-editondblclick' => 'Уредување на страници при двојно кликнување (JavaScript)',
+'tog-editondblclick' => 'Уредување на страници при двоен стисок (JavaScript)',
 'tog-editsection' => 'Овозможи уредување на заглавија преку врските [уреди]',
 'tog-editsectiononrightclick' => 'Уредување на заглавија со десно копче од глушецот на нивниот наслов (JavaScript)',
 'tog-showtoc' => 'Покажи содржина (за страници со повеќе од 3 заглавија)',
@@ -914,6 +914,8 @@ $2',
 'login-abort-generic' => 'Најавата е неуспешна - Прекинато',
 'loginlanguagelabel' => 'Јазик: $1',
 'suspicious-userlogout' => 'Вашето барање за одјава е одбиено бидејќи се чини дека е испратено од расипан прелистувач или кеширачки застапник (proxy).',
+'createacct-another-realname-tip' => 'Вистинското име е незадолжително.
+Доколку изберете да го внесете, тоа може да се искористи за оддавање на заслуги за Вашата работа.',
 
 # Email sending
 'php-mail-error-unknown' => 'Непозната грешка во функцијата mail() на PHP',
@@ -4445,4 +4447,19 @@ $5
 # Image rotation
 'rotate-comment' => 'Сликата е завртена за $1 {{PLURAL:$1|степен|степени}} вдесно',
 
+# Limit report
+'limitreport-title' => 'Профилни парсерски податоци:',
+'limitreport-cputime' => 'Употреба на CPU-време',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунда|секунди}}',
+'limitreport-walltime' => 'Употреба на вистинско време',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунда|секунди}}',
+'limitreport-ppvisitednodes' => 'Бр. на пројдени јазли од предобработувачот',
+'limitreport-ppgeneratednodes' => 'Бр. на создадени јазли од предобработувачот',
+'limitreport-postexpandincludesize' => 'Големина на вклученото по проширувањето',
+'limitreport-postexpandincludesize-value' => '$1/$2 бајти',
+'limitreport-templateargumentsize' => 'Големина на аргументот во шаблонот',
+'limitreport-templateargumentsize-value' => '$1/$2 бајти',
+'limitreport-expansiondepth' => 'Најголема длабочина на проширувањето',
+'limitreport-expensivefunctioncount' => 'Бр. на сложени парсерски функции',
+
 );
index 8bb666a..1358413 100644 (file)
@@ -863,6 +863,8 @@ $2',
 'login-abort-generic' => 'तुमचा प्रवेश अयशस्वी होऊन रद्द झाला.',
 'loginlanguagelabel' => 'भाषा: $1',
 'suspicious-userlogout' => 'तुमच्या सनोंद-निर्गमनास नकार दिल्या गेला कारण असे दिसते की ती विनंती अन-अनुबंधित(डिसकनेक्टेड) न्याहाळकाद्वारे पाठवल्या गेली.',
+'createacct-another-realname-tip' => 'आपले खरे नाव टाकणे वैकल्पिक आहे.
+जर आपण ते द्यायचे ठरविले तर,ते आपल्या कामाचा मूळ स्रोत म्णून देण्यास वापरले जाईल.',
 
 # Email sending
 'php-mail-error-unknown' => 'पीएचपीच्या विपत्र() पर्यायात अज्ञात चूक',
index f654c8e..fa82c3a 100644 (file)
@@ -690,6 +690,7 @@ Den kan ha blitt slettet av noen andre.',
 'cannotdelete-title' => 'Kan ikke slette siden «$1»',
 'delete-hook-aborted' => 'Sletting avbrutt av en funksjon.
 Den ga ingen forklaring.',
+'no-null-revision' => 'Det ble ikke laget en null-endring av side "$1"',
 'badtitle' => 'Ugyldig tittel',
 'badtitletext' => 'Den ønskede tittelen var ugyldig, tom eller feilaktig lenket fra en annen wiki.
 Den inneholder kanskje ett eller flere tegn som ikke kan brukes i titler.',
@@ -739,8 +740,7 @@ Administrators nærmere begrunnelse: «$3».',
 # Login and logout pages
 'logouttext' => "'''Du er nå logget ut.'''
 
-Du kan fortsette å bruke {{SITENAME}} anonymt, eller <span class='plainlinks'>[$1 logge inn igjen]</span> som samme eller en annen bruker.
-Merk at noen sider kan vise at du fortsatt er logget inn fram til du tømmer mellomlageret i nettleseren.",
+Vær oppmerksom på at noen sider kan fortsette å dukke opp som om du fortsatt var innlogget, helt til du nullstiller nettleserens cache.",
 'welcomeuser' => 'Velkommen, $1!',
 'welcomecreation-msg' => 'Kontoen din har blitt opprettet.
 Ikke glem å endre [[Special:Preferences|innstillingene dine]] på {{SITENAME}}.',
@@ -787,7 +787,7 @@ Ikke glem å endre [[Special:Preferences|innstillingene dine]] på {{SITENAME}}.
 'createacct-emailoptional' => 'E-postadresse (valgfritt)',
 'createacct-email-ph' => 'Skriv inn e-postadressen din',
 'createacct-another-email-ph' => 'Skriv inn epostadressen',
-'createaccountmail' => 'Bruk et midlertidig tilfeldig passord, og send det til e-postadressen nedenfor',
+'createaccountmail' => 'Bruk et midlertidig, tilfeldig passord, og send det til angitt e-postadresse',
 'createacct-realname' => 'Virkelig navn (valgfritt)',
 'createaccountreason' => 'Årsak:',
 'createacct-reason' => 'Årsak',
@@ -864,6 +864,8 @@ Du kan ignorere denne beskjeden dersom kontoen ble opprettet ved en feil.',
 'login-abort-generic' => 'Innleggingen ble avbrutt.',
 'loginlanguagelabel' => 'Språk: $1',
 'suspicious-userlogout' => 'Din forespørsel om å logge ut ble nektet fordi den så ut til å ha bli sendt av en ødelagt nettleser eller en mellomtjener.',
+'createacct-another-realname-tip' => 'Det er frivillig å oppgi ditt egentlige navn.
+Hvis du velger å oppgi det, vil det blir anvendt for å gi deg som bruker anerkjennelse',
 
 # Email sending
 'php-mail-error-unknown' => 'Ukjent feil i PHPs mail()-funksjon',
index a013634..80fd630 100644 (file)
@@ -1153,8 +1153,8 @@ La rason balhada per $3 èra ''$2''.",
 ({{MediaWiki:Last}}) = diferéncia amb la version precedenta, <b>m</b> = cambiament menor',
 'history-fieldset-title' => "Percórrer l'istoric",
 'history-show-deleted' => 'Suprimits solament',
-'histfirst' => 'Primièras contribucions',
-'histlast' => 'Darrièras contribucions',
+'histfirst' => 'Las mai ancianas',
+'histlast' => 'Las mai recentas',
 'historysize' => '({{PLURAL:$1|1 octet|$1 octets}})',
 'historyempty' => '(void)',
 
@@ -1472,7 +1472,7 @@ Tanben podètz causir de permetre a d’autres de vos contactar per vòstra pagi
 'prefs-signature' => 'Signatura',
 'prefs-dateformat' => 'Format de las datas',
 'prefs-timeoffset' => 'Descalatge orari',
-'prefs-advancedediting' => 'General',
+'prefs-advancedediting' => 'Opcions generalas',
 'prefs-editor' => 'Editor',
 'prefs-preview' => 'Apercebut',
 'prefs-advancedrc' => 'Opcions avançadas',
@@ -1571,7 +1571,7 @@ Tanben podètz causir de permetre a d’autres de vos contactar per vòstra pagi
 'right-hideuser' => 'Blocar un utilizaire en amagant son nom al public',
 'right-ipblock-exempt' => "Èsser pas afectat per las IP blocadas, los blocatges automatics e los blocatges de plajas d'IP",
 'right-proxyunbannable' => 'Èsser pas afectat pels blocatges automatics de servidors mandataris',
-'right-unblockself' => 'Se desblocar eles meteisses',
+'right-unblockself' => 'Se desblocar se-meteis',
 'right-protect' => 'Modificar lo nivèl de proteccion de las paginas e modificar las paginas protegidas',
 'right-editprotected' => 'Modificar las paginas protegidas (sens proteccion en cascada)',
 'right-editinterface' => "Modificar l'interfàcia d'utilizaire",
@@ -3007,9 +3007,9 @@ Aquò es probablament causat per un ligam sus lista negra que punta cap a un sit
 'pageinfo-length' => 'Talha de la pagina (en octets)',
 'pageinfo-article-id' => 'Numèro de la pagina',
 'pageinfo-language' => 'Lenga del contengut de la pagina',
-'pageinfo-robot-policy' => 'Estatut de motor de recèrca',
-'pageinfo-robot-index' => 'Indexable',
-'pageinfo-robot-noindex' => 'Pas indexable',
+'pageinfo-robot-policy' => 'Indexacion per robòts',
+'pageinfo-robot-index' => 'Autorizada',
+'pageinfo-robot-noindex' => 'Interdicha',
 'pageinfo-views' => 'Nombre de vistas',
 'pageinfo-watchers' => "Nombre de contributors qu'an la pagina dins lor lista de seguiment",
 'pageinfo-few-watchers' => 'Mens de $1 {{PLURAL:$1|observator|observators}}',
index 4500dac..350ba70 100644 (file)
@@ -860,6 +860,8 @@ Odczekaj chwilę zanim ponowisz próbę.',
 'login-abort-generic' => 'Logowanie nieudane – przerwano',
 'loginlanguagelabel' => 'Język: $1',
 'suspicious-userlogout' => 'Żądanie wylogowania zostało odrzucone ponieważ wygląda na to, że zostało wysłane przez uszkodzoną przeglądarkę lub buforujący serwer proxy.',
+'createacct-another-realname-tip' => 'Wpisanie imienia i nazwiska nie jest obowiązkowe.
+Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje autorstwo.',
 
 # Email sending
 'php-mail-error-unknown' => 'Wystąpił nieznany błąd w funkcji PHP mail()',
index 5c0153f..b4c1393 100644 (file)
@@ -480,7 +480,7 @@ Che a dësmentia pa ëd cambié ij [[Special:Preferences|sò gust për {{SITENAM
 'userlogin' => 'Creé un cont o rintré ant ël sistema',
 'userloginnocreate' => 'Conession',
 'logout' => "Seurte da 'nt ël sistema",
-'userlogout' => 'Deconession',
+'userlogout' => 'Dësconession',
 'notloggedin' => 'Nen rintrà ant ël sistema',
 'userlogin-noaccount' => 'Ha-lo nen un cont?',
 'userlogin-joinproject' => "Ch'as gionza a {{SITENAME}}",
@@ -521,19 +521,20 @@ Për piasì ch'a serna në stranòm diferent.",
 'nocookiesnew' => "Sò cont a l'é duvèrt, ma chiel a l'ha nen podù rintré ant ël sistema.
 {{SITENAME}} a deuvra ij bëscotin për fé rintré la gent ant sò sistema. Belavans chiel a l'ha pa ij bëscotin abilità.
 Për piasì, che as j'abìlita e peuj che a preuva torna a rintré con sò stranòm e soa ciav.",
-'nocookieslogin' => "{{SITENAME}} a deuvra ij cookies për fé rintré la gent ant sò sistema. Belavans chiel a l'ha pa ij cookies abilità. Për piasì, che a j'abìlita e peuj che a preuva torna.",
-'nocookiesfornew' => "Ël cont utent a l'é pa stàit creà, antlora i podoma pa confirmé soa sorgiss.
+'nocookieslogin' => "{{SITENAME}} a deuvra ij bëscotin për fé rintré la gent ant sò sistema. Belavans chiel a l'ha pa ij bëscotin abilità. Për piasì, che a j'abìlita e peuj che a preuva torna.",
+'nocookiesfornew' => "Ël cont utent a l'é pa stàit creà, përchè i l'oma pa podù confirmé soa sorgiss.
 Ch'a contròla d'avèj ij bëscotin abilità, ch'a caria torna la pàgina e ch'a preuva torna.",
-'noname' => "Lë stranòm che a l'ha batù as peul pa dovresse, as peul nen creésse un cont Utent con ës nòm-sì.",
-'loginsuccesstitle' => "Compliment! A l'é pen-a rintrà ant ël sistema. A-i é pa staje gnun eror.",
-'loginsuccess' => 'A l\'ha avù ël përmess ëd conession al servent ëd {{SITENAME}} con lë stranòm utent ëd "$1".',
-'nosuchuser' => 'A-i é pa gnun utent con ël nòm "$1".
-Ij nòm ëd j\'utent a son sensìbij a le majùscole.
-Controla ël nòm che it l\'has batù, o [[Special:UserLogin/signup|fà un neuv cont]].',
-'nosuchusershort' => 'A-i é pa gnun utent che as ciama "$1". Për piasì, che a contròla se a l\'ha scrit tut giust.',
-'nouserspecified' => 'A venta che a specìfica në stranòm utent',
+'noname' => "A l'ha nen ëspessificà në stranòm vàlid.",
+'loginsuccesstitle' => "Compliment! A l'é pen-a rintrà ant ël sistema.",
+'loginsuccess' => "'''Adess a l'é colegà a {{SITENAME}} con lë stranòm «$1».'''",
+'nosuchuser' => "A-i é pa gnun utent con lë stranòm «$1».
+Jë stranòm ëd j'utent a son sensìbij a le majùscole.
+Ch'a contròla ël nòm che a l'ha batù, o [[Special:UserLogin/signup|ch'a crea un neuv cont]].",
+'nosuchusershort' => "A-i é pa gnun utent che as ciama «$1». Për piasì, che a contròla se a l'ha scrit tut giust.",
+'nouserspecified' => "A venta che a specìfica në stranòm d'utent",
 'login-userblocked' => "St'utent-sì a l'é blocà. A peul pa intré ant ël sistema.",
-'wrongpassword' => "La ciav batùa a l'é pa giusta.<br /><br />Che a preuva torna, për piasì.",
+'wrongpassword' => "La ciav batùa a l'é pa giusta.
+Che a preuva torna, për piasì.",
 'wrongpasswordempty' => "A l'ha butà na ciav veujda. Për piasì, che a preuva torna.",
 'passwordtooshort' => 'Le ciav a devo avèj almanch {{PLURAL:$1|1 caràter|$1 caràter}}.',
 'password-name-match' => 'Toa ciav a deuv esse diferenta da tò stranòm.',
index b1ac9f3..6e5fa0d 100644 (file)
@@ -453,9 +453,9 @@ $messages = array(
 'category-empty' => "''No momento esta categoria não possui nenhuma página ou arquivo multimídia.''",
 'hidden-categories' => '{{PLURAL:$1|Categoria oculta|Categorias ocultas}}',
 'hidden-category-category' => 'Categorias ocultas',
-'category-subcat-count' => '{{PLURAL:$2|Esta categoria possui apenas a seguinte subcategoria.|Esta categoria possui {{PLURAL:$1| a seguinte subcategoria|as seguintes $1 subcategorias}}, de um total de $2.}}',
+'category-subcat-count' => '{{PLURAL:$2|Esta categoria possui apenas a seguinte subcategoria.|Esta categoria possui as seguintes $1 subcategorias, de um total de $2.}}',
 'category-subcat-count-limited' => 'Esta categoria possui {{PLURAL:$1|a seguinte sub-categoria|as $1 sub-categorias a seguir}}.',
-'category-article-count' => '{{PLURAL:$2|Esta categoria contém apenas a seguinte página.|{{PLURAL:$1|A seguinte página pertence|As seguintes $1 páginas pertencem}} a esta categoria, de um total de $2.}}',
+'category-article-count' => '{{PLURAL:$2|Esta categoria contém apenas a seguinte página.|As seguintes $1 páginas pertencem a esta categoria, de um total de $2.}}',
 'category-article-count-limited' => 'Esta categoria possui {{PLURAL:$1|a seguinte página|as $1 páginas a seguir}}.',
 'category-file-count' => '{{PLURAL:$2|Esta categoria possui apenas o seguinte arquivo.|Esta categoria possui {{PLURAL:$1|o seguinte arquivo|os $1 arquivos a seguir}}, de um total de $2.}}',
 'category-file-count-limited' => 'Esta categoria possui {{PLURAL:$1|um arquivo|$1 arquivos}}.',
@@ -753,7 +753,6 @@ O administrador que bloqueou ofereceu a seguinte explicação: "$3".',
 # Login and logout pages
 'logouttext' => "'''Agora você encontra-se desautenticado.'''
 
-É possível continuar usando {{SITENAME}} anonimamente ou <span class='plainlinks'>[$1 autenticar-se novamente]</span> com o mesmo nome de usuário ou com um nome diferente.
 Note que algumas páginas podem continuar sendo exibidas como se você ainda estivesse autenticado até que você limpe a ''cache'' do seu navegador.",
 'welcomeuser' => 'Bem-vindo, $1!',
 'welcomecreation-msg' => 'A sua conta foi criada.
@@ -1597,10 +1596,10 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'userrights-no-interwiki' => 'Você não tem permissão para alterar privilégios de usuários em outros wikis.',
 'userrights-nodatabase' => 'O banco de dados $1 não existe ou não é um banco de dados local.',
 'userrights-nologin' => 'Você precisa [[Special:UserLogin|autenticar-se]] como um administrador para especificar os privilégios de usuário.',
-'userrights-notallowed' => 'A sua conta não tem permissão para adicionar ou remover privilégios a usuários.',
+'userrights-notallowed' => 'Você não tem permissão para adicionar ou remover privilégios a usuários.',
 'userrights-changeable-col' => 'Grupos que pode alterar',
 'userrights-unchangeable-col' => 'Grupos que não pode alterar',
-'userrights-conflict' => 'Há um comflito de permissões de usuário! Por favor, aplique as alterações novamente.',
+'userrights-conflict' => 'Há um comflito de permissões de usuário! Por favor, revise e confirme as alterações novamente.',
 'userrights-removed-self' => 'Você removeu com sucesso seus direitos de usuário. Como tal, você agora está impossibilitado de acessar esta página.',
 
 # Groups
@@ -3225,13 +3224,13 @@ Tal bloqueio foi provavelmente causado por uma ligação para um ''website'' ext
 'pageinfo-length' => 'Tamanho da página (em bytes)',
 'pageinfo-article-id' => 'ID da página',
 'pageinfo-language' => 'Idioma do conteúdo da página',
-'pageinfo-robot-policy' => 'Estado para mecanismos de pesquisa',
-'pageinfo-robot-index' => 'Indexável',
-'pageinfo-robot-noindex' => 'Não indexável',
+'pageinfo-robot-policy' => 'Indexado por robôs',
+'pageinfo-robot-index' => 'Autorizado',
+'pageinfo-robot-noindex' => 'Desautorizado',
 'pageinfo-views' => 'Número de visitas',
 'pageinfo-watchers' => 'Número de vigilantes da página',
 'pageinfo-few-watchers' => 'Menos de  $1  {{PLURAL:$1|vigilante|vigilantes}}',
-'pageinfo-redirects-name' => 'Redirecionamentos para esta página',
+'pageinfo-redirects-name' => 'Número de redirecionamentos para esta página',
 'pageinfo-subpages-name' => 'Subpáginas desta página',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redirecionamento|redirecionamentos}}; $3 {{PLURAL:$3|não redirecionamento|não redirecionamentos}})',
 'pageinfo-firstuser' => 'Criador da página',
@@ -4204,4 +4203,10 @@ Caso contrário, você poderá usar o formulário simplificado a seguir. Seu com
 # Image rotation
 'rotate-comment' => 'Imagem girada por $1 {{PLURAL:$1|grau|graus}} no sentido horário',
 
+# Limit report
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|segundo|segundos}}',
+'limitreport-walltime' => 'Tempo de uso real',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|segundo|segundos}}',
+'limitreport-postexpandincludesize-value' => '$1/$2 bytes',
+
 );
index 079c61a..8665330 100644 (file)
@@ -700,11 +700,12 @@ For explanation of 'lock' see [[w:Lock_(computer_science)|wikipedia]].",
 'copyrightpage' => '{{doc-important|Do not change <nowiki>{{ns:project}}</nowiki>}}
 
 {{Identical|Copyright}}',
-'currentevents' => 'Standard link in the sidebar, for news. See also {{msg|currentevents-url}} for the link url.
+'currentevents' => 'Standard link in the sidebar, for news.
+
+See also {{msg-mw|currentevents-url}} for the link url.
 
 See also:
 * {{msg-mw|Currentevents}}
-* {{msg-mw|Currentevents-url}}
 * {{msg-mw|Accesskey-n-currentevents}}
 * {{msg-mw|Tooltip-n-currentevents}}',
 'currentevents-url' => "Target page of ''CurrentEvents'' in the sidebar. See also {{msg-mw|currentevents}}.
@@ -767,7 +768,7 @@ See also:
 Parameters:
 * $1 - MediaWiki version number
 See also:
-* {{msg|versionrequiredtext}}',
+* {{msg-mw|Versionrequiredtext}}',
 'versionrequiredtext' => 'This message is not used in the MediaWiki core, but was introduced with the reason that it could be useful for extensions.
 
 Parameters:
@@ -778,7 +779,13 @@ See also:
 'ok' => '{{Identical|OK}}',
 'pagetitle' => "{{Optional}}
 {{doc-important|You most probably do not need to translate this message.}}
-Do '''not''' replace SITENAME with a translation of Wikipedia or some encycopedic additions. The message has to be neutral for all projects.",
+Do '''not''' replace SITENAME with a translation of Wikipedia or some encycopedic additions. The message has to be neutral for all projects.
+
+Parameters:
+* $1 - page title or any one of the following messages:
+** {{msg-mw|Contributions-title}}
+** {{msg-mw|Searchresults-title}}
+** {{msg-mw|Sp-contributions-newbies-title}}",
 'pagetitle-view-mainpage' => '{{optional}}',
 'backlinksubtitle' => '{{optional}}
 Appears in subtitle
@@ -789,7 +796,13 @@ Parameters:
 * $1 - a link back to the current page: {{FULLURL:{{FULLPAGENAME}}}}',
 'youhavenewmessages' => 'The yellow message appearing when someone edited your user talk page.
 
-The format is: "{{int:youhavenewmessages| [[MediaWiki:Newmessageslink/{{SUBPAGENAME}}|{{int:newmessageslink}}]] |[[MediaWiki:Newmessagesdifflink/{{SUBPAGENAME}}|{{int:newmessagesdifflink}}]]}}"',
+The format is: "{{int:youhavenewmessages| [[MediaWiki:Newmessageslink/{{SUBPAGENAME}}|{{int:newmessageslink}}]] |[[MediaWiki:Newmessagesdifflink/{{SUBPAGENAME}}|{{int:newmessagesdifflink}}]]}}"
+
+Parameters:
+* $1 - a link points to new messages. Its text is {{msg-mw|Newmessageslink}}
+* $2 - a link points to new messages diff. Its text is {{msg-mw|Newmessagesdifflink}}
+See also:
+* {{msg-mw|Youhavenewmessagesmanyusers}}',
 'newmessageslink' => 'This is the first link displayed in an orange rectangle when a user gets a message on his talk page.
 
 Used in message {{msg-mw|youhavenewmessages}} (as parameter $1).
@@ -810,7 +823,9 @@ Used when more than 10 users edited the user talk page since the owning user las
 
 Parameters:
 * $1 - {{msg-mw|newmessageslinkplural}}
-* $2 - {{msg-mw|newmessagesdifflinkplural}}',
+* $2 - {{msg-mw|newmessagesdifflinkplural}}
+See also:
+* {{msg-mw|Youhavenewmessages}}',
 'newmessageslinkplural' => 'Like {{msg-mw|newmessageslink}} but supporting pluralization. Used in message {{msg-mw|youhavenewmessagesfromusers}} (as parameter $1).
 This message itself takes one parameter, $1, which is 1 if there was one new edit, or 2 if there was more than one new edit
 since the last time the user has seen his or her talk page.
@@ -823,7 +838,10 @@ Used in message {{msg-mw|youhavenewmessagesfromusers}} (as parameter $2).
 {{Identical|Last change}}',
 'youhavenewmessagesmulti' => 'The alternative of {{msg-mw|youhavenewmessages}} as used on wikis with a special setup so they can receive the "new message" notice on other wikis as well. Used on [http://www.wikia.com/ Wikia].
 
-The format is: "{{int:youhavenewmessagesmulti| [[MediaWiki:Newmessageslink/{{SUBPAGENAME}}|{{int:newmessageslink}}]]}}"',
+The format is: "{{int:youhavenewmessagesmulti| [[MediaWiki:Newmessageslink/{{SUBPAGENAME}}|{{int:newmessageslink}}]]}}"
+
+Parameters:
+* $1 - a link points to new messages. Its text is {{msg-mw|Newmessageslink}}',
 'editsection' => 'Display name of link to edit a section on a content page. Example: [{{MediaWiki:Editsection}}].
 
 {{Identical|Edit}}',
@@ -835,7 +853,12 @@ The format is: "{{int:youhavenewmessagesmulti| [[MediaWiki:Newmessageslink/{{SUB
 'viewsourcelink' => 'Text of the link shown next to every uneditable (protected) template in the list of used templates below the edit window. See also {{msg-mw|Editlink}}.
 
 {{Identical|View source}}',
-'editsectionhint' => "Tool tip shown when hovering the mouse over the link to '[{{MediaWiki:Editsection}}]' a section. Example: Edit section: Heading name",
+'editsectionhint' => 'Tooltip shown when hovering the mouse over the link to {{msg-mw|Editsection}} a section.
+
+Example: Edit section: Heading name
+
+Parameters:
+* $1 - section heading name',
 'toc' => 'This is the title of the table of contents displayed in pages with more than 3 sections.
 {{Identical|Content}}',
 'showtoc' => 'This is the link used to show the table of contents
@@ -884,8 +907,16 @@ HTML markup cannot be used.
 Parameters:
 * $1 - <nowiki>{{SITENAME}}</nowiki>
 {{Identical|S1 RSS/Atom feed}}",
-'page-rss-feed' => '{{Identical|S1 RSS/Atom feed}}',
-'page-atom-feed' => '{{Identical|S1 RSS/Atom feed}}',
+'page-rss-feed' => 'Parameters:
+* $1 - page title
+See also:
+* {{msg-mw|Page-atom-feed}}
+{{Identical|S1 RSS/Atom feed}}',
+'page-atom-feed' => 'Parameters:
+* $1 - page title
+See also:
+* {{msg-mw|Page-rss-feed}}
+{{Identical|S1 RSS/Atom feed}}',
 'feed-atom' => '{{optional}}
 See also:
 * {{msg-mw|Feed-atom}}
@@ -896,7 +927,10 @@ See also:
 * {{msg-mw|Feed-rss}}
 * {{msg-mw|Accesskey-feed-rss}}
 * {{msg-mw|Tooltip-feed-rss}}',
-'red-link-title' => 'Title for red hyperlinks. Indicates, that the page is empty, not written yet.',
+'red-link-title' => 'Title for red hyperlinks. Indicates, that the page is empty, not written yet.
+
+Parameters:
+* $1 - page title',
 'sort-descending' => 'JavaScript message. Used by sortable table script.',
 'sort-ascending' => 'JavaScript message. Used by sortable table script.',
 
@@ -997,7 +1031,8 @@ This error is shown when trying to open a special page which does not exist, e.g
 'laggedslavemode' => 'Used as warning when getting the timestamp of the latest version, if in LaggedSlaveMode.',
 'readonly' => 'Used as title of error message when database is locked.',
 'enterlockreason' => 'For developers when locking the database',
-'readonlytext' => 'Used as error message when the database is locked.',
+'readonlytext' => 'Used as error message when the database is locked. Parameters:
+* $1 - explanation e.g. "The wiki is currently in read-only mode"',
 'missing-article' => 'This message is shown when a revision does not exist, either as permalink or as diff. Examples:
 # [{{canonicalurl:Project:News|oldid=9999999}} Permalink with invalid revision#]
 # [{{canonicalurl:Project:News|diff=426850&oldid=99999999}} Diff with invalid revision#]
@@ -1054,7 +1089,10 @@ See also:
 
 About "null revision":
 * Create a new null-revision for insertion into a page\'s history. This will not re-save the text, but simply refer to the text from the previous version.
-* Such revisions can for instance identify page rename operations and other such meta-modifications.',
+* Such revisions can for instance identify page rename operations and other such meta-modifications.
+
+Parameters:
+* $1 - page title',
 'badtitle' => 'The page title when a user requested a page with invalid page name. The content will be {{msg-mw|badtitletext}}.',
 'badtitletext' => 'The message shown when a user requested a page with invalid page name. The page title will be {{msg-mw|badtitle}}.
 
@@ -1073,7 +1111,9 @@ Parameters:
 * $3 - a time (optional)
 * $4 - the cut off limit for cached results ($wgQueryCacheLimit). If there are more then this many results for the query, only the first $4 of those will be listed on the page. Usually $4 is about 1000.',
 'querypage-no-updates' => 'Text on some special pages, e.g. [[Special:FewestRevisions]].',
-'wrong_wfQuery_params' => 'Used as error message.',
+'wrong_wfQuery_params' => 'Used as error message. Parameters:
+* $1 - function name
+* $2 - query',
 'viewsource' => 'The text displayed in place of the {{msg-mw|Edit}} tab when the user has no permission to edit the page.
 
 See also:
@@ -1130,7 +1170,8 @@ Parameters:
 'exception-nologin-text' => 'Generic reason displayed on error page when a user is not logged in. Message used by the UserNotLoggedIn exception.',
 
 # Virus scanner
-'virus-badscanner' => 'Used as error message.',
+'virus-badscanner' => 'Used as error message. Parameters:
+* $1 - virus scanner name which is defined in the variable [[mw:Special:MyLanguage/Manual:$wgAntivirus|$wgAntivirus]].',
 'virus-scanfailed' => 'Used as error message. "scan" stands for "virus scan". Parameters:
 * $1 - exit code of virus scanner',
 'virus-unknownscanner' => 'Used as error message. This message is followed by the virus scanner name.',
@@ -1174,8 +1215,8 @@ See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?t
 'createacct-yourpasswordagain-ph' => 'Placeholder text in create account form for re-enter password field.
 
 See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]',
-'remembermypassword' => 'A check box in [[Special:UserLogin]]
-
+'remembermypassword' => 'Used as checkbox label in [[Special:UserLogin]]. Parameters:
+* $1 - number of days
 {{Identical|Remember my login on this computer}}',
 'userlogin-remembermypassword' => 'The text for a check box in [[Special:UserLogin]].',
 'userlogin-signwithsecure' => 'Text of link to HTTPS login form.
@@ -1301,18 +1342,27 @@ See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?t
 Preceded by the message {{msg-mw|Createacct-benefit-head1}} (number of edits).
 
 See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]
+
+Parameters:
+* $1 - number of edits
 {{Identical|Edit}}',
 'createacct-benefit-body2' => 'In vertical-layout create account form, the text for the second benefit.
 
 Preceded by the message {{msg-mw|Createacct-benefit-head2}} (number of pages).
 
 See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]
+
+Parameters:
+* $1 - number of pages
 {{Identical|Page}}',
 'createacct-benefit-body3' => 'In vertical-layout create account form, the text for the third benefit.
 
 Preceded by the message {{msg-mw|Createacct-benefit-head3}} (number of contributors).
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]',
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]
+
+Parameters:
+* $1 - number of contributors (users)',
 'badretype' => 'Used as error message when the new password and its retype do not match.',
 'userexists' => 'Used as error message in creating a user account.',
 'loginerror' => 'Used as title of error message.
@@ -1335,8 +1385,19 @@ Defaults to '''nocookieslogin''' ({{int:nocookieslogin}})",
 Parameters:
 * $1 - the name of the logged in user
 {{Gender}}',
-'nosuchuser' => 'Displayed when trying to log in with an unexisting username. When you are not allowed to create an account, the message {{msg-mw|nosuchusershort}} is displayed.',
-'nosuchusershort' => "Displayed when trying to log in with a non-existant username. This message is only shown when you can't create an account, otherwise the message {{msg-mw|nosuchusershort}} is displayed.",
+'nosuchuser' => 'Displayed when trying to log in with an unexisting username.
+
+When you are not allowed to create an account, the following message is displayed:
+* {{msg-mw|Nosuchusershort}}
+Parameters:
+* $1 - username',
+'nosuchusershort' => "Displayed when trying to log in with a non-existent username.
+
+This message is only shown when you can't create an account, otherwise the following message is displayed:
+* {{msg-mw|Nosuchusershort}}
+
+Parameters:
+* $1 - username",
 'nouserspecified' => 'Used as error message when username to fetch is not specified.',
 'login-userblocked' => 'This message supports GENDER, username is available in $1.',
 'wrongpassword' => 'Used as error message when the provided password is wrong.
@@ -1373,7 +1434,10 @@ Parameters:
 * $1 - new mail address',
 'acct_creation_throttle_hit' => 'Error message at [[Special:CreateAccount]].
 
-"in the last day" precisely means: during the lasts 86400 seconds (24 hours) ending right now.',
+"in the last day" precisely means: during the lasts 86400 seconds (24 hours) ending right now.
+
+Parameters:
+* $1 - number of accounts',
 'emailauthenticated' => 'In user preferences ([[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}) and on [[Special:ConfirmEmail]].
 
 Parameters:
@@ -1407,7 +1471,8 @@ See also:
 'loginlanguagelabel' => 'Used on [[Special:UserLogin]] if $wgLoginLanguageSelector is true. $1 is a pipe-separated list built from the names that appear in the message {{msg-mw|Loginlanguagelinks}}.
 {{Identical|Language}}',
 'suspicious-userlogout' => 'Used when the logout request looks suspicious, in Special:UserLogout.',
-'createacct-another-realname-tip' => "Used on the account creation form when creating another user's account. Similar to {{mw-msg|prefs-help-realname}}.
+'createacct-another-realname-tip' => "{{doc-singularthey}}
+Used on the account creation form when creating another user's account. Similar to {{msg-mw|prefs-help-realname}}.
 {{Identical|Real name attribution}}",
 
 # Email sending
@@ -1763,18 +1828,43 @@ Also used in Edit Conflict page; the diff between {{msg-mw|yourtext}} and {{msg-
 *$2 - license name',
 'copyrightwarning2' => 'Copyright warning displayed under the edit box in editor
 *$1 - license name',
-'longpageerror' => 'Warning displayed when trying to save a text larger than the maximum size allowed',
+'longpageerror' => 'Warning displayed when trying to save a text larger than the maximum size allowed.
+
+Parameters:
+* $1 - submitted size (in kilobytes)
+* $2 - maximum size (in kilobytes)',
 'readonlywarning' => '* $1 - reason',
 'protectedpagewarning' => '{{Related|Semiprotectedpagewarning}}',
 'semiprotectedpagewarning' => '{{Related|Semiprotectedpagewarning}}',
 'cascadeprotectedwarning' => '* $1 - number of pages',
 'titleprotectedwarning' => 'Warning message above the edit form when editing a page that has been protected aginst creation.',
-'templatesused' => 'Displayed below the page when editing it. It indicates a list of templates which are used on that page.',
-'templatesusedpreview' => 'Used in editor when displaying a preview.',
-'templatesusedsection' => 'Used in editor when displaying a preview.',
+'templatesused' => 'Displayed below the page when editing it. It indicates a list of templates which are used on that page.
+
+Parameters:
+* $1 - number of templates
+See also:
+* {{msg-mw|Templatesusedpreview}}
+* {{msg-mw|Templatesusedsection}}',
+'templatesusedpreview' => 'Used in editor when displaying a preview.
+
+Parameters:
+* $1 - number of templates
+See also:
+* {{msg-mw|Templatesused}}
+* {{msg-mw|Templatesusedsection}}',
+'templatesusedsection' => 'Used in editor when displaying a preview.
+
+Parameters:
+* $1 - number of templates
+See also:
+* {{msg-mw|Templatesused}}
+* {{msg-mw|Templatesusedpreview}}',
 'template-protected' => '{{Identical|Protected}}',
 'template-semiprotected' => 'Used on [[Special:ProtectedPages]]. Appears in brackets after listed page titles which are semi-protected.',
-'hiddencategories' => "This message is shown below the edit form, like you have a section ''\"Templates used on this page\"''.",
+'hiddencategories' => "This message is shown below the edit form, like you have a section ''\"Templates used on this page\"''.
+
+Parameters:
+* \$1 - number of categories",
 'edittools' => '{{optional}}
 This text will be shown below edit and upload forms. It can be used to offer special characters not present on most keyboards for copying/pasting, and also often makes them clickable for insertion via a javascript. Since these are seen as specific to a wiki, however, this message should not contain anything but an html comment explaining how it should be used once the wiki has been installed.',
 'edittools-upload' => '{{optional}}
@@ -1958,7 +2048,10 @@ See also:
 'undo-norev' => 'Message appears if an attempt to revert an edit by clicking the "undo" link on the page history fails.
 
 {{Identical|Undo}}',
-'undo-summary' => 'Edit summary for an undo action.{{Identical|Undo}}',
+'undo-summary' => 'Edit summary for an undo action. Parameters:
+* $1 - revision ID
+* $2 - username
+{{Identical|Undo}}',
 'undo-summary-username-hidden' => 'Edit summary for an undo action where the username of the old revision is hidden.
 
 Parameters:
@@ -2103,8 +2196,14 @@ Parameters:
 
 {{Identical|Yes}}',
 'revdelete-selected' => '{{RevisionDelete}}
+Parameters:
+* $1 - page title
+* $2 - number of revisions
 [[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
-'logdelete-selected' => '{{RevisionDelete}}',
+'logdelete-selected' => '{{RevisionDelete}}
+Parameters:
+* $1 - page title
+* $2 - number of log events',
 'revdelete-text' => '{{RevisionDelete}}
 This is the introduction explaining the feature.',
 'revdelete-confirm' => 'This message is a part of the [[mw:RevisionDelete|RevisionDelete]] feature.
@@ -2175,27 +2274,31 @@ See also:
 * {{msg-mw|Revdelete-otherreason|label for input box}}
 * {{msg-mw|Revdelete-submit|submit button}}',
 'revdelete-submit' => '{{RevisionDelete}}
-This is the submit button on [[Special:RevisionDelete]].
-[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]
-
+This is the submit button on [[Special:RevisionDelete]]. Parameters:
+* $1 - number of revisions
 See also:
 * {{msg-mw|Revdelete-legend|legend for the form}}
 * {{msg-mw|Revdelete-log|label for dropdown}}
 * {{msg-mw|Revdelete-reason-dropdown|item list for dropdown|notext=1}}
 * {{msg-mw|Revdelete-reasonotherlist|item in dropdown}}
-* {{msg-mw|Revdelete-otherreason|label for input box}}',
+* {{msg-mw|Revdelete-otherreason|label for input box}}
+[[File:RevDelete Special-RevisionDelete (r60428).png|frame|center|Screenshot of the interface]]',
 'revdelete-success' => "{{RevisionDelete}}
 
 Possible alternative text - 'Restrictions on the revision visibility were successfully changed.'",
-'revdelete-failure' => "{{RevisionDelete}}
+'revdelete-failure' => '{{RevisionDelete}}
+Possible alternative text - "Restrictions on the revision visibility could not be changed"
 
-Possible alternative text - 'Restrictions on the revision visibility could not be changed'",
+Parameters:
+* $1 - ...',
 'logdelete-success' => "{{RevisionDelete}}
 
 Possible alternative message - 'Restrictions on log entry visibility successfully set.'",
-'logdelete-failure' => "{{RevisionDelete}}
+'logdelete-failure' => '{{RevisionDelete}}
+Possible alternative message - "Restrictions could not be set on the visibility of the log entry."
 
-Possible alternative message - 'Restrictions could not be set on the visibility of the log entry.'",
+Parameters:
+* $1 - ...',
 'revdel-restore' => '{{RevisionDelete}}',
 'revdel-restore-deleted' => '{{RevisionDelete}}',
 'revdel-restore-visible' => '{{RevisionDelete}}',
@@ -2428,7 +2531,10 @@ Example: [{{canonicalurl:Project:News|diff=426850&oldid=99999999}} Diff with inv
 'searchresults' => 'This is the title of the page that contains the results of a search.
 
 {{Identical|Search results}}',
-'searchresults-title' => 'Appears as page title in the html header of the search result special page.',
+'searchresults-title' => 'Appears as page title in the html header of the search result special page.
+
+Parameters:
+* $1 - the search term',
 'searchsubtitle' => 'Parameters:
 * $1 - search term
 See also:
@@ -2467,12 +2573,18 @@ See also:
 
 It is also used by [[Special:WhatLinksHere|Whatlinkshere]] pages, where ($1) and ($2) are {{msg-mw|Whatlinkshere-prev}} and {{msg-mw|Whatlinkshere-next}}.
 ($3) is made up in all cases of the various proposed numbers of results per page, e.g. "(20 | 50 | 100 | 250 | 500)".
-For Special pages, the navigation bar is prefixed by "({{msg-mw|Page_first}} | {{msg-mw|Page_last}})" (alphabetical order) or "({{msg-mw|Histfirst}} | {{msg-mw|Histlast}})" (date order).
+For Special pages, the navigation bar is prefixed by "({{msg-mw|Page first}} | {{msg-mw|Page last}})" (alphabetical order) or "({{msg-mw|Histfirst}} | {{msg-mw|Histlast}})" (date order).
 
 Viewprevnext is sometimes preceded by the {{msg-mw|Showingresults}} or {{msg-mw|Showingresultsnum}} message (for Special pages) or by the {{msg-mw|Linkshere}} message (for Whatlinkshere pages).',
 'searchmenu-legend' => '{{Identical|Search options}}',
-'searchmenu-exists' => 'An option shown in a menu beside search form offering a link to the existing page having the specified title (when using the default MediaWiki search engine).',
-'searchmenu-new' => 'An option shown in a menu beside search form offering a red link to the not yet existing page having the specified title (when using the default MediaWiki search engine).',
+'searchmenu-exists' => 'An option shown in a menu beside search form offering a link to the existing page having the specified title (when using the default MediaWiki search engine).
+
+Parameters:
+* $1 - page title',
+'searchmenu-new' => 'An option shown in a menu beside search form offering a red link to the not yet existing page having the specified title (when using the default MediaWiki search engine).
+
+Parameters:
+* $1 - page title',
 'searchmenu-prefix' => '{{doc-important|Do not translate "Special:PrefixIndex"}}
 Parameters:
 * $1 - prefix string',
@@ -2567,7 +2679,12 @@ See also:
 * $3 - the number of results on the page
 See also:
 * {{msg-mw|Showingresults}}',
-'showingresultsheader' => 'Used in search results of [[Special:Search]].',
+'showingresultsheader' => 'Used in search results of [[Special:Search]]. Parameters:
+* $1 - minimum offset
+* $2 - maximum offset
+* $3 - total number of results
+* $4 - the search term
+* $5 - number of results',
 'nonefound' => 'This message appears on the search results page if no results are found.
 {{doc-important|Do not translate "all:".}}',
 'search-nonefound' => 'Message shown when a search returned no results (when using the default MediaWiki search engine).',
@@ -2628,7 +2745,10 @@ This message indicates {{msg-mw|prefs-dateformat}} is default (= not specified).
 'prefs-watchlist' => 'Used in user preferences.
 {{Identical|My watchlist}}',
 'prefs-watchlist-days' => 'Used in [[Special:Preferences]], tab "Watchlist".',
-'prefs-watchlist-days-max' => 'Shown as hint in [[Special:Preferences]], tab "Watchlist"',
+'prefs-watchlist-days-max' => 'Shown as hint in [[Special:Preferences]], tab "Watchlist". Parameters:
+* $1 - number of days
+See also:
+* {{msg-mw|Recentchangesdays-max}}',
 'prefs-watchlist-edits' => 'Used in [[Special:Preferences]], tab "Watchlist".',
 'prefs-watchlist-edits-max' => 'Shown as hint in [[Special:Preferences]], tab "Watchlist"',
 'prefs-watchlist-token' => 'Used in [[Special:Preferences]], tab Watchlist.',
@@ -2675,7 +2795,10 @@ When changing this message, please also update {{msg-mw|vector-editwarning-warni
 'stub-threshold-disabled' => 'Used in [[Special:Preferences]].
 {{Identical|Disabled}}',
 'recentchangesdays' => 'Used in [[Special:Preferences]], tab "Recent changes".',
-'recentchangesdays-max' => 'Shown as hint in [[Special:Preferences]], tab "Recent changes"',
+'recentchangesdays-max' => 'Shown as hint in [[Special:Preferences]], tab "Recent changes". Parameters:
+* $1 - number of days
+See also:
+* {{msg-mw|Prefs-watchlist-days-max}}',
 'recentchangescount' => 'Used in [[Special:Preferences]], tab "Recent changes".',
 'prefs-help-recentchangescount' => 'Used in [[Special:Preferences]], tab "Recent changes".',
 'prefs-help-watchlist-token2' => 'Used in [[Special:Preferences]], tab Watchlist. (Formerly in {{msg-mw|prefs-help-watchlist-token}}.)',
@@ -2684,7 +2807,10 @@ When changing this message, please also update {{msg-mw|vector-editwarning-warni
 'localtime' => 'Used as label in [[Special:Preferences#mw-prefsection-datetime|preferences]].',
 'timezoneuseserverdefault' => '[[Special:Preferences]] > Date and time > Time zone
 
-This option lets your time zone setting use the one that is used on the wiki (often UTC).',
+This option lets your time zone setting use the one that is used on the wiki (often UTC).
+
+Parameters:
+* $1 - timezone name, or timezone offset (in "%+03d:%02d" format)',
 'timezoneuseoffset' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.',
 'timezoneoffset' => "Text next to input box in [[Special:Preferences]], tab 'date and time', section 'timezone'.",
 'servertime' => 'Used as label in [[Special:Preferences#mw-prefsection-datetime|preferences]].',
@@ -2868,8 +2994,14 @@ Parameters:
 
 {{Identical|Reason}}',
 'userrights-no-interwiki' => 'Error message when editing user groups',
-'userrights-nodatabase' => 'Error message when editing user groups. "Local" means databases/wikis of the same farm/cluster; that is, meta, enwiki, dewiki, commons, etc are all local databases of the Wikimedia Foundation.
-See [{{canonicalurl:meta:Special:Log|type=rights}} meta:Special:Log?type=rights] for a usage of local databases: username@barwiki',
+'userrights-nodatabase' => 'Error message when editing user groups.
+
+"Local" means databases/wikis of the same farm/cluster; that is, meta, enwiki, dewiki, commons, etc are all local databases of the Wikimedia Foundation.
+
+See [{{canonicalurl:meta:Special:Log|type=rights}} meta:Special:Log?type=rights] for a usage of local databases: username@barwiki
+
+Parameters:
+* $1 - database name',
 'userrights-nologin' => "Error displayed on [[Special:UserRights]] when you aren't logged in.
 
 If you are logged in, but don't have the correct permission, you see {{msg-mw|Userrights-notallowed}}.",
@@ -2882,7 +3014,9 @@ Parameters:
 
 Parameters:
 * $1 - optional, for PLURAL use, the number of items in the column following the message. Avoid PLURAL, if your language allows that.',
-'userrights-irreversible-marker' => '{{optional}}',
+'userrights-irreversible-marker' => '{{optional}}
+Parameters:
+* $1 - group member',
 'userrights-conflict' => "Shown on [[Special:UserRights]] if the target's rights have been changed since the form was loaded.",
 'userrights-removed-self' => 'Shown on [[Special:UserRights]] in a green box after the user removed its own rights to access that page.',
 
@@ -3178,7 +3312,10 @@ Similar to {{msg-mw|wlnote}} which is used on [[Special:Watchlist]].
 'rcshowhidebots' => "Option text in [[Special:RecentChanges]]. Parameters:
 * $1 is the 'show/hide' command, with the text taken from either {{msg-mw|show}} or {{msg-mw|hide}}.
 {{Identical|$1 bots}}",
-'rcshowhideliu' => 'Option text in [[Special:RecentChanges]]',
+'rcshowhideliu' => 'Option text in [[Special:RecentChanges]]. Parameters:
+* $1 - any one of the following messages:
+** {{msg-mw|Show}}
+** {{msg-mw|Hide}}',
 'rcshowhideanons' => "Option text in [[Special:RecentChanges]]. Parameters:
 * $1 is the 'show/hide' command, with the text taken from either {{msg-mw|show}} or {{msg-mw|hide}}.
 {{Identical|Anonymous user}}",
@@ -3207,7 +3344,7 @@ See also:
 {{Identical|Show}}',
 'minoreditletter' => "Very short form of \"'''minor edit'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]], [[Special:Contributions]] and history pages.",
 'newpageletter' => "Very short form of \"'''new page'''\". Used in [[Special:RecentChanges]], [[Special:Watchlist]] and [[Special:Contributions]].",
-'boteditletter' => 'Abbreviation of "bot". Appears in [[Special:RecentChanges]] and [[Special:Watchlist]].',
+'boteditletter' => "Abbreviation of \"'''bot'''\". Appears in [[Special:RecentChanges]] and [[Special:Watchlist]].",
 'unpatrolledletter' => '{{optional}}
 
 Used in {{msg-mw|Recentchanges-label-legend}}, meaning "unpatrolled".',
@@ -3219,10 +3356,14 @@ I guess that this should appear before an input box where you can specify that r
 'rc_categories_any' => 'Used in the CategoryFilter form on [[Special:RecentChanges]], if <code>$wgAllowCategorizedRecentChanges</code> is true.
 {{Identical|Any}}',
 'rc-change-size' => '{{optional}}
+Does not work under $wgMiserMode ([[mwr:48986|r48986]]).
 
-Does not work under $wgMiserMode ([[mwr:48986|r48986]]).',
-'rc-change-size-new' => 'Tooltip when hovering a change list diff size. The tooltip shows the resulting new size in bytes.',
-'newsectionsummary' => 'Default summary when adding a new section to a page.',
+Parameters:
+* $1 - size of diff',
+'rc-change-size-new' => 'Tooltip when hovering a change list diff size. Parameters:
+* $1 - the resulting new size (in bytes)',
+'newsectionsummary' => 'Default summary when adding a new section to a page. Parameters:
+* $1 - section title',
 'rc-enhanced-expand' => 'See also:
 * {{msg-mw|Rc-enhanced-hide}}',
 'rc-enhanced-hide' => 'See also:
@@ -3297,9 +3438,21 @@ See also:
 'upload-recreate-warning' => 'Used as warning in [[Special:Upload]].',
 'uploadtext' => "{{doc-important|''thumb'' and ''left'' are magic words. Leave them untranslated!}}
 Text displayed when uploading a file using [[Special:Upload]].",
-'upload-permitted' => 'Used in [[Special:Upload]].',
-'upload-preferred' => 'Used in [[Special:Upload]].',
-'upload-prohibited' => 'Used in [[Special:Upload]].',
+'upload-permitted' => 'Used in [[Special:Upload]]. Parameters:
+* $1 - list of file types, defined in the variable [[mw:Special:MyLanguage/Manual:$wgFileExtensions|$wgFileExtensions]]
+See also:
+* {{msg-mw|Upload-preferred}}
+* {{msg-mw|Upload-prohibited}}',
+'upload-preferred' => 'Used in [[Special:Upload]]. Parameters:
+* $1 - list of file types, defined in the variable [[mw:Special:MyLanguage/Manual:$wgFileExtensions|$wgFileExtensions]]
+See also:
+* {{msg-mw|Upload-permitted}}
+* {{msg-mw|Upload-prohibited}}',
+'upload-prohibited' => 'Used in [[Special:Upload]]. Parameters:
+* $1 - list of file types, defined in the variable [[mw:Special:MyLanguage/Manual:$wgFileBlacklist|$wgFileBlacklist]]
+See also:
+* {{msg-mw|Upload-permitted}}
+* {{msg-mw|Upload-preferred}}',
 'uploadlogpage' => '{{doc-logpage}}
 
 Page title of [[Special:Log/upload]].',
@@ -3580,12 +3733,14 @@ See also:
 * {{msg-mw|zip-wrong-format}}
 * {{msg-mw|uploadjava}}
 * {{msg-mw|uploadvirus}}',
-'uploadvirus' => 'Error message displayed when uploaded file contains a virus
+'uploadvirus' => 'Error message displayed when uploaded file contains a virus.
 
+Parameters:
+* $1 - {{msg-mw|Virus-unknownscanner}}, {{msg-mw|Virus-scanfailed}}, or something
 See also:
-* {{msg-mw|uploadscripted}}
-* {{msg-mw|zip-wrong-format}}
-* {{msg-mw|uploadjava}}',
+* {{msg-mw|Uploadscripted}}
+* {{msg-mw|Zip-wrong-format}}
+* {{msg-mw|Uploadjava}}',
 'uploadjava' => 'Used as error message when uploading a file.
 
 See also:
@@ -3751,10 +3906,25 @@ See also:
 * $1 is a filename.',
 'backend-fail-maxsize' => '* $1 - destination storage path
 * $2 - max file size (in bytes)',
-'backend-fail-readonly' => 'A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
-'backend-fail-synced' => 'A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
-'backend-fail-connect' => 'A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
-'backend-fail-internal' => 'A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
+'backend-fail-readonly' => 'A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.
+
+Parameters:
+* $1 - name
+* $2 - reason for being read-only',
+'backend-fail-synced' => 'Used as fatal error message.
+
+Parameters:
+* $1 - file path
+
+A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
+'backend-fail-connect' => 'Used as fatal error message. Parameters:
+* $1 - backend name
+
+A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
+'backend-fail-internal' => 'Used as fatal error message. Parameters:
+* $1 - backend name
+
+A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
 'backend-fail-contenttype' => '$1 is a storage (file) path',
 'backend-fail-batchsize' => 'Error message when the limit of operations to be done at once in the file backend was reached.
 Parameters:
@@ -4009,33 +4179,44 @@ Parameters:
 'duplicatesoffile' => 'Shown on file description pages when a file is duplicated. Parameters:
 * $1 - Number of identical files
 * $2 - Name of the shown file to link to the special page [[Special:FileDuplicateSearch]]',
-'sharedupload' => 'Shown on an image description page when it is used in a central repository (i.e. [[commons:|Commons]] for Wikimedia wikis).
-
-* $1 is the name of the shared repository. On Wikimedia sites, $1 is {{msg-mw|shared-repo-name-shared}}. The default value for $1 is {{msg-mw|shared-repo}}.
-
-{{doc-important|Do not customise this message. Just translate it.|Customisation should be done by local wikis.}}
+'sharedupload' => '{{doc-important|Do not customise this message. Just translate it.|Customisation should be done by local wikis.}}
+Shown on an image description page when it is used in a central repository (i.e. [[commons:|Commons]] for Wikimedia wikis).
 
+Parameters:
+* $1 - the name of the shared repository. On Wikimedia sites, $1 is {{msg-mw|Shared-repo-name-shared}}. The default value for $1 is {{msg-mw|Shared-repo}}.
 See also:
 * {{msg-mw|Sharedupload-desc-there}}
 * {{msg-mw|Sharedupload-desc-here}}
 * {{msg-mw|Sharedupload-desc-edit}}
 * {{msg-mw|Sharedupload-desc-create}}',
-'sharedupload-desc-there' => 'See also:
+'sharedupload-desc-there' => 'Parameters:
+* $1 - the name of the shared repository. On Wikimedia sites, $1 is {{msg-mw|Shared-repo-name-shared}}. The default value for $1 is {{msg-mw|Shared-repo}}.
+* $2 - description URL
+See also:
 * {{msg-mw|Sharedupload}}
 * {{msg-mw|Sharedupload-desc-here}}
 * {{msg-mw|Sharedupload-desc-edit}}
 * {{msg-mw|Sharedupload-desc-create}}',
-'sharedupload-desc-here' => 'See also:
+'sharedupload-desc-here' => 'Parameters:
+* $1 - the name of the shared repository. On Wikimedia sites, $1 is {{msg-mw|Shared-repo-name-shared}}. The default value for $1 is {{msg-mw|Shared-repo}}.
+* $2 - description URL
+See also:
 * {{msg-mw|Sharedupload}}
 * {{msg-mw|Sharedupload-desc-there}}
 * {{msg-mw|Sharedupload-desc-edit}}
 * {{msg-mw|Sharedupload-desc-create}}',
-'sharedupload-desc-edit' => 'See also:
+'sharedupload-desc-edit' => 'Parameters:
+* $1 - the name of the shared repository. On Wikimedia sites, $1 is {{msg-mw|Shared-repo-name-shared}}. The default value for $1 is {{msg-mw|Shared-repo}}.
+* $2 - description URL
+See also:
 * {{msg-mw|Sharedupload}}
 * {{msg-mw|Sharedupload-desc-there}}
 * {{msg-mw|Sharedupload-desc-here}}
 * {{msg-mw|Sharedupload-desc-create}}',
-'sharedupload-desc-create' => 'See also:
+'sharedupload-desc-create' => 'Parameters:
+* $1 - the name of the shared repository. On Wikimedia sites, $1 is {{msg-mw|Shared-repo-name-shared}}. The default value for $1 is {{msg-mw|Shared-repo}}.
+* $2 - description URL
+See also:
 * {{msg-mw|Sharedupload}}
 * {{msg-mw|Sharedupload-desc-there}}
 * {{msg-mw|Sharedupload-desc-here}}
@@ -4063,7 +4244,9 @@ $1 is the name of the shared repository. On wikimedia sites, $1 is {{msg-mw|shar
 'upload-disallowed-here' => 'This message appears on an image page in place of the normal reupload link if they cannot upload - e.g. if the image page is upload protected and they do not have the right priviledge.',
 
 # File reversion
-'filerevert' => '{{Identical|Revert}}',
+'filerevert' => 'Used as page title. Parameters:
+* $1 - page title
+{{Identical|Revert}}',
 'filerevert-legend' => '{{Identical|Revert}}',
 'filerevert-intro' => 'Message displayed when you try to revert a version of a file.
 * $1 is the name of the media
@@ -4091,7 +4274,8 @@ See also:
 * {{msg-mw|Filedelete-intro}}',
 'filedelete-legend' => 'Used as fieldset label in the "Delete file" form.
 {{Identical|Delete file}}',
-'filedelete-intro' => 'Used as introduction for FileDelete form.
+'filedelete-intro' => 'Used as introduction for FileDelete form. Parameters:
+* $1 - page title for file
 See also:
 * {{msg-mw|Filedelete|page title}}',
 'filedelete-intro-old' => 'Message displayed when you try to delete a version of a file.
@@ -4255,9 +4439,19 @@ See also:
 'doubleredirectstext' => 'Shown on top of [[Special:Doubleredirects]]',
 'double-redirect-fixed-move' => 'This is the message in the log when the software (under the username {{msg-mw|Double-redirect-fixer}}) updates the redirects after a page move.
 
+Parameters:
+* $1 - redirect page title
+* $2 - new page title
+See also:
+* {{msg-mw|Fix-double-redirects}}
+* {{msg-mw|Double-redirect-fixed-maintenance}}',
+'double-redirect-fixed-maintenance' => 'This is the message in the log when the software (under the username {{msg-mw|Double-redirect-fixer}}) updates the redirects after running maintenance/fixDoubleRedirects.php.
+
+Parameters:
+* $1 - redirect page title
+* $2 - new page title
 See also:
-* {{msg-mw|Fix-double-redirects}}',
-'double-redirect-fixed-maintenance' => 'This is the message in the log when the software (under the username {{msg-mw|double-redirect-fixer}}) updates the redirects after running maintenance/fixDoubleRedirects.php. Compare with {{msg-mw|double-redirect-fixed-move}}.',
+* {{msg-mw|Double-redirect-fixed-move}}',
 'double-redirect-fixer' => "This is the '''username''' of the user who updates the double redirects after a page move.
 
 A user is created with this username, so it is perhaps better to not change this message too often.
@@ -4289,10 +4483,25 @@ See also:
 * $1 is the number of interwiki links.",
 'nlinks' => 'This appears in brackets after each entry on the special page [[Special:MostLinked]]. $1 is the number of wiki links.',
 'nmembers' => 'Appears in brackets after each category listed on the special page [[Special:WantedCategories]]. $1 is the number of members of the category.',
-'nrevisions' => 'Number of revisions.',
+'nrevisions' => 'Used as link text in [[Special:FewestRevisions]].
+
+The link points to the page history (action=history).
+
+Parameters:
+* $1 - number of revisions',
 'nviews' => 'This message is used on [[Special:PopularPages]] to say how many times each page has been viewed. Parameter $1 is the number of views.',
-'nimagelinks' => 'Used on [[Special:MostLinkedFiles]] to indicate how often a specific file is used.',
-'ntransclusions' => 'Used on [[Special:MostLinkedTemplates]] to indicate how often a template is in use.',
+'nimagelinks' => 'Used on [[Special:MostLinkedFiles]] to indicate how often a specific file is used.
+
+Parameters:
+* $1 - number of pages
+See also:
+* {{msg-mw|Ntransclusions}}',
+'ntransclusions' => 'Used on [[Special:MostLinkedTemplates]] to indicate how often a template is in use.
+
+Parameters:
+* $1 - number of pages
+See also:
+* {{msg-mw|Nimagelinks}}',
 'specialpage-empty' => 'Used on a special page when there is no data. For example on [[Special:Unusedimages]] when all images are used.',
 'lonelypages' => '{{doc-special|LonelyPages}}',
 'lonelypagestext' => 'Text displayed in [[Special:LonelyPages]]',
@@ -4342,7 +4551,8 @@ See the following search results:
 'listusers' => '{{doc-special|ListUsers}}',
 'listusers-editsonly' => 'Option in [[Special:ListUsers]].',
 'listusers-creationsort' => 'Option in [[Special:ListUsers]].',
-'usereditcount' => 'Shown behind every username on [[Special:ListUsers]].',
+'usereditcount' => 'Shown behind every username on [[Special:ListUsers]]. Parameters:
+* $1 - number of edits',
 'usercreated' => 'Used in [[Special:ListUsers]]. Parameters:
 * $1 - a date
 * $2 - a time
@@ -4454,9 +4664,17 @@ See also:
 {{Identical|All pages}}',
 'allinnamespace' => 'The page title of [[Special:Allpages]], when the user limits the display to a certain namespace. When not limited, {{msg-mw|allarticles}} is used respectively.
 
+Parameters:
+* $1 - namespace name
+See also:
+* {{msg-mw|Allnotinnamespace}}
 {{Identical|All pages}}',
 'allnotinnamespace' => 'Presumably intended to be used as a page title of [[Special:Allpages]] and probably also in [[Special:PrefixIndex]] when the user limit the display to other than a certain namespace.
 
+Parameters:
+* $1 - namespace name
+See also:
+* {{msg-mw|Allinnamespace}}
 {{Identical|All pages}}',
 'allpagesprev' => "Allegedly used in [[Special:AllPages]], although I haven't seen it.
 
@@ -4483,7 +4701,10 @@ See also:
 'categoriespagetext' => '{{doc-important|Do not translate or change links.}}
 Text displayed in [[Special:Categories]].
 
-In order to translate "Unused categories" and "wanted categories" see {{msg-mw|Unusedcategories}} and {{msg-mw|Wantedcategories}}.',
+In order to translate "Unused categories" and "wanted categories" see {{msg-mw|Unusedcategories}} and {{msg-mw|Wantedcategories}}.
+
+Parameters:
+* $1 - number of categories',
 'categoriesfrom' => 'Used as label for the input box in [[Special:Categories]].
 
 This message follows the fieldset label {{msg-mw|categories}}, and is followed by the input box.',
@@ -4633,9 +4854,12 @@ Used when a user was given to e-mail. Parameters:
 'emailuser-title-notarget' => '{{doc-special|EmailUser|unlisted=1}}
 Used when no user given to e-mail yet.',
 'emailpage' => "Title of special page [[Special:EmailUser]], when it is the destination of the sidebar link {{msg-mw|Emailuser}} on a user's page.",
-'emailpagetext' => 'This is the text that is displayed above the e-mail form on [[Special:EmailUser]].
+'emailpagetext' => 'This is the text that is displayed above the email form on [[Special:EmailUser]].
+
+Special:EmailUser appears when you click on the link "Email this user" in the sidebar, but only if there is an email address in the recipient\'s user preferences. If there isn\'t then the message {{msg-mw|Noemailtext}} will appear instead of Special:EmailUser.
 
-Special:EmailUser appears when you click on the link "E-mail this user" in the sidebar, but only if there is an e-mail address in the recipient\'s user preferences. If there isn\'t then the message {{msg-mw|Noemailtext}} will appear instead of Special:EmailUser.',
+Parameters:
+* $1 - username',
 'defemailsubject' => 'The default subject of EmailUser emails. Parameters:
 * $1 is the username of the user sending the email and can be used for GENDER.',
 'usermaildisabled' => 'Caption for an error message ({{msg-mw|Usermaildisabledtext}}) shown when the user-to-user e-mail feature is disabled on the wiki (see [[mw:Manual:$wgEnableEmail]], [[mw:Manual:$wgEnableUserEmail]]).',
@@ -4667,7 +4891,13 @@ The title for this error message is {{msg-mw|Usermaildisabled}}.',
 
 {{Identical|Send}}',
 'emailccme' => 'Used at [[Special:Preferences]] > E-mail',
-'emailccsubject' => 'Subject of the carbon-copied  email for the sender sent through MediaWiki.',
+'emailccsubject' => 'Used in [[Special:EmailUser]].
+
+Subject of the carbon-copied email for the sender sent through MediaWiki.
+
+Parameters:
+* $1 - target username
+* $2 - email subject',
 'emailsent' => 'Title of [[Special:EmailUser]] when it says you it sent an email',
 'emailsenttext' => 'When you send an e-mail, [[Special:EmailUser]] says you this (Your email has been sent).',
 'emailuserfooter' => 'This message is appended to every email sent through the "Email user" function. Parameters:
@@ -4708,9 +4938,10 @@ The title for this error is {{msg-mw|Watchnologin}}.',
 
 See also:
 * {{msg-mw|Removewatch}}',
-'addedwatchtext' => 'Explanation shown when clicking on the {{msg-mw|watch}} tab.
-
-See also {{msg-mw|addedwatch}}.',
+'addedwatchtext' => 'Explanation shown when clicking on the {{msg-mw|Watch}} tab. Parameters:
+* $1 - page title
+See also:
+* {{msg-mw|Addedwatch}}',
 'removewatch' => 'Link to a dialog box, displayed at the end of the list of categories at the foot of each page.
 
 See also:
@@ -4775,6 +5006,8 @@ See also:
 'watchmethod-list' => 'See also:
 * {{msg-mw|Watchmethod-recent}}',
 'watchlistcontains' => '* $1 - number of pages in your watchlist',
+'iteminvalidname' => 'Parameters:
+* $1 - item name',
 'wlnote' => 'Used on [[Special:Watchlist]] when the maximum number of days is specified.
 
 Similar to {{msg-mw|rcnote}} which is used on [[Special:RecentChanges]].
@@ -4803,9 +5036,10 @@ See also:
 
 This message is used raw and should not contain wikitext.
 
+Parameters:
+* $1 - ...
 See also:
-* {{msg-mw|addedwatchtext}}
-* {{msg-mw|addedwatchtext}}',
+* {{msg-mw|Addedwatchtext}}',
 
 'enotif_reset' => "Used in [[Special:Watchlist]].
 
@@ -4884,8 +5118,8 @@ Possible value for $CHANGEDORCREATED in the following messages:
 {{Identical|Created}}',
 'changed' => '{{Optional}}
 Possible value for $CHANGEDORCREATED in the following messages:
-* {{msg|enotif_subject}}
-* {{msg|enotif_body}}',
+* {{msg-mw|Enotif subject}}
+* {{msg-mw|Enotif body}}',
 
 # Delete
 'deletepage' => 'Used as Submit button text.
@@ -4893,9 +5127,17 @@ Possible value for $CHANGEDORCREATED in the following messages:
 'confirm' => 'Submit button text for protection confirmation
 
 {{Identical|Confirm}}',
-'excontent' => 'Automated deletion reason when deleting a page for admins',
-'excontentauthor' => 'Automated deletion reason when deleting a page for admins providing that the page has one author only.',
-'exbeforeblank' => 'Automated deletion reason when deleting a page for admins providing that the page was blanked before deletion.',
+'excontent' => 'Automated deletion reason when deleting a page for admins. Parameters:
+* $1 - content before deletion',
+'excontentauthor' => 'Automated deletion reason when deleting a page for admins providing that the page has one author only.
+
+Parameters:
+* $1 - content before deletion
+* $2 - username',
+'exbeforeblank' => 'Automated deletion reason when deleting a page for admins providing that the page was blanked before deletion.
+
+Parameters:
+* $1 - content before blanking',
 'delete-confirm' => 'The title of the form to delete a page.
 
 $1 = the name of the page',
@@ -4961,11 +5203,13 @@ Parameters:
 * $1 - the number of edits that will be rolled back. If $1 is over the value of <code>$wgShowRollbackEditCount</code> (default: 10) {{msg-mw|rollbacklinkcount-morethan}} is used.
 
 The rollback link is displayed with a tooltip {{msg-mw|Tooltip-rollback}}',
-'rollbacklinkcount-morethan' => 'Text of the rollback link when a greater number of edits is to be rolled back. See also {{msg-mw|rollbacklink}}.
+'rollbacklinkcount-morethan' => '{{doc-actionlink}}
+Text of the rollback link when a greater number of edits is to be rolled back. See also {{msg-mw|rollbacklink}}.
 
-When the number of edits rolled back is smaller than [[mw:Manual:$wgShowRollbackEditCount|$wgShowRollbackEditCount]], {{msg-mw|rollbacklinkcount}} is used instead.
+When the number of edits rolled back is smaller than [[mw:Special:MyLanguage/Manual:$wgShowRollbackEditCount|$wgShowRollbackEditCount]], {{msg-mw|rollbacklinkcount}} is used instead.
 
-{{Doc-actionlink}}',
+Parameters:
+* $1 - number of edits',
 'rollbackfailed' => '{{Identical|Rollback}}',
 'cantrollback' => 'Used as error message when rolling back.
 
@@ -4978,18 +5222,23 @@ See also:
 * $2 - the editor to be rolled-back of that page
 * $3 - the editor that cause collision
 {{Identical|Rollback}}",
-'editcomment' => "Only shown if there is an edit ''{{msg-mw|summary}}''",
+'editcomment' => 'Only shown if there is an edit {{msg-mw|Summary}}. Parameters:
+* $1 - the edit summary',
 'revertpage' => 'Parameters:
 * $1 - username 1
 * $2 - username 2
 Additionally available parameters:
-* $3 - revid of the revision reverted to
+* $3 - revision ID of the revision reverted to
 * $4 - timestamp of the revision reverted to
-* $5 - revid of the revision reverted from
+* $5 - revision ID of the revision reverted from
 * $6 - timestamp of the revision reverted from
 {{Identical|Revert}}',
 'revertpage-nouser' => 'This is a confirmation message a user sees after reverting, when the username of the version is hidden with RevisionDelete.
-In other cases the message {{msg-mw|revertpage}} is used.',
+
+In other cases the message {{msg-mw|Revertpage}} is used.
+
+Parameters:
+* $1 - username',
 'rollback-success' => 'This message shows up on screen after successful revert (generally visible only to admins). $1 describes user whose changes have been reverted, $2 describes user which produced version, which replaces reverted version.
 {{Identical|Revert}}
 {{Identical|Rollback}}',
@@ -5007,14 +5256,26 @@ Title of [[Special:Log/protect]].',
 'protectlogtext' => 'Text in [[Special:Log/protect]].',
 'protectedarticle' => 'Text describing an action on [[Special:Log]]. $1 is a page title.',
 'modifiedarticleprotection' => 'Text describing an action on [[Special:Log]]. $1 is a page title.',
-'unprotectedarticle' => 'Used as action in the log.',
+'unprotectedarticle' => 'Used as action in the log. Parameters:
+* $1 - target page title',
 'movedarticleprotection' => 'This is a log entry. It appears in the log if a protected page is renamed.
 
 Example:
-<code>00:51, 16 September 2010 Siebrand +(Talk • contribs • block) moved protection settings from "User:Siebrand/prot-move" to "User:Siebrand/prot-moved" ‎ (User:Siebrand/prot-move moved to User:Siebrand/prot-moved: prot_move test.)</code>',
+<code>00:51, 16 September 2010 Siebrand +(Talk • contribs • block) moved protection settings from "User:Siebrand/prot-move" to "User:Siebrand/prot-moved" ‎ (User:Siebrand/prot-move moved to User:Siebrand/prot-moved: prot_move test.)</code>
+
+Parameters:
+* $1 - target page title
+* $2 - source page title',
 'protect-title' => 'Title for the protection form. $1 is the title of the page to be (un)protected.',
-'protect-title-notallowed' => 'Same as {{msg-mw|protect-title}}, but when the user does not have the right to change protection levels.',
-'prot_1movedto2' => 'Message description: [[mw:Manual:Interface/1movedto2]]',
+'protect-title-notallowed' => 'Same as {{msg-mw|Protect-title}}, but when the user does not have the right to change protection levels.
+
+Parameters:
+* $1 - page title',
+'prot_1movedto2' => 'Message description: [[mw:Manual:Interface/1movedto2]]
+
+Parameters:
+* $1 - source page title
+* $2 - target page title',
 'protect-badnamespace-title' => 'Title of error page when trying to access action=protect on a non-protectable namespace (currently this only for the MediaWiki: namespace).',
 'protect-badnamespace-text' => 'Content of the error page that goes with {{msg-mw|protect-badnamespace-title}}.',
 'protect-norestrictiontypes-text' => "Content of the error page in case there aren't any restriction types (like edit or create) available.",
@@ -5032,14 +5293,24 @@ See also:
 * {{msg-mw|Protect expiry invalid}}',
 'protect-unchain-permissions' => 'This message is a label for a checkbox displayed in the "protect" form just below the first selector (generally the "edit" protection). If the checkbox is checked (default) other selectors will be locked and have the same value as the first selector, otherwise other selectors are editable by the user.
 This message was something like "unlock move protection" in the past.',
-'protect-text' => 'Intro of the protection interface. See [[meta:Protect]] for more information.',
+'protect-text' => 'Intro of the protection interface. See [[meta:Protect]] for more information.
+
+Parameters:
+* $1 - page title',
 'protect-locked-blocked' => '* $1 - page title',
 'protect-locked-dblock' => '* $1 - page title',
 'protect-locked-access' => '* $1 - page title',
 'protect-cascadeon' => 'Used in Protection form.
 * $1 - number of cascade source pages',
 'protect-default' => '{{Identical|Default}}',
-'protect-fallback' => 'This message is used as an option in the protection form on wikis were extra protection levels have been configured.',
+'protect-fallback' => 'This message is used as an option in the protection form on wikis were extra protection levels have been configured.
+
+Parameters:
+* $1 - undefined protection level (not localized). Defined protection levels are: "sysop" and "autoconfirmed"
+
+See also:
+* {{msg-mw|Protect-level-sysop}}
+* {{msg-mw|Protect-level-autoconfirmed}}',
 'protect-level-autoconfirmed' => 'Used as protect level.
 
 See example: {{canonicalurl:Main_Page|action=info}}',
@@ -5241,12 +5512,14 @@ See also:
 'undelete-cleanup-error' => '* $1 - file path',
 'undelete-missing-filearchive' => '* $1 - ID',
 'undelete-error' => 'Page title when a page could not be undeleted',
-'undelete-error-short' => 'Used as error message. See also:
-* {{msg-mw|Undelete-error-short}}
-* {{msg-mw|Undelete-error-long}}',
-'undelete-error-long' => 'Used as error message. See also:
-* {{msg-mw|Undelete-error-short}}
+'undelete-error-short' => 'Used as error message. Parameters:
+* $1 - ...
+See also:
 * {{msg-mw|Undelete-error-long}}',
+'undelete-error-long' => 'Used as error message. Parameters:
+* $1 - ...
+See also:
+* {{msg-mw|Undelete-error-short}}',
 'undelete-show-file-confirm' => 'A confirmation message shown on [[Special:Undelete]] when the request does not contain a valid token (e.g. when a user clicks a link received in mail).
 
 Parameters:
@@ -5278,12 +5551,22 @@ This message has a tooltip {{msg-mw|tooltip-invert}}
 'namespace_association' => 'Used in [[Special:Recentchanges]] with a checkbox which selects the associated namespace to be added to the selected namespace, so that both are searched (or excluded depending on another checkbox selection). The association is between a namespace and its talk namespace.
 
 This message has a tooltip {{msg-mw|tooltip-namespace association}}',
-'tooltip-namespace_association' => 'Used in [[Special:Recentchanges]] as a tooltip for the associated namespace checkbox. See also the message {{msg-mw|namespace_association}}',
+'tooltip-namespace_association' => 'Used in [[Special:Recentchanges]] as a tooltip for the associated namespace checkbox.
+
+See also:
+* {{msg-mw|Namespace association}}',
 'blanknamespace' => 'Name for main namespace (blank namespace) in drop-down menus at [[Special:RecentChanges]] and other special pages.
 {{Identical|Main}}',
 
 # Contributions
-'contributions' => "Display name for the 'User contributions', shown in the sidebar menu of all user pages and user talk pages. Also the page name of the target page. The target page shows an overview of the most recent contributions by a user.
+'contributions' => "Display name for the 'User contributions', shown in the sidebar menu of all user pages and user talk pages.
+
+Also the page name of the target page.
+
+The target page shows an overview of the most recent contributions by a user.
+
+Parameters:
+* $1 - username
 
 See also:
 * {{msg-mw|Contributions}}
@@ -5461,11 +5744,11 @@ Example line:
 'whatlinkshere-hidelinks' => 'Filter option in [[Special:WhatLinksHere]]. Parameters:
 * $1 is the {{msg-mw|hide}} or {{msg-mw|show}}',
 'whatlinkshere-hideimages' => 'Filter option in [[Special:WhatLinksHere]]. Parameters:
-* $1 is the {{msg-mw|hide}} or {{msg-mw|show}}
+* $1 - the {{msg-mw|Hide}} or {{msg-mw|Show}}
 
 See also:
 *{{msg-mw|Isimage}}
-*{{msg-mw|Media_tip}}',
+*{{msg-mw|Media tip}}',
 'whatlinkshere-filters' => '{{Identical|Filter}}',
 
 # Block/unblock
@@ -5655,7 +5938,12 @@ See also:
 'ipblocklist-localblock' => '[[File:Special IPBlockList new.png|thumb|Example]]
 Used on [[Special:IPBlockList]] as header when global blocks exists too.',
 'ipblocklist-otherblocks' => '[[File:Special IPBlockList new.png|thumb|Example]]
-Used on [[Special:IPBlockList]] as header for other blocks, i.e. from GlobalBlocking or TorBlocks.',
+Used on [[Special:IPBlockList]] as header for other blocks, i.e. from GlobalBlocking or TorBlocks.
+
+Parameters:
+* $1 - number of blocks
+See also:
+* {{msg-mw|Ipb-otherblocks-header}}',
 'infiniteblock' => "* contents of $4 in {{msg-mw|Blocklistline|notext=1}}: (''{{int:Blocklistline}}'')
 * contents of $4 in {{msg-mw|Globalblocking-blocked|notext=1}}:
 <blockquote>''{{int:Globalblocking-blocked}}''</blockquote>
@@ -5820,7 +6108,12 @@ See also:
 'ipb-needreblock' => 'Used in [[Special:Block]].
 * $1 - target username',
 'ipb-otherblocks-header' => '[[File:Special.Block with other blocks from GlobalBlocking and TorBlocks.png|thumb|Example]]
-Used on [[Special:Block]] as header for other blocks, i.e. from GlobalBlocking or TorBlocks',
+Used on [[Special:Block]] as header for other blocks, i.e. from GlobalBlocking or TorBlocks
+
+Parameters:
+* $1 - number of blocks
+See also:
+* {{msg-mw|Ipblocklist-otherblocks}}',
 'unblock-hideuser' => '{{doc-singularthey}}',
 'ipb_cant_unblock' => '* $1 - block ID',
 'ipb_blocked_as_range' => 'Used when unblock of a single IP fails. Parameters:
@@ -6117,6 +6410,8 @@ See also:
 * {{msg-mw|Move-watch|label for checkbox}}',
 'move-subpages' => 'The text of an option on the special page [[Special:MovePage|MovePage]]. If this option is ticked, any subpages will be moved with the main page to a new title.
 
+Parameters:
+* $1 - ...
 See also:
 * {{msg-mw|Move-page-legend|legend for the form}}
 * {{msg-mw|Movearticle|label for old title}}
@@ -6129,6 +6424,8 @@ See also:
 * {{msg-mw|Move-watch|label for checkbox}}',
 'move-talk-subpages' => 'The text of an option on the special page [[Special:MovePage|MovePage]]. If this option is ticked, any talk subpages will be moved with the talk page to a new title.
 
+Parameters:
+* $1 - ...
 See also:
 * {{msg-mw|Move-page-legend|legend for the form}}
 * {{msg-mw|Movearticle|label for old title}}
@@ -6147,7 +6444,10 @@ See also:
 'movepage-page-unmoved' => 'Used as error message when moving page.
 * $1 - old page title
 * $2 - new page title',
-'movepage-max-pages' => 'PROBABLY (A GUESS): when moving a page, you can select an option of moving its subpages, but there is a maximum that can be moved automatically.',
+'movepage-max-pages' => 'PROBABLY (A GUESS): when moving a page, you can select an option of moving its subpages, but there is a maximum that can be moved automatically.
+
+Parameters:
+* $1 - maximum moved pages, defined in the variable [[mw:Special:MyLanguage/Manual:$wgMaximumMovedPages|$wgMaximumMovedPages]]',
 'movelogpage' => '{{doc-logpage}}
 
 Title of [[Special:Log/move]]. Used as heading on that page, and in the dropdown menu on log pages.',
@@ -6187,8 +6487,11 @@ See also:
 
 This message is to confirm that you really want to delete the page.
 
+Parameters:
+* $1 - the destination page title
+
 See also:
-* {{msg-mw|delete and move confirm}}',
+* {{msg-mw|Delete and move confirm}}',
 'delete_and_move_confirm' => 'Used when moving a page, but the destination page already exists and needs deletion.
 
 This message is for a checkbox to confirm that you really want to delete the page.
@@ -6283,7 +6586,10 @@ See also:
 * {{msg-mw|move-watch|label for checkbox}}',
 'protectedpagemovewarning' => '{{Related|Semiprotectedpagewarning}}',
 'semiprotectedpagemovewarning' => '{{Related|Semiprotectedpagewarning}}',
-'move-over-sharedrepo' => 'Notice when a file with that filename already exists on a shared repository, such as Wikimedia Commons.',
+'move-over-sharedrepo' => 'Notice when a file with that filename already exists on a shared repository, such as Wikimedia Commons.
+
+Parameters:
+* $1 - the destination page title',
 'file-exists-sharedrepo' => 'Used in [[Special:MovePage]].',
 
 # Export
@@ -6363,9 +6669,11 @@ The reason $1 is one of the following messages:
 * {{msg-mw|Djvu page error}}
 * {{msg-mw|Svg-long-error}}
 * other custom string',
-'thumbnail_error_remote' => 'Message shown in a thumbnail frame when creation of the thumbnail fails. Parameters:
-* $1 - the name of the shared repository, see {{msg-mw|sharedupload}}
-* $2 - the reason, see {{msg-mw|thumbnail_error}}',
+'thumbnail_error_remote' => 'Message shown in a thumbnail frame when creation of the thumbnail fails.
+
+Parameters:
+* $1 - the name of the shared repository, see {{msg-mw|Sharedupload}}
+* $2 - the reason, see {{msg-mw|Thumbnail error}}',
 'djvu_page_error' => 'Used as error message.
 
 See also:
@@ -6572,7 +6880,11 @@ Parameters:
 * $2 - the ID of the offending revision, as reported in the dump that is being imported
 * $3 - the content model reported for the offending revision in the dump that is being imported
 * $4 - the serialization format reported for the offending revision in the dump that is being imported',
-'import-options-wrong' => 'Used on [[Special:Import]], when one of the options has an error.',
+'import-options-wrong' => 'Used as error message on [[Special:Import]], when one of the options has an error.
+
+Parameters:
+* $1 - ...
+* $2 - number of options',
 'import-rootpage-invalid' => 'Used on [[Special:Import]], when the root page is invalid.',
 'import-rootpage-nosubpage' => 'Used on [[Special:Import]], when the import namespace does not support subpages. Parameters:
 * $1 is a namespace name.',
@@ -6583,7 +6895,8 @@ Parameters:
 'import-logentry-upload' => 'This is the text of an entry in the Import log (and Recent Changes), after hour (and date, only in the Import log) and sysop name:
 * $1 is the name of the imported file',
 'import-logentry-upload-detail' => '* $1 - number of revisions, success count',
-'import-logentry-interwiki' => 'Used as action listed in the log.',
+'import-logentry-interwiki' => 'Used as action listed in the log. Parameters:
+* $1 - page title',
 'import-logentry-interwiki-detail' => '* $1 - number of revisions, success count
 * $2 - interwiki name',
 
@@ -6842,7 +7155,7 @@ See also:
 * {{msg-mw|Contributions}}
 * {{msg-mw|Accesskey-t-contributions}}
 * {{msg-mw|Tooltip-t-contributions}}',
-'tooltip-t-emailuser' => 'Tooltip shown when hovering over the {{msg|emailuser}} link in the toolbox (sidebar, below).
+'tooltip-t-emailuser' => 'Tooltip shown when hovering over the {{msg-mw|Emailuser}} link in the toolbox (sidebar, below).
 
 See also:
 * {{msg-mw|Emailuser}}
@@ -6919,7 +7232,7 @@ See also:
 * {{msg-mw|Nstab-mediawiki}}
 * {{msg-mw|Accesskey-ca-nstab-mediawiki}}
 * {{msg-mw|Tooltip-ca-nstab-mediawiki}}',
-'tooltip-ca-nstab-template' => 'Tooltip shown when hovering over the {{msg|nstab-template}} tab.
+'tooltip-ca-nstab-template' => 'Tooltip shown when hovering over the {{msg-mw|Nstab-template}} tab.
 
 See also:
 * {{msg-mw|Nstab-template}}
@@ -7254,6 +7567,9 @@ See also:
 'markedaspatrolledtext' => 'Used when marking a change as patrolled.
 
 The title for this message is {{msg-mw|Markedaspatrolled}}.
+
+Parameters:
+* $1 - page title
 {{Related|Markedaspatrolled}}',
 'rcpatroldisabled' => 'Used as title of the error message {{msg-mw|Rcpatroldisabledtext}}, when marking a change as patrolled.
 {{Related|Markedaspatrolled}}',
@@ -7290,12 +7606,14 @@ See also:
 
 # Image deletion
 'deletedrevision' => '* $1 - archive name of old image',
-'filedeleteerror-short' => 'Used as error message. See also:
-* {{msg-mw|Filedeleteerror-short}}
-* {{msg-mw|Filedeleteerror-long}}',
-'filedeleteerror-long' => 'Used as error message. See also:
-* {{msg-mw|Filedeleteerror-short}}
+'filedeleteerror-short' => 'Used as error message. Parameters:
+* $1 - page title
+See also:
 * {{msg-mw|Filedeleteerror-long}}',
+'filedeleteerror-long' => 'Used as error message. Parameters:
+* $1 - ...
+See also:
+* {{msg-mw|Filedeleteerror-short}}',
 'filedelete-missing' => 'Used as error message. Parameters:
 * $1 - filename
 See also:
@@ -7314,8 +7632,14 @@ See also:
 'filedelete-archive-read-only' => '* $1 - directory name',
 
 # Browsing diffs
-'previousdiff' => 'Used when viewing the difference between edits. See also {{msg|nextdiff}}.',
-'nextdiff' => 'Used when viewing the difference between edits. See also {{msg|previousdiff}}.',
+'previousdiff' => 'Used when viewing the difference between edits.
+
+See also:
+* {{msg-mw|Nextdiff}}',
+'nextdiff' => 'Used when viewing the difference between edits.
+
+See also:
+* {{msg-mw|Previousdiff}}',
 
 # Media information
 'mediawarning' => 'Shows up on file description pages if the file type is not listed in [[mw:Manual:$wgTrustedMediaFormats|Manual:$wgTrustedMediaFormats]].',
@@ -7327,14 +7651,19 @@ See also:
 
 See also:
 * {{msg-mw|Imagemaxsize}}',
-'widthheight' => '{{optional}}',
+'widthheight' => '{{optional}}
+Parameters:
+* $1 - width
+* $2 - height',
 'widthheightpage' => 'This message is used on image pages in the dimensions column in the file history section for images  with more than one page.
 
 Parameters:
 * $1 - the width of the image pages in pixels
 * $2 - the height of the image pages in pixels
 * $3 - the number of pages in the file',
-'file-info' => 'File info displayed on file description page.',
+'file-info' => 'File info displayed on file description page. Parameters:
+* $1 - filesize
+* $2 - MIME type',
 'file-info-size' => 'File info displayed on file description page.
 
 Parameters:
@@ -7353,7 +7682,12 @@ Parameters:
 'file-nohires' => 'File info displayed on file description page. For example of message in use see [[:File:Mouse10.gif]].',
 'svg-long-desc' => 'Displayed under an SVG image at the image description page. Note that argument 3 is a string that includes the file size unit symbol. See for example [[:File:Yes check.svg]].
 
-Start with a lowercase letter, unless the first word is "SVG".',
+Start with a lowercase letter, unless the first word is "SVG".
+
+Parameters:
+* $1 - width
+* $2 - height
+* $3 - filesize',
 'svg-long-desc-animated' => 'Displayed under an SVG image at the image description page if the image is animated.
 * $1 - the width in pixels
 * $2 - the height in pixels
@@ -7364,13 +7698,27 @@ Non-animated images use {{msg-mw|svg-long-desc}}.',
 See also:
 * {{msg-mw|Thumbnail error}}',
 'show-big-image' => 'Displayed under an image at the image description page, when it is displayed smaller there than it was uploaded.',
-'show-big-image-preview' => 'Message shown under the image description page thumbnail, next to {{msg-mw|show-big-image-other}}.',
-'show-big-image-other' => 'Message shown under the image description page thumbnail, next to {{msg-mw|show-big-image-preview}}, if the image is in high resolution.',
+'show-big-image-preview' => 'Message shown under the image description page thumbnail.
+
+Can be followed by {{msg-mw|Show-big-image-other}}.
+
+Parameters:
+* $1 - a link which points to the thumbnail. Its text is {{msg-mw|Show-big-image-size}}',
+'show-big-image-other' => 'Message shown under the image description page thumbnail.
+
+Preceded by {{msg-mw|Show-big-image-preview}}, if the image is in high resolution.
+
+Parameters:
+* $1 - list of resolutions (pipe-separated)
+* $2 - number of resolutions',
 'show-big-image-size' => 'Parameters:
 * $1 - the width of the image(s) in pixels
 * $2 - the height of the image(s) in pixels',
 'file-info-gif-looped' => 'Part of the information provided about a [[w:Gif|.gif file]] on its file description page. Looped means repeating in the context of an animated gif. It is a sequence of images, each displayed after the other, and the first one displayed after the last, in a never ending loop. For example of message in use see [[:File:Mouse10.gif]].',
-'file-info-gif-frames' => 'Part of the information provided about a [[w:Gif|.gif file]] on its file description page.',
+'file-info-gif-frames' => 'Part of the information provided about a [[w:Gif|.gif file]] on its file description page.
+
+Parameters:
+* $1 - number of frames',
 'file-info-png-looped' => 'Part of the information provided about a [[w:APNG|.apng file]] on its file description page. Looped means repeating indefinetly in the context of an animated png. It is a sequence of images, each displayed after the other, and the first one displayed after the last, in a never ending loop.',
 'file-info-png-repeat' => 'Part of the information provided about a [[w:APNG|.apng file]] on its file description page. The sequence of images is repeating a limited amount of time. It is a sequence of images, each displayed after the other, and the first one displayed after the last, for $1 times.',
 'file-info-png-frames' => 'Part of the information provided about a [[w:APNG|.apng file]] on its file description page.
@@ -7405,7 +7753,11 @@ See also:
 * $2 is a time (example: ''12:15'')",
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
-'video-dims' => '{{optional}}',
+'video-dims' => '{{optional}}
+Parameters:
+* $1 - ...
+* $2 - width
+* $3 - height',
 'seconds-abbrev' => '{{optional}}
 Abbreviation for "seconds". $1 is the number of seconds.
 
@@ -7452,9 +7804,18 @@ Parameters:
 'just-now' => 'Phrase for indicating something happened just now.',
 
 # Human-readable timestamps
-'hours-ago' => 'Phrase for indicating that something occurred a certain number of hours ago',
-'minutes-ago' => 'Phrase for indicating that something occurred a certain number of minutes ago',
-'seconds-ago' => 'Phrase for indicating that something occurred a certain number of seconds ago',
+'hours-ago' => 'Phrase for indicating that something occurred a certain number of hours ago.
+
+Parameters:
+* $1 - number of hours',
+'minutes-ago' => 'Phrase for indicating that something occurred a certain number of minutes ago.
+
+Parameters:
+* $1 - number of minutes',
+'seconds-ago' => 'Phrase for indicating that something occurred a certain number of seconds ago.
+
+Parameters:
+* $1 - number of seconds',
 'monday-at' => 'Phrase for indicating that something occurred at a particular time on the most recent Monday. $1 is the time.',
 'tuesday-at' => 'Phrase for indicating that something occurred at a particular time on the most recent Tuesday. $1 is the time.',
 'wednesday-at' => 'Phrase for indicating that something occurred at a particular time on the most recent Wednesday. $1 is the time.',
@@ -7702,11 +8063,13 @@ Parameters:
 'exif-fnumber' => 'Exif is a format for storing metadata in image files. See this [[w:Exchangeable_image_file_format|Wikipedia article]] and the example at the bottom of [[commons:File:Phalacrocorax-auritus-020.jpg|this page on Commons]]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 The [[w:F_number|F number]] is the relative aperture of the camera.',
-'exif-fnumber-format' => "{{optional}}
+'exif-fnumber-format' => '{{optional}}
 Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
-*$1 is a number
-*f is the abbreviation used in English for 'f-number'.",
+Parameters:
+* $1 - a number
+Note:
+* f is the abbreviation used in English for "f-number".',
 'exif-exposureprogram' => 'Exif is a format for storing metadata in image files. See this [[w:Exchangeable_image_file_format|Wikipedia article]] and the example at the bottom of [[commons:File:Phalacrocorax-auritus-020.jpg|this page on Commons]]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 How the camera figured out what exposure to use. (If it was manually set, if its optimizing for fast shutter speed, etc).
@@ -7751,11 +8114,13 @@ See this [[w:en:Flash_(photography)|Wikipedia article]] for an explanation of th
 'exif-focallength' => 'Exif is a format for storing metadata in image files. See this [[w:Exchangeable_image_file_format|Wikipedia article]] and the example at the bottom of [[commons:File:Phalacrocorax-auritus-020.jpg|this page on Commons]]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 See this [[w:en:Focal_length_(photography)|Wikipedia article]] for an explanation of the term.',
-'exif-focallength-format' => "{{optional}}
+'exif-focallength-format' => '{{optional}}
 Exif is a format for storing metadata in image files. See this [http://en.wikipedia.org/wiki/Exchangeable_image_file_format Wikipedia article] and the example at the bottom of [http://commons.wikimedia.org/wiki/File:Phalacrocorax-auritus-020.jpg this page on Commons]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
-*$1 is a number
-*mm is the abbreviation used in English for the unit of measurement of length 'millimetre'.",
+Parameters:
+* $1 - a number
+Note:
+* mm is the abbreviation used in English for the unit of measurement of length "millimeter".',
 'exif-subjectarea' => 'Exif is a format for storing metadata in image files. See this [[w:Exchangeable_image_file_format|Wikipedia article]] and the example at the bottom of [[commons:File:Phalacrocorax-auritus-020.jpg|this page on Commons]]. The tags are explained [http://www.awaresystems.be/imaging/tiff/tifftags/privateifd/exif.html briefly] and [http://www.kodak.com/global/plugins/acrobat/en/service/digCam/exifStandard2.pdf in further detail].
 
 This exif property contains the position of the main subject. The first two numbers is the position of the subject in the picture in pixels from the upper left corner. If a third number is specified, it is a circle centred at the first two numbers. If four numbers are specified, the first two are coordinates of the centre of the subject as before, the third is the width of the rectangle, and the fourth is the height of the rectangle. It is rare for a photo to use this tag.',
@@ -7893,7 +8258,13 @@ See also:
 {{Related|Exif-gpsdestdistance}}',
 'exif-gpsdestdistance' => '{{Related|Exif-gpsdestdistance}}',
 'exif-gpsdatestamp' => 'Date (does not generally include time unless recorded in XMP) that GPS measurement was taken, in UTC. Since often this is at the same date as photo was taken, this is sometimes more reliable than {{msg-mw|exif-datetimeoriginal}}.',
-'exif-coordinate-format' => '{{optional}} For formatting GPS latitude coordinates. $1 is degrees, $2 is minutes, $3 is seconds (up to two decimal places), $4 is direction (N, S, W, or E), $5 is coordinate as a single positive or negative real number.',
+'exif-coordinate-format' => '{{optional}}
+For formatting GPS latitude coordinates. Parameters:
+* $1 - degrees
+* $2 - minutes
+* $3 - seconds (up to two decimal places)
+* $4 - direction (N, S, W, or E)
+* $5 - (Unused) coordinate as a single positive or negative real number',
 'exif-jpegfilecomment' => 'This is not a true exif tag, but the contents of the JPEG COM segment. This often contains a file source, but can potentially contain any comment about the file. This is similar to {{msg-mw|exif-usercomment}}, {{msg-mw|exif-pngfilecomment}}, and {{msg-mw|exif-giffilecomment}}.',
 'exif-keywords' => "List of keywords for the photograph (or other media).
 
@@ -7996,19 +8367,20 @@ This comes from the png warning textual chunk. See http://www.w3.org/TR/PNG/#11k
 
 # Make & model, can be wikified in order to link to the camera and model name
 'exif-contact-value' => '{{optional}}
-*$1 is email
-*$2 is URL of website
-*$3 is street address.
-*$4 is city
-*$5 is region
-*$6 is postal code
-*$7 is country
-*$8 is telephone number
+Parameters:
+* $1 - email
+* $2 - URL of website
+* $3 - street address
+* $4 - city
+* $5 - region
+* $6 - postal code
+* $7 - country
+* $8 - telephone number
 Note, not all fields are guaranteed to be present, some may be empty strings.',
 'exif-subjectnewscode-value' => '{{Optional}}
-
-*$1 is numeric IPTC subject news code (one of http://cv.iptc.org/newscodes/subjectcode )
-*$2 is one of 17 broad categories that the code falls into. For example any code starting with 15 has the contents of {{msg-mw|exif-iimcategory-spo}} for $2.',
+Parameters:
+* $1 - numeric IPTC subject news code (one of http://cv.iptc.org/newscodes/subjectcode )
+* $2 - one of 17 broad categories that the code falls into. For example any code starting with 15 has the contents of {{msg-mw|Exif-iimcategory-spo}} for $2.',
 
 # Exif attributes
 'exif-compression-1' => '{{Related|Exif-compression}}',
@@ -8079,8 +8451,16 @@ CW is an abbreviation for clockwise.
 * {{msg-mw|Exif-planarconfiguration-1}}
 * {{msg-mw|Exif-planarconfiguration-2}}',
 
-'exif-xyresolution-i' => '{{Optional}} Used to format {{msg-mw|exif-xresolution}} and {{msg-mw|exif-yresolution}} if the unit is dots per inch. $1 is the number of dots/in.',
-'exif-xyresolution-c' => '{{Optional}} Used to format {{msg-mw|exif-xresolution}} and {{msg-mw|exif-yresolution}} if the unit is dots per centimetre. $1 is the number of dots/cm.',
+'exif-xyresolution-i' => '{{Optional}}
+Used to format {{msg-mw|Exif-xresolution}} and {{msg-mw|Exif-yresolution}} if the unit is dots per inch.
+
+Parameters:
+* $1 - the number of dots/in',
+'exif-xyresolution-c' => '{{Optional}}
+Used to format {{msg-mw|Exif-xresolution}} and {{msg-mw|Exif-yresolution}} if the unit is dots per centimeter.
+
+Parameters:
+* $1 - the number of dots/cm',
 
 'exif-colorspace-1' => '{{Optional}}
 If it uses the standard sRGB colour space.
@@ -8397,7 +8777,9 @@ See: http://www.awaresystems.be/imaging/tiff/tifftags/ycbcrpositioning.html
 'exif-isospeedratings-overflow' => "Exif can't store iso speed ratings beyond 65535. This message is shown if the iso speed is too big to be stored.",
 
 'exif-maxaperturevalue-value' => '{{Optional}}
-$1 is maxaperture in APEX units (APEX aperture units = 2log<sub>2</sub>(f-number) ). $2 is the value in the more traditional f-number units.',
+Parameters:
+* $1 - maxaperture in APEX units (APEX aperture units = 2log<sub>2</sub>(f-number) )
+* $2 - the value in the more traditional f-number units',
 
 'exif-iimcategory-ace' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
 'exif-iimcategory-clj' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
@@ -8459,7 +8841,7 @@ This message is variable $3 in the message {{msg-mw|Wlshowlast}}.
 'confirmemail_text' => 'Explanation on [[Special:ConfirmEmail]]',
 'confirmemail_pending' => 'Message on [[Special:ConfirmEmail]] when confirmation of e-mail not yet complete.',
 'confirmemail_send' => 'Button label on [[Special:ConfirmEmail]]',
-'confirmemail_sent' => 'Message appearing after button {{msg-mw|Confirmemail_send}} activated on [[Special:ConfirmEmail]].',
+'confirmemail_sent' => 'Message appearing after button {{msg-mw|Confirmemail send}} activated on [[Special:ConfirmEmail]].',
 'confirmemail_oncreate' => 'Used in [[Special:ConfirmEmail]].
 
 See also:
@@ -8511,14 +8893,17 @@ See also [[MediaWiki:Confirmemail_body_changed]].
 
 # Scary transclusion
 'scarytranscludedisabled' => 'Shown when scary transclusion is disabled.',
-'scarytranscludefailed' => 'Shown when the HTTP request for the template failed.
-
-* {{msg-mw|Scarytranscludefailed}}
+'scarytranscludefailed' => 'Shown when the HTTP request for the template failed. Parameters:
+* $1 - URL
+See also:
 * {{msg-mw|Scarytranscludefailed-httpstatus}}',
 'scarytranscludefailed-httpstatus' => 'Identical to {{msg-mw|scarytranscludefailed}}, but shows the HTTP error which was received.
 
-* {{msg-mw|Scarytranscludefailed}}
-* {{msg-mw|Scarytranscludefailed-httpstatus}}',
+Parameters:
+* $1 - URL
+* $2 - HTTP status, integer (other than 200)
+See also:
+* {{msg-mw|Scarytranscludefailed}}',
 'scarytranscludetoolong' => 'The URL was too long.',
 
 # Delete conflict
@@ -8538,7 +8923,8 @@ See also:
 * {{msg-mw|Recreate}}
 * {{msg-mw|Tooltip-recreate}}',
 
-'unit-pixel' => '{{optional}}',
+'unit-pixel' => '{{optional}}
+px is the abbreviation for "pixel".',
 
 # action=purge
 'confirm_purge_button' => 'Used as Submit button text.
@@ -8605,7 +8991,10 @@ See also:
 
 # Auto-summaries
 'autosumm-blank' => 'The auto summary when blanking the whole page. This is not the same as deleting the page.',
-'autosumm-replace' => 'The auto summary when a user removes a lot of characters in the page.',
+'autosumm-replace' => 'The auto summary when a user removes a lot of characters in the page.
+
+Parameters:
+* $1 - truncated text',
 'autoredircomment' => 'The auto summary when making a redirect. $1 is the page where it redirects to. $2 is the first X number of characters of the redirect ($2 is usually only used when end users customize the message)',
 'autosumm-new' => 'The auto summary when creating a new page. $1 are the first X number of characters of the new page.',
 
@@ -8668,12 +9057,14 @@ See also:
 * {{msg-mw|Livepreview-error}}',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'Used as warning about slave lag. See also:
-* {{msg-mw|Lag-warn-normal}}
-* {{msg-mw|Lag-warn-high}}',
-'lag-warn-high' => 'Used as warning about slave lag. See also:
-* {{msg-mw|Lag-warn-normal}}
+'lag-warn-normal' => 'Used as warning about slave lag. Parameters:
+* $1 - number of seconds
+See also:
 * {{msg-mw|Lag-warn-high}}',
+'lag-warn-high' => 'Used as warning about slave lag. Parameters:
+* $1 - number of seconds
+See also:
+* {{msg-mw|Lag-warn-normal}}',
 
 # Watchlist editor
 'watchlistedit-numitems' => 'Message on [[Special:EditWatchlist]]. This is paired with the message {{Msg-mw|Watchlistedit-noitems}} which appears instead of this message when $1 is 0.',
@@ -8688,7 +9079,15 @@ See also:
 * {{msg-mw|Watchlistedit-normal-submit}}
 * {{msg-mw|Accesskey-watchlistedit-normal-submit}}
 * {{msg-mw|Tooltip-watchlistedit-normal-submit}}',
-'watchlistedit-normal-done' => 'Message on [[Special:EditWatchlist]] after pages are removed from the watchlist.',
+'watchlistedit-normal-done' => 'Message on [[Special:EditWatchlist]] after pages are removed from the watchlist.
+
+Followed by list of page titles which are removed.
+
+Parameters:
+* $1 - number of page titles which are removed
+See also:
+* {{msg-mw|Watchlistedit-raw-added}}
+* {{msg-mw|Watchlistedit-raw-removed}}',
 'watchlistedit-raw-title' => 'Title of [[Special:Watchlist/raw|Special page]].
 
 {{Identical|Edit raw watchlist}}',
@@ -8705,20 +9104,40 @@ See also:
 * {{msg-mw|Accesskey-watchlistedit-raw-submit}}
 * {{msg-mw|Tooltip-watchlistedit-raw-submit}}',
 'watchlistedit-raw-done' => 'A message which appears after the raw watchlist has been updated using [[Special:Watchlist/raw]].',
-'watchlistedit-raw-added' => 'Message on [[Special:EditWatchlist/raw]]. The message appears after at least 1 message is added to the raw watchlist.',
-'watchlistedit-raw-removed' => 'Message on [[Special:EditWatchlist/raw]]. The message appears after at least 1 message is deleted from the raw watchlist.',
+'watchlistedit-raw-added' => 'Message on [[Special:EditWatchlist/raw]].
+
+The message appears after at least 1 message is added to the raw watchlist.
+
+Followed by list of page titles which are added.
+
+Parameters:
+* $1 - number of page titles which are added
+See also:
+* {{msg-mw|Watchlistedit-normal-done}}
+* {{msg-mw|Watchlistedit-raw-removed}}',
+'watchlistedit-raw-removed' => 'Message on [[Special:EditWatchlist/raw]].
+
+The message appears after at least 1 message is deleted from the raw watchlist.
+
+Followed by list of page titles which are removed.
+
+Parameters:
+* $1 - number of page titles which are removed
+See also:
+* {{msg-mw|Watchlistedit-normal-done}}
+* {{msg-mw|Watchlistedit-raw-added}}',
 
 # Watchlist editing tools
 'watchlisttools-view' => '[[Special:Watchlist]]: Navigation link under the title.
 
 See also:
-* {{msg|watchlisttools-edit}}
-* {{msg|watchlisttools-raw}}',
+* {{msg-mw|watchlisttools-edit}}
+* {{msg-mw|watchlisttools-raw}}',
 'watchlisttools-edit' => '[[Special:Watchlist]]: Navigation link under the title.
 
 See also:
-* {{msg|watchlisttools-view}}
-* {{msg|watchlisttools-raw}}',
+* {{msg-mw|Watchlisttools-view}}
+* {{msg-mw|Watchlisttools-raw}}',
 'watchlisttools-raw' => '[[Special:Watchlist]]: Navigation link under the title.
 
 See also:
@@ -8837,10 +9256,15 @@ Name of month in Hebrew calendar.',
 Name of month in Hebrew calendar.',
 
 # Signatures
-'signature' => "This will be substituted in the signature (~<nowiki></nowiki>~~ or ~~<nowiki></nowiki>~~ excluding timestamp). Parameters:
+'signature' => "This will be substituted in the signature (~<nowiki></nowiki>~~ or ~~<nowiki></nowiki>~~ excluding timestamp).
+
+Parameters:
 * $1 - the username that is currently login
 * $2 - the customized signature which is specified in [[Special:Preferences|user's preferences]] as non-raw
-Use your language default parentheses ({{msg-mw|parentheses}}), but not use the message direct.",
+Use your language default parentheses ({{msg-mw|parentheses}}), but not use the message direct.
+
+See also:
+* {{msg-mw|Signature-anon}} - signature for anonymous user",
 'timezone-utc' => '{{optional}}',
 
 # Core parser functions
@@ -8850,7 +9274,9 @@ This feature allows tags like <code><nowiki><pre></nowiki></code> to be called w
 
 Parameters:
 * $1 - the unknown extension tag name',
-'duplicate-defaultsort' => 'See definition of [[w:Sorting|sort key]] on Wikipedia.',
+'duplicate-defaultsort' => 'See definition of [[w:Sorting|sort key]] on Wikipedia. Parameters:
+* $1 - old default sort key
+* $2 - new default sort key',
 
 # Special:Version
 'version' => '{{doc-special|Version}}
@@ -8876,8 +9302,11 @@ This message is followed by the list of parser extension tags like <code><nowiki
 'version-version' => '*$1 - version number
 {{Identical|Version}}',
 'version-svn-revision' => '{{optional}}
-This is being used in [[Special:Version]], preceeding the subversion revision numbers of the extensions loaded inside brackets, like this: "({{int:version-revision}} r012345")
+Used in [[Special:Version]], preceeding the subversion revision numbers of the extensions loaded inside brackets, like this: "({{int:version-revision}} r012345").
 
+Parameters:
+* $1 - (Unused) directory revision number or empty string
+* $2 - checkout revision number
 {{Identical|Revision}}',
 'version-license' => '{{Identical|License}}',
 'version-poweredby-credits' => 'Message shown on [[Special:Version]]. Parameters:
@@ -9245,7 +9674,14 @@ $4 is the gender of the target user.',
 {{Identical|None}}',
 
 # Feedback
-'feedback-bugornote' => 'When feedback dialog box is opened, this introductory message in small print explains the options to report a bug or add simple feedback. We expect that people in a hurry will not read this.',
+'feedback-bugornote' => 'When feedback dialog box is opened, this introductory message in small print explains the options to report a bug or add simple feedback.
+
+We expect that people in a hurry will not read this.
+
+Parameters:
+* $1 - Bug note URL
+* $2 - "Feedback"
+* $3 - Feedback page URL',
 'feedback-subject' => 'Label for a text input
 {{Identical|Subject}}',
 'feedback-message' => 'Label for a textarea; signature referrs to a Wikitext signature.
@@ -9258,10 +9694,15 @@ $4 is the gender of the target user.',
 'feedback-error1' => 'Error message, appears when an unknown error occurs submitting feedback',
 'feedback-error2' => 'Error message, appears when we could not add feedback',
 'feedback-error3' => 'Error message, appears when we lose our connection to the wiki',
-'feedback-thanks' => 'Thanks message, appears if feedback was successful',
+'feedback-thanks' => 'Thanks message, appears if feedback was successful. Parameters:
+* $1 - "Feedback"
+* $2 - Feedback page URL',
 'feedback-close' => 'Button label
 {{Identical|Done}}',
-'feedback-bugcheck' => 'Message that appears before the user submits a bug, reminding them to check for known bugs.',
+'feedback-bugcheck' => 'Message that appears before the user submits a bug, reminding them to check for known bugs.
+
+Parameters:
+* $1 - bug list page URL',
 'feedback-bugnew' => 'Button label - asserts that the user has checked for existing bugs. When clicked will launch a bugzilla form to add a new bug in a new tab or window',
 
 # Search suggestions
@@ -9282,12 +9723,27 @@ $4 is the gender of the target user.',
 * $2 - a link to a list of duplicate files',
 'api-error-duplicate-archive-popup-title' => 'API error message that can be used for client side localisation of API errors. Parameters:
 * $1 is a number of files.',
-'api-error-duplicate-popup-title' => 'This message is a pop-up title shown in case one or more files exactly equal to the one just uploaded are already present. The word "duplicate" is an adjective.',
+'api-error-duplicate-popup-title' => 'This message is a pop-up title shown in case one or more files exactly equal to the one just uploaded are already present.
+
+The word "duplicate" is an adjective.
+
+Parameters:
+* $1 - number of files',
 'api-error-empty-file' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-emptypage' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-fetchfileerror' => 'API error message that can be used for client side localisation of API errors.',
-'api-error-fileexists-forbidden' => 'API error message that can be used for client side localisation of API errors.',
-'api-error-fileexists-shared-forbidden' => 'API error message that can be used for client side localisation of API errors.',
+'api-error-fileexists-forbidden' => 'API error message that can be used for client side localisation of API errors.
+
+Parameters:
+* $1 - filename
+See also:
+* {{msg-mw|Api-error-fileexists-shared-forbidden}}',
+'api-error-fileexists-shared-forbidden' => 'API error message that can be used for client side localisation of API errors.
+
+Parameters:
+* $1 - filename
+See also:
+* {{msg-mw|Api-error-fileexists-forbidden}}',
 'api-error-file-too-large' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-filename-tooshort' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-filetype-banned' => 'API error message that can be used for client side localisation of API errors.',
@@ -9345,7 +9801,8 @@ Parameters:
 'duration-millennia' => '{{Related|Duration}}',
 
 # Image rotation
-'rotate-comment' => 'Edit summary for the act of rotating an image.',
+'rotate-comment' => 'Edit summary for the act of rotating an image. Parameters:
+* $1 - degrees to rotate image clockwise',
 
 # Limit report
 'limitreport-title' => 'Title for the preview limit report table.',
index 6d3676b..d50fd72 100644 (file)
@@ -851,6 +851,8 @@ Vă rugăm să așteptați până să mai încercați.',
 'login-abort-generic' => 'Procesul de autentificare a eșuat și a fost abandonat',
 'loginlanguagelabel' => 'Limba: $1',
 'suspicious-userlogout' => 'Cererea dumneavoastră de a închide sesiunea a fost refuzată întrucât pare că a fost trimisă printr-o eroare a navigatorului sau de un proxy memorat în cache.',
+'createacct-another-realname-tip' => 'Numele real este opțional.
+Dacă decideți furnizarea sa, acesta va fi folosit pentru a atribui utilizatorului munca sa.',
 
 # Email sending
 'php-mail-error-unknown' => 'Eroare necunoscută în funcția PHP mail()',
@@ -4169,11 +4171,18 @@ MediaWiki este distribuit în speranța că va fi folositor, dar FĂRĂ VREO GAR
 'rotate-comment' => 'Imagine rotită în sensul acelor de ceasornic cu $1 {{PLURAL:$1|grad|grade|de grade}}',
 
 # Limit report
+'limitreport-title' => 'Date de optimizare a analizorului:',
 'limitreport-cputime' => 'Timp de utilizare CPU',
 'limitreport-cputime-value' => '$1 {{PLURAL:$1|secundă|secunde|de secunde}}',
 'limitreport-walltime' => 'Timp real de utilizare',
 'limitreport-walltime-value' => '$1 {{PLURAL:$1|secundă|secunde|de secunde}}',
+'limitreport-ppvisitednodes' => 'Număr de noduri de preprocesor vizitate',
+'limitreport-ppgeneratednodes' => 'Număr de noduri de preprocesor generate',
+'limitreport-postexpandincludesize' => 'Mărimea includerii post-expansiune',
 'limitreport-postexpandincludesize-value' => '$1/$2 octeți',
+'limitreport-templateargumentsize' => 'Mărimea argumentului formatului',
 'limitreport-templateargumentsize-value' => '$1/$2 octeți',
+'limitreport-expansiondepth' => 'Cea mai mare profunzime a expansiunii',
+'limitreport-expensivefunctioncount' => 'Număr de funcții de analiză costisitoare',
 
 );
index 4efd7d6..5db8a90 100644 (file)
@@ -597,6 +597,8 @@ Pe piacere vide c'aspitte 'nu picche de timbe apprime de pruvà 'n'otra vote.",
 'login-abort-generic' => "Non g'è riuscite a trasè - Annullate",
 'loginlanguagelabel' => 'Lénga: $1',
 'suspicious-userlogout' => "'A richiesta toje de assè ha state bloccate purcè pare ca ha state mannate da 'nu browser scuasciate o da 'a cache de 'nu proxy.",
+'createacct-another-realname-tip' => "'U nome vere jè facoltative.
+Ce tu scacchie de metterle, quiste avène ausate pe dà 'u giuste merite a 'a fatìe de l'utende.",
 
 # Email sending
 'php-mail-error-unknown' => "Errore scanusciute jndr'à funzione PHP mail()",
index dd996d0..65f08a2 100644 (file)
@@ -989,7 +989,7 @@ $3 зазначів тоту причіну: ''$2''",
 'history-fieldset-title' => 'Перегляднути історію',
 'history-show-deleted' => 'Лем змазаны',
 'histfirst' => 'найстаршы',
-'histlast' => 'поÑ\81лÑ\97днÑ\97',
+'histlast' => 'найновÑ\88Ñ\8b',
 'historysize' => '($1 {{PLURAL:$1|байт|байты|байтів}})',
 'historyempty' => '(порожнє)',
 
index da5ffce..c092275 100644 (file)
@@ -615,8 +615,7 @@ Administrator, ki ga je zaklenil, je podal naslednje pojasnilo: »$3«.',
 # Login and logout pages
 'logouttext' => "'''Odjavili ste se.'''
 
-{{GRAMMAR:tožilnik|{{SITENAME}}}} lahko zdaj uporabljate neprijavljeni ali pa se <span class='plainlinks'>[$1 ponovno prijavite]</span> kot enak ali drug uporabnik.
-Morda bodo nekatere strani še naprej prikazane, kot da ste prijavljeni, dokler ne boste izpraznili predpomnilnika brskalnika.",
+Pomnite, da bodo nekatere strani morda še naprej prikazane, kot da ste prijavljeni, dokler ne boste izpraznili predpomnilnika brskalnika.",
 'welcomeuser' => '$1, dobrodošli!',
 'welcomecreation-msg' => 'Ustvarili ste račun.
 Ne pozabite si prilagoditi vaših [[Special:Preferences|nastavitev {{GRAMMAR:rodilnik|{{SITENAME}}}}]].',
@@ -751,6 +750,8 @@ Prosimo počakajte, preden poskusite znova.',
 'login-abort-generic' => 'Vaša prijava ni bila uspešna – Prekinjeno',
 'loginlanguagelabel' => 'Jezik: $1',
 'suspicious-userlogout' => 'Vaša zahteva za odjavo je bila zavrnjena, saj kaže, da je bila poslana iz pokvarjenega brskalnika ali proxyja s predpomnilnikom.',
+'createacct-another-realname-tip' => 'Pravo ime ni obvezno.
+Če se ga odločite navesti, bo uporabljeno za priznavanje uporabnikovega dela.',
 
 # Email sending
 'php-mail-error-unknown' => 'Neznana napaka v funkciji PHP mail()',
@@ -1475,10 +1476,10 @@ Ko vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo ra
 'userrights-no-interwiki' => 'Nimate dovoljenja za urejanje pravic uporabnikov na drugih wikijih.',
 'userrights-nodatabase' => 'Podatkovna baza $1 ne obstaja ali ni lokalna.',
 'userrights-nologin' => 'Za dodeljevanje uporabniških pravic se morate [[Special:UserLogin|prijaviti]] s skrbniškim računom.',
-'userrights-notallowed' => 'Vaš račun nima dovoljenja za dodajanje ali odstranjevanje uporabniških pravic.',
+'userrights-notallowed' => 'Nimate dovoljenj za dodajanje ali odstranjevanje uporabniških pravic.',
 'userrights-changeable-col' => 'Skupine, ki jih lahko spremenite',
 'userrights-unchangeable-col' => 'Skupine, ki jih ne morete spremeniti',
-'userrights-conflict' => 'Spor uporabniških pravic! Prosimo, da ponovno uveljavite svoje spremembe.',
+'userrights-conflict' => 'Spor sprememb uporabniških pravic! Prosimo, da pregledate in potrdite svoje spremembe.',
 'userrights-removed-self' => 'Uspešno ste odstranili svoje pravice. Tako sedaj ne morete več dostopati do te strani.',
 
 # Groups
@@ -3111,13 +3112,13 @@ Omogoča vnos pojasnila v povzetku urejanja.',
 'pageinfo-length' => 'Dolžina strani (v bajtih)',
 'pageinfo-article-id' => 'ID strani',
 'pageinfo-language' => 'Jezik vsebine strani',
-'pageinfo-robot-policy' => 'Status iskalnega pogona',
-'pageinfo-robot-index' => 'Na voljo za indeksiranje',
-'pageinfo-robot-noindex' => 'Ni na voljo za indeksiranje',
+'pageinfo-robot-policy' => 'Robotsko indeksiranje',
+'pageinfo-robot-index' => 'Dovoljeno',
+'pageinfo-robot-noindex' => 'Nedovoljeno',
 'pageinfo-views' => 'Število ogledov',
 'pageinfo-watchers' => 'Število spremljevalcev strani',
 'pageinfo-few-watchers' => 'Manj kot $1 {{PLURAL:$1|spremljevalec|spremljevalca|spremljevalci|spremljevalcev}}',
-'pageinfo-redirects-name' => 'Preusmeritve na stran',
+'pageinfo-redirects-name' => 'Število preusmeritev na stran',
 'pageinfo-subpages-name' => 'Podstrani strani',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|preusmeritev|preusmeritvi|preusmeritve|preusmeritev}}; $3 {{PLURAL:$3|nepreusmeritev|nepreusmeritvi|nepreusmeritve|nepreusmeritev}})',
 'pageinfo-firstuser' => 'Ustvarjalec strani',
@@ -3727,7 +3728,7 @@ Potrditvena koda poteče $4.',
 'confirmemail_body_set' => 'Nekdo, najverjetneje vi, je z IP-naslova $1
 na strani {{SITENAME}} nastavil e-poštni naslov računa »$2« na ta naslov.
 
-Da potrdite lastništvo tega računa in ponovno aktivirate
+Da potrdite lastništvo tega računa in aktivirate
 e-poštne funkcije na {{GRAMMAR:dajalnik|{{SITENAME}}}}, odprite to povezavo v vašem brskalniku:
 
 $3
@@ -4098,4 +4099,12 @@ V nasprotnem primeru lahko uporabite preprost obrazec spodaj. Vašo pripombo bom
 # Image rotation
 'rotate-comment' => 'Slika zavrti s  $1  {{PLURAL:$1| degree|degrees}} v smeri urinega kazalca',
 
+# Limit report
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|sekunda|sekundi|sekunde|sekund}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekunda|sekundi|sekunde|sekund}}',
+'limitreport-postexpandincludesize-value' => '$1/$2 bajtov',
+'limitreport-templateargumentsize-value' => '$1/$2 bajtov',
+'limitreport-expansiondepth' => 'Največja globina razširitve',
+'limitreport-expensivefunctioncount' => 'Število dragih funkcij razčlenjevalnika',
+
 );
index 6964046..7700634 100644 (file)
@@ -829,7 +829,6 @@ $2',
 # Login and logout pages
 'logouttext' => "'''Одјављени сте.'''
 
-Можете да наставите с коришћењем овог викија као гост, или се <span class='plainlinks'>[$1 поново пријавите]</span> као други корисник.
 Имајте на уму да неке странице могу наставити да се приказују као да сте још пријављени, све док не очистите привремену меморију свог прегледача.",
 'welcomeuser' => 'Добро дошли, $1!',
 'welcomecreation-msg' => 'Ваш налог је отворен.
@@ -1607,8 +1606,8 @@ $1",
 Ова радња се не може вратити.',
 'prefs-emailconfirm-label' => 'Потврда е-адресе:',
 'youremail' => 'Е-адреса:',
-'username' => 'Корисничко име:',
-'uid' => 'Кориснички ID:',
+'username' => '{{GENDER:$1|Корисничко име}}:',
+'uid' => '{{GENDER:$1|Кориснички}} ID:',
 'prefs-memberingroups' => 'Члан {{PLURAL:$1|групе|групâ}}:',
 'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'Време уписа:',
@@ -4297,6 +4296,7 @@ $5
 'tags' => 'Важеће ознаке измена',
 'tag-filter' => 'Филтер за [[Special:Tags|ознаке]]:',
 'tag-filter-submit' => 'Филтрирај',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Ознака|Ознаке}}]]: $2)',
 'tags-title' => 'Ознаке',
 'tags-intro' => 'На овој страници је наведен списак ознака с којима програм може да означи измене и његово значење.',
 'tags-tag' => 'Назив ознаке',
index 1149455..4a62b77 100644 (file)
@@ -732,7 +732,6 @@ Administrator koji ju je zaključao ponudio je sledeće objašnjenje: „$3“.'
 # Login and logout pages
 'logouttext' => "'''Odjavljeni ste.'''
 
-Možete da nastavite s korišćenjem ovog vikija kao gost, ili se <span class='plainlinks'>[$1 ponovo prijavite]</span> kao drugi korisnik.
 Imajte 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!',
 'yourname' => 'Korisničko ime:',
@@ -1497,7 +1496,7 @@ Upamtite da njegovi popisi ovog vikija mogu biti zastareli.',
 Ova radnja se ne može vratiti.',
 'prefs-emailconfirm-label' => 'Potvrda e-adrese:',
 'youremail' => 'E-adresa:',
-'username' => 'Korisničko ime:',
+'username' => '{{GENDER:$1|Korisničko ime}}:',
 'uid' => 'Korisnički IB:',
 'prefs-memberingroups' => 'Član {{PLURAL:$1|grupe|grupâ}}:',
 'prefs-memberingroups-type' => '$1',
index d1f10d4..a34df87 100644 (file)
@@ -873,6 +873,8 @@ Vänta innan du försöker igen.',
 'login-abort-generic' => 'Din inloggning misslyckades - Avbröts',
 'loginlanguagelabel' => 'Språk: $1',
 'suspicious-userlogout' => 'Din begäran om att logga ut nekades eftersom det ser ut som det skickades av en trasig webbläsare eller cachande proxy.',
+'createacct-another-realname-tip' => 'Riktiga namnet är valfritt.
+Om du väljer att ange det, kommer det användas för att tillskriva användaren för sitt arbete.',
 
 # Email sending
 'php-mail-error-unknown' => "Okänt fel i PHP's mail()-funktion",
@@ -4208,5 +4210,6 @@ Annars kan du använda det enkla formuläret nedan. Din kommentar kommer att lä
 'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekund|sekunder}}',
 'limitreport-postexpandincludesize-value' => '$1/$2 byte',
 'limitreport-templateargumentsize-value' => '$1/$2 byte',
+'limitreport-expansiondepth' => 'Högsta expansionsdjup',
 
 );
index 05a8443..7025f49 100644 (file)
@@ -2826,7 +2826,7 @@ Lütfen başka bir isim deneyiniz.',
 'movepage-max-pages' => 'En fazla $1 {{PLURAL:$1|sayfa|sayfa}} taşındı ve daha fazlası otomatik olarak taşınamaz.',
 'movelogpage' => 'Taşıma kaydı',
 'movelogpagetext' => 'Aşağıda bulunan liste adı değiştirilmiş sayfaları gösterir.',
-'movesubpage' => '{{PLURAL:$1|Subpage|Alt sayfalar}}',
+'movesubpage' => '{{PLURAL:$1|Alt sayfa|Alt sayfalar}}',
 'movesubpagetext' => 'Bu sayfanın aşağıda gösterilen $1 {{PLURAL:$1|altsayfası|altsayfası}} vardır.',
 'movenosubpage' => 'Bu sayfanın altsayfası yoktur.',
 'movereason' => 'Neden:',
index 89a9f9b..ccdba36 100644 (file)
@@ -921,6 +921,8 @@ $1',
 'login-abort-generic' => 'Не вдалося ввійти до системи',
 'loginlanguagelabel' => 'Мова: $1',
 'suspicious-userlogout' => 'Ваш запит на завершення сеанса відхилений, оскільки він схожий на запит, відправлений зіпсованим веб-оглядачем або кешуючим проксі-сервером.',
+'createacct-another-realname-tip' => "Справжнє ім'я є необов'язковим.
+Якщо ви вирішите надати його, то воно буде використовуватися для присвоєння користувачу авторства до його роботи.",
 
 # Email sending
 'php-mail-error-unknown' => 'Невідома помилка в PHP-функції mail()',
@@ -2700,8 +2702,8 @@ $UNWATCHURL
 'viewdeletedpage' => 'Переглянути видалені сторінки',
 'undeletepagetext' => '{{PLURAL:$1|Сторінка була вилучена, однак вона все ще знаходиться в архіві, тому може бути відновлена|Такі сторінки були вилучені, але вони все ще знаходяться в архіві і тому можуть бути відновлені}}. Архів періодично очищається.',
 'undelete-fieldset-title' => 'Відновити версії',
-'undeleteextrahelp' => "Для повного відновлення історії сторінки залиште всі поля пустими й натисніть '''''«{{int:undeletebtn}}»'''''. 
-Для виконання часткового відновлення помітьте відповідні змінені поля, а потім натисніть'''''«{{int:undeletebtn}}»'''''.",
+'undeleteextrahelp' => "Для повного відновлення історії сторінки залиште всі поля порожніми й натисніть '''''«{{int:undeletebtn}}»'''''. 
+Для виконання часткового відновлення помітьте відповідні змінені поля, а потім натисніть '''''«{{int:undeletebtn}}»'''''.",
 'undeleterevisions' => 'В архіві $1 {{PLURAL:$1|версія|версії|версій}}',
 'undeletehistory' => 'Якщо ви відновите сторінку, всі версії будуть також відновлені, разом з журналом редагувань.
 Якщо з моменту вилучення була створена нова сторінка з такою самою назвою, відновлені версії будуть зазначені в журналі редагувань перед новими записами, але поточна версія існуючої статті не буде замінена автоматично.',
@@ -4447,4 +4449,19 @@ MediaWiki поширюється в надії, що вона буде кори
 # Image rotation
 'rotate-comment' => 'Зображення повернуте на $1 {{PLURAL:$1|градус|градусів}} за годинниковою стрілкою',
 
+# Limit report
+'limitreport-title' => 'Аналізатор профілювання даних:',
+'limitreport-cputime' => 'Час використання ЦП',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунда|секунди|секунд}}',
+'limitreport-walltime' => 'Використання реального часу',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунда|секунди|секунд}}',
+'limitreport-ppvisitednodes' => 'Число вузлів відвіданих препроцесором',
+'limitreport-ppgeneratednodes' => 'Число вузлів згенерованих препроцесором',
+'limitreport-postexpandincludesize' => 'Включений розмір після розширення',
+'limitreport-postexpandincludesize-value' => '$1/$2 байтів',
+'limitreport-templateargumentsize' => 'Розмір аргументів шаблону',
+'limitreport-templateargumentsize-value' => '$1/$2  байтів',
+'limitreport-expansiondepth' => 'Найвища глибина розширення',
+'limitreport-expensivefunctioncount' => 'Число дорогої функції аналізатора',
+
 );
index 2f1e815..5ed620e 100644 (file)
@@ -745,7 +745,7 @@ Bảo quản viên khóa nó đưa lý do là: “$3”.',
 # Login and logout pages
 'logouttext' => "'''Bạn đã đăng xuất.'''
 
-Bạn có thể tiếp tục dùng {{SITENAME}} một cách vô danh, hoặc bạn có thể <span class='plainlinks'>[$1 đăng nhập lại]</span> dưới cùng tên người dùng này hoặc một tên người dùng khác. Xin lưu ý rằng một vài trang có thể vẫn hiển thị như khi bạn còn đăng nhập, cho đến khi bạn xóa vùng nhớ đệm (''cache'') của trình duyệt.",
+Xin lưu ý rằng một vài trang có thể vẫn hiển thị như khi bạn còn đăng nhập, cho đến khi bạn xóa vùng nhớ đệm (''cache'') của trình duyệt.",
 'welcomeuser' => 'Hoan nghênh, $1!',
 'welcomecreation-msg' => 'Tài khoản của bạn đã được mở.
 Hãy nhớ thay đổi [[Special:Preferences|tùy chọn cá nhân {{SITENAME}}]] của bạn.',
@@ -792,7 +792,7 @@ Hãy nhớ thay đổi [[Special:Preferences|tùy chọn cá nhân {{SITENAME}}]
 'createacct-emailoptional' => 'Địa chỉ thư điện tử (tùy chọn)',
 'createacct-email-ph' => 'Nhập địa chỉ thư điện tử của bạn',
 'createacct-another-email-ph' => 'Nhập địa chỉ thư điện tử',
-'createaccountmail' => 'Sử dụng mật khẩu ngẫu nhiên tạm và gửi nó cho địa chỉ thư điện tử được chỉ định ở dưới',
+'createaccountmail' => 'Sử dụng mật khẩu ngẫu nhiên tạm và gửi nó cho địa chỉ thư điện tử được chỉ định',
 'createacct-realname' => 'Tên thật (tùy chọn)',
 'createaccountreason' => 'Lý do:',
 'createacct-reason' => 'Lý do',
@@ -862,6 +862,9 @@ Xin hãy đợi chốc lát rồi thử lại.',
 'login-abort-generic' => 'Thất bại khi đăng nhập',
 'loginlanguagelabel' => 'Ngôn ngữ: $1',
 'suspicious-userlogout' => 'Đã bỏ qua yêu cầu đăng xuất bạn, hình như được gửi từ trình duyệt hoặc máy proxy nhớ đệm hư.',
+'createacct-another-realname-tip' => 'Tên thật là không bắt buộc. 
+
+Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao của bạn.',
 
 # Email sending
 'php-mail-error-unknown' => 'Lỗi không rõ trong hàm PHP mail()',
@@ -1579,10 +1582,10 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'userrights-no-interwiki' => 'Bạn không có quyền thay đổi quyền hạn của thành viên tại các wiki khác.',
 'userrights-nodatabase' => 'Cơ sở dữ liệu $1 không tồn tại hoặc nằm ở bên ngoài.',
 'userrights-nologin' => 'Bạn phải [[Special:UserLogin|đăng nhập]] vào một tài khoản có quyền quản lý để gán quyền cho thành viên.',
-'userrights-notallowed' => 'Tài khoản của bạn không có quyền gán hoặc bãi miễn quyền cho thành viên.',
+'userrights-notallowed' => 'Bạn không có quyền gán hoặc bãi miễn quyền cho thành viên.',
 'userrights-changeable-col' => 'Những nhóm bạn có thể thay đổi',
 'userrights-unchangeable-col' => 'Những nhóm bạn không thể thay đổi',
-'userrights-conflict' => 'Mâu thuẫn thay đổi sửa nhóm thành viên! Xin vui lòng áp dụng các thay đổi của bạn một lần nữa.',
+'userrights-conflict' => 'Mâu thuẫn thay đổi sửa nhóm thành viên! Xin vui lòng xem lại và xác nhận các thay đổi của bạn.',
 'userrights-removed-self' => 'Bạn đã loại bỏ quyền của chính mình nên không còn truy cập được trang này.',
 
 # Groups
@@ -3207,9 +3210,9 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
 'pageinfo-length' => 'Chiều dài của trang (byte)',
 'pageinfo-article-id' => 'Mã số trang',
 'pageinfo-language' => 'Ngôn ngữ nội dung trang',
-'pageinfo-robot-policy' => 'Trạng thái công cụ tìm kiếm',
-'pageinfo-robot-index' => 'Có thể ghi chỉ mục',
-'pageinfo-robot-noindex' => 'Không thể ghi chỉ mục',
+'pageinfo-robot-policy' => 'Ghi chỉ mục bởi robot',
+'pageinfo-robot-index' => 'Cho phép',
+'pageinfo-robot-noindex' => 'Không cho phép',
 'pageinfo-views' => 'Số lần xem',
 'pageinfo-watchers' => 'Số người theo dõi trang',
 'pageinfo-few-watchers' => 'Không tới $1 người theo dõi',
@@ -3873,13 +3876,13 @@ Mã xác nhận này sẽ hết hạn vào $4.',
 'confirmemail_body_set' => 'Ai đó, có thể là bạn, từ địa chỉ IP $1, đã đặt địa chỉ này là địa
 chỉ thư điện tử của tài khoản "$2" tại {{SITENAME}}.
 
-Để xác nhận rằng tài khoản này thực sự là của bạn và để tái kích hoạt tính năng
+Để xác nhận rằng tài khoản này thực sự là của bạn và để kích hoạt các tính năng
 thư điện tử tại {{SITENAME}}, xin mở liên kết này trong trình duyệt:
 
 $3
 
-Nếu tài khoản *không* phải là của bạn, hãy nhấn vào liên kết này để hủy thủ
-tục xác nhận địa chỉ thư điện tử:
+Nếu tài khoản *không* phải là của bạn, hãy nhấn vào liên kết này để hủy thủ tục
+xác nhận địa chỉ thư điện tử:
 
 $5
 
@@ -4300,4 +4303,19 @@ Nếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới.
 # Image rotation
 'rotate-comment' => 'Đã quay hình $1 độ theo chiều kim đồng hồ',
 
+# Limit report
+'limitreport-title' => 'Dữ liệu hồ sơ bộ phân tích:',
+'limitreport-cputime' => 'Sử dụng thời gian CPU',
+'limitreport-cputime-value' => '$1 giây',
+'limitreport-walltime' => 'Sử dụng tức thời',
+'limitreport-walltime-value' => '$1 giây',
+'limitreport-ppvisitednodes' => 'Số nút được truy cập bởi bộ tiền xử lý',
+'limitreport-ppgeneratednodes' => 'Số nút do bộ tiền xử lý tạo',
+'limitreport-postexpandincludesize' => 'Kích thước bao gồm sau khi bung',
+'limitreport-postexpandincludesize-value' => '$1/$2 byte',
+'limitreport-templateargumentsize' => 'Kích thước đối số bản mẫu',
+'limitreport-templateargumentsize-value' => '$1/$2 byte',
+'limitreport-expansiondepth' => 'Độ sâu bung cao nhất',
+'limitreport-expensivefunctioncount' => 'Số lời gọi hàm cú pháp tốn cần mức độ xử lý cao',
+
 );
index e9a7548..b57204d 100644 (file)
@@ -621,7 +621,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''איר האָט זיך ארויסלאָגירט.'''
 
\90×\99ר ×§×¢× ×\98 ×\9e×\9eש×\99×\9a ×\96×\99×\99×\9f × ×\99צ×\9f {{SITENAME}} ×\90Ö·× ×\90× ×\99×\9d, ×\90×\93ער ×\90×\99ר ×§×¢× ×\98  <span class='plainlinks'>[$1 ×¦×\95ר×\99ק ×\90ר×\99×\99× ×\9c×\90×\92×\99ר×\9f]</span> ×\9e×\99×\98 ×\93×¢×\9d ×\96×¢×\9c×\91×\9f ×\90×\93ער ×\90×\9f ×\90× ×\93ער ×\91×\90Ö·× ×\99צער × ×\90Ö¸×\9e×¢×\9f. ×\91×\90×\9eערק×\98 ×\90×\96 ×\92×¢×\95×\95×\99סע ×\91×\9c×¢×\98ער ×§×¢× ×¢×\9f ×\96×\99×\9a ×\95×\95×\99×\99×\98ער ×\90ר×\95×\99סש×\98×¢×\9c×\9f ×\90×\96×\95×\99 ×\95×\95×\99 ×\95×\95×¢×\9f ×\90×\99ר ×\96×¢× ×\98 ×\90ר×\99×\99× ×\9c×\90×\92×\99ר×\98, ×\91×\99×\96 ×\90×\99ר ×\95×\95×¢×\98 ×\90×\95×\99ס×\9c×\99×\99×\93×\99×\92×\9f ×\93×¢×\9d ×\91×\9c×¢×\98ערער ×\96×\90פ×\90ס.",
+באמערקט אז געוויסע בלעטער קענען זיך ווייטער ארויסשטעלן אזוי ווי ווען איר זענט אריינלאגירט, ביז איר וועט אויסליידיגן דעם בלעטערער זאפאס.",
 'welcomeuser' => 'ברוך הבא, $1!',
 'welcomecreation-msg' => "מ'האט געשאפן אייער קאנטע.
 פארגעסט נישט צו ענדערן אייערע [[Special:Preferences|{{SITENAME}} פרעפערענצן]].",
@@ -668,7 +668,7 @@ $2',
 'createacct-emailoptional' => 'בליצפאסט אדרעס (אפציאנאל)',
 'createacct-email-ph' => 'קלאַפט ארײַן אײַער בליצפּאָסט אַדרעס',
 'createacct-another-email-ph' => 'אַרײַנגעבן בליצפּאָסט אַדרעס',
-'createaccountmail' => '× ×\99צ×\9f ×\90 ×¤×¨×\90×\95×\95×\99×\96×\90ר×\99ש ×¤×\90ס×\95×\95×\90ר×\98 ×\90×\95×\9f ×©×\99ק×\9f ×¦×\95×\9d ×¢-פ×\90ס×\98 ×\90×\93רעס ×\92עצ×\99×\99×\9b× ×\98 ×\90×\95× ×\98×\9f',
+'createaccountmail' => '× ×\99צ×\9f ×\90 ×¤×¨×\90×\95×\95×\99×\96×\90ר×\99ש ×¤×\90ס×\95×\95×\90ר×\98 ×\90×\95×\9f ×©×\99ק×\9f ×¦×\95×\9d ×\92עצ×\99×\99×\9b× ×\98×\9f ×¢-פ×\90ס×\98 ×\90×\93רעס',
 'createacct-realname' => 'עכטער נאמען (אפציאנאל)',
 'createaccountreason' => 'אורזאַך:',
 'createacct-reason' => 'אורזאך',
@@ -754,6 +754,8 @@ $2',
 'login-abort-generic' => 'אײַער ארײַנלאגירונג איז נישט געווען דערפֿאלגרייך—אָפגעשטעלט',
 'loginlanguagelabel' => 'שפראך: $1',
 'suspicious-userlogout' => ' אײַער בקשה אַרויסלאָגירן זיך איז אפגעלייגט געווארן ווייַל אייגנטלעך איז זי געשיקט דורך אַ צעבראכענעם בלעטערער אָדער א פראקסי מיט א זאפאס.',
+'createacct-another-realname-tip' => 'עכטער נאמען איז אפציאנאל.
+אויב איר וויילט אויס צוצושטעלן אים, וועט דאס גענוצט ווערן צו געבן אטריבוציע פאר זייער ארבעט.',
 
 # Email sending
 'php-mail-error-unknown' => 'אומבאַקאַנט טעות אין()mail פֿונקציע פֿון PHP.',
@@ -777,10 +779,12 @@ $2',
 'resetpass-wrong-oldpass' => 'אומגילטיג צײַטווײַליק אדער לויפֿיק פאַסווארט.
 איר האט מעגלעך שוין געטוישט אייער פאַסווארט מיט הצלחה אדער געבעטן א נײַ  צײַטווײַליק פאַסווארט.',
 'resetpass-temp-password' => 'צײַטווייליק פאַסווארט:',
+'resetpass-abort-generic' => 'פאסווארט ענדערונג איז מבוטל געווארן דורך א פארברייטערונג.',
 
 # Special:PasswordReset
 'passwordreset' => 'צוריקשטעלן פאַסווארט',
 'passwordreset-text-one' => 'דערגאַנצט די פאָרעם צוריקצושטעלן אײַער פאַסווארט.',
+'passwordreset-text-many' => '{{PLURAL:$1|דערגאַנצט איינע פֿון די פֿעלדער צוריקצושטעלן אײַער פאַסווארט.}}',
 'passwordreset-legend' => 'צוריקשטעלן פאַסווארט',
 'passwordreset-disabled' => 'מען האט אומאַקטיוויטר צוריקשטעלן פאַסווערטער אויף דער וויקי.',
 'passwordreset-emaildisabled' => 'ע-פאסט דינסטן זענען געווארן אומאקטיווירט אויף דער דאזיקער וויקי.',
@@ -826,6 +830,15 @@ $2
 'changeemail-submit' => 'ענדערן ע־פאסט אדרעס',
 'changeemail-cancel' => 'אַנולירן',
 
+# Special:ResetTokens
+'resettokens' => 'צוריקזעצן טאקנס',
+'resettokens-no-tokens' => 'נישט פאראן קיין טאקנס צוריקצוזעצן.',
+'resettokens-legend' => 'צוריקזעצן טאקנס',
+'resettokens-tokens' => 'טאקנס:',
+'resettokens-token-label' => '$1 (אקטועלער ווערט: $2)',
+'resettokens-done' => 'טאקנס צוריקגעזעצט.',
+'resettokens-resetbutton' => 'צוריקזעצן אויסגעקליבענע טאקנס',
+
 # Edit page toolbar
 'bold_sample' => 'דיקער טעקסט',
 'bold_tip' => 'דיקער טעקסט',
@@ -1423,6 +1436,8 @@ $1",
 'prefs-dateformat' => 'דאַטע פֿארמאַט',
 'prefs-timeoffset' => 'צײַט אונטערשייד',
 'prefs-advancedediting' => 'אַלגעמיינע ברירות',
+'prefs-editor' => 'רעדאַקטאָר',
+'prefs-preview' => 'פֿאראויסשטעלונג',
 'prefs-advancedrc' => 'פֿארגעשריטענע אפציעס',
 'prefs-advancedrendering' => 'פֿארגעשריטענע אפציעס',
 'prefs-advancedsearchoptions' => 'פֿארגעשריטענע אפציעס',
@@ -1430,6 +1445,7 @@ $1",
 'prefs-displayrc' => 'ווײַזן אפציעס',
 'prefs-displaysearchoptions' => 'ווײַזן אפציעס',
 'prefs-displaywatchlist' => 'ווײַזן אפציעס',
+'prefs-tokenwatchlist' => 'טאקן',
 'prefs-diffs' => 'צווישנשיידן',
 
 # User preference: email validation using jQuery
@@ -1454,7 +1470,7 @@ $1",
 'userrights-no-interwiki' => 'איר האט נישט קיין ערלויבניש צו רעדאַקטירן באַניצער רעכטן אויף אַנדערע וויקיס.',
 'userrights-nodatabase' => 'דאַטנבאַזע $1 אדער עקזיסטירט נישט אדער איז נישט ארטיק.',
 'userrights-nologin' => 'איר דאַרפֿט [[Special:UserLogin| אַרײַנלאגירן]] מיט א סיסאפ קאנטע צו באַשטימען באַניצער רעכטן.',
-'userrights-notallowed' => '×\90ײַער ×§×\90× ×\98×¢ האט נישט קיין ערלויבניש צוצולייגן אדער אוועקנעמען באַניצער רעכטן.',
+'userrights-notallowed' => '×\90×\99ר האט נישט קיין ערלויבניש צוצולייגן אדער אוועקנעמען באַניצער רעכטן.',
 'userrights-changeable-col' => 'גרופעס איר קענט ענדערן',
 'userrights-unchangeable-col' => 'גרופעס איר קענט נישט ענדערן',
 
@@ -1527,6 +1543,11 @@ $1",
 'right-editusercss' => 'רעדאַקטירן אַנדערע באַניצערס CSS טעקעס',
 'right-edituserjs' => 'רעדאַקטירן אַנדערע באַניצערס JS טעקעס',
 'right-editmyusercss' => 'רעדאקטירע אײַערע אייגענע באניצער CSS טעקעס',
+'right-editmyuserjs' => 'רעדאקטירן אײַערע אייגענע באניצער JavaScript טעקעס',
+'right-viewmywatchlist' => 'באקוקן אייער אייגענע אויפפאסונג ליסטע',
+'right-viewmyprivateinfo' => 'באקוקן אײַער אייגענע פריוואטע דאטן (צ"ב ע־פאסט אדרעס, אמתער נאמען)',
+'right-editmyprivateinfo' => 'רעדאקטירן אײַער אייגענע פריוואטע דאטן (צ"ב ע־פאסט אדרעס, אמתער נאמען)',
+'right-editmyoptions' => 'רעדאקטירן אײַערע אייגענע פרעפערענצן',
 'right-rollback' => 'גיך צוריקדרייען די רעדאַקטירונגען פונעם לעצטן באַניצער וואס האט רעדאַקטירט א געוויסן בלאַט',
 'right-markbotedits' => 'מאַרקירן צוריקגעזעצטע רעדאַגירונגען ווי באט רעדאַגירונגען',
 'right-noratelimit' => 'נישט ווערן באַגרענעצט דורך לימיטאַציע',
@@ -1588,6 +1609,10 @@ $1",
 'action-userrights-interwiki' => 'רעדאַקטירן רעכטן פון באַניצער אויף אַנדערע וויקיס',
 'action-siteadmin' => 'שליסן אדער אויפשליסן די דאטנבאזע',
 'action-sendemail' => 'שיקן ע־פאסט',
+'action-editmywatchlist' => 'רעדאקטירן אײַער אויפֿפאסונג ליסטע',
+'action-viewmywatchlist' => 'באקוקן אײַער אויפֿפאסונג ליסטע',
+'action-viewmyprivateinfo' => 'באקוקן אײַער פריוואטע אינפארמאציע',
+'action-editmyprivateinfo' => 'רעדאקטירן אײַער פריוואטע אינפארמאציע',
 
 # Recent changes
 'nchanges' => '{{PLURAL:$1|ענדערונג|$1 ענדערונגען}}',
@@ -1818,6 +1843,7 @@ $1",
 נאר טעקע צוטריט איז ערלויבט.',
 'img-auth-streaming' => 'שטראָמענדיק "$1".',
 'img-auth-noread' => 'באניצער האט נישט קיין דערלויבניש צו ליינען "$1".',
+'img-auth-bad-query-string' => 'דער URL האט אן אומגילטיק פראגע שנורל.',
 
 # HTTP errors
 'http-invalid-url' => 'אומגילטיג URL: $1',
@@ -1946,6 +1972,13 @@ $1",
 'randompage' => 'צופֿעליגער אַרטיקל',
 'randompage-nopages' => 'נישטא קיין בלעטער אין {{PLURAL:$2|דעם פאלגנדן נאמענטייל |די פאלגנדע נאמענטיילן}} "$1".',
 
+# Special:RandomInCategory
+'randomincategory' => 'צופעליקער בלאט אין קאטעגאריע',
+'randomincategory-invalidcategory' => '"$1" איז נישט קיין גילטיקער קאטעגאריע נאמען.',
+'randomincategory-nopages' => 'נישט פאראן קיין בלעטער אין [[:Category:$1]].',
+'randomincategory-selectcategory' => 'באקומען צופעליקן בלאט פון קאטעגאריע: $1, $2.',
+'randomincategory-selectcategory-submit' => 'גיין',
+
 # Random redirect
 'randomredirect' => 'צופֿעליק ווײַטערפֿירן',
 'randomredirect-nopages' => 'נישטא קיין ווײַטערפֿירונגען אין דעם נאמענטייל $1.',
@@ -2795,6 +2828,8 @@ $1',
 'thumbnail-more' => 'פארגרעסער',
 'filemissing' => 'טעקע פֿעלט',
 'thumbnail_error' => 'גרײַז בײַם באשאפֿן דאס קליינבילד: $1',
+'thumbnail_error_remote' => 'פֿעלער־מעלדונג פֿון $1:
+$2',
 'djvu_page_error' => 'DjVu בלאט ארויס פֿון גרייך',
 'djvu_no_xml' => "מ'קען נישט באקומען דעם XML פֿאַר דער DjVu טעקע",
 'thumbnail-temp-create' => "מ'קען נישט שאפן א פראוויזארישע פארקלענערטע טעקע",
@@ -2985,13 +3020,13 @@ $1',
 'pageinfo-length' => 'בלאט לענג (אין בייטן)',
 'pageinfo-article-id' => 'בלאט נומער',
 'pageinfo-language' => 'בלאט אינהאלט שפראך',
-'pageinfo-robot-policy' => '×\96×\95×\9b×\9e×\90ש×\99×\9f ×¡×\98×\90×\98×\95ס',
-'pageinfo-robot-index' => '×\90×\99× ×\93עקס×\99ר×\91×\90ר',
-'pageinfo-robot-noindex' => '× ×\99ש×\98 ×\90×\99× ×\93עקס×\99ר×\91×\90ר',
+'pageinfo-robot-policy' => '×\90×\99× ×\93עקס×\99ר×\9f ×\93×\95ר×\9a ×¨×\90×\91×\90×\98×\9f',
+'pageinfo-robot-index' => '×\93ער×\9c×\95×\99×\91×\98',
+'pageinfo-robot-noindex' => '× ×\99ש×\98 ×\93ער×\9c×\95×\99×\91×\98',
 'pageinfo-views' => 'צאַל קוקן',
 'pageinfo-watchers' => '!צאָל בלאט אויפֿפאַסער',
 'pageinfo-few-watchers' => 'ווינציקער ווי $1 {{PLURAL:$1|אויפֿפאסער}}',
-'pageinfo-redirects-name' => 'ווײַטערפירונגען צו דעם בלאט',
+'pageinfo-redirects-name' => 'צ×\90Ö¸×\9c ×\95×\95ײַ×\98ערפ×\99ר×\95× ×\92×¢×\9f ×¦×\95 ×\93×¢×\9d ×\91×\9c×\90×\98',
 'pageinfo-subpages-name' => 'אונטערבלעטער פון דעם בלאט',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|ווײַטערפירונג|ווײַטערפירונגען}}; $3 {{PLURAL:$3|סתם בלאט|סתם בלעטער}})',
 'pageinfo-firstuser' => 'בלאט שאפער',
@@ -3101,11 +3136,25 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 מינוט|$1 מינוט}}',
 'hours' => '{{PLURAL:$1|$1 שעה|$1 שעה}}',
 'days' => '{{PLURAL:$1|$1 טאג|$1 טעג}}',
+'weeks' => '{{PLURAL:$1|$1 וואך|$1 וואכן}}',
 'months' => '{{PLURAL:$1|איין מאנאַט|$1 מאנאַטן}}',
 'years' => '{{PLURAL:$1|איין יאָר|$1 יאָר}}',
 'ago' => 'פֿאַר $1',
 'just-now' => 'גראדע יעצט',
 
+# Human-readable timestamps
+'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
 'bad_image_list' => 'דער פֿאָרמאַט איז װי פֿאָלגנדיק:
 
@@ -3285,10 +3334,13 @@ $1',
 'exif-licenseurl' => 'URL פֿאר קאפירעכט ליצענץ',
 'exif-morepermissionsurl' => 'אלטערנאטיווע ליצענצירן אינפארמאציע',
 'exif-pngfilecomment' => 'PNG טעקע הערה',
+'exif-disclaimer' => 'נאכגעבעניש',
 'exif-contentwarning' => 'אינהאלט ווארענונג',
 'exif-giffilecomment' => 'GIF טעקע הערה',
 'exif-intellectualgenre' => 'ארט  איינהייט',
 'exif-subjectnewscode' => 'טעמע קאד',
+'exif-organisationinimage' => 'אויסגעשטעלטע ארגאניזאציע',
+'exif-personinimage' => 'אויסגעשטעלטער מענטש',
 
 # Exif attributes
 'exif-compression-1' => 'אומ-צאמגעקוועטשט',
@@ -3340,6 +3392,11 @@ $1',
 'exif-lightsource-10' => 'פאַרוואָלקנטער וועטער',
 'exif-lightsource-11' => 'שאָטן',
 
+# Flash modes
+'exif-flash-mode-3' => 'אויטא מאדע',
+'exif-flash-function-1' => 'קיין בליץ־פונקציע',
+'exif-flash-redeye-1' => 'רויט־אויג רעדוקציע',
+
 'exif-focalplaneresolutionunit-2' => 'אינטשעס',
 
 'exif-sensingmethod-1' => 'אומדעפינירט',
@@ -3509,7 +3566,7 @@ $5
 'confirmemail_body_set' => 'עמעצער, ווארשיינליך איר, פֿון IP אַדרעס $1,
 האט געענדערט דעם ע־פאסט אַדרעס פֿון דער קאנטע "$2" צו דעם אדרעס אויף {{SITENAME}}.
 
-צ×\95 ×\91×\90ַש×\98×¢×\98×\99ק×\9f ×\90Ö·×\96 ×\93×\99 ×§×\90× ×\98×¢ ×\92×¢×\94ער×\98 ×\98×\90קע ×¦×\95 ×\90×\99×\99×\9a ×\90×\95×\9f ×\95×\95×\99×\93ער אַקטיווירן ע־פאסט דינסטן אויף {{SITENAME}}, ביטע טוט עפֿענען דעם לינק אין אייער בלעטערער:
+צ×\95 ×\91×\90ַש×\98×¢×\98×\99ק×\9f ×\90Ö·×\96 ×\93×\99 ×§×\90× ×\98×¢ ×\92×¢×\94ער×\98 ×\98×\90קע ×¦×\95 ×\90×\99×\99×\9a ×\90×\95×\9f ×¦×\95 אַקטיווירן ע־פאסט דינסטן אויף {{SITENAME}}, ביטע טוט עפֿענען דעם לינק אין אייער בלעטערער:
 
 $3
 
@@ -3664,6 +3721,7 @@ $5
 'version-version' => '(ווערסיע $1)',
 'version-license' => 'ליצענץ',
 'version-poweredby-others' => 'אַנדערע',
+'version-poweredby-translators' => 'translatewiki.net איבערזעצער',
 'version-credits-summary' => 'מיר ווילן אנערקענען די פֿאלגנדע מענטשן פֿאר זייער בײַשטײַערוג צו [[Special:Version|מעדיעוויקי]].',
 'version-software' => 'אינסטאַלירט ווייכוואַרג',
 'version-software-product' => 'פראדוקט',
@@ -3671,6 +3729,15 @@ $5
 'version-entrypoints-header-entrypoint' => 'אריינגאנג פונקט',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect-submit' => 'גייט',
+'redirect-lookup' => 'זוכן:',
+'redirect-value' => 'ווערט:',
+'redirect-user' => 'באַניצער־נומער:',
+'redirect-revision' => 'בלאט ווערסיע',
+'redirect-file' => 'טעקע נאמען',
+'redirect-not-exists' => 'ווערט נישט געטראפן',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'זוכן דופליקאַטע טעקעס',
 'fileduplicatesearch-summary' => 'זוכן דופליקאטע טעקעס באזירט אויף האש־ווערטן.',
@@ -3877,4 +3944,8 @@ $5
 # Image rotation
 'rotate-comment' => 'בילד געדרייט דורך $1 {{PLURAL:$1|גראד}} זייגערווייז',
 
+# Limit report
+'limitreport-postexpandincludesize-value' => '$1/$2 בייטן',
+'limitreport-templateargumentsize-value' => '$1/$2 בייטן',
+
 );
index 594e306..542f696 100644 (file)
@@ -895,6 +895,8 @@ $2',
 'login-abort-generic' => '登录失败 - 已终止',
 'loginlanguagelabel' => '语言:$1',
 'suspicious-userlogout' => '注销请求被拒绝,因为它似乎是由有设计缺陷的浏览器或缓存代理发出的。',
+'createacct-another-realname-tip' => '真实姓名是选填项目。
+如果你选择提供它,它将会用于贡献署名。',
 
 # Email sending
 'php-mail-error-unknown' => '在 PHP 的 mail() 函数中的未知错误',
@@ -4119,4 +4121,16 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 # Image rotation
 'rotate-comment' => '图像已顺时针方向旋转了 $1 {{PLURAL:$1|度|度}}',
 
+# Limit report
+'limitreport-title' => '分析器分析数据:',
+'limitreport-cputime' => 'CPU使用时间',
+'limitreport-cputime-value' => '$1秒',
+'limitreport-walltime-value' => '$1秒',
+'limitreport-ppvisitednodes' => '预处理器访问节点计数',
+'limitreport-ppgeneratednodes' => '预处理器生成节点计数',
+'limitreport-postexpandincludesize-value' => '$1/$2字节',
+'limitreport-templateargumentsize' => '模板参数大小',
+'limitreport-templateargumentsize-value' => '$1/$2 字节',
+'limitreport-expansiondepth' => '最高扩展深度',
+
 );
index ee6ddbb..b7f306b 100644 (file)
@@ -61,7 +61,7 @@ class RebuildLocalisationCache extends Maintenance {
                # no l10n cache. Break the cycle by forcing $wgLanguageCode = 'en'.
                global $wgLanguageCode;
                $wgLanguageCode = 'en';
-               return parent::finalSetup();
+               parent::finalSetup();
        }
 
        public function execute() {
old mode 100644 (file)
new mode 100755 (executable)
index 6f0d3be..f13f414
@@ -719,12 +719,17 @@ return array(
        'mediawiki.action.edit' => array(
                'scripts' => 'resources/mediawiki.action/mediawiki.action.edit.js',
                'dependencies' => array(
+                       'mediawiki.action.edit.styles',
                        'mediawiki.legacy.wikibits',
                        'jquery.textSelection',
                        'jquery.byteLimit',
                ),
                'position' => 'top',
        ),
+       'mediawiki.action.edit.styles' => array(
+               'styles' => 'resources/mediawiki.action/mediawiki.action.edit.styles.css',
+               'position' => 'top',
+       ),
        'mediawiki.action.edit.collapsibleFooter' => array(
                'scripts' => 'resources/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js',
                'styles' => 'resources/mediawiki.action/mediawiki.action.edit.collapsibleFooter.css',
@@ -851,6 +856,9 @@ return array(
 
        /* MediaWiki Page */
 
+       'mediawiki.page.gallery' => array(
+               'scripts' => 'resources/mediawiki.page/mediawiki.page.gallery.js',
+       ),
        'mediawiki.page.ready' => array(
                'scripts' => 'resources/mediawiki.page/mediawiki.page.ready.js',
                'dependencies' => array(
@@ -907,6 +915,10 @@ return array(
                        'watcherrortext',
                ),
        ),
+       'mediawiki.page.image.pagination' => array(
+               'scripts' => 'resources/mediawiki.page/mediawiki.page.image.pagination.js',
+               'dependencies' => array( 'jquery.spinner' )
+       ),
 
        /* MediaWiki Special pages */
 
index cac056e..b71ef83 100644 (file)
                                        // Build headers
                                        $headers = buildHeaders( table, sortMsg );
 
-                                       // Grab and process locale settings
+                                       // Grab and process locale settings.
                                        buildTransformTable();
                                        buildDateTable();
-                                       buildCollationTable();
 
                                        // Precaching regexps can bring 10 fold
                                        // performance improvements in some browsers.
                                        function setupForFirstSort() {
                                                firstTime = false;
 
+                                               // Defer buildCollationTable to first sort. As user and site scripts
+                                               // may customize tableSorterCollation but load after $.ready(), other
+                                               // scripts may call .tablesorter() before they have done the
+                                               // tableSorterCollation customizations.
+                                               buildCollationTable();
+
                                                // Legacy fix of .sortbottoms
                                                // Wrap them inside inside a tfoot (because that's what they actually want to be) &
                                                // and put the <tfoot> at the end of the <table>
diff --git a/resources/mediawiki.action/mediawiki.action.edit.styles.css b/resources/mediawiki.action/mediawiki.action.edit.styles.css
new file mode 100644 (file)
index 0000000..4a2bab3
--- /dev/null
@@ -0,0 +1,44 @@
+/**
+ * Styles for elements of the editing form.
+ */
+
+/* General layout */
+#wpTextbox1 {
+       margin: 0;
+       display: block;
+}
+
+.editOptions {
+       background-color: #F0F0F0;
+       border: 1px solid silver;
+       border-top: none;
+       padding: 1em 1em 1.5em 1em;
+       margin-bottom: 2em;
+}
+
+/* Adjustments to edit form elements */
+.editCheckboxes {
+       margin-bottom: 1em;
+}
+
+.editCheckboxes input:first-child {
+       margin-left: 0;
+}
+
+.cancelLink {
+       margin-left: 0.5em;
+}
+
+#editpage-copywarn {
+       font-size: 0.9em;
+}
+
+#wpSummary {
+       display: block;
+       margin-top: 0;
+       margin-bottom: 0.5em;
+}
+
+.editButtons input:first-child {
+       margin-left: .1em;
+}
diff --git a/resources/mediawiki.page/mediawiki.page.gallery.js b/resources/mediawiki.page/mediawiki.page.gallery.js
new file mode 100644 (file)
index 0000000..fd2af40
--- /dev/null
@@ -0,0 +1,216 @@
+/**
+ * Show gallery captions when focused. Copied directly from jquery.mw-jump.js.
+ * Also Dynamically resize images to justify them.
+ */
+( function ( $, mw ) {
+       $( function () {
+               var isTouchScreen,
+                       gettingFocus,
+                       galleries = 'ul.mw-gallery-packed-overlay, ul.mw-gallery-packed-hover, ul.mw-gallery-packed';
+
+               // Is there a better way to detect a touchscreen? Current check taken from stack overflow.
+               isTouchScreen = !!( window.ontouchstart !== undefined || window.DocumentTouch !== undefined && document instanceof window.DocumentTouch );
+
+               if ( isTouchScreen ) {
+                       // Always show the caption for a touch screen.
+                       $( 'ul.mw-gallery-packed-hover' )
+                               .addClass( 'mw-gallery-packed-overlay' )
+                               .removeClass( 'mw-gallery-packed-hover' );
+               } else {
+                       // Note use of just "a", not a.image, since we want this to trigger if a link in
+                       // the caption receives focus
+                       $( 'ul.mw-gallery-packed-hover li.gallerybox' ).on( 'focus blur', 'a', function ( e ) {
+                               // Confusingly jQuery leaves e.type as focusout for delegated blur events
+                               gettingFocus = e.type !== 'blur' && e.type !== 'focusout';
+                               $( this ).closest( 'li.gallerybox' ).toggleClass( 'mw-gallery-focused', gettingFocus );
+                       } );
+               }
+
+               // Now on to justification.
+               // We may still get ragged edges if someone resizes their window. Could bind to
+               // that event, otoh do we really want to constantly be resizing galleries?
+               $( galleries ).each( function() {
+                       var lastTop,
+                               $img,
+                               imgWidth,
+                               imgHeight,
+                               rows = [],
+                               $gallery = $( this );
+
+                       $gallery.children( 'li' ).each( function() {
+                               // Math.floor to be paranoid if things are off by 0.00000000001
+                               var top = Math.floor( $(this ).position().top ),
+                                       $this = $( this );
+
+                               if ( top !== lastTop ) {
+                                       rows[rows.length] = [];
+                                       lastTop = top;
+                               }
+
+                               $img = $this.find( 'div.thumb a.image img' );
+                               if ( $img.length && $img[0].height ) {
+                                       imgHeight = $img[0].height;
+                                       imgWidth = $img[0].width;
+                               } else {
+                                       // If we don't have a real image, get the containing divs width/height.
+                                       // Note that if we do have a real image, using this method will generally
+                                       // give the same answer, but can be different in the case of a very
+                                       // narrow image where extra padding is added.
+                                       imgHeight = $this.children().children( 'div:first' ).height();
+                                       imgWidth = $this.children().children( 'div:first' ).width();
+                               }
+
+                               // Hack to make an edge case work ok
+                               if ( imgHeight < 30 ) {
+                                       // Don't try and resize this item.
+                                       imgHeight = 0;
+                               }
+
+                               rows[rows.length-1][rows[rows.length-1].length] = {
+                                       $elm: $this,
+                                       width: $this.outerWidth(),
+                                       imgWidth: imgWidth,
+                                       aspect: imgWidth / imgHeight, // XXX: can divide by 0 ever happen?
+                                       captionWidth: $this.children().children( 'div.gallerytextwrapper' ).width(),
+                                       height: imgHeight
+                               };
+                       });
+
+                       (function () {
+                               var maxWidth,
+                                       combinedAspect,
+                                       combinedPadding,
+                                       curRow,
+                                       curRowHeight,
+                                       wantedWidth,
+                                       preferredHeight,
+                                       newWidth,
+                                       padding,
+                                       $outerDiv,
+                                       $innerDiv,
+                                       $imageDiv,
+                                       $imageElm,
+                                       imageElm,
+                                       $caption,
+                                       hookInfo,
+                                       i,
+                                       j;
+
+                               for ( i = 0; i < rows.length; i++ ) {
+                                       maxWidth = $gallery.width();
+                                       combinedAspect = 0;
+                                       combinedPadding = 0;
+                                       curRow = rows[i];
+                                       curRowHeight = 0;
+
+                                       for ( j = 0; j < curRow.length; j++ ) {
+                                               if ( curRowHeight === 0 ) {
+                                                       if ( isFinite( curRow[j].height ) ) {
+                                                               // Get the height of this row, by taking the first
+                                                               // non-out of bounds height
+                                                               curRowHeight = curRow[j].height;
+                                                       }
+                                               }
+
+                                               if ( curRow[j].aspect === 0 || !isFinite( curRow[j].aspect ) ) {
+                                                       mw.log( 'Skipping item ' + j + ' due to aspect: ' + curRow[j].aspect );
+                                                       // One of the dimensions are 0. Probably should
+                                                       // not try to resize.
+                                                       combinedPadding += curRow[j].width;
+                                               } else {
+                                                       combinedAspect += curRow[j].aspect;
+                                                       combinedPadding += curRow[j].width - curRow[j].imgWidth;
+                                               }
+                                       }
+
+                                       // Add some padding for inter-element spacing.
+                                       combinedPadding += 5 * curRow.length;
+                                       wantedWidth = maxWidth - combinedPadding;
+                                       preferredHeight = wantedWidth / combinedAspect;
+
+                                       if ( preferredHeight > curRowHeight * 1.5 ) {
+                                               // Only expand at most 1.5 times current size
+                                               // As that's as high a resolution as we have.
+                                               // Also on the off chance there is a bug in this
+                                               // code, would prevent accidentally expanding to
+                                               // be 10 billion pixels wide.
+                                               mw.log( 'mw.page.gallery: Cannot fit row, aspect is ' + preferredHeight/curRowHeight );
+                                               preferredHeight = 1.5 * curRowHeight;
+                                       }
+                                       if ( !isFinite( preferredHeight ) ) {
+                                               // This *definitely* should not happen.
+                                               mw.log( 'mw.page.gallery: Trying to resize row ' + i + ' to ' + preferredHeight + '?!' );
+                                               // Skip this row.
+                                               continue;
+                                       }
+                                       if ( preferredHeight < 5 ) {
+                                               // Well something clearly went wrong...
+                                               mw.log( {maxWidth: maxWidth, combinedPadding: combinedPadding, combinedAspect: combinedAspect, wantedWidth: wantedWidth } );
+                                               mw.log( 'mw.page.gallery: [BUG!] Fitting row ' + i + ' to too small a size: ' + preferredHeight );
+                                               // Skip this row.
+                                               continue;
+                                       }
+                                       for ( j = 0; j < curRow.length; j++ ) {
+                                               newWidth = preferredHeight * curRow[j].aspect;
+                                               padding = curRow[j].width - curRow[j].imgWidth;
+                                               $outerDiv = curRow[j].$elm;
+                                               $innerDiv = $outerDiv.children( 'div' ).first();
+                                               $imageDiv = $innerDiv.children( 'div.thumb' );
+                                               $imageElm = $imageDiv.find( 'img' ).first();
+                                               imageElm = $imageElm.length ? $imageElm[0] : null;
+                                               $caption = $outerDiv.find( 'div.gallerytextwrapper' );
+
+
+                                               // Since we are going to re-adjust the height, the vertical
+                                               // centering margins need to be reset.
+                                               $imageDiv.children( 'div' ).css( 'margin', '0px auto' );
+
+                                               if ( newWidth < 60 || !isFinite( newWidth ) ) {
+                                                       // Making something skinnier than this will mess up captions,
+                                                       mw.log( 'mw.page.gallery: Tried to make image ' + newWidth + 'px wide but too narrow.' );
+                                                       if ( newWidth < 1 || !isFinite( newWidth ) ) {
+                                                               $innerDiv.height( preferredHeight );
+                                                               // Don't even try and touch the image size if it could mean
+                                                               // making it disappear.
+                                                               continue;
+                                                       }
+                                               } else {
+                                                       $outerDiv.width( newWidth + padding );
+                                                       $innerDiv.width( newWidth + padding );
+                                                       $imageDiv.width( newWidth );
+                                                       $caption.width( curRow[j].captionWidth + (newWidth - curRow[j].imgWidth ) );
+                                               }
+
+                                               hookInfo = {
+                                                       fullWidth: newWidth + padding,
+                                                       imgWidth: newWidth,
+                                                       imgHeight: preferredHeight,
+                                                       $innerDiv: $innerDiv,
+                                                       $imageDiv: $imageDiv,
+                                                       $outerDiv: $outerDiv,
+                                                       resolved: false  /* Did the hook take action */
+                                               };
+                                               // Allow other media handlers to hook in.
+                                               // If your hook resizes an image, it is expected it will
+                                               // set resolved to true. Additionally you should load
+                                               // your module in position top to ensure it is registered
+                                               // before this runs (FIXME: there must be a better way?)
+                                               // See TimedMediaHandler for an example.
+                                               mw.hook( 'mediawiki.page.gallery.resize' ).fire( hookInfo );
+
+                                               if ( !hookInfo.resolved ) {
+                                                       if ( imageElm ) {
+                                                               // We don't always have an img, e.g. in the case of an invalid file.
+                                                               imageElm.width = newWidth;
+                                                               imageElm.height = preferredHeight;
+                                                       } else {
+                                                               // Not a file box.
+                                                               $imageDiv.height( preferredHeight );
+                                                       }
+                                               }
+                                       }
+                               }
+                       } )();
+               } );
+       } );
+} )( jQuery, mediaWiki );
diff --git a/resources/mediawiki.page/mediawiki.page.image.pagination.js b/resources/mediawiki.page/mediawiki.page.image.pagination.js
new file mode 100644 (file)
index 0000000..fb44a76
--- /dev/null
@@ -0,0 +1,51 @@
+/**
+ * Change multi-page image navigation so that the current page display can be changed
+ * without a page reload. Currently, the only image formats that can be multi-page images are
+ * PDF and DjVu files
+ */
+( function (mw, $) {
+       // Use jQuery's load function to specifically select and replace table.multipageimage's child
+       // tr with the new page's table.multipageimage's tr element.
+       // table.multipageimage always has only one row.
+       function loadPage( page ) {
+               var $multipageimage = $( 'table.multipageimage' ),
+                       $spinner = $.createSpinner( {
+                               size: 'large',
+                               type: 'block'
+                       } );
+
+               // Set the spinner's dimensions equal to the table's dimensions so that
+               // the current scroll position is not lost after the table is emptied prior to
+               // its contents being updated
+               $spinner.css( {
+                       height: $multipageimage.find( 'tr' ).height(),
+                       width: $multipageimage.find( 'tr' ).width()
+               } );
+
+               $multipageimage.empty().append( $spinner ).load(
+                       page + ' table.multipageimage tr',
+                       ajaxifyPageNavigation
+               );
+       }
+
+       function ajaxifyPageNavigation() {
+               // Intercept the default action of the links in the thumbnail navigation
+               $( '.multipageimagenavbox' ).one( 'click', 'a', function ( e ) {
+                       loadPage( this.href );
+                       e.preventDefault();
+               } );
+
+               // Prevent the submission of the page select form and instead call loadPage
+               $( 'form[name="pageselector"]' ).one( 'change submit', function ( e ) {
+                       loadPage( this.action + '?' + $( this ).serialize() );
+                       e.preventDefault();
+               } );
+       }
+
+       $( document ).ready( function() {
+               // The presence of table.multipageimage signifies that this file is a multi-page image
+               if( mw.config.get( 'wgNamespaceNumber' ) === 6 && $( 'table.multipageimage' ).length !== 0 ) {
+                       ajaxifyPageNavigation();
+               }
+       } );
+}( mediaWiki, jQuery ) );
index 4c68401..a9b9d2b 100644 (file)
@@ -832,6 +832,69 @@ div.gallerytext {
        word-wrap: break-word;
 }
 
+/* new gallery stuff */
+ul.mw-gallery-nolines li.gallerybox div.thumb {
+       background-color: transparent;
+       border: none;
+}
+ul.mw-gallery-nolines li.gallerybox div.thumb img {
+       margin: 0;
+}
+
+
+/* height constrained gallery */
+
+ul.mw-gallery-packed li.gallerybox div.thumb,
+ul.mw-gallery-packed-overlay li.gallerybox div.thumb,
+ul.mw-gallery-packed-hover li.gallerybox div.thumb {
+       background-color: transparent;
+       border: none;
+}
+ul.mw-gallery-packed li.gallerybox div.thumb img,
+ul.mw-gallery-packed-overlay li.gallerybox div.thumb img,
+ul.mw-gallery-packed-hover li.gallerybox div.thumb img {
+       margin: 0;
+}
+
+ul.mw-gallery-packed-hover li.gallerybox,
+ul.mw-gallery-packed-overlay li.gallerybox {
+       position:relative;
+}
+
+ul.mw-gallery-packed-hover div.gallerytextwrapper {
+       overflow: hidden;
+       height: 0;
+}
+
+ul.mw-gallery-packed-hover li.gallerybox:hover div.gallerytextwrapper,
+ul.mw-gallery-packed-overlay li.gallerybox div.gallerytextwrapper,
+ul.mw-gallery-packed-hover li.gallerybox.mw-gallery-focused div.gallerytextwrapper {
+       position:absolute;
+       opacity:.8;
+       filter:alpha(opacity=80);
+       zoom: 1;
+       background-color:white;
+       padding: 5px 10px;
+       bottom: 0;
+       left: 0; /* Needed for IE */
+       height: auto;
+       font-weight: bold;
+       margin: 2px; /* correspond to style on div.thumb */
+}
+
+ul.mw-gallery-packed-hover,
+ul.mw-gallery-packed-overlay,
+ul.mw-gallery-packed {
+       text-align: center;
+}
+
+ul.mw-gallery-packed-hover div.gallerytext,
+ul.mw-gallery-packed-overlay div.gallerytext {
+       opacity: 1;
+       position: relative; /* Resets opacity in old IE */
+}
+
+
 .mw-ajax-loader {
        /* @embed */
        background-image: url(images/ajax-loader.gif);
index 57c5e1b..146f867 100644 (file)
@@ -447,9 +447,9 @@ Italics and bold
 
 !! end
 
-# this example taken from the simple/Moon article
+# this example taken from the [[simple:Moon]] article (bug 47326)
 !! test
-Italics and possessives
+Italics and possessives (1)
 !! input
 obtained by ''[[Lunar Prospector]]'''s gamma-ray spectrometer
 !! result
@@ -457,6 +457,27 @@ obtained by ''[[Lunar Prospector]]'''s gamma-ray spectrometer
 </p>
 !! end
 
+# this example taken from [[en:Flaming Pie]] (bug 49926)
+!! test
+Italics and possessives (2)
+!! input
+'''''Flaming Pie''''' is ... released in 1997. In ''Flaming Pie'''s liner notes
+!! result
+<p><i><b>Flaming Pie</b></i> is ... released in 1997. In <i>Flaming Pie'</i>s liner notes
+</p>
+!! end
+
+# this example taken from [[en:Dictionary]] (bug 49926)
+!! test
+Italics and possessives (3)
+!! input
+The first monolingual dictionary written in a Romance language was ''Sebastián Covarrubias''' ''Tesoro de la lengua castellana o española'', published in 1611 in Madrid. In 1612 the first edition of the ''Vocabolario dell'[[Accademia della Crusca]]'', for Italian, was published. In 1690 in Rotterdam was published, posthumously, the ''Dictionnaire Universel''.
+!! result
+<p>The first monolingual dictionary written in a Romance language was <i>Sebastián Covarrubias'</i> <i>Tesoro de la lengua castellana o española</i>, published in 1611 in Madrid. In 1612 the first edition of the <i>Vocabolario dell'<a href="/index.php?title=Accademia_della_Crusca&amp;action=edit&amp;redlink=1" class="new" title="Accademia della Crusca (page does not exist)">Accademia della Crusca</a></i>, for Italian, was published. In 1690 in Rotterdam was published, posthumously, the <i>Dictionnaire Universel</i>.
+</p>
+!! end
+
+
 ###
 ### 2-quote opening sequence tests
 ###
@@ -1310,6 +1331,22 @@ And a <a href="/wiki/Main_Page" title="Main Page">link</a>
 </pre>
 !! end
 
+!! test
+Tabs don't trigger preformatted text
+!! input
+       This is not
+        preformatted text.
+ This is preformatted text.
+       So is this.
+!! result
+<p>    This is not
+        preformatted text.
+</p>
+<pre>This is preformatted text.
+       So is this.
+</pre>
+!! end
+
 !! test
 Ident preformatting with inline content
 !! input
@@ -1592,66 +1629,82 @@ Templates: Indent-Pre: 1f: Wrapping should be based on expanded content
 </pre>
 !!end
 
+#--------------------------------------------------------------------
+# Transclusion parameter whitespace stripping tests
+# Behavior is different for positional and named parameters
+#--------------------------------------------------------------------
 !! test
-Templates: Single-line variant of parameter whitespace stripping test
+Templates: Strip leading and trailing whitespace from named-param values
 !! input
-{{echo| a}}
+{{echo|1= a }}
 
-{{echo|1= a}}
+{{echo|1= {{echo|b}} }}
 
-{{echo|{{echo| a}}}}
+{{echo| 1 =
+ c }}
 
-{{echo|1={{echo| a}}}}
+{{echo| 1 =
+* d
+}}
 !! result
-<pre>a
-</pre>
-<p>a
-</p>
-<pre>a
-</pre>
 <p>a
+</p><p>b
+</p><p>c
 </p>
+<ul><li> d
+</li></ul>
+
 !! end
 
 !! test
-Templates: Strip whitespace from named parameters, but not positional ones
+Templates: Don't strip whitespace from positional-param values
+!! options
 !! input
-{{echo|
- foo}}
+{{echo|a }}
+
+{{echo|{{echo|b}} }}
+
+{{echo| c 
+}}
+
+{{echo| {{echo|d}}
+}}
 
 {{echo|
-* foo}}
+ e}}
 
-{{echo| 1 =
- foo}}
+{{echo|
+* f}}
 
-{{echo| 1 =
-* foo}}
+{{echo|
+ }}g
 !! result
-<pre>foo
+<p>a 
+</p><p>b 
+</p>
+<pre>c 
 </pre>
 <p><br />
 </p>
-<ul><li> foo
-</li></ul>
-<p>foo
+<pre>d
+</pre>
+<p><br />
 </p>
-<ul><li> foo
+<pre>e
+</pre>
+<p><br />
+</p>
+<ul><li> f
 </li></ul>
-
-!! end
-
-!! test
-Templates: Dont strip whitespace from whitespace/comment-only arguments
-!! input
-{{echo| }}
-{{echo|<!--cmt-->}}
-{{echo| <!--cmt--> }}
-!! result
 <p><br />
 </p>
+<pre>g
+</pre>
 !! end
 
+#--------------------------------------------------------------------
+# Transclusion parameter escaping tests
+#--------------------------------------------------------------------
 !! test
 Templates: Parsoid parameter escaping test 1
 !! options
@@ -2300,6 +2353,19 @@ should be left alone
 should be left alone
 </p>
 !! end
+
+# Bug 52473
+!! test
+Definition Lists: Hacky use to indent tables (WS-insensitive)
+!! options
+parsoid
+!! input
+: {|
+|a
+|} 
+!! result
+<dl><dd> <table><tr><td>a</td></tr></table> </dd></dl>
+!! end
 ## The PHP parser treats : items (dd) without a corresponding ; item (dt)
 ## as an empty dt item.  It also ignores all but the last ";" when followed
 ## by ":" later on.  So, ";" are not ignored in ";;;t3" but are ignored  in
@@ -4227,6 +4293,52 @@ parsoid=wt2html,wt2wt
 </table>
 !! end
 
+!! test
+Parsoid: Round-trip tables directly followed by content (bug 51219)
+!! options
+parsoid=wt2html,wt2wt
+!! input
+{|
+|foo
+|} bar
+
+{|
+|baz
+|}<b>quux</b>
+!! result
+<table><tbody>
+<tr>
+<td>foo</td></tr></tbody></table> bar
+<table>
+<tbody>
+<tr>
+<td>baz</td></tr></tbody></table><b>quux</b>
+!! end
+
+!! test
+Parsoid: Default to a newline after tables in new content (bug 51219)
+!! options
+parsoid=html2wt
+!! input
+{|
+|-
+|foo
+|}
+<nowiki> </nowiki>bar
+{|
+|-
+|baz
+|}
+'''quux'''
+!! result
+<table><tbody>
+<tr>
+<td>foo</td></tr></tbody></table> bar
+<table><tbody>
+<tr>
+<td>baz</td></tr></tbody></table><b>quux</b>
+!! end
+
 ###
 ### Internal links
 ###
@@ -12766,40 +12878,40 @@ image4    |300px| centre
 * image6
 </gallery>
 !! result
-<ul class="gallery">
+<ul class="gallery mw-gallery-traditional">
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
-                       <div style="height: 150px;">Image1.png</div>
+                       <div class="thumb" style="height: 150px;">Image1.png</div>
                        <div class="gallerytext">
                        </div>
                </div></li>
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
-                       <div style="height: 150px;">Image2.gif</div>
+                       <div class="thumb" style="height: 150px;">Image2.gif</div>
                        <div class="gallerytext">
 <p>||||
 </p>
                        </div>
                </div></li>
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
-                       <div style="height: 150px;">Image3</div>
+                       <div class="thumb" style="height: 150px;">Image3</div>
                        <div class="gallerytext">
                        </div>
                </div></li>
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
-                       <div style="height: 150px;">Image4</div>
+                       <div class="thumb" style="height: 150px;">Image4</div>
                        <div class="gallerytext">
 <p>300px| centre
 </p>
                        </div>
                </div></li>
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
-                       <div style="height: 150px;">Image5.svg</div>
+                       <div class="thumb" style="height: 150px;">Image5.svg</div>
                        <div class="gallerytext">
 <p><a rel="nofollow" class="external free" href="http://///////">http://///////</a>
 </p>
                        </div>
                </div></li>
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
-                       <div style="height: 150px;">* image6</div>
+                       <div class="thumb" style="height: 150px;">* image6</div>
                        <div class="gallerytext">
                        </div>
                </div></li>
@@ -12818,17 +12930,17 @@ image:foobar.jpg
 image:foobar.jpg|Blabla|alt=This is a foo-bar.|blabla.
 </gallery>
 !! result
-<ul class="gallery" style="max-width: 226px;_width: 226px;">
+<ul class="gallery mw-gallery-traditional" style="max-width: 226px;_width: 226px;">
        <li class='gallerycaption'>Foo <a href="/wiki/Main_Page" title="Main Page">Main Page</a></li>
                <li class="gallerybox" style="width: 105px"><div style="width: 105px">
-                       <div style="height: 70px;">Nonexistant.jpg</div>
+                       <div class="thumb" style="height: 70px;">Nonexistant.jpg</div>
                        <div class="gallerytext">
 <p>caption
 </p>
                        </div>
                </div></li>
                <li class="gallerybox" style="width: 105px"><div style="width: 105px">
-                       <div style="height: 70px;">Nonexistant.jpg</div>
+                       <div class="thumb" style="height: 70px;">Nonexistant.jpg</div>
                        <div class="gallerytext">
                        </div>
                </div></li>
@@ -12863,7 +12975,7 @@ File:foobar.jpg|[[File:foobar.jpg|20px|desc|alt=inneralt]]|alt=galleryalt
 File:foobar.jpg|{{Test|unamedParam|alt=param}}|alt=galleryalt
 </gallery>
 !! result
-<ul class="gallery">
+<ul class="gallery mw-gallery-traditional">
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
                        <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" /></a></div></div>
                        <div class="gallerytext">
@@ -12892,9 +13004,9 @@ image:foobar.jpg|some '''caption''' [[Main Page]]
 File:Foobar.jpg
 </gallery>
 !! result
-<ul class="gallery">
+<ul class="gallery mw-gallery-traditional">
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
-                       <div style="height: 150px;">Nonexistant.jpg</div>
+                       <div class="thumb" style="height: 150px;">Nonexistant.jpg</div>
                        <div class="gallerytext">
 <p><a href="/wiki/File:Nonexistant.jpg" title="File:Nonexistant.jpg">Nonexistant.jpg</a><br />
 caption
@@ -12902,7 +13014,7 @@ caption
                        </div>
                </div></li>
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
-                       <div style="height: 150px;">Nonexistant.jpg</div>
+                       <div class="thumb" style="height: 150px;">Nonexistant.jpg</div>
                        <div class="gallerytext">
 <p><a href="/wiki/File:Nonexistant.jpg" title="File:Nonexistant.jpg">Nonexistant.jpg</a><br />
 </p>
@@ -12937,14 +13049,14 @@ image:foobar.jpg
 foobar.jpg
 </gallery>
 !! result
-<ul class="gallery">
+<ul class="gallery mw-gallery-traditional">
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
-                       <div style="height: 150px;">Nonexistant.jpg</div>
+                       <div class="thumb" style="height: 150px;">Nonexistant.jpg</div>
                        <div class="gallerytext">
                        </div>
                </div></li>
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
-                       <div style="height: 150px;">Nonexistant.jpg</div>
+                       <div class="thumb" style="height: 150px;">Nonexistant.jpg</div>
                        <div class="gallerytext">
                        </div>
                </div></li>
@@ -15256,7 +15368,7 @@ Gallery override link with WikiLink (bug 34852)
 File:foobar.jpg|caption|alt=galleryalt|link=InterWikiLink
 </gallery>
 !! result
-<ul class="gallery">
+<ul class="gallery mw-gallery-traditional">
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
                        <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/InterWikiLink"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" /></a></div></div>
                        <div class="gallerytext">
@@ -15275,7 +15387,7 @@ Gallery override link with absolute external link (bug 34852)
 File:foobar.jpg|caption|alt=galleryalt|link=http://www.example.org
 </gallery>
 !! result
-<ul class="gallery">
+<ul class="gallery mw-gallery-traditional">
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
                        <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="http://www.example.org"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" /></a></div></div>
                        <div class="gallerytext">
@@ -15294,7 +15406,7 @@ Gallery override link with malicious javascript (bug 34852)
 File:foobar.jpg|caption|alt=galleryalt|link=" onclick="alert('malicious javascript code!');
 </gallery>
 !! result
-<ul class="gallery">
+<ul class="gallery mw-gallery-traditional">
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
                        <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/%22_onclick%3D%22alert(%27malicious_javascript_code!%27);"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" /></a></div></div>
                        <div class="gallerytext">
@@ -15313,7 +15425,7 @@ Gallery with invalid title as link (bug 43964)
 File:foobar.jpg|link=<
 </gallery>
 !! result
-<ul class="gallery">
+<ul class="gallery mw-gallery-traditional">
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
                        <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" /></a></div></div>
                        <div class="gallerytext">
@@ -17115,6 +17227,19 @@ parsoid
 </body>
 !!end
 
+## Currently the p-wrapper is fragile in how adds / removes transformations.
+## Having nested or stray pre tags results in the attempt to add duplicates,
+## causing an assertion fail. This test tries to prevent that situation.
+!!test
+Ensure ParagraphWrapper can deal with stray closing pre tags
+!!options
+parsoid=wt2html
+!!input
+plain text</pre>
+!!result
+plain text
+!!end
+
 # -----------------------------------------------------------------
 # The following section of tests are primarily to spec requirements
 # around serialization of new/edited content.
@@ -17144,6 +17269,23 @@ parsoid=html2wt
 <p>123</p><figure typeof="mw:Image/Thumb" class="mw-halign-right"><a href="./File:Wiki.png"><img src="http://192.168.142.128/mw/images/thumb/b/bc/Wiki.png/131px-Wiki.png" width="131" height="150" resource="./File:Wiki.png"></a></figure><p>456</p>
 !!end
 
+# Wacky -- the leading newline in input is required because
+# that is what the serializer emits. To be fixed. Not fixing
+# the test because this test is required to test serialization of
+# new content and preferred whitespace style.
+!! test
+Lists: Serialize correctly even when list content is wrapped in p-tags (like VE does)
+!! options
+parsoid=html2wt
+!! input
+
+* foo
+!! result
+<ul>
+<li><p>foo</p></li>
+</ul>
+!! end
+
 # Wacky -- the leading newline in input is required because
 # that is what the serializer emits. To be fixed. Not fixing
 # the test because this test is required to test serialization of
index 93ce119..070a680 100644 (file)
@@ -75,6 +75,20 @@ class LanguageConverterTest extends MediaWikiLangTestCase {
                $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
        }
 
+       function testGetPreferredVariantUserOptionForForeignLanguage() {
+               global $wgContLang, $wgUser;
+
+               $wgContLang = Language::factory( 'en' );
+               $wgUser = new User;
+               $wgUser->load(); // from 'defaults'
+               $wgUser->mId = 1;
+               $wgUser->mDataLoaded = true;
+               $wgUser->mOptionsLoaded = true;
+               $wgUser->setOption( 'variant-tg', 'tg-latn' );
+
+               $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
+       }
+
        function testGetPreferredVariantHeaderUserVsUrl() {
                global $wgContLang, $wgRequest, $wgUser;