Merge "Add a function that returns a list of categories the page is a member of"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 15 Aug 2013 16:04:42 +0000 (16:04 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 15 Aug 2013 16:04:42 +0000 (16:04 +0000)
194 files changed:
README
RELEASE-NOTES-1.22
docs/hooks.txt
includes/AutoLoader.php
includes/CategoryViewer.php
includes/DefaultSettings.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/HTMLForm.php
includes/ImageGallery.php [deleted file]
includes/ImageQueryPage.php
includes/Revision.php
includes/Sanitizer.php
includes/Setup.php
includes/SiteConfiguration.php
includes/Title.php
includes/User.php
includes/WebResponse.php
includes/actions/HistoryAction.php
includes/api/ApiMain.php
includes/api/ApiQueryImageInfo.php
includes/api/ApiQuerySearch.php
includes/db/Database.php
includes/db/LoadBalancer.php
includes/externalstore/ExternalStore.php
includes/externalstore/ExternalStoreDB.php
includes/externalstore/ExternalStoreMwstore.php
includes/filerepo/ForeignDBRepo.php
includes/filerepo/LocalRepo.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/Installer.i18n.php
includes/job/JobQueue.php
includes/job/JobQueueDB.php
includes/job/JobQueueFederated.php
includes/job/JobQueueGroup.php
includes/job/JobQueueRedis.php
includes/job/jobs/UploadFromUrlJob.php
includes/media/MediaTransformOutput.php
includes/parser/Parser.php
includes/parser/ParserOutput.php
includes/parser/Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php
includes/resourceloader/ResourceLoader.php
includes/search/SearchEngine.php
includes/search/SearchUpdate.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialNewimages.php
includes/specials/SpecialSearch.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUserlogin.php
includes/templates/Usercreate.php
includes/tidy.conf
includes/upload/UploadFromUrl.php
languages/messages/MessagesAeb.php
languages/messages/MessagesAln.php
languages/messages/MessagesAm.php
languages/messages/MessagesAng.php
languages/messages/MessagesAr.php
languages/messages/MessagesAst.php
languages/messages/MessagesAvk.php
languages/messages/MessagesBar.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBn.php
languages/messages/MessagesBs.php
languages/messages/MessagesCa.php
languages/messages/MessagesCdo.php
languages/messages/MessagesCe.php
languages/messages/MessagesCeb.php
languages/messages/MessagesCh.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCps.php
languages/messages/MessagesCs.php
languages/messages/MessagesCsb.php
languages/messages/MessagesCv.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesEl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesExt.php
languages/messages/MessagesFi.php
languages/messages/MessagesFo.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrr.php
languages/messages/MessagesFy.php
languages/messages/MessagesGag.php
languages/messages/MessagesGan_hans.php
languages/messages/MessagesGan_hant.php
languages/messages/MessagesGu.php
languages/messages/MessagesHak.php
languages/messages/MessagesHe.php
languages/messages/MessagesHi.php
languages/messages/MessagesHt.php
languages/messages/MessagesHy.php
languages/messages/MessagesIa.php
languages/messages/MessagesId.php
languages/messages/MessagesIe.php
languages/messages/MessagesIg.php
languages/messages/MessagesInh.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJam.php
languages/messages/MessagesKaa.php
languages/messages/MessagesKbd_cyrl.php
languages/messages/MessagesKhw.php
languages/messages/MessagesKiu.php
languages/messages/MessagesKk_arab.php
languages/messages/MessagesKk_latn.php
languages/messages/MessagesKo.php
languages/messages/MessagesKw.php
languages/messages/MessagesKy.php
languages/messages/MessagesLa.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLez.php
languages/messages/MessagesLg.php
languages/messages/MessagesLoz.php
languages/messages/MessagesLv.php
languages/messages/MessagesMdf.php
languages/messages/MessagesMg.php
languages/messages/MessagesMhr.php
languages/messages/MessagesMk.php
languages/messages/MessagesMr.php
languages/messages/MessagesMs.php
languages/messages/MessagesMwl.php
languages/messages/MessagesMy.php
languages/messages/MessagesMyv.php
languages/messages/MessagesMzn.php
languages/messages/MessagesNan.php
languages/messages/MessagesNap.php
languages/messages/MessagesNb.php
languages/messages/MessagesOc.php
languages/messages/MessagesPam.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesSah.php
languages/messages/MessagesSco.php
languages/messages/MessagesSdc.php
languages/messages/MessagesSei.php
languages/messages/MessagesSgs.php
languages/messages/MessagesShi.php
languages/messages/MessagesSi.php
languages/messages/MessagesSl.php
languages/messages/MessagesSli.php
languages/messages/MessagesSo.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesSrn.php
languages/messages/MessagesSv.php
languages/messages/MessagesSzl.php
languages/messages/MessagesTh.php
languages/messages/MessagesTpi.php
languages/messages/MessagesTr.php
languages/messages/MessagesTt_cyrl.php
languages/messages/MessagesUk.php
languages/messages/MessagesVo.php
languages/messages/MessagesVro.php
languages/messages/MessagesWuu.php
languages/messages/MessagesZea.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
maintenance/getConfiguration.php
maintenance/language/messageTypes.inc
maintenance/language/messages.inc
maintenance/runJobs.php
resources/Resources.php
resources/jquery/jquery.makeCollapsible.js
resources/jquery/jquery.tablesorter.js
resources/mediawiki.action/mediawiki.action.edit.collapsibleFooter.css
resources/mediawiki.action/mediawiki.action.edit.collapsibleFooter.js
resources/mediawiki.page/mediawiki.page.gallery.js [new file with mode: 0644]
skins/cologneblue/screen.css
skins/common/shared.css
skins/common/upload.js
tests/parser/parserTest.inc
tests/parser/parserTests.txt
tests/phpunit/includes/SiteConfigurationTest.php
tests/phpunit/includes/parser/PreprocessorTest.php
thumb.php

diff --git a/README b/README
index f4b8cfb..4f4bc29 100644 (file)
--- a/README
+++ b/README
@@ -27,7 +27,6 @@ RELEASE-NOTES, INSTALL, and UPGRADE.
 * Interested in helping out?
 ** https://www.mediawiki.org/wiki/How_to_contribute
 
-
 MediaWiki is the result of global collaboration and cooperation. The CREDITS
 file lists technical contributors to the project. The COPYING file explains
 MediaWiki's copyright and license (GNU General Public License, version 2 or
index 72d91b7..780feb9 100644 (file)
@@ -41,6 +41,11 @@ production.
 * (bug 40866) wgOldChangeTagsIndex removed.
 * $wgNoFollowDomainExceptions now only matches entire domains. For example,
   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.
@@ -119,6 +124,10 @@ production.
 * (bug 43689) The lists of templates used on the page and hidden categories it
   is a member of, shown below the edit form, are now collapsible (and collapsed
   by default).
+* Parser profiling data, formerly only available in the "NewPP limit report"
+  HTML comment, is now also displayed at the bottom of page previews.
+* Added ParserLimitReportPrepare and ParserLimitReportFormat hooks, deprecated
+  ParserLimitReport hook.
 * New user rights have been added to increase granularity in rights management
   for extensions such as OAuth:
 ** editmyusercss controls whether a user may edit their own CSS subpages.
@@ -167,12 +176,22 @@ production.
 * (bug 30713) New mw.hook "wikipage.content".
 * (bug 40430) jquery.placeholder gets a new parameter to set the attribute value
   to be used.
+<<<<<<< .merge_file_rX8GYk
 * $wgHTCPMulticastRouting renamed $wgHTCPRouting since it accepts unicast.
 * $wgHTCPRouting rules can now be passed an array of hosts/ports to send purge
   too. Can be used whenever several multicast group could be interested by a
   specific purge.
 * (bug 25931) Add Special:RandomInCategory.
 * mediawiki.util: addPortletLink now supports passing a jQuery object as nextnode.
+* <wbr> can now be used inside WikiText.
+* WebResponse::setcookie is much more featureful. Callers using PHP's
+  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".
+>>>>>>> .merge_file_gNstr1
 
 === Bug fixes in 1.22 ===
 * Disable Special:PasswordReset when $wgEnableEmail is false. Previously one
@@ -244,7 +263,7 @@ production.
   revision as second argument now, rather than just the current section.
 * (bug 49694) $wgSpamRegex is now also applied on the new section headline text
   adding a new topic on a page
-* (bug 6200) line breaks in <blockquote> are handled like they are in <div>
+* (bug 41756) Improve treatment of multiple comments on a blank line.
 
 === API changes in 1.22 ===
 * (bug 25553) The JSON output formatter now leaves forward slashes unescaped
index 99c0839..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.
@@ -1802,10 +1808,29 @@ cache or return false to not use it.
 $parser: Parser object
 $varCache: variable cache (array)
 
-'ParserLimitReport': Called at the end of Parser:parse() when the parser will
+'ParserLimitReport': DEPRECATED, use ParserLimitReportPrepare and
+ParserLimitReportFormat instead.
+Called at the end of Parser:parse() when the parser will
 include comments about size of the text parsed.
 $parser: Parser object
-$limitReport: text that will be included (without comment tags)
+&$limitReport: text that will be included (without comment tags)
+
+'ParserLimitReportFormat': Called for each row in the parser limit report that
+needs formatting. If nothing handles this hook, the default is to use "$key" to
+get the label, and "$key-value" or "$key-value-text"/"$key-value-html" to
+format the value.
+$key: Key for the limit report item (string)
+$value: Value of the limit report item
+&$report: String onto which to append the data
+$isHTML: If true, $report is an HTML table with two columns; if false, it's
+       text intended for display in a monospaced font.
+$localize: If false, $report should be output in English.
+
+'ParserLimitReportPrepare': Called at the end of Parser:parse() when the parser will
+include comments about size of the text parsed. Hooks should use
+$output->setLimitReportData() to populate data.
+$parser: Parser object
+$output: ParserOutput object
 
 'ParserMakeImageParams': Called before the parser make an image link, use this
 to modify the parameters of the image.
@@ -1913,6 +1938,10 @@ IContextSource $context: The RequestContext the skin is being created for.
 &$skin: A variable reference you may set a Skin instance or string key on to
   override the skin that will be used for the context.
 
+'ResetSessionID': Called from wfResetSessionID
+$oldSessionID: old session id
+$newSessionID: new session id
+
 'ResourceLoaderGetConfigVars': Called at the end of
 ResourceLoaderStartUpModule::getConfig(). Use this to export static
 configuration variables to JavaScript. Things that depend on the current page
@@ -1953,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
@@ -2711,6 +2733,13 @@ $skin: Skin object
 REQUEST_URI.
 $router: The PathRouter instance
 
+'WebResponseSetCookie': when setting a cookie in WebResponse::setcookie().
+Return false to prevent setting of the cookie.
+&$name: Cookie name passed to WebResponse::setcookie()
+&$value: Cookie value passed to WebResponse::setcookie()
+&$expire: Cookie expiration, as for PHP's setcookie()
+$options: Options passed to WebResponse::setcookie()
+
 'WikiExporter::dumpStableQuery': Get the SELECT query for "stable" revisions
 dumps. One, and only one hook should set this, and return false.
 &$tables: Database tables to use in the SELECT query
index dc9acf3..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',
@@ -665,6 +664,8 @@ $wgAutoloadLocalClasses = array(
        'JobQueueAggregatorMemc' => 'includes/job/aggregator/JobQueueAggregatorMemc.php',
        'JobQueueAggregatorRedis' => 'includes/job/aggregator/JobQueueAggregatorRedis.php',
        'JobQueueDB' => 'includes/job/JobQueueDB.php',
+       'JobQueueConnectionError' => 'includes/job/JobQueue.php',
+       'JobQueueError' => 'includes/job/JobQueue.php',
        'JobQueueGroup' => 'includes/job/JobQueueGroup.php',
        'JobQueueFederated' => 'includes/job/JobQueueFederated.php',
        'JobQueueRedis' => 'includes/job/JobQueueRedis.php',
@@ -719,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..562ca0c 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();
index 8302e6d..87c1b6b 100644 (file)
@@ -308,7 +308,9 @@ $wgActionPaths = array();
  * @{
  */
 
-/** Uploads have to be specially set up to be secure */
+/**
+ * Uploads have to be specially set up to be secure
+ */
 $wgEnableUploads = false;
 
 /**
@@ -316,7 +318,9 @@ $wgEnableUploads = false;
  */
 $wgUploadStashMaxAge = 6 * 3600; // 6 hours
 
-/** Allows to move images and other media files */
+/**
+ * Allows to move images and other media files
+ */
 $wgAllowImageMoving = true;
 
 /**
@@ -443,7 +447,9 @@ $wgImgAuthPublicTest = true;
  */
 $wgLocalFileRepo = false;
 
-/** @see $wgLocalFileRepo */
+/**
+ * @see $wgLocalFileRepo
+ */
 $wgForeignFileRepos = array();
 
 /**
@@ -534,22 +540,36 @@ $wgUpdateCompatibleMetadata = false;
  */
 $wgUseSharedUploads = false;
 
-/** Full path on the web server where shared uploads can be found */
+/**
+ * Full path on the web server where shared uploads can be found
+ */
 $wgSharedUploadPath = "http://commons.wikimedia.org/shared/images";
 
-/** Fetch commons image description pages and display them on the local wiki? */
+/**
+ * Fetch commons image description pages and display them on the local wiki?
+ */
 $wgFetchCommonsDescriptions = false;
 
-/** Path on the file system where shared uploads can be found. */
+/**
+ * Path on the file system where shared uploads can be found.
+ */
 $wgSharedUploadDirectory = "/var/www/wiki3/images";
 
-/** DB name with metadata about shared directory. Set this to false if the uploads do not come from a wiki. */
+/**
+ * DB name with metadata about shared directory.
+ * Set this to false if the uploads do not come from a wiki.
+ */
 $wgSharedUploadDBname = false;
 
-/** Optional table prefix used in database. */
+/**
+ * Optional table prefix used in database.
+ */
 $wgSharedUploadDBprefix = '';
 
-/** Cache shared metadata in memcached. Don't do this if the commons wiki is in a different memcached domain */
+/**
+ * Cache shared metadata in memcached.
+ * Don't do this if the commons wiki is in a different memcached domain
+ */
 $wgCacheSharedUploads = true;
 
 /**
@@ -585,6 +605,27 @@ $wgCopyUploadsFromSpecialUpload = false;
  */
 $wgCopyUploadProxy = false;
 
+/**
+ * Different timeout for upload by url
+ * This could be useful since when fetching large files, you may want a
+ * timeout longer than the default $wgHTTPTimeout. False means fallback
+ * to default.
+ *
+ * @since 1.22
+ */
+$wgCopyUploadTimeout = false;
+
+/**
+ * Different timeout for upload by url when run as a background job
+ * This could be useful since when fetching large files via job queue,
+ * you may want a different timeout, especially because there is no
+ * http request being kept alive.
+ *
+ * false means fallback to $wgCopyUploadTimeout.
+ * @since 1.22
+ */
+$wgCopyUploadAsyncTimeout = false;
+
 /**
  * Max size for uploads, in bytes. If not set to an array, applies to all
  * uploads. If set to an array, per upload type maximums can be set, using the
@@ -634,6 +675,7 @@ $wgUploadMissingFileUrl = false;
  * @endcode
  */
 $wgThumbnailScriptPath = false;
+
 /**
  * @see $wgThumbnailScriptPath
  */
@@ -812,15 +854,25 @@ $wgContentHandlers = array(
  * Use Image Magick instead of PHP builtin functions.
  */
 $wgUseImageMagick = false;
-/** The convert command shipped with ImageMagick */
+
+/**
+ * The convert command shipped with ImageMagick
+ */
 $wgImageMagickConvertCommand = '/usr/bin/convert';
-/** The identify command shipped with ImageMagick */
+
+/**
+ * The identify command shipped with ImageMagick
+ */
 $wgImageMagickIdentifyCommand = '/usr/bin/identify';
 
-/** Sharpening parameter to ImageMagick */
+/**
+ * Sharpening parameter to ImageMagick
+ */
 $wgSharpenParameter = '0x0.4';
 
-/** Reduction in linear dimensions below which sharpening will be enabled */
+/**
+ * Reduction in linear dimensions below which sharpening will be enabled
+ */
 $wgSharpenReductionThreshold = 0.85;
 
 /**
@@ -843,13 +895,13 @@ $wgImageMagickTempDir = false;
  */
 $wgCustomConvertCommand = false;
 
-/** used for lossless jpeg rotation
+/**
+ * used for lossless jpeg rotation
  *
  * @since 1.21
- * **/
+ */
 $wgJpegTran = '/usr/bin/jpegtran';
 
-
 /**
  * Some tests and extensions use exiv2 to manipulate the Exif metadata in some
  * image formats.
@@ -875,16 +927,23 @@ $wgSVGConverters = array(
        'ImagickExt' => array( 'SvgHandler::rasterizeImagickExt' ),
 );
 
-/** Pick a converter defined in $wgSVGConverters */
+/**
+ * Pick a converter defined in $wgSVGConverters
+ */
 $wgSVGConverter = 'ImageMagick';
 
-/** If not in the executable PATH, specify the SVG converter path. */
+/**
+ * If not in the executable PATH, specify the SVG converter path.
+ */
 $wgSVGConverterPath = '';
 
-/** Don't scale a SVG larger than this */
+/**
+ * Don't scale a SVG larger than this
+ */
 $wgSVGMaxSize = 2048;
 
-/** Don't read SVG metadata beyond this point.
+/**
+ * Don't read SVG metadata beyond this point.
  * Default is 1024*256 bytes
  */
 $wgSVGMetadataCutoff = 262144;
@@ -916,6 +975,7 @@ $wgAllowTitlesInSVG = false;
  * 12.5 million pixels or 3500x3500.
  */
 $wgMaxImageArea = 1.25e7;
+
 /**
  * Force thumbnailing of animated GIFs above this size to a single
  * frame instead of an animated thumbnail.  As of MW 1.17 this limit
@@ -923,6 +983,7 @@ $wgMaxImageArea = 1.25e7;
  * It probably makes sense to keep this equal to $wgMaxImageArea.
  */
 $wgMaxAnimatedGifArea = 1.25e7;
+
 /**
  * Browsers don't support TIFF inline generally...
  * For inline display, we need to convert to PNG or JPEG.
@@ -973,7 +1034,9 @@ $wgGenerateThumbnailOnParse = true;
  */
 $wgShowArchiveThumbnails = true;
 
-/** Obsolete, always true, kept for compatibility with extensions */
+/**
+ * Obsolete, always true, kept for compatibility with extensions
+ */
 $wgUseImageResize = true;
 
 /**
@@ -1039,20 +1102,28 @@ $wgAntivirusSetup = array(
        ),
 );
 
-/** Determines if a failed virus scan (AV_SCAN_FAILED) will cause the file to be rejected. */
+/**
+ * Determines if a failed virus scan (AV_SCAN_FAILED) will cause the file to be rejected.
+ */
 $wgAntivirusRequired = true;
 
-/** Determines if the mime type of uploaded files should be checked */
+/**
+ * Determines if the mime type of uploaded files should be checked
+ */
 $wgVerifyMimeType = true;
 
-/** Sets the mime type definition file to use by MimeMagic.php. */
+/**
+ * Sets the mime type definition file to use by MimeMagic.php.
+ * Set to null, to use built-in defaults only.
+ * example: $wgMimeTypeFile = '/etc/mime.types';
+ */
 $wgMimeTypeFile = 'includes/mime.types';
-#$wgMimeTypeFile = '/etc/mime.types';
-#$wgMimeTypeFile = null; #use built-in defaults only.
 
-/** Sets the mime type info file to use by MimeMagic.php. */
+/**
+ * Sets the mime type info file to use by MimeMagic.php.
+ * Set to null, to use built-in defaults only.
+ */
 $wgMimeInfoFile = 'includes/mime.info';
-#$wgMimeInfoFile = null; #use built-in defaults only.
 
 /**
  * Switch for loading the FileInfo extension by PECL at runtime.
@@ -1061,7 +1132,8 @@ $wgMimeInfoFile = 'includes/mime.info';
  */
 $wgLoadFileinfoExtension = false;
 
-/** Sets an external mime detector program. The command must print only
+/**
+ * Sets an external mime detector program. The command must print only
  * the mime type to standard output.
  * The name of the file to process will be appended to the command given here.
  * If not set or NULL, mime_content_type will be used if available.
@@ -1131,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',
 );
 
 /**
@@ -1159,25 +1232,26 @@ $wgResponsiveImages = true;
  * @name DJVU settings
  * @{
  */
+
 /**
  * Path of the djvudump executable
  * Enable this and $wgDjvuRenderer to enable djvu rendering
+ * example: $wgDjvuDump = 'djvudump';
  */
-# $wgDjvuDump = 'djvudump';
 $wgDjvuDump = null;
 
 /**
  * Path of the ddjvu DJVU renderer
  * Enable this and $wgDjvuDump to enable djvu rendering
+ * example: $wgDjvuRenderer = 'ddjvu';
  */
-# $wgDjvuRenderer = 'ddjvu';
 $wgDjvuRenderer = null;
 
 /**
  * Path of the djvutxt DJVU text extraction utility
  * Enable this and $wgDjvuDump to enable text layer extraction from djvu files
+ * example: $wgDjvuTxt = 'djvutxt';
  */
-# $wgDjvuTxt = 'djvutxt';
 $wgDjvuTxt = null;
 
 /**
@@ -1202,10 +1276,12 @@ $wgDjvuToXML = null;
  * Set this to false to output the ppm file directly.
  */
 $wgDjvuPostProcessor = 'pnmtojpeg';
+
 /**
  * File extension for the DJVU post processor output
  */
 $wgDjvuOutputExtension = 'jpg';
+
 /** @} */ # end of DJvu }
 
 /** @} */ # end of file uploads }
@@ -1320,7 +1396,8 @@ $wgAllowHTMLEmail = false;
 $wgEnotifFromEditor = false;
 
 // TODO move UPO to preferences probably ?
-# If set to true, users get a corresponding option in their preferences and can choose to enable or disable at their discretion
+# If set to true, users get a corresponding option in their preferences and can choose to
+# enable or disable at their discretion
 # If set to false, the corresponding input form on the user preference page is suppressed
 # It call this to be a "user-preferences-option (UPO)"
 
@@ -1386,33 +1463,61 @@ $wgEnotifUseRealName = false;
  */
 $wgUsersNotifiedOnAllChanges = array();
 
-
 /** @} */ # end of email settings
 
 /************************************************************************//**
  * @name   Database settings
  * @{
  */
-/** Database host name or IP address */
+
+/**
+ * Database host name or IP address
+ */
 $wgDBserver = 'localhost';
-/** Database port number (for PostgreSQL) */
+
+/**
+ * Database port number (for PostgreSQL)
+ */
 $wgDBport = 5432;
-/** Name of the database */
+
+/**
+ * Name of the database
+ */
 $wgDBname = 'my_wiki';
-/** Database username */
+
+/**
+ * Database username
+ */
 $wgDBuser = 'wikiuser';
-/** Database user's password */
+
+/**
+ * Database user's password
+ */
 $wgDBpassword = '';
-/** Database type */
+
+/**
+ * Database type
+ */
 $wgDBtype = 'mysql';
-/** Whether to use SSL in DB connection. */
+
+/**
+ * Whether to use SSL in DB connection.
+ */
 $wgDBssl = false;
-/** Whether to use compression in DB connection. */
+
+/**
+ * Whether to use compression in DB connection.
+ */
 $wgDBcompress = false;
 
-/** Separate username for maintenance tasks. Leave as null to use the default. */
+/**
+ * Separate username for maintenance tasks. Leave as null to use the default.
+ */
 $wgDBadminuser = null;
-/** Separate password for maintenance tasks. Leave as null to use the default. */
+
+/**
+ * Separate password for maintenance tasks. Leave as null to use the default.
+ */
 $wgDBadminpassword = null;
 
 /**
@@ -1423,9 +1528,23 @@ $wgDBadminpassword = null;
  */
 $wgSearchType = null;
 
-/** Table name prefix */
+/**
+ * Alternative search types
+ * Sometimes you want to support multiple search engines for testing. This
+ * allows users to select their search engine of choice via url parameters
+ * to Special:Search and the action=search API. If using this, there's no
+ * need to add $wgSearchType to it, that is handled automatically.
+ */
+$wgSearchTypeAlternatives = null;
+
+/**
+ * Table name prefix
+ */
 $wgDBprefix = '';
-/** MySQL table options to use during installation or update */
+
+/**
+ * MySQL table options to use during installation or update
+ */
 $wgDBTableOptions = 'ENGINE=InnoDB';
 
 /**
@@ -1436,10 +1555,14 @@ $wgDBTableOptions = 'ENGINE=InnoDB';
  */
 $wgSQLMode = '';
 
-/** Mediawiki schema */
+/**
+ * Mediawiki schema
+ */
 $wgDBmwschema = 'mediawiki';
 
-/** To override default SQLite data directory ($docroot/../data) */
+/**
+ * To override default SQLite data directory ($docroot/../data)
+ */
 $wgSQLiteDataDir = '';
 
 /**
@@ -1473,9 +1596,14 @@ $wgAllDBsAreLocalhost = false;
  */
 $wgSharedDB = null;
 
-/** @see $wgSharedDB */
+/**
+ * @see $wgSharedDB
+ */
 $wgSharedPrefix = false;
-/** @see $wgSharedDB */
+
+/**
+ * @see $wgSharedDB
+ */
 $wgSharedTables = array( 'user', 'user_properties' );
 
 /**
@@ -1499,7 +1627,8 @@ $wgSharedTables = array( 'user', 'user_properties' );
  *                  - DBO_NOBUFFER -- turn off buffering (not useful in LocalSettings.php)
  *                  - DBO_PERSISTENT -- enables persistent database connections
  *                  - DBO_SSL -- uses SSL/TLS encryption in database connections, if available
- *                  - DBO_COMPRESS -- uses internal compression in database connections, if available
+ *                  - DBO_COMPRESS -- uses internal compression in database connections,
+ *                                    if available
  *
  *   - max lag:     (optional) Maximum replication lag before a slave will taken out of rotation
  *   - max threads: (optional) Maximum number of running threads
@@ -1538,10 +1667,14 @@ $wgDBservers = false;
  */
 $wgLBFactoryConf = array( 'class' => 'LBFactory_Simple' );
 
-/** How long to wait for a slave to catch up to the master */
+/**
+ * How long to wait for a slave to catch up to the master
+ */
 $wgMasterWaitTimeout = 10;
 
-/** File to log database errors to */
+/**
+ * File to log database errors to
+ */
 $wgDBerrorLog = false;
 
 /**
@@ -1564,7 +1697,9 @@ $wgDBerrorLog = false;
  */
 $wgDBerrorLogTZ = false;
 
-/** When to give an error message */
+/**
+ * When to give an error message
+ */
 $wgDBClusterTimeout = 10;
 
 /**
@@ -1634,7 +1769,10 @@ $wgLocalDatabases = array();
  * show a more obvious warning.
  */
 $wgSlaveLagWarning = 10;
-/** @see $wgSlaveLagWarning */
+
+/**
+ * @see $wgSlaveLagWarning
+ */
 $wgSlaveLagCritical = 30;
 
 /**@}*/ # End of DB settings }
@@ -1647,8 +1785,8 @@ $wgSlaveLagCritical = 30;
 /**
  * We can also compress text stored in the 'text' table. If this is set on, new
  * revisions will be compressed on page save if zlib support is available. Any
- * compressed revisions will be decompressed on load regardless of this setting
- * *but will not be readable at all* if zlib support is not available.
+ * compressed revisions will be decompressed on load regardless of this setting,
+ * but will not be readable at all* if zlib support is not available.
  */
 $wgCompressRevisions = false;
 
@@ -1711,17 +1849,35 @@ $wgRevisionCacheExpiry = 0;
  * @name   Performance hacks and limits
  * @{
  */
-/** Disable database-intensive features */
+
+/**
+ * Disable database-intensive features
+ */
 $wgMiserMode = false;
-/** Disable all query pages if miser mode is on, not just some */
+
+/**
+ * Disable all query pages if miser mode is on, not just some
+ */
 $wgDisableQueryPages = false;
-/** Number of rows to cache in 'querycache' table when miser mode is on */
+
+/**
+ * Number of rows to cache in 'querycache' table when miser mode is on
+ */
 $wgQueryCacheLimit = 1000;
-/** Number of links to a page required before it is deemed "wanted" */
+
+/**
+ * Number of links to a page required before it is deemed "wanted"
+ */
 $wgWantedPagesThreshold = 1;
-/** Enable slow parser functions */
+
+/**
+ * Enable slow parser functions
+ */
 $wgAllowSlowParserFunctions = false;
-/** Allow schema updates */
+
+/**
+ * Allow schema updates
+ */
 $wgAllowSchemaUpdates = true;
 
 /**
@@ -1896,10 +2052,14 @@ $wgObjectCacheSessionExpiry = 3600;
  */
 $wgSessionHandler = null;
 
-/** If enabled, will send MemCached debugging information to $wgDebugLogFile */
+/**
+ * If enabled, will send MemCached debugging information to $wgDebugLogFile
+ */
 $wgMemCachedDebug = false;
 
-/** The list of MemCached servers and port numbers */
+/**
+ * The list of MemCached servers and port numbers
+ */
 $wgMemCachedServers = array( '127.0.0.1:11211' );
 
 /**
@@ -1955,7 +2115,9 @@ $wgLocalisationCacheConf = array(
        'manualRecache' => false,
 );
 
-/** Allow client-side caching of pages */
+/**
+ * Allow client-side caching of pages
+ */
 $wgCachePages = true;
 
 /**
@@ -2041,7 +2203,8 @@ $wgUseGzip = false;
  */
 $wgUseETag = false;
 
-/** Clock skew or the one-second resolution of time() can occasionally cause cache
+/**
+ * Clock skew or the one-second resolution of time() can occasionally cause cache
  * problems when the user requests two pages within a short period of time. This
  * variable adds a given number of seconds to vulnerable timestamps, thereby giving
  * a grace period.
@@ -2080,13 +2243,18 @@ $wgInvalidateCacheOnLocalSettingsChange = true;
  */
 $wgUseSquid = false;
 
-/** If you run Squid3 with ESI support, enable this (default:false): */
+/**
+ * If you run Squid3 with ESI support, enable this (default:false):
+ */
 $wgUseESI = false;
 
-/** Send X-Vary-Options header for better caching (requires patched Squid) */
+/**
+ * Send X-Vary-Options header for better caching (requires patched Squid)
+ */
 $wgUseXVO = false;
 
-/** Add X-Forwarded-Proto to the Vary and X-Vary-Options headers for API
+/**
+ * Add X-Forwarded-Proto to the Vary and X-Vary-Options headers for API
  * requests and RSS/Atom feeds. Use this if you have an SSL termination setup
  * and need to split the cache between HTTP and HTTPS for API requests,
  * feed requests and HTTP redirect responses in order to prevent cache
@@ -2134,7 +2302,9 @@ $wgSquidServers = array();
  */
 $wgSquidServersNoPurge = array();
 
-/** Maximum number of titles to purge in any one client operation */
+/**
+ * Maximum number of titles to purge in any one client operation
+ */
 $wgMaxSquidPurgeTitles = 400;
 
 /**
@@ -2253,7 +2423,9 @@ $wgHTCPPort = 4827;
  */
 $wgHTCPMulticastTTL = 1;
 
-/** Should forwarded Private IPs be accepted? */
+/**
+ * Should forwarded Private IPs be accepted?
+ */
 $wgUsePrivateIPs = false;
 
 /** @} */ # end of HTTP proxy settings
@@ -2297,13 +2469,19 @@ $wgLangObjCacheSize = 10;
  */
 $wgGrammarForms = array();
 
-/** Treat language links as magic connectors, not inline links */
+/**
+ * Treat language links as magic connectors, not inline links
+ */
 $wgInterwikiMagic = true;
 
-/** Hide interlanguage links from the sidebar */
+/**
+ * Hide interlanguage links from the sidebar
+ */
 $wgHideInterlanguageLinks = false;
 
-/** List of language names or overrides for default names in Names.php */
+/**
+ * List of language names or overrides for default names in Names.php
+ */
 $wgExtraLanguageNames = array();
 
 /**
@@ -2403,7 +2581,8 @@ $wgBrowserBlackList = array(
        '/^Mozilla\/4\.[^ ]+ [^(]*?\((?!compatible).*; [UIN]/',
 
        /**
-        * MSIE on Mac OS 9 is teh sux0r, converts þ to <thorn>, ð to <eth>, Þ to <THORN> and Ð to <ETH>
+        * MSIE on Mac OS 9 is teh sux0r, converts þ to <thorn>, ð to <eth>,
+        * Þ to <THORN> and Ð to <ETH>
         *
         * Known useragents:
         * - Mozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC)
@@ -2411,7 +2590,7 @@ $wgBrowserBlackList = array(
         * - Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC)
         * - [...]
         *
-        * @link http://en.wikipedia.org/w/index.php?title=User%3A%C6var_Arnfj%F6r%F0_Bjarmason%2Ftestme&diff=12356041&oldid=12355864
+        * @link http://en.wikipedia.org/w/index.php?diff=12356041&oldid=12355864
         * @link http://en.wikipedia.org/wiki/Template%3AOS9
         */
        '/^Mozilla\/4\.0 \(compatible; MSIE \d+\.\d+; Mac_PowerPC\)/',
@@ -2442,6 +2621,7 @@ $wgLegacySchemaConversion = false;
  * the interface is set to English.
  */
 $wgAmericanDates = false;
+
 /**
  * For Hindi and Arabic use local numerals instead of Western style (0-9)
  * numerals in interface.
@@ -2464,16 +2644,24 @@ $wgMsgCacheExpiry = 86400;
  */
 $wgMaxMsgCacheEntrySize = 10000;
 
-/** Whether to enable language variant conversion. */
+/**
+ * Whether to enable language variant conversion.
+ */
 $wgDisableLangConversion = false;
 
-/** Whether to enable language variant conversion for links. */
+/**
+ * Whether to enable language variant conversion for links.
+ */
 $wgDisableTitleConversion = false;
 
-/** Whether to enable canonical language links in meta data. */
+/**
+ * Whether to enable canonical language links in meta data.
+ */
 $wgCanonicalLanguageLinks = true;
 
-/** Default variant code, if false, the default will be the language code */
+/**
+ * Default variant code, if false, the default will be the language code
+ */
 $wgDefaultLanguageVariant = false;
 
 /**
@@ -2577,7 +2765,9 @@ $wgLocalTZoffset = null;
  * @{
  */
 
-/** The default Content-Type header. */
+/**
+ * The default Content-Type header.
+ */
 $wgMimeType = 'text/html';
 
 /**
@@ -2707,7 +2897,10 @@ $wgDefaultSkin = 'vector';
  * remove from the .../skins/ directory
  */
 $wgSkipSkin = '';
-/** Array for more like $wgSkipSkin. */
+
+/**
+ * Array for more like $wgSkipSkin.
+ */
 $wgSkipSkins = array();
 
 /**
@@ -2731,10 +2924,14 @@ $wgAllowUserCss = false;
  */
 $wgAllowUserCssPrefs = true;
 
-/** Use the site's Javascript page? */
+/**
+ * Use the site's Javascript page?
+ */
 $wgUseSiteJs = true;
 
-/** Use the site's Cascading Style Sheets (CSS)? */
+/**
+ * Use the site's Cascading Style Sheets (CSS)?
+ */
 $wgUseSiteCss = true;
 
 /**
@@ -2808,9 +3005,10 @@ $wgExperimentalHtmlIds = false;
  * The value should be either a string or an array. If it is a string it will be output
  * directly as html, however some skins may choose to ignore it. An array is the preferred format
  * for the icon, the following keys are used:
- *  - src: An absolute url to the image to use for the icon, this is recommended
+ * - src: An absolute url to the image to use for the icon, this is recommended
  *        but not required, however some skins will ignore icons without an image
- * - url: The url to use in the a element around the text or icon, if not set an a element will not be outputted
+ * - url: The url to use in the a element around the text or icon, if not set an a element will
+ *        not be outputted
  * - alt: This is the text form of the icon, it will be displayed without an image in
  *        skins like Modern or if src is not set, and will otherwise be used as
  *        the alt="" for the image. This key is required.
@@ -3170,7 +3368,8 @@ $wgNamespaceAliases = array();
  *   -  []{}|#    Are needed for link syntax, never enable these
  *   -  <>        Causes problems with HTML escaping, don't use
  *   -  %         Enabled by default, minor problems with path to query rewrite rules, see below
- *   -  +         Enabled by default, but doesn't work with path to query rewrite rules, corrupted by apache
+ *   -  +         Enabled by default, but doesn't work with path to query rewrite rules,
+ *                corrupted by apache
  *   -  ?         Enabled by default, but doesn't work with path to PATH_INFO rewrites
  *
  * All three of these punctuation problems can be avoided by using an alias,
@@ -3204,6 +3403,7 @@ $wgInterwikiExpiry = 10800;
  * @name Interwiki caching settings.
  * @{
  */
+
 /**
  *$wgInterwikiCache specifies path to constant database file.
  *
@@ -3218,6 +3418,7 @@ $wgInterwikiExpiry = 10800;
  * data layout.
  */
 $wgInterwikiCache = false;
+
 /**
  * Specify number of domains to check for messages.
  *    - 1: Just wiki(db)-level
@@ -3225,10 +3426,12 @@ $wgInterwikiCache = false;
  *    - 3: site levels
  */
 $wgInterwikiScopes = 3;
+
 /**
- *    $wgInterwikiFallbackSite - if unable to resolve from cache
+ * Fallback site, if unable to resolve from cache
  */
 $wgInterwikiFallbackSite = 'wiki';
+
 /** @} */ # end of Interwiki caching settings.
 
 /**
@@ -3273,7 +3476,8 @@ $wgCapitalLinks = true;
  */
 $wgCapitalLinkOverrides = array();
 
-/** Which namespaces should support subpages?
+/**
+ * Which namespaces should support subpages?
  * See Language.php for a list of namespaces.
  */
 $wgNamespacesWithSubpages = array(
@@ -3352,7 +3556,9 @@ $wgParserConf = array(
        #'preprocessorClass' => 'Preprocessor_Hash',
 );
 
-/** Maximum indent level of toc. */
+/**
+ * Maximum indent level of toc.
+ */
 $wgMaxTocLevel = 999;
 
 /**
@@ -3380,10 +3586,14 @@ $wgMaxGeneratedPPNodeCount = 1000000;
  */
 $wgMaxTemplateDepth = 40;
 
-/** @see $wgMaxTemplateDepth */
+/**
+ * @see $wgMaxTemplateDepth
+ */
 $wgMaxPPExpandDepth = 40;
 
-/** The external URL protocols */
+/**
+ * The external URL protocols
+ */
 $wgUrlProtocols = array(
        'http://',
        'https://',
@@ -3410,7 +3620,7 @@ $wgUrlProtocols = array(
        'bitcoin:', // Even registerProtocolHandler whitelists this along with mailto:
        'magnet:', // No reason to reject torrents over magnet: when they're allowed over http://
        'urn:', // Allow URNs to be used in Microdata/RDFa <link ... href="urn:...">s
-       'geo:', // geo: urls define locations, they're useful in Microdata/RDFa and when mentioning coordinates.
+       'geo:', // urls define geo locations, they're useful in Microdata/RDFa and for coordinates
        '//', // for protocol-relative URLs
 );
 
@@ -3419,7 +3629,9 @@ $wgUrlProtocols = array(
  */
 $wgCleanSignatures = true;
 
-/**  Whether to allow inline image pointing to other websites */
+/**
+ * Whether to allow inline image pointing to other websites
+ */
 $wgAllowExternalImages = false;
 
 /**
@@ -3436,7 +3648,8 @@ $wgAllowExternalImages = false;
  */
 $wgAllowExternalImagesFrom = '';
 
-/** If $wgAllowExternalImages is false, you can allow an on-wiki
+/**
+ * If $wgAllowExternalImages is false, you can allow an on-wiki
  * whitelist of regular expression fragments to match the image URL
  * against. If the image matches one of the regular expression fragments,
  * The image will be displayed.
@@ -3472,15 +3685,30 @@ $wgAllowImageTag = false;
  *   'extension=tidy.so' to php.ini.
  */
 $wgUseTidy = false;
-/** @see $wgUseTidy */
+
+/**
+ * @see $wgUseTidy
+ */
 $wgAlwaysUseTidy = false;
-/** @see $wgUseTidy */
+
+/**
+ * @see $wgUseTidy
+ */
 $wgTidyBin = 'tidy';
-/** @see $wgUseTidy */
+
+/**
+ * @see $wgUseTidy
+ */
 $wgTidyConf = $IP . '/includes/tidy.conf';
-/** @see $wgUseTidy */
+
+/**
+ * @see $wgUseTidy
+ */
 $wgTidyOpts = '';
-/** @see $wgUseTidy */
+
+/**
+ * @see $wgUseTidy
+ */
 $wgTidyInternal = extension_loaded( 'tidy' );
 
 /**
@@ -3489,7 +3717,8 @@ $wgTidyInternal = extension_loaded( 'tidy' );
  */
 $wgDebugTidy = false;
 
-/** Allow raw, unchecked HTML in "<html>...</html>" sections.
+/**
+ * Allow raw, unchecked HTML in "<html>...</html>" sections.
  * THIS IS VERY DANGEROUS on a publicly editable site, so USE wgGroupPermissions
  * TO RESTRICT EDITING to only those that you trust
  */
@@ -3622,7 +3851,9 @@ $wgActiveUserDays = 30;
  * @{
  */
 
-/** For compatibility with old installations set to false */
+/**
+ * For compatibility with old installations set to false
+ */
 $wgPasswordSalt = true;
 
 /**
@@ -3736,7 +3967,9 @@ $wgDefaultUserOptions = array(
        'useeditwarning' => 1,
 );
 
-/** An array of preferences to not show for the user */
+/**
+ * An array of preferences to not show for the user
+ */
 $wgHiddenPrefs = array();
 
 /**
@@ -3789,7 +4022,9 @@ $wgAutoblockExpiry = 86400;
  */
 $wgBlockAllowsUTEdit = false;
 
-/** Allow sysops to ban users from accessing Emailuser */
+/**
+ * Allow sysops to ban users from accessing Emailuser
+ */
 $wgSysopEmailBans = true;
 
 /**
@@ -3952,9 +4187,12 @@ $wgGroupPermissions['bot']['writeapi'] = true;
 $wgGroupPermissions['sysop']['block'] = true;
 $wgGroupPermissions['sysop']['createaccount'] = true;
 $wgGroupPermissions['sysop']['delete'] = true;
-$wgGroupPermissions['sysop']['bigdelete'] = true; // can be separately configured for pages with > $wgDeleteRevisionsLimit revs
-$wgGroupPermissions['sysop']['deletedhistory'] = true; // can view deleted history entries, but not see or restore the text
-$wgGroupPermissions['sysop']['deletedtext'] = true; // can view deleted revision text
+// can be separately configured for pages with > $wgDeleteRevisionsLimit revs
+$wgGroupPermissions['sysop']['bigdelete'] = true;
+// can view deleted history entries, but not see or restore the text
+$wgGroupPermissions['sysop']['deletedhistory'] = true;
+// can view deleted revision text
+$wgGroupPermissions['sysop']['deletedtext'] = true;
 $wgGroupPermissions['sysop']['undelete'] = true;
 $wgGroupPermissions['sysop']['editinterface'] = true;
 $wgGroupPermissions['sysop']['editusercss'] = true;
@@ -4054,7 +4292,9 @@ $wgImplicitGroups = array( '*', 'user', 'autoconfirmed' );
  */
 $wgGroupsAddToSelf = array();
 
-/** @see $wgGroupsAddToSelf */
+/**
+ * @see $wgGroupsAddToSelf
+ */
 $wgGroupsRemoveFromSelf = array();
 
 /**
@@ -4226,7 +4466,10 @@ $wgAutopromoteOnceLogInRC = true;
  * @endcode
  */
 $wgAddGroups = array();
-/** @see $wgAddGroups */
+
+/**
+ * @see $wgAddGroups
+ */
 $wgRemoveGroups = array();
 
 /**
@@ -4261,7 +4504,9 @@ $wgAccountCreationThrottle = 0;
  */
 $wgSpamRegex = array();
 
-/** Same as the above except for edit summaries */
+/**
+ * Same as the above except for edit summaries
+ */
 $wgSummarySpamRegex = array();
 
 /**
@@ -4410,13 +4655,25 @@ $wgPasswordAttemptThrottle = array( 'count' => 5, 'seconds' => 300 );
  * You have been warned.
  */
 $wgBlockOpenProxies = false;
-/** Port we want to scan for a proxy */
+
+/**
+ * Port we want to scan for a proxy
+ */
 $wgProxyPorts = array( 80, 81, 1080, 3128, 6588, 8000, 8080, 8888, 65506 );
-/** Script used to scan */
+
+/**
+ * Script used to scan
+ */
 $wgProxyScriptPath = "$IP/maintenance/proxyCheck.php";
-/** Expiration time for cached proxy IPs */
+
+/**
+ * Expiration time for cached proxy IPs
+ */
 $wgProxyMemcExpiry = 86400;
-/** This should always be customised in LocalSettings.php */
+
+/**
+ * This should always be customised in LocalSettings.php
+ */
 $wgSecretKey = false;
 
 /**
@@ -4500,10 +4757,14 @@ $wgHttpOnlyBlacklist = array(
        '/^Mozilla\/4\.0 \(compatible; MSIE \d+\.\d+; Mac_PowerPC\)/',
 );
 
-/** A list of cookies that vary the cache (for use by extensions) */
+/**
+ * A list of cookies that vary the cache (for use by extensions)
+ */
 $wgCacheVaryCookies = array();
 
-/** Override to customise the session name */
+/**
+ * Override to customise the session name
+ */
 $wgSessionName = false;
 
 /** @} */ # end of cookie settings }
@@ -4660,10 +4921,14 @@ $wgDevelopmentWarnings = false;
  */
 $wgDeprecationReleaseLimit = false;
 
-/** Only record profiling info for pages that took longer than this */
+/**
+ * Only record profiling info for pages that took longer than this
+ */
 $wgProfileLimit = 0.0;
 
-/** Don't put non-profiling info into log file */
+/**
+ * Don't put non-profiling info into log file
+ */
 $wgProfileOnly = false;
 
 /**
@@ -4678,10 +4943,14 @@ $wgProfileOnly = false;
  */
 $wgProfileToDatabase = false;
 
-/** If true, print a raw call tree instead of per-function report */
+/**
+ * If true, print a raw call tree instead of per-function report
+ */
 $wgProfileCallTree = false;
 
-/** Should application server host be put into profiling table */
+/**
+ * Should application server host be put into profiling table
+ */
 $wgProfilePerHost = false;
 
 /**
@@ -4698,10 +4967,14 @@ $wgUDPProfilerHost = '127.0.0.1';
  */
 $wgUDPProfilerPort = '3811';
 
-/** Detects non-matching wfProfileIn/wfProfileOut calls */
+/**
+ * Detects non-matching wfProfileIn/wfProfileOut calls
+ */
 $wgDebugProfiling = false;
 
-/** Output debug message on every wfProfileIn/wfProfileOut */
+/**
+ * Output debug message on every wfProfileIn/wfProfileOut
+ */
 $wgDebugFunctionEntry = false;
 
 /**
@@ -4720,7 +4993,8 @@ $wgStatsMethod = 'cache';
  */
 $wgAggregateStatsID = false;
 
-/** Whereas to count the number of time an article is viewed.
+/**
+ * Whereas to count the number of time an article is viewed.
  * Does not work if pages are cached (for example with squid).
  */
 $wgDisableCounters = false;
@@ -4992,7 +5266,9 @@ $wgPreviewOnOpenNamespaces = array(
        NS_CATEGORY => true
 );
 
-/** Go button goes straight to the edit screen if the article doesn't exist. */
+/**
+ * Go button goes straight to the edit screen if the article doesn't exist.
+ */
 $wgGoToEdit = false;
 
 /**
@@ -5026,7 +5302,9 @@ if ( !isset( $wgCommandLineMode ) ) {
 }
 /** @endcond */
 
-/** For colorized maintenance script output, is your terminal background dark ? */
+/**
+ * For colorized maintenance script output, is your terminal background dark ?
+ */
 $wgCommandLineDarkBg = false;
 
 /**
@@ -5085,7 +5363,8 @@ $wgGitBin = '/usr/bin/git';
  */
 $wgGitRepositoryViewers = array(
        'https://gerrit.wikimedia.org/r/p/(.*)' => 'https://git.wikimedia.org/commit/%r/%H',
-       'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)' => 'https://git.wikimedia.org/commit/%r/%H',
+       'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)'
+               => 'https://git.wikimedia.org/commit/%r/%H',
 );
 
 /** @} */ # End of maintenance }
@@ -5156,23 +5435,34 @@ $wgRC2UDPOmitBots = false;
  */
 $wgEnableNewpagesUserFilter = true;
 
-/** Use RC Patrolling to check for vandalism */
+/**
+ * Use RC Patrolling to check for vandalism
+ */
 $wgUseRCPatrol = true;
 
-/** Use new page patrolling to check new pages on Special:Newpages */
+/**
+ * Use new page patrolling to check new pages on Special:Newpages
+ */
 $wgUseNPPatrol = true;
 
-/** Log autopatrol actions to the log table */
+/**
+ * Log autopatrol actions to the log table
+ */
 $wgLogAutopatrol = true;
 
-/** Provide syndication feeds (RSS, Atom) for, e.g., Recentchanges, Newpages */
+/**
+ * Provide syndication feeds (RSS, Atom) for, e.g., Recentchanges, Newpages
+ */
 $wgFeed = true;
 
-/** Set maximum number of results to return in syndication feeds (RSS, Atom) for
- * eg Recentchanges, Newpages. */
+/**
+ * Set maximum number of results to return in syndication feeds (RSS, Atom) for
+ * eg Recentchanges, Newpages.
+ */
 $wgFeedLimit = 50;
 
-/** _Minimum_ timeout for cached Recentchanges feed, in seconds.
+/**
+ * _Minimum_ timeout for cached Recentchanges feed, in seconds.
  * A cached version will continue to be served out even if changes
  * are made, until this many seconds runs out since the last render.
  *
@@ -5181,11 +5471,14 @@ $wgFeedLimit = 50;
  */
 $wgFeedCacheTimeout = 60;
 
-/** When generating Recentchanges RSS/Atom feed, diffs will not be generated for
- * pages larger than this size. */
+/**
+ * When generating Recentchanges RSS/Atom feed, diffs will not be generated for
+ * pages larger than this size.
+ */
 $wgFeedDiffCutoff = 32768;
 
-/** Override the site's default RSS/ATOM feed for recentchanges that appears on
+/**
+ * Override the site's default RSS/ATOM feed for recentchanges that appears on
  * every page. Some sites might have a different feed they'd like to promote
  * instead of the RC feed (maybe like a "Recent New Articles" or "Breaking news" one).
  * Should be a format as key (either 'rss' or 'atom') and an URL to the feed
@@ -5214,11 +5507,19 @@ $wgFeedClasses = array(
  */
 $wgAdvertisedFeedTypes = array( 'atom' );
 
-/** Show watching users in recent changes, watchlist and page history views */
+/**
+ * Show watching users in recent changes, watchlist and page history views
+ */
 $wgRCShowWatchingUsers = false; # UPO
-/** Show watching users in Page views */
+
+/**
+ * Show watching users in Page views
+ */
 $wgPageShowWatchingUsers = false;
-/** Show the amount of changed characters in recent changes */
+
+/**
+ * Show the amount of changed characters in recent changes
+ */
 $wgRCShowChangedSize = true;
 
 /**
@@ -5230,7 +5531,8 @@ $wgRCChangedSizeThreshold = 500;
 
 /**
  * Show "Updated (since my last visit)" marker in RC view, watchlist and history
- * view for watched pages with new changes */
+ * view for watched pages with new changes
+ */
 $wgShowUpdatedMarker = true;
 
 /**
@@ -5303,15 +5605,17 @@ $wgRecentChangesFlags = array(
 $wgRightsPage = null;
 
 /**
- * Set this to specify an external URL containing details about the content license used on your wiki.
+ * Set this to specify an external URL containing details about the content license used on your
+ * wiki.
  * If $wgRightsPage is set then this setting is ignored.
  */
 $wgRightsUrl = null;
 
 /**
- * If either $wgRightsUrl or $wgRightsPage is specified then this variable gives the text for the link.
- * If using $wgRightsUrl then this value must be specified. If using $wgRightsPage then the name of the
- * page will also be used as the link if this variable is not set.
+ * If either $wgRightsUrl or $wgRightsPage is specified then this variable gives the text for the
+ * link.
+ * If using $wgRightsUrl then this value must be specified. If using $wgRightsPage then the name
+ * of the page will also be used as the link if this variable is not set.
  */
 $wgRightsText = null;
 
@@ -5331,7 +5635,9 @@ $wgLicenseTerms = false;
  */
 $wgCopyrightIcon = null;
 
-/** Set this to true if you want detailed copyright information forms on Upload. */
+/**
+ * Set this to true if you want detailed copyright information forms on Upload.
+ */
 $wgUseCopyrightUpload = false;
 
 /**
@@ -5343,8 +5649,10 @@ $wgUseCopyrightUpload = false;
  */
 $wgMaxCredits = 0;
 
-/** If there are more than $wgMaxCredits authors, show $wgMaxCredits of them.
- * Otherwise, link to a separate credits page. */
+/**
+ * If there are more than $wgMaxCredits authors, show $wgMaxCredits of them.
+ * Otherwise, link to a separate credits page.
+ */
 $wgShowCreditsIfMax = true;
 
 /** @} */ # end of copyright and credits settings }
@@ -6279,7 +6587,9 @@ $wgMaxBacklinksInvalidate = false;
  * @{
  */
 
-/** Name of the external diff engine to use */
+/**
+ * Name of the external diff engine to use
+ */
 $wgExternalDiffEngine = false;
 
 /**
@@ -6349,16 +6659,18 @@ $wgPoolCounterConf = null;
 $wgUploadMaintenance = false;
 
 /**
- * Associative array mapping namespace IDs to the name of the content model pages in that namespace should have by
- * default (use the CONTENT_MODEL_XXX constants). If no special content type is defined for a given namespace,
- * pages in that namespace will  use the CONTENT_MODEL_WIKITEXT (except for the special case of JS and CS pages).
+ * Associative array mapping namespace IDs to the name of the content model pages in that namespace
+ * should have by default (use the CONTENT_MODEL_XXX constants). If no special content type is
+ * defined for a given namespace, pages in that namespace will use the CONTENT_MODEL_WIKITEXT
+ * (except for the special case of JS and CS pages).
  *
  * @since 1.21
  */
 $wgNamespaceContentModels = array();
 
 /**
- * How to react if a plain text version of a non-text Content object is requested using ContentHandler::getContentText():
+ * How to react if a plain text version of a non-text Content object is requested using
+ * ContentHandler::getContentText():
  *
  * * 'ignore': return null
  * * 'fail': throw an MWException
@@ -6370,14 +6682,14 @@ $wgContentHandlerTextFallback = 'ignore';
 
 /**
  * Set to false to disable use of the database fields introduced by the ContentHandler facility.
- * This way, the ContentHandler facility can be used without any additional information in the database.
- * A page's content model is then derived solely from the page's title. This however means that changing
- * a page's default model (e.g. using $wgNamespaceContentModels) will break the page and/or make the content
- * inaccessible. This also means that pages can not be moved to a title that would default to a different
- * content model.
- *
- * Overall, with $wgContentHandlerUseDB = false, no database updates are needed, but content handling
- * is less robust and less flexible.
+ * This way, the ContentHandler facility can be used without any additional information in the
+ * database. A page's content model is then derived solely from the page's title. This however
+ * means that changing a page's default model (e.g. using $wgNamespaceContentModels) will break
+ * the page and/or make the content inaccessible. This also means that pages can not be moved to
+ * a title that would default to a different content model.
+ *
+ * Overall, with $wgContentHandlerUseDB = false, no database updates are needed, but content
+ * handling is less robust and less flexible.
  *
  * @since 1.21
  */
index 1b59430..fe1ca00 100644 (file)
@@ -1178,20 +1178,20 @@ class EditPage {
         * marked HttpOnly. The JavaScript code converts the cookie to a wgPostEdit config
         * variable.
         *
-        * Since WebResponse::setcookie does not allow forcing HttpOnly for a single
-        * cookie, we have to use PHP's setcookie() directly.
-        *
         * We use a path of '/' since wgCookiePath is not exposed to JS
         *
         * If the variable were set on the server, it would be cached, which is unwanted
         * since the post-edit state should only apply to the load right after the save.
         */
        protected function setPostEditCookie() {
-               global $wgCookiePrefix, $wgCookieDomain;
                $revisionId = $this->mArticle->getLatest();
                $postEditKey = self::POST_EDIT_COOKIE_KEY_PREFIX . $revisionId;
 
-               setcookie( $wgCookiePrefix . $postEditKey, '1', time() + self::POST_EDIT_COOKIE_DURATION, '/', $wgCookieDomain );
+               $response = RequestContext::getMain()->getRequest()->response();
+               $response->setcookie( $postEditKey, '1', time() + self::POST_EDIT_COOKIE_DURATION, array(
+                       'path' => '/',
+                       'httpOnly' => false,
+               ) );
        }
 
        /**
@@ -2279,6 +2279,9 @@ class EditPage {
                $wgOut->addHTML( Html::rawElement( 'div', array( 'class' => 'hiddencats' ),
                        Linker::formatHiddenCategories( $this->mArticle->getHiddenCategories() ) ) );
 
+               $wgOut->addHTML( Html::rawElement( 'div', array( 'class' => 'limitreport' ),
+                       self::getPreviewLimitReport( $this->mParserOutput ) ) );
+
                $wgOut->addModules( 'mediawiki.action.edit.collapsibleFooter' );
 
                if ( $this->isConflict ) {
@@ -2858,6 +2861,59 @@ HTML
                        call_user_func_array( 'wfMessage', $copywarnMsg )->plain() . "\n</div>";
        }
 
+       /**
+        * Get the Limit report for page previews
+        *
+        * @since 1.22
+        * @param ParserOutput $output ParserOutput object from the parse
+        * @return string HTML
+        */
+       public static function getPreviewLimitReport( $output ) {
+               if ( !$output || !$output->getLimitReportData() ) {
+                       return '';
+               }
+
+               wfProfileIn( __METHOD__ );
+
+               $limitReport = Html::rawElement( 'div', array( 'class' => 'mw-limitReportExplanation' ),
+                       wfMessage( 'limitreport-title' )->parseAsBlock()
+               );
+
+               // Show/hide animation doesn't work correctly on a table, so wrap it in a div.
+               $limitReport .= Html::openElement( 'div', array( 'class' => 'preview-limit-report-wrapper' ) );
+
+               $limitReport .= Html::openElement( 'table', array(
+                       'class' => 'preview-limit-report wikitable'
+               ) ) .
+                       Html::openElement( 'tbody' );
+
+               foreach ( $output->getLimitReportData() as $key => $value ) {
+                       if ( wfRunHooks( 'ParserLimitReportFormat',
+                               array( $key, $value, &$limitReport, true, true )
+                       ) ) {
+                               $keyMsg = wfMessage( $key );
+                               $valueMsg = wfMessage( array( "$key-value-html", "$key-value" ) );
+                               if ( !$valueMsg->exists() ) {
+                                       $valueMsg = new RawMessage( '$1' );
+                               }
+                               if ( !$keyMsg->isDisabled() && !$valueMsg->isDisabled() ) {
+                                       $limitReport .= Html::openElement( 'tr' ) .
+                                               Html::rawElement( 'th', null, $keyMsg->parse() ) .
+                                               Html::rawElement( 'td', null, $valueMsg->params( $value )->parse() ) .
+                                               Html::closeElement( 'tr' );
+                               }
+                       }
+               }
+
+               $limitReport .= Html::closeElement( 'tbody' ) .
+                       Html::closeElement( 'table' ) .
+                       Html::closeElement( 'div' );
+
+               wfProfileOut( __METHOD__ );
+
+               return $limitReport;
+       }
+
        protected function showStandardInputs( &$tabindex = 2 ) {
                global $wgOut;
                $wgOut->addHTML( "<div class='editOptions'>\n" );
@@ -3140,9 +3196,9 @@ HTML
                        '<h2 id="mw-previewheader">' . wfMessage( 'preview' )->escaped() . "</h2>" .
                        $wgOut->parse( $note, true, /* interface */true ) . $conflict . "</div>\n";
 
-               $pageLang = $this->mTitle->getPageLanguage();
-               $attribs = array( 'lang' => $pageLang->getCode(), 'dir' => $pageLang->getDir(),
-                       'class' => 'mw-content-' . $pageLang->getDir() );
+               $pageViewLang = $this->mTitle->getPageViewLanguage();
+               $attribs = array( 'lang' => $pageViewLang->getHtmlCode(), 'dir' => $pageViewLang->getDir(),
+                       'class' => 'mw-content-' . $pageViewLang->getDir() );
                $previewHTML = Html::rawElement( 'div', $attribs, $previewHTML );
 
                wfProfileOut( __METHOD__ );
index fda8294..be4ec3e 100644 (file)
@@ -1225,36 +1225,31 @@ function wfIncrStats( $key, $count = 1 ) {
 }
 
 /**
- * Check if the wiki read-only lock file is present. This can be used to lock
- * off editing functions, but doesn't guarantee that the database will not be
- * modified.
+ * Check whether the wiki is in read-only mode.
  *
  * @return bool
  */
 function wfReadOnly() {
-       global $wgReadOnlyFile, $wgReadOnly;
-
-       if ( !is_null( $wgReadOnly ) ) {
-               return (bool)$wgReadOnly;
-       }
-       if ( $wgReadOnlyFile == '' ) {
-               return false;
-       }
-       // Set $wgReadOnly for faster access next time
-       if ( is_file( $wgReadOnlyFile ) ) {
-               $wgReadOnly = file_get_contents( $wgReadOnlyFile );
-       } else {
-               $wgReadOnly = false;
-       }
-       return (bool)$wgReadOnly;
+       return wfReadOnlyReason() !== false;
 }
 
 /**
- * @return bool
+ * Get the value of $wgReadOnly or the contents of $wgReadOnlyFile.
+ *
+ * @return string|bool: String when in read-only mode; false otherwise
  */
 function wfReadOnlyReason() {
-       global $wgReadOnly;
-       wfReadOnly();
+       global $wgReadOnly, $wgReadOnlyFile;
+
+       if ( $wgReadOnly === null ) {
+               // Set $wgReadOnly for faster access next time
+               if ( is_file( $wgReadOnlyFile ) && filesize( $wgReadOnlyFile ) > 0 ) {
+                       $wgReadOnly = file_get_contents( $wgReadOnlyFile );
+               } else {
+                       $wgReadOnly = false;
+               }
+       }
+
        return $wgReadOnly;
 }
 
@@ -3305,6 +3300,27 @@ function wfFixSessionID() {
        }
 }
 
+/**
+ * Reset the session_id
+ * @since 1.22
+ */
+function wfResetSessionID() {
+       global $wgCookieSecure;
+       $oldSessionId = session_id();
+       $cookieParams = session_get_cookie_params();
+       if ( wfCheckEntropy() && $wgCookieSecure == $cookieParams['secure'] ) {
+               session_regenerate_id( false );
+       } else {
+               $tmp = $_SESSION;
+               session_destroy();
+               wfSetupSession( MWCryptRand::generateHex( 32 ) );
+               $_SESSION = $tmp;
+       }
+       $newSessionId = session_id();
+       wfRunHooks( 'ResetSessionID', array( $oldSessionId, $newSessionId ) );
+}
+
+
 /**
  * Initialise php session
  *
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
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 2bdc7c0..c09af74 100644 (file)
@@ -1209,35 +1209,7 @@ class Revision implements IDBAccessObject {
 
                // If the text was fetched without an error, convert it
                if ( $text !== false ) {
-                       if ( in_array( 'gzip', $flags ) ) {
-                               # Deal with optional compression of archived pages.
-                               # This can be done periodically via maintenance/compressOld.php, and
-                               # as pages are saved if $wgCompressRevisions is set.
-                               $text = gzinflate( $text );
-                       }
-
-                       if ( in_array( 'object', $flags ) ) {
-                               # Generic compressed storage
-                               $obj = unserialize( $text );
-                               if ( !is_object( $obj ) ) {
-                                       // Invalid object
-                                       wfProfileOut( __METHOD__ );
-                                       return false;
-                               }
-                               $text = $obj->getText();
-                       }
-
-                       global $wgLegacyEncoding;
-                       if ( $text !== false && $wgLegacyEncoding
-                               && !in_array( 'utf-8', $flags ) && !in_array( 'utf8', $flags ) )
-                       {
-                               # Old revisions kept around in a legacy encoding?
-                               # Upconvert on demand.
-                               # ("utf8" checked for compatibility with some broken
-                               #  conversion scripts 2008-12-30)
-                               global $wgContLang;
-                               $text = $wgContLang->iconv( $wgLegacyEncoding, 'UTF-8', $text );
-                       }
+                       $text = self::decompressRevisionText( $text, $flags );
                }
                wfProfileOut( __METHOD__ );
                return $text;
@@ -1272,6 +1244,46 @@ class Revision implements IDBAccessObject {
                return implode( ',', $flags );
        }
 
+       /**
+        * Re-converts revision text according to it's flags.
+        *
+        * @param $text Mixed: reference to a text
+        * @param $flags array: compression flags
+        * @return String|bool decompressed text, or false on failure
+        */
+       public static function decompressRevisionText( $text, $flags ) {
+               if ( in_array( 'gzip', $flags ) ) {
+                       # Deal with optional compression of archived pages.
+                       # This can be done periodically via maintenance/compressOld.php, and
+                       # as pages are saved if $wgCompressRevisions is set.
+                       $text = gzinflate( $text );
+               }
+
+               if ( in_array( 'object', $flags ) ) {
+                       # Generic compressed storage
+                       $obj = unserialize( $text );
+                       if ( !is_object( $obj ) ) {
+                               // Invalid object
+                               return false;
+                       }
+                       $text = $obj->getText();
+               }
+
+               global $wgLegacyEncoding;
+               if ( $text !== false && $wgLegacyEncoding
+                       && !in_array( 'utf-8', $flags ) && !in_array( 'utf8', $flags ) )
+               {
+                       # Old revisions kept around in a legacy encoding?
+                       # Upconvert on demand.
+                       # ("utf8" checked for compatibility with some broken
+                       #  conversion scripts 2008-12-30)
+                       global $wgContLang;
+                       $text = $wgContLang->iconv( $wgLegacyEncoding, 'UTF-8', $text );
+               }
+
+               return $text;
+       }
+
        /**
         * Insert a new revision into the database, returning the new revision ID
         * number on success and dies horribly on failure.
index 1432a8b..d09e8d9 100644 (file)
@@ -389,10 +389,10 @@ class Sanitizer {
                                'kbd', 'samp', 'data', 'time', 'mark'
                        );
                        $htmlsingle = array(
-                               'br', 'hr', 'li', 'dt', 'dd'
+                               'br', 'wbr', 'hr', 'li', 'dt', 'dd'
                        );
                        $htmlsingleonly = array( # Elements that cannot have close tags
-                               'br', 'hr'
+                               'br', 'wbr', 'hr'
                        );
                        if ( $wgAllowMicrodataAttributes ) {
                                $htmlsingle[] = $htmlsingleonly[] = 'meta';
@@ -1548,6 +1548,9 @@ class Sanitizer {
                        # 9.3.2
                        'br'         => array( 'id', 'class', 'title', 'style', 'clear' ),
 
+                       # http://www.whatwg.org/html/text-level-semantics.html#the-wbr-element
+                       'wbr'        => array( 'id', 'class', 'title', 'style' ),
+
                        # 9.3.4
                        'pre'        => array_merge( $common, array( 'width' ) ),
 
index 4f5ac92..cfe5f1c 100644 (file)
@@ -377,10 +377,6 @@ if ( $wgInvalidateCacheOnLocalSettingsChange ) {
        $wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis', @filemtime( "$IP/LocalSettings.php" ) ) );
 }
 
-if ( $wgAjaxUploadDestCheck ) {
-       $wgAjaxExportList[] = 'SpecialUpload::ajaxGetExistsWarning';
-}
-
 if ( $wgNewUserLog ) {
        # Add a new log type
        $wgLogTypes[] = 'newusers';
index 8234428..fa871fe 100644 (file)
@@ -477,13 +477,13 @@ class SiteConfiguration {
 
                $site = null;
                $lang = null;
-               foreach ( $this->suffixes as $suffix ) {
+               foreach ( $this->suffixes as $altSite => $suffix ) {
                        if ( $suffix === '' ) {
                                $site = '';
                                $lang = $db;
                                break;
                        } elseif ( substr( $db, -strlen( $suffix ) ) == $suffix ) {
-                               $site = $suffix == 'wiki' ? 'wikipedia' : $suffix;
+                               $site = is_numeric( $altSite ) ? $suffix : $altSite;
                                $lang = substr( $db, 0, strlen( $db ) - strlen( $suffix ) );
                                break;
                        }
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 cca0458..fedc6a9 100644 (file)
@@ -2347,7 +2347,7 @@ class User {
        }
 
        /**
-        * Get the user's current setting for a given option, as a boolean value.
+        * Get the user's current setting for a given option, as an integer value.
         *
         * @param string $oname The option to check
         * @param int $defaultOverride A default value returned if the option does not exist
@@ -3113,7 +3113,9 @@ class User {
         *  null (default): Use the default ($wgCookieSecure) to set the secure attribute
         */
        protected function setCookie( $name, $value, $exp = 0, $secure = null ) {
-               $this->getRequest()->response()->setcookie( $name, $value, $exp, null, null, $secure );
+               $this->getRequest()->response()->setcookie( $name, $value, $exp, array(
+                       'secure' => $secure,
+               ) );
        }
 
        /**
index c2193fb..ab7524c 100644 (file)
@@ -42,56 +42,81 @@ class WebResponse {
         * Set the browser cookie
         * @param string $name name of cookie
         * @param string $value value to give cookie
-        * @param int $expire Unix timestamp (in seconds) when the cookie should expire.
+        * @param int|null $expire Unix timestamp (in seconds) when the cookie should expire.
         *        0 (the default) causes it to expire $wgCookieExpiration seconds from now.
-        * @param string $prefix Prefix to use, if not $wgCookiePrefix (use '' for no prefix)
-        * @param string $domain Cookie domain to use, if not $wgCookieDomain
-        * @param $forceSecure Bool:
-        *   true: force the cookie to be set with the secure attribute
-        *   false: force the cookie to be set without the secure attribute
-        *   null: use the value from $wgCookieSecure
+        *        null causes it to be a session cookie.
+        * @param array $options Assoc of additional cookie options:
+        *     prefix: string, name prefix ($wgCookiePrefix)
+        *     domain: string, cookie domain ($wgCookieDomain)
+        *     path: string, cookie path ($wgCookiePath)
+        *     secure: bool, secure attribute ($wgCookieSecure)
+        *     httpOnly: bool, httpOnly attribute ($wgCookieHttpOnly)
+        *     raw: bool, if true uses PHP's setrawcookie() instead of setcookie()
+        *   For backwards compatability, if $options is not an array then it and
+        *   the following two parameters will be interpreted as values for
+        *   'prefix', 'domain', and 'secure'
+        * @since 1.22 Replaced $prefix, $domain, and $forceSecure with $options
         */
-       public function setcookie( $name, $value, $expire = 0, $prefix = null, $domain = null, $forceSecure = null ) {
+       public function setcookie( $name, $value, $expire = 0, $options = null ) {
                global $wgCookiePath, $wgCookiePrefix, $wgCookieDomain;
                global $wgCookieSecure, $wgCookieExpiration, $wgCookieHttpOnly;
-               if ( $expire == 0 && $wgCookieExpiration != 0 ) {
-                       $expire = time() + $wgCookieExpiration;
-               }
-               if ( $prefix === null ) {
-                       $prefix = $wgCookiePrefix;
+
+               if ( !is_array( $options ) ) {
+                       // Backwards compatability
+                       $options = array( 'prefix' => $options );
+                       if ( func_num_args() >= 5 ) {
+                               $options['domain'] = func_get_arg( 4 );
+                       }
+                       if ( func_num_args() >= 6 ) {
+                               $options['secure'] = func_get_arg( 5 );
+                       }
                }
-               if ( $domain === null ) {
-                       $domain = $wgCookieDomain;
+               $options = array_filter( $options, function ( $a ) {
+                       return $a !== null;
+               } ) + array(
+                       'prefix' => $wgCookiePrefix,
+                       'domain' => $wgCookieDomain,
+                       'path' => $wgCookiePath,
+                       'secure' => $wgCookieSecure,
+                       'httpOnly' => $wgCookieHttpOnly,
+                       'raw' => false,
+               );
+
+               if ( $expire === null ) {
+                       $expire = 0; // Session cookie
+               } elseif ( $expire == 0 && $wgCookieExpiration != 0 ) {
+                       $expire = time() + $wgCookieExpiration;
                }
 
-               if ( is_null( $forceSecure ) ) {
-                       $secureCookie = $wgCookieSecure;
-               } else {
-                       $secureCookie = $forceSecure;
+               // Don't mark the cookie as httpOnly if the requesting user-agent is
+               // known to have trouble with httpOnly cookies.
+               if ( !wfHttpOnlySafe() ) {
+                       $options['httpOnly'] = false;
                }
 
-               // Mark the cookie as httpOnly if $wgCookieHttpOnly is true,
-               // unless the requesting user-agent is known to have trouble with
-               // httpOnly cookies.
-               $httpOnlySafe = $wgCookieHttpOnly && wfHttpOnlySafe();
-
-               wfDebugLog( 'cookie',
-                       'setcookie: "' . implode( '", "',
-                               array(
-                                       $prefix . $name,
-                                       $value,
-                                       $expire,
-                                       $wgCookiePath,
-                                       $domain,
-                                       $secureCookie,
-                                       $httpOnlySafe ) ) . '"' );
-               setcookie( $prefix . $name,
-                       $value,
-                       $expire,
-                       $wgCookiePath,
-                       $domain,
-                       $secureCookie,
-                       $httpOnlySafe );
+               $func = $options['raw'] ? 'setrawcookie' : 'setcookie';
+
+               if ( wfRunHooks( 'WebResponseSetCookie', array( &$name, &$value, &$expire, $options ) ) ) {
+                       wfDebugLog( 'cookie',
+                               $func . ': "' . implode( '", "',
+                                       array(
+                                               $options['prefix'] . $name,
+                                               $value,
+                                               $expire,
+                                               $options['path'],
+                                               $options['domain'],
+                                               $options['secure'],
+                                               $options['httpOnly'] ) ) . '"' );
+
+                       call_user_func( $func,
+                               $options['prefix'] . $name,
+                               $value,
+                               $expire,
+                               $options['path'],
+                               $options['domain'],
+                               $options['secure'],
+                               $options['httpOnly'] );
+               }
        }
 }
 
@@ -156,11 +181,9 @@ class FauxResponse extends WebResponse {
         * @param string $name name of cookie
         * @param string $value value to give cookie
         * @param int $expire number of seconds til cookie expires (Default: 0)
-        * @param $prefix TODO DOCUMENT (Default: null)
-        * @param $domain TODO DOCUMENT (Default: null)
-        * @param $forceSecure TODO DOCUMENT (Default: null)
+        * @param array $options ignored
         */
-       public function setcookie( $name, $value, $expire = 0, $prefix = null, $domain = null, $forceSecure = null ) {
+       public function setcookie( $name, $value, $expire = 0, $options = null ) {
                $this->cookies[$name] = $value;
        }
 
index 6a1edd6..e58791e 100644 (file)
@@ -115,7 +115,7 @@ class HistoryAction extends FormlessAction {
 
                // Setup page variables.
                $out->setFeedAppendQuery( 'action=history' );
-               $out->addModules( array( 'mediawiki.legacy.history', 'mediawiki.action.history' ) );
+               $out->addModules( 'mediawiki.action.history' );
 
                // Handle atom/RSS feeds.
                $feedType = $request->getVal( 'feed' );
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 40041d8..0ea2868 100644 (file)
@@ -82,12 +82,17 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                $start = $title === $fromTitle ? $fromTimestamp : $params['start'];
 
                                if ( !isset( $images[$title] ) ) {
-                                       $result->addValue(
-                                               array( 'query', 'pages', intval( $pageId ) ),
-                                               'imagerepository', ''
-                                       );
-                                       // The above can't fail because it doesn't increase the result size
-                                       continue;
+                                       if ( isset( $prop['uploadwarning'] ) ) {
+                                               // Uploadwarning needs info about non-existing files
+                                               $images[$title] = wfLocalFile( $title );
+                                       } else {
+                                               $result->addValue(
+                                                       array( 'query', 'pages', intval( $pageId ) ),
+                                                       'imagerepository', ''
+                                               );
+                                               // The above can't fail because it doesn't increase the result size
+                                               continue;
+                                       }
                                }
 
                                /** @var $img File */
@@ -358,6 +363,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                $mediatype = isset( $prop['mediatype'] );
                $archive = isset( $prop['archivename'] );
                $bitdepth = isset( $prop['bitdepth'] );
+               $uploadwarning = isset( $prop['uploadwarning'] );
 
                if ( ( $url || $sha1 || $meta || $mime || $mediatype || $archive || $bitdepth )
                                && $file->isDeleted( File::DELETED_FILE ) ) {
@@ -427,6 +433,10 @@ class ApiQueryImageInfo extends ApiQueryBase {
                        $vals['bitdepth'] = $file->getBitDepth();
                }
 
+               if ( $uploadwarning ) {
+                       $vals['html'] = SpecialUpload::getExistsWarning( UploadBase::getExistsWarning( $file ) );
+               }
+
                return $vals;
        }
 
@@ -556,6 +566,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                        'metadata' =>       ' metadata      - Lists Exif metadata for the version of the image',
                        'archivename' =>    ' archivename   - Adds the file name of the archive version for non-latest versions',
                        'bitdepth' =>       ' bitdepth      - Adds the bit depth of the version',
+                       'uploadwarning' =>  ' uploadwarning - Used by the Special:Upload page to get information about an existing file. Not intended for use outside MediaWiki core',
                );
        }
 
index 0349830..36b5597 100644 (file)
  */
 class ApiQuerySearch extends ApiQueryGeneratorBase {
 
+       /**
+        * When $wgSearchType is null, $wgSearchAlternatives[0] is null. Null isn't
+        * a valid option for an array for PARAM_TYPE, so we'll use a fake name
+        * that can't possibly be a class name and describes what the null behavior
+        * does
+        */
+       const BACKEND_NULL_PARAM = 'database-backed';
+
        public function __construct( $query, $moduleName ) {
                parent::__construct( $query, $moduleName, 'sr' );
        }
@@ -59,7 +67,8 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                $prop = array_flip( $params['prop'] );
 
                // Create search engine instance and set options
-               $search = SearchEngine::create();
+               $search = isset( $params['backend'] ) && $params['backend'] != self::BACKEND_NULL_PARAM ?
+                       SearchEngine::create( $params['backend'] ) : SearchEngine::create();
                $search->setLimitOffset( $limit + 1, $params['offset'] );
                $search->setNamespaces( $params['namespace'] );
                $search->showRedirects = $params['redirects'];
@@ -201,7 +210,9 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
        }
 
        public function getAllowedParams() {
-               return array(
+               global $wgSearchType;
+
+               $params = array(
                        'search' => array(
                                ApiBase::PARAM_TYPE => 'string',
                                ApiBase::PARAM_REQUIRED => true
@@ -254,10 +265,23 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                                ApiBase::PARAM_MAX2 => ApiBase::LIMIT_SML2
                        )
                );
+
+               $alternatives = SearchEngine::getSearchTypes();
+               if ( count( $alternatives ) > 1 ) {
+                       if ( $alternatives[0] === null ) {
+                               $alternatives[0] = self::BACKEND_NULL_PARAM;
+                       }
+                       $params['backend'] = array(
+                               ApiBase::PARAM_DFLT => $wgSearchType,
+                               ApiBase::PARAM_TYPE => $alternatives,
+                       );
+               }
+
+               return $params;
        }
 
        public function getParamDescription() {
-               return array(
+               $descriptions = array(
                        'search' => 'Search for all page titles (or content) that has this value',
                        'namespace' => 'The namespace(s) to enumerate',
                        'what' => 'Search inside the text or titles',
@@ -280,6 +304,12 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                        'offset' => 'Use this value to continue paging (return by query)',
                        'limit' => 'How many total pages to return'
                );
+
+               if ( count( SearchEngine::getSearchTypes() ) > 1 ) {
+                       $descriptions['backend'] = 'Which search backend to use, if not the default';
+               }
+
+               return $descriptions;
        }
 
        public function getResultProperties() {
index f9f4d5d..8caacf7 100644 (file)
@@ -242,6 +242,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
        protected $mTablePrefix;
        protected $mFlags;
+       protected $mForeign;
        protected $mTrxLevel = 0;
        protected $mErrorCount = 0;
        protected $mLBInfo = array();
@@ -666,9 +667,10 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @param string $dbName database name
         * @param $flags
         * @param string $tablePrefix database table prefixes. By default use the prefix gave in LocalSettings.php
+        * @param bool $foreign disable some operations specific to local databases
         */
        function __construct( $server = false, $user = false, $password = false, $dbName = false,
-               $flags = 0, $tablePrefix = 'get from global'
+               $flags = 0, $tablePrefix = 'get from global', $foreign = false
        ) {
                global $wgDBprefix, $wgCommandLineMode, $wgDebugDBTransactions;
 
@@ -695,6 +697,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        $this->mTablePrefix = $tablePrefix;
                }
 
+               $this->mForeign = $foreign;
+
                if ( $user ) {
                        $this->open( $server, $user, $password, $dbName );
                }
@@ -744,7 +748,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                                isset( $p['password'] ) ? $p['password'] : false,
                                isset( $p['dbname'] ) ? $p['dbname'] : false,
                                isset( $p['flags'] ) ? $p['flags'] : 0,
-                               isset( $p['tablePrefix'] ) ? $p['tablePrefix'] : 'get from global'
+                               isset( $p['tablePrefix'] ) ? $p['tablePrefix'] : 'get from global',
+                               isset( $p['foreign'] ) ? $p['foreign'] : false
                        );
                } else {
                        return null;
@@ -2073,6 +2078,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                } else {
                        list( $table ) = $dbDetails;
                        if ( $wgSharedDB !== null # We have a shared database
+                               && $this->mForeign == false # We're not working on a foreign database
                                && !$this->isQuotedIdentifier( $table ) # Paranoia check to prevent shared tables listing '`table`'
                                && in_array( $table, $wgSharedTables ) # A shared table is selected
                        ) {
index 5c4443d..60c2833 100644 (file)
@@ -653,6 +653,7 @@ class LoadBalancer {
                        $server = $this->mServers[$i];
                        $server['serverIndex'] = $i;
                        $server['foreignPoolRefCount'] = 0;
+                       $server['foreign'] = true;
                        $conn = $this->reallyOpenConnection( $server, $dbName );
                        if ( !$conn->isOpen() ) {
                                wfDebug( __METHOD__ . ": error opening connection for $i/$wiki\n" );
index b5139d6..aa89add 100644 (file)
@@ -156,9 +156,10 @@ class ExternalStore {
        /**
         * Like insert() above, but does more of the work for us.
         * This function does not need a url param, it builds it by
-        * itself. It also fails-over to the next possible clusters.
+        * itself. It also fails-over to the next possible clusters
+        * provided by $wgDefaultExternalStore.
         *
-        * @param $data string
+        * @param string $data
         * @param array $params Associative array of ExternalStoreMedium parameters
         * @return string|bool The URL of the stored data item, or false on error
         * @throws MWException
@@ -166,8 +167,23 @@ class ExternalStore {
        public static function insertToDefault( $data, array $params = array() ) {
                global $wgDefaultExternalStore;
 
+               return self::insertWithFallback( (array) $wgDefaultExternalStore, $data, $params );
+       }
+
+       /**
+        * Like insert() above, but does more of the work for us.
+        * This function does not need a url param, it builds it by
+        * itself. It also fails-over to the next possible clusters
+        * as provided in the first parameter.
+        *
+        * @param array $tryStores refer to $wgDefaultExternalStore
+        * @param string $data
+        * @param array $params Associative array of ExternalStoreMedium parameters
+        * @return string|bool The URL of the stored data item, or false on error
+        * @throws MWException
+        */
+       public static function insertWithFallback( array $tryStores, $data, array $params = array() ) {
                $error = false;
-               $tryStores = (array)$wgDefaultExternalStore;
                while ( count( $tryStores ) > 0 ) {
                        $index = mt_rand( 0, count( $tryStores ) - 1 );
                        $storeUrl = $tryStores[$index];
index 8042430..46a8937 100644 (file)
@@ -180,21 +180,27 @@ class ExternalStoreDB extends ExternalStoreMedium {
 
                $cacheID = ( $itemID === false ) ? "$cluster/$id" : "$cluster/$id/";
                if ( isset( $externalBlobCache[$cacheID] ) ) {
-                       wfDebugLog( 'ExternalStoreDB-cache', "ExternalStoreDB::fetchBlob cache hit on $cacheID\n" );
+                       wfDebugLog( 'ExternalStoreDB-cache',
+                               "ExternalStoreDB::fetchBlob cache hit on $cacheID\n" );
                        return $externalBlobCache[$cacheID];
                }
 
-               wfDebugLog( 'ExternalStoreDB-cache', "ExternalStoreDB::fetchBlob cache miss on $cacheID\n" );
+               wfDebugLog( 'ExternalStoreDB-cache',
+                       "ExternalStoreDB::fetchBlob cache miss on $cacheID\n" );
 
                $dbr =& $this->getSlave( $cluster );
-               $ret = $dbr->selectField( $this->getTable( $dbr ), 'blob_text', array( 'blob_id' => $id ), __METHOD__ );
+               $ret = $dbr->selectField( $this->getTable( $dbr ),
+                       'blob_text', array( 'blob_id' => $id ), __METHOD__ );
                if ( $ret === false ) {
-                       wfDebugLog( 'ExternalStoreDB', "ExternalStoreDB::fetchBlob master fallback on $cacheID\n" );
+                       wfDebugLog( 'ExternalStoreDB',
+                               "ExternalStoreDB::fetchBlob master fallback on $cacheID\n" );
                        // Try the master
                        $dbw =& $this->getMaster( $cluster );
-                       $ret = $dbw->selectField( $this->getTable( $dbw ), 'blob_text', array( 'blob_id' => $id ), __METHOD__ );
+                       $ret = $dbw->selectField( $this->getTable( $dbw ),
+                               'blob_text', array( 'blob_id' => $id ), __METHOD__ );
                        if ( $ret === false ) {
-                               wfDebugLog( 'ExternalStoreDB', "ExternalStoreDB::fetchBlob master failed to find $cacheID\n" );
+                               wfDebugLog( 'ExternalStoreDB',
+                                       "ExternalStoreDB::fetchBlob master failed to find $cacheID\n" );
                        }
                }
                if ( $itemID !== false && $ret !== false ) {
@@ -215,16 +221,22 @@ class ExternalStoreDB extends ExternalStoreMedium {
         */
        function batchFetchBlobs( $cluster, array $ids ) {
                $dbr = $this->getSlave( $cluster );
-               $res = $dbr->select( $this->getTable( $dbr ), array( 'blob_id', 'blob_text' ), array( 'blob_id' => array_keys( $ids ) ), __METHOD__ );
+               $res = $dbr->select( $this->getTable( $dbr ),
+                       array( 'blob_id', 'blob_text' ), array( 'blob_id' => array_keys( $ids ) ), __METHOD__ );
                $ret = array();
                if ( $res !== false ) {
                        $this->mergeBatchResult( $ret, $ids, $res );
                }
                if ( $ids ) {
-                       wfDebugLog( __CLASS__, __METHOD__ . " master fallback on '$cluster' for: " . implode( ',', array_keys( $ids ) ) . "\n" );
+                       wfDebugLog( __CLASS__, __METHOD__ .
+                               " master fallback on '$cluster' for: " .
+                               implode( ',', array_keys( $ids ) ) . "\n" );
                        // Try the master
                        $dbw = $this->getMaster( $cluster );
-                       $res = $dbw->select( $this->getTable( $dbr ), array( 'blob_id', 'blob_text' ), array( 'blob_id' => array_keys( $ids ) ), __METHOD__ );
+                       $res = $dbw->select( $this->getTable( $dbr ),
+                               array( 'blob_id', 'blob_text' ),
+                               array( 'blob_id' => array_keys( $ids ) ),
+                               __METHOD__ );
                        if ( $res === false ) {
                                wfDebugLog( __CLASS__, __METHOD__ . " master failed on '$cluster'\n" );
                        } else {
@@ -232,7 +244,9 @@ class ExternalStoreDB extends ExternalStoreMedium {
                        }
                }
                if ( $ids ) {
-                       wfDebugLog( __CLASS__, __METHOD__ . " master on '$cluster' failed locating items: " . implode( ',', array_keys( $ids ) ) . "\n" );
+                       wfDebugLog( __CLASS__, __METHOD__ .
+                               " master on '$cluster' failed locating items: " .
+                               implode( ',', array_keys( $ids ) ) . "\n" );
                }
                return $ret;
        }
index 0911cca..aa48679 100644 (file)
@@ -46,6 +46,29 @@ class ExternalStoreMwstore extends ExternalStoreMedium {
                return false;
        }
 
+       /**
+        * Fetch data from given external store URLs.
+        * The URL returned is of the form of the form mwstore://backend/container/wiki/id
+        *
+        * @param array $urls An array of external store URLs
+        * @return array A map from url to stored content. Failed results are not represented.
+        */
+       public function batchFetchFromURLs( array $urls ) {
+               $pathsByBackend = array();
+               foreach ( $urls as $url ) {
+                       $be = FileBackendGroup::singleton()->backendFromPath( $url );
+                       if ( $be instanceof FileBackend ) {
+                               $pathsByBackend[$be->getName()][] = $url;
+                       }
+               }
+               $blobs = array();
+               foreach ( $pathsByBackend as $backendName => $paths ) {
+                       $be = FileBackendGroup::get( $backendName );
+                       $blobs = $blobs + $be->getFileContentsMulti( array( 'srcs' => $paths ) );
+               }
+               return $blobs;
+       }
+
        /**
         * @see ExternalStoreMedium::store()
         */
index ecad618..37c6572 100644 (file)
@@ -63,7 +63,8 @@ class ForeignDBRepo extends LocalRepo {
                                        'password' => $this->dbPassword,
                                        'dbname' => $this->dbName,
                                        'flags' => $this->dbFlags,
-                                       'tablePrefix' => $this->tablePrefix
+                                       'tablePrefix' => $this->tablePrefix,
+                                       'foreign' => true,
                                )
                        );
                }
index 549be40..9b62243 100644 (file)
@@ -171,13 +171,13 @@ class LocalRepo extends FileRepo {
                if ( $cachedValue === ' ' || $cachedValue === '' ) {
                        // Does not exist
                        return false;
-               } elseif ( strval( $cachedValue ) !== '' ) {
+               } elseif ( strval( $cachedValue ) !== '' && $cachedValue !== ' PURGED' ) {
                        return Title::newFromText( $cachedValue, NS_FILE );
                } // else $cachedValue is false or null: cache miss
 
                $id = $this->getArticleID( $title );
                if ( !$id ) {
-                       $wgMemc->set( $memcKey, " ", $expiry );
+                       $wgMemc->add( $memcKey, " ", $expiry );
                        return false;
                }
                $dbr = $this->getSlaveDB();
@@ -190,10 +190,10 @@ class LocalRepo extends FileRepo {
 
                if ( $row && $row->rd_namespace == NS_FILE ) {
                        $targetTitle = Title::makeTitle( $row->rd_namespace, $row->rd_title );
-                       $wgMemc->set( $memcKey, $targetTitle->getDBkey(), $expiry );
+                       $wgMemc->add( $memcKey, $targetTitle->getDBkey(), $expiry );
                        return $targetTitle;
                } else {
-                       $wgMemc->set( $memcKey, '', $expiry );
+                       $wgMemc->add( $memcKey, '', $expiry );
                        return false;
                }
        }
@@ -347,7 +347,11 @@ class LocalRepo extends FileRepo {
                global $wgMemc;
                $memcKey = $this->getSharedCacheKey( 'image_redirect', md5( $title->getDBkey() ) );
                if ( $memcKey ) {
-                       $wgMemc->delete( $memcKey );
+                       // Set a temporary value for the cache key, to ensure
+                       // that this value stays purged long enough so that
+                       // it isn't refreshed with a stale value due to a
+                       // lagged slave.
+                       $wgMemc->set( $memcKey, ' PURGED', 12 );
                }
        }
 }
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 9c9140a..12af01d 100644 (file)
@@ -590,7 +590,7 @@ You can browse [//www.mediawiki.org/wiki/Category:Extensions_by_category extensi
  * @author Waldir
  */
 $messages['qqq'] = array(
-       'config-desc' => '{{desc}}',
+       'config-desc' => 'Short description of the installer.',
        'config-title' => 'Parameters:
 * $1 is the version of MediaWiki that is being installed.',
        'config-information' => '{{Identical|Information}}',
@@ -11174,9 +11174,9 @@ Mandrake를 실행하고 있다면 php-xml 패키지를 설치하세요.',
        'config-no-cli-uri' => "'''경고''': 기본값을 사용하여 --scriptpath를 지정하지 않았습니다: <code>$1</code>.",
        'config-using-server' => '"<nowiki>$1</nowiki>"(을)를 서버 이름으로 사용합니다.',
        'config-using-uri' => '"<nowiki>$1$2</nowiki>"(을)를 서버 URL로 사용합니다.',
-       'config-uploads-not-safe' => "'''경고:''' ì\98¬ë¦¬ê¸°ì\97\90 ë\8c\80í\95\9c ê¸°ë³¸ ë\94\94ë \89í\86 리(<code>$1</code>)는 임의의 스크립트 실행에 취약합니다.
+       'config-uploads-not-safe' => "'''경고:''' ì\98¬ë¦¬ê¸°ì\97\90 ë\8c\80í\95\9c ê¸°ë³¸ ë\94\94ë \89í\84°리(<code>$1</code>)는 임의의 스크립트 실행에 취약합니다.
 미디어위키는 보안 위협에 대한 모든 올린 파일을 검사하지만, 올리기를 활성화하기 전에 [//www.mediawiki.org/wiki/Manual:Security#Upload_security 이 보안 취약점을 해결할 것]을 매우 권장합니다.",
-       'config-no-cli-uploads-check' => "'''경고:''' ì\98¬ë¦¬ê¸°ì\97\90 ë\8c\80í\95\9c ê¸°ë³¸ ë\94\94ë \89í\86 리(<code>$1</code>)는 CLI를 설치하는 동안 임의의 스크립트 실행에 대한 취약점에 대해 검사되지 않습니다.",
+       'config-no-cli-uploads-check' => "'''경고:''' ì\98¬ë¦¬ê¸°ì\97\90 ë\8c\80í\95\9c ê¸°ë³¸ ë\94\94ë \89í\84°리(<code>$1</code>)는 CLI를 설치하는 동안 임의의 스크립트 실행에 대한 취약점에 대해 검사되지 않습니다.",
        'config-brokenlibxml' => '시스템에 버그가 있는 PHP와 libxml2의 조합이 있으며 미디어위키나 다른 웹 어플리케이션에 숨겨진 데이터 손상을 일으킬 수 있습니다.
 PHP 5.2.9 이후와 libxml2 2.7.3 이후로 업그레이드하세요. ([//bugs.php.net/bug.php?id=45996 PHP에 제기한 버그])
 설치가 중단되었습니다.',
@@ -11244,7 +11244,7 @@ MySQL의 UTF-8 모드를 보다 더 효율적이고 유니코드 문자의 전
        'config-db-schema-help' => '보통 이 스키마는 문제가 없습니다.
 필요한 경우에만 바꾸세요.',
        'config-pg-test-error' => "'''$1''' 데이터베이스에 연결할 수 없습니다: $2",
-       'config-sqlite-dir' => 'SQLite ë\8d°ì\9d´í\84° ë\94\94ë \89í\86 리:',
+       'config-sqlite-dir' => 'SQLite ë\8d°ì\9d´í\84° ë\94\94ë \89í\84°리:',
        'config-sqlite-dir-help' => "SQLite는 하나의 파일에 모든 데이터를 저장합니다.
 
 제공하는 디렉토리는 설치하는 동안 웹 서버가 쓸 수 있어야 합니다.
@@ -11470,7 +11470,7 @@ GFDL 하에 사용을 허가한 내용을 재사용하는 것도 어렵습니다
 
 파일 올리기를 활성화하려면 미디어위키의 루트 디렉토리에 있는 <code>images</code> 하위 디렉토리에서 웹 서버가 기록할 수 있도록 모드를 바꿉니다.
 그 다음 이 옵션을 활성화합니다.',
-       'config-upload-deleted' => 'ì\82­ì \9cë\90\9c í\8c\8cì\9d¼ì\97\90 ë\8c\80í\95\9c ë\94\94ë \89í\86 리:',
+       'config-upload-deleted' => 'ì\82­ì \9cë\90\9c í\8c\8cì\9d¼ì\97\90 ë\8c\80í\95\9c ë\94\94ë \89í\84°리:',
        'config-upload-deleted-help' => '삭제된 파일을 보관할 디렉토리를 선택하세요.
 이상적으로 웹에서 접근할 수 없게 해야 합니다.',
        'config-logo' => '로고 URL:',
@@ -11560,13 +11560,13 @@ GFDL 하에 사용을 허가한 내용을 재사용하는 것도 어렵습니다
 설치 프로그램이 <code>LocalSettings.php</code> 파일을 만들었습니다.
 모든 설정이 포함되어 있습니다.
 
\8c\8cì\9d¼ì\9d\84 ë\8b¤ì\9a´ë¡\9cë\93\9cí\95\98ì\97¬ ì\9c\84í\82¤ ì\84¤ì¹\98ì\9d\98 ê±°ì \90ì\97\90 ë\84£ì\96´ì\95¼ í\95©ë\8b\88ë\8b¤. (index.phpì\99\80 ê°\99ì\9d\80 ë\94\94ë \89í\86 리) 다운로드가 자동으로 시작됩니다.
\8c\8cì\9d¼ì\9d\84 ë\8b¤ì\9a´ë¡\9cë\93\9cí\95\98ì\97¬ ì\9c\84í\82¤ ì\84¤ì¹\98ì\9d\98 ê±°ì \90ì\97\90 ë\84£ì\96´ì\95¼ í\95©ë\8b\88ë\8b¤. (index.phpì\99\80 ê°\99ì\9d\80 ë\94\94ë \89í\84°리) 다운로드가 자동으로 시작됩니다.
 
 다운로드가 제공되지 않을 경우나 그것을 취소한 경우에는 아래의 링크를 클릭하여 다운로드를 다시 시작할 수 있습니다:
 
 $3
 
-'''참고''': 이 생성한 설정 파일을 다운로드하지 않고 설치를 끝내면 이 파일은 나중에 사용할 수 없습니다.
+'''참고:''' 이 생성한 설정 파일을 다운로드하지 않고 설치를 끝내면 이 파일은 나중에 사용할 수 없습니다.
 
 완료되었으면 '''[$2 위키에 들어갈 수 있습니다]'''.",
        'config-download-localsettings' => '<code>LocalSettings.php</code> 다운로드',
@@ -12208,6 +12208,7 @@ $messages['lad'] = array(
 
 /** Luxembourgish (Lëtzebuergesch)
  * @author Robby
+ * @author Soued031
  * @author 아라
  */
 $messages['lb'] = array(
@@ -12361,10 +12362,10 @@ Spezifizéiert en anere Benotzernumm.',
        'config-admin-password-blank' => 'Gitt e Passwuert fir den Adminstateur-Kont an.',
        'config-admin-password-same' => "D'Passwuert däerf net dat selwecht si wéi de Benotzernumm.",
        'config-admin-password-mismatch' => 'Déi zwee Passwierder Déi dir aginn stëmmen net iwwerteneen.',
-       'config-admin-email' => 'E-Mailadress:',
+       'config-admin-email' => 'E-Mail-Adress:',
        'config-admin-error-user' => 'Interne Feeler beim uleeë vun engem Administrateur mam Numm "<nowiki>$1</nowiki>".',
        'config-admin-error-password' => 'Interne Feeler beim Setze vum Passwuert fir den Admin "<nowiki>$1</nowiki>": <pre>$2</pre>',
-       'config-admin-error-bademail' => 'Dir hutt eng E-Mailadress aginn déi net valabel ass',
+       'config-admin-error-bademail' => 'Dir hutt eng E-Mail-Adress aginn déi net valabel ass',
        'config-subscribe' => "Sech op d'[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Ukënnegunge vun neie Versiounen] abonnéieren.",
        'config-almost-done' => "Dir sidd bal fäerdeg!
 Dir kënnt elo déi Astellungen déi nach iwwreg sinn iwwersprangen an d'Wiki elo direkt installéieren.",
index aa47432..3e94b13 100644 (file)
@@ -168,7 +168,7 @@ abstract class JobQueue {
         * not distinguishable from the race condition between isEmpty() and pop().
         *
         * @return bool
-        * @throws MWException
+        * @throws JobQueueError
         */
        final public function isEmpty() {
                wfProfileIn( __METHOD__ );
@@ -190,7 +190,7 @@ abstract class JobQueue {
         * If caching is used, this number might be out of date for a minute.
         *
         * @return integer
-        * @throws MWException
+        * @throws JobQueueError
         */
        final public function getSize() {
                wfProfileIn( __METHOD__ );
@@ -212,7 +212,7 @@ abstract class JobQueue {
         * If caching is used, this number might be out of date for a minute.
         *
         * @return integer
-        * @throws MWException
+        * @throws JobQueueError
         */
        final public function getAcquiredCount() {
                wfProfileIn( __METHOD__ );
@@ -234,7 +234,7 @@ abstract class JobQueue {
         * If caching is used, this number might be out of date for a minute.
         *
         * @return integer
-        * @throws MWException
+        * @throws JobQueueError
         * @since 1.22
         */
        final public function getDelayedCount() {
@@ -259,7 +259,7 @@ abstract class JobQueue {
         * If caching is used, this number might be out of date for a minute.
         *
         * @return integer
-        * @throws MWException
+        * @throws JobQueueError
         */
        final public function getAbandonedCount() {
                wfProfileIn( __METHOD__ );
@@ -284,7 +284,7 @@ abstract class JobQueue {
         * @param $jobs Job|Array
         * @param $flags integer Bitfield (supports JobQueue::QOS_ATOMIC)
         * @return bool Returns false on failure
-        * @throws MWException
+        * @throws JobQueueError
         */
        final public function push( $jobs, $flags = 0 ) {
                return $this->batchPush( is_array( $jobs ) ? $jobs : array( $jobs ), $flags );
@@ -298,7 +298,7 @@ abstract class JobQueue {
         * @param array $jobs List of Jobs
         * @param $flags integer Bitfield (supports JobQueue::QOS_ATOMIC)
         * @return bool Returns false on failure
-        * @throws MWException
+        * @throws JobQueueError
         */
        final public function batchPush( array $jobs, $flags = 0 ) {
                if ( !count( $jobs ) ) {
@@ -333,7 +333,7 @@ abstract class JobQueue {
         * Outside callers should use JobQueueGroup::pop() instead of this function.
         *
         * @return Job|bool Returns false if there are no jobs
-        * @throws MWException
+        * @throws JobQueueError
         */
        final public function pop() {
                global $wgJobClasses;
@@ -374,7 +374,7 @@ abstract class JobQueue {
         *
         * @param $job Job
         * @return bool
-        * @throws MWException
+        * @throws JobQueueError
         */
        final public function ack( Job $job ) {
                if ( $job->getType() !== $this->type ) {
@@ -421,7 +421,7 @@ abstract class JobQueue {
         *
         * @param $job Job
         * @return bool
-        * @throws MWException
+        * @throws JobQueueError
         */
        final public function deduplicateRootJob( Job $job ) {
                if ( $job->getType() !== $this->type ) {
@@ -466,7 +466,7 @@ abstract class JobQueue {
         *
         * @param $job Job
         * @return bool
-        * @throws MWException
+        * @throws JobQueueError
         */
        final protected function isRootJobOldDuplicate( Job $job ) {
                if ( $job->getType() !== $this->type ) {
@@ -511,7 +511,7 @@ abstract class JobQueue {
         * Deleted all unclaimed and delayed jobs from the queue
         *
         * @return bool Success
-        * @throws MWException
+        * @throws JobQueueError
         * @since 1.22
         */
        final public function delete() {
@@ -535,7 +535,7 @@ abstract class JobQueue {
         * This does nothing for certain queue classes.
         *
         * @return void
-        * @throws MWException
+        * @throws JobQueueError
         */
        final public function waitForBackups() {
                wfProfileIn( __METHOD__ );
@@ -600,7 +600,7 @@ abstract class JobQueue {
         * Note: results may be stale if the queue is concurrently modified.
         *
         * @return Iterator
-        * @throws MWException
+        * @throws JobQueueError
         */
        abstract public function getAllQueuedJobs();
 
@@ -609,7 +609,7 @@ abstract class JobQueue {
         * Note: results may be stale if the queue is concurrently modified.
         *
         * @return Iterator
-        * @throws MWException
+        * @throws JobQueueError
         * @since 1.22
         */
        public function getAllDelayedJobs() {
@@ -640,3 +640,10 @@ abstract class JobQueue {
                throw new MWException( "Queue namespacing not supported for this queue type." );
        }
 }
+
+/**
+ * @ingroup JobQueue
+ * @since 1.22
+ */
+class JobQueueError extends MWException {}
+class JobQueueConnectionError extends JobQueueError {}
index 56da4f3..3fa0655 100644 (file)
@@ -80,9 +80,13 @@ class JobQueueDB extends JobQueue {
                }
 
                list( $dbr, $scope ) = $this->getSlaveDB();
-               $found = $dbr->selectField( // unclaimed job
-                       'job', '1', array( 'job_cmd' => $this->type, 'job_token' => '' ), __METHOD__
-               );
+               try {
+                       $found = $dbr->selectField( // unclaimed job
+                               'job', '1', array( 'job_cmd' => $this->type, 'job_token' => '' ), __METHOD__
+                       );
+               } catch ( DBError $e ) {
+                       $this->throwDBException( $e );
+               }
                $this->cache->add( $key, $found ? 'false' : 'true', self::CACHE_TTL_LONG );
 
                return !$found;
@@ -100,11 +104,15 @@ class JobQueueDB extends JobQueue {
                        return $size;
                }
 
-               list( $dbr, $scope ) = $this->getSlaveDB();
-               $size = (int)$dbr->selectField( 'job', 'COUNT(*)',
-                       array( 'job_cmd' => $this->type, 'job_token' => '' ),
-                       __METHOD__
-               );
+               try {
+                       list( $dbr, $scope ) = $this->getSlaveDB();
+                       $size = (int)$dbr->selectField( 'job', 'COUNT(*)',
+                               array( 'job_cmd' => $this->type, 'job_token' => '' ),
+                               __METHOD__
+                       );
+               } catch ( DBError $e ) {
+                       $this->throwDBException( $e );
+               }
                $this->cache->set( $key, $size, self::CACHE_TTL_SHORT );
 
                return $size;
@@ -127,10 +135,14 @@ class JobQueueDB extends JobQueue {
                }
 
                list( $dbr, $scope ) = $this->getSlaveDB();
-               $count = (int)$dbr->selectField( 'job', 'COUNT(*)',
-                       array( 'job_cmd' => $this->type, "job_token != {$dbr->addQuotes( '' )}" ),
-                       __METHOD__
-               );
+               try {
+                       $count = (int)$dbr->selectField( 'job', 'COUNT(*)',
+                               array( 'job_cmd' => $this->type, "job_token != {$dbr->addQuotes( '' )}" ),
+                               __METHOD__
+                       );
+               } catch ( DBError $e ) {
+                       $this->throwDBException( $e );
+               }
                $this->cache->set( $key, $count, self::CACHE_TTL_SHORT );
 
                return $count;
@@ -156,14 +168,18 @@ class JobQueueDB extends JobQueue {
                }
 
                list( $dbr, $scope ) = $this->getSlaveDB();
-               $count = (int)$dbr->selectField( 'job', 'COUNT(*)',
-                       array(
-                               'job_cmd' => $this->type,
-                               "job_token != {$dbr->addQuotes( '' )}",
-                               "job_attempts >= " . $dbr->addQuotes( $this->maxTries )
-                       ),
-                       __METHOD__
-               );
+               try {
+                       $count = (int)$dbr->selectField( 'job', 'COUNT(*)',
+                               array(
+                                       'job_cmd' => $this->type,
+                                       "job_token != {$dbr->addQuotes( '' )}",
+                                       "job_attempts >= " . $dbr->addQuotes( $this->maxTries )
+                               ),
+                               __METHOD__
+                       );
+               } catch ( DBError $e ) {
+                       $this->throwDBException( $e );
+               }
                $wgMemc->set( $key, $count, self::CACHE_TTL_SHORT );
 
                return $count;
@@ -269,43 +285,47 @@ class JobQueueDB extends JobQueue {
                }
 
                list( $dbw, $scope ) = $this->getMasterDB();
-               $dbw->commit( __METHOD__, 'flush' ); // flush existing transaction
-               $autoTrx = $dbw->getFlag( DBO_TRX ); // get current setting
-               $dbw->clearFlag( DBO_TRX ); // make each query its own transaction
-               $scopedReset = new ScopedCallback( function() use ( $dbw, $autoTrx ) {
-                       $dbw->setFlag( $autoTrx ? DBO_TRX : 0 ); // restore old setting
-               } );
-
-               $uuid = wfRandomString( 32 ); // pop attempt
-               $job = false; // job popped off
-               do { // retry when our row is invalid or deleted as a duplicate
-                       // Try to reserve a row in the DB...
-                       if ( in_array( $this->order, array( 'fifo', 'timestamp' ) ) ) {
-                               $row = $this->claimOldest( $uuid );
-                       } else { // random first
-                               $rand = mt_rand( 0, self::MAX_JOB_RANDOM ); // encourage concurrent UPDATEs
-                               $gte = (bool)mt_rand( 0, 1 ); // find rows with rand before/after $rand
-                               $row = $this->claimRandom( $uuid, $rand, $gte );
-                       }
-                       // Check if we found a row to reserve...
-                       if ( !$row ) {
-                               $this->cache->set( $this->getCacheKey( 'empty' ), 'true', self::CACHE_TTL_LONG );
-                               break; // nothing to do
-                       }
-                       JobQueue::incrStats( 'job-pop', $this->type );
-                       // Get the job object from the row...
-                       $title = Title::makeTitleSafe( $row->job_namespace, $row->job_title );
-                       if ( !$title ) {
-                               $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
-                               wfDebug( "Row has invalid title '{$row->job_title}'." );
-                               continue; // try again
-                       }
-                       $job = Job::factory( $row->job_cmd, $title,
-                               self::extractBlob( $row->job_params ), $row->job_id );
-                       $job->metadata['id'] = $row->job_id;
-                       $job->id = $row->job_id; // XXX: work around broken subclasses
-                       break; // done
-               } while ( true );
+               try {
+                       $dbw->commit( __METHOD__, 'flush' ); // flush existing transaction
+                       $autoTrx = $dbw->getFlag( DBO_TRX ); // get current setting
+                       $dbw->clearFlag( DBO_TRX ); // make each query its own transaction
+                       $scopedReset = new ScopedCallback( function() use ( $dbw, $autoTrx ) {
+                               $dbw->setFlag( $autoTrx ? DBO_TRX : 0 ); // restore old setting
+                       } );
+
+                       $uuid = wfRandomString( 32 ); // pop attempt
+                       $job = false; // job popped off
+                       do { // retry when our row is invalid or deleted as a duplicate
+                               // Try to reserve a row in the DB...
+                               if ( in_array( $this->order, array( 'fifo', 'timestamp' ) ) ) {
+                                       $row = $this->claimOldest( $uuid );
+                               } else { // random first
+                                       $rand = mt_rand( 0, self::MAX_JOB_RANDOM ); // encourage concurrent UPDATEs
+                                       $gte = (bool)mt_rand( 0, 1 ); // find rows with rand before/after $rand
+                                       $row = $this->claimRandom( $uuid, $rand, $gte );
+                               }
+                               // Check if we found a row to reserve...
+                               if ( !$row ) {
+                                       $this->cache->set( $this->getCacheKey( 'empty' ), 'true', self::CACHE_TTL_LONG );
+                                       break; // nothing to do
+                               }
+                               JobQueue::incrStats( 'job-pop', $this->type );
+                               // Get the job object from the row...
+                               $title = Title::makeTitleSafe( $row->job_namespace, $row->job_title );
+                               if ( !$title ) {
+                                       $dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
+                                       wfDebug( "Row has invalid title '{$row->job_title}'." );
+                                       continue; // try again
+                               }
+                               $job = Job::factory( $row->job_cmd, $title,
+                                       self::extractBlob( $row->job_params ), $row->job_id );
+                               $job->metadata['id'] = $row->job_id;
+                               $job->id = $row->job_id; // XXX: work around broken subclasses
+                               break; // done
+                       } while ( true );
+               } catch ( DBError $e ) {
+                       $this->throwDBException( $e );
+               }
 
                return $job;
        }
@@ -461,16 +481,20 @@ class JobQueueDB extends JobQueue {
                }
 
                list( $dbw, $scope ) = $this->getMasterDB();
-               $dbw->commit( __METHOD__, 'flush' ); // flush existing transaction
-               $autoTrx = $dbw->getFlag( DBO_TRX ); // get current setting
-               $dbw->clearFlag( DBO_TRX ); // make each query its own transaction
-               $scopedReset = new ScopedCallback( function() use ( $dbw, $autoTrx ) {
-                       $dbw->setFlag( $autoTrx ? DBO_TRX : 0 ); // restore old setting
-               } );
-
-               // Delete a row with a single DELETE without holding row locks over RTTs...
-               $dbw->delete( 'job',
-                       array( 'job_cmd' => $this->type, 'job_id' => $job->metadata['id'] ), __METHOD__ );
+               try {
+                       $dbw->commit( __METHOD__, 'flush' ); // flush existing transaction
+                       $autoTrx = $dbw->getFlag( DBO_TRX ); // get current setting
+                       $dbw->clearFlag( DBO_TRX ); // make each query its own transaction
+                       $scopedReset = new ScopedCallback( function() use ( $dbw, $autoTrx ) {
+                               $dbw->setFlag( $autoTrx ? DBO_TRX : 0 ); // restore old setting
+                       } );
+
+                       // Delete a row with a single DELETE without holding row locks over RTTs...
+                       $dbw->delete( 'job',
+                               array( 'job_cmd' => $this->type, 'job_id' => $job->metadata['id'] ), __METHOD__ );
+               } catch ( DBError $e ) {
+                       $this->throwDBException( $e );
+               }
 
                return true;
        }
@@ -516,7 +540,11 @@ class JobQueueDB extends JobQueue {
        protected function doDelete() {
                list( $dbw, $scope ) = $this->getMasterDB();
 
-               $dbw->delete( 'job', array( 'job_cmd' => $this->type ) );
+               try {
+                       $dbw->delete( 'job', array( 'job_cmd' => $this->type ) );
+               } catch ( DBError $e ) {
+                       $this->throwDBException( $e );
+               }
                return true;
        }
 
@@ -555,20 +583,25 @@ class JobQueueDB extends JobQueue {
         */
        public function getAllQueuedJobs() {
                list( $dbr, $scope ) = $this->getSlaveDB();
-               return new MappedIterator(
-                       $dbr->select( 'job', '*', array( 'job_cmd' => $this->getType(), 'job_token' => '' ) ),
-                       function( $row ) use ( $scope ) {
-                               $job = Job::factory(
-                                       $row->job_cmd,
-                                       Title::makeTitle( $row->job_namespace, $row->job_title ),
-                                       strlen( $row->job_params ) ? unserialize( $row->job_params ) : false,
-                                       $row->job_id
-                               );
-                               $job->metadata['id'] = $row->job_id;
-                               $job->id = $row->job_id; // XXX: work around broken subclasses
-                               return $job;
-                       }
-               );
+               try {
+                       return new MappedIterator(
+                               $dbr->select( 'job', '*',
+                                       array( 'job_cmd' => $this->getType(), 'job_token' => '' ) ),
+                               function( $row ) use ( $scope ) {
+                                       $job = Job::factory(
+                                               $row->job_cmd,
+                                               Title::makeTitle( $row->job_namespace, $row->job_title ),
+                                               strlen( $row->job_params ) ? unserialize( $row->job_params ) : false,
+                                               $row->job_id
+                                       );
+                                       $job->metadata['id'] = $row->job_id;
+                                       $job->id = $row->job_id; // XXX: work around broken subclasses
+                                       return $job;
+                               }
+                       );
+               } catch ( DBError $e ) {
+                       $this->throwDBException( $e );
+               }
        }
 
        /**
@@ -578,76 +611,80 @@ class JobQueueDB extends JobQueue {
         */
        public function recycleAndDeleteStaleJobs() {
                $now = time();
-               list( $dbw, $scope ) = $this->getMasterDB();
                $count = 0; // affected rows
+               list( $dbw, $scope ) = $this->getMasterDB();
 
-               if ( !$dbw->lock( "jobqueue-recycle-{$this->type}", __METHOD__, 1 ) ) {
-                       return $count; // already in progress
-               }
+               try {
+                       if ( !$dbw->lock( "jobqueue-recycle-{$this->type}", __METHOD__, 1 ) ) {
+                               return $count; // already in progress
+                       }
 
-               // Remove claims on jobs acquired for too long if enabled...
-               if ( $this->claimTTL > 0 ) {
-                       $claimCutoff = $dbw->timestamp( $now - $this->claimTTL );
-                       // Get the IDs of jobs that have be claimed but not finished after too long.
-                       // These jobs can be recycled into the queue by expiring the claim. Selecting
-                       // the IDs first means that the UPDATE can be done by primary key (less deadlocks).
-                       $res = $dbw->select( 'job', 'job_id',
-                               array(
-                                       'job_cmd' => $this->type,
-                                       "job_token != {$dbw->addQuotes( '' )}", // was acquired
-                                       "job_token_timestamp < {$dbw->addQuotes( $claimCutoff )}", // stale
-                                       "job_attempts < {$dbw->addQuotes( $this->maxTries )}" ), // retries left
-                               __METHOD__
+                       // Remove claims on jobs acquired for too long if enabled...
+                       if ( $this->claimTTL > 0 ) {
+                               $claimCutoff = $dbw->timestamp( $now - $this->claimTTL );
+                               // Get the IDs of jobs that have be claimed but not finished after too long.
+                               // These jobs can be recycled into the queue by expiring the claim. Selecting
+                               // the IDs first means that the UPDATE can be done by primary key (less deadlocks).
+                               $res = $dbw->select( 'job', 'job_id',
+                                       array(
+                                               'job_cmd' => $this->type,
+                                               "job_token != {$dbw->addQuotes( '' )}", // was acquired
+                                               "job_token_timestamp < {$dbw->addQuotes( $claimCutoff )}", // stale
+                                               "job_attempts < {$dbw->addQuotes( $this->maxTries )}" ), // retries left
+                                       __METHOD__
+                               );
+                               $ids = array_map(
+                                       function( $o ) {
+                                               return $o->job_id;
+                                       }, iterator_to_array( $res )
+                               );
+                               if ( count( $ids ) ) {
+                                       // Reset job_token for these jobs so that other runners will pick them up.
+                                       // Set the timestamp to the current time, as it is useful to now that the job
+                                       // was already tried before (the timestamp becomes the "released" time).
+                                       $dbw->update( 'job',
+                                               array(
+                                                       'job_token' => '',
+                                                       'job_token_timestamp' => $dbw->timestamp( $now ) ), // time of release
+                                               array(
+                                                       'job_id' => $ids ),
+                                               __METHOD__
+                                       );
+                                       $count += $dbw->affectedRows();
+                                       JobQueue::incrStats( 'job-recycle', $this->type, $dbw->affectedRows() );
+                                       $this->cache->set( $this->getCacheKey( 'empty' ), 'false', self::CACHE_TTL_LONG );
+                               }
+                       }
+
+                       // Just destroy any stale jobs...
+                       $pruneCutoff = $dbw->timestamp( $now - self::MAX_AGE_PRUNE );
+                       $conds = array(
+                               'job_cmd' => $this->type,
+                               "job_token != {$dbw->addQuotes( '' )}", // was acquired
+                               "job_token_timestamp < {$dbw->addQuotes( $pruneCutoff )}" // stale
                        );
+                       if ( $this->claimTTL > 0 ) { // only prune jobs attempted too many times...
+                               $conds[] = "job_attempts >= {$dbw->addQuotes( $this->maxTries )}";
+                       }
+                       // Get the IDs of jobs that are considered stale and should be removed. Selecting
+                       // the IDs first means that the UPDATE can be done by primary key (less deadlocks).
+                       $res = $dbw->select( 'job', 'job_id', $conds, __METHOD__ );
                        $ids = array_map(
                                function( $o ) {
                                        return $o->job_id;
                                }, iterator_to_array( $res )
                        );
                        if ( count( $ids ) ) {
-                               // Reset job_token for these jobs so that other runners will pick them up.
-                               // Set the timestamp to the current time, as it is useful to now that the job
-                               // was already tried before (the timestamp becomes the "released" time).
-                               $dbw->update( 'job',
-                                       array(
-                                               'job_token' => '',
-                                               'job_token_timestamp' => $dbw->timestamp( $now ) ), // time of release
-                                       array(
-                                               'job_id' => $ids ),
-                                       __METHOD__
-                               );
+                               $dbw->delete( 'job', array( 'job_id' => $ids ), __METHOD__ );
                                $count += $dbw->affectedRows();
-                               JobQueue::incrStats( 'job-recycle', $this->type, $dbw->affectedRows() );
-                               $this->cache->set( $this->getCacheKey( 'empty' ), 'false', self::CACHE_TTL_LONG );
+                               JobQueue::incrStats( 'job-abandon', $this->type, $dbw->affectedRows() );
                        }
-               }
 
-               // Just destroy any stale jobs...
-               $pruneCutoff = $dbw->timestamp( $now - self::MAX_AGE_PRUNE );
-               $conds = array(
-                       'job_cmd' => $this->type,
-                       "job_token != {$dbw->addQuotes( '' )}", // was acquired
-                       "job_token_timestamp < {$dbw->addQuotes( $pruneCutoff )}" // stale
-               );
-               if ( $this->claimTTL > 0 ) { // only prune jobs attempted too many times...
-                       $conds[] = "job_attempts >= {$dbw->addQuotes( $this->maxTries )}";
-               }
-               // Get the IDs of jobs that are considered stale and should be removed. Selecting
-               // the IDs first means that the UPDATE can be done by primary key (less deadlocks).
-               $res = $dbw->select( 'job', 'job_id', $conds, __METHOD__ );
-               $ids = array_map(
-                       function( $o ) {
-                               return $o->job_id;
-                       }, iterator_to_array( $res )
-               );
-               if ( count( $ids ) ) {
-                       $dbw->delete( 'job', array( 'job_id' => $ids ), __METHOD__ );
-                       $count += $dbw->affectedRows();
-                       JobQueue::incrStats( 'job-abandon', $this->type, $dbw->affectedRows() );
+                       $dbw->unlock( "jobqueue-recycle-{$this->type}", __METHOD__ );
+               } catch ( DBError $e ) {
+                       $this->throwDBException( $e );
                }
 
-               $dbw->unlock( "jobqueue-recycle-{$this->type}", __METHOD__ );
-
                return $count;
        }
 
@@ -655,14 +692,22 @@ class JobQueueDB extends JobQueue {
         * @return Array (DatabaseBase, ScopedCallback)
         */
        protected function getSlaveDB() {
-               return $this->getDB( DB_SLAVE );
+               try {
+                       return $this->getDB( DB_SLAVE );
+               } catch ( DBConnectionError $e ) {
+                       throw new JobQueueConnectionError( "DBConnectionError:" . $e->getMessage() );
+               }
        }
 
        /**
         * @return Array (DatabaseBase, ScopedCallback)
         */
        protected function getMasterDB() {
-               return $this->getDB( DB_MASTER );
+               try {
+                       return $this->getDB( DB_MASTER );
+               } catch ( DBConnectionError $e ) {
+                       throw new JobQueueConnectionError( "DBConnectionError:" . $e->getMessage() );
+               }
        }
 
        /**
@@ -737,4 +782,12 @@ class JobQueueDB extends JobQueue {
                        return false;
                }
        }
+
+       /**
+        * @param DBError $e
+        * @throws JobQueueError
+        */
+       protected function throwDBException( DBError $e ) {
+               throw new JobQueueError( get_class( $e ) . ": " . $e->getMessage() );
+       }
 }
index 19de8bb..35b80ca 100644 (file)
@@ -138,9 +138,13 @@ class JobQueueFederated extends JobQueue {
                }
 
                foreach ( $this->partitionQueues as $queue ) {
-                       if ( !$queue->doIsEmpty() ) {
-                               $this->cache->add( $key, 'false', self::CACHE_TTL_LONG );
-                               return false;
+                       try {
+                               if ( !$queue->doIsEmpty() ) {
+                                       $this->cache->add( $key, 'false', self::CACHE_TTL_LONG );
+                                       return false;
+                               }
+                       } catch ( JobQueueError $e ) {
+                               wfDebugLog( 'exception', $e->getLogMessage() );
                        }
                }
 
@@ -179,7 +183,11 @@ class JobQueueFederated extends JobQueue {
 
                $count = 0;
                foreach ( $this->partitionQueues as $queue ) {
-                       $count += $queue->$method();
+                       try {
+                               $count += $queue->$method();
+                       } catch ( JobQueueError $e ) {
+                               wfDebugLog( 'exception', $e->getLogMessage() );
+                       }
                }
 
                $this->cache->set( $key, $count, self::CACHE_TTL_SHORT );
@@ -244,7 +252,13 @@ class JobQueueFederated extends JobQueue {
                // Insert the de-duplicated jobs into the queues...
                foreach ( $uJobsByPartition as $partition => $jobBatch ) {
                        $queue = $this->partitionQueues[$partition];
-                       if ( $queue->doBatchPush( $jobBatch, $flags ) ) {
+                       try {
+                               $ok = $queue->doBatchPush( $jobBatch, $flags );
+                       } catch ( JobQueueError $e ) {
+                               $ok = false;
+                               wfDebugLog( 'exception', $e->getLogMessage() );
+                       }
+                       if ( $ok ) {
                                $key = $this->getCacheKey( 'empty' );
                                $this->cache->set( $key, 'false', JobQueueDB::CACHE_TTL_LONG );
                        } else {
@@ -259,7 +273,13 @@ class JobQueueFederated extends JobQueue {
                                $jobsLeft = array_merge( $jobsLeft, $jobBatch ); // not inserted
                        } else {
                                $queue = $this->partitionQueues[$partition];
-                               if ( $queue->doBatchPush( $jobBatch, $flags ) ) {
+                               try {
+                                       $ok = $queue->doBatchPush( $jobBatch, $flags );
+                               } catch ( JobQueueError $e ) {
+                                       $ok = false;
+                                       wfDebugLog( 'exception', $e->getLogMessage() );
+                               }
+                               if ( $ok ) {
                                        $key = $this->getCacheKey( 'empty' );
                                        $this->cache->set( $key, 'false', JobQueueDB::CACHE_TTL_LONG );
                                } else {
@@ -288,7 +308,12 @@ class JobQueueFederated extends JobQueue {
                                break; // all partitions at 0 weight
                        }
                        $queue = $this->partitionQueues[$partition];
-                       $job = $queue->pop();
+                       try {
+                               $job = $queue->pop();
+                       } catch ( JobQueueError $e ) {
+                               $job = false;
+                               wfDebugLog( 'exception', $e->getLogMessage() );
+                       }
                        if ( $job ) {
                                $job->metadata['QueuePartition'] = $partition;
                                return $job;
@@ -336,13 +361,21 @@ class JobQueueFederated extends JobQueue {
 
        protected function doDelete() {
                foreach ( $this->partitionQueues as $queue ) {
-                       $queue->doDelete();
+                       try {
+                               $queue->doDelete();
+                       } catch ( JobQueueError $e ) {
+                               wfDebugLog( 'exception', $e->getLogMessage() );
+                       }
                }
        }
 
        protected function doWaitForBackups() {
                foreach ( $this->partitionQueues as $queue ) {
-                       $queue->waitForBackups();
+                       try {
+                               $queue->waitForBackups();
+                       } catch ( JobQueueError $e ) {
+                               wfDebugLog( 'exception', $e->getLogMessage() );
+                       }
                }
        }
 
index 85f99b7..e483e05 100644 (file)
@@ -310,9 +310,13 @@ class JobQueueGroup {
                                } elseif ( !isset( $lastRuns[$type][$task] )
                                        || $lastRuns[$type][$task] < ( time() - $definition['period'] ) )
                                {
-                                       if ( call_user_func( $definition['callback'] ) !== null ) {
-                                               $tasksRun[$type][$task] = time();
-                                               ++$count;
+                                       try {
+                                               if ( call_user_func( $definition['callback'] ) !== null ) {
+                                                       $tasksRun[$type][$task] = time();
+                                                       ++$count;
+                                               }
+                                       } catch ( JobQueueError $e ) {
+                                               wfDebugLog( 'exception', $e->getLogMessage() );
                                        }
                                }
                        }
index 939fa42..57189a5 100644 (file)
@@ -786,7 +786,7 @@ LUA;
        protected function getConnection() {
                $conn = $this->redisPool->getConnection( $this->server );
                if ( !$conn ) {
-                       throw new MWException( "Unable to connect to redis server." );
+                       throw new JobQueueConnectionError( "Unable to connect to redis server." );
                }
                return $conn;
        }
@@ -799,7 +799,7 @@ LUA;
         */
        protected function throwRedisException( $server, RedisConnRef $conn, $e ) {
                $this->redisPool->handleException( $server, $conn, $e );
-               throw new MWException( "Redis server error: {$e->getMessage()}\n" );
+               throw new JobQueueError( "Redis server error: {$e->getMessage()}\n" );
        }
 
        /**
index 8754914..c993cfb 100644 (file)
@@ -48,6 +48,7 @@ class UploadFromUrlJob extends Job {
        }
 
        public function run() {
+               global $wgCopyUploadAsyncTimeout;
                # Initialize this object and the upload object
                $this->upload = new UploadFromUrl();
                $this->upload->initialize(
@@ -58,7 +59,11 @@ class UploadFromUrlJob extends Job {
                $this->user = User::newFromName( $this->params['userName'] );
 
                # Fetch the file
-               $status = $this->upload->fetchFile();
+               $opts = array();
+               if ( $wgCopyUploadAsyncTimeout ) {
+                       $opts['timeout'] = $wgCopyUploadAsyncTimeout;
+               }
+               $status = $this->upload->fetchFile( $opts );
                if ( !$status->isOk() ) {
                        $this->leaveMessage( $status );
                        return true;
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 4a16f56..2b6363e 100644 (file)
@@ -362,6 +362,9 @@ class Parser {
                $this->startParse( $title, $options, self::OT_HTML, $clearState );
 
                $this->mInputSize = strlen( $text );
+               if ( $this->mOptions->getEnableLimitReport() ) {
+                       $this->mOutput->resetParseStartTime();
+               }
 
                # Remove the strip marker tag prefix from the input, if present.
                if ( $clearState ) {
@@ -492,22 +495,64 @@ class Parser {
                # Information on include size limits, for the benefit of users who try to skirt them
                if ( $this->mOptions->getEnableLimitReport() ) {
                        $max = $this->mOptions->getMaxIncludeSize();
-                       $PFreport = "Expensive parser function count: {$this->mExpensiveFunctionCount}/{$this->mOptions->getExpensiveParserFunctionLimit()}\n";
-                       $limitReport =
-                               "NewPP limit report\n" .
-                               "Preprocessor visited node count: {$this->mPPNodeCount}/{$this->mOptions->getMaxPPNodeCount()}\n" .
-                               "Preprocessor generated node count: " .
-                                       "{$this->mGeneratedPPNodeCount}/{$this->mOptions->getMaxGeneratedPPNodeCount()}\n" .
-                               "Post-expand include size: {$this->mIncludeSizes['post-expand']}/$max bytes\n" .
-                               "Template argument size: {$this->mIncludeSizes['arg']}/$max bytes\n" .
-                               "Highest expansion depth: {$this->mHighestExpansionDepth}/{$this->mOptions->getMaxPPExpandDepth()}\n" .
-                               $PFreport;
+
+                       $cpuTime = $this->mOutput->getTimeSinceStart( 'cpu' );
+                       if ( $cpuTime !== null ) {
+                               $this->mOutput->setLimitReportData( 'limitreport-cputime',
+                                       sprintf( "%.3f", $cpuTime )
+                               );
+                       }
+
+                       $wallTime = $this->mOutput->getTimeSinceStart( 'wall' );
+                       $this->mOutput->setLimitReportData( 'limitreport-walltime',
+                               sprintf( "%.3f", $wallTime )
+                       );
+
+                       $this->mOutput->setLimitReportData( 'limitreport-ppvisitednodes',
+                               array( $this->mPPNodeCount, $this->mOptions->getMaxPPNodeCount() )
+                       );
+                       $this->mOutput->setLimitReportData( 'limitreport-ppgeneratednodes',
+                               array( $this->mGeneratedPPNodeCount, $this->mOptions->getMaxGeneratedPPNodeCount() )
+                       );
+                       $this->mOutput->setLimitReportData( 'limitreport-postexpandincludesize',
+                               array( $this->mIncludeSizes['post-expand'], $max )
+                       );
+                       $this->mOutput->setLimitReportData( 'limitreport-templateargumentsize',
+                               array( $this->mIncludeSizes['arg'], $max )
+                       );
+                       $this->mOutput->setLimitReportData( 'limitreport-expansiondepth',
+                               array( $this->mHighestExpansionDepth, $this->mOptions->getMaxPPExpandDepth() )
+                       );
+                       $this->mOutput->setLimitReportData( 'limitreport-expensivefunctioncount',
+                               array( $this->mExpensiveFunctionCount, $this->mOptions->getExpensiveParserFunctionLimit() )
+                       );
+                       wfRunHooks( 'ParserLimitReportPrepare', array( $this, $this->mOutput ) );
+
+                       $limitReport = "NewPP limit report\n";
+                       foreach ( $this->mOutput->getLimitReportData() as $key => $value ) {
+                               if ( wfRunHooks( 'ParserLimitReportFormat',
+                                       array( $key, $value, &$limitReport, false, false )
+                               ) ) {
+                                       $keyMsg = wfMessage( $key )->inLanguage( 'en' )->useDatabase( false );
+                                       $valueMsg = wfMessage( array( "$key-value-text", "$key-value" ) )
+                                               ->inLanguage( 'en' )->useDatabase( false );
+                                       if ( !$valueMsg->exists() ) {
+                                               $valueMsg = new RawMessage( '$1' );
+                                       }
+                                       if ( !$keyMsg->isDisabled() && !$valueMsg->isDisabled() ) {
+                                               $valueMsg->params( $value );
+                                               $limitReport .= "{$keyMsg->text()}: {$valueMsg->text()}\n";
+                                       }
+                               }
+                       }
+                       // Since we're not really outputting HTML, decode the entities and
+                       // then re-encode the things that need hiding inside HTML comments.
+                       $limitReport = htmlspecialchars_decode( $limitReport );
                        wfRunHooks( 'ParserLimitReport', array( $this, &$limitReport ) );
 
                        // Sanitize for comment. Note '‐' in the replacement is U+2010,
                        // which looks much like the problematic '-'.
                        $limitReport = str_replace( array( '-', '&' ), array( '‐', '&amp;' ), $limitReport );
-
                        $text .= "\n<!-- \n$limitReport-->\n";
 
                        if ( $this->mGeneratedPPNodeCount > $this->mOptions->getMaxGeneratedPPNodeCount() / 10 ) {
@@ -2405,10 +2450,10 @@ class Parser {
                                wfProfileIn( __METHOD__ . "-paragraph" );
                                # No prefix (not in list)--go to paragraph mode
                                # XXX: use a stack for nestable elements like span, table and div
-                               $openmatch = preg_match( '/(?:<table|<h1|<h2|<h3|<h4|<h5|<h6|<pre|<tr|<p|<ul|<ol|<dl|<li|<\\/tr|<\\/td|<\\/th)/iS', $t );
+                               $openmatch = preg_match( '/(?:<table|<blockquote|<h1|<h2|<h3|<h4|<h5|<h6|<pre|<tr|<p|<ul|<ol|<dl|<li|<\\/tr|<\\/td|<\\/th)/iS', $t );
                                $closematch = preg_match(
-                                       '/(?:<\\/table|<\\/h1|<\\/h2|<\\/h3|<\\/h4|<\\/h5|<\\/h6|' .
-                                       '<td|<th|<\\/?blockquote|<\\/?div|<hr|<\\/pre|<\\/p|' . $this->mUniqPrefix . '-pre|<\\/li|<\\/ul|<\\/ol|<\\/dl|<\\/?center)/iS', $t );
+                                       '/(?:<\\/table|<\\/blockquote|<\\/h1|<\\/h2|<\\/h3|<\\/h4|<\\/h5|<\\/h6|' .
+                                       '<td|<th|<\\/?div|<hr|<\\/pre|<\\/p|' . $this->mUniqPrefix . '-pre|<\\/li|<\\/ul|<\\/ol|<\\/dl|<\\/?center)/iS', $t );
                                if ( $openmatch or $closematch ) {
                                        $paragraphStack = false;
                                        # TODO bug 5718: paragraph closed
@@ -5002,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 );
@@ -5030,6 +5087,7 @@ class Parser {
                if ( isset( $params['heights'] ) ) {
                        $ig->setHeights( $params['heights'] );
                }
+               $ig->setAdditionalOptions( $params );
 
                wfRunHooks( 'BeforeParserrenderImageGallery', array( &$this, &$ig ) );
 
index c5e42a4..5cb70cb 100644 (file)
@@ -52,6 +52,8 @@ class ParserOutput extends CacheTime {
                private $mAccessedOptions = array(); # List of ParserOptions (stored in the keys)
                private $mSecondaryDataUpdates = array(); # List of DataUpdate, used to save info from the page somewhere else.
                private $mExtensionData = array(); # extra data used by extensions
+               private $mLimitReportData = array(); # Parser limit report data
+               private $mParseStartTime = array(); # Timestamps for getTimeSinceStart()
 
        const EDITSECTION_REGEX = '#<(?:mw:)?editsection page="(.*?)" section="(.*?)"(?:/>|>(.*?)(</(?:mw:)?editsection>))#';
 
@@ -120,6 +122,7 @@ class ParserOutput extends CacheTime {
        function getIndexPolicy()            { return $this->mIndexPolicy; }
        function getTOCHTML()                { return $this->mTOCHTML; }
        function getTimestamp()              { return $this->mTimestamp; }
+       function getLimitReportData()        { return $this->mLimitReportData; }
 
        function setText( $text )            { return wfSetVar( $this->mText, $text ); }
        function setLanguageLinks( $ll )     { return wfSetVar( $this->mLanguageLinks, $ll ); }
@@ -544,4 +547,67 @@ class ParserOutput extends CacheTime {
                return null;
        }
 
+       private static function getTimes( $clock = null ) {
+               $ret = array();
+               if ( !$clock || $clock === 'wall' ) {
+                       $ret['wall'] = microtime( true );
+               }
+               if ( ( !$clock || $clock === 'cpu' ) && function_exists( 'getrusage' ) ) {
+                       $ru = getrusage();
+                       $ret['cpu'] = $ru['ru_utime.tv_sec'] + $ru['ru_utime.tv_usec'] / 1e6;
+                       $ret['cpu'] += $ru['ru_stime.tv_sec'] + $ru['ru_stime.tv_usec'] / 1e6;
+               }
+               return $ret;
+       }
+
+       /**
+        * Resets the parse start timestamps for future calls to getTimeSinceStart()
+        * @since 1.22
+        */
+       function resetParseStartTime() {
+               $this->mParseStartTime = self::getTimes();
+       }
+
+       /**
+        * Returns the time since resetParseStartTime() was last called
+        *
+        * Clocks available are:
+        *  - wall: Wall clock time
+        *  - cpu: CPU time (requires getrusage)
+        *
+        * @since 1.22
+        * @param string $clock
+        * @return float|null
+        */
+       function getTimeSinceStart( $clock ) {
+               if ( !isset( $this->mParseStartTime[$clock] ) ) {
+                       return null;
+               }
+
+               $end = self::getTimes( $clock );
+               return $end[$clock] - $this->mParseStartTime[$clock];
+       }
+
+       /**
+        * Sets parser limit report data for a key
+        *
+        * The key is used as the prefix for various messages used for formatting:
+        *  - $key: The label for the field in the limit report
+        *  - $key-value-text: Message used to format the value in the "NewPP limit
+        *      report" HTML comment. If missing, uses $key-format.
+        *  - $key-value-html: Message used to format the value in the preview
+        *      limit report table. If missing, uses $key-format.
+        *  - $key-value: Message used to format the value. If missing, uses "$1".
+        *
+        * Note that all values are interpreted as wikitext, and so should be
+        * encoded with htmlspecialchars() as necessary, but should avoid complex
+        * HTML for sanity of display in the "NewPP limit report" comment.
+        *
+        * @since 1.22
+        * @param string $key Message key
+        * @param mixed $value Appropriate for Message::params()
+        */
+       function setLimitReportData( $key, $value ) {
+               $this->mLimitReportData[$key] = $value;
+       }
 }
index 809e7f7..48318b3 100644 (file)
@@ -361,9 +361,11 @@ class Preprocessor_DOM implements Preprocessor {
                                }
                                // Handle comments
                                if ( isset( $matches[2] ) && $matches[2] == '!--' ) {
-                                       // To avoid leaving blank lines, when a comment is both preceded
-                                       // and followed by a newline (ignoring spaces), trim leading and
-                                       // trailing spaces and one of the newlines.
+
+                                       // To avoid leaving blank lines, when a sequence of
+                                       // space-separated comments is both preceded and followed by
+                                       // a newline (ignoring spaces), then
+                                       // trim leading and trailing spaces and the trailing newline.
 
                                        // Find the end
                                        $endPos = strpos( $text, '-->', $i + 4 );
@@ -374,10 +376,25 @@ class Preprocessor_DOM implements Preprocessor {
                                                $i = $lengthText;
                                        } else {
                                                // Search backwards for leading whitespace
-                                               $wsStart = $i ? ( $i - strspn( $revText, ' ', $lengthText - $i ) ) : 0;
+                                               $wsStart = $i ? ( $i - strspn( $revText, " \t", $lengthText - $i ) ) : 0;
+
                                                // Search forwards for trailing whitespace
                                                // $wsEnd will be the position of the last space (or the '>' if there's none)
-                                               $wsEnd = $endPos + 2 + strspn( $text, ' ', $endPos + 3 );
+                                               $wsEnd = $endPos + 2 + strspn( $text, " \t", $endPos + 3 );
+
+                                               // Keep looking forward as long as we're finding more
+                                               // comments.
+                                               $comments = array( array( $wsStart, $wsEnd ) );
+                                               while ( substr( $text, $wsEnd + 1, 4 ) == '<!--' ) {
+                                                       $c = strpos( $text, '-->', $wsEnd + 4 );
+                                                       if ( $c === false ) {
+                                                               break;
+                                                       }
+                                                       $c = $c + 2 + strspn( $text, " \t", $c + 3 );
+                                                       $comments[] = array( $wsEnd + 1, $c );
+                                                       $wsEnd = $c;
+                                               }
+
                                                // Eat the line if possible
                                                // TODO: This could theoretically be done if $wsStart == 0, i.e. for comments at
                                                // the overall start. That's not how Sanitizer::removeHTMLcomments() did it, but
@@ -385,14 +402,26 @@ class Preprocessor_DOM implements Preprocessor {
                                                if ( $wsStart > 0 && substr( $text, $wsStart - 1, 1 ) == "\n"
                                                        && substr( $text, $wsEnd + 1, 1 ) == "\n" )
                                                {
-                                                       $startPos = $wsStart;
-                                                       $endPos = $wsEnd + 1;
                                                        // Remove leading whitespace from the end of the accumulator
                                                        // Sanity check first though
                                                        $wsLength = $i - $wsStart;
-                                                       if ( $wsLength > 0 && substr( $accum, -$wsLength ) === str_repeat( ' ', $wsLength ) ) {
+                                                       if ( $wsLength > 0
+                                                               && strspn( $accum, " \t", -$wsLength ) === $wsLength )
+                                                       {
                                                                $accum = substr( $accum, 0, -$wsLength );
                                                        }
+
+                                                       // Dump all but the last comment to the accumulator
+                                                       foreach ( $comments as $j => $com ) {
+                                                               $startPos = $com[0];
+                                                               $endPos = $com[1] + 1;
+                                                               if ( $j == ( count( $comments ) - 1) ) {
+                                                                       break;
+                                                               }
+                                                               $inner = substr( $text, $startPos, $endPos - $startPos);
+                                                               $accum .= '<comment>' . htmlspecialchars( $inner ) . '</comment>';
+                                                       }
+
                                                        // Do a line-start run next time to look for headings after the comment
                                                        $fakeLineStart = true;
                                                } else {
index 654a66e..3f5ca8e 100644 (file)
@@ -287,9 +287,11 @@ class Preprocessor_Hash implements Preprocessor {
                                }
                                // Handle comments
                                if ( isset( $matches[2] ) && $matches[2] == '!--' ) {
-                                       // To avoid leaving blank lines, when a comment is both preceded
-                                       // and followed by a newline (ignoring spaces), trim leading and
-                                       // trailing spaces and one of the newlines.
+
+                                       // To avoid leaving blank lines, when a sequence of
+                                       // space-separated comments is both preceded and followed by
+                                       // a newline (ignoring spaces), then
+                                       // trim leading and trailing spaces and the trailing newline.
 
                                        // Find the end
                                        $endPos = strpos( $text, '-->', $i + 4 );
@@ -300,10 +302,25 @@ class Preprocessor_Hash implements Preprocessor {
                                                $i = $lengthText;
                                        } else {
                                                // Search backwards for leading whitespace
-                                               $wsStart = $i ? ( $i - strspn( $revText, ' ', $lengthText - $i ) ) : 0;
+                                               $wsStart = $i ? ( $i - strspn( $revText, " \t", $lengthText - $i ) ) : 0;
+
                                                // Search forwards for trailing whitespace
                                                // $wsEnd will be the position of the last space (or the '>' if there's none)
-                                               $wsEnd = $endPos + 2 + strspn( $text, ' ', $endPos + 3 );
+                                               $wsEnd = $endPos + 2 + strspn( $text, " \t", $endPos + 3 );
+
+                                               // Keep looking forward as long as we're finding more
+                                               // comments.
+                                               $comments = array( array( $wsStart, $wsEnd ) );
+                                               while ( substr( $text, $wsEnd + 1, 4 ) == '<!--' ) {
+                                                       $c = strpos( $text, '-->', $wsEnd + 4 );
+                                                       if ( $c === false ) {
+                                                               break;
+                                                       }
+                                                       $c = $c + 2 + strspn( $text, " \t", $c + 3 );
+                                                       $comments[] = array( $wsEnd + 1, $c );
+                                                       $wsEnd = $c;
+                                               }
+
                                                // Eat the line if possible
                                                // TODO: This could theoretically be done if $wsStart == 0, i.e. for comments at
                                                // the overall start. That's not how Sanitizer::removeHTMLcomments() did it, but
@@ -311,17 +328,27 @@ class Preprocessor_Hash implements Preprocessor {
                                                if ( $wsStart > 0 && substr( $text, $wsStart - 1, 1 ) == "\n"
                                                        && substr( $text, $wsEnd + 1, 1 ) == "\n" )
                                                {
-                                                       $startPos = $wsStart;
-                                                       $endPos = $wsEnd + 1;
                                                        // Remove leading whitespace from the end of the accumulator
                                                        // Sanity check first though
                                                        $wsLength = $i - $wsStart;
                                                        if ( $wsLength > 0
                                                                && $accum->lastNode instanceof PPNode_Hash_Text
-                                                               && substr( $accum->lastNode->value, -$wsLength ) === str_repeat( ' ', $wsLength ) )
+                                                               && strspn( $accum->lastNode->value, " \t", -$wsLength ) === $wsLength )
                                                        {
                                                                $accum->lastNode->value = substr( $accum->lastNode->value, 0, -$wsLength );
                                                        }
+
+                                                       // Dump all but the last comment to the accumulator
+                                                       foreach ( $comments as $j => $com ) {
+                                                               $startPos = $com[0];
+                                                               $endPos = $com[1] + 1;
+                                                               if ( $j == ( count( $comments ) - 1) ) {
+                                                                       break;
+                                                               }
+                                                               $inner = substr( $text, $startPos, $endPos - $startPos);
+                                                               $accum->addNodeWithText( 'comment', $inner );
+                                                       }
+
                                                        // Do a line-start run next time to look for headings after the comment
                                                        $fakeLineStart = true;
                                                } else {
index 1240abf..ebcdab3 100644 (file)
@@ -180,7 +180,7 @@ class ResourceLoader {
                        wfDebugLog( 'resourceloader', __METHOD__ . ": minification failed: $exception" );
                        $this->hasErrors = true;
                        // Return exception as a comment
-                       $result = $this->makeComment( $exception->__toString() );
+                       $result = self::makeComment( $exception->__toString() );
                }
 
                wfProfileOut( __METHOD__ );
@@ -460,7 +460,7 @@ class ResourceLoader {
                                        wfDebugLog( 'resourceloader', __METHOD__ . ": request for private module '$name' denied" );
                                        $this->hasErrors = true;
                                        // Add exception to the output as a comment
-                                       $errors .= $this->makeComment( "Cannot show private module \"$name\"" );
+                                       $errors .= self::makeComment( "Cannot show private module \"$name\"" );
 
                                        continue;
                                }
@@ -477,7 +477,7 @@ class ResourceLoader {
                        wfDebugLog( 'resourceloader', __METHOD__ . ": preloading module info failed: $e" );
                        $this->hasErrors = true;
                        // Add exception to the output as a comment
-                       $errors .= $this->makeComment( $e->__toString() );
+                       $errors .= self::makeComment( $e->__toString() );
                }
 
                wfProfileIn( __METHOD__ . '-getModifiedTime' );
@@ -496,7 +496,7 @@ class ResourceLoader {
                                wfDebugLog( 'resourceloader', __METHOD__ . ": calculating maximum modified time failed: $e" );
                                $this->hasErrors = true;
                                // Add exception to the output as a comment
-                               $errors .= $this->makeComment( $e->__toString() );
+                               $errors .= self::makeComment( $e->__toString() );
                        }
                }
 
@@ -517,7 +517,7 @@ class ResourceLoader {
                // Capture any PHP warnings from the output buffer and append them to the
                // response in a comment if we're in debug mode.
                if ( $context->getDebug() && strlen( $warnings = ob_get_contents() ) ) {
-                       $response = $this->makeComment( $warnings ) . $response;
+                       $response = self::makeComment( $warnings ) . $response;
                        $this->hasErrors = true;
                }
 
@@ -676,7 +676,13 @@ class ResourceLoader {
                return false; // cache miss
        }
 
-       protected function makeComment( $text ) {
+       /**
+        * Generate a CSS or JS comment block
+        *
+        * @param $text string
+        * @return string
+        */
+       public static function makeComment( $text ) {
                $encText = str_replace( '*/', '* /', $text );
                return "/*\n$encText\n*/\n";
        }
@@ -707,7 +713,7 @@ class ResourceLoader {
                                wfDebugLog( 'resourceloader', __METHOD__ . ": pre-fetching blobs from MessageBlobStore failed: $e" );
                                $this->hasErrors = true;
                                // Add exception to the output as a comment
-                               $exceptions .= $this->makeComment( $e->__toString() );
+                               $exceptions .= self::makeComment( $e->__toString() );
                        }
                } else {
                        $blobs = array();
@@ -814,7 +820,7 @@ class ResourceLoader {
                                wfDebugLog( 'resourceloader', __METHOD__ . ": generating module package failed: $e" );
                                $this->hasErrors = true;
                                // Add exception to the output as a comment
-                               $exceptions .= $this->makeComment( $e->__toString() );
+                               $exceptions .= self::makeComment( $e->__toString() );
 
                                // Register module as missing
                                $missing[] = $name;
index 4f4e31d..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:
@@ -453,13 +454,17 @@ class SearchEngine {
         * Load up the appropriate search engine class for the currently
         * active database backend, and return a configured instance.
         *
+        * @param String $type Type of search backend, if not the default
         * @return SearchEngine
         */
-       public static function create() {
+       public static function create( $type = null ) {
                global $wgSearchType;
                $dbr = null;
-               if ( $wgSearchType ) {
-                       $class = $wgSearchType;
+
+               $alternatives = self::getSearchTypes();
+               $type = $type !== null ? $type : $wgSearchType;
+               if ( $type && in_array( $type, $alternatives ) ) {
+                       $class = $type;
                } else {
                        $dbr = wfGetDB( DB_SLAVE );
                        $class = $dbr->getSearchEngine();
@@ -469,6 +474,22 @@ class SearchEngine {
                return $search;
        }
 
+       /**
+        * Return the search engines we support. If only $wgSearchType
+        * is set, it'll be an array of just that one item.
+        *
+        * @return array
+        */
+       public static function getSearchTypes() {
+               global $wgSearchType, $wgSearchTypeAlternatives;
+               static $alternatives = null;
+               if ( $alternatives === null ) {
+                       $alternatives = $wgSearchTypeAlternatives ?: array();
+                       array_unshift( $alternatives, $wgSearchType );
+               }
+               return $alternatives;
+       }
+
        /**
         * Create or update the search index record for the given page.
         * Title and text should be pre-processed.
@@ -537,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 0e342cc..1dc4244 100644 (file)
@@ -692,13 +692,6 @@ class MovePageForm extends UnlistedSpecialPage {
                # Deal with watches (we don't watch subpages)
                WatchAction::doWatchOrUnwatch( $this->watch, $ot, $user );
                WatchAction::doWatchOrUnwatch( $this->watch, $nt, $user );
-
-               # Re-clear the file redirect cache, which may have been polluted by
-               # parsing in messages above. See CR r56745.
-               # @todo FIXME: Needs a more robust solution inside FileRepo.
-               if ( $ot->getNamespace() == NS_FILE ) {
-                       RepoGroup::singleton()->getLocalRepo()->invalidateImageRedirect( $ot );
-               }
        }
 
        function showLogFragment( $title ) {
index 8e92e4a..cf5a01e 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 8a2163b..4634c4f 100644 (file)
@@ -42,6 +42,9 @@ class SpecialSearch extends SpecialPage {
        /// Search engine
        protected $searchEngine;
 
+       /// Search engine type, if not default
+       protected $searchEngineType;
+
        /// For links
        protected $extraParams = array();
 
@@ -98,6 +101,8 @@ class SpecialSearch extends SpecialPage {
 
                $this->load();
 
+               $this->searchEngineType = $request->getVal( 'backend' );
+
                if ( $request->getVal( 'fulltext' )
                        || !is_null( $request->getVal( 'offset' ) )
                        || !is_null( $request->getVal( 'searchx' ) ) )
@@ -875,6 +880,8 @@ class SpecialSearch extends SpecialPage {
         * @return String: HTML form
         */
        protected function powerSearchBox( $term, $opts ) {
+               global $wgContLang;
+
                // Groups namespaces into rows according to subject
                $rows = array();
                foreach ( SearchEngine::searchableNamespaces() as $namespace => $name ) {
@@ -882,10 +889,12 @@ class SpecialSearch extends SpecialPage {
                        if ( !array_key_exists( $subject, $rows ) ) {
                                $rows[$subject] = "";
                        }
-                       $name = str_replace( '_', ' ', $name );
+
+                       $name = $wgContLang->getConverter()->convertNamespace( $namespace );
                        if ( $name == '' ) {
                                $name = $this->msg( 'blanknamespace' )->text();
                        }
+
                        $rows[$subject] .=
                                Xml::openElement(
                                        'td', array( 'style' => 'white-space: nowrap' )
@@ -898,6 +907,7 @@ class SpecialSearch extends SpecialPage {
                                ) .
                                Xml::closeElement( 'td' );
                }
+
                $rows = array_values( $rows );
                $numRows = count( $rows );
 
@@ -909,9 +919,11 @@ class SpecialSearch extends SpecialPage {
                                'table',
                                array( 'cellpadding' => 0, 'cellspacing' => 0 )
                        );
+
                        for ( $j = $i; $j < $i + 4 && $j < $numRows; $j++ ) {
                                $namespaceTables .= Xml::tags( 'tr', null, $rows[$j] );
                        }
+
                        $namespaceTables .= Xml::closeElement( 'table' );
                }
 
@@ -1164,7 +1176,8 @@ class SpecialSearch extends SpecialPage {
         */
        public function getSearchEngine() {
                if ( $this->searchEngine === null ) {
-                       $this->searchEngine = SearchEngine::create();
+                       $this->searchEngine = $this->searchEngineType ?
+                               SearchEngine::create( $this->searchEngineType ) : SearchEngine::create();
                }
                return $this->searchEngine;
        }
index 98d0c9a..3a057ea 100644 (file)
@@ -672,30 +672,6 @@ class SpecialUpload extends SpecialPage {
                return $warning;
        }
 
-       /**
-        * Get a list of warnings
-        *
-        * @param string $filename local filename, e.g. 'file exists', 'non-descriptive filename'
-        * @return Array: list of warning messages
-        */
-       public static function ajaxGetExistsWarning( $filename ) {
-               $file = wfFindFile( $filename );
-               if ( !$file ) {
-                       // Force local file so we have an object to do further checks against
-                       // if there isn't an exact match...
-                       $file = wfLocalFile( $filename );
-               }
-               $s = '&#160;';
-               if ( $file ) {
-                       $exists = UploadBase::getExistsWarning( $file );
-                       $warning = self::getExistsWarning( $exists );
-                       if ( $warning !== '' ) {
-                               $s = "<div>$warning</div>";
-                       }
-               }
-               return $s;
-       }
-
        /**
         * Construct a warning and a gallery from an array of duplicate files.
         * @param $dupes array
@@ -706,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 6e557f3..df1b16e 100644 (file)
@@ -1209,14 +1209,16 @@ class LoginForm extends SpecialPage {
        }
 
        /**
-        * @private
+        * Whether the login/create account form should display a link to the
+        * other form (in addition to whatever the skin provides).
         *
         * @param $user User
-        *
-        * @return Boolean
+        * @return bool
         */
-       function showCreateOrLoginLink( &$user ) {
-               if ( $this->mType == 'signup' ) {
+       private function showCreateOrLoginLink( &$user ) {
+               if ( $user->isLoggedIn() ) {
+                       return false;
+               } elseif ( $this->mType == 'signup' ) {
                        return true;
                } elseif ( $user->isAllowed( 'createaccount' ) ) {
                        return true;
@@ -1301,18 +1303,7 @@ class LoginForm extends SpecialPage {
                        $wgCookieSecure = false;
                }
 
-               // If either we don't trust PHP's entropy, or if we need
-               // to change cookie settings when logging in because of
-               // wpStickHTTPS, then change the session ID manually.
-               $cookieParams = session_get_cookie_params();
-               if ( wfCheckEntropy() && $wgCookieSecure == $cookieParams['secure'] ) {
-                       session_regenerate_id( false );
-               } else {
-                       $tmp = $_SESSION;
-                       session_destroy();
-                       wfSetupSession( MWCryptRand::generateHex( 32 ) );
-                       $_SESSION = $tmp;
-               }
+               wfResetSessionID();
        }
 
        /**
index c7a0014..3d848cf 100644 (file)
@@ -175,7 +175,7 @@ class UsercreateTemplate extends BaseTemplate {
                                        tabindex="7"
                                        value="<?php $this->text( 'realname' ); ?>" size='20' />
                                <div class="prefsectiontip">
-                                       <?php $this->msgWiki( 'prefs-help-realname' ); ?>
+                                       <?php $this->msgWiki( $this->data['createAnother'] ? 'createacct-another-realname-tip' : 'prefs-help-realname' ); ?>
                                </div>
                        </div>
                <?php }
index 6c94729..4c4daed 100644 (file)
@@ -18,5 +18,5 @@ fix-backslash: no
 fix-uri: no
 # Don't strip html5 elements we support
 # html-{meta,link} is a hack we use to prevent Tidy from stripping <meta> and <link> used in the body for Microdata
-new-empty-tags: html-meta, html-link
+new-empty-tags: html-meta, html-link, wbr
 new-inline-tags: video, audio, source, track, bdi, data, time, mark
index a4374f3..0201d5f 100644 (file)
@@ -182,9 +182,13 @@ class UploadFromUrl extends UploadBase {
        }
 
        /**
+        * Download the file (if not async)
+        *
+        * @param Array $httpOptions Array of options for MWHttpRequest. Ignored if async.
+        *   This could be used to override the timeout on the http request.
         * @return Status
         */
-       public function fetchFile() {
+       public function fetchFile( $httpOptions = array() ) {
                if ( !Http::isValidURI( $this->mUrl ) ) {
                        return Status::newFatal( 'http-invalid-url' );
                }
@@ -196,7 +200,7 @@ class UploadFromUrl extends UploadBase {
                        return Status::newFatal( 'upload-copy-upload-invalid-url' );
                }
                if ( !$this->mAsync ) {
-                       return $this->reallyFetchFile();
+                       return $this->reallyFetchFile( $httpOptions );
                }
                return Status::newGood();
        }
@@ -233,9 +237,12 @@ class UploadFromUrl extends UploadBase {
        /**
         * Download the file, save it to the temporary file and update the file
         * size and set $mRemoveTempFile to true.
+        *
+        * @param Array $httpOptions Array of options for MWHttpRequest
         * @return Status
         */
-       protected function reallyFetchFile() {
+       protected function reallyFetchFile( $httpOptions = array() ) {
+               global $wgCopyUploadProxy, $wgCopyUploadTimeout;
                if ( $this->mTempPath === false ) {
                        return Status::newFatal( 'tmp-create-error' );
                }
@@ -249,13 +256,15 @@ class UploadFromUrl extends UploadBase {
                $this->mRemoveTempFile = true;
                $this->mFileSize = 0;
 
-               $options = array(
-                       'followRedirects' => true
+               $options = $httpOptions + array(
+                       'followRedirects' => true,
                );
-               global $wgCopyUploadProxy;
                if ( $wgCopyUploadProxy !== false ) {
                        $options['proxy'] = $wgCopyUploadProxy;
                }
+               if ( $wgCopyUploadTimeout && !isset( $options['timeout'] ) ) {
+                       $options['timeout'] = $wgCopyUploadTimeout;
+               }
                $req = MWHttpRequest::factory( $this->mUrl, $options );
                $req->setCallback( array( $this, 'saveTempFileChunk' ) );
                $status = $req->execute();
index 7a1ea44..7fa2e1a 100644 (file)
@@ -46,7 +46,6 @@ $messages = array(
 'tog-shownumberswatching' => 'اعرض عدد المستخدمين المراقبين',
 'tog-oldsig' => 'التوقيع الحالي:',
 'tog-fancysig' => 'عامل التوقيع كنص ويكي (بدون وصلة أوتوماتيكية)',
-'tog-showjumplinks' => 'مكن وصلات "اذهب إلى" المساعدة',
 'tog-uselivepreview' => 'استخدم الاستعراض السريع (جافاسكريبت) (تجريبي)',
 'tog-forceeditsummary' => 'نبهني عند إدخال ملخص تعديل فارغ',
 'tog-watchlisthideown' => 'أخف تعديلاتي من قائمة المراقبة',
index db56f94..b03dc08 100644 (file)
@@ -97,7 +97,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Shfaqe numrin e përdoruesve mbikëqyrës',
 'tog-oldsig' => 'Parapamja e nënshkrimit ekzistues:',
 'tog-fancysig' => 'Trajto nënshkrimin si tekst (pa vegëz automatike)',
-'tog-showjumplinks' => 'Lejo lidhjet é afrueshmerisë "kapërce tek"',
 'tog-uselivepreview' => 'Trego parapamjén meniheré (JavaScript) (Eksperimentale)',
 'tog-forceeditsummary' => 'Pyetem kur e le përmbledhjen e redaktimit zbrazt',
 'tog-watchlisthideown' => "M'sheh redaktimet e mia nga lista mbikqyrëse",
index df4dc27..31e3039 100644 (file)
@@ -61,8 +61,8 @@ $messages = array(
 'tog-editsection' => 'በ[አርም] መያያዣ ክፍል ማረምን አስችል',
 'tog-editsectiononrightclick' => 'የክፍል አርዕስት ላይ በቀኝ በመጫን ክፍል ማረምን አስችል (JavaScript)',
 'tog-showtoc' => 'ከ3 አርዕስቶች በላይ ሲሆን የማውጫ ሰንጠረዥ ይታይ',
-'tog-rememberpassword' => 'ለሚቀጥለው ጊዜ በዚ ኮምፒውተር ላይ በአባልነት ስሜ መግባቴን ( ቢባዛ ለ $1 {{PLURAL:$1|ቀን|ቀናት}}) አስታውስ።',
-'tog-watchcreations' => 'á\8a¥á\8a\94 á\8b¨á\8d\88á\8c á\88­á\8a³á\89¸á\8b\8dá\8a\95 á\8c\88á\8c¾ች ወደምከታተላቸው ገጾች ዝርዝር ውስጥ ጨምር',
+'tog-rememberpassword' => 'ለሚቀጥለው ጊዜ በዚህ ኮምፒውተር ላይ በአባልነት ስሜ መግባቴን (ቢበዛ ለ$1 {{PLURAL:$1|ቀን|ቀናት}}) አስታውስ።',
+'tog-watchcreations' => 'á\8a¥á\8a\94 á\8b¨á\88\9dá\8d\88á\8c¥á\88«á\89¸á\8b\8dá\8a\95 á\8c\88á\8c¾á\89½á\8a\93 á\8b¨á\88\9dá\88\8dá\8a«á\89¸á\8b\8dá\8a\95 á\8d\8bá\8b­á\88\8eች ወደምከታተላቸው ገጾች ዝርዝር ውስጥ ጨምር',
 'tog-watchdefault' => 'ያረምኳቸውን ገጾች ወደምከታተላቸው ገጾች ዝርዝር ውስጥ ጨምር',
 'tog-watchmoves' => 'ያዛወርኳቸውን ገጾች ወደምከታተላቸው ገጾች ዝርዝር ውስጥ ጨምር',
 'tog-watchdeletion' => 'የሰረዝኳቸውን ገጾች ወደምከታተላቸው ገጾች ዝርዝር ውስጥ ጨምር',
@@ -70,9 +70,9 @@ $messages = array(
 'tog-previewontop' => 'ከማረሚያው ሳጥን በፊት ቅድመ-ዕይታ አሳይ',
 'tog-previewonfirst' => 'በመጀመሪያ እርማት ቅድመ-ዕይታ ይታይ',
 'tog-nocache' => 'ገጽ መቆጠብን አታስችል',
-'tog-enotifwatchlistpages' => 'á\8b¨á\88\9dá\8a¨á\89³á\89°á\88\88á\8b\8d á\8c\88á\8c½ á\88²á\89\80á\8b¨á\88­ á\8a¤á\88\98á\88\8dá\8b\95á\8a­á\89µ ይላክልኝ',
+'tog-enotifwatchlistpages' => 'á\8b¨á\88\9dá\8a¨á\89³á\89°á\88\88á\8b\8d á\8c\88á\8c½ á\88²á\89\80á\8b¨á\88­ á\8a¢-á\88\9cá\8b­á\88\8d ይላክልኝ',
 'tog-enotifusertalkpages' => 'የተጠቃሚ መወያያ ገጼ ሲቀየር ኤመልዕክት ይላክልኝ',
-'tog-enotifminoredits' => 'á\88\88á\8a á\8a\90á\88µá\89°á\8a\9b á\8b¨á\8c\88á\8c½ á\8a¥á\88­á\88\9bá\89¶á\89½á\88\9d á\8a¤á\88\98á\88\8dá\8b\95á\8a­á\89µ ይላክልኝ',
+'tog-enotifminoredits' => 'á\88\88á\8a á\8a\90á\88µá\89°á\8a\9b á\8b¨á\8c\88á\8c½ á\8a¥á\88­á\88\9bá\89¶á\89½á\88\9d á\8a¢-á\88\9cá\8b­á\88\8d ይላክልኝ',
 'tog-enotifrevealaddr' => 'ኤመልዕክት አድራሻዬን በማሳወቂያ መልዕክቶች ውስጥ አሳይ',
 'tog-shownumberswatching' => 'የሚከታተሉ ተጠቃሚዎችን ቁጥር አሳይ',
 'tog-oldsig' => 'የቀድሞው ፊርማ ቅደመ እይታ',
@@ -88,6 +88,7 @@ $messages = array(
 'tog-diffonly' => 'ከለውጦቹ ስር የገጽ ይዞታ አታሳይ',
 'tog-showhiddencats' => 'የተደበቁ መደቦች ይታዩ',
 'tog-norollbackdiff' => 'ROLLBACK ከማድረግ በኋላ ልዩነቱ ማሳየት ይቅር',
+'tog-useeditwarning' => 'እርማቶችን ሳልቆጥብ የእርማት ገጽ ልዘጋ ስል አስጠንቅቀኝ',
 
 'underline-always' => 'ሁሌም ይህን',
 'underline-never' => 'ሁሌም አይሁን',
@@ -163,7 +164,8 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|ይኸው መደብ የሚከተለውን ፋይል ብቻ አለው።|በዚሁ መደብ ውስጥ (ከ$2 በጠቅላላ) {{PLURAL:$1|የሚከተለው ፋይል አለ።|የሚከተሉት $1 ፋይሎች አሉ።}}}}',
 'category-file-count-limited' => 'በዚሁ መደብ ውስጥ {{PLURAL:$1|የሚከተለው ፋይል አለ|የሚከተሉት $1 ፋይሎች አሉ}}።',
 'listingcontinuesabbrev' => '(ተቀጥሏል)',
-'index-category' => ' ማውጫው ላይ የተመዘገብ ገጾች',
+'index-category' => 'ማውጫው ላይ የተመዘገቡ ገጾች',
+'noindex-category' => 'ማውጫው ላይ ያልተመዘገቡ ገጾች',
 'broken-file-category' => 'የማይኖሩ ፋይሎች ያሉባቸው ገጾች',
 
 'about' => 'ስለ',
@@ -407,15 +409,21 @@ $2",
 በጥቂት ሴኮንድ ውስጥ ወደሚከተለው ገጽ በቀጥታ ይመለሳል፦",
 'welcomeuser' => 'ሰላምታ $1!  እንኳን ደህናመጡ።',
 'yourname' => 'Username / የብዕር ስም:',
+'userlogin-yourname' => 'የብዕር ስም',
+'userlogin-yourname-ph' => 'የብዕር ስም ያስገቡ',
+'createacct-another-username-ph' => 'የብዕር ስም ያስገቡ',
 'yourpassword' => 'Password / መግቢያ ቃል',
+'userlogin-yourpassword-ph' => 'የመግቢያ ቃል ያስገቡ',
 'yourpasswordagain' => 'መግቢያ ቃልዎን ዳግመኛ ይስጡ',
+'createacct-yourpasswordagain' => 'የመግቢያ ቃሉን ይድገሙ',
+'createacct-yourpasswordagain-ph' => 'የመግቢያ ቃሉን ይድገሙ',
 'remembermypassword' => 'ለሚቀጥለው ጊዜ በዚ ኮምፒውተር ላይ በአባልነት ስሜ መግባቴን ( ቢባዛ ለ $1 {{PLURAL:$1|ቀን|ቀናት}}) አስታውስ።',
 'yourdomainname' => 'የእርስዎ ከባቢ (domain)፦',
 'password-change-forbidden' => 'በዚሁ ዊኪ መግቢያ ቃልን መቀይር አልተፈቀደም።',
 'externaldberror' => 'ወይም አፍአዊ የማረጋገጫ መረጃ-ቤት ስኅተት ነበረ፣ ወይም አፍአዊ አባልነትዎን ማሳደስ አልተፈቀዱም።',
 'login' => 'ለመግባት',
 'nav-login-createaccount' => 'መግቢያ',
-'loginprompt' => '(You must have cookies enabled to log in to {{SITENAME}}.)',
+'loginprompt' => '(ወደ {{SITENAME}} በብዕር ስም ለመግባት በኮምፒዩተሮ ላይ ኩኪስ (cookies) እንዲቀመጡ መፍቀድ ይኖርቦታል።)',
 'userlogin' => 'ግባ / ተመዝገብ',
 'userloginnocreate' => 'ለመግባት',
 'logout' => 'ከብዕር ስምዎ ለመውጣት',
@@ -427,24 +435,36 @@ $2",
 'gotaccount' => "(አባልነት አሁን ካለዎ፥ '''$1''' ይግቡ)",
 'gotaccountlink' => 'በዚህ',
 'userlogin-resetlink' => 'የመግቢያ ዝርዝርዎን ረተዋልን?',
+'createacct-join' => 'ከዚህ በታች ይመዝገቡ።',
+'createacct-emailrequired' => 'ኢ-ሜይል አድራሻ',
+'createacct-email-ph' => 'ኢ-ሜይል አድራሻዎን ያስገቡ',
 'createaccountmail' => 'በኢ-ሜል',
 'createaccountreason' => 'ምክንያት:',
+'createacct-reason' => 'ምክንያት',
+'createacct-reason-ph' => 'ለምን ሌላ የብዕር ስም ሊያወጡ እንደሆነ',
+'createacct-imgcaptcha-ph' => 'ከላይ የሚታየውን ጽሁፍ ያስገቡ',
+'createacct-submit' => 'የብዕር ስም ለማውጣት',
+'createacct-another-submit' => 'ሌላ የብዕር ስም ለማውጣት',
+'createacct-benefit-heading' => '{{SITENAME}} እንደ እርስዎ ባሉ ሰዎች ነው የሚጻፈው።',
+'createacct-benefit-body1' => '{{PLURAL:$1|እርማት|እርማቶችS}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|ገጽ|ገጾችS}}',
 'badretype' => 'የጻፉት መግቢያ ቃሎች አይስማሙም።',
-'userexists' => 'á\8b­á\88\85 á\89¥á\8b\95á\88­ á\88µá\88\9d á\8a á\88\81á\8a\95 á\8b­á\8a\96á\88«ል። እባክዎ፣ ሌላ ብዕር ስም ይምረጡ።',
+'userexists' => 'á\8b­á\88\85 á\89¥á\8b\95á\88­ á\88µá\88\9d á\89°á\8b­á\8b\9fል። እባክዎ፣ ሌላ ብዕር ስም ይምረጡ።',
 'loginerror' => 'የመግባት ስኅተት',
+'createacct-error' => 'የብዕር ስም መፍጠር ስህተት',
 'createaccounterror' => 'ይህን አባልነት ለመፍጠር አልተቻለም፦ $1',
 'nocookiesnew' => 'ብዕር ስም ተፈጠረ፣ እርስዎ ግን ገና አልገቡም። በ{{SITENAME}} ተጠቃሚዎች ለመግባት የቃኚ-ማስታወሻ (cookie) ይጠቀማል። በርስዎ ኮምፒውተር ግን የቃኚ-ማስታወሻ እንዳይሠራ ተደርጓል። እባክዎ እንዲሠራ ያድርጉና በአዲስ ብዕር ስምና መግቢያ ቃልዎ ይግቡ።።',
 'nocookieslogin' => 'በ{{SITENAME}} ተጠቃሚዎች ለመግባት የቃኚ-ማስታወሻ (cookie) ይጠቀማል። በርስዎ ኮምፒውተር ግን የቃኚ-ማስታወሻ እንዳይሠራ ተደርጓል። እባክዎ እንዲሠራ ያድርጉና እንደገና ይሞክሩ።',
 'noname' => 'የተወሰነው ብዕር ስም ትክክለኛ አይደለም።',
 'loginsuccesstitle' => 'መግባትዎ ተከናወነ!',
 'loginsuccess' => 'እንደ «$1» ሆነው አሁን {{SITENAME}}ን ገብተዋል።',
-'nosuchuser' => '«$1» የሚል ብዕር ስም አልተገኘም። አጻጻፉን ይመልከቱ ወይም አዲስ ብዕር ስም ያውጡ።',
+'nosuchuser' => '«$1» የሚል ብዕር ስም አልተገኘም። አጻጻፉን ይመልከቱ ወይም [[Special:UserLogin/signup|አዲስ ብዕር ስም ያውጡ]]።',
 'nosuchusershort' => '«$1» የሚል ብዕር ስም አልተገኘም። አጻጻፉን ይመልከቱ።',
 'nouserspecified' => 'አንድ ብዕር ስም መጠቆም ያስፈልጋል።',
 'login-userblocked' => 'ተጠቃሚው አሁን የታገደ ነው። መግባት አልተፈቀደም።',
 'wrongpassword' => 'የተሰጠው መግቢያ ቃል ልክ አልነበረም። ዳግመኛ ይሞክሩ።',
 'wrongpasswordempty' => 'ምንም መግቢያ ቃል አልተሰጠም። ዳግመኛ ይሞክሩ።',
-'passwordtooshort' => 'የመረጡት መግቢያ ቃል ልክ አይሆንም። ቢያንስ $1 ፊደላትና ከብዕር ስምዎ የተለየ መሆን አለበት።',
+'passwordtooshort' => 'የመረጡት መግቢያ ቃል ልክ አይሆንም። ቢያንስ {{PLURAL:$1|1 ፊደልS|$1 ፊደላት}} ያለው መሆን አለበት።',
 'password-name-match' => 'መግቢያ ቃልዎ እና የአባል ስምዎ መለያየት አስፈላጊ ነው።',
 'password-login-forbidden' => 'ይህ አባል ስምና መግቢያ ቃል መጥቀም የተከለከለ ነው።',
 'mailmypassword' => 'አዲስ የይለፍቃል በኢሜሌ ይላክልኝ።',
@@ -611,7 +631,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'userinvalidcssjstitle' => "'''ማስጠንቀቂያ፦''' «$1» የሚባል መልክ የለም። ልዩ .css እና .js ገጾች በትንንሽ እንግሊዝኛ ፊደል መጀመር እንዳለባቸው ያስታውሱ። ለምሳሌ፦  {{ns:user}}:Foo/vector.css ልክ ነው እንጂ {{ns:user}}:Foo/Vector.css አይደለም።",
 'updated' => '(የታደሰ)',
 'note' => "'''ማሳሰቢያ፦'''",
-'previewnote' => "ማስታወቂያ፦ '''ይህ ለሙከራው ብቻ ነው የሚታየው -- ምንም ለውጦች ገና አልተላኩም!'''",
+'previewnote' => "ማስታወቂያ፦ '''ይህ ለሙከራ ብቻ ነው የሚታየው፣ ምንም ለውጦች ገና አልተላኩም!'''",
 'previewconflict' => 'ለማስቀምጥ የመረጡ እንደ ሆነ እንደሚታይ፣ ይህ ቅድመ-ዕይታ በላይኛ ጽሕፈት ማዘጋጀት ክፍል ያለውን ጽሕፈት ያንጸባርቃል።',
 'session_fail_preview' => "'''ይቅርታ! ገጹን ለማቅረብ ስንሂድ፣ አንድ ትንሽ ችግር በመረቡ መረጃ ውስጥ ድንገት ገብቶበታል። እባክዎ፣ እንደገና ገጹን ለማቅረብ አንዴ ይሞክሩ። ከዚያ ገና ካልሠራ፣ ምናልባት ከአባል ስምዎ መውጣትና እንደገና መግባት ይሞክሩ።'''",
 'editing' => '«$1» ማዘጋጀት / ማስተካከል',
@@ -700,6 +720,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'page_last' => 'ኋለኞች',
 'histlegend' => "ከ2 እትሞች መካከል ልዩነቶቹን ለመናበብ፦ በ2 ክብ ነገሮች ውስጥ ምልክት አድርገው «የተመረጡትን እትሞች ለማነፃፀር» የሚለውን ተጭነው የዛኔ በቀጥታ ይሄዳሉ።<br /> መግለጫ፦ (ከአሁን) - ከአሁኑ እትም ያለው ልዩነት፤ (ካለፈው) - ቀጥሎ ከቀደመው እትም ያለው ልዩነት፤<br /> «'''ጥ'''» ማለት ጥቃቅን ለውጥ ነው።",
 'history-fieldset-title' => 'የቀደሙት ዕትሞች ፍለጋ',
+'history-show-deleted' => 'የጠፉትን ብቻ',
 'histfirst' => 'ቀድመኞች',
 'histlast' => 'ኋለኞች',
 'historysize' => '($1 byte)',
@@ -782,7 +803,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'lineno' => 'መስመር፡ $1፦',
 'compareselectedversions' => 'የተመረጡትን እትሞች ለማነፃፀር',
 'editundo' => 'ለውጡ ይገለበጥ',
-'diff-multi' => '(ከነዚህ 2 እትሞች መካከል {{PLURAL:$1|አንድ ለውጥ ነበር|$1 ለውጦች ነበሩ}}።)',
+'diff-multi' => '(ከነዚህ 2 እትሞች መካከል በ{{PLURAL:$2|አንድ አባል |$2 አባላት}} {{PLURAL:$1|የተደረገ አንድ ለውጥ አይታይም|የተደረጉ $1 ለውጦች አይታዩም}}።)',
 
 # Search results
 'searchresults' => 'የፍለጋ ውጤቶች',
@@ -805,7 +826,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'searchmenu-exists' => "'''\"[[:\$1]]\" የሚባል መጣጥፍ በዚሁ ዊኪ ላይ አለ።'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" የሚባል መጣጥፍ ይፈጠር?'''",
 'searchprofile-articles' => 'ይዞታ ያላቸው መጣጥፎች',
-'searchprofile-project' => 'የመርሃግብሩ ገጾች',
+'searchprofile-project' => 'á\8b¨á\8b\95á\88­á\8b³á\89³ á\8a¥á\8a\93 á\8b¨á\88\98á\88­á\88\83á\8c\8dá\89¥á\88© á\8c\88á\8c¾á\89½',
 'searchprofile-images' => 'ፋይሎች',
 'searchprofile-everything' => 'ሁሉም',
 'searchprofile-advanced' => 'የተደረጀ ፍለጋ',
@@ -828,6 +849,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'searchall' => 'ሁሉ',
 'showingresults' => 'ከ ቁ.#<b>$2</b> ጀምሮ እስከ <b>$1</b> ውጤቶች ድረስ ከዚህ በታች ይታያሉ።',
 'showingresultsnum' => "ከ#'''$2''' ጀምሮ {{PLURAL:$3|'''1''' ውጤት|'''$3''' ውጤቶች}} ከዚህ ታች ማየት ይቻላል።",
+'showingresultsheader' => "{{PLURAL:$5|ከ'''$3''' ውጤት ውስጥ '''$1'''|ከ'''$3''' ውጤቶች ውስጥ ከ'''$1''' እስከ '''$2'''}} ለ'''$4'''",
 'nonefound' => "\"ማስገንዘቢያ\" የተወሰኑ ፍለጋዎች ብቻ በዋናው ስምምነት መሰረት ተፈልገው ይገኛሉ::
 ከምትፈልገው ነገር በፊት ''all:''ን በማስገባት ፍለጋህን ደግመህ ሞክር ይህም ሁሉንም የፍለጋ ቦታዎች እንድታዳርስ ይረዳሃል።",
 'search-nonefound' => 'ለጥያቄው ምንም የሚስማማ ውጤት አልተገኘም።',
@@ -918,7 +940,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'gender-female' => ' ሴት',
 'email' => 'ኢ-ሜል',
 'prefs-help-realname' => 'ዕውነተኛ ስምዎን መግለጽ አስፈላጊነት አይደለም። ለመግለጽ ከመረጡ ለሥራዎ ደራሲነቱን ለማስታወቅ ይጠቅማል።',
-'prefs-help-email' => 'á\8a¢á\88\9cá\88\8d á\8a á\8bµá\88«á\88»á\8a\95 á\88\9bá\89\85á\88¨á\89¥á\8b\8e á\8a á\88µá\8d\88á\88\8bá\8c\8a á\8a á\8b­á\8b°á\88\88á\88\9dá\8d¢ á\89¢á\8b«á\89\85á\88­á\89¡á\89µ á\88\8cá\88\8eá\89½ á\8a á\89£á\88\8bá\89µ á\8a á\8bµá\88«á\88»á\8b\8dá\8a\95 á\88³á\8b«á\8b\8dá\89\81 á\89 á\8d\95á\88®á\8c\8dá\88«á\88\99 á\8a á\88\9bá\8a«á\8a\9dá\8a\90á\89µ á\88\8aá\8c\88á\8a\93á\8a\99á\8b\8eá\89µ á\89°á\89»á\88\88።',
+'prefs-help-email' => 'á\8a¢á\88\9cá\88\8d á\8a á\8bµá\88«á\88»á\8a\95 á\88\9bá\89\85á\88¨á\89¥á\8b\8e á\8a á\88µá\8d\88á\88\8bá\8c\8a á\8a á\8b­á\8b°á\88\88á\88\9dá\8d¢ á\89¢á\8b«á\89\80á\88­á\89¡á\89µ á\8c\8dá\8a\95 á\8b¨á\88\98á\8c\8dá\89¢á\8b« á\89\83á\88\8eá\8a\95 á\89¢á\8b\98á\8a\90á\8c\89 á\88\8cá\88\8b á\8b¨á\88\98á\8c\8dá\89¢á\8b« á\89\83á\88\8d á\88\88á\88\9bá\8b\8dá\8c£á\89µ á\8a¥á\8a\95á\8b²á\89½á\88\89 á\8b«á\8b°á\88­á\8c\8bá\88\8d።',
 'prefs-help-email-required' => 'የኢ-ሜል አድራሻ ያስፈልጋል።',
 'prefs-info' => ' መሰረታዊ መረጃ',
 'prefs-signature' => 'ፊርማ',
@@ -1052,6 +1074,7 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'recentchanges-label-newpage' => 'ይኸው ለውጥ አዲስ ገጽ ፈጠረ።',
 'recentchanges-label-minor' => 'ይህ ለውጥ ጥቃቅን ነው።',
 'recentchanges-label-bot' => 'ይኸው ለውጥ በሎሌ ተደረገ።',
+'recentchanges-label-unpatrolled' => 'ይህ እርማት ገና አልተገመገመም',
 'rcnote' => "ከ$5 $4 እ.ኤ.አ. {{PLURAL:$2|ባለፈው 1 ቀን|ባለፉት '''$2''' ቀኖች}} {{PLURAL:$1|የተደረገው '''1''' ለውጥ እታች ይገኛል|የተደረጉት '''$1''' መጨረሻ ለውጦች እታች ይገኛሉ}}።",
 'rcnotefrom' => "ከ'''$2''' ጀምሮ የተቀየሩት ገጾች (እስከ '''$1''' ድረስ) ክዚህ በታች ይታያሉ።",
 'rclistfrom' => '(ከ $1 ጀምሮ አዲስ ለውጦቹን ለማየት)',
@@ -1241,12 +1264,13 @@ $1',
 'filehist-dimensions' => 'ክልሉ (በpixel)',
 'filehist-filesize' => 'መጠን',
 'filehist-comment' => 'ማጠቃለያ',
-'imagelinks' => 'á\8d\8bá\8b­á\88\8d á\88\98á\8b«á\8b«á\8b£á\8b\8eች',
+'imagelinks' => 'á\8b­á\88\85á\8a\95 á\8d\8bá\8b­á\88\8d á\8b¨á\88\9aá\8b«á\8c á\89\83á\88\8dá\88\89 á\8c\88á\8c¾ች',
 'linkstoimage' => '{{PLURAL:$1|የሚከተለው ገጽ ወደዚሁ ፋይል ተያይዟል|የሚከተሉ $1 ገጾች ወደዚሁ ፋይል ተያይዘዋል}}፦',
 'nolinkstoimage' => 'ወዲህ ፋይል የተያያዘ ገጽ የለም።',
 'morelinkstoimage' => 'ለዚህ ፋይል [[Special:WhatLinksHere/$1|ተጨማሪ መያያዣዎችን]] ለማየት።',
 'duplicatesoffile' => '{{PLURAL:$1|የሚከተለው ፋይል የዚህ ፋይል ቅጂ ነው|የሚከተሉት $1 ፋይሎች የዚሁ ፋይል ቅጂዎች ናቸው}}፦',
 'sharedupload' => 'ይህ ፋይል ከጋራ ምንጭ ($1) የተቀሰመ ነው። በማንኛውም ዊኪ ላይ ሊጠቅም ይቻላል።',
+'sharedupload-desc-here' => 'ይህ ፋይል ከ$1 የተቀሰመ ነው እና በሌላ ዊኪ ላይ ሊጠቅም ይችላል። በ$2 ላይ የሚገኘው የፋይሉ መግለጫ ከዚህ በታች ቀርቧል።',
 'filepage-nofile' => 'እንዲህ የሚባል ፋይል አይኖርም።',
 'filepage-nofile-link' => 'እንዲህ የሚባል ፋይል አይኖርም፤ እርስዎ ግን [$1 እሱን መላክ] ይችላሉ።',
 'uploadnewversion-linktext' => 'ለዚሁ ፋይል አዲስ ዕትም ለመላክ',
@@ -1705,7 +1729,7 @@ $1',
 'blanknamespace' => 'መጣጥፎች',
 
 # Contributions
-'contributions' => 'á\8b«ባል አስተዋጽኦች',
+'contributions' => 'á\8b¨á\8a ባል አስተዋጽኦች',
 'contributions-title' => 'የ$1 አስተዋጽኦች',
 'mycontris' => 'የኔ አስተዋጽኦች፤',
 'contribsub2' => 'ለ $1 ($2)',
@@ -1719,6 +1743,7 @@ $1',
 'sp-contributions-newbies-title' => 'የአዳዲስ ተጠቃሚዎች አስተዋጽኦች',
 'sp-contributions-blocklog' => 'የማገጃ መዝገብ',
 'sp-contributions-deleted' => 'የአባሉ የጠፉት አስተዋጽኦች',
+'sp-contributions-uploads' => 'የተላኩ ፋይሎች',
 'sp-contributions-logs' => 'መዝገቦች',
 'sp-contributions-talk' => 'ውይይት',
 'sp-contributions-userrights' => 'የአባል መብቶች ለማስተዳደር',
@@ -1796,7 +1821,7 @@ $1',
 'unblocked-range' => 'ማገጃ ከ$1 ተነሣ',
 'unblocked-id' => 'ማገጃ $1 ተነሣ',
 'blocklist' => 'የታገዱት ተጠቃሚዎች',
-'ipblocklist' => 'á\8b¨á\8bµá\88\85á\88¨ á\8c\88á\8d\85 á\88\98á\88\88á\8b«á\8b\8eá\89½á\8a\95á\8a\93 (IP addresses) á\8a¥á\8a\93 á\8b¨á\89°á\8c á\89\83á\88\9aá\8b\8eá\89½á\8a\95 á\8b¨á\89¥á\8b\95á\88­ á\88µá\88\9d á\8a á\8c\8dá\8bµá\8d¢',
+'ipblocklist' => 'á\8b¨á\89³á\8c\88á\8b±á\89µ á\89°á\8c á\89\83á\88\9aá\8b\8eá\89½',
 'ipblocklist-legend' => 'አንድ የታገደውን ተጠቃሚ ለመፈለግ፦',
 'blocklist-tempblocks' => 'ጊዜያዊ ማገጃዎች ይደበቁ',
 'blocklist-timestamp' => 'የተደረገበት ሰዓት',
@@ -2032,6 +2057,7 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 'tooltip-upload' => 'ለመጀመር ይጫኑ',
 'tooltip-rollback' => 'ROLLBACK የመጨረሻውን አዛጋጅ ለውጦች በፍጥነት ይገልበጣል።',
 'tooltip-undo' => '"መልስ" ይህን ቅድመ እይታ ወደ ቀድሞው የእርማት ቦታው መልስ። ማጠቃለያው ላይ ምክንያታችንን ለማስገባት ይፈቅድልናል።',
+'tooltip-summary' => 'አጭር ማጠቃለያ ይፃፉ',
 
 # Attribution
 'anonymous' => 'የ{{SITENAME}} ቁ. አድራሻ ተጠቃሚ(ዎች)',
index 67cfa22..59ce738 100644 (file)
@@ -61,7 +61,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Īwan þæt rīm behealdendra brūcenda',
 'tog-oldsig' => 'Genge selfmearc:',
 'tog-fancysig' => 'Dōn selfmearce tō wikitexte (lēas ǣr gedōnes hlencan)',
-'tog-showjumplinks' => 'Þafian "gān tō" gefērra hlencena',
 'tog-uselivepreview' => 'Notian rihte īwde fōrebysene (þearf JavaScript) (on costnunge)',
 'tog-forceeditsummary' => 'Cȳðan mē þǣr ic ne wrīte adihtunge sceortnesse',
 'tog-watchlisthideown' => 'Hȳdan mīna adihtunga wiþ þæt behealdungtæl',
index 841fadf..c307e30 100644 (file)
@@ -2293,6 +2293,9 @@ $1',
 'randompage' => 'صفحة عشوائية',
 'randompage-nopages' => 'لا توجد صفحات في {{PLURAL:$2||النطاق التالي|النطاقين التاليين|النطاقات التالية}}: $1.',
 
+# Special:RandomInCategory
+'randomincategory-selectcategory-submit' => 'اذهب',
+
 # Random redirect
 'randomredirect' => 'تحويلة عشوائية',
 'randomredirect-nopages' => 'لا توجد تحويلات في النطاق "$1".',
index bddff5f..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',
@@ -3611,20 +3612,20 @@ la confirmación de les señes de corréu electrónicu:
 $5
 
 Esti códigu de confirmación caduca\'l $4.',
-'confirmemail_body_set' => 'Daquién, seique tu dende la IP $1, camudó les señes de corréu de
+'confirmemail_body_set' => 'Dalguién, vusté posiblemente, dende la IP $1, configuró el corréu de
 la cuenta "$2" a esta direición de corréu en {{SITENAME}}.
 
-Pa confirmar qu\'esta cuenta ye tuya daveres y reactivar les funciones
-de corréu en {{SITENAME}}, abri esti enllaz nel to navegador:
+Pa confirmar qu\'esta cuenta ye suya daveres y activar les funciones
+de corréu en {{SITENAME}}, abra esti enllaz nel navegador:
 
 $3
 
-Si la cuenta *nun* ye de to, calca nesti enllaz pa encaboxar
+Si la cuenta *nun* ye de so, siga esti enllaz pa encaboxar
 la confirmación de les señes de corréu electrónicu:
 
 $5
 
-Esti códigu de confirmación caduca\'l $4.',
+Esti códigu de confirmación caducará el $4.',
 'confirmemail_invalidated' => 'Confirmación de direición de corréu electrónicu encaboxada',
 'invalidateemail' => 'Encaboxar confirmación de corréu electrónicu',
 
@@ -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 b24826b..4dd0002 100644 (file)
@@ -129,7 +129,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Va ota va rupes favesik nedir !',
 'tog-oldsig' => 'Tisa sugdara',
 'tog-fancysig' => 'Krafiara va sugdaks wetce wikitext (a mivaskafi gluyasiki)',
-'tog-showjumplinks' => 'Tutegirara va "grablera" vansarafi gluyasiki',
 'tog-uselivepreview' => 'Favera va abdiwira (JavaScript) (bagalon)',
 'tog-forceeditsummary' => 'Zo walzé viele betaravildeks tir vlardaf !',
 'tog-watchlisthideown' => 'Palsera va jinaf suzdasikif betakseem',
index ef15ffe..96c9a26 100644 (file)
@@ -89,7 +89,6 @@ $messages = array(
 'tog-shownumberswatching' => "D' Åzoi voh dé beówochterden Benutzer åzoang",
 'tog-oldsig' => 'Existente Unterschrift',
 'tog-fancysig' => 'Unterschrift ois Wikitext bhåndln (óne autómaatische Valinkung)',
-'tog-showjumplinks' => '„Wexeln zu“-Links aktivirn',
 'tog-uselivepreview' => 'Live-Vurschau nutzen (dodafyr braucht ma JavaScript) (experimentoy)',
 'tog-forceeditsummary' => 'Warnen, wånn ban Speichern dé Zåmmerfossung fööd',
 'tog-watchlisthideown' => 'Eigerne Beorweitungen in da Beówochtungslisten ausblenden',
index a4011c0..ef9f680 100644 (file)
@@ -366,10 +366,10 @@ $1',
 'versionrequiredtext' => 'Kaipuhan an bersyon $1 kan MediaWiki sa paggamit kan pahinang ini. Hilíngón an [[Special:Version|Bersyon kan pahina]].',
 
 'ok' => 'Sige',
-'retrievedfrom' => 'Pigkua sa "$1"',
-'youhavenewmessages' => 'Igwa ka nin $1 ($2).',
-'newmessageslink' => 'mga bàgong mensahe',
-'newmessagesdifflink' => 'huring pagbàgo',
+'retrievedfrom' => 'Pinaghugot gikan sa "$1"',
+'youhavenewmessages' => 'Ika igwa nin $1 ($2).',
+'newmessageslink' => 'bàgong mga mensahe',
+'newmessagesdifflink' => 'huring kaliwatan',
 'youhavenewmessagesfromusers' => 'Ika igwa nin $1 gikan sa {{PLURAL:$3|ibang paragamit|$3 mga paragamit}} ($2).',
 'youhavenewmessagesmanyusers' => 'Ika igwa nin $1 gikan sa kadakol na mga paragamit ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|sarong bagong mensahe|bagong mga mensahe}}',
@@ -393,9 +393,9 @@ $1',
 'feed-invalid' => 'Imbalidong tipo nin hungit sa subkripsyon.',
 'feed-unavailable' => 'Mayò an mga sindikasyon na hungit',
 'site-rss-feed' => '$1 Hungit nin RSS',
-'site-atom-feed' => '$1 Hungit nin Atomo',
+'site-atom-feed' => '$1 Hungit Atomo',
 'page-rss-feed' => '"$1" Hungit na RSS',
-'page-atom-feed' => '"$1" Hungit na Atomo',
+'page-atom-feed' => '"$1" Hungit Atomo',
 'feed-atom' => 'Atomo',
 'red-link-title' => '$1 (an pahina bako pang eksistido)',
 'sort-descending' => 'Suysoy paibaba',
@@ -407,7 +407,7 @@ $1',
 'nstab-media' => 'Pahina kan media',
 'nstab-special' => 'Espesyal na pahina',
 'nstab-project' => 'Pahina kan proyekto',
-'nstab-image' => 'File',
+'nstab-image' => 'Sagunson',
 'nstab-mediawiki' => 'Mensahe',
 'nstab-template' => 'Templato',
 'nstab-help' => 'Pahina kan tabang',
@@ -438,7 +438,7 @@ An pinakahuring pagprubar sa datos-sarayan naghahapot nin:
 na hale sa laog kan punksyon na "$2".
 An datos-sarayan nagbalik nin sala na "<tt>$3: $4</tt>".',
 'laggedslavemode' => 'Patanid: An pahina pwedeng dai nin pagbabâgo sa ngonyan.',
-'readonly' => 'Kandado an base nin datos',
+'readonly' => 'Nakakandado na datos-sarayan',
 'enterlockreason' => 'Magkaag tabì nin rason sa pagkandado, asin ikalkulo kun nuarin bubukasón an kandado',
 'readonlytext' => 'Sarado mùna an base nin datos sa mga bàgong entrada asin iba pang mga pagribay, pwede gayod sa rutinang pagmantenir kan base nin datos, despues, mabalik na ini sa normal.
 
@@ -449,11 +449,11 @@ Ini pirmeng pinagkakausa sa paagi nin pagsusunod nin sarong lumaon na diff o his
 
 Kun bako ini an kaso, ika nakanagbo nin sarong kubol sa kasungatan.
 Pakireport tabi ini sa [[Special:ListUsers/sysop|administrador]], na naka-antabay sa kilyawan.',
-'missingarticle-rev' => '(pagbàgo#: $1)',
+'missingarticle-rev' => '(rebisyon#: $1)',
 'missingarticle-diff' => '(Kaibhán: $1, $2)',
 'readonly_lag' => 'Tulostulos na pagkandado an base nin datos mantang makaabot an base nin datos na esklabo saiyang amo.',
-'internalerror' => 'Panlaog na salâ',
-'internalerror_info' => 'Panlaog na salâ: $1',
+'internalerror' => 'Panlaog na kasalâan',
+'internalerror_info' => 'Panlaog na kasalâan: $1',
 'fileappenderrorread' => 'Dae nakakabasa nin "$1" habang pinagdadagdag.',
 'fileappenderror' => 'Dae nakakapagdagdag nin "$1" sagkod "$2".',
 'filecopyerror' => 'Dai naarog an mga file na "$1" hasta "$2".',
@@ -471,8 +471,9 @@ Ini puwede nang napura kan iba.',
 'delete-hook-aborted' => 'An pagpura pinundo kan pangawit.
 Ini dae nagtao nin kapaliwanagan.',
 'no-null-revision' => 'Dae makakamukna nin baguhong bunyaw na rebisyon para sa pahina "$1"',
-'badtitle' => 'Salâ an titulo',
-'badtitletext' => 'Dai pwede an hinagad na titulo nin pahina, o mayong laog, o sarong titulong pan-ibang tatarámon o pan-ibang wiki na sala an pagkatakód. Pwedengigwa ining sarô o iba pang mga karakter na dai pwedeng gamiton sa mga titulo.',
+'badtitle' => 'Raot na titulo',
+'badtitletext' => 'An pinaghagad na titulo kan pahina imbalido, daeng laog, o sarong salaon na sinugpunan na titulo kan inter-lengguwahe o inter-wiki.
+Ini gayod may laog nin o dakol na mga karakter na dae pinaggagamit sa mga titulo.',
 'perfcached' => 'An minasunod na datos pinagtago asin bakong gayo napapanahon. An maximum na {{PLURAL:$1|sarong resulta na|$1 mga resulta na}} yaon sana sa pinagtago.',
 'perfcachedts' => 'An minasunod na datos pinagtago, asin huring pinagdagdagan kan $1. An maximum na {{PLURAL:$4|sarong result na |$4 mga resulta na }} yaon sana sa pinagtago.',
 'querypage-no-updates' => 'Pigpopogol mùna an mga pagbabàgo sa pahinang ini. Dai mùna mababàgo an mga datos digdi.',
@@ -519,10 +520,9 @@ An administrador na iyo an nagkandado kaini nagpahayag kaining kapaliwanagan: "$
 'virus-unknownscanner' => 'bakong bistadong antivirus:',
 
 # Login and logout pages
-'logouttext' => "'''Ika po sa ngunyan nakaluwas na.'''
+'logouttext' => "'''Ika ngunyan nakaluwas na.'''
 
-Ika makakadagos pa sa paggamit kan {{SITENAME}} na dai nagpapabisto, o ika <span class='plainlinks'>[$1 Maglaog giraray]</span> bilang pareho o bilang ibang paragamit.
-Giromdoma na an ibang mga pahina mapuwedeng padagos na magpapahiling siring baga na kun ika garo yaon man sana sa laog, sagkod na saimong malinigan mo an sarayan sa kilyawan.",
+Tandai tabi na an nagkapirang mga pahina puwedeng maipagpapadagos na ipagpapahiling siring sa ika baga yaon sa laog pa, sagkod na maiklarado an saimong pankilyaw na kaaganan.",
 'welcomeuser' => 'Marhayong pag-abot, $1!',
 'welcomecreation-msg' => 'An saimong panindog pinagmukna na.
 Dae malingaw na liwaton an saimong [[Special:Preferences|{{SITENAME}} mga kamuyahan]].',
@@ -569,7 +569,7 @@ Dae malingaw na liwaton an saimong [[Special:Preferences|{{SITENAME}} mga kamuya
 'createacct-emailoptional' => 'E-surat na estada (opsyonal)',
 'createacct-email-ph' => 'Pakikaag an saimong e-surat na estada',
 'createacct-another-email-ph' => 'Ikaag an estada kan e-surat',
-'createaccountmail' => 'Gumamit nin sarong random na temporaryong sekretong panlaog asin ipadara ini sa adres kan e-surat na pinaghaya sa ibaba',
+'createaccountmail' => 'Gumamit nin sarong temporaryong pampurak na pasa-taramon asin ipadara ini sa pinagsambit na estada kan e-surat',
 'createacct-realname' => 'Totoong pangaran (opsyonal)',
 'createaccountreason' => 'Rason:',
 'createacct-reason' => 'Rason',
@@ -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.',
@@ -735,36 +737,36 @@ Gibohon mo ini kun aksidente mong naipagheras sinda sa kiisay man o kun an saimo
 'resettokens-resetbutton' => 'Pakibaguha an pinagpiling mga paduos',
 
 # Edit page toolbar
-'bold_sample' => 'Tekstong mahìbog',
+'bold_sample' => 'Mahìbog na teksto',
 'bold_tip' => 'Mahìbog na teksto',
-'italic_sample' => 'Tekstong Itáliko',
-'italic_tip' => 'Tekstong patagilíd',
-'link_sample' => 'Titulo nin takod',
-'link_tip' => 'Panlaog na takod',
-'extlink_sample' => 'http://www.example.com títulong nakatakod',
-'extlink_tip' => 'Panluwas na takod (giromdomon an http:// na prefiho)',
-'headline_sample' => 'Tekstong pamayohan',
-'headline_tip' => 'Tangga ika-2 na pamayohan',
-'nowiki_sample' => "Isaliot digdi an tekstong dai na-''format''",
-'nowiki_tip' => "Dai pagindiendehon pag-''format'' kan wiki",
+'italic_sample' => 'Itálikong teksto',
+'italic_tip' => 'Tekstong Itáliko',
+'link_sample' => 'Titulo nin sugpon',
+'link_tip' => 'Panlaog na sugpon',
+'extlink_sample' => 'http://www.example.com títulong sugpon',
+'extlink_tip' => 'Panluwas na sugpon(giromdomon an http:// pangenot na panigmit)',
+'headline_sample' => 'Pamayuhang linya kan teksto',
+'headline_tip' => 'Talangga 2 pamayuhang-linya',
+'nowiki_sample' => 'Isaliot an dae nakapormat na teksto digde',
+'nowiki_tip' => 'Balewalaon an pampormat na wiki',
 'image_sample' => 'Halimbawa.jpg',
 'image_tip' => 'Nakalubog na sagunson',
 'media_sample' => 'Halimbawa.ogg',
 'media_tip' => 'Kilyaw nin sagunson (file)',
-'sig_tip' => 'Pirma mo na may taták nin oras',
-'hr_tip' => 'Pabalagbag na linya (use sparingly)',
+'sig_tip' => 'An saimong pirma na igwang tatak-oras',
+'hr_tip' => 'Pabalagbag na linya (gamiton paminsan-minsan)',
 
 # Edit pages
-'summary' => 'Sumada:',
+'summary' => 'Sumaryo:',
 'subject' => 'Tema/pamayohan:',
-'minoredit' => 'Sadit na paghirá ini',
-'watchthis' => 'Bantayan an pahinang ini',
+'minoredit' => 'Ini sarong dikiton na pagliwat',
+'watchthis' => 'Bantayan ining pahina',
 'savearticle' => 'Itagáma an pahina',
 'preview' => 'Tànawón',
-'showpreview' => 'Hilingón an patànaw',
+'showpreview' => 'Ipahiling an patanaw',
 'showlivepreview' => 'Patànaw na direkto',
-'showdiff' => 'Hilingón an mga pagbabàgo',
-'anoneditwarning' => "'''Patanid:''' Dai ka nakalaog. Masusurat an saimong IP sa uusipón kan pagbabàgo kan pahinang ini.",
+'showdiff' => 'Ipahiling an mga kaliwatan',
+'anoneditwarning' => "'''Patanid:''' Ika dae nakapaglaog. An saimong estada kan IP maisusurat sa laog kan historiya nin pagliliwat sa pahinang ini.",
 'anonpreviewwarning' => 'Dae ka tabi nakalaog. An pagtatagama matala kan saimong IP address sa historya nin pagliwat sa pahinang ini.',
 'missingsummary' => "'''Paisi:''' Dai ka nagkaag nin sumád kan paghirâ. Kun pindotón mo giraray an Itagama, maitatagama an hirá mo na mayô kaini.",
 'missingcommenttext' => 'Paki lâgan nin komento sa ibabâ.',
@@ -815,10 +817,8 @@ Ini puwedeng pinagbalyo o pinagpara na habang saimong pinaghihiling an pahina.',
 
 An sekretong panlaog para sa bagong panindog mapuwede tabing maribayan ''[[Special:ChangePassword|Ribayan an sekretong panlaog]]'' na pahina matapos na makalaog.",
 'newarticle' => '(Bàgo)',
-'newarticletext' => 'Sinunod mo an takod sa pahinang mayò pa man.
-Tangarig magibo an pahina, magpoon pagsurat sa kahon sa babâ
-(hilingón an [[{{MediaWiki:Helppage}}|pahina nin tabang]] para sa iba pang impormasyon).
-Kun dai tinuyong nakaabot ka digdi, pindoton sana an back sa browser mo.',
+'newarticletext' => "Ika nakapagsunod sa sarong sugpon pasiring sa sarong pahina na bako pang eksistido. Tanganing makapagmukna nin pahina, magpoon sa pagpindot sa laog nin kahon sa ibaba (hilngon an [[{{MediaWiki:Helppage}}|pahina nin katabangan]] para sa kadugangan na impormasyon).
+Kun ika napasalang nakadigde, i-klik an  '''ibalik''' na pindutan kan saimong kilyaw.",
 'anontalkpagetext' => "----''Ini iyo an pahina kan orolayan para an sarong dae bistadong paragamit na dae pa nakapagmukna nin panindog, o dae pa nakapaggamit kaini.
 Kaya kami kaipong gumamit nin numerikal na IP address sa pagbisto saiya.
 An arog kaining IP address puwedeng maikapagheras sa nagkapirang mga paragamit.
@@ -874,7 +874,7 @@ Nanyayari nanggad ini kun naggagamit ka nin bakong maraháy asin dai bistong web
 'edit_form_incomplete' => "'''An ibang mga parte kan porma nin pagliwat dae nakaabot sa serbidor; paki-dobleng mansay na an saimong mga pinagliwat bilog na yaon pa asin paki-otro giraray.'''",
 'editing' => 'Pigliliwat an $1',
 'creating' => 'Pinagmumukna an $1',
-'editingsection' => 'Pighihira an $1 (seksyon)',
+'editingsection' => 'Pinagliliwat an $1 (seksyon)',
 'editingcomment' => 'Pigliliwat an $1 (bagong seksyon)',
 'editconflict' => 'Komplikto sa paghihira: $1',
 'explainconflict' => "May ibang parágamit na nagbàgo kaining pahina kan pagpoon mong paghirá kaini.
@@ -985,24 +985,24 @@ Ining mga argumento tabi pinagharali na.",
 ''$2'' an rason na pigtao ni $3",
 
 # History pages
-'viewpagelogs' => 'Hilingón an mga usip para sa pahinang ini',
+'viewpagelogs' => '
+Hilingon an mga katalaanan para sa pahinang ini',
 'nohistory' => 'Mayong paghirá nin uusipón sa pahinang ini.',
 'currentrev' => 'Sa ngonyan na pagpakarháy',
 'currentrev-asof' => 'Pinakahuring pagbabago kan $1',
-'revisionasof' => 'Pagpakarháy sa $1',
-'revision-info' => 'An pagpakarháy sa $1 ni $2',
-'previousrevision' => '←Lumà pang pagpakarhay',
-'nextrevision' => 'Mas bàgong pagpakarháy→',
-'currentrevisionlink' => 'Sa ngonyan na pagpakarháy',
-'cur' => 'ngonyán',
+'revisionasof' => 'Rebisyon poon kan $1',
+'revision-info' => 'Rebisyon poon kan $1 ni $2',
+'previousrevision' => '←Lumàon na rebisyon',
+'nextrevision' => 'Mas bàguhon na rebisyon→',
+'currentrevisionlink' => 'Sa ngunyan na rebisyon',
+'cur' => 'sa ngunyán',
 'next' => 'sunod',
-'last' => 'huri',
+'last' => 'sa nakaagi',
 'page_first' => 'enot',
 'page_last' => 'huri',
-'histlegend' => 'Kaib na pinili: markahán an mga kahon kan mga bersyon tangarig makomparar asin pindoton an enter o butones babâ.<br />
-Legend: (ngonyan) = kaibhán sa ngonyan na bersyon,
-(huri) = kaibhán sa huring bersyon, S = saradít na paghirá.',
-'history-fieldset-title' => 'Rinsayon an uusipon',
+'histlegend' => "Kalaenan sa pilian: Markahan an mga kahon nin radyo kan mga rebisyon tanganing komapararon asin pinduta an \"enter\" o an pindutan na yaon sa irarom.<br />
+Kabalaynan: '''({{int:cur}})''' = kalaenan sa pinakahuring rebisyon, '''({{int:last}})''' = kalaenan sa sinundan na rebisyon, '''{{int:minoreditletter}}''' = dikiton na pagliwat.",
+'history-fieldset-title' => 'Historiya nin kinilyawan',
 'history-show-deleted' => 'Pinagpura sana',
 'histfirst' => 'pinakalumaon',
 'histlast' => 'pinakabaguhon',
@@ -1147,7 +1147,7 @@ Tandaan na an paggagamit kan nabigasyong nin mga kasurugponan makakapagliwat kai
 # Merge log
 'mergelog' => 'Talaan kan pagtiripon',
 'pagemerge-logentry' => 'pinagtiripon [[$1]] na magin [[$2]] (mga pagbabago sagkod sa $3)',
-'revertmerge' => 'Suwayón',
+'revertmerge' => 'Suruwayón',
 'mergelogpagetext' => 'Sa ibaba yaon an sarong listahan kan pinakahuring mga pagtitiripon kan sarong pahinang historiya sagkod sa iba pa.',
 
 # Diffs
@@ -1156,9 +1156,9 @@ Tandaan na an paggagamit kan nabigasyong nin mga kasurugponan makakapagliwat kai
 'difference-title-multipage' => 'Pagkalaen sa tahaw nin mga pahina sa "$1" asin "$2"',
 'difference-multipage' => '(Pagkalaen sa tahaw kan mga pahina)',
 'lineno' => 'Taytáy $1:',
-'compareselectedversions' => 'Ikomparar an mga piniling bersyon',
+'compareselectedversions' => 'Kompararon an pinagpiling mga rebisyon',
 'showhideselectedversions' => 'Ihayag/itago mga piniling pagbabago',
-'editundo' => 'isulít',
+'editundo' => 'sulíton',
 'diff-empty' => '(Mayong kalaenan)',
 'diff-multi' => '({{PLURAL:$1|Saro intermediate na pagbabago|$1 mga intermediate na mga pagbabago}} by {{PLURAL:$2|sarong paragamit|$2 mga paragamit}} dae pinaghahayag)',
 'diff-multi-manyusers' => '({{PLURAL:$1|Sarong intermediate na pagbabago|$1 mga intermediate na mga pagbabago}} na sobra sa $2 {{PLURAL:$2|paragamit|mga paragamit}} dae pinaghahayag)',
@@ -1168,8 +1168,8 @@ Ini pirmihan na pinagkakausa sa paagi nin pagsusunod nin luwas sa petsang diff n
 An mga detalye mapuwedeng matatagboan sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan kan pinagpuraan].',
 
 # Search results
-'searchresults' => 'Resulta kan paghánap',
-'searchresults-title' => 'Hanápon an resulta para sa "$1"',
+'searchresults' => 'Resulta kan paghahánap',
+'searchresults-title' => 'Resulta kan paghahanap para sa "$1"',
 'searchresulttext' => 'Para sa iba pang impormasyon manonongod sa paghanap sa {{SITENAME}}, hilingon tabî an [[{{MediaWiki:Helppage}}|{{int:help}}]].',
 'searchsubtitle' => 'Ika naghanap para sa \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|gabos na mga pahina na nagpopoon sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|gabos na mga pahina na nakatakod sa "$1"]])',
 'searchsubtitleinvalid' => "Hinanap mo an '''$1'''",
@@ -1178,12 +1178,12 @@ An mga detalye mapuwedeng matatagboan sa [{{fullurl:{{#Special:Log}}/delete|page
 'notitlematches' => 'Mayong angay na título nin pahina',
 'textmatches' => 'Angay an teksto nin páhina',
 'notextmatches' => 'Mayong ángay na teksto nin páhina',
-'prevn' => 'dating {{PLURAL:$1|$1}}',
-'nextn' => 'sunód na {{PLURAL:$1|$1}}',
+'prevn' => 'an nakaagi{{PLURAL:$1|$1}}',
+'nextn' => 'an masunód{{PLURAL:$1|$1}}',
 'prevn-title' => 'Dati $1 {{PLURAL:$1|resulta|mga resulta}}',
 'nextn-title' => 'Sunod $1  {{PLURAL:$1|resulta|mga resulta}}',
 'shown-title' => 'Ipahiling $1  {{PLURAL:$1|resulta|mga resulta}} sa kada pahina',
-'viewprevnext' => 'Hilingón ($1 {{int:pipe-separator}} $2) ($3)',
+'viewprevnext' => 'Tanawon ($1{{int:pipe-separator}}$2)($3)',
 'searchmenu-legend' => 'Opsyon sa paghahanap',
 'searchmenu-exists' => "'''Igwa nin sarong pahina na pinagngaranan na \"[[:\$1]]\" sa wiking ini.'''",
 'searchmenu-new' => "'''Muknaon an pahina \"[[:\$1]]\" sa wiking ini!'''",
@@ -1191,7 +1191,7 @@ An mga detalye mapuwedeng matatagboan sa [{{fullurl:{{#Special:Log}}/delete|page
 'searchprofile-articles' => 'Mga pahina nin laog',
 'searchprofile-project' => 'Mga pahina nin Tabang asin Proyekto',
 'searchprofile-images' => 'Multimidya',
-'searchprofile-everything' => 'Gabós',
+'searchprofile-everything' => 'Gabós na bagay',
 'searchprofile-advanced' => 'Adbansiyado',
 'searchprofile-articles-tooltip' => 'Hanapon sa $1',
 'searchprofile-project-tooltip' => 'Maghanap sa $1',
@@ -1203,7 +1203,7 @@ An mga detalye mapuwedeng matatagboan sa [{{fullurl:{{#Special:Log}}/delete|page
 'search-result-score' => 'Relebansiya: $1%',
 'search-redirect' => '(Panukdong otro $1)',
 'search-section' => '(Seksyon $1)',
-'search-suggest' => 'Boót mo iyó: $1',
+'search-suggest' => 'Boot mong ipakahulugan: $1',
 'search-interwiki-caption' => 'Tugang na mga proyekto',
 'search-interwiki-default' => '$1 na mga resulta:',
 'search-interwiki-more' => '(dakol pa)',
@@ -1305,7 +1305,7 @@ An siisay man na makaaram kaini makakapagbasa kan saimong bantay-listahan, kaya
 'prefs-reset-intro' => 'Ika makakagamit kaining pahina tanganing ilapat giraray an saimong mga kabotan sa panugmad kan sayt.
 Ini dae tabi matitingkog.',
 'prefs-emailconfirm-label' => 'Kumpirmasyon sa E-koreo',
-'youremail' => 'E-koreo:',
+'youremail' => 'E-surat:',
 'username' => '{{GENDER:$1|Pangaran nin paragamit}}:',
 'uid' => '{{GENDER:$1|Paragamit}} ID:',
 'prefs-memberingroups' => '{{GENDER:$2|Miyembro}} kan {{PLURAL:$1|grupo|mga grupo}}:',
@@ -1371,10 +1371,10 @@ An saimong e-surat na adres dae ipagbuyagyag kunsoarin na an ibang paragamit mak
 'userrights-no-interwiki' => 'Ika mayo tabing permkso na magliwat sa paragamit na karapatan sa ibang wikis.',
 'userrights-nodatabase' => 'An datos-sarayan $1 bakong eksistido o bakong lokal.',
 'userrights-nologin' => 'Ika kaipuhan na [[Special:UserLogin|maglaog ka]] na igwa nin panindog na administrador bago ka makapagtao nin karapatan sa paragamit.',
-'userrights-notallowed' => 'An saimong panindog mayo tabi nin permiso na magdagdag o maghale nin karapatan kan mga paragamit.',
+'userrights-notallowed' => 'Ika mayo tabing permiso na magdugang o magtangkas nin mga katanosan kan paragamit.',
 'userrights-changeable-col' => 'Mga grupo na mapuwede mong baguhon',
 'userrights-unchangeable-col' => 'Mga grupo na dae mo mapuwedeng baguhon',
-'userrights-conflict' => 'Kumplikto sa katanosan nin paragamit! Pakigibo giraray kan saimong mga kaliwatan.',
+'userrights-conflict' => 'Kumplikto sa mga kaliwatan nin mga katanosan kan paragamit! Tabi man pakirikisa asin kumpirmaron an saimong mga kaliwatan.',
 'userrights-removed-self' => 'Saimong matrayumpong pinagtangkas an sadire mong mga katanosan. Sa siring, ika dae na tabi makakalaog sa pahinang ini.',
 
 # Groups
@@ -1521,28 +1521,28 @@ An saimong e-surat na adres dae ipagbuyagyag kunsoarin na an ibang paragamit mak
 'action-editmyprivateinfo' => 'liwaton an saimong pribadong impormasyon',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|pagbabâgo|mga pagbabâgo}}',
-'recentchanges' => 'Mga nakakaági pa sanáng pagbabàgo',
+'nchanges' => '$1 {{PLURAL:$1|kaliwatan|mga kaliwatan}}',
+'recentchanges' => 'Dae pa sana nahahaloy na mga kaliwatan',
 'recentchanges-legend' => 'Pinakahuring mga option kan mga pagbabago',
 'recentchanges-summary' => 'Hanapon an mga pinahuring pagbabâgo sa wiki digdi sa páhinang ini.',
 'recentchanges-noresult' => 'Mayong mga kaliwatan sa laog kan itinaong peryodo na nagtutugmad kaining krayterya.',
-'recentchanges-feed-description' => 'Hanápon an mga pinakahuring pagbabàgo sa wiki sa hungit na ini.',
+'recentchanges-feed-description' => 'Antabayon an pinakahuring dae pa sana nahaloy na mga kaliwatan sa wiki na yaon sa panhungit na ini.',
 'recentchanges-label-newpage' => 'Ining pagliwat nakapagmukna nin sarong baguhon na pahina',
 'recentchanges-label-minor' => 'Ini saro sanang menor na pagliwat',
 'recentchanges-label-bot' => 'Ining pagliwat pinaghimo bilang sarong bot',
 'recentchanges-label-unpatrolled' => 'Ining pagliwat dae pa tabi pinagpatrolyahan',
 'rcnote' => "Yaon sa ibaba iyo {{PLURAL:$1|an '''1''' pagbabago|an mga huring '''$1''' mga pagbabago}} kan nakaaging huring {{PLURAL:$2|aldaw|'''$2''' mga aldaw}}, poon pa kan $5, $4.",
-'rcnotefrom' => "Mahihiling sa babâ an mga pagbabàgo poon kan '''$2''' (hasta '''$1''' ipinapahiling).",
-'rclistfrom' => 'Ipahilíng an mga pagbabàgo poon sa $1',
-'rcshowhideminor' => '$1 saradit na pagligwat',
-'rcshowhidebots' => '$1 mga bot',
-'rcshowhideliu' => '$1 mga nakadágos na paragamit',
-'rcshowhideanons' => '$1 mga dai bistong paragamit',
-'rcshowhidepatr' => '$1 pigbabantayan na mga pagliwat',
-'rcshowhidemine' => '$1 mga pagliwat ko',
-'rclinks' => 'Ipahilíng an $1 huring pagbabàgo sa ultimong $2 aldaw<br />$3',
-'diff' => 'ibá',
-'hist' => 'usip',
+'rcnotefrom' => "Sa ibaba iyo an mga kaliwatan poon kan '''$2''' (sagkod sa '''$1''' na ipinapahiling).",
+'rclistfrom' => 'Ipahiling an baguhon na mga kaliwatan magpoon kan $1',
+'rcshowhideminor' => '$1 saradit na mga pagliwat',
+'rcshowhidebots' => '$1 mga gantaw',
+'rcshowhideliu' => '$1 nakalaog na mga paragamit',
+'rcshowhideanons' => '$1 mga dae bistong paragamit',
+'rcshowhidepatr' => '$1 patrolyadong mga pagliwat',
+'rcshowhidemine' => '$1 sakong mga pagliliwat',
+'rclinks' => 'Ipahilíng an $1 huring mga kaliwatan sa laog nin huring $2 na mga aldaw<br />$3',
+'diff' => 'kalaenan',
+'hist' => 'sagaysay',
 'hide' => 'Tagóon',
 'show' => 'Ipahilíng',
 'minoreditletter' => 's',
@@ -1558,17 +1558,17 @@ An saimong e-surat na adres dae ipagbuyagyag kunsoarin na an ibang paragamit mak
 'rc-old-title' => 'orihinal na pinagmukna bilang "$1"',
 
 # Recent changes linked
-'recentchangeslinked' => 'Mga angay na pagbabàgo',
+'recentchangeslinked' => 'Mga katakod na mga kaliwatan',
 'recentchangeslinked-feed' => 'Mga angay na pagbabàgo',
-'recentchangeslinked-toolbox' => 'Mga angay na pagbabàgo',
-'recentchangeslinked-title' => 'Mga pagbabàgong angay sa "$1"',
+'recentchangeslinked-toolbox' => 'Kasurugpon na mga kaliwatan',
+'recentchangeslinked-title' => 'Mga kaliwatan na katakod sa "$1"',
 'recentchangeslinked-summary' => "Ini an listahan kan mga pagbabagong ginibo kan dae pa sana nahaloy sa mga pahina na nakatakod gikan sa sarong pinagsambit na pahina (o sa mga miyembro kan sarong pinagsambit na kategorya).
 An mga pahina na yaon sa [[Special:Watchlist|saimong Bantay-listahan]] na '''tekstong mahibog'''.",
 'recentchangeslinked-page' => 'Pahinang ngaran:',
 'recentchangeslinked-to' => 'Ipahiling an mga pagbabago sa mga pahina na nakatakod sa pinagtaong pahina lugod',
 
 # Upload
-'upload' => 'Isàngat an file',
+'upload' => 'Ikarga an sagunson',
 'uploadbtn' => 'Ikargá an file',
 'reuploaddesc' => 'Ikansela an pagkarga asin magbalik sa porma kan pagkakarga',
 'upload-tryagain' => 'Isumite an modipikadong deskripsyon kan sagunson',
@@ -1591,11 +1591,11 @@ Sa pagbali nin sarong sagunson sa sarong pahina, gamita tabi an takod kan saro s
 'upload-preferred' => 'Pinagpapaurog na mga tipo nin sagunson: $1',
 'upload-prohibited' => 'Pinagbabawal na mga tipo nin sagunson: $1.',
 'uploadlog' => 'historial nin pagkarga',
-'uploadlogpage' => 'Ikarga an usip',
+'uploadlogpage' => 'Ikarga an katalaanan',
 'uploadlogpagetext' => 'Yaon sa ibaba an sarong listahan kan dae pa sanang nahahaloy na pinagkargang mga sagunson.
 Hilngon tabi an [[Special:NewFiles|galleriya kan mga bagong sagunson]] para sa mas biswal na lantawon.',
 'filename' => 'Pangaran kan dokumento',
-'filedesc' => 'Kagabsan',
+'filedesc' => 'Sumaryo',
 'fileuploadsummary' => 'Kagabsan:',
 'filereuploadsummary' => 'Mga pagbabago kan sagunson:',
 'filestatus' => 'Kamugtakan sa karapatan nin panurat:',
@@ -1658,7 +1658,7 @@ Kaipuhan mong aramon an historiya kan pagpura bago ka man magpadagos sa pagkarga
 'uploadwarning' => 'Patanid sa pagkarga',
 'uploadwarning-text' => 'Pakibaguha tabi an deskripsyon kan sagunson sa ibaba asin paki-otroha giraray.',
 'savefile' => "Itagama an ''file''",
-'uploadedimage' => 'Ikinarga "[[$1]]"',
+'uploadedimage' => 'ipinagkarga na "[[$1]]"',
 'overwroteimage' => 'kinarga an bagong bersión kan "[[$1]]"',
 'uploaddisabled' => 'Pigpopondó an mga pagkargá',
 'copyuploaddisabled' => 'An pagkarga sa paagi kan kilyawan pinagpondo.',
@@ -1819,13 +1819,13 @@ Kunsoarin na pinagsara nin paragamit, an mga sagunson sana kun saen an pinagkarg
 'listfiles_count' => 'Mga Bersyon',
 
 # File description page
-'file-anchor-link' => 'File',
-'filehist' => 'Uusipón nin file',
-'filehist-help' => 'Magpindot kan petsa/oras para mahiling an hitsura kan file sa piniling oras.',
+'file-anchor-link' => 'Sagunson',
+'filehist' => 'Historiya nin sagunson',
+'filehist-help' => 'Magpindot nin sarong petsa/oras tanganing mahiling an sagunson siring na ini ipinagpahiling sa panahon na yan.',
 'filehist-deleteall' => 'parâon gabos',
 'filehist-deleteone' => 'puraon',
-'filehist-revert' => 'ibalik',
-'filehist-current' => 'ngonyan',
+'filehist-revert' => 'balikon',
+'filehist-current' => 'sa ngunyan',
 'filehist-datetime' => 'Petsa/Oras',
 'filehist-thumb' => 'Imaheng sadit',
 'filehist-thumbtext' => 'Imaheng sadit para sa bersyon kan nakaaging $1',
@@ -1840,7 +1840,7 @@ Kunsoarin na pinagsara nin paragamit, an mga sagunson sana kun saen an pinagkarg
 'linkstoimage-more' => 'Sobra sa $1 {{PLURAL:$1|mga takod nin pahina|$1 mga pahinang nakatakod}} kaining sagunson.
 An minasunod na lista nagpapahiling kan {{PLURAL:$1|enot na pahinang takod|enot na $1 pahinang nakatakod}} kaining sagunson sana.
 Sarong [[Special:WhatLinksHere/$2|bilog na lista]] an maantabayan.',
-'nolinkstoimage' => 'Mayong mga pahinang nakatakod sa dokumentong ini.',
+'nolinkstoimage' => 'Dae nagkaigwa nin mga pahina na masugpon kaining sagunson.',
 'morelinkstoimage' => 'Hilngon an [[Special:WhatLinksHere/$1|kadagdagang mga takod]] kaining sagunson.',
 'linkstoimage-redirect' => '$1 (sagunson na panukdong otro) $2',
 'duplicatesoffile' => 'An minasunod na {{PLURAL:$1|sagunson sarong duplikado|$1 mga sagunsong duplikado}} kaining sagunson ([[Special:FileDuplicateSearch/$2|kadagdagang mga detalye]]):',
@@ -1909,7 +1909,7 @@ Giromdoma baya na mag-tsek para sa iba pang kasugpon sa mga templato bago mo pag
 'unusedtemplateswlh' => 'ibang mga takod',
 
 # Random page
-'randompage' => 'Arín man na pahina',
+'randompage' => 'Purakan na pahina',
 'randompage-nopages' => 'Dae tabi nin mga pahina sa minasunod na {{PLURAL:$2|espasyong-ngaran|mga espasyong-ngaran}}: $1.',
 
 # Special:RandomInCategory
@@ -1945,7 +1945,7 @@ Giromdoma baya na mag-tsek para sa iba pang kasugpon sa mga templato bago mo pag
 'statistics-mostpopular' => 'mga pinaka pighiling na pahina',
 
 'disambiguations' => 'Mga pahinang minatulay pasiring sa pampalinaw na mga pahina',
-'disambiguationspage' => 'Template:clarip',
+'disambiguationspage' => 'Template:kapaliwanagan',
 'disambiguations-text' => "An mga minasunod na mga pahina igwang laog nin kisera sarong tulay pasiring sa '''pampalinaw na pahina'''.
 Sinda mapuwedeng makipagsugpon pasiring sa sarong mas manigong pahina nanggad.<br />
 An sarong pahina tratado bilang pampalinaw na pahina kun ini minagamit nin sarong templato na nakasugpon gikan sa [[MediaWiki:Disambiguationspage]].",
@@ -1980,11 +1980,11 @@ Ini ngunyan minatukdo-liwat pasiring sa [[$2]].',
 'fewestrevisions' => 'Mga artikulong may pinakadikit na pagpakarháy',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|byte|mga byte}}',
+'nbytes' => '$1 {{PLURAL:$1|bayta|mga bayta}}',
 'ncategories' => '$1 {{PLURAL:$1|kategorya|mga kategorya}}',
 'ninterwikis' => '$1 {{PLURAL:$1|an interwiki|mga interwiki}}',
 'nlinks' => '$1 {{PLURAL:$1|takod|mga takod}}',
-'nmembers' => '$1 {{PLURAL:$1|myembro|mga myembro}}',
+'nmembers' => '$1 {{PLURAL:$1|miyembro|mga miyembro}}',
 'nrevisions' => '$1 {{PLURAL:$1|pagpakarhay|mga pagpakarhay}}',
 'nviews' => '$1 {{PLURAL:$1|hiling|mga hiling}}',
 'nimagelinks' => 'Ginamit sa $1 {{PLURAL:$1|pahina|mga pahina}}',
@@ -2033,10 +2033,10 @@ Ini ngunyan minatukdo-liwat pasiring sa [[$2]].',
 'listusers-creationsort' => 'Salansanon sa paagi kan petsa nin pagmukna',
 'usereditcount' => '$1 {{PLURAL:$1|pigliwat|mga pigliwat}}',
 'usercreated' => '{{GENDER:$3|Minukna}} kan $1 sa $2',
-'newpages' => 'Mga bàgong pahina',
+'newpages' => 'Mga bàguhong pahina',
 'newpages-username' => 'Pangaran kan parágamit:',
 'ancientpages' => 'Mga pinakalumang pahina',
-'move' => 'Ibalyó',
+'move' => 'Balyuhon',
 'movethispage' => 'Ibalyó ining pahina',
 'unusedimagestext' => 'An minasunod na mga sagunson eksistido alagad dae nakadukot sa arinman na pahina.
 Pakigiromdom tabi na sa ibang websityo mapuwedeng nakatakod sa sarong sagunson na igwang direktang kilyawan, asin kaya mapuwedeng nakalista digde dawa ngani ini aktibong ginagamit.',
@@ -2051,8 +2051,8 @@ Pakigiromdom tabi na sa ibang websityo mapuwedeng nakatakod sa sarong sagunson n
 'querypage-disabled' => 'Ining espesyal na pahina pinagpundo nin huli sa kaggibohang mga rason.',
 
 # Book sources
-'booksources' => 'Ginikanang libro',
-'booksources-search-legend' => 'Maghanap nin mga ginikanang libro',
+'booksources' => 'Mga Ginikanan kan libro',
+'booksources-search-legend' => 'Maghanap para sa mga ginikanang libro',
 'booksources-go' => 'Dumanán',
 'booksources-text' => "Mahihiling sa babâ an lista kan mga takod sa ibang ''site'' na nagbenbenta nin mga bâgo asin nagamit nang libro, asin pwede ser na igwa pang mga ibang impormasyon manonongod sa mga librong pighahanap mo:",
 'booksources-invalid-isbn' => 'An pinagtaong ISBN dae minaluwas na balido; paki-tsek tabi nin mga sala sa pagkopya gikan sa orihinal na piggikanan.',
@@ -2060,7 +2060,7 @@ Pakigiromdom tabi na sa ibang websityo mapuwedeng nakatakod sa sarong sagunson n
 # Special:Log
 'specialloguserlabel' => 'Paragibo:',
 'speciallogtitlelabel' => 'Target (titulo o paragamit):',
-'log' => 'Mga usip',
+'log' => 'Mga katalaanan',
 'all-logs-page' => 'Gabos na pampublikong mga talaan',
 'alllogstext' => 'Kumbinadong pagpapahiling kan gabos na yaong mga talaan sa {{SITENAME}}.
 Saimong mapasadit an patanaw sa paagi nin pagpipili nin sarong tipo nin talaan, an ngaran nin paragamit (sensitibo sa pindutan), o an apektadong pahina (sensitibo sa pindutan man).',
@@ -2069,13 +2069,13 @@ Saimong mapasadit an patanaw sa paagi nin pagpipili nin sarong tipo nin talaan,
 'showhideselectedlogentries' => 'Ipahiling/itago an pinagpiling mga entrada sa talaan',
 
 # Special:AllPages
-'allpages' => 'Gabos na pahina',
+'allpages' => 'Gabos na mga pahina',
 'alphaindexline' => '$1 sagkod sa $2',
 'nextpage' => 'Sunod na pahina ($1)',
 'prevpage' => 'Nakaaging pahina ($1)',
 'allpagesfrom' => 'Ipahiling an mga páhina poon sa:',
 'allpagesto' => 'Ipahiling an mga pahina na may tapos na:',
-'allarticles' => 'Gabos na mga artikulo',
+'allarticles' => 'Gabos na mga pahina',
 'allinnamespace' => 'Gabos na mga páhina ($1 ngaran-espacio)',
 'allnotinnamespace' => 'Gabos na mga páhina (na wara sa $1 ngaran-espacio)',
 'allpagesprev' => 'Nakaagi',
@@ -2092,7 +2092,7 @@ Saimong mapasadit an patanaw sa paagi nin pagpipili nin sarong tipo nin talaan,
 'cachedspecial-refresh-now' => 'Hilngon an pinakahuri.',
 
 # Special:Categories
-'categories' => 'Mga Kategorya',
+'categories' => 'Mga Kategoriya',
 'categoriespagetext' => 'An minasunod {{PLURAL:$1|kategorya na may laog na|mga kategorya na may laog na}} mga pahina o midya.
 [[Special:UnusedCategories|Dae ginamit na mga kategorya]] dae ipinapahiling digde.
 Asin man hilnga an [[Special:WantedCategories|kinakaipong mga kategorya]].',
@@ -2113,7 +2113,7 @@ Asin man hilnga an [[Special:WantedCategories|kinakaipong mga kategorya]].',
 'linksearch-text' => 'Mga tsambang baraha arog baka kan "*.wikipedia.org" na puwedeng paggamiton.
 Minakaipo kisera halangkaw na kamugtakan nin kinasakupan, halimbawa "*.org".<br />
 Suportadong {{PLURAL:$2|protokol|mga protokol}}: <code>$1</code> (defaults to http:// kun mayong protokol na pinagkaag).',
-'linksearch-line' => '$1 an nakatakod sa $2',
+'linksearch-line' => '$1 isinugpon gikan sa $2',
 'linksearch-error' => 'Mga pantsambang baraha mapuwedeng magluwas sana sa poon kan hostname.',
 
 # Special:ListUsers
@@ -2141,7 +2141,7 @@ Puwedeng magkakaigwa nin [[{{MediaWiki:Listgrouprights-helppage}}|kadagdagang im
 'listgrouprights-group' => 'Grupo',
 'listgrouprights-rights' => 'Derechos',
 'listgrouprights-helppage' => 'Help:Pangrupong mga karapatan',
-'listgrouprights-members' => '(lista kan mga kaapíl)',
+'listgrouprights-members' => '(listahan kan mga miyembro)',
 'listgrouprights-addgroup' => 'Dagdag {{PLURAL:$2|grupo|mga grupo}}: $1',
 'listgrouprights-removegroup' => 'Halia an {{PLURAL:$2|grupo|mga grupo}}: $1',
 'listgrouprights-addgroup-all' => 'Idagdag an gabos na mga grupo',
@@ -2156,7 +2156,7 @@ Puwedeng magkakaigwa nin [[{{MediaWiki:Listgrouprights-helppage}}|kadagdagang im
 'mailnologintext' => "Kaipuhan ika si [[Special:UserLogin|nakalaog]]
 asin may marhay na ''e''-surat sa saimong [[Special:Preferences|Mga kabôtan]]
 para makapadara nin ''e''-surat sa ibang parágamit.",
-'emailuser' => 'E-koreohan ining paragamit',
+'emailuser' => 'E-suratan ining paragamit',
 'emailuser-title-target' => 'E-surat kaining {{GENDER:$1|paragamit}}',
 'emailuser-title-notarget' => 'E-surat na paragamit',
 'emailpage' => 'E-suratan an parágamit',
@@ -2217,7 +2217,7 @@ An maabot na mga pagbabâgo sa páhinang ini asin sa asosyadong páhina nin olay
 'watchlistcontains' => 'An saimong lista nin pigbabantayan igwang $1 na {{PLURAL:$1|páhina|mga páhina}}.',
 'iteminvalidname' => "May problema sa bagay na '$1', salâ an pangaran...",
 'wlnote' => "Sa ibaba an {{PLURAL:$1|huring pagbabago|mga huring '''$1''' pagbabago}} sa nakaaging {{PLURAL:$2|oras|'''$2''' mga oras}}, magpoon pa kan $3, $4.",
-'wlshowlast' => 'Ipahilíng an ultimong $1 na oras $2 na aldaw $3',
+'wlshowlast' => 'Ipahilíng an nakaaging $1 na mga oras mga $2 na aldaw $3',
 'watchlist-options' => 'Bantay-listahan na mga pagpipilian',
 
 # Displayed when you click the "watch" button and it is in the process of watching
@@ -2284,11 +2284,11 @@ Balik-simbag asin kadagdagang asistensiya:
 'confirmdeletetext' => 'Paparaon mo sa base nin datos ining pahina kasabay an gabos na mga uusipón kaini.
 Konpirmaron tabì na talagang boot mong gibohon ini, nasasabotan mo an mga resulta, asin an piggigibo mo ini konporme sa
 [[{{MediaWiki:Policy-url}}]].',
-'actioncomplete' => 'Nagibo na',
+'actioncomplete' => 'An aksyon nakumpleto na',
 'actionfailed' => 'An aksyon nagpalya',
 'deletedtext' => 'Pigparà na an "$1" .
 Hilingón tabì an $2 para mahiling an lista nin mga kaaagi pa sanang pagparà.',
-'dellogpage' => 'Usip nin pagparà',
+'dellogpage' => 'Talaan nin pagpura',
 'dellogpagetext' => 'Mahihiling sa babâ an lista kan mga pinakahuring pagparâ.',
 'deletionlog' => 'Historial nin pagparâ',
 'reverted' => 'Ibinalik sa mas naenot na pagpakarhay',
@@ -2308,7 +2308,7 @@ An pagpupura kaini mapuwedeng makapag-antala sa mga operasyon kan datos-sarayan
 # Rollback
 'rollback' => 'Mga paghihira na pabalík',
 'rollback_short' => 'pabalík',
-'rollbacklink' => 'pabalikón',
+'rollbacklink' => 'pabalikwaton',
 'rollbacklinkcount' => 'ibalik $1 {{PLURAL:$1|pagliwat|mga pagliwat}}',
 'rollbacklinkcount-morethan' => 'ibalik an sobrang $1  {{PLURAL:$1|pagliwat|mga pagliwat}}',
 'rollbackfailed' => 'Prakaso an pagbalík',
@@ -2329,7 +2329,7 @@ kinanselár ining aksyón bilang sarong paglikay kontra sa ''session hijacking''
 Pindotón tabî an \"back\" asin ikarga giraray an páhinang ginikanan mo, dangan probarán giraray.",
 
 # Protect
-'protectlogpage' => 'Usip nin pagsagáng',
+'protectlogpage' => 'Katalaanan nin proteksyon',
 'protectlogtext' => 'Sa ibaba iyo an sarong listahan kan mga pagbabago sa mga proteksyon kan pahina.
 Hilnga tabi an [[Special:ProtectedPages|listahan kan protektadong mga pahina]] para sa listahan kan presenteng naggaganang mga proteksyon nin pahina.',
 'protectedarticle' => 'protektado "[[$1]]"',
@@ -2448,27 +2448,27 @@ $1",
 'undelete-show-file-submit' => 'Iyo po',
 
 # Namespace form on various pages
-'namespace' => 'Liang-liang:',
-'invert' => 'Pabaliktadón an pinili',
+'namespace' => 'Espasyong-ngaran:',
+'invert' => 'Pabaliktadón an pinilian',
 'tooltip-invert' => 'I-tsek ining kahon tanganing tagoon an mga pagbabago sa mga pahina na yaon sa laog kan pinagpiling espasyong-ngaran (asin an asosyado na espasyong-ngaran kun may tsek)',
 'namespace_association' => 'Asosyado na espasyong-ngaran',
 'tooltip-namespace_association' => 'I-tsek ining kahon tangani man ibali an olay o subheto na espasyong-ngaran na asosyado sa pinagpili na espasyong-ngaran',
-'blanknamespace' => '(Principal)',
+'blanknamespace' => '(Pangenot)',
 
 # Contributions
 'contributions' => '{{GENDER:$1|Paragamit}} na mga kaambagan',
 'contributions-title' => 'Mga kontribusyon kan paragamit para sa $1',
 'mycontris' => 'Mga Kaarambagan',
-'contribsub2' => 'Para sa $1 ($2)',
+'contribsub2' => 'Para ki $1($2)',
 'nocontribs' => 'Mayong mga pagbabago na nahanap na kapadis sa ining mga criteria.',
 'uctop' => '(sa ngunyan)',
 'month' => 'Poon bulan (asin mas amay):',
 'year' => 'Poon taon (asin mas amay):',
 
-'sp-contributions-newbies' => 'Ipahiling an mga kontribusión kan mga bagong kuenta sana',
+'sp-contributions-newbies' => 'Ipahiling an mga kaarambagan kan mga baguhong panindog sana',
 'sp-contributions-newbies-sub' => 'Para sa mga bàgong account',
 'sp-contributions-newbies-title' => 'Mga kontribusyon kan paragamit para sa baguhon an mga panindog',
-'sp-contributions-blocklog' => 'Bagáton an usip',
+'sp-contributions-blocklog' => 'Bagáton an katalaanan',
 'sp-contributions-deleted' => 'pinagpurang mga kontribusyon kan paragamit',
 'sp-contributions-uploads' => 'mga ikinarga',
 'sp-contributions-logs' => 'mga tinalaan',
@@ -2478,29 +2478,29 @@ $1",
 An pinakahuring entrada sa talaan nin pagbara nakahaya sa ibaba bilang reperensiya:',
 'sp-contributions-blocked-notice-anon' => 'Ining IP adres sa presente pinagbarahan.
 An pinakahuring entrada sa talaan nin pagbara nakahaya sa ibaba bilang reperensiya:',
-'sp-contributions-search' => 'Maghanap nin mga kontribusyon',
-'sp-contributions-username' => 'IP o ngaran kan parágamit:',
+'sp-contributions-search' => 'Maghanap nin mga kaarambagan',
+'sp-contributions-username' => 'Estada kan IP o ngaran-parágamit:',
 'sp-contributions-toponly' => 'Minapahiling sana nin mga pagliwat na pinakahurihang mga rebisyon',
 'sp-contributions-submit' => 'Hanápon',
 
 # What links here
-'whatlinkshere' => 'An nakatakód digdí',
+'whatlinkshere' => 'Ano an mga makasugpon digde',
 'whatlinkshere-title' => 'Mga pahina na nakasugpon sa "$1"',
 'whatlinkshere-page' => 'Pahina:',
-'linkshere' => "An mga minasunod na pahina nakatakod sa '''[[:$1]]''':",
-'nolinkshere' => "Mayong pahinang nakatakod sa '''[[:$1]]'''.",
+'linkshere' => "An mga minasunod na pahina isinusugpon sa '''[[:$1]]''':",
+'nolinkshere' => "Mayong mga pahinang kasugpon sa '''[[:$1]]'''.",
 'nolinkshere-ns' => "Mayong pahina na nakatakod sa '''[[:$1]]''' sa piniling ngaran-espacio.",
-'isredirect' => 'ilikay an pahina',
-'istemplate' => 'kabali',
+'isredirect' => 'palikwaton an pahina',
+'istemplate' => 'pinagkabalihan',
 'isimage' => 'kasugpon nin sagunson',
 'whatlinkshere-prev' => '{{PLURAL:$1|nakaagi|nakaaging $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|sunod|sunod na $1}}',
-'whatlinkshere-links' => '← mga takod',
+'whatlinkshere-next' => '{{PLURAL:$1|masunod|masunod na $1}}',
+'whatlinkshere-links' => '← mga kasugpunan',
 'whatlinkshere-hideredirs' => '$1 mga panukdong otro',
 'whatlinkshere-hidetrans' => '$1 kabaling-binalyuhan',
 'whatlinkshere-hidelinks' => '$1 mga kasugpon',
 'whatlinkshere-hideimages' => '$1 mga kasugpon nin mga sagunson',
-'whatlinkshere-filters' => 'Mga pansarà',
+'whatlinkshere-filters' => 'Mga saraan',
 
 # Block/unblock
 'autoblockid' => 'Awtomatikong-kabarahan #$1',
@@ -2530,7 +2530,7 @@ Magkaag nin espisipikong rason (halimbawa, magtao nin ehemplo kan mga páhinang
 'ipbenableautoblock' => 'Enseguidang bagaton an huring direccion nin  IP na ginamit kaining paragamit, asin kon ano pang ibang IP na proprobaran nindang gamiton',
 'ipbsubmit' => 'Bagáton ining parágamit',
 'ipbother' => 'Ibang oras:',
-'ipboptions' => '2ng oras:2 hours,1ng aldaw:1 day,3ng aldaw:3 days,1ng semana:1 week,2ng semana:2 weeks,1ng bulan:1 month,3ng bulan:3 months,6 na bulan:6 months,1ng taon:1 year,daing kasagkoran:infinite',
+'ipboptions' => '2ng oras:2 hours,1ng aldaw:1 day,3ng aldaw:3 days,1ng semana:1 week,2ng semana:2 weeks,1ng bulan:1 month,3ng bulan:3 months,6 na bulan:6 months,1ng taon:1 year,daeng kasagkoran:infinite',
 'ipbotheroption' => 'iba',
 'ipbotherreason' => 'Iba/dugang na rasón:',
 'ipbhidename' => 'Tagoon an ngaran nin paragamit gikan sa mga pagliliwat asin mga listahan',
@@ -2581,24 +2581,24 @@ Hilngon an [[Special:BlockList|listahan kan binarahan]] tanganing repasohon an m
 'ipblocklist-empty' => 'Mayong laog an lista nin mga binagat.',
 'ipblocklist-no-results' => 'Dai nabagat an hinagad na direccion nin IP o ngaran nin paragamit.',
 'blocklink' => 'bagáton',
-'unblocklink' => 'paagihon',
-'change-blocklink' => 'sanglián an pagbagat',
+'unblocklink' => 'haleon an bagat',
+'change-blocklink' => 'ribayan an bagat',
 'contribslink' => 'mga ambág',
 'emaillink' => 'ipadara an e-surat',
 'autoblocker' => 'Enseguidang binagat an saimong direccion nin IP ta kaaaging ginamit ini ni "[[User:$1|$1]]". An rason nin pagbagat ni $1: "$2"',
-'blocklogpage' => 'Usip nin pagbagat',
+'blocklogpage' => 'Katalaanan nin bagat',
 'blocklog-showlog' => 'Ining paragamit dati nang pinagbarahan.
 An talaan nin pagbara nakahaya sa ibaba bilang reperensiya:',
 'blocklog-showsuppresslog' => 'Ining paragamit pinagkubkob asin dati nang ipinagtago.
 An talaan nin pagpaunlok ipinagtao sa ibaba para hilingan.',
-'blocklogentry' => 'binagat na [[$1]] na may oras nin pagpaso na $2 $3',
+'blocklogentry' => 'pinagbagat si [[$1]] na igwang oras nin kapasohan na $2 $3',
 'reblock-logentry' => 'pinagliwat an mga panuytoy nin pagkubkob para sa [[$1]] na igwang oras nin pagpaso kan $2 $3',
 'blocklogtext' => 'Ini sarong talaan kan paragamit na nagkukubkob asin dae nagkukubkob na mga aksyon.
 An awtomatikong pinagkubkob na IP na mga estada dae pinaglista.
 Hilngon sa [[Special:BlockList|listahan nin kubkob]] para sa listahan kan presenteng operasyonal na mga pagbabara asin mga pagkukubkob.',
 'unblocklogentry' => 'binawi an pagbagat $1',
 'block-log-flags-anononly' => 'Mga paragamit na anónimo sana',
-'block-log-flags-nocreate' => "pigpopondohán an paggibo nin ''account'",
+'block-log-flags-nocreate' => 'pagmukna nin panindog pinag-untok',
 'block-log-flags-noautoblock' => 'pigpopondo an enseguidang pagbagat',
 'block-log-flags-noemail' => 'binagát an e-surat',
 'block-log-flags-nousertalk' => 'dae makakaliwat nin sadireng pahina nin olay',
@@ -2707,13 +2707,13 @@ Magpilì tabì nin ibang pangaran.',
 'movepage-page-moved' => 'An pahina $1 pinagbalyo na paduman sa $2.',
 'movepage-page-unmoved' => 'An pahina $1 dae maipagbabalyo paduman sa $2.',
 'movepage-max-pages' => 'An pinakahalangkawon na $1 {{PLURAL:S1|pahina|mga pahina}} pinagbalyo na asin mayo tabi na awtomatikong maipagbabalyo.',
-'movelogpage' => 'Ibalyó an usip',
+'movelogpage' => 'Balyuhon an katalaanan',
 'movelogpagetext' => 'Nasa ibaba an lista kan pahinang pigbalyó.',
 'movesubpage' => '{{PLURAL:$1|Sub-pahina|Mga Sub-pahina}}',
 'movesubpagetext' => 'Ining pahina igwa nin $1 {{PLURAL:$1|sub-pahina|mga sub-pahina}} na ipinapahiling sa ibaba.',
 'movenosubpage' => 'Ining pahina mayo nin mga sub-pahina.',
 'movereason' => 'Rason:',
-'revertmove' => 'ibalík',
+'revertmove' => 'balikon',
 'delete_and_move' => 'Parâon asin ibalyó',
 'delete_and_move_text' => '==Kaipuhan na parâon==
 
@@ -2743,7 +2743,7 @@ An pinakahuring entrada sa talaan pinagtao sa ibaba para sa reperensiya:",
 Pakipili kan ibang pangaran.',
 
 # Export
-'export' => 'Iluwas an mga pahina',
+'export' => 'Paluwason an mga pahina',
 'exporttext' => 'Pwede mong ipadara an teksto asin historya nin paghirá kan sarong partikular na páhina o grupo nin mga páhina na nakapatos sa ibang XML. Pwede ining ipadara sa ibang wiki gamit an MediaWiki sa paagi kan [[Special:Import|pagpadara nin páhina]].
 
 Para makapadara nin mga páhina, ilaag an mga titulo sa kahon para sa teksto sa babâ, sarong titulo kada linya, dangan pilîon kun boot mo presenteng bersyón asin dating bersyón, na may mga linya kan historya, o an presenteng bersyón sana na may impormasyon manonongod sa huring hirá.
@@ -2766,7 +2766,7 @@ Sa kaso kan huri, pwede ka man na maggamit nin takod, arog kan [[{{#Special:Expo
 # Namespace 8 related
 'allmessages' => 'Mga mensahe sa sistema',
 'allmessagesname' => 'Pangaran',
-'allmessagesdefault' => 'Tekstong normal',
+'allmessagesdefault' => 'Panugmad na tekstong mensahe',
 'allmessagescurrent' => 'Presenteng teksto',
 'allmessagestext' => 'Ini sarong listahan nin pansistemang mga mensahe na mananagboan sa espasyong-pangaran kan MediaWiki.
 Pakibisita an [//www.mediawiki.org/wiki/Localisation Mediawiki Lokalisasyon] asin [//translatewiki.net translatewiki.net] kun boot mong mag-ambag sa henerikong lokalisasyon kan MediaWiki.',
@@ -2783,7 +2783,7 @@ Pakibisita an [//www.mediawiki.org/wiki/Localisation Mediawiki Lokalisasyon] asi
 # Thumbnails
 'thumbnail-more' => 'Padakuláon',
 'filemissing' => "Nawawarâ an ''file''",
-'thumbnail_error' => 'Error sa paggigibo kan retratito: $1',
+'thumbnail_error' => 'Kasalaan sa pagmumukna kan sadit na litrato: $1',
 'thumbnail_error_remote' => 'Mensahe nin kasalaan gikan sa $1: 
 $2',
 'djvu_page_error' => 'luwas sa serye an páhina kan DjVu',
@@ -2872,61 +2872,62 @@ Paki-otro giraray.',
 'tooltip-pt-anonuserpage' => 'An páhina nin páragamit para sa ip na pighihira mo bilang',
 'tooltip-pt-mytalk' => 'An saimong pahina sa olayan',
 'tooltip-pt-anontalk' => 'Mga olay manonongod sa mga hira halî sa ip na ini',
-'tooltip-pt-preferences' => 'Mga kabòtan ko',
-'tooltip-pt-watchlist' => 'Lista nin mga pahina na pigbabantayan an mga pagbabàgo',
+'tooltip-pt-preferences' => 'Saimong mga kamuyahan',
+'tooltip-pt-watchlist' => 'Sarong listahan kan mga pahina na saimong inaantabayanan para sa mga kaliwatan',
 'tooltip-pt-mycontris' => 'Sarong listahan kan saimong mga kontribusyon',
-'tooltip-pt-login' => 'Pigaagda kang maglaog, alagad, bako man ining piriritan.',
+'tooltip-pt-login' => 'Ika inaagyat na maglaog; alagad, bako tabi ining piriritan',
 'tooltip-pt-anonlogin' => 'Pig-aagda kang maglaog, alagad, bakô man ining piriritan.',
 'tooltip-pt-logout' => 'Magluwas',
-'tooltip-ca-talk' => 'Olay sa pahina nin laog',
-'tooltip-ca-edit' => 'Pwede mong hirahón ining pahina. Gamiton tabi an patànaw na butones bago an pagtagama.',
+'tooltip-ca-talk' => 'Orolayan dapit sa laog kan pahina',
+'tooltip-ca-edit' => 'Ika makakaliwat kaining pahina. Tabi man gamiton an pindutan nin patanaw bago itatagama',
 'tooltip-ca-addsection' => 'Magpoon nin sarong baguhon na seksyon',
-'tooltip-ca-viewsource' => 'Sinagangán ining pahina. Mahihilíng mo an ginikanan.',
-'tooltip-ca-history' => 'Mga nakaaging bersyon kaining pahina',
-'tooltip-ca-protect' => 'Protektahán ining pahina',
+'tooltip-ca-viewsource' => 'Ining pahina protektado.
+Ika makakatanaw kan pinaggikanan',
+'tooltip-ca-history' => 'Mga nakaaging rebisyon kaining pahina',
+'tooltip-ca-protect' => 'Protektarán ining pahina',
 'tooltip-ca-unprotect' => 'Magribay nin proteksyon kaining pahina',
-'tooltip-ca-delete' => 'Paraon an pahinang ini',
+'tooltip-ca-delete' => 'Puraon ining pahina',
 'tooltip-ca-undelete' => 'Bawîon an mga hirá na piggibo sa páhinang ini bâgo ini pigparâ',
-'tooltip-ca-move' => 'Ibalyó an pahinang iní',
-'tooltip-ca-watch' => 'Idugang ining páhina sa pigbabantayan mo',
-'tooltip-ca-unwatch' => 'Halion ining pahina sa lista nin pigbabantayan mo',
+'tooltip-ca-move' => 'Balyuhon ining pahina',
+'tooltip-ca-watch' => 'Idugang ining páhina sa saimong bantay-listahan',
+'tooltip-ca-unwatch' => 'Tangkason ining pahina gikan sa saikong bantay-listahan',
 'tooltip-search' => 'Hanápon an {{SITENAME}}',
-'tooltip-search-go' => 'Magduman sa pahina na igwa kaining eksaktong pangaran',
-'tooltip-search-fulltext' => 'Hanápon an mga pahina para sa tekstong ini',
-'tooltip-p-logo' => 'Pangenot na Pahina',
+'tooltip-search-go' => 'Magduman sa pahina na igwa kaining eksaktong pangaran kun eksistido',
+'tooltip-search-fulltext' => 'Hanápon an mga pahina para kaining teksto',
+'tooltip-p-logo' => 'Bisitahon an Pangenot na Pahina',
 'tooltip-n-mainpage' => 'Bisitahon an Pangenot na Pahina',
-'tooltip-n-mainpage-description' => 'Daláwon an pangenot na pahina',
-'tooltip-n-portal' => 'Manonongod sa proyekto, an pwede mong gibohon, kun sain mo pwedeng hanapon an mga bagay',
-'tooltip-n-currentevents' => 'Hanapon an mga impormasyon na ginikanan sa mga presenteng panyayari',
-'tooltip-n-recentchanges' => 'An lista nin mga bàgong pagbabàgo sa wiki.',
-'tooltip-n-randompage' => 'Magsàngat nin bàgong pahina',
-'tooltip-n-help' => 'An lugar para makatalastás',
-'tooltip-t-whatlinkshere' => 'Lista nin gabos na pahinang wiki na nakatakód digdi',
-'tooltip-t-recentchangeslinked' => 'Mga kaaaging pagbabàgo sa mga pahinang nakatakod digdi',
+'tooltip-n-mainpage-description' => 'Bisitahon an Pangenot na Pahina',
+'tooltip-n-portal' => 'Manunungod sa proyekto, ano an saimong maginibo, saen makanumpong nin mga bagay',
+'tooltip-n-currentevents' => 'Hanapon an kalikudang impormasyon sa presenteng mga pangyayari',
+'tooltip-n-recentchanges' => 'Sarong listahan kan dae pa sana nahaloy na mga kaliwatan sa wiki',
+'tooltip-n-randompage' => 'Magkarga nin sarong purak na pahina',
+'tooltip-n-help' => 'An lugar tanganing makanumpong',
+'tooltip-t-whatlinkshere' => 'Sarong listahan kan gabos na mga pahina nin wiki na nakasugpon digde',
+'tooltip-t-recentchangeslinked' => 'Dae pa sana nahahaloy na mga kaliwatan sa mga pahina na nakasugpon gikan kaining pahina',
 'tooltip-feed-rss' => 'Hungit na RSS sa pahinang ini',
-'tooltip-feed-atom' => 'Hungit na atomo sa pahinang iní',
-'tooltip-t-contributions' => 'Hilingón an lista kan mga kontribusyon kaining paragamit',
-'tooltip-t-emailuser' => 'Padarahan nin e-koreo an paragamit na ini',
+'tooltip-feed-atom' => 'Hungit Atomo para kaining pahina',
+'tooltip-t-contributions' => 'Sarong listahan kan mga paraambag kaining paragamit',
+'tooltip-t-emailuser' => 'Magpadara nin sarong e-surat sa paragamit na ini',
 'tooltip-t-upload' => 'Ikarga an mga sagunson',
-'tooltip-t-specialpages' => 'Lista kan gabos na mga espesyal na pahina',
-'tooltip-t-print' => 'Naipiprint na bersyon kaining pahina',
-'tooltip-t-permalink' => 'Permanenteng takod sa bersyon kaining páhina',
-'tooltip-ca-nstab-main' => 'Hilingón an pahina nin laog',
+'tooltip-t-specialpages' => 'Sarong listahan kan gabos na mga espesyal na pahina',
+'tooltip-t-print' => 'Maimprentahong bersyon kaining pahina',
+'tooltip-t-permalink' => 'Permanenteng sugpon kaining rebisyon kan pahina',
+'tooltip-ca-nstab-main' => 'Tanawon an laog nin pahina',
 'tooltip-ca-nstab-user' => 'Hilingón an pahina nin paragamit',
 'tooltip-ca-nstab-media' => "Hilingón an pahina kan ''media''",
-'tooltip-ca-nstab-special' => 'Pahinang espesyal ini, dai mo ini pwedeng hirahón',
-'tooltip-ca-nstab-project' => 'Hilingón an pahina kan proyekto',
+'tooltip-ca-nstab-special' => 'Ini sarong espesyal na pahina, ika dae makakapagliwat sa pahina mismo',
+'tooltip-ca-nstab-project' => 'Tanawon an pahina kan proyekto',
 'tooltip-ca-nstab-image' => 'Hilnga an pahina kan sagunson',
 'tooltip-ca-nstab-mediawiki' => "Hilingón an ''system message''",
-'tooltip-ca-nstab-template' => 'Hilingón an templato',
+'tooltip-ca-nstab-template' => 'Tanawon an templato',
 'tooltip-ca-nstab-help' => 'Hilingón an pahina nin tabang',
-'tooltip-ca-nstab-category' => 'Hilingón an pahina kan kategorya',
-'tooltip-minoredit' => 'Kurítan iní bilang sadít na paglíwat',
-'tooltip-save' => 'Itagáma an saímong mga pagbabàgo',
-'tooltip-preview' => 'Tànawon an saimong mga pagbabàgo, gamitón tabì ini bàgo magtagáma!',
-'tooltip-diff' => 'Ipahilíng an mga pagbabàgong ginibo mo sa teksto.',
-'tooltip-compareselectedversions' => 'Hilingón an mga kaibhán sa duwáng piníling bersyon kainíng pahina.',
-'tooltip-watch' => 'Idugang ining pahina sa pigbabantayan mo',
+'tooltip-ca-nstab-category' => 'Tanawon an pahina nin kategoriya',
+'tooltip-minoredit' => 'Markahan ini bilang sarong dikiton na pagliwat',
+'tooltip-save' => 'Itagáma an saímong mga kaliwatan',
+'tooltip-preview' => 'Tànawon an saimong mga kaliwatan, tabi gamitón ini bago itatagama!',
+'tooltip-diff' => 'Ipahilíng kun arin an mga kaliwatan na saimong pinaghimo sa teksto',
+'tooltip-compareselectedversions' => 'Hilngón an mga kalaenan sa tahaw kan duwáng pinagpiling mga rebisyon kainíng pahina',
+'tooltip-watch' => 'Idugang ining pahina sa saimong bantay-listahan',
 'tooltip-watchlistedit-normal-submit' => 'Haleon an mga titulo',
 'tooltip-watchlistedit-raw-submit' => 'Magdugang kan bantay-listahan',
 'tooltip-recreate' => 'Gibohon giraray an páhina maski na naparâ na ini',
@@ -2981,13 +2982,13 @@ Ini hurot na pinagkausa nin sarong sugpunan pasiring sa sarong pinagbawal na pan
 'pageinfo-length' => 'Kalabaan kan pahina (yaon sa mga bayta)',
 'pageinfo-article-id' => 'ID kan pahina',
 'pageinfo-language' => 'Lengguwahe kan laog sa pahina',
-'pageinfo-robot-policy' => 'Estado kan makinang parahanap',
-'pageinfo-robot-index' => 'Maihuhukdo',
-'pageinfo-robot-noindex' => 'Dae maihuhukdo',
+'pageinfo-robot-policy' => 'Pinaghuhukdo sa paagi nin mga robot',
+'pageinfo-robot-index' => 'Pinagtutugotan',
+'pageinfo-robot-noindex' => 'Dae pinagtutugotan',
 'pageinfo-views' => 'Numero kan mga patanaw',
 'pageinfo-watchers' => 'Numero kan parabantay nin pahina',
 'pageinfo-few-watchers' => 'Kadikiton kesa $1{{PLURAL:$1|parabantay|mga parabantay}}',
-'pageinfo-redirects-name' => 'Maipalikwat pasiring sa pahina ini',
+'pageinfo-redirects-name' => 'Numero kan mga palikwat kaining pahina',
 'pageinfo-subpages-name' => 'Mga sub-pahina kaining pahina',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|panlikwat|mga panlikwat}}; $3 {{PLURAL:$3|bakong panlikwat|bakong mga panlikwat}})',
 'pageinfo-firstuser' => 'Paramukna nin pahina',
@@ -3058,10 +3059,10 @@ Sa pagpapa-andar kaini, an saimong sistema mapupuwedeng makompromiso.",
 'thumbsize' => 'Sokol nin retratito:',
 'widthheightpage' => '$1 x $2, $3 {{PLURAL:$3|pahina|mga pahina}}',
 'file-info' => "sokol kan ''file'': $1, tipo nin MIME: $2",
-'file-info-size' => "$1 × $2 na pixel, sokol kan ''file'': $3, tipo nin MIME: $4",
+'file-info-size' => '$1 × $2 na mga piksel, sukol nin sagunson: $3, tipo nin MIME: $4',
 'file-info-size-pages' => '$1 × $2 piksel, sukol kan sagunson: $3, MIME na tipo: $4, $5 {{PLURAL:$5|pahina|mga pahina}}',
-'file-nohires' => 'Mayong mas halangkáw na resolusyon.',
-'svg-long-desc' => 'file na SVG, haros $1 × $2 pixels, sokol kan file: $3',
+'file-nohires' => 'Mayong mas halangkáwon na resolusyon an yaon.',
+'svg-long-desc' => 'SVG na sagunson, nangangaranan nin $1 x $2 na mga piksel, sukol nin sagunson: $3',
 'svg-long-desc-animated' => 'Animatadong SVG na sagunson, nangangaranang $1 x $2 piksel, kadakulaan nin sagunson: $3',
 'svg-long-error' => 'Imbalidong SVG na sagunson: $1',
 'show-big-image' => 'Todong resolusyon',
@@ -3532,7 +3533,7 @@ Sublokas kan siyudad na ipinahiling',
 'exif-urgency-other' => 'Prayoridad na pakahulugan nin paragamit ($1)',
 
 # External editor support
-'edit-externally' => 'Hirahón an file gamit an panluwas na aplikasyon',
+'edit-externally' => 'Liwaton ining sagunson na pinaggagamit an panluwasan na aplikasyon',
 'edit-externally-help' => '(Hilngon an [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] para sa kadagdagang impormasyon)',
 
 # 'all' in various places, this might be different for inflected languages
@@ -3591,19 +3592,19 @@ tanganing kanselaron an e-surat na adres na pankumpirma:
 $5
 
 Ining pankumpirmang koda mapalso sa $4.',
-'confirmemail_body_set' => 'Sarong tawo, mapuwedeng ika, gikan sa IP adres na $1,
-nagrehistro nin sarong panindog "$2" na igwa kaining e-surat na adres sa {{SITENAME}}.
+'confirmemail_body_set' => 'Sarong tawo, mapuwedeng ika, gikan sa estada kan IP na $1,
+nagrehistro nin sarong panindog "$2" na igwa kaining estada nin e-surat sa {{SITENAME}}.
 
-Tanganing kumpirmaron na ining panindog talagang pagsadire mo asin re-aktibaron an e-surat na mga estima sa {{SITENAME}}, bukasi tabi ining kasugpunan sa saimong kilyaw:
+Tanganing kumpirmaron na ining panindog talagang pagsadire mo asin aktibaron an mga estima kan e-surat sa{{SITENAME}}, bukasi tabi ining kasugpunan sa saimong kilyaw:
 
 $3
 
 Kun an panindog *bakong* saimo, sunuda ining sugpon
-tanganing kanselaron an e-surat na adres na pankumpirma:
+tanganing kanselaron an kumpirmasyon nin estada kan e-surat:
 
 $5
 
-Ining pankumpirmang koda mapalso sa $4.',
+Ining pankumpirmang kodigo mapapalso sa $4.',
 'confirmemail_invalidated' => 'An e-surat na adres na pankumpirma kanselado na',
 'invalidateemail' => 'Kanselaron an e-surat na pankumpirmasyon',
 
@@ -3689,9 +3690,9 @@ Pwede mo man [[Special:EditWatchlist|gamiton an standard editor]].',
 'watchlistedit-raw-removed' => '{{PLURAL:$1|1 an titulong|$1 mga titulong}} hinalì:',
 
 # Watchlist editing tools
-'watchlisttools-view' => 'Hilingón an mga katakód na pagbabàgo',
-'watchlisttools-edit' => 'Hilingón asin ligwatón an pigbabantayan',
-'watchlisttools-raw' => 'Hirahón an bàgong pigbabantayan',
+'watchlisttools-view' => 'Tanawon an maanduyog na mga kaliwatan',
+'watchlisttools-edit' => 'Tanawon asin liwaton an bantay-listahan',
+'watchlisttools-raw' => 'Liwaton an hilaw na bantay-listahan',
 
 # Signatures
 'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|olay]])',
@@ -3955,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 b1e1e01..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
@@ -3136,8 +3137,8 @@ $2',
 'pageinfo-article-id' => 'Ідэнтыфікатар старонкі',
 'pageinfo-language' => 'Мова зьместу старонкі',
 'pageinfo-robot-policy' => 'Індэксацыя пашукавікамі',
-'pageinfo-robot-index' => 'Ð\86ндÑ\8dкÑ\81Ñ\83еÑ\86Ñ\86а',
-'pageinfo-robot-noindex' => 'Не індэксуецца',
+'pageinfo-robot-index' => 'Ð\94азволенаÑ\8f',
+'pageinfo-robot-noindex' => 'Не дазволеная',
 'pageinfo-views' => 'Колькасьць праглядаў',
 'pageinfo-watchers' => 'Колькасьць назіральнікаў і назіральніц',
 'pageinfo-few-watchers' => 'Менш за $1 {{PLURAL:$1|назіральніка|назіральнікаў}}',
@@ -3505,7 +3506,7 @@ $1',
 'exif-xyresolution-i' => '$1 пунктаў на цалю',
 'exif-xyresolution-c' => '$1 пунктаў на сантымэтар',
 
-'exif-colorspace-65535' => 'Некалібраванае',
+'exif-colorspace-65535' => 'Некалібраваная',
 
 'exif-componentsconfiguration-0' => 'не існуе',
 
@@ -3745,7 +3746,7 @@ $5
 'confirmemail_body_set' => 'Нехта, магчыма Вы, з IP-адраса $1,
 устанавіў адрас электроннай пошты для рахунку «$2» у {{GRAMMAR:месны|{{SITENAME}}}}.
 
\9aаб Ð¿Ð°Ñ\86Ñ\8cвеÑ\80дзÑ\96Ñ\86Ñ\8c, Ñ\88Ñ\82о Ð³Ñ\8dÑ\82Ñ\8b Ñ\80аÑ\85Ñ\83нак Ñ\81апÑ\80аÑ\9eдÑ\8b Ð½Ð°Ð»ÐµÐ¶Ñ\8bÑ\86Ñ\8c Ð\92ам, Ñ\96 ÐºÐ°Ð± Ð°ÐºÑ\82Ñ\8bвÑ\96заваÑ\86Ñ\8c Ð½Ð¾Ð²Ñ\8b Ð¼Ð°Ð³Ñ\87Ñ\8bмаÑ\81Ñ\8cÑ\86Ñ\96 электроннай пошты ў {{GRAMMAR:месны|{{SITENAME}}}}, адкрыйце гэтую спасылку у Вашым браўзэры:
\9aаб Ð¿Ð°Ñ\86Ñ\8cвеÑ\80дзÑ\96Ñ\86Ñ\8c, Ñ\88Ñ\82о Ð³Ñ\8dÑ\82Ñ\8b Ñ\80аÑ\85Ñ\83нак Ñ\81апÑ\80аÑ\9eдÑ\8b Ð½Ð°Ð»ÐµÐ¶Ñ\8bÑ\86Ñ\8c Ð\92ам, Ñ\96 ÐºÐ°Ð± Ð°ÐºÑ\82Ñ\8bвÑ\96заваÑ\86Ñ\8c Ð¿Ð°Ð´Ñ\82Ñ\80Ñ\8bмкÑ\83 электроннай пошты ў {{GRAMMAR:месны|{{SITENAME}}}}, адкрыйце гэтую спасылку у Вашым браўзэры:
 
 $3
 
@@ -4126,4 +4127,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 36b8a65..3ac9436 100644 (file)
@@ -491,8 +491,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''আপনি এইমাত্র আপনার অ্যাকাউন্ট থেকে প্রস্থান করেছেন।'''
 
-এ পরিস্থিতিতে আপনি বেনামে {{SITENAME}} ব্যবহার করতে পারেন, কিংবা একই বা পৃথক নামে <span class='plainlinks'>[$1 আবার প্রবেশ করতে]</span> পারেন।
-লক্ষ্য করুন যে, এর কোন কোন পাতা এখনও এমনভাবে দেখাতে পারে যাতে মনে হবে আপনি আগের অবস্থাতেই আছেন। এক্ষেত্রে আপনাকে আপনার ব্রাওজারের ক্যাশ পরিষ্কার (clear browser cache) করে নিতে হবে।",
+এ পরিস্থিতিতে আপনি বেনামে {{SITENAME}} ব্যবহার করতে পারেন, কিংবা একই বা পৃথক নামে <span class='plainlinks'>[$1 আবার প্রবেশ করতে]</span> পারেন। লক্ষ্য করুন যে, এর কোন কোন পাতা এখনও এমনভাবে দেখাতে পারে যাতে মনে হবে আপনি আগের অবস্থাতেই আছেন। এক্ষেত্রে আপনাকে আপনার ব্রাউজারের ক্যাশ পরিষ্কার (clear browser cache) করে নিতে হবে।",
 'welcomeuser' => 'স্বাগতম, $1!',
 'welcomecreation-msg' => 'আপনার অ্যাকাউন্ট তৈরী হয়েছে।
 আপনার [[Special:Preferences|{{SITENAME}} পছন্দসমূহ]]  পরিবর্তন করে নিতে ভুলবেন না।',
@@ -538,7 +537,7 @@ $2',
 'createacct-emailoptional' => 'ইমেইল ঠিকানা (ঐচ্ছিক)',
 'createacct-email-ph' => 'আপনার ইমেইল ঠিকানা যোগ করুন',
 'createacct-another-email-ph' => 'আপনার ইমেইল ঠিকানা প্রবেশ করান',
-'createaccountmail' => 'à¦\8fà¦\95à¦\9fি à¦°â\80\8cà§\8dযানà§\8dডম à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦¨à¦¿à¦°à§\8dবাà¦\9aন à¦\95রà§\81ন à¦\8fবà¦\82 à¦¨à¦¿à¦\9aà§\87র à¦¨à¦¿à¦°à§\8dধারিত à¦\87মà§\87à¦\87ল à¦ à¦¿à¦\95ানায় à¦ªà¦¾à¦ à¦¿à¦¯à¦¼à§\87 à¦¦à¦¿à¦¨',
+'createaccountmail' => 'একটি র‌্যান্ডম পাসওয়ার্ড নির্বাচন করুন এবং নির্ধারিত ইমেইল ঠিকানায় পাঠিয়ে দিন',
 'createacct-realname' => 'আসল নাম (ঐচ্ছিক)',
 'createaccountreason' => 'কারণ:',
 'createacct-reason' => 'কারণ',
@@ -686,6 +685,16 @@ $2
 'changeemail-submit' => 'ই-মেইল পরিবর্তন',
 'changeemail-cancel' => 'বাতিল',
 
+# Special:ResetTokens
+'resettokens' => 'রিসেট টোকেন',
+'resettokens-no-tokens' => 'রিসেট করার মত কোনো টোকেন নেই।',
+'resettokens-legend' => 'রিসেট টোকেন',
+'resettokens-tokens' => 'টোকেন:',
+'resettokens-token-label' => '$1 (বর্তমান: $2)',
+'resettokens-watchlist-token' => 'ওয়াচলিস্ট ওয়েবফীড টোকেন',
+'resettokens-done' => 'টোকেন রিসেট।',
+'resettokens-resetbutton' => 'নির্বাচিত টোকেন রিসেট',
+
 # Edit page toolbar
 'bold_sample' => 'গাঢ় লেখা',
 'bold_tip' => 'গাঢ় লেখা',
@@ -1272,7 +1281,7 @@ $1",
 'prefs-signature' => 'স্বাক্ষর',
 'prefs-dateformat' => 'তারিখ বিন্যাস',
 'prefs-timeoffset' => 'সময় অফসেট',
-'prefs-advancedediting' => 'à¦\89à¦\9aà§\8dà¦\9aতর অপশন',
+'prefs-advancedediting' => 'সাধারণ অপশন',
 'prefs-editor' => 'সম্পাদক',
 'prefs-preview' => 'প্রাকদর্শন',
 'prefs-advancedrc' => 'উচ্চতর অপশন',
@@ -1282,6 +1291,7 @@ $1",
 'prefs-displayrc' => 'প্রদর্শনী অপশন',
 'prefs-displaysearchoptions' => 'প্রদর্শনী অপশন',
 'prefs-displaywatchlist' => 'প্রদর্শনী অপশন',
+'prefs-tokenwatchlist' => 'টোকেন',
 'prefs-diffs' => 'পার্থক্য',
 
 # User preference: email validation using jQuery
@@ -1306,10 +1316,11 @@ $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
 'group' => 'দল:',
@@ -1373,7 +1384,7 @@ $1",
 'right-hideuser' => 'ব্যবহারকারীকে ব্লক করুন, এবং সর্বসাধারণের দৃষ্টিসীমা থেকে সরিয়ে নিন',
 'right-ipblock-exempt' => 'আইপি ব্লক, অটো ব্লক এবং রেঞ্জ ব্লক এড়িয়ে যান',
 'right-proxyunbannable' => 'সয়ংক্রিয় প্রক্সি ব্লক এড়িয়ে যান',
-'right-unblockself' => 'আনব্লক করুন',
+'right-unblockself' => 'à¦\8fà¦\95à¦\9cনà¦\95à§\87 à¦\86নবà§\8dলà¦\95 à¦\95রà§\81ন',
 'right-protect' => 'পাতাটির সুরক্ষা সীমা পরিবর্তন করুন এবং সুরক্ষিত পাতটি সম্পাদনা করুন',
 'right-editprotected' => 'সুরক্ষিত পাতা সম্পাদনা (ক্যাসকাডিং সুরক্ষা ছাড়া)',
 'right-editinterface' => 'ব্যবহারকারী ইন্টারফেস সম্পাদনা',
@@ -1382,6 +1393,8 @@ $1",
 'right-edituserjs' => 'অন্য ব্যবহারকারীগণের JS ফাইল সম্পাদনা',
 'right-editmyusercss' => 'আপনার নিজস্ব ব্যবহারকারী সিএসএস ফাইল সম্পাদনা করুন',
 'right-editmyuserjs' => 'আপনার নিজস্ব ব্যবহারকারী জাভাস্ক্রিপ্ট ফাইল সম্পাদনা করুন',
+'right-viewmywatchlist' => 'আপনার নজরতালিকা দেখুন',
+'right-editmyoptions' => 'আপনার পছন্দসমূহ পরিবর্তন করুন',
 'right-rollback' => 'একটি নির্দিষ্ট পাতার সর্বশেষ ব্যবহারকারীর সম্পদনা পূর্বাবস্থায় ফিরিয়ে আনুন',
 'right-markbotedits' => 'রোলড-ব্যাক সম্পাদনাসমূহকে বট সম্পাদনা হিসেবে চিহ্নিত করো',
 'right-noratelimit' => 'রেট লিমিটের ভিত্তিতে পরিবর্তন হবে না',
@@ -1443,6 +1456,10 @@ $1",
 'action-userrights-interwiki' => 'অন্যান্য উইকির ব্যবহারকারীদের অধিকারসমূহ সম্পাদনা করুন',
 'action-siteadmin' => 'ডাটাবেজ বন্ধ অথবা খুলুন',
 'action-sendemail' => 'ই-মেইল পাঠাও',
+'action-editmywatchlist' => 'আপনার নজরতালিকা পরিবর্তন করুন',
+'action-viewmywatchlist' => 'আপনার নজরতালিকা দেখুন',
+'action-viewmyprivateinfo' => 'আপনার ব্যক্তিগত তথ্য দেখুন',
+'action-editmyprivateinfo' => 'আপনার ব্যক্তিগত তথ্য সম্পাদনা করুন',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|পরিবর্তন|পরিবর্তনসমূহ}}',
@@ -2048,7 +2065,8 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 'listgrouprights' => 'দলগত ব্যবহারকারী অধিকার',
 'listgrouprights-summary' => 'এই উইকির ব্যবহারকারীদের একটি গ্রুপগুলোর তালিকা দেখানো হচ্ছে, সাথে গ্রুপের কার্যপরিধিও উল্লেখ করা হয়েছে।
 নির্দিষ্ট গ্রুপের কার্যপরিধি সম্পর্কে জানতে দেখুন [[{{MediaWiki:Listgrouprights-helppage}}|additional information]]।',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">অনুমোদিত অধিকার</span>
+'listgrouprights-key' => 'লিজেন্ড:
+* <span class="listgrouprights-granted">অনুমোদিত অধিকার</span>
 * <span class="listgrouprights-revoked">বাধাপ্রাপ্ত অধিকার</span>',
 'listgrouprights-group' => 'দল',
 'listgrouprights-rights' => 'অধিকারসমূহ',
@@ -2227,7 +2245,7 @@ $UNWATCHURL
 এই পাতায় সর্বোশেষে [[User:$3|$3]] ([[User talk:$3|talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) দ্বারা সম্পাদিত।',
 'editcomment' => "সম্পাদনা সারাংশ ছিল: \"''\$1''\"।",
 'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|আলাপ]]) এর সম্পাদিত সংস্করণ হতে [[User:$1|$1]] এর সম্পাদিত সর্বশেষ সংস্করণে ফেরত যাওয়া হয়েছে।',
-'revertpage-nouser' => '(ব্যবহারকারী নাম অপসারিত) কর্তৃক সম্পাদিত সম্পাদনাটি বাতিলপূর্বক [[User:$1|$1]]-এর সর্বশেষ সম্পাদনায় ফেরত যাওয়া হয়েছে।',
+'revertpage-nouser' => 'একজন গোপন ব্যবহারকারী কর্তৃক সম্পাদিত সম্পাদনাটি বাতিলপূর্বক [[User:$1|$1]]-এর সর্বশেষ সম্পাদনায় ফেরত যাওয়া হয়েছে।',
 'rollback-success' => '$1-এর সম্পাদনাগুলি পূর্বাবস্থায় ফিরিয়ে নেওয়া হয়েছে; $2-এর করা শেষ সংস্করণে পাতাটি ফেরত নেওয়া হয়েছে।',
 
 # Edit tokens
@@ -2874,13 +2892,13 @@ $2',
 'pageinfo-length' => 'পাতার দৈর্ঘ্য (বাইটে)',
 'pageinfo-article-id' => 'পাতার আইডি',
 'pageinfo-language' => 'পাতার তথ্যের ভাষা',
-'pageinfo-robot-policy' => 'সারà§\8dà¦\9a à¦\87à¦\9eà§\8dà¦\9cিনà§\87র à¦\85বসà§\8dথা',
-'pageinfo-robot-index' => 'à¦\87নডà§\87à¦\95à§\8dস à¦\89পযà§\8bà¦\97à§\80',
-'pageinfo-robot-noindex' => 'à¦\87নডà§\87à¦\95à§\8dসà§\87র à¦\85নà§\81পযà§\8bà¦\97à§\80',
+'pageinfo-robot-policy' => 'রà§\8bবà¦\9fà§\87র à¦®à¦¾à¦§à§\8dযমà§\87 à¦\87নà§\8dডà§\87à¦\95à§\8dস à¦\95রা à¦¹à¦\9aà§\8dà¦\9bà§\87',
+'pageinfo-robot-index' => 'à¦\85নà§\81মà§\8bদিত',
+'pageinfo-robot-noindex' => 'à¦\85নà§\81নমà§\8bদিন',
 'pageinfo-views' => 'পরিদর্শন সংখ্যা',
 'pageinfo-watchers' => 'পাতাটি প্রদর্শনের সংখ্যা',
 'pageinfo-few-watchers' => '$1 জন {{PLURAL:$1|নজরকারীও}} কম',
-'pageinfo-redirects-name' => 'এই পাতার রিডাইরেক্ট সমূহ',
+'pageinfo-redirects-name' => 'এই পাতার রিডাইরেক্টসমূহের সংখ্যা',
 'pageinfo-subpages-name' => 'এই পাতার উপপাতাসমূহ',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|পুনর্নির্দেশ|পুনর্নির্দেশসমূহ}}; $3 {{PLURAL:$3|পুনর্নির্দেশ নেই|পুনর্নির্দেশ নেই}})',
 'pageinfo-firstuser' => 'পাতা তৈরী',
@@ -3220,7 +3238,7 @@ $1',
 'exif-compression-4' => 'সিসিআইটিটি গ্রুপ ৪ ফ্যাক্স এনকোডিং',
 
 'exif-copyrighted-true' => 'কপিরাইটকৃত',
-'exif-copyrighted-false' => 'পাবলিà¦\95 à¦¡à§\8bমà§\87à¦\87ন',
+'exif-copyrighted-false' => 'à¦\95পিরাà¦\87à¦\9f à¦¸à¦\82à¦\95à§\8dরানà§\8dত à¦¤à¦¥à§\8dয à¦¨à§\87à¦\87',
 
 'exif-unknowndate' => 'অজানা তারিখ',
 
@@ -3479,7 +3497,7 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'confirmemail_body_set' => 'কেউ একজন, সম্ভবত আপনি, $1 আইপি ঠিকানা থেকে,
 {{SITENAME}}-এ "$2" অ্যকাউন্টের ইমেইল ঠিকানা নির্ধারণ করেছেন।
 
-এই অ্যাকাউন্টটি যে আসলেই আপনার তা নিশ্চিত করার জন্য এবং {{SITENAME}}-এ ই-মেইল বৈশিষ্ট্যগুলো সক্রিয় করার জন্য আপনার ব্রাউজারে এই সংযোগটি খুলুন:
+এই অ্যাকাউন্টটি যে আসলেই আপনার তা নিশ্চিত করার জন্য এবং {{SITENAME}}-এ ইমেইল বৈশিষ্ট্যগুলো সক্রিয় করার জন্য আপনার ব্রাউজারে এই সংযোগটি খুলুন:
 
 $3
 
@@ -3651,6 +3669,7 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'version-license' => 'লাইসেন্স',
 'version-poweredby-credits' => "এইক উইকিটি পরিচালিত হচ্ছে '''[//www.mediawiki.org/ মিডিয়াউইকি]'''-এর মাধ্যমে, কপিরাইট © ২০০১-$1 $2।",
 'version-poweredby-others' => 'অন্যান্য',
+'version-poweredby-translators' => 'translatewiki.net অনুবাদকগণ',
 'version-credits-summary' => '[[Special:Version|মিডিয়াউইকি]] সফটওয়্যারে অবদানের জন্য আমরা এই ব্যক্তিকে স্বীকৃতি দিতে চাই।',
 'version-license-info' => 'মিডিয়াউইকি এ++++কটি ফ্রি সফটওয়্যার, আপনি এটি বিতরণ করতে পারবেন এবং/অথবা সম্পদানা করতে পারবেন, এক্ষেত্রে ফ্রি সফটওয়্যার ফাউন্ডেশনের প্রকাশিত গনু জেনারেল পাবলিক লাইসেন্সের ২য় অথবা সাম্প্রতিকতম কোনো সংস্করণ মেনে চলতে হবে। 
 
index 9e739ac..3b2e442 100644 (file)
@@ -480,6 +480,7 @@ $messages = array(
 'create-this-page' => 'Napravi ovu stranicu',
 'delete' => 'Obriši',
 'deletethispage' => 'Obriši ovu stranicu',
+'undeletethispage' => 'Povrati ovu stranicu',
 'undelete_short' => 'Vrati obrisanih {{PLURAL:$1|$1 izmjenu|$1 izmjene|$1 izmjena}}',
 'viewdeleted_short' => 'Pogledaj {{PLURAL:$1|jednu obrisanu izmjenu|$1 obrisane izmjene|$1 obrisanih izmjena}}',
 'protect' => 'Zaštitite',
@@ -679,6 +680,10 @@ $2',
 'namespaceprotected' => "Vi nemate dozvulu da mijenjate stranicu '''$1'''.",
 'customcssprotected' => 'Nemate dozvolu za mijenjanje ove CSS stranice jer sadrži osobne postavke nekog drugog korisnika.',
 'customjsprotected' => 'Nemate dozvolu za mijenjanje ove JavaScript stranice jer sadrži osobne postavke nekog drugog korisnika.',
+'mycustomcssprotected' => 'Nemate dozvolu da uređujete ovu CSS stranicu.',
+'mycustomjsprotected' => 'Nemate dozvolu da uređujete ovu stranicu sa JavaScriptom.',
+'myprivateinfoprotected' => 'Nemate dozvolu da uređujete svoje privatne informacije.',
+'mypreferencesprotected' => 'Nemate dozvolu da uređujete svoje postavke.',
 'ns-specialprotected' => 'Specijalne stranice se ne mogu uređivati.',
 'titleprotected' => 'Naslov stranice je zaštićen od postavljanja od strane korisnika [[User:$1|$1]].
 Iz razloga "\'\'$2\'\'".',
@@ -695,7 +700,6 @@ Iz razloga "\'\'$2\'\'".',
 # Login and logout pages
 'logouttext' => "'''Sad ste odjavljeni.'''
 
-Možete nastaviti da koristite {{SITENAME}} anonimno, ili se ponovo <span class='plainlinks'>[$1 prijaviti]</span> kao isti ili kao drugi korisnik.
 Obratite pažnju da neke stranice mogu nastaviti da se prikazuju kao da ste još uvijek prijavljeni, dok ne očistite keš svog preglednika.",
 'welcomeuser' => 'Dobro došli, $1',
 'welcomecreation-msg' => 'Vaš nalog je napravljen.
@@ -703,6 +707,7 @@ Ne zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} pode
 'yourname' => 'Korisničko ime:',
 'userlogin-yourname' => 'Korisničko ime',
 'userlogin-yourname-ph' => 'Unesite Vaše korisničko ime',
+'createacct-another-username-ph' => 'Unesite korisničko ime',
 'yourpassword' => 'Šifra:',
 'userlogin-yourpassword' => 'Šifra',
 'userlogin-yourpassword-ph' => 'Unesite Vašu šifru/lozinku',
@@ -737,10 +742,12 @@ Ne zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} pode
 'helplogin-url' => 'Help:Prijavljivanje',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pomoć pri prijavljivanju]]',
 'createacct-join' => 'Unesite svoje podatke ispod.',
+'createacct-another-join' => 'Unesite informacije o novom računu ispod.',
 'createacct-emailrequired' => 'Adresa e-pošte',
 'createacct-emailoptional' => 'Adresa e-pošte (opcionalno)',
 'createacct-email-ph' => 'Unesite Vašu adresu e-pоšte',
-'createaccountmail' => 'Koristite privremenu, slučajno stvorenu šifru/lozinku i pošaljite na dole navedenu adrеsu e-pošte',
+'createacct-another-email-ph' => 'Unesite adresu e-pošte',
+'createaccountmail' => 'Koristite privremenu, slučajno stvorenu šifru/lozinku i pošaljite na navedenu adrеsu e-pošte',
 'createacct-realname' => 'Pravo ime (opcionalno)',
 'createaccountreason' => 'Razlog:',
 'createacct-reason' => 'Razlog',
@@ -748,6 +755,7 @@ Ne zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} pode
 'createacct-captcha' => 'Sigurnosna provjera',
 'createacct-imgcaptcha-ph' => 'Unesite tekst koji vidite iznad',
 'createacct-submit' => 'Napravite svoj korisnički račun',
+'createacct-another-submit' => 'Napravi još jedan korisnički račun',
 'createacct-benefit-heading' => '{{SITENAME}} je napravljen od strane ljudi kao što ste Vi.',
 'createacct-benefit-body1' => '{{PLURAL:$1|izmjena|izmjene}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|stranica|stranice|stranica}}',
@@ -822,6 +830,7 @@ Molimo Vas da sačekate prije nego što pokušate ponovo.',
 # Email sending
 'php-mail-error-unknown' => 'Nepoznata greška u PHP funkciji mail()',
 'user-mail-no-addy' => 'Pokušaj slanja e-maila bez navedene e-mail adrese.',
+'user-mail-no-body' => 'Pokušano slanje e-poruke s praznim ili nerazumno kratkim sadržajem.',
 
 # Change password dialog
 'resetpass' => 'Promijeni korisničku šifru',
@@ -841,10 +850,12 @@ 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',
 'passwordreset-text-one' => 'Ispunite ovaj obrazac da biste resetovali Vašu šifru/lozinku.',
+'passwordreset-text-many' => '{{PLURAL:$1|Ispunite jedno od polja kako bi ste resetirali svoju šifru/lozinku.}}',
 'passwordreset-legend' => 'Poništi šifru',
 'passwordreset-disabled' => 'Poništavanje šifre  je onemogućeno na ovoj wiki.',
 'passwordreset-username' => 'Korisničko ime:',
@@ -1133,6 +1144,7 @@ Molimo da provjerite usporedbu ispod da budete sigurni da to želite učiniti, a
 'undo-failure' => 'Izmjene se ne mogu vratiti zbog konflikta sa izmjenama u međuvremenu.',
 'undo-norev' => 'Izmjena se ne može vratiti jer ne postoji ranija ili je obrisana.',
 'undo-summary' => 'Vraćena izmjena $1 [[Special:Contributions/$2|korisnika $2]] ([[User talk:$2|razgovor]])',
+'undo-summary-username-hidden' => 'Poništi izmjenu $1 od skrivenog korisnika',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Nije moguće napraviti korisnički račun',
@@ -1313,6 +1325,7 @@ Korištenje navigacionih linkova će resetovati ovaj stupac.',
 'compareselectedversions' => 'Uporedite označene verzije',
 'showhideselectedversions' => 'Pokaži/sakrij odabrane verzije',
 'editundo' => 'ukloni ovu izmjenu',
+'diff-empty' => '(Nema razlike)',
 'diff-multi' => '({{plural:$1|Nije prikazana jedna međurevizija|Nisu prikazane $1 međurevizije|Nije prikazano $1 međurevizija}} od {{PLURAL:$2|jednog korisnika|$2 korisnika}})',
 'diff-multi-manyusers' => '({{PLURAL:$1|Jedna međurevizija|$1 međurevizije|$1 međurevizija}} od više od $2 {{PLURAL:$2|korisnika|korisnika}} {{PLURAL:$1|nije prikazana|nisu prikazane}})',
 'difference-missing-revision' => '{{PLURAL:$2|Jedna izmjena|$2 izmjene}} od ove razlike ($1) ne {{PLURAL:$2|postoji|postoje}}.
@@ -1485,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',
@@ -1523,6 +1536,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'userrights-changeable-col' => 'Grupe koje možete mijenjati',
 'userrights-unchangeable-col' => 'Grupe koje ne možete mijenjati',
 'userrights-conflict' => 'Sukob u korisničkim pravima! Molimo pošaljite Vaše promjene ponovno.',
+'userrights-removed-self' => 'Uspješno ste uklonili vlastite prava. Zbog toga više niste u stanju pristupiti ovoj stranici.',
 
 # Groups
 'group' => 'Grupa:',
@@ -1587,13 +1601,15 @@ 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',
 'right-edituserjs' => 'Uređivanje JS datoteka drugih korisnika',
 'right-editmyusercss' => 'Uredite svoje vlastite korisničke CSS datoteke',
+'right-editmyprivateinfo' => 'Uredite svoje privatne podatke (npr. adresa e-pošte, pravo ime)',
 'right-editmyoptions' => 'Uredite svoje postavke',
 'right-rollback' => 'Brzo vraćanje izmjena na zadnjeg korisnika koji je uređivao određenu stranicu',
 'right-markbotedits' => 'Označavanje vraćenih izmjena kao izmjene bota',
@@ -1656,6 +1672,9 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'action-userrights-interwiki' => 'uređujete korisnička prava korisnika na drugim wikijima',
 'action-siteadmin' => 'zaključavate ili otključavate bazu podataka',
 'action-sendemail' => 'pošalji e-mail poruke',
+'action-editmywatchlist' => 'uredite svoj spisak praćenih stranica',
+'action-viewmywatchlist' => 'pogledajte svoj spisak praćenih stranica',
+'action-viewmyprivateinfo' => 'pogledajte svoje privatne informacije',
 'action-editmyprivateinfo' => 'uredite svoje privatne podatke',
 
 # Recent changes
@@ -2056,6 +2075,9 @@ Prije brisanja provjerite da li druge stranice vode na te šablone.',
 'randompage' => 'Slučajna stranica',
 'randompage-nopages' => 'Nema stranica u {{PLURAL:$2|slijedećem imenskom prostoru|slijedećim imenskim prostorima}}: "$1".',
 
+# Special:RandomInCategory
+'randomincategory-selectcategory-submit' => 'Idi',
+
 # Random redirect
 'randomredirect' => 'Slučajno preusmjerenje',
 'randomredirect-nopages' => 'Ne postoje preusmjerenja u imenskom prostoru "$1".',
@@ -2265,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',
@@ -2446,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.',
 
@@ -2468,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:',
@@ -3125,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',
@@ -3721,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
 
@@ -3731,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 929a138..f96457f 100644 (file)
@@ -620,10 +620,9 @@ L\'administrador que l\'ha bloquejat ha donat aquesta explicació: "$3".',
 'virus-unknownscanner' => 'antivirus desconegut:',
 
 # Login and logout pages
-'logouttext' => "'''Heu finalitzat la vostra sessió.'''
+'logouttext' => "'''Heu finalitzat la sessió.'''
 
-Podeu continuar utilitzant {{SITENAME}} de forma anònima, o podeu <span class='plainlinks'>[$1 iniciar una sessió una altra vegada]</span> amb el mateix o un altre usuari.
-Tingueu en compte que algunes pàgines poden continuar mostrant-se com si encara estiguéssiu en una sessió, fins que buideu la memòria cau del vostre navegador.",
+Tingueu en compte que, fins que buideu la memòria cau del navegador, algunes pàgines poden continuar mostrant-se com si encara estiguéssiu en una sessió.",
 'welcomeuser' => 'Benvingut, $1!',
 'welcomecreation-msg' => 'El vostre compte ha estat creat.
 No oblideu de canviar les vostres [[Special:Preferences|preferències de {{SITENAME}}]].',
@@ -670,7 +669,7 @@ No oblideu de canviar les vostres [[Special:Preferences|preferències de {{SITEN
 'createacct-emailoptional' => 'Adreça de correu electrònic (opcional)',
 'createacct-email-ph' => 'Introduïu la vostra adreça de correu electrònic',
 'createacct-another-email-ph' => 'Introdueix una adreça de correu electrònic',
-'createaccountmail' => "Utilitza una contrasenya aleatòria temporal i envia-la a l'adreça de correu  especificada a continuació.",
+'createaccountmail' => "Utilitza una contrasenya aleatòria temporal i envia-la a l'adreça de correu indicada",
 'createacct-realname' => 'Nom real (opcional)',
 'createaccountreason' => 'Motiu:',
 'createacct-reason' => 'Motiu',
@@ -1050,6 +1049,7 @@ Se n'han omès els arguments.",
 'undo-failure' => 'No pot desfer-se la modificació perquè hi ha edicions entre mig que hi entren en conflicte.',
 'undo-norev' => "No s'ha pogut desfer l'edició perquè no existeix o ha estat esborrada.",
 'undo-summary' => 'Es desfà la revisió $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussió]])',
+'undo-summary-username-hidden' => "Desfés la revisió $1 d'un usuari ocult",
 
 # Account creation failure
 'cantcreateaccounttitle' => 'No es pot crear el compte',
@@ -1076,8 +1076,8 @@ El motiu donat per $3 és ''$2''",
 (prev) = diferència amb la versió anterior, m = modificació menor',
 'history-fieldset-title' => "Cerca a l'historial",
 'history-show-deleted' => 'Només esborrats',
-'histfirst' => 'Primeres',
-'histlast' => 'Últimes',
+'histfirst' => 'més antigues',
+'histlast' => 'més noves',
 'historysize' => '({{PLURAL:$1|1 octet|$1 octets}})',
 'historyempty' => '(buit)',
 
@@ -1400,7 +1400,7 @@ Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
 'prefs-signature' => 'Signatura',
 'prefs-dateformat' => 'Format de la data',
 'prefs-timeoffset' => 'Decalatge horari',
-'prefs-advancedediting' => 'Opcions avançades',
+'prefs-advancedediting' => 'Opcions generals',
 'prefs-advancedrc' => 'Opcions avançades',
 'prefs-advancedrendering' => 'Opcions avançades',
 'prefs-advancedsearchoptions' => 'Opcions avançades',
@@ -1432,7 +1432,7 @@ Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
 'userrights-no-interwiki' => "No teniu permisos per a editar els permisos d'usuari d'altres wikis.",
 'userrights-nodatabase' => 'La base de dades $1 no existeix o no és local.',
 'userrights-nologin' => "Heu [[Special:UserLogin|d'iniciar una sessió]] amb un compte d'administrador per a poder assignar permisos d'usuari.",
-'userrights-notallowed' => "El vostre compte no té permisos per a assignar o desassignar permisos d'usuari.",
+'userrights-notallowed' => "No teniu autorització per concedir o retirar permisos d'usuari.",
 'userrights-changeable-col' => 'Grups que podeu canviar',
 'userrights-unchangeable-col' => 'Grups que no podeu canviar',
 
@@ -2160,8 +2160,8 @@ Es necessita com a mínim un domini de primer nivell, per exemple "*.org".<br />
 'listgrouprights' => "Drets dels grups d'usuaris",
 'listgrouprights-summary' => "A continuació hi ha una llista dels grups d'usuaris definits en aquest wiki, així com dels seus drets d'accés associats.
 Pot ser que hi hagi més informació sobre drets individuals [[{{MediaWiki:Listgrouprights-helppage}}|aquí]].",
-'listgrouprights-key' => '* <span class="listgrouprights-granted">Drets concedits</span>
-* <span class="listgrouprights-revoked">Drets revocats</span>',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Dret concedit</span>
+* <span class="listgrouprights-revoked">Dret retirat</span>',
 'listgrouprights-group' => 'Grup',
 'listgrouprights-rights' => 'Drets',
 'listgrouprights-helppage' => 'Help:Drets del grup',
@@ -2340,7 +2340,7 @@ de l'usuari [[User:$2|$2]] ([[User talk:$2|Discussió]]{{int:pipe-separator}}[[S
 La darrera modificació ha estat feta per l'usuari [[User:$3|$3]] ([[User talk:$3|Discussió]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
 'editcomment' => "El resum d'edició ha estat: «$1».",
 'revertpage' => "Revertides les edicions de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussió]]) a l'última versió de [[User:$1|$1]]",
-'revertpage-nouser' => "Desfetes les edicions de (nom d'usuari eliminat) a l'última revisió feta per [[User:$1|$1]]",
+'revertpage-nouser' => "Les edicions realitzades per un usuari ocult s'han eliminat fins a l'última revisió de [[User:$1|$1]]",
 'rollback-success' => "Edicions revertides de $1; s'ha canviat a la darrera versió de $2.",
 
 # Edit tokens
@@ -3003,13 +3003,13 @@ Això deu ser degut per un enllaç a un lloc extern inclòs a la llista negra.',
 'pageinfo-length' => 'Mida de la pàgina (en bytes)',
 'pageinfo-article-id' => 'ID de la pàgina',
 'pageinfo-language' => 'Llengua del contingut de la pàgina',
-'pageinfo-robot-policy' => 'Estat del motor de cerca',
-'pageinfo-robot-index' => 'Indexable',
-'pageinfo-robot-noindex' => 'No indexable',
+'pageinfo-robot-policy' => 'Indexació per robots',
+'pageinfo-robot-index' => 'Permès',
+'pageinfo-robot-noindex' => 'No permès',
 'pageinfo-views' => 'Número de visites',
 'pageinfo-watchers' => "Número d'usuaris que vigilen la pàgina",
 'pageinfo-few-watchers' => 'Menys de $1 {{PLURAL:$1|observador|observadors}}',
-'pageinfo-redirects-name' => 'Redireccions a aquesta pàgina',
+'pageinfo-redirects-name' => 'Nombre de redireccions a aquesta pàgina',
 'pageinfo-subpages-name' => "Subpàgines d'aquesta pàgina",
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redirecció|redireccions}}; $3 {{PLURAL:$3|no redireció|no redireccions}})',
 'pageinfo-firstuser' => 'Creador de la pàgina',
@@ -3127,6 +3127,13 @@ Si l'executeu, podeu comprometre la seguretat del vostre sistema.",
 'minutes-ago' => 'fa $1 {{PLURAL:$1|minut|minuts}}',
 'seconds-ago' => 'fa $1 {{PLURAL:$1|segon|segons}}',
 'monday-at' => 'Dilluns a les $1',
+'tuesday-at' => 'Dimarts a les $1',
+'wednesday-at' => 'Dimecres a les $1',
+'thursday-at' => 'Dijous a les $1',
+'friday-at' => 'Divendres a les $1',
+'saturday-at' => 'Dissabte a les $1',
+'sunday-at' => 'Diumenge a les $1',
+'yesterday-at' => 'Ahir a les $1',
 
 # Bad image list
 'bad_image_list' => "El format ha de ser el següent:
@@ -3339,7 +3346,7 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
 'exif-compression-4' => 'Codificació de fax CCITT grup 4',
 
 'exif-copyrighted-true' => "Sotmesa a drets d'autor",
-'exif-copyrighted-false' => 'de domini públic',
+'exif-copyrighted-false' => "No s'ha definit l'estat de copyright",
 
 'exif-unknowndate' => 'Data desconeguda',
 
index d1538e4..cb9164c 100644 (file)
@@ -45,7 +45,6 @@ $messages = array(
 'tog-shownumberswatching' => '顯示監視用戶其數量',
 'tog-oldsig' => '存在其簽名',
 'tog-fancysig' => '共簽名當成維基文本(無自動鏈接)',
-'tog-showjumplinks' => '允許「跳遘」可訪問其鏈接',
 'tog-uselivepreview' => '使即時預覽(需要JavaScript)(敆𡅏實驗)',
 'tog-forceeditsummary' => '提醒我行遘蜀萆空白其編輯總結',
 'tog-watchlisthideown' => '趁監視單𡅏藏起我其修改',
@@ -458,7 +457,7 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 'createacct-emailrequired' => '電子郵件地址',
 'createacct-emailoptional' => '電子郵件地址(愛寫就寫)',
 'createacct-email-ph' => '輸底汝其電子郵件地址',
-'createaccountmail' => '使臨時其隨機密碼,共伊送遘下底其電子郵件地址',
+'createaccountmail' => '使臨時其隨機密碼,共伊送遘指定其電子郵件地址',
 'createacct-realname' => '實際其名字(愛寫就寫)',
 'createaccountreason' => '原因:',
 'createacct-reason' => '原因',
index 6c5aa10..033c372 100644 (file)
@@ -785,8 +785,8 @@ $1',
 'blocked-mailpassword' => 'Хьан IP-адрес ца тадарш дан магийна дац, цуьндела пароль меттахӀотош йолу функци блоктоьхна ю.',
 'mailerror' => 'Кехат дохьуьйтуш гӀалат ду: $1',
 'emailauthenticated' => 'Хьан почтан адрес бакъдина $2 $3.',
-'accountcreated' => 'Дlавазвар кхоллина дели',
-'accountcreatedtext' => 'Кхоллина декъашхо дlавазвар $1.',
+'accountcreated' => 'Декъашхочун дӀаяздар кхоьллина',
+'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онан тептар',
@@ -1020,7 +1021,7 @@ $1',
 'shown-title' => 'АгӀона чохь $1 {{PLURAL:$1|дӀаяздар|дӀаяздарш}} гайта',
 'viewprevnext' => 'Хьажа ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-legend' => 'Лахарна гlирс нисба',
-'searchmenu-exists' => "'''Хlокху вики-кхолламашца йолуш ю ишта агlо «[[:$1]]»'''",
+'searchmenu-exists' => "'''ХӀокху вики чохь йолуш ю ишта агӀо «[[:$1]]»'''",
 'searchmenu-new' => "'''Кхолла ишта агlо «[[:$1]]» хlокху вики-кхолламашчохь!'''",
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Гайта агlонаш ишта хlоттам болуш]]',
 'searchprofile-articles' => 'Къаьстина агlонаш',
@@ -1349,7 +1350,7 @@ PICT # тайп тайпан
 'nolinkstoimage' => 'АгӀонашчохь файл лелош яц.',
 'sharedupload' => 'Хlара хlума оцун $1 чура ю иза хила мега лелош кхечу кхолламашкахь.',
 'sharedupload-desc-here' => 'ХӀара файл $1 чура ю и лело йиш ю массо проекташкахь.
-ЦÑ\83нна Ñ\85аам Ð³Ð°Ð¹Ñ\82ина Ð»Ð°Ñ\85аÑ\85Ñ\8c. [$2 Ð¤Ð°Ð¹Ð» Ð\92икидÓ\80айÑ\83Ñ\8cллÑ\83Ñ\87ехь]',
+ЦÑ\83нна Ñ\85аам Ð³Ð°Ð¹Ñ\82ина Ð»Ð°Ñ\85аÑ\85Ñ\8c. [$2 Ð¤Ð°Ð¹Ð» Ð\92икигÑ\83ламехь]',
 'uploadnewversion-linktext' => 'Чуяккха керла верси хӀокху файлан',
 'shared-repo-name-wikimediacommons' => 'Викидlайуллуче',
 
@@ -1398,7 +1399,7 @@ PICT # тайп тайпан
 'statistics' => 'Бухехьдерг',
 'statistics-header-pages' => 'Агlонашан жамlа',
 'statistics-header-edits' => 'Нисдаран жамlа',
-'statistics-header-users' => 'Декъашхойн жамlа',
+'statistics-header-users' => 'Декъашхойн жамӀа',
 'statistics-articles' => 'Яззамаш',
 'statistics-pages' => 'Агlонаш',
 'statistics-pages-desc' => 'Массо вики агlонаш, дийцаре агlонашцани, дlасахьаждарш а кхин дерш.',
@@ -1590,7 +1591,7 @@ PICT # тайп тайпан
 'deletepage' => 'ДӀаяккха агӀо',
 'confirm' => 'Бакъдан',
 'excontent' => 'чуьраниг: «$1»',
-'excontentauthor' => 'чуьраниг: «$1» (дуьххьара кхоллина да вара иза [[Special:Contributions/$2|$2]])',
+'excontentauthor' => 'чуьраниг: «$1» (дуьххьара кхоьллинарг [[Special:Contributions/$2|$2]])',
 'exbeforeblank' => 'чуьраниг дlацlанйале хьалха: «$1»',
 'exblank' => 'агlо йаьсса йара',
 'delete-confirm' => '$1 — дӀаяккхар',
@@ -1627,7 +1628,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
@@ -1773,7 +1774,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' => 'Блоктоха хӀокху декъашхочун/адресна',
@@ -1812,8 +1813,11 @@ PICT # тайп тайпан
 'ipblocklist-submit' => 'Лаха',
 'infiniteblock' => 'хан чаккхе йоцуш',
 'expiringblock' => 'чекхйолу $1 $2',
+'anononlyblock' => 'цӀе хьулйина декъашхойн бен',
 'noautoblockblock' => 'ша блоктухарг дӏаяйина',
 'createaccountblock' => 'цамагдо керла дӀаяздарш кхоллар',
+'emailblock' => 'цамаго кехаташ кхехӀита',
+'blocklist-nousertalk' => 'шин дийцаре агӀо тая лууш дац',
 'blocklink' => 'блоктоха',
 'unblocklink' => 'дӀаякхаблок',
 'change-blocklink' => 'хийцам бе блоктохарна',
@@ -1828,6 +1832,8 @@ PICT # тайп тайпан
 'block-log-flags-anononly' => 'Къайлаха берш',
 'block-log-flags-nocreate' => 'цамагдо керла дӏаяздарш кхоллар',
 'block-log-flags-noautoblock' => 'ша блоктухарг дӏаяйина',
+'block-log-flags-noemail' => 'цамаго кехаташ кхехӀита',
+'block-log-flags-nousertalk' => 'шин дийцаре агӀо тая лууш дац',
 'ipb-needreblock' => 'ХӀара $1 {{GENDER:$1|блоктоьхна ву|блоктоьхна ю}}. Лаьий хьуна блоктохаран параметраш хийца?',
 
 # Move page
@@ -2290,6 +2296,7 @@ PICT # тайп тайпан
 'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4 дӀасахьажоран тӀохул а дӀасахьажийнарг цаюьтуш а',
 'logentry-newusers-newusers' => '{{GENDER:$2|ДӀавазвелла|ДӀаязелла}} керла декъашхо $1',
 'logentry-newusers-create' => '{{GENDER:$2|ДӀавазвелла|ДӀаязелла}} керла декъашхо $1',
+'logentry-rights-rights' => '$1 {{GENDER:$2|хийцина}} хӀокхуна $3 бакъо $4 → $5',
 'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|хийцина}} хӏокхуна $3 бакъо',
 'rightsnone' => '(яц)',
 
index d8a0672..f814c33 100644 (file)
@@ -97,7 +97,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Ipakita ang gidaghanon sa mga gumagamit nga nagbantay usab',
 'tog-oldsig' => 'Paunang tan-aw sa eksisting nga pirma:',
 'tog-fancysig' => 'Hilaw nga pirma (walay awtomatikong sumpay)',
-'tog-showjumplinks' => 'I-enable ang "ambak sa" nga sumpay sa aksesibilidad',
 'tog-uselivepreview' => 'Gamita ang live nga paunang tan-aw (JavaScript kinahanglan) (Eksperimental)',
 'tog-forceeditsummary' => 'Pahibaloi ako kon blangko ang mubong sugid alang sa pag-usab',
 'tog-watchlisthideown' => 'Tagoa ang akong mga giusab',
index 410f4b6..f6641e7 100644 (file)
@@ -49,7 +49,6 @@ $messages = array(
 'tog-enotifminoredits' => "E-mail yu' lokkue' ni mandikike' na tinilaika gi p\81åhina siha.",
 'tog-enotifrevealaddr' => "Na'annok iyo-ku e-mail address gi notifikasion e-mail.",
 'tog-shownumberswatching' => "Na'annok i numirun muna'sesetbi siha ni mana'atan.",
-'tog-showjumplinks' => "Na'sedi i ina'chetton ni \"ta'yoki guatu\"",
 'tog-forceeditsummary' => "Na'tungo' yu' annai mamo'lu yu' summaria gueku",
 'tog-watchlisthideown' => "Nå'na' tinilaika-hu gi listan pinilan",
 'tog-watchlisthidebots' => "Nå'na' i tinilaikan bot gi listan pinilan",
index ac5e230..b0b8a85 100644 (file)
@@ -1382,7 +1382,7 @@ $1",
 
 'grouppage-user' => '{{ns:project}}:بەکارھێنەران',
 'grouppage-autoconfirmed' => '{{ns:project}}:بەکارھێنەرانی پەسندکراوی خۆگەڕ',
-'grouppage-bot' => '{{ns:project}}:بۆتەکان',
+'grouppage-bot' => '{{ns:project}}:بۆت',
 'grouppage-sysop' => '{{ns:project}}:بەڕێوبەران',
 'grouppage-bureaucrat' => '{{ns:project}}:بیوروکراتەکان',
 'grouppage-suppress' => '{{ns:project}}:چاودێر',
@@ -1478,7 +1478,7 @@ $1",
 'action-upload' => 'ئەم پەڕەیە بار بکە',
 'action-reupload' => 'سەرنووسینی ئەم پەڕگە وا هەیە',
 'action-reupload-shared' => 'بەتاڵ‌کردنی ئەم پەڕگە لە‌سەر شوێنێکی هاوبەش',
-'action-upload_by_url' => 'بارکردÙ\86Û\8c Ø¦Û\95Ù\85 Ù¾Û\95رگÛ\95 Ù\84Û\95 Ø¦Û\95درÛ\95سÛ\8eÚ©Û\8c Ø³Û\95ر ØªÛ\86Ú\95Û\95Ù\88ە',
+'action-upload_by_url' => 'ئÛ\95Ù\85 Ù¾Û\95رگÛ\95Û\8cÛ\95 Ù\84Û\95 Ù\86اÙ\88Ù\86Û\8cشاÙ\86Û\8eÚ©Û\8c Ø¦Û\8cÙ\86تÛ\95رÙ\86Û\8eتÛ\8c Ø¨Ø§Ø± Ø¨Ú©ە',
 'action-writeapi' => 'کەڵک وەر گرتن لە نووسینی API',
 'action-delete' => 'ئەم پەڕەیە بسڕەوە',
 'action-deleterevision' => 'سڕینی ئەم پێداچوونەوە',
@@ -1800,7 +1800,7 @@ $1',
 'download' => 'داگرتن',
 
 # Unwatched pages
-'unwatchedpages' => 'Ù\84اپÛ\95Ú\95Û\95 Ú\86اÙ\88دÛ\8eرÛ\8câ\80\8cÙ\86Û\95کراÙ\88Û\95کاÙ\86',
+'unwatchedpages' => 'پەڕە چاودێری‌نەکراوەکان',
 
 # List redirects
 'listredirects' => 'پێرستی ڕەوانەکەرەکان',
@@ -2269,7 +2269,7 @@ $UNWATCHURL
 
 # Restriction levels
 'restriction-level-sysop' => 'تەواو پارێزراو',
-'restriction-level-autoconfirmed' => 'نیوە پارێزراو',
+'restriction-level-autoconfirmed' => 'نیوەپارێزراو - ئاستی ١',
 'restriction-level-all' => 'هەر ئاستێک',
 
 # Undelete
@@ -2649,57 +2649,64 @@ $1',
 'thumbnail_dest_directory' => 'پێرستی مەبەست درووست‌ناکرێت',
 'thumbnail_image-type' => 'جۆرەی وێنە پاڵپشت نەکراوە',
 'thumbnail_gd-library' => 'شێوەپێدانی‌ ناتەواوی ژێدەرگەی GD: ون‌بوونی فەنکشێن $1',
-'thumbnail_image-missing' => 'Ù\84Û\95Ù\88Û\95 Ø¯Û\95Ú\86Û\8e Ù¾Û\95Ú\95Ú¯Û\95 Ù\88Ù\86 Ø¨وبێت: $1',
+'thumbnail_image-missing' => 'Ù\88ا Ø¯Û\8cارÛ\95 Ù¾Û\95Ú\95Ú¯Û\95 Ø¨Ø²Ø± Ø¨Ù\88وبێت: $1',
 
 # Special:Import
 'import' => 'ھاوردنی پەڕەکان',
-'importinterwiki' => 'هێنانەناوەی ترانس‌ویکی',
-'import-interwiki-text' => 'بۆ ھاوردن ویکییەک و سەردێڕێکی پەڕە ھەڵبژێرە.
+'importinterwiki' => 'ھاوردنی ناووویکی',
+'import-interwiki-text' => 'بۆ ھاوردن، ویکییەک و سەردێڕێکی پەڕە ھەڵبژێرە.
 ڕێکەوتەکانی پێداچوونەوە و ناوی دەستکاریکەرەکان دەپارێزرێت.
-هەموو کردەوەکانی ھاوردنی ترانسویکی لە [[Special:Log/import|لۆگی ھاوردن]]دا تۆمار دەکرێت.',
-'import-interwiki-source' => 'سەرچاوەی ویکی\\لاپەڕە :',
-'import-interwiki-history' => 'ڕوونووس‌کردنی هەموو مێژووی پێداچوونەوەکانی ئەم لاپەڕە',
-'import-interwiki-templates' => 'لەخۆگرتنی هەموو داڕێژەکان',
-'import-interwiki-submit' => 'هاوردن',
-'import-interwiki-namespace' => 'بۆشایی‌ناوی مەبەست:',
-'import-upload-filename' => 'پەڕگە‌ناو:',
+هەموو کردەوەکانی ھاوردنی ناوویکی لە [[Special:Log/import|لۆگی ھاوردن]]دا تۆمار دەکرێت.',
+'import-interwiki-source' => 'ویکی/پەڕەی سەرچاوە:',
+'import-interwiki-history' => 'هەموو مێژووی پێداچوونەوەکانی ئەم پەڕەیە کۆپی بکە',
+'import-interwiki-templates' => 'ھەموو داڕێژەکان لەخۆبگرێتەوە',
+'import-interwiki-submit' => 'هاوردە بکە',
+'import-interwiki-namespace' => 'بۆشاییی ناوی مەبەست:',
+'import-interwiki-rootpage' => 'پەڕەی بنەڕەتیی مەبەست (دڵخوازانە):',
+'import-upload-filename' => 'ناوی پەڕگە‌:',
 'import-comment' => 'بۆچوون:',
-'importtext' => 'تکایە پەڕگە لە سەرچاوەی ویکی‌یەوە بە کەڵک وەرگرتن لە [[Special:Export|ئامێری هەناردن]] هەناردە بکە.
+'importtext' => 'تکایە پەڕگەکە لە ویکی سەرچاوەوە بە کەڵک وەرگرتن لە [[Special:Export|ئامێری ھەناردن]] ھەناردە بکە.
 لەسەر کۆمپیۆتەرەکەت پاشەکەوتی بکە و لێرە باری بكە.',
 'importstart' => 'ھاوردنی پەڕەکان...',
-'import-revision-count' => '$1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}}',
-'importnopages' => 'هیچ پەڕەیەک نییە بۆ ھاوردن.',
-'importfailed' => 'هێنانەناوە سەرکەوتوو نەبوو: <nowiki>$1</nowiki>',
-'importunknownsource' => 'جۆرەی سەرچاوەی هێنانەناوەی نەناسراو',
-'importcantopen' => 'پەڕگەی هێنانەناوە ناکرێتەوە',
-'importbadinterwiki' => 'بەستەری خراپی نێوان‌ویکی',
+'import-revision-count' => '$1 {{PLURAL:$1|پێداچوونەوە}}',
+'importnopages' => 'ھیچ پەڕەیەک بۆ ھاوردن نییە.',
+'imported-log-entries' => '$1 {{PLURAL:$1|بابەتی لۆگ}} ھاوردە کرا.',
+'importfailed' => 'ھاوردن سەرکەوتوو نەبوو: <nowiki>$1</nowiki>',
+'importunknownsource' => 'جۆری سەرچاوەی هاوردن نەناسراوە',
+'importcantopen' => 'پەڕگەی ھاوردن ناکرێتەوە',
+'importbadinterwiki' => 'بەستەری نێوانویکیی خراپ',
 'importnotext' => 'واڵا یان بێ‌دەق',
-'importsuccess' => 'هێنانەناوە تەواو بوو!',
-'importhistoryconflict' => 'Ú©Û\8eØ´Û\95 Ù\84Û\95Ù\88 Ù\85Û\8eÚ\98Ù\88Ù\88Û\8c Ù¾Û\8eداÚ\86Ù\88Ù\88Ù\86Û\95Ù\88اÙ\86Û\95 Ù\88ا Ù\87Û\95Û\8cÛ\95 (Ù\84Û\95Ù\88اÙ\86Û\95Û\8cÛ\95 Ø¦Û\95Ù\85 Ù\84اپÛ\95Ú\95Û\95 Ù\84Û\95Ù¾Û\8eØ´â\80\8cدا Ù\87Û\8eÙ\86رابÛ\8eتÛ\95Ù\86اÙ\88Û\95)',
-'importnosources' => 'هیچ سەرچاوەیەکی هێنانەناوەی نێوان‌ویکی دیاری‌نەکراوە و بارکردنی ڕاستەوخۆی مێژوو لەکارخستراوە.',
-'importnofile' => 'هیچ پەڕگەیەکی هێنانەناوە بارنەکرا.',
-'importuploaderrorsize' => 'بارکردنی پەڕگەی هێنانەناوە سەرکەوتوو نەبوو.
-پەڕگەکە لەو قەبارەی بۆ بارکردن ڕێگەدراوە گەورەترە.',
-'importuploaderrorpartial' => 'بارکردنی پەڕگەی هێنانەناوە سەرکەوتوو نەبوو.
-تەنها بەشێک لە پەڕگەکە بارکرا.',
-'importuploaderrortemp' => 'بارکردنی پەڕگەی هێنانەناوە سەرکەوتوو نەبوو.
-بوخچەیەکی کاتی ون‌بووە.',
-'import-parse-failure' => 'سەرنەکەوتن لە هێنانەناوەی XML',
-'import-noarticle' => 'هیچ لاپەڕەیەک نیە بۆ هێنانەناوە',
-'import-nonewrevisions' => 'هەموو پێداچوونەوەکان لە پێش‌دا هێنراونەتەناوە.',
+'importsuccess' => 'ھاوردن تەواو بوو!',
+'importhistoryconflict' => 'Ú©Û\8eØ´Û\95 Ù\84Û\95Ù\88 Ù\85Û\8eÚ\98Ù\88Ù\88Û\8c Ù¾Û\8eداÚ\86Ù\88Ù\88Ù\86Û\95Ù\88اÙ\86Û\95 Ù\88ا Ù\87Û\95Û\8cÛ\95 (Ù\84Û\95Ù\88اÙ\86Û\95Û\8cÛ\95 Ø¦Û\95Ù\85 Ù¾Û\95Ú\95Û\95Û\8cÛ\95 Ù¾Û\8eشتر Ú¾Ø§Ù\88ردÛ\95 Ú©Ø±Ø§Ø¨Û\8e)',
+'importnosources' => 'ھیچ سەرچاوەیەکی ھاوردنی ناوویکی دیاری نەکراوە و بارکردنی ڕاستەوخۆی مێژوو ناچالاکە.',
+'importnofile' => 'ھیچ پەڕگەیەکی ھاوردن بار نەکراوە.',
+'importuploaderrorsize' => 'بارکردنی پەڕگەی ھاوردن سەرکەوتوو نەبوو.
+پەڕگەکە لەو قەبارەیەی بۆ بارکردن ڕێگەدراوە گەورەترە.',
+'importuploaderrorpartial' => 'بارکردنی پەڕگەی ھاوردن سەرکەوتوو نەبوو.
+تەنیا بەشێک لە پەڕگەکە بار کرا.',
+'importuploaderrortemp' => 'بارکردنی پەڕگەی ھاوردن سەرکەوتوو نەبوو.
+بوخچەیەکی کاتی بزر بووە.',
+'import-parse-failure' => 'سەرنەکەوتن لە شیکردنەوەی ھاوردنی XML',
+'import-noarticle' => 'ھیچ پەڕەیەک بۆ ھاوردن نییە!',
+'import-nonewrevisions' => 'ھەموو پێداچوونەوەکان پێشتر ھاوردە کراون.',
 'xml-error-string' => '$1 لە دێڕی $2، ستوونی $3 (بایت $4): $5',
 'import-upload' => 'بارکردنی دراوەی XML',
-'import-token-mismatch' => 'لەدەست‌ڕۆشتنی دراوەکانی ئەو بەشە.
-تکایە دیسان تاقی‌بکەوە.',
-'import-invalid-interwiki' => 'لە ویکی‌ دیاری‌کراوە ناهێنڕێتەوە ناوە.',
+'import-token-mismatch' => 'لەدەستدانی دراوەکانی کۆڕ.
+تکایە دیسان تاقی بکەوە.',
+'import-invalid-interwiki' => 'لە ویکی‌ دیاریکراو ھاوردن ناکرێ.',
+'import-error-edit' => 'پەڕەی «$1» ھاوردە ناکرێ، چون ناتوانی ئەم پەڕەیە دەستکاری بکەی.',
+'import-error-create' => 'پەڕەی «$1» ھاوردە ناکرێ، چون ناتوانی ئەم پەڕەیە دروست بکەی.',
+'import-error-interwiki' => 'پەڕەی «$1» ھاوردە ناکرێ چون ناوەکەی بۆ بەستەری دەرەکیی (interwiki) گیراوەتەوە.',
+'import-error-special' => 'پەڕەی «$1» ھاوردە ناکرێ چون لە بۆشاییی ناوی نەگونجاودایە.',
+'import-error-invalid' => 'پەڕەی «$1» ھاوردە ناکرێ چون ناوەکەی نادروستە.',
 
 # Import log
 'importlogpage' => 'لۆگی ھاوردن',
 'importlogpagetext' => 'ھاوردنی پەڕەکان لەگەڵ مێژووی دەستکاری لە ویکییەکانی ترەوە.',
-'import-logentry-upload' => 'ھاوردنی [[$1]] بە بارکردنی پەڕگە',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}}',
-'import-logentry-interwiki' => 'ترانس‌ویکی‌کراو $1',
-'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}} لە $2',
+'import-logentry-upload' => '[[$1]]ی بە بارکردنی پەڕگە ھاورد',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|پێداچوونەوە}}',
+'import-logentry-interwiki' => '$1ی ناوویکی کرد',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|پێداچوونەوە}} لە $2',
 
 # JavaScriptTest
 'javascripttest' => 'تاقیکردنەوەی جاڤاسکریپت',
index 8010958..2a79ae6 100644 (file)
@@ -43,7 +43,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Ipakita ang mga numero sang mga gatan-aw nga manug-usar',
 'tog-oldsig' => 'Nagkayara nga pirma:',
 'tog-fancysig' => 'Ituring ang pirma bilang teksto sang wiki (wala sang automatik nga link)',
-'tog-showjumplinks' => 'Pasugtan ang mga "tumbo sa" kadali-an nga mga link',
 'tog-uselivepreview' => 'Maggamit sang buhi nga prebyu (kinanglan ang Javascript) (Eksperimental)',
 'tog-forceeditsummary' => 'Hambalan ako kung nagapasulod sang wala unod nga pag-ilis kabilugan',
 'tog-watchlisthideown' => 'Itago ang akon mga pagbag-o halin sa listahan sang mga ginabantayan',
index a694088..f945a81 100644 (file)
@@ -784,7 +784,6 @@ Správce serveru, který úložiště zamkl, poskytl toto zdůvodnění: „''$3
 # Login and logout pages
 'logouttext' => "'''Nyní jste odhlášeni.'''
 
-Můžete pokračovat v anonymním prohlížení a editaci {{grammar:2sg|{{SITENAME}}}}, nebo se můžete <span class='plainlinks'>[$1 znovu přihlásit]</span> jako stejný či jiný uživatel.
 Uvědomte si, že některé stránky se mohou i nadále zobrazovat, jako byste byli dosud přihlášeni, pokud nevymažete cache prohlížeče.",
 'welcomeuser' => 'Vítejte, uživateli $1!',
 'welcomecreation-msg' => 'Váš účet byl vytvořen.
@@ -832,7 +831,7 @@ Nezapomeňte si upravit své [[Special:Preferences|nastavení {{grammar:2sg|{{SI
 'createacct-emailoptional' => 'E-mailová adresa (nepovinné)',
 'createacct-email-ph' => 'Zadejte svou e-mailovou adresu',
 'createacct-another-email-ph' => 'Zadejte e-mailovou adresu',
-'createaccountmail' => 'Použít dočasné náhodné heslo a odeslat ho na níže uvedenou e-mailovou adresu',
+'createaccountmail' => 'Použít dočasné náhodné heslo a odeslat ho na uvedenou e-mailovou adresu',
 'createacct-realname' => 'Skutečné jméno (nepovinné)',
 'createaccountreason' => 'Důvod:',
 'createacct-reason' => 'Důvod',
@@ -1617,10 +1616,10 @@ Vaše adresa v takovém případě není prozrazena.',
 'userrights-no-interwiki' => 'Nemáte povoleno měnit uživatelská práva na jiných wiki.',
 'userrights-nodatabase' => 'Databáze $1 neexistuje nebo není místní.',
 'userrights-nologin' => 'Musíte se [[Special:UserLogin|přihlásit]] k účtu správce, abyste mohli měnit uživatelská práva.',
-'userrights-notallowed' => 'Váš účet nemá oprávnění měnit uživatelská práva.',
+'userrights-notallowed' => 'Nemáte oprávnění měnit uživatelská práva.',
 'userrights-changeable-col' => 'Skupiny, které můžete měnit',
 'userrights-unchangeable-col' => 'Skupiny, které nemůžete měnit',
-'userrights-conflict' => 'Konflikt uživatelských práv! Proveďte požadované změny ještě jednou.',
+'userrights-conflict' => 'Konflikt změn uživatelských práv! Zkontrolujte a potvrďte požadované změny.',
 'userrights-removed-self' => 'Úspěšně jste si odebrali vlastní práva. Tudíž už nemáte k této stránce přístup.',
 
 # Groups
@@ -3225,13 +3224,13 @@ Uložte jej na svůj disk a nahrajte ho sem.',
 'pageinfo-length' => 'Velikost stránky (v bajtech)',
 'pageinfo-article-id' => 'ID stránky',
 'pageinfo-language' => 'Jazyk obsahu stránky',
-'pageinfo-robot-policy' => 'Nastavení pro vyhledávače',
-'pageinfo-robot-index' => 'Indexovatelná',
-'pageinfo-robot-noindex' => 'Neindexovatelná',
+'pageinfo-robot-policy' => 'Indexování roboty',
+'pageinfo-robot-index' => 'Dovoleno',
+'pageinfo-robot-noindex' => 'Zakázáno',
 'pageinfo-views' => 'Počet zobrazení',
 'pageinfo-watchers' => 'Počet sledujících',
 'pageinfo-few-watchers' => 'Méně než $1 {{PLURAL:$1|sledující|sledující|sledujících}}',
-'pageinfo-redirects-name' => 'Přesměrování na tuto stránku',
+'pageinfo-redirects-name' => 'Počet přesměrování na tuto stránku',
 'pageinfo-subpages-name' => 'Podstránky této stránky',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|přesměrování}}; $3 {{PLURAL:$3|nepřesměrování}})',
 'pageinfo-firstuser' => 'Zakladatel stránky',
@@ -3835,7 +3834,7 @@ Platnost tohoto potvrzovacího kódu vyprší $4.',
 'confirmemail_body_set' => 'Někdo (patrně vy, z IP adresy $1) nastavil e-mailovou adresu
 účtu „$2“ na {{grammar:6sg|{{SITENAME}}}} na tuto adresu.
 
-Pokud si přejete znovu aktivovat e-mailové funkce na
+Pokud si přejete aktivovat e-mailové funkce na
 {{grammar:6sg|{{SITENAME}}}}, tak pro potvrzení, že tato adresa opravdu
 patří vám, přejděte svým internetovým prohlížečem na následující adresu:
 
@@ -4260,4 +4259,19 @@ Jinak můžete využít jednoduchý formulář níže. Váš komentář bude př
 # Image rotation
 'rotate-comment' => 'Obrázek otočen o $1 {{PLURAL:$1|stupeň|stupně|stupňů}} po směru hodinových ručiček',
 
+# Limit report
+'limitreport-title' => 'Data profilování parseru:',
+'limitreport-cputime' => 'Využití času procesoru',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|sekunda|sekundy|sekund}}',
+'limitreport-walltime' => 'Využití reálného času',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekunda|sekundy|sekund}}',
+'limitreport-ppvisitednodes' => 'Počet uzlů navštívených preprocesorem',
+'limitreport-ppgeneratednodes' => 'Počet uzlů vygenerovaných preprocesorem',
+'limitreport-postexpandincludesize' => 'Velikost vložení po expanzi',
+'limitreport-postexpandincludesize-value' => '$1/$2 bajtů',
+'limitreport-templateargumentsize' => 'Velikost argumentů šablon',
+'limitreport-templateargumentsize-value' => '$1/$2 bajtů',
+'limitreport-expansiondepth' => 'Největší hloubka expanze',
+'limitreport-expensivefunctioncount' => 'Počet náročných funkcí parseru',
+
 );
index a1a141d..6c721a2 100644 (file)
@@ -68,7 +68,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Pòkażë lëczba ùzérającëch brëkòwników',
 'tog-oldsig' => 'Pòdzérk wëzdrzatkù twòjegò pòdpisënka',
 'tog-fancysig' => 'Wzérôj na pòdpisënk jakno na wikikòd (bez aùtomatnych lënków)',
-'tog-showjumplinks' => 'Włączë lënczi przëstãpù "òbaczë téż"',
 'tog-uselivepreview' => 'Brëkùjë wtimczasnegò pòdzérkù (JavaScript) (eksperimentalné)',
 'tog-forceeditsummary' => 'Pëtôj przed wéńdzenim do pùstégò pòdrechòwania edicëji',
 'tog-watchlisthideown' => 'Zatacë mòjé edicëje z lëstë ùzérónëch artiklów',
index 57412c8..5ec5ba4 100644 (file)
@@ -13,6 +13,7 @@
  * @author PCode
  * @author Salam
  * @author Александр Сигачёв
+ * @author Блокнот
  */
 
 $fallback = 'ru';
@@ -71,7 +72,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Страницăна миçе хутшăнакан сăнав списокне кĕртнине кăтартмалла',
 'tog-oldsig' => 'Хальхи алӑ пусни:',
 'tog-fancysig' => 'Хăвăр тунă алă пуснин вики-паллисем',
-'tog-showjumplinks' => '«... патне куç» хушма каçăсене усă курмалла',
 'tog-uselivepreview' => 'Хăвăрт кăтартакан малтанхи курăнăва усă курмалла (JavaScript, экспериментлă)',
 'tog-forceeditsummary' => 'Тӳрлетӳсен кĕске ăнлантарăвне кăтартман чухне асăрхаттармалла',
 'tog-watchlisthideown' => 'Сăнав списокĕнче эпĕ тунă тӳрлетӳсене кăтартмалла мар',
index a52bc81..2f9900f 100644 (file)
@@ -537,7 +537,6 @@ Y rheswm a roddwyd gan y gweinyddwr a roddodd y ffeil dan glo yw "\'\'$3\'\'".',
 # Login and logout pages
 'logouttext' => "'''Rydych wedi allgofnodi.'''
 
-Gallwch ddefnyddio {{SITENAME}} yn anhysbys, neu fe allwch <span class='plainlinks'>[$1 fewngofnodi eto]</span> wrth yr un un enw neu wrth enw arall.
 Sylwer y bydd rhai tudalennau yn parhau i ymddangos fel ag yr oeddent pan oeddech wedi mewngofnodi hyd nes i chi glirio celc eich porwr.",
 'welcomeuser' => 'Croeso, $1!',
 'welcomecreation-msg' => 'Peidiwch ag anghofio newid eich [[Special:Preferences|{{SITENAME}} preferences]].',
@@ -584,7 +583,7 @@ Sylwer y bydd rhai tudalennau yn parhau i ymddangos fel ag yr oeddent pan oeddec
 'createacct-emailoptional' => 'Cyfeiriad ebost (dewisol)',
 'createacct-email-ph' => 'Rhowch eich cyfeiriad ebost',
 'createacct-another-email-ph' => 'Rhowch y cyfeiriad e-bost',
-'createaccountmail' => "Defnyddier cyfrinair ar hap dros dro a'i anfon i'r cyfeiriad e-bost isod",
+'createaccountmail' => "Defnyddio cyfrinair ar hap dros dro a'i anfon i'r cyfeiriad e-bost a roddwyd",
 'createacct-realname' => 'Enw cywir (dewisiol)',
 'createaccountreason' => 'Rheswm:',
 'createacct-reason' => 'Rheswm',
@@ -592,6 +591,7 @@ Sylwer y bydd rhai tudalennau yn parhau i ymddangos fel ag yr oeddent pan oeddec
 'createacct-captcha' => 'Gwiriad diogelwch',
 'createacct-imgcaptcha-ph' => 'Nodwch y testun a welwch uchod',
 'createacct-submit' => 'Creer y cyfrif',
+'createacct-another-submit' => 'Creer y cyfrif ychwanegol',
 'createacct-benefit-heading' => 'Ffrwyth llafur pobl fel chi yw {{SITENAME}}.',
 'createacct-benefit-body1' => '{{PLURAL:$1|golygiad|golygiad|olygiad|golygiad}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|tudalen|dudalen|dudalen|tudalen|thudalen|tudalen}}',
@@ -724,6 +724,16 @@ Y cyfrinair dros dro: $2",
 'changeemail-submit' => 'Newidier y cyfeiriad e-bost',
 'changeemail-cancel' => 'Dileer',
 
+# Special:ResetTokens
+'resettokens' => 'Ailosod tocynnau',
+'resettokens-no-tokens' => "Nid oes unrhyw docynnau i'w hailosod.",
+'resettokens-legend' => 'Ailosod tocynnau',
+'resettokens-tokens' => 'Tocynnau:',
+'resettokens-token-label' => '$1 (gwerth presennol: $2)',
+'resettokens-watchlist-token' => 'Tocyn i borthiant gwe y rhestr wylio',
+'resettokens-done' => 'Ailosodwyd y tocynnau.',
+'resettokens-resetbutton' => 'Ailosoder y tocynnau a ddewiswyd',
+
 # Edit page toolbar
 'bold_sample' => 'Testun cryf',
 'bold_tip' => 'Testun cryf',
@@ -1139,6 +1149,7 @@ Pan yn gwneud hyn dylid sicrhau nad yw dilyniant hanes tudalennau yn cael ei ddi
 'compareselectedversions' => 'Cymharer y fersiynau dewisedig',
 'showhideselectedversions' => 'Dangos/cuddio y diwygiadau dewisedig',
 'editundo' => 'dadwneud',
+'diff-empty' => '(Dim gwahaniaeth)',
 'diff-multi' => '(Ni ddangosir {{PLURAL:$1|yr $1 diwygiad|yr $1 diwygiad|y $1 ddiwygiad|y $1 diwygiad|y $1 diwygiad|y $1 diwygiad}} rhyngol gan {{PLURAL:$2||un defnyddiwr|$2 ddefnyddiwr|$2 defnyddiwr|$2 o ddefnyddwyr|$2 o ddefnyddwyr}}.)',
 'diff-multi-manyusers' => '(Ni ddangosir {{PLURAL:$1|yr $1 diwygiad|yr $1 diwygiad|y $1 ddiwygiad|y $1 diwygiad|y $1 diwygiad|y $1 diwygiad}} rhyngol gan mwy na $2 {{PLURAL:$2|o ddefnyddwyr}}.)',
 'difference-missing-revision' => "Ni chafwyd hyd i $1 {{PLURAL:$2|diwygiad|diwygiad|ddiwygiad|diwygiad}} o'r gwahaniaeth ($1) {{PLURAL:$2|hwn}}.
@@ -1312,7 +1323,7 @@ Mae'r wybodaeth hon ar gael i'r cyhoedd.",
 'prefs-signature' => 'Llofnod',
 'prefs-dateformat' => 'Fformat dyddiad',
 'prefs-timeoffset' => 'Atred amser',
-'prefs-advancedediting' => 'Cyffredinol',
+'prefs-advancedediting' => 'Dewisiadau cyffredinol',
 'prefs-editor' => 'Golygydd',
 'prefs-preview' => 'Rhagolwg',
 'prefs-advancedrc' => 'Dewisiadau uwch',
@@ -1322,6 +1333,7 @@ Mae'r wybodaeth hon ar gael i'r cyhoedd.",
 'prefs-displayrc' => 'Dewisiadau arddangos',
 'prefs-displaysearchoptions' => 'Dewisiadau arddangos',
 'prefs-displaywatchlist' => 'Dewisiadau arddangos',
+'prefs-tokenwatchlist' => 'Tocyn',
 'prefs-diffs' => "Cymharu golygiadau ('gwahan')",
 
 # User preference: email validation using jQuery
@@ -1346,7 +1358,7 @@ Mae'r wybodaeth hon ar gael i'r cyhoedd.",
 'userrights-no-interwiki' => "Nid yw'r gallu ganddoch i newid galluoedd defnyddwyr ar wicïau eraill.",
 'userrights-nodatabase' => "Nid yw'r bas data $1 yn bod neu nid yw'n un lleol.",
 'userrights-nologin' => 'Rhaid i chi [[Special:UserLogin|fewngofnodi]] ar gyfrif gweinyddwr er mwyn pennu galluoedd defnyddwyr.',
-'userrights-notallowed' => 'Nid oes gan eich cyfrif y caniatâd priodol i ychwanegu neu dynnu hawliau defnyddwyr.',
+'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.',
@@ -1414,7 +1426,7 @@ Mae'r wybodaeth hon ar gael i'r cyhoedd.",
 'right-hideuser' => "Atal enw defnyddiwr rhag i'r cyhoedd ei weld",
 'right-ipblock-exempt' => 'Mynd heibio i flociau IP, blociau awtomatig a blociau amrediad',
 'right-proxyunbannable' => 'Mynd heibio i flociau awtomatig gan weinyddion dirprwyol',
-'right-unblockself' => 'Dad-flocio eu hunain',
+'right-unblockself' => 'Dad-flocio ei hunan',
 'right-protect' => 'Newid lefelau diogelu a golygu tudalennau a sgydol-ddiogelwyd',
 'right-editprotected' => 'Golygu tudalennau sydd wedi eu diogelu ond mai "{{int:protect-level-sysop}}"',
 'right-editsemiprotected' => 'Golygu tudalennau sydd wedi eu diogelu, ond "{{int:protect-level-autoconfirmed}}"',
@@ -1890,6 +1902,13 @@ Cofiwch chwilio am gysylltiadau eraill at nodyn a'u hystyried cyn ei ddileu.",
 'randompage' => 'Tudalen ar hap',
 'randompage-nopages' => 'Does dim tudalennau yn y {{PLURAL:$2|parth hwn|parth hwn|parthau hyn|parthau hyn|parthau hyn|parthau hyn}}: $1.',
 
+# Special:RandomInCategory
+'randomincategory' => "Tudalen ar hap o blith tudalennau'r categori",
+'randomincategory-invalidcategory' => 'Nid yw "$1" yn enw dilys i gategori.',
+'randomincategory-nopages' => 'Nid oes unrhyw dudalennau yn y categori [[:Category:$1]].',
+'randomincategory-selectcategory' => "Nôl tudalen ar hap o'r categori: $1 $2.",
+'randomincategory-selectcategory-submit' => 'Gwneler',
+
 # Random redirect
 'randomredirect' => 'Tudalen ailgyfeirio ar hap',
 'randomredirect-nopages' => 'Does dim tudalennau ailgyfeirio yn y parth "$1".',
@@ -2046,7 +2065,7 @@ Sylwer bod llythrennau mawr neu fach o bwys i'r chwiliad.",
 'allnotinnamespace' => 'Pob tudalen (heblaw am y parth $1)',
 'allpagesprev' => 'Gynt',
 'allpagesnext' => 'Nesaf',
-'allpagessubmit' => 'Ewch',
+'allpagessubmit' => 'Rhestrer',
 'allpagesprefix' => 'Dangos pob tudalen mewn parth gan ddechrau o:',
 'allpagesbadtitle' => 'Roedd y darpar deitl yn annilys oherwydd bod ynddo naill ai:<p> - rhagddodiad rhyngwici neu ryngieithol, neu </p>- nod neu nodau na ellir eu defnyddio mewn teitlau.',
 'allpages-bad-ns' => 'Nid oes gan {{SITENAME}} barth o\'r enw "$1".',
@@ -2100,8 +2119,9 @@ Mae angen parth lefel-uchaf o leiaf, er enghraifft "*.org".<br />
 # Special:ListGroupRights
 'listgrouprights' => 'Galluoedd grwpiau defnyddwyr',
 'listgrouprights-summary' => "Dyma restr o'r grwpiau defnyddwyr sydd i'w cael ar y wici hon, ynghyd â galluoedd aelodau'r gwahanol grwpiau. Cewch wybodaeth pellach am y gwahanol alluoedd ar y [[{{MediaWiki:Listgrouprights-helppage}}|dudalen gymorth]].",
-'listgrouprights-key' => '* <span class="listgrouprights-granted">Gallu sydd wedi ei roi</span>
-* <span class="listgrouprights-revoked">Gallu sydd wedi ei dynnu yn ei ôl</span>',
+'listgrouprights-key' => 'Allwedd:
+* <span class="listgrouprights-granted">Gallu sydd wedi ei roi</span>
+* <span class="listgrouprights-revoked">Gallu sydd wedi ei dynnu yn ôl</span>',
 'listgrouprights-group' => 'Grŵp',
 'listgrouprights-rights' => 'Galluoedd',
 'listgrouprights-helppage' => 'Help:Galluoedd yn ôl grŵp',
@@ -2940,9 +2960,9 @@ Achos hyn yn fwy na thebyg yw presenoldeb cysylltiad i wefan ar y rhestr wahardd
 'pageinfo-length' => 'Hyd y dudalen (beitiau)',
 'pageinfo-article-id' => 'ID y dudalen',
 'pageinfo-language' => 'Iaith cynnwys y dudalen',
-'pageinfo-robot-policy' => 'Statws i beiriannau chwilio',
-'pageinfo-robot-index' => 'Gellir ei rhestru gan beiriannau chwilio',
-'pageinfo-robot-noindex' => 'Ni ellir ei rhestru gan beiriannau chwilio',
+'pageinfo-robot-policy' => 'Rhestrwyd gan robot',
+'pageinfo-robot-index' => 'Caniateir',
+'pageinfo-robot-noindex' => 'Gwrthodedig',
 'pageinfo-views' => 'Nifer yr ymweliadau',
 'pageinfo-watchers' => 'Nifer gwylwyr y dudalen',
 'pageinfo-few-watchers' => 'Llai na $1 {{PLURAL:$1|gwyliwr|gwyliwr|wyliwr|gwyliwr|o wylwyr}}',
@@ -3287,7 +3307,7 @@ Cuddir y meysydd eraill trwy ragosodiad.
 'exif-compression-4' => 'Amgodio ffacs Grŵp 4 CCITT',
 
 'exif-copyrighted-true' => 'Hawlfraint',
-'exif-copyrighted-false' => 'Parth y cyhoedd',
+'exif-copyrighted-false' => 'Statws yr hawlfraint heb ei osod',
 
 'exif-unknowndate' => 'Dyddiad anhysbys',
 
@@ -3544,7 +3564,7 @@ $5
 Bydd y côd cadarnhau yn dod i ben am $4.',
 'confirmemail_body_set' => 'Mae rhywun (chi, yn fwy na thebyg, o\'r cyfeiriad IP $1) wedi gosod cyfeiriad e-bost y cyfrif "$2" ar {{SITENAME}} i\'r cyfeiriad e-bost hwn.
 
-I gadarnhau mai chi yn wir yw perchennog y cyfrif hwn, ac i ail-alluogi nodweddion e-bost ar {{SITENAME}}, agorwch y cyswllt hwn yn eich porwr:
+I gadarnhau mai chi yn wir yw perchennog y cyfrif hwn, ac i alluogi nodweddion e-bost ar {{SITENAME}}, agorwch y cyswllt hwn yn eich porwr:
 
 $3
 
@@ -3667,6 +3687,7 @@ Gallwch hefyd [[Special:EditWatchlist|ddefnyddio\'r rhestr arferol]].',
 'version-license' => 'Trwydded',
 'version-poweredby-credits' => "Mae'r wici hwn wedi'i nerthu gan '''[//www.mediawiki.org/ MediaWiki]''', hawlfraint © 2001 - $1 $2.",
 'version-poweredby-others' => 'eraill',
+'version-poweredby-translators' => 'cyfieithwyr translatewiki.net',
 'version-credits-summary' => 'Hoffem gydnabod cyfraniad y bobl canlynol i [[Special:Version|MediaWiki]].',
 'version-license-info' => "Meddalwedd rhydd yw MediaWiki; gallwch ei ddefnyddio a'i addasu yn ôl termau'r GNU General Public License a gyhoeddir gan Free Software Foundation; naill ai fersiwn 2 o'r Drwydded, neu unrhyw fersiwn diweddarach o'ch dewis.
 
index 7f6ac3f..1a45130 100644 (file)
@@ -1439,7 +1439,7 @@ Hvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit
 'userrights-no-interwiki' => 'Du kan ikke ændre brugerrettigheder på andre wikier.',
 'userrights-nodatabase' => 'Databasen $1 eksisterer ikke lokalt.',
 'userrights-nologin' => 'Du skal [[Special:UserLogin|logge på]] med en administrativ konto, før du kan ændre brugerettigheder.',
-'userrights-notallowed' => 'Din konto har ikke adgang til at tilføje eller fjerne brugerrettigheder.',
+'userrights-notallowed' => 'Du har ikke tilladelse til at tilføje eller fjerne brugerrettigheder.',
 'userrights-changeable-col' => 'Redigerbare grupper',
 'userrights-unchangeable-col' => 'Uredigerbare grupper',
 'userrights-conflict' => 'Brugerrettighedskonflikt. Tilføj venligst dine ændringer påny.',
@@ -1989,6 +1989,13 @@ Husk at kontrollere for andre henvisninger til skabelonerne før de slettes.',
 'randompage' => 'Tilfældig side',
 'randompage-nopages' => 'Der er ingen sider i {{PLURAL:$2|navnerummet|disse navnerum:}} $1.',
 
+# Special:RandomInCategory
+'randomincategory' => 'Tilfældig side i kategori',
+'randomincategory-invalidcategory' => '"$1" er ikke et gyldigt kategorinavn.',
+'randomincategory-nopages' => 'Der er ingen sider i [[:Category:$1]].',
+'randomincategory-selectcategory' => 'Få tilfældig side fra kategori: $1 $2.',
+'randomincategory-selectcategory-submit' => 'Gå til',
+
 # Random redirect
 'randomredirect' => 'Tilfældige henvisninger',
 'randomredirect-nopages' => 'Der er ingen omdirigeringer i navnerummet $1.',
@@ -2025,6 +2032,7 @@ En side behandles som en side med en flertydig titel hvis den bruger en skabelon
 'pageswithprop-text' => 'Denne side viser en liste over sider, der har en bestemt sideegenskab.',
 'pageswithprop-prop' => 'Egenskabsnavn:',
 'pageswithprop-submit' => 'Vis',
+'pageswithprop-prophidden-long' => 'lang tekst egenskabsværdien skjult ($1 KB)',
 'pageswithprop-prophidden-binary' => 'binære egenskabsværdien skjult ($1 KB)',
 
 'doubleredirects' => 'Dobbelte omdirigeringer',
@@ -3638,15 +3646,15 @@ $5
 
 Denne bekræftelseskode udløber $4',
 'confirmemail_body_set' => 'En person, sandsynligvis dig, har fra IP-adressen $1,
-angivet denne e-mail-adresse til kontoen "$2" på {{SITENAME}}.
+angivet denne e-mailadresse til kontoen "$2" på {{SITENAME}}.
 
-For at bekræfte, at denne konto virkelig tilhører dig og genaktivere
-e-mail-funktioner på {{SITENAME}}, åbn dette link i din browser:
+For at bekræfte, at denne konto virkelig tilhører dig og aktivere
+e-mailfunktionerne på {{SITENAME}}, åbn dette link i din browser:
 
 $3
 
-Hvis kontoen ikke *ikke* tilhører dig, så følg dette link
-for at annullere e-mail-adressens bekræftelse:
+Hvis kontoen *ikke* tilhører dig, så følg dette link
+for at annullere e-mailadressens bekræftelse:
 
 $5
 
@@ -3768,6 +3776,7 @@ Du kan også [[Special:EditWatchlist|bruge standard editoren]].',
 'version-license' => 'Licens',
 'version-poweredby-credits' => "Denne wiki er drevet af '''[//www.mediawiki.org/ MediaWiki ]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'andre',
+'version-poweredby-translators' => 'translatewiki.net oversættere',
 'version-credits-summary' => 'Vi vil gerne anerkende følgende personer for deres bidrag til [[Special:Version|MediaWiki]].',
 'version-license-info' => 'MediaWiki er fri software; du kan redistribuere det og/eller ændre det under betingelserne i GNU General Public License som offentliggjort af Free Software Foundation; enten version 2 af licensen eller (efter eget valg) enhver senere version. 
 
index f16fb99..a2a685e 100644 (file)
@@ -841,7 +841,6 @@ Der Administrator, der den Schreibzugriff sperrte, gab folgenden Grund an: „$3
 # Login and logout pages
 'logouttext' => "'''Du bist nun abgemeldet.'''
 
-Du kannst {{SITENAME}} jetzt anonym weiternutzen oder dich erneut unter dem selben oder einem anderen Benutzernamen <span class='plainlinks'>[$1 anmelden]</span>.
 Beachte, dass einige Seiten noch anzeigen können, dass du angemeldet bist, solange du nicht deinen Browsercache geleert hast.",
 'welcomeuser' => 'Willkommen, $1!',
 'welcomecreation-msg' => 'Dein Benutzerkonto wurde erstellt.
@@ -889,7 +888,7 @@ Vergiss nicht, deine [[Special:Preferences|{{SITENAME}}-Einstellungen]] zu ände
 'createacct-emailoptional' => 'E-Mail-Adresse (optional)',
 'createacct-email-ph' => 'Gib deine E-Mail-Adresse ein',
 'createacct-another-email-ph' => 'E-Mail-Adresse',
-'createaccountmail' => 'Ein temporäres Zufallspasswort verwenden und an die unten angegebene E-Mail-Adresse versenden',
+'createaccountmail' => 'Ein temporäres Zufallspasswort verwenden und an die angegebene E-Mail-Adresse versenden',
 'createacct-realname' => 'Bürgerlicher Name (optional)',
 'createaccountreason' => 'Grund:',
 'createacct-reason' => 'Begründung',
@@ -967,6 +966,8 @@ Bitte warte, bevor du es erneut probierst.',
 'login-abort-generic' => 'Deine Anmeldung war nicht erfolgreich – Abgebrochen',
 'loginlanguagelabel' => 'Sprache: $1',
 'suspicious-userlogout' => 'Deine Abmeldeanfrage wurde verweigert, da sie vermutlich von einem defekten Browser oder einem Cache-Proxy gesendet wurde.',
+'createacct-another-realname-tip' => 'Der bürgerliche Name ist optional.
+Wenn du ihn angibst, wird er für die Zuordnung der Beiträge verwendet.',
 
 # Email sending
 'php-mail-error-unknown' => 'Unbekannter Fehler mit der Funktion mail() von PHP',
@@ -1679,7 +1680,7 @@ Dies kann nicht mehr rückgängig gemacht werden.',
 'userrights-notallowed' => 'Du verfügst nicht über die erforderlichen Berechtigungen, um Benutzerrechte vergeben oder entziehen zu können.',
 'userrights-changeable-col' => 'Gruppenzugehörigkeit, die du ändern kannst',
 'userrights-unchangeable-col' => 'Gruppenzugehörigkeit, die du nicht ändern kannst',
-'userrights-conflict' => 'Benutzerrechtekonflikt! Bitte führe deine Änderungen erneut durch.',
+'userrights-conflict' => 'Benutzerrechteänderungskonflikt! Bitte überprüfe und bestätige deine Änderungen.',
 'userrights-removed-self' => 'Du hast deine eigenen Rechte erfolgreich entfernt. Du kannst nicht länger auf diese Seite zugreifen.',
 
 # Groups
@@ -1934,7 +1935,7 @@ Um ein '''Bild''' in einer Seite zu verwenden, nutze einen Link in der folgenden
 'large-file' => 'Die Dateigröße sollte nach Möglichkeit $1 nicht überschreiten. Diese Datei ist $2 groß.',
 'largefileserver' => 'Die Datei ist größer als die vom Server eingestellte Maximalgröße.',
 'emptyfile' => 'Die hochgeladene Datei ist leer. Der Grund kann ein Tippfehler im Dateinamen sein. Bitte kontrolliere, ob du die Datei wirklich hochladen willst.',
-'windows-nonascii-filename' => 'Dieses Wiki unterstützt keine Dateinamen die Sonderzeichen enthalten.',
+'windows-nonascii-filename' => 'Dieses Wiki unterstützt keine Dateinamen, die Sonderzeichen enthalten.',
 'fileexists' => 'Eine Datei dieses Namens ist bereits vorhanden. Bitte prüfe <strong>[[:$1]]</strong>, sofern du dir nicht sicher bist, ob du sie ändern möchtest.
 [[$1|thumb]]',
 'filepageexists' => 'Eine Beschreibungsseite wurde bereits als <strong>[[:$1]]</strong> erstellt, es ist aber keine Datei mit diesem Namen vorhanden.
@@ -3292,13 +3293,13 @@ Das liegt wahrscheinlich an einem Link auf eine externe Seite.',
 'pageinfo-length' => 'Seitenlänge (in Bytes)',
 'pageinfo-article-id' => 'Seitenkennnummer',
 'pageinfo-language' => 'Seiteninhaltssprache',
-'pageinfo-robot-policy' => 'Suchmaschinenstatus',
-'pageinfo-robot-index' => 'Indexierbar',
-'pageinfo-robot-noindex' => 'Nicht indexierbar',
+'pageinfo-robot-policy' => 'Indexierung durch Robots',
+'pageinfo-robot-index' => 'Erlaubt',
+'pageinfo-robot-noindex' => 'Nicht erlaubt',
 'pageinfo-views' => 'Anzahl der Seitenaufrufe',
 'pageinfo-watchers' => 'Anzahl der Beobachter der Seite',
 'pageinfo-few-watchers' => 'Weniger als {{PLURAL:$1|ein|$1}} Beobachter',
-'pageinfo-redirects-name' => 'Weiterleitungen zu dieser Seite',
+'pageinfo-redirects-name' => 'Anzahl der Weiterleitungen zu dieser Seite',
 'pageinfo-redirects-value' => '$1',
 'pageinfo-subpages-name' => 'Unterseiten dieser Seite',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|Weiterleitung|Weiterleitungen}}; $3 {{PLURAL:$3|Unterseite|Unterseiten}})',
@@ -3904,7 +3905,7 @@ Dieser Bestätigungscode ist gültig bis $4.',
 hat die E-Mail-Adresse des Benutzerkontos „$2“ auf {{SITENAME}} zu dieser E-Mail-Adresse abgeändert.
 
 Um zu bestätigen, dass dieses Benutzerkonto wirklich zu dir gehört
-und um die E-Mail-Funktionen auf {{SITENAME}} wieder zu aktivieren, öffne bitte den folgenden Link in deinem Browser:
+und um die E-Mail-Funktionen auf {{SITENAME}} zu aktivieren, öffne bitte den folgenden Link in deinem Browser:
 
 $3
 
@@ -4288,4 +4289,22 @@ Anderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kom
 # Image rotation
 'rotate-comment' => 'Bild um $1 {{PLURAL:$1|Grad}} im Uhrzeigersinn gedreht',
 
+# Limit report
+'limitreport-title' => 'Parser-Profiling-Daten:',
+'limitreport-cputime' => 'CPU-Zeit-Nutzung',
+'limitreport-cputime-value' => '{{PLURAL:$1|Eine Sekunde|$1 Sekunden}}',
+'limitreport-walltime' => 'Echtzeitnutzung',
+'limitreport-walltime-value' => '{{PLURAL:$1|Eine Sekunde|$1 Sekunden}}',
+'limitreport-ppvisitednodes' => 'Besuchte Knotenanzahl des Präprozessors',
+'limitreport-ppvisitednodes-value' => '$1/$2',
+'limitreport-ppgeneratednodes' => 'Erzeugte Knotenanzahl des Präprozessors',
+'limitreport-ppgeneratednodes-value' => '$1/$2',
+'limitreport-postexpandincludesize' => 'Einbindungsgröße nach dem Expandieren',
+'limitreport-postexpandincludesize-value' => '$1/$2 Bytes',
+'limitreport-templateargumentsize' => 'Vorlagenargumentgröße',
+'limitreport-templateargumentsize-value' => '$1/$2 Bytes',
+'limitreport-expansiondepth' => 'Höchste Expansionstiefe',
+'limitreport-expansiondepth-value' => '$1/$2',
+'limitreport-expensivefunctioncount' => 'Anzahl aufwändiger Parserfunktionen',
+
 );
index 23cdda5..a4efdae 100644 (file)
@@ -37,6 +37,7 @@
  * @author Reedy
  * @author Remember the dot
  * @author Sinopeus
+ * @author Tifa93
  * @author Urhixidur
  * @author ZaDiak
  * @author Απεργός
@@ -1576,7 +1577,7 @@ $1",
 'userrights-notallowed' => 'Ο λογαριασμός σας δεν έχει άδεια για να προσθέσει ή να αφαιρέσει  δικαιώματα χρηστών.',
 'userrights-changeable-col' => 'Ομάδες που μπορείτε να αλλάξετε',
 'userrights-unchangeable-col' => 'Ομάδες που δεν μπορείτε να αλλάξετε',
-'userrights-conflict' => 'ΣÏ\8dγκÏ\81οÏ\85Ï\83η Î´Î¹ÎºÎ±Î¹Ï\89μάÏ\84Ï\89ν Ï\87Ï\81ήÏ\83Ï\84η! Î Î±Ï\81ακαλÏ\8e ÎºÎ¬Î½Ï\84ε Ï\80άλι ÎµÏ\86αÏ\81μογή Ï\84Ï\89ν Î±Î»Î»Î±Î³Ï\8eν σας.',
+'userrights-conflict' => 'ΣÏ\8dγκÏ\81οÏ\85Ï\83η Î±Î»Î»Î±Î³Ï\8eν Ï\83Ï\84α Î´Î¹ÎºÎ±Î¹Ï\8eμαÏ\84α Ï\87Ï\81ήÏ\83Ï\84η! Î Î±Ï\81ακαλÏ\8e ÎµÏ\80ανεξεÏ\84άÏ\83Ï\84ε ÎºÎ±Î¹ ÎµÏ\80ικÏ\85Ï\81Ï\8eÏ\83Ï\84ε Ï\84ιÏ\82 Î±Î»Î»Î±Î³Î­Ï\82 σας.',
 
 # Groups
 'group' => 'Ομάδα:',
@@ -4121,4 +4122,7 @@ $5
 # Image rotation
 'rotate-comment' => 'Η εικόνα περιστράφηκε $1 {{PLURAL:$1| μοίρα|μοίρες}} δεξιόστροφα',
 
+# Limit report
+'limitreport-cputime' => 'Χρόνος χρήσης CPU',
+
 );
index 75e3532..67fe889 100644 (file)
@@ -1097,7 +1097,6 @@ The administrator who locked it offered this explanation: "$3".',
 # Login and logout pages
 'logouttext'                      => "'''You are now logged out.'''
 
-You can continue to use {{SITENAME}} anonymously, or you can <span class='plainlinks'>[$1 log in again]</span> as the same or as a different user.
 Note that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache.",
 'welcomeuser'                     => 'Welcome, $1!',
 'welcomecreation-msg'             => 'Your account has been created.
@@ -1147,7 +1146,7 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'createacct-emailoptional'        => 'Email address (optional)',
 'createacct-email-ph'             => 'Enter your email address',
 'createacct-another-email-ph'     => 'Enter email address',
-'createaccountmail'               => 'Use a temporary random password and send it to the email address specified below',
+'createaccountmail'               => 'Use a temporary random password and send it to the specified email address',
 'createacct-realname'             => 'Real name (optional)',
 'createaccountreason'             => 'Reason:',
 'createacct-reason'               => 'Reason',
@@ -1258,6 +1257,8 @@ Please wait before trying again.',
 * {{#language:it}}|it
 * {{#language:nl}}|nl', # do not translate or duplicate this message to other languages
 'suspicious-userlogout'           => 'Your request to log out was denied because it looks like it was sent by a broken browser or caching proxy.',
+'createacct-another-realname-tip' => 'Real name is optional.
+If you choose to provide it, this will be used for giving the user attribution for their work.',
 
 # Email sending
 'pear-mail-error'        => '$1', # do not translate or duplicate this message to other languages
@@ -2044,11 +2045,11 @@ Your email address is not revealed when other users contact you.',
 'userrights-no-interwiki'        => 'You do not have permission to edit user rights on other wikis.',
 'userrights-nodatabase'          => 'Database $1 does not exist or is not local.',
 'userrights-nologin'             => 'You must [[Special:UserLogin|log in]] with an administrator account to assign user rights.',
-'userrights-notallowed'          => 'Your account does not have permission to add or remove user rights.',
+'userrights-notallowed'          => 'You do not have permission to add or remove user rights.',
 'userrights-changeable-col'      => 'Groups you can change',
 'userrights-unchangeable-col'    => 'Groups you cannot change',
 'userrights-irreversible-marker' => '$1*', # only translate this message to other languages if you have to change it
-'userrights-conflict'            => 'User rights conflict! Please apply your changes again.',
+'userrights-conflict'            => 'Conflict of user rights changes! Please review and confirm your changes.',
 'userrights-removed-self'        => 'You successfully removed your own rights. As such, you are no longer able to access this page.',
 
 # Groups
@@ -3869,15 +3870,15 @@ This is probably caused by a link to a blacklisted external site.',
 'pageinfo-length'                 => 'Page length (in bytes)',
 'pageinfo-article-id'             => 'Page ID',
 'pageinfo-language'               => 'Page content language',
-'pageinfo-robot-policy'           => 'Search engine status',
-'pageinfo-robot-index'            => 'Indexable',
-'pageinfo-robot-noindex'          => 'Not indexable',
+'pageinfo-robot-policy'           => 'Indexing by robots',
+'pageinfo-robot-index'            => 'Allowed',
+'pageinfo-robot-noindex'          => 'Disallowed',
 'pageinfo-views'                  => 'Number of views',
 'pageinfo-watchers'               => 'Number of page watchers',
 'pageinfo-few-watchers'           => 'Fewer than $1 {{PLURAL:$1|watcher|watchers}}',
-'pageinfo-redirects-name'         => 'Redirects to this page',
+'pageinfo-redirects-name'         => 'Number of redirects to this page',
 'pageinfo-redirects-value'        => '$1', # only translate this message to other languages if you have to change it
-'pageinfo-subpages-name'          => 'Subpages of this page',
+'pageinfo-subpages-name'          => 'Number of subpages of this page',
 'pageinfo-subpages-value'         => '$1 ($2 {{PLURAL:$2|redirect|redirects}}; $3 {{PLURAL:$3|non-redirect|non-redirects}})',
 'pageinfo-firstuser'              => 'Page creator',
 'pageinfo-firsttime'              => 'Date of page creation',
@@ -5119,4 +5120,23 @@ Otherwise, you can use the easy form below. Your comment will be added to the pa
 # Image rotation
 'rotate-comment' => 'Image rotated by $1 {{PLURAL:$1|degree|degrees}} clockwise',
 
+# Limit report
+'limitreport-title' => 'Parser profiling data:',
+'limitreport-cputime' => 'CPU time usage',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|second|seconds}}',
+'limitreport-walltime' => 'Real time usage',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|second|seconds}}',
+'limitreport-ppvisitednodes' => 'Preprocessor visited node count',
+'limitreport-ppvisitednodes-value' => '$1/$2',
+'limitreport-ppgeneratednodes' => 'Preprocessor generated node count',
+'limitreport-ppgeneratednodes-value' => '$1/$2',
+'limitreport-postexpandincludesize' => 'Post-expand include size',
+'limitreport-postexpandincludesize-value' => '$1/$2 bytes',
+'limitreport-templateargumentsize' => 'Template argument size',
+'limitreport-templateargumentsize-value' => '$1/$2 bytes',
+'limitreport-expansiondepth' => 'Highest expansion depth',
+'limitreport-expansiondepth-value' => '$1/$2',
+'limitreport-expensivefunctioncount' => 'Expensive parser function count',
+'limitreport-expensivefunctioncount-value' => '$1/$2',
+
 );
index 705725b..807c05e 100644 (file)
@@ -3069,7 +3069,7 @@ Datoj de versioj kaj nomoj de redaktantoj estos preservitaj.
 'tooltip-n-recentchanges' => 'Listo de la lastaj ŝanĝoj en la vikio.',
 'tooltip-n-randompage' => 'Iri al hazarda paĝo',
 'tooltip-n-help' => 'Serĉopaĝo.',
-'tooltip-t-whatlinkshere' => 'Listo de ĉiuj vikiaj paĝoj kij ligas ĉi tien',
+'tooltip-t-whatlinkshere' => 'Listo de ĉiuj vikiaj paĝoj kiuj ligas ĉi tien',
 'tooltip-t-recentchangeslinked' => 'Lastaj ŝanĝoj en paĝoj kiuj ligas al tiu ĉi paĝo',
 'tooltip-feed-rss' => 'RSS-fonto por tiu ĉi paĝo',
 'tooltip-feed-atom' => 'Atom-fonto por ĉi tiu paĝo',
index 08559ea..13cf829 100644 (file)
@@ -745,6 +745,7 @@ Por favor, avisa a un [[Special:ListUsers/sysop|administrador]], tomando nota de
 Puede que ya haya sido borrado por alguien más.',
 'cannotdelete-title' => 'No se puede borrar la página «$1»',
 'delete-hook-aborted' => 'La modificación que intentaste hacer fue cancelada por un gancho de extensión. No hay explicación disponible.',
+'no-null-revision' => 'No se pudo crear la nueva revisión nula para la página "$1"',
 'badtitle' => 'Título incorrecto',
 'badtitletext' => 'El título de la página solicitada está vacío, no es válido, o es un enlace interidioma o interwiki incorrecto.
 Puede que contenga uno o más caracteres que no se pueden usar en los títulos.',
@@ -792,10 +793,8 @@ El administrador que lo ha bloqueado ofrece esta explicación: "$3".',
 'virus-unknownscanner' => 'antivirus desconocido:',
 
 # Login and logout pages
-'logouttext' => "'''Ha terminado su sesión.'''
-
-Puedes continuar usando {{SITENAME}} de forma anónima, o puedes <span class='plainlinks'>[$1 iniciar sesión otra vez]</span> con el mismo u otro usuario.
-Ten en cuenta que las páginas que tengas abiertas en otras ventanas o pestañas pueden verse como si siguieras identificado hasta que las refresques.",
+'logouttext' => '"\'Usted está ahora desconectado."\'
+Tenga en cuenta que algunas páginas pueden continuar mostrándose como si todavía estuviera conectado, hasta que borres la caché de tu navegador.',
 'welcomeuser' => '¡Bienvenido, $1!',
 'welcomecreation-msg' => 'Tu cuenta ha sido creada.
 No olvides cambiar tus [[Special:Preferences|preferencias de {{SITENAME}} ]].',
@@ -842,7 +841,7 @@ No olvides cambiar tus [[Special:Preferences|preferencias de {{SITENAME}} ]].',
 'createacct-emailoptional' => 'Dirección de correo electrónico (opcional)',
 'createacct-email-ph' => 'Escribe tu dirección de correo electrónico',
 'createacct-another-email-ph' => 'Introduzca la dirección de correo electrónico',
-'createaccountmail' => 'Usar una contraseña aleatoria temporal y enviarla a la siguiente dirección de correo electrónico',
+'createaccountmail' => 'Utilizar una contraseña aleatoria temporal y enviarla a la dirección de correo electrónico especificada',
 'createacct-realname' => 'Nombre real (opcional)',
 'createaccountreason' => 'Motivo:',
 'createacct-reason' => 'Motivo',
@@ -924,6 +923,8 @@ Puedes ignorar este mensaje si esta cuenta fue creada por error.',
 'login-abort-generic' => 'Tu inicio de sesión no fue exitoso - Cancelado',
 'loginlanguagelabel' => 'Idioma: $1',
 'suspicious-userlogout' => 'Tu solicitud de desconexión ha sido denegada, pues parece haber sido enviada desde un navegador defectuoso o un proxy caché.',
+'createacct-another-realname-tip' => 'El nombre Real es opcional.
+Si elige proporcionarlo, se usará para dar al usuario la atribución de su trabajo.',
 
 # Email sending
 'php-mail-error-unknown' => 'Error desconocido en la función mail() de PHP.',
@@ -1001,7 +1002,17 @@ Contraseña temporal: $2',
 'changeemail-cancel' => 'Cancelar',
 
 # Special:ResetTokens
+'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 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 claves',
+'resettokens-done' => 'Restablecimiento de claves.',
+'resettokens-resetbutton' => 'Restablecer las claves',
 
 # Edit page toolbar
 'bold_sample' => 'Texto en negrita',
@@ -1537,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:',
@@ -1605,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
@@ -1629,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
@@ -1697,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}}»',
@@ -2183,6 +2198,10 @@ Entrada: contenttype/subtype, p. ej. <code>image/jpeg</code>.',
 'randompage-nopages' => 'No hay páginas en los siguientes {{PLURAL:$2|espacio de nombre|espacios de nombre}}: $1.',
 
 # 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 [[:Category:$1|$1]].',
+'randomincategory-selectcategory' => 'Obtener una página aleatoria de categoría: $1 $2.',
 'randomincategory-selectcategory-submit' => 'Ir',
 
 # Random redirect
@@ -2221,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.
@@ -2397,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',
@@ -3248,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}})',
@@ -3861,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
 
@@ -4066,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',
@@ -4230,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 9040147..8d713b2 100644 (file)
@@ -713,8 +713,7 @@ Administraator lukustas selle järgmisel põhjusel: "$3".',
 # Login and logout pages
 'logouttext' => "'''Oled nüüd välja loginud.'''
 
-Võid jätkata {{GRAMMAR:genitive|{{SITENAME}}}} kasutamist anonüümselt, aga ka sama või mõne teise kasutajana uuesti <span class='plainlinks'>[$1 sisse logida]</span>.
-Pane tähele, et seni kuni sa pole oma võrgulehitseja puhvrit tühjendanud, võidakse mõni lehekülg endiselt nii kuvada nagu oleksid ikka sisse logitud.",
+Pane tähele, et seni kuni sa pole oma võrgulehitseja puhvrit tühjendanud, võidakse mõni lehekülg endiselt kuvada nii nagu oleksid ikka sisse logitud.",
 'welcomeuser' => 'Tere tulemast, $1!',
 'welcomecreation-msg' => 'Sinu konto on loodud.
 Ära unusta seada oma {{GRAMMAR:genitive|{{SITENAME}}}} [[Special:Preferences|eelistusi]].',
@@ -761,7 +760,7 @@ Pane tähele, et seni kuni sa pole oma võrgulehitseja puhvrit tühjendanud, võ
 'createacct-emailoptional' => 'E-posti aadress (valikuline)',
 'createacct-email-ph' => 'Sisesta oma e-posti aadress',
 'createacct-another-email-ph' => 'Sisesta e-posti aadress',
-'createaccountmail' => 'Kasuta juhuslikku parooli ja saada see allpool määratud e-posti aadressile',
+'createaccountmail' => 'Kasuta juhuslikku parooli ja saada see määratud e-posti aadressile',
 'createacct-realname' => 'Pärisnimi (valikuline)',
 'createaccountreason' => 'Põhjus:',
 'createacct-reason' => 'Põhjus',
@@ -835,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().',
@@ -1543,10 +1544,10 @@ See ei tohi olla pikem kui {{PLURAL:$1|üks märk|$1 märki}}.',
 'userrights-no-interwiki' => 'Sul ei ole luba muuta kasutajaõigusi teistes vikides.',
 'userrights-nodatabase' => 'Andmebaasi $1 ei ole olemas või pole see kohalik.',
 'userrights-nologin' => 'Et kasutajaõigusi jagada, pead administraatori kontoga [[Special:UserLogin|sisse logima]].',
-'userrights-notallowed' => 'Sinu kontole pole antud luba lisada või eemaldada kasutajaõigusi.',
+'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
@@ -3136,13 +3137,13 @@ See on ilmselt põhjustatud linkimisest mustas nimekirjas olevasse välisvõrguk
 'pageinfo-length' => 'Lehekülje pikkus (baitides)',
 'pageinfo-article-id' => 'Lehekülje identifikaator',
 'pageinfo-language' => 'Lehekülje sisu keel',
-'pageinfo-robot-policy' => 'Otsimootori olek',
-'pageinfo-robot-index' => 'Indekseeritav',
-'pageinfo-robot-noindex' => 'Indekseerimatu',
+'pageinfo-robot-policy' => 'Robotindekseering',
+'pageinfo-robot-index' => 'Lubatud',
+'pageinfo-robot-noindex' => 'Keelatud',
 'pageinfo-views' => 'Vaatamiste arv',
 'pageinfo-watchers' => 'Lehekülje jälgijate arv',
 'pageinfo-few-watchers' => 'Alla {{PLURAL:$1|ühe jälgija|$1 jälgija}}',
-'pageinfo-redirects-name' => 'Ümbersuunamisi sellele leheküljele',
+'pageinfo-redirects-name' => 'Sellele leheküljele suunavate lehekülgede arv',
 'pageinfo-subpages-name' => 'Selle lehekülje alamlehekülgi',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|ümbersuunamine|ümbersuunamist}}; $3 {{PLURAL:$3|mitteümbersuunamine|mitteümbersuunamist}})',
 'pageinfo-firstuser' => 'Lehekülje alustaja',
@@ -3719,7 +3720,7 @@ $5
 Kinnituskood aegub kuupäeval $4.',
 'confirmemail_body_set' => 'Keegi, arvatavasti sina ise, IP-aadressilt $1 on {{GRAMMAR:genitive|{{SITENAME}}}} konto "$2" e-posti aadressiks määranud selle aadressi.
 
-Kinnitamaks, et see konto kuulub tõesti sulle ja {{GRAMMAR:genitive|{{SITENAME}}}} e-posti funktsioonide taasaktiveerimiseks ava oma võrgulehitsejas järgmine link:
+Kinnitamaks, et see konto kuulub tõesti sulle ja {{GRAMMAR:genitive|{{SITENAME}}}} e-posti funktsioonide aktiveerimiseks ava võrgulehitsejas järgmine link:
 
 $3
 
@@ -3841,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.
 
@@ -3997,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
@@ -4075,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 7f374bc..944aa65 100644 (file)
@@ -49,7 +49,6 @@ $messages = array(
 'tog-shownumberswatching' => "Muestral el númeru d'usuárius que la vehilan",
 'tog-oldsig' => 'Firma dessistenti:',
 'tog-fancysig' => 'Tratal la firma cumu testu wiki (sin atiju automáticu)',
-'tog-showjumplinks' => 'Premitil los atihus d\'acesibiliá "sartal a"',
 'tog-uselivepreview' => 'Gastal "live preview" (JavaScript) (en prebas)',
 'tog-forceeditsummary' => 'Avisalmi cuandu nu escreba una síntesis dun chambu',
 'tog-watchlisthideown' => 'Açonchal las mis eicionis ena lista e seguimientu',
index 5a25176..550e367 100644 (file)
@@ -731,7 +731,7 @@ Lukituksen asettanut ylläpitäjä on antanut seuraavan syyn toimenpiteelle: $3.
 # Login and logout pages
 'logouttext' => "'''Olet nyt kirjautunut ulos.'''
 
-Voit jatkaa {{GRAMMAR:genitive|{{SITENAME}}}} käyttöä nimettömänä, tai <span class='plainlinks'>[$1 kirjautua uudelleen sisään]</span>.
+Voit jatkaa {{GRAMMAR:genitive|{{SITENAME}}}} käyttöä nimettömänä, tai <span class='plainlinks'>[$1 kirjautua uudelleen sisään]</span> samalla tai eri käyttäjätunnuksella.
 Huomaa, että jotkut sivut saattavat näkyä edelleen kuin olisit kirjautunut sisään, kunnes tyhjennät selaimen välimuistin.",
 'welcomeuser' => 'Tervetuloa $1!',
 'welcomecreation-msg' => 'Käyttäjätunnuksesi on luotu.
@@ -779,7 +779,7 @@ Huomaa, että jotkut sivut saattavat näkyä edelleen kuin olisit kirjautunut si
 'createacct-emailoptional' => 'Sähköpostiosoite (vapaaehtoinen)',
 'createacct-email-ph' => 'Anna sähköpostiosoitteesi',
 'createacct-another-email-ph' => 'Lisää sähköpostiosoite',
-'createaccountmail' => 'Käytä satunnaista väliaikaissalasanaa ja lähetä se alla määritettyyn sähköpostiosoitteeseen',
+'createaccountmail' => 'Käytä satunnaista väliaikaissalasanaa ja lähetä se alla olevaan sähköpostiosoitteeseen',
 'createacct-realname' => 'Oikea nimi (valinnainen)',
 'createaccountreason' => 'Syy',
 'createacct-reason' => 'Syy',
@@ -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 e48d697..8904dad 100644 (file)
@@ -543,6 +543,7 @@ Gloym ikki at broyta tínar [[Special:Preferences|{{SITENAME}}-innstillingar]].'
 'yourname' => 'Títt brúkaranavn:',
 'userlogin-yourname' => 'Brúkaranavn',
 'userlogin-yourname-ph' => 'Skriva títt brúkaranavn',
+'createacct-another-username-ph' => 'Skriva brúkaranavnið',
 'yourpassword' => 'Títt loyniorð:',
 'userlogin-yourpassword' => 'Loyniorð',
 'userlogin-yourpassword-ph' => 'Skriva títt loyniorð',
@@ -577,9 +578,11 @@ Gloym ikki at broyta tínar [[Special:Preferences|{{SITENAME}}-innstillingar]].'
 'helplogin-url' => 'Help:Innritan',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hjálp til innritan]]',
 'createacct-join' => 'Skrivað tínar upplýsingar niðanfyri.',
+'createacct-another-join' => 'Skriva upplýsingarnar fyri tað nýggju kontuna niðanfyri.',
 'createacct-emailrequired' => 'Teldupost adressa',
 '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',
 'createacct-realname' => 'Veruligt navn (valfrítt)',
 'createaccountreason' => 'Orsøk:',
@@ -588,6 +591,7 @@ Gloym ikki at broyta tínar [[Special:Preferences|{{SITENAME}}-innstillingar]].'
 'createacct-captcha' => 'Trygdarkekk',
 'createacct-imgcaptcha-ph' => 'Skriva tekstin ið tú sært omanfyri',
 'createacct-submit' => 'Upprætta tína kontu',
+'createacct-another-submit' => 'Upprætta eina aðra kontu',
 'createacct-benefit-heading' => '{{SITENAME}} er gjørd av fólki sum tær.',
 'createacct-benefit-body1' => '{{PLURAL:$1|rætting|rættingar}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|síða|síður}}',
@@ -693,7 +697,7 @@ Møguliga hevur tú longu broytt títt loyniorð ella biðið um eitt nýtt fyri
 # Special:PasswordReset
 'passwordreset' => 'Nullstilla loyniorðið',
 'passwordreset-text-one' => 'Útfyll henda teigin fyri at nullstilla títt loyniorð.',
-'passwordreset-text-many' => '{{PLURAL:$1|Skriva eitt av pettunum av dáta fyri at nullstilla títt loyniorð.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Útfyll ein av teigunum fyri at nullstilla títt loyniorð.}}',
 'passwordreset-legend' => 'Nulstilla loyniorðið',
 'passwordreset-disabled' => 'Tað ber ikki til at nullstilla loyniorðið á hesi wiki.',
 'passwordreset-emaildisabled' => 'Teldupost funksjónir eru óvirknar á hesi wiki.',
@@ -735,6 +739,9 @@ Fyribils loyniorð: $2',
 'changeemail-submit' => 'Broyt t-post',
 'changeemail-cancel' => 'Ógilda',
 
+# Special:ResetTokens
+'resettokens-token-label' => '$1 (dagsins virði: $2)',
+
 # Edit page toolbar
 'bold_sample' => 'Feitir stavir',
 'bold_tip' => 'Feitir stavir',
@@ -1004,8 +1011,8 @@ $3 sigur orsøkina vera ''$2''",
 (síðst) = munur til síðsta útgávu, m = minni rættingar',
 'history-fieldset-title' => 'Leita í søguni',
 'history-show-deleted' => 'Bert strikaðar',
-'histfirst' => 'Elsta',
-'histlast' => 'Nýggjasta',
+'histfirst' => 'elsta',
+'histlast' => 'nýggjasta',
 'historysize' => '({{PLURAL:$1|1 být|$1 být}})',
 'historyempty' => '(tóm)',
 
@@ -1300,7 +1307,9 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'prefs-signature' => 'Undirskrift',
 'prefs-dateformat' => 'Slag av dagfesting',
 'prefs-timeoffset' => 'Tíðarmunur',
-'prefs-advancedediting' => 'Sum heild',
+'prefs-advancedediting' => 'Møguleikar sum heild',
+'prefs-editor' => 'Persónur sum rættar',
+'prefs-preview' => 'Forskoðan',
 'prefs-advancedrc' => 'Víðkaðir møguleikar',
 'prefs-advancedrendering' => 'Víðkaðir møguleikar',
 'prefs-advancedsearchoptions' => 'Víðkaðir møguleikar',
@@ -1377,7 +1386,7 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'right-reupload' => 'Yvirskriva verandi fílur',
 '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' => 'Rætta hálvt-vardar síður (semi-protected)',
+'right-autoconfirmed' => 'Skal ikki ávirkast av IP-baseraðum avmarkingum',
 'right-delete' => 'Strika síður',
 'right-bigdelete' => 'Strika síður við nógvum versjónum',
 'right-deletedtext' => 'Sí strikaðan tekst og broytingar ímillum strikaðar endurskoðanir',
@@ -1388,8 +1397,8 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'right-block' => 'Nokta øðrum brúkarum at rætta (blokka)',
 'right-blockemail' => 'Nokta einum brúkara at senda teldupost',
 'right-hideuser' => 'Sperra eitt brúkaranavn og goyma tað burtur fyri almenninginum',
-'right-unblockself' => 'Taka burtur sperring av sær sjálvum',
-'right-protect' => 'Broyt verjustøður og rætta vardar síður',
+'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-editinterface' => 'Rætta brúkaramarkamótið',
 'right-editusercssjs' => 'Rætta CSS og JavaScript fílur hjá øðrum brúkarum',
@@ -1955,7 +1964,8 @@ Sí eisini [[Special:WantedCategories|ynsktir bólkar]].',
 'listgrouprights' => 'Brúkara bólka rættindi',
 'listgrouprights-summary' => 'Henda síða vísir ein lista av brúkarabólkum, sum eru útgreinaðir á hesi wiki og rættindini hjá teimum einstøku bólkunum.
 Møguliga er [[{{MediaWiki:Listgrouprights-helppage}}|meira kunning]] um einstøk rættindi.',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">Givin rættindi</span>
+'listgrouprights-key' => 'Frágreiðing:
+* <span class="listgrouprights-granted">Givin rættindi</span>
 * <span class="listgrouprights-revoked">Frátikin rættindi</span>',
 'listgrouprights-group' => 'Bólkur',
 'listgrouprights-rights' => 'Rættindi',
@@ -2093,7 +2103,7 @@ onkur annar hevur longu rættað ella rullað síðuna aftur.
 Seinasta broytingin á síðuni var av [[User:$3|$3]] ([[User talk:$3|kjak]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Rættingarfrágreiðingin var: \"''\$1''\".",
 'revertpage' => 'Tók burtur rættingar hjá [[Special:Contributions/$2|$2]] ([[User talk:$2|kjak]]) til seinastu versjón hjá [[User:$1|$1]]',
-'revertpage-nouser' => 'Tók burtur rættingar hjá (brúkaranavn tikið vekk) til seinastu versjón hjá [[User:$1|$1]]',
+'revertpage-nouser' => 'Tók burtur rættingar hjá einum fjaldum brúkara til seinastu versjón hjá [[User:$1|$1]]',
 'rollback-success' => 'Tók burtur rættingar hjá $1;
 broytti tað aftur til seinastu versjón hjá $2.',
 
index 96edb3f..39fd9af 100644 (file)
@@ -811,10 +811,9 @@ L'administrateur qui l'a verrouillé a fourni ce motif : « $3 ».",
 'virus-unknownscanner' => 'antivirus inconnu :',
 
 # Login and logout pages
-'logouttext' => "'''Vous êtes à présent déconnecté(e).'''
+'logouttext' => "'''Vous êtes à présent déconnecté.'''
 
-Vous pouvez continuer à utiliser {{SITENAME}} de façon anonyme, <span class='plainlinks'>[$1 vous reconnecter]</span> sous le même nom ou un autre.
-Notez que certaines pages peuvent être encore affichées comme si vous étiez toujours connecté(e), jusqu'à ce que vous effaciez le cache de votre navigateur.",
+Notez que certaines pages peuvent être encore affichées comme si vous étiez toujours connecté, jusqu’à ce que vous effaciez le cache de votre navigateur.",
 'welcomeuser' => 'Bienvenue, $1&nbsp;!',
 'welcomecreation-msg' => "Votre compte a été créé.
 N'oubliez pas de modifier [[Special:Preferences|vos préférences pour {{SITENAME}}]].",
@@ -861,7 +860,7 @@ N'oubliez pas de modifier [[Special:Preferences|vos préférences pour {{SITENAM
 'createacct-emailoptional' => 'Adresse de courriel (facultative)',
 'createacct-email-ph' => 'Entrez votre adresse de courriel',
 'createacct-another-email-ph' => 'Saisir l’adresse de courriel',
-'createaccountmail' => "Utiliser un mot de passe aléatoire temporaire et l'envoyer à l'adresse de courriel spécifiée ci-dessous",
+'createaccountmail' => "Utiliser un mot de passe aléatoire temporaire et l'envoyer à l'adresse de courriel spécifiée",
 'createacct-realname' => 'Nom réel (facultatif)',
 'createaccountreason' => 'Motif :',
 'createacct-reason' => 'Motif',
@@ -940,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.',
@@ -1641,10 +1642,10 @@ Elle ne doit pas dépasser $1 caractère{{PLURAL:$1||s}}.',
 'userrights-no-interwiki' => "Vous n'avez pas la permission de modifier des droits d'utilisateurs sur d'autres wikis.",
 'userrights-nodatabase' => "La base de donnée « $1 » n'existe pas ou n'est pas locale.",
 'userrights-nologin' => "Vous devez vous [[Special:UserLogin|connecter]] avec un compte d'administrateur pour modifier des droits d'utilisateur.",
-'userrights-notallowed' => "Votre compte n'a pas la permission de modifier des droits d'utilisateur.",
+'userrights-notallowed' => 'Vous n’avez pas la permission d’ajouter ou supprimer des droits d’utilisateur.',
 'userrights-changeable-col' => 'Les groupes que vous pouvez modifier',
 'userrights-unchangeable-col' => 'Les groupes que vous ne pouvez pas modifier',
-'userrights-conflict' => 'Conflit de droits utilisateur ! Veuillez appliquer de nouveau vos modifications.',
+'userrights-conflict' => 'Conflit de modification de droits utilisateur ! Veuillez relire et confirmer vos modifications.',
 'userrights-removed-self' => 'Vous avez bien supprimé vos propres droits. Du coup, vous ne pouvez plus accéder à cette page.',
 
 # Groups
@@ -3283,13 +3284,13 @@ Permet de rétablir la version précédente et d'ajouter un motif dans la boîte
 'pageinfo-length' => 'Taille de la page (en octets)',
 'pageinfo-article-id' => 'Numéro de la page',
 'pageinfo-language' => 'Langue du contenu de la page',
-'pageinfo-robot-policy' => 'Statut de moteur de recherche',
-'pageinfo-robot-index' => 'Indexable',
-'pageinfo-robot-noindex' => 'Non indexable',
+'pageinfo-robot-policy' => 'Indexation par robots',
+'pageinfo-robot-index' => 'Autorisée',
+'pageinfo-robot-noindex' => 'Interdite',
 'pageinfo-views' => 'Nombre de vues',
 'pageinfo-watchers' => 'Nombre de contributeurs ayant la page dans leur liste de suivi',
 'pageinfo-few-watchers' => 'Moins de $1 {{PLURAL:$1|observateur|observateurs}}',
-'pageinfo-redirects-name' => 'Redirections vers cette page',
+'pageinfo-redirects-name' => 'Nombre de redirections vers cette page',
 'pageinfo-subpages-name' => 'Sous-pages de cette page',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redirection|redirections}}; $3 {{PLURAL:$3|non-redirection|non-redirections}})',
 'pageinfo-firstuser' => 'Créateur de la page',
@@ -3905,7 +3906,7 @@ confirmation de votre adresse courriel :
 $5
 
 Ce code de confirmation expirera le $4.",
-'confirmemail_body_set' => "Quelqu'un, probablement vous, de l'adresse IP $1, a modifié l'adresse de courriel du compte « $2 » en celle-ci sur {{SITENAME}}.
+'confirmemail_body_set' => 'Quelqu’un, probablement vous, depuis l’adresse IP $1, a modifié l’adresse de courriel du compte « $2 » en celle-ci sur {{SITENAME}}.
 
 Pour confirmer que ce compte vous appartient et réactiver les fonctions de courriel sur {{SITENAME}}, ouvrez ce lien dans votre navigateur Web :
 
@@ -3913,9 +3914,9 @@ $3
 
 Ce code de confirmation expirera le $4.
 
-Si le compte ne vous appartient PAS, suivez plutôt ce lien pour annuler la confirmation de l'adresse de courriel :
+Si le compte ne vous appartient *pas*, suivez plutôt ce lien pour annuler la confirmation de l’adresse de courriel :
 
-$5",
+$5',
 'confirmemail_invalidated' => "Confirmation de l'adresse courriel annulée",
 'invalidateemail' => "Annuler la confirmation de l'adresse de courriel",
 
@@ -4340,4 +4341,19 @@ Sinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentai
 # Image rotation
 'rotate-comment' => "Image pivotée de $1 {{PLURAL:$1|degré|degrés}} dans le sens des aiguilles d'une montre",
 
+# Limit report
+'limitreport-title' => 'Données d’optimisation de l’analyseur :',
+'limitreport-cputime' => 'Temps CPU d’utilisation',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|seconde|secondes}}',
+'limitreport-walltime' => 'Temps réel d’utilisation',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|seconde|secondes}}',
+'limitreport-ppvisitednodes' => 'Nombre de nœuds de préprocesseur visités',
+'limitreport-ppgeneratednodes' => 'Nombre de nœuds de préprocesseur générés',
+'limitreport-postexpandincludesize' => 'Taille d’inclusion après expansion',
+'limitreport-postexpandincludesize-value' => '$1/$2 octets',
+'limitreport-templateargumentsize' => 'Taille de l’argument du modèle',
+'limitreport-templateargumentsize-value' => '$1/$2 octets',
+'limitreport-expansiondepth' => 'Plus grande profondeur d’expansion',
+'limitreport-expensivefunctioncount' => 'Nombre de fonctions d’analyse coûteuses',
+
 );
index 2aa3dfb..3aef169 100644 (file)
@@ -1958,7 +1958,7 @@ Det woort efter logbukslach, brüker of sidjennööm uunwiset. Grat- an letjskri
 # Special:AllPages
 'allpages' => 'Aal a sidjen',
 'alphaindexline' => '$1 bit $2',
-'nextpage' => 'Näist sid ($1)',
+'nextpage' => 'Naist sidj ($1)',
 'prevpage' => 'Leetst sidj ($1)',
 'allpagesfrom' => 'Sidjen wise sant:',
 'allpagesto' => 'Sidjen wise bit:',
@@ -1966,7 +1966,7 @@ Det woort efter logbukslach, brüker of sidjennööm uunwiset. Grat- an letjskri
 'allinnamespace' => 'Aal a sidjen (nöömrüm: $1)',
 'allnotinnamespace' => 'Aal a sidjen (saner nöömrüm $1)',
 'allpagesprev' => 'Leest',
-'allpagesnext' => 'Näist',
+'allpagesnext' => 'Naist',
 'allpagessubmit' => 'Widjer',
 'allpagesprefix' => 'Sidjen uunwise mä prefix:',
 'allpagesbadtitle' => 'Didiar sidjennööm gongt ei. Hi hed ferlicht en spriak-prefix of diar san ei tuläät tiakens uun.',
@@ -2898,7 +2898,7 @@ $1",
 
 # Browsing diffs
 'previousdiff' => '← Leetst feranrang',
-'nextdiff' => 'Tu di näist färsjoonsferschääl →',
+'nextdiff' => 'Naist werjuunsferskeel →',
 
 # Media information
 'mediawarning' => "'''Paase üüb:''' Son datei koon fülk programcode haa. Bi't deelloosin an eeben maagin koon dan reegner komer fu.",
index 941e141..865351f 100644 (file)
@@ -172,7 +172,6 @@ $messages = array(
 'tog-shownumberswatching' => 'It tal brûkers sjen litte dat dizze side folget',
 'tog-oldsig' => 'Hûdige sinjatuerprintallyk:',
 'tog-fancysig' => 'Sinjatuer as wikitekst behannelje (sûnder automatyske keppeling)',
-'tog-showjumplinks' => '"gean nei"-tapaslikens-links ynskeakelje',
 'tog-uselivepreview' => '"live proefbyld" brûke (JavaScript nedich - eksperimenteel)',
 'tog-forceeditsummary' => 'Warskôgje at ik de gearfetting leech lit.',
 'tog-watchlisthideown' => 'Eigen bewurkings op myn folchlist ferbergje',
index 3352027..6b8225c 100644 (file)
@@ -124,7 +124,6 @@ $messages = array(
 'tog-enotifrevealaddr' => 'Bildirmää maillerinde e-mail adresimi göster.',
 'tog-shownumberswatching' => 'İzlään kullanıcı sayısın göster',
 'tog-fancysig' => 'Çii imza (İmzanız görüner nesoy onu yukarda belirttiniz. Sayfanıza avtomatik baalantı yaratılmaycêk)',
-'tog-showjumplinks' => '"Git" baalantısın işlet',
 'tog-uselivepreview' => 'Tez cannı ön siiri kullan (JavaScript) (êksperimental)',
 'tog-forceeditsummary' => 'Bana haber ver ne zaman ani kısa annatmanı boş braacam',
 'tog-watchlisthideown' => 'Bakmaa listamdan benim diişmäklerimi sakla',
index f5b7abd..f4bb82e 100644 (file)
@@ -63,7 +63,6 @@ $messages = array(
 'tog-shownumberswatching' => '显示有几多人监视',
 'tog-oldsig' => '现有𠮶签名:',
 'tog-fancysig' => '搦签名以维基字对待(冇自动连结)',
-'tog-showjumplinks' => '启用“跳到”访问链接',
 'tog-uselivepreview' => '使用即时预览(JavaScript)(实验中)',
 'tog-forceeditsummary' => '冇改动注解时要同偶话',
 'tog-watchlisthideown' => '监视列表弆到偶𠮶编辑',
index 3fde8c7..6574a52 100644 (file)
@@ -85,7 +85,6 @@ $messages = array(
 'tog-shownumberswatching' => '顯示有幾多人監視',
 'tog-oldsig' => '現有嗰簽名:',
 'tog-fancysig' => '搦簽名以維基字對待(冇自動連結)',
-'tog-showjumplinks' => '啟用“跳到”訪問連結',
 'tog-uselivepreview' => '使用即時預覽(JavaScript)(實驗中)',
 'tog-forceeditsummary' => '冇改動注解時要同我話',
 'tog-watchlisthideown' => '監視列表弆到我嗰編輯',
index a73300d..79f116f 100644 (file)
@@ -635,6 +635,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|પાનું|પાનાં}}',
@@ -782,6 +783,15 @@ $2
 'changeemail-submit' => 'ઈ મેલ બદલો',
 'changeemail-cancel' => 'રદ કરો',
 
+# Special:ResetTokens
+'resettokens' => 'નિશાનીઓ ફરી ગોઠવો',
+'resettokens-legend' => 'નિશાનીઓ ફરી ગોઠવો',
+'resettokens-tokens' => 'નિશાનીઓ:',
+'resettokens-token-label' => '$1 (હાલની કિંમત: $2)',
+'resettokens-watchlist-token' => 'ધ્યાનસૂચિ વેબ ફીડ નિશાની',
+'resettokens-done' => 'નિશાનીઓ ફરી ગોઠવવામાં આવી.',
+'resettokens-resetbutton' => 'પસંદ કરેલ નિશાનીઓ ફરી ગોઠવો',
+
 # Edit page toolbar
 'bold_sample' => 'ઘાટા અક્ષર',
 'bold_tip' => 'ઘાટું લખાણ',
@@ -1381,6 +1391,7 @@ HTML નાકું ચકાસો',
 'prefs-displayrc' => 'પ્રદર્શન વિકલ્પો',
 'prefs-displaysearchoptions' => 'પ્રદર્શન વિકલ્પો',
 'prefs-displaywatchlist' => 'પ્રદર્શન વિકલ્પો',
+'prefs-tokenwatchlist' => 'નિશાની',
 'prefs-diffs' => 'ફરક',
 
 # User preference: email validation using jQuery
@@ -1477,6 +1488,8 @@ HTML નાકું ચકાસો',
 'right-editusercssjs' => 'અન્ય સભ્યોની CSS અને JavaScript ફાઇલમાં ફેરફાર કરો',
 'right-editusercss' => 'અન્ય સભ્યોની CSS ફાઇલમાં ફેરફાર કરો',
 'right-edituserjs' => 'અન્ય સભ્યોની JavaScript ફાઇલમાં ફેરફાર કરો',
+'right-viewmywatchlist' => 'તમારી પોતાની ધ્યાનસૂચી જુઓ',
+'right-editmyoptions' => 'તમારી પોતાની પ્રાથમિકતાઓમાં ફેરફાર કરો',
 'right-rollback' => 'ચોક્કસ પાનામાં જે છેલ્લા સભ્યએ ફેરફારો કર્યાં હોય તેને ઝડપથી ઉલટાવો',
 'right-markbotedits' => 'ઉલટાવનારા અને બોટ ફેરફારો નોંધો',
 'right-noratelimit' => 'ઝડપની સીમાને કારણે અસર ન થવી જોઇએ.',
@@ -1538,6 +1551,8 @@ HTML નાકું ચકાસો',
 'action-userrights-interwiki' => 'અન્ય વિકિ પરના સભ્યોના હક્કો સંપાદિત કરો.',
 'action-siteadmin' => 'માહિતી સંચયને ઉઘાડો અને વાસો.',
 'action-sendemail' => 'ઈ-મેલ મોકલો',
+'action-editmywatchlist' => 'તમારી ધ્યાનસૂચીમાં ફેરફાર કરો',
+'action-viewmywatchlist' => 'તમારી ધ્યાનસૂચી જુઓ',
 'action-viewmyprivateinfo' => 'તમારી અંગત માહિતી જુઓ',
 'action-editmyprivateinfo' => 'તમારી અંગત માહિતીમાં ફેરફાર કરો',
 
@@ -1930,6 +1945,9 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'randompage' => 'કોઈ પણ એક લેખ',
 'randompage-nopages' => 'આ {{PLURAL:$2|નામસ્થળ|નામસ્થળો}}માં કોઇ પાના નથી: $1.',
 
+# Special:RandomInCategory
+'randomincategory-selectcategory-submit' => 'જાઓ',
+
 # Random redirect
 'randomredirect' => 'દિશાહીન  નિર્દેશન',
 'randomredirect-nopages' => 'નામ સ્થળ "$1" માં કોઇ દિશા નિર્દેશન નથી',
@@ -3078,10 +3096,16 @@ $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 મહિનો|$1 મહિનાઓ}}',
+'years' => '{{PLURAL:$1|$1 વર્ષ|$1 વર્ષો}}',
 'ago' => '$1 પહેલાં',
 'just-now' => 'હમણાં',
 
 # Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|કલાક|કલાકો}} ago',
+'minutes-ago' => '$1 {{PLURAL:$1|મિનિટ|મિનિટો}} ago',
+'seconds-ago' => '$1 {{PLURAL:$1|સેકંડ|સેકંડો}} ago',
 'monday-at' => '$1 પર સોમવાર',
 'tuesday-at' => '$1 પર મંગળવાર',
 'wednesday-at' => '$1 પર બુધવાર',
@@ -3694,6 +3718,7 @@ $5
 'version-license' => 'પરવાનો',
 'version-poweredby-credits' => "આ વિકિ  '''[//www.mediawiki.org/ MediaWiki]''' દ્વારા ચાલે છે, પ્રકાશનાધિકાર © 2001-$1 $2.",
 'version-poweredby-others' => 'અન્યો',
+'version-poweredby-translators' => 'ટ્રાન્સલેટવિકિ.નેટ ભાષાંતરકર્તાઓ',
 'version-license-info' => 'મિડિયાવિકિ એક મુક્ત સોફ્ટવેર છે. તમે તેનું પુનઃવિતરણ કરી શકો છો અને/અથવા તેને the Free Software Foundation દ્વારા પ્રકાશિત  GNU General Public License હેઠળ તેના સંસ્કરણ 2 ને કે તે પછીના સંસ્કરણ   મઠારી શકો છો . 
 
 મિડિયા વિકિ ને તે આશાથી વિતરીત કરાયું છે કે તે લોકોને ઉપયોગિ થશે કોઇ વોરેંટી વિના અથવા કોઇ કાર્ય સંબધી વેચાણકે તેની યોગ્યતા બદ્દલ ખાત્રી સિવાય. વધારે  માહિતે માટે GNU General Public Licens જુઓ.
@@ -3706,6 +3731,7 @@ $5
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
+'redirect-legend' => 'ફાઇલ અથવા પાનાં તરફ વાળો',
 'redirect-submit' => 'જાઓ',
 'redirect-value' => 'કિંમત:',
 'redirect-user' => 'સભ્ય નામ',
@@ -3760,6 +3786,7 @@ $5
 'tags' => 'વૈધ ફેરફાર પાના',
 'tag-filter' => '[[Special:Tags|ટૅગ]] ચાળણી',
 'tag-filter-submit' => 'ચાળણી',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|ટેગ|ટેગ્સ}}]]: $2)',
 'tags-title' => 'ટૅગ્સ',
 'tags-intro' => 'આ પાના પર સૉફ્ટવૅર દ્વારા, સંપાદનને ચિહ્નિત કરાયેલાં ટૅગ્સની યાદી અને તેનાં અર્થ છે.',
 'tags-tag' => 'ટૅગનું નામ',
@@ -3914,4 +3941,7 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|શતાબ્દી|શતાબ્દીઓ}}',
 'duration-millennia' => '$1 {{PLURAL:$1|સહસ્ત્રાબ્દી|સહસ્ત્રાબ્દીઓ}}',
 
+# Image rotation
+'rotate-comment' => 'ચિત્ર $1 {{PLURAL:$1|ડિગ્રી|ડિગ્રીઓ}} ઘડિયાળની દિશામાં ફેરવવામાં આવ્યું',
+
 );
index df1d66c..ab600be 100644 (file)
@@ -46,7 +46,6 @@ $messages = array(
 'tog-shownumberswatching' => '展示監視中嘅使用人數目',
 'tog-oldsig' => '現有簽名:',
 'tog-fancysig' => '將簽名看做維基文字(毋會自動產生鏈接)',
-'tog-showjumplinks' => '啟用“跳轉到”訪問鏈接',
 'tog-uselivepreview' => '使用即時預覽(愛有 JavaScript)(實驗中)',
 'tog-forceeditsummary' => '還吂輸入編寫摘要時提醒亻厓',
 'tog-watchlisthideown' => '監視列表肚隱藏亻厓嘅編寫',
index 99b4754..c3a9ae8 100644 (file)
@@ -786,7 +786,6 @@ $2',
 # Login and logout pages
 'logouttext' => "'''יצאתם זה עתה מהחשבון.'''
 
-באפשרותכם להמשיך ולעשות שימוש ב{{grammar:תחילית|{{SITENAME}}}} באופן אנונימי, או <span class='plainlinks'>[$1 לשוב ולהיכנס לאתר]</span> עם שם משתמש זהה או אחר.
 שימו לב כי ייתכן שדפים אחדים ימשיכו להיות מוצגים כאילו אתם עדיין מחוברים לחשבון עד שתנקו את המטמון של הדפדפן שלכם.",
 'welcomeuser' => 'ברוך בואך, $1!',
 'welcomecreation-msg' => 'חשבונך נוצר.
@@ -834,7 +833,7 @@ $2',
 'createacct-emailoptional' => 'כתובת דוא"ל (לא חובה)',
 'createacct-email-ph' => 'יש להקליד את כתובת הדוא"ל שלך',
 'createacct-another-email-ph' => 'יש להקליד כתובת דוא"ל',
-'createaccountmail' => 'ש×\99×\9e×\95ש ×\91ס×\99ס×\9e×\94 ×\96×\9e× ×\99ת ×\90קר×\90×\99ת ×\95ש×\9c×\99×\97ת×\94 ×\9c×\9bת×\95×\91ת ×\94×\93×\95×\90\9c ×\94×\9eצ×\95×\99נת ×\9c×\94×\9c×\9f',
+'createaccountmail' => 'ש×\99×\9e×\95ש ×\91ס×\99ס×\9e×\94 ×\96×\9e× ×\99ת ×\90קר×\90×\99ת ×\95ש×\9c×\99×\97ת×\94 ×\9c×\9bת×\95×\91ת ×\94×\93×\95×\90\9c ×©×¦×\95×\99× ×\94',
 'createacct-realname' => 'שם אמיתי (לא חובה)',
 'createaccountreason' => 'סיבה:',
 'createacct-reason' => 'סיבה',
@@ -920,6 +919,8 @@ $2',
 'login-abort-generic' => 'הכניסה לחשבון לא הצליחה - היא הופסקה',
 'loginlanguagelabel' => 'שפה: $1',
 'suspicious-userlogout' => 'בקשתכם לצאת מהחשבון נדחתה כיוון שנראה שהיא נשלחה על ידי דפדפן שבור או שרת פרוקסי עם זיכרון מטמון.',
+'createacct-another-realname-tip' => 'השם האמיתי הוא אופציונאלי.
+אם תבחרו לספקו, הוא ישמש לייחוס עבודת המשתמש אליו.',
 
 # Email sending
 'php-mail-error-unknown' => 'שגיאה לא ידועה בפונקציה mail()‎ של PHP',
@@ -1640,10 +1641,10 @@ $1",
 'userrights-no-interwiki' => 'אין לכם הרשאה לערוך הרשאות משתמש באתרים אחרים.',
 'userrights-nodatabase' => 'בסיס הנתונים $1 אינו קיים או אינו מקומי.',
 'userrights-nologin' => 'עליכם [[Special:UserLogin|להיכנס לחשבון]] עם הרשאות מתאימות כדי לשנות הרשאות של משתמשים.',
-'userrights-notallowed' => '×\9c×\97ש×\91×\95×\9f ×\94×\9eשת×\9eש ×©×\9c×\9b×\9d ×\90×\99×\9f הרשאה להוסיף או להסיר הרשאות של משתמשים.',
+'userrights-notallowed' => '×\90×\99×\9f ×\9c×\9b×\9d הרשאה להוסיף או להסיר הרשאות של משתמשים.',
 'userrights-changeable-col' => 'קבוצות שבאפשרותכם לשנות',
 'userrights-unchangeable-col' => 'קבוצות שאין באפשרותכם לשנות',
-'userrights-conflict' => '×\94תנ×\92ש×\95ת ×\94רש×\90×\95ת ×\9eשת×\9eש! ×\90× ×\90 ×\91צע×\95 ×\90ת ×\94ש×\99× ×\95×\99×\99×\9d ×©×\9c×\9b×\9d ×©×\95×\91.',
+'userrights-conflict' => '×\94תנ×\92ש×\95ת ×\91×\99×\9f ×©×\99× ×\95×\99×\99 ×\94רש×\90×\95ת ×\9eשת×\9eש! ×\90× ×\90 ×\91×\93ק×\95 ×\90ת ×\94ש×\99× ×\95×\99×\99×\9d ×©×\9c×\9b×\9d ×\95×\90שר×\95 ×\90×\95ת×\9d.',
 'userrights-removed-self' => 'הסרת בהצלחה את הרשאות המשתמש שלך. לכן אין לך כעת אפשרות לגשת לדף זה.',
 
 # Groups
@@ -3281,14 +3282,14 @@ $2',
 'pageinfo-length' => 'אורך הדף (בבתים)',
 'pageinfo-article-id' => 'מזהה הדף',
 'pageinfo-language' => 'שפת התוכן של הדף',
-'pageinfo-robot-policy' => '×\9eצ×\91 ×\9e× ×\95×¢ חיפוש',
-'pageinfo-robot-index' => '×\99×\9b×\95×\9c ×\9c×\94×\99×\90סף ×\9c×\9eפת×\97×\95ת ×\97×\99פ×\95ש',
-'pageinfo-robot-noindex' => '×\9c×\90 ×\99×\9b×\95×\9c ×\9c×\94×\99×\90סף ×\9c×\9eפת×\97×\95ת ×\97×\99פ×\95ש',
+'pageinfo-robot-policy' => '×\90×\99ס×\95×£ ×¢×\9c ×\99×\93×\99 ×¨×\95×\91×\95×\98×\99×\9d ×©×\9c ×\9e× ×\95×¢×\99 חיפוש',
+'pageinfo-robot-index' => '×\9e×\95תר',
+'pageinfo-robot-noindex' => '×\90ס×\95ר',
 'pageinfo-views' => 'מספר הצפיות',
 'pageinfo-watchers' => 'מספר העוקבים אחר הדף',
 'pageinfo-few-watchers' => 'פחות מ{{PLURAL:$1|עוקב אחד|־$1 עוקבים}}',
-'pageinfo-redirects-name' => 'הפניות לדף זה',
-'pageinfo-subpages-name' => '×\93פ×\99Ö¾משנה של דף זה',
+'pageinfo-redirects-name' => '×\9eספר ×\94×\94פנ×\99×\95ת ×\9c×\93×£ ×\96×\94',
+'pageinfo-subpages-name' => '×\9eספר ×\93פ×\99Ö¾×\94משנה של דף זה',
 'pageinfo-subpages-value' => '$1 ({{PLURAL:$2|הפניה אחת|$2 הפניות}}; {{PLURAL:$3|דף רגיל אחד|$3 דפים רגילים}})',
 'pageinfo-firstuser' => 'יוצר הדף',
 'pageinfo-firsttime' => 'תאריך יצירת הדף',
@@ -3894,7 +3895,7 @@ $5
 'confirmemail_body_set' => 'מישהו, כנראה אתם (מכתובת ה־IP הזו: $1),
 הגדיר את כתובת הדוא"ל של החשבון "$2" לכתובת הזו ב{{grammar:תחילית|{{SITENAME}}}}.
 
\9b×\93×\99 ×\9c×\90×\9eת ×©×\97ש×\91×\95×\9f ×\96×\94 ×\91×\90×\9eת ×©×\99×\99×\9a ×\9c×\9b×\9d ×\95×\9c×\94פע×\99×\9c ×\9e×\97×\93ש ×\90ת ×©×\99ר×\95ת×\99 ×\94×\93×\95×\90\9c ×\91×\90תר, ×\90× ×\90 ×¤×ª×\97×\95 ×\90ת ×\94×\9bת×\95×\91ת ×\94×\91×\90×\94 ×\91×\93פ×\93פ×\9f ×©×\9c×\9b×\9d:
+כדי לאמת שחשבון זה באמת שייך לכם ולהפעיל את שירותי הדוא"ל באתר, אנא פתחו את הכתובת הבאה בדפדפן שלכם:
 
 $3
 
@@ -4081,7 +4082,7 @@ $5
 'version-mediahandlers' => 'מציגי מדיה',
 'version-hooks' => 'מבני Hook',
 'version-parser-extensiontags' => 'תגיות של הרחבות מפענח',
-'version-parser-function-hooks' => '×\9eשתנ×\99×\9d',
+'version-parser-function-hooks' => '×\9e×\91× ×\99×\9d ×©×\9c ×¤×\95נקצ×\99×\95ת ×\9eפענ×\97',
 'version-hook-name' => 'שם ה־Hook',
 'version-hook-subscribedby' => 'הפונקציה הרושמת',
 'version-version' => '(גרסה $1)',
@@ -4323,4 +4324,19 @@ $5
 # Image rotation
 'rotate-comment' => 'התמונה סובבה {{PLURAL:$1|במעלה אחת|ב֫־$1 מעלות}} בכיוון השעון',
 
+# Limit report
+'limitreport-title' => 'מידע על ביצועי המפענח:',
+'limitreport-cputime' => 'זמן CPU',
+'limitreport-cputime-value' => '{{PLURAL:$1|שנייה|$1 שניות}}',
+'limitreport-walltime' => 'זמן אמיתי',
+'limitreport-walltime-value' => '{{PLURAL:$1|שנייה|$1 שניות}}',
+'limitreport-ppvisitednodes' => 'מספר הצמתים בהם ביקר קדם-המפענח',
+'limitreport-ppgeneratednodes' => 'מספר הצמתים שיצר קדם-המפענח',
+'limitreport-postexpandincludesize' => 'גודל הטקסט המוכלל לאחר הפריסה',
+'limitreport-postexpandincludesize-value' => '$1/$2 בתים',
+'limitreport-templateargumentsize' => 'גודל הפרמטרים של התבניות',
+'limitreport-templateargumentsize-value' => '$1/$2 בתים',
+'limitreport-expansiondepth' => 'עומק הפריסה הגבוה ביותר',
+'limitreport-expensivefunctioncount' => 'מספר פונקציות המפענח שגוזלות משאבים',
+
 );
index 86bb851..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' => 'यह सदस्य फ़िलहाल अवरोधित हैं। सदंर्भ के लिए ताज़ातरीन अवरोध चिट्ठा प्रविष्टि नीचे है:',
@@ -2806,10 +2806,10 @@ $1 को बाध्य करने का कारण है: "$2"',
 'movereason' => 'कारण:',
 'revertmove' => 'पुराने अवतरण पर ले जाएं',
 'delete_and_move' => 'हटाएँ और नाम बदलें',
-'delete_and_move_text' => '==हटाने की जरूरत==
-लà¤\95à¥\8dषà¥\8dय à¤ªà¥\83षà¥\8dठ "[[:$1]]" à¤ªà¤¹à¤²à¥\87 à¤¸à¥\87 à¤\85सà¥\8dतितà¥\8dवमà¥\87à¤\82 à¤¹à¥\88à¤\82
-नाम बदलने के लिये क्या आप इसे हटाना चाहते हैं?',
-'delete_and_move_confirm' => 'à¤\9cà¥\80 à¤¹à¤¾à¤\82, à¤ªà¥\83षà¥\8dठ à¤¹à¤\9fाà¤\88यà¥\87à¤\82',
+'delete_and_move_text' => '==हà¤\9fानà¥\87 à¤\95à¥\80 à¤\9c़रà¥\82रत==
+लà¤\95à¥\8dषà¥\8dय à¤ªà¥\83षà¥\8dठ "[[:$1]]" à¤ªà¤¹à¤²à¥\87 à¤¸à¥\87 à¤®à¥\8cà¤\9cà¥\82द à¤¹à¥\88
+नाम बदलने के लिये क्या आप इसे हटाना चाहते हैं?',
+'delete_and_move_confirm' => 'à¤\9cà¥\80 à¤¹à¤¾à¤\81, à¤ªà¥\83षà¥\8dठ à¤¹à¤\9fाà¤\8fà¤\81',
 'delete_and_move_reason' => '"[[$1]]" से स्थानांतरण करने के लिये जगह बनाई गयी है',
 'selfmove' => 'स्रोत और लक्ष्य शीर्षक समान हैं;
 पृष्ठ अपने ही जगह पर स्थानांतरित नहीं हो सकता।',
index 979d283..9d2f83c 100644 (file)
@@ -171,7 +171,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Montre kantite itlizatè k’ap swiv',
 'tog-oldsig' => 'Gade pou wè siyati ki egziste deja:',
 'tog-fancysig' => 'Konsidere siyati sa tankou yon wikitèks (san lyen ki ta otomatik)',
-'tog-showjumplinks' => 'Pèmèt lyen aksesibilite « ale nan »',
 'tog-uselivepreview' => 'Itilize kout je an dirèk (sa mande JavaScrip) (Esperimantal)',
 'tog-forceeditsummary' => 'Notifye m lè m ap antre yon somè modifikasyon vid',
 'tog-watchlisthideown' => 'Kache modifikasyon m yo nan lis swivi mwen a',
index ec18b84..3374531 100644 (file)
@@ -453,7 +453,7 @@ $messages = array(
 'navigation-heading' => 'Նավիգացիոն ցանկ',
 'errorpagetitle' => 'Սխալ',
 'returnto' => 'Վերադառնալ $1։',
-'tagline' => '{{SITENAME}}յից',
+'tagline' => '{{SITENAME}}-ից',
 'help' => 'Օգնություն',
 'search' => 'Որոնում',
 'searchbutton' => 'Որոնել',
@@ -569,6 +569,7 @@ $1',
 'site-atom-feed' => '$1 Atom Սնուցում',
 'page-rss-feed' => '«$1» RSS Սնուցում',
 'page-atom-feed' => '«$1» «Ատոմ» սնուցում',
+'feed-atom' => 'Ատոմ',
 'red-link-title' => '$1 (էջը գոյություն չունի)',
 'sort-descending' => 'Դասավորել՝ մեծից փոքր',
 'sort-ascending' => 'Դասավորել՝ փոքրից մեծ',
@@ -655,8 +656,10 @@ $1',
 'protectedpagetext' => 'Այս էջը կողպված խմբագրման համար։',
 'viewsourcetext' => 'Դուք կարող եք դիտել և պատճենել այս էջի ելատեքստը.',
 'viewyourtext' => 'Դուք կարող եք դիտել «ձեր ներդրումների» աղբյուրը և պատճենել այս էջ',
-'protectedinterface' => 'Այս էջը պարունակում է ծրագրային ապահովման ինտերֆեյսի ուզերձ և կողպված է չարաշահումների կանխարգելման նպատակով։.',
-'editinginterface' => "'''Զգուշացում՝''' Դուք խմբագրում եք ծրագրային ապահովման ինտերֆեյսի տեքստ պարունակող էջ։ Այս էջի փոփոխությունը կանդրադառնա այլ մասնակիցներին տեսանելի ինտերֆեյսի տեսքի վրա։
+'protectedinterface' => 'Այս էջը պարունակում է ծրագրային ապահովման միջերեսի տեքստ, և պաշտպանված է չարաշահումների կանխարգելման նպատակով։
+Բոլոր վիքիների թարգմանությունները փոփոխելու կամ ավելացնելու համար, խնդրում ենք այցելել ՄեդիաՎիքիի տեղայնացման նախագիծը՝ [//translatewiki.net/ translatewiki.net]։',
+'editinginterface' => "'''Ուշադրություն՝''' Դուք խմբագրում եք ծրագրային ապահովման միջերեսի տեքստ պարունակող էջ։
+Այս էջի փոփոխությունը կանդրադառնա այլ մասնակիցներին տեսանելի միջերեսը այս վիքիի վրա։
 Թարգմանությունների համար նախընտրելի է օգտագործել [//translatewiki.net/wiki/Main_Page?setlang=hy translatewiki.net]՝ Մեդիավիքի ծրագրի տեղայնացման նախագիծը։",
 'sqlhidden' => '(SQL հայցումը թաքցված է)',
 'cascadeprotected' => 'Այս էջը պաշտպանված է խմբագրումից, քանի որ ընդգրկված է հետևյալ {{PLURAL:$1|էջի|էջերի}} տեքստում, {{PLURAL:$1|որը|որոնք}} պաշտպանվել {{PLURAL:$1|է|են}} կասկադային հնարավորությամբ.
@@ -1085,7 +1088,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'histfirst' => 'Առաջին',
 'histlast' => 'Վերջին',
 'historysize' => '({{PLURAL:$1|1 բայթ|$1 բայթ}})',
-'historyempty' => '(դատարկ է)',
+'historyempty' => '(դատարկ)',
 
 # Revision feed
 'history-feed-title' => 'Փոփոխությունների պատմություն',
@@ -1295,8 +1298,8 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'prefs-memberingroups' => 'Անդամակցության {{PLURAL:$1|խումբ|խմբեր}}.',
 'prefs-registration' => 'Գրանցման ամսաթիվը․',
 'yourrealname' => 'Ձեր իրական անունը.',
-'yourlanguage' => 'Ô»Õ¶Õ¿Õ¥Ö\80Ö\86Õ¥ÕµÕ½Õ« Õ¬Õ¥Õ¦Õ¸Ö\82Õ¶.',
-'yourvariant' => 'Ô¼Õ¥Õ¦Õ¾Õ¡Õ¯Õ¡Õ¶ Õ¿Õ¡Ö\80Õ¢Õ¥Ö\80Õ¡Õ¯',
+'yourlanguage' => 'Ô¼Õ¥Õ¦Õ¸Ö\82Õ\9d',
+'yourvariant' => 'Ô²Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö\82Õ©ÕµÕ¡Õ¶ Õ¬Õ¥Õ¦Õ¾Õ¡Õ¯Õ¡Õ¶ Õ¿Õ¡Ö\80Õ¢Õ¥Ö\80Õ¡Õ¯Õ\9d',
 'yournick' => 'Ստորագրություն.',
 'prefs-help-signature' => 'Քննարկման էջերում մեկնաբանությունները անհրաժեշտ է ստորագրել "<nowiki>~~~~</nowiki>" նշանագրով, որը կվերածվի ձեր ստորագրությանը և ամսաթվին։',
 'badsig' => 'Սխալ ստորագրություն. ստուգեք HTML-թեգերը։',
@@ -2048,7 +2051,7 @@ $1',
 'blanknamespace' => '(Գլխավոր)',
 
 # Contributions
-'contributions' => ' {{GENDER:$1|Մասնակցի}} ներդրում',
+'contributions' => '{{GENDER:$1|Մասնակցի}} ներդրում',
 'contributions-title' => '$1 մասնակցի ներդրումը',
 'mycontris' => 'Ներդրում',
 'contribsub2' => '$1-ի ներդրումները ($2)',
@@ -2370,7 +2373,7 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 'tooltip-t-whatlinkshere' => 'Այս էջին հղվող բոլոր վիքի էջերի ցանկը',
 'tooltip-t-recentchangeslinked' => 'Այս էջից կապված էջերի վերջին փոփոխությունները',
 'tooltip-feed-rss' => 'Այս էջի RSS սնուցումը',
-'tooltip-feed-atom' => 'Այս էջի Atom սնուցումը',
+'tooltip-feed-atom' => 'Այս էջի Ատոմ սնուցումը',
 'tooltip-t-contributions' => 'Դիտել այս մասնակցի ներդրումների ցանկը',
 'tooltip-t-emailuser' => 'Ուղարկել էլ-նամակ այս մասնակցին',
 'tooltip-t-upload' => 'Բեռնել ֆայլեր',
index d98b05d..56cff83 100644 (file)
@@ -570,7 +570,6 @@ Le administrator qui lo blocava offereva iste explication: "$3".',
 # Login and logout pages
 'logouttext' => "'''Tu ha claudite le session.'''
 
-Tu pote continuar a usar {{SITENAME}} anonymemente, o tu pote <span class='plainlinks'>[$1 aperir un nove session]</span> con le mesme nomine de usator o con un altere.
 Nota que alcun paginas pote continuar a apparer como si tu esserea ancora authenticate. Pro remediar isto, tu pote vacuar le cache de tu navigator.",
 'welcomeuser' => 'Benvenite, $1!',
 'welcomecreation-msg' => 'Tu conto ha essite create.
@@ -618,7 +617,7 @@ Non oblida personalisar tu [[Special:Preferences|preferentias in {{SITENAME}}]].
 'createacct-emailoptional' => 'Adresse de e-mail (optional)',
 'createacct-email-ph' => 'Entra tu adresse de e-mail',
 'createacct-another-email-ph' => 'Entra adresse de e-mail',
-'createaccountmail' => 'Usar un contrasigno aleatori temporari e inviar lo al adresse de e-mail specificate hic infra',
+'createaccountmail' => 'Usar un contrasigno aleatori temporari e inviar lo al adresse de e-mail specificate',
 'createacct-realname' => 'Nomine real (optional)',
 'createaccountreason' => 'Motivo:',
 'createacct-reason' => 'Motivo',
@@ -707,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',
@@ -1446,10 +1447,10 @@ Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contribut
 'userrights-no-interwiki' => 'Tu non ha le permission de modificar le derectos de usatores in altere wikis.',
 'userrights-nodatabase' => 'Le base de datos $1 non existe o non es local.',
 'userrights-nologin' => 'Tu debe [[Special:UserLogin|aperir un session]] con un conto de administrator pro poter assignar derectos de usator.',
-'userrights-notallowed' => 'Tu conto non ha le permission de adder o remover derectos de usator.',
+'userrights-notallowed' => 'Tu non ha le permission de adder o remover derectos de usator.',
 'userrights-changeable-col' => 'Gruppos que tu pote modificar',
 'userrights-unchangeable-col' => 'Gruppos que tu non pote modificar',
-'userrights-conflict' => 'Conflicto inter derectos de usator! Per favor applica tu cambiamentos de novo.',
+'userrights-conflict' => 'Conflicto inter cambiamentos de derectos de usator! Per favor revide e confirma tu cambiamentos.',
 'userrights-removed-self' => 'Tu ha removite con successo tu proprie derectos. In consequentia, tu non plus pote acceder a iste pagina.',
 
 # Groups
@@ -3107,13 +3108,13 @@ Le causa es probabilemente un ligamine verso un sito externe que es presente in
 'pageinfo-length' => 'Dimension del pagina (in bytes)',
 'pageinfo-article-id' => 'ID del pagina',
 'pageinfo-language' => 'Lingua del contento del pagina',
-'pageinfo-robot-policy' => 'Stato del motor de recerca',
-'pageinfo-robot-index' => 'Indexabile',
-'pageinfo-robot-noindex' => 'Non indexabile',
+'pageinfo-robot-policy' => 'Indexation per robots',
+'pageinfo-robot-index' => 'Permittite',
+'pageinfo-robot-noindex' => 'Non permittite',
 'pageinfo-views' => 'Numero de visitas',
 'pageinfo-watchers' => 'Numero de observatores del pagina',
 'pageinfo-few-watchers' => 'Minus de $1 {{PLURAL:$1|observator|observatores}}',
-'pageinfo-redirects-name' => 'Redirectiones verso iste pagina',
+'pageinfo-redirects-name' => 'Numero de redirectiones verso iste pagina',
 'pageinfo-subpages-name' => 'Subpaginas de iste pagina',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redirection|redirectiones}}; $3 {{PLURAL:$3|non-redirection|non-redirectiones}})',
 'pageinfo-firstuser' => 'Creator del pagina',
@@ -3724,7 +3725,7 @@ Iste codice de confirmation expirara a $4.',
 'confirmemail_body_set' => 'Un persona, probabilemente tu, usante le adresse IP $1,
 ha specificate que iste adresse de e-mail pertine al conto "$2" in {{SITENAME}}.
 
-Pro confirmar que iste conto es realmente tue, e pro activar le functiones
+Pro confirmar que iste conto vermente pertine a te, e pro activar le functionalitate
 de e-mail in {{SITENAME}}, visita iste ligamine in tu navigator:
 
 $3
@@ -3734,7 +3735,7 @@ pro cancellar le confirmation del adresse de e-mail:
 
 $5
 
-Iste codice de confirmation expirara a $4.',
+Iste codice de confirmation expirara le $6 a $7.',
 'confirmemail_invalidated' => 'Confirmation del adresse de e-mail cancellate',
 'invalidateemail' => 'Cancellar confirmation del adresse de e-mail',
 
@@ -4088,4 +4089,11 @@ 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}}',
+
 );
index bf95884..f43e4d2 100644 (file)
@@ -19,6 +19,7 @@
  * @author Farras
  * @author Geitost
  * @author Gombang
+ * @author Ilham151096
  * @author Irwangatot
  * @author IvanLanin
  * @author Iwan Novirion
@@ -31,6 +32,7 @@
  * @author Naval Scene
  * @author Remember the dot
  * @author Rex
+ * @author Rv77ax
  * @author Urhixidur
  * @author לערי ריינהארט
  */
@@ -761,8 +763,7 @@ Administrator yang terkunci menawarkan penjelasan ini: " $3 ".',
 # Login and logout pages
 'logouttext' => "'''Anda telah keluar log dari sistem.'''
 
-Anda dapat terus menggunakan {{SITENAME}} secara anonim, atau Anda dapat <span class='plainlinks'>[$1 masuk log lagi]</span> sebagai pengguna yang sama atau pengguna yang lain.
-Perhatikan bahwa beberapa halaman mungkin masih terus menunjukkan bahwa Anda masih masuk log sampai Anda membersihkan singgahan penjelajah web Anda",
+Ingatlah bahwa beberapa halaman mungkin masih menampilkan anda seperti masih masuk log, sampai Anda membersihkan singgahan penjelajah web Anda.",
 'welcomeuser' => 'Selamat datang,  $1 !',
 'welcomecreation-msg' => 'Akun Anda telah dibuat. Jangan lupa mengatur konfigurasi [[Special:Preferences|preferensi {{SITENAME}}]] Anda.',
 'yourname' => 'Nama pengguna:',
@@ -785,7 +786,7 @@ Perhatikan bahwa beberapa halaman mungkin masih terus menunjukkan bahwa Anda mas
 'externaldberror' => 'Telah terjadi kesalahan otentikasi basis data eksternal atau Anda tidak diizinkan melakukan kemaskini terhadap akun eksternal Anda.',
 'login' => 'Masuk log',
 'nav-login-createaccount' => 'Masuk log / buat akun',
-'loginprompt' => "Anda harus mengaktifkan ''cookies'' untuk dapat masuk log ke {{SITENAME}}.",
+'loginprompt' => 'Anda harus mengaktifkan kuki untuk dapat masuk log ke {{SITENAME}}.',
 'userlogin' => 'Masuk log / buat akun',
 'userloginnocreate' => 'Masuk log',
 'logout' => 'Keluar log',
@@ -808,7 +809,7 @@ Perhatikan bahwa beberapa halaman mungkin masih terus menunjukkan bahwa Anda mas
 'createacct-emailoptional' => 'Alamat surel (opsional)',
 'createacct-email-ph' => 'Masukkan alamat surel Anda',
 'createacct-another-email-ph' => 'Masukkan alamat surel',
-'createaccountmail' => 'Gunakan kata sandi acak sementara dan kirimkan ke surel yang tercantum di bawah',
+'createaccountmail' => 'Gunakan kata sandi acak sementara dan kirimkan ke surel yang diinginkan',
 'createacct-realname' => 'Nama asli (opsional)',
 'createaccountreason' => 'Alasan:',
 'createacct-reason' => 'Alasan',
@@ -827,8 +828,8 @@ Silakan tentukan nama yang lain.',
 'loginerror' => 'Kesalahan masuk log',
 'createacct-error' => 'Pembuatan akun gagal',
 'createaccounterror' => 'Tidak dapat membuat akun: $1',
-'nocookiesnew' => "Akun pengguna telah dibuat, tetapi Anda belum masuk log. {{SITENAME}} menggunakan ''cookies'' untuk log pengguna. ''Cookies'' pada penjelajah web Anda dimatikan. Silakan aktifkan dan masuk log kembali dengan nama pengguna dan kata sandi Anda.",
-'nocookieslogin' => "{{SITENAME}} menggunakan ''cookies'' untuk log penggunanya. ''Cookies'' pada penjelajah web Anda dimatikan. Silakan aktifkan dan coba lagi.",
+'nocookiesnew' => 'Akun pengguna telah dibuat, tetapi Anda belum masuk log. {{SITENAME}} menggunakan kuki untuk log pengguna. Kuki pada peramban web Anda dinonaktifkan. Silakan aktifkan dan masuk log kembali dengan nama pengguna dan kata sandi Anda.',
+'nocookieslogin' => '{{SITENAME}} menggunakan kuki untuk log penggunanya. Kuki pada peramban web Anda dimatikan. Silakan aktifkan dan coba lagi.',
 'nocookiesfornew' => 'Akun pengguna tidak dibuat karena kami tidak dapat memastikan sumbernya.
 Pastikan Anda telah mengaktifkan kuki, lalu muat ulang halaman ini dan coba lagi.',
 'nocookiesforlogin' => '{{int:nocookieslogin}}',
@@ -1577,6 +1578,7 @@ Jika Anda memberikannya, nama asli Anda akan digunakan untuk memberi pengenalan
 'prefs-displayrc' => 'Pilihan tampilan',
 'prefs-displaysearchoptions' => 'Pilihan tampilan',
 'prefs-displaywatchlist' => 'Pilihan tampilan',
+'prefs-tokenwatchlist' => 'Tanda',
 'prefs-diffs' => 'Beda',
 
 # User preference: email validation using jQuery
@@ -1602,11 +1604,11 @@ Jika Anda memberikannya, nama asli Anda akan digunakan untuk memberi pengenalan
 'userrights-no-interwiki' => 'Anda tidak memiliki hak untuk mengubah hak pengguna di wiki yang lain.',
 'userrights-nodatabase' => 'Basis data $1 tidak ada atau bukan lokal.',
 'userrights-nologin' => 'Anda harus [[Special:UserLogin|masuk log]] dengan menggunakan akun pengurus untuk dapat mengubah hak pengguna.',
-'userrights-notallowed' => 'Akun Anda tidak berhak untuk menambahkan atau membuang hak pengguna.',
+'userrights-notallowed' => 'AkunAnda tidak berhak untuk menambahkan atau membuang hak pengguna.',
 'userrights-changeable-col' => 'Kelompok yang dapat Anda ubah',
 'userrights-unchangeable-col' => 'Kelompok yang tidak dapat Anda ubah',
 'userrights-irreversible-marker' => '$1*',
-'userrights-conflict' => 'Konflik hak pengguna! Silakan ubah kembali.',
+'userrights-conflict' => 'Konflik perubahan hak pengguna! Silakan tinjau ulang dan konfirmasi perubahan anda.',
 'userrights-removed-self' => 'Anda berhasil mencabut hak-hak Anda. Anda tidak bisa lagi mengakses halaman ini.',
 
 # Groups
@@ -3229,13 +3231,13 @@ Ini mungkin disebabkan oleh pranala ke situs luar yang termasuk dalam daftar hit
 'pageinfo-length' => 'Panjang halaman (dalam bita)',
 'pageinfo-article-id' => 'ID Halaman',
 'pageinfo-language' => 'Bahasa isi halaman',
-'pageinfo-robot-policy' => 'Status mesin pencari',
-'pageinfo-robot-index' => 'Dapat diindeks',
-'pageinfo-robot-noindex' => 'Tidak dapat diindeks',
+'pageinfo-robot-policy' => 'Pengindeksan oleh robot',
+'pageinfo-robot-index' => 'Diperbolehkan',
+'pageinfo-robot-noindex' => 'Tidak diperbolehkan',
 'pageinfo-views' => 'Jumlah penampilan',
 'pageinfo-watchers' => 'Jumlah pemantau halaman',
 'pageinfo-few-watchers' => 'Kurang dari $1 {{PLURAL:$1|pengunjung}}',
-'pageinfo-redirects-name' => 'Pengalihan ke halaman ini',
+'pageinfo-redirects-name' => 'Jumah pengalihan ke halaman ini',
 'pageinfo-redirects-value' => '$1',
 'pageinfo-subpages-name' => 'Subhalaman halaman ini',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|pengalihan|pengalihan}}; $3 {{PLURAL:$3|non-pengalihan|non-pengalihan}})',
index f05b636..2dafecd 100644 (file)
@@ -161,7 +161,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Monstrar li númere de usatores vigilant',
 'tog-oldsig' => 'Prevision de signature in existentie:',
 'tog-fancysig' => 'Tractar signature quam textu wiki (sin un catenun auto-crate)',
-'tog-showjumplinks' => 'Permisser catenunes de accessebilitá "saltar a"',
 'tog-uselivepreview' => 'Usar prevision in vivi (exige JavaScript) (experimental)',
 'tog-forceeditsummary' => 'Suggester me quande intrar un redaction che summarium in blanc',
 'tog-watchlisthideown' => 'Ocultar mi redactiones del liste de págines vigilat',
index 0873601..2c2a1c7 100644 (file)
@@ -104,7 +104,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Zi onuogụgụ ndi na banife nke ne lé',
 'tog-oldsig' => 'Létu ntakiri ndẹlu ejị a ma gí:',
 'tog-fancysig' => 'Mesò ka nkábi nwéré édé wiki (nké énwéghị jikodo nke nọr na onwe)',
-'tog-showjumplinks' => 'Kwé ka njikodo "mani énū" I mé',
 'tog-uselivepreview' => 'Jí nlé ntàkírí dí ndụ (Í gí nwé JavaScript) (mmètú kanyí lé)',
 'tog-forceeditsummary' => 'Gwam mgbè okwu nsem màkà orüm rürü a díghị',
 'tog-watchlisthideown' => 'Zonari orüm fwuör ndetu ihem ne lé',
index c92c57d..5a0f83e 100644 (file)
@@ -48,7 +48,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Ший теркама дагарленгах оагӀув чулаьца бола дакъалаьцархой таьрах хьахьокха',
 'tog-oldsig' => 'Дола кулгайоазув:',
 'tog-fancysig' => 'Ший кулга яздара массахоамбаккхам (ший лоӀаме Ӏинка йоацаш)',
-'tog-showjumplinks' => '"Дехьадала" яха новкъостала Ӏинк хьахьокха',
 'tog-uselivepreview' => 'Сиха бӀарахьажар (JavaScript) (Экспериментально)',
 'tog-forceeditsummary' => 'Хоам бе, хувцамий лоацам белгал даь деце',
 'tog-watchlisthideown' => 'Са хувцамаш теркама дагарчера къайладаккха',
index 24caeb1..620a434 100644 (file)
@@ -743,7 +743,7 @@ Non dimenticare di personalizzare le [[Special:Preferences|preferenze di {{SITEN
 'logout' => 'Esci',
 'userlogout' => 'esci',
 'notloggedin' => 'Accesso non effettuato',
-'userlogin-noaccount' => 'Non hai un account?',
+'userlogin-noaccount' => 'Non hai ancora effettuato la registrazione?',
 'userlogin-joinproject' => 'Registrati su {{SITENAME}}',
 'nologin' => 'Non hai ancora un accesso? $1.',
 'nologinlink' => 'Registrati',
@@ -755,12 +755,12 @@ Non dimenticare di personalizzare le [[Special:Preferences|preferenze di {{SITEN
 'helplogin-url' => 'Help:Login',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Aiuto con il login]]',
 'createacct-join' => 'Inserisci i tuoi dati qui sotto.',
-'createacct-another-join' => 'Inserisci le informazioni per il nuovo account qui sotto.',
+'createacct-another-join' => 'Inserisci le informazioni per la registrazione qui sotto.',
 'createacct-emailrequired' => 'Indirizzo email',
 'createacct-emailoptional' => 'Indirizzo di posta elettronica (opzionale)',
 'createacct-email-ph' => 'Inserisci il tuo indirizzo email',
-'createacct-another-email-ph' => "Inserisci l'indirizzo email",
-'createaccountmail' => "Usa una password casuale temporanea e inviala all'indirizzo e-mail specificato sotto",
+'createacct-another-email-ph' => "Inserisci l'indirizzo di posta elettronica",
+'createaccountmail' => "Usa una password casuale temporanea e inviala all'indirizzo di posta elettronica specificato",
 'createacct-realname' => 'Nome reale (opzionale)',
 'createaccountreason' => 'Motivo:',
 'createacct-reason' => 'Motivo',
@@ -768,8 +768,8 @@ Non dimenticare di personalizzare le [[Special:Preferences|preferenze di {{SITEN
 'createacct-captcha' => 'Controllo di sicurezza',
 'createacct-imgcaptcha-ph' => 'Inserisci il testo che vedi sopra',
 'createacct-submit' => 'Crea la tua utenza',
-'createacct-another-submit' => 'Crea un altro account',
-'createacct-benefit-heading' => '{{SITENAME}} è fatta da persone come te.',
+'createacct-another-submit' => "Crea un'altra utenza",
+'createacct-benefit-heading' => '{{SITENAME}} cresce grazie a persone come te.',
 'createacct-benefit-body1' => '{{PLURAL:$1|modifica|modifiche}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|pagina|pagine}}',
 'createacct-benefit-body3' => '{{PLURAL:$1|contributore recente|contributori recenti}}',
@@ -812,8 +812,8 @@ Per abilitare l'invio di messaggi e-mail per questo accesso è necessario seguir
 'throttled-mailpassword' => 'Una email di reimpostazione della password è già stata inviata da meno di {{PLURAL:$1|1 ora|$1 ore}}.
 Per prevenire abusi, la funzione di reimpostazione della password può essere usata solo una volta ogni {{PLURAL:$1|ora|$1 ore}}.',
 'mailerror' => "Errore nell'invio del messaggio: $1",
-'acct_creation_throttle_hit' => "I visitatori del sito che usano il tuo indirizzo IP hanno creato {{PLURAL:$1|1 account|$1 account}} nell'ultimo giorno, che è il massimo consentito in questo periodo di tempo.
-Perciò, gli utenti che usano questo indirizzo IP non possono creare altri account per il momento.",
+'acct_creation_throttle_hit' => "{{PLURAL:$1|1 registrazione è già stata effettuata|$1 registrazioni sono già state effettuate}} da qualcuno con il tuo stesso indirizzo IP nell'ultimo giorno: è il massimo consentito in questo periodo di tempo.
+Perciò, gli utenti che usano questo indirizzo IP non possono registrarsi per il momento.",
 'emailauthenticated' => "L'indirizzo email è stato confermato il $2 alle $3.",
 'emailnotauthenticated' => "L'indirizzo di posta elettronica non è stato ancora confermato.
 Non verranno inviati messaggi email per le funzioni elencate di seguito.",
@@ -872,7 +872,7 @@ La password potrebbe essere stata già cambiata, oppure potrebbe essere stata ri
 'passwordreset-capture' => 'Visualizzare il contenuto del messaggio e-mail?',
 'passwordreset-capture-help' => "Se si seleziona questa casella, l'indirizzo e-mail (con la password temporanea), verrà mostrato a voi, oltre ad essere inviato all'utente.",
 'passwordreset-email' => 'Indirizzo e-mail:',
-'passwordreset-emailtitle' => 'Dettagli account su {{SITENAME}}',
+'passwordreset-emailtitle' => "Dettagli dell'utente su {{SITENAME}}",
 'passwordreset-emailtext-ip' => "Qualcuno (probabilmente tu, con indirizzo IP $1) ha richiesto l'invio di una nuova password per l'accesso a {{SITENAME}} ($4). {{PLURAL:$3|L'utente associato|Gli utenti associati}} a questo indirizzo email sono:
 
 $2
@@ -909,9 +909,9 @@ Password temporanea: $2',
 
 # Special:ResetTokens
 'resettokens' => 'Reset token',
-'resettokens-text' => "È possibile reimpostare i token che permettono l'accesso a determinati dati privati associati al tuo account qui.
+'resettokens-text' => "Qui puoi reimpostare le chiavi che permettono l'accesso a determinati dati privati associati alla tua utenza.
 
-Dovresti farlo se li hai accidentalmente condivisi con qualcuno o se il tuo account è stato compromesso.",
+Dovresti farlo se le hai accidentalmente condivise con qualcuno o se la tua utenza è stato compromessa.",
 'resettokens-no-tokens' => 'Non ci sono token da reimpostare.',
 'resettokens-legend' => 'Reset token',
 'resettokens-tokens' => 'Token:',
@@ -999,7 +999,7 @@ Potrebbe essere stata spostata o eliminata mentre si stava visionando la pagina.
 'accmailtitle' => 'Password inviata.',
 'accmailtext' => "Una password generata casualmente per [[User talk:$1|$1]] è stata inviata a $2.
 
-La password per questo nuovo account può essere modificata all'accesso nella pagina per ''[[Special:ChangePassword|cambiare la password]]''.",
+Questa password può essere modificata nella pagina per ''[[Special:ChangePassword|cambiare la password]]'' subito dopo l'accesso.",
 'newarticle' => '(Nuovo)',
 'newarticletext' => "Il collegamento appena seguito corrisponde ad una pagina non ancora esistente.
 Se vuoi creare la pagina ora, basta cominciare a scrivere il testo nella casella qui sotto (vedi la [[{{MediaWiki:Helppage}}|pagina di aiuto]] per maggiori informazioni).
@@ -1154,7 +1154,7 @@ Controlla le differenze mostrate sotto fra le due versioni per essere certo che
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Impossibile registrare un utente',
-'cantcreateaccount-text' => "La creazione di nuovi account a partire da questo indirizzo IP ('''$1''') è stata bloccata da [[User:$3|$3]].
+'cantcreateaccount-text' => "La registrazione è stata bloccata da [[User:$3|$3]] per questo indirizzo IP ('''$1''').
 
 La motivazione del blocco fornita da $3 è la seguente: ''$2''",
 
@@ -1532,7 +1532,7 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 'userrights-no-interwiki' => 'Non si dispone dei permessi necessari per modificare i diritti degli utenti su altri siti.',
 'userrights-nodatabase' => 'Il database $1 non esiste o non è un database locale.',
 'userrights-nologin' => "Per assegnare diritti agli utenti è necessario [[Special:UserLogin|effettuare l'accesso]] come amministratore.",
-'userrights-notallowed' => "Il tuo account non dispone dell'autorizzazione per aggiungere o rimuovere i permessi utente.",
+'userrights-notallowed' => "Non disponi dell'autorizzazione per aggiungere o rimuovere i permessi utente.",
 'userrights-changeable-col' => 'Gruppi modificabili',
 'userrights-unchangeable-col' => 'Gruppi non modificabili',
 'userrights-conflict' => 'Conflitto di diritti utente! Applica nuovamente le tue modifiche.',
@@ -1567,7 +1567,7 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 'right-edit' => 'Modifica pagine',
 'right-createpage' => 'Crea pagine (escluse le pagine di discussione)',
 'right-createtalk' => 'Crea pagine di discussione',
-'right-createaccount' => 'Crea nuovi account utente',
+'right-createaccount' => 'Crea nuove utenze',
 'right-minoredit' => 'Segna le modifiche come minori',
 'right-move' => 'Sposta le pagine',
 'right-move-subpages' => 'Sposta le pagine insieme alle relative sottopagine',
@@ -1645,7 +1645,7 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 'action-edit' => 'modificare questa pagina',
 'action-createpage' => 'creare pagine',
 'action-createtalk' => 'creare pagine di discussione',
-'action-createaccount' => 'creare questo account utente',
+'action-createaccount' => 'effettuare questa registrazione',
 'action-minoredit' => 'segnare questa modifica come minore',
 'action-move' => 'spostare questa pagina',
 'action-move-subpages' => 'spostare questa pagina e le relative sottopagine',
@@ -2670,10 +2670,10 @@ Indicare il motivo specifico per il quale si procede al blocco (per esempio, cit
 ** Collegamenti promozionali a siti esterni
 ** Inserimento di contenuti privi di senso
 ** Comportamenti intimidatori o molestie
-** Uso indebito di più account
+** Uso indebito di utenze multiple
 ** Nome utente non consono',
 'ipb-hardblock' => 'Impedisci agli utenti registrati di contribuire da questo indirizzo IP',
-'ipbcreateaccount' => 'Impedisci la creazione di altri account',
+'ipbcreateaccount' => 'Impedisci la registrazione',
 'ipbemailban' => "Impedisci all'utente l'invio di e-mail",
 'ipbenableautoblock' => "Blocca automaticamente l'ultimo indirizzo IP usato dall'utente e i successivi con cui vengono tentate modifiche",
 'ipbsubmit' => "Blocca l'utente",
@@ -2708,7 +2708,7 @@ Sei sicuro di voler continuare?',
 'blocklist' => 'Utenti bloccati',
 'ipblocklist' => 'Utenti bloccati',
 'ipblocklist-legend' => 'Trova un utente bloccato',
-'blocklist-userblocks' => 'Nascondi i blocchi degli account',
+'blocklist-userblocks' => 'Nascondi i blocchi degli utenti registrati',
 'blocklist-tempblocks' => 'Nascondi i blocchi temporanei',
 'blocklist-addressblocks' => 'Nascondi i blocchi di un solo IP',
 'blocklist-rangeblocks' => 'Nascondi i blocchi di range',
@@ -2725,7 +2725,7 @@ Sei sicuro di voler continuare?',
 'expiringblock' => 'scade il $1 alle $2',
 'anononlyblock' => 'solo anonimi',
 'noautoblockblock' => 'blocco automatico disabilitato',
-'createaccountblock' => 'creazione account bloccata',
+'createaccountblock' => 'registrazione bloccata',
 'emailblock' => 'e-mail bloccate',
 'blocklist-nousertalk' => 'non può modificare la propria pagina di discussione',
 'ipblocklist-empty' => "L'elenco dei blocchi è vuoto.",
@@ -2747,7 +2747,7 @@ Gli indirizzi IP bloccati automaticamente non sono elencati.
 Consultare l'[[Special:BlockList|elenco dei blocchi]] per l'elenco dei bandi o blocchi attualmente operativi.",
 'unblocklogentry' => 'ha sbloccato $1',
 'block-log-flags-anononly' => 'solo utenti anonimi',
-'block-log-flags-nocreate' => 'creazione account bloccata',
+'block-log-flags-nocreate' => 'registrazione bloccata',
 'block-log-flags-noautoblock' => 'blocco automatico disattivato',
 'block-log-flags-noemail' => 'e-mail bloccate',
 'block-log-flags-nousertalk' => 'non può modificare la propria pagina di discussione',
@@ -3741,15 +3741,15 @@ $5
 
 Questo codice di conferma scadrà automaticamente alle $4.',
 'confirmemail_body_set' => 'Qualcuno, probabilmente tu stesso dall\'indirizzo IP $1,
-ha impostato l\'indirizzo e-mail dell\'account "$2" su {{SITENAME}} indicando questo indirizzo e-mail.
+ha impostato l\'indirizzo email dell\'account "$2" su {{SITENAME}} indicando questo indirizzo email.
 
-Per confermare che l\'account ti appartiene veramente e riattivare le funzioni relative all\'invio
-di e-mail su {{SITENAME}}, apri il collegamento seguente con il tuo browser:
+Per confermare che l\'account ti appartiene veramente e attivare le funzioni relative all\'invio
+di email su {{SITENAME}}, apri il collegamento seguente con il tuo browser:
 
 $3
 
 Se l\'account *non* ti appartiene, segui questo collegamento
-per annullare la conferma dell\'indirizzo e-mail:
+per annullare la conferma dell\'indirizzo email:
 
 $5
 
index d09f00d..c653bf4 100644 (file)
@@ -797,8 +797,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''ログアウトしました。'''
 
-このまま匿名で{{SITENAME}}の使用を続行できます。同じまたは別の利用者として<span class='plainlinks'>[$1 もう一度ログイン]</span>することもできます。
-なお、ページによっては、ブラウザーのキャッシュをクリアするまで、ログインしているかのように表示され続ける場合があるためご注意ください。",
+ページによっては、ブラウザーのキャッシュをクリアするまで、ログインしているかのように表示され続ける場合があるためご注意ください。",
 'welcomeuser' => 'ようこそ、$1さん!',
 'welcomecreation-msg' => 'アカウントが作成されました。
 [[Special:Preferences|{{SITENAME}}の個人設定]]の変更も忘れないようにしてください。',
@@ -845,7 +844,7 @@ $2',
 'createacct-emailoptional' => 'メールアドレス (省略可能)',
 'createacct-email-ph' => 'メールアドレスを入力',
 'createacct-another-email-ph' => 'メールアドレスを入力',
-'createaccountmail' => '一時的でランダムなパスワードを生成して、以下に指定したメールアドレスに送信する',
+'createaccountmail' => '一時的でランダムなパスワードを生成して、指定したメールアドレスに送信する',
 'createacct-realname' => '本名 (省略可能)',
 'createaccountreason' => '理由:',
 'createacct-reason' => '理由',
@@ -935,6 +934,8 @@ Cookieを有効にしていることを確認して、このページを再読
 'login-abort-generic' => 'ログインに失敗しました - 中止',
 'loginlanguagelabel' => '言語: $1',
 'suspicious-userlogout' => '壊れたブラウザーまたはキャッシュプロキシによって送信された可能性があるため、ログアウト要求は拒否されました。',
+'createacct-another-realname-tip' => '本名は省略できます。
+入力すると、その利用者の著作物の帰属表示に使われます。',
 
 # Email sending
 'php-mail-error-unknown' => 'PHPのmail()関数での不明なエラーです。',
@@ -1681,11 +1682,11 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'userrights-no-interwiki' => '他ウィキ上における利用者権限の編集権限はありません。',
 'userrights-nodatabase' => 'データベース$1は存在しないか、ローカル上にありません。',
 'userrights-nologin' => '利用者権限を付与するには、管理者アカウントで[[Special:UserLogin|ログイン]]する必要があります。',
-'userrights-notallowed' => 'ã\81\82ã\81ªã\81\9fã\81®ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\81«ã\81¯å\88©ç\94¨è\80\85権é\99\90ã\82\92追å\8a ã\81¾ã\81\9fã\81¯除去する権限がありません。',
+'userrights-notallowed' => 'ã\81\82ã\81ªã\81\9fã\81«ã\81¯å\88©ç\94¨è\80\85権é\99\90ã\82\92追å\8a /除去する権限がありません。',
 'userrights-changeable-col' => '変更できるグループ',
 'userrights-unchangeable-col' => '変更できないグループ',
 'userrights-irreversible-marker' => '$1*',
-'userrights-conflict' => 'å\88©ç\94¨è\80\85権é\99\90ã\81«ç«¶å\90\88ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99! å¤\89æ\9b´å\86\85容ã\82\92ã\82\82ã\81\86ä¸\80度é\81©ç\94¨してください。',
+'userrights-conflict' => 'å\88©ç\94¨è\80\85権é\99\90ã\81®å¤\89æ\9b´ã\81\8c競å\90\88ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99! å¤\89æ\9b´å\86\85容ã\82\92確èª\8dしてください。',
 'userrights-removed-self' => 'あなた自身の権限を除去しました。そのため、このページにはもうアクセスできません。',
 
 # Groups
@@ -2171,7 +2172,7 @@ URLが正しいものであり、ウェブサイトが稼働していること
 'filehist-thumbtext' => '$1時点における版のサムネイル',
 'filehist-nothumb' => 'サムネイルなし',
 'filehist-user' => '利用者',
-'filehist-dimensions' => '解像度',
+'filehist-dimensions' => '寸法',
 'filehist-filesize' => 'ファイルサイズ',
 'filehist-comment' => 'コメント',
 'filehist-missing' => 'ファイルがありません',
@@ -2330,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}}の他のページからリンクも参照読み込みもされていません。',
@@ -3361,15 +3362,15 @@ $2',
 'pageinfo-length' => 'ページの長さ (バイト単位)',
 'pageinfo-article-id' => 'ページ ID',
 'pageinfo-language' => 'ページ本文の言語',
-'pageinfo-robot-policy' => '検索エンジンの状態',
-'pageinfo-robot-index' => '検索エンジンに収集される',
-'pageinfo-robot-noindex' => '検索エンジンに収集されない',
+'pageinfo-robot-policy' => 'ロボットによるインデックス化',
+'pageinfo-robot-index' => '許可',
+'pageinfo-robot-noindex' => '不許可',
 'pageinfo-views' => '閲覧回数',
 'pageinfo-watchers' => 'ページをウォッチリストに入れている人数',
 'pageinfo-few-watchers' => 'ウォッチしている利用者 $1 {{PLURAL:$1|人未満}}',
-'pageinfo-redirects-name' => 'このページへのリダイレクト数',
+'pageinfo-redirects-name' => 'このページへのリダイレクト数',
 'pageinfo-redirects-value' => '$1',
-'pageinfo-subpages-name' => 'このページの下位ページ数',
+'pageinfo-subpages-name' => 'このページの下位ページ数',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|件のリダイレクト}}、$3 {{PLURAL:$3|件の非リダイレクト}})',
 'pageinfo-firstuser' => 'ページの作成者',
 'pageinfo-firsttime' => 'ページの作成日時',
@@ -4041,7 +4042,7 @@ $5
 {{SITENAME}} のアカウント「$2」のメールアドレスをこのアドレスに設定しました。
 
 このアカウントが本当にあなたのものであれば、以下のリンクをブラウザーで開いて、
-{{SITENAME}} のメール機能を再び有効にしてください。
+{{SITENAME}} のメール機能を有効にしてください。
 
 $3
 
@@ -4483,4 +4484,19 @@ MediaWikiは、有用であることを期待して配布されていますが
 # 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 8ec6c93..dd461d4 100644 (file)
@@ -43,7 +43,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Shuo di nomba a wachin yuuza',
 'tog-oldsig' => 'Priivyuu a egzisin signicha:',
 'tog-fancysig' => 'Chriit signicha az wikitex (widoutn aatamatik lingk)',
-'tog-showjumplinks' => 'Eniebl "jomp tu" aksesibiliti lingk',
 'tog-uselivepreview' => 'Yuuz laiv priivyuu (rikwaya JavaScript) (experimental)',
 'tog-forceeditsummary' => 'Pramp mi wen entarin blangk edit somari',
 'tog-watchlisthideown' => 'Aid mi editdem frahn di wachlis',
index 091d809..f81958c 100644 (file)
@@ -180,7 +180,6 @@ $messages = array(
 'tog-enotifrevealaddr' => "Eskertiw xatlarında e-mail adresimdi ko'rset",
 'tog-shownumberswatching' => "Baqlag'an paydalanıwshılar sanın ko'rset",
 'tog-fancysig' => 'İmzalardı wikitext dep qabıl etiw (avtomat siltewsiz)',
-'tog-showjumplinks' => "«O'tip ketiw» siltewlerin qos",
 'tog-uselivepreview' => "Janlı ko'rip shıg'ıwdı qollan (JavaScript) (Sınawda)",
 'tog-forceeditsummary' => "O'zgertiw juwmag'ı bos qalg'anda mag'an eskert",
 'tog-watchlisthideown' => "Baqlaw dizimindegi menin' o'zgertiwlerimdi jasır",
index 89755d5..cde4437 100644 (file)
@@ -84,7 +84,6 @@ $messages = array(
 'tog-shownumberswatching' => 'НапэкӀуэцӀыр я тхылъ кӀэлъыплъыгъуэхэм хэзгъэхьахэм я бжыгъэр гъэлъэгъуэн',
 'tog-oldsig' => 'ӀэпэщӀэдз щыӀэм и япэ-еплъ',
 'tog-fancysig' => 'Викитхылъ ӀэпэщӀэдз Ӏыгъын (автоматикэ техьэпӀэншу)',
-'tog-showjumplinks' => 'ДэӀэпыкъуэгъу техьэпӀэ «техьэн» хэгъэнэн',
 'tog-uselivepreview' => 'Япэ-еплъ щӀэхыр къэгъэсэбэпын (JavaScript хуэныкъуэ) (эксперементалу)',
 'tog-forceeditsummary' => 'КъэӀохун, гъэтэрэзыгъуэм и тепсэлъыхьыпӀэм зыри имытхамэ',
 'tog-watchlisthideown' => 'КӀэлъыплъыгъуэ тхылъым гъэпшкIуэн си гъэтэрэзыгъуэхэр',
index 6a1d29d..88cc443 100644 (file)
@@ -44,7 +44,6 @@ $messages = array(
 'tog-shownumberswatching' => 'لوڑاک ممبرانن تعدادان پشاؤے',
 'tog-oldsig' => 'موجودہ دستخطو نمائش:',
 'tog-fancysig' => '(سادہ دسخط بلا خودکار ربط)',
-'tog-showjumplinks' => 'ھیہ ووشکی څروٹھاوے',
 'tog-uselivepreview' => 'براہِ راست نمائش استعمال کورے (JavaScript ضرورت بوی)',
 'tog-forceeditsummary' => 'کیاوتکی آوا ترمیمی خلاصو خالی پیڅھیتام تھے متے لو دیت',
 'tog-watchlisthideown' => 'زیرِنظرفہرستہ مہ ترمیماتن کھوشاوے',
index a9c1d7d..3b63f01 100644 (file)
@@ -82,7 +82,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Amorê karberunê şêrkerdoğu bıasne',
 'tog-oldsig' => 'İmza mewcude:',
 'tog-fancysig' => 'İmza rê mamelê wikimeqaley bıke (bê girewo otomatik)',
-'tog-showjumplinks' => 'Girê "so"y feal ke',
 'tog-uselivepreview' => 'Verqayto cande bıgurene (JavaScript) (hona cerrebnayene dero)',
 'tog-forceeditsummary' => 'Mı ke xulasa kerde cı vira, hay be mı ser de',
 'tog-watchlisthideown' => 'Vurnayisunê mı lista mına şêrkerdişi de wedare',
index be675cb..eecec65 100644 (file)
@@ -420,7 +420,6 @@ $messages = array(
 'tog-enotifrevealaddr' => 'ە-پوشتامنىڭ مەكەنجايىن ەسكەرتۋ حاتتاردا اش',
 'tog-shownumberswatching' => 'باقىلاپ تۇرعان قاتىسۋشىلاردىڭ سانىن كورسەت',
 'tog-fancysig' => 'قام قولتاڭبا (وزدىكتىك سىلتەمەسىز)',
-'tog-showjumplinks' => '«ٴوتىپ كەتۋ» قاتىناۋ سىلتەمەلەرىن قوس',
 'tog-uselivepreview' => 'تۋرا قاراپ شىعۋدى قولدانۋ (JavaScript) (سىناقتاما)',
 'tog-forceeditsummary' => 'وڭدەمەنىڭ قىسقاشا مازمۇنداماسى بوس قالعاندا ماعان ەسكەرت',
 'tog-watchlisthideown' => 'وڭدەمەلەرىمدى باقىلاۋ تىزىمنەن جاسىر',
index 92403d8..a8a6553 100644 (file)
@@ -383,7 +383,6 @@ $messages = array(
 'tog-enotifrevealaddr' => 'E-poştamnıñ mekenjaýın eskertw xattarda aş',
 'tog-shownumberswatching' => 'Baqılap turğan qatıswşılardıñ sanın körset',
 'tog-fancysig' => 'Qam qoltañba (özdiktik siltemesiz)',
-'tog-showjumplinks' => '«Ötip ketw» qatınaw siltemelerin qos',
 'tog-uselivepreview' => 'Twra qarap şığwdı qoldanw (JavaScript) (Sınaqtama)',
 'tog-forceeditsummary' => 'Öñdemeniñ qısqaşa mazmundaması bos qalğanda mağan eskert',
 'tog-watchlisthideown' => 'Öñdemelerimdi baqılaw tizimnen jasır',
index 33998ba..4412b7b 100644 (file)
@@ -541,7 +541,7 @@ $messages = array(
 'history_short' => '역사',
 'updatedmarker' => '마지막으로 방문한 뒤 바뀜',
 'printableversion' => '인쇄용 문서',
-'permalink' => '고유링크',
+'permalink' => '고유 링크',
 'print' => '인쇄',
 'view' => '보기',
 'edit' => '편집',
@@ -775,10 +775,9 @@ $2',
 'virus-unknownscanner' => '알려지지 않은 백신:',
 
 # Login and logout pages
-'logouttext' => "'''{{SITENAME}}에서 로그아웃했습니다.'''
+'logouttext' => "'''지금 로그아웃했습니다.'''
 
-이대로 이름 없이 {{SITENAME}}을(를) 이용하거나, 방금 사용했던 계정이나 다른 계정으로 다시 <span class='plainlinks'>[$1 로그인]</span>해서 이용할 수 있습니다.
-웹 브라우저의 캐시를 지우지 않으면 몇몇 문서에서 로그인이 되어 있는 것처럼 보일 수 있다는 점을 유의해 주세요.",
+브라우저 캐시를 지우지 않으면 일부 문서에서 로그인이 되어 있는 것처럼 보일 수 있다는 점을 참고하세요.",
 'welcomeuser' => '$1, 환영합니다!',
 'welcomecreation-msg' => '계정이 만들어졌습니다.
 [[Special:Preferences|{{SITENAME}} 사용자 환경 설정]]을 바꿀 수 있습니다.',
@@ -825,7 +824,7 @@ $2',
 'createacct-emailoptional' => '이메일 주소 (선택 사항)',
 'createacct-email-ph' => '이메일 주소를 입력하세요',
 'createacct-another-email-ph' => '이메일 주소를 입력하세요',
-'createaccountmail' => 'ì\9e\84ì\8b\9c ì\9e\84ì\9d\98 ë¹\84ë°\80ë²\88í\98¸ë¥¼ ì\95\84ë\9e\98ì\97\90 ì§\80ì \95í\95\9c ì\9d´ë©\94ì\9d¼ë¡\9c ë³´ë\82´ê¸°',
+'createaccountmail' => '임시 임의 비밀번호를 이메일로 보내기',
 'createacct-realname' => '실명 (선택 사항)',
 'createaccountreason' => '이유:',
 'createacct-reason' => '이유',
@@ -913,6 +912,8 @@ $2',
 'login-abort-generic' => '로그인에 실패했습니다 - 중지됨',
 'loginlanguagelabel' => '언어: $1',
 'suspicious-userlogout' => '브라우저에 이상이 있거나 캐싱 프록시에서 로그아웃을 요청했기 때문에 로그아웃이 거부되었습니다.',
+'createacct-another-realname-tip' => '실명은 선택 사항입니다.
+실명을 입력하면 문서 기여에 사용자의 이름이 들어가게 됩니다.',
 
 # Email sending
 'php-mail-error-unknown' => 'PHP의 mail() 함수에서 알 수 없는 오류가 발생했습니다.',
@@ -1499,7 +1500,7 @@ $1",
 'powersearch-field' => '찾기',
 'powersearch-togglelabel' => '확인:',
 'powersearch-toggleall' => '모두',
-'powersearch-togglenone' => '없음',
+'powersearch-togglenone' => '모두 제외',
 'search-external' => '바깥 찾기',
 'searchdisabled' => '{{SITENAME}} 찾기 기능이 비활성화되어 있습니다.
 기능이 작동하지 않는 동안에는 구글(Google)을 이용해 찾을 수 있습니다.
@@ -1649,10 +1650,10 @@ HTML 태그를 확인하세요.',
 'userrights-no-interwiki' => '다른 위키의 사용자 권한을 바꿀 권한이 없습니다.',
 'userrights-nodatabase' => '데이터베이스 $1이 존재하지 않거나 로컬에 있지 않습니다.',
 'userrights-nologin' => '사용자의 권한을 바꾸기 위해서는 반드시 관리자 계정으로 [[Special:UserLogin|로그인]]해야 합니다.',
-'userrights-notallowed' => 'ë\8b¤ë¥¸ ì\82¬ì\9a©ì\9e\90ì\9d\98 ê¶\8cí\95\9cì\9d\84 ì¡°ì \95할 권한이 없습니다.',
+'userrights-notallowed' => 'ë\8b¤ë¥¸ ì\82¬ì\9a©ì\9e\90ì\9d\98 ê¶\8cí\95\9cì\9d\84 ì\94ê°\80í\95\98ê±°ë\82\98 ì \9cê±°할 권한이 없습니다.',
 'userrights-changeable-col' => '바꿀 수 있는 권한',
 'userrights-unchangeable-col' => '바꿀 수 없는 권한',
-'userrights-conflict' => '사용자 권한에 충돌이 있습니다! 바뀜을 다시 적용하세요.',
+'userrights-conflict' => '사용자 권한 바꾸기가 충돌합니다! 바뀜을 검토하고 확인하세요.',
 'userrights-removed-self' => '자신의 권한을 성공적으로 제거했습니다. 따라서 더 이상 이 문서에 접근할 수 없습니다.',
 
 # Groups
@@ -2335,7 +2336,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'protectedtitlesempty' => '해당 조건에 맞는 만들기 금지 표제어가 없습니다.',
 'listusers' => '사용자 목록',
 'listusers-editsonly' => '기여가 있는 사용자만 보기',
-'listusers-creationsort' => '계정 등록일 순으로 정렬',
+'listusers-creationsort' => '계정을 만든 날짜 순으로 정렬',
 'usereditcount' => '{{PLURAL:$1|편집}} $1회',
 'usercreated' => '$1 $2에 계정 {{GENDER:$3|만들어짐}}',
 'newpages' => '새 문서 목록',
@@ -3318,13 +3319,13 @@ $2',
 'pageinfo-length' => '문서 길이 (바이트)',
 'pageinfo-article-id' => '문서 ID',
 'pageinfo-language' => '문서 내용 언어',
-'pageinfo-robot-policy' => '검색 엔진 통계',
-'pageinfo-robot-index' => '색인 가능',
-'pageinfo-robot-noindex' => '색인 불가능',
+'pageinfo-robot-policy' => '로봇에 의한 색인',
+'pageinfo-robot-index' => '허용됨',
+'pageinfo-robot-noindex' => '불허됨',
 'pageinfo-views' => '읽은 수',
 'pageinfo-watchers' => '문서를 주시하는 사용자 수',
 'pageinfo-few-watchers' => '{{PLURAL:$1|주시하는 사용자}} $1명 미만',
-'pageinfo-redirects-name' => '이 문서로 넘겨주기',
+'pageinfo-redirects-name' => '이 문서의 넘겨주기 수',
 'pageinfo-redirects-value' => '$1개',
 'pageinfo-subpages-name' => '이 문서의 하위 문서',
 'pageinfo-subpages-value' => '$1개 ({{PLURAL:$2|넘겨주기}} $2개, {{PLURAL:$3|넘겨주기 아님}} $3개)',
@@ -3945,11 +3946,11 @@ $3
 $5
 
 인증 코드는 $4에 만료됩니다.',
-'confirmemail_body_set' => 'IP 주소 $1을 사용하는 사용자가
+'confirmemail_body_set' => '$1 IP 주소를 사용하는 사용자가
 {{SITENAME}}의 "$2" 계정의 이메일 주소를 지정하였습니다.
 
 이 계정이 당신의 계정이고 {{SITENAME}}에서 이메일 기능을
-다시 활성화하려면 아래 주소를 열어서 이메일 인증을 해 주세요:
+활성화하려면 아래 주소를 열어서 이메일 인증을 해 주세요:
 
 $3
 
@@ -4231,7 +4232,7 @@ $5
 'logentry-newusers-newusers' => '$1 사용자 계정을 {{GENDER:$2|만들었습니다}}',
 'logentry-newusers-create' => '$1 사용자 계정을 {{GENDER:$2|만들었습니다}}',
 'logentry-newusers-create2' => '$1 사용자가 $3 사용자 계정을 {{GENDER:$2|만들었습니다}}',
-'logentry-newusers-byemail' => '$3 ì\82¬ì\9a©ì\9e\90 ê³\84ì \95ì\9d´ $1ì\97\90 {{GENDER:$2|ë§\8cë\93¤ì\96´ì¡\8c고}} 비밀번호는 이메일로 보냈습니다',
+'logentry-newusers-byemail' => '$3 ì\82¬ì\9a©ì\9e\90 ê³\84ì \95ì\9d\84 $1ë\8b\98ì\9d´ {{GENDER:$2|ë§\8cë\93¤ì\97\88고}} 비밀번호는 이메일로 보냈습니다',
 'logentry-newusers-autocreate' => '$1 사용자 계정을 자동적으로 {{GENDER:$2|만들었습니다}}',
 'logentry-rights-rights' => '$1 사용자가 $3 사용자의 권한을 $4에서 $5으로 {{GENDER:$2|바꾸었습니다}}',
 'logentry-rights-rights-legacy' => '$1 사용자가 $3 사용자의 권한을 {{GENDER:$2|바꾸었습니다}}',
@@ -4314,4 +4315,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 8bd3f35..d31ffd0 100644 (file)
@@ -966,6 +966,7 @@ Ny dhiskwedhir agas trigva ebost pan gestaffo devnydhyoryon erel dhywgh.',
 'recentchanges' => 'Chanjyow a-dhiwedhes',
 'recentchanges-legend' => 'Etholyow an chanjyow a-dhiwedhes',
 'recentchanges-summary' => "Y hyllir helerhi an chanjyow diwettha gwrys dhe'n wiki war an folen-ma.",
+'recentchanges-noresult' => 'Nyns eus chanj vyth dres an termyn res a omdhesedh orth an etholyow-ma.',
 'recentchanges-feed-description' => "Y hyllir helerhi an chanjyow diwettha gwrys dhe'n wiki y'n feed-ma.",
 'recentchanges-label-newpage' => 'Y feu gwruthys folen nowyth gans an chanj-ma',
 'recentchanges-label-minor' => 'Chanj byhan yw hemma',
@@ -1172,13 +1173,17 @@ Diskwedhys a-woles yw an deskrifans war hy [$2 folen dheskrifans] ena.',
 'watchthispage' => 'Golya an folen-ma',
 'unwatch' => 'Diswolya',
 'watchlist-details' => 'Yma {{PLURAL:$1|$1 folen}} war agas rol wolya, marnas folennow keskows.',
-'wlshowlast' => 'Diskwedhes an $1 our $2 dydh $3 diwettha',
+'wlheader-showupdated' => "Yn '''tew''' y tiskwedhir folennow re beu chanjyes a-dhia agas vysytyans diwettha.",
+'wlnote' => "A-woles yma an {{PLURAL:$1|chanj diwettha|'''$1''' chanj diwettha}} y'n {{PLURAL:$2|our|'''$2''' our}} diwettha, a-dhia $3, $4.",
+'wlshowlast' => 'Diskwedhes an $1 our diwettha, an $2 dydh diwettha, po $3',
 'watchlist-options' => 'Etholyow an rol wolya',
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Ow kolya...',
 'unwatching' => 'Ow tisgolya...',
 
+'enotif_reset' => 'Merkya pub folen avel vysytyes',
+
 # Delete
 'deletepage' => 'Dilea an folen',
 'confirm' => 'Afydhya',
@@ -1442,7 +1447,7 @@ Hwi a yll gweles hy fennfenten.',
 'edit-externally' => 'Chanjya an restren-ma dre dowlen a-ves',
 
 # 'all' in various places, this might be different for inflected languages
-'watchlistall2' => 'oll',
+'watchlistall2' => 'puptra',
 'namespacesall' => 'oll',
 'monthsall' => 'oll',
 'limitall' => 'oll',
index dedf480..a8c406b 100644 (file)
@@ -15,6 +15,7 @@
  * @author Growingup
  * @author Kgbek
  * @author Muratjumashev
+ * @author Tynchtyk Chorotegin
  * @author Ztimur
  * @author Викиней
  */
@@ -141,6 +142,8 @@ $messages = array(
 'nov' => 'Ноя',
 'dec' => 'Дек',
 'january-date' => 'Январь (Үчтүн айы) $1',
+'february-date' => '$1-феврал',
+'march-date' => '$1-март',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Категория|Категориялар}}',
@@ -1604,7 +1607,7 @@ To include a file in a page, use a link in one of the following forms:
 'exif-compression-1' => 'Кыстырылбаган',
 
 'exif-copyrighted-true' => 'Автордук укук менен корголгон',
-'exif-copyrighted-false' => 'Ð\9aоомдÑ\83к Ð¼Ò¯Ð»Ðº',
+'exif-copyrighted-false' => 'Ð\90вÑ\82оÑ\80дÑ\83к Ñ\83кÑ\83к Ð°Ð±Ð°Ð»Ñ\8b ÐºÓ©Ñ\80Ñ\81Ó©Ñ\82үлгөн Ñ\8dмеÑ\81',
 
 'exif-unknowndate' => 'Белгисиз дата',
 
index 92bb837..bac6148 100644 (file)
@@ -498,7 +498,6 @@ Ratio data est "\'\'$2\'\'".',
 # Login and logout pages
 'logouttext' => "'''Conventum tuum conclusum est.'''
 
-Ignote continues {{grammar:ablative|{{SITENAME}}}} uti, aut conventum novum vel sub eodem vel novo nomine <span class='plainlinks'>[$1 aperias]</span>.
 Nota bene paginas fortasse videantur quasi tuum conventum esset apertum, priusquam navigatrum purgaveris.",
 'welcomeuser' => 'Salve, $1!',
 'welcomecreation-msg' => 'Ratio tua creata est.
index a37941c..7b1c3d1 100644 (file)
@@ -211,7 +211,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Àmostrar el kadhar de usadores que están akavidando las hojas',
 'tog-oldsig' => 'La firma presente',
 'tog-fancysig' => 'Tratar la firma como un vikiteksto (sin un atamiento otomatiko)',
-'tog-showjumplinks' => 'Aktivar los atamientos de ayudo "{{int:jumpto}}"',
 'tog-uselivepreview' => 'Usar el "previsteo bivo" (JavaScript es menester) (eksperimental)',
 'tog-forceeditsummary' => 'Avizarme cuando dexo el somaryo vazío',
 'tog-watchlisthideown' => 'Esconder mis trocamientos en mi lista de akavidamiento',
index 5f4c2e8..6f76938 100644 (file)
@@ -16,6 +16,7 @@
  * @author Purodha
  * @author Reedy
  * @author Robby
+ * @author Soued031
  * @author Urhixidur
  * @author Zinneke
  * @author לערי ריינהארט
@@ -209,7 +210,7 @@ $messages = array(
 'tog-enotifwatchlistpages' => 'Schéckt mir eng E-Mail wann eng Säit oder e Fichier op menger Iwwerwaachungslëscht geännert gëtt',
 'tog-enotifusertalkpages' => 'Schéckt mir E-Maile wa meng Diskussiounssäit geännert gëtt.',
 'tog-enotifminoredits' => 'Schéckt mir och bei klengen Ännerungen op vu mir iwwerwaachte Säiten oder Fichieren eng E-Mail.',
-'tog-enotifrevealaddr' => 'Meng E-Mailadress an de Benoriichtigungsmaile weisen.',
+'tog-enotifrevealaddr' => 'Meng E-Mail-Adress an de Benoriichtegungsmaile weisen.',
 'tog-shownumberswatching' => "D'Zuel vun de Benotzer déi dës Säit iwwerwaache weisen",
 'tog-oldsig' => 'Aktuell Ënnerschrëft:',
 'tog-fancysig' => 'Ënnerschrëft als Wiki-Text behandelen (Ouni automatesche Link)',
@@ -608,8 +609,6 @@ Den Administrateur den d\'Schreiwe gespaart huet, huet dës Erklärung uginn: "$
 # Login and logout pages
 'logouttext' => "'''Dir sidd elo ausgeloggt.'''
 
-Dir kënnt {{SITENAME}} elo anonym benotzen, oder Iech <span class='plainlinks'>[$1 erëm aloggen]</span>.
-
 Opgepasst: Op verschiddene Säite kann et nach esou aus gesinn, wéi wann Dir nach ageloggt wiert, bis Dir Ärem Browser säin Tëschespäicher (cache) eidel maacht.",
 'welcomeuser' => 'Wëllkomm $1!',
 'welcomecreation-msg' => "Äre Benotzerkont gouf ugeluecht.
@@ -620,7 +619,7 @@ Vergiesst net fir Är [[Special:Preferences|{{SITENAME}} Astellungen]] z'ännere
 'createacct-another-username-ph' => 'De Benotzernumm aginn:',
 'yourpassword' => 'Passwuert:',
 'userlogin-yourpassword' => 'Passwuert',
-'userlogin-yourpassword-ph' => 'Gitt Ärt Passwuert an',
+'userlogin-yourpassword-ph' => 'Gitt Äert Passwuert an',
 'createacct-yourpassword-ph' => 'Gitt e Passwuert an',
 'yourpasswordagain' => 'Passwuert nach eemol antippen:',
 'createacct-yourpasswordagain' => 'Passwuert confirméieren',
@@ -648,16 +647,16 @@ Vergiesst net fir Är [[Special:Preferences|{{SITENAME}} Astellungen]] z'ännere
 'gotaccount' => "Dir hutt schonn e Benotzerkont? '''$1'''.",
 'gotaccountlink' => 'Umellen',
 'userlogin-resetlink' => "Hutt Dir d'Detailer vun Ärem Login vergiess?",
-'userlogin-resetpassword-link' => 'Setzt Ärt Passwuert zréck',
+'userlogin-resetpassword-link' => 'Setzt Äert Passwuert zréck',
 'helplogin-url' => 'Help:Aloggen',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hëllef beim Aloggen]]',
 'createacct-join' => 'Gitt Är Informatioune hei drënner an.',
 'createacct-another-join' => "Gitt d'Informatioune fir den neie Benotzerkont hei drënner an.",
-'createacct-emailrequired' => 'E-Mailadress',
+'createacct-emailrequired' => 'E-Mail-Adress',
 'createacct-emailoptional' => 'E-Mailadress (fakultativ)',
 'createacct-email-ph' => 'Gitt Är E-Mailadress an',
 'createacct-another-email-ph' => 'E-Mailadress aginn',
-'createaccountmail' => 'En temporäert Passwuert benotzen an et per E-Mail un déi E-Mailadress schécken déi hei drënner steet',
+'createaccountmail' => 'En temporäert zoufällegt Passwuert benotzen an et per E-Mail un déi spezifizéiert E-Mailadress schécken',
 'createacct-realname' => 'Richtegen Numm (fakultativ)',
 'createaccountreason' => 'Grond:',
 'createacct-reason' => 'Grond',
@@ -706,8 +705,8 @@ Probéiert w.e.g. nach eng Kéier.",
 'passwordremindertext' => 'Iergendeen (waarscheinlech Dir, mat der IP-Adress $1) huet en neit Passwuert fir {{SITENAME}} ($4) gefrot. Een temporäert Passwuert fir de Benotzer $2 gouf ugeluecht an et ass: $3. Wann et dat ass, wat Dir wollt, da sollt Dir Iech elo aloggen an en neit Passwuert eraussichen. Äert temporäert Passwuert leeft a(n) {{PLURAL:$5|engem Dag| $5 Deeg}} of.
 
 Wann een aneren dës Ufro sollt gemaach hunn oder wann Dir Iech an der Zwëschenzäit nees un Äert Passwuert erënnere kënnt, an Dir Äert Passwuert net ännere wëllt, da kënnt Dir weider Äert aalt Passwuert benotzen.',
-'noemail' => 'De Benotzer "$1" huet keng E-Mailadress uginn.',
-'noemailcreate' => 'Dir musst eng valabel E-Mailadress uginn',
+'noemail' => 'De Benotzer "$1" huet keng E-Mail-Adress uginn.',
+'noemailcreate' => 'Dir musst eng valabel E-Mail-Adress uginn',
 'passwordsent' => 'Een neit Passwuert gouf un déi fir de Benotzer "$1" gespäichert E-Mailadress geschéckt.
 Mellt Iech w.e.g. domat un, soubal Dir et kritt hutt.',
 'blocked-mailpassword' => "Déi vun Iech benotzten IP-Adress ass fir d'Ännere vu Säite gespaart. Fir Mëssbrauch ze verhënneren, gouf d'Méiglechkeet fir een neit Passwuert unzefroen och gespaart.",
@@ -718,13 +717,13 @@ Fir de Mëssbrauch vun dëser Funktioun ze verhënneren kann nëmmen all {{PLURA
 'mailerror' => 'Feeler beim Schécke vun der E-Mail: $1',
 'acct_creation_throttle_hit' => 'Visiteure vun dëser Wiki déi Är IP-Adress hu {{PLURAL:$1|schonn $1 Benotzerkont|scho(nn) $1 Benotzerkonten}} an de leschten Deeg opgemaach, dëst ass déi maximal Zuel déi an dësem Zäitraum erlaabt ass.
 Dofir kënne Visiteure déi dës IP-Adress benotzen den Ament keng Benotzerkonten opmaachen.',
-'emailauthenticated' => 'Är E-Mailadress gouf den $2 ëm $3 Auer bestätegt.',
+'emailauthenticated' => 'Är E-Mail-Adress gouf den $2 ëm $3 Auer bestätegt.',
 'emailnotauthenticated' => 'Är E-Mail Adress gouf <strong>nach net confirméiert</strong>.<br />
 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-Mailadress gëtt net akzeptéiert well se en ongëltegt Format (z.B. ongëlteg Zeechen) ze hu schéngt.
-Gitt eng valabel E-Mailadress an oder loosst dëst Feld eidel.',
+'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.',
 'accountcreated' => 'De Kont gouf geschaf',
@@ -740,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',
@@ -778,7 +780,7 @@ Vläicht hutt Dir Äert Passwuert scho geännert oder en neit temporäert Passwu
 'passwordreset-domain' => 'Domaine:',
 'passwordreset-capture' => "D'Mail kucken?",
 'passwordreset-capture-help' => 'Wann Dir dës Këscht ukräizt, gëtt de Mail (mam temporäre Passwuert) Iech gewisen an dem Benotzer geschéckt.',
-'passwordreset-email' => 'E-Mailadress:',
+'passwordreset-email' => 'E-Mail-Adress:',
 'passwordreset-emailtitle' => 'Detailer vum Benotzerkont op{{SITENAME}}',
 'passwordreset-emailtext-ip' => "Iergendee mat der IP-Adress $1, wahrscheinlech Dir selwer, huet d'Zrécksetze vun Ärem Passwuert op {{SITENAME}} gefrot ($4). {{PLURAL:$3|De Benotzerkont ass|D'Benutzerkonte si}} mat dëser E-Mail-Adress verbonn:
 
@@ -808,13 +810,16 @@ Temporärt Passwuert: $2',
 'changeemail-oldemail' => 'Aktuell Mailadress:',
 'changeemail-newemail' => 'Nei Mailadress:',
 'changeemail-none' => '(keng)',
-'changeemail-password' => 'Ärt {{SITENAME}}-Passwuert:',
+'changeemail-password' => 'Äert {{SITENAME}}-Passwuert:',
 'changeemail-submit' => 'Mailadress änneren',
 'changeemail-cancel' => 'Ofbriechen',
 
 # Special:ResetTokens
+'resettokens' => 'Token zrécksetzen',
+'resettokens-legend' => 'Token zrécksetzen',
 'resettokens-tokens' => 'Token:',
 'resettokens-token-label' => '$1 (aktuelle Wäert: $2)',
+'resettokens-done' => 'Token zréckgesat.',
 
 # Edit page toolbar
 'bold_sample' => 'Fettgedréckten Text',
@@ -884,7 +889,7 @@ De Grond dofir war:
 
 Dir kënnt de(n) $1 oder soss een [[{{MediaWiki:Grouppage-sysop}}|Administrateur]] kontaktéieren, fir iwwer déi Spär ze diskutéieren.
 
-Bedenkt datt Dir d\'Fonctioun "Dësem Benotzer eng E-Mail schécken" benotze kënnt wann Dir eng gëlteg E-Mailadress an Ären [[Special:Preferences|Astellungen]] uginn hutt a wann dat net fir Iech gespaart gouf.
+Bedenkt datt Dir d\'Fonctioun "Dësem Benotzer eng E-Mail schécken" benotze kënnt wann Dir eng gëlteg E-Mail-Adress an Ären [[Special:Preferences|Astellungen]] uginn hutt a wann dat net fir Iech gespaart gouf.
 
 Är aktuell IP-Adress ass $3 an d\'Nummer vun Ärer Spär ass $5.
 Gitt dës Donnéeë w.e.g bei allen Ufroen zu dëser Spär un.',
@@ -955,7 +960,7 @@ Wann de Problem dann ëmmer nach bestoe sollt, da versicht Iech [[Special:UserLo
 Wann de Problem dann ëmmer nach bestoe sollt, versicht Iech [[Special:UserLogout|auszeloggen]] an dann erëm anzeloggen.'''",
 'token_suffix_mismatch' => "'''Är Ännerung gouf refuséiert, well Äre Browser Zeechen am Ännerungs-Identifiant verännert huet.'''
 D'Ännerung gouf refuséiert, fir ze verhënneren datt den Text op der Säit onliesbar gëtt.
-Dëst geschitt heiandsdo wann Dir en anonyme Proxy-Service um Internet benotzt.",
+Dëst geschitt heiansdo wann Dir en anonyme Proxy-Service um Internet benotzt.",
 'edit_form_incomplete' => "'''En Deel vum Ännerungsformulaire koum net um Server un; iwwerpréift w.e.g ob Är Ännerunge komplett sinn a probéiert nach emol.'''",
 'editing' => 'Ännere vu(n) $1',
 'creating' => '$1 gëtt ugeluecht',
@@ -1375,7 +1380,7 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'prefs-reset-intro' => "Dir kënnt dës Säit benotze fir Är Astellungen zréck op d'Standard-Astllungen ze setzen.
 Dëst kann net réckgängeg gemaach ginn.",
 'prefs-emailconfirm-label' => 'E-Mail Confirmatioun:',
-'youremail' => 'E-Mailadress:',
+'youremail' => 'E-Mail-Adress:',
 'username' => '{{GENDER:$1|Benotzernumm}}:',
 'uid' => '{{GENDER:$1|Benotzer}} ID:',
 'prefs-memberingroups' => '{{GENDER:$2|Member}} vun {{PLURAL:$1|der Benotzergrupp|de Benotzergruppen}}:',
@@ -1398,7 +1403,7 @@ Si muss manner wéi $1 {{PLURAL:$1|Zeechen|Zeechen}} hunn.',
 'prefs-help-realname' => 'Äre richtegen Numm ass fakultativ. Wann Dir en ugitt, gëtt e benotzt fir Iech Är Kontributiounen zouzeuerdnen.',
 'prefs-help-email' => "D'E-Mailadress ass fakultativ, awer si gëtt gebraucht fir Iech Äert Passwuert ze mailen, wann Dir et géift vergiessen.",
 'prefs-help-email-others' => 'Dir kënnt Iech och dofir decidéieren datt Anerer Iech iwwer Är Diskussiounssäit kontaktéieren ouni datt Dir dobäi Är Identitéit verrode musst.',
-'prefs-help-email-required' => 'Eng gëlteg E-Mailadress gëtt heifir gebraucht.',
+'prefs-help-email-required' => 'Eng gëlteg E-Mail-Adress gëtt heifir gebraucht.',
 'prefs-info' => 'Grondinformatioun',
 'prefs-i18n' => 'Internationalisatioun',
 'prefs-signature' => 'Ënnerschrëft',
@@ -1417,8 +1422,8 @@ Si muss manner wéi $1 {{PLURAL:$1|Zeechen|Zeechen}} hunn.',
 'prefs-diffs' => 'Ënnerscheeder',
 
 # User preference: email validation using jQuery
-'email-address-validity-valid' => "D'E-Mailadress schéngt valabel ze sinn",
-'email-address-validity-invalid' => 'Gitt eng valabel e-Mailadress an',
+'email-address-validity-valid' => "D'E-Mail-Adress schéngt valabel ze sinn",
+'email-address-validity-invalid' => 'Gitt eng valabel E-Mail-Adress an',
 
 # User rights
 'userrights' => 'Benotzerrechterverwaltung',
@@ -1438,10 +1443,10 @@ Si muss manner wéi $1 {{PLURAL:$1|Zeechen|Zeechen}} hunn.',
 'userrights-no-interwiki' => "Dir hutt net déi néideg Rechter, fir d'Rechter vu Benoutzer op anere Wikien z'änneren.",
 'userrights-nodatabase' => "D'Datebank $1 gëtt et net oder se ass net lokal.",
 'userrights-nologin' => 'Dir musst mat engem Administrateurs-Benotzerkont [[Special:UserLogin|ageloggt sinn]], fir Benotzerrechter änneren ze kënnen.',
-'userrights-notallowed' => "Äre Benotzerkont hutt net déi néideg Rechter fir d'Rechter vun anere Benotzer z'änneren.",
+'userrights-notallowed' => 'Dir hutt net déi néideg Rechter fir Rechter vun anere Benotzer derbäizesetzen oder ewechzehuelen.',
 'userrights-changeable-col' => 'Gruppen déi Dir ännere kënnt',
 'userrights-unchangeable-col' => 'Gruppen déi Dir net ännere kënnt',
-'userrights-conflict' => 'Konflikt bäi de Benotzerrechter! Maacht Är Ännerunge w.e.g. nach eng Kéier.',
+'userrights-conflict' => 'Konflikt bäi de Benotzerrechter! Kuckt Är Ännerunge w.e.g. no a maacht se w.e.g. nach eng Kéier.',
 'userrights-removed-self' => 'Dir hutt Är eege Rechter ewechgeholl. Dofir kënnt Dir net méi op dës Säit zougräifen.',
 
 # Groups
@@ -1747,7 +1752,7 @@ D'Eropluede vu JAVA-Fichieren ass net erlaabt, well si d'Ëmgoe vu Sécherheetsm
 'filewasdeleted' => 'E Fichier mat dësem Numm gouf schonn eemol eropgelueden an duerno nees geläscht. Kuckt w.e.g op $1 no, ier Dir dee Fichier nach eng Kéier eropluet.',
 'filename-bad-prefix' => "Den Numm vum Fichier fänkt mat '''„$1“''' un. Dësen Numm krut en automatesch vun der Kamera a seet näischt iwwer dat aus, wat drop ass. Gitt dem Fichier w.e.gl. en Numm, deen den Inhalt besser beschreift, an deen net verwiesselt ka ginn.",
 'upload-success-subj' => 'Eroplueden erfollegräich',
-'upload-success-msg' => 'Ärt Eropluede vun [$2] huet fonctionnéiert. De Fichier ass hei disponibel: [[:{{ns:file}}:$1]]',
+'upload-success-msg' => 'Äert Eropluede vun [$2] huet fonctionnéiert. De Fichier ass hei disponibel: [[:{{ns:file}}:$1]]',
 'upload-failure-subj' => 'Problem beim Eroplueden',
 'upload-failure-msg' => 'Et gouf e Problem mam Fichier vu(n) [$2] deen Dir eropgelueden hutt:
 
@@ -2102,7 +2107,7 @@ An all Rei sti Linken zur éischter an zweeter Viruleedung, souwéi d\'Zil vun d
 'movethispage' => 'Dës Säit réckelen',
 'unusedimagestext' => 'Dës Fichieren gëtt et, si sinn awer a kenger Säit agebonn.
 Denkt w.e.g. drunn datt aner Internetsäiten dëse Fichier mat enger direkter URL verlinke kënnen. An dem Fall gëtt de Fichier hei opgelëscht obwuel en aktiv gebraucht gëtt.',
-'unusedcategoriestext' => 'Dës Kategoriesäiten existéieren, mä weder en Artikel nach eng Kategorie maachen dovunner Gebrauch.',
+'unusedcategoriestext' => 'Dës Kategoriesäiten existéieren, mä weder en Artikel nach eng Kategorie maachen dovu Gebrauch.',
 'notargettitle' => 'Dir hutt keng Säit uginn.',
 'notargettext' => 'Dir hutt keng Zilsäit oder keen Zilbenotzer uginn fir déi dës Funktioun ausgeféiert soll ginn.',
 'nopagetitle' => 'Zilsäit gëtt et net',
@@ -2220,13 +2225,13 @@ Et ginn [[{{MediaWiki:Listgrouprights-helppage}}|zousätzlech Informatiounen]] i
 'emailuser-title-notarget' => 'Dem Benotzer eng E-Mail schécken',
 'emailpage' => 'Dem Benotzer eng E-Mail schécken',
 'emailpagetext' => 'Dir kënnt mat dësem Formulaire {{GENDER:$1|dësem Benotzer}} en E-Mail-Message schécken.
-D\'E-Mailadress, déi Dir an [[Special:Preferences|Ären Astellungen]] aginn hutt, steet an der "From" Adress vun der Mail, sou datt den Destinataire Iech direkt äntwerte kann.',
+D\'E-Mail-Adress, déi Dir an [[Special:Preferences|Ären Astellungen]] aginn hutt, steet an der "From" Adress vun der Mail, sou datt den Destinataire Iech direkt äntwerte kann.',
 'usermailererror' => 'E-Mail-Objet mellt deen heite Feeler:',
 'defemailsubject' => '{{SITENAME}} E-Mail vum Benotzer "$1"',
 'usermaildisabled' => 'Benotzer E-Mail ausgeschalt',
 'usermaildisabledtext' => 'Dir kënnt op dëser Wiki anere Benotzer keng E-Mail schécken',
 'noemailtitle' => 'Keng E-Mailadress',
-'noemailtext' => 'Dëse Benotzer huet keng valabel E-Mailadress uginn.',
+'noemailtext' => 'Dëse Benotzer huet keng valabel E-Mail-Adress uginn.',
 'nowikiemailtitle' => 'Keng E-Mail erlaabt',
 'nowikiemailtext' => 'Dëse Benotzer wëllt keng E-Maile vun anere Benotzer kréien.',
 'emailnotarget' => 'Et gëtt keen oder just een net valabele Benotzernumm fir den Empfänger.',
@@ -3022,7 +3027,7 @@ Erlaabt et e Grond an de Resumé derbäizesetzen.',
 # Spam protection
 'spamprotectiontitle' => 'Spamfilter',
 'spamprotectiontext' => "D'Säit déi dir späichere wollt gouf vum Spamfilter gespaart.
-Dëst warscheinlech duerch en externe Link den op der schwaarzer Lëscht (blacklist) vun den externe Säite steet.",
+Dëst wahrscheinlech duerch en externe Link den op der schwaarzer Lëscht (blacklist) vun den externe Säite steet.",
 'spamprotectionmatch' => "'''Dësen Text gouf vum Spamfilter fonnt: ''$1'''''",
 'spambot_username' => 'Botz vum Spam duerch MediaWiki',
 'spam_reverting' => 'Déi lescht Versioun ouni Linken op $1 restauréieren.',
@@ -3041,13 +3046,13 @@ Dëst warscheinlech duerch en externe Link den op der schwaarzer Lëscht (blackl
 'pageinfo-length' => 'Gréisst vun der Säit (a Bytes)',
 'pageinfo-article-id' => 'ID (Nummer) vun der Säit',
 'pageinfo-language' => 'Sprooch vum Inhalt vun der Säit',
-'pageinfo-robot-policy' => 'Sichmaschinnestatus',
-'pageinfo-robot-index' => 'Indexéierbar',
-'pageinfo-robot-noindex' => 'Net indexéierbar',
+'pageinfo-robot-policy' => 'Indexéierung duerch Botten',
+'pageinfo-robot-index' => 'Erlaabt',
+'pageinfo-robot-noindex' => 'Net erlaabt',
 'pageinfo-views' => 'Zuel vun de Kéieren déi dës Säit gekuckt gouf',
 'pageinfo-watchers' => "Zuel vun de Benotzer déi d'Säit iwwerwaachen",
 'pageinfo-few-watchers' => 'Manner wéi $1 {{PLURAL:$1|Benotzer deen iwwerwaacht|Benotzer déi iwwerwaachen}}',
-'pageinfo-redirects-name' => 'Viruleedungen op dës Säit',
+'pageinfo-redirects-name' => 'Zuel vun de Viruleedungen op dës Säit',
 'pageinfo-subpages-name' => 'Ënnersäite vun dëser Säit',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|Viruleedung|Viruleedungen}}; $3 {{PLURAL:$3|Ënnersäit|Ënnersäiten}})',
 'pageinfo-firstuser' => '1. Auteur vun der Säit',
@@ -3596,7 +3601,7 @@ Déi aner sinn am Standard verstoppt.
 # Email address confirmation
 'confirmemail' => 'E-Mailadress confirméieren',
 'confirmemail_noemail' => 'Dir hutt keng gëlteg E-Mail-Adress an Äre [[Special:Preferences|Benotzerastellungen]] agedro.',
-'confirmemail_text' => "Ier Dir d'E-Mailfunktioune vun {{SITENAME}} benotze kënnt musst dir als éischt Är E-Mailadress confirméieren. Dréckt w.e.g. de Knäppchen hei ënnendrënner fir eng Confirmatiouns-E-Mail op déi Adress ze schécken déi Dir uginn hutt. An där E-Mail steet e Link mat engem Code, deen dir dann an Ärem Browser opmaache musst fir esou ze bestätegen, datt Är Adress och wierklech existéiert a valabel ass.",
+'confirmemail_text' => "Ier Dir d'E-Mailfunktioune vun {{SITENAME}} benotze kënnt musst dir als éischt Är E-Mail-Adress confirméieren. Dréckt w.e.g. de Knäppchen hei ënnendrënner fir eng Confirmatiouns-E-Mail op déi Adress ze schécken déi Dir uginn hutt. An där E-Mail steet e Link mat engem Code, deen dir dann an Ärem Browser opmaache musst fir esou ze bestätegen, datt Är Adress och wierklech existéiert a valabel ass.",
 'confirmemail_pending' => 'Dir krut schonn e Confirmatiouns-Code per E-Mail geschéckt. Wenn Dir Äre Benotzerkont eréischt elo kuerz opgemaach hutt, da gedëllegt Iech nach e puer Minutten bis Är E-Mail ukomm ass, ier Dir een neie Code ufrot.',
 'confirmemail_send' => 'Confirmatiouns-E-Mail schécken',
 'confirmemail_sent' => 'Confirmatiouns-E-Mail gouf geschéckt.',
@@ -3607,11 +3612,11 @@ Iwwerpréift w.e.g. är E-Mailadress op ongëlteg Zeechen.
 
 Feelermeldung vum Mailserver: $1',
 'confirmemail_invalid' => "Ongëltege Confirmatiounscode. Eventuell ass d'Gëltegkeetsdauer vum Code ofgelaf.",
-'confirmemail_needlogin' => 'Dir musst iech $1, fir är E-Mailadress ze confirméieren.',
+'confirmemail_needlogin' => 'Dir musst iech $1, fir är E-Mail-Adress ze confirméieren.',
 'confirmemail_success' => 'Är E-Mailadress gouf confirméiert. Där kënnt iech elo aloggen an a vollem Ëmfang vun der Wiki profitéieren.',
-'confirmemail_loggedin' => 'Är E-Mailadress gouf elo confirméiert.',
+'confirmemail_loggedin' => 'Är E-Mail-Adress gouf elo confirméiert.',
 'confirmemail_error' => 'Et ass eppes falsch gelaf bäim Späichere vun ärer Confirmatioun.',
-'confirmemail_subject' => 'Confirmatioun vun der E-Mailadress fir {{SITENAME}}',
+'confirmemail_subject' => 'Confirmatioun vun der E-Mail-Adress fir {{SITENAME}}',
 'confirmemail_body' => 'E Benotzer, waarscheinlech dir selwer, hutt mat der IP Adress $1 de Benotzerkont "$2" um Site {{SITENAME}} opgemaach.
 
 Fir ze bestätegen, datt dee Kont iech wierklech gehéiert a fir d\'E-Mail-Funktiounen um Site {{SITENAME}} z\'aktivéieren, maacht w.e.g. dëse Link an ärem Browser op:
@@ -3623,30 +3628,30 @@ $5
 
 Sollt et sech net ëm äre Benotzerkont handelen, da maacht de Link *net* op. De Confirmatiounscode ass gëlteg bis de(n) $4.',
 'confirmemail_body_changed' => 'E Benotzer, wahrscheinlech Dir selwer, vun der IP-Adress $1,
-huet d\'E-Mailadress vum Benotzerkont "$2" op dës Adress op {{SITENAME}} geännert.
+huet d\'E-Mail-Adress vum Benotzerkont "$2" op dës Adress op {{SITENAME}} geännert.
 
 Fir ze confirméieren datt dëse Benotzerkont Iech wierklech gehéiert a fir d\'E-Mailfonctiounen op {{SITENAME}} ze reaktivéieren, maacht dës Link an Ärem Browser op:
 
 $3
 
-Wann de Benotzerkont Iech *net* gehéiert, da klickt op dëse Link fir d\'Confirmatioun vun der E-Mailadress auszeschalten:
+Wann de Benotzerkont Iech *net* gehéiert, da klickt op dëse Link fir d\'Confirmatioun vun der E-Mail-Adress auszeschalten:
 
 $5
 
-Dëse Confirmatiouns-Code leeft den $4 of.',
+Dëse Confirmatiounscode leeft den $4 of.',
 'confirmemail_body_set' => 'Iergendeen, wahrscheinlech Dir selwer, vun der IP-Adress $1,
-huet d\'E-Mailadress vum Benotzerkont "$2" op dës Adress op {{SITENAME}} geännert.
+huet d\'E-Mail-Adress vum Benotzerkont "$2" op dës Adress op {{SITENAME}} geännert.
 
 Fir ze confirméieren datt dëse Benotzerkont Iech wierklech gehéiert a fir d\'E-Mailfonctiounen op {{SITENAME}} ze reaktivéieren, maacht dës Link an Ärem Browser op:
 
 $3
 
-Wann de Benotzerkont Iech *net* gehéiert, da klickt op dëse Link fir d\'Confirmatioun vun der E-Mailadress auszeschalten:
+Wann de Benotzerkont Iech *net* gehéiert, da klickt op dëse Link fir d\'Confirmatioun vun der E-Mail-Adress auszeschalten:
 
 $5
 
-Dëse Confirmatiouns-Code leeft den $4 of.',
-'confirmemail_invalidated' => 'Confirmatioun vun der E-Mailadress annulléiert',
+Dëse Confirmatiounscode leeft den $4 of.',
+'confirmemail_invalidated' => 'Confirmatioun vun der E-Mail-Adress annulléiert',
 'invalidateemail' => "Annulléier d'E-Mailconfirmation",
 
 # Scary transclusion
@@ -3994,4 +3999,10 @@ 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-value' => '$1 {{PLURAL:$1|Sekonn|Sekonnen}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|Sekonn|Sekonnen}}',
+'limitreport-postexpandincludesize-value' => '$1/$2 Byten',
+'limitreport-templateargumentsize-value' => '$1/$2 Byten',
+
 );
index 10b888f..40d7fcc 100644 (file)
@@ -1348,10 +1348,10 @@ Cиягьда авай анжах (* лишандихъ галаз эгечIза
 'compare-page1' => 'Чар 1',
 
 # New logging system
-'logentry-move-move' => '$3 макъаладин тӀвар $4 -диз масакӀа хъувуна',
-'logentry-move-move-noredirect' => '$3 макъаладин тӀвар, ракъурунин винелай $4 -диз масакӀа хъувуна',
-'logentry-move-move_redir' => '$3 макъаладин тӀвар, ракъурун тун тавуна $4 -диз масакӀа хъувуна',
-'logentry-move-move_redir-noredirect' => '$3 макъаладин тӀвар, ракъурун тун тавуна ва ракъурунин винелай $4 -диз масакӀа хъувуна',
+'logentry-move-move' => '$1 $3 макъаладин тӀвар $4 -диз масакӀа хъувуна',
+'logentry-move-move-noredirect' => '$1 $3 макъаладин тӀвар, ракъурунин винелай $4 -диз масакӀа хъувуна',
+'logentry-move-move_redir' => '$1 $3 макъаладин тӀвар, ракъурун тун тавуна $4 -диз масакӀа хъувуна',
+'logentry-move-move_redir-noredirect' => '$1 $3 макъаладин тӀвар, ракъурун тун тавуна ва ракъурунин винелай $4 -диз масакӀа хъувуна',
 'logentry-newusers-autocreate' => 'Уртахдин $1 учётдин кхьин автоматиквилели туькӀуьр хьанва',
 'rightsnone' => '(садни)',
 
index 7173287..7b2c80f 100644 (file)
@@ -41,7 +41,6 @@ $messages = array(
 'tog-shownumberswatching' => "Ndaganga obungi bw'abagoberera olupapula",
 'tog-oldsig' => 'Omukono gwo kakano:',
 'tog-fancysig' => 'Omukono gubemu obubonero bwa ki-wiki (naye nga tegufuuka nyunzi)',
-'tog-showjumplinks' => 'Wabeerewo enyunzi eza "Genda ku"',
 'tog-uselivepreview' => 'Enkyukakyuka ze nkoze zirabikirewo nga tekyetaagisiza kumala kunyiga ppeesa (kyetaagisa JavaScript)(Kikyagezesebwa)',
 'tog-forceeditsummary' => 'Ŋambaako bwe mba ŋenda okuleka nga sinnyonyodde bye nkyusizza',
 'tog-watchlisthideown' => "Nze bye nkyusizza bireme okulabikira mu lukalala lw'empapula ze ngoberera",
index 87479f1..de6d870 100644 (file)
@@ -35,7 +35,6 @@ $messages = array(
 'tog-enotifrevealaddr' => 'Kamukile zwa adress di meli di xete peson kwa melina notifikasyona',
 'tog-shownumberswatching' => 'Kamukile tali di kentezi sebelu',
 'tog-fancysig' => "Ro sebu e data (dicon ling'ki auto)",
-'tog-showjumplinks' => 'Nyembulisize "sinkumukezi" ling\'ki',
 'tog-uselivepreview' => 'Sebelize live PendiBe (bulukezi JavaScript) (yem nca)',
 'tog-watchlisthideown' => 'Cwankekile zwa afina di zwa mukoloko di kentezi',
 'tog-watchlisthidebots' => 'Cwankekile roboti di zwa mukoloko di kentezi',
index b7d9ff4..fc8ba92 100644 (file)
@@ -158,6 +158,18 @@ $messages = array(
 'oct' => 'oktobrī,',
 'nov' => 'novembrī,',
 'dec' => 'decembrī,',
+'january-date' => '$1. janvāris',
+'february-date' => '$1. februāris',
+'march-date' => '$1. marts',
+'april-date' => '$1. aprīlis',
+'may-date' => '$1. maijs',
+'june-date' => '$1. jūnijs',
+'july-date' => '$1. jūlijs',
+'august-date' => '$1. augusts',
+'september-date' => '$1. septembris',
+'october-date' => '$1. oktobris',
+'november-date' => '$1. novembris',
+'december-date' => '$1. decembris',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategorija|Kategorijas}}',
@@ -238,6 +250,7 @@ $messages = array(
 'create-this-page' => 'Izveidot šo lapu',
 'delete' => 'Dzēst',
 'deletethispage' => 'Dzēst šo lapu',
+'undeletethispage' => 'Atjaunot šo lapu',
 'undelete_short' => 'Atjaunot $1 {{PLURAL:$1|versiju|versijas}}',
 'viewdeleted_short' => 'Apskatīt {{PLURAL:$1|vienu dzēstu labojumu|$1 dzēstus labojumus}}',
 'protect' => 'Aizsargāt',
@@ -435,13 +448,17 @@ Vari turpināt to izmantot anonīmi, vari <span class='plainlinks'>[$1 atgriezti
 'yourname' => 'Tavs lietotājvārds',
 'userlogin-yourname' => 'Lietotājvārds',
 'userlogin-yourname-ph' => 'Ievadiet savu lietotājvārdu',
+'createacct-another-username-ph' => 'Ievadiet lietotājvārdu',
 'yourpassword' => 'Tava parole:',
 'userlogin-yourpassword' => 'Parole',
 'userlogin-yourpassword-ph' => 'Ievadiet savu paroli',
+'createacct-yourpassword-ph' => 'Ievadiet paroli',
 'yourpasswordagain' => 'Atkārto paroli',
+'createacct-yourpasswordagain' => 'Apstipriniet paroli',
+'createacct-yourpasswordagain-ph' => 'Vēlreiz ievadiet paroli',
 'remembermypassword' => 'Atcerēties pēc pārlūka aizvēršanas (spēkā ne vairāk kā $1 {{PLURAL:$1|diena|dienas}}).',
 'userlogin-remembermypassword' => 'Atcerēties mani',
-'userlogin-signwithsecure' => 'Pieslēgties ar drošu serveri',
+'userlogin-signwithsecure' => 'Izmantot drošu savienojumu',
 'securelogin-stick-https' => 'Saglabāt HTTPS savienojumu pēc pieslēgšanās',
 'yourdomainname' => 'Tavs domēns',
 'password-change-forbidden' => 'Šajā wiki paroles nevar mainīt.',
@@ -461,12 +478,24 @@ Vari turpināt to izmantot anonīmi, vari <span class='plainlinks'>[$1 atgriezti
 'gotaccount' => "Tev jau ir lietotājvārds? '''$1'''!",
 'gotaccountlink' => 'Dodies iekšā',
 'userlogin-resetlink' => 'Esat aizmirsis savu pieslēgšanās informāciju?',
+'createacct-emailrequired' => 'E-pasta adrese',
+'createacct-emailoptional' => 'E-pasta adrese (nav obligāta)',
+'createacct-email-ph' => 'Ievadiet savu e-pasta adresi',
+'createacct-another-email-ph' => 'Ievadiet e-pasta adresi',
 'createaccountmail' => 'pa e-pastu',
+'createacct-realname' => 'Īstais vārds (nav obligāts)',
 'createaccountreason' => 'Iemesls:',
+'createacct-reason' => 'Iemesls',
+'createacct-reason-ph' => 'Kāpēc jūs veidojat citu kontu',
+'createacct-captcha' => 'Drošības pārbaude',
+'createacct-another-submit' => 'Izveidot citu lietotāja kontu',
+'createacct-benefit-body1' => '{{PLURAL:$1|labojums|labojumi}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|lapa|lapas}}',
 'badretype' => 'Tevis ievadītās paroles nesakrīt.',
 'userexists' => 'Ievadītais lietotājvārds jau ir aizņemts.
 Lūdzu, izvēlieties citu vārdu.',
 'loginerror' => 'Neveiksmīga ieiešana',
+'createacct-error' => 'Konta izveides kļūda',
 'createaccounterror' => 'Neizdevās izveidot kontu: $1',
 'nocookiesnew' => 'Lietotājvārds tika izveidots, bet tu neesi iegājis iekšā. {{SITENAME}} izmanto sīkdatnes (<i>cookies</i>), lai lietotāji varētu tajā ieiet. Tavs pārlūks nepieņem tās. Lūdzu, atļauj to pieņemšanu un tad nāc iekšā ar savu lietotājvārdu un paroli.',
 'nocookieslogin' => '{{SITENAME}} izmanto sīkdatnes (<i>cookies</i>), lai lietotāji varētu ieiet tajā. Diemžēl tavs pārlūks tos nepieņem. Lūdzu, atļauj to pieņemšanu un mēģini vēlreiz.',
@@ -548,7 +577,7 @@ Tu jau esi veiksmīgi nomainījis savu galveno paroli, vai arī esi pieprasījis
 'passwordreset-emailtitle' => 'Konta informācija {{SITENAME}}',
 'passwordreset-emailelement' => 'Lietotājvārds: $1
 Pagaidu parole: $2',
-'passwordreset-emailsent' => 'Atgādinājuma e-pasts ir nosūtīts.',
+'passwordreset-emailsent' => 'Paroles atiestatīšanas e-pasts ir nosūtīts.',
 'passwordreset-emailsent-capture' => 'Atgādinājuma e-pasta ziņojums ir nosūtīts, tas parādīts zemāk.',
 'passwordreset-emailerror-capture' => 'Atgādinājuma e-pasta ziņojums tika izveidots, tas parādīts zemāk, bet nosūtīšana lietotājam neizdevās: $1',
 
@@ -688,6 +717,7 @@ Ja tas joprojām nedarbojas, mēģini [[Special:UserLogout|izlogoties ārā]] un
 '''Ja šis bija parasts rediģēšanas mēģinājums, mēģini vēlreiz.
 Ja tas joprojām nedarbojas, mēģini [[Special:UserLogout|izlogoties ārā]] un ielogoties no jauna.'''",
 'editing' => 'Izmainīt $1',
+'creating' => 'Izveido lapu $1',
 'editingsection' => 'Izmainīt $1 (sadaļa)',
 'editingcomment' => 'Izmainīt $1 (jauna sadaļa)',
 'editconflict' => 'Izmaiņu konflikts: $1',
@@ -940,6 +970,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)',
@@ -1231,6 +1262,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',
@@ -1632,6 +1664,7 @@ Katrā rindiņā ir saites uz pirmo un otro pāradresācijas lapu, kā arī pirm
 'mostlinkedtemplates' => 'Visvairāk izmantotās veidnes',
 'mostcategories' => 'Raksti ar visvairāk kategorijām',
 'mostimages' => 'Attēli, uz kuriem ir visvairāk saišu',
+'mostinterwikis' => 'Lapas ar visvairāk starpviki saitēm',
 'mostrevisions' => 'Raksti, kuriem ir visvairāk iepriekšēju versiju',
 'prefixindex' => 'Meklēt pēc virsraksta pirmajiem burtiem',
 'prefixindex-namespace' => 'Visas lapas ar prefiksu ($1 vārdtelpa)',
@@ -1752,6 +1785,7 @@ Papildu informāciju par katru individuālu piekļuves tiesību veidu, iespējam
 'mailnologin' => 'Nav adreses, uz kuru sūtīt',
 'mailnologintext' => 'Tev jābūt [[Special:UserLogin|iegājušam]], kā arī tev jābūt [[Special:Preferences|norādītai]] derīgai e-pasta adresei, lai sūtītu e-pastu citiem lietotājiem.',
 'emailuser' => 'Sūtīt e-pastu šim lietotājam',
+'emailuser-title-notarget' => 'Sūtīt e-pastu lietotājam',
 'emailpage' => 'Sūtīt e-pastu lietotājam',
 'emailpagetext' => 'Ar šo veidni ir iespējams nosūtīt e-pastu šim lietotājam.
 Tā e-pasta adrese, kuru tu esi norādījis [[Special:Preferences|savā izvēļu lapā]], parādīsies e-pasta "From" lauciņā, tādejādi saņēmējs varēs tev atbildēt.',
@@ -1884,6 +1918,8 @@ Papildinformācija:
 'rollback' => 'Novērst labojumus',
 'rollback_short' => 'Novērst',
 'rollbacklink' => 'novērst',
+'rollbacklinkcount' => 'atcelt $1 {{PLURAL:$1|labojumu|labojumus}}',
+'rollbacklinkcount-morethan' => 'atcelt vairāk kā $1 {{PLURAL:$1|labojumu|labojumus}}',
 'rollbackfailed' => 'Novēršana neizdevās',
 'cantrollback' => 'Nav iespējams novērst labojumu; iepriekšējais labotājs ir vienīgais lapas autors.',
 'alreadyrolled' => 'Nav iespējams novērst pēdējās izmaiņas, ko lapā [[:$1]] saglabāja [[User:$2|$2]] ([[User talk:$2|Diskusija]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]). Kāds cits jau ir rediģējis šo lapu vai novērsis izmaiņas.
@@ -2456,12 +2492,12 @@ To visticamāk izraisīja ārēja saite uz melnajā sarakstā esošu interneta v
 'pageinfo-article-id' => 'Lapas ID',
 'pageinfo-language' => 'Lappuses satura valoda',
 'pageinfo-views' => 'Skatījumu skaits',
-'pageinfo-watchers' => 'Uzraudzītāju skaits',
+'pageinfo-watchers' => 'Lapas uzraudzītāju skaits',
 'pageinfo-redirects-name' => 'Pāradresācijas uz šo lapu',
 'pageinfo-subpages-name' => 'Šīs lapas apakšlapas',
 'pageinfo-lastuser' => 'Pēdējais labotājs',
-'pageinfo-edits' => 'Izmaiņu skaits',
-'pageinfo-authors' => 'Atsevišķu autoru skaits',
+'pageinfo-edits' => 'Kopējais izmaiņu skaits',
+'pageinfo-authors' => 'Kopējais atsevišķu autoru skaits',
 'pageinfo-toolboxlink' => 'Lapas informācija',
 'pageinfo-redirectsto-info' => 'info',
 'pageinfo-contentpage-yes' => 'Jā',
@@ -2697,7 +2733,7 @@ Pārējie lauki, pēc noklusējuma, būs paslēpti.
 'exif-compression-1' => 'Nekompresēts',
 
 'exif-copyrighted-true' => 'Ar autortiesībām',
-'exif-copyrighted-false' => 'Publiski pieejams',
+'exif-copyrighted-false' => 'Autortiesību statuss nav norādīts',
 
 'exif-unknowndate' => 'Nezināms datums',
 
@@ -3023,14 +3059,14 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 * <span class="mw-specialpagecached">Iekešotās īpašās lapas.</span>',
 'specialpages-group-maintenance' => 'Uzturēšanas atskaites',
 'specialpages-group-other' => 'Citas īpašās lapas',
-'specialpages-group-login' => 'Ieiet / piereģistrēties',
+'specialpages-group-login' => 'Pieslēgties / izveidot kontu',
 'specialpages-group-changes' => 'Pēdējās izmaiņas un reģistri',
 'specialpages-group-media' => 'Failu atskaites un augšuplāde',
 'specialpages-group-users' => 'Lietotāji un piekļuves tiesības',
 'specialpages-group-highuse' => 'Bieži izmantotās lapas',
 'specialpages-group-pages' => 'Lapu saraksti',
 'specialpages-group-pagetools' => 'Lapu rīki',
-'specialpages-group-wiki' => 'Wiki dati un rīki',
+'specialpages-group-wiki' => 'Dati un rīki',
 'specialpages-group-redirects' => 'Pāradresējošas īpašās lapas',
 'specialpages-group-spam' => 'Spama rīki',
 
@@ -3089,8 +3125,8 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 'sqlite-no-fts' => '$1 bez pilnteksta meklēšanas atbalsta',
 
 # New logging system
-'logentry-delete-delete' => '$1 izdzēsa lapu $3',
-'logentry-delete-restore' => '$1 atjaunoja lapu $3',
+'logentry-delete-delete' => '$1 {{GENDER:$2|izdzēsa}} lapu $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|atjaunoja}} lapu $3',
 'revdelete-content-hid' => 'saturs slēpts',
 'revdelete-summary-hid' => 'labojuma kopsavilkums slēpts',
 'revdelete-uname-hid' => 'lietotājvārds slēpts',
index 19f97d7..73b53ed 100644 (file)
@@ -173,7 +173,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Няфтемс мъзяра сувсида конат арафтозь лопать эсь мельгеваномазост',
 'tog-oldsig' => 'Афкуксонь кядьтяшкс',
 'tog-fancysig' => 'Кядьтяшкст улихть викитекстокс (эслек тиеви сюлмафксфтома)',
-'tog-showjumplinks' => 'Мярьгомс "юпадемс" сатовома сюлмафкстненди',
 'tog-uselivepreview' => 'Максомс эряй васень няфтемась (JavaScript) (Варжамань)',
 'tog-forceeditsummary' => 'Няфтемс мондине мезе сёрмадомс шава петнема вальмас сувамста',
 'tog-watchlisthideown' => 'Кяшемс монь петнематне ванома лопаста',
index 936e6bd..9fffabc 100644 (file)
@@ -694,9 +694,9 @@ Mila manaiky cookies ianao raha te hiditra amin'ny {{SITENAME}}.",
 'createacct-imgcaptcha-ph' => 'Atsofohy ny teny hitanao eo ambony',
 'createacct-submit' => 'Hamorona ny kaontinao',
 'createacct-benefit-heading' => "Olona tahaka ianao no manoratra eo amin'i {{SITENAME}}",
-'createacct-benefit-body1' => 'fanovana{{PLURAL:}}',
-'createacct-benefit-body2' => 'pejy{{PLURAL:}}',
-'createacct-benefit-body3' => 'mpandray anjara vao haingana{{PLURAL:}}',
+'createacct-benefit-body1' => 'fanovana{{PLURAL:$1}}',
+'createacct-benefit-body2' => 'pejy{{PLURAL:$1}}',
+'createacct-benefit-body3' => 'mpandray anjara vao haingana{{PLURAL:$1}}',
 'badretype' => 'Tsy mitovy ny tenimiafina nampidirinao.',
 'userexists' => 'Efa miasa io anaram-pikambana natsofokao io.
 Anarana hafa safidiana.',
@@ -757,7 +757,7 @@ Azafady manomeza adiresy voasoratra tsara na avelao ho banga io toerana io.',
 'cannotchangeemail' => "Tsy afaka ovaina eto amin'ity wiki ity ny adiresy imailaky ny kaonty.",
 'emaildisabled' => 'Tsy afaka mandefa imailaka ity tranonkala ity.',
 'accountcreated' => 'Kaonty voaforona',
-'accountcreatedtext' => "Voasokatra ilay kaonty hoan'i $1.",
+'accountcreatedtext' => 'Voaforona ny kaontim-pikambana [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|dinika]])',
 'createaccount-title' => "Fanokafana kaonty ho an'ny/i {{SITENAME}}",
 'createaccount-text' => "Nisy olona nanokatra kaonty ho an'ny adiresy imailakao eo amin'ny {{SITENAME}} ($4) mitondra anarana « $2 » miaraka amin'ny tenimiafina « $3 ».<br />
 Tokony miditra na manokatra kaonty ianao, ary ovay ny tenimiafinao dien-izao.
@@ -796,7 +796,7 @@ Mety efa nanova tenimiafina na nanontany tenimiafina miserana angamba ianao.',
 # Special:PasswordReset
 'passwordreset' => 'Famafana ary famerenana ny tenimiafina',
 'passwordreset-text-one' => 'Fenoy ity fôrmiolera ity mba hamerenana ny tenimiafinao',
-'passwordreset-text-many' => "Fenoy ny iray amin'ireo saha ireo mba hamerenana ny tenimiafinao{{PLURAL:}}",
+'passwordreset-text-many' => "Fenoy ny iray amin'ireo saha ireo mba hamerenana ny tenimiafinao{{PLURAL:$1}}",
 'passwordreset-legend' => 'Famafana ary famerenana ny tenimiafina',
 'passwordreset-disabled' => "Tsy nalefa ny fanovana tenimiafina adino eto amin'ity wiki ity.",
 'passwordreset-emaildisabled' => "Tsy avela ny fampiasana mailaka eto amin'ity wiki ity.",
@@ -821,7 +821,7 @@ Hitsahatra afaka {{PLURAL:$5|iray|$5}} andro {{PLURAL:$3|io|ireo}} tenimiafina {
 Tenimiafina miserana : $2',
 'passwordreset-emailsent' => 'Lasa ny mailaka famerenana tenimiafina.',
 'passwordreset-emailsent-capture' => 'Lasa ilay mailaka famerenana tenimiafina, izay aseho eo ambany.',
-'passwordreset-emailerror-capture' => "Nosoratana ilay mailaka famerenana tenimiafina, izay aseho eo ambany, fa tsy tafalefa tany amin'ilay mpikambana ilay izy : $1",
+'passwordreset-emailerror-capture' => "Nosoratana ilay mailaka famerenana tenimiafina, izay aseho eo ambany, fa tsy tafalefa tany amin'ilay mpikambana ilay izy : $1{{GENDER:$2}}",
 
 # Special:ChangeEmail
 'changeemail' => 'Hanova ny adiresy imailaka',
@@ -1511,7 +1511,7 @@ Tsy haseho ny adiresy imailakao rehefa manoratra any aminao ny mpikambana hafa."
 'right-reupload-shared' => 'Manolo eo an-toerana rakitra misy eo amina petra-drakitra iraisana',
 'right-upload_by_url' => "Mampidi-drakitra avy amin'ny adiresy URL",
 'right-purge' => 'Fafàna ny cache ny pejy, tsy mila marihana',
-'right-autoconfirmed' => 'Manova pejy voaaro an-tapaka',
+'right-autoconfirmed' => "Tsy iharan'ny fifehezan-kafaingan mikasika ny adiresy IP",
 'right-bot' => 'Atao hita otra ny fizorana mande hoazy',
 'right-nominornewtalk' => "Tsy alefa ny fampandrenesana ''hafatra vaovao'' rehefa manao fanovana kely ao anatin'ny pejin-dresan'ny mpikambana.",
 'right-apihighlimits' => "Mampiasa fepetra ambonimbony kokoa amin'ny fangatahana API",
@@ -1531,9 +1531,9 @@ Tsy haseho ny adiresy imailakao rehefa manoratra any aminao ny mpikambana hafa."
 'right-hideuser' => "Manakana mpikambana iray amin'ny fanitrihana ny anarany amin'ny vahoaka",
 'right-ipblock-exempt' => 'Tsy voakasiky ny fanakanana IP, ny fanakanana mandeha ho azy (aotômatika) ary ny fanakanana sampana IP',
 'right-proxyunbannable' => "Tsy voakasiky ny fanakana mande hoazy avy amin'ny proxy",
-'right-unblockself' => 'Miala hidy ho azy',
+'right-unblockself' => "Manala ny hidin'ny tena",
 'right-protect' => "Manova ny fiarovan'ny pejy sy manova ny pejy voaaro",
-'right-editprotected' => 'Manova ny pejy voaaro (tsy misy fiarovana en cascade)',
+'right-editprotected' => 'Manova pejy voaaro (tsy misy fiarovana en cascade)',
 'right-editinterface' => 'Manova ny interface ny mpikambana',
 'right-editusercssjs' => 'Manova ny rakitra CSS sy JS ny mpikambana hafa',
 'right-editusercss' => 'Manova ny rakitra CSS ny mpikambana hafa',
@@ -2501,7 +2501,7 @@ $1',
 'mycontris' => "Fandraisan'anjara",
 'contribsub2' => "ho an'ny $1 ($2)",
 'nocontribs' => "Tsy misy fanovana mifanaraka amin'ireo critères ireo.",
-'uctop' => ' (loha)',
+'uctop' => '(ankehitriny)',
 'month' => "Tamin'ny volana (sy teo aloha) :",
 'year' => "Tamin'ny taona (sy teo aloha) :",
 
@@ -2841,6 +2841,7 @@ Ho voasoratra ao amin'ny [[Special:Log/import|laogim-pampidirana]] ny tao rehetr
 'import-interwiki-templates' => 'Ataovy ao ny endrika rehetra',
 'import-interwiki-submit' => 'Hampiditra',
 'import-interwiki-namespace' => 'Anaran-tsehatra tanjona :',
+'import-interwiki-rootpage' => 'Foto-pejy tanjona (azo tsy fenoina):',
 'import-upload-filename' => 'Anaran-drakitra :',
 'import-comment' => 'Resaka :',
 'importstart' => 'Am-pampidirana ny pejy…',
@@ -2869,6 +2870,7 @@ Tsy hita ny rakitra miserana.',
 'import-token-mismatch' => 'Very ny fampahalalàna momba ny kaonty.
 Avereno fanindroany.',
 'import-invalid-interwiki' => "Tsy afaka mampiditra avy any amin'ilay wiki nofidiana.",
+'import-rootpage-invalid' => 'Lohateny tsy azo raisina ny foto-pejy nomenao:',
 
 # Import log
 'importlogpage' => "laogin'ny fampidirana",
@@ -2986,8 +2988,12 @@ Mamerina ny version taloha io asa io ary afaka manometraka ny antony anatin'ny a
 'pageinfo-article-id' => 'Laharam-pejy',
 'pageinfo-language' => "Tenin'ny votoatiny",
 'pageinfo-robot-policy' => "Satan'ny motera fikarohana",
+'pageinfo-robot-index' => 'Azo tondroina',
+'pageinfo-robot-noindex' => 'Tsy azo tondroina',
 'pageinfo-views' => "Isan'ny jery",
 'pageinfo-watchers' => "Isan'ny mpandray anjara manaraka",
+'pageinfo-redirects-name' => "Fihodinana manketo amin'ity pejy ity",
+'pageinfo-subpages-name' => "Zana-pejin'ity pejy ity",
 'pageinfo-firstuser' => 'Mpamorona ilay pejy',
 'pageinfo-firsttime' => 'Daty namoronana ilay pejy',
 'pageinfo-lastuser' => 'Mpanova farany',
@@ -2997,11 +3003,17 @@ Mamerina ny version taloha io asa io ary afaka manometraka ny antony anatin'ny a
 'pageinfo-recent-edits' => "Fanovana vao haingana (natao tanatin'ny $1)",
 'pageinfo-recent-authors' => "Isa vao haingan'ny mpanoratra misongadina",
 'pageinfo-hidden-categories' => 'Sokajy nafenina{{PLURAL:$1}} ($1)',
+'pageinfo-templates' => 'Endrika natsofoka{{PLURAL:$1}} ($1)',
+'pageinfo-transclusions' => "Pejy natsofoka tanatin'i ($1)",
+'pageinfo-toolboxlink' => 'Fampahalalana mikasika ny pejy',
 'pageinfo-redirectsto' => "Fihdinana mankany amin'ny",
 'pageinfo-redirectsto-info' => 'fampahalalana',
 'pageinfo-contentpage' => 'Isaina ho pejim-botoatiny',
 'pageinfo-contentpage-yes' => 'Eny',
+'pageinfo-protect-cascading' => 'Miriana avy eto ny fiarovana',
 'pageinfo-protect-cascading-yes' => 'Eny',
+'pageinfo-protect-cascading-from' => "Ny fiarovana dia miriana avy amin'i",
+'pageinfo-category-info' => 'Fampahalalana mikasika ny sokajy',
 'pageinfo-category-pages' => 'Isam-pejy',
 'pageinfo-category-subcats' => "Isan'ny zana-tsokajy",
 'pageinfo-category-files' => "Isan'ny rakitra",
@@ -3016,6 +3028,7 @@ Mamerina ny version taloha io asa io ary afaka manometraka ny antony anatin'ny a
 'markedaspatrollederror' => 'Tsy afaka marihana ho voamarina',
 'markedaspatrollederrortext' => 'Tsy maintsy misafidy santiôna iray ianao mba hahafahanao manamarika azy ho voamarina.',
 'markedaspatrollederror-noautopatrol' => 'Tsy azonao marihana ho voamarina ny fanovanao.',
+'markedaspatrollednotify' => "Voamarika ho hita ny fanovana natao tamin'i $1.",
 
 # Patrol log
 'patrol-log-page' => "Laogin'ny fanovana voamarina",
@@ -3050,11 +3063,15 @@ Raha alefanao ilay izy, mety ho simban'io renifango io ny solosainao.",
 'svg-long-desc' => 'rakitra SVG, habe $1 × $2 teboka, habe : $3',
 'svg-long-error' => 'Rakitra SVG tsy ekena : $1',
 'show-big-image' => "Hijery ny tena haben'ny sary",
+'show-big-image-preview' => "Haben'ny topi-maso: $1.",
+'show-big-image-other' => 'Habe hafa: $1{{PLURAL:$1}}',
 'show-big-image-size' => '$1 × $2 teboka',
 'file-info-gif-looped' => 'miverimberina',
 'file-info-gif-frames' => 'sary{{PLURAL:$1}} $1',
 'file-info-png-looped' => 'miverimberina',
 'file-info-png-repeat' => 'nalefa in-$1{{PLURAL:$1}}',
+'file-info-png-frames' => 'Sary $1{{PLURAL:$1}}',
+'file-no-thumb-animation' => "'''Fantaro: Nohon'ny fifehezana ara-teknka, tsy ho alefa sarimihetsika ny sarikely GIF mavesatra ohatr'ity'''",
 
 # Special:NewFiles
 'newimages' => 'Tahala misy ny rakitra vaovao',
@@ -3073,8 +3090,12 @@ Raha alefanao ilay izy, mety ho simban'io renifango io ny solosainao.",
 'hours' => 'ora{{PLURAL:$1}}',
 'days' => 'andro{{PLURAL:$1}}',
 'ago' => '$1 lasa izay',
+'just-now' => 'vao izao',
 
 # Human-readable timestamps
+'hours-ago' => '$1 ora lasa{{PLURAL:$1}}',
+'minutes-ago' => '$1{{PLURAL:$1}} minitra lasa',
+'seconds-ago' => '$1 segondra lasa{{PLURAL:$1}}',
 'monday-at' => "Alatsinainy tamin'ny $1",
 'tuesday-at' => "Talata tamin'ny $1",
 'wednesday-at' => "Alarobia tamin'ny $1",
@@ -3171,12 +3192,55 @@ 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' => 'Valam-bahoaka',
+'exif-copyrighted-false' => "Toetran'ny zom-pamorona tsy voafaritra",
 
 'exif-unknowndate' => 'Daty tsy fantatra',
 
@@ -3191,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 6aa140c..1df621f 100644 (file)
@@ -116,7 +116,6 @@ $messages = array(
 'tog-enotifwatchlistpages' => 'Мыйын эскерыме лӱмер гыч лаштыкыште тӧрлатымыш нерген электрон почто гоч шижтараш',
 'tog-enotifusertalkpages' => 'Мыйын каҥашымаш лаштыкыште тӧрлатымыш нерген электрон почто гоч шижтараш',
 'tog-oldsig' => 'Кызытсе кидпале',
-'tog-showjumplinks' => '"Куснаш …" ешартыш кылверым чӱкташ',
 'tog-watchlisthideown' => 'Эскерыме лӱмер гыч мыйын тӧрлатымашым кораҥдаш',
 'tog-watchlisthidebots' => 'Эскерыме лӱмер гыч бот-влакын тӧрлатымашыштым кораҥдаш',
 'tog-watchlisthideminor' => 'Эскерыме лӱмер гыч изи тӧрлатымаш-влакым кораҥдаш',
index 4699fe4..02d7270 100644 (file)
@@ -729,7 +729,7 @@ $1',
 'delete-hook-aborted' => 'Бришењето е прекинато со кука.
 Не е дадено никакво образложение.',
 'no-null-revision' => 'Не можев да направам нова ништовна ревизија на страницата „$1“',
-'badtitle' => 'Ð\9bоÑ\88 наслов',
+'badtitle' => 'Ð\9dеиÑ\81пÑ\80авен наслов',
 'badtitletext' => 'Бараниот наслов е грешен, празен или неисправно поврзан меѓујазичен или меѓувики наслов. 
 Може да содржи недопуштени знаци.',
 'perfcached' => 'Следните податоци се кеширани и може да не се тековни. Во кешот {{PLURAL:$1|е достапен највеќе еден резултат|се достапни највеќе $1 резултати}}.',
@@ -781,7 +781,6 @@ $2',
 # Login and logout pages
 'logouttext' => "'''Сега сте одјавени.'''
 
-Можете да продолжите со користење на {{SITENAME}} анонимно или можете <span class='plainlinks'>[$1 повторно да се најавите]</span> под исто или различно корисничко име.
 Да напоменеме дека некои страници може да продолжат да се прикажуваат како да сте најавени, се додека не го исчистите кешот на вашиот прелистувач.",
 'welcomeuser' => 'Добр едојдовте, $1!',
 'welcomecreation-msg' => 'Вашата корисничка сметка е создадена.
@@ -829,7 +828,7 @@ $2',
 'createacct-emailoptional' => 'Е-пошта (незадолжително)',
 'createacct-email-ph' => 'Внесете е-пошта',
 'createacct-another-email-ph' => 'Внесете е-пошта',
-'createaccountmail' => 'Дај привремена произволна лозинка и испрати ја на долунаведената адреса',
+'createaccountmail' => 'Дај привремена произволна лозинка и испрати ја на укажаната адреса',
 'createacct-realname' => 'Вистинско име (незадолжително)',
 'createaccountreason' => 'Причина:',
 'createacct-reason' => 'Причина',
@@ -915,6 +914,8 @@ $2',
 'login-abort-generic' => 'Најавата е неуспешна - Прекинато',
 'loginlanguagelabel' => 'Јазик: $1',
 'suspicious-userlogout' => 'Вашето барање за одјава е одбиено бидејќи се чини дека е испратено од расипан прелистувач или кеширачки застапник (proxy).',
+'createacct-another-realname-tip' => 'Вистинското име е незадолжително.
+Доколку изберете да го внесете, тоа може да се искористи за оддавање на заслуги за Вашата работа.',
 
 # Email sending
 'php-mail-error-unknown' => 'Непозната грешка во функцијата mail() на PHP',
@@ -1644,11 +1645,11 @@ $1",
 'userrights-no-interwiki' => 'Немате дозвола за уредување на кориснички права на други викија.',
 'userrights-nodatabase' => 'Базата на податоци $1 не постои или не е локална.',
 'userrights-nologin' => 'Мора да сте [[Special:UserLogin|најавени]] со администраторска корисничка сметка за да може да вршите промена на кориснички права.',
-'userrights-notallowed' => 'Ð\92аÑ\88аÑ\82а ÐºÐ¾Ñ\80иÑ\81ниÑ\87ка Ñ\81меÑ\82ка Ð½ÐµÐ¼Ð° дозвола за додавање и отстранување на кориснички права.',
+'userrights-notallowed' => 'Ð\9dемаÑ\82е дозвола за додавање и отстранување на кориснички права.',
 'userrights-changeable-col' => 'Групи кои може да ги промените',
 'userrights-unchangeable-col' => 'Групи кои не може да ги промените',
 'userrights-irreversible-marker' => '$1*',
-'userrights-conflict' => 'СпÑ\80оÑ\82иÑ\81Ñ\82авеноÑ\81Ñ\82 Ð²Ð¾ ÐºÐ¾Ñ\80иÑ\81ниÑ\87киÑ\82е Ð¿Ñ\80ава. Ð\9fÑ\80именеÑ\82е Ð³Ð¸ Ð¿Ñ\80омениÑ\82е Ð¿Ð¾Ð²Ñ\82оÑ\80но.',
+'userrights-conflict' => 'СпÑ\80оÑ\82иÑ\81Ñ\82авеноÑ\81Ñ\82 Ð²Ð¾ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ\82е Ð½Ð° ÐºÐ¾Ñ\80иÑ\81ниÑ\87киÑ\82е Ð¿Ñ\80ава. Ð\9fÑ\80егледаÑ\98Ñ\82е Ð³Ð¸ Ð¸ Ð¿Ð¾Ñ\82вÑ\80деÑ\82е Ð³Ð¸.',
 'userrights-removed-self' => 'Успешно ги отстранивте вашите права. Затоа, повеќе немате пристап на страницава.',
 
 # Groups
@@ -3311,9 +3312,9 @@ $2',
 'pageinfo-length' => 'Должина на страницата (во бајти)',
 'pageinfo-article-id' => 'Назнака на страницата',
 'pageinfo-language' => 'Јазик на содржината на страницата',
-'pageinfo-robot-policy' => 'СÑ\82аÑ\82Ñ\83Ñ\81 Ð½Ð° Ð¿Ñ\80елиÑ\81Ñ\82Ñ\83ваÑ\87оÑ\82',
-'pageinfo-robot-index' => 'Се Ð¸Ð½Ð´ÐµÐºÑ\81иÑ\80а',
-'pageinfo-robot-noindex' => 'Не се индексира',
+'pageinfo-robot-policy' => 'Ð\98ндекÑ\81иÑ\80аÑ\9aе Ñ\81о Ñ\80обоÑ\82и',
+'pageinfo-robot-index' => 'Ð\94озволено',
+'pageinfo-robot-noindex' => 'Недозволено',
 'pageinfo-views' => 'Број на посети',
 'pageinfo-watchers' => 'Број на набљудувачи',
 'pageinfo-few-watchers' => 'Помалку од $1 {{PLURAL:$1|набљудувач|набљудувачи}}',
@@ -4446,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 e5cbbcf..8bb666a 100644 (file)
@@ -467,7 +467,7 @@ $messages = array(
 'newwindow' => '(नवीन खिडकीत उघडते.)',
 'cancel' => 'रद्द करा',
 'moredotdotdot' => 'अजून...',
-'morenotlisted' => 'आणखी यादीत नाही...',
+'morenotlisted' => 'आणखी यादीत नाही...',
 'mypage' => 'पान',
 'mytalk' => 'चर्चा',
 'anontalk' => 'या अंकपत्त्याचे चर्चा पान उघडा',
@@ -663,7 +663,7 @@ $1',
 "$1"
 "$2" या कार्यकृतीमधून .
 MySQL returned error "$3: $4".',
-'laggedslavemode' => 'सुचना: पानावर नवीन बदल नसतील.',
+'laggedslavemode' => "'''सुचना:''' पानावर अद्ययावत बदल नसतील.",
 'readonly' => 'विदागारास (डाटाबेस) ताळे आहे.',
 'enterlockreason' => 'विदागारास ताळे ठोकण्याचे कारण, ताळे उघडले जाण्याच्या अदमासे कालावधीसहीत द्या.',
 'readonlytext' => 'बहुधा विदागार परिरक्षणामुळे (मेंटेनन्स) नवीन भर घालण्यापासून आणि इतर बदल करण्यापासून बंद ठेवण्यात आला आहे, परिरक्षणानंतर तो सामान्य होईल.
@@ -716,7 +716,7 @@ MySQL returned error "$3: $4".',
 सर्व विकिंवर, अनुवाद जोडण्याकरता किंवा बदलण्याकरता अथवा शुद्धलेखन चिकित्सेकरीता , कृपया [//translatewiki.net/ translatewiki.net], या मिडियाविकि स्थानिकीकरण प्रकल्पावर जा.',
 'editinginterface' => "'''सावधान:''' तुम्ही संचेतनाचे (सॉफ्टवेअर) संपर्क माध्यम मजकूर असलेले पान संपादित करित आहात. या पानावरील बदल या विकिवरील इतर सदस्यांच्या सदस्य संपर्क माध्यमाचे स्वरूप बदलू शकते.सर्व विकिंवरील भाषांतरासाठी  कृपया मिडीयाविकि स्थानिकीकरण प्रकल्पाच्या [//translatewiki.net/ translatewiki.net]या सुविधेचा वापर करा.",
 'sqlhidden' => 'छूपी एस्क्यूएल पृच्छा (एसक्यूएल क्वेरी हिडन)',
-'cascadeprotected' => 'हà¥\87 à¤ªà¤¾à¤¨ à¤¸à¤\82पादनाà¤\82पासà¥\82न à¤¸à¥\81रà¤\95à¥\8dषित à¤\95à¥\87लà¥\87 à¤\97à¥\87लà¥\87लà¥\87 à¤\86हà¥\87, à¤\95ारण à¤¤à¥\87 à¤\96ालà¥\80ल {{PLURAL:$1|पानात|पानाà¤\82मधà¥\8dयà¥\87}} à¤\85à¤\82तरà¥\8dभà¥\82त à¤\95à¥\87लà¥\87लà¥\87 à¤\86हà¥\87, à¤\95à¥\80 à¤\9cà¥\87 à¤ªà¤¾à¤¨/à¤\9cà¥\80 à¤ªà¤¾à¤¨à¥\87 à¤¶à¤¿à¤¡à¥\80 à¤ªà¤°à¥\8dयायाने सुरक्षित आहेत:
+'cascadeprotected' => 'हà¥\87 à¤ªà¤¾à¤¨ à¤¸à¤\82पादनाà¤\82पासà¥\82न à¤¸à¥\81रà¤\95à¥\8dषित à¤\95à¥\87लà¥\8dया à¤\97à¥\87लà¥\87 à¤\86हà¥\87, à¤\95ारण à¤¤à¥\87 à¤\96ालà¥\80ल {{PLURAL:$1|पानात|पानाà¤\82मधà¥\8dयà¥\87}} à¤\85à¤\82तरà¥\8dभà¥\82त à¤\95à¥\87लà¥\87लà¥\87 à¤\86हà¥\87,{{PLURAL:$1|à¤\9cà¥\87 à¤ªà¤¾à¤¨|à¤\9cà¥\80 à¤ªà¤¾à¤¨à¥\87 }}निपतन à¤ªà¤°à¥\8dयाय à¤¸à¥\81रà¥\81 à¤\95à¥\87लà¥\8dयामà¥\81ळे सुरक्षित आहेत:
 $2',
 'namespaceprotected' => "'''$1''' नामविश्वातील पाने संपादण्याची आपणांस परवानगी नाही.",
 'customcssprotected' => 'या पानावर इतर सदस्याची वैयक्तिक मांडणी असल्यामुळे, तुम्हाला हे सीएसएस पान संपादित करण्याची परवानगी नाही.',
@@ -730,10 +730,10 @@ $2',
 'filereadonlyerror' => '"$1" ला सुधार अशक्य आहे कारण संचिकाभांडार  "$2" हे \'फक्त वाचा\'(रीड ओन्ली) या श्रेणीतच आहे.
 
 ज्या प्रशासकाने हे कुलुपबंद केले त्यांनी त्यांनी दिलेले स्पष्टीकरण आहे: "$3"',
-'invalidtitle-knownnamespace' => '"$2" à¤¨à¤¾à¤®à¤µà¤¿à¤¶à¥\8dवात "$3" à¤¹े अयोग्य शीर्षक',
+'invalidtitle-knownnamespace' => '"$2" à¤¨à¤¾à¤®à¤µà¤¿à¤¶à¥\8dवात "$3" à¤®à¤\9cà¤\95à¥\82राà¤\9aे अयोग्य शीर्षक',
 'invalidtitle-unknownnamespace' => 'अनोळखी नामविश्वाच्या आकड्यासह अवैध मथळा $1 व मजकूर "$2"',
-'exception-nologin' => 'पà¥\8dरवà¥\87श à¤\95à¥\87लà¥\87ला नाही',
-'exception-nologin-text' => 'हà¥\87 à¤\95रणà¥\8dयासाठà¥\80 à¤\86पलà¥\8dयाला à¤¯à¤¾ à¤µà¤¿à¤\95िवर à¤¸à¤¦à¤¸à¥\8dयनावानà¥\87 à¤ªà¥\8dरवà¥\87श à¤\95रायला à¤¹à¤µà¤¾.',
+'exception-nologin' => 'सनà¥\8bà¤\82द-पà¥\8dरवà¥\87शित नाही',
+'exception-nologin-text' => 'हà¥\87 à¤ªà¤¾à¤¨ à¤\95िà¤\82वा à¤\95à¥\8dरिया à¤\95रणà¥\8dयासाठà¥\80 à¤\86पलà¥\8dयाला à¤¯à¤¾ à¤µà¤¿à¤\95िवर à¤¸à¤¨à¥\8bà¤\82द- à¤ªà¥\8dरवà¥\87शित à¤\85सावयास à¤¹à¤µà¥\87.',
 
 # Virus scanner
 'virus-badscanner' => "खराब विन्यास (कॉन्फिगरेशन): अनोळखी व्हायरस स्कॅनर: ''$1''",
@@ -741,35 +741,35 @@ $2',
 'virus-unknownscanner' => 'अनोळखी ऍन्टीव्हायरस:',
 
 # Login and logout pages
-'logouttext' => "'''तà¥\81मà¥\8dहà¥\80 à¤\86ता à¤\85दाà¤\96ल à¤\9dाला(logout)आहात.'''
+'logouttext' => "'''तà¥\81मà¥\8dहà¥\80 à¤\86ता à¤¸à¤¨à¥\8bà¤\82द-निरà¥\8dà¤\97मित(लà¥\89à¤\97-à¤\86à¤\89à¤\9f) à¤\9dाला आहात.'''
 
-तुम्ही अनामिकपणे {{SITENAME}}चा उपयोग करत राहू शकता, किंवा त्याच अथवा वेगळ्या सदस्य नावाने <span class='plainlinks'>[$1  पुन्हा दाखल होऊ शकता]</span>.
-आपण स्वत:च्या न्याहाळकाची सय (cache) रिकामी करत नाही तो पर्यंत काही पाने आपण अजून दाखल आहात, असे नुसतेच दाखवत राहू शकतील.",
+
+आपण स्वत:च्या न्याहाळकाची सय (कॅशे) रिकामी करत नाही तो पर्यंत, काही पाने आपण अजून प्रवेशित आहात, असे नुसतेच दाखवत राहू शकतील.",
 'welcomeuser' => 'स्वागत, $1!',
 'welcomecreation-msg' => 'तुमचे खाते उघडण्यात आले आहे.
-à¤\86पलà¥\8dया [[Special:Preferences|{{SITENAME}} à¤ªà¤¸à¤\82तà¥\80]] बदलण्यास विसरू नका.',
-'yourname' => 'तà¥\81मà¤\9aà¥\87 à¤¨à¤¾à¤µ',
+à¤\86पला [[Special:Preferences|{{SITENAME}} à¤ªà¤¸à¤\82तà¥\80à¤\95à¥\8dरम]] बदलण्यास विसरू नका.',
+'yourname' => 'सदसà¥\8dयनाम:',
 'userlogin-yourname' => 'सदस्यनाम',
 'userlogin-yourname-ph' => 'आपले सदस्यनाव टाका',
-'createacct-another-username-ph' => 'à¤\86पलà¥\87 à¤¸à¤¦à¤¸à¥\8dयनाव à¤\9fाà¤\95ा',
-'yourpassword' => 'तुमचा परवलीचा शब्द',
+'createacct-another-username-ph' => 'सदस्यनाव टाका',
+'yourpassword' => 'तुमचा परवलीचा शब्द:',
 'userlogin-yourpassword' => 'परवलीचा शब्द(पासवर्ड)',
 'userlogin-yourpassword-ph' => 'आपला परवलीचा शब्द टाका',
 'createacct-yourpassword-ph' => 'परवलीचा शब्द टाका',
-'yourpasswordagain' => 'तà¥\81मà¤\9aा à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤ªà¥\81नà¥\8dहा à¤²à¤¿à¤¹à¤¾',
-'createacct-yourpasswordagain' => 'परवलà¥\80à¤\9aà¥\8dया à¤¶à¤¬à¥\8dदाà¤\9aà¥\80 à¤ªà¤°à¤¤ à¤¨à¥\8bà¤\82द करा',
+'yourpasswordagain' => 'तà¥\81मà¤\9aा à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤ªà¥\81नà¥\8dहा à¤\9fà¤\82à¤\95ा:',
+'createacct-yourpasswordagain' => 'परवलà¥\80à¤\9aà¥\8dया à¤¶à¤¬à¥\8dदाà¤\9aà¥\80 à¤¨à¤¿à¤¶à¥\8dà¤\9aितà¥\80 करा',
 'createacct-yourpasswordagain-ph' => 'पुन्हा परवलीचा शब्द टाका',
-'remembermypassword' => 'माà¤\9dा à¤ªà¥\8dरवà¥\87श à¤¯à¤¾ à¤¸à¤\82à¤\97णà¤\95ावर à¤²à¤\95à¥\8dषात à¤ à¥\87वा (à¤\9cासà¥\8dतà¥\80त à¤\9cासà¥\8dत $1 {{PLURAL:$1|दिवस|दिवसांसाठी}})',
+'remembermypassword' => 'माà¤\9dा à¤¸à¤¨à¥\8bà¤\82दपà¥\8dरवà¥\87श (लà¥\89à¤\97-à¤\88न) à¤¯à¤¾ à¤¨à¥\8dयाहाळà¤\95ावर à¤²à¤\95à¥\8dषात à¤ à¥\87वा (à¤\9cासà¥\8dतà¥\80त à¤\9cासà¥\8dत $1 {{PLURAL:$1|दिवसासाठà¥\80|दिवसांसाठी}})',
 'userlogin-remembermypassword' => 'मला नोंदीकृतच(लॉग्ड-ईन) ठेवा',
-'userlogin-signwithsecure' => 'सà¥\81रà¤\95à¥\8dषित à¤\9cà¥\8bडणà¥\80(सेक्युअर कनेक्शन) वापरा',
-'securelogin-stick-https' => "प्रवेशानंतर 'एचटीटीपीएस'शी  जुळलेले रहा",
+'userlogin-signwithsecure' => 'सà¥\81रà¤\95à¥\8dषित à¤\85नà¥\81बà¤\82ध(सेक्युअर कनेक्शन) वापरा',
+'securelogin-stick-https' => "सनà¥\8bà¤\82द-पà¥\8dरवà¥\87शानà¤\82तर 'à¤\8fà¤\9aà¤\9fà¥\80à¤\9fà¥\80पà¥\80à¤\8fस'शà¥\80  à¤\9cà¥\81ळलà¥\87लà¥\87 à¤°à¤¹à¤¾",
 'yourdomainname' => 'तुमचे क्षेत्र (डोमेन) :',
-'password-change-forbidden' => 'तà¥\81मà¥\8dहà¥\80 à¤¯à¤¾ à¤µà¤¿à¤\95िवर à¤¤à¥\81मà¤\9aा à¤¸à¤\82à¤\95à¥\87तशब्द बदलू शकत नाही.',
+'password-change-forbidden' => 'तà¥\81मà¥\8dहà¥\80 à¤¯à¤¾ à¤µà¤¿à¤\95िवर à¤¤à¥\81मà¤\9aा à¤ªà¤°à¤µà¤²à¥\80à¤\9aा शब्द बदलू शकत नाही.',
 'externaldberror' => 'विदागार ’खातरजमा’ (प्रमाणितीकरण) त्रुटी होती अथवा तुम्हाला तुमचे बाह्य खाते अद्ययावत  करण्याची परवानगी नाही.',
 'login' => 'सनोंद-प्रवेश(लॉग-ईन)',
-'nav-login-createaccount' => 'सनोंद-प्रवेशित व्हा /सदस्य खाते उघडा',
-'loginprompt' => '{{SITENAME}}मधà¥\8dयà¥\87 à¤¦à¤¾à¤\96ल à¤¹à¥\8bणà¥\8dयाà¤\95रिता  à¤¸à¥\8dमà¥\83तिशà¥\87ष à¤\89पलबà¥\8dध (कुकिज एनेबल)असणे आवश्यक आहे.',
-'userlogin' => 'सनोंद-प्रवेश करा /सदस्य खाते उघडा',
+'nav-login-createaccount' => 'सनोंद-प्रवेश / सदस्यखाते उघडा',
+'loginprompt' => '{{SITENAME}}मधà¥\8dयà¥\87 à¤¸à¤¨à¥\8bà¤\82द-पà¥\8dरवà¥\87शासाठà¥\80  à¤¸à¥\8dमà¥\83तिशà¥\87ष à¤¸à¤\95à¥\8dषम (कुकिज एनेबल)असणे आवश्यक आहे.',
+'userlogin' => 'सनोंद-प्रवेश करा /सदस्यखाते उघडा',
 'userloginnocreate' => 'सनोंद-प्रवेश',
 'logout' => 'सनोंद-निर्गम',
 'userlogout' => 'सनोंद-निर्गम',
@@ -777,14 +777,14 @@ $2',
 'userlogin-noaccount' => 'आपले खाते नाही?',
 'userlogin-joinproject' => '{{SITENAME}}मध्ये सहभागी व्हा',
 'nologin' => 'आपले सदस्यखाते नाही काय? $1.',
-'nologinlink' => 'सदस्य खाते तयार करा',
+'nologinlink' => 'सदस्यखाते तयार करा',
 'createaccount' => 'नवीन खाते तयार करा',
 'gotaccount' => 'पूर्वीचे खाते आहे? $1.',
 'gotaccountlink' => 'सनोंद-प्रवेश करा',
 'userlogin-resetlink' => 'सनोंद-प्रवेश तपशील विसरला असाल तर येथे टिचकी मारा.',
 'userlogin-resetpassword-link' => 'परवलीचा शब्द पुन्हा जुळवा (रिसेट)',
-'helplogin-url' => 'Help:पà¥\8dरवà¥\87श à¤¨à¥\8bà¤\82दà¥\80साठी(लॉगिंग-ईन)',
-'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|पà¥\8dरवà¥\87श  à¤¨à¥\8bà¤\82दà¥\80साठà¥\80 à¤¸à¤¹à¤¾à¤¯à¥\8dय(लà¥\89à¤\97 à¤\88न)]]',
+'helplogin-url' => 'Help:सनà¥\8bà¤\82द à¤ªà¥\8dरवà¥\87शासाठी(लॉगिंग-ईन)',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|सनà¥\8bà¤\82द-पà¥\8dरवà¥\87शासाठà¥\80(लà¥\89à¤\97-à¤\88न) à¤¸à¤¹à¤¾à¤¯à¥\8dय]]',
 'createacct-join' => 'खाली आपली माहिती भरा',
 'createacct-another-join' => 'नविन खात्याबाबतची माहिती येथे खाली टाका.',
 'createacct-emailrequired' => 'विपत्र पत्ता(ई-मेल)',
@@ -800,68 +800,69 @@ $2',
 'createacct-imgcaptcha-ph' => 'वर दिसत असलेला मजकूर येथे टाका',
 'createacct-submit' => 'आपले खाते निर्माण करा',
 'createacct-another-submit' => 'दुसरे नवीन खाते तयार करा',
-'createacct-benefit-heading' => '{{SITENAME}} हे आपल्यासारख्याच लोकांनी बनविलेले आहे',
+'createacct-benefit-heading' => '{{SITENAME}} हे आपल्यासारख्याच लोकांनी बनविलेले आहे.',
 'createacct-benefit-body1' => '{{PLURAL:$1|edit|संपादने}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|लेख}}',
 'createacct-benefit-body3' => 'अलीकडील {{PLURAL:$1|योगदानकर्ता|योगदानकर्ते}}',
-'badretype' => 'à¤\86पला à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤\9aà¥\81à¤\95à¥\80à¤\9aा à¤\86हà¥\87.',
-'userexists' => 'या à¤¨à¤¾à¤µà¤¾à¤¨à¥\87 à¤¸à¤¦à¤¸à¥\8dयाà¤\9aà¥\80 à¤¨à¥\8bà¤\82दणà¥\80 à¤\9dालà¥\87लà¥\80 आहे.
-à¤\95à¥\83पया à¤¦à¥\81सरà¥\87 à¤¸à¤¦à¤¸à¥\8dय à¤¨à¤¾à¤µ निवडा.',
+'badretype' => 'à¤\86पण à¤\9fाà¤\95लà¥\87ला à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤\9cà¥\81ळत à¤¨à¤¾à¤¹à¥\80.',
+'userexists' => 'à¤\86पण à¤\9fाà¤\95लà¥\87लà¥\87 à¤¸à¤¦à¤¸à¥\8dयनाम à¤ªà¥\82रà¥\8dवà¥\80à¤\9a à¤µà¤¾à¤ªà¤°à¤¾à¤¤ आहे.
+à¤\95à¥\83पया à¤µà¥\87à¤\97ळà¥\87 à¤¸à¤¦à¤¸à¥\8dयनाम निवडा.',
 'loginerror' => 'सनोंद-प्रवेशात चूक झाली आहे',
 'createacct-error' => 'खाते तयार करण्यात चुकी',
 'createaccounterror' => 'हे खाते तयार करता येऊ शकले नाही:$1',
 'nocookiesnew' => 'सदस्य खाते तयार झाले ,पण तुम्ही सनोंद-प्रवेशित(लॉग्डईन) नाहीत.{{SITENAME}} सदस्यांना सनोंद-प्रवेश देतांना त्यांचे स्मृतिशेष (कुकिज) वापरते.तुम्ही स्मृतिशेष सुविधा अनुपलब्ध ठेवली आहे.ती कृपया उपलब्ध करा,आणि नंतर तुमच्या नवीन सदस्य नावाने आणि परवलीने दाखल व्हा.',
-'nocookieslogin' => '{{SITENAME}} à¤¸à¤¦à¤¸à¥\8dयाà¤\82ना à¤¦à¤¾à¤\96ल à¤\95रà¥\82न à¤\98à¥\87ताना à¤¤à¥\8dयाà¤\82à¤\9aà¥\8dया à¤¸à¥\8dमà¥\83तिशà¥\87ष (cookies) à¤µà¤¾à¤ªà¤°à¤¤à¥\87.तà¥\81मà¥\8dहà¥\80 à¤¸à¥\8dमà¥\83तिशà¥\87ष à¤¸à¥\81विधा à¤\85नà¥\81पलबà¥\8dध à¤\9fà¥\87वलà¥\80 à¤\86हà¥\87.सà¥\8dमà¥\83तà¥\80शà¥\87ष à¤¸à¥\81विधा à¤\95à¥\83पया à¤\89पलबà¥\8dध à¤\95रा,à¤\86णि à¤¦à¤¾à¤\96ल à¤¹à¥\8bणà¥\8dयासाठी पुन्हा प्रयत्न करा.',
+'nocookieslogin' => '{{SITENAME}} à¤¸à¤¦à¤¸à¥\8dयाà¤\82ना à¤¸à¤¨à¥\8bà¤\82द-पà¥\8dरवà¥\87श à¤¦à¥\87ताà¤\82ना, à¤¤à¥\8dयाà¤\82à¤\9aà¥\8dया à¤¸à¥\8dमà¥\83तिशà¥\87ष (cookies) à¤µà¤¾à¤ªà¤°à¤¤à¥\87.तà¥\81मà¥\8dहà¥\80 à¤¸à¥\8dमà¥\83तिशà¥\87ष à¤¸à¥\81विधा à¤\85नà¥\81पलबà¥\8dध à¤ à¥\87वलà¥\80 à¤\86हà¥\87.सà¥\8dमà¥\83तà¥\80शà¥\87ष à¤¸à¥\81विधा à¤\95à¥\83पया à¤\89पलबà¥\8dध à¤\95रा à¤\86णि à¤¸à¤¨à¥\8bà¤\82द-पà¥\8dरवà¥\87शासाठी पुन्हा प्रयत्न करा.',
 'nocookiesfornew' => 'हे सदस्य खाते अस्तित्वात नाही, त्यामुळे आम्ही त्याच्या स्रोताची खात्री करू शकलो नाही.
-तुमचे स्मृतिशेष उपलब्ध असण्याची खात्री करा, किंवा थोड्या वेळाने हे पान पुन्हा पहा.',
-'noname' => 'à¤\86पण à¤¨à¥\8bà¤\82दणà¥\80साठà¥\80 à¤¸à¤¦à¤¸à¥\8dयाà¤\9aà¥\87 à¤¯à¥\8bà¤\97à¥\8dय à¤¨à¤¾à¤µ à¤²à¤¿à¤¹à¤¿ले नाही.',
-'loginsuccesstitle' => 'आपल्या प्रवेशाची नोंदणी यशस्वीरीत्या पूर्ण झाली',
-'loginsuccess' => "'''तà¥\81मà¥\8dहà¥\80 {{SITENAME}} à¤µà¤° \"\$1\" à¤¨à¤¾à¤µà¤¾à¤¨à¥\87 à¤ªà¥\8dरवà¥\87श à¤\95à¥\87ला à¤\86हà¥\87.'''",
+तुमचे स्मृतिशेष उपलब्ध असण्याची खात्री करा,या पानास पुनर्भारण(रिलोड) करा  किंवा पुन्हा प्रयत्न करा.',
+'noname' => 'à¤\86पण à¤µà¥\88ध à¤¸à¤¦à¤¸à¥\8dयनाम à¤¨à¤®à¥\82द à¤\95à¥\87ले नाही.',
+'loginsuccesstitle' => 'à¤\86पलà¥\8dया à¤¸à¤¨à¥\8bà¤\82द-पà¥\8dरवà¥\87शाà¤\9aà¥\80 à¤¨à¥\8bà¤\82दणà¥\80 à¤¯à¤¶à¤¸à¥\8dवà¥\80रà¥\80तà¥\8dया à¤ªà¥\82रà¥\8dण à¤\9dालà¥\80',
+'loginsuccess' => "'''तà¥\81मà¥\8dहà¥\80 {{SITENAME}} à¤µà¤° \"\$1\" à¤¨à¤¾à¤µà¤¾à¤¨à¥\87 à¤¸à¤¨à¥\8bà¤\82द à¤ªà¥\8dरवà¥\87शित à¤\86हात.'''",
 'nosuchuser' => '"$1" या नावाचा कोणताही सदस्य नाही.तुमचे शुद्धलेखन तपासा, किंवा [[Special:UserLogin/signup|नवीन खाते]] तयार करा.',
 'nosuchusershort' => '"$1" या नावाचा सदस्य नाही. लिहीताना आपली चूक तर नाही ना झाली?',
 'nouserspecified' => 'तुम्हाला सदस्यनाव नमूद करावे लागेल.',
-'login-userblocked' => 'या à¤¸à¤¦à¤¸à¥\8dयाà¤\9aà¥\87 à¤\96ातà¥\87 â\80\99पà¥\8dरतिबà¤\82धितâ\80\99 à¤\86हà¥\87. à¤¤à¥\8dयास à¤ªà¥\8dरवà¥\87श à¤\95रà¥\82 à¤¦à¥\87णà¥\87 à¤¶à¤\95à¥\8dय नाही.',
+'login-userblocked' => 'हा à¤¸à¤¦à¤¸à¥\8dय â\80\99पà¥\8dरतिबà¤\82धितâ\80\99 à¤\86हà¥\87. à¤¤à¥\8dयास à¤¸à¤¨à¥\8bà¤\82द-पà¥\8dरवà¥\87शाà¤\9aà¥\80 à¤ªà¤°à¤µà¤¾à¤¨à¤\97à¥\80 नाही.',
 'wrongpassword' => 'आपला परवलीचा शब्द चुकीचा आहे, पुन्हा एकदा प्रयत्न करा.',
 'wrongpasswordempty' => 'परवलीचा शब्द रिकामा आहे; परत प्रयत्न करा.',
-'passwordtooshort' => 'तà¥\81मà¤\9aा à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤\9cरà¥\82रà¥\80पà¥\87à¤\95à¥\8dषा à¤²à¤¹à¤¾à¤¨ à¤\86हà¥\87. à¤¯à¤¾à¤¤ à¤\95मà¥\80त à¤\95मà¥\80 {{PLURAL:$1|१ à¤\85à¤\95à¥\8dषर |$1 à¤\85à¤\95à¥\8dषरà¥\87}} à¤ªà¤¾à¤¹à¤¿à¤\9cà¥\87त.',
+'passwordtooshort' => 'तà¥\81मà¤\9aà¥\8dया à¤ªà¤°à¤µà¤²à¥\80à¤\9aà¥\8dया à¤¶à¤¬à¥\8dदात à¤\95िमान {{PLURAL:$1|१ à¤\85à¤\95à¥\8dषर |$1 à¤\85à¤\95à¥\8dषरà¥\87}} à¤¹à¤µà¥\80त.',
 'password-name-match' => 'आपला परवलीचा शब्द हा आपल्या सदस्यनावापेक्षा वेगळा हवा.',
 'password-login-forbidden' => 'या सदस्यनामाचा व परवलीच्या शब्दाचा वापर निषिद्ध आहे.',
-'mailmypassword' => 'परवलà¥\80à¤\9aा à¤¨à¤µà¥\80न à¤¶à¤¬à¥\8dद à¤\88-मà¥\87ल पत्त्यावर पाठवा',
+'mailmypassword' => 'नवà¥\80न à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤µà¤¿à¤ªà¤¤à¥\8dर (à¤\88-मà¥\87ल) पत्त्यावर पाठवा',
 'passwordremindertitle' => '{{SITENAME}}करिता नवा तात्पुरता परवलीचा शब्दांक.',
 'passwordremindertext' => 'कुणीतरी (कदाचित तुम्ही, अंकपत्ता $1 कडून) {{SITENAME}} करिता ’नवा परवलीचा शब्दांक पाठवावा’ अशी विनंती केली आहे ($4).
-"$2" सदस्याकरिता परवलीचा शब्दांक "$3" झाला आहे.
-तà¥\81मà¥\8dहà¥\80 à¤\86ता à¤ªà¥\8dरवà¥\87श à¤\95रा à¤µ à¤¤à¥\81मà¤\9aा à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dदाà¤\82à¤\95 à¤¬à¤¦à¤²à¤¾. à¤¤à¥\81मà¤\9aा à¤\85सà¥\8dथायà¥\80 à¤¶à¤¬à¥\8dदाà¤\82à¤\95 {{PLURAL:$5|à¤\8fà¤\95ा à¤¦à¤¿à¤µà¤¸à¤¾à¤¤|$5 à¤¦à¤¿à¤µà¤¸à¤¾à¤\82त}} à¤¸à¤\82पà¥\87ल.
+"$2" à¤¸à¤¦à¤¸à¥\8dयाà¤\95रिता à¤¤à¤¾à¤¤à¥\8dपà¥\81रता à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dदाà¤\82à¤\95 "$3" à¤\9dाला à¤\86हà¥\87.
+तà¥\81मà¥\8dहà¥\80 à¤\86ता à¤ªà¥\8dरवà¥\87श à¤\95रा à¤µ à¤¤à¥\81मà¤\9aा à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dदाà¤\82à¤\95 à¤¬à¤¦à¤²à¤¾. à¤¤à¥\81मà¤\9aा à¤\85सà¥\8dथायà¥\80 à¤¶à¤¬à¥\8dदाà¤\82à¤\95 {{PLURAL:$5|à¤\8fà¤\95ा à¤¦à¤¿à¤µà¤¸à¤¾à¤¤|$5 à¤¦à¤¿à¤µà¤¸à¤¾à¤\82त}} à¤®à¥\83त à¤¹à¥\8bà¤\88ल.
 
 जर ही विनंती इतर कुणी केली असेल किंवा तुम्हाला तुमचा परवलीचा शब्दांक आठवला असेल आणि तुम्ही तो आता बदलू इच्छित नसाल तर, तुम्ही हा संदेश दुर्लक्षित करून जुना परवलीचा शब्दांक वापरत राहू शकता.',
-'noemail' => '"$1" à¤¸à¤¦à¤¸à¥\8dयासाठà¥\80 à¤\95à¥\8bणताहà¥\80 à¤\88-मà¥\87ल à¤ªà¤¤à¥\8dता à¤¦à¤¿à¤²à¥\87ला नाही.',
+'noemail' => '"$1" à¤¸à¤¦à¤¸à¥\8dयाà¤\9aà¥\8dया à¤\95à¥\8bणतà¥\8dयाहà¥\80 à¤µà¤¿à¤ªà¤¤à¥\8dरपतà¥\8dतà¥\8dयाà¤\9aà¥\80(à¤\88-मà¥\87ल)नà¥\8bà¤\82द नाही.',
 'noemailcreate' => 'आपण वैध विरोप-पत्ता (ई-मेल ऍड्रेस) देणे आवश्यक आहे.',
-'passwordsent' => '"$1" सदस्याच्या ई-मेल पत्त्यावर परवलीचा नवीन शब्द पाठविण्यात आलेला आहे.
-तो शब्द वापरुन पुन्हा प्रवेश करा.',
-'blocked-mailpassword' => 'संपादनापासून तुमच्या अंकपत्त्यास आडविण्यात आले आहे,आणि म्हणून दुरूपयोग टाळ्ण्याच्या दृष्टीने परवलीचाशब्द परत मिळवण्यास सुद्धा मान्यता उपलब्ध नाही.',
+'passwordsent' => '"$1" सदस्याच्या नोंदणी केलेल्या ई-मेल पत्त्यावर परवलीचा नवीन शब्द पाठविण्यात आलेला आहे.
+
+तो मिळाल्यावर पुन्हा सनोंद-प्रवेश करा.',
+'blocked-mailpassword' => 'तुमच्या अंकपत्त्यास संपादनापासून प्रतिबंधित करण्यात आले आहे,आणि म्हणून दुरूपयोग टाळ्ण्याच्या दृष्टीने, परवलीचा शब्द परत मिळवण्याची क्रिया करण्यास आपणास परवानगी नाही.',
 'eauthentsent' => 'नामांकित ई-मेल पत्त्यावर एक निश्चितता स्वीकारक ई-मेल पाठविला गेला आहे.
 खात्यावर कोणताही इतर ई-मेल पाठविण्यापूर्वी - तो ई-मेल पत्ता तुमचाच आहे, हे सुनिश्चित करण्यासाठी - तुम्हाला त्या ई-मेल मधील सूचनांचे पालन करावे लागेल.',
 'throttled-mailpassword' => 'मागील {{PLURAL:$1|तासात|$1 तासांत}} परवलीचा शब्द बदलण्यासाठीची सूचना विपत्राद्वारे पाठविलेली आहे. दुरुपयोग टाळण्यासाठी, {{PLURAL:$1|एका तासामध्ये|$1 तासांमध्ये}} फक्त एकदाच सूचना दिली जाईल.',
 'mailerror' => 'विपत्र पाठवण्यात त्रुटी: $1',
 'acct_creation_throttle_hit' => 'माफ करा, तुम्ही आत्तापर्यंत {{PLURAL:$1|१ खाते उघडले आहे|$1 खाती उघडली आहेत}}. तुम्हाला आणखी खाती उघडता येणार नाहीत.',
 'emailauthenticated' => 'तुमचा विपत्रपत्ता $3 येथे $2 यावेळी तपासण्यात आला आहे.',
-'emailnotauthenticated' => 'तà¥\81मà¤\9aा à¤\88-मà¥\87ल à¤ªà¤¤à¥\8dता à¤¤à¤ªà¤¾à¤¸à¤²à¥\87ला à¤¨à¤¾à¤¹à¥\80. à¤\96ालà¥\80ल à¤\95ारà¥\8dयाà¤\82करिता ई-मेल पाठविला जाणार नाही.',
-'noemailprefs' => 'खालील सुविधा कार्यान्वित करण्यासाठी इ-मेल पत्ता पुरवा.',
-'emailconfirmlink' => 'à¤\86पला à¤\88-मà¥\87ल à¤ªà¤¤à¥\8dता à¤¤à¤ªà¤¾à¤¸à¥\82न à¤ªà¤¹ा.',
+'emailnotauthenticated' => 'तà¥\81मà¤\9aा à¤\88-मà¥\87ल à¤ªà¤¤à¥\8dता à¤\85दà¥\8dयाप à¤\85धिपà¥\8dरमाणित(à¤\91थà¥\87à¤\82à¤\9fिà¤\95à¥\87à¤\9fà¥\87ड) à¤¨à¤¾à¤¹à¥\80. à¤\96ालà¥\80ल à¤\95à¥\8bणतà¥\8dयाहà¥\80 à¤«à¤¿à¤\9aरà¥\8dसकरिता ई-मेल पाठविला जाणार नाही.',
+'noemailprefs' => 'खालील सुविधा कार्यान्वित करण्यासाठी,पसंतीक्रमात ई-मेल पत्ता नमूद करा.',
+'emailconfirmlink' => 'à¤\86पला à¤\88-मà¥\87ल à¤ªà¤¤à¥\8dता à¤¨à¤¿à¤¶à¥\8dà¤\9aित à¤\95रा.',
 'invalidemailaddress' => 'तुम्ही दिलेला ई-मेल पत्ता चुकीचा आहे, कारण तो योग्यप्रकारे लिहिलेला नाही. कृपया योग्यप्रकारे ई-मेल पत्ता लिहा अथवा ती जागा मोकळी सोडा.',
 'cannotchangeemail' => 'या विकिवर खात्याचा ईमेल बदलता येत नाही',
 'emaildisabled' => 'हे संकेतस्थळ विपत्र पाठवू शकत नाही.',
 'accountcreated' => 'खाते उघडले.',
 'accountcreatedtext' => '[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|चर्चा]]) चे सदस्यखाते तयार करण्यात आले आहे.',
-'createaccount-title' => '{{SITENAME}} साठीची सदस्य नोंदणी',
-'createaccount-text' => 'तà¥\81मà¤\9aà¥\8dया à¤µà¤¿à¤ªà¤¤à¥\8dर à¤ªà¤¤à¥\8dतà¥\8dयाà¤\95रिता {{SITENAME}} ($4)वर "$2" à¤¨à¤¾à¤µà¤¾à¤\9aà¥\8dया à¤\95à¥\81णà¥\80 "$3" à¤ªà¤°à¤µà¤²à¥\80नà¥\87 à¤\96ातà¥\87 à¤\89à¤\98डलà¥\87 à¤\86हà¥\87. à¤\95à¥\83पया à¤\86पण à¤¸à¤¦à¤¸à¥\8dय प्रवेश करून आपला परवलीचा शब्द बदलावा.
+'createaccount-title' => '{{SITENAME}} साठी खाते तयार करणे',
+'createaccount-text' => 'तà¥\81मà¤\9aा à¤µà¤¿à¤ªà¤¤à¥\8dर à¤ªà¤¤à¥\8dता à¤\98à¥\87à¤\89न {{SITENAME}} ($4)वर "$2" à¤¨à¤¾à¤µà¤¾à¤\9aà¥\8dया à¤\95à¥\8bणà¥\8dया à¤\8fà¤\95ानà¥\87 "$3" à¤ªà¤°à¤µà¤²à¥\80नà¥\87 à¤\96ातà¥\87 à¤\89à¤\98डलà¥\87 à¤\86हà¥\87. à¤\95à¥\83पया à¤\86पण à¤¸à¤¨à¥\8bà¤\82द-प्रवेश करून आपला परवलीचा शब्द बदलावा.
 
-à¤\9cर à¤¹à¥\80 à¤¨à¥\8bà¤\82दणà¥\80 à¤\9aà¥\81à¤\95िनà¥\87 à¤\9dालà¥\80 à¤\85सà¥\87ल à¤¤à¤° तुम्ही या संदेशाकडे दुर्लक्ष करू शकता.',
+à¤\9cर à¤¹à¥\80 à¤\96ातà¥\87नà¥\8bà¤\82दणà¥\80 à¤\9aà¥\81à¤\95िनà¥\87 à¤\9dालà¥\80 à¤\85सà¥\87ल à¤¤à¤°, तुम्ही या संदेशाकडे दुर्लक्ष करू शकता.',
 'usernamehasherror' => 'सदस्यनामात "हॅश" वर्ण असू शकत नाहीत.',
-'login-throttled' => 'तà¥\81मà¥\8dहà¥\80 à¤ªà¥\8dरवà¥\87श à¤\95रणà¥\8dयासाठà¥\80 à¤\96à¥\82प प्रयत्न केले आहेत.
-कृपया पुन्हा प्रयत्न करण्याआधी थांबा',
+'login-throttled' => 'तà¥\81मà¥\8dहà¥\80 à¤¨à¥\81à¤\95तà¥\87à¤\9a à¤¸à¤¨à¥\8bà¤\82द- à¤ªà¥\8dरवà¥\87शासाठà¥\80 à¤\85नà¥\87à¤\95ानà¥\87à¤\95 प्रयत्न केले आहेत.
+कृपया, पुन्हा प्रयत्न करण्याआधी थोडी उसंत घ्या.',
 'login-abort-generic' => 'तुमचा प्रवेश अयशस्वी होऊन रद्द झाला.',
 'loginlanguagelabel' => 'भाषा: $1',
-'suspicious-userlogout' => 'तà¥\81मà¤\9aà¥\87 à¤¸à¤¨à¥\8bà¤\82द-निरà¥\8dà¤\97मन à¤ªà¥\8dरतिबà¤\82धित à¤\9dालà¥\87 à¤\95ारण à¤\85सà¥\87 à¤¦à¤¿à¤¸à¤¤à¥\87 à¤\95à¥\80 à¤¤à¥\87 à¤¤à¥\81à¤\9fलà¥\87लà¥\8dया à¤¨à¥\8dयाहाळà¤\95ादà¥\8dवारà¥\87 à¤ªà¤¾à¤ à¤µà¤²à¥\8dया à¤\97à¥\87लà¥\87.',
+'suspicious-userlogout' => 'तà¥\81मà¤\9aà¥\8dया à¤¸à¤¨à¥\8bà¤\82द-निरà¥\8dà¤\97मनास à¤¨à¤\95ार à¤¦à¤¿à¤²à¥\8dया à¤\97à¥\87ला à¤\95ारण à¤\85सà¥\87 à¤¦à¤¿à¤¸à¤¤à¥\87 à¤\95à¥\80 à¤¤à¥\80 à¤µà¤¿à¤¨à¤\82तà¥\80 à¤\85न-à¤\85नà¥\81बà¤\82धित(डिसà¤\95नà¥\87à¤\95à¥\8dà¤\9fà¥\87ड) à¤¨à¥\8dयाहाळà¤\95ादà¥\8dवारà¥\87 à¤ªà¤¾à¤ à¤µà¤²à¥\8dया à¤\97à¥\87लà¥\80.',
 
 # Email sending
 'php-mail-error-unknown' => 'पीएचपीच्या विपत्र() पर्यायात अज्ञात चूक',
@@ -870,7 +871,7 @@ $2',
 
 # Change password dialog
 'resetpass' => 'परवलीचा शब्द बदला',
-'resetpass_announce' => 'तà¥\81मà¥\8dहà¥\80 à¤\88-मà¥\87ल à¤®à¤§à¥\82न à¤¦à¤¿à¤²à¥\87लà¥\8dया à¤¤à¤¾à¤¤à¥\8dपà¥\81रतà¥\8dया à¤¶à¤¬à¥\8dदाà¤\82à¤\95ानà¥\87 à¤ªà¥\8dरवà¥\87श à¤\95à¥\87लà¥\87ला à¤\86हà¥\87. à¤\86पलà¥\80 à¤¸à¤¦à¤¸à¥\8dय à¤¨à¥\8bà¤\82दणà¥\80 à¤ªà¥\82रà¥\8dण à¤\95रणà¥\8dयासाठà¥\80 à¤\95à¥\83पया à¤\87थà¥\87 à¤¨à¤µà¥\80न à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤¦à¥\8dया:',
+'resetpass_announce' => 'तà¥\81मà¥\8dहà¥\80 à¤\88-मà¥\87ल à¤®à¤§à¥\82न à¤¦à¤¿à¤²à¥\87लà¥\8dया à¤¤à¤¾à¤¤à¥\8dपà¥\81रतà¥\8dया à¤¶à¤¬à¥\8dदाà¤\82à¤\95ानà¥\87 à¤¸à¤¨à¥\8bà¤\82द à¤ªà¥\8dरवà¥\87शित à¤\86हात. à¤\86पला à¤¸à¤¨à¥\8bà¤\82द-पà¥\8dरवà¥\87श à¤ªà¥\82रà¥\8dण à¤\95रणà¥\8dयासाठà¥\80, à¤\95à¥\83पया à¤¯à¥\87थà¥\87 à¤¨à¤µà¥\80न à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤¦à¥\8dया:',
 'resetpass_text' => '<!-- मजकूर इथे लिहा -->',
 'resetpass_header' => 'खात्याचा परवलीचा शब्द बदला',
 'oldpassword' => 'जुना परवलीचा शब्दः',
@@ -897,7 +898,7 @@ $2',
 'passwordreset-username' => 'सदस्यनाव:',
 'passwordreset-domain' => 'डोमेन',
 'passwordreset-capture' => 'ईमेल कशी असेल ते बघायचेय ?',
-'passwordreset-capture-help' => 'या à¤\9aà¥\8cà¤\95à¤\9fà¥\80त à¤\96à¥\82ण à¤\95à¥\87लà¥\80 à¤¤à¤°, à¤\88मà¥\87ल (तातà¥\8dपà¥\81रà¥\8dतà¥\8dया à¤ªà¤°à¤µà¤²à¥\80 à¤¶à¤¬à¥\8dदा à¤¸à¥\8bबत) à¤¦à¤\96वणà¥\8dयत à¤µ à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dतà¥\8dतà¥\8dयस à¤ªà¤¾à¤ à¤µà¤£à¥\8dयत à¤¯à¥\87à¤\87ल',
+'passwordreset-capture-help' => 'या à¤\9aà¥\8cà¤\95à¤\9fà¥\80त à¤\96à¥\82ण à¤\95à¥\87लà¥\80 à¤¤à¤°, à¤\88मà¥\87ल (तातà¥\8dपà¥\81रतà¥\8dया à¤ªà¤°à¤µà¤²à¥\80à¤\9aà¥\8dया à¤¶à¤¬à¥\8dदासह) à¤¦à¤¾à¤\96विणà¥\8dयात à¤µ à¤¸à¤¦à¤¸à¥\8dयास à¤ªà¤¾à¤ à¤µà¤¿à¤£à¥\8dयात à¤¯à¥\87à¤\88ल.',
 'passwordreset-email' => 'विपत्र पत्ता',
 'passwordreset-emailtitle' => '{{SITENAME}} वर खात्याची माहिती',
 'passwordreset-emailtext-ip' => 'कुणीतरी (कदाचित तुम्ही, अंकपत्ता $1 वरुन) {{SITENAME}}($4) करिता नविन \'परवलीचा शब्द\' पुनर्स्थापनेबद्दल विनंती केली आहे.
@@ -942,7 +943,7 @@ $2',
 
 # Edit page toolbar
 'bold_sample' => 'ठळक मजकूर',
-'bold_tip' => 'ठळक',
+'bold_tip' => 'ठळक मजकूर',
 'italic_sample' => 'तिरकी अक्षरे',
 'italic_tip' => 'तिरकी अक्षरे',
 'link_sample' => 'दुव्याचे शीर्षक',
@@ -968,14 +969,14 @@ $2',
 'showpreview' => 'झलक दाखवा',
 'showlivepreview' => 'थेट झलक',
 'showdiff' => 'बदल दाखवा',
-'anoneditwarning' => "'''à¤\87शारा:''' à¤¤à¥\81मà¥\8dहà¥\80 à¤µà¤¿à¤\95िपà¥\80डियाà¤\9aà¥\87 à¤¸à¤¦à¤¸à¥\8dय à¤®à¥\8dहणà¥\82न à¤ªà¥\8dरवà¥\87श (लà¥\89à¤\97-à¤\87न) à¤\95à¥\87लà¥\87ला à¤¨à¤¾à¤¹à¥\80. à¤¯à¤¾ à¤ªà¤¾à¤¨à¤¾à¤\9aà¥\8dया à¤¸à¤\82पादन à¤\87तिहासात à¤¤à¥\81मà¤\9aा à¤\85à¤\82à¤\95 पत्ता (आयपी) नोंदला जाईल.",
+'anoneditwarning' => "'''à¤\87शारा:''' à¤¤à¥\81मà¥\8dहà¥\80 à¤µà¤¿à¤\95िपà¥\80डियाà¤\9aà¥\87 à¤¸à¤¦à¤¸à¥\8dय à¤®à¥\8dहणà¥\82न à¤¸à¤¨à¥\8bà¤\82द-पà¥\8dरवà¥\87श (लà¥\89à¤\97-à¤\87न) à¤\95à¥\87लà¥\87ला à¤¨à¤¾à¤¹à¥\80. à¤¯à¤¾ à¤ªà¤¾à¤¨à¤¾à¤\9aà¥\8dया à¤¸à¤\82पादन à¤\87तिहासात à¤¤à¥\81मà¤\9aा à¤\85à¤\82à¤\95पत्ता (आयपी) नोंदला जाईल.",
 'anonpreviewwarning' => "\"'''सावधान:''' तुम्ही विकिपीडियाचे सदस्य म्हणून सनोंद-प्रवेश (लॉग-इन) केलेला नाही. या पानाच्या संपादन इतिहासात तुमचा अंकपत्ता (आय.पी. ॲड्रेस) नोंदला जाईल.\"",
 'missingsummary' => "'''आठवण:''' तुम्ही संपादन सारांश पुरवलेला नाही.आपण 'जतन करा' वर पुन्हा टिचकी मारली तर ते त्याशिवाय जतन होईल.",
 'missingcommenttext' => 'कृपया खाली प्रतिक्रिया भरा.',
-'missingcommentheader' => "'''à¤\86ठवण:''' à¤\86पण à¤¯à¤¾ à¤²à¥\87à¤\96नाà¤\95रिता à¤µà¤¿à¤·à¤¯ à¤\95िà¤\82वा à¤\85धà¥\8bरà¥\87षा à¤¦à¤¿à¤²à¥\87लà¥\80 à¤¨à¤¾à¤¹à¥\80. à¤\86पण à¤ªà¥\81नà¥\8dहा à¤\9cतन à¤\95रा à¤\85शà¥\80 à¤¸à¥\82à¤\9aना à¤\95à¥\87लà¥\80 तर, तुमचे संपादन त्याशिवायच जतन होईल.",
+'missingcommentheader' => "'''à¤\86ठवण:''' à¤\86पण à¤¯à¤¾ à¤²à¥\87à¤\96नाà¤\95रिता à¤µà¤¿à¤·à¤¯ à¤\95िà¤\82वा à¤®à¤¥à¤³à¤¾ à¤¦à¤¿à¤²à¥\87ला à¤¨à¤¾à¤¹à¥\80. à¤\86पण à¤ªà¥\81नà¥\8dहा \"{{int:savearticle}}\" à¤µà¤° à¤\9fिà¤\9aà¤\95लà¥\87 तर, तुमचे संपादन त्याशिवायच जतन होईल.",
 'summary-preview' => 'आढाव्याची झलक:',
 'subject-preview' => 'विषय/मथळा झलक:',
-'blockedtitle' => 'या à¤¸à¤¦à¤¸à¥\8dयासाठà¥\80 à¤ªà¥\8dरवà¥\87श à¤¨à¤¾à¤\95ारणà¥\8dयात à¤\86लà¥\87ला à¤\86हà¥\87.',
+'blockedtitle' => 'हा à¤¸à¤¦à¤¸à¥\8dय à¤ªà¥\8dरतिबà¤\82धित à¤\86हà¥\87',
 'blockedtext' => "'''तुमचे सदस्यनाव अथवा IP पत्ता ब्लॉक केलेला आहे.'''
 
 हा ब्लॉक $1 यांनी केलेला आहे.
@@ -1005,27 +1006,27 @@ $2',
 'whitelistedittext' => 'लेखांचे संपादन करण्यासाठी आधी $1 करा.',
 'confirmedittext' => 'तुम्ही संपादने करण्यापूर्वी तुमचा विपत्र पत्ता प्रमाणित करणे आवश्यक आहे.Please set and validate तुमचा विपत्र पत्ता तुमच्या [[Special:Preferences|सदस्य पसंती]]तून लिहा व सिद्ध करा.',
 'nosuchsectiontitle' => 'असा विभाग नाही.',
-'nosuchsectiontext' => 'तुम्ही अस्तिवात नसलेला विभाग संपादन करण्याचा प्रयत्न केला आहे.',
-'loginreqtitle' => 'पà¥\8dरवà¥\87श à¤\97रà¤\9cà¥\87à¤\9aा आहे',
+'nosuchsectiontext' => 'तुम्ही अस्तिवात नसलेला विभाग संपादन करण्याचा प्रयत्न केला आहे.हे पान आपण बघत असतांना तो हलविल्या किंवा वगळल्या गेला आहे.',
+'loginreqtitle' => 'सनà¥\8bà¤\82द-पà¥\8dरवà¥\87श à¤\86वशà¥\8dयà¤\95 आहे',
 'loginreqlink' => '
 सनोंद-प्रवेश करा',
 'loginreqpagetext' => 'तुम्ही इतर पाने पहाण्याकरिता $1 केलेच पाहिजे.',
 'accmailtitle' => 'परवलीचा शब्द पाठविण्यात आलेला आहे.',
-'accmailtext' => '[[User talk:$1|$1]] à¤¯à¤¾à¤\82साठà¥\80 à¤\85विशिषà¥\8dà¤\9fपनà¥\86 निर्मित केलेला परवलीचा शब्द $2 यांना पाठवण्यात आला आहे.
+'accmailtext' => '[[User talk:$1|$1]] à¤¯à¤¾à¤\82साठà¥\80 à¤\85नियतà¤\95à¥\8dरमानà¥\87 निर्मित केलेला परवलीचा शब्द $2 यांना पाठवण्यात आला आहे.
 
-या नवीन खात्यासाठीचा परवलीचा शब्द प्रवेश घेतल्यावर [[Special:ChangePassword|येथे]] बदलता येईल.',
+या नवीन खात्यासाठीचा परवलीचा शब्द,सनोंद-प्रवेश घेतल्यावर [[Special:ChangePassword|परवलीचा शब्द बदला]] येथे बदलता येईल.',
 'newarticle' => '(नवीन लेख)',
 'newarticletext' => 'तुम्हाला अपेक्षित असलेला लेख अजून लिहिला गेलेला नाही. हा लेख लिहिण्यासाठी खालील पेटीत मजकूर लिहा. मदतीसाठी [[{{MediaWiki:Helppage}}|येथे]] टिचकी द्या.
 
 जर येथे चुकून आला असाल तर ब्राउझरच्या बॅक (back) कळीवर टिचकी द्या.',
-'anontalkpagetext' => "---- ''हà¥\87 à¤¬à¥\8bलपान à¤\85शा à¤\85à¤\9cà¥\8dà¤\9eात à¤¸à¤¦à¤¸à¥\8dयासाठà¥\80 à¤\86हà¥\87 à¤\9cà¥\8dयाà¤\82नà¥\80 à¤\96ातà¥\87 à¤¤à¤¯à¤¾à¤° à¤\95à¥\87लà¥\87लà¥\87 à¤¨à¤¾à¤¹à¥\80 à¤\95िà¤\82वा à¤¤à¥\8dयाà¤\9aा à¤µà¤¾à¤ªà¤° à¤\95रत à¤¨à¤¾à¤¹à¥\80त. à¤¤à¥\8dयाà¤\82à¤\9aà¥\8dया à¤\93ळà¤\96à¥\80साठà¥\80 à¤\86मà¥\8dहà¥\80 à¤\86à¤\82तरà¤\9cाल à¤\85à¤\82à¤\95पतà¥\8dता à¤µà¤¾à¤ªà¤°à¤¤à¥\8b à¤\86हà¥\8bत. à¤\85सा à¤\85à¤\82à¤\95पतà¥\8dता à¤¬à¤±à¥\8dयाà¤\9a à¤²à¥\8bà¤\95ाà¤\82à¤\9aा à¤\8fà¤\95à¤\9a à¤\85सà¥\82 à¤¶à¤\95तà¥\8b à¤\9cर à¤\86पण à¤\85à¤\9cà¥\8dà¤\9eात à¤¸à¤¦à¤¸à¥\8dय à¤\85साल à¤\86णि à¤\86पलà¥\8dयाला à¤\95ाहà¥\80 à¤\85पà¥\8dरासà¤\82à¤\97िà¤\95 à¤¸à¤\82दà¥\87श à¤®à¤¿à¤³à¤¾à¤²à¤¾ à¤\85सà¥\87ल à¤¤à¤° à¤\95à¥\83पया [[Special:UserLogin| à¤\96ातà¥\87 à¤¤à¤¯à¤¾à¤° à¤\95रा]] à¤\95िà¤\82वा [[Special:UserLogin/signup|पà¥\8dरवà¥\87श à¤\95रा]] à¤\9cà¥\8dयामà¥\81ळà¥\87 पुढे असे गैरसमज होणार नाहीत.''",
+'anontalkpagetext' => "---- ''हà¥\87 à¤\9aरà¥\8dà¤\9aापान à¤\85शा à¤\85à¤\9cà¥\8dà¤\9eात à¤¸à¤¦à¤¸à¥\8dयासाठà¥\80 à¤\86हà¥\87, à¤\9cà¥\8dयाà¤\82नà¥\80 à¤\96ातà¥\87 à¤¤à¤¯à¤¾à¤° à¤\95à¥\87लà¥\87लà¥\87 à¤¨à¤¾à¤¹à¥\80 à¤\95िà¤\82वा à¤¤à¥\8dयाà¤\9aा à¤µà¤¾à¤ªà¤° à¤\95रत à¤¨à¤¾à¤¹à¥\80त. à¤¤à¥\8dयाà¤\82à¤\9aà¥\8dया à¤\93ळà¤\96à¥\80साठà¥\80 à¤\86मà¥\8dहà¥\80 à¤\86à¤\82तरà¤\9cाल à¤\85à¤\82à¤\95पतà¥\8dता à¤µà¤¾à¤ªà¤°à¤¤à¥\8b à¤\86हà¥\8bत. à¤\85सा à¤\85à¤\82à¤\95पतà¥\8dता à¤¬à¤±à¥\8dयाà¤\9a à¤²à¥\8bà¤\95ाà¤\82à¤\9aा à¤\8fà¤\95à¤\9a à¤\85सà¥\82 à¤¶à¤\95तà¥\8b. à¤\9cर à¤\86पण à¤\85à¤\9cà¥\8dà¤\9eात à¤¸à¤¦à¤¸à¥\8dय à¤\85साल à¤\86णि à¤\86पलà¥\8dयाला à¤\95ाहà¥\80 à¤\85पà¥\8dरासà¤\82à¤\97िà¤\95 à¤¸à¤\82दà¥\87श à¤®à¤¿à¤³à¤¾à¤²à¤¾ à¤\85सà¥\87ल à¤¤à¤° à¤\95à¥\83पया [[Special:UserLogin| à¤\96ातà¥\87 à¤¤à¤¯à¤¾à¤° à¤\95रा]] à¤\95िà¤\82वा [[Special:UserLogin/signup|सनà¥\8bà¤\82द-पà¥\8dरवà¥\87श à¤\95रा]] à¤\9cà¥\8dयामà¥\81ळà¥\87, पुढे असे गैरसमज होणार नाहीत.''",
 'noarticletext' => 'या लेखात सध्या काहीही मजकूर नाही.
 तुम्ही विकिपीडियावरील इतर लेखांमध्ये या [[Special:Search/{{PAGENAME}}|मथळ्याच्या शोध घेऊ शकता]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} इतर याद्या शोधा],
 किंवा हा लेख [{{fullurl:{{FULLPAGENAME}}|action=edit}} लिहू शकता]</span>.',
 'noarticletext-nopermission' => 'सध्या या लेखात  काहीही मजकूर नाही.
 तुम्ही विकिपीडियावरील इतर लेखांमध्ये [[Special:Search/{{PAGENAME}}|या मथळ्याचा शोध घेऊ शकता]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAME}}}}आपण या लेखाच्या इतर नोंदी शोधा]</span>,परंतु, आपणास हा लेख लिहीण्याची परवानगी देण्यात येउ शकत नाही.',
 'missing-revision' => '"{{PAGENAME}}" या लेखाचे #$1 हे संस्करण अस्तित्वात नाही.वगळल्या गेलेल्या लेखपानाच्या जुन्या इतिहास-दुव्याचे अनुसरण केल्यामुळे असे होते.याबाबत विस्तृत माहिती  [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} वगळलेल्या नोंदी]येथे बघता येईल.',
-'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" सदस्य खात्याची नोंद नाही. कृपया हे पान तुम्ही संपादित किंवा नव्याने तयार करू इच्छिता का या बद्दल विचार करा.',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" सदस्य खात्याची नोंद नाही. कृपया हे पान तुम्ही संपादित किंवा नव्याने तयार करू इच्छिता काय याबद्दल विचार करा.',
 'userpage-userdoesnotexist-view' => 'सदस्यखाते "$1"  हे नोंदलेले नाही.',
 'blocked-notice-logextract' => 'हा सदस्य सध्या प्रतिबंधित आहे.
 सर्वांत नवीन प्रतिबंधन यादी खाली संदर्भासाठी दिली आहे:',
@@ -1065,17 +1066,17 @@ $2',
 'token_suffix_mismatch' => "'''तुमचे संपादन रद्द करण्यात आलेले आहे कारण तुमच्या क्लायंटनी तुमच्या संपादनातील उद्गारवाचक चिन्हांमध्ये (punctuation) बदल केलेले आहेत.
 पानातील मजकूर खराब होऊ नये यासाठी संपादन रद्द करण्यात आलेले आहे.
 असे कदाचित तुम्ही अनामिक proxy वापरत असल्याने होऊ शकते.'''",
-'edit_form_incomplete' => '”’तुमच्या संपादनाचा काही भाग सर्व्हरपर्यंत पोचला नाही; तुमचे संपादन पूर्ण आहे का याची पुन्हा खात्री करा.',
+'edit_form_incomplete' => "'''तुमच्या संपादनाचा काही भाग सर्व्हरपर्यंत पोचला नाही; तुमचे संपादन पूर्ण आहे का याची पुन्हा खात्री करा व पुन्हा प्रयत्न करा.'''",
 'editing' => '$1 चे संपादन होत आहे.',
 'creating' => '$1 ची निर्मिती सुरू आहे',
 'editingsection' => '$1 (विभाग) संपादन',
 'editingcomment' => '$1 चे संपादन (प्रतिक्रिया)',
-'editconflict' => 'वादà¤\97à¥\8dरसà¥\8dत à¤¸à¤\82पादन: $1',
+'editconflict' => 'सà¤\82पादन à¤®à¤¤à¤­à¥\87द: $1',
 'explainconflict' => "तुम्ही संपादनाला सुरूवात केल्यानंतर इतर कोणीतरी बदल केला आहे.
 वरील पाठ्यभागामध्ये सध्या अस्तिवात असलेल्या पृष्ठातील पाठ्य आहे, तर तुमचे बदल खालील पाठ्यभागात दर्शविलेले आहेत.
 तुम्हाला हे बदल सध्या अस्तिवात असणाऱ्या पाठ्यासोबत एकत्रित करावे लागतील.
 '''केवळ''' वरील पाठ्यभागामध्ये असलेले पाठ्य साठविण्यात येईल जर तुम्ही \"{{int:savearticle}}\" ही कळ दाबली.",
-'yourtext' => 'तà¥\81मà¤\9aà¥\87 à¤ªà¤¾à¤ à¥\8dय',
+'yourtext' => 'तà¥\81मà¤\9aा à¤®à¤\9cà¤\95à¥\82र',
 'storedversion' => 'साठविलेली आवृत्ती',
 'nonunicodebrowser' => "'''सावधान: तुमचा न्याहाळक युनिकोड आधारित नाही. ASCII नसलेली  अक्षरचिन्हे संपादन खिडकीत सोळाअंकी कूटसंकेत (हेक्झाडेसीमल कोड) स्वरूपात दिसण्याची, सुरक्षितपणे संपादन करू देणारी,  पळवाट उपलब्ध आहे.'''",
 'editingold' => "'''इशारा: तुम्ही मूळ पृष्ठाची एक कालबाह्य आवृत्ती संपादित करित आहात.
@@ -1225,64 +1226,59 @@ $3ने ''$2'' कारण दिले आहे.",
 'rev-deleted-no-diff' => "आपण यातील फरक बघू शकत नाही कारण त्यापैकी एक संस्करण '''वगळले''' आहे.
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} वगळल्याचा क्रमलेख] येथे त्याची विस्तृत माहिती सापडेल.",
 'rev-suppressed-no-diff' => 'तुम्ही हा फरक पाहू शकत नाही कारण या आवृत्त्यांमधील एक संस्करण ”’वगळण्यात आले आहे.”’',
-'rev-deleted-unhide-diff' => "या पेज चे रिविषन  '''रीक्त करन्यात आले आहे'''.
-महिती एथे सुद्धा मीलु शकेल [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} रीक्क्त कर्न्यात आले आहे].
-तुम्म्हि आत्ता सुद्धा [$1 फरक बघा] जर तुम्ही चलु थेउ ईच्चुक असाल तर.",
-'rev-suppressed-unhide-diff' => "या पेज चे रिविषन  '''रीक्त करन्यात आले आहे'''.
-महिती एथे सुद्धा मीलु शकेल  [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} रीक्क्त कर्न्यात आले आहे].
-तुम्म्हि तरी सुद्धा [$1 हा फरक ओलखा] जर तुम्ही चलु थेउ ईच्चुक असाल तर.",
-'rev-deleted-diff-view' => "या पेज चे रिविषन  '''रीक्त करन्यात आले आहे'''.
-तुम्म्ही हा फरक बघू शकता ; माहिती यात मीलु शकेल [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} रिक्क्त केलेली महिती].",
-'rev-suppressed-diff-view' => "या पेज चे रिविषन  '''रीक्त करन्यात आले आहे'''.
-तुम्म्ही हा फरक बघू शकता ; माहिती यात मीलु शकेल [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}  जर तुम्ही चलु थेउ ईच्चुक असाल तर].",
+'rev-deleted-unhide-diff' => "या फरकाच्या आवृत्तींपैकी एक आवृत्ती  '''वगळण्यात आली आहे'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} वगळण्याच्या नोंदी] येथे अधिक तपशिल मिळू शकेल.जर आपणास काम पुढे चालू ठेवायचे असेल तर आपण आत्ता सुद्धा [$1 हा फरक बघु शकता].",
+'rev-suppressed-unhide-diff' => "या फरकाच्या आवृत्तींपैकी एक आवृत्ती '''दडपण्यात आली आहे'''. [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} दडपण्याच्या  नोंदी] येथे अधिक तपशिल मिळू शकेल.जर आपणास काम पुढे चालू ठेवायचे असेल तर, आपण आत्ता सुद्धा [$1 हा फरक बघु शकता].",
+'rev-deleted-diff-view' => "या फरकाच्या आवृत्तींपैकी एक आवृत्ती '''वगळण्यात आली आहे'''. आपण हा फरक बघु शकता; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} वगळण्याच्या नोंदी] येथे अधिक तपशिल मिळू शकेल.",
+'rev-suppressed-diff-view' => "या फरकाच्या आवृत्तींपैकी एक आवृत्ती '''दडपण्यात आली आहे'''. आपण हा फरक बघु शकता; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} दडपण्याच्या नोंदी] येथे अधिक तपशिल मिळू शकेल.",
 'rev-delundel' => 'दाखवा/लपवा',
 'rev-showdeleted' => 'दाखवा',
-'revisiondelete' => 'à¤\86वरà¥\8dतनà¥\87 वगळा/पुनर्स्थापित करा',
-'revdelete-nooldid-title' => 'à¤\85पà¥\87à¤\95à¥\8dषà¥\80त à¤\86वà¥\83तà¥\8dतà¥\80 à¤¦à¤¿à¤²à¥\87लà¥\80 à¤¨à¤¾à¤¹ी',
-'revdelete-nooldid-text' => '!!आपण ही कृती करावयाची आवर्तने सूचीमध्ये केलेली नाहीत, दिलेले आवर्तन अस्तित्वात नाही, किंवा तुम्ही सध्याचे आवर्तन लपविण्याचा प्रयत्न करित आहात.',
+'revisiondelete' => 'à¤\86वà¥\83तà¥\8dतà¥\8dया वगळा/पुनर्स्थापित करा',
+'revdelete-nooldid-title' => 'à¤\85वà¥\88ध à¤²à¤\95à¥\8dषà¥\8dय à¤\86वà¥\83तà¥\8dती',
+'revdelete-nooldid-text' => 'आपण एकतर ही कृती करावयासाठीच्या लक्ष्य आवृत्ती(त्त्या) नमूद केल्या नाहीत / दिलेली आवृत्ती अस्तित्वात नाही, किंवा, तुम्ही सध्याची आवृत्ती लपविण्याचा प्रयत्न करीत आहात.',
 'revdelete-nologtype-title' => 'कोणताही क्रमलेखप्रकार दिलेला नाही',
-'revdelete-nologtype-text' => 'हà¥\80 à¤\95à¥\8dरिया à¤\95रणà¥\8dयासाठà¥\80 à¤¤à¥\81मà¥\8dहà¥\80 à¤¯à¤¾à¤¦à¥\80पà¥\8dरà¤\95ार à¤¨à¤¿à¤µà¤¡ला नाही.',
+'revdelete-nologtype-text' => 'हà¥\80 à¤\95à¥\8dरिया à¤\95रणà¥\8dयासाठà¥\80 à¤¤à¥\81मà¥\8dहà¥\80 à¤\95à¥\8dरमलà¥\87à¤\96पà¥\8dरà¤\95ार  à¤¨à¤®à¥\82द à¤\95à¥\87ला नाही.',
 'revdelete-nologid-title' => 'अवैध क्रमलेख प्रविष्टी',
-'revdelete-nologid-text' => 'तà¥\81मà¥\8dहà¥\80 à¤¹à¥\87 à¤\95ारà¥\8dय à¤¹à¥\8bणà¥\8dयासाठà¥\80 à¤¨à¤¿à¤¶à¥\8dà¤\9aित à¤¯à¤¾à¤¦à¥\80 प्रसंग निवडला नाही किंवा दिलेली प्रविष्टी अस्तित्वात नाही.',
+'revdelete-nologid-text' => 'तà¥\81मà¥\8dहà¥\80 à¤¹à¥\87 à¤\95ारà¥\8dय à¤¹à¥\8bणà¥\8dयासाठà¥\80 à¤\8fà¤\95तर à¤²à¤\95à¥\8dषà¥\8dय à¤\95à¥\8dरमलà¥\87à¤\96 प्रसंग निवडला नाही किंवा दिलेली प्रविष्टी अस्तित्वात नाही.',
 'revdelete-no-file' => 'दर्शिवलेली संचिका अस्तित्वात नाही.',
-'revdelete-show-file-confirm' => 'तà¥\81मà¥\8dहà¥\80 "<nowiki>$1</nowiki>" à¤¯à¤¾ à¤¸à¤\82à¤\9aिà¤\95à¥\87à¤\9aà¥\87 $2 à¤¯à¥\87थà¥\82न $3 à¤µà¥\87ळà¥\80 à¤\85सलà¥\87लà¥\87 à¤\86वरà¥\8dतन नक्की पहाणार आहात?',
+'revdelete-show-file-confirm' => 'तà¥\81मà¥\8dहà¥\80 "<nowiki>$1</nowiki>" à¤¯à¤¾ à¤¸à¤\82à¤\9aिà¤\95à¥\87à¤\9aà¥\80  $2 à¤²à¤¾ $3 à¤µà¥\87ळà¥\80  à¤µà¤\97ळलà¥\87लà¥\80 à¤\86वà¥\83तà¥\8dतà¥\80 नक्की पहाणार आहात?',
 'revdelete-show-file-submit' => 'होय',
-'revdelete-selected' => "'''[[:$1]] {{PLURAL:$2|à¤\9aà¥\87 à¤¨à¤¿à¤µà¤¡à¤²à¥\87लà¥\87 à¤\86वरà¥\8dतन|à¤\9aà¥\80 à¤¨à¤¿à¤µà¤¡à¤²à¥\87लà¥\80 à¤\86वरà¥\8dतनà¥\87}}:'''",
+'revdelete-selected' => "'''[[:$1]] {{PLURAL:$2|à¤\9aà¥\80 à¤¨à¤¿à¤µà¤¡à¤²à¥\87लà¥\80 à¤\86वà¥\83तà¥\8dतà¥\80|à¤\9aà¥\8dया à¤¨à¤¿à¤µà¤¡à¤²à¥\87लà¥\8dया à¤\86वà¥\83तà¥\8dतà¥\8dया}}:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|निवडलेली नोंदीकृत घटना|निवडलेल्या नोंदीकृत घटना}}:'''",
 'revdelete-text' => "'''वगळलेल्या नोंदी आणि घटना अजूनही पानाच्या इतिहासात आणि नोंदीत आढळेल,परंतु मजकुराचा भाग सार्वजनिक स्वरूपात उपलब्ध राहणार नाही.'''
 
 अजून इतर  प्रतिबंध घातल्या शिवाय {{SITENAME}}चे इतर प्रबंधक झाकलेला मजकूर याच दुव्याने परतवू शकतील.",
-'revdelete-confirm' => 'कृपया याची खात्री करा की तुम्ही जे करित आहात, त्याचे परिणाम जाणत आहात, आणि ते [[{{MediaWiki:Policy-url}}|मीडियाविकीच्या नीती]]नुसार आहे काय?',
+'revdelete-confirm' => "कृपया '''याची खात्री करा''' की तुम्ही जे करीत आहात, त्याचे परिणाम आपण जाणत आहात आणि, ते काम [[{{MediaWiki:Policy-url}}|मीडियाविकीच्या नीती]]नुसार आहे.",
 'revdelete-suppress-text' => "लपवण्याचा वापर '''फक्त''' पुढील बाबतीत होतो:
 * अनुपयोगी माहिती
 * अयोग्य व्यक्तिगत माहिती
-*: ''गृहपत्ते, दूरध्वनी क्रमांक व सामाजिक सुरक्षा क्रमांक''",
-'revdelete-legend' => 'दà¥\83शà¥\8dय à¤¬à¤\82धनà¥\87 à¤¨à¤¿à¤¶à¥\8dà¤\9aित करा',
+*: ''गृहपत्ते, दूरध्वनी क्रमांक व सामाजिक सुरक्षा क्रमांक वगैरे''",
+'revdelete-legend' => 'दà¥\83शà¥\8dय à¤¬à¤\82धनà¥\87 à¤¸à¥\8dथापित करा',
 'revdelete-hide-text' => 'आवर्तीत मजकूर लपवा',
 'revdelete-hide-image' => 'संचिका मजकूर लपवा',
 'revdelete-hide-name' => 'कृती आणि लक्ष्य लपवा',
 'revdelete-hide-comment' => 'संपादन संक्षेप लपवा',
 'revdelete-hide-user' => 'संपादकाचे सदस्यनाव/आयपी अंकपत्ता लपवा',
-'revdelete-hide-restricted' => 'हà¥\80 à¤¬à¤\82धनà¥\87 à¤ªà¥\8dरबà¤\82धà¤\95 à¤¤à¤¸à¥\87à¤\9a à¤\87तराà¤\82नाहà¥\80 à¤²à¤¾à¤\97à¥\82 à¤\95रा à¤¤à¤¸à¥\87à¤\9a à¤µà¥\8dयà¤\95à¥\8dतिरà¥\87à¤\96à¥\87ला à¤¤à¤¾à¤³à¤¾ à¤ à¥\8bà¤\95ा.',
+'revdelete-hide-restricted' => 'पà¥\8dरशासà¤\95ाà¤\82दà¥\8dवारà¥\87à¤\9aà¥\80 à¤®à¤¾à¤¹à¤¿à¤¤à¥\80 à¤¦à¤¡à¤ªà¤¾ à¤¤à¤¸à¥\87à¤\9a à¤\88तराà¤\82à¤\9aà¥\80हà¥\80',
 'revdelete-radio-same' => '(कृपया बदलू नये)',
 'revdelete-radio-set' => 'होय',
 'revdelete-radio-unset' => 'नाही',
-'revdelete-suppress' => 'पà¥\8dरबà¤\82धà¤\95 à¤¤à¤¸à¥\87à¤\9a à¤\87तराà¤\82पासà¥\82न à¤µà¤¿à¤¦à¤¾ à¤²à¤ªà¤µà¤¾',
+'revdelete-suppress' => 'पà¥\8dरशासà¤\95ाà¤\82दà¥\8dवारà¥\87à¤\9aà¥\80 à¤®à¤¾à¤¹à¤¿à¤¤à¥\80 à¤¦à¤¡à¤ªà¤¾ à¤¤à¤¸à¥\87à¤\9a à¤\88तराà¤\82à¤\9aà¥\80हà¥\80',
 'revdelete-unsuppress' => 'पुर्नस्थापीत आवृत्त्यांवरील बंधने ऊठवा',
 'revdelete-log' => 'कारण:',
 'revdelete-submit' => 'निवडलेल्या {{PLURAL:$1|आवृत्तीला|आवृत्त्यांना}} लागू करा',
-'revdelete-success' => "'''à¤\86वरà¥\8dतनाà¤\82à¤\9aà¥\80 दृश्यता यशस्वीपणे अद्ययावत केली.'''",
+'revdelete-success' => "'''à¤\86वà¥\83तà¥\8dतà¥\8dयाà¤\82à¤\9aà¥\80  दृश्यता यशस्वीपणे अद्ययावत केली.'''",
 'revdelete-failure' => "'''आवर्तन दृश्यता अद्ययावत करता येत नाही:'''
 $1",
-'logdelete-success' => "'''à¤\98à¤\9fनाà¤\82à¤\9aà¥\80 à¤¦à¥\83शà¥\8dयता à¤¯à¤¶à¤¸à¥\8dवà¥\80 à¤ªà¤£à¥\87 à¤²à¤¾à¤µिली.'''",
-'logdelete-failure' => "'''यादà¥\80 à¤¦à¥\83शà¥\8dयता à¤ à¤°à¤µà¤¤à¤¾ à¤\86लà¥\80 à¤¨à¤¾à¤¹à¥\80:'''
+'logdelete-success' => "'''नà¥\8bà¤\82दà¥\80à¤\82à¤\9aà¥\80 à¤¦à¥\83शà¥\8dयता à¤¯à¤¶à¤¸à¥\8dवà¥\80 à¤ªà¤£à¥\87 à¤¸à¥\8dथापिली.'''",
+'logdelete-failure' => "'''नà¥\8bà¤\82दà¥\80à¤\82à¤\9aà¥\80 à¤¦à¥\83शà¥\8dयता à¤¸à¥\8dथापिलà¥\8dया à¤\97à¥\87लà¥\80 à¤¨à¤¾à¤¹à¥\80.'''
 $1",
 'revdel-restore' => 'दृश्यता बदला',
 'revdel-restore-deleted' => 'वगळलेल्या आवृत्त्या',
-'revdel-restore-visible' => 'दà¥\83षà¥\8dय à¤\86वरà¥\8dतनà¥\87',
+'revdel-restore-visible' => 'दà¥\83षà¥\8dय à¤\86वà¥\83तà¥\8dतà¥\8dया',
 'pagehist' => 'पानाचा इतिहास',
 'deletedhist' => 'वगळलेला इतिहास',
-'revdelete-hide-current' => '$1 à¤®à¤§à¥\80ल $2 à¤¯à¤¾ à¤µà¥\87ळà¤\9aà¥\87 à¤\86वरà¥\8dतन à¤²à¤ªà¤µà¤¤à¤¾ à¤¯à¥\87त à¤¨à¤¾à¤¹à¥\80, : ते सद्य पुनरावर्तन आहे.
+'revdelete-hide-current' => '$1 à¤®à¤§à¥\80ल $2 à¤¯à¤¾ à¤µà¥\87ळà¤\9aà¥\87 à¤\86वरà¥\8dतन à¤²à¤ªà¤µà¤¿à¤£à¥\8dयात à¤¤à¥\8dरà¥\82à¤\9fà¥\80 : ते सद्य पुनरावर्तन आहे.
 ते लपवता येत नाही.',
 'revdelete-show-no-access' => '$2, $1 ची वस्तू दाखवताना अडचण: ती "प्रतिबंधित" खूण असलेली आहे.
 तुम्ही तिच्यापर्यंत पोचू शकत नाही.',
@@ -1305,8 +1301,8 @@ $1",
 
 # Suppression log
 'suppressionlog' => 'सप्रेशन नोंद',
-'suppressionlogtext' => 'à¤\96ालà¥\80ल à¤¯à¤¾à¤¦à¥\80 à¤¹à¥\80 à¤°à¤¿à¤\95à¥\8dà¤\95à¥\8dत à¤\86नà¥\80 à¤¬à¥\8dलà¥\8bà¤\95 à¤¤à¥\8dयाà¤\9aà¥\87 à¤ªà¥\8dरà¤\95ार à¤¹à¥\87 à¤\86डà¥\8dमिनिसà¥\8dà¤\9fà¥\8dरà¥\87à¤\9fरà¥\8dस à¤ªà¤¾à¤¸à¥\82न à¤\9aà¥\81पà¥\87 à¤\85सतात.
-हà¥\87 à¤¬à¤\98ा [[Special:BlockList|IP block list]] à¤¸à¤¦à¥\8dधà¥\8dया à¤\9aालà¥\82 à¤\85सलà¥\87लà¥\87  à¤\93परà¥\87शà¥\8dनल à¤¬à¤¨à¥\8dस à¤\86णि à¤¬à¥\8dलà¥\8bà¤\9aà¥\8dà¤\95à¥\8dस.',
+'suppressionlogtext' => 'à¤\96ालà¥\80ल à¤¦à¤¿à¤²à¥\87लà¥\80 à¤¯à¤¾à¤¦à¥\80 à¤¹à¥\80 à¤µà¤\97ळणà¥\8dयाà¤\9aà¥\80 à¤µ à¤ªà¥\8dरतिबà¤\82धनाà¤\9aà¥\80 à¤\86हà¥\87 à¤\9cà¥\8dयाà¤\9aा à¤\86शय à¤¹à¤¾ à¤ªà¥\8dरशासà¤\95ाà¤\82पासà¥\82न à¤²à¤ªà¤µà¤¿à¤£à¥\8dयात à¤\86ला à¤\86हà¥\87.सधà¥\8dया à¤\85सà¥\8dतितà¥\8dवात à¤\85सलà¥\87लà¥\80 à¤¬à¤\82दà¥\80 à¤µ à¤ªà¥\8dरतिबà¤\82धनाà¤\82à¤\9aà¥\80   
+यादà¥\80 [[Special:BlockList|पà¥\8dरतिबà¤\82धनाà¤\82à¤\9aà¥\80 à¤¯à¤¾à¤¦à¥\80]] à¤¬à¤\98ा.',
 
 # History merging
 'mergehistory' => 'पान ईतिहासांचे एकत्रीकरण करा',
@@ -1315,7 +1311,7 @@ $1",
 'mergehistory-box' => 'दोन पानांची आवर्तने संमिलीत करा:',
 'mergehistory-from' => 'स्रोत पान:',
 'mergehistory-into' => 'लक्ष्य पान:',
-'mergehistory-list' => 'à¤\97à¥\8bळाबà¥\87रà¥\80à¤\9c करण्याजोगा संपादन इतिहास',
+'mergehistory-list' => 'à¤\8fà¤\95तà¥\8dरित करण्याजोगा संपादन इतिहास',
 'mergehistory-merge' => '[[:$1]]ची पुढील आवर्तने [[:$2]]मध्ये एकत्रित करता येतील.ठराविक वेळी अथवा तत्पूर्वी झालेल्या आवर्तनांचे एकत्रीकरण करण्याकरिता रेडिओ कळ स्तंभ वापरा.हा स्तंभ सुचालन दुवे वापरल्यास पूर्वपदावर येईल हे लक्षात घ्या.',
 'mergehistory-go' => 'गोळाबेरीज करण्याजोगी संपादने दाखवा',
 'mergehistory-submit' => 'आवर्तने एकत्रित करा.',
@@ -1549,10 +1545,10 @@ $1",
 'userrights-no-interwiki' => 'इतर विकींवरचे सदस्य अधिकार बदलण्याची परवानगी तुम्हाला नाही.',
 'userrights-nodatabase' => 'विदा $1 अस्तित्वात नाही अथवा स्थानिक नाही.',
 'userrights-nologin' => 'सदस्य अधिकार देण्यासाठी तुम्ही प्रबंधक म्हणून [[Special:UserLogin|प्रवेश केलेला]] असणे आवश्यक आहे.',
-'userrights-notallowed' => 'तुमच्या सदस्य खात्यास सदस्य अधिकारांची निश्चिती करण्याची परवानगी नाही.',
+'userrights-notallowed' => 'तुमच्या सदस्य खात्यास, सदस्य अधिकारांची निश्चिती करण्याची परवानगी नाही.',
 'userrights-changeable-col' => 'गट जे तुम्ही बदलू शकता',
 'userrights-unchangeable-col' => 'गट जे तुम्ही बदलू शकत नाही',
-'userrights-conflict' => 'सदसà¥\8dय-हà¤\95à¥\8dà¤\95 à¤µà¤¿à¤¸à¤\82वाद!à¤\95à¥\83पया à¤\86पलà¥\87 à¤¬à¤¦à¤² à¤ªà¥\81नà¥\8dहा à¤ªà¥\8dरयà¥\81à¤\95à¥\8dत करा.',
+'userrights-conflict' => 'बदलाबाबत à¤¸à¤¦à¤¸à¥\8dय-हà¤\95à¥\8dà¤\95 à¤µà¤¿à¤¸à¤\82वाद !à¤\95à¥\83पया à¤\86पलà¥\87 à¤¬à¤¦à¤² à¤ªà¥\81नà¥\8dहा à¤ªà¥\81नरावलà¥\8bà¤\95ित à¤µ à¤¨à¤\95à¥\8dà¤\95à¥\80 करा.',
 'userrights-removed-self' => 'आपण आपले हक्क यशस्वीरित्या काढलेत.म्हणुन, या पानात आपण दाखल होऊ शकणार नाही.',
 
 # Groups
@@ -2080,7 +2076,7 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 # Special:RandomInCategory
 'randomincategory' => 'वर्गातील अनियत पान',
 'randomincategory-invalidcategory' => '"$1" हे अधिकृत वर्गाचे नाव नाही.',
-'randomincategory-nopages' => '[[:वर्ग:$1]] यात काहीच पाने नाहीत.',
+'randomincategory-nopages' => '[[:Category:$1]] यात काहीच पाने नाहीत.',
 'randomincategory-selectcategory' => 'वर्ग: $1 $2 मधून अनियत पान उपलब्ध करा.',
 'randomincategory-selectcategory-submit' => 'जा',
 
@@ -3118,13 +3114,13 @@ $1',
 'pageinfo-length' => 'पानाचा आकार (बाइट्समध्ये)',
 'pageinfo-article-id' => 'पृष्ठ-परिचय',
 'pageinfo-language' => 'पानाच्या मजकूराची भाषा',
-'pageinfo-robot-policy' => 'शà¥\8bध-à¤\87à¤\82à¤\9cिनà¤\9aà¥\80 à¤¸à¥\8dथितà¥\80',
-'pageinfo-robot-index' => 'à¤\86नà¥\81à¤\95à¥\8dरमानà¥\80त',
-'pageinfo-robot-noindex' => 'à¤\86नà¥\81à¤\95à¥\8dरमानà¥\80त à¤\95रà¥\82 à¤¶à¤\95त नाही',
+'pageinfo-robot-policy' => 'यà¤\82तà¥\8dरमानवादà¥\8dवारà¥\87 à¤\85नà¥\81à¤\95à¥\8dरमन',
+'pageinfo-robot-index' => 'à¤\85नà¥\81मतà¥\80 à¤¦à¤¿à¤²à¥\80',
+'pageinfo-robot-noindex' => 'à¤\85नà¥\81मतà¥\80 à¤¦à¤¿à¤²à¥\8dया à¤\9cात नाही',
 'pageinfo-views' => 'अभिप्रायांची संख्या',
 'pageinfo-watchers' => 'पानावर पहारा देणाऱ्यांची संख्या',
 'pageinfo-few-watchers' => '$1 पेक्षा कमी {{PLURAL:$1|पहारेदार}}',
-'pageinfo-redirects-name' => 'या à¤ªà¤¾à¤¨à¤¾à¤\95डà¥\80ल à¤ªà¥\81नरà¥\8dनिरà¥\8dदà¥\87शनà¥\87',
+'pageinfo-redirects-name' => 'या à¤ªà¤¾à¤¨à¤¾à¤¸ à¤\85सलà¥\87लà¥\80  à¤ªà¥\81नरà¥\8dनिरà¥\8dदà¥\87शनाà¤\82à¤\9aà¥\80 à¤¸à¤\82à¤\96à¥\8dया',
 'pageinfo-subpages-name' => 'या पानाचे उप-पान',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|पुनर्निर्देशन|पुनर्निर्देशने}}; $3 {{PLURAL:$3|अ-पुनर्निर्देशन|अ-पुनर्निर्देशने}})',
 'pageinfo-firstuser' => 'पृष्ठ निर्मानक',
@@ -3724,7 +3720,7 @@ $3
 $5
 
 हा  निश्चितीकरण संदेश  $4 ला नष्ट होईल.',
-'confirmemail_body_set' => '{{SITENAME}} à¤¯à¤¾ à¤¸à¤\82à¤\95à¥\87तसà¥\8dथळावर à¤\95à¥\81णà¥\80तरà¥\80, à¤¬à¤¹à¥\81तà¥\87à¤\95 à¤¤à¥\81मà¥\8dहà¥\80, $1 à¤¯à¤¾ à¤\85à¤\82à¤\95पतà¥\8dतà¥\8dयावारà¥\82न, "$2" à¤\96ातà¥\8dयाà¤\95रिताà¤\9aा  à¤\88-मà¥\87ल  आपल्या या ई-मेल पत्त्यानुसार दिला आहे.
+'confirmemail_body_set' => '{{SITENAME}} à¤¯à¤¾ à¤¸à¤\82à¤\95à¥\87तसà¥\8dथळावर à¤\95à¥\81णà¥\80तरà¥\80, à¤¬à¤¹à¥\81तà¥\87à¤\95 à¤¤à¥\81मà¥\8dहà¥\80, $1 à¤¯à¤¾ à¤\85à¤\82à¤\95पतà¥\8dतà¥\8dयावरà¥\82न, "$2" à¤\96ातà¥\8dयाà¤\95रिताà¤\9aा  à¤\88-मà¥\87ल,  आपल्या या ई-मेल पत्त्यानुसार दिला आहे.
 
 हे खाते खरोखर तुमचे आहे याची खात्री करण्यासाठी आणि {{SITENAME}} वर ई-मेल पर्याय उत्तेजित (उपलब्ध) करण्यासाठी, हा दुवा तुमच्या ब्राउजर मधे उघडा:
 
@@ -3734,7 +3730,7 @@ $3
 
 $5
 
-हा à¤\96ातà¥\8dरà¥\80à¤\95रण à¤¸à¤\82दà¥\87श  $4 à¤²à¤¾ नष्ट होईल.',
+हा à¤\96ातà¥\8dरà¥\80à¤\95रण à¤¸à¤\82दà¥\87श  $4 à¤µà¥\87ळà¥\87त नष्ट होईल.',
 'confirmemail_invalidated' => 'इ-मेल पत्ता तपासणी रद्द करण्यात आलेली आहे',
 'invalidateemail' => 'इ-मेल तपासणी रद्द करा',
 
index 857ab41..b1a4d18 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Algazel-ms
  * @author Anakmalaysia
  * @author Aurora
  * @author Aviator
@@ -624,7 +625,7 @@ Pentadbir yang menguncinya memberikan penjelasan yang berikut: "$3".',
 # Login and logout pages
 'logouttext' => "'''Anda telah log keluar.'''
 
-Anda boleh terus menggunakan {{SITENAME}} sebagai pengguna tanpa nama, atau anda boleh <span class='plainlinks'>[$1 log masuk sekali lagi]</span> sebagai pengguna lain. Anda boleh membersihkan cache pelayar web anda sekiranya terdapat laman yang memaparkan seolah-olah anda masih log masuk.",
+Sila ingat bahawa sesetengah halaman mungkin masih dipaparkan seolah-olah anda masih log masuk hingga anda memadamkan cache pelayar anda.",
 'welcomeuser' => 'Selamat datang, $1!',
 'welcomecreation-msg' => 'Akaun anda telah dibuka.
 Jangan lupa untuk mengubah [[Special:Preferences|keutamaan anda di {{SITENAME}}]].',
@@ -671,7 +672,7 @@ Jangan lupa untuk mengubah [[Special:Preferences|keutamaan anda di {{SITENAME}}]
 'createacct-emailoptional' => 'Alamat e-mel (pilihan)',
 'createacct-email-ph' => 'Isikan alamt e-mel anda',
 'createacct-another-email-ph' => 'Masukkan alamat e-mel',
-'createaccountmail' => 'Gunakan kata laluan rawak yang sementara dan hantarnya ke alamat e-mel yang dinyatakan di bawah',
+'createaccountmail' => 'Gunakan kata laluan rawak yang sementara dan hantarnya ke alamat e-mel yang dinyatakan',
 'createacct-realname' => 'Nama sebenar (pilihan)',
 'createaccountreason' => 'Sebab:',
 'createacct-reason' => 'Sebab',
@@ -1460,7 +1461,7 @@ Tindakan ini tidak boleh dibatalkan.',
 'userrights-changeable-col' => 'Kumpulan yang anda boleh ubah',
 'userrights-unchangeable-col' => 'Kumpulan yang anda tak boleh ubah',
 'userrights-irreversible-marker' => '$1*',
-'userrights-conflict' => 'Hak-hak pengguna bercanggah! Sila terapkan pengubahan anda sekali lagi.',
+'userrights-conflict' => 'Percanggahan perubahan hak pengguna! Sila semak dan sahkan perubahan anda.',
 'userrights-removed-self' => 'Anda telah berjaya menggugurkan hak-hak sendiri. Oleh yang demikian, anda tidak boleh mengakses halaman ini lagi.',
 
 # Groups
index 6bc7041..ae882dc 100644 (file)
@@ -107,7 +107,6 @@ $messages = array(
 'tog-enotifrevealaddr' => 'Rebelar l miu andereço de correio eiletrónico nas noteficaçones',
 'tog-shownumberswatching' => "Amostrar l númaro d'outelizadores a begiar",
 'tog-fancysig' => 'Tratar assinatura cumo wikitesto (sin lhigaçon outomática)',
-'tog-showjumplinks' => 'Posseblitar lhigaçones d\'acessibelidade "{{ant:jumpto}}"',
 'tog-uselivepreview' => "Ousar l'antebison an tiempo rial (JavaScrit) (Spurmental)",
 'tog-forceeditsummary' => 'Abisar-me al antroduzir un sumairo bazio',
 'tog-watchlisthideown' => 'Scunder las mies eidiçones al lhistar mudanças a las páiginas begiadas',
index fd6b042..0ec2efd 100644 (file)
@@ -67,25 +67,29 @@ $messages = array(
 'tog-hidepatrolled' => 'လတ်တလော အပြောင်းအလဲများတွင် အရေးမကြီးသည်များကို ဝှက်ရန်',
 'tog-newpageshidepatrolled' => 'လက်တလော အပြောင်းလဲများတွင် စာမျက်နှာသစ်များကို ဝှက်ရန်',
 'tog-extendwatchlist' => 'စောင့်ကြည့်စာရင်းတွင် ပြောင်းလဲမှုအားလုံးအား  ပြရန်။',
-'tog-usenewrc' => 'á\80\9cá\80\90á\80ºá\80\90á\80\9cá\80±á\80¬á\80\95á\80¼á\80\84á\80ºá\80\86á\80\84á\80ºá\80\91á\80¬á\80¸á\80\99á\80¾á\80¯ á\80\9cá\80¯á\80\95á\80ºá\80\86á\80±á\80¬á\80\84á\80ºá\80\81á\80»á\80\80á\80ºá\80¡á\80¬á\80¸ á\80\90á\80­á\80¯á\80¸á\80\99á\80¼á\80¾á\80\84á\80·á\80ºá\80\9bá\80\94á\80º (JavaScript လိုအပ်သည်)',
+'tog-usenewrc' => 'á\80\9cá\80\90á\80ºá\80\90á\80\9cá\80±á\80¬á\80\95á\80¼á\80±á\80¬á\80\84á\80ºá\80¸á\80\9cá\80²á\80\99á\80¾á\80¯á\80\99á\80»á\80¬á\80¸á\80\90á\80½á\80\84á\80º á\80\85á\80¬á\80\99á\80»á\80\80á\80ºá\80\94á\80¾á\80¬á\80¡á\80¬á\80¸á\80\96á\80¼á\80\84á\80·á\80º á\80¡á\80¯á\80\95á\80ºá\80\85á\80¯á\80\9cá\80­á\80¯á\80\80á\80ºá\80\95á\80¼á\80±á\80¬á\80\84á\80ºá\80¸á\80\9cá\80²á\80\99á\80¾á\80¯á\80\99á\80»á\80¬á\80¸á\80\94á\80¾á\80\84á\80·á\80º á\80\85á\80±á\80¬á\80\84á\80·á\80ºá\80\80á\80¼á\80\8aá\80·á\80ºá\80\85á\80¬á\80\9bá\80\84á\80ºá\80¸ (JavaScript လိုအပ်သည်)',
 'tog-numberheadings' => 'ခေါင်းစဉ်များ အား စေ့ဆော်ချက်အတိုင်း လုပ်ဆောင်ရန်',
 'tog-showtoolbar' => 'ပြုပြင်ရန် ကိရိယာများ (JavaScript လိုအပ်သည်)',
 'tog-editondblclick' => 'ကလစ်နှစ်ခါနှိပ်လျှင် စာမျက်နှာအားပြုပြင်ပါ (JavaScript လိုအပ်သည်)',
+'tog-editsection' => '[edit] လင့်များဖြင့် အပိုင်းလိုက်တည်းဖြတ်ခြင်းကို အသုံးပြုရန်',
+'tog-editsectiononrightclick' => 'အပိုင်းလိုက်ခေါင်းစဉ်များကို ညာကလစ်နှိပ်ခြင်းဖြင့် အပိုင်းလိုက် တည်းဖြတ်ခြင်းကို အသုံးပြုရန်',
+'tog-showtoc' => 'မာတိကာပြရန် (ခေါင်းစဉ် ၃ ခုအထက်ရှိသော စာမျက်နှာများအတွက်)',
 'tog-rememberpassword' => 'ဤကွန်ပျူတာတွင် ကျွန်ုပ်ကိုမှတ်ထားရန် (အများဆုံး $1 {{PLURAL:$1|ရက်|ရက်}}ကြာ)',
-'tog-watchcreations' => 'á\80\80á\80»á\80½á\80\94á\80ºá\80¯á\80\95á\80ºá\80\85á\80\90á\80\84á\80ºá\80\9bá\80±á\80¸á\80\9eá\80¬á\80¸á\80\81á\80²á\80·á\80\9eá\80\8aá\80·á\80ºá\80\85á\80¬á\80\99á\80»á\80\80á\80ºá\80\94á\80¾á\80¬á\80\99á\80»á\80¬á\80¸á\80\80á\80­á\80¯ á\80\85á\80±á\80¬á\80\84á\80·á\80ºâ\80\8bá\80\80á\80¼á\80\8aá\80·á\80ºâ\80\8bá\80\85á\80¬â\80\8bá\80\9bá\80\84á\80ºá\80¸â\80\8bá\80\91á\80² á\80\95á\80±á\80«á\80\84á\80ºá\80¸á\80\91á\80\8aá\80·á\80ºá\80\95á\80«',
-'tog-watchdefault' => 'ကျွန်ုပ် တည်းဖြတ်ခဲ့သည့် စာမျက်နှာများကို စောင့်ကြည့်စာရင်းသို့  ပေါင်းထည့်ပါ။',
-'tog-watchmoves' => 'ကျွန်ုပ်ရွှေ့လိုက်သော စာမျက်နှာများကို စောင့်ကြည့်စာရင်းသို့ ပေါင်းထည့်ရန်',
-'tog-watchdeletion' => 'ဖျက်လိုက်သောစာမျက်နှာများကို စောင့်ကြည့်စာရင်သို့ ပေါင်းထည့်ရန်',
+'tog-watchcreations' => 'á\80\80á\80»á\80½á\80\94á\80ºá\80¯á\80\95á\80ºá\80\85á\80\90á\80\84á\80ºá\80\9bá\80±á\80¸á\80\9eá\80¬á\80¸á\80\81á\80²á\80·á\80\9eá\80\8aá\80·á\80ºá\80\85á\80¬á\80\99á\80»á\80\80á\80ºá\80\94á\80¾á\80¬á\80\99á\80»á\80¬á\80¸á\80\94á\80¾á\80\84á\80·á\80º á\80¡á\80\95á\80ºá\80\9cá\80¯á\80\95á\80ºá\80\90á\80\84á\80ºá\80\81á\80²á\80·á\80\9eá\80\8aá\80·á\80º á\80\96á\80­á\80¯á\80\84á\80ºá\80\99á\80»á\80¬á\80¸á\80\80á\80­á\80¯ á\80\85á\80±á\80¬á\80\84á\80·á\80ºâ\80\8bá\80\80á\80¼á\80\8aá\80·á\80ºâ\80\8bá\80\85á\80¬â\80\8bá\80\9bá\80\84á\80ºá\80¸â\80\8bá\80\91á\80² á\80\95á\80±á\80«á\80\84á\80ºá\80¸á\80\91á\80\8aá\80·á\80ºá\80\9bá\80\94á\80º',
+'tog-watchdefault' => 'á\80\80á\80»á\80½á\80\94á\80ºá\80¯á\80\95á\80º á\80\90á\80\8aá\80ºá\80¸á\80\96á\80¼á\80\90á\80ºá\80\81á\80²á\80·á\80\9eá\80\8aá\80·á\80º á\80\85á\80¬á\80\99á\80»á\80\80á\80ºá\80\94á\80¾á\80¬á\80\99á\80»á\80¬á\80¸á\80\94á\80¾á\80\84á\80·á\80º á\80\96á\80­á\80¯á\80\84á\80ºá\80\99á\80»á\80¬á\80¸á\80\80á\80­á\80¯ á\80\85á\80±á\80¬á\80\84á\80·á\80ºá\80\80á\80¼á\80\8aá\80·á\80ºá\80\85á\80¬á\80\9bá\80\84á\80ºá\80¸á\80\9eá\80­á\80¯á\80·  á\80\95á\80±á\80«á\80\84á\80ºá\80¸á\80\91á\80\8aá\80·á\80ºá\80\95á\80«á\81\8b',
+'tog-watchmoves' => 'á\80\80á\80»á\80½á\80\94á\80ºá\80¯á\80\95á\80ºá\80\9bá\80½á\80¾á\80±á\80·á\80\9cá\80­á\80¯á\80\80á\80ºá\80\9eá\80±á\80¬ á\80\85á\80¬á\80\99á\80»á\80\80á\80ºá\80\94á\80¾á\80¬á\80\99á\80»á\80¬á\80¸á\80\94á\80¾á\80\84á\80·á\80º á\80\96á\80­á\80¯á\80\84á\80ºá\80\99á\80»á\80¬á\80¸á\80\80á\80­á\80¯ á\80\85á\80±á\80¬á\80\84á\80·á\80ºá\80\80á\80¼á\80\8aá\80·á\80ºá\80\85á\80¬á\80\9bá\80\84á\80ºá\80¸á\80\9eá\80­á\80¯á\80· á\80\95á\80±á\80«á\80\84á\80ºá\80¸á\80\91á\80\8aá\80·á\80ºá\80\9bá\80\94á\80º',
+'tog-watchdeletion' => 'á\80\96á\80»á\80\80á\80ºá\80\9cá\80­á\80¯á\80\80á\80ºá\80\9eá\80±á\80¬á\80\85á\80¬á\80\99á\80»á\80\80á\80ºá\80\94á\80¾á\80¬á\80\99á\80»á\80¬á\80¸á\80\94á\80¾á\80\84á\80·á\80º á\80\96á\80­á\80¯á\80\84á\80ºá\80\99á\80»á\80¬á\80¸á\80\80á\80­á\80¯ á\80\85á\80±á\80¬á\80\84á\80·á\80ºá\80\80á\80¼á\80\8aá\80·á\80ºá\80\85á\80¬á\80\9bá\80\84á\80ºá\80\9eá\80­á\80¯á\80· á\80\95á\80±á\80«á\80\84á\80ºá\80¸á\80\91á\80\8aá\80·á\80ºá\80\9bá\80\94á\80º',
 'tog-minordefault' => 'တည်းဖြတ်မှုအားလုံးသည် အရေးမကြီးသော တည်းဖြတ်မှုဟု ပုံသေသတ်မှတ်ရန်',
 'tog-previewontop' => 'တည်းဖြတ်သည့်အကွက်မတိုင်မီ နမူနာကို ပြရန်',
 'tog-previewonfirst' => 'ပထမတည်းဖြတ်မှုတွင် နမူနာကို ပြရန်',
 'tog-nocache' => 'ဘရောက်ဇာ၏ page caching သိမ်းဆည်းမှုကို ပိတ်ထားရန်',
-'tog-enotifwatchlistpages' => 'ကျွန်ုပ်၏စောင့်ကြည့်စာရင်းမှ စာမျက်နှာတစ်ခုကို ပြောင်းလဲလိုက်ပါက ကျွနုပ်ဆီ အီးမေးလို့ရန်',
+'tog-enotifwatchlistpages' => 'ကျွန်ုပ်၏စောင့်ကြည့်စာရင်းမှ စာမျက်နှာတစ်ခု သို့မဟုတ် ဖိုင်တစ်ခုကို ပြောင်းလဲလိုက်ပါက ကျွနုပ်ဆီ အီးမေးပို့ရန်',
 'tog-enotifusertalkpages' => 'ကျွန်ုပ်၏ဆွေးနွေးချက်စာမျက်နှာ ပြောင်းလဲမှုရှိပါက ကျွန်ုပ်ထံ အီးမေးပို့ရန်',
-'tog-enotifminoredits' => 'စာမျက်နှာများ၏ အရေးမကြီးသော တည်းဖြတ်မှုများကိုလည်း အီးမေးပို့ရန်',
+'tog-enotifminoredits' => 'á\80\85á\80¬á\80\99á\80»á\80\80á\80ºá\80\94á\80¾á\80¬á\80\99á\80»á\80¬á\80¸á\80\94á\80¾á\80\84á\80·á\80º á\80\96á\80­á\80¯á\80\84á\80ºá\80\99á\80»á\80¬á\80¸á\81\8f á\80¡á\80\9bá\80±á\80¸á\80\99á\80\80á\80¼á\80®á\80¸á\80\9eá\80±á\80¬ á\80\90á\80\8aá\80ºá\80¸á\80\96á\80¼á\80\90á\80ºá\80\99á\80¾á\80¯á\80\99á\80»á\80¬á\80¸á\80\80á\80­á\80¯á\80\9cá\80\8aá\80ºá\80¸ á\80¡á\80®á\80¸á\80\99á\80±á\80¸á\80\95á\80­á\80¯á\80·á\80\9bá\80\94á\80º',
 'tog-enotifrevealaddr' => ' အသိပေးချက်အီးမေးများတွင် ကျွန်ုပ်၏ အီးမေးလိပ်စာကို ဖော်ပြရန်',
 'tog-shownumberswatching' => 'စောင့်ကြည့်နေသော အသုံးပြုသူအရေအတွက်ကို ပြရန်',
 'tog-oldsig' => 'ရှိနှင့်ပြီးသား လက်မှတ်၏ နမူနာ -',
+'tog-fancysig' => 'လက်မှတ်ကို ဝီကီလင့်အဖြစ် သတ်မှတ်ရန် (အလိုအလျောက်လင့်မပါဘဲနှင့်)',
 'tog-forceeditsummary' => 'တည်းဖြတ်အတိုချုပ် ဗလာဖြစ်နေလျှင် သတိပေးရန်',
 'tog-watchlisthideown' => 'ကျွန်ုပ်၏ တည်းဖြတ်မှုများကို စောင့်ကြည့်စာရင်းမှ ဝှက်ထားရန်',
 'tog-watchlisthidebots' => 'ဘော့တည်းဖြတ်မှုများကို စောင့်ကြည့်စာရင်းမှ ဝှက်ထားရန်',
@@ -94,11 +98,13 @@ $messages = array(
 'tog-watchlisthideanons' => 'စောင့်ကြည့်စာရင်းမှ အမည်မသိ အသုံးပြုသူများ၏ တည်းဖြတ်မှုများကို ဝှက်ရန်',
 'tog-watchlisthidepatrolled' => 'patrolled တည်းဖြတ်မှုများကို စောင့်ကြည့်စာရင်းမှ ဝှက်ထားရန်',
 'tog-ccmeonemails' => 'ကျွန်ုပ် အခြားအသုံးပြုသူများထံပို့သော အီးမေးမိတ္တူကို ကျွန်ုပ်ထံ ပြန်ပို့ရန်',
+'tog-diffonly' => 'ကွဲပြားမှုများအောက်ရှိ စာမျက်နှာတွင်ပါဝင်သည်များကို မပြပါနှင့်',
 'tog-showhiddencats' => 'ဝှက်ထားသော ကဏ္ဍများကို ပြရန်',
+'tog-useeditwarning' => 'မသိမ်းရသေးသော ပြောင်းလဲမှုများ နှင့် တည်းဖြတ်ဆဲစာမျက်နှာမှ ထွက်သွားလျှင် သတိပေးပါ',
 
 'underline-always' => 'အမြဲ',
 'underline-never' => 'ဘယ်သောအခါမျှ',
-'underline-default' => 'ဘရောက်ဆာ default အတိုင်း',
+'underline-default' => 'ဘရောက်ဆာ သို့ Skin default အတိုင်း',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'ဖောင့်စတိုင်ကို ပြုပြင်ရန် -',
@@ -158,6 +164,18 @@ $messages = array(
 'oct' => 'အောက်',
 'nov' => 'နို',
 'dec' => 'ဒီ',
+'january-date' => 'ဇန်နဝါရီ $1',
+'february-date' => 'ဖေဖော်ဝါရီ $1',
+'march-date' => 'မတ် $1',
+'april-date' => 'ဧပြီ $1',
+'may-date' => 'မေ $1',
+'june-date' => 'ဂျွန် $1',
+'july-date' => 'ဂျူလိုင် $1',
+'august-date' => 'ဩဂုတ် $1',
+'september-date' => 'စက်တင်ဘာ $1',
+'october-date' => 'အောက်တိုဘာ $1',
+'november-date' => 'နိုဝင်ဘာ $1',
+'december-date' => 'ဒီဇင်ဘာ $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|ကဏ္ဍ|ကဏ္ဍ}}',
@@ -168,8 +186,11 @@ $messages = array(
 'hidden-categories' => '{{PLURAL:$1|ဝှက်ထားသော ကဏ္ဍ|ဝှက်ထားသော ကဏ္ဍများ}}',
 'hidden-category-category' => 'ဝှက်ထားသော ကဏ္ဍများ',
 'category-subcat-count' => '{{PLURAL:$2|ဤကဏ္ဍတွင် အောက်ပါ ကဏ္ဍခွဲသာ ရှိသည်။ |ဤကဏ္ဍတွင် စုစုပေါင်း $2 ခု အနက်မှ အောက်ပါ {{PLURAL:$1|ကဏ္ဍခွဲ|ကဏ္ဍခွဲ $1 ခု}} ရှိသည်။}}',
+'category-subcat-count-limited' => 'ဤကဏ္ဍတွင် အောက်ပါ {PLURAL:$1|ကဏ္ဍခွဲ|$1 ကဏ္ဍခွဲများ}} ရှိသည်။',
 'category-article-count' => '{{PLURAL:$2|ဤကဏ္ဍတွင် အောက်ပါစာမျက်နှာသာ ရှိသည်။|စုစုပေါင်း $2 အနက်မှ အောက်ပါ {{PLURAL:$1|စာမျက်နှာသည်|စာမျက်နှာ $1 ခုသည်}} ဤကဏ္ဍတွင် ရှိသည်။}}',
+'category-article-count-limited' => 'အောက်ပါ{{PLURAL:$1|စာမျက်နှာ|$1 စာမျက်နှာများ}} သည် လက်ရှိကဏ္ဍတွင် ရှိသည်။',
 'category-file-count' => '{{PLURAL:$2|ဤကဏ္ဍတွင် အောက်ပါဖိုင်သာ ရှိသည်။|စုစုပေါင်း $2 အနက်မှ အောက်ပါ {{PLURAL:$1|ဖိုင် သည်|ဖိုင် $1 ခုသည်}} ဤကဏ္ဍတွင် ရှိသည်။}}',
+'category-file-count-limited' => 'အောက်ပါ {PLURAL:$1|စာမျက်နှာ|$1 စာမျက်နှာများ}} သည် လက်ရှိစာမျက်နှာတွင် ရှိသည်။',
 'listingcontinuesabbrev' => 'ပံ့ပိုး',
 'index-category' => 'အက္ခရာစဉ် စာမျက်နှာများ',
 'noindex-category' => 'အက္ခရာစဉ် စာမျက်နှာများမရှိ',
@@ -180,7 +201,8 @@ $messages = array(
 'newwindow' => '(ဝင်းဒိုးအသစ်တခုကိုဖွင့်ရန်)',
 'cancel' => 'မ​လုပ်​တော့​',
 'moredotdotdot' => 'နောက်ထပ်...',
-'mypage' => 'ကျွန်ုပ် စာမျက်နှာ',
+'morenotlisted' => 'နောက်ထပ် စာရင်း မရှိပါ...',
+'mypage' => 'စာမျက်နှာ',
 'mytalk' => 'ဆွေးနွေးချက်',
 'anontalk' => 'ဤ IP address အတွက် ဆွေးနွေးရန်',
 'navigation' => 'အ​ညွှန်း​',
@@ -202,7 +224,8 @@ $messages = array(
 'vector-action-move' => 'ရွှေ့ပါ',
 'vector-action-protect' => 'ထိမ်း​သိမ်း​ပါ​',
 'vector-action-undelete' => 'မဖျက်တော့ရန်',
-'vector-action-unprotect' => 'မကာကွယ်တော့ရန်',
+'vector-action-unprotect' => 'ကာကွယ်ခြင်းကို ပြောင်းလဲရန်',
+'vector-simplesearch-preference' => 'ရိုးရှင်းသော ရှာဖွေမှုဘားကို အသုံးပြုရန် (Vector skin သာ)',
 'vector-view-create' => 'စတင်ရေးသားရန်',
 'vector-view-edit' => 'ပြင်ရန်',
 'vector-view-history' => 'ရာဇဝင်ကြည့်ရန်',
index c7316d6..7c61177 100644 (file)
@@ -216,7 +216,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Невтемс зяро теицятнеде, конат аравтызь лопанть эсест ванома лемрисьментень',
 'tog-oldsig' => 'Уликс кедьпутовксось:',
 'tog-fancysig' => 'Лемпутовксось прок викитекст (сонсь теевиця сюлмавома певтеме)',
-'tog-showjumplinks' => 'Меремс "тёкадемс" маласпонгомань сюлмавомапетнес',
 'tog-uselivepreview' => 'Максомс эряй васнянь невтевкс (JavaScript) (Варчамонь)',
 'tog-forceeditsummary' => 'Невтик монень, мезе сёрмадомс витнемадо-петнемадо ёвтамонь вальминентень',
 'tog-watchlisthideown' => 'Кекшить монь теевть витневкстнэнь ванома лемрисьменть эйстэ',
index 9d6ffce..6d56c7f 100644 (file)
@@ -156,7 +156,6 @@ $messages = array(
 'tog-shownumberswatching' => 'دمبالکرونِ سِراق هدائن',
 'tog-oldsig' => 'پیش نیمایش ایمضای موجود:',
 'tog-fancysig' => 'ایمضا ره ویکی متن نظر بیرین (بدون لینک هایتن)',
-'tog-showjumplinks' => 'فعال هکردن بپرسنی پیوندون مندرجات فهرست دله',
 'tog-uselivepreview' => 'ایستیفاده از پیش نیمایش زنده (جاوا اسکریپ) (جدیده)',
 'tog-forceeditsummary' => 'زمونی که خولاصه دچی‌ین ره ننویشتمه مه ره بائو',
 'tog-watchlisthideown' => 'دپوشنی‌ین کارای من پیگریای ِفهرست دله',
index ea1d9be..bfe2f19 100644 (file)
@@ -565,6 +565,7 @@ Lí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê k
 'page_first' => 'Tùi thâu-chêng',
 'page_last' => 'Tùi āu-piah',
 'histlegend' => 'Pán-pún pí-phēng: tiám-soán beh pí-phēng ê pán-pún ê liú-á, liáu-āu chhi̍h ENTER a̍h-sī ē-kha hit tè sì-kak.<br />Soat-bêng: (taⁿ) = kap siōng sin pán-pún pí-phēng, (chêng) = kap chêng-1-ê pán-pún pí-phēng, ~ = sió siu-kái.',
+'history-fieldset-title' => '看歷史',
 'histfirst' => 'Tùi thâu-chêng',
 'histlast' => 'Tùi āu-piah',
 
@@ -572,6 +573,7 @@ Lí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê k
 'history-feed-item-nocomment' => '$1 tī $2',
 
 # Diffs
+'history-title' => '"$1"的歷史版本',
 'lineno' => 'Tē $1 chōa:',
 'compareselectedversions' => 'Pí-phēng soán-te̍k ê pán-pún',
 'editundo' => 'chhú-siau',
@@ -723,6 +725,7 @@ Tī pat-lâng liân-lo̍k lí ê sî-chūn bē kā e-mail tsū-tsí siá chhut--
 'filehist' => 'Tóng-àn ê le̍k-sú',
 'filehist-current' => 'hiān-chāi',
 'filehist-datetime' => 'Ji̍t-kî/ Sî-kan',
+'filehist-thumb' => '細張圖',
 'filehist-user' => 'Iōng-chiá',
 'imagelinks' => 'Iáⁿ-siōng liân-kiat',
 'linkstoimage' => 'Í-hā ê ia̍h liân kàu chit ê iáⁿ-siōng:',
@@ -809,6 +812,7 @@ Template:Khu-pia̍t-ia̍h',
 # Special:Log
 'specialloguserlabel' => 'Iōng-chiá:',
 'speciallogtitlelabel' => 'Sû-tiâu:',
+'log' => '記錄',
 'logempty' => 'Log lāi-bīn bô sio-tùi ê hāng-bo̍k.',
 
 # Special:AllPages
@@ -885,6 +889,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'confirmdeletetext' => 'Lí tih-beh kā 1 ê ia̍h a̍h-sī iáⁿ-siōng (pau-koat siong-koan ê le̍k-sú) éng-kiú tùi chu-liāu-khò· thâi tiāu. Chhiáⁿ khak-tēng lí àn-sǹg án-ne chò, jī-chhiáⁿ liáu-kái hiō-kó, jī-chhiáⁿ bô ûi-hoán [[{{MediaWiki:Policy-url}}]].',
 'actioncomplete' => 'Chip-hêng sêng-kong',
 'deletedtext' => '"$1" í-keng thâi tiāu. Tùi $2 khoàⁿ-ē-tio̍h chòe-kīn thâi ê kì-lo̍k.',
+'dellogpage' => '刣頁的記錄',
 'dellogpagetext' => 'Í-hā lia̍t chhut chòe-kīn thâi tiāu ê hāng-bo̍k.',
 'deletecomment' => 'Lí-iû:',
 
@@ -937,6 +942,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 # What links here
 'whatlinkshere' => 'Tó-ūi liân kàu chia',
+'whatlinkshere-page' => '頁:',
 'linkshere' => "Í-hā '''[[:$1]]''' liân kàu chia:",
 'nolinkshere' => "Bô poàⁿ ia̍h liân kàu '''[[:$1]]'''.",
 'isredirect' => 'choán-ia̍h',
@@ -1029,6 +1035,7 @@ Liâu--lo̍h-khì chìn-chêng, chhiáⁿ seng khak-tēng lí ū liáu-kái chia
 Lí ē-sái khoàⁿ i ê goân-sú-bé.',
 'tooltip-ca-history' => 'Chit ia̍h ê chá-chêng pán-pún',
 'tooltip-ca-delete' => 'Thâi chit ia̍h',
+'tooltip-ca-move' => '徙這頁',
 'tooltip-ca-unwatch' => 'Lí ê kàm-sī-toaⁿ soá tiàu chit ia̍h.',
 'tooltip-search' => 'Chhoé {{SITENAME}}',
 'tooltip-search-fulltext' => 'Chhoé ū chia-ê jī ê ia̍h',
@@ -1051,8 +1058,10 @@ Lí ē-sái khoàⁿ i ê goân-sú-bé.',
 'tooltip-ca-nstab-user' => 'Khoàⁿ iōng-chiá ê Ia̍h',
 'tooltip-ca-nstab-image' => 'Khoàⁿ tóng-àn ia̍h',
 'tooltip-ca-nstab-category' => 'Khoàⁿ lūi-pia̍t ia̍h',
+'tooltip-minoredit' => '記這是一个小改',
 'tooltip-save' => 'Pó-chhûn lí chò ê kái-piàn',
 'tooltip-preview' => 'Chhiáⁿ tī pó-chûn chìn-chêng,  sian khoàⁿ lí chò ê kái-piàn !',
+'tooltip-watch' => '共這頁加入去你的監視單',
 'tooltip-rollback' => 'Ji̍h "Hoê-choán" ē-sái thè tńg-khì téng-chi̍t-ê kái ê lâng ê ia̍h.',
 'tooltip-preferences-save' => '保存設定',
 'tooltip-summary' => 'Siá chi̍t-ê kán-tan soat-bêng',
index a9463ef..9778a0f 100644 (file)
@@ -373,6 +373,8 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
 'changeemail-cancel' => 'Canciella',
 
 # Edit page toolbar
+'bold_sample' => 'Grassetto',
+'bold_tip' => 'Grassetto',
 'italic_sample' => 'Corsivo',
 'italic_tip' => 'Corsivo',
 'link_sample' => 'Titulo ddo cullegamente',
@@ -420,6 +422,7 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
 'currentrevisionlink' => "Verzione 'e mmo",
 'cur' => 'corr',
 'last' => 'prec',
+'history-show-deleted' => 'Solo chille canciellate',
 'histfirst' => 'primma',
 'histlast' => 'urdema',
 
@@ -556,6 +559,7 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
 'nbytes' => '$1 {{PLURAL:$1|byte|byte}}',
 'ncategories' => '$1 {{PLURAL:$1|categoria|categorie}}',
 'nlinks' => '$1 {{PLURAL:$1|cullegamiento|cullegamiente}}',
+'nmembers' => '$1 {{PLURAL:$1|elemento|elemente}}',
 'popularpages' => "Paggene cchiù 'speziunate",
 'wantedpages' => 'Paggene cchiù addemannate',
 'shortpages' => 'Paggene curte',
@@ -588,6 +592,7 @@ Also see [[Special:WantedCategories|wanted categories]].",
 
 # Special:LinkSearch
 'linksearch-ok' => 'Truova',
+'linksearch-line' => "$1 presente dint'â paggena $2",
 
 # Email user
 'emailuser' => 'Email chisto utente',
@@ -637,6 +642,8 @@ Also see [[Special:WantedCategories|wanted categories]].",
 'mycontris' => "'E ffatiche d''e mmeje",
 'contribsub2' => 'Ppe $1 ($2)',
 'uctop' => '(attuale)',
+'month' => 'D"o mese (e primma):',
+'year' => "'E ll'anno (e primma):",
 
 'sp-contributions-newbies' => "Mosta solo 'e contribbute dde nove utente",
 'sp-contributions-blocklog' => 'blocche',
index 3c43065..f654c8e 100644 (file)
@@ -940,6 +940,14 @@ Midlertidig passord: $2',
 'changeemail-submit' => 'Endre e-post',
 'changeemail-cancel' => 'Avbryt',
 
+# Special:ResetTokens
+'resettokens' => 'Nullstill merker',
+'resettokens-no-tokens' => 'Det finnes ingen merker å nullstille.',
+'resettokens-legend' => 'Nullstill merker',
+'resettokens-tokens' => 'Merker:',
+'resettokens-done' => 'Nullstilling av merker.',
+'resettokens-resetbutton' => 'Nullstill valgte merker',
+
 # Edit page toolbar
 'bold_sample' => 'Fet tekst',
 'bold_tip' => 'Fet tekst',
@@ -1531,7 +1539,7 @@ Den kan maks inneholde $1 {{PLURAL:$1|tegn|tegn}}.',
 'prefs-signature' => 'Signatur',
 'prefs-dateformat' => 'Datoformat',
 'prefs-timeoffset' => 'Tidsforskyvning',
-'prefs-advancedediting' => 'Generelt',
+'prefs-advancedediting' => 'Generelle valg',
 'prefs-editor' => 'Tekstbehandling',
 'prefs-preview' => 'Forhåndsvisning',
 'prefs-advancedrc' => 'Avanserte alternativ',
@@ -1541,6 +1549,7 @@ Den kan maks inneholde $1 {{PLURAL:$1|tegn|tegn}}.',
 'prefs-displayrc' => 'Visningsalternativer',
 'prefs-displaysearchoptions' => 'Visningsalternativer',
 'prefs-displaywatchlist' => 'Visningsalternativer',
+'prefs-tokenwatchlist' => 'Merke',
 'prefs-diffs' => 'Forskjeller',
 
 # User preference: email validation using jQuery
index 49de8ad..e2d663f 100644 (file)
@@ -3008,12 +3008,12 @@ Aquò es probablament causat per un ligam sus lista negra que punta cap a un sit
 '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-index' => 'Autorizada',
 'pageinfo-robot-noindex' => 'Pas indexable',
 '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}}',
-'pageinfo-redirects-name' => 'Redireccions cap a aquesta pagina',
+'pageinfo-redirects-name' => 'Nombre de redireccions cap a aquesta pagina',
 'pageinfo-subpages-name' => "Sospaginas d'aquesta pagina",
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redireccion|redireccions}}; $3 {{PLURAL:$3|non-redireccion|non-redireccions}})',
 'pageinfo-firstuser' => 'Creator de la pagina',
index e587d2d..8204c09 100644 (file)
@@ -46,7 +46,6 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'tog-shownumberswatching' => 'Ipakit la reng bilang da reng magbanteng talagamit',
 'tog-oldsig' => 'I-preview ya ing salukuyan a pirma',
 'tog-fancysig' => 'Ituring yang wikitext ing pirma (alang automatic link o tambing a suglung)',
-'tog-showjumplinks' => 'Salangian la reng suglung a pampabilis (accessibility links) a "luksu king" (jump to)',
 'tog-uselivepreview' => 'Gumamit kang live preview (JavaScript) (Experimental)',
 'tog-forceeditsummary' => 'Pabaluan mu ku ustung magpalub a blankung edit',
 'tog-watchlisthideown' => 'Isalikut mo reng alili kareng babanten',
index 9fe56b4..4500dac 100644 (file)
@@ -677,6 +677,7 @@ Możliwe, że zostały już usunięte przez kogoś innego.',
 'cannotdelete-title' => 'Nie można usunąć strony „$1”.',
 'delete-hook-aborted' => 'Usuwanie przerwane przez hak.
 Przyczyna nieokreślona.',
+'no-null-revision' => 'Nie można utworzyć zerowej wersji strony "$1"',
 'badtitle' => 'Niepoprawny tytuł',
 'badtitletext' => 'Podano niepoprawny tytuł strony. Prawdopodobnie jest pusty lub zawiera znaki, których użycie jest zabronione.',
 'perfcached' => 'Poniższe dane są kopią z pamięci podręcznej i mogą być nieaktualne. Maksymalnie {{PLURAL:$1|jeden wynik jest|$1 wyniki są|$1 wyników jest}} w pamięci podręcznej.',
@@ -726,7 +727,6 @@ Administrator blokujący go podał następujący powód "\'\'$3\'\'".',
 # Login and logout pages
 'logouttext' => "'''Nie jesteś już zalogowany.'''
 
-Możesz kontynuować pracę w {{GRAMMAR:MS.lp|{{SITENAME}}}} jako niezarejestrowany użytkownik albo <span class='plainlinks'>[$1 zalogować się ponownie]</span> jako ten sam lub inny użytkownik.
 Zauważ, że do momentu wyczyszczenia pamięci podręcznej przeglądarki niektóre strony mogą wyglądać tak, jakbyś wciąż był zalogowany.",
 'welcomeuser' => 'Witaj, $1!',
 'welcomecreation-msg' => 'Twoje konto zostało utworzone.
@@ -769,11 +769,12 @@ Nie zapomnij dostosować [[Special:Preferences|preferencji]].',
 'helplogin-url' => 'Help:Logowanie',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pomoc z logowaniem]]',
 'createacct-join' => 'Wpisz poniżej swoje dane.',
+'createacct-another-join' => 'Wprowadź szczegóły nowego konta poniżej.',
 'createacct-emailrequired' => 'Adres e‐mail',
 'createacct-emailoptional' => 'Adres e-mail (opcjonalnie)',
 'createacct-email-ph' => 'Wpisz swój adres e-mail',
 'createacct-another-email-ph' => 'Podaj adres e-mail',
-'createaccountmail' => 'Użyj tymczasowego hasła wygenerowanego losowo i wyślij je na podany poniżej adres e-mail',
+'createaccountmail' => 'Użyj tymczasowego hasła wygenerowanego losowo i wyślij je na podany adres e-mail',
 'createacct-realname' => 'Prawdziwe imię i nazwisko (opcjonalnie)',
 'createaccountreason' => 'Powód',
 'createacct-reason' => 'Powód',
@@ -1552,6 +1553,7 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'prefs-displayrc' => 'Opcje wyświetlania',
 'prefs-displaysearchoptions' => 'Opcje wyświetlania',
 'prefs-displaywatchlist' => 'Opcje wyświetlania',
+'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Zmiany',
 
 # User preference: email validation using jQuery
@@ -1568,7 +1570,7 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'saveusergroups' => 'Zapisz',
 'userrights-groupsmember' => 'Należy do:',
 'userrights-groupsmember-auto' => 'Na stałe należy do:',
-'userrights-groups-help' => 'Możesz zmienić przynależność tego użytkownika do podanych grup.
+'userrights-groups-help' => 'Możesz zmienić przynależność tego użytkownika do podanych grup:
 * Zaznaczone pole oznacza przynależność użytkownika do danej grupy.
 * Niezaznaczone pole oznacza, że użytkownik nie należy do danej grupy.
 * Gwiazdka * informuje, że nie możesz usunąć użytkownika z grupy po dodaniu do niej lub dodać po usunięciu.',
@@ -1579,7 +1581,7 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'userrights-notallowed' => 'Nie jesteś upoważniony do nadawania i odbierania uprawnień użytkownikom.',
 'userrights-changeable-col' => 'Grupy, które możesz wybrać',
 'userrights-unchangeable-col' => 'Grupy, których nie możesz wybrać',
-'userrights-conflict' => 'Konflikt uprawnień użytkownika! Proszę zastosować zmiany ponownie.',
+'userrights-conflict' => 'Konflikt zmiany uprawnień użytkownika! Proszę sprawdzić i potwierdzić swoje zmiany.',
 'userrights-removed-self' => 'Pomyślnie odebrałeś sobie uprawnienia. W związku z tym nie masz już dostępu do tej strony.',
 
 # Groups
@@ -2137,6 +2139,13 @@ Sprawdź inne linki do szablonów, zanim usuniesz tę stronę.',
 'randompage' => 'Losowa strona',
 'randompage-nopages' => 'Brak stron w {{PLURAL:$2|przestrzeni nazw|przestrzeniach nazw:}} $1.',
 
+# Special:RandomInCategory
+'randomincategory' => 'Losowa strona w kategorii',
+'randomincategory-invalidcategory' => '"$1" nie jest prawidłową nazwą kategorii.',
+'randomincategory-nopages' => 'Nie ma żadnych stron w [[:Category:$1]].',
+'randomincategory-selectcategory' => 'Pobierz losową stronę z kategorii: $1 $2.',
+'randomincategory-selectcategory-submit' => 'Dalej',
+
 # Random redirect
 'randomredirect' => 'Losowe przekierowanie',
 'randomredirect-nopages' => 'Brak jakichkolwiek przekierowań w przestrzeni nazw „$1”.',
@@ -2150,7 +2159,7 @@ Sprawdź inne linki do szablonów, zanim usuniesz tę stronę.',
 'statistics-header-hooks' => 'Inne statystyki',
 'statistics-articles' => 'Strony',
 'statistics-pages' => 'Strony',
-'statistics-pages-desc' => 'Wszystkie strony na wiki, w tym strony dyskusji, przekierowania, itd.',
+'statistics-pages-desc' => 'Wszystkie strony na wiki, w tym strony dyskusji, przekierowania itd.',
 'statistics-files' => 'Przesłane pliki',
 'statistics-edits' => 'Edycje wykonane od powstania {{GRAMMAR:D.lp|{{SITENAME}}}}',
 'statistics-edits-average' => 'Średnia liczba edycji na stronę',
@@ -2232,6 +2241,7 @@ Każdy wiersz zawiera linki do pierwszego i drugiego przekierowania oraz link, d
 'mostrevisions' => 'Strony o największej liczbie wersji',
 'prefixindex' => 'Wszystkie strony o prefiksie',
 'prefixindex-namespace' => 'Wszystkie strony z prefiksem (przestrzeń nazw $1)',
+'prefixindex-strip' => 'Ukryj prefiks na liście wyników',
 'shortpages' => 'Najkrótsze strony',
 'longpages' => 'Najdłuższe strony',
 'deadendpages' => 'Strony bez linków wewnętrznych',
@@ -2430,7 +2440,7 @@ Każda zmiana treści tej strony lub związanej z nią strony dyskusji zostanie
 'watchmethod-list' => 'poszukiwanie obserwowanych stron wśród ostatnich zmian',
 'watchlistcontains' => 'Na liście obserwowanych przez Ciebie stron {{PLURAL:$1|znajduje się 1 pozycja|znajdują się $1 pozycje|znajduje się $1 pozycji}}.',
 'iteminvalidname' => 'Problem z pozycją „$1” – niepoprawna nazwa...',
-'wlnote' => "Poniżej pokazano {{PLURAL:$1|ostatnią zmianę wykonaną|ostatnie '''$1''' zmiany wykonane|ostatnich '''$1''' zmian wykonanych}} w ciągu {{PLURAL:$2|ostatniej godziny|ostatnich '''$2''' godzin}}, licząc od $4 dnia $3.",
+'wlnote' => "Poniżej pokazano {{PLURAL:$1|zmianę wykonaną|'''$1''' zmiany wykonane|'''$1''' zmian wykonanych}} w ciągu {{PLURAL:$2|ostatniej godziny|ostatnich '''$2''' godzin}}, licząc od $4 dnia $3.",
 'wlshowlast' => 'Pokaż ostatnie $1 godzin, $2 dni ($3)',
 'watchlist-options' => 'Opcje obserwowanych',
 
@@ -3209,9 +3219,9 @@ Najprawdopodobniej zostało to spowodowane przez link do zewnętrznej strony int
 'pageinfo-length' => 'Długość strony (w bajtach)',
 'pageinfo-article-id' => 'Identyfikator strony',
 'pageinfo-language' => 'Język zawartości strony',
-'pageinfo-robot-policy' => 'Status w wyszukiwarce',
-'pageinfo-robot-index' => 'Indeksowalne',
-'pageinfo-robot-noindex' => 'Nieindeksowalne',
+'pageinfo-robot-policy' => 'Indeksowanie przez roboty',
+'pageinfo-robot-index' => 'Dozwolone',
+'pageinfo-robot-noindex' => 'Niedozwolone',
 'pageinfo-views' => 'Odsłon',
 'pageinfo-watchers' => 'Liczba obserwujących',
 'pageinfo-few-watchers' => 'Mniej niż $1 {{PLURAL:$1|obserwujący|obserwujących}}',
@@ -4008,6 +4018,7 @@ Możesz także użyć [[Special:EditWatchlist|standardowego edytora obserwowanyc
 'version-license' => 'Licencja',
 'version-poweredby-credits' => "Ta wiki korzysta z oprogramowania '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001‐$1 $2.",
 'version-poweredby-others' => 'inni',
+'version-poweredby-translators' => 'tłumacze translatewiki.net',
 'version-credits-summary' => 'Następujące osoby wniosły istotny wkład w rozwój oprogramowania [[Special:Version|MediaWiki]].',
 'version-license-info' => 'MediaWiki jest wolnym oprogramowaniem – możesz je dystrybuować i modyfikować zgodnie z warunkami licencji GNU General Public License opublikowanej przez Free Software Foundation w wersji 2 tej licencji lub (jeśli wolisz) dowolnej późniejszej.
 
@@ -4179,8 +4190,8 @@ W przeciwnym wypadku można użyć prostego formularza poniżej. Komentarz zosta
 'feedback-error3' => 'Błąd – brak odpowiedzi API',
 'feedback-thanks' => 'Dziękujemy! Twoja opinia została opublikowana na stronie "[$2 $1]".',
 'feedback-close' => 'Gotowe',
-'feedback-bugcheck' => 'Świetnie! Tylko sprawdź, czy nie jest już jednym ze [$1 znanych błędów].',
-'feedback-bugnew' => '{{GENDER:|Sprawdziłem|Sprawdziłam}}. Zgłoś nowy błąd',
+'feedback-bugcheck' => 'Świetnie! Tylko sprawdź, czy nie jest to jeden z już [$1 znanych błędów].',
+'feedback-bugnew' => 'Sprawdziłam(łem). Zgłoś nowy błąd',
 
 # Search suggestions
 'searchsuggest-search' => 'Szukaj',
@@ -4242,4 +4253,19 @@ W przeciwnym wypadku można użyć prostego formularza poniżej. Komentarz zosta
 # Image rotation
 'rotate-comment' => 'Obraz został odwrócony o $1 {{PLURAL:$1|stopień|stopnie|stopni}} (w kierunku zgodnym z ruchem wskazówek zegara)',
 
+# Limit report
+'limitreport-title' => 'Dane profilowania parsera:',
+'limitreport-cputime' => 'Czas pracy (CPU)',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|sekunda|sekund}}',
+'limitreport-walltime' => 'Czas pracy (faktyczny)',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekunda|sekund}}',
+'limitreport-ppvisitednodes' => 'Liczba odwiedzonych węzłów preprocesora',
+'limitreport-ppgeneratednodes' => 'Liczba wygenerowanych węzłów preprocesora',
+'limitreport-postexpandincludesize' => 'Rozmiar dołączonych elementów po ekspansji',
+'limitreport-postexpandincludesize-value' => '$1/$2 bajtów',
+'limitreport-templateargumentsize' => 'Rozmiar argumentów szablonów',
+'limitreport-templateargumentsize-value' => '$1/$2 bajtów',
+'limitreport-expansiondepth' => 'Największa głębokość ekspansji',
+'limitreport-expensivefunctioncount' => 'Liczba wywołań kosztownych funkcji parsera',
+
 );
index 72874d8..6938ef5 100644 (file)
@@ -477,29 +477,52 @@ Che a dësmentia pa ëd cambié ij [[Special:Preferences|sò gust për {{SITENAM
 'login' => 'Conession',
 'nav-login-createaccount' => 'Creé un cont o rintré ant ël sistema',
 'loginprompt' => 'Che a varda mach che a venta avèj ij bëscotin abilità për podèj rintré an {{SITENAME}}.',
-'userlogin' => 'rintré ant ël sistema',
-'userloginnocreate' => 'Intra',
+'userlogin' => 'Creé un cont o rintré ant ël sistema',
+'userloginnocreate' => 'Conession',
 'logout' => "Seurte da 'nt ël sistema",
-'userlogout' => 'seurte dal sistema',
-'notloggedin' => "a l'é pa ant ël sistema",
+'userlogout' => 'Deconession',
+'notloggedin' => 'Nen rintrà ant ël sistema',
+'userlogin-noaccount' => 'Ha-lo nen un cont?',
+'userlogin-joinproject' => "Ch'as gionza a {{SITENAME}}",
 'nologin' => 'Ha-lo ancó nen un cont? $1.',
-'nologinlink' => 'creésse un cont.',
-'createaccount' => 'Crea un cont neuv',
-'gotaccount' => "Ha-lo già un sò cont? '''$1'''.",
-'gotaccountlink' => 'Rintré ant ël sistema',
+'nologinlink' => 'Creé un cont',
+'createaccount' => 'Creé un cont',
+'gotaccount' => 'Ha-lo già un sò cont? $1.',
+'gotaccountlink' => "Ch'a rintra ant ël sistema",
 'userlogin-resetlink' => "A l'ha dësmentià ij sò detaj për intré ant ël sistema?",
-'createaccountmail' => 'për pòsta eletrònica',
+'userlogin-resetpassword-link' => 'Riamposté la ciav',
+'helplogin-url' => 'Help:Conession',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Agiut con la conession]]',
+'createacct-join' => "Ch'a anserissa soe anformassion sì-sota.",
+'createacct-another-join' => "Anserì j'anformassion dël cont neuv sì-sota.",
+'createacct-emailrequired' => 'Adrëssa ëd pòsta eletrònica',
+'createacct-emailoptional' => 'Adrëssa ëd pòsta eletrònica (opsional)',
+'createacct-email-ph' => "Ch'a buta soa adrëssa ëd pòsta eletrònica",
+'createacct-another-email-ph' => "Buté l'adrëssa ëd pòsta eletrònica",
+'createaccountmail' => "Dovré na ciav temporania d'ancàpit e mandela a l'adrëssa ëd pòsta eletrònica spessificà",
+'createacct-realname' => 'Nòm ver (opsional)',
 'createaccountreason' => 'Rason:',
-'badretype' => "Le doe ciav che a l'ha scrivù a resto diferente antra lor, e a venta che a sio mideme.",
+'createacct-reason' => 'Rason',
+'createacct-reason-ph' => "Përchè a crea n'àutr cont",
+'createacct-captcha' => 'Contròl ëd sigurëssa',
+'createacct-imgcaptcha-ph' => "Ch'a anserissa ël test ch'a s-ciàira sì-dzora",
+'createacct-submit' => "Ch'a crea sò cont",
+'createacct-another-submit' => "Creé n'àutr cont",
+'createacct-benefit-heading' => "{{SITENAME}} a l'é fàit da 'd gent coma chiel.",
+'createacct-benefit-body1' => '{{PLURAL:$1|modìfica|modìfiche}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|pàgina|pàgine}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|contributor}} recent',
+'badretype' => "Le doe ciav che a l'ha scrivù a resto diferente antra 'd lor.",
 'userexists' => "Lë stranòm anserì a l'é già dovrà.
-Për piasì sern në stranòm diferent.",
+Për piasì ch'a serna në stranòm diferent.",
 'loginerror' => 'Eror ën rintrand ant ël sistema',
-'createaccounterror' => 'As peul pa creesse ël cont: $1',
-'nocookiesnew' => "Sò cont a l'é duvèrt, ma chiel (ò chila) a l'ha nen podù rintré ant ël sistema.
-{{SITENAME}} a deuvra ij cookies për fé rintré la gent ant sò sistema. Belavans chiel a l'ha pa ij cookies abilità.
+'createacct-error' => 'Eror durant la creassion dël cont',
+'createaccounterror' => "A l'é nen podusse creé ël cont: $1",
+'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.",
index fa9a104..3e19b04 100644 (file)
@@ -1217,7 +1217,7 @@ Legenda: '''({{int:cur}})''' = diferenças para a versão atual,
 'history-fieldset-title' => 'Navegar pelo histórico',
 'history-show-deleted' => 'Somente eliminados',
 'histfirst' => 'Mais antigas',
-'histlast' => 'Mais recentes',
+'histlast' => 'Mais novas',
 'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
 'historyempty' => '(vazia)',
 
@@ -2165,6 +2165,8 @@ Considera-se que uma página é de desambiguação se nela for utilizada uma pre
 'pageswithprop-text' => 'Esta página lista páginas que usam uma propriedade em particular.',
 'pageswithprop-prop' => 'Nome da propriedade:',
 'pageswithprop-submit' => 'Avançar',
+'pageswithprop-prophidden-long' => 'foi ocultado o valor da propriedade por ser um texto muito longo ($1 kilobytes)',
+'pageswithprop-prophidden-binary' => 'foi ocultado o valor da propriedade por ser binário ($1 kilobytes)',
 
 'doubleredirects' => 'Redirecionamentos duplos',
 'doubleredirectstext' => 'Esta página lista todas as páginas que redirecionam para outras páginas de redirecionamento.
@@ -2344,7 +2346,8 @@ Veja também as [[Special:WantedCategories|categorias desejadas]].',
 'listgrouprights' => 'Privilégios dos grupos de utilizadores',
 'listgrouprights-summary' => 'A seguinte lista contém os grupos de utilizadores definidos nesta wiki, com os respectivos privilégios de acesso.
 Encontram-se disponíveis [[{{MediaWiki:Listgrouprights-helppage}}|informações adicionais]] sobre privilégios individuais.',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">Privilégio concedido</span>
+'listgrouprights-key' => 'Legenda:
+* <span class="listgrouprights-granted">Privilégio concedido</span>
 * <span class="listgrouprights-revoked">Privilégio revogado</span>',
 'listgrouprights-group' => 'Grupo',
 'listgrouprights-rights' => 'Privilégios',
@@ -2525,7 +2528,7 @@ alguém editou ou já reverteu a página.
 A última edição foi de [[User:$3|$3]] ([[User talk:$3|discussão]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "O resumo da edição era: \"''\$1''\".",
 'revertpage' => 'Foram revertidas as edições de [[Special:Contributions/$2|$2]] ([[User talk:$2|disc]]) para a última versão por [[User:$1|$1]]',
-'revertpage-nouser' => 'Revertidas as edições de (nome de utilizador removido) para a última revisão por [[User:$1|$1]]',
+'revertpage-nouser' => 'Revertidas as edições de um usuário ocultado para a última revisão por [[User:$1|$1]]',
 'rollback-success' => 'Foram revertidas as edições de $1, com o conteúdo passando a estar como na última edição de $2.',
 
 # Edit tokens
@@ -3199,13 +3202,13 @@ Este bloqueio foi provavelmente causado por um link para um site externo que con
 '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' => 'Indexação por robôs',
+'pageinfo-robot-index' => 'Permitida',
+'pageinfo-robot-noindex' => 'Não permitida',
 'pageinfo-views' => 'Número de visitas',
 'pageinfo-watchers' => 'Número de vigilantes da página',
 'pageinfo-few-watchers' => 'Menos do que $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',
@@ -3546,7 +3549,7 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
 'exif-compression-4' => 'CCITT Grupo 4 codificação de fax',
 
 'exif-copyrighted-true' => 'Direitos de autor reservados',
-'exif-copyrighted-false' => 'Domínio público',
+'exif-copyrighted-false' => 'Situação dos direitos autorais não definida',
 
 'exif-unknowndate' => 'Data desconhecida',
 
index 23bed79..b1ac9f3 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 subcategoria.|Esta categoria possui as seguintes subcategorias {{PLURAL:$1|subcategoria|$1 subcategorias}}, de $2 do total.}}',
+'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-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.|A seguinte {{PLURAL:$1|página é|$1 páginas são}} nesta categoria, de $2 do total.}}',
+'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-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}}.',
@@ -954,7 +954,15 @@ Senha temporária: $2',
 
 # Special:ResetTokens
 'resettokens' => 'Reiniciar os tokens',
+'resettokens-text' => 'Você pode reiniciar os tokens, que permitem o acesso a certos dados privados associados à sua conta, aqui.
+
+Você só deve reiniciá-los se compartilhou-os com alguém ou se a sua conta foi comprometida.',
+'resettokens-no-tokens' => 'Não existem tokens para reiniciar.',
+'resettokens-legend' => 'Reiniciar tokens',
 'resettokens-token-label' => '$1 (valor atual: $2)',
+'resettokens-watchlist-token' => 'Vigiar os tokens através de um feed da Web',
+'resettokens-done' => 'Tokens reiniciados.',
+'resettokens-resetbutton' => 'Reiniciar tokens selecionados',
 
 # Edit page toolbar
 'bold_sample' => 'Texto em negrito',
@@ -1226,7 +1234,7 @@ A justificativa apresentada por $3 foi ''$2''",
 Legenda: '''({{int:cur}})''' = diferenças em relação a última versão, '''({{int:last}})''' = diferenças em relação a versão anterior, '''{{int:minoreditletter}}''' = edição menor.",
 'history-fieldset-title' => 'Navegar pelo histórico',
 'history-show-deleted' => 'Apenas as eliminadas',
-'histfirst' => 'Mais velhas',
+'histfirst' => 'Mais antigas',
 'histlast' => 'Mais novas',
 'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
 'historyempty' => '(vazio)',
@@ -1493,6 +1501,9 @@ Note que os índices do sistema de busca externo poderão conter referências de
 'recentchangesdays-max' => '(máximo: $1 {{PLURAL:$1|dia|dias}})',
 'recentchangescount' => 'Número de edições a serem exibidas por padrão:',
 'prefs-help-recentchangescount' => 'Isto inclui mudanças recentes, histórico de páginas e registros.',
+'prefs-help-watchlist-token2' => 'Esta é a senha secreta para o feed da Web com sua lista de tokens vigiados.
+Qualquer pessoa que descobrir esta senha será capaz de ler sua lista, então não a compartilhe.
+[[Special:ResetTokens|Clique aqui para redefini-la]].',
 'savedprefs' => 'As suas preferências foram salvas.',
 'timezonelegend' => 'Fuso horário:',
 'localtime' => 'Horário local:',
@@ -1590,6 +1601,7 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 '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-removed-self' => 'Você removeu com sucesso seus direitos de usuário. Como tal, você agora está impossibilitado de acessar esta página.',
 
 # Groups
 'group' => 'Grupo:',
@@ -1656,12 +1668,17 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'right-unblockself' => 'Desbloquear a si mesmo',
 'right-protect' => 'Mudar níveis de proteção e editar páginas protegidas em cascata',
 'right-editprotected' => 'Editar páginas protegidas como "{{int:protect-level-sysop}}"',
+'right-editsemiprotected' => 'Editar páginas protegidas como "{{int:protect-level-autoconfirmed}}"',
 'right-editinterface' => 'Editar a interface de usuário',
 'right-editusercssjs' => 'Editar os arquivos CSS e JS de outros usuários',
 'right-editusercss' => 'Editar os arquivos CSS de outros usuários',
 'right-edituserjs' => 'Editar os arquivos JS de outros usuários',
 'right-editmyusercss' => 'Edite seu próprio arquivo CSS de usuário',
 'right-editmyuserjs' => 'Edite seu próprio arquivo JavaScript de usuário',
+'right-viewmywatchlist' => 'Ver sua lista de vigiados',
+'right-editmywatchlist' => 'Editar sua lista de vigiados. Observe que algumas ações seguirão adicionando páginas, mesmo sem este direito.',
+'right-viewmyprivateinfo' => 'Ver seus próprios dados privados (por exemplo: endereço de e-mail, nome real)',
+'right-editmyprivateinfo' => 'Editar seus próprios dados privados (exemplo: endereço de e-mail, nome real)',
 'right-editmyoptions' => 'Modifique suas preferências.',
 'right-rollback' => 'Reverter rapidamente o último usuário que editou uma página em particular',
 'right-markbotedits' => 'Marcar edições revertidas como edições de bot',
@@ -2147,8 +2164,10 @@ Talvez você deseje editar a descrição na sua [$2 página de descrição de ar
 'randompage-nopages' => 'Não há páginas {{PLURAL:$2|no seguinte espaço nominal|nos seguintes espaços nominais}}: $1.',
 
 # Special:RandomInCategory
+'randomincategory' => 'Página aleatória na categoria',
 'randomincategory-invalidcategory' => '"$1" não é um nome de categoria válido.',
-'randomincategory-nopages' => 'Não há paginas em [[:Categoria:$1]].',
+'randomincategory-nopages' => 'Não há paginas em [[:Category:$1]].',
+'randomincategory-selectcategory' => 'Obter página aleatória da categoria: $1 $2.',
 'randomincategory-selectcategory-submit' => 'Avançar',
 
 # Random redirect
@@ -3819,17 +3838,17 @@ para cancelar a confirmação do endereço de e-mail:
 $5
 
 Este código de confirmação irá expirar em $4.',
-'confirmemail_body_set' => 'Alguém, provavelmente você com o endereço IP $1,
-definiu o endereço de correio eletrónico da conta "$2" para este na {{SITENAME}}.
+'confirmemail_body_set' => 'Alguém, provavelmente você, com o endereço de IP $1,
+definiu o endereço de e-mail da conta "$2" para este em {{SITENAME}}.
 
 Para confirmar que esta conta é realmente sua e reativar
-as funcionalidades de correio electrónico na {{SITENAME}},
-abra o seguinte link no seu browser:
+as funcionalidades de email em {{SITENAME}},
+abra o seguinte link no seu navegador:
 
 $3
 
 Caso a conta *não* lhe pertença, siga o seguinte link
-para cancelar a confirmação do endereço de correio electrónico:
+para cancelar a confirmação do endereço de e-mail:
 
 $5
 
@@ -3950,6 +3969,7 @@ Você também pode [[Special:EditWatchlist|editar a lista da maneira convenciona
 'version-license' => 'Licença',
 'version-poweredby-credits' => "Este é um wiki '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'outros',
+'version-poweredby-translators' => 'tradutores da translatewiki.net',
 'version-credits-summary' => 'Gostaríamos de agradecer às seguintes pessoas por suas contribuições no [[Special:Version|MediaWiki]]',
 'version-license-info' => 'O MediaWiki é software livre; pode redistribuí-lo e/ou modificá-lo nos termos da licença GNU General Public License, tal como publicada pela Free Software Foundation; tanto a versão 2 da Licença, como (por opção sua) qualquer versão posterior.
 
@@ -4076,7 +4096,7 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 'logentry-delete-delete' => '$1 apagou a página $3',
 'logentry-delete-restore' => '$1 restaurou a página $3',
 'logentry-delete-event' => '$1 alterou a visibilidade {{PLURAL:$5|de uma entrada|de $5 entradas}} do registro $3: $4',
-'logentry-delete-revision' => '$1 alterou a visibilidade de {{PLURAL:$5|uma revisão|$5 revisões}} na página $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|alterou}} a visibilidade de {{PLURAL:$5|uma revisão|$5 revisões}} na página $3: $4',
 'logentry-delete-event-legacy' => '$1 {{GENDER:$2|alterou}} a visibilidade de entradas de registo em $3',
 'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|alterou}} a visibilidade de revisões na página $3',
 'logentry-suppress-delete' => '$1 {{GENDER:$2|suprimiu}} a página $3',
index 652c43e..986bf67 100644 (file)
@@ -353,13 +353,29 @@ One of the set: {{msg-mw|Jan}}, {{msg-mw|Feb}}, {{msg-mw|Mar}}, {{msg-mw|Apr}},
 'december-date' => 'A date in the Gregorian month of December. $1 is the numerical date, for example "23".',
 
 # Categories related messages
-'pagecategories' => 'Used in the categories section of pages. Is followed by a colon and a list of categories.',
-'category_header' => 'In category description page',
+'pagecategories' => 'Used in the categories section of pages.
+
+Followed by a colon and a list of categories.
+
+Parameters:
+* $1 - number of categories',
+'category_header' => 'In category description page. Parameters:
+* $1 - category name
+See also:
+* {{msg-mw|Category-media-header}}',
 'subcategories' => 'Used as a header on category pages that have subcategories.
 {{Identical|Subcategory}}',
-'category-media-header' => 'In category description page',
+'category-media-header' => 'In category description page. Parameters:
+* $1 - category name
+See also:
+* {{msg-mw|Category header}}',
 'category-empty' => 'The text displayed in category page when that category is empty',
-'hidden-categories' => 'Used in the categories section of pages. Is followed by a colon and a list of categories.',
+'hidden-categories' => 'Used in the categories section of pages.
+
+Followed by a colon and a list of categories.
+
+Parameters:
+* $1 - number of hidden categories',
 'hidden-category-category' => 'Name of the [[mw:Help:Tracking categories|tracking category]] where hidden categories will be listed.',
 'category-subcat-count' => 'This message is displayed at the top of a category page showing the number of pages in the category.
 
@@ -556,7 +572,9 @@ See also:
 'create' => 'The text on the tab of the edit form on unexisting pages starts editing them.
 
 {{Identical|Create}}',
-'editthispage' => 'This is the "edit" link as used in the Cologne Blue skin, at the bottom of the page. See {{msg|create-this-page}} for when the page does not exist.',
+'editthispage' => 'This is the "edit" link as used in the Cologne Blue skin, at the bottom of the page.
+
+See {{msg-mw|Create-this-page}} for when the page does not exist.',
 'create-this-page' => 'In the Cologne Blue skin this is the text for the link leading to the edit form on pages that have not yet been created, at the bottom of the page. See {{msg-mw|editthispage}} for when the page already exists.
 {{Identical|Createpage}}',
 'delete' => 'Name of the Delete tab shown for admins. Should be in the infinitive mood.
@@ -569,8 +587,12 @@ See also:
 'deletethispage' => 'In the Cologne Blue skin this is the text for link to delete the page in admin view, at the bottom of the page.
 {{Identical|Delete this page}}',
 'undeletethispage' => 'In the Cologne Blue skin this is the text for link to undelete the page in admin view, at the bottom of the page.',
-'undelete_short' => "It is tab label. It's really can be named ''nstab-undelete''.",
-'viewdeleted_short' => 'Tab label for the undelete button when the user has permission to view the deleted history but not undelete.',
+'undelete_short' => "It is tab label. It's really can be named ''nstab-undelete''. Parameters:
+* $1 - number of edits",
+'viewdeleted_short' => 'Tab label for the undelete button when the user has permission to view the deleted history but not undelete.
+
+Parameters:
+* $1 - number of edits',
 'protect' => 'Name of protect tab displayed for admins. Should be in the infinitive mood.
 
 See also:
@@ -639,7 +661,8 @@ Parameters:
 * $2 - time
 See also:
 * {{msg-mw|Lastmodifiedatby}}',
-'viewcount' => 'Used as page-view counter.',
+'viewcount' => 'Used as page-view counter. Parameters:
+* $1 - number of pageviews',
 'protectedpage' => "This message is displayed when trying to edit a page you can't edit because it has been protected.
 
 This message is the title for the message {{msg-mw|protectedpagetext}}.",
@@ -677,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}}.
@@ -701,7 +725,9 @@ See also:
 * {{msg-mw|Accesskey-n-mainpage}}
 * {{msg-mw|Tooltip-n-mainpage}}
 {{Identical|Main page}}',
-'mainpage-description' => 'The same as {{msg|mainpage|pl=yes}}, used as link text on [[MediaWiki:Sidebar]]. This makes it possible to the change the link destination (the message "mainpage") without changing the link text or without disabling translations.
+'mainpage-description' => 'The same as {{msg-mw|mainpage}}, used as link text on [[MediaWiki:Sidebar]].
+
+This makes it possible to the change the link destination (the message "mainpage") without changing the link text or without disabling translations.
 
 See also:
 * {{msg-mw|Mainpage-description}}
@@ -737,13 +763,29 @@ See also:
 * $1 - a list of groups
 * $2 - the number of groups",
 
-'versionrequired' => 'This message is not used in the MediaWiki core, but was introduced with the reason that it could be useful for extensions. See also {{msg|versionrequiredtext}}.',
-'versionrequiredtext' => 'This message is not used in the MediaWiki core, but was introduced with the reason that it could be useful for extensions. See also {{msg|versionrequired}}.',
+'versionrequired' => 'This message is not used in the MediaWiki core, but was introduced with the reason that it could be useful for extensions.
+
+Parameters:
+* $1 - MediaWiki version number
+See also:
+* {{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:
+* $1 - MediaWiki version number
+See also:
+* {{msg-mw|Versionrequired}}',
 
 '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
@@ -753,7 +795,14 @@ Appears in subtitle
 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).
@@ -774,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.
@@ -785,8 +836,12 @@ Like {{msg-mw|newmessagesdifflink}} but supporting pluralization.
 
 Used in message {{msg-mw|youhavenewmessagesfromusers}} (as parameter $2).
 {{Identical|Last change}}',
-'youhavenewmessagesmulti' => 'The alternative of {{msg|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}}]]}}"',
+'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}}]]}}"
+
+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}}',
@@ -798,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
@@ -847,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}}
@@ -859,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.',
 
@@ -960,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#]
@@ -1017,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}}.
 
@@ -1036,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:
@@ -1093,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.',
@@ -1137,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.
@@ -1253,7 +1331,9 @@ See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?t
 'createacct-submit' => 'Submit button on vertical-layout create account form.
 
 See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]',
-'createacct-another-submit' => 'Submit button on create account form when one user creates an account for another.',
+'createacct-another-submit' => 'Submit button of  [[Special:UserLogin/signup]] ([[Special:CreateAccount]]) when accessed by a registered user.
+
+The original means "create an account in addition to the one you already have"; sometimes, but not always, it means you are going to "Create the account on behalf of somebody else" or "Create account for another".',
 'createacct-benefit-heading' => 'In vertical-layout create account form, the heading for the section describing the benefits of creating an account.
 
 See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]',
@@ -1262,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.
@@ -1296,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.
@@ -1334,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:
@@ -1368,6 +1471,9 @@ 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' => "{{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
 'php-mail-error-unknown' => 'Used as error message when <code>mail()</code> returned empty error message.',
@@ -1567,7 +1673,7 @@ See also:
 * {{msg-mw|Tooltip-preview}}
 {{Identical|Show preview}}',
 'showlivepreview' => 'An edit preview without needing to reload the edit form.',
-'showdiff' => 'Button below the edit page. See also {{msg|showpreview}} and {{msg|savearticle}} for the other buttons.
+'showdiff' => 'Button below the edit page. See also {{msg-mw|Showpreview}} and {{msg-mw|Savearticle}} for the other buttons.
 
 See also:
 * {{msg-mw|Showdiff}}
@@ -1722,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}}
@@ -1760,8 +1891,9 @@ See also:
 * \$1 is the number of reasons that were found why ''the action'' cannot be performed.",
 'permissionserrorstext-withaction' => 'This message is "with action" version of {{msg-mw|Permissionserrorstext}}.
 
-* $1 is the number of reasons that were found why the action cannot be performed.
-* $2 is one of the action-* messages (for example {{msg|action-edit}}) or other such messages tagged with {{tl|doc-action}} in their documentation.
+Parameters:
+* $1 - the number of reasons that were found why the action cannot be performed
+* $2 - one of the action-* messages (for example {{msg-mw|action-edit}}) or other such messages tagged with {{tl|doc-action}} in their documentation
 
 Please report at [[Support]] if you are unable to properly translate this message. Also see [[bugzilla:14246]] (now closed) for background.',
 'recreate-moveddeleted-warn' => 'Warning shown when creating a page which has already been deleted. See for example [[Test]].',
@@ -1916,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:
@@ -2061,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.
@@ -2133,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}}',
@@ -2386,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:
@@ -2425,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',
@@ -2525,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).',
@@ -2586,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.',
@@ -2622,7 +2784,8 @@ See also:
 'prefs-editing' => 'Title of a tab in [[Special:Preferences]].
 When changing this message, please also update {{msg-mw|vector-editwarning-warning}} which references to this message.
 {{Identical|Editing}}',
-'rows' => 'Used on [[Special:Preferences]], "Editing" section in the "Size of editing window" fieldset',
+'rows' => 'Used on [[Special:Preferences]], "Editing" section in the "Size of editing window" fieldset.
+{{Identical|Row}}',
 'columns' => 'Used on [[Special:Preferences]], "Editing" section in the "Size of editing window" fieldset',
 'searchresultshead' => 'This is the label of the tab in [[Special:Preferences|my preferences]] which contains options for searching the wiki.
 
@@ -2632,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}}.)',
@@ -2641,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]].',
@@ -2825,9 +2994,17 @@ 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-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|userrights-notallowed|pl=yes}}.",
+'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}}.",
 'userrights-notallowed' => "Error displayed on [[Special:UserRights]] when you don't have the permission.",
 'userrights-changeable-col' => 'Used when editing user groups in [[Special:Userrights]]. The message is the head of a column of group assignements.
 
@@ -2837,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.',
 
@@ -3133,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}}",
@@ -3174,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:
@@ -3252,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]].',
@@ -3535,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:
@@ -3574,8 +3774,9 @@ See also:
 'upload-options' => 'Caption above a section of the [[Special:Upload]] page',
 'watchthisupload' => 'In [[Special:Upload]]',
 'filewasdeleted' => 'This warning is shown when trying to upload a file that does not exist, but has previously been deleted.
+
 Parameters:
-* $1 is a link to the deletion log, with the text from {{msg|deletionlog}}.',
+* $1 - a link to the deletion log, with the text from {{msg-mw|deletionlog}}',
 'filename-bad-prefix' => 'Used as warning in [[Special:Upload]]. Parameters:
 * $1 - prefix
 See also:
@@ -3705,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:
@@ -3936,7 +4152,9 @@ Example: [[:Image:Addon-icn.png]]',
 'filehist-user' => 'In image description page.
 
 {{Identical|User}}',
-'filehist-dimensions' => 'In file description page',
+'filehist-dimensions' => 'Used as label in file description page.
+
+Followed by length, filesize, and width x height. e.g. "1.5 s (13 KB)".',
 'filehist-filesize' => 'In image description page',
 'filehist-comment' => 'In file description page
 
@@ -3961,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}}
@@ -4015,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
@@ -4043,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.
@@ -4205,9 +4437,28 @@ See also:
 
 'doubleredirects' => '{{doc-special|DoubleRedirects}}',
 '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|double-redirect-fixer}}) updates the redirects after a page move. See also {{msg|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}}.',
-'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. See also {{msg|double-redirect-fixed-move}} and {{msg|fix-double-redirects}}.",
+'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|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.
+
+See also:
+* {{msg-mw|Double-redirect-fixed-move}}
+* {{msg-mw|Fix-double-redirects}}",
 
 'brokenredirects' => '{{doc-special|BrokenRedirects}}',
 'brokenredirectstext' => 'Shown on top of [[Special:BrokenRedirects]].',
@@ -4232,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]]',
@@ -4285,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
@@ -4384,16 +4651,30 @@ The other parts are {{msg-mw|Prevpage}} and {{msg-mw|Nextpage}}.
 'prevpage' => 'Second part of the navigation bar for the special page [[Special:AllPages]] and [[Special:PrefixIndex]]. $1 is a page title. The other parts are {{msg-mw|Allpages}} and {{msg-mw|Nextpage}}.
 
 {{Identical|Previous page}}',
-'allpagesfrom' => 'Option in [[Special:AllPages]]. See also {{msg|allpagesto}}.',
-'allpagesto' => 'Option in [[Special:AllPages]]. See also {{msg|allpagesfrom}}.',
+'allpagesfrom' => 'Option in [[Special:AllPages]].
+
+See also:
+* {{msg-mw|allpagesto}}',
+'allpagesto' => 'Option in [[Special:AllPages]].
+
+See also:
+* {{msg-mw|allpagesfrom}}',
 'allarticles' => 'The page title of [[Special:Allpages]]. When the user limit the list to a certain namespace, {{msg-mw|allinnamespace}} is used instead.
 
 {{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.
 
@@ -4417,10 +4698,13 @@ The other parts are {{msg-mw|Prevpage}} and {{msg-mw|Nextpage}}.
 # Special:Categories
 'categories' => 'The page name of [[Special:Categories]].
 {{Identical|Category}}',
-'categoriespagetext' => "{{doc-important|Do not translate or change links.}}
+'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|unusedcategories}} and {{msg|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.',
@@ -4570,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]]).',
@@ -4604,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:
@@ -4645,14 +4938,21 @@ 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:
 * {{msg-mw|Addwatch}}',
-'removedwatchtext' => "After a page has been removed from a user's watchlist by clicking the {{msg|unwatch}} tab at the top of an article, this message appears just below the title of the article. $1 is the title of the article. See also {{msg|removedwatch}} and {{msg|addedwatchtext}}.",
+'removedwatchtext' => "After a page has been removed from a user's watchlist by clicking the {{msg-mw|Unwatch}} tab at the top of an article, this message appears just below the title of the article.
+
+Parameters:
+* $1 - the title of the article
+See also:
+* {{msg-mw|Removedwatch}}
+* {{msg-mw|Addedwatchtext}}",
 'watch' => '{{doc-actionlink}}
 Name of the Watch tab. Should be in the imperative mood.
 
@@ -4706,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]].
@@ -4734,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]].
 
@@ -4815,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.
@@ -4824,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',
@@ -4892,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.
 
@@ -4909,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}}',
@@ -4938,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.",
@@ -4963,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}}',
@@ -5172,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:
@@ -5209,20 +5551,34 @@ 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}}
 * {{msg-mw|Accesskey-t-contributions}}
 * {{msg-mw|Tooltip-t-contributions}}",
-'contributions-title' => 'The page title in your browser bar, but not the page title. See also {{msg|contributions}}. Parameter $1 is the username.
+'contributions-title' => '{{Gender}}
+The page title in your browser bar, but not the page title.
 
-{{Gender}}',
+Parameters:
+* $1 - the username
+See also:
+* {{msg-mw|Contributions}}',
 'mycontris' => 'In the personal urls page section - right upper corner.
 
 See also:
@@ -5248,7 +5604,10 @@ See also:
 
 'sp-contributions-newbies' => 'Text of radio button on special page [[Special:Contributions]].',
 'sp-contributions-newbies-sub' => "Note at the top of the page of results for a search on [[Special:Contributions]] where 'Show contributions for new accounts only' has been selected.",
-'sp-contributions-newbies-title' => 'The page title in your browser bar, but not the page title. See also {{msg|sp-contributions-newbies-sub}}.',
+'sp-contributions-newbies-title' => 'The page title in your browser bar, but not the page title.
+
+See also:
+* {{msg-mw|Sp-contributions-newbies-sub}}',
 'sp-contributions-blocklog' => 'Used as a display name for a link to the block log on for example [[Special:Contributions/Mediawiki default]]
 
 Used as link title in [[Special:Contributions]] and in [[Special:DeletedContributions]].
@@ -5385,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
@@ -5579,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>
@@ -5744,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:
@@ -6041,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}}
@@ -6053,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}}
@@ -6071,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.',
@@ -6107,8 +6483,21 @@ See also:
 {{Identical|Reason}}',
 'revertmove' => '{{Identical|Revert}}',
 'delete_and_move' => 'Button text on the move page when the target page already exists.',
-'delete_and_move_text' => 'Used when moving a page, but the destination page already exists and needs deletion. This message is to confirm that you really want to delete the page. See also {{msg|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. See also {{msg|delete and move text}}.',
+'delete_and_move_text' => 'Used when moving a page, but the destination page already exists and needs deletion.
+
+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}}',
+'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.
+
+See also:
+* {{msg-mw|Delete and move text}}',
 'delete_and_move_reason' => 'Shown as reason in content language in the deletion log. Parameter:
 * $1 - The page name for which this page was deleted.',
 'selfmove' => 'Used as error message when moving page.
@@ -6197,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
@@ -6277,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:
@@ -6486,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.',
@@ -6497,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',
 
@@ -6602,7 +7001,7 @@ See also:
 * {{msg-mw|Addsection}}
 * {{msg-mw|Accesskey-ca-addsection}}
 * {{msg-mw|Tooltip-ca-addsection}}',
-'tooltip-ca-viewsource' => 'Tooltip displayed when hovering over the {{msg|viewsource}} tab.
+'tooltip-ca-viewsource' => 'Tooltip displayed when hovering over the {{msg-mw|Viewsource}} tab.
 
 See also:
 * {{msg-mw|Viewsource}}
@@ -6652,7 +7051,7 @@ See also:
 * {{msg-mw|Accesskey-ca-watch}}
 * {{msg-mw|Tooltip-ca-watch}}
 {{Identical|Add this page to your watchlist}}',
-'tooltip-ca-unwatch' => 'Tooltip shown when hovering over the {{msg|unwatch}} tab.
+'tooltip-ca-unwatch' => 'Tooltip shown when hovering over the {{msg-mw|Unwatch}} tab.
 
 See also:
 * {{msg-mw|Unwatch}}
@@ -6701,7 +7100,7 @@ See also:
 * {{msg-mw|Portal-url}}
 * {{msg-mw|Accesskey-n-portal}}
 * {{msg-mw|Tooltip-n-portal}}',
-'tooltip-n-currentevents' => 'Tooltip shown when hovering over {{msg|currentevents}} in the sidebar.
+'tooltip-n-currentevents' => 'Tooltip shown when hovering over {{msg-mw|currentevents}} in the sidebar.
 
 See also:
 * {{msg-mw|Currentevents}}
@@ -6726,7 +7125,7 @@ See also:
 * {{msg-mw|Help}}
 * {{msg-mw|Accesskey-n-help}}
 * {{msg-mw|Tooltip-n-help}}",
-'tooltip-t-whatlinkshere' => 'Tooltip shown when hovering over the {{msg|whatlinkshere}} message in the toolbox.
+'tooltip-t-whatlinkshere' => 'Tooltip shown when hovering over the {{msg-mw|whatlinkshere}} message in the toolbox.
 
 See also:
 * {{msg-mw|Whatlinkshere}}
@@ -6750,13 +7149,13 @@ See also:
 * {{msg-mw|Feed-atom}}
 * {{msg-mw|Accesskey-feed-atom}}
 * {{msg-mw|Tooltip-feed-atom}}',
-'tooltip-t-contributions' => 'Tooltip shown when hovering over {{msg|contributions}} in the toolbox.
+'tooltip-t-contributions' => 'Tooltip shown when hovering over {{msg-mw|Contributions}} in the toolbox.
 
 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}}
@@ -6796,7 +7195,7 @@ See also:
 * {{msg-mw|Accesskey-ca-nstab-main}}
 * {{msg-mw|Tooltip-ca-nstab-main}}
 {{Identical|Content page}}',
-'tooltip-ca-nstab-user' => 'Tooltip shown when hovering over {{msg|nstab-user}} (User namespace tab).
+'tooltip-ca-nstab-user' => 'Tooltip shown when hovering over {{msg-mw|Nstab-user}} (User namespace tab).
 
 No GENDER-Support for performance reason.
 
@@ -6821,7 +7220,7 @@ See also:
 * {{msg-mw|Nstab-project}}
 * {{msg-mw|Accesskey-ca-nstab-project}}
 * {{msg-mw|Tooltip-ca-nstab-project}}',
-'tooltip-ca-nstab-image' => 'Tooltip shown when hovering over {{msg|nstab-image}} (File namespace tab).
+'tooltip-ca-nstab-image' => 'Tooltip shown when hovering over {{msg-mw|Nstab-image}} (File namespace tab).
 
 See also:
 * {{msg-mw|Nstab-image}}
@@ -6833,19 +7232,19 @@ 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}}
 * {{msg-mw|Accesskey-ca-nstab-template}}
 * {{msg-mw|Tooltip-ca-nstab-template}}',
-'tooltip-ca-nstab-help' => 'Tootip shown when hovering over the {{msg|nstab-help}} tab in the Help namespace.
+'tooltip-ca-nstab-help' => 'Tooltip shown when hovering over the {{msg-mw|Nstab-help}} tab in the Help namespace.
 
 See also:
 * {{msg-mw|Nstab-help}}
 * {{msg-mw|Accesskey-ca-nstab-help}}
 * {{msg-mw|Tooltip-ca-nstab-help}}',
-'tooltip-ca-nstab-category' => 'Tooltip shown when hovering over the {{msg|nstab-category}} tab.
+'tooltip-ca-nstab-category' => 'Tooltip shown when hovering over the {{msg-mw|Nstab-category}} tab.
 
 See also:
 * {{msg-mw|Nstab-category}}
@@ -6877,7 +7276,7 @@ See also:
 * {{msg-mw|Showdiff}}
 * {{msg-mw|Accesskey-diff}}
 * {{msg-mw|Tooltip-diff}}',
-'tooltip-compareselectedversions' => 'Tooltip of {{msg|compareselectedversions}} (which is used as button in history pages).
+'tooltip-compareselectedversions' => 'Tooltip of {{msg-mw|Compareselectedversions}} (which is used as button in history pages).
 
 See also:
 * {{msg-mw|Compareselectedversions}}
@@ -7070,23 +7469,31 @@ See also:
 'pageinfo-article-id' => 'The numeric identifier of the page.',
 'pageinfo-language' => 'Language in which the page content is written.',
 'pageinfo-robot-policy' => 'The search engine status of the page.
+
+Used as label. Followed by any one of the following messages:
 *{{msg-mw|Pageinfo-robot-index}}
 *{{msg-mw|Pageinfo-robot-noindex}}',
-'pageinfo-robot-index' => 'An indication that the page is indexable by search engines, that is listed in their search results.',
-'pageinfo-robot-noindex' => 'An indication that the page is not indexable (that is, is not listed on the results page of a search engine).',
+'pageinfo-robot-index' => 'An indication that the page is indexable by search engines, that is listed in their search results.
+
+Preceded by the label {{msg-mw|Pageinfo-robot-policy}}.',
+'pageinfo-robot-noindex' => 'An indication that the page is not indexable (that is, is not listed on the results page of a search engine).
+
+Preceded by the label {{msg-mw|Pageinfo-robot-policy}}.',
 'pageinfo-views' => 'The number of times the page has been viewed.',
-'pageinfo-watchers' => 'The number of users watching the page.',
+'pageinfo-watchers' => 'Header of the row in the first table of the info action.',
 'pageinfo-few-watchers' => 'Message displayed when there are fewer than $wgUnwatchedPageThreshold watchers. $1 is the value of $wgUnwatchedPageThreshold.',
-'pageinfo-redirects-name' => 'Followed by the number of redirects to the page.
+'pageinfo-redirects-name' => 'Header of the row in the first table of the info action.
 
+Followed by the number of redirects to the page.
 Used as link text. The link points to "{{int:Whatlinkshere-title}}" page ([[Special:WhatLinksHere]]).
 
 See example: [{{canonicalurl:Main page|action=info}} Main page?action=info]',
 'pageinfo-redirects-value' => '{{Optional}}
 Parameters:
 * $1 - the number of redirects to the page',
-'pageinfo-subpages-name' => 'Followed by the number of subpages of the page.
+'pageinfo-subpages-name' => 'Header of the row in the first table of the info action.
 
+Followed by the number of subpages of the page.
 Used as link text. The link points to the "{{int:Prefixindex}}" page ([[Special:PrefixIndex]]).
 
 See example: [{{canonicalurl:Main page|action=info}} Main page?action=info]',
@@ -7160,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}}',
@@ -7196,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:
@@ -7220,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]].',
@@ -7233,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:
@@ -7259,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
@@ -7270,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.
@@ -7311,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.
 
@@ -7358,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.',
@@ -8365,7 +8820,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:
@@ -8417,14 +8872,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
@@ -8511,7 +8969,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.',
 
@@ -8574,12 +9035,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.',
@@ -8618,13 +9081,13 @@ See also:
 '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:
@@ -9253,4 +9716,57 @@ Parameters:
 # Image rotation
 'rotate-comment' => 'Edit summary for the act of rotating an image.',
 
+# Limit report
+'limitreport-title' => 'Title for the preview limit report table.',
+'limitreport-cputime' => 'Label for the "CPU time usage" row in the limit report table.
+
+See also:
+* {{msg-mw|Limitreport-walltime}}',
+'limitreport-cputime-value' => 'Format for the "CPU time usage" value in the limit report table. Parameters:
+* $1 - the time usage in seconds
+{{Identical|Second}}',
+'limitreport-walltime' => 'Label for the "Real time usage" row in the limit report table.
+
+See also:
+* {{msg-mw|Limitreport-cputime}}',
+'limitreport-walltime-value' => 'Format for the "Real time usage" value in the limit report table. Parameters:
+* $1 - the time usage in seconds
+{{Identical|Second}}',
+'limitreport-ppvisitednodes' => 'Label for the "Preprocessor visited node count" row in the limit report table',
+'limitreport-ppvisitednodes-value' => '{{optional}}
+Format for the "Preprocessor visited node count" row in the limit report table.
+
+Parameters:
+* $1 - the usage
+* $2 - the maximum',
+'limitreport-ppgeneratednodes' => 'Label for the "Preprocessor generated node count" row in the limit report table',
+'limitreport-ppgeneratednodes-value' => '{{optional}}
+Format for the "Preprocessor generated node count" row in the limit report table.
+
+Parameters:
+* $1 - the usage
+* $2 - the maximum',
+'limitreport-postexpandincludesize' => 'Label for the "Post-expand include size" row in the limit report table',
+'limitreport-postexpandincludesize-value' => 'Format for the "Post-expand include size" row in the limit report table.
+* $1 is the usage in bytes
+* $2 is the maximum',
+'limitreport-templateargumentsize' => 'Label for the "Template argument size" row in the limit report table',
+'limitreport-templateargumentsize-value' => 'Format for the "Template argument size" row in the limit report table.
+* $1 is the usage in bytes
+* $2 is the maximum',
+'limitreport-expansiondepth' => 'Label for the "Highest expansion depth" row in the limit report table',
+'limitreport-expansiondepth-value' => '{{optional}}
+Format for the "Highest expansion depth" row in the limit report table.
+
+Parameters:
+* $1 - the depth
+* $2 - the maximum',
+'limitreport-expensivefunctioncount' => 'Label for the "Expensive parser function count" row in the limit report table',
+'limitreport-expensivefunctioncount-value' => '{{optional}}
+Format for the "Expensive parser function count" row in the limit report table.
+
+Parameters:
+* $1 - the usage
+* $2 - the maximum',
+
 );
index 436ef5b..d50fd72 100644 (file)
@@ -727,7 +727,6 @@ Administratorul care a efectuat blocarea a furnizat explicația: „$3”.',
 # Login and logout pages
 'logouttext' => "'''Acum sunteți deconectat.'''
 
-Sesiunea dumneavoastră la {{SITENAME}} a fost închisă. Puteți continua să folosiți {{SITENAME}} ca utilizator anonim, sau puteți să vă <span class='plainlinks'>[$1 reautentificați]</span> ca același sau ca alt utilizator.
 Țineți minte că anumite pagini pot fi în continuare afișate ca și când ați fi autentificat până când curățați memoria cache a navigatorului.",
 'welcomeuser' => 'Bun venit, $1!',
 'welcomecreation-msg' => 'Contul dumneavoastră a fost creat.
@@ -775,7 +774,7 @@ Nu uitați să vă modificați [[Special:Preferences|preferințele]] pentru {{SI
 'createacct-emailoptional' => 'Adresă de e-mail (opțională)',
 'createacct-email-ph' => 'Introduceți adresa dumnevoastră de e-mail',
 'createacct-another-email-ph' => 'Introduceți adresa de e-mail',
-'createaccountmail' => 'Utilizează o parolă temporară aleasă la întâmplare și o trimite la adresa de e-mail indicată mai jos',
+'createaccountmail' => 'Utilizează o parolă temporară aleasă la întâmplare și o trimite la adresa de e-mail indicată',
 'createacct-realname' => 'Nume real (opțional)',
 'createaccountreason' => 'Motiv:',
 'createacct-reason' => 'Motiv',
@@ -852,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()',
@@ -1572,10 +1573,10 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 'userrights-no-interwiki' => 'Nu aveți permisiunea de a modifica permisiunile utilizatorilor pe alte wiki.',
 'userrights-nodatabase' => 'Baza de date $1 nu există sau nu este locală.',
 'userrights-nologin' => 'Trebuie să te [[Special:UserLogin|autentifici]] cu un cont de administrator pentru a atribui permisiuni utilizatorilor.',
-'userrights-notallowed' => 'Contul dumneavoastră nu are permisiunea de a acorda sau elimina drepturi utilizatorilor.',
+'userrights-notallowed' => 'Nu aveți permisiunea de a acorda sau elimina drepturi utilizatorilor.',
 'userrights-changeable-col' => 'Grupuri pe care le puteți schimba',
 'userrights-unchangeable-col' => 'Grupuri pe care nu le puteți schimba',
-'userrights-conflict' => 'Conflict al drepturilor de utilizator! Aplicați din nou modificările dumneavoastră.',
+'userrights-conflict' => 'Conflict al schimbării drepturilor de utilizator! Reverificați și confirmați-vă modificările.',
 'userrights-removed-self' => 'V-ați eliminat cu succes propriile drepturi. Ca urmare, nu mai puteți accesa această pagină.',
 
 # Groups
@@ -3197,13 +3198,13 @@ Permite adăugarea unui motiv în descrierea modificărilor',
 'pageinfo-length' => 'Lungimea paginii (în octeți)',
 'pageinfo-article-id' => 'ID pagină',
 'pageinfo-language' => 'Limba conținutului paginii',
-'pageinfo-robot-policy' => 'Statut pentru motorul de căutare',
-'pageinfo-robot-index' => 'Indexabilă',
-'pageinfo-robot-noindex' => 'Neindexabilă',
+'pageinfo-robot-policy' => 'Indexare de către roboți',
+'pageinfo-robot-index' => 'Permisă',
+'pageinfo-robot-noindex' => 'Nepermisă',
 'pageinfo-views' => 'Număr de vizualizări',
 'pageinfo-watchers' => 'Număr de utilizatori care urmăresc pagina',
 'pageinfo-few-watchers' => 'Mai puțin de {{PLURAL:$1|un urmăritor|$1 urmăritori|$1 de urmăritori}}',
-'pageinfo-redirects-name' => 'Redirecționări către această pagină',
+'pageinfo-redirects-name' => 'Număr de redirecționări către această pagină',
 'pageinfo-subpages-name' => 'Subpagini ale acestei pagini',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redirecționare|redirecționări|de redirecționări}}; $3 {{PLURAL:$3|non-redirecționare|non-redirecționări|de non-redirecționări}})',
 'pageinfo-firstuser' => 'Creatorul paginii',
@@ -3809,7 +3810,7 @@ $5
 Acest cod de confirmare va expira la $4.',
 'confirmemail_body_set' => 'Cineva, probabil dumneavoastră de la adresa IP $1, a asociat prezenta adresă de e-mail contului „$2” de la la {{SITENAME}}.
 
-Pentru a confirma că acest cont vă aparține într-adevăr și pentru a vă reactiva funcțiile de e-mail de la {{SITENAME}}, accesați pagina:
+Pentru a confirma că acest cont vă aparține într-adevăr și pentru a vă activa funcțiile de e-mail de la {{SITENAME}}, accesați pagina:
 
 $3
 
@@ -4169,4 +4170,19 @@ MediaWiki este distribuit în speranța că va fi folositor, dar FĂRĂ VREO GAR
 # Image rotation
 '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 774ca8d..5db8a90 100644 (file)
@@ -458,10 +458,9 @@ L\'amministratore ca l\'ha bloccate dèje sta spiegazione: "$3".',
 'virus-unknownscanner' => 'antivirus scanusciute:',
 
 # Login and logout pages
-'logouttext' => "'''Tu tè scolleghete.'''
+'logouttext' => "'''Tu tè scollegate.'''
 
-Tu puè condinuà a ausà {{SITENAME}} in mode anonime, o tu puè <span class='plainlinks'>[$1 collegarte 'n'otra vote]</span> cumme 'u stesse utende o cumme 'n'otre utende.
-Note Bbuene ca certe pàggene ponne condinuà a essere viste cumme ce tu ste angore colleghete, fine a quanne a cache d'u browser no se sdeveche.",
+Note Bbuene ca certe pàggene ponne condinuà a essere viste cumme ce tu ste angore collegate, fine a quanne a cache d'u browser no se sdevache.",
 'welcomeuser' => 'Bovègne, $1!',
 'welcomecreation-msg' => "'U cunde tue ha state ccrejete.
 No te sce scurdanne de cangià le [[Special:Preferences|{{SITENAME}} preferenze tue]].",
@@ -508,7 +507,7 @@ No te sce scurdanne de cangià le [[Special:Preferences|{{SITENAME}} preferenze
 'createacct-emailoptional' => 'Indirizze email (opzionale)',
 'createacct-email-ph' => "Mitte l'indirizze email tune",
 'createacct-another-email-ph' => "Mitte l'indirizze email",
-'createaccountmail' => 'Pe e-mail',
+'createaccountmail' => "Ause 'na passuord temboranèe a uecchije e mannale a l'indirizze email specificate",
 'createacct-realname' => 'Nome vere (opzionale)',
 'createaccountreason' => 'Mutive:',
 'createacct-reason' => 'Mutive',
@@ -598,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()",
@@ -1333,11 +1334,11 @@ Ce tu 'u mitte, a fatje ca è fatte t'avène ricanusciute.",
 'userrights-no-interwiki' => "Tu non ge tìne le permesse pe cangià le deritte utende sus a l'otre uicchi.",
 'userrights-nodatabase' => "'U Database $1 non g'esiste o non g'è lochele.",
 'userrights-nologin' => "Tu à essere [[Special:UserLogin|colleghete]] cu 'nu cunde utende d'amministratore pe assignà le deritte utende.",
-'userrights-notallowed' => "'U cunde utende tune non ge tène le permesse pe aggiunge o luà le deritte a l'utinde.",
+'userrights-notallowed' => 'Non ge tìne le permesse pe aggiungere o luà le deritte a le utinde.',
 'userrights-changeable-col' => 'Gruppe ca tu puè cangià',
 'userrights-unchangeable-col' => 'Gruppe ca tu non ge puè cangià',
 'userrights-irreversible-marker' => '$1*',
-'userrights-conflict' => 'Conflitte sus a le deritte utende! Pe piacere appliche le cangiaminde tune arrete.',
+'userrights-conflict' => 'Conflitte sus a le cangiaminde de le deritte utende! Pe piacere revide e conferme le cangiaminde tune.',
 'userrights-removed-self' => "T'è luate le deritte tune. Mò non ge puè cchiù trasè jndr'à sta pàgene.",
 
 # Groups
@@ -3011,13 +3012,13 @@ Stu fatte ha state causate da 'nu collegamende a 'nu site esterne ca appartene a
 'pageinfo-length' => "Lunghezze d'a pàgene (in byte)",
 'pageinfo-article-id' => "ID d'a pàgene",
 'pageinfo-language' => "Lènga d'a pàgene de condenute",
-'pageinfo-robot-policy' => "State d'u motore de ricerche",
-'pageinfo-robot-index' => 'Indicizzabbele',
-'pageinfo-robot-noindex' => 'None indicizzabbele',
+'pageinfo-robot-policy' => 'Indicizzate da le robbot',
+'pageinfo-robot-index' => 'Permesse',
+'pageinfo-robot-noindex' => 'Non permesse',
 'pageinfo-views' => 'Numere de visite',
 'pageinfo-watchers' => "Numere de visitature d'a pàgene",
 'pageinfo-few-watchers' => 'Mene de $1 {{PLURAL:$1|visitatore|visitature}}',
-'pageinfo-redirects-name' => 'Redirezionaminde a sta pàgene',
+'pageinfo-redirects-name' => 'Numere de redirezionaminde a sta pàgene',
 'pageinfo-redirects-value' => '$1',
 'pageinfo-subpages-name' => 'Sottopàggene de sta pàgene',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|ridirezionate|ridirezionate}}; $3 {{PLURAL:$3|none ridirezionate|none ridirezionate}})',
@@ -3728,7 +3729,7 @@ Stu codece de conferme scade 'u \$4.",
 'confirmemail_body_set' => "Quacchedune, pò essere tu, da l'indirizze IP \$1,
 ha cangiate l'indirizze e-mail d'u cunde utende \"\$2\" cu st'indirizze e-mail sus a {{SITENAME}}.
 
-Pe confermà ca stu cunde ète avveramende 'u tune e pe reattivà 'a funzione email de {{SITENAME}}, iapre stu collegamende jndr'à 'u borwser tune:
+Pe confermà ca stu cunde ète avveramende 'u tune e pe attivà 'a funzione email de {{SITENAME}}, iapre stu collegamende jndr'à 'u browser tune:
 
 \$3
 
@@ -4185,4 +4186,19 @@ Ce nò, tu puè ausà 'u module facile aqquà sotte. 'U commende tune avène agg
 # Image rotation
 'rotate-comment' => 'Immaggine rotate de $1 {{PLURAL:$1|grade}} in sienze orarie',
 
+# Limit report
+'limitreport-title' => "Analizzatore de le date d'a profilazione:",
+'limitreport-cputime' => "Tiembe de ause d'a CPU",
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|seconde}}',
+'limitreport-walltime' => 'Tiembe de ause in dirette',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|seconde}}',
+'limitreport-ppvisitednodes' => "Preprocessore d'u cunde de le node 'ndrucate",
+'limitreport-ppgeneratednodes' => "Preprocessore d'u cunde de le node generate",
+'limitreport-postexpandincludesize' => "Espanzione de apprisse ca 'nglude 'a dimenzione",
+'limitreport-postexpandincludesize-value' => '$1/$2 byte',
+'limitreport-templateargumentsize' => "Dimenzione de le argomende d'u template",
+'limitreport-templateargumentsize-value' => '$1/$2 byte',
+'limitreport-expansiondepth' => 'Espanzione massime de profonnetà',
+'limitreport-expensivefunctioncount' => "Analizzatore d'u cunde d'a funzione ca coste assaije",
+
 );
index 456cb65..d816f8b 100644 (file)
@@ -16,6 +16,7 @@
  * @author Alexander Sigachov (alexander.sigachov@gmail.com)
  * @author Alexandr Efremov
  * @author Altai uul
+ * @author Am81
  * @author Amikeco
  * @author Amire80
  * @author Anonim.one
@@ -1061,6 +1062,9 @@ $2
 'changeemail-submit' => 'Изменить адрес',
 'changeemail-cancel' => 'Отмена',
 
+# Special:ResetTokens
+'resettokens' => 'Сбросить жетоны',
+
 # Edit page toolbar
 'bold_sample' => 'Полужирное начертание',
 'bold_tip' => 'Полужирное начертание',
@@ -1667,6 +1671,7 @@ $1",
 'prefs-displayrc' => 'Настройки отображения',
 'prefs-displaysearchoptions' => 'Настройки отображения',
 'prefs-displaywatchlist' => 'Настройки отображения',
+'prefs-tokenwatchlist' => 'Жетон',
 'prefs-diffs' => 'Разница версий',
 
 # User preference: email validation using jQuery
index 5ba839c..5e7afcd 100644 (file)
@@ -1851,9 +1851,11 @@ $1',
 'randompage-nopages' => 'Бу {{PLURAL:$2|аат дала кураана|аат далларыгар сирэйдэр суохтар}}: $1.',
 
 # Special:RandomInCategory
-'randomincategory' => 'Категория хайа баҕарар ыстатыйата',
-'randomincategory-invalidcategory' => '"$1" аат категорияҕа туттуллубат.',
-'randomincategory-nopages' => '[[:Category:$1|$1 категорияҕа]] маннык ыстатыйа суох.',
+'randomincategory' => 'Категория түбэспиччэ ыстатыйата',
+'randomincategory-invalidcategory' => '"$1" диэн категория суох эбит.',
+'randomincategory-nopages' => 'Бу категорияҕа [[:Category:$1]] киирэр ыстатыйалар суохтар.',
+'randomincategory-selectcategory' => 'Категория түбэспиччэ сирэйигэр көс: $1 $2.',
+'randomincategory-selectcategory-submit' => 'Көс',
 
 # Random redirect
 'randomredirect' => 'Түбэспиччэ утаарыы',
@@ -1950,6 +1952,7 @@ $1',
 'mostrevisions' => 'Саамай элбэхтик уларытыллыбыт ыстатыйалар',
 'prefixindex' => 'Мантан саҕаланар (префикстаах) сирэйдэр барыта',
 'prefixindex-namespace' => 'Сирэй саҕаланыытынан наардаан көрдөрүү ($1 аат далыгар)',
+'prefixindex-strip' => 'Түмүк тиһигэр префиксы көрдөрүмэ',
 'shortpages' => 'Кылгас ыстатыйалар',
 'longpages' => 'Уһун ыстатыйалар',
 'deadendpages' => 'Dead-end (Бүтэй) сирэйдэр',
@@ -3651,6 +3654,7 @@ $5
 'version-license' => 'Лиссиэнзийэ',
 'version-poweredby-credits' => "Бу биики бу движокка олоҕурар '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'атыттар',
+'version-poweredby-translators' => 'translatewiki.net тылбаасчыттара',
 'version-credits-summary' => '[[Special:Version|MediaWiki]] сайдыытыгар үлэлэрин иһин манна ахтыллыбыт дьоҥҥо махтанабыт.',
 'version-license-info' => 'MediaWiki көҥүл тарҕанар бырагырааммаларга киирэр, кинини көмпүүтэр аһаҕас бырагырааммаларын пуондатын GNU General Public License усулуобуйатынан көҥүл тарҕатаргыт уонна/эбэтэр уларытаргыт көҥүллэнэр; иккис эбэтэр онтон хойукку ханнык баҕарар барылыттан саҕалаан.
 
index db1717a..2358d70 100644 (file)
@@ -51,7 +51,6 @@ $messages = array(
 'tog-enotifrevealaddr' => 'Shaw ma email address in notification mails',
 'tog-shownumberswatching' => 'Shaw the nummer o watching uisers',
 'tog-fancysig' => 'Raw seignaturs (athoot automatic airtin)',
-'tog-showjumplinks' => 'Enable "loup til" accessibility airtins',
 'tog-uselivepreview' => 'Uise leeve preview (JavaScript) (Prattik)',
 'tog-forceeditsummary' => 'Gie me a jottin when A dinnae put in a edit summary',
 'tog-watchlisthideown' => 'Hide yer ain edits frae yer watchleet',
index 713ba4d..e2c868c 100644 (file)
@@ -133,7 +133,6 @@ $messages = array(
 'tog-enotifrevealaddr' => "Rivera lu me' indirizzu di postha erettrònica i' l'imbasciaddi d'avvisu",
 'tog-shownumberswatching' => "Musthra lu nùmaru d'utenti ch'àni la pàgina abbaidadda",
 'tog-fancysig' => "Interpreta i cumandi wiki i' la fimma (chena cullegaumentu otomatiggu)",
-'tog-showjumplinks' => "Attiba li cullegamenti atzessibili 'vai a'",
 'tog-uselivepreview' => "Attiba la funzioni ''Live preview'' (dumanda JavaScript; ippirimintari)",
 'tog-forceeditsummary' => "Dumanda cunfèimma si l'oggettu di la mudìfigga è bioddu",
 'tog-watchlisthideown' => "Cua li me' mudìfigghi i' l'abbaidaddi ippiziari",
index fee1e56..a78ab78 100644 (file)
@@ -42,7 +42,6 @@ $messages = array(
 'tog-enotifrevealaddr' => 'Xuniim henadressade e-iitom notificacionde e-iitóm',
 'tog-shownumberswatching' => 'Cohuatlöx caitóm cáminotómde numberam',
 'tog-fancysig' => 'Signaturenám brazzinám (sans linkám automaticám)',
-'tog-showjumplinks' => 'Záj "jumpöx" accessibilitiit linkám',
 'tog-uselivepreview' => 'Usadad cuáxiit live (JavaScript) (Experimentam)',
 'tog-forceeditsummary' => 'Ixuniimticpatlöx he jan nenenterom abvuatlde ticpatlöx',
 'tog-watchlisthideown' => 'Cíiitám he ticpatlöxde listade cáminot zo',
index 42b7cbd..e86afa5 100644 (file)
@@ -87,7 +87,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Ruodītė keravuojantiu nauduotuoju skatliu',
 'tog-oldsig' => 'Esams parašos:',
 'tog-fancysig' => 'Parašos kāp wiki tekstos (ba autuomatėniu nūruodu)',
-'tog-showjumplinks' => 'Ijongtė „paršuoktė i“ pasėikiamoma nūruodas',
 'tog-uselivepreview' => 'Nauduotė tėisiogėne parvėiza (JavaScript) (Eksperimentėnis)',
 'tog-forceeditsummary' => 'Klaustė, kumet palėiku toščē pakeitėma kuomentara',
 'tog-watchlisthideown' => 'Kavuotė mona pakeitėmos keravuojamu sarašė',
index 565d3a3..a4419ea 100644 (file)
@@ -43,7 +43,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Ml uṭṭun n Midn lli swurn ɣ tasna yad',
 'tog-oldsig' => 'Asmmaql (Tiẓṛi) n ukrraj n ufus lli illan:',
 'tog-fancysig' => 'Skr akrrag n ufus s taɣarast  n  wikitext (bla azday utumatik)',
-'tog-showjumplinks' => 'Srɣ izdayn « Amuddu » d « acnubc » niḍ « Asiǧl » ɣ uflla n tasna',
 'tog-uselivepreview' => 'Skr s umẓri amaynu izrbn (ira JavaScript) (Arm)',
 'tog-forceeditsummary' => 'Ayyit tini iɣ ur iwiɣ imsmun n imbdln',
 'tog-watchlisthideown' => 'hbo ghayli bdlgh gh omdfor inu',
index 6181853..f68c88f 100644 (file)
@@ -245,7 +245,7 @@ $messages = array(
 'editfont-style' => 'අකුරු විලාසයන් සංස්කරණ පෙදෙස:',
 'editfont-default' => 'පෙර නිමි බ්‍රව්සරය',
 'editfont-monospace' => 'ඒක අවකාශිත ෆොන්ට්',
-'editfont-sansserif' => 'Sans-serif අකුරු',
+'editfont-sansserif' => 'සෙරිෆ්-විරහිත අකුරු',
 'editfont-serif' => 'සේරිෆ් අකුරු',
 
 # Dates
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 ae58c79..e39b2bc 100644 (file)
@@ -55,7 +55,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Oazoahl derr beobachtenden Nutzer oazäan',
 'tog-oldsig' => 'Vorschau der aktuella Signatur:',
 'tog-fancysig' => 'Signatur ols Wikitext behandeln (ohne automatische Verlinkung)',
-'tog-showjumplinks' => '„Wechseln zu“-Verknipfunga aktiviern',
 'tog-uselivepreview' => 'Direkte Vurschau notza (beneetigt JavaScript) (vrsuchsweise)',
 'tog-forceeditsummary' => 'Warnen, wenn bem Speichern de Zsoammafassung fahln tutt',
 'tog-watchlisthideown' => 'Eigene Bearbeitungen ausblenden',
index 07a173f..0d2f6c9 100644 (file)
@@ -44,7 +44,6 @@ $messages = array(
 'tog-shownumberswatching' => "I'tus tirada isticmaalayaasha wax waardiyeynaayo",
 'tog-oldsig' => 'Saxiixa jiro:',
 'tog-fancysig' => "u isticmaal saxiixa sida qoraalada wiki  (ayada oo linki auomaatik la'aan)",
-'tog-showjumplinks' => 'Shid "ku bood" links-ka la geli karo',
 'tog-uselivepreview' => 'Isticmaal horfiirinta tooska ah (JavaScript) (Wuxuu ku jiraa tijaabo)',
 'tog-forceeditsummary' => "I'xasuusi markii uusan qoraalkeyga raacsiisnay faahfaahin gaaban",
 'tog-watchlisthideown' => 'Ka qari wax bedelkeyga  liiska waardiyaha',
index cd81716..6964046 100644 (file)
@@ -439,7 +439,7 @@ $messages = array(
 'tog-showhiddencats' => 'Прикажи скривене категорије',
 'tog-noconvertlink' => 'Онемогући претварање наслова веза',
 'tog-norollbackdiff' => 'Изостави разлику након извршеног враћања',
-'tog-useeditwarning' => 'УпозоÑ\80и Ð¼Ðµ ÐºÐ°Ð´Ð° Ð½Ð°Ð¿Ñ\83Ñ\81Ñ\82им Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 ÐºÐ¾Ñ\98а Ð½Ð¸Ñ\98е Ñ\81аÑ\87Ñ\83вана',
+'tog-useeditwarning' => 'УпозоÑ\80и Ð¼Ðµ ÐºÐ°Ð´Ð° Ð½Ð°Ð¿Ñ\83Ñ\88Ñ\82ам Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ñ\81а Ð½ÐµÑ\81аÑ\87Ñ\83ваним Ð¿Ñ\80оменама',
 
 'underline-always' => 'увек подвлачи',
 'underline-never' => 'никад не подвлачи',
@@ -4371,10 +4371,10 @@ $5
 'logentry-move-move_redir' => '$1 је {{GENDER:$2|преместио|преместила}} страницу $3 на $4 преко преусмерења',
 'logentry-move-move_redir-noredirect' => '$1 је {{GENDER:$2|преместио|преместила}} страницу $3 на $4 преко преусмерења без остављања преусмерења',
 'logentry-patrol-patrol' => '$1 {{GENDER:|је означио|је означила|је означио}} измену $4 странице $3 као патролирану',
-'logentry-patrol-patrol-auto' => '$1 је самостално {{GENDER:|означио|означила|означио}} измену $4 странице $3 као прегледану',
-'logentry-newusers-newusers' => '$1 {{GENDER:|је отворио|је отворила|је отворио}} кориснички налог',
-'logentry-newusers-create' => '$1 {{GENDER:|је отворио|је отворила|је отворио}} кориснички налог',
-'logentry-newusers-create2' => '$1 {{GENDER:|је отворио|је отворила|је отворио}} кориснички налог $3',
+'logentry-patrol-patrol-auto' => '$1 је аутоматски {{GENDER:$2|означио|означила}} измену $4 странице $3 као прегледану',
+'logentry-newusers-newusers' => '$1 је {{GENDER:$2|отворио|отворила}} кориснички налог',
+'logentry-newusers-create' => '$1 је {{GENDER:$2|отворио|отворила}} кориснички налог',
+'logentry-newusers-create2' => '$1 је {{GENDER:$2|отворио|отворила}} кориснички налог $3',
 'logentry-newusers-autocreate' => 'Кориснички налог $1 је аутоматски {{GENDER:$2|отворен}}',
 'logentry-rights-rights' => '$1 {{GENDER:$1|је променио|је променила|је променио}} чланство групе за $3 из $4 у $5',
 'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|је променио|је променила|је променио}} чланство групе за $3',
index 0571c0b..1149455 100644 (file)
@@ -348,7 +348,7 @@ $messages = array(
 'tog-showhiddencats' => 'Prikaži skrivene kategorije',
 'tog-noconvertlink' => 'Onemogući pretvaranje naslova veza',
 'tog-norollbackdiff' => 'Izostavi razliku nakon izvršenog vraćanja',
-'tog-useeditwarning' => 'Upozori me kada napustim stranicu sa nesačuvanim promenama',
+'tog-useeditwarning' => 'Upozori me kada napuštam stranicu sa nesačuvanim promenama',
 
 'underline-always' => 'uvek podvlači',
 'underline-never' => 'nikad ne podvlači',
@@ -4241,10 +4241,10 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 'logentry-move-move_redir' => '$1 je {{GENDER:$2|premestio|premestila}} stranicu $3 na $4 preko preusmerenja',
 'logentry-move-move_redir-noredirect' => '$1 je {{GENDER:|premestio|premestila}} stranicu $3 na $4 preko preusmerenja bez ostavljanja preusmerenja',
 'logentry-patrol-patrol' => '$1 {{GENDER:|je označio|je označila|je označio}} izmenu $4 stranice $3 kao patroliranu',
-'logentry-patrol-patrol-auto' => '$1 je samostalno {{GENDER:|označio|označila|označio}} izmenu $4 stranice $3 kao pregledanu',
-'logentry-newusers-newusers' => '$1 {{GENDER:|je otvorio|je otvorila|je otvorio}} korisnički nalog',
-'logentry-newusers-create' => '$1 {{GENDER:|je otvorio|je otvorila|je otvorio}} korisnički nalog',
-'logentry-newusers-create2' => '$1 {{GENDER:|je otvorio|je otvorila|je otvorio}} korisnički nalog $3',
+'logentry-patrol-patrol-auto' => '$1 je automatski {{GENDER:$2|označio|označila}} izmenu $4 stranice $3 kao pregledanu',
+'logentry-newusers-newusers' => '$1 je {{GENDER:$2|otvorio|otvorila}} korisnički nalog',
+'logentry-newusers-create' => '$1 je {{GENDER:$2|otvorio|otvorila}} korisnički nalog',
+'logentry-newusers-create2' => '$1 je {{GENDER:$2|otvorio|otvorila}} korisnički nalog $3',
 'logentry-newusers-autocreate' => 'Korisnički nalog $1 je automatski {{GENDER:$2|otvoren}}',
 'logentry-rights-rights' => '$1 {{GENDER:$1|je promenio|je promenila|je promenio}} članstvo grupe za $3 iz $4 u $5',
 'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|je promenio|je promenila|je promenio}} članstvo grupe za $3',
index 8d70e0b..3ae3588 100644 (file)
@@ -179,7 +179,6 @@ $messages = array(
 'tog-enotifminoredits' => 'E-mail mi fu pikin kenki fu peprewoysi opo mi sirey',
 'tog-enotifrevealaddr' => 'Sori mi e-mail nen ini den e-mail boskopu',
 'tog-shownumberswatching' => 'Sori omeni kebroikiman e tan luku a papira disi',
-'tog-showjumplinks' => 'Sori den "go na" miti',
 'tog-uselivepreview' => 'Kebroiki "wanten sori-na-fesi" (JavaScript – ondrosuku fasi)',
 'tog-forceeditsummary' => 'Gi wan boskopu efu a "Syatu" boksu leygi',
 'tog-watchlisthideown' => 'Kibri mi eygi kenki ini mi Tan luku réy',
index 9d43d6e..a34df87 100644 (file)
@@ -748,7 +748,6 @@ Den administratören som låste den gav denna anledning: "\'\'$3\'\'".',
 # Login and logout pages
 'logouttext' => "'''Du är nu utloggad.'''
 
-Du kan fortsätta att använda {{SITENAME}} anonymt, eller så kan du <span class='plainlinks'>[$1 logga in igen]</span> som samma eller som en annan användare.
 Observera att det, tills du tömmer din webbläsares cache, på vissa sidor kan se ut som att du fortfarande är inloggad.",
 'welcomeuser' => 'Välkommen, $1!',
 'welcomecreation-msg' => 'Ditt konto har skapats.
@@ -796,7 +795,7 @@ Glöm inte att justera dina [[Special:Preferences|{{SITENAME}}-inställningar]].
 'createacct-emailoptional' => 'E-postadress (valfritt)',
 'createacct-email-ph' => 'Bekräfta din e-postadress',
 'createacct-another-email-ph' => 'Skriv in e-postadress',
-'createaccountmail' => 'Använd ett tillfälligt slumpvis valt lösenord och skicka det till e-postadressen som anges nedan',
+'createaccountmail' => 'Använd ett tillfälligt slumpvis valt lösenord och skicka det till den angivna e-postadressen',
 'createacct-realname' => 'Riktigt namn (valfritt)',
 'createaccountreason' => 'Orsak:',
 'createacct-reason' => 'Anledning',
@@ -874,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",
@@ -1590,10 +1591,10 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'userrights-no-interwiki' => 'Du har inte behörighet att ändra användarrättigheter på andra wikis.',
 'userrights-nodatabase' => 'Databasen $1 finns inte eller så är den inte lokal.',
 'userrights-nologin' => 'Du måste [[Special:UserLogin|logga in]] med ett administratörskonto för att ändra användarrättigheter.',
-'userrights-notallowed' => 'Ditt konto har inte behörighet till att lägga till eller ta bort användarrättigheter.',
+'userrights-notallowed' => 'Du har inte behörighet till att lägga till eller ta bort användarrättigheter.',
 'userrights-changeable-col' => 'Grupper du kan ändra',
 'userrights-unchangeable-col' => 'Grupper du inte kan ändra',
-'userrights-conflict' => 'Användarrättighetskonflikt! Var god tillämpa dina ändringar igen.',
+'userrights-conflict' => 'Konflikt vid ändringar av användarrättigheter! Var god granska och bekräfta dina ändringar.',
 'userrights-removed-self' => 'Du tog bort dina egna rättigheter. Som sådan, kan du inte längre komma åt denna sida.',
 
 # Groups
@@ -2187,6 +2188,8 @@ En sida anses vara en förgreningssida om den inkluderar en mall som länkas til
 'pageswithprop-text' => 'Denna sida listar sidor som använder en speciell sidegenskap.',
 'pageswithprop-prop' => 'Egenskapsnamn:',
 'pageswithprop-submit' => 'Gå',
+'pageswithprop-prophidden-long' => 'dold långt textegenskapsvärde ($1 kilobyte)',
+'pageswithprop-prophidden-binary' => 'dold binärt egenskapsvärde ($1 kilobyte)',
 
 'doubleredirects' => 'Dubbla omdirigeringar',
 'doubleredirectstext' => 'Det här är en lista över sidor som dirigerar om till andra omdirigeringssidor. 
@@ -2244,6 +2247,7 @@ Varje rad innehåller länkar till den första och andra omdirigeringsidan, samt
 'mostrevisions' => 'Sidor med flest ändringar',
 'prefixindex' => 'Alla sidor med prefix',
 'prefixindex-namespace' => 'Alla sidor med prefix ($1 namnrymder)',
+'prefixindex-strip' => 'Avlägsna prefix i lista',
 'shortpages' => 'Korta sidor',
 'longpages' => 'Långa sidor',
 'deadendpages' => 'Sidor utan länkar',
@@ -3221,13 +3225,13 @@ Detta orsakades troligen av en länk till en svartlistad webbplats.',
 'pageinfo-length' => 'Sidlängd (i byte)',
 'pageinfo-article-id' => 'Sid-ID',
 'pageinfo-language' => 'Språk för sidinnehåll',
-'pageinfo-robot-policy' => 'Sökmotordirektiv',
-'pageinfo-robot-index' => 'Indexerbar',
-'pageinfo-robot-noindex' => 'Inte indexerbar',
+'pageinfo-robot-policy' => 'Indexering av robotar',
+'pageinfo-robot-index' => 'Tillåten',
+'pageinfo-robot-noindex' => 'Inte tillåten',
 'pageinfo-views' => 'Antal visningar',
 'pageinfo-watchers' => 'Antal användare som bevakar sidan',
 'pageinfo-few-watchers' => 'Färre än $1 {{PLURAL:$1|bevakare}}',
-'pageinfo-redirects-name' => 'Omdirigeringar till denna sida',
+'pageinfo-redirects-name' => 'Antal omdirigeringar till denna sida',
 'pageinfo-subpages-name' => 'Undersidor till denna sida',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|omdirigering|omdirigeringar}}; $3 {{PLURAL:$3|icke-omdirigering|icke-omdirigeringar}})',
 'pageinfo-firstuser' => 'Sidskapare',
@@ -3829,15 +3833,13 @@ $5
 
 Denna bekräftelsekod kommer inte att fungera efter $4.',
 'confirmemail_body_set' => 'Någon, förmodligen du, från IP-adressen $1,
-har satt e-postadressen till kontot "$2" till den här adressen {{SITENAME}}.
+har angivit e-postadressen till kontot "$2" till den här adressen på {{SITENAME}}.
 
-För att bekräfta att kontot verkligen tillhör dig, bör du återaktivera
-e-post funktionerna på {{SITENAME}}, öppna denna länk i din webbläsare:
+För att bekräfta att kontot verkligen tillhör dig, bör du aktivera e-postfunktionerna på {{SITENAME}}, öppna denna länk i din webbläsare:
 
 $3
 
-Om kontot *inte* tillhör dig, följ den här länken
-för att avbryta bekräftelsen av e-postadressen:
+Om kontot *inte* tillhör dig, följ den här länken för att avbryta bekräftelsen av e-postadressen:
 
 $5
 
@@ -4201,4 +4203,13 @@ Annars kan du använda det enkla formuläret nedan. Din kommentar kommer att lä
 # Image rotation
 'rotate-comment' => 'Bilden roteras $1 {{PLURAL:$1|grad|grader}} medurs',
 
+# Limit report
+'limitreport-cputime' => 'Processortidsanvändning',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|sekund|sekunder}}',
+'limitreport-walltime' => 'Realtidsanvändning',
+'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 3e83578..140a2e7 100644 (file)
@@ -94,7 +94,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Pokoż, wjela sprowjorzy dowo pozůr',
 'tog-oldsig' => 'Teroźni wyglůnd Twojygo szrajbowańo',
 'tog-fancysig' => 'Szrajbńij s kodůma wiki (bez autůmatycznygo linka)',
-'tog-showjumplinks' => 'Zapńij cajchnůndzki "przyńdź do"',
 'tog-uselivepreview' => 'Używej dynamiczne uobźyrańy (JavaScript) (eksperymentalny)',
 'tog-forceeditsummary' => 'Pedź, kejbych ńic ńy naszkryfloł we uopiśe pomjyńań',
 'tog-watchlisthideown' => 'Schow moje pomjyńańa we artiklach, na kere dowom pozůr',
index ba72205..b47b93c 100644 (file)
@@ -618,8 +618,7 @@ $1',
 # Login and logout pages
 'logouttext' => "'''ขณะนี้คุณได้ล็อกเอาต์แล้ว'''
 
-คุณสามารถใช้งาน {{SITENAME}} ต่อในฐานะผู้ใช้นิรนาม หรือคุณสามารถ<span class='plainlinks'>[$1 ล็อกอินกลับเข้าไป]</span>ด้วยชื่อผู้ใช้เดิมหรือชื่อผู้ใช้อื่น
-อย่างไรก็ตามอาจมีบางหน้าที่แสดงผลเสมือนว่าคุณกำลังล็อกอินอยู่ จนกว่าคุณจะล้างแคชเบราว์เซอร์ของคุณ",
+หมายเหตุว่า บางหน้าอาจยังแสดงผลเสมือนว่าคุณกำลังล็อกอินอยู่ จนกว่าคุณจะล้างแคชเบราว์เซอร์ของคุณ",
 'welcomeuser' => 'ยินดีต้อนรับ $1!',
 'welcomecreation-msg' => 'บัญชีของคุณถูกสร้างขึ้นแล้ว
 อย่าลืมเปลี่ยนแปลง[[Special:Preferences|การตั้งค่าใน {{SITENAME}}]] ของคุณ',
@@ -2997,10 +2996,12 @@ $1',
 'pageinfo-article-id' => 'หมายเลขประจำหน้า',
 'pageinfo-language' => 'ภาษาเนื้อหาของหน้า',
 'pageinfo-robot-policy' => 'สถานะเสิร์ชเอนจิน',
+'pageinfo-robot-index' => 'อนุญาต',
+'pageinfo-robot-noindex' => 'ไม่อนุญาต',
 'pageinfo-views' => 'จำนวนการเข้าดู',
 'pageinfo-watchers' => 'จำนวนผู้เข้าดูหน้า',
 'pageinfo-few-watchers' => '{{PLURAL:$1|ผู้เฝ้าดู|ผู้เฝ้าดู}}น้อยกว่า $1 คน',
-'pageinfo-redirects-name' => 'หà¸\99à¹\89าà¹\80à¸\9bลีà¹\88ยà¸\99à¸\97าà¸\87มายัà¸\87หน้านี้',
+'pageinfo-redirects-name' => 'à¸\88ำà¸\99วà¸\99à¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¸\97าà¸\87มาหน้านี้',
 'pageinfo-subpages-name' => 'หน้าย่อยของหน้านี้',
 'pageinfo-subpages-value' => '$1 ($2 หน้าเปลี่ยนทาง; $3 หน้าไม่เปลี่ยนทาง)',
 'pageinfo-firstuser' => 'ผู้สร้างหน้า',
@@ -3643,6 +3644,7 @@ $5
 'version-license' => 'สัญญาอนุญาต',
 'version-poweredby-credits' => "วิกินี้จัดทำโดย '''[//www.mediawiki.org/ MediaWiki]''', สงวนลิขสิทธิ์ © 2001-$1 โดย $2",
 'version-poweredby-others' => 'ผู้อื่น',
+'version-poweredby-translators' => 'ผู้แปล translatewiki.net',
 'version-license-info' => 'มีเดียวิกิเป็นซอฟต์แวร์เสรี คุณสามารถแจกจ่าย และ/หรือ แก้ไขได้ภายใต้เงื่อนไขแห่งสัญญาอนุญาตสาธารณะทั่วไปของกนูตามที่เผยแพร่โดยมูลนิธิซอฟต์แวร์เสรี ไม่ว่ารุ่นที่ 2 แห่งสัญญาอนุญาต หรือรุ่นภายหลังอื่นใด (ตามที่คุณเลือก)
 
 มีเดียวิกิมีถูกแจกจ่ายด้วยหวังว่าจะเป็นประโยชน์ แต่ไม่มีการรับประกันใด ๆ ทั้งสิ้น ไม่มีแม้การรับประกันโดยนัยเพื่อการค้า หรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ดูรายละเอียดเพิ่มเติมที่สัญญาอนุญาตสาธารณะทั่วไปของกนู
index a34e438..d8bd06b 100644 (file)
@@ -80,7 +80,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Soim hamas yusa i lukautim pes',
 'tog-oldsig' => 'Olsem wanem yu raitim nem nau',
 'tog-fancysig' => 'Dispela rot yu raitim long nem stap wikitext (i no gat otomatik link)',
-'tog-showjumplinks' => ' Setap ol "Go stret long" links bilong helpim',
 'tog-uselivepreview' => 'Soim ol senis kwiktaim taim mi wokim (i nidim Javascript)',
 'tog-forceeditsummary' => 'Tokim mi long wanem taim raitim mi nating long liklik toksave bilong senis',
 'tog-watchlisthideown' => 'Haitim ol senis mi wokim long lukautbuk bilong mi',
index 5a6982f..7025f49 100644 (file)
@@ -1123,7 +1123,7 @@ Geri giderek varolan sayfayı değiştirebilirsiniz ya da kayıtlı iseniz [[Spe
 'nocreate-loggedin' => 'Yeni sayfalar oluşturmaya yetkiniz yok.',
 'sectioneditnotsupported-title' => 'Bölüm değiştirmesi desteklenmiyor',
 'sectioneditnotsupported-text' => 'Bölüm değiştirmesi bu sayfada desteklenmiyor.',
-'permissionserrors' => 'İzin hataları',
+'permissionserrors' => 'İzin hatası',
 'permissionserrorstext' => 'Aşağıdaki {{PLURAL:$1|sebep|sebepler}}den dolayı, bunu yapmaya yetkiniz yok:',
 'permissionserrorstext-withaction' => 'Aşağıdaki {{PLURAL:$1|neden|nedenler}}den dolayı $2 yetkiniz yok:',
 'recreate-moveddeleted-warn' => "'''Uyarı: Daha önceden silinmiş bir sayfayı tekrar oluşturuyorsunuz.'''
@@ -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 31c5727..97a284a 100644 (file)
@@ -217,7 +217,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Тикшерелгән үзгәртүләр яңа үзгәртүләр исемлегеннән яшерелсен.',
 'tog-newpageshidepatrolled' => 'Тикшерелгән битләр яңа битләр исемлегеннән яшерелсен',
 'tog-extendwatchlist' => 'Соңгыларын гына түгел, ә барлык үзгәртүләрне эченә алган, киңәйтелгән күзәтү исемлеге',
-'tog-usenewrc' => 'ЯÑ\85Ñ\88Ñ\8bÑ\80Ñ\82Ñ\8bлган Ñ\81оңгÑ\8b Ò¯Ð·Ð³Ó\99Ñ\80Ñ\82үлÓ\99Ñ\80 Ð¸Ñ\81емлеге ÐºÑ\83лланÑ\8bлÑ\81Ñ\8bн (JavaScript кирәк)',
+'tog-usenewrc' => 'СоңгÑ\8b Ò¯Ð·Ð³Ó\99Ñ\80Ñ\82үлÓ\99Ñ\80дÓ\99 Ò»Ó\99м ÐºÒ¯Ð·Ó\99Ñ\82Ò¯ Ð¸Ñ\81емлегендÓ\99 Ò¯Ð·Ð³Ó\99Ñ\80еÑ\88лÓ\99Ñ\80не Ñ\82Ó©Ñ\80кемлÓ\99Ñ\80гÓ\99(JavaScript кирәк)',
 'tog-numberheadings' => 'Атамалар автомат рәвештә номерлансын',
 'tog-showtoolbar' => 'Үзгәртү вакытында коралларның өске панеле күрсәтелсен (JavaScript кирәк)',
 'tog-editondblclick' => 'Битләргә ике чирттерү белән үзгәртү бите ачылсын (JavaScript кирәк)',
@@ -316,6 +316,18 @@ $messages = array(
 'oct' => 'окт',
 'nov' => 'ноя',
 'dec' => 'дек',
+'january-date' => '$1 Гыйнвар',
+'february-date' => '$1 Февраль',
+'march-date' => '$1 Март',
+'april-date' => '$1 Апрель',
+'may-date' => '$1 Май',
+'june-date' => '$1 Июнь',
+'july-date' => '$1 Июль',
+'august-date' => '$1 Август',
+'september-date' => '$1 Сентябрь',
+'october-date' => '$1 Октябрь',
+'november-date' => '$1 Ноябрь',
+'december-date' => '$1 Декабрь',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Төркем|Төркемнәр}}',
@@ -343,7 +355,8 @@ $messages = array(
 'newwindow' => '(яңа тәрәзәдә ачыла)',
 'cancel' => 'Баш тарту',
 'moredotdotdot' => 'Дәвамы…',
-'mypage' => 'Шәхси битем',
+'morenotlisted' => 'Башка берни дә юк...',
+'mypage' => 'Бит',
 'mytalk' => 'Бәхәс',
 'anontalk' => 'Бу IP адресы өчен бәхәс бите',
 'navigation' => 'Күчү',
@@ -366,7 +379,7 @@ $messages = array(
 'vector-action-protect' => 'Яклау',
 'vector-action-undelete' => 'Кайтару',
 'vector-action-unprotect' => 'Яклауны үзгәртү',
-'vector-simplesearch-preference' => 'Эзләү өчен киңәйтелгән ярдәм хәбәрләрен күрсәтү («Векторлы» бизәлеше өчен генә кулланылыа)',
+'vector-simplesearch-preference' => 'Җиңеләйтелгән эзләү юлын кушарга («Векторлы» бизәлеше өчен генә)',
 'vector-view-create' => 'Төзү',
 'vector-view-edit' => 'Үзгәртү',
 'vector-view-history' => 'Тарихын карау',
@@ -397,6 +410,7 @@ $messages = array(
 'create-this-page' => 'Бу битне төзү',
 'delete' => 'Бетерү',
 'deletethispage' => 'Бу битне бетерү',
+'undeletethispage' => 'Бу битне кайтарырга',
 'undelete_short' => '$1 {{PLURAL:$1|үзгәртмәне}} торгызу',
 'viewdeleted_short' => '{{PLURAL:$1|1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}} карау',
 'protect' => 'Яклау',
@@ -473,6 +487,10 @@ $1',
 'youhavenewmessages' => 'Сездә $1 бар ($2).',
 'newmessageslink' => 'яңа хәбәрләр',
 'newmessagesdifflink' => 'бәхәс битегезнең соңгы үзгәртүе',
+'youhavenewmessagesfromusers' => 'Сезгә {{PLURAL:$3|$3 кулланучыдан}} $1 килде ($2).',
+'youhavenewmessagesmanyusers' => 'Сез бик күп кулланучыдан $1 алдыгыз ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|яңа хәбәр}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|соңгы үзгәртү|соңгы үзгәртүләр}}',
 'youhavenewmessagesmulti' => 'Сезгә монда яңа хәбәрләр бар: $1',
 'editsection' => 'үзгәртү',
 'editold' => 'үзгәртү',
@@ -526,7 +544,7 @@ $1',
 # General errors
 'error' => 'Хата',
 'databaseerror' => 'Мәгълүматлар базасында хата',
-'dberrortext' => 'Мәгълүматлар базасына җибәрелгән сорауда синтаксик хата табылды.
+'dberrortext' => 'Мәгълүматлар базасына җибәрелгән сорауда синтаксис хатасы табылды.
 Программада хата булырга мөмкин.
 Мәгълүматлар базасына җибәрелгән соңгы сорау:
 <blockquote><tt>$1</tt></blockquote>
@@ -567,6 +585,8 @@ $1',
 'badarticleerror' => 'Бу биттә мондый гамәл башкарып булмый.',
 'cannotdelete' => '«$1» исемле битне яки файлны бетереп булмый. Аны бүтән кулланучы бетергән булырга мөмкин.',
 'cannotdelete-title' => '«$1» битен бетереп булмый',
+'delete-hook-aborted' => 'Үзгәртү махсус процедура тарафыннан кире кагыла.
+Сәбәпләре китерелми.',
 'badtitle' => 'Яраксыз исем',
 'badtitletext' => 'Битнең соралган исеме дөрес түгел, буш яисә телъара яки интервики исеме дөрес күрсәтелмәгән. Исемдә тыелган символлар кулланылган булырга мөмкин.',
 'perfcached' => 'Бу мәгълүматлар кэштан алынган, аларда соңгы үзгәртүләр булмаска мөмкин. Кэшта иң күбе {{PLURAL:$1|язма}} саклана.',
@@ -579,17 +599,19 @@ $1',
 'viewsource-title' => '$1 битенең яхма текстын карау',
 'actionthrottled' => 'Тизлек киметелгән',
 'actionthrottledtext' => 'Спамга каршы көрәш өчен аз вакыт эчендә бу гамәлне еш куллану тыелган. Зинһар, соңарак кабатлагыз.',
-'protectedpagetext' => 'Бу бит үзгәртү өчен ябык.',
+'protectedpagetext' => 'Бу бит үзгәртүләрдән һәм башка төрле гамәлләрдән якланган.',
 'viewsourcetext' => 'Сез бу битнең башлангыч текстын карый һәм күчерә аласыз:',
 'viewyourtext' => "Сез '''үз төзәтмәләрегезне''' бу сәхифәдә карый һәм чыгарылма текстны күчермәли аласыз:",
-'protectedinterface' => 'Бу биттә программа интерфейсы хәбәрләре бар. Вандализмга каршы көрәш сәбәпле, бу битне үзгәртү тыела.',
-'editinginterface' => "'''Игътибар:''' Сез MediaWiki системасының интерфейс битен үзгәртәсез. Бу башка кулланучыларга да тәэсир итәчәк. Тәрҗемә өчен [//translatewiki.net/wiki/Main_Page?setlang=tt-cyrl translatewiki.net] локализацияләү проектын кулланыгыз.",
+'protectedinterface' => 'Бу биттә программа тәэминатының интерфейс хәбәрләре бар. Вандализмга каршы көрәш сәбәпле, бу битне үзгәртү тыела. Әлеге хәбәрнең тәрҗемәсен өстәү яки үзгәртү өчен, зинһар өчен, MediaWiki [//translatewiki.net/ translatewiki.net] тәрҗемәләү сайтын кулланыгыз.',
+'editinginterface' => "'''Игътибар:''' Сез программа тәэминатының интерфейс тексты булган битне үзгәртәсез. Бу башка кулланучыларга да тәэсир итәчәк. Тәрҗемә өчен [//translatewiki.net/wiki/Main_Page?setlang=tt-cyrl translatewiki.net] локализацияләү проектын кулланыгыз.",
 'sqlhidden' => '(SQL-сорау яшерелгән)',
 'cascadeprotected' => 'Бу бит үзгәртүләрдән сакланган, чөнки ул каскадлы саклау кабул ителгән {{PLURAL:$1|биткә|битләргә}} өстәлгән:
 $2',
 'namespaceprotected' => "'''$1''' исем киңлегендәге битләрне үзгәртү өчен сезнең рөхсәтегез юк.",
 'customcssprotected' => 'Сез бу CSS-сәхифәне үзгәртә алмыйсыз, чөнки монда башка кулланучының шәхси көйләнмәләре саклана',
 'customjsprotected' => 'Сез бу JavaScript-сәхифәне үзгәртә алмыйсыз, чөнк монда башка кулланучының шәхси көйләнмәләре саклана',
+'mycustomcssprotected' => 'Сезнең әлеге CSS битен үзгәртергә хокукыгыз юк.',
+'mycustomjsprotected' => 'Сезнең биттә JavaScript үзгәртергә хокукларыгыз юк.',
 'ns-specialprotected' => 'Махсус битләрне үзгәртеп булмый.',
 'titleprotected' => "Бу исем белән бит ясау [[User:$1|$1]] тарафыннан тыелган.
 Ул күрсәткән сәбәп: ''$2''.",
@@ -606,11 +628,22 @@ $2',
 Кайбер битләр Сез кергән кебек күрсәтелергә мөмкин. Моны бетерү өчен браузер кэшын чистартыгыз.",
 'welcomeuser' => 'Хуш килдегез, $1!',
 'yourname' => 'Кулланучы исеме:',
+'userlogin-yourname' => 'Кулланучы исеме',
+'userlogin-yourname-ph' => 'Хисап язмасының исемен кертегез',
+'createacct-another-username-ph' => 'Хисап язмасының исемен кертегез',
 'yourpassword' => 'Серсүз:',
+'userlogin-yourpassword' => 'Серсүз',
+'userlogin-yourpassword-ph' => 'Серсүзне языгыз',
+'createacct-yourpassword-ph' => 'Серсүзне кертегез',
 'yourpasswordagain' => 'Серсүзне кабат кертү:',
+'createacct-yourpasswordagain' => 'Серсүзне раслагыз',
+'createacct-yourpasswordagain-ph' => 'Серсүзне кабаттан кертегез',
 'remembermypassword' => 'Хисап язмамны бу браузерда саклансын (иң күп $1 {{PLURAL:$1|көн|көн|көн}}гә кадәр)',
+'userlogin-remembermypassword' => 'Системада калырга',
+'userlogin-signwithsecure' => 'Якланган кушылу',
 'securelogin-stick-https' => 'Керүдән соң HTTPS буенча тоташтыру дәвам ителсен',
 'yourdomainname' => 'Сезнең доменыгыз:',
+'password-change-forbidden' => 'Сез бу викидә серсүзне үзгәртә алмыйсыз.',
 'externaldberror' => 'Тышкы мәгълүмат базасы ярдәмендә аутентификация үткәндә хата чыкты, яисә тышкы хисап язмагызга үзгәрешләр кертү хокукыгыз юк.',
 'login' => 'Керү',
 'nav-login-createaccount' => 'Керү / теркәлү',
@@ -620,6 +653,8 @@ $2',
 'logout' => 'Чыгу',
 'userlogout' => 'Чыгу',
 'notloggedin' => 'Сез хисап язмагызга кермәгәнсез',
+'userlogin-noaccount' => 'Аккаунт юкмы?',
+'userlogin-joinproject' => 'Проектка керү',
 'nologin' => "Кулланучы исемең юкмы? '''$1'''",
 'nologinlink' => 'Хисап язмасы төзегез',
 'createaccount' => 'Яңа кулланучы теркәү',
index 6abf1e2..c323f4a 100644 (file)
@@ -787,7 +787,7 @@ $1',
 # Login and logout pages
 'logouttext' => "'''Тепер ви працюєте в тому ж режимі, який був до вашого входу до системи.'''
 
\92и Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ñ\80одовжÑ\83ваÑ\82и Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83ваÑ\82и {{grammar:accusative|{{SITENAME}}}} Ð°Ð½Ð¾Ð½Ñ\96мно Ð°Ð±Ð¾ Ð·Ð½Ð¾Ð²Ñ\83 <span class='plainlinks'>[$1 Ð²Ð²Ñ\96йÑ\82и Ð´Ð¾ Ñ\81иÑ\81Ñ\82еми]</span> Ñ\8fк Ñ\82ой Ñ\81амий Ð°Ð±Ð¾ Ñ\96нÑ\88ий ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87. Ð\94еÑ\8fкÑ\96 Ñ\81Ñ\82оÑ\80Ñ\96нки Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ð²Ñ\96добÑ\80ажаÑ\82иÑ\81Ñ\8f, Ð½Ñ\96би Ð²Ð¸ Ñ\89е Ð¿Ñ\80едÑ\81Ñ\82авленÑ\96 Ñ\81иÑ\81Ñ\82емÑ\96 Ð¿Ñ\96д Ñ\96менем, Ñ\89об Ñ\83никнÑ\83Ñ\82и Ñ\86Ñ\8cого, Ð¾Ð½Ð¾Ð²Ñ\96Ñ\82Ñ\8c ÐºÐµÑ\88 Ð±Ñ\80аÑ\83зеÑ\80а.",
+Деякі сторінки можуть відображатися, ніби ви ще представлені системі під іменем, щоб уникнути цього, оновіть кеш браузера.",
 'welcomeuser' => 'Вітаємо, $1!',
 'welcomecreation-msg' => 'Ваш акаунт було створено.
 Не забудьте змінити свої [[Special:Preferences|налаштування у {{GRAMMAR:genitive|{{SITENAME}}}}]].',
@@ -834,7 +834,7 @@ $1',
 'createacct-emailoptional' => "Адреса електронної пошти (не обов'язково)",
 'createacct-email-ph' => 'Введіть Вашу адресу електронної пошти',
 'createacct-another-email-ph' => 'Введіть адресу електронної пошти',
-'createaccountmail' => 'Ð\92икоÑ\80иÑ\81Ñ\82аÑ\82и Ñ\82имÑ\87аÑ\81овий Ð²Ð¸Ð¿Ð°Ð´ÐºÐ¾Ð²Ð¸Ð¹ Ð¿Ð°Ñ\80олÑ\8c Ñ\96 Ð½Ð°Ð´Ñ\96Ñ\81лаÑ\82и Ð¹Ð¾Ð³Ð¾ Ð½Ð° Ð°Ð´Ñ\80еÑ\81Ñ\83 ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и, Ð²ÐºÐ°Ð·Ð°Ð½Ñ\83 Ð½Ð¸Ð¶Ñ\87е',
+'createaccountmail' => 'Ð\92икоÑ\80иÑ\81Ñ\82аÑ\82и Ñ\82имÑ\87аÑ\81овий Ð²Ð¸Ð¿Ð°Ð´ÐºÐ¾Ð²Ð¸Ð¹ Ð¿Ð°Ñ\80олÑ\8c Ñ\96 Ð½Ð°Ð´Ñ\96Ñ\81лаÑ\82и Ð¹Ð¾Ð³Ð¾ Ð½Ð° Ð²ÐºÐ°Ð·Ð°Ð½Ñ\83 Ð°Ð´Ñ\80еÑ\81Ñ\83 ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\97 Ð¿Ð¾Ñ\88Ñ\82и',
 'createacct-realname' => "Справжнє ім'я (не обов'язково)",
 'createaccountreason' => 'Причина:',
 'createacct-reason' => 'Причина',
@@ -1645,11 +1645,11 @@ $1",
 'userrights-no-interwiki' => 'У вас нема дозволу змінювати права користувачів на інших вікі.',
 'userrights-nodatabase' => 'База даних $1 не існує або не є локальною.',
 'userrights-nologin' => 'Ви повинні [[Special:UserLogin|ввійти до системи]] з обліковим записом адміністратора, щоб призначати права користувачам.',
-'userrights-notallowed' => 'Ð\92аÑ\88 Ð¾Ð±Ð»Ñ\96ковий Ð·Ð°Ð¿Ð¸Ñ\81 Ð½Ðµ Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\8fÑ\94 Ð¿Ñ\80изнаÑ\87аÑ\82и Ð°Ð±Ð¾ Ð·Ð¼Ñ\96нÑ\8eваÑ\82и Ð¿Ñ\80ава користувачів.',
+'userrights-notallowed' => 'У Ð²Ð°Ñ\81 Ð½Ðµ Ð¼Ð°Ñ\94 Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\96в Ð½Ð° Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ\8f Ð°Ð±Ð¾ Ð·Ð¼Ñ\96нÑ\83 Ð¿Ñ\80ав користувачів.',
 'userrights-changeable-col' => 'Групи, які ви можете змінити',
 'userrights-unchangeable-col' => 'Групи, які ви не можете змінити',
 'userrights-irreversible-marker' => '$1*',
-'userrights-conflict' => 'Ð\9aонÑ\84лÑ\96кÑ\82 Ð¿Ñ\80ав ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а! Ð\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð·Ð°Ñ\81Ñ\82оÑ\81Ñ\83йÑ\82е зміни знову.',
+'userrights-conflict' => 'Ð\9aонÑ\84лÑ\96кÑ\82 Ð·Ð¼Ñ\96ни Ð¿Ñ\80ав ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а! Ð\91Ñ\83дÑ\8c Ð»Ð°Ñ\81ка, Ð¿ÐµÑ\80евÑ\96Ñ\80Ñ\82е Ñ\82а  Ð¿Ñ\96дÑ\82веÑ\80дÑ\96Ñ\82Ñ\8c зміни знову.',
 'userrights-removed-self' => 'Ви успішно позбавили себе власних прав. Через це Ви більше не маєте доступу до цієї сторінки.',
 
 # Groups
@@ -2700,8 +2700,8 @@ $UNWATCHURL
 'viewdeletedpage' => 'Переглянути видалені сторінки',
 'undeletepagetext' => '{{PLURAL:$1|Сторінка була вилучена, однак вона все ще знаходиться в архіві, тому може бути відновлена|Такі сторінки були вилучені, але вони все ще знаходяться в архіві і тому можуть бути відновлені}}. Архів періодично очищається.',
 'undelete-fieldset-title' => 'Відновити версії',
-'undeleteextrahelp' => "Для повного відновлення історії сторінки залиште всі поля пустими й натисніть '''''«{{int:undeletebtn}}»'''''. 
-Для виконання часткового відновлення помітьте відповідні змінені поля, а потім натисніть'''''«{{int:undeletebtn}}»'''''.",
+'undeleteextrahelp' => "Для повного відновлення історії сторінки залиште всі поля порожніми й натисніть '''''«{{int:undeletebtn}}»'''''. 
+Для виконання часткового відновлення помітьте відповідні змінені поля, а потім натисніть '''''«{{int:undeletebtn}}»'''''.",
 'undeleterevisions' => 'В архіві $1 {{PLURAL:$1|версія|версії|версій}}',
 'undeletehistory' => 'Якщо ви відновите сторінку, всі версії будуть також відновлені, разом з журналом редагувань.
 Якщо з моменту вилучення була створена нова сторінка з такою самою назвою, відновлені версії будуть зазначені в журналі редагувань перед новими записами, але поточна версія існуючої статті не буде замінена автоматично.',
@@ -3307,7 +3307,7 @@ The wiki server can't provide data in a format your client can read.",
 'pageinfo-views' => 'Кількість переглядів',
 'pageinfo-watchers' => 'Кількість спостерігачів',
 'pageinfo-few-watchers' => 'Менше ніж $1 {{PLURAL:$1|спостерігач|спостерігачі|спостерігачів}}',
-'pageinfo-redirects-name' => 'Ð\9fеÑ\80енапÑ\80авленнÑ\8f на цю сторінку',
+'pageinfo-redirects-name' => 'ЧиÑ\81ло Ð¿ÐµÑ\80енапÑ\80авленÑ\8c на цю сторінку',
 'pageinfo-subpages-name' => 'Підсторінки цієї сторінки',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|перенаправлення|перенаправлення|перенаправлень}}; $3 {{PLURAL:$3|неперенаправлення|неперенаправлення|неперенаправлень}})',
 'pageinfo-firstuser' => 'Створив сторінку',
@@ -4004,7 +4004,7 @@ $5
 
 Код підтвердження дійсний до $4.',
 'confirmemail_body_set' => 'Хтось (можливо ви) з IP-адреси $1
-назначив цю електронну скриньку для облікового запису «$2» в проекті {{SITENAME}}.
+назначив цю електронну скриньку для облікового запису „$2“ в проекті {{SITENAME}}.
 
 Аби підтвердити, що цей обліковий запис справді належить вам, і дозволити надсилання листів
 з сайту {{SITENAME}}, відкрийте наступне посилання у веб-оглядачі:
index 80d6435..34321c1 100644 (file)
@@ -143,7 +143,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Jonön numi gebanas galädöl',
 'tog-oldsig' => 'Dispenäd dabinöl:',
 'tog-fancysig' => 'Dispenäd balugik (nen yüms lü gebanapad)',
-'tog-showjumplinks' => 'Dälön lügolovi me yüms „lübunöl“',
 'tog-uselivepreview' => 'Gebön büologedi itjäfidik (JavaScript) (Sperimäntik)',
 'tog-forceeditsummary' => 'Sagön obe, ven redakaplän brefik vagon',
 'tog-watchlisthideown' => 'Klänedön redakamis obik se galädalised',
index 64b0535..8149322 100644 (file)
@@ -72,7 +72,6 @@ $messages = array(
 'tog-shownumberswatching' => "Näütäq, ku pall'o pruukjit taa lehe perrä kaes",
 'tog-oldsig' => 'Parhillanõ alakirotus:',
 'tog-fancysig' => 'Pruugiq vikiteksti moodulist alakirotust (ilma automaatsõ lingildä)',
-'tog-showjumplinks' => 'Panõq lehe algustõ kipõqlingiq',
 'tog-uselivepreview' => 'Pruugiq kipõkaehust (JavaScript) (proomi)',
 'tog-forceeditsummary' => 'Annaq teedäq, ku olõ-i kirotõt kokkovõtõt',
 'tog-watchlisthideown' => 'Näüdäku-i perräkaemisnimekirän mu hindä toimõnduisi',
index 6e4690f..b7cd92d 100644 (file)
@@ -47,7 +47,6 @@ $messages = array(
 'tog-shownumberswatching' => '显示监控此页个用户数目',
 'tog-oldsig' => '现在签名个预览:',
 'tog-fancysig' => '拿签名当成wiki文本(弗产生自动链接)',
-'tog-showjumplinks' => '启用“跳转”链接',
 'tog-uselivepreview' => '使用实时预览(Javascript)(试验)',
 'tog-forceeditsummary' => '编辑摘要为空个辰光提醒我',
 'tog-watchlisthideown' => '来许监控列表里向拿我个编辑囥脱佢',
@@ -933,7 +932,6 @@ $1",
 'recentchangesdays-max' => '最长 $1 日',
 'recentchangescount' => '默认显示个编辑数:',
 'prefs-help-recentchangescount' => '箇个包括近段辰光个改动、页面历史以及日志。',
-'prefs-help-watchlist-token' => '此栏填写个密钥可以生成侬监视列表个RSS源。任何知晓本栏密钥个人侪好阅读侬个监视列表,因此请使用安全数值。箇搭已提供一只随机生成个数值供侬挑拣:$1',
 'savedprefs' => '倷个偏好已经保存哉。',
 'timezonelegend' => '时区:',
 'localtime' => '当地辰光:',
index a9e2693..a9b76a6 100644 (file)
@@ -73,7 +73,6 @@ $messages = array(
 'tog-shownumberswatching' => "'t Antal gebrukers weerheven 't a deêze pahina volg",
 'tog-oldsig' => 'Bestaende onderteêkenienge',
 'tog-fancysig' => "As wikitekst behandel'n (zonder automaotische verwiezienge ni de gebrukersbladzie)",
-'tog-showjumplinks' => '“hi nae”-toehankelijkeidslienks inschaokelen',
 'tog-uselivepreview' => '“live voevertoônienge” gebruken (JavaScript vereist – experimenteêl)',
 'tog-forceeditsummary' => 'Heef me een meldieng bie een lehe saemenvattieng',
 'tog-watchlisthideown' => 'Eihen bewerkiengen op men volglieste verberhen',
index 5a9bd0b..594e306 100644 (file)
@@ -780,7 +780,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''您现在已经退出。'''
 
-您可以继续以匿名方式使用{{SITENAME}},或再次以相同或不同用户身份<span class='plainlinks'>[$1 登录]</span>。请注意一些页面可能仍然显示您为登录状态,直到您清空您的浏览器缓存为止。",
+请注意一些页面可能仍然显示您为登录状态,直到您清空您的浏览器缓存为止。",
 'welcomeuser' => '欢迎,$1!',
 'welcomecreation-msg' => '你的账户已创建。请不要忘记更改你的[[Special:Preferences|{{SITENAME}}设置]]。',
 'yourname' => '用户名:',
@@ -826,7 +826,7 @@ $2',
 'createacct-emailoptional' => '电子邮件地址 (可选)',
 'createacct-email-ph' => '请输入您的电子邮件地址',
 'createacct-another-email-ph' => '输入电子邮件地址',
-'createaccountmail' => '使用一个临时的随机密码,并将它发送到以下指定的电子邮件地址',
+'createaccountmail' => '使用一个临时的随机密码并将其发送到指定的电子邮件地址中',
 'createacct-realname' => '真实姓名 (可选)',
 'createaccountreason' => '原因:',
 'createacct-reason' => '原因',
@@ -1549,10 +1549,10 @@ $1",
 'userrights-no-interwiki' => '您并没有权限去编辑在其它wiki上的用户权限。',
 '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
@@ -1617,7 +1617,7 @@ $1",
 'right-hideuser' => '封禁并隐藏用户名',
 'right-ipblock-exempt' => '避开IP封禁、自动封禁和IP段封禁',
 'right-proxyunbannable' => '避开代理服务器的自动封禁',
-'right-unblockself' => '解å°\81ä»\96们è\87ªå·±',
+'right-unblockself' => 'è\87ªæ\88\91解å°\81',
 'right-protect' => '更改保护级别和编辑受连锁保护的页面',
 'right-editprotected' => '编辑页面保护需要“{{int:protect-level-sysop}}”',
 'right-editsemiprotected' => '编辑页面保护需要“{{int:protect-level-autoconfirmed}}”',
@@ -2005,15 +2005,11 @@ $1',
 'morelinkstoimage' => '查看连接到这个文件的[[Special:WhatLinksHere/$1|更多链接]]。',
 'linkstoimage-redirect' => '$1(文件重定向)$2',
 'duplicatesoffile' => '以下{{PLURAL:$1|文件|$1个文件}}是本文件的副本([[Special:FileDuplicateSearch/$2|更多细节]]):',
-'sharedupload' => '该文件来自于$1,它可能在其它计划项目中被应用。',
-'sharedupload-desc-there' => '该文件来自于$1,它可能在其它计划项目中被应用。
-请参阅在[$2 文件描述页面]以了解其相关信息。',
-'sharedupload-desc-here' => '该文件来自于$1,它可能在其它计划项目中被应用。
-它在[$2 文件描述页面]那边上的描述于下面显示。',
-'sharedupload-desc-edit' => '该文件来自$1,它可能在其它计划项目中被使用。
-或许您可以在其[$2 文件描述页面]上编辑说明。',
-'sharedupload-desc-create' => '此文件来自$1并可能由其他项目使用。
-也许您想在其[$2 文件描述页面]编辑描述信息。',
+'sharedupload' => '本文件来自$1并可能被其它项目使用。',
+'sharedupload-desc-there' => '本文件来自$1并可能被其它项目使用。更多信息请见[$2 文件说明页面]。',
+'sharedupload-desc-here' => '本文件来自$1并可能被其它项目使用。其[$2 文件说明页面]上的说明显示在下面。',
+'sharedupload-desc-edit' => '本文件来自$1并可能被其它项目使用。也许你想要编辑其[$2 文件说明页面]上的说明。',
+'sharedupload-desc-create' => '本文件来自$1并可能被其他项目使用。也许你想要编辑其[$2 文件说明页面]上的说明。',
 'filepage-nofile' => '不存在此名称的文件。',
 'filepage-nofile-link' => '不存在此名称的文件,但您可以[$1 上传它]。',
 'uploadnewversion-linktext' => '上传该文件的新版本',
@@ -3125,13 +3121,13 @@ $2',
 'pageinfo-length' => '页面长度(字节)',
 'pageinfo-article-id' => '页面ID',
 'pageinfo-language' => '页面内容语言',
-'pageinfo-robot-policy' => 'æ\90\9cç´¢å¼\95æ\93\8eç\8a¶æ\80\81',
-'pageinfo-robot-index' => 'å\8f¯ç´¢å¼\95',
-'pageinfo-robot-noindex' => 'ä¸\8då\8f¯ç´¢å¼\95',
+'pageinfo-robot-policy' => 'æ\9cºå\99¨äººç´¢å¼\95',
+'pageinfo-robot-index' => 'å\85\81许',
+'pageinfo-robot-noindex' => 'ä¸\8då\85\81许',
 'pageinfo-views' => '查看数',
 'pageinfo-watchers' => '页面监视者数',
 'pageinfo-few-watchers' => '少于$1个监视者',
-'pageinfo-redirects-name' => '本页重定向页数',
+'pageinfo-redirects-name' => '重定向到此页的数量',
 'pageinfo-subpages-name' => '本页子页面数',
 'pageinfo-subpages-value' => '$1($2个重定向页,$3个非重定向页)',
 'pageinfo-firstuser' => '页面创建者',
@@ -3753,10 +3749,9 @@ $3
 $5
 
 确认码会在$4过期。',
-'confirmemail_body_set' => '拥有IP地址$1的用户(可能是您)在{{SITENAME}}将账户“$2”的电子邮箱地址设置
-到了这个电子邮件地址。
+'confirmemail_body_set' => '拥有IP地址$1的用户(可能是您)在{{SITENAME}}将账户“$2”的电子邮箱地址设置为这个电子邮件地址。
 
-请确认这个账户是属于您的,并同时重新激活在{{SITENAME}}上的电子邮件功能。请
+请确认这个账户是属于您的,并同时激活在{{SITENAME}}上的电子邮件功能。请
 在浏览器中打开下面的链接:
 
 $3
index 36219e1..613f8b9 100644 (file)
@@ -33,6 +33,7 @@
  * @author Littletung
  * @author Mark85296341
  * @author Oapbtommy
+ * @author Openerror
  * @author Pbdragonwang
  * @author PhiLiP
  * @author Philip
@@ -635,6 +636,7 @@ $1',
 'cannotdelete-title' => '無法刪除頁面「$1」',
 'delete-hook-aborted' => '刪除被勾點中止。
 它沒有提供解釋。',
+'no-null-revision' => '無法創建對"$1"頁面新的空白修訂',
 'badtitle' => '錯誤的標題',
 'badtitletext' => '所請求頁面的標題是無效的、不存在,跨語言或跨wiki連結的標題錯誤。它可能包含一個或更多的不能用於標題的字符。',
 'perfcached' => '下列是快取資料,因此可能不是最新的。最多{{PLURAL:$1|只有1個結果|$1個結果}}可用。',
@@ -665,6 +667,7 @@ $2',
 'customjsprotected' => '你並無權限去編輯此JavaScript頁面,因為他包含了另一位用戶的個人設定。',
 'mycustomcssprotected' => '你沒有編輯這CSS頁面的權限。',
 'mycustomjsprotected' => '你沒有編輯這JavaScript頁面的權限。',
+'myprivateinfoprotected' => '您沒有權限來編輯您的個人信息。',
 'mypreferencesprotected' => '您沒有權限編輯您的設定。',
 'ns-specialprotected' => '特殊頁面是不可以編輯的。',
 'titleprotected' => "這個標題已經被[[User:$1|$1]]保護以防止建立。理由是''$2''。",
@@ -691,6 +694,7 @@ $2',
 'yourname' => '用戶名:',
 'userlogin-yourname' => '用戶名',
 'userlogin-yourname-ph' => '輸入你的用戶名',
+'createacct-another-username-ph' => '輸入帳戶名稱',
 'yourpassword' => '您的密碼:',
 'userlogin-yourpassword' => '密碼',
 'userlogin-yourpassword-ph' => '輸入密碼',
@@ -725,9 +729,11 @@ $2',
 'helplogin-url' => 'Help:登入',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|登入説明]]',
 'createacct-join' => '輸入您的基本資料:',
+'createacct-another-join' => '在下面輸入新帳戶的資訊。',
 'createacct-emailrequired' => '電子郵件',
 'createacct-emailoptional' => '電子郵件(可選)',
 'createacct-email-ph' => '設置電郵地址',
+'createacct-another-email-ph' => '輸入電郵地址',
 'createaccountmail' => '使用一個臨時的隨機密碼,並將它發送到以下指定的電子郵件地址',
 'createacct-realname' => '真實姓名(可選)',
 'createaccountreason' => '理由:',
@@ -736,6 +742,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|頁頁面|頁頁面}}',
@@ -874,6 +881,19 @@ $2
 'changeemail-submit' => '更改電郵',
 'changeemail-cancel' => '取消',
 
+# Special:ResetTokens
+'resettokens' => '重設密鑰',
+'resettokens-text' => '你可以在這裡重設與您的帳戶私隱有關連的密鑰。
+
+如果您意外地與任何一個人分享這些密鑰,或者您的帳戶被入侵、受到破壞,您應該重設密鑰。',
+'resettokens-no-tokens' => '沒有可重設的密鑰。',
+'resettokens-legend' => '重設密鑰。',
+'resettokens-tokens' => '密鑰:',
+'resettokens-token-label' => '$1(現時為$2)',
+'resettokens-watchlist-token' => '監視列表網絡訂閱源密鑰',
+'resettokens-done' => '已重設密鑰。',
+'resettokens-resetbutton' => '重設所選的密鑰',
+
 # Edit page toolbar
 'bold_sample' => '粗體文字',
 'bold_tip' => '粗體文字',
@@ -1268,6 +1288,7 @@ $1",
 'compareselectedversions' => '比較選定的修訂版本',
 'showhideselectedversions' => '顯示/隱藏選定的修訂版本',
 'editundo' => '撤銷',
+'diff-empty' => '(沒有差異)',
 'diff-multi' => '(由{{PLURAL:$2|1名用戶|$2名用戶}}作出的{{PLURAL:$1|一個中途修訂版本|$1個中途修訂版本}}未被顯示)',
 'diff-multi-manyusers' => '(由多於$2名用戶作出的{{PLURAL:$1|一個中途修訂版本|$1個中途修訂版本}} 未被顯示)',
 'difference-missing-revision' => '{{PLURAL:$2|1次修訂|$2 次修訂}}差異($1)不存在。
@@ -1379,6 +1400,8 @@ $1",
 'recentchangesdays-max' => '最多$1{{PLURAL:$1|天}}',
 'recentchangescount' => '預設顯示的編輯數:',
 'prefs-help-recentchangescount' => '這個包括最近更改、頁面歷史以及日誌。',
+'prefs-help-watchlist-token2' => '這是一個秘密的密鑰,用於訂源您的監視列表。
+知道它的人將能夠讀取您的監視列表,所以您不應該分享它。[[Special:ResetTokens|如有需要重設此密鑰,請點擊這裡]]。',
 'savedprefs' => '您的個人偏好設定已經儲存。',
 'timezonelegend' => '時區:',
 'localtime' => '當地時間:',
@@ -1448,6 +1471,7 @@ $1",
 'prefs-displayrc' => '顯示選項',
 'prefs-displaysearchoptions' => '顯示選項',
 'prefs-displaywatchlist' => '顯示選項',
+'prefs-tokenwatchlist' => '密鑰',
 'prefs-diffs' => '差異',
 
 # User preference: email validation using jQuery
@@ -1520,7 +1544,7 @@ $1",
 'right-reupload-shared' => '於本地無視共用媒體檔案庫上的檔案',
 'right-upload_by_url' => '由一個URL上載檔案',
 'right-purge' => '不需要確認之下清除網站快取',
-'right-autoconfirmed' => '編輯半保護頁面',
+'right-autoconfirmed' => '不受基於IP的頻率限制',
 'right-bot' => '視為一個自動程序',
 'right-nominornewtalk' => '小編輯不引發新訊息提示',
 'right-apihighlimits' => '在API查詢中使用更高的上限',
@@ -1540,9 +1564,10 @@ $1",
 'right-hideuser' => '封鎖用戶名,對公眾隱藏',
 'right-ipblock-exempt' => '繞過IP封鎖、自動封鎖以及範圍封鎖',
 'right-proxyunbannable' => '繞過Proxy的自動封鎖',
-'right-unblockself' => '自我解除封鎖',
-'right-protect' => '更改保護等級以及編輯保護頁面',
-'right-editprotected' => '編輯保護頁面(無連鎖保護)',
+'right-unblockself' => '解除封鎖自己',
+'right-protect' => '更改保護等級以及編輯被連鎖保護的頁面',
+'right-editprotected' => '編輯保護層級為「{{int:protect-level-sysop}}」的頁面',
+'right-editsemiprotected' => '編輯保護層級為「{{int:protect-level-autoconfirmed}}」的頁面',
 'right-editinterface' => '編輯用戶界面',
 'right-editusercssjs' => '編輯其他用戶的CSS和JavaScript檔案',
 'right-editusercss' => '編輯其他用戶的CSS檔案',
@@ -1551,6 +1576,8 @@ $1",
 'right-editmyuserjs' => '編輯你自己的用戶JavaScript檔',
 'right-viewmywatchlist' => '查看您的監視列表',
 'right-editmywatchlist' => '編輯您的監視列表。請注意即使沒有這種權利,某些操作仍將添加頁面。',
+'right-viewmyprivateinfo' => '檢視自己的私隱資料(如電郵地址及真實姓名)',
+'right-editmyprivateinfo' => '編輯自己的私隱資料(如電郵地址及真實姓名)',
 'right-editmyoptions' => '編輯您的設定',
 'right-rollback' => '快速復原上位用戶對某一頁面之編輯',
 'right-markbotedits' => '標示復原編輯作機械人編輯',
@@ -2001,6 +2028,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」名字空間中沒有重定向頁面。',
@@ -2041,6 +2075,7 @@ Template:消除歧義',
 'pageswithprop-text' => '此頁列出所有頁面使用了特定的頁面屬性。',
 'pageswithprop-prop' => '屬性名稱:',
 'pageswithprop-submit' => '進入',
+'pageswithprop-prophidden-long' => '長文本屬性值已被隱藏($1千位元組)',
 
 'doubleredirects' => '雙重重定向',
 'doubleredirectstext' => '這一頁列出所有重定向頁面重定向到另一個重定向頁的頁面。每一行都包含到第一和第二個重定向頁面的連結,以及第二個重定向頁面的目標,通常顯示的都會是"真正"的目標頁面,也就是第一個重定向頁面應該指向的頁面。
@@ -2216,7 +2251,7 @@ Template:消除歧義',
 'listgrouprights-summary' => '以下面是一個在這個wiki中定義出來的用戶權限清單,以及它們的存取權。
 更多有關個別權限的細節可以在[[{{MediaWiki:Listgrouprights-helppage}}|這裏]]找到。',
 'listgrouprights-key' => '* <span class="listgrouprights-granted">已授予的權限</span>
-* <span class="listgrouprights-revoked">已撤除的權限</span>',
+* <span class="listgrouprights-revoked">被吊銷的權限</span>',
 'listgrouprights-group' => '群組',
 'listgrouprights-rights' => '權限',
 'listgrouprights-helppage' => 'Help:群組權限',
@@ -2392,7 +2427,7 @@ $UNWATCHURL
 該頁最後的編輯者是[[User:$3|$3]]([[User talk:$3|討論]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])。',
 'editcomment' => "編輯摘要: \"''\$1''\"。",
 'revertpage' => '已恢復由[[Special:Contributions/$2|$2]]([[User talk:$2|對話]])的編輯至[[User:$1|$1]]的最後一個修訂版本',
-'revertpage-nouser' => '恢復由(移除了的用戶名)的編輯到[[User:$1|$1]]的最後一個修訂版本',
+'revertpage-nouser' => '取消由隱藏用戶作出的編輯,並恢復到[[User:$1|$1]]的最後一個修訂版本',
 'rollback-success' => '已恢復$1的編輯;
 更改回$2的最後修訂版本。',
 
@@ -3430,7 +3465,7 @@ Variants for Chinese language
 'exif-compression-6' => 'JPEG(舊)',
 
 'exif-copyrighted-true' => '受版權保護',
-'exif-copyrighted-false' => '公共領域',
+'exif-copyrighted-false' => '版權所屬者不明',
 
 'exif-unknowndate' => '未知的日期',
 
@@ -3690,9 +3725,9 @@ $3
 $5
 
 確認碼會在$4過期。',
-'confirmemail_body_set' => '有人,可能是您,來自IP地址$1,已設置的戶口"$2"這個地址{{SITENAME}}網站名稱電郵地址
+'confirmemail_body_set' => '來自IP地址 $1 的人 (可能是你) 已將帳戶 "$2" 的電郵地址設定為 {{SITENAME}}
 
-為了確認這個帳戶確實屬於自己的,重新確認電子郵件功能於{{SITENAME}}網站名稱,請在瀏覽器中打開這個鏈接:
+請用瀏覽器打開以下的連接,以確認你對這個帳戶的擁有權,並將上述電郵地址跟帳戶建立關聯。
 
 $3
 
@@ -3700,7 +3735,7 @@ $3
 
 $5
 
-這個確認碼會在$4時過期。',
+確認碼會在這個時間過期:$4',
 'confirmemail_invalidated' => '電郵地址確認已取消',
 'invalidateemail' => '取消電郵確認',
 
@@ -3822,6 +3857,7 @@ $5
 'version-license' => '授權',
 'version-poweredby-credits' => "此維基由'''[//www.mediawiki.org/ MediaWiki]'''驅動,版權所有 © 2001-$1 $2。",
 'version-poweredby-others' => '其他',
+'version-poweredby-translators' => 'translatewiki.net 上的翻譯者',
 'version-credits-summary' => '我們感謝以下人士為[[Special:Version|MediaWiki]]作出的貢獻。',
 'version-license-info' => 'MediaWiki為自由軟件;您可依據自由軟件基金會所發表的GNU通用公共授權條款規定,就本程式再為發佈與/或修改;無論您依據的是本授權的第二版或(您自行選擇的)任一日後發行的版本。
 
index 57ff083..d9ed956 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Print serialized output of MediaWiki config vars
+ * Print serialized output of MediaWiki config vars.
  *
  * 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
@@ -20,7 +20,7 @@
  * @file
  * @ingroup Maintenance
  * @author Tim Starling
- * @author Antoine Musso
+ * @author Antoine Musso <hashar@free.fr>
  */
 
 require_once __DIR__ . '/Maintenance.php';
@@ -31,33 +31,123 @@ require_once __DIR__ . '/Maintenance.php';
  * @ingroup Maintenance
  */
 class GetConfiguration extends Maintenance {
+
+       protected $regex = null;
+
+       protected $settings_list = array();
+
+       /**
+        * List of format output internally supported.
+        * Each item MUST be lower case.
+        */
+       protected static $outFormats = array(
+               'json',
+               'php',
+               'serialize',
+               'vardump',
+       );
+
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Get serialized MediaWiki site configuration";
-               $this->addOption( 'settings', 'Space-separated list of wg* variables', true, true );
-               $this->addOption( 'format', 'PHP or JSON', true, true );
-               $this->addOption( 'wiki', 'Wiki ID', true, true );
+               $this->addOption( 'regex', 'regex to filter variables with', false, true );
+               $this->addOption( 'iregex', 'same as --regex but case insensitive', false, true );
+               $this->addOption( 'settings', 'Space-separated list of wg* variables', false, true );
+               $this->addOption( 'format', join( ', ', self::$outFormats ), false, true );
+       }
+
+       protected function validateParamsAndArgs() {
+               $error_out = false;
+
+               # Get the format and make sure it is set to a valid default value
+               $format = strtolower( $this->getOption( 'format', 'PHP' ) );
+
+               $validFormat = in_array( $format, self::$outFormats );
+               if( ! $validFormat ) {
+                       $this->error("--format set to an unrecognized format", 0);
+                       $error_out = true;
+               }
+
+               if( $this->getOption( 'regex' ) && $this->getOption( 'iregex' ) ) {
+                       $this->error("Can only use either --regex or --iregex");
+                       $error_out = true;
+               }
+
+               parent::validateParamsAndArgs();
+
+               if( $error_out ) {
+                       # Force help and quit
+                       $this->maybeHelp( true );
+               }
+       }
+
+       /**
+        * finalSetup() since we need MWException
+        */
+       public function finalSetup() {
+               parent::finalSetup();
+
+               $this->regex = $this->getOption( 'regex' ) ? : $this->getOption( 'iregex' );
+               if( $this->regex ) {
+                       $this->regex = '/' . $this->regex . '/';
+                       if ( $this->hasOption( 'iregex' ) ) {
+                               $this->regex .= 'i';  # case insensitive regex
+                       }
+               }
+
+               if( $this->hasOption( 'settings' ) ) {
+                       $this->settings_list = explode( ' ', $this->getOption( 'settings' ) );
+                       # Values validation
+                       foreach ( $this->settings_list as $name ) {
+                               if ( !preg_match( '/^wg[A-Z]/', $name ) ) {
+                                       throw new MWException( "Variable '$name' does start with 'wg'." );
+                               } elseif ( !isset( $GLOBALS[$name] ) ) {
+                                       throw new MWException( "Variable '$name' is not set." );
+                               } elseif ( !$this->isAllowedVariable( $GLOBALS[$name] ) ) {
+                                       throw new MWException( "Variable '$name' includes non-array, non-scalar, items." );
+                               }
+                       }
+               }
        }
 
        public function execute() {
+               // Settings we will display
                $res = array();
-               foreach ( explode( ' ', $this->getOption( 'settings' ) ) as $name ) {
-                       if ( !preg_match( '/^wg[A-Z]/', $name ) ) {
-                               throw new MWException( "Variable '$name' does start with 'wg'." );
-                       } elseif ( !isset( $GLOBALS[$name] ) ) {
-                               throw new MWException( "Variable '$name' is not set." );
-                       } elseif ( !$this->isAllowedVariable( $GLOBALS[$name] ) ) {
-                               throw new MWException( "Variable '$name' includes non-array, non-scalar, items." );
+
+               # Sane default: dump any wg / wmg variable
+               if( ! $this->regex && ! $this->getOption( 'settings' ) ) {
+                       $this->regex = '/^wm?g/';
+               }
+
+               # Filter out globals based on the regex
+               if ( $this->regex ) {
+                       $res = array();
+                       foreach( $GLOBALS as $name => $value ) {
+                               if ( preg_match( $this->regex, $name ) ) {
+                                       $res[$name] = $value;
+                               }
                        }
-                       $res[$name] = $GLOBALS[$name];
                }
 
+               # Explicitly dumps a list of provided global names
+               if ( $this->settings_list ) {
+                       foreach( $this->settings_list as $name ) {
+                               $res[$name] = $GLOBALS[$name];
+                       }
+               }
+
+               ksort( $res );
+
                $out = null;
-               switch ( $this->getOption( 'format' ) ) {
-                       case 'PHP':
+               switch ( strtolower( $this->getOption( 'format' ) ) ) {
+                       case 'serialize':
+                       case 'php':
                                $out = serialize( $res );
                                break;
-                       case 'JSON':
+                       case 'vardump':
+                               $out = $this->formatVarDump( $res );
+                               break;
+                       case 'json':
                                $out = FormatJson::encode( $res );
                                break;
                        default:
@@ -67,7 +157,22 @@ class GetConfiguration extends Maintenance {
                        throw new MWException( "Failed to serialize the requested settings." );
                }
 
-               $this->output( $out . "\n" );
+               if( $out ) {
+                       $this->output( $out . "\n" );
+               }
+       }
+
+       protected function formatVarDump( $res ) {
+               $ret = '';
+               foreach ( $res as $key => $value ) {
+                       ob_start();  # intercept var_dump() output
+                       print "\${$key} = ";
+                       var_dump( $value );
+                       # grab var_dump() output and discard it from the output buffer
+                       $ret .= trim( ob_get_clean() ) . ";\n";
+               }
+
+               return trim( $ret, "\n" );
        }
 
        private function isAllowedVariable( $value ) {
index 187e16d..0cdc069 100644 (file)
@@ -479,6 +479,10 @@ $wgOptionalMessages = array(
        'pageinfo-redirects-value',
        'created', // @deprecated. Remove in MediaWiki 1.23.
        'changed', // @deprecated. Remove in MediaWiki 1.23.
+       'limitreport-ppvisitednodes-value',
+       'limitreport-ppgeneratednodes-value',
+       'limitreport-expansiondepth-value',
+       'limitreport-expensivefunctioncount-value',
 );
 
 /** Exif messages, which may be set as optional in several checks, but are generally mandatory */
index aa9fa9e..5a42091 100644 (file)
@@ -564,6 +564,7 @@ $wgMessageStructure = array(
                'loginlanguagelabel',
                'loginlanguagelinks',
                'suspicious-userlogout',
+               'createacct-another-realname-tip',
        ),
        'mail' => array(
                'pear-mail-error',
@@ -3954,6 +3955,25 @@ $wgMessageStructure = array(
        'rotation' => array(
                'rotate-comment',
        ),
+       'limitreport' => array(
+               'limitreport-title',
+               'limitreport-cputime',
+               'limitreport-cputime-value',
+               'limitreport-walltime',
+               'limitreport-walltime-value',
+               'limitreport-ppvisitednodes',
+               'limitreport-ppvisitednodes-value',
+               'limitreport-ppgeneratednodes',
+               'limitreport-ppgeneratednodes-value',
+               'limitreport-postexpandincludesize',
+               'limitreport-postexpandincludesize-value',
+               'limitreport-templateargumentsize',
+               'limitreport-templateargumentsize-value',
+               'limitreport-expansiondepth',
+               'limitreport-expansiondepth-value',
+               'limitreport-expensivefunctioncount',
+               'limitreport-expensivefunctioncount-value',
+       ),
 );
 
 /** Comments for each block */
@@ -4198,4 +4218,5 @@ Variants for Chinese language",
        'duration'              => 'Durations',
        'cachedspecial'         => 'SpecialCachedPage',
        'rotation'              => 'Image rotation',
+       'limitreport'           => 'Limit report',
 );
index 9dac031..52f0462 100644 (file)
@@ -73,7 +73,6 @@ class RunJobs extends Maintenance {
                $startTime = time();
                $type = $this->getOption( 'type', false );
                $wgTitle = Title::newFromText( 'RunJobs.php' );
-               $dbw = wfGetDB( DB_MASTER );
                $jobsRun = 0; // counter
 
                $group = JobQueueGroup::singleton();
@@ -93,9 +92,11 @@ class RunJobs extends Maintenance {
                                ++$jobsRun;
                                $this->runJobsLog( $job->toString() . " STARTING" );
 
+                               // Set timer to stop the job if too much CPU time is used
+                               set_time_limit( $maxTime ?: 0 );
                                // Run the job...
-                               $t = microtime( true );
                                wfProfileIn( __METHOD__ . '-' . get_class( $job ) );
+                               $t = microtime( true );
                                try {
                                        $status = $job->run();
                                        $error = $job->getLastError();
@@ -104,8 +105,10 @@ class RunJobs extends Maintenance {
                                        $error = get_class( $e ) . ': ' . $e->getMessage();
                                        $e->report(); // write error to STDERR and the log
                                }
-                               wfProfileOut( __METHOD__ . '-' . get_class( $job ) );
                                $timeMs = intval( ( microtime( true ) - $t ) * 1000 );
+                               wfProfileOut( __METHOD__ . '-' . get_class( $job ) );
+                               // Disable the timer
+                               set_time_limit( 0 );
 
                                // Mark the job as done on success or when the job cannot be retried
                                if ( $status !== false || !$job->allowRetries() ) {
@@ -135,10 +138,35 @@ class RunJobs extends Maintenance {
                                if ( $jobsRun > 0 && ( $jobsRun % 100 ) == 0 ) {
                                        $group->waitForBackups();
                                }
+
+                               // Bail if near-OOM instead of in a job
+                               $this->assertMemoryOK();
                        }
                } while ( $job ); // stop when there are no jobs
        }
 
+       /**
+        * Make sure that this script is not too close to the memory usage limit
+        * @throws MWException
+        */
+       private function assertMemoryOK() {
+               static $maxBytes = null;
+               if ( $maxBytes === null ) {
+                       $m = array();
+                       if ( preg_match( '!^(\d+)(k|m|g|)$!i', ini_get( 'memory_limit' ), $m ) ) {
+                               list( , $num, $unit ) = $m;
+                               $conv = array( 'g' => 1024*1024*1024, 'm' => 1024*1024, 'k' => 1024, '' => 1 );
+                               $maxBytes = $num * $conv[strtolower( $unit )];
+                       } else {
+                               $maxBytes = 0;
+                       }
+               }
+               $usedBytes = memory_get_usage();
+               if ( $maxBytes && $usedBytes >= .95*$maxBytes ) {
+                       throw new MWException( "Detected excessive memory usage ($usedBytes/$maxBytes)." );
+               }
+       }
+
        /**
         * Log the job message
         * @param $msg String The message to log
index 6352843..1b0e33c 100644 (file)
@@ -851,6 +851,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(
@@ -1080,6 +1083,8 @@ return array(
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
                'dependencies' => array(
+                       'mediawiki.api',
+                       'mediawiki.Title',
                        'mediawiki.legacy.wikibits',
                        'mediawiki.util',
                ),
index 5ca0b12..597aea1 100644 (file)
 
                        // Attributes for accessibility. This isn't necessary when the toggler is already
                        // an <a> or a <button> etc., but it doesn't hurt either, and it's consistent.
-                       $toggleLink.prop( 'tabIndex', 0 ).attr( 'role', 'button' );
+                       $toggleLink.prop( 'tabIndex', 0 );
 
                        // Initial state
                        if ( options.collapsed || $collapsible.hasClass( 'mw-collapsed' ) ) {
index 115a49a..b71ef83 100644 (file)
                                        .addClass( table.config.cssHeader )
                                        .prop( 'tabIndex', 0 )
                                        .attr( {
-                                               role: 'button',
+                                               role: 'columnheader button',
                                                title: msg[1]
                                        } );
                        }
                                        // 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>
index 89f54c4..1af4a7a 100644 (file)
@@ -9,3 +9,9 @@
        margin-bottom: 1em;
        margin-left: 2.5em;
 }
+
+/* Show/hide animation is incorrect if the table has a margin set. Extra
+ * "table.wikitable" is needed in the selector for CSS specificity. */
+table.wikitable.preview-limit-report {
+       margin: 0;
+}
index 0fb5912..7ae51ab 100644 (file)
@@ -12,6 +12,11 @@ jQuery( document ).ready( function ( $ ) {
                        $list: $( '.hiddencats ul' ),
                        $toggler: $( '.mw-hiddenCategoriesExplanation' ),
                        cookieName: 'hidden-categories-list'
+               },
+               {
+                       $list: $( '.preview-limit-report-wrapper' ),
+                       $toggler: $( '.mw-limitReportExplanation' ),
+                       cookieName: 'preview-limit-report'
                }
        ];
 
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 );
index 7bdfca5..c6c9063 100644 (file)
@@ -55,6 +55,14 @@ p, pre, .mw-code, td, th, li, dd, dt {
 
 textarea {
        overflow: auto;
+       width: 100%;
+}
+
+#editform textarea {
+       display: block;
+       -moz-box-sizing: border-box;
+       -webkit-box-sizing: border-box;
+       box-sizing: border-box;
 }
 
 #footer {
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 4246e82..2c2203c 100644 (file)
@@ -96,7 +96,7 @@ window.wgUploadWarningObj = {
        'timeoutID': false,
 
        'keypress': function () {
-               if ( !ajaxUploadDestCheck || !sajax_init_object() ) return;
+               if ( !ajaxUploadDestCheck ) return;
 
                // Find file to upload
                var destFile = document.getElementById('wpDestFile');
@@ -121,7 +121,7 @@ window.wgUploadWarningObj = {
        },
 
        'checkNow': function (fname) {
-               if ( !ajaxUploadDestCheck || !sajax_init_object() ) return;
+               if ( !ajaxUploadDestCheck ) return;
                if ( this.timeoutID ) {
                        window.clearTimeout( this.timeoutID );
                }
@@ -130,25 +130,29 @@ window.wgUploadWarningObj = {
        },
 
        'timeout' : function() {
-               if ( !ajaxUploadDestCheck || !sajax_init_object() ) return;
+               if ( !ajaxUploadDestCheck || this.nameToCheck === '' ) return;
                injectSpinner( document.getElementById( 'wpDestFile' ), 'destcheck' );
 
-               // Get variables into local scope so that they will be preserved for the
-               // anonymous callback. fileName is copied so that multiple overlapping
-               // ajax requests can be supported.
-               var obj = this;
-               var fileName = this.nameToCheck;
-               sajax_do_call( 'SpecialUpload::ajaxGetExistsWarning', [this.nameToCheck],
-                       function (result) {
-                               obj.processResult(result, fileName)
+               var uploadWarningObj = this;
+               ( new mw.Api ).get( {
+                       action: 'query',
+                       titles: ( new mw.Title( this.nameToCheck, mw.config.get( 'wgNamespaceIds' ).file ) ).getPrefixedText(),
+                       prop: 'imageinfo',
+                       iiprop: 'uploadwarning',
+                       indexpageids: '',
+               } ).done( function ( result ) {
+                       var result = '';
+                       if ( result.query ) {
+                               result = result.query.pages[result.query.pageids[0]].imageinfo[0];
                        }
-               );
+                       uploadWarningObj.processResult( result, uploadWarningObj.nameToCheck );
+               } );
        },
 
-       'processResult' : function (result, fileName) {
+       'processResult' : function ( result, fileName ) {
                removeSpinner( 'destcheck' );
-               this.setWarning(result.responseText);
-               this.responseCache[fileName] = result.responseText;
+               this.setWarning( result.html );
+               this.responseCache[fileName] = result.html;
        },
 
        'setWarning' : function (warning) {
@@ -159,7 +163,7 @@ window.wgUploadWarningObj = {
 
                // Set a value in the form indicating that the warning is acknowledged and
                // doesn't need to be redisplayed post-upload
-               if ( warning == '' || warning == '&nbsp;' ) {
+               if ( warning == '' ) {
                        ackElt[0].value = '';
                } else {
                        ackElt[0].value = '1';
@@ -279,18 +283,15 @@ window.wgUploadLicenseObj = {
                var title = document.getElementById('wpDestFile').value;
                if ( !title ) title = 'File:Sample.jpg';
 
-               var url = mw.util.wikiScript( 'api' )
-                       + '?action=parse&text={{' + encodeURIComponent( license ) + '}}'
-                       + '&title=' + encodeURIComponent( title )
-                       + '&prop=text&pst&format=json';
-
-               var req = sajax_init_object();
-               req.onreadystatechange = function() {
-                       if ( req.readyState == 4 && req.status == 200 )
-                               wgUploadLicenseObj.processResult( eval( '(' + req.responseText + ')' ), license );
-               };
-               req.open( 'GET', url, true );
-               req.send( '' );
+               ( new mw.Api ).get( {
+                       action: 'parse',
+                       text: '{{' + license + '}}',
+                       title: title,
+                       prop: 'text',
+                       pst: ''
+               } ).done( function ( result ) {
+                       wgUploadLicenseObj.processResult( result, license );
+               } );
        },
 
        'processResult' : function( result, license ) {
index 92c03cd..e7c36db 100644 (file)
@@ -1440,7 +1440,7 @@ class ParserTest {
        }
 
        static function getFakeTimestamp( &$parser, &$ts ) {
-               $ts = 123;
+               $ts = 123; //parsed as '1970-01-01T00:02:03Z'
                return true;
        }
 }
index a9e5dee..91fabb7 100644 (file)
@@ -139,6 +139,12 @@ A?b
 Weirdo titles!
 !! endarticle
 
+!!article
+Template:Bullet
+!!text
+* Bar
+!!endarticle
+
 ###
 ### Basic tests
 ###
@@ -190,7 +196,11 @@ a
 b
 ----
 a
-<!--foo--><!--More than 1 comment disables stripping of this line!-->
+<!--foo--><!--More than 1 comment, still stripped-->
+b
+----
+a
+ <!--foo--> <!----> <!-- bar --> 
 b
 ----
 a
@@ -222,7 +232,11 @@ b
 </p>
 <hr />
 <p>a
-</p><p>b
+b
+</p>
+<hr />
+<p>a
+b
 </p>
 <hr />
 <p>a
@@ -282,7 +296,7 @@ a
 b
 ----
 a
- <!--foo--><!--More than 1 comment disables stripping of this line!-->
+ <!--foo--><!--More than 1 comment doesn't disable stripping of this line!-->
 b
 ----
 a
@@ -305,7 +319,7 @@ b
 </p>
 <hr />
 <p>a
-</p><p>b
+b
 </p>
 <hr />
 <p>a
@@ -866,11 +880,11 @@ Non-html5 tags should be accepted
 !! end
 
 !! test
-<wbr> isn't (yet) valid wikitext (bug 52468)
+<wbr> is valid wikitext (bug 52468)
 !! input
 <wbr>
 !! result
-<p>&lt;wbr&gt;
+<p><wbr />
 </p>
 !! end
 
@@ -1338,6 +1352,8 @@ Regression with preformatted in <center>
 
 !! end
 
+# Expected output in the following test is not really expected (there should be
+# <pre> in the output) -- it's only testing for well-formedness.
 !! test
 Bug 6200: Preformatted in <blockquote>
 !! input
@@ -1346,53 +1362,7 @@ Bug 6200: Preformatted in <blockquote>
 </blockquote>
 !! result
 <blockquote>
-<pre>Blah
-</pre>
-</blockquote>
-
-!! end
-
-!! test
-Bug 51086: Double newlines in blockquotes should be turned into paragraphs
-!! input
-<blockquote>
-Foo
-
-Bar
-</blockquote>
-!! result
-<blockquote>
-<p>Foo
-</p><p>Bar
-</p>
-</blockquote>
-
-!! end
-
-!! test
-Bug 15491: <ins>/<del> in blockquote
-!! input
-<blockquote>
-Foo <del>bar</del> <ins>baz</ins> quux
-</blockquote>
-!! result
-<blockquote>
-<p>Foo <del>bar</del> <ins>baz</ins> quux
-</p>
-</blockquote>
-
-!! end
-
-# Note that the p-wrapping is newline sensitive, which could be
-# considered a bug: tidy will wrap only the 'Foo' in the example
-# below in a <p> tag. (see comment 23-25 of bug #6200)
-!! test
-Bug 15491: <ins>/<del> in blockquote (2)
-!! input
-<blockquote>Foo <del>bar</del> <ins>baz</ins> quux
-</blockquote>
-!! result
-<blockquote>Foo <del>bar</del> <ins>baz</ins> quux
+ Blah
 </blockquote>
 
 !! end
@@ -1786,6 +1756,20 @@ c
 </pre>
 !!end
 
+!!test
+1d. Indent-Pre and Comments
+(Pre-handler currently cannot distinguish between comment/ws order and normalizes them to [comment,ws] order)
+!!input
+<!--a--> a
+
+ <!--b-->b
+!!result
+<pre>a
+</pre>
+<pre>b
+</pre>
+!!end
+
 !!test
 2a. Indent-Pre and tables
 !!input
@@ -1893,8 +1877,7 @@ c
 </pre>
 </center>
 <blockquote>
-<pre>foo
-</pre>
+ foo
 </blockquote>
 <table><tr><td>
 <pre>foo
@@ -1939,6 +1922,52 @@ b
 </pre>
 !! end
 
+!! test
+6. Pre-blocks should extend across lines with leading WS even when there is no wrappable content
+!! input
+ a
+ <!-- continue -->
+ b
+
+ c
+d
+!! result
+<pre>a
+
+b
+</pre>
+<pre>c
+
+</pre>
+<p>d
+</p>
+!! end
+
+!! test
+7a. Indent-pre and category links
+!! options
+parsoid=wt2html,wt2wt
+!! input
+ [[Category:foo]] <!-- No pre-wrapping -->
+{{echo| [[Category:foo]]}} <!-- No pre-wrapping -->
+!! result
+  <span typeof="mw:Transclusion"> </span> 
+!! end
+
+!! test
+7b. Indent-pre and category links
+!! options
+parsoid=wt2html,wt2wt
+!! input
+ [[Category:foo]] a
+ [[Category:foo]] {{echo|b}}
+!! result
+<pre> a <span typeof="mw:Transclusion">b</span>
+</pre>
+!! end
+
 ###
 ### HTML-pre (some to spec PHP parser behavior and some Parsoid-RT-centric)
 ###
@@ -4919,6 +4948,46 @@ parsoid
 <link rel="mw:PageProp/redirect" href="./Main_Page">
 !! end
 
+!! test
+Optional colon in #REDIRECT
+!! options
+# the colon is archaic syntax.  we support it for wt2html, but we
+# don't care that it roundtrips back to the modern syntax.
+parsoid=wt2html,html2html
+!! input
+#REDIRECT:[[Main Page]]
+!! result
+<link rel="mw:PageProp/redirect" href="./Main_Page">
+!! end
+
+!! test
+Whitespace in #REDIRECT with optional colon
+!! options
+# the colon and gratuitous whitespace is archaic syntax.  we support
+# it for wt2html, but we don't care that it roundtrips back to the
+# modern syntax (without extra whitespace)
+parsoid=wt2html,html2html
+!! input
+ #REDIRECT 
+: 
+[[Main Page]]
+!! result
+<link rel="mw:PageProp/redirect" href="./Main_Page">
+!! end
+
+!! test
+Piped link in #REDIRECT
+!! options
+# content after piped link is ignored.  we support this syntax,
+# but don't care that the piped link is lost when we roundtrip this.
+parsoid=wt2html
+!! input
+#REDIRECT [[Main Page|bar]]
+!! result
+<link rel="mw:PageProp/redirect" href="./Main_Page">
+!! end
+
 !! test
 Redirect to category
 !! options
@@ -4929,6 +4998,16 @@ parsoid=wt2html
 <link rel="mw:PageProp/redirect" href="./Category:Foo"><link rel="mw:WikiLink/Category" href="./Category:Foo">
 !! end
 
+!! test
+Redirect to category with URL encoding
+!! options
+parsoid=wt2html
+!! input
+#REDIRECT [[Category%3AFoo]]
+!! result
+<link rel="mw:PageProp/redirect" href="./Category:Foo"><link rel="mw:WikiLink/Category" href="./Category:Foo">
+!! end
+
 !! test
 Redirect to category page
 !! options
@@ -4940,7 +5019,7 @@ parsoid=wt2html,html2html
 !! end
 
 !! test
-Redirect to image page
+Redirect to image page (1)
 !! options
 parsoid
 !! input
@@ -4949,6 +5028,16 @@ parsoid
 <link rel="mw:PageProp/redirect" href="./File:Wiki.png">
 !! end
 
+!! test
+Redirect to image page (2)
+!! options
+parsoid
+!! input
+#REDIRECT [[Image:Wiki.png]]
+!! result
+<link rel="mw:PageProp/redirect" href="./File:Wiki.png">
+!! end
+
 !! test
 Redirect to language
 !! options
@@ -4969,6 +5058,17 @@ parsoid
 <link rel="mw:PageProp/redirect" href="File:Wiki.png">
 !! end
 
+!! test
+Non-English #REDIRECT
+!! options
+parsoid
+language=is
+!! input
+#TILVÍSUN [[Main Page]]
+!! result
+<link rel="mw:PageProp/redirect" href="./Main_Page">
+!! end
+
 ##
 ## XHTML tidiness
 ###
@@ -5424,21 +5524,40 @@ Multiple list tags generated by templates
 !!end
 
 !!test
-Single-comment whitespace lines dont break lists, but multi-comment whitespace lines do
+Single-comment whitespace lines dont break lists, and neither do multi-comment whitespace lines
 !!input
 *a
 <!--This line will NOT split the list-->
 *b
  <!--This line will NOT split the list either-->
 *c
- <!--foo--> <!--This line with more than 1 comment will split the list-->
+ <!--foo--> <!----> <!--This line NOT split the list either--> 
 *d
 !!result
 <ul><li>a
 </li><li>b
 </li><li>c
+</li><li>d
 </li></ul>
-<ul><li>d
+
+!!end
+
+!!test
+Replacing whitespace with tabs still doesn't break the list (gerrit 78327)
+!!input
+*a
+<!--This line will NOT split the list-->       
+*b
+       <!--This line will NOT split the list either-->         
+*c
+       <!--foo--> <!---->      <!--This line NOT split the list
+        either-->       
+*d
+!!result
+<ul><li>a
+</li><li>b
+</li><li>c
+</li><li>d
 </li></ul>
 
 !!end
@@ -5485,6 +5604,18 @@ parsoid
 <ol><li> foo<ol><li> bar</li></ol></li></ol><ul><li> foo<ul><li> bar</li></ul></li></ul><dl><dd> foo<dl><dd> bar</dd></dl></dd></dl>
 !! end
 
+!! test
+Parsoid: Test of whitespace serialization with Templated bullets
+!! options
+parsoid
+!! input
+* {{bullet}}
+!! result
+<ul>
+<li> </li><li about="#mwt1" typeof="mw:Transclusion" data-mw='{"target":{"wt":"bullet","href":"./Template:Bullet"},"params":{},"i":0}'> Bar</li>
+</ul>
+!! end
+
 # ------------------------------------------------------------------------
 # The next set of tests are about Parsoid's ability to handle badly nested
 # tags (parse, minimize scope of fixup, and roundtrip back)
@@ -5561,6 +5692,11 @@ parsoid
 ### Magic Words
 ###
 
+# Note that the current date is hard-coded as
+#   1970-01-01T00:02:03Z (a Thursday)
+# when running parser tests.  The timezone is also fixed to GMT, so
+# local date will be identical to current date.
+
 !! test
 Magic Word: {{CURRENTDAY}}
 !! input
@@ -5606,6 +5742,15 @@ Magic Word: {{CURRENTMONTH}}
 </p>
 !! end
 
+!! test
+Magic Word: {{CURRENTMONTH1}}
+!! input
+{{CURRENTMONTH1}}
+!! result
+<p>1
+</p>
+!! end
+
 !! test
 Magic Word: {{CURRENTMONTHABBREV}}
 !! input
@@ -5627,91 +5772,342 @@ Magic Word: {{CURRENTMONTHNAME}}
 !! test
 Magic Word: {{CURRENTMONTHNAMEGEN}}
 !! input
-{{CURRENTMONTHNAMEGEN}}
+{{CURRENTMONTHNAMEGEN}}
+!! result
+<p>January
+</p>
+!! end
+
+!! test
+Magic Word: {{CURRENTTIME}}
+!! input
+{{CURRENTTIME}}
+!! result
+<p>00:02
+</p>
+!! end
+
+!! test
+Magic Word: {{CURRENTHOUR}}
+!! input
+{{CURRENTHOUR}}
+!! result
+<p>00
+</p>
+!! end
+
+!! test
+Magic Word: {{CURRENTWEEK}} (@bug 4594)
+!! input
+{{CURRENTWEEK}}
+!! result
+<p>1
+</p>
+!! end
+
+!! test
+Magic Word: {{CURRENTYEAR}}
+!! input
+{{CURRENTYEAR}}
+!! result
+<p>1970
+</p>
+!! end
+
+!! test
+Magic Word: {{CURRENTTIMESTAMP}}
+!! input
+{{CURRENTTIMESTAMP}}
+!! result
+<p>19700101000203
+</p>
+!! end
+
+!! test
+Magic Words LOCAL (UTC)
+!! input
+* {{LOCALMONTH}}
+* {{LOCALMONTH1}}
+* {{LOCALMONTHNAME}}
+* {{LOCALMONTHNAMEGEN}}
+* {{LOCALMONTHABBREV}}
+* {{LOCALDAY}}
+* {{LOCALDAY2}}
+* {{LOCALDAYNAME}}
+* {{LOCALYEAR}}
+* {{LOCALTIME}}
+* {{LOCALHOUR}}
+* {{LOCALWEEK}}
+* {{LOCALDOW}}
+* {{LOCALTIMESTAMP}}
+!! result
+<ul><li> 01
+</li><li> 1
+</li><li> January
+</li><li> January
+</li><li> Jan
+</li><li> 1
+</li><li> 01
+</li><li> Thursday
+</li><li> 1970
+</li><li> 00:02
+</li><li> 00
+</li><li> 1
+</li><li> 4
+</li><li> 19700101000203
+</li></ul>
+
+!! end
+
+!! test
+Magic Word: {{FULLPAGENAME}}
+!! options
+title=[[User:Ævar Arnfjörð Bjarmason]]
+!! input
+{{FULLPAGENAME}}
+!! result
+<p>User:Ævar Arnfjörð Bjarmason
+</p>
+!! end
+
+!! test
+Magic Word: {{FULLPAGENAMEE}}
+!! options
+title=[[User:Ævar Arnfjörð Bjarmason]]
+!! input
+{{FULLPAGENAMEE}}
+!! result
+<p>User:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
+</p>
+!! end
+
+!! test
+Magic Word: {{TALKSPACE}}
+!! options
+title=[[User:Ævar Arnfjörð Bjarmason]]
+!! input
+{{TALKSPACE}}
+!! result
+<p>User talk
+</p>
+!! end
+
+!! test
+Magic Word: {{TALKSPACE}}, same namespace
+!! options
+title=[[User talk:Ævar Arnfjörð Bjarmason]]
+!! input
+{{TALKSPACE}}
+!! result
+<p>User talk
+</p>
+!! end
+
+!! test
+Magic Word: {{TALKSPACE}}, main namespace
+!! options
+title=[[Parser Test]]
+!! input
+{{TALKSPACE}}
+!! result
+<p>Talk
+</p>
+!! end
+
+!! test
+Magic Word: {{TALKSPACEE}}
+!! options
+title=[[User:Ævar Arnfjörð Bjarmason]]
+!! input
+{{TALKSPACEE}}
+!! result
+<p>User_talk
+</p>
+!! end
+
+!! test
+Magic Word: {{SUBJECTSPACE}}
+!! options
+title=[[User talk:Ævar Arnfjörð Bjarmason]]
+!! input
+{{SUBJECTSPACE}}
+!! result
+<p>User
+</p>
+!! end
+
+!! test
+Magic Word: {{SUBJECTSPACE}}, same namespace
+!! options
+title=[[User:Ævar Arnfjörð Bjarmason]]
+!! input
+{{SUBJECTSPACE}}
+!! result
+<p>User
+</p>
+!! end
+
+!! test
+Magic Word: {{SUBJECTSPACE}}, main namespace
+!! options
+title=[[Parser Test]]
+!! input
+{{SUBJECTSPACE}}
+!! result
+
+!! end
+
+!! test
+Magic Word: {{SUBJECTSPACEE}}
+!! options
+title=[[User talk:Ævar Arnfjörð Bjarmason]]
+!! input
+{{SUBJECTSPACEE}}
+!! result
+<p>User
+</p>
+!! end
+
+!! test
+Magic Word: {{NAMESPACE}}
+!! options
+title=[[User:Ævar Arnfjörð Bjarmason]]
+!! input
+{{NAMESPACE}}
+!! result
+<p>User
+</p>
+!! end
+
+!! test
+Magic Word: {{NAMESPACEE}}
+!! options
+title=[[User:Ævar Arnfjörð Bjarmason]]
+!! input
+{{NAMESPACEE}}
+!! result
+<p>User
+</p>
+!! end
+
+!! test
+Magic Word: {{NAMESPACENUMBER}}
+!! options
+title=[[User:Ævar Arnfjörð Bjarmason]]
+!! input
+{{NAMESPACENUMBER}}
+!! result
+<p>2
+</p>
+!! end
+
+!! test
+Magic Word: {{SUBPAGENAME}}
+!! options
+title=[[Ævar Arnfjörð Bjarmason/sub ö]] subpage
+!! input
+{{SUBPAGENAME}}
+!! result
+<p>sub ö
+</p>
+!! end
+
+!! test
+Magic Word: {{SUBPAGENAMEE}}
+!! options
+title=[[Ævar Arnfjörð Bjarmason/sub ö]] subpage
+!! input
+{{SUBPAGENAMEE}}
 !! result
-<p>January
+<p>sub_%C3%B6
 </p>
 !! end
 
 !! test
-Magic Word: {{CURRENTTIME}}
+Magic Word: {{ROOTPAGENAME}}
+!! options
+title=[[Ævar Arnfjörð Bjarmason/sub/sub2]] subpage
 !! input
-{{CURRENTTIME}}
+{{ROOTPAGENAME}}
 !! result
-<p>00:02
+<p>Ævar Arnfjörð Bjarmason
 </p>
 !! end
 
 !! test
-Magic Word: {{CURRENTWEEK}} (@bug 4594)
+Magic Word: {{ROOTPAGENAMEE}}
+!! options
+title=[[Ævar Arnfjörð Bjarmason/sub/sub2]] subpage
 !! input
-{{CURRENTWEEK}}
+{{ROOTPAGENAMEE}}
 !! result
-<p>1
+<p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
 </p>
 !! end
 
 !! test
-Magic Word: {{CURRENTYEAR}}
+Magic Word: {{BASEPAGENAME}}
+!! options
+title=[[Ævar Arnfjörð Bjarmason/sub]] subpage
 !! input
-{{CURRENTYEAR}}
+{{BASEPAGENAME}}
 !! result
-<p>1970
+<p>Ævar Arnfjörð Bjarmason
 </p>
 !! end
 
 !! test
-Magic Word: {{FULLPAGENAME}}
+Magic Word: {{BASEPAGENAMEE}}
 !! options
-title=[[User:Ævar Arnfjörð Bjarmason]]
+title=[[Ævar Arnfjörð Bjarmason/sub]] subpage
 !! input
-{{FULLPAGENAME}}
+{{BASEPAGENAMEE}}
 !! result
-<p>User:Ævar Arnfjörð Bjarmason
+<p>%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
 </p>
 !! end
 
 !! test
-Magic Word: {{FULLPAGENAMEE}}
+Magic Word: {{TALKPAGENAME}}
 !! options
 title=[[User:Ævar Arnfjörð Bjarmason]]
 !! input
-{{FULLPAGENAMEE}}
+{{TALKPAGENAME}}
 !! result
-<p>User:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
+<p>User talk:Ævar Arnfjörð Bjarmason
 </p>
 !! end
 
 !! test
-Magic Word: {{NAMESPACE}}
+Magic Word: {{TALKPAGENAMEE}}
 !! options
 title=[[User:Ævar Arnfjörð Bjarmason]]
 !! input
-{{NAMESPACE}}
+{{TALKPAGENAMEE}}
 !! result
-<p>User
+<p>User_talk:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
 </p>
 !! end
 
 !! test
-Magic Word: {{NAMESPACEE}}
+Magic Word: {{SUBJECTPAGENAME}}
 !! options
-title=[[User:Ævar Arnfjörð Bjarmason]]
+title=[[User talk:Ævar Arnfjörð Bjarmason]]
 !! input
-{{NAMESPACEE}}
+{{SUBJECTPAGENAME}}
 !! result
-<p>User
+<p>User:Ævar Arnfjörð Bjarmason
 </p>
 !! end
 
 !! test
-Magic Word: {{NAMESPACENUMBER}}
+Magic Word: {{SUBJECTPAGENAMEE}}
 !! options
-title=[[User:Ævar Arnfjörð Bjarmason]]
+title=[[User talk:Ævar Arnfjörð Bjarmason]]
 !! input
-{{NAMESPACENUMBER}}
+{{SUBJECTPAGENAMEE}}
 !! result
-<p>2
+<p>User:%C3%86var_Arnfj%C3%B6r%C3%B0_Bjarmason
 </p>
 !! end
 
@@ -5797,6 +6193,15 @@ Magic Word: {{SCRIPTPATH}}
 </p>
 !! end
 
+!! test
+Magic Word: {{STYLEPATH}}
+!! input
+{{STYLEPATH}}
+!! result
+<p>/skins
+</p>
+!! end
+
 !! test
 Magic Word: {{SERVER}}
 !! input
@@ -8040,8 +8445,13 @@ Special:Foobar_nonexistent
 ###
 ### Images
 ###
+### For Parsoid-specific tests, see
+#### http://www.mediawiki.org/wiki/Parsoid/MediaWiki_DOM_spec#Images
+
 !! test
-Simple image
+Simple image (php)
+!! options
+php
 !! input
 [[Image:foobar.jpg]]
 !! result
@@ -8050,16 +8460,20 @@ Simple image
 !! end
 
 !! test
-Right-aligned image
+Simple image (parsoid)
+!! options
+parsoid=wt2html
 !! input
-[[Image:foobar.jpg|right]]
+[[Image:foobar.jpg]]
 !! result
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
-
+<p><span class="mw-default-size" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span>
+</p>
 !! end
 
 !! test
-Simple image (using File: namespace, now canonical)
+Simple image (using File: namespace, now canonical) (php)
+!! options
+php
 !! input
 [[File:foobar.jpg]]
 !! result
@@ -8068,38 +8482,108 @@ Simple image (using File: namespace, now canonical)
 !! end
 
 !! test
-Image with caption
+Simple image (using File: namespace, now canonical) (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg]]
+!! result
+<p><span class="mw-default-size" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span>
+</p>
+!! end
+
+!! test
+Right-aligned image (php)
+!! options
+php
+!! input
+[[Image:foobar.jpg|right]]
+!! result
+<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
+
+!! end
+
+!! test
+Right-aligned image (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|right]]
+!! result
+<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></figure>
+!! end
+
+!! test
+Image with caption (php)
+!! options
+php
 !! input
-[[Image:foobar.jpg|right|Caption text]]
+[[File:Foobar.jpg|right|Caption text]]
 !! result
 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
 
 !! end
 
 !! test
-Image with empty attribute
+Image with caption (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|right|Caption text]]
+!! result
+<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption text</figcaption></figure>
+!! end
+
+!! test
+Image with empty attribute (php)
+!! options
+php
 !! input
-[[Image:foobar.jpg|right||Caption text]]
+[[File:Foobar.jpg|right||Caption text]]
 !! result
 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
 
 !! end
 
 !! test
-Image with attributes from template.
+Image with empty attribute (parsoid)
+!! options
+parsoid=wt2html
+!! input
+[[File:Foobar.jpg|right||Caption text]]
+!! result
+<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption text</figcaption></figure>
+!! end
+
+!! test
+Image with attributes from template (php)
+!! options
+php
 !! input
-[[Image:foobar.jpg|{{image_attribs}}]]
+[[File:Foobar.jpg|{{image_attribs}}]]
 !! result
 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption text"><img alt="Caption text" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
 
 !! end
 
 !! test
-Image with link tails
+Image with attributes from template (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|{{image_attribs}}]]
+!! result
+<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption text</figcaption></figure>
+!! end
+
+!! test
+Image with link tails (php)
+!! options
+php
 !! input
-123[[Image:foobar.jpg]]456
-123[[Image:foobar.jpg|right]]456
-123[[Image:foobar.jpg|thumb]]456
+123[[File:Foobar.jpg]]456
+123[[File:Foobar.jpg|right]]456
+123[[File:Foobar.jpg|thumb]]456
 !! result
 <p>123<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>456
 </p>
@@ -8109,20 +8593,48 @@ Image with link tails
 !! end
 
 !! test
-Image with multiple captions -- only last one is accepted
+Image with link tails (parsoid)
+!! options
+parsoid
+!! input
+123[[File:Foobar.jpg]]456
+123[[File:Foobar.jpg|right]]456
+123[[File:Foobar.jpg|thumb]]456
+!! result
+<p>123<span class="mw-default-size" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span>456</p>
+123<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></figure>456
+123<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" height="20" width="180"></a></figure>456
+!! end
+
+!! test
+Image with multiple captions -- only last one is accepted (php)
+!! options
+php
 !! input
-[[Image:foobar.jpg|right|Caption1 - ignored|[[Caption2]] - ignored|Caption3 - accepted]]
+[[File:Foobar.jpg|right|Caption1 - ignored|[[Caption2]] - ignored|Caption3 - accepted]]
 !! result
 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption3 - accepted"><img alt="Caption3 - accepted" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
 
 !! end
 
 !! test
-Image with width attribute at different positions
+Image with multiple captions -- only last one is accepted (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|right|Caption1 - ignored|[[Caption2]] - ignored|Caption3 - accepted]]
+!! result
+<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption3 - accepted</figcaption></figure>
+!! end
+
+!! test
+Image with width attribute at different positions (php)
+!! options
+php
 !! input
-[[Image:foobar.jpg|200px|right|Caption]]
-[[Image:foobar.jpg|right|200px|Caption]]
-[[Image:foobar.jpg|right|Caption|200px]]
+[[File:Foobar.jpg|200px|right|Caption]]
+[[File:Foobar.jpg|right|200px|Caption]]
+[[File:Foobar.jpg|right|Caption|200px]]
 !! result
 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a></div>
 <div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image" title="Caption"><img alt="Caption" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a></div>
@@ -8131,23 +8643,84 @@ Image with width attribute at different positions
 !! end
 
 !! test
-Image with link parameter, wiki target
+Image with width attribute at different positions (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|200px|right|Caption]]
+[[File:Foobar.jpg|right|200px|Caption]]
+[[File:Foobar.jpg|right|Caption|200px]]
+!! result
+<figure class="mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" height="23" width="200"></a><figcaption>Caption</figcaption></figure>
+<figure class="mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" height="23" width="200"></a><figcaption>Caption</figcaption></figure>
+<figure class="mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" height="23" width="200"></a><figcaption>Caption</figcaption></figure>
+!! end
+
+!! test
+Image with link parameter, wiki target (php)
+!! options
+php
 !! input
-[[Image:foobar.jpg|link=Target page]]
+[[File:Foobar.jpg|link=Main Page]]
 !! result
-<p><a href="/wiki/Target_page" title="Target page"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/Main_Page" title="Main Page"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! end
 
 !! test
-Image with link parameter, URL target
+Image with link parameter, wiki target (parsoid)
+!! options
+parsoid
 !! input
-[[Image:foobar.jpg|link=http://example.com/]]
+[[File:Foobar.jpg|link=Main Page]]
+!! result
+<p><span class="mw-default-size" typeof="mw:Image"><a href="Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span></p>
+!! end
+
+!! test
+Image with link parameter, URL target (php)
+!! options
+php
+!! input
+[[File:Foobar.jpg|link=http://example.com/]]
 !! result
 <p><a href="http://example.com/" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! end
 
+# parsoid bug 49293 (part 1)
+!! test
+Image with link parameter, URL target (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|link=http://example.com/]]
+!! result
+<p><span class="mw-default-size" typeof="mw:Image"><a href="http://example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span></p>
+!! end
+
+!! test
+Image with link parameter, protocol-less URL target (php)
+!! options
+php
+!! input
+[[File:Foobar.jpg|link=//example.com/]]
+!! result
+<p><a href="//example.com/" rel="nofollow"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p>
+!! end
+
+# parsoid bug 49293 (part 2)
+!! test
+Image with link parameter, protocol-less URL target (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|link=//example.com/]]
+!! result
+<p><span class="mw-default-size" typeof="mw:Image"><a href="//example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span></p>
+!! end
+
 !! test
 Image with link parameter, wgExternalLinkTarget
 !! input
@@ -8193,32 +8766,68 @@ wgExternalLinkTarget='foobar'
 !! end
 
 !! test
-Image with empty link parameter
+Image with empty link parameter (php)
+!! options
+php
 !! input
-[[Image:foobar.jpg|link=]]
+[[File:Foobar.jpg|link=]]
 !! result
 <p><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" />
 </p>
 !! end
 
 !! test
-Image with link parameter (wiki target) and unnamed parameter
+Image with empty link parameter (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|link=]]
+!! result
+<p><span class="mw-default-size" typeof="mw:Image"><span><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></span></span></p>
+!! end
+
+!! test
+Image with link parameter (wiki target) and unnamed parameter (php)
+!! options
+php
 !! input
-[[Image:foobar.jpg|link=Target page|Title]]
+[[File:Foobar.jpg|link=Main Page|Title]]
 !! result
-<p><a href="/wiki/Target_page" title="Title"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a href="/wiki/Main_Page" title="Title"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! end
 
 !! test
-Image with link parameter (URL target) and unnamed parameter
+Image with link parameter (wiki target) and unnamed parameter (parsoid)
+!! options
+parsoid
 !! input
-[[Image:foobar.jpg|link=http://example.com/|Title]]
+[[File:Foobar.jpg|link=Main Page|Title]]
+!! result
+<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"Title"}'><a href="Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span></p>
+!! end
+
+!! test
+Image with link parameter (URL target) and unnamed parameter (php)
+!! options
+php
+!! input
+[[File:Foobar.jpg|link=http://example.com/|Title]]
 !! result
 <p><a href="http://example.com/" title="Title" rel="nofollow"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! end
 
+!! test
+Image with link parameter (URL target) and unnamed parameter (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|link=http://example.com/|Title]]
+!! result
+<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"Title"}'><a href="http://example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a></span></p>
+!! end
+
 !! test
 Thumbnail image with link parameter
 !! options
@@ -8597,54 +9206,8 @@ wgEnableUploads=0
 # http://www.mediawiki.org/wiki/Parsoid/MediaWiki_DOM_spec#Images
 # Currently imperfect due to a flaw in the Parsoid testrunner
 # Work in progress
-
-!! test
-Parsoid-specific image handling - simple image
-!! options
-parsoid
-!! input
-[[Image:Foobar.jpg]]
-!! result
-<p>
-<span class="mw-default-size" typeof="mw:Image">
-<a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg" height="220" width="1941">
-</a>
-</span>
-</p>
-!! end
-
-!! test
-Parsoid-specific image handling - simple image without link
-!! options
-parsoid
-!! input
-[[Image:Foobar.jpg|link=]]
-!! result
-<p>
-<span class="mw-default-size" typeof="mw:Image">
-<span>
-<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg" height="220" width="1941">
-</span>
-</span>
-</p>
-!! end
-
-!! test
-Parsoid-specific image handling - simple image with specific link
-!! options
-parsoid
-!! input
-[[Image:Foobar.jpg|link=Main Page]]
-!! result
-<p>
-<span class="mw-default-size" typeof="mw:Image">
-<a href="Main_Page">
-<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg" height="220" width="1941">
-</a>
-</span>
-</p>
-!! end
+# THESE TESTS SHOULD BE MOVED UP and merged with the php-specific
+# image tests.
 
 !! test
 Parsoid-specific image handling - simple image with size and middle alignment
@@ -8656,7 +9219,7 @@ parsoid
 <p>
 <span class="mw-valign-middle" typeof="mw:Image">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50">
+<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50">
 </a>
 </span>
 </p>
@@ -8672,7 +9235,7 @@ parsoid
 <p>
 <span class="mw-valign-baseline" typeof="mw:Image" data-mw="{&quot;caption&quot;:&quot;caption&quot;}">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/89px-Foobar.jpg" height="10" width="89">
+<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/89px-Foobar.jpg" height="10" width="89">
 </a>
 </span>
 </p>
@@ -8688,7 +9251,7 @@ parsoid
 <p>
 <span class="mw-image-border" typeof="mw:Image" data-mw="{&quot;caption&quot;:&quot;caption&quot;}">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50">
+<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50">
 </a>
 </span>
 </p>
@@ -8703,7 +9266,7 @@ parsoid
 !! result
 <figure class="mw-default-size mw-halign-left mw-valign-baseline" typeof="mw:Image/Thumb">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/180px-Foobar.jpg" height="21" width="180" />
+<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" height="21" width="180" />
 </a>
 <figcaption>caption content</figcaption>
 </figure>
@@ -8718,7 +9281,7 @@ parsoid
 !! result
 <figure class="mw-halign-right mw-valign-middle" typeof="mw:Image/Thumb">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50" />
+<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50" />
 </a>
 <figcaption>caption</figcaption>
 </figure>
@@ -8733,7 +9296,7 @@ parsoid
 !! result
 <figure typeof="mw:Image/Frame">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" />
+<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" />
 </a>
 <figcaption>caption</figcaption>
 </figure>
@@ -8748,7 +9311,7 @@ parsoid
 !! result
 <figure class="mw-halign-left mw-valign-baseline" typeof="mw:Image/Frame">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" />
+<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" />
 </a>
 <figcaption>caption</figcaption>
 </figure>
@@ -8764,7 +9327,7 @@ parsoid
 <p>
 <span class="mw-image-border" typeof="mw:Image/Frameless" data-mw="{&quot;caption&quot;:&quot;caption&quot;}">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" />
+<img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" />
 </a>
 </p>
 !! end
@@ -8779,7 +9342,7 @@ parsoid
 #<p>
 #<span typeof="mw:Image">
 #<a class="mw-default-size" href="Image:Foobar.jpg">
-#<img alt="Foobar.jpg" class="mw-default-size" src="http://upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg" height="220" width="1941">
+#<img alt="Foobar.jpg" class="mw-default-size" src="http://example.com/images/3/3a/Foobar.jpg" height="220" width="1941">
 #</a>
 #<span>abc</span>
 #</span>
@@ -12136,21 +12699,26 @@ Special:Search page linking.
 
 !! test
 Say the magic word
+!! options
+title=[[Parser test]]
 !! input
 * {{PAGENAME}}
+* {{PAGENAMEE}}
+* {{FULLPAGENAME}}
+* {{FULLPAGENAMEE}}
 * {{BASEPAGENAME}}
+* {{BASEPAGENAMEE}}
 * {{SUBPAGENAME}}
 * {{SUBPAGENAMEE}}
 * {{ROOTPAGENAME}}
 * {{ROOTPAGENAMEE}}
-* {{BASEPAGENAME}}
-* {{BASEPAGENAMEE}}
 * {{TALKPAGENAME}}
 * {{TALKPAGENAMEE}}
 * {{SUBJECTPAGENAME}}
 * {{SUBJECTPAGENAMEE}}
 * {{NAMESPACEE}}
 * {{NAMESPACE}}
+* {{NAMESPACENUMBER}}
 * {{TALKSPACE}}
 * {{TALKSPACEE}}
 * {{SUBJECTSPACE}}
@@ -12158,7 +12726,9 @@ Say the magic word
 * {{Dynamic|{{NUMBEROFUSERS}}|{{NUMBEROFPAGES}}|{{CURRENTVERSION}}|{{CONTENTLANGUAGE}}|{{DIRECTIONMARK}}|{{CURRENTTIMESTAMP}}|{{NUMBEROFARTICLES}}}}
 !! result
 <ul><li> Parser test
+</li><li> Parser_test
 </li><li> Parser test
+</li><li> Parser_test
 </li><li> Parser test
 </li><li> Parser_test
 </li><li> Parser test
@@ -12171,6 +12741,7 @@ Say the magic word
 </li><li> Parser_test
 </li><li> 
 </li><li> 
+</li><li> 0
 </li><li> Talk
 </li><li> Talk
 </li><li> 
@@ -12195,40 +12766,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>
@@ -12247,17 +12818,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>
@@ -12292,7 +12863,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">
@@ -12321,9 +12892,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
@@ -12331,7 +12902,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>
@@ -12366,14 +12937,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>
@@ -12927,6 +13498,9 @@ __NOEDITSECTION__
 </p>
 !! end
 
+# Expected output in the following test is not necessarily expected (there
+# should probably be <p> tags inside the <blockquote> in the output) -- it's
+# only testing for well-formedness.
 !! test
 Bug 6200: blockquotes and paragraph formatting
 !! input
@@ -12939,8 +13513,7 @@ bar
  baz
 !! result
 <blockquote>
-<p>foo
-</p>
+foo
 </blockquote>
 <p>bar
 </p>
@@ -13386,12 +13959,6 @@ language=sr
 </p>
 !!end
 
-!!article
-Template:Bullet
-!!text
-* Bar
-!!endarticle
-
 !! test
 Bug 529: Uncovered bullet
 !! input
@@ -13626,6 +14193,8 @@ B</strong>
 # Bug 6200: <blockquote> should behave like <div> with respect to line breaks
 !! test
 Bug 6200: paragraphs inside blockquotes (no extra line breaks)
+!! options
+disabled
 !! input
 <blockquote>Line one
 
@@ -13638,6 +14207,8 @@ Line two</blockquote>
 
 !! test
 Bug 6200: paragraphs inside blockquotes (extra line break on open)
+!! options
+disabled
 !! input
 <blockquote>
 Line one
@@ -13653,6 +14224,8 @@ Line two</blockquote>
 
 !! test
 Bug 6200: paragraphs inside blockquotes (extra line break on close)
+!! options
+disabled
 !! input
 <blockquote>Line one
 
@@ -13668,6 +14241,8 @@ Line two
 
 !! test
 Bug 6200: paragraphs inside blockquotes (extra line break on open and close)
+!! options
+disabled
 !! input
 <blockquote>
 Line one
@@ -14681,7 +15256,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">
@@ -14700,7 +15275,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">
@@ -14719,7 +15294,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">
@@ -14738,7 +15313,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">
@@ -15064,7 +15639,7 @@ parsoid
 
 <references />
 !!result
-<span about="#mwt1" class="reference" data-mw="{&quot;name&quot;:&quot;ref&quot;,&quot;body&quot;:{&quot;html&quot;:&quot;foo &amp;lt;ref&amp;gt;bar&amp;lt;/ref&amp;gt; baz&quot;},&quot;attrs&quot;:{}}" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span>
+<p><span about="#mwt1" class="reference" data-mw="{&quot;name&quot;:&quot;ref&quot;,&quot;body&quot;:{&quot;html&quot;:&quot;foo &amp;lt;ref&amp;gt;bar&amp;lt;/ref&amp;gt; baz&quot;},&quot;attrs&quot;:{}}" id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
 
 <ol class="references" typeof="mw:Extension/references" about="#mwt2" data-mw="{&quot;name&quot;:&quot;references&quot;,&quot;attrs&quot;:{}}">
 <li about="#cite_note-1" id="cite_note-1" data-parsoid="{}"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo &lt;ref&gt;bar&lt;/ref&gt; baz</li></ol>
@@ -16569,6 +17144,10 @@ 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: Add space after bullets
 !! options
index 4cdf020..181a913 100644 (file)
@@ -31,7 +31,7 @@ class SiteConfigurationTest extends MediaWikiTestCase {
 
                $this->mConf = new SiteConfiguration;
 
-               $this->mConf->suffixes = array( 'wiki' );
+               $this->mConf->suffixes = array( 'wikipedia' => 'wiki' );
                $this->mConf->wikis = array( 'enwiki', 'dewiki', 'frwiki' );
                $this->mConf->settings = array(
                        'simple' => array(
index fb13118..7e9c9d4 100644 (file)
@@ -209,11 +209,11 @@ class PreprocessorTest extends MediaWikiTestCase {
                        array( "== h ==  <!--c1-->  <!--c2--><!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </h></root>" ),
                        array( "== h ==  <!--c1--><!--c2-->  <!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment>  </h></root>" ),
                        array( "== h ==  <!--c1-->  <!--c2-->  <!--c3-->  ", "<root><h level=\"2\" i=\"1\">== h ==  <comment>&lt;!--c1--&gt;</comment>  <comment>&lt;!--c2--&gt;</comment>  <comment>&lt;!--c3--&gt;</comment>  </h></root>" ),
+                       array( "== h ==<!--c1-->        <!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>     <comment>&lt;!--c2--&gt;</comment></h></root>" ),
+                       array( "== h ==         <!--c1-->       <!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==       <comment>&lt;!--c1--&gt;</comment>      <comment>&lt;!--c2--&gt;</comment></h></root>" ),
+                       array( "== h ==<!--c1-->        <!--c2-->       ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment>      <comment>&lt;!--c2--&gt;</comment>      </h></root>" ),
 
                        /* These are not working: */
-                       array( "== h ==<!--c1-->        <!--c2-->", "<root>== h ==<comment>&lt;!--c1--&gt;</comment>    <comment>&lt;!--c2--&gt;</comment></root>" ),
-                       array( "== h ==         <!--c1-->       <!--c2-->", "<root>== h ==      <comment>&lt;!--c1--&gt;</comment>      <comment>&lt;!--c2--&gt;</comment></root>" ),
-                       array( "== h ==<!--c1-->        <!--c2-->       ", "<root>== h ==<comment>&lt;!--c1--&gt;</comment>     <comment>&lt;!--c2--&gt;</comment>      </root>" ),
                        array( "== h == x <!--c1--><!--c2--><!--c3-->  ", "<root>== h == x <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </root>" ),
                        array( "== h ==<!--c1--> x <!--c2--><!--c3-->  ", "<root>== h ==<comment>&lt;!--c1--&gt;</comment> x <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment>  </root>" ),
                        array( "== h ==<!--c1--><!--c2--><!--c3--> x ", "<root>== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment> x </root>" ),
index 4a0c9fb..b9826a7 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -62,9 +62,15 @@ function wfThumbHandle404() {
 
        # Set action base paths so that WebRequest::getPathInfo()
        # recognizes the "X" as the 'title' in ../thumb_handler.php/X urls.
-       $wgArticlePath = false; # Don't let a "/*" article path clober our action path
+       # Note: If Custom per-extension repo paths are set, this may break.
+       $repo = RepoGroup::singleton()->getLocalRepo();
+       $oldArticlePath = $wgArticlePath;
+       $wgArticlePath = $repo->getZoneUrl( 'thumb' ) . '/$1';
 
        $matches = WebRequest::getPathInfo();
+
+       $wgArticlePath = $oldArticlePath;
+
        if ( !isset( $matches['title'] ) ) {
                wfThumbError( 404, 'Could not determine the name of the requested thumbnail.' );
                return;