Merge "Implement static public Parser::getExternalLinkRel"
authorNikerabbit <niklas.laxstrom@gmail.com>
Fri, 30 Nov 2012 20:29:54 +0000 (20:29 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 30 Nov 2012 20:29:54 +0000 (20:29 +0000)
380 files changed:
RELEASE-NOTES-1.20
RELEASE-NOTES-1.21
UPGRADE
docs/hooks.txt
includes/Article.php
includes/AutoLoader.php
includes/BacklinkCache.php [deleted file]
includes/Category.php
includes/DefaultSettings.php
includes/EditPage.php
includes/Exception.php
includes/GlobalFunctions.php
includes/Html.php
includes/HttpFunctions.php
includes/Linker.php
includes/LinksUpdate.php
includes/Message.php
includes/OutputPage.php
includes/Preferences.php
includes/RecentChange.php
includes/Sanitizer.php
includes/SkinTemplate.php
includes/SpecialPageFactory.php
includes/Status.php
includes/Title.php
includes/User.php
includes/UserMailer.php
includes/api/ApiEditPage.php
includes/api/ApiFormatYaml.php
includes/api/ApiMain.php
includes/api/ApiOptions.php
includes/api/ApiParse.php
includes/api/ApiQueryBase.php
includes/api/ApiQueryBlocks.php
includes/api/ApiQueryImageInfo.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryProtectedTitles.php
includes/api/ApiQueryRevisions.php
includes/api/ApiWatch.php
includes/cache/BacklinkCache.php [new file with mode: 0644]
includes/cache/HTMLCacheUpdate.php
includes/cache/ProcessCacheLRU.php
includes/content/ContentHandler.php
includes/content/CssContentHandler.php
includes/content/JavaScriptContentHandler.php
includes/content/TextContentHandler.php
includes/content/WikitextContentHandler.php
includes/dao/DBAccessBase.php [new file with mode: 0644]
includes/db/Database.php
includes/db/DatabaseMysql.php
includes/db/LoadBalancer.php
includes/db/ORMTable.php
includes/diff/DairikiDiff.php
includes/diff/DifferenceEngine.php
includes/filebackend/FSFile.php
includes/filebackend/FSFileBackend.php
includes/filebackend/FileBackend.php
includes/filebackend/FileBackendStore.php
includes/filebackend/FileOp.php
includes/filebackend/SwiftFileBackend.php
includes/filebackend/lockmanager/LSLockManager.php
includes/filerepo/FileRepo.php
includes/filerepo/file/File.php
includes/filerepo/file/ForeignDBFile.php
includes/filerepo/file/LocalFile.php
includes/filerepo/file/UnregisteredLocalFile.php
includes/installer/DatabaseUpdater.php
includes/installer/Installer.i18n.php
includes/installer/MysqlUpdater.php
includes/installer/SqliteUpdater.php
includes/job/Job.php
includes/job/JobQueue.php
includes/job/JobQueueDB.php
includes/job/JobQueueGroup.php
includes/job/jobs/DuplicateJob.php [new file with mode: 0644]
includes/job/jobs/EnotifNotifyJob.php
includes/job/jobs/HTMLCacheUpdateJob.php
includes/job/jobs/NullJob.php
includes/job/jobs/RefreshLinksJob.php
includes/json/FormatJson.php
includes/media/MediaHandler.php
includes/media/SVG.php
includes/mobile/DeviceDetection.php [deleted file]
includes/objectcache/MemcachedClient.php
includes/objectcache/ObjectCache.php
includes/parser/Parser.php
includes/parser/Tidy.php
includes/resourceloader/ResourceLoaderModule.php
includes/resourceloader/ResourceLoaderUserCSSPrefsModule.php
includes/resourceloader/ResourceLoaderUserTokensModule.php
includes/search/SearchEngine.php
includes/site/MediaWikiSite.php
includes/specials/SpecialBlock.php
includes/specials/SpecialChangeEmail.php
includes/specials/SpecialContributions.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialUncategorizedcategories.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialVersion.php
includes/tidy.conf
includes/upload/UploadBase.php
includes/upload/UploadFromChunks.php
includes/upload/UploadStash.php
languages/Language.php
languages/Names.php
languages/classes/LanguageGan.php
languages/classes/LanguageIu.php
languages/classes/LanguageKk.php
languages/classes/LanguageKu.php
languages/classes/LanguageShi.php
languages/classes/LanguageSr.php
languages/classes/LanguageZh.php
languages/messages/MessagesAeb.php
languages/messages/MessagesAf.php
languages/messages/MessagesAm.php
languages/messages/MessagesAn.php
languages/messages/MessagesAr.php
languages/messages/MessagesArc.php
languages/messages/MessagesArz.php
languages/messages/MessagesAs.php
languages/messages/MessagesAst.php
languages/messages/MessagesAvk.php
languages/messages/MessagesAz.php
languages/messages/MessagesAzb.php [new file with mode: 0644]
languages/messages/MessagesBa.php
languages/messages/MessagesBar.php
languages/messages/MessagesBcc.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBjn.php
languages/messages/MessagesBn.php
languages/messages/MessagesBo.php
languages/messages/MessagesBqi.php
languages/messages/MessagesBr.php
languages/messages/MessagesBs.php
languages/messages/MessagesCa.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCrh_cyrl.php
languages/messages/MessagesCrh_latn.php
languages/messages/MessagesCs.php
languages/messages/MessagesCu.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesEl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesEu.php
languages/messages/MessagesExt.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrp.php
languages/messages/MessagesFy.php
languages/messages/MessagesGa.php
languages/messages/MessagesGan_hans.php
languages/messages/MessagesGan_hant.php
languages/messages/MessagesGl.php
languages/messages/MessagesGlk.php
languages/messages/MessagesGrc.php
languages/messages/MessagesGsw.php
languages/messages/MessagesGu.php
languages/messages/MessagesGv.php
languages/messages/MessagesHak.php
languages/messages/MessagesHe.php
languages/messages/MessagesHi.php
languages/messages/MessagesHif_latn.php
languages/messages/MessagesHr.php
languages/messages/MessagesHsb.php
languages/messages/MessagesHu.php
languages/messages/MessagesHy.php
languages/messages/MessagesIa.php
languages/messages/MessagesId.php
languages/messages/MessagesIlo.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJv.php
languages/messages/MessagesKa.php
languages/messages/MessagesKab.php
languages/messages/MessagesKhw.php
languages/messages/MessagesKiu.php
languages/messages/MessagesKk_arab.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKk_latn.php
languages/messages/MessagesKm.php
languages/messages/MessagesKn.php
languages/messages/MessagesKo.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKsh.php
languages/messages/MessagesKu_arab.php
languages/messages/MessagesKu_latn.php
languages/messages/MessagesKw.php
languages/messages/MessagesLa.php
languages/messages/MessagesLb.php
languages/messages/MessagesLez.php
languages/messages/MessagesLi.php
languages/messages/MessagesLmo.php
languages/messages/MessagesLt.php
languages/messages/MessagesLus.php
languages/messages/MessagesLv.php
languages/messages/MessagesLzh.php
languages/messages/MessagesMai.php
languages/messages/MessagesMdf.php
languages/messages/MessagesMg.php
languages/messages/MessagesMin.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMn.php
languages/messages/MessagesMr.php
languages/messages/MessagesMs.php
languages/messages/MessagesMt.php
languages/messages/MessagesMzn.php
languages/messages/MessagesNah.php
languages/messages/MessagesNb.php
languages/messages/MessagesNds.php
languages/messages/MessagesNds_nl.php
languages/messages/MessagesNe.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesOc.php
languages/messages/MessagesOr.php
languages/messages/MessagesOs.php
languages/messages/MessagesPa.php
languages/messages/MessagesPam.php
languages/messages/MessagesPcd.php
languages/messages/MessagesPfl.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPnb.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesQu.php
languages/messages/MessagesRm.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesRue.php
languages/messages/MessagesSa.php
languages/messages/MessagesSah.php
languages/messages/MessagesScn.php
languages/messages/MessagesSdc.php
languages/messages/MessagesSe.php
languages/messages/MessagesSgs.php
languages/messages/MessagesSh.php
languages/messages/MessagesSi.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSli.php
languages/messages/MessagesSq.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesStq.php
languages/messages/MessagesSu.php
languages/messages/MessagesSv.php
languages/messages/MessagesSw.php
languages/messages/MessagesSzl.php
languages/messages/MessagesTa.php
languages/messages/MessagesTe.php
languages/messages/MessagesTg_cyrl.php
languages/messages/MessagesTh.php
languages/messages/MessagesTk.php
languages/messages/MessagesTl.php
languages/messages/MessagesTly.php
languages/messages/MessagesTr.php
languages/messages/MessagesTt_cyrl.php
languages/messages/MessagesTt_latn.php
languages/messages/MessagesTyv.php
languages/messages/MessagesUg_arab.php
languages/messages/MessagesUk.php
languages/messages/MessagesUz.php
languages/messages/MessagesVec.php
languages/messages/MessagesVep.php
languages/messages/MessagesVi.php
languages/messages/MessagesVo.php
languages/messages/MessagesVot.php
languages/messages/MessagesVro.php
languages/messages/MessagesWa.php
languages/messages/MessagesWar.php
languages/messages/MessagesXal.php
languages/messages/MessagesYi.php
languages/messages/MessagesYo.php
languages/messages/MessagesYue.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
languages/utils/CLDRPluralRuleEvaluator.php
maintenance/Maintenance.php
maintenance/archives/patch-job_attempts.sql [new file with mode: 0644]
maintenance/cleanupPreferences.php [changed mode: 0755->0644]
maintenance/language/StatOutputs.php
maintenance/language/messages.inc
maintenance/locking/LockServerDaemon.php
maintenance/nextJobDB.php
maintenance/populateFilearchiveSha1.php
maintenance/populateRevisionLength.php
maintenance/populateRevisionSha1.php
maintenance/postgres/archives/patch-ipb_address_unique.sql [deleted file]
maintenance/refreshFileHeaders.php [new file with mode: 0644]
maintenance/renderDump.php
maintenance/sqlite/archives/patch-profiling.sql [new file with mode: 0644]
maintenance/tables.sql
maintenance/update.php
maintenance/updateSpecialPages.php
profileinfo.php
resources/Resources.php
resources/jquery/jquery.byteLimit.js
resources/jquery/jquery.js
resources/jquery/jquery.tablesorter.js
resources/mediawiki.api/mediawiki.api.watch.js
resources/mediawiki.language/languages/bs.js
resources/mediawiki.language/languages/dsb.js
resources/mediawiki.language/languages/fi.js
resources/mediawiki.language/languages/ga.js
resources/mediawiki.language/languages/he.js
resources/mediawiki.language/languages/hsb.js
resources/mediawiki.language/languages/hu.js
resources/mediawiki.language/languages/hy.js
resources/mediawiki.language/languages/la.js
resources/mediawiki.language/languages/os.js
resources/mediawiki.language/languages/ru.js
resources/mediawiki.language/languages/sl.js
resources/mediawiki.language/languages/uk.js
resources/mediawiki.page/mediawiki.page.patrol.ajax.js [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.preferences.js
skins/CologneBlue.php
skins/Modern.php
skins/MonoBook.php
skins/Standard.php
skins/Vector.php
skins/cologneblue/screen.css
skins/common/shared.css
skins/modern/main.css
skins/monobook/main.css
skins/simple/main.css
skins/vector/screen.css
skins/vector/vector.js
tests/parser/parserTest.inc
tests/parser/parserTests.txt
tests/parserTests.php
tests/phpunit/MediaWikiPHPUnitCommand.php
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/EditPageTest.php
tests/phpunit/includes/GlobalFunctions/GlobalTest.php
tests/phpunit/includes/HtmlTest.php
tests/phpunit/includes/LanguageConverterTest.php
tests/phpunit/includes/LinkerTest.php [new file with mode: 0644]
tests/phpunit/includes/RecentChangeTest.php
tests/phpunit/includes/RevisionTest.php
tests/phpunit/includes/SampleTest.php
tests/phpunit/includes/SanitizerTest.php
tests/phpunit/includes/TimeAdjustTest.php
tests/phpunit/includes/TitleMethodsTest.php
tests/phpunit/includes/TitlePermissionTest.php
tests/phpunit/includes/WikiPageTest.php
tests/phpunit/includes/api/ApiEditPageTest.php
tests/phpunit/includes/api/ApiOptionsTest.php
tests/phpunit/includes/api/ApiQueryRevisionsTest.php [new file with mode: 0644]
tests/phpunit/includes/content/ContentHandlerTest.php
tests/phpunit/includes/content/TextContentTest.php
tests/phpunit/includes/content/WikitextContentHandlerTest.php
tests/phpunit/includes/db/TestORMRowTest.php
tests/phpunit/includes/filebackend/FileBackendTest.php
tests/phpunit/includes/mobile/DeviceDetectionTest.php [deleted file]
tests/phpunit/includes/parser/MagicVariableTest.php
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/includes/search/SearchEngineTest.php
tests/phpunit/languages/LanguageTest.php
tests/qunit/suites/resources/jquery/jquery.byteLimit.test.js
tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.test.js
thumb.php

index 1a92968..ea8ed6d 100644 (file)
@@ -230,8 +230,6 @@ milestone in Bugzilla.
 * (bug 36812) Special:ActiveUsers "Hide bots" should hide users from any group
   having the "bot" user right, instead of just the default "bot" user group.
 * (bug 35082) mw.util.addPortletLink incorrectly adds link to mutiple <ul> tags.
-* (bug 36495) Sanitizer::fixDeprecatedAttributes should convert "align"
-  attribute to margin or float instead of text-align (for non-table-cells).
 * (bug 36991) jquery.tablesorter should extract date sort format from date
   string instead of global config. Dates like "April 1 2012" and "1 April 2012"
   now sort correctly regardless of the content language's DefaultDateFormat.
@@ -284,6 +282,7 @@ milestone in Bugzilla.
 * (bug 40500) ResourceLoader should not ignore media-type for urls in debug mode.
 * (bug 40660) ResourceLoaderWikiModule should not convert "&nbsp;" to a space
   for pages from the MediaWiki-namespace.
+* (bug 40329) (bug 40632) Removed CleanupPresentationalAttributes feature.
 
 === API changes in 1.20 ===
 * (bug 34316) Add ability to retrieve maximum upload size from MediaWiki API.
index 654525e..3eee8c8 100644 (file)
@@ -1,4 +1,3 @@
-= MediaWiki release notes =
 
 Security reminder: MediaWiki does not require PHP's register_globals. If you
 have it on, turn it '''off''' if you can.
@@ -16,25 +15,43 @@ production.
   instead.
 
 === New features in 1.21 ===
+* (bug 38110) Schema changes (adding or dropping tables, indicies and
+  fields) can be now be done separately from from other changes that
+  update.php makes.  This is useful in environments that use database
+  permissions to restrict schema changes but allow the DB user that
+  MediaWiki normally runs as to perform other changes that update.php
+  makes.  Schema changes can be run seperately.  See the file UPGRADE
+  for more information.
 * (bug 34876) jquery.makeCollapsible has been improved in performance.
-* Added ContentHandler facility to allow extensions to support other content than wikitext.
-  See docs/contenthandler.txt for details.
+* Added ContentHandler facility to allow extensions to support other content
+  than wikitext. See docs/contenthandler.txt for details.
 * New feature was developed for showing high-DPI thumbnails for high-DPI mobile
   and desktop displays (configurable with $wgResponsiveImages).
 * Added new backend to represent and store information about sites and site
   specific configuration.
+* jQuery upgraded from 1.8.2 to 1.8.3.
 * jQuery UI upgraded from 1.8.23 to 1.8.24.
 * Added separate fa_sha1 field to filearchive table. This allows sha1
   searches with the api in miser mode for deleted files.
 * Add initial and programmatic sorting for tablesorter.
 * Add the event "sortEnd.tablesorter", triggered after sorting has completed.
-* The Job system was refactored to allow for different backing stores for queues
-  as well as cross-wiki access to queues, among other things. The schema for the
-  DB queue was changed to support better concurrency and reduce deadlock errors.
+* The Job system was refactored to allow for different backing stores for
+  queues as well as cross-wiki access to queues, among other things. The schema
+  for the DB queue was changed to support better concurrency and reduce
+  deadlock errors.
 * Added ApiQueryORM class to facilitate creation of query API modules based on
   tables that have a corresponding ORMTable class.
 * (bug 40876) Icon for PSD (Adobe Photoshop) file types.
 * (bug 40641) Implemented Special:Version/Credits with a list of contributors.
+* (bug 7851) Implemented one-click AJAX patrolling.
+* The <data>, <time>, <meta>, and <link> elements are allowed within WikiText
+  for use with Microdata.
+* The HTML5 <mark> tag has been whitelisted.
+* Added ParserCloned hook for when the Parser object is cloned.
+* Added AlternateEditPreview hook to allow extensions to replace the page
+  preview from the edit page.
+* Added EditPage::showStandardInputs:options hook to allow extensions to add
+  new fields to the "editOptions" area of the edit form.
 
 === Bug fixes in 1.21 ===
 * (bug 40353) SpecialDoubleRedirect should support interwiki redirects.
@@ -44,42 +61,72 @@ production.
   recentchanges table.
 * (bug 32951) Do not register internal externals with absolute protocol,
   when server has relative protocol.
-* (bug 39005) When purging proxies listed in $wgSquidServers using HTTP PURGE 
-  method requests, we now send a Host header by default, for Varnish 
-  compatibility. This also works with Squid in reverse-proxy mode. If you wish 
-  to support Squid configured in forward-proxy mode, set 
+* (bug 39005) When purging proxies listed in $wgSquidServers using HTTP PURGE
+  method requests, we now send a Host header by default, for Varnish
+  compatibility. This also works with Squid in reverse-proxy mode. If you wish
+  to support Squid configured in forward-proxy mode, set
   $wgSquidPurgeUseHostHeader to false.
-* (bug 37020) sql.php with readline eats semicolon
+* (bug 37020) sql.php with readline eats semicolon.
 * (bug 11748) Properly handle optionally-closed HTML tags when Tidy is
   disabled, and don't wrap HTML-syntax definition lists in paragraphs.
 * (bug 41409) Diffs while editing an old revision should again diff against the
   current revision.
 * (bug 41494) Honor $wgLogExceptionBacktrace when logging non-API exceptions
   caught during API execution.
-* (bug 37963) Fixed loading process for user options
+* (bug 37963) Fixed loading process for user options.
 * (bug 26995) Update filename field on Upload page after having sanitized it.
-* (bug 41793) Contribution links to users with 0 edits on Special:ListUsers didn't
-  show up red.
-* (bug 41899) A PHP notice no longer occurs when using the "rvcontinue" API parameter.
+* (bug 41793) Contribution links to users with 0 edits on Special:ListUsers
+  didn't show up red.
+* (bug 41899) A PHP notice no longer occurs when using the "rvcontinue" API
+  parameter.
 * (bug 42036) Account creation emails now contain canonical (not
   protocol-relative) URLs.
 * (bug 41990) Fix regression: API edit with redirect=true and lacking
   starttimestamp and basetimestamp should not cause an edit conflict.
-* (Bug 41706) preload to convert content as needed.
+* (bug 41706) EditPage: Preloaded page should be converted if possible and
+  needed.
+* (bug 41886) Rowspans are no longer exploded by tablesorter until the table is
+  actually sorted.
+* (bug 2865)  User interface HTML elements don't use lang attribute
+  (completed the fix by adding the lang attribute to firstHeading).
+* (bug 42173) Removed namespace prefixes on Special:UncategorizedCategories.
+* (bug 36053) Log in "returnto" feature forgets query parameters if no
+  title parameter was specified.
+* (bug 42410) API action=edit now returns correct timestamp for the new edit.
+* (bug 14901) Email notification mistakes log action for new page creation.
+  Enotif no longer sends "page has been created" notifications for some log
+  actions. The following events now have a correct message: page creation,
+  deletion, move, restore (undeletion), change (edit).
+* (bug 457) In the sidebar of Vector, CologneBlue, Monobook, and Monobook-based
+  skins, the heading levels have been changed from (variously per skin)
+  <h4>, <h5> or <h6> to only <h3>s, with a <h2> hidden heading above them.
+  If you are styling or scripting the headings in a custom way, this change
+  will require updates to your site's CSS or JS.
 
 === API changes in 1.21 ===
-* prop=revisions can now report the contentmodel and contentformat, see docs/contenthandler.txt
-* action=edit and action=parse now support contentmodel and contentformat parameters to control the interpretation of
-  page content; See docs/contenthandler.txt for details.
+* prop=revisions can now report the contentmodel and contentformat.
+  See docs/contenthandler.txt.
+* action=edit and action=parse now support contentmodel and contentformat
+  parameters to control the interpretation of page content.
+  See docs/contenthandler.txt for details.
 * (bug 35693) ApiQueryImageInfo now suppresses errors when unserializing metadata.
-* (bug 40111) Disable minor edit for page/section creation by API
-* (bug 41042) Revert change to action=parse&page=... behavior when the page does not exist.
+* (bug 40111) Disable minor edit for page/section creation by API.
+* (bug 41042) Revert change to action=parse&page=... behavior when the page
+  does not exist.
 
 === Languages updated in 1.21 ===
 
 MediaWiki supports over 350 languages. Many localisations are updated
 regularly. Below only new and removed languages are listed, as well as
 changes to languages because of Bugzilla reports.
+
+* South Azerbaijani (azb) added.
+* (bug 30040) Autonym for nds-nl is now 'Nedersaksies' (was 'Nedersaksisch').
+* (bug 34977) Now formatted numbers in Spanish use space as separator
+  for thousands, as mandated by the Real Academia Española.
+* (bug 35031) Kurdish formatted numbers now use period and comma
+  as separators for thousands and decimals respectively.
+
 === Other changes in 1.21 ===
 
 == Compatibility ==
diff --git a/UPGRADE b/UPGRADE
index 46f5e65..3e3cb13 100644 (file)
--- a/UPGRADE
+++ b/UPGRADE
@@ -51,6 +51,11 @@ deleted file archives, and any custom skins.
 
 === Perform the database upgrade ===
 
+As of 1.21, it is possible to separate schema changes (i.e. adding,
+dropping, or changing tables, fields, or indices) from all other
+database changes (e.g. populating fields).  If you need this
+capability, see "From the command line" below.
+
 ==== From the web ====
 
 If you browse to the web-based installation script (usually at
@@ -64,6 +69,12 @@ update.php script to check and update the schema. This will insert missing
 tables, update existing tables, and move data around as needed. In most cases,
 this is successful and nothing further needs to be done.
 
+If you need to separate out the schema changes so they can be run
+by someone with more privileges, then you can use the --schema option
+to produce a text file with the necessary commands.  You can use
+--schema, --noschema, $wgAllowSchemaUpdates as well as proper database
+permissions to enforce this separation.
+
 === Check configuration settings ===
 
 The names of configuration variables, and their default values and purposes,
index 67b4580..0c8780d 100644 (file)
@@ -310,6 +310,15 @@ before showing the edit form ( EditPage::edit() ). This is triggered
 on &action=edit.
 $EditPage: the EditPage object
 
+'AlternateEditPreview': before generating the preview of the page when editing
+( EditPage::getPreviewText() ).
+$EditPage: the EditPage object
+&$content: the Content object for the text field from the edit page
+&$previewHTML: Text to be placed into the page for the preview
+&$parserOutput: the ParserOutput object for the preview
+return false and set $previewHTML and $parserOutput to output custom page
+preview HTML.
+
 'AlternateUserMailer': Called before mail is sent so that mail could
 be logged (or something else) instead of using PEAR or PHP's mail().
 Return false to skip the regular method of sending mail.  Return a
@@ -578,6 +587,11 @@ $create: Whether or not the restoration caused the page to be created
 (i.e. it didn't exist before)
 $comment: The comment associated with the undeletion.
 
+'ArticleUndeleteLogEntry': When a log entry is generated but not yet saved.
+$pageArchive: the PageArchive object
+&$logEntry: ManualLogEntry object
+$user: User who is performing the log action
+
 'ArticleUpdateBeforeRedirect': After a page is updated (usually on save),
 before the user is redirected back to the page
 &$article: the article
@@ -748,7 +762,7 @@ $title: the Title in question
 &$model: the model name. Use with CONTENT_MODEL_XXX constants.
 
 'ContentHandlerForModelID': Called when a ContentHandler is requested for a given
-cointent model name, but no entry for that model exists in $wgContentHandlers.
+content model name, but no entry for that model exists in $wgContentHandlers.
 $modeName: the requested content model name
 &$handler: set this to a ContentHandler object, if desired.
 
@@ -881,6 +895,13 @@ yourself. Alternatively, modifying $error and returning true will cause the
 contents of $error to be echoed at the top of the edit form as wikitext.
 Return true without altering $error to allow the edit to proceed.
 
+'EditPage::showStandardInputs:options': allows injection of form fields into
+the editOptions area
+$editor: EditPage instance (object)
+$out: an OutputPage instance to write to
+&$tabindex: HTML tabindex of the last edit check/button
+return value is ignored (should always be true)
+
 'EditPageBeforeConflictDiff': allows modifying the EditPage object and output
 when there's an edit conflict.  Return false to halt normal diff output; in
 this case you're responsible for computing and outputting the entire "conflict"
@@ -1629,6 +1650,9 @@ $text: actual text
 'ParserClearState': called at the end of Parser::clearState()
 $parser: Parser object being cleared
 
+'ParserCloned': called when the parser is cloned
+$parser: Newly-cloned Parser object
+
 'ParserFirstCallInit': called when the parser initialises for the first time
 &$parser: Parser object being cleared
 
@@ -1801,6 +1825,12 @@ $text : Current text being indexed
 $allSearchTerms : Array of the search terms in all content languages
 &$titleResult : Outparam; the value to return. A Title object or null.
 
+'SearchAfterNoDirectMatch': If there was no match for the exact result. This
+runs before lettercase variants are attempted, whereas 'SearchGetNearMatch'
+runs after.
+$term : Search term string
+&$title : Outparam; set to $title object and return false for a match
+
 'SearchGetNearMatch': An extra chance for exact-title-matches in "go" searches if nothing was found
 $term : Search term string
 &$title : Outparam; set to $title object and return false for a match
@@ -2101,6 +2131,10 @@ $form: The SpecialUpload object
 use this to change the tables headers
 $extTypes: associative array of extensions types
 
+'SpecialVersionVersionUrl': called when building the URL for Special:Version
+$wgVersion: Current $wgVersion for you to use
+&$versionUrl: Raw url to link to (eg: release notes)
+
 'SpecialWatchlistFilters': called after building form options at Watchlist
 $special: the special page object
 &$filters: associative array of filter definitions. The keys are the HTML name/URL parameters.
@@ -2198,6 +2232,9 @@ $page: WikiPage object to be removed
 $user: user that watched
 $page: WikiPage object that was watched
 
+'UpdateUserMailerFormattedPageStatus': before notification email gets sent
+$formattedPageStatus: list of valid page states
+
 'UploadForm:initial': before the upload form is generated
 $form: UploadForm object
 You might set the member-variables $uploadFormTextTop and
index 169dd03..5a887b6 100644 (file)
@@ -515,7 +515,7 @@ class Article extends Page {
         * page of the given title.
         */
        public function view() {
-               global $wgParser, $wgUseFileCache, $wgUseETag, $wgDebugToolbar;
+               global $wgUseFileCache, $wgUseETag, $wgDebugToolbar;
 
                wfProfileIn( __METHOD__ );
 
@@ -1044,6 +1044,8 @@ class Article extends Page {
         * If patrol is possible, output a patrol UI box. This is called from the
         * footer section of ordinary page views. If patrol is not possible or not
         * desired, does nothing.
+        * Side effect: When the patrol link is build, this method will call
+        * OutputPage::preventClickjacking() and load mediawiki.page.patrol.ajax.
         */
        public function showPatrolFooter() {
                $request = $this->getContext()->getRequest();
@@ -1056,7 +1058,9 @@ class Article extends Page {
                }
 
                $token = $user->getEditToken( $rcid );
+
                $outputPage->preventClickjacking();
+               $outputPage->addModules( 'mediawiki.page.patrol.ajax' );
 
                $link = Linker::linkKnown(
                        $this->getTitle(),
index a49d901..3d0c27a 100644 (file)
@@ -38,7 +38,6 @@ $wgAutoloadLocalClasses = array(
        'AuthPlugin' => 'includes/AuthPlugin.php',
        'AuthPluginUser' => 'includes/AuthPlugin.php',
        'Autopromote' => 'includes/Autopromote.php',
-       'BacklinkCache' => 'includes/BacklinkCache.php',
        'BadTitleError' => 'includes/Exception.php',
        'BaseTemplate' => 'includes/SkinTemplate.php',
        'Block' => 'includes/Block.php',
@@ -71,8 +70,6 @@ $wgAutoloadLocalClasses = array(
        'DeferredUpdates' => 'includes/DeferredUpdates.php',
        'DeprecatedGlobal' => 'includes/DeprecatedGlobal.php',
        'DerivativeRequest' => 'includes/WebRequest.php',
-       'DeviceDetection' => 'includes/mobile/DeviceDetection.php',
-       'DeviceProperties' => 'includes/mobile/DeviceDetection.php',
        'DiffHistoryBlob' => 'includes/HistoryBlob.php',
        'DoubleReplacer' => 'includes/StringUtils.php',
        'DummyLinker' => 'includes/Linker.php',
@@ -138,8 +135,6 @@ $wgAutoloadLocalClasses = array(
        'HttpRequest' => 'includes/HttpFunctions.old.php',
        'ICacheHelper' => 'includes/CacheHelper.php',
        'IcuCollation' => 'includes/Collation.php',
-       'IDeviceProperties' => 'includes/mobile/DeviceDetection.php',
-       'IDeviceDetector' => 'includes/mobile/DeviceDetection.php',
        'IdentityCollation' => 'includes/Collation.php',
        'ImageGallery' => 'includes/ImageGallery.php',
        'ImageHistoryList' => 'includes/ImagePage.php',
@@ -429,6 +424,7 @@ $wgAutoloadLocalClasses = array(
        'UsageException' => 'includes/api/ApiMain.php',
 
        # includes/cache
+       'BacklinkCache' => 'includes/cache/BacklinkCache.php',
        'CacheDependency' => 'includes/cache/CacheDependency.php',
        'ConstantDependency' => 'includes/cache/CacheDependency.php',
        'DependencyWrapper' => 'includes/cache/CacheDependency.php',
@@ -456,6 +452,7 @@ $wgAutoloadLocalClasses = array(
 
        # includes/dao
        'IDBAccessObject' => 'includes/dao/IDBAccessObject.php',
+       'DBAccessBase' => 'includes/dao/DBAccessBase.php',
 
        # includes/db
        'Blob' => 'includes/db/DatabaseUtility.php',
@@ -580,6 +577,7 @@ $wgAutoloadLocalClasses = array(
        'MoveFileOp' => 'includes/filebackend/FileOp.php',
        'DeleteFileOp' => 'includes/filebackend/FileOp.php',
        'CreateFileOp' => 'includes/filebackend/FileOp.php',
+       'DescribeFileOp' => 'includes/filebackend/FileOp.php',
        'NullFileOp' => 'includes/filebackend/FileOp.php',
 
        # includes/filerepo
@@ -653,6 +651,7 @@ $wgAutoloadLocalClasses = array(
 
        # includes/job/jobs
        'DoubleRedirectJob' => 'includes/job/jobs/DoubleRedirectJob.php',
+       'DuplicateJob' => 'includes/job/jobs/DuplicateJob.php',
        'EmaillingJob' => 'includes/job/jobs/EmaillingJob.php',
        'EnotifNotifyJob' => 'includes/job/jobs/EnotifNotifyJob.php',
        'HTMLCacheUpdateJob' => 'includes/job/jobs/HTMLCacheUpdateJob.php',
diff --git a/includes/BacklinkCache.php b/includes/BacklinkCache.php
deleted file mode 100644 (file)
index ba8691b..0000000
+++ /dev/null
@@ -1,423 +0,0 @@
-<?php
-/**
- * Class for fetching backlink lists, approximate backlink counts and
- * partitions.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @author Tim Starling
- * @copyright © 2009, Tim Starling, Domas Mituzas
- * @copyright © 2010, Max Sem
- * @copyright © 2011, Antoine Musso
- */
-
-/**
- * Class for fetching backlink lists, approximate backlink counts and
- * partitions. This is a shared cache.
- *
- * Instances of this class should typically be fetched with the method
- * $title->getBacklinkCache().
- *
- * Ideally you should only get your backlinks from here when you think
- * there is some advantage in caching them. Otherwise it's just a waste
- * of memory.
- *
- * Introduced by r47317
- *
- * @internal documentation reviewed on 18 Mar 2011 by hashar
- */
-class BacklinkCache {
-       /** @var ProcessCacheLRU */
-       protected static $cache;
-
-       /**
-        * Multi dimensions array representing batches. Keys are:
-        *  > (string) links table name
-        *    > 'numRows' : Number of rows for this link table
-        *    > 'batches' : array( $start, $end )
-        *
-        * @see BacklinkCache::partitionResult()
-        *
-        * Cleared with BacklinkCache::clear()
-        */
-       protected $partitionCache = array();
-
-       /**
-        * Contains the whole links from a database result.
-        * This is raw data that will be partitioned in $partitionCache
-        *
-        * Initialized with BacklinkCache::getLinks()
-        * Cleared with BacklinkCache::clear()
-        */
-       protected $fullResultCache = array();
-
-       /**
-        * Local copy of a database object.
-        *
-        * Accessor: BacklinkCache::getDB()
-        * Mutator : BacklinkCache::setDB()
-        * Cleared with BacklinkCache::clear()
-        */
-       protected $db;
-
-       /**
-        * Local copy of a Title object
-        */
-       protected $title;
-
-       const CACHE_EXPIRY = 3600;
-
-       /**
-        * Create a new BacklinkCache
-        *
-        * @param Title $title : Title object to create a backlink cache for
-        */
-       public function __construct( Title $title ) {
-               $this->title = $title;
-       }
-
-       /**
-        * Create a new BacklinkCache or reuse any existing one.
-        * Currently, only one cache instance can exist; callers that
-        * need multiple backlink cache objects should keep them in scope.
-        *
-        * @param Title $title : Title object to get a backlink cache for
-        * @return BacklinkCache
-        */
-       public static function get( Title $title ) {
-               if ( !self::$cache ) { // init cache
-                       self::$cache = new ProcessCacheLRU( 1 );
-               }
-               $dbKey = $title->getPrefixedDBkey();
-               if ( !self::$cache->has( $dbKey, 'obj' ) ) {
-                       self::$cache->set( $dbKey, 'obj', new self( $title ) );
-               }
-               return self::$cache->get( $dbKey, 'obj' );
-       }
-
-       /**
-        * Serialization handler, diasallows to serialize the database to prevent
-        * failures after this class is deserialized from cache with dead DB
-        * connection.
-        *
-        * @return array
-        */
-       function __sleep() {
-               return array( 'partitionCache', 'fullResultCache', 'title' );
-       }
-
-       /**
-        * Clear locally stored data and database object.
-        */
-       public function clear() {
-               $this->partitionCache = array();
-               $this->fullResultCache = array();
-               unset( $this->db );
-       }
-
-       /**
-        * Set the Database object to use
-        *
-        * @param $db DatabaseBase
-        */
-       public function setDB( $db ) {
-               $this->db = $db;
-       }
-
-       /**
-        * Get the slave connection to the database
-        * When non existing, will initialize the connection.
-        * @return DatabaseBase object
-        */
-       protected function getDB() {
-               if ( !isset( $this->db ) ) {
-                       $this->db = wfGetDB( DB_SLAVE );
-               }
-
-               return $this->db;
-       }
-
-       /**
-        * Get the backlinks for a given table. Cached in process memory only.
-        * @param $table String
-        * @param $startId Integer or false
-        * @param $endId Integer or false
-        * @return TitleArrayFromResult
-        */
-       public function getLinks( $table, $startId = false, $endId = false ) {
-               wfProfileIn( __METHOD__ );
-
-               $fromField = $this->getPrefix( $table ) . '_from';
-
-               if ( $startId || $endId ) {
-                       // Partial range, not cached
-                       wfDebug( __METHOD__ . ": from DB (uncacheable range)\n" );
-                       $conds = $this->getConditions( $table );
-
-                       // Use the from field in the condition rather than the joined page_id,
-                       // because databases are stupid and don't necessarily propagate indexes.
-                       if ( $startId ) {
-                               $conds[] = "$fromField >= " . intval( $startId );
-                       }
-
-                       if ( $endId ) {
-                               $conds[] = "$fromField <= " . intval( $endId );
-                       }
-
-                       $res = $this->getDB()->select(
-                               array( $table, 'page' ),
-                               array( 'page_namespace', 'page_title', 'page_id' ),
-                               $conds,
-                               __METHOD__,
-                               array(
-                                       'STRAIGHT_JOIN',
-                                       'ORDER BY' => $fromField
-                               ) );
-                       $ta = TitleArray::newFromResult( $res );
-
-                       wfProfileOut( __METHOD__ );
-                       return $ta;
-               }
-
-               // @todo FIXME: Make this a function?
-               if ( !isset( $this->fullResultCache[$table] ) ) {
-                       wfDebug( __METHOD__ . ": from DB\n" );
-                       $res = $this->getDB()->select(
-                               array( $table, 'page' ),
-                               array( 'page_namespace', 'page_title', 'page_id' ),
-                               $this->getConditions( $table ),
-                               __METHOD__,
-                               array(
-                                       'STRAIGHT_JOIN',
-                                       'ORDER BY' => $fromField,
-                               ) );
-                       $this->fullResultCache[$table] = $res;
-               }
-
-               $ta = TitleArray::newFromResult( $this->fullResultCache[$table] );
-
-               wfProfileOut( __METHOD__ );
-               return $ta;
-       }
-
-       /**
-        * Get the field name prefix for a given table
-        * @param $table String
-        * @throws MWException
-        * @return null|string
-        */
-       protected function getPrefix( $table ) {
-               static $prefixes = array(
-                       'pagelinks'     => 'pl',
-                       'imagelinks'    => 'il',
-                       'categorylinks' => 'cl',
-                       'templatelinks' => 'tl',
-                       'redirect'      => 'rd',
-               );
-
-               if ( isset( $prefixes[$table] ) ) {
-                       return $prefixes[$table];
-               } else {
-                       $prefix = null;
-                       wfRunHooks( 'BacklinkCacheGetPrefix', array( $table, &$prefix ) );
-                       if( $prefix ) {
-                               return $prefix;
-                       } else {
-                               throw new MWException( "Invalid table \"$table\" in " . __CLASS__ );
-                       }
-               }
-       }
-
-       /**
-        * Get the SQL condition array for selecting backlinks, with a join
-        * on the page table.
-        * @param $table String
-        * @throws MWException
-        * @return array|null
-        */
-       protected function getConditions( $table ) {
-               $prefix = $this->getPrefix( $table );
-
-               // @todo FIXME: imagelinks and categorylinks do not rely on getNamespace,
-               // they could be moved up for nicer case statements
-               switch ( $table ) {
-                       case 'pagelinks':
-                       case 'templatelinks':
-                               $conds = array(
-                                       "{$prefix}_namespace" => $this->title->getNamespace(),
-                                       "{$prefix}_title"     => $this->title->getDBkey(),
-                                       "page_id={$prefix}_from"
-                               );
-                               break;
-                       case 'redirect':
-                               $conds = array(
-                                       "{$prefix}_namespace" => $this->title->getNamespace(),
-                                       "{$prefix}_title"     => $this->title->getDBkey(),
-                                       $this->getDb()->makeList( array(
-                                               "{$prefix}_interwiki = ''",
-                                               "{$prefix}_interwiki is null",
-                                       ), LIST_OR ),
-                                       "page_id={$prefix}_from"
-                               );
-                               break;
-                       case 'imagelinks':
-                               $conds = array(
-                                       'il_to' => $this->title->getDBkey(),
-                                       'page_id=il_from'
-                               );
-                               break;
-                       case 'categorylinks':
-                               $conds = array(
-                                       'cl_to' => $this->title->getDBkey(),
-                                       'page_id=cl_from',
-                               );
-                               break;
-                       default:
-                               $conds = null;
-                               wfRunHooks( 'BacklinkCacheGetConditions', array( $table, $this->title, &$conds ) );
-                               if( !$conds ) {
-                                       throw new MWException( "Invalid table \"$table\" in " . __CLASS__ );
-                               }
-               }
-
-               return $conds;
-       }
-
-       /**
-        * Get the approximate number of backlinks
-        * @param $table String
-        * @return integer
-        */
-       public function getNumLinks( $table ) {
-               if ( isset( $this->fullResultCache[$table] ) ) {
-                       return $this->fullResultCache[$table]->numRows();
-               }
-
-               if ( isset( $this->partitionCache[$table] ) ) {
-                       $entry = reset( $this->partitionCache[$table] );
-                       return $entry['numRows'];
-               }
-
-               $titleArray = $this->getLinks( $table );
-
-               return $titleArray->count();
-       }
-
-       /**
-        * Partition the backlinks into batches.
-        * Returns an array giving the start and end of each range. The first
-        * batch has a start of false, and the last batch has an end of false.
-        *
-        * @param $table String: the links table name
-        * @param $batchSize Integer
-        * @return Array
-        */
-       public function partition( $table, $batchSize ) {
-
-               // 1) try partition cache ...
-
-               if ( isset( $this->partitionCache[$table][$batchSize] ) ) {
-                       wfDebug( __METHOD__ . ": got from partition cache\n" );
-                       return $this->partitionCache[$table][$batchSize]['batches'];
-               }
-
-               $this->partitionCache[$table][$batchSize] = false;
-               $cacheEntry =& $this->partitionCache[$table][$batchSize];
-
-               // 2) ... then try full result cache ...
-
-               if ( isset( $this->fullResultCache[$table] ) ) {
-                       $cacheEntry = $this->partitionResult( $this->fullResultCache[$table], $batchSize );
-                       wfDebug( __METHOD__ . ": got from full result cache\n" );
-
-                       return $cacheEntry['batches'];
-               }
-
-               // 3) ... fallback to memcached ...
-
-               global $wgMemc;
-
-               $memcKey = wfMemcKey(
-                       'backlinks',
-                       md5( $this->title->getPrefixedDBkey() ),
-                       $table,
-                       $batchSize
-               );
-
-               $memcValue = $wgMemc->get( $memcKey );
-
-               if ( is_array( $memcValue ) ) {
-                       $cacheEntry = $memcValue;
-                       wfDebug( __METHOD__ . ": got from memcached $memcKey\n" );
-
-                       return $cacheEntry['batches'];
-               }
-
-
-               // 4) ... finally fetch from the slow database :(
-
-               $this->getLinks( $table );
-               $cacheEntry = $this->partitionResult( $this->fullResultCache[$table], $batchSize );
-               // Save to memcached
-               $wgMemc->set( $memcKey, $cacheEntry, self::CACHE_EXPIRY );
-
-               wfDebug( __METHOD__ . ": got from database\n" );
-               return $cacheEntry['batches'];
-       }
-
-       /**
-        * Partition a DB result with backlinks in it into batches
-        * @param $res ResultWrapper database result
-        * @param $batchSize integer
-        * @throws MWException
-        * @return array @see
-        */
-       protected function partitionResult( $res, $batchSize ) {
-               $batches = array();
-               $numRows = $res->numRows();
-               $numBatches = ceil( $numRows / $batchSize );
-
-               for ( $i = 0; $i < $numBatches; $i++ ) {
-                       if ( $i == 0  ) {
-                               $start = false;
-                       } else {
-                               $rowNum = intval( $numRows * $i / $numBatches );
-                               $res->seek( $rowNum );
-                               $row = $res->fetchObject();
-                               $start = $row->page_id;
-                       }
-
-                       if ( $i == $numBatches - 1 ) {
-                               $end = false;
-                       } else {
-                               $rowNum = intval( $numRows * ( $i + 1 ) / $numBatches );
-                               $res->seek( $rowNum );
-                               $row = $res->fetchObject();
-                               $end = $row->page_id - 1;
-                       }
-
-                       # Sanity check order
-                       if ( $start && $end && $start > $end ) {
-                               throw new MWException( __METHOD__ . ': Internal error: query result out of order' );
-                       }
-
-                       $batches[] = array( $start, $end );
-               }
-
-               return array( 'numRows' => $numRows, 'batches' => $batches );
-       }
-}
index 6a5eac7..b9c9609 100644 (file)
@@ -333,7 +333,7 @@ class Category {
                        ),
                        array( 'cl_to' => $this->mName, 'page_id = cl_from' ),
                        __METHOD__,
-                       'LOCK IN SHARE MODE'
+                       array( 'LOCK IN SHARE MODE' )
                );
                $ret = $dbw->update(
                        'category',
index 494b2a3..2073f16 100644 (file)
@@ -2535,11 +2535,6 @@ $wgAllowRdfaAttributes = false;
  */
 $wgAllowMicrodataAttributes = false;
 
-/**
- * Cleanup as much presentational html like valign -> css vertical-align as we can
- */
-$wgCleanupPresentationalAttributes = true;
-
 /**
  * Should we try to make our HTML output well-formed XML?  If set to false,
  * output will be a few bytes shorter, and the HTML will arguably be more
@@ -2781,13 +2776,6 @@ $wgFooterIcons = array(
  */
 $wgUseCombinedLoginLink = false;
 
-/**
- *  Appearance of user page and talk page labels in personal tools.
- *  - true = combine links into a single label
- *  - false = keep links in separate labels
- */
-$wgVectorCombineUserTalk = false;
-
 /**
  * Search form look for Vector skin only.
  *  - true = use an icon search button
@@ -4591,7 +4579,9 @@ $wgProfileOnly = false;
  * Log sums from profiling into "profiling" table in db.
  *
  * You have to create a 'profiling' table in your database before using
- * this feature, see maintenance/archives/patch-profiling.sql
+ * this feature.  Run set $wgProfileToDatabase to true in
+ * LocalSettings.php and run maintenance/update.php or otherwise
+ * manually add patch-profiling.sql to your database.
  *
  * To enable profiling, edit StartProfiler.php
  */
@@ -6207,20 +6197,6 @@ $wgCompiledFiles = array();
 
 /** @} */ # End of HipHop compilation }
 
-
-/************************************************************************//**
- * @name   Mobile support
- * @{
- */
-
-/**
- * Name of the class used for mobile device detection, must be inherited from
- * IDeviceDetector.
- */
-$wgDeviceDetectionClass = 'DeviceDetection';
-
-/** @} */ # End of Mobile support }
-
 /************************************************************************//**
  * @name   Miscellaneous
  * @{
index 89daf52..f80da0f 100644 (file)
@@ -2194,30 +2194,8 @@ class EditPage {
                        $wgOut->addWikiMsg( 'talkpagetext' );
                }
 
-               # Optional notices on a per-namespace and per-page basis
-               $editnotice_ns = 'editnotice-' . $this->mTitle->getNamespace();
-               $editnotice_ns_message = wfMessage( $editnotice_ns );
-               if ( $editnotice_ns_message->exists() ) {
-                       $wgOut->addWikiText( $editnotice_ns_message->plain() );
-               }
-               if ( MWNamespace::hasSubpages( $this->mTitle->getNamespace() ) ) {
-                       $parts = explode( '/', $this->mTitle->getDBkey() );
-                       $editnotice_base = $editnotice_ns;
-                       while ( count( $parts ) > 0 ) {
-                               $editnotice_base .= '-' . array_shift( $parts );
-                               $editnotice_base_msg = wfMessage( $editnotice_base );
-                               if ( $editnotice_base_msg->exists() ) {
-                                       $wgOut->addWikiText( $editnotice_base_msg->plain() );
-                               }
-                       }
-               } else {
-                       # Even if there are no subpages in namespace, we still don't want / in MW ns.
-                       $editnoticeText = $editnotice_ns . '-' . str_replace( '/', '-', $this->mTitle->getDBkey() );
-                       $editnoticeMsg = wfMessage( $editnoticeText );
-                       if ( $editnoticeMsg->exists() ) {
-                               $wgOut->addWikiText( $editnoticeMsg->plain() );
-                       }
-               }
+               // Add edit notices
+               $wgOut->addHTML( implode( "\n", $this->mTitle->getEditNotices() ) );
 
                if ( $this->isConflict ) {
                        $wgOut->wrapWikiMsg( "<div class='mw-explainconflict'>\n$1\n</div>", 'explainconflict' );
@@ -2780,7 +2758,9 @@ HTML
                        wfMessage( 'newwindow' )->parse();
                $wgOut->addHTML( "      <span class='cancelLink'>{$cancel}</span>\n" );
                $wgOut->addHTML( "      <span class='editHelp'>{$edithelp}</span>\n" );
-               $wgOut->addHTML( "</div><!-- editButtons -->\n</div><!-- editOptions -->\n" );
+               $wgOut->addHTML( "</div><!-- editButtons -->\n" );
+               wfRunHooks( 'EditPage::showStandardInputs:options', array( $this, $wgOut, &$tabindex ) );
+               $wgOut->addHTML( "</div><!-- editOptions -->\n" );
        }
 
        /**
@@ -2930,6 +2910,12 @@ HTML
                try {
                        $content = $this->toEditContent( $this->textbox1 );
 
+                       $previewHTML = '';
+                       if ( !wfRunHooks( 'AlternateEditPreview', array( $this, &$content, &$previewHTML, &$this->mParserOutput ) ) ) {
+                               wfProfileOut( __METHOD__ );
+                               return $previewHTML;
+                       }
+
                        if ( $this->mTriedSave && !$this->mTokenOk ) {
                                if ( $this->mTokenOkExceptSuffix ) {
                                        $note = wfMessage( 'token_suffix_mismatch' )->plain() ;
index 714f73e..f09e8f8 100644 (file)
@@ -500,25 +500,24 @@ class UserBlockedError extends ErrorPageError {
 /**
  * Shows a generic "user is not logged in" error page.
  *
- * This is essentially an ErrorPageError exception which by default use the
+ * This is essentially an ErrorPageError exception which by default uses the
  * 'exception-nologin' as a title and 'exception-nologin-text' for the message.
  * @see bug 37627
  * @since 1.20
  *
  * @par Example:
  * @code
- * if( $user->isAnon ) {
+ * if( $user->isAnon() ) {
  *     throw new UserNotLoggedIn();
  * }
  * @endcode
  *
- * Please note the parameters are mixed up compared to ErrorPageError, this
- * is done to be able to simply specify a reason whitout overriding the default
- * title.
+ * Note the parameter order differs from ErrorPageError, this allows you to
+ * simply specify a reason without overriding the default title.
  *
  * @par Example:
  * @code
- * if( $user->isAnon ) {
+ * if( $user->isAnon() ) {
  *     throw new UserNotLoggedIn( 'action-require-loggedin' );
  * }
  * @endcode
@@ -533,7 +532,7 @@ class UserNotLoggedIn extends ErrorPageError {
         * @param $titleMsg A message key to set the page title.
         *        Optional, default: 'exception-nologin'
         * @param $params Parameters to wfMessage().
-        *        Optiona, default: null
+        *        Optional, default: null
         */
        public function __construct(
                $reasonMsg = 'exception-nologin-text',
index 7dc9a70..b6cabda 100644 (file)
@@ -1214,9 +1214,18 @@ function wfLogProfilingData() {
        if ( $wgUser->isItemLoaded( 'id' ) && $wgUser->isAnon() ) {
                $forward .= ' anon';
        }
+
+       // Command line script uses a FauxRequest object which does not have
+       // any knowledge about an URL and throw an exception instead.
+       try {
+               $requestUrl = $wgRequest->getRequestURL();
+       } catch ( MWException $e ) {
+               $requestUrl = 'n/a';
+       }
+
        $log = sprintf( "%s\t%04.3f\t%s\n",
                gmdate( 'YmdHis' ), $elapsed,
-               urldecode( $wgRequest->getRequestURL() . $forward ) );
+               urldecode( $requestUrl . $forward ) );
 
        wfErrorLog( $log . $profiler->getOutput(), $wgDebugLogFile );
 }
@@ -3260,6 +3269,18 @@ function wfHttpOnlySafe() {
        return true;
 }
 
+/**
+ * Check if there is sufficent entropy in php's built-in session generation
+ * @return bool true = there is sufficient entropy
+ */
+function wfCheckEntropy() {
+       return (
+                       ( wfIsWindows() && version_compare( PHP_VERSION, '5.3.3', '>=' ) )
+                       || ini_get( 'session.entropy_file' )
+               )
+               && intval( ini_get( 'session.entropy_length' ) ) >= 32;
+}
+
 /**
  * Override session_id before session startup if php's built-in
  * session generation code is not secure.
@@ -3274,11 +3295,7 @@ function wfFixSessionID() {
        // - entropy_file is set or you're on Windows with php 5.3.3+
        // - AND entropy_length is > 0
        // We treat it as disabled if it doesn't have an entropy length of at least 32
-       $entropyEnabled = (
-                       ( wfIsWindows() && version_compare( PHP_VERSION, '5.3.3', '>=' ) )
-                       || ini_get( 'session.entropy_file' )
-               )
-               && intval( ini_get( 'session.entropy_length' ) ) >= 32;
+       $entropyEnabled = wfCheckEntropy();
 
        // If built-in entropy is not enabled or not sufficient override php's built in session id generation code
        if ( !$entropyEnabled ) {
index 01dca6f..2ab6069 100644 (file)
@@ -234,6 +234,13 @@ class Html {
                        unset( $attribs['maxlength'] );
                }
 
+               // According to standard the default type for <button> elements is "submit".
+               // Depending on compatibility mode IE might use "button", instead.
+               // We enforce the standard "submit".
+               if ( $element == 'button' && !isset( $attribs['type'] ) ) {
+                       $attribs['type'] = 'submit';
+               }
+
                return "<$element" . self::expandAttributes(
                        self::dropDefaults( $element, $attribs ) ) . '>';
        }
@@ -301,7 +308,6 @@ class Html {
                        'button' => array(
                                'formaction' => 'GET',
                                'formenctype' => 'application/x-www-form-urlencoded',
-                               'type' => 'submit',
                        ),
                        'canvas' => array(
                                'height' => '150',
index e621f62..ab27a74 100644 (file)
@@ -45,7 +45,9 @@ class Http {
         *                          Otherwise it will use $wgHTTPProxy (if set)
         *                          Otherwise it will use the environment variable "http_proxy" (if set)
         *    - noProxy             Don't use any proxy at all. Takes precedence over proxy value(s).
-        *    - sslVerifyHost       (curl only) Verify hostname against certificate
+        *    - sslVerifyHost       (curl only) Set to 2 to verify hostname against certificate
+        *                                  Setting to 1 (or true) will NOT verify the host name. It will
+        *                                  only check its existence. Setting to 0 (or false) disables entirely.
         *    - sslVerifyCert       (curl only) Verify SSL certificate
         *    - caInfo              (curl only) Provide CA information
         *    - maxRedirects        Maximum number of redirects to follow (defaults to 5)
@@ -185,7 +187,15 @@ class MWHttpRequest {
        protected $postData = null;
        protected $proxy = null;
        protected $noProxy = false;
-       protected $sslVerifyHost = true;
+       /**
+        * Parameter passed to Curl that specifies whether
+        * to validate SSL certificates.
+        *
+        * Setting to 0 disables entirely. Setting to 1 checks
+        * the existence of a CN, but doesn't verify it. Setting
+        * to 2 (the default) actually verifies the host.
+        */
+       protected $sslVerifyHost = 2;
        protected $sslVerifyCert = true;
        protected $caInfo = null;
        protected $method = "GET";
index e5db232..408538b 100644 (file)
@@ -1075,6 +1075,9 @@ class Linker {
        public static function userLink( $userId, $userName, $altUserName = false ) {
                if ( $userId == 0 ) {
                        $page = SpecialPage::getTitleFor( 'Contributions', $userName );
+                       if ( $altUserName === false ) {
+                               $altUserName = IP::prettifyIP( $userName );
+                       }
                } else {
                        $page = Title::makeTitle( NS_USER, $userName );
                }
@@ -1373,7 +1376,18 @@ class Linker {
                self::$commentContextTitle = $title;
                self::$commentLocal = $local;
                $html = preg_replace_callback(
-                       '/\[\[:?(.*?)(\|(.*?))*\]\]([^[]*)/',
+                       '/
+                               \[\[
+                               :? # ignore optional leading colon
+                               ([^\]|]+) # 1. link target; page names cannot include ] or |
+                               (?:\|
+                                       # 2. a pipe-separated substring; only the last is captured
+                                       # Stop matching at | and ]] without relying on backtracking.
+                                       ((?:]?[^\]|])*+)
+                               )*
+                               \]\]
+                               ([^[]*) # 3. link trail (the text up until the next link)
+                       /x',
                        array( 'Linker', 'formatLinksInCommentCallback' ),
                        $comment );
                self::$commentContextTitle = null;
@@ -1399,8 +1413,8 @@ class Linker {
                }
 
                # Handle link renaming [[foo|text]] will show link as "text"
-               if ( $match[3] != "" ) {
-                       $text = $match[3];
+               if ( $match[2] != "" ) {
+                       $text = $match[2];
                } else {
                        $text = $match[1];
                }
@@ -1415,7 +1429,7 @@ class Linker {
                        }
                } else {
                        # Other kind of link
-                       if ( preg_match( $wgContLang->linkTrail(), $match[4], $submatch ) ) {
+                       if ( preg_match( $wgContLang->linkTrail(), $match[3], $submatch ) ) {
                                $trail = $submatch[1];
                        } else {
                                $trail = "";
index fd1fefb..a7a903e 100644 (file)
@@ -238,26 +238,20 @@ class LinksUpdate extends SqlDataUpdate {
        }
 
        function queueRecursiveJobs() {
-               global $wgUpdateRowsPerJob;
                wfProfileIn( __METHOD__ );
 
-               $cache = $this->mTitle->getBacklinkCache();
-               $batches = $cache->partition( 'templatelinks', $wgUpdateRowsPerJob );
-               if ( !$batches ) {
-                       wfProfileOut( __METHOD__ );
-                       return;
-               }
-               $jobs = array();
-               foreach ( $batches as $batch ) {
-                       list( $start, $end ) = $batch;
-                       $params = array(
-                               'table' => 'templatelinks',
-                               'start' => $start,
-                               'end' => $end,
+               if ( $this->mTitle->getBacklinkCache()->hasLinks( 'templatelinks' ) ) {
+                       $job = new RefreshLinksJob2(
+                               $this->mTitle,
+                               array(
+                                       'table' => 'templatelinks',
+                               ) + Job::newRootJobParams( // "overall" refresh links job info
+                                       "refreshlinks:templatelinks:{$this->mTitle->getPrefixedText()}"
+                               )
                        );
-                       $jobs[] = new RefreshLinksJob2( $this->mTitle, $params );
+                       JobQueueGroup::singleton()->push( $job );
+                       JobQueueGroup::singleton()->deduplicateRootJob( $job );
                }
-               Job::batchInsert( $jobs );
 
                wfProfileOut( __METHOD__ );
        }
index 5a4b810..abc7dc4 100644 (file)
@@ -606,7 +606,6 @@ class Message {
         * @since 1.18
         * @param $param String|Array: Parameter as defined in this class.
         * @return Tuple(type, value)
-        * @throws MWException
         */
        protected function extractParam( $param ) {
                if ( is_array( $param ) && isset( $param['raw'] ) ) {
@@ -618,7 +617,11 @@ class Message {
                } elseif ( !is_array( $param ) ) {
                        return array( 'before', $param );
                } else {
-                       throw new MWException( "Invalid message parameter: " . serialize( $param ) );
+                       trigger_error(
+                               "Invalid message parameter: " . htmlspecialchars( serialize( $param ) ),
+                               E_USER_WARNING
+                       );
+                       return array( 'before', '[INVALID]' );
                }
        }
 
index ff83f70..8399a8c 100644 (file)
@@ -1469,7 +1469,7 @@ class OutputPage extends ContextSource {
         * @param $interface Boolean: whether it is an interface message
         *                                                              (for example disables conversion)
         */
-       public function addWikiTextTitle( $text, &$title, $linestart, $tidy = false, $interface = false ) {
+       public function addWikiTextTitle( $text, Title $title, $linestart, $tidy = false, $interface = false ) {
                global $wgParser;
 
                wfProfileIn( __METHOD__ );
@@ -1769,14 +1769,12 @@ class OutputPage extends ContextSource {
                                } else {
                                        $aloption[] = 'string-contains=' . $variant;
 
-                                       // IE and some other browsers use another form of language code
-                                       // in their Accept-Language header, like "zh-CN" or "zh-TW".
+                                       // IE and some other browsers use BCP 47 standards in
+                                       // their Accept-Language header, like "zh-CN" or "zh-Hant".
                                        // We should handle these too.
-                                       $ievariant = explode( '-', $variant );
-                                       if ( count( $ievariant ) == 2 ) {
-                                               $ievariant[1] = strtoupper( $ievariant[1] );
-                                               $ievariant = implode( '-', $ievariant );
-                                               $aloption[] = 'string-contains=' . $ievariant;
+                                       $variantBCP47 = wfBCP47( $variant );
+                                       if ( $variantBCP47 !== $variant ) {
+                                               $aloption[] = 'string-contains=' . $variantBCP47;
                                        }
                                }
                        }
index 65a0d02..a3c684b 100644 (file)
@@ -1373,7 +1373,7 @@ class Preferences {
         * @return bool|Status|string
         */
        static function tryFormSubmit( $formData, $form, $entryPoint = 'internal' ) {
-               global $wgHiddenPrefs;
+               global $wgHiddenPrefs, $wgAuth;
 
                $user = $form->getModifiedUser();
                $result = true;
@@ -1422,6 +1422,8 @@ class Preferences {
 
                $user->saveSettings();
 
+               $wgAuth->updateExternalDB( $user );
+
                return $result;
        }
 
index 2bdcab4..87fa428 100644 (file)
@@ -55,6 +55,7 @@
  *  lang            the interwiki prefix, automatically set in save()
  *  oldSize         text size before the change
  *  newSize         text size after the change
+ *  pageStatus      status of the page: created, deleted, moved, restored, changed
  *
  * temporary:       not stored in the database
  *      notificationtimestamp
@@ -273,7 +274,8 @@ class RecentChange {
                                        $this->mAttribs['rc_timestamp'],
                                        $this->mAttribs['rc_comment'],
                                        $this->mAttribs['rc_minor'],
-                                       $this->mAttribs['rc_last_oldid'] );
+                                       $this->mAttribs['rc_last_oldid'],
+                                       $this->mExtra['pageStatus'] );
                        }
                }
        }
@@ -461,6 +463,7 @@ class RecentChange {
                        'lastTimestamp' => $lastTimestamp,
                        'oldSize'       => $oldSize,
                        'newSize'       => $newSize,
+                       'pageStatus'   => 'changed'
                );
                $rc->save();
                return $rc;
@@ -518,7 +521,8 @@ class RecentChange {
                        'prefixedDBkey' => $title->getPrefixedDBkey(),
                        'lastTimestamp' => 0,
                        'oldSize' => 0,
-                       'newSize' => $size
+                       'newSize' => $size,
+                       'pageStatus' => 'created'
                );
                $rc->save();
                return $rc;
@@ -572,6 +576,27 @@ class RecentChange {
                $type, $action, $target, $logComment, $params, $newId = 0, $actionCommentIRC = '' ) {
                global $wgRequest;
 
+               ## Get pageStatus for email notification
+               switch ( $type . '-' . $action ) {
+                       case 'delete-delete':
+                               $pageStatus = 'deleted';
+                               break;
+                       case 'move-move':
+                       case 'move-move_redir':
+                               $pageStatus = 'moved';
+                               break;
+                       case 'delete-restore':
+                               $pageStatus = 'restored';
+                               break;
+                       case 'upload-upload':
+                               $pageStatus = 'created';
+                               break;
+                       case 'upload-overwrite':
+                       default:
+                               $pageStatus = 'changed';
+                               break;
+               }
+
                $rc = new RecentChange;
                $rc->mTitle = $target;
                $rc->mPerformer = $user;
@@ -605,6 +630,7 @@ class RecentChange {
                        'prefixedDBkey' => $title->getPrefixedDBkey(),
                        'lastTimestamp' => 0,
                        'actionComment' => $actionComment, // the comment appended to the action, passed from LogPage
+                       'pageStatus'    => $pageStatus,
                        'actionCommentIRC' => $actionCommentIRC
                );
                return $rc;
index 5aa0545..0034afe 100644 (file)
@@ -364,14 +364,17 @@ class Sanitizer {
         * @return string
         */
        static function removeHTMLtags( $text, $processCallback = null, $args = array(), $extratags = array(), $removetags = array() ) {
-               global $wgUseTidy;
+               global $wgUseTidy, $wgHtml5, $wgAllowMicrodataAttributes, $wgAllowImageTag;
 
                static $htmlpairsStatic, $htmlsingle, $htmlsingleonly, $htmlnest, $tabletags,
                        $htmllist, $listtags, $htmlsingleallowed, $htmlelementsStatic, $staticInitialised;
 
                wfProfileIn( __METHOD__ );
 
-               if ( !$staticInitialised ) {
+               // Base our staticInitialised variable off of the global config state so that if the globals
+               // are changed (like in the secrewed up test system) we will re-initialise the settings.
+               $globalContext = implode( '-', compact( 'wgHtml5', 'wgAllowMicrodataAttributes', 'wgAllowImageTag' ) );
+               if ( !$staticInitialised || $staticInitialised != $globalContext ) {
 
                        $htmlpairsStatic = array( # Tags that must be closed
                                'b', 'bdi', 'del', 'i', 'ins', 'u', 'font', 'big', 'small', 'sub', 'sup', 'h1',
@@ -381,13 +384,20 @@ class Sanitizer {
                                'ruby', 'rt' , 'rb' , 'rp', 'p', 'span', 'abbr', 'dfn',
                                'kbd', 'samp'
                        );
+                       if ( $wgHtml5 ) {
+                               $htmlpairsStatic = array_merge( $htmlpairsStatic, array( 'data', 'time', 'mark' ) );
+                       }
                        $htmlsingle = array(
                                'br', 'hr', 'li', 'dt', 'dd'
                        );
                        $htmlsingleonly = array( # Elements that cannot have close tags
                                'br', 'hr'
                        );
-                       $htmlnest = array( # Tags that can be nested directly or indirectly
+                       if ( $wgHtml5 && $wgAllowMicrodataAttributes ) {
+                               $htmlsingle[] = $htmlsingleonly[] = 'meta';
+                               $htmlsingle[] = $htmlsingleonly[] = 'link';
+                       }
+                       $htmlnest = array( # Tags that can be nested--??
                                'table', 'tr', 'td', 'th', 'div', 'blockquote', 'ol', 'ul',
                                'li', 'dl', 'dt', 'dd', 'font', 'big', 'small', 'sub', 'sup', 'span'
                        );
@@ -401,7 +411,6 @@ class Sanitizer {
                                'li',
                        );
 
-                       global $wgAllowImageTag;
                        if ( $wgAllowImageTag ) {
                                $htmlsingle[] = 'img';
                                $htmlsingleonly[] = 'img';
@@ -416,7 +425,7 @@ class Sanitizer {
                        foreach ( $vars as $var ) {
                                $$var = array_flip( $$var );
                        }
-                       $staticInitialised = true;
+                       $staticInitialised = $globalContext;
                }
                # Populate $htmlpairs and $htmlelements with the $extratags and $removetags arrays
                $extratags = array_flip( $extratags );
@@ -532,6 +541,10 @@ class Sanitizer {
                                                        call_user_func_array( $processCallback, array( &$params, $args ) );
                                                }
 
+                                               if ( !Sanitizer::validateTag( $params, $t ) ) {
+                                                       $badtag = true;
+                                               }
+
                                                # Strip non-approved attributes from the tag
                                                $newparams = Sanitizer::fixTagAttributes( $params, $t );
                                        }
@@ -555,16 +568,24 @@ class Sanitizer {
                                preg_match( '/^(\\/?)(\\w+)([^>]*?)(\\/{0,1}>)([^<]*)$/',
                                $x, $regs );
                                @list( /* $qbar */, $slash, $t, $params, $brace, $rest ) = $regs;
+                               $badtag = false;
                                if ( isset( $htmlelements[$t = strtolower( $t )] ) ) {
                                        if( is_callable( $processCallback ) ) {
                                                call_user_func_array( $processCallback, array( &$params, $args ) );
                                        }
+
+                                       if ( !Sanitizer::validateTag( $params, $t ) ) {
+                                               $badtag = true;
+                                       }
+
                                        $newparams = Sanitizer::fixTagAttributes( $params, $t );
-                                       $rest = str_replace( '>', '&gt;', $rest );
-                                       $text .= "<$slash$t$newparams$brace$rest";
-                               } else {
-                                       $text .= '&lt;' . str_replace( '>', '&gt;', $x);
+                                       if ( !$badtag ) {
+                                               $rest = str_replace( '>', '&gt;', $rest );
+                                               $text .= "<$slash$t$newparams$brace$rest";
+                                               continue;
+                                       }
                                }
+                               $text .= '&lt;' . str_replace( '>', '&gt;', $x);
                        }
                }
                wfProfileOut( __METHOD__ );
@@ -617,111 +638,35 @@ class Sanitizer {
        }
 
        /**
-        * Take an array of attribute names and values and fix some deprecated values
-        * for the given element type.
-        * This does not validate properties, so you should ensure that you call
-        * validateTagAttributes AFTER this to ensure that the resulting style rule
-        * this may add is safe.
-        *
-        * - Converts most presentational attributes like align into inline css
+        * Takes attribute names and values for a tag and the tag name and
+        * validates that the tag is allowed to be present.
+        * This DOES NOT validate the attributes, nor does it validate the
+        * tags themselves. This method only handles the special circumstances
+        * where we may want to allow a tag within content but ONLY when it has
+        * specific attributes set.
         *
-        * @param $attribs Array
-        * @param $element String
-        * @return Array
+        * @param $params
+        * @param $element
         */
-       static function fixDeprecatedAttributes( $attribs, $element ) {
-               global $wgHtml5, $wgCleanupPresentationalAttributes;
-
-               // presentational attributes were removed from html5, we can leave them
-               // in when html5 is turned off
-               if ( !$wgHtml5 || !$wgCleanupPresentationalAttributes ) {
-                       return $attribs;
-               }
-
-               $table = array( 'table' );
-               $cells = array( 'td', 'th' );
-               $colls = array( 'col', 'colgroup' );
-               $tblocks = array( 'tbody', 'tfoot', 'thead' );
-               $h = array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6' );
-
-               $presentationalAttribs = array(
-                       'align' => array( 'text-align', array_merge( array( 'caption', 'hr', 'div', 'p', 'tr' ), $table, $cells, $colls, $tblocks, $h ) ),
-                       'clear' => array( 'clear', array( 'br' ) ),
-                       'height' => array( 'height', $cells ),
-                       'nowrap' => array( 'white-space', $cells ),
-                       'size' => array( 'height', array( 'hr' ) ),
-                       'type' => array( 'list-style-type', array( 'li', 'ol', 'ul' ) ),
-                       'valign' => array( 'vertical-align', array_merge( $cells, $colls, $tblocks ) ),
-                       'width' => array( 'width', array_merge( array( 'hr', 'pre' ), $table, $cells, $colls ) ),
-               );
-
-               // Ensure that any upper case or mixed case attributes are converted to lowercase
-               foreach ( $attribs as $attribute => $value ) {
-                       if ( $attribute !== strtolower( $attribute ) && array_key_exists( strtolower( $attribute ), $presentationalAttribs ) ) {
-                               $attribs[strtolower( $attribute )] = $value;
-                               unset( $attribs[$attribute] );
-                       }
-               }
-
-               $style = "";
-               foreach ( $presentationalAttribs as $attribute => $info ) {
-                       list( $property, $elements ) = $info;
+       static function validateTag( $params, $element ) {
+               $params = Sanitizer::decodeTagAttributes( $params );
 
-                       // Skip if this attribute is not relevant to this element
-                       if ( !in_array( $element, $elements ) ) {
-                               continue;
-                       }
-
-                       // Skip if the attribute is not used
-                       if ( !array_key_exists( $attribute, $attribs ) ) {
-                               continue;
+               if ( $element == 'meta' || $element == 'link' ) {
+                       if ( !isset( $params['itemprop'] ) ) {
+                               // <meta> and <link> must have an itemprop="" otherwise they are not valid or safe in content
+                               return false;
                        }
-
-                       $value = $attribs[$attribute];
-
-                       // For nowrap the value should be nowrap instead of whatever text is in the value
-                       if ( $attribute === 'nowrap' ) {
-                               $value = 'nowrap';
+                       if ( $element == 'meta' && !isset( $params['content'] ) ) {
+                               // <meta> must have a content="" for the itemprop
+                               return false;
                        }
-
-                       // clear="all" is clear: both; in css
-                       if ( $attribute === 'clear' && strtolower( $value ) === 'all' ) {
-                               $value = 'both';
+                       if ( $element == 'link' && !isset( $params['href'] ) ) {
+                               // <link> must have an associated href=""
+                               return false;
                        }
-
-                       // Size based properties should have px applied to them if they have no unit
-                       if ( in_array( $attribute, array( 'height', 'width', 'size' ) ) ) {
-                               if ( preg_match( '/^[\d.]+$/', $value ) ) {
-                                       $value = "{$value}px";
-                               }
-                       }
-
-                       // Table align is special, it's about block alignment instead of
-                       // content align (see also bug 40306)
-                       if ( $attribute === 'align' && in_array( $element, $table ) ) {
-                               if ( $value === 'center' ) {
-                                       $style .= ' margin-left: auto;';
-                                       $property = 'margin-right';
-                                       $value = 'auto';
-                               } else {
-                                       $property = 'float';
-                               }
-                       }
-
-                       $style .= " $property: $value;";
-
-                       unset( $attribs[$attribute] );
-               }
-
-               if ( $style ) {
-                       // Prepend our style rules so that they can be overridden by user css
-                       if ( isset($attribs['style']) ) {
-                               $style .= " " . $attribs['style'];
-                       }
-                       $attribs['style'] = trim($style);
                }
 
-               return $attribs;
+               return true;
        }
 
        /**
@@ -825,7 +770,7 @@ class Sanitizer {
                                unset( $out['itemid'] );
                                unset( $out['itemref'] );
                        }
-                       # TODO: Strip itemprop if we aren't descendants of an itemscope.
+                       # TODO: Strip itemprop if we aren't descendants of an itemscope or pointed to by an itemref.
                }
                return $out;
        }
@@ -972,7 +917,6 @@ class Sanitizer {
                }
 
                $decoded = Sanitizer::decodeTagAttributes( $text );
-               $decoded = Sanitizer::fixDeprecatedAttributes( $decoded, $element );
                $stripped = Sanitizer::validateTagAttributes( $decoded, $element );
 
                $attribs = array();
@@ -1451,10 +1395,7 @@ class Sanitizer {
         * @return Array
         */
        static function attributeWhitelist( $element ) {
-               static $list;
-               if( !isset( $list ) ) {
-                       $list = Sanitizer::setupAttributeWhitelist();
-               }
+               $list = Sanitizer::setupAttributeWhitelist();
                return isset( $list[$element] )
                        ? $list[$element]
                        : array();
@@ -1468,6 +1409,13 @@ class Sanitizer {
        static function setupAttributeWhitelist() {
                global $wgAllowRdfaAttributes, $wgHtml5, $wgAllowMicrodataAttributes;
 
+               static $whitelist, $staticInitialised;
+               $globalContext = implode( '-', compact( 'wgAllowRdfaAttributes', 'wgHtml5', 'wgAllowMicrodataAttributes' ) );
+
+               if ( isset( $whitelist ) && $staticInitialised == $globalContext ) {
+                       return $whitelist;
+               }
+
                $common = array( 'id', 'class', 'lang', 'dir', 'title', 'style' );
 
                if ( $wgAllowRdfaAttributes ) {
@@ -1500,7 +1448,7 @@ class Sanitizer {
 
                # Numbers refer to sections in HTML 4.01 standard describing the element.
                # See: http://www.w3.org/TR/html4/
-               $whitelist = array (
+               $whitelist = array(
                        # 7.5.4
                        'div'        => $block,
                        'center'     => $common, # deprecated
@@ -1632,7 +1580,28 @@ class Sanitizer {
                        # HTML 5 section 4.6
                        'bdi' => $common,
 
+               );
+
+               if ( $wgHtml5 ) {
+                       # HTML5 elements, defined by:
+                       # http://www.whatwg.org/specs/web-apps/current-work/multipage/
+                       $whitelist += array(
+                               'data' => array_merge( $common, array( 'value' ) ),
+                               'time' => array_merge( $common, array( 'datetime' ) ),
+                               'mark' => $common,
+
+                               // meta and link are only permitted by removeHTMLtags when Microdata
+                               // is enabled so we don't bother adding a conditional to hide these
+                               // Also meta and link are only valid in WikiText as Microdata elements
+                               // (ie: validateTag rejects tags missing the attributes needed for Microdata)
+                               // So we don't bother including $common attributes that have no purpose.
+                               'meta' => array( 'itemprop', 'content' ),
+                               'link' => array( 'itemprop', 'href' ),
                        );
+               }
+
+               $staticInitialised = $globalContext;
+
                return $whitelist;
        }
 
index dcc37d7..ddd0780 100644 (file)
@@ -398,7 +398,7 @@ class SkinTemplate extends Skin {
                # not for special pages or file pages AND only when viewing AND if the page exists
                # (or is in MW namespace, because that has default content)
                if ( !in_array( $title->getNamespace(), array( NS_SPECIAL, NS_FILE ) ) &&
-                       in_array( $request->getVal( 'action', 'view' ), array( 'view', 'historysubmit' ) ) &&
+                       Action::getActionName( $this ) === 'view' &&
                        ( $title->exists() || $title->getNamespace() == NS_MEDIAWIKI ) ) {
                        $pageLang = $title->getPageViewLanguage();
                        $realBodyAttribs['lang'] = $pageLang->getHtmlCode();
@@ -555,7 +555,11 @@ class SkinTemplate extends Skin {
                # $this->getTitle() will just give Special:Badtitle, which is
                # not especially useful as a returnto parameter. Use the title
                # from the request instead, if there was one.
-               $page = Title::newFromURL( $request->getVal( 'title', '' ) );
+               if ( $this->getUser()->isAllowed( 'read' ) ) {
+                       $page = $this->getTitle();
+               } else {
+                       $page = Title::newFromText( $request->getVal( 'title', '' ) );
+               }
                $page = $request->getVal( 'returnto', $page );
                $a = array();
                if ( strval( $page ) !== '' ) {
@@ -639,7 +643,6 @@ class SkinTemplate extends Skin {
                        $is_signup = $request->getText( 'type' ) == 'signup';
 
                        # anonlogin & login are the same
-                       global $wgSecureLogin;
                        $proto = $wgSecureLogin ? PROTO_HTTPS : null;
 
                        $login_id = $this->showIPinHeader() ? 'anonlogin' : 'login';
index 8ed5264..fa1bca4 100644 (file)
@@ -371,13 +371,17 @@ class SpecialPageFactory {
                        global $wgUser;
                        $user = $wgUser;
                }
+               $context = RequestContext::newExtraneousContext( Title::newMainPage() );
+               $context->setUser( $user );
                foreach ( self::getList() as $name => $rec ) {
                        $page = self::getPage( $name );
-                       if ( $page // not null
-                               && $page->isListed()
-                               && ( !$page->isRestricted() || $page->userCanExecute( $user ) )
-                       ) {
-                               $pages[$name] = $page;
+                       if ( $page ) { // not null
+                               $page->setContext( $context );
+                               if ( $page->isListed()
+                                       && ( !$page->isRestricted() || $page->userCanExecute( $user ) )
+                               ) {
+                                       $pages[$name] = $page;
+                               }
                        }
                }
                return $pages;
index 763c95c..2553f54 100644 (file)
@@ -47,7 +47,7 @@ class Status {
        /**
         * Factory function for fatal errors
         *
-        * @param $message String: message name
+        * @param $message String|Message: message name or object
         * @return Status
         */
        static function newFatal( $message /*, parameters...*/ ) {
@@ -103,7 +103,7 @@ class Status {
        /**
         * Add a new warning
         *
-        * @param $message String: message name
+        * @param $message String|Message: message name or object
         */
        function warning( $message /*, parameters... */ ) {
                $params = array_slice( func_get_args(), 1 );
@@ -117,7 +117,7 @@ class Status {
         * Add an error, do not set fatal flag
         * This can be used for non-fatal errors
         *
-        * @param $message String: message name
+        * @param $message String|Message: message name or object
         */
        function error( $message /*, parameters... */ ) {
                $params = array_slice( func_get_args(), 1 );
@@ -131,7 +131,7 @@ class Status {
         * Add an error and set OK to false, indicating that the operation
         * as a whole was fatal
         *
-        * @param $message String: message name
+        * @param $message String|Message: message name or object
         */
        function fatal( $message /*, parameters... */ ) {
                $params = array_slice( func_get_args(), 1 );
@@ -183,7 +183,7 @@ class Status {
                        }
                }
                if ( count( $this->errors ) == 1 ) {
-                       $s = $this->getWikiTextForError( $this->errors[0], $this->errors[0]  );
+                       $s = $this->getErrorMessage( $this->errors[0] );
                        if ( $shortContext ) {
                                $s = wfMessage( $shortContext, $s )->plain();
                        } elseif ( $longContext ) {
@@ -191,7 +191,7 @@ class Status {
                        }
                } else {
                        $s = '* '. implode("\n* ",
-                               $this->getWikiTextArray( $this->errors ) ) . "\n";
+                               $this->getErrorMessageArray( $this->errors ) ) . "\n";
                        if ( $longContext ) {
                                $s = wfMessage( $longContext, $s )->plain();
                        } elseif ( $shortContext ) {
@@ -202,7 +202,7 @@ class Status {
        }
 
        /**
-        * Return the wiki text for a single error.
+        * Return the message for a single error.
         * @param $error Mixed With an array & two values keyed by
         * 'message' and 'params', use those keys-value pairs.
         * Otherwise, if its an array, just use the first value as the
@@ -210,19 +210,22 @@ class Status {
         *
         * @return String
         */
-       protected function getWikiTextForError( $error ) {
+       protected function getErrorMessage( $error ) {
                if ( is_array( $error ) ) {
-                       if ( isset( $error['message'] ) && isset( $error['params'] ) ) {
-                               return wfMessage( $error['message'],
-                                       array_map( 'wfEscapeWikiText', $this->cleanParams( $error['params'] ) )  )->plain();
+                       if( isset( $error['message'] ) && $error['message'] instanceof Message ) {
+                               $msg = $error['message'];
+                       } elseif ( isset( $error['message'] ) && isset( $error['params'] ) ) {
+                               $msg = wfMessage( $error['message'],
+                                       array_map( 'wfEscapeWikiText', $this->cleanParams( $error['params'] ) )  );
                        } else {
-                               $message = array_shift($error);
-                               return wfMessage( $message,
-                                       array_map( 'wfEscapeWikiText', $this->cleanParams( $error ) ) )->plain();
+                               $msgName = array_shift( $error );
+                               $msg = wfMessage( $msgName,
+                                       array_map( 'wfEscapeWikiText', $this->cleanParams( $error ) ) );
                        }
                } else {
-                       return wfMessage( $error )->plain();
+                       $msg = wfMessage( $error );
                }
+               return $msg->plain();
        }
 
        /**
@@ -239,8 +242,8 @@ class Status {
         * @param $errors Array
         * @return Array
         */
-       function getWikiTextArray( $errors ) {
-               return array_map( array( $this, 'getWikiTextForError' ), $errors );
+       protected function getErrorMessageArray( $errors ) {
+               return array_map( array( $this, 'getErrorMessage' ), $errors );
        }
 
        /**
@@ -287,7 +290,9 @@ class Status {
                $result = array();
                foreach ( $this->errors as $error ) {
                        if ( $error['type'] === $type ) {
-                               if( $error['params'] ) {
+                               if( $error['message'] instanceof Message ) {
+                                       $result[] = $error['message'];
+                               } elseif( $error['params'] ) {
                                        $result[] = array_merge( array( $error['message'] ), $error['params'] );
                                } else {
                                        $result[] = array( $error['message'] );
@@ -318,6 +323,9 @@ class Status {
        /**
         * Returns true if the specified message is present as a warning or error
         *
+        * Note, due to the lack of tools for comparing Message objects, this
+        * function will not work when using a Message object as a parameter.
+        *
         * @param $msg String: message name
         * @return Boolean
         */
@@ -334,9 +342,12 @@ class Status {
         * If the specified source message exists, replace it with the specified
         * destination message, but keep the same parameters as in the original error.
         *
-        * Return true if the replacement was done, false otherwise.
+        * Note, due to the lack of tools for comparing Message objects, this
+        * function will not work when using a Message object as the search parameter.
         *
-        * @return bool
+        * @param $source Message|String: Message key or object to search for
+        * @param $dest Message|String: Replacement message key or object
+        * @return bool Return true if the replacement was done, false otherwise.
         */
        function replaceMessage( $source, $dest ) {
                $replaced = false;
index 0f02dc7..6cd8ee5 100644 (file)
@@ -908,7 +908,7 @@ class Title {
 
        /**
         * Is this the mainpage?
-        * @note Title::newFromText seams to be sufficiently optimized by the title
+        * @note Title::newFromText seems to be sufficiently optimized by the title
         * cache that we don't need to over-optimize by doing direct comparisons and
         * acidentally creating new bugs where $title->equals( Title::newFromText() )
         * ends up reporting something differently than $title->isMainPage();
@@ -4733,4 +4733,43 @@ class Title {
                $pageLang = $contentHandler->getPageViewLanguage( $this );
                return $pageLang;
        }
+
+       /**
+        * Get a list of rendered edit notices for this page.
+        *
+        * Array is keyed by the original message key, and values are rendered using parseAsBlock, so
+        * they will already be wrapped in paragraphs.
+        *
+        * @since 1.21
+        * @return Array
+        */
+       public function getEditNotices() {
+               $notices = array();
+
+               # Optional notices on a per-namespace and per-page basis
+               $editnotice_ns = 'editnotice-' . $this->getNamespace();
+               $editnotice_ns_message = wfMessage( $editnotice_ns );
+               if ( $editnotice_ns_message->exists() ) {
+                       $notices[$editnotice_ns] = $editnotice_ns_message->parseAsBlock();
+               }
+               if ( MWNamespace::hasSubpages( $this->getNamespace() ) ) {
+                       $parts = explode( '/', $this->getDBkey() );
+                       $editnotice_base = $editnotice_ns;
+                       while ( count( $parts ) > 0 ) {
+                               $editnotice_base .= '-' . array_shift( $parts );
+                               $editnotice_base_msg = wfMessage( $editnotice_base );
+                               if ( $editnotice_base_msg->exists() ) {
+                                       $notices[$editnotice_base] = $editnotice_base_msg->parseAsBlock();
+                               }
+                       }
+               } else {
+                       # Even if there are no subpages in namespace, we still don't want / in MW ns.
+                       $editnoticeText = $editnotice_ns . '-' . str_replace( '/', '-', $this->getDBkey() );
+                       $editnoticeMsg = wfMessage( $editnoticeText );
+                       if ( $editnoticeMsg->exists() ) {
+                               $notices[$editnoticeText] = $editnoticeMsg->parseAsBlock();
+                       }
+               }
+               return $notices;
+       }
 }
index 0aa613a..507b254 100644 (file)
@@ -370,7 +370,7 @@ class User {
         *    User::getCanonicalName(), except that true is accepted as an alias
         *    for 'valid', for BC.
         *
-        * @return User object, or false if the username is invalid
+        * @return User|bool User object, or false if the username is invalid
         *    (e.g. if it contains illegal characters or is an IP address). If the
         *    username is not present in the database, the result will be a user object
         *    with a name, zero user ID and default settings.
@@ -2454,30 +2454,29 @@ class User {
         * @return Int
         */
        public function getEditCount() {
-               if( $this->getId() ) {
-                       if ( !isset( $this->mEditCount ) ) {
-                               /* Populate the count, if it has not been populated yet */
-                               wfProfileIn( __METHOD__ );
-                               $dbr = wfGetDB( DB_SLAVE );
-                               // check if the user_editcount field has been initialized
-                               $count = $dbr->selectField(
-                                       'user', 'user_editcount',
-                                       array( 'user_id' => $this->mId ),
-                                       __METHOD__
-                               );
+               if ( !$this->getId() ) {
+                       return null;
+               }
 
-                               if( $count === null ) {
-                                       // it has not been initialized. do so.
-                                       $count = $this->initEditCount();
-                               }
-                               wfProfileOut( __METHOD__ );
-                               $this->mEditCount = intval( $count );
+               if ( !isset( $this->mEditCount ) ) {
+                       /* Populate the count, if it has not been populated yet */
+                       wfProfileIn( __METHOD__ );
+                       $dbr = wfGetDB( DB_SLAVE );
+                       // check if the user_editcount field has been initialized
+                       $count = $dbr->selectField(
+                               'user', 'user_editcount',
+                               array( 'user_id' => $this->mId ),
+                               __METHOD__
+                       );
+
+                       if( $count === null ) {
+                               // it has not been initialized. do so.
+                               $count = $this->initEditCount();
                        }
-                       return $this->mEditCount;
-               } else {
-                       /* nil */
-                       return null;
+                       $this->mEditCount = intval( $count );
+                       wfProfileOut( __METHOD__ );
                }
+               return $this->mEditCount;
        }
 
        /**
index b9ce9e0..daf7435 100644 (file)
@@ -396,7 +396,7 @@ class UserMailer {
  */
 class EmailNotification {
        protected $subject, $body, $replyto, $from;
-       protected $timestamp, $summary, $minorEdit, $oldid, $composed_common;
+       protected $timestamp, $summary, $minorEdit, $oldid, $composed_common, $pageStatus;
        protected $mailTargets = array();
 
        /**
@@ -421,8 +421,9 @@ class EmailNotification {
         * @param $summary
         * @param $minorEdit
         * @param $oldid (default: false)
+        * @param $pageStatus (default: 'changed')
         */
-       public function notifyOnPageChange( $editor, $title, $timestamp, $summary, $minorEdit, $oldid = false ) {
+       public function notifyOnPageChange( $editor, $title, $timestamp, $summary, $minorEdit, $oldid = false, $pageStatus = 'changed' ) {
                global $wgEnotifUseJobQ, $wgEnotifWatchlist, $wgShowUpdatedMarker, $wgEnotifMinorEdits,
                        $wgUsersNotifiedOnAllChanges, $wgEnotifUserTalk;
 
@@ -493,12 +494,13 @@ class EmailNotification {
                                'summary' => $summary,
                                'minorEdit' => $minorEdit,
                                'oldid' => $oldid,
-                               'watchers' => $watchers
+                               'watchers' => $watchers,
+                               'pageStatus' => $pageStatus
                        );
                        $job = new EnotifNotifyJob( $title, $params );
                        $job->insert();
                } else {
-                       $this->actuallyNotifyOnPageChange( $editor, $title, $timestamp, $summary, $minorEdit, $oldid, $watchers );
+                       $this->actuallyNotifyOnPageChange( $editor, $title, $timestamp, $summary, $minorEdit, $oldid, $watchers, $pageStatus );
                }
        }
 
@@ -516,7 +518,8 @@ class EmailNotification {
         * @param $oldid int Revision ID
         * @param $watchers array of user IDs
         */
-       public function actuallyNotifyOnPageChange( $editor, $title, $timestamp, $summary, $minorEdit, $oldid, $watchers ) {
+       public function actuallyNotifyOnPageChange( $editor, $title, $timestamp, $summary, $minorEdit,
+               $oldid, $watchers, $pageStatus = 'changed' ) {
                # we use $wgPasswordSender as sender's address
                global $wgEnotifWatchlist;
                global $wgEnotifMinorEdits, $wgEnotifUserTalk;
@@ -536,6 +539,14 @@ class EmailNotification {
                $this->oldid = $oldid;
                $this->editor = $editor;
                $this->composed_common = false;
+               $this->pageStatus = $pageStatus;
+
+               $formattedPageStatus = array( 'deleted', 'created', 'moved', 'restored', 'changed' );
+
+               wfRunHooks( 'UpdateUserMailerFormattedPageStatus', array( &$formattedPageStatus ) );
+               if ( !in_array( $this->pageStatus, $formattedPageStatus ) ) {
+                       throw new MWException( 'Not a valid page status!' );
+               }
 
                $userTalkId = false;
 
@@ -625,26 +636,27 @@ class EmailNotification {
 
                $keys = array();
                $postTransformKeys = array();
+               $pageTitleUrl = $this->title->getCanonicalUrl();
+               $pageTitle = $this->title->getPrefixedText();
 
                if ( $this->oldid ) {
                        // Always show a link to the diff which triggered the mail. See bug 32210.
-                       $keys['$NEWPAGE'] = wfMessage( 'enotif_lastdiff',
+                       $keys['$NEWPAGE'] = "\n\n" . wfMessage( 'enotif_lastdiff',
                                $this->title->getCanonicalUrl( 'diff=next&oldid=' . $this->oldid ) )
                                ->inContentLanguage()->text();
+
                        if ( !$wgEnotifImpersonal ) {
                                // For personal mail, also show a link to the diff of all changes
                                // since last visited.
-                               $keys['$NEWPAGE'] .= " \n" . wfMessage( 'enotif_lastvisited',
+                               $keys['$NEWPAGE'] .= "\n\n" .  wfMessage( 'enotif_lastvisited',
                                        $this->title->getCanonicalUrl( 'diff=0&oldid=' . $this->oldid ) )
                                        ->inContentLanguage()->text();
                        }
                        $keys['$OLDID']   = $this->oldid;
-                       $keys['$CHANGEDORCREATED'] = wfMessage( 'changed' )->inContentLanguage()->text();
                } else {
-                       $keys['$NEWPAGE'] = wfMessage( 'enotif_newpagetext' )->inContentLanguage()->text();
                        # clear $OLDID placeholder in the message template
                        $keys['$OLDID']   = '';
-                       $keys['$CHANGEDORCREATED'] = wfMessage( 'created' )->inContentLanguage()->text();
+                       $keys['$NEWPAGE'] = '';
                }
 
                $keys['$PAGETITLE'] = $this->title->getPrefixedText();
@@ -658,6 +670,7 @@ class EmailNotification {
                        $keys['$PAGEEDITOR'] = wfMessage( 'enotif_anon_editor', $this->editor->getName() )
                                ->inContentLanguage()->text();
                        $keys['$PAGEEDITOR_EMAIL'] = wfMessage( 'noemailtitle' )->inContentLanguage()->text();
+
                } else {
                        $keys['$PAGEEDITOR'] = $wgEnotifUseRealName ? $this->editor->getRealName() : $this->editor->getName();
                        $emailPage = SpecialPage::getSafeTitleFor( 'Emailuser', $this->editor->getName() );
@@ -670,11 +683,12 @@ class EmailNotification {
                $postTransformKeys['$PAGESUMMARY'] = $this->summary == '' ? ' - ' : $this->summary;
 
                # Now build message's subject and body
+               $this->subject = wfMessage( 'enotif_subject_' . $this->pageStatus )->inContentLanguage()
+                       ->params( $pageTitle, $keys['$PAGEEDITOR'] )->escaped();
 
-               $subject = wfMessage( 'enotif_subject' )->inContentLanguage()->plain();
-               $subject = strtr( $subject, $keys );
-               $subject = MessageCache::singleton()->transform( $subject, false, null, $this->title );
-               $this->subject = strtr( $subject, $postTransformKeys );
+               $keys['$PAGEINTRO'] = wfMessage( 'enotif_body_intro_' . $this->pageStatus )
+                       ->inContentLanguage()->params( $pageTitle, $keys['$PAGEEDITOR'], $pageTitleUrl )
+                       ->escaped();
 
                $body = wfMessage( 'enotif_body' )->inContentLanguage()->plain();
                $body = strtr( $body, $keys );
index 81b3ef2..cae4a21 100644 (file)
@@ -407,6 +407,7 @@ class ApiEditPage extends ApiBase {
                                } else {
                                        $r['oldrevid'] = intval( $oldRevId );
                                        $r['newrevid'] = intval( $newRevId );
+                                       $pageObj->clear();
                                        $r['newtimestamp'] = wfTimestamp( TS_ISO_8601,
                                                $pageObj->getTimestamp() );
                                }
index 730ad8e..9a8e3bc 100644 (file)
@@ -35,7 +35,7 @@ class ApiFormatYaml extends ApiFormatJson {
        }
 
        public function getDescription() {
-               return 'Output data in YAML format' . parent::getDescription();
+               return 'Output data in YAML format' . ApiFormatBase::getDescription();
        }
 
        public function getVersion() {
index 91b8cc8..97f5ecd 100644 (file)
@@ -999,7 +999,7 @@ class ApiMain extends ApiBase {
                                'Maximum lag can be used when MediaWiki is installed on a database replicated cluster.',
                                'To save actions causing any more site replication lag, this parameter can make the client',
                                'wait until the replication lag is less than the specified value.',
-                               'In case of a replag error, a HTTP 503 error is returned, with the message like',
+                               'In case of a replag error, error code "maxlag" is returned, with the message like',
                                '"Waiting for $host: $lag seconds lagged\n".',
                                'See https://www.mediawiki.org/wiki/Manual:Maxlag_parameter for more information',
                        ),
index 4398eb0..f21bbc0 100644 (file)
@@ -47,7 +47,7 @@ class ApiOptions extends ApiBase {
                }
 
                $params = $this->extractRequestParams();
-               $changes = 0;
+               $changed = false;
 
                if ( isset( $params['optionvalue'] ) && !isset( $params['optionname'] ) ) {
                        $this->dieUsageMsg( array( 'missingparam', 'optionname' ) );
@@ -55,26 +55,43 @@ class ApiOptions extends ApiBase {
 
                if ( $params['reset'] ) {
                        $user->resetOptions();
-                       $changes++;
+                       $changed = true;
                }
+
+               $changes = array();
                if ( count( $params['change'] ) ) {
                        foreach ( $params['change'] as $entry ) {
                                $array = explode( '=', $entry, 2 );
-                               $user->setOption( $array[0], isset( $array[1] ) ? $array[1] : null );
-                               $changes++;
+                               $changes[$array[0]] = isset( $array[1] ) ? $array[1] : null;
                        }
                }
                if ( isset( $params['optionname'] ) ) {
                        $newValue = isset( $params['optionvalue'] ) ? $params['optionvalue'] : null;
-                       $user->setOption( $params['optionname'], $newValue );
-                       $changes++;
+                       $changes[$params['optionname']] = $newValue;
+               }
+               if ( !count( $changes ) ) {
+                       $this->dieUsage( 'No changes were requested', 'nochanges' );
+               }
+
+               $prefs = Preferences::getPreferences( $user, $this->getContext() );
+               foreach ( $changes as $key => $value ) {
+                       if ( !isset( $prefs[$key] ) ) {
+                               $this->setWarning( "Not a valid preference: $key" );
+                               continue;
+                       }
+                       $field = HTMLForm::loadInputFromParameters( $key, $prefs[$key] );
+                       $validation = $field->validate( $value, $user->getOptions() );
+                       if ( $validation === true ) {
+                               $user->setOption( $key, $value );
+                               $changed = true;
+                       } else {
+                               $this->setWarning( "Validation error for '$key': $validation" );
+                       }
                }
 
-               if ( $changes ) {
+               if ( $changed ) {
                        // Commit changes
                        $user->saveSettings();
-               } else {
-                       $this->dieUsage( 'No changes were requested', 'nochanges' );
                }
 
                $this->getResult()->addValue( null, $this->getModuleName(), 'success' );
index 12c20fb..08764a5 100644 (file)
@@ -72,7 +72,7 @@ class ApiParse extends ApiBase {
                // TODO: Does this still need $wgTitle?
                global $wgParser, $wgTitle;
 
-               // Currently unnecessary, code to act as a safeguard against any change in current behaviour of uselang breaks
+               // Currently unnecessary, code to act as a safeguard against any change in current behaviour of uselang
                $oldLang = null;
                if ( isset( $params['uselang'] ) && $params['uselang'] != $this->getContext()->getLanguage()->getCode() ) {
                        $oldLang = $this->getContext()->getLanguage(); // Backup language
index 2c48aca..5f4d9f9 100644 (file)
@@ -534,7 +534,7 @@ abstract class ApiQueryBase extends ApiBase {
         * @return bool
         */
        public function validateSha1Hash( $hash ) {
-               return preg_match( '/[a-fA-F0-9]{40}/', $hash );
+               return preg_match( '/^[a-f0-9]{40}$/', $hash );
        }
 
        /**
@@ -542,7 +542,7 @@ abstract class ApiQueryBase extends ApiBase {
         * @return bool
         */
        public function validateSha1Base36Hash( $hash ) {
-               return preg_match( '/[a-zA-Z0-9]{31}/', $hash );
+               return preg_match( '/^[a-z0-9]{31}$/', $hash );
        }
 
        /**
index a8d4a7c..7cc1755 100644 (file)
@@ -182,8 +182,8 @@ class ApiQueryBlocks extends ApiQueryBase {
                                $block['reason'] = $row->ipb_reason;
                        }
                        if ( $fld_range && !$row->ipb_auto ) {
-                               $block['rangestart'] = IP::hexToQuad( $row->ipb_range_start );
-                               $block['rangeend'] = IP::hexToQuad( $row->ipb_range_end );
+                               $block['rangestart'] = IP::formatHex( $row->ipb_range_start );
+                               $block['rangeend'] = IP::formatHex( $row->ipb_range_end );
                        }
                        if ( $fld_flags ) {
                                // For clarity, these flags use the same names as their action=block counterparts
index de02614..1933c78 100644 (file)
@@ -580,6 +580,15 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                        ApiBase::PROP_NULLABLE => true
                                )
                        ),
+                       'dimensions' => array(
+                               'size' => 'integer',
+                               'width' => 'integer',
+                               'height' => 'integer',
+                               'pagecount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
                        'comment' => array(
                                'commenthidden' => 'boolean',
                                'comment' => array(
@@ -635,6 +644,13 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                        ApiBase::PROP_NULLABLE => true
                                )
                        ),
+                       'thumbmime' => array(
+                               'filehidden' => 'boolean',
+                               'thumbmime' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
                        'mediatype' => array(
                                'filehidden' => 'boolean',
                                'mediatype' => array(
index 5d85c22..e51b558 100644 (file)
@@ -241,7 +241,12 @@ class ApiQueryLogEvents extends ApiQueryBase {
                                break;
                        case 'rights':
                                $vals2 = array();
-                               list( $vals2['old'], $vals2['new'] ) = $params;
+                               if( $legacy ) {
+                                       list( $vals2['old'], $vals2['new'] ) = $params;
+                               } else {
+                                       $vals2['new'] = implode( ', ', $params['5::newgroups'] );
+                                       $vals2['old'] = implode( ', ', $params['4::oldgroups'] );
+                               }
                                $vals[$type] = $vals2;
                                $params = null;
                                break;
index 14aed28..0205005 100644 (file)
@@ -98,7 +98,7 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
                                        $vals['user'] = $row->user_name;
                                }
 
-                               if ( isset( $prop['user'] ) ) {
+                               if ( isset( $prop['userid'] ) || /*B/C*/isset( $prop['user'] ) ) {
                                        $vals['userid'] = $row->pt_user;
                                }
 
@@ -231,6 +231,9 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
                                ),
                                'userid' => 'integer'
                        ),
+                       'userid' => array(
+                               'userid' => 'integer'
+                       ),
                        'comment' => array(
                                'comment' => 'string'
                        ),
index ad40a64..66ff3f0 100644 (file)
@@ -546,9 +546,9 @@ class ApiQueryRevisions extends ApiQueryBase {
 
                        if ( $text === null ) {
                                $format = $this->contentFormat ? $this->contentFormat : $content->getDefaultFormat();
+                               $model = $content->getModel();
 
                                if ( !$content->isSupportedFormat( $format ) ) {
-                                       $model = $content->getModel();
                                        $name = $title->getPrefixedDBkey();
 
                                        $this->dieUsage( "The requested format {$this->contentFormat} is not supported ".
@@ -556,7 +556,11 @@ class ApiQueryRevisions extends ApiQueryBase {
                                }
 
                                $text = $content->serialize( $format );
+
+                               // always include format and model.
+                               // Format is needed to deserialize, model is needed to interpret.
                                $vals['contentformat'] = $format;
+                               $vals['contentmodel'] = $model;
                        }
 
                        if ( $text !== false ) {
@@ -783,7 +787,10 @@ class ApiQueryRevisions extends ApiQueryBase {
                                        ApiBase::PROP_NULLABLE => true
                                ),
                                'texthidden' => 'boolean'
-                       )
+                       ),
+                       'contentmodel' => array(
+                               'contentmodel' => 'string'
+                       ),
                );
 
                self::addTokenProperties( $props, $this->getTokenFunctions() );
index 0509f1f..275275e 100644 (file)
@@ -50,6 +50,14 @@ class ApiWatch extends ApiBase {
 
                $res = array( 'title' => $title->getPrefixedText() );
 
+               // Currently unnecessary, code to act as a safeguard against any change in current behaviour of uselang
+               // Copy from ApiParse
+               $oldLang = null;
+               if ( isset( $params['uselang'] ) && $params['uselang'] != $this->getContext()->getLanguage()->getCode() ) {
+                       $oldLang = $this->getContext()->getLanguage(); // Backup language
+                       $this->getContext()->setLanguage( Language::factory( $params['uselang'] ) );
+               }
+
                if ( $params['unwatch'] ) {
                        $res['unwatched'] = '';
                        $res['message'] = $this->msg( 'removedwatchtext', $title->getPrefixedText() )->title( $title )->parseAsBlock();
@@ -59,6 +67,11 @@ class ApiWatch extends ApiBase {
                        $res['message'] = $this->msg( 'addedwatchtext', $title->getPrefixedText() )->title( $title )->parseAsBlock();
                        $success = WatchAction::doWatch( $title, $user );
                }
+
+               if ( !is_null( $oldLang ) ) {
+                       $this->getContext()->setLanguage( $oldLang ); // Reset language to $oldLang
+               }
+
                if ( !$success ) {
                        $this->dieUsageMsg( 'hookaborted' );
                }
@@ -88,6 +101,7 @@ class ApiWatch extends ApiBase {
                                ApiBase::PARAM_REQUIRED => true
                        ),
                        'unwatch' => false,
+                       'uselang' => null,
                        'token' => array(
                                ApiBase::PARAM_TYPE => 'string',
                                ApiBase::PARAM_REQUIRED => true
@@ -99,6 +113,7 @@ class ApiWatch extends ApiBase {
                return array(
                        'title' => 'The page to (un)watch',
                        'unwatch' => 'If set the page will be unwatched rather than watched',
+                       'uselang' => 'Language to show the message in',
                        'token' => 'A token previously acquired via prop=info',
                );
        }
diff --git a/includes/cache/BacklinkCache.php b/includes/cache/BacklinkCache.php
new file mode 100644 (file)
index 0000000..0710caa
--- /dev/null
@@ -0,0 +1,453 @@
+<?php
+/**
+ * Class for fetching backlink lists, approximate backlink counts and
+ * partitions.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Tim Starling
+ * @copyright © 2009, Tim Starling, Domas Mituzas
+ * @copyright © 2010, Max Sem
+ * @copyright © 2011, Antoine Musso
+ */
+
+/**
+ * Class for fetching backlink lists, approximate backlink counts and
+ * partitions. This is a shared cache.
+ *
+ * Instances of this class should typically be fetched with the method
+ * $title->getBacklinkCache().
+ *
+ * Ideally you should only get your backlinks from here when you think
+ * there is some advantage in caching them. Otherwise it's just a waste
+ * of memory.
+ *
+ * Introduced by r47317
+ *
+ * @internal documentation reviewed on 18 Mar 2011 by hashar
+ */
+class BacklinkCache {
+       /** @var ProcessCacheLRU */
+       protected static $cache;
+
+       /**
+        * Multi dimensions array representing batches. Keys are:
+        *  > (string) links table name
+        *    > 'numRows' : Number of rows for this link table
+        *    > 'batches' : array( $start, $end )
+        *
+        * @see BacklinkCache::partitionResult()
+        *
+        * Cleared with BacklinkCache::clear()
+        */
+       protected $partitionCache = array();
+
+       /**
+        * Contains the whole links from a database result.
+        * This is raw data that will be partitioned in $partitionCache
+        *
+        * Initialized with BacklinkCache::getLinks()
+        * Cleared with BacklinkCache::clear()
+        */
+       protected $fullResultCache = array();
+
+       /**
+        * Local copy of a database object.
+        *
+        * Accessor: BacklinkCache::getDB()
+        * Mutator : BacklinkCache::setDB()
+        * Cleared with BacklinkCache::clear()
+        */
+       protected $db;
+
+       /**
+        * Local copy of a Title object
+        */
+       protected $title;
+
+       const CACHE_EXPIRY = 3600;
+
+       /**
+        * Create a new BacklinkCache
+        *
+        * @param Title $title : Title object to create a backlink cache for
+        */
+       public function __construct( Title $title ) {
+               $this->title = $title;
+       }
+
+       /**
+        * Create a new BacklinkCache or reuse any existing one.
+        * Currently, only one cache instance can exist; callers that
+        * need multiple backlink cache objects should keep them in scope.
+        *
+        * @param Title $title : Title object to get a backlink cache for
+        * @return BacklinkCache
+        */
+       public static function get( Title $title ) {
+               if ( !self::$cache ) { // init cache
+                       self::$cache = new ProcessCacheLRU( 1 );
+               }
+               $dbKey = $title->getPrefixedDBkey();
+               if ( !self::$cache->has( $dbKey, 'obj' ) ) {
+                       self::$cache->set( $dbKey, 'obj', new self( $title ) );
+               }
+               return self::$cache->get( $dbKey, 'obj' );
+       }
+
+       /**
+        * Serialization handler, diasallows to serialize the database to prevent
+        * failures after this class is deserialized from cache with dead DB
+        * connection.
+        *
+        * @return array
+        */
+       function __sleep() {
+               return array( 'partitionCache', 'fullResultCache', 'title' );
+       }
+
+       /**
+        * Clear locally stored data and database object.
+        */
+       public function clear() {
+               $this->partitionCache = array();
+               $this->fullResultCache = array();
+               unset( $this->db );
+       }
+
+       /**
+        * Set the Database object to use
+        *
+        * @param $db DatabaseBase
+        */
+       public function setDB( $db ) {
+               $this->db = $db;
+       }
+
+       /**
+        * Get the slave connection to the database
+        * When non existing, will initialize the connection.
+        * @return DatabaseBase object
+        */
+       protected function getDB() {
+               if ( !isset( $this->db ) ) {
+                       $this->db = wfGetDB( DB_SLAVE );
+               }
+
+               return $this->db;
+       }
+
+       /**
+        * Get the backlinks for a given table. Cached in process memory only.
+        * @param $table String
+        * @param $startId Integer or false
+        * @param $endId Integer or false
+        * @return TitleArrayFromResult
+        */
+       public function getLinks( $table, $startId = false, $endId = false ) {
+               wfProfileIn( __METHOD__ );
+
+               $fromField = $this->getPrefix( $table ) . '_from';
+
+               if ( $startId || $endId ) {
+                       // Partial range, not cached
+                       wfDebug( __METHOD__ . ": from DB (uncacheable range)\n" );
+                       $conds = $this->getConditions( $table );
+
+                       // Use the from field in the condition rather than the joined page_id,
+                       // because databases are stupid and don't necessarily propagate indexes.
+                       if ( $startId ) {
+                               $conds[] = "$fromField >= " . intval( $startId );
+                       }
+
+                       if ( $endId ) {
+                               $conds[] = "$fromField <= " . intval( $endId );
+                       }
+
+                       $res = $this->getDB()->select(
+                               array( $table, 'page' ),
+                               array( 'page_namespace', 'page_title', 'page_id' ),
+                               $conds,
+                               __METHOD__,
+                               array(
+                                       'STRAIGHT_JOIN',
+                                       'ORDER BY' => $fromField
+                               ) );
+                       $ta = TitleArray::newFromResult( $res );
+
+                       wfProfileOut( __METHOD__ );
+                       return $ta;
+               }
+
+               // @todo FIXME: Make this a function?
+               if ( !isset( $this->fullResultCache[$table] ) ) {
+                       wfDebug( __METHOD__ . ": from DB\n" );
+                       $res = $this->getDB()->select(
+                               array( $table, 'page' ),
+                               array( 'page_namespace', 'page_title', 'page_id' ),
+                               $this->getConditions( $table ),
+                               __METHOD__,
+                               array(
+                                       'STRAIGHT_JOIN',
+                                       'ORDER BY' => $fromField,
+                               ) );
+                       $this->fullResultCache[$table] = $res;
+               }
+
+               $ta = TitleArray::newFromResult( $this->fullResultCache[$table] );
+
+               wfProfileOut( __METHOD__ );
+               return $ta;
+       }
+
+       /**
+        * Get the field name prefix for a given table
+        * @param $table String
+        * @throws MWException
+        * @return null|string
+        */
+       protected function getPrefix( $table ) {
+               static $prefixes = array(
+                       'pagelinks'     => 'pl',
+                       'imagelinks'    => 'il',
+                       'categorylinks' => 'cl',
+                       'templatelinks' => 'tl',
+                       'redirect'      => 'rd',
+               );
+
+               if ( isset( $prefixes[$table] ) ) {
+                       return $prefixes[$table];
+               } else {
+                       $prefix = null;
+                       wfRunHooks( 'BacklinkCacheGetPrefix', array( $table, &$prefix ) );
+                       if( $prefix ) {
+                               return $prefix;
+                       } else {
+                               throw new MWException( "Invalid table \"$table\" in " . __CLASS__ );
+                       }
+               }
+       }
+
+       /**
+        * Get the SQL condition array for selecting backlinks, with a join
+        * on the page table.
+        * @param $table String
+        * @throws MWException
+        * @return array|null
+        */
+       protected function getConditions( $table ) {
+               $prefix = $this->getPrefix( $table );
+
+               // @todo FIXME: imagelinks and categorylinks do not rely on getNamespace,
+               // they could be moved up for nicer case statements
+               switch ( $table ) {
+                       case 'pagelinks':
+                       case 'templatelinks':
+                               $conds = array(
+                                       "{$prefix}_namespace" => $this->title->getNamespace(),
+                                       "{$prefix}_title"     => $this->title->getDBkey(),
+                                       "page_id={$prefix}_from"
+                               );
+                               break;
+                       case 'redirect':
+                               $conds = array(
+                                       "{$prefix}_namespace" => $this->title->getNamespace(),
+                                       "{$prefix}_title"     => $this->title->getDBkey(),
+                                       $this->getDb()->makeList( array(
+                                               "{$prefix}_interwiki = ''",
+                                               "{$prefix}_interwiki is null",
+                                       ), LIST_OR ),
+                                       "page_id={$prefix}_from"
+                               );
+                               break;
+                       case 'imagelinks':
+                               $conds = array(
+                                       'il_to' => $this->title->getDBkey(),
+                                       'page_id=il_from'
+                               );
+                               break;
+                       case 'categorylinks':
+                               $conds = array(
+                                       'cl_to' => $this->title->getDBkey(),
+                                       'page_id=cl_from',
+                               );
+                               break;
+                       default:
+                               $conds = null;
+                               wfRunHooks( 'BacklinkCacheGetConditions', array( $table, $this->title, &$conds ) );
+                               if( !$conds ) {
+                                       throw new MWException( "Invalid table \"$table\" in " . __CLASS__ );
+                               }
+               }
+
+               return $conds;
+       }
+
+       /**
+        * Check if there are any backlinks
+        * @param $table String
+        * @return bool
+        */
+       public function hasLinks( $table ) {
+               return ( $this->getNumLinks( $table, 1 ) > 0 );
+       }
+
+       /**
+        * Get the approximate number of backlinks
+        * @param $table String
+        * @param $max integer Only count up to this many backlinks
+        * @return integer
+        */
+       public function getNumLinks( $table, $max = INF ) {
+               global $wgMemc;
+
+               // 1) try partition cache ...
+               if ( isset( $this->partitionCache[$table] ) ) {
+                       $entry = reset( $this->partitionCache[$table] );
+                       return min( $max, $entry['numRows'] );
+               }
+
+               // 2) ... then try full result cache ...
+               if ( isset( $this->fullResultCache[$table] ) ) {
+                       return min( $max, $this->fullResultCache[$table]->numRows() );
+               }
+
+               $memcKey = wfMemcKey( 'numbacklinks', md5( $this->title->getPrefixedDBkey() ), $table );
+
+               // 3) ... fallback to memcached ...
+               $count = $wgMemc->get( $memcKey );
+               if ( $count ) {
+                       return min( $max, $count );
+               }
+
+               // 4) fetch from the database ...
+               if ( is_infinite( $max ) ) { // full count
+                       $count = $this->getLinks( $table )->count();
+                       $wgMemc->set( $memcKey, $count, self::CACHE_EXPIRY );
+               } else { // with limit
+                       $count = $this->getDB()->select(
+                               array( $table, 'page' ),
+                               '1',
+                               $this->getConditions( $table ),
+                               __METHOD__,
+                               array( 'LIMIT' => $max )
+                       )->numRows();
+               }
+
+               return $count;
+       }
+
+       /**
+        * Partition the backlinks into batches.
+        * Returns an array giving the start and end of each range. The first
+        * batch has a start of false, and the last batch has an end of false.
+        *
+        * @param $table String: the links table name
+        * @param $batchSize Integer
+        * @return Array
+        */
+       public function partition( $table, $batchSize ) {
+               global $wgMemc;
+
+               // 1) try partition cache ...
+               if ( isset( $this->partitionCache[$table][$batchSize] ) ) {
+                       wfDebug( __METHOD__ . ": got from partition cache\n" );
+                       return $this->partitionCache[$table][$batchSize]['batches'];
+               }
+
+               $this->partitionCache[$table][$batchSize] = false;
+               $cacheEntry =& $this->partitionCache[$table][$batchSize];
+
+               // 2) ... then try full result cache ...
+               if ( isset( $this->fullResultCache[$table] ) ) {
+                       $cacheEntry = $this->partitionResult( $this->fullResultCache[$table], $batchSize );
+                       wfDebug( __METHOD__ . ": got from full result cache\n" );
+                       return $cacheEntry['batches'];
+               }
+
+               $memcKey = wfMemcKey(
+                       'backlinks',
+                       md5( $this->title->getPrefixedDBkey() ),
+                       $table,
+                       $batchSize
+               );
+
+               // 3) ... fallback to memcached ...
+               $memcValue = $wgMemc->get( $memcKey );
+               if ( is_array( $memcValue ) ) {
+                       $cacheEntry = $memcValue;
+                       wfDebug( __METHOD__ . ": got from memcached $memcKey\n" );
+                       return $cacheEntry['batches'];
+               }
+
+
+               // 4) ... finally fetch from the slow database :(
+               $this->getLinks( $table );
+               $cacheEntry = $this->partitionResult( $this->fullResultCache[$table], $batchSize );
+               // Save partitions to memcached
+               $wgMemc->set( $memcKey, $cacheEntry, self::CACHE_EXPIRY );
+
+               // Save backlink count to memcached
+               $memcKey = wfMemcKey( 'numbacklinks', md5( $this->title->getPrefixedDBkey() ), $table );
+               $wgMemc->set( $memcKey, $cacheEntry['numRows'], self::CACHE_EXPIRY );
+
+               wfDebug( __METHOD__ . ": got from database\n" );
+               return $cacheEntry['batches'];
+       }
+
+       /**
+        * Partition a DB result with backlinks in it into batches
+        * @param $res ResultWrapper database result
+        * @param $batchSize integer
+        * @throws MWException
+        * @return array @see
+        */
+       protected function partitionResult( $res, $batchSize ) {
+               $batches = array();
+               $numRows = $res->numRows();
+               $numBatches = ceil( $numRows / $batchSize );
+
+               for ( $i = 0; $i < $numBatches; $i++ ) {
+                       if ( $i == 0  ) {
+                               $start = false;
+                       } else {
+                               $rowNum = intval( $numRows * $i / $numBatches );
+                               $res->seek( $rowNum );
+                               $row = $res->fetchObject();
+                               $start = $row->page_id;
+                       }
+
+                       if ( $i == $numBatches - 1 ) {
+                               $end = false;
+                       } else {
+                               $rowNum = intval( $numRows * ( $i + 1 ) / $numBatches );
+                               $res->seek( $rowNum );
+                               $row = $res->fetchObject();
+                               $end = $row->page_id - 1;
+                       }
+
+                       # Sanity check order
+                       if ( $start && $end && $start > $end ) {
+                               throw new MWException( __METHOD__ . ': Internal error: query result out of order' );
+                       }
+
+                       $batches[] = array( $start, $end );
+               }
+
+               return array( 'numRows' => $numRows, 'batches' => $batches );
+       }
+}
index 51a28ca..791ae3e 100644 (file)
 
 /**
  * Class to invalidate the HTML cache of all the pages linking to a given title.
- * Small numbers of links will be done immediately, large numbers are pushed onto
- * the job queue.
- *
- * This class is designed to work efficiently with small numbers of links, and
- * to work reasonably well with up to ~10^5 links. Above ~10^6 links, the memory
- * and time requirements of loading all backlinked IDs in doUpdate() might become
- * prohibitive. The requirements measured at Wikimedia are approximately:
- *
- *   memory: 48 bytes per row
- *   time: 16us per row for the query plus processing
- *
- * The reason this query is done is to support partitioning of the job
- * by backlinked ID. The memory issue could be allieviated by doing this query in
- * batches, but of course LIMIT with an offset is inefficient on the DB side.
- *
- * The class is nevertheless a vast improvement on the previous method of using
- * File::getLinksTo() and Title::touchArray(), which uses about 2KB of memory per
- * link.
  *
  * @ingroup Cache
  */
@@ -50,8 +32,7 @@ class HTMLCacheUpdate implements DeferrableUpdate {
         */
        public $mTitle;
 
-       public $mTable, $mPrefix, $mStart, $mEnd;
-       public $mRowsPerJob, $mRowsPerQuery;
+       public $mTable;
 
        /**
         * @param $titleTo
@@ -59,172 +40,31 @@ class HTMLCacheUpdate implements DeferrableUpdate {
         * @param $start bool
         * @param $end bool
         */
-       function __construct( $titleTo, $table, $start = false, $end = false ) {
-               global $wgUpdateRowsPerJob, $wgUpdateRowsPerQuery;
-
+       function __construct( Title $titleTo, $table ) {
                $this->mTitle = $titleTo;
                $this->mTable = $table;
-               $this->mStart = $start;
-               $this->mEnd = $end;
-               $this->mRowsPerJob = $wgUpdateRowsPerJob;
-               $this->mRowsPerQuery = $wgUpdateRowsPerQuery;
-               $this->mCache = $this->mTitle->getBacklinkCache();
        }
 
        public function doUpdate() {
-               if ( $this->mStart || $this->mEnd ) {
-                       $this->doPartialUpdate();
-                       return;
-               }
-
-               # Get an estimate of the number of rows from the BacklinkCache
-               $numRows = $this->mCache->getNumLinks( $this->mTable );
-               if ( $numRows > $this->mRowsPerJob * 2 ) {
-                       # Do fast cached partition
-                       $this->insertJobs();
-               } else {
-                       # Get the links from the DB
-                       $titleArray = $this->mCache->getLinks( $this->mTable );
-                       # Check if the row count estimate was correct
-                       if ( $titleArray->count() > $this->mRowsPerJob * 2 ) {
-                               # Not correct, do accurate partition
-                               wfDebug( __METHOD__.": row count estimate was incorrect, repartitioning\n" );
-                               $this->insertJobsFromTitles( $titleArray );
-                       } else {
-                               $this->invalidateTitles( $titleArray );
-                       }
-               }
-       }
-
-       /**
-        * Update some of the backlinks, defined by a page ID range
-        */
-       protected function doPartialUpdate() {
-               $titleArray = $this->mCache->getLinks( $this->mTable, $this->mStart, $this->mEnd );
-               if ( $titleArray->count() <= $this->mRowsPerJob * 2 ) {
-                       # This partition is small enough, do the update
-                       $this->invalidateTitles( $titleArray );
-               } else {
-                       # Partitioning was excessively inaccurate. Divide the job further.
-                       # This can occur when a large number of links are added in a short
-                       # period of time, say by updating a heavily-used template.
-                       $this->insertJobsFromTitles( $titleArray );
-               }
-       }
-
-       /**
-        * Partition the current range given by $this->mStart and $this->mEnd,
-        * using a pre-calculated title array which gives the links in that range.
-        * Queue the resulting jobs.
-        *
-        * @param $titleArray array
-        */
-       protected function insertJobsFromTitles( $titleArray ) {
-               # We make subpartitions in the sense that the start of the first job
-               # will be the start of the parent partition, and the end of the last
-               # job will be the end of the parent partition.
-               $jobs = array();
-               $start = $this->mStart; # start of the current job
-               $numTitles = 0;
-               foreach ( $titleArray as $title ) {
-                       $id = $title->getArticleID();
-                       # $numTitles is now the number of titles in the current job not
-                       # including the current ID
-                       if ( $numTitles >= $this->mRowsPerJob ) {
-                               # Add a job up to but not including the current ID
-                               $params = array(
-                                       'table' => $this->mTable,
-                                       'start' => $start,
-                                       'end' => $id - 1
-                               );
-                               $jobs[] = new HTMLCacheUpdateJob( $this->mTitle, $params );
-                               $start = $id;
-                               $numTitles = 0;
-                       }
-                       $numTitles++;
-               }
-               # Last job
-               $params = array(
-                       'table' => $this->mTable,
-                       'start' => $start,
-                       'end' => $this->mEnd
-               );
-               $jobs[] = new HTMLCacheUpdateJob( $this->mTitle, $params );
-               wfDebug( __METHOD__.": repartitioning into " . count( $jobs ) . " jobs\n" );
-
-               if ( count( $jobs ) < 2 ) {
-                       # I don't think this is possible at present, but handling this case
-                       # makes the code a bit more robust against future code updates and
-                       # avoids a potential infinite loop of repartitioning
-                       wfDebug( __METHOD__.": repartitioning failed!\n" );
-                       $this->invalidateTitles( $titleArray );
-                       return;
-               }
-
-               Job::batchInsert( $jobs );
-       }
+               wfProfileIn( __METHOD__ );
 
-       /**
-        * @return mixed
-        */
-       protected function insertJobs() {
-               $batches = $this->mCache->partition( $this->mTable, $this->mRowsPerJob );
-               if ( !$batches ) {
-                       return;
-               }
-               $jobs = array();
-               foreach ( $batches as $batch ) {
-                       $params = array(
+               $job = new HTMLCacheUpdateJob(
+                       $this->mTitle,
+                       array(
                                'table' => $this->mTable,
-                               'start' => $batch[0],
-                               'end' => $batch[1],
-                       );
-                       $jobs[] = new HTMLCacheUpdateJob( $this->mTitle, $params );
-               }
-               Job::batchInsert( $jobs );
-       }
-
-       /**
-        * Invalidate an array (or iterator) of Title objects, right now
-        * @param $titleArray array
-        */
-       protected function invalidateTitles( $titleArray ) {
-               global $wgUseFileCache, $wgUseSquid;
-
-               $dbw = wfGetDB( DB_MASTER );
-               $timestamp = $dbw->timestamp();
-
-               # Get all IDs in this query into an array
-               $ids = array();
-               foreach ( $titleArray as $title ) {
-                       $ids[] = $title->getArticleID();
-               }
-
-               if ( !$ids ) {
-                       return;
-               }
-
-               # Update page_touched
-               $batches = array_chunk( $ids, $this->mRowsPerQuery );
-               foreach ( $batches as $batch ) {
-                       $dbw->update( 'page',
-                               array( 'page_touched' => $timestamp ),
-                               array( 'page_id' => $batch ),
-                               __METHOD__
-                       );
-               }
+                       ) + Job::newRootJobParams( // "overall" refresh links job info
+                               "htmlCacheUpdate:{$this->mTable}:{$this->mTitle->getPrefixedText()}"
+                       )
+               );
 
-               # Update squid
-               if ( $wgUseSquid ) {
-                       $u = SquidUpdate::newFromTitles( $titleArray );
-                       $u->doUpdate();
+               $count = $this->mTitle->getBacklinkCache()->getNumLinks( $this->mTable, 200 );
+               if ( $count >= 200 ) { // many backlinks
+                       JobQueueGroup::singleton()->push( $job );
+                       JobQueueGroup::singleton()->deduplicateRootJob( $job );
+               } else { // few backlinks ($count might be off even if 0)
+                       $job->run(); // just do the purge query now
                }
 
-               # Update file cache
-               if  ( $wgUseFileCache ) {
-                       foreach ( $titleArray as $title ) {
-                               HTMLFileCache::clearFileCache( $title );
-                       }
-               }
+               wfProfileOut( __METHOD__ );
        }
 }
index f215ebd..76c76f3 100644 (file)
@@ -28,6 +28,8 @@
 class ProcessCacheLRU {
        /** @var Array */
        protected $cache = array(); // (key => prop => value)
+       /** @var Array */
+       protected $cacheTimes = array(); // (key => prop => UNIX timestamp)
 
        protected $maxCacheKeys; // integer; max entries
 
@@ -44,7 +46,7 @@ class ProcessCacheLRU {
 
        /**
         * Set a property field for a cache entry.
-        * This will prune the cache if it gets too large.
+        * This will prune the cache if it gets too large based on LRU.
         * If the item is already set, it will be pushed to the top of the cache.
         *
         * @param $key string
@@ -57,9 +59,12 @@ class ProcessCacheLRU {
                        $this->ping( $key ); // push to top
                } elseif ( count( $this->cache ) >= $this->maxCacheKeys ) {
                        reset( $this->cache );
-                       unset( $this->cache[key( $this->cache )] );
+                       $evictKey = key( $this->cache );
+                       unset( $this->cache[$evictKey] );
+                       unset( $this->cacheTimes[$evictKey] );
                }
                $this->cache[$key][$prop] = $value;
+               $this->cacheTimes[$key][$prop] = time();
        }
 
        /**
@@ -67,10 +72,14 @@ class ProcessCacheLRU {
         *
         * @param $key string
         * @param $prop string
+        * @param $maxAge integer Ignore items older than this many seconds (since 1.21)
         * @return bool
         */
-       public function has( $key, $prop ) {
-               return isset( $this->cache[$key][$prop] );
+       public function has( $key, $prop, $maxAge = 0 ) {
+               if ( isset( $this->cache[$key][$prop] ) ) {
+                       return ( $maxAge <= 0 || ( time() - $this->cacheTimes[$key][$prop] ) <= $maxAge );
+               }
+               return false;
        }
 
        /**
@@ -100,9 +109,11 @@ class ProcessCacheLRU {
        public function clear( $keys = null ) {
                if ( $keys === null ) {
                        $this->cache = array();
+                       $this->cacheTimes = array();
                } else {
                        foreach ( (array)$keys as $key ) {
                                unset( $this->cache[$key] );
+                               unset( $this->cacheTimes[$key] );
                        }
                }
        }
index b61dc34..7d1be2b 100644 (file)
@@ -712,8 +712,6 @@ abstract class ContentHandler {
         * @return string An appropriate auto-summary, or an empty string.
         */
        public function getAutosummary( Content $oldContent = null, Content $newContent = null, $flags ) {
-               global $wgContLang;
-
                // Decide what kind of auto-summary is needed.
 
                // Redirect auto-summaries
index e2199c4..2c68d2f 100644 (file)
@@ -1,4 +1,22 @@
 <?php
+/**
+ * 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
+ */
 
 /**
  * @since 1.21
@@ -40,4 +58,4 @@ class CssContentHandler extends TextContentHandler {
        public function getPageViewLanguage( Title $title, Content $content = null ) {
                return wfGetLangObj( 'en' );
        }
-}
\ No newline at end of file
+}
index 8b080bf..b5b4ee2 100644 (file)
@@ -1,4 +1,22 @@
 <?php
+/**
+ * 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
+ */
 
 # XXX: make ScriptContentHandler base class, do highlighting stuff there?
 
@@ -33,7 +51,7 @@ class JavaScriptContentHandler extends TextContentHandler {
        }
 
        /**
-        * Returns the english language, because CSS is english, and should be handled as such.
+        * Returns the english language, because JS is english, and should be handled as such.
         *
         * @return Language wfGetLangObj( 'en' )
         *
@@ -42,4 +60,4 @@ class JavaScriptContentHandler extends TextContentHandler {
        public function getPageViewLanguage( Title $title, Content $content = null ) {
                return wfGetLangObj( 'en' );
        }
-}
\ No newline at end of file
+}
index 9c2ae35..90802f6 100644 (file)
@@ -1,4 +1,22 @@
 <?php
+/**
+ * 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
+ */
 
 /**
  * @since 1.21
index c6ac2ba..7e9e5e8 100644 (file)
@@ -1,4 +1,22 @@
 <?php
+/**
+ * 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
+ */
 
 /**
  * @since 1.21
@@ -60,4 +78,4 @@ class WikitextContentHandler extends TextContentHandler {
        public function isParserCacheSupported() {
                return true;
        }
-}
\ No newline at end of file
+}
diff --git a/includes/dao/DBAccessBase.php b/includes/dao/DBAccessBase.php
new file mode 100644 (file)
index 0000000..b6ffdb8
--- /dev/null
@@ -0,0 +1,88 @@
+<?php
+
+/**
+ * Base class for objects that allow access to other wiki's databases using
+ * the foreign database access mechanism implemented by LBFactory_multi.
+ *
+ * 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
+ *
+ * @since 1.21
+ *
+ * @file
+ * @ingroup Database
+ *
+ * @licence GNU GPL v2+
+ * @author Daniel Kinzler
+ */
+abstract class DBAccessBase implements IDBAccessObject {
+
+       /**
+        * @var String|bool $wiki The target wiki's name. This must be an ID
+        * that LBFactory can understand.
+        */
+       protected $wiki;
+
+       /**
+        * @param String|bool $wiki The target wiki's name. This must be an ID
+        * that LBFactory can understand.
+        */
+       public function __construct( $wiki = false ) {
+               $this->wiki = $wiki;
+       }
+
+       /**
+        * Returns a database connection.
+        *
+        * @see wfGetDB()
+        * @see LoadBalancer::getConnection()
+        *
+        * @param int $id Which connection to use
+        * @param array $groups Query groups
+        *
+        * @return \DatabaseBase
+        */
+       protected function getConnection( $id, $groups = array() ) {
+               $loadBalancer = wfGetLB( $this->wiki );
+               return $loadBalancer->getConnection( $id, $groups, $this->wiki );
+       }
+
+       /**
+        * Releases a database connection and makes it available for recycling.
+        *
+        * @see LoadBalancer::reuseConnection()
+        *
+        * @param \DatabaseBase  $db the database connection to release.
+        */
+       protected function releaseConnection( \DatabaseBase $db ) {
+               if ( $this->wiki !== false ) {
+                       $loadBalancer = $this->getLoadBalancer();
+                       $loadBalancer->reuseConnection( $db );
+               }
+       }
+
+       /**
+        * Get the database type used for read operations.
+        *
+        * @see wfGetLB
+        *
+        * @since 1.20
+        *
+        * @return LoadBalancer The database load balancer object
+        */
+       public function getLoadBalancer() {
+               return wfGetLB( $this->wiki );
+       }
+}
index db050f2..dfb3469 100644 (file)
@@ -230,9 +230,9 @@ abstract class DatabaseBase implements DatabaseType {
 
        /**
         * @since 1.20
-        * @var array of callable
+        * @var array of Closure
         */
-       protected $trxIdleCallbacks = array();
+       protected $mTrxIdleCallbacks = array();
 
        protected $mTablePrefix;
        protected $mFlags;
@@ -274,6 +274,13 @@ abstract class DatabaseBase implements DatabaseType {
         */
        private $mTrxAutomatic = false;
 
+       /**
+        * @since 1.21
+        * @var file handle for upgrade
+        */
+       protected $fileHandle = null;
+
+
 # ------------------------------------------------------------------------------
 # Accessors
 # ------------------------------------------------------------------------------
@@ -386,6 +393,15 @@ abstract class DatabaseBase implements DatabaseType {
                return wfSetVar( $this->mTablePrefix, $prefix );
        }
 
+       /**
+        * Set the filehandle to copy write statements to.
+        *
+        * @param $fh filehandle
+        */
+       public function setFileHandle( $fh ) {
+               $this->fileHandle = $fh;
+       }
+
        /**
         * Get properties passed down from the server info array of the load
         * balancer.
@@ -534,6 +550,16 @@ abstract class DatabaseBase implements DatabaseType {
                return $this->mDoneWrites;
        }
 
+       /**
+        * Returns true if there is a transaction open with possible write
+        * queries or transaction idle callbacks waiting on it to finish.
+        *
+        * @return bool
+        */
+       public function writesOrCallbacksPending() {
+               return $this->mTrxLevel && ( $this->mTrxDoneWrites || $this->mTrxIdleCallbacks );
+       }
+
        /**
         * Is a connection to the database open?
         * @return Boolean
@@ -757,6 +783,9 @@ abstract class DatabaseBase implements DatabaseType {
         * @return Bool operation success. true if already closed.
         */
        public function close() {
+               if ( count( $this->mTrxIdleCallbacks ) ) { // sanity
+                       throw new MWException( "Transaction idle callbacks still pending." );
+               }
                $this->mOpened = false;
                if ( $this->mConn ) {
                        if ( $this->trxLevel() ) {
@@ -926,7 +955,7 @@ abstract class DatabaseBase implements DatabaseType {
                if ( false === $ret && $this->wasErrorReissuable() ) {
                        # Transaction is gone, like it or not
                        $this->mTrxLevel = 0;
-                       $this->trxIdleCallbacks = array(); // cancel
+                       $this->mTrxIdleCallbacks = array(); // cancel
                        wfDebug( "Connection lost, reconnecting...\n" );
 
                        if ( $this->ping() ) {
@@ -1565,6 +1594,10 @@ abstract class DatabaseBase implements DatabaseType {
         * @return bool|null
         */
        public function indexExists( $table, $index, $fname = 'DatabaseBase::indexExists' ) {
+               if( !$this->tableExists( $table ) ) {
+                       return null;
+               }
+
                $info = $this->indexInfo( $table, $index, $fname );
                if ( is_null( $info ) ) {
                        return null;
@@ -1677,6 +1710,10 @@ abstract class DatabaseBase implements DatabaseType {
                        $options = array( $options );
                }
 
+               $fh = null;
+               if ( isset( $options['fileHandle'] ) ) {
+                       $fh = $options['fileHandle'];
+               }
                $options = $this->makeInsertOptions( $options );
 
                if ( isset( $a[0] ) && is_array( $a[0] ) ) {
@@ -1704,6 +1741,12 @@ abstract class DatabaseBase implements DatabaseType {
                        $sql .= '(' . $this->makeList( $a ) . ')';
                }
 
+               if ( $fh !== null && false === fwrite( $fh, $sql ) ) {
+                       return false;
+               } elseif ( $fh !== null ) {
+                       return true;
+               }
+
                return (bool)$this->query( $sql, $fname );
        }
 
@@ -2899,7 +2942,7 @@ abstract class DatabaseBase implements DatabaseType {
         */
        final public function onTransactionIdle( Closure $callback ) {
                if ( $this->mTrxLevel ) {
-                       $this->trxIdleCallbacks[] = $callback;
+                       $this->mTrxIdleCallbacks[] = $callback;
                } else {
                        $callback();
                }
@@ -2911,16 +2954,20 @@ abstract class DatabaseBase implements DatabaseType {
         * @since 1.20
         */
        protected function runOnTransactionIdleCallbacks() {
+               $autoTrx = $this->getFlag( DBO_TRX ); // automatic begin() enabled?
+
                $e = null; // last exception
                do { // callbacks may add callbacks :)
-                       $callbacks = $this->trxIdleCallbacks;
-                       $this->trxIdleCallbacks = array(); // recursion guard
+                       $callbacks = $this->mTrxIdleCallbacks;
+                       $this->mTrxIdleCallbacks = array(); // recursion guard
                        foreach ( $callbacks as $callback ) {
                                try {
+                                       $this->clearFlag( DBO_TRX ); // make each query its own transaction
                                        $callback();
+                                       $this->setFlag( $autoTrx ? DBO_TRX : 0 ); // restore automatic begin()
                                } catch ( Exception $e ) {}
                        }
-               } while ( count( $this->trxIdleCallbacks ) );
+               } while ( count( $this->mTrxIdleCallbacks ) );
 
                if ( $e instanceof Exception ) {
                        throw $e; // re-throw any last exception
@@ -3037,7 +3084,7 @@ abstract class DatabaseBase implements DatabaseType {
                        wfWarn( "$fname: No transaction to rollback, something got out of sync!" );
                }
                $this->doRollback( $fname );
-               $this->trxIdleCallbacks = array(); // cancel
+               $this->mTrxIdleCallbacks = array(); // cancel
        }
 
        /**
@@ -3228,11 +3275,12 @@ abstract class DatabaseBase implements DatabaseType {
         * @param bool|callable $resultCallback Optional function called for each MySQL result
         * @param bool|string $fname Calling function name or false if name should be
         *      generated dynamically using $filename
+        * @param bool|callable $inputCallback Callback: Optional function called for each complete line sent
         * @throws MWException
         * @return bool|string
         */
        public function sourceFile(
-               $filename, $lineCallback = false, $resultCallback = false, $fname = false
+               $filename, $lineCallback = false, $resultCallback = false, $fname = false, $inputCallback = false
        ) {
                wfSuppressWarnings();
                $fp = fopen( $filename, 'r' );
@@ -3247,7 +3295,7 @@ abstract class DatabaseBase implements DatabaseType {
                }
 
                try {
-                       $error = $this->sourceStream( $fp, $lineCallback, $resultCallback, $fname );
+                       $error = $this->sourceStream( $fp, $lineCallback, $resultCallback, $fname, $inputCallback );
                }
                catch ( MWException $e ) {
                        fclose( $fp );
@@ -3296,10 +3344,10 @@ abstract class DatabaseBase implements DatabaseType {
         * on object's error ignore settings).
         *
         * @param $fp Resource: File handle
-        * @param $lineCallback Callback: Optional function called before reading each line
+        * @param $lineCallback Callback: Optional function called before reading each query
         * @param $resultCallback Callback: Optional function called for each MySQL result
         * @param $fname String: Calling function name
-        * @param $inputCallback Callback: Optional function called for each complete line (ended with ;) sent
+        * @param $inputCallback Callback: Optional function called for each complete query sent
         * @return bool|string
         */
        public function sourceStream( $fp, $lineCallback = false, $resultCallback = false,
@@ -3332,20 +3380,19 @@ abstract class DatabaseBase implements DatabaseType {
 
                        if ( $done || feof( $fp ) ) {
                                $cmd = $this->replaceVars( $cmd );
-                               if ( $inputCallback ) {
-                                       call_user_func( $inputCallback, $cmd );
-                               }
-                               $res = $this->query( $cmd, $fname );
 
-                               if ( $resultCallback ) {
-                                       call_user_func( $resultCallback, $res, $this );
-                               }
+                               if ( ( $inputCallback && call_user_func( $inputCallback, $cmd ) ) || !$inputCallback ) {
+                                       $res = $this->query( $cmd, $fname );
 
-                               if ( false === $res ) {
-                                       $err = $this->lastError();
-                                       return "Query \"{$cmd}\" failed with error code \"$err\".\n";
-                               }
+                                       if ( $resultCallback ) {
+                                               call_user_func( $resultCallback, $res, $this );
+                                       }
 
+                                       if ( false === $res ) {
+                                               $err = $this->lastError();
+                                               return "Query \"{$cmd}\" failed with error code \"$err\".\n";
+                                       }
+                               }
                                $cmd = '';
                        }
                }
@@ -3619,4 +3666,10 @@ abstract class DatabaseBase implements DatabaseType {
        public function __toString() {
                return (string)$this->mConn;
        }
+
+       public function __destruct() {
+               if ( count( $this->mTrxIdleCallbacks ) ) { // sanity
+                       trigger_error( "Transaction idle callbacks still pending." );
+               }
+       }
 }
index b509302..36a1126 100644 (file)
@@ -414,6 +414,7 @@ class DatabaseMysql extends DatabaseBase {
                # http://dev.mysql.com/doc/mysql/en/SHOW_INDEX.html
                $table = $this->tableName( $table );
                $index = $this->indexName( $index );
+
                $sql = 'SHOW INDEX FROM ' . $table;
                $res = $this->query( $sql, $fname );
 
@@ -428,7 +429,6 @@ class DatabaseMysql extends DatabaseBase {
                                $result[] = $row;
                        }
                }
-
                return empty( $result ) ? false : $result;
        }
 
index 46d24fc..7e5feea 100644 (file)
@@ -501,8 +501,7 @@ class LoadBalancer {
                        if ( $i === false ) {
                                $this->mLastError = 'No working slave server: ' . $this->mLastError;
                                wfProfileOut( __METHOD__ );
-                               $this->reportConnectionError( $this->mErrorConnection );
-                               return false;
+                               return $this->reportConnectionError( $this->mErrorConnection );
                        }
                }
 
@@ -510,7 +509,7 @@ class LoadBalancer {
                $conn = $this->openConnection( $i, $wiki );
                if ( !$conn ) {
                        wfProfileOut( __METHOD__ );
-                       $this->reportConnectionError( $this->mErrorConnection );
+                       return $this->reportConnectionError( $this->mErrorConnection );
                }
 
                wfProfileOut( __METHOD__ );
@@ -745,8 +744,9 @@ class LoadBalancer {
                } else {
                        $server = $conn->getProperty( 'mServer' );
                        wfLogDBError( "Connection error: {$this->mLastError} ({$server})\n" );
-                       $conn->reportConnectionError( "{$this->mLastError} ({$server})" );
+                       $conn->reportConnectionError( "{$this->mLastError} ({$server})" ); // throws DBConnectionError
                }
+               return false; /* not reached */
        }
 
        /**
@@ -926,7 +926,7 @@ class LoadBalancer {
                                continue;
                        }
                        foreach ( $conns2[$masterIndex] as $conn ) {
-                               if ( $conn->trxLevel() && $conn->doneWrites() ) {
+                               if ( $conn->trxLevel() && $conn->writesOrCallbacksPending() ) {
                                        $conn->commit( __METHOD__, 'flush' );
                                }
                        }
index 0756ce8..13c2d9f 100644 (file)
@@ -27,7 +27,7 @@
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
 
-abstract class ORMTable implements IORMTable {
+abstract class ORMTable extends DBAccessBase implements IORMTable {
 
        /**
         * Gets the db field prefix.
@@ -55,15 +55,6 @@ abstract class ORMTable implements IORMTable {
         */
        protected $readDb = DB_SLAVE;
 
-       /**
-        * The ID of any foreign wiki to use as a target for database operations,
-        * or false to use the local wiki.
-        *
-        * @since 1.20
-        * @var String|bool
-        */
-       protected $wiki = false;
-
        /**
         * Returns a list of default field values.
         * field name => field value
@@ -489,19 +480,6 @@ abstract class ORMTable implements IORMTable {
                return $this->getLoadBalancer()->getConnection( DB_MASTER, array(), $this->getTargetWiki() );
        }
 
-       /**
-        * Get the database type used for read operations.
-        *
-        * @see wfGetLB
-        *
-        * @since 1.20
-        *
-        * @return LoadBalancer The database load balancer object
-        */
-       public function getLoadBalancer() {
-               return wfGetLB( $this->getTargetWiki() );
-       }
-
        /**
         * Releases the lease on the given database connection. This is useful mainly
         * for connections to a foreign wiki. It does nothing for connections to the local wiki.
@@ -513,10 +491,7 @@ abstract class ORMTable implements IORMTable {
         * @since 1.20
         */
        public function releaseConnection( DatabaseBase $db ) {
-               if ( $this->wiki !== false ) {
-                       // recycle connection to foreign wiki
-                       $this->getLoadBalancer()->reuseConnection( $db );
-               }
+               parent::releaseConnection( $db ); // just make it public
        }
 
        /**
index 05e2cd2..6a6f930 100644 (file)
@@ -5,6 +5,21 @@
  * Copyright © 2000, 2001 Geoffrey T. Dairiki <dairiki@dairiki.org>
  * You may copy this code freely under the conditions of the GPL.
  *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
  * @file
  * @ingroup DifferenceEngine
  * @defgroup DifferenceEngine DifferenceEngine
index 0295f77..9afe69e 100644 (file)
@@ -421,8 +421,8 @@ class DifferenceEngine extends ContextSource {
        /**
         * Get a link to mark the change as patrolled, or '' if there's either no
         * revision to patrol or the user is not allowed to to it.
-        * Side effect: this method will call OutputPage::preventClickjacking()
-        * when a link is builded.
+        * Side effect: When the patrol link is build, this method will call
+        * OutputPage::preventClickjacking() and load mediawiki.page.patrol.ajax.
         *
         * @return String
         */
@@ -463,6 +463,8 @@ class DifferenceEngine extends ContextSource {
                                // Build the link
                                if ( $rcid ) {
                                        $this->getOutput()->preventClickjacking();
+                                       $this->getOutput()->addModules( 'mediawiki.page.patrol.ajax' );
+
                                        $token = $this->getUser()->getEditToken( $rcid );
                                        $this->mMarkPatrolledLink = ' <span class="patrollink">[' . Linker::linkKnown(
                                                $this->mNewPage,
index fda356e..5141ec5 100644 (file)
@@ -131,7 +131,7 @@ class FSFile {
                        # Height, width and metadata
                        $handler = MediaHandler::getHandler( $info['mime'] );
                        if ( $handler ) {
-                               $tempImage = (object)array();
+                               $tempImage = (object)array(); // XXX (hack for File object)
                                $info['metadata'] = $handler->getMetadata( $tempImage, $this->path );
                                $gis = $handler->getImageSize( $tempImage, $this->path, $info['metadata'] );
                                if ( is_array( $gis ) ) {
index 3a03d4d..3c23e4c 100644 (file)
@@ -177,6 +177,59 @@ class FSFileBackend extends FileBackendStore {
                return $ok;
        }
 
+       /**
+        * @see FileBackendStore::doCreateInternal()
+        * @return Status
+        */
+       protected function doCreateInternal( array $params ) {
+               $status = Status::newGood();
+
+               $dest = $this->resolveToFSPath( $params['dst'] );
+               if ( $dest === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+                       return $status;
+               }
+
+               if ( !empty( $params['async'] ) ) { // deferred
+                       $tempFile = TempFSFile::factory( 'create_', 'tmp' );
+                       if ( !$tempFile ) {
+                               $status->fatal( 'backend-fail-create', $params['dst'] );
+                               return $status;
+                       }
+                       $bytes = file_put_contents( $tempFile->getPath(), $params['content'] );
+                       if ( $bytes === false ) {
+                               $status->fatal( 'backend-fail-create', $params['dst'] );
+                               return $status;
+                       }
+                       $cmd = implode( ' ', array(
+                               wfIsWindows() ? 'COPY /B /Y' : 'cp', // (binary, overwrite)
+                               wfEscapeShellArg( $this->cleanPathSlashes( $tempFile->getPath() ) ),
+                               wfEscapeShellArg( $this->cleanPathSlashes( $dest ) )
+                       ) );
+                       $status->value = new FSFileOpHandle( $this, $params, 'Create', $cmd, $dest );
+                       $tempFile->bind( $status->value );
+               } else { // immediate write
+                       $bytes = file_put_contents( $dest, $params['content'] );
+                       if ( $bytes === false ) {
+                               $status->fatal( 'backend-fail-create', $params['dst'] );
+                               return $status;
+                       }
+                       $this->chmod( $dest );
+               }
+
+               return $status;
+       }
+
+       /**
+        * @see FSFileBackend::doExecuteOpHandlesInternal()
+        */
+       protected function _getResponseCreate( $errors, Status $status, array $params, $cmd ) {
+               if ( $errors !== '' && !( wfIsWindows() && $errors[0] === " " ) ) {
+                       $status->fatal( 'backend-fail-create', $params['dst'] );
+                       trigger_error( "$cmd\n$errors", E_USER_WARNING ); // command output
+               }
+       }
+
        /**
         * @see FileBackendStore::doStoreInternal()
         * @return Status
@@ -386,59 +439,6 @@ class FSFileBackend extends FileBackendStore {
                }
        }
 
-       /**
-        * @see FileBackendStore::doCreateInternal()
-        * @return Status
-        */
-       protected function doCreateInternal( array $params ) {
-               $status = Status::newGood();
-
-               $dest = $this->resolveToFSPath( $params['dst'] );
-               if ( $dest === null ) {
-                       $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
-                       return $status;
-               }
-
-               if ( !empty( $params['async'] ) ) { // deferred
-                       $tempFile = TempFSFile::factory( 'create_', 'tmp' );
-                       if ( !$tempFile ) {
-                               $status->fatal( 'backend-fail-create', $params['dst'] );
-                               return $status;
-                       }
-                       $bytes = file_put_contents( $tempFile->getPath(), $params['content'] );
-                       if ( $bytes === false ) {
-                               $status->fatal( 'backend-fail-create', $params['dst'] );
-                               return $status;
-                       }
-                       $cmd = implode( ' ', array(
-                               wfIsWindows() ? 'COPY /B /Y' : 'cp', // (binary, overwrite)
-                               wfEscapeShellArg( $this->cleanPathSlashes( $tempFile->getPath() ) ),
-                               wfEscapeShellArg( $this->cleanPathSlashes( $dest ) )
-                       ) );
-                       $status->value = new FSFileOpHandle( $this, $params, 'Create', $cmd, $dest );
-                       $tempFile->bind( $status->value );
-               } else { // immediate write
-                       $bytes = file_put_contents( $dest, $params['content'] );
-                       if ( $bytes === false ) {
-                               $status->fatal( 'backend-fail-create', $params['dst'] );
-                               return $status;
-                       }
-                       $this->chmod( $dest );
-               }
-
-               return $status;
-       }
-
-       /**
-        * @see FSFileBackend::doExecuteOpHandlesInternal()
-        */
-       protected function _getResponseCreate( $errors, Status $status, array $params, $cmd ) {
-               if ( $errors !== '' && !( wfIsWindows() && $errors[0] === " " ) ) {
-                       $status->fatal( 'backend-fail-create', $params['dst'] );
-                       trigger_error( "$cmd\n$errors", E_USER_WARNING ); // command output
-               }
-       }
-
        /**
         * @see FileBackendStore::doPrepareInternal()
         * @return Status
index b5e2315..3108d11 100644 (file)
@@ -172,6 +172,7 @@ abstract class FileBackend {
         *  - copy
         *  - move
         *  - delete
+        *  - describe (since 1.21)
         *  - null
         *
         * a) Create a new file in storage with the contents of a string
@@ -182,7 +183,8 @@ abstract class FileBackend {
         *         'content'             => <string of new file contents>,
         *         'overwrite'           => <boolean>,
         *         'overwriteSame'       => <boolean>,
-        *         'disposition'         => <Content-Disposition header value>
+        *         'disposition'         => <Content-Disposition header value>,
+        *         'headers'             => <HTTP header name/value map> # since 1.21
         *     );
         * @endcode
         *
@@ -194,7 +196,8 @@ abstract class FileBackend {
         *         'dst'                 => <storage path>,
         *         'overwrite'           => <boolean>,
         *         'overwriteSame'       => <boolean>,
-        *         'disposition'         => <Content-Disposition header value>
+        *         'disposition'         => <Content-Disposition header value>,
+        *         'headers'             => <HTTP header name/value map> # since 1.21
         *     )
         * @endcode
         *
@@ -233,7 +236,17 @@ abstract class FileBackend {
         *     )
         * @endcode
         *
-        * f) Do nothing (no-op)
+        * f) Update metadata for a file within storage
+        * @code
+        *     array(
+        *         'op'                  => 'describe',
+        *         'src'                 => <storage path>,
+        *         'disposition'         => <Content-Disposition header value>,
+        *         'headers'             => <HTTP header name/value map>
+        *     )
+        * @endcode
+        *
+        * g) Do nothing (no-op)
         * @code
         *     array(
         *         'op'                  => 'null',
@@ -247,10 +260,17 @@ abstract class FileBackend {
         *   - overwriteSame       : An error will not be given if a file already
         *                           exists at the destination that has the same
         *                           contents as the new contents to be written there.
-        *   - disposition         : When supplied, the backend will add a Content-Disposition
+        *   - disposition         : If supplied, the backend will return a Content-Disposition
         *                           header when GETs/HEADs of the destination file are made.
-        *                           Backends that don't support file metadata will ignore this.
-        *                           See http://tools.ietf.org/html/rfc6266 (since 1.20).
+        *                           Backends that don't support metadata ignore this.
+        *                           See http://tools.ietf.org/html/rfc6266. (since 1.20)
+        *   - headers             : If supplied, the backend will return these headers when
+        *                           GETs/HEADs of the destination file are made. Header values
+        *                           should be smaller than 256 bytes, often options or numbers.
+        *                           Existing headers will remain, but these will replace any
+        *                           conflicting previous headers, and headers will be removed
+        *                           if they are set to an empty string.
+        *                           Backends that don't support metadata ignore this. (since 1.21)
         *
         * $opts is an associative of boolean flags, including:
         *   - force               : Operation precondition errors no longer trigger an abort.
@@ -265,10 +285,10 @@ abstract class FileBackend {
         *   - nonJournaled        : Don't log this operation batch in the file journal.
         *                           This limits the ability of recovery scripts.
         *   - parallelize         : Try to do operations in parallel when possible.
-        *   - bypassReadOnly      : Allow writes in read-only mode (since 1.20).
+        *   - bypassReadOnly      : Allow writes in read-only mode. (since 1.20)
         *   - preserveCache       : Don't clear the process cache before checking files.
         *                           This should only be used if all entries in the process
-        *                           cache were added after the files were already locked (since 1.20).
+        *                           cache were added after the files were already locked. (since 1.20)
         *
         * @remarks Remarks on locking:
         * File system paths given to operations should refer to files that are
@@ -390,6 +410,21 @@ abstract class FileBackend {
                return $this->doOperation( array( 'op' => 'delete' ) + $params, $opts );
        }
 
+       /**
+        * Performs a single describe operation.
+        * This sets $params['op'] to 'describe' and passes it to doOperation().
+        *
+        * @see FileBackend::doOperation()
+        *
+        * @param $params Array Operation parameters
+        * @param $opts Array Operation options
+        * @return Status
+        * @since 1.21
+        */
+       final public function describe( array $params, array $opts = array() ) {
+               return $this->doOperation( array( 'op' => 'describe' ) + $params, $opts );
+       }
+
        /**
         * Perform a set of independent file operations on some files.
         *
@@ -403,6 +438,7 @@ abstract class FileBackend {
         *  - copy
         *  - move
         *  - delete
+        *  - describe (since 1.21)
         *  - null
         *
         * a) Create a new file in storage with the contents of a string
@@ -411,18 +447,22 @@ abstract class FileBackend {
         *         'op'                  => 'create',
         *         'dst'                 => <storage path>,
         *         'content'             => <string of new file contents>,
-        *         'disposition'         => <Content-Disposition header value>
+        *         'disposition'         => <Content-Disposition header value>,
+        *         'headers'             => <HTTP header name/value map> # since 1.21
         *     )
         * @endcode
+        *
         * b) Copy a file system file into storage
         * @code
         *     array(
         *         'op'                  => 'store',
         *         'src'                 => <file system path>,
         *         'dst'                 => <storage path>,
-        *         'disposition'         => <Content-Disposition header value>
+        *         'disposition'         => <Content-Disposition header value>,
+        *         'headers'             => <HTTP header name/value map> # since 1.21
         *     )
         * @endcode
+        *
         * c) Copy a file within storage
         * @code
         *     array(
@@ -433,6 +473,7 @@ abstract class FileBackend {
         *         'disposition'         => <Content-Disposition header value>
         *     )
         * @endcode
+        *
         * d) Move a file within storage
         * @code
         *     array(
@@ -443,6 +484,7 @@ abstract class FileBackend {
         *         'disposition'         => <Content-Disposition header value>
         *     )
         * @endcode
+        *
         * e) Delete a file within storage
         * @code
         *     array(
@@ -451,7 +493,18 @@ abstract class FileBackend {
         *         'ignoreMissingSource' => <boolean>
         *     )
         * @endcode
-        * f) Do nothing (no-op)
+        *
+        * f) Update metadata for a file within storage
+        * @code
+        *     array(
+        *         'op'                  => 'describe',
+        *         'src'                 => <storage path>,
+        *         'disposition'         => <Content-Disposition header value>,
+        *         'headers'             => <HTTP header name/value map>
+        *     )
+        * @endcode
+        *
+        * g) Do nothing (no-op)
         * @code
         *     array(
         *         'op'                  => 'null',
@@ -465,6 +518,13 @@ abstract class FileBackend {
         *                           header when GETs/HEADs of the destination file are made.
         *                           Backends that don't support file metadata will ignore this.
         *                           See http://tools.ietf.org/html/rfc6266 (since 1.20).
+        *   - headers             : If supplied, the backend will return these headers when
+        *                           GETs/HEADs of the destination file are made. Header values
+        *                           should be smaller than 256 bytes, often options or numbers.
+        *                           Existing headers will remain, but these will replace any
+        *                           conflicting previous headers, and headers will be removed
+        *                           if they are set to an empty string.
+        *                           Backends that don't support metadata ignore this. (since 1.21)
         *
         * $opts is an associative of boolean flags, including:
         *   - bypassReadOnly      : Allow writes in read-only mode (since 1.20)
@@ -580,6 +640,20 @@ abstract class FileBackend {
                return $this->doQuickOperation( array( 'op' => 'delete' ) + $params );
        }
 
+       /**
+        * Performs a single quick describe operation.
+        * This sets $params['op'] to 'describe' and passes it to doQuickOperation().
+        *
+        * @see FileBackend::doQuickOperation()
+        *
+        * @param $params Array Operation parameters
+        * @return Status
+        * @since 1.21
+        */
+       final public function quickDescribe( array $params ) {
+               return $this->doQuickOperation( array( 'op' => 'describe' ) + $params );
+       }
+
        /**
         * Concatenate a list of storage files into a single file system file.
         * The target path should refer to a file that is already locked or
@@ -800,13 +874,13 @@ abstract class FileBackend {
 
        /**
         * Get the properties of the file at a storage path in the backend.
-        * Returns FSFile::placeholderProps() on failure.
+        * This gives the result of FSFile::getProps() on a local copy of the file.
         *
         * @param $params Array
         * $params include:
         *   - src    : source storage path
         *   - latest : use the latest available data
-        * @return Array
+        * @return Array Returns FSFile::placeholderProps() on failure
         */
        abstract public function getFileProps( array $params );
 
index 97e49a5..b906af5 100644 (file)
@@ -48,6 +48,8 @@ abstract class FileBackendStore extends FileBackend {
 
        protected $maxFileSize = 4294967296; // integer bytes (4GiB)
 
+       const CACHE_TTL = 10; // integer; TTL in seconds for process cache entries
+
        /**
         * @see FileBackend::__construct()
         *
@@ -88,12 +90,15 @@ abstract class FileBackendStore extends FileBackend {
         * Do not call this function from places outside FileBackend and FileOp.
         *
         * $params include:
-        *   - content       : the raw file contents
-        *   - dst           : destination storage path
-        *   - disposition   : Content-Disposition header value for the destination
-        *   - async         : Status will be returned immediately if supported.
-        *                     If the status is OK, then its value field will be
-        *                     set to a FileBackendStoreOpHandle object.
+        *   - content     : the raw file contents
+        *   - dst         : destination storage path
+        *   - disposition : Content-Disposition header value for the destination
+        *   - headers     : HTTP header name/value map
+        *   - async       : Status will be returned immediately if supported.
+        *                   If the status is OK, then its value field will be
+        *                   set to a FileBackendStoreOpHandle object.
+        *   - dstExists   : Whether a file exists at the destination (optimization).
+        *                   Callers can use "false" if no existing file is being changed.
         *
         * @param $params Array
         * @return Status
@@ -107,7 +112,9 @@ abstract class FileBackendStore extends FileBackend {
                } else {
                        $status = $this->doCreateInternal( $params );
                        $this->clearCache( array( $params['dst'] ) );
-                       $this->deleteFileCache( $params['dst'] ); // persistent cache
+                       if ( !isset( $params['dstExists'] ) || $params['dstExists'] ) {
+                               $this->deleteFileCache( $params['dst'] ); // persistent cache
+                       }
                }
                wfProfileOut( __METHOD__ . '-' . $this->name );
                wfProfileOut( __METHOD__ );
@@ -116,6 +123,7 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::createInternal()
+        * @return Status
         */
        abstract protected function doCreateInternal( array $params );
 
@@ -125,12 +133,15 @@ abstract class FileBackendStore extends FileBackend {
         * Do not call this function from places outside FileBackend and FileOp.
         *
         * $params include:
-        *   - src           : source path on disk
-        *   - dst           : destination storage path
-        *   - disposition   : Content-Disposition header value for the destination
-        *   - async         : Status will be returned immediately if supported.
-        *                     If the status is OK, then its value field will be
-        *                     set to a FileBackendStoreOpHandle object.
+        *   - src         : source path on disk
+        *   - dst         : destination storage path
+        *   - disposition : Content-Disposition header value for the destination
+        *   - headers     : HTTP header name/value map
+        *   - async       : Status will be returned immediately if supported.
+        *                   If the status is OK, then its value field will be
+        *                   set to a FileBackendStoreOpHandle object.
+        *   - dstExists   : Whether a file exists at the destination (optimization).
+        *                   Callers can use "false" if no existing file is being changed.
         *
         * @param $params Array
         * @return Status
@@ -144,7 +155,9 @@ abstract class FileBackendStore extends FileBackend {
                } else {
                        $status = $this->doStoreInternal( $params );
                        $this->clearCache( array( $params['dst'] ) );
-                       $this->deleteFileCache( $params['dst'] ); // persistent cache
+                       if ( !isset( $params['dstExists'] ) || $params['dstExists'] ) {
+                               $this->deleteFileCache( $params['dst'] ); // persistent cache
+                       }
                }
                wfProfileOut( __METHOD__ . '-' . $this->name );
                wfProfileOut( __METHOD__ );
@@ -153,6 +166,7 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::storeInternal()
+        * @return Status
         */
        abstract protected function doStoreInternal( array $params );
 
@@ -169,6 +183,8 @@ abstract class FileBackendStore extends FileBackend {
         *   - async               : Status will be returned immediately if supported.
         *                           If the status is OK, then its value field will be
         *                           set to a FileBackendStoreOpHandle object.
+        *   - dstExists           : Whether a file exists at the destination (optimization).
+        *                           Callers can use "false" if no existing file is being changed.
         *
         * @param $params Array
         * @return Status
@@ -178,7 +194,9 @@ abstract class FileBackendStore extends FileBackend {
                wfProfileIn( __METHOD__ . '-' . $this->name );
                $status = $this->doCopyInternal( $params );
                $this->clearCache( array( $params['dst'] ) );
-               $this->deleteFileCache( $params['dst'] ); // persistent cache
+               if ( !isset( $params['dstExists'] ) || $params['dstExists'] ) {
+                       $this->deleteFileCache( $params['dst'] ); // persistent cache
+               }
                wfProfileOut( __METHOD__ . '-' . $this->name );
                wfProfileOut( __METHOD__ );
                return $status;
@@ -186,6 +204,7 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::copyInternal()
+        * @return Status
         */
        abstract protected function doCopyInternal( array $params );
 
@@ -216,6 +235,7 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::deleteInternal()
+        * @return Status
         */
        abstract protected function doDeleteInternal( array $params );
 
@@ -232,6 +252,8 @@ abstract class FileBackendStore extends FileBackend {
         *   - async               : Status will be returned immediately if supported.
         *                           If the status is OK, then its value field will be
         *                           set to a FileBackendStoreOpHandle object.
+        *   - dstExists           : Whether a file exists at the destination (optimization).
+        *                           Callers can use "false" if no existing file is being changed.
         *
         * @param $params Array
         * @return Status
@@ -242,7 +264,9 @@ abstract class FileBackendStore extends FileBackend {
                $status = $this->doMoveInternal( $params );
                $this->clearCache( array( $params['src'], $params['dst'] ) );
                $this->deleteFileCache( $params['src'] ); // persistent cache
-               $this->deleteFileCache( $params['dst'] ); // persistent cache
+               if ( !isset( $params['dstExists'] ) || $params['dstExists'] ) {
+                       $this->deleteFileCache( $params['dst'] ); // persistent cache
+               }
                wfProfileOut( __METHOD__ . '-' . $this->name );
                wfProfileOut( __METHOD__ );
                return $status;
@@ -264,6 +288,40 @@ abstract class FileBackendStore extends FileBackend {
                return $status;
        }
 
+       /**
+        * Alter metadata for a file at the storage path.
+        * Do not call this function from places outside FileBackend and FileOp.
+        *
+        * $params include:
+        *   - src           : source storage path
+        *   - disposition   : Content-Disposition header value for the destination
+        *   - headers       : HTTP header name/value map
+        *   - async         : Status will be returned immediately if supported.
+        *                     If the status is OK, then its value field will be
+        *                     set to a FileBackendStoreOpHandle object.
+        *
+        * @param $params Array
+        * @return Status
+        */
+       final public function describeInternal( array $params ) {
+               wfProfileIn( __METHOD__ );
+               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $status = $this->doDescribeInternal( $params );
+               $this->clearCache( array( $params['src'] ) );
+               $this->deleteFileCache( $params['src'] ); // persistent cache
+               wfProfileOut( __METHOD__ . '-' . $this->name );
+               wfProfileOut( __METHOD__ );
+               return $status;
+       }
+
+       /**
+        * @see FileBackendStore::describeInternal()
+        * @return Status
+        */
+       protected function doDescribeInternal( array $params ) {
+               return Status::newGood();
+       }
+
        /**
         * No-op file operation that does nothing.
         * Do not call this function from places outside FileBackend and FileOp.
@@ -505,6 +563,7 @@ abstract class FileBackendStore extends FileBackend {
                                        $subDir = $params['dir'] . "/{$subDirRel}"; // full path
                                        $status->merge( $this->doClean( array( 'dir' => $subDir ) + $params ) );
                                }
+                               unset( $subDirsRel ); // free directory for rmdir() on Windows (for FS backends)
                        }
                }
 
@@ -601,17 +660,25 @@ abstract class FileBackendStore extends FileBackend {
                wfProfileIn( __METHOD__ );
                wfProfileIn( __METHOD__ . '-' . $this->name );
                $latest = !empty( $params['latest'] ); // use latest data?
-               if ( !$this->cheapCache->has( $path, 'stat' ) ) {
+               if ( !$this->cheapCache->has( $path, 'stat', self::CACHE_TTL ) ) {
                        $this->primeFileCache( array( $path ) ); // check persistent cache
                }
-               if ( $this->cheapCache->has( $path, 'stat' ) ) {
+               if ( $this->cheapCache->has( $path, 'stat', self::CACHE_TTL ) ) {
                        $stat = $this->cheapCache->get( $path, 'stat' );
                        // If we want the latest data, check that this cached
                        // value was in fact fetched with the latest available data.
-                       if ( !$latest || $stat['latest'] ) {
-                               wfProfileOut( __METHOD__ . '-' . $this->name );
-                               wfProfileOut( __METHOD__ );
-                               return $stat;
+                       if ( is_array( $stat ) ) {
+                               if ( !$latest || $stat['latest'] ) {
+                                       wfProfileOut( __METHOD__ . '-' . $this->name );
+                                       wfProfileOut( __METHOD__ );
+                                       return $stat;
+                               }
+                       } elseif ( in_array( $stat, array( 'NOT_EXIST', 'NOT_EXIST_LATEST' ) ) ) {
+                               if ( !$latest || $stat === 'NOT_EXIST_LATEST' ) {
+                                       wfProfileOut( __METHOD__ . '-' . $this->name );
+                                       wfProfileOut( __METHOD__ );
+                                       return false;
+                               }
                        }
                }
                wfProfileIn( __METHOD__ . '-miss' );
@@ -619,7 +686,7 @@ abstract class FileBackendStore extends FileBackend {
                $stat = $this->doGetFileStat( $params );
                wfProfileOut( __METHOD__ . '-miss-' . $this->name );
                wfProfileOut( __METHOD__ . '-miss' );
-               if ( is_array( $stat ) ) { // don't cache negatives
+               if ( is_array( $stat ) ) { // file exists
                        $stat['latest'] = $latest;
                        $this->cheapCache->set( $path, 'stat', $stat );
                        $this->setFileCache( $path, $stat ); // update persistent cache
@@ -627,8 +694,11 @@ abstract class FileBackendStore extends FileBackend {
                                $this->cheapCache->set( $path, 'sha1',
                                        array( 'hash' => $stat['sha1'], 'latest' => $latest ) );
                        }
-               } else {
+               } elseif ( $stat === false ) { // file does not exist
+                       $this->cheapCache->set( $path, 'stat', $latest ? 'NOT_EXIST_LATEST' : 'NOT_EXIST' );
                        wfDebug( __METHOD__ . ": File $path does not exist.\n" );
+               } else { // an error occurred
+                       wfDebug( __METHOD__ . ": Could not stat file $path.\n" );
                }
                wfProfileOut( __METHOD__ . '-' . $this->name );
                wfProfileOut( __METHOD__ );
@@ -682,7 +752,7 @@ abstract class FileBackendStore extends FileBackend {
                wfProfileIn( __METHOD__ );
                wfProfileIn( __METHOD__ . '-' . $this->name );
                $latest = !empty( $params['latest'] ); // use latest data?
-               if ( $this->cheapCache->has( $path, 'sha1' ) ) {
+               if ( $this->cheapCache->has( $path, 'sha1', self::CACHE_TTL ) ) {
                        $stat = $this->cheapCache->get( $path, 'sha1' );
                        // If we want the latest data, check that this cached
                        // value was in fact fetched with the latest available data.
@@ -988,12 +1058,13 @@ abstract class FileBackendStore extends FileBackend {
         */
        final public function getOperationsInternal( array $ops ) {
                $supportedOps = array(
-                       'store'       => 'StoreFileOp',
-                       'copy'        => 'CopyFileOp',
-                       'move'        => 'MoveFileOp',
-                       'delete'      => 'DeleteFileOp',
-                       'create'      => 'CreateFileOp',
-                       'null'        => 'NullFileOp'
+                       'store'    => 'StoreFileOp',
+                       'copy'     => 'CopyFileOp',
+                       'move'     => 'MoveFileOp',
+                       'delete'   => 'DeleteFileOp',
+                       'create'   => 'CreateFileOp',
+                       'describe' => 'DescribeFileOp',
+                       'null'     => 'NullFileOp'
                );
 
                $performOps = array(); // array of FileOp objects
@@ -1059,6 +1130,9 @@ abstract class FileBackendStore extends FileBackend {
                wfProfileIn( __METHOD__ . '-' . $this->name );
                $status = Status::newGood();
 
+               // Fix up custom header name/value pairs...
+               $ops = array_map( array( $this, 'stripInvalidHeadersFromOp' ), $ops );
+
                // Build up a list of FileOps...
                $performOps = $this->getOperationsInternal( $ops );
 
@@ -1108,6 +1182,12 @@ abstract class FileBackendStore extends FileBackend {
                wfProfileIn( __METHOD__ . '-' . $this->name );
                $status = Status::newGood();
 
+               // Fix up custom header name/value pairs...
+               $ops = array_map( array( $this, 'stripInvalidHeadersFromOp' ), $ops );
+
+               // Clear any file cache entries
+               $this->clearCache();
+
                $supportedOps = array( 'create', 'store', 'copy', 'move', 'delete', 'null' );
                $async = ( $this->parallelize === 'implicit' );
                $maxConcurrency = $this->concurrency; // throttle
@@ -1199,6 +1279,26 @@ abstract class FileBackendStore extends FileBackend {
                return array();
        }
 
+       /**
+        * Strip long HTTP headers from a file operation
+        *
+        * @param $op array Same format as doOperation()
+        * @return Array
+        */
+       protected function stripInvalidHeadersFromOp( array $op ) {
+               if ( isset( $op['headers'] ) ) {
+                       foreach ( $op['headers'] as $name => $value ) {
+                               if ( strlen( $name ) > 255 || strlen( $value ) > 255 ) {
+                                       trigger_error( "Header '$name: $value' is too long." );
+                                       unset( $op['headers'][$name] );
+                               } elseif ( !strlen( $value ) ) {
+                                       $op['headers'][$name] = ''; // null/false => ""
+                               }
+                       }
+               }
+               return $op;
+       }
+
        /**
         * @see FileBackend::preloadCache()
         */
@@ -1570,6 +1670,8 @@ abstract class FileBackendStore extends FileBackend {
        /**
         * Delete the cached stat info for a file path.
         * The cache key is salted for a while to prevent race conditions.
+        * Since negatives (404s) are not cached, this does not need to be called when
+        * a file is created at a path were there was none before.
         *
         * @param $path string Storage path
         */
index ff1b604..0d64a44 100644 (file)
@@ -48,6 +48,7 @@ abstract class FileOp {
        protected $doOperation = true; // boolean; operation is not a no-op
        protected $sourceSha1; // string
        protected $destSameAsSource; // boolean
+       protected $destExists; // boolean
 
        /* Object life-cycle */
        const STATE_NEW = 1;
@@ -351,7 +352,7 @@ abstract class FileOp {
 
        /**
         * Check for errors with regards to the destination file already existing.
-        * This also updates the destSameAsSource and sourceSha1 member variables.
+        * Also set the destExists, destSameAsSource and sourceSha1 member variables.
         * A bad status will be returned if there is no chance it can be overwritten.
         *
         * @param $predicates Array
@@ -365,7 +366,8 @@ abstract class FileOp {
                        $this->sourceSha1 = $this->fileSha1( $this->params['src'], $predicates );
                }
                $this->destSameAsSource = false;
-               if ( $this->fileExists( $this->params['dst'], $predicates ) ) {
+               $this->destExists = $this->fileExists( $this->params['dst'], $predicates );
+               if ( $this->destExists ) {
                        if ( $this->getParam( 'overwrite' ) ) {
                                return $status; // OK
                        } elseif ( $this->getParam( 'overwriteSame' ) ) {
@@ -460,42 +462,32 @@ abstract class FileOp {
 }
 
 /**
- * Store a file into the backend from a file on the file system.
+ * Create a file in the backend with the given content.
  * Parameters for this operation are outlined in FileBackend::doOperations().
  */
-class StoreFileOp extends FileOp {
-       /**
-        * @return array
-        */
+class CreateFileOp extends FileOp {
        protected function allowedParams() {
-               return array( array( 'src', 'dst' ),
-                       array( 'overwrite', 'overwriteSame', 'disposition' ) );
+               return array( array( 'content', 'dst' ),
+                       array( 'overwrite', 'overwriteSame', 'disposition', 'headers' ) );
        }
 
-       /**
-        * @param $predicates array
-        * @return Status
-        */
        protected function doPrecheck( array &$predicates ) {
                $status = Status::newGood();
-               // Check if the source file exists on the file system
-               if ( !is_file( $this->params['src'] ) ) {
-                       $status->fatal( 'backend-fail-notexists', $this->params['src'] );
-                       return $status;
-               // Check if the source file is too big
-               } elseif ( filesize( $this->params['src'] ) > $this->backend->maxFileSizeInternal() ) {
+               // Check if the source data is too big
+               if ( strlen( $this->getParam( 'content' ) ) > $this->backend->maxFileSizeInternal() ) {
                        $status->fatal( 'backend-fail-maxsize',
                                $this->params['dst'], $this->backend->maxFileSizeInternal() );
-                       $status->fatal( 'backend-fail-store', $this->params['src'], $this->params['dst'] );
+                       $status->fatal( 'backend-fail-create', $this->params['dst'] );
                        return $status;
                // Check if a file can be placed/changed at the destination
                } elseif ( !$this->backend->isPathUsableInternal( $this->params['dst'] ) ) {
                        $status->fatal( 'backend-fail-usable', $this->params['dst'] );
-                       $status->fatal( 'backend-fail-store', $this->params['src'], $this->params['dst'] );
+                       $status->fatal( 'backend-fail-create', $this->params['dst'] );
                        return $status;
                }
                // Check if destination file exists
                $status->merge( $this->precheckDestExistence( $predicates ) );
+               $this->params['dstExists'] = $this->destExists; // see FileBackendStore::setFileCache()
                if ( $status->isOK() ) {
                        // Update file existence predicates
                        $predicates['exists'][$this->params['dst']] = true;
@@ -508,57 +500,66 @@ class StoreFileOp extends FileOp {
         * @return Status
         */
        protected function doAttempt() {
-               // Store the file at the destination
                if ( !$this->destSameAsSource ) {
-                       return $this->backend->storeInternal( $this->setFlags( $this->params ) );
+                       // Create the file at the destination
+                       return $this->backend->createInternal( $this->setFlags( $this->params ) );
                }
                return Status::newGood();
        }
 
        /**
-        * @return bool|string
+        * @return bool|String
         */
        protected function getSourceSha1Base36() {
-               wfSuppressWarnings();
-               $hash = sha1_file( $this->params['src'] );
-               wfRestoreWarnings();
-               if ( $hash !== false ) {
-                       $hash = wfBaseConvert( $hash, 16, 36, 31 );
-               }
-               return $hash;
+               return wfBaseConvert( sha1( $this->params['content'] ), 16, 36, 31 );
        }
 
+       /**
+        * @return array
+        */
        public function storagePathsChanged() {
                return array( $this->params['dst'] );
        }
 }
 
 /**
- * Create a file in the backend with the given content.
+ * Store a file into the backend from a file on the file system.
  * Parameters for this operation are outlined in FileBackend::doOperations().
  */
-class CreateFileOp extends FileOp {
+class StoreFileOp extends FileOp {
+       /**
+        * @return array
+        */
        protected function allowedParams() {
-               return array( array( 'content', 'dst' ),
-                       array( 'overwrite', 'overwriteSame', 'disposition' ) );
+               return array( array( 'src', 'dst' ),
+                       array( 'overwrite', 'overwriteSame', 'disposition', 'headers' ) );
        }
 
+       /**
+        * @param $predicates array
+        * @return Status
+        */
        protected function doPrecheck( array &$predicates ) {
                $status = Status::newGood();
-               // Check if the source data is too big
-               if ( strlen( $this->getParam( 'content' ) ) > $this->backend->maxFileSizeInternal() ) {
+               // Check if the source file exists on the file system
+               if ( !is_file( $this->params['src'] ) ) {
+                       $status->fatal( 'backend-fail-notexists', $this->params['src'] );
+                       return $status;
+               // Check if the source file is too big
+               } elseif ( filesize( $this->params['src'] ) > $this->backend->maxFileSizeInternal() ) {
                        $status->fatal( 'backend-fail-maxsize',
                                $this->params['dst'], $this->backend->maxFileSizeInternal() );
-                       $status->fatal( 'backend-fail-create', $this->params['dst'] );
+                       $status->fatal( 'backend-fail-store', $this->params['src'], $this->params['dst'] );
                        return $status;
                // Check if a file can be placed/changed at the destination
                } elseif ( !$this->backend->isPathUsableInternal( $this->params['dst'] ) ) {
                        $status->fatal( 'backend-fail-usable', $this->params['dst'] );
-                       $status->fatal( 'backend-fail-create', $this->params['dst'] );
+                       $status->fatal( 'backend-fail-store', $this->params['src'], $this->params['dst'] );
                        return $status;
                }
                // Check if destination file exists
                $status->merge( $this->precheckDestExistence( $predicates ) );
+               $this->params['dstExists'] = $this->destExists; // see FileBackendStore::setFileCache()
                if ( $status->isOK() ) {
                        // Update file existence predicates
                        $predicates['exists'][$this->params['dst']] = true;
@@ -571,23 +572,26 @@ class CreateFileOp extends FileOp {
         * @return Status
         */
        protected function doAttempt() {
+               // Store the file at the destination
                if ( !$this->destSameAsSource ) {
-                       // Create the file at the destination
-                       return $this->backend->createInternal( $this->setFlags( $this->params ) );
+                       return $this->backend->storeInternal( $this->setFlags( $this->params ) );
                }
                return Status::newGood();
        }
 
        /**
-        * @return bool|String
+        * @return bool|string
         */
        protected function getSourceSha1Base36() {
-               return wfBaseConvert( sha1( $this->params['content'] ), 16, 36, 31 );
+               wfSuppressWarnings();
+               $hash = sha1_file( $this->params['src'] );
+               wfRestoreWarnings();
+               if ( $hash !== false ) {
+                       $hash = wfBaseConvert( $hash, 16, 36, 31 );
+               }
+               return $hash;
        }
 
-       /**
-        * @return array
-        */
        public function storagePathsChanged() {
                return array( $this->params['dst'] );
        }
@@ -632,6 +636,7 @@ class CopyFileOp extends FileOp {
                }
                // Check if destination file exists
                $status->merge( $this->precheckDestExistence( $predicates ) );
+               $this->params['dstExists'] = $this->destExists; // see FileBackendStore::setFileCache()
                if ( $status->isOK() ) {
                        // Update file existence predicates
                        $predicates['exists'][$this->params['dst']] = true;
@@ -708,6 +713,7 @@ class MoveFileOp extends FileOp {
                }
                // Check if destination file exists
                $status->merge( $this->precheckDestExistence( $predicates ) );
+               $this->params['dstExists'] = $this->destExists; // see FileBackendStore::setFileCache()
                if ( $status->isOK() ) {
                        // Update file existence predicates
                        $predicates['exists'][$this->params['src']] = false;
@@ -809,6 +815,58 @@ class DeleteFileOp extends FileOp {
        }
 }
 
+/**
+ * Change metadata for a file at the given storage path in the backend.
+ * Parameters for this operation are outlined in FileBackend::doOperations().
+ */
+class DescribeFileOp extends FileOp {
+       /**
+        * @return array
+        */
+       protected function allowedParams() {
+               return array( array( 'src' ), array( 'disposition', 'headers' ) );
+       }
+
+       /**
+        * @param $predicates array
+        * @return Status
+        */
+       protected function doPrecheck( array &$predicates ) {
+               $status = Status::newGood();
+               // Check if the source file exists
+               if ( !$this->fileExists( $this->params['src'], $predicates ) ) {
+                       $status->fatal( 'backend-fail-notexists', $this->params['src'] );
+                       return $status;
+               // Check if a file can be placed/changed at the source
+               } elseif ( !$this->backend->isPathUsableInternal( $this->params['src'] ) ) {
+                       $status->fatal( 'backend-fail-usable', $this->params['src'] );
+                       $status->fatal( 'backend-fail-describe', $this->params['src'] );
+                       return $status;
+               }
+               // Update file existence predicates
+               $predicates['exists'][$this->params['src']] =
+                       $this->fileExists( $this->params['src'], $predicates );
+               $predicates['sha1'][$this->params['src']] =
+                       $this->fileSha1( $this->params['src'], $predicates );
+               return $status; // safe to call attempt()
+       }
+
+       /**
+        * @return Status
+        */
+       protected function doAttempt() {
+               // Update the source file's metadata
+               return $this->backend->describeInternal( $this->setFlags( $this->params ) );
+       }
+
+       /**
+        * @return array
+        */
+       public function storagePathsChanged() {
+               return array( $this->params['src'] );
+       }
+}
+
 /**
  * Placeholder operation that has no params and does nothing
  */
index 48db9d3..e9d27f7 100644 (file)
@@ -236,6 +236,10 @@ class SwiftFileBackend extends FileBackendStore {
                        if ( isset( $params['disposition'] ) ) {
                                $obj->headers['Content-Disposition'] = $this->truncDisp( $params['disposition'] );
                        }
+                       // Set any other custom headers if requested
+                       if ( isset( $params['headers'] ) ) {
+                               $obj->headers += $params['headers'];
+                       }
                        if ( !empty( $params['async'] ) ) { // deferred
                                $op = $obj->write_async( $params['content'] );
                                $status->value = new SwiftFileOpHandle( $this, $params, 'Create', $op );
@@ -315,6 +319,10 @@ class SwiftFileBackend extends FileBackendStore {
                        if ( isset( $params['disposition'] ) ) {
                                $obj->headers['Content-Disposition'] = $this->truncDisp( $params['disposition'] );
                        }
+                       // Set any other custom headers if requested
+                       if ( isset( $params['headers'] ) ) {
+                               $obj->headers += $params['headers'];
+                       }
                        if ( !empty( $params['async'] ) ) { // deferred
                                wfSuppressWarnings();
                                $fp = fopen( $params['src'], 'rb' );
@@ -554,6 +562,47 @@ class SwiftFileBackend extends FileBackendStore {
                }
        }
 
+       /**
+        * @see FileBackendStore::doDescribeInternal()
+        * @return Status
+        */
+       protected function doDescribeInternal( array $params ) {
+               $status = Status::newGood();
+
+               list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $params['src'] );
+               if ( $srcRel === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['src'] );
+                       return $status;
+               }
+
+               $hdrs = isset( $params['headers'] ) ? $params['headers'] : array();
+               // Set the Content-Disposition header if requested
+               if ( isset( $params['disposition'] ) ) {
+                       $hdrs['Content-Disposition'] = $this->truncDisp( $params['disposition'] );
+               }
+
+               try {
+                       $sContObj = $this->getContainer( $srcCont );
+                       // Get the latest version of the current metadata
+                       $srcObj = $sContObj->get_object( $srcRel,
+                               $this->headersFromParams( array( 'latest' => true ) ) );
+                       // Merge in the metadata updates...
+                       $srcObj->headers = $hdrs + $srcObj->headers;
+                       $srcObj->sync_metadata(); // save to Swift
+                       $this->purgeCDNCache( array( $srcObj ) );
+               } catch ( CDNNotEnabledException $e ) {
+                       // CDN not enabled; nothing to see here
+               } catch ( NoSuchContainerException $e ) {
+                       $status->fatal( 'backend-fail-describe', $params['src'] );
+               } catch ( NoSuchObjectException $e ) {
+                       $status->fatal( 'backend-fail-describe', $params['src'] );
+               } catch ( CloudFilesException $e ) { // some other exception?
+                       $this->handleException( $e, $status, __METHOD__, $params );
+               }
+
+               return $status;
+       }
+
        /**
         * @see FileBackendStore::doPrepareInternal()
         * @return Status
@@ -769,6 +818,7 @@ class SwiftFileBackend extends FileBackendStore {
                                }
                        }
                }
+               trigger_error( "Unable to set SHA-1 metadata for $path", E_USER_WARNING );
                $obj->setMetadataValues( array( 'Sha1base36' => false ) );
                wfProfileOut( __METHOD__ );
                return false; // failed
@@ -1320,6 +1370,7 @@ class SwiftFileBackend extends FileBackendStore {
        protected function closeConnection() {
                if ( $this->conn ) {
                        $this->conn->close(); // close active cURL handles in CF_Http object
+                       $this->conn = null;
                        $this->sessionStarted = 0;
                        $this->connContainerCache->clear();
                }
index 8942818..3de6183 100644 (file)
@@ -169,7 +169,7 @@ class LSLockManager extends QuorumLockManager {
                $authKey = $this->lockServers[$lockSrv]['authKey'];
                // Build of the command as a flat string...
                $values = implode( '|', $values );
-               $key = sha1( $this->session . $action . $type . $values . $authKey );
+               $key = hash_hmac( 'sha1', "{$this->session}\n{$action}\n{$type}\n{$values}", $authKey );
                // Send out the command...
                if ( fwrite( $conn, "{$this->session}:$key:$action:$type:$values\n" ) === false ) {
                        return false;
index 651ee27..cbcc6c8 100644 (file)
@@ -1027,18 +1027,25 @@ class FileRepo {
         * Returns a FileRepoStatus object. On success, the value contains "new" or
         * "archived", to indicate whether the file was new with that name.
         *
+        * Options to $options include:
+        *   - headers : name/value map of HTTP headers to use in response to GET/HEAD requests
+        *
         * @param $srcPath String: the source file system path, storage path, or URL
         * @param $dstRel String: the destination relative path
         * @param $archiveRel String: the relative path where the existing file is to
         *        be archived, if there is one. Relative to the public zone root.
         * @param $flags Integer: bitfield, may be FileRepo::DELETE_SOURCE to indicate
         *        that the source file should be deleted if possible
+        * @param $options Array Optional additional parameters
         * @return FileRepoStatus
         */
-       public function publish( $srcPath, $dstRel, $archiveRel, $flags = 0 ) {
+       public function publish(
+               $srcPath, $dstRel, $archiveRel, $flags = 0, array $options = array()
+       ) {
                $this->assertWritableRepo(); // fail out if read-only
 
-               $status = $this->publishBatch( array( array( $srcPath, $dstRel, $archiveRel ) ), $flags );
+               $status = $this->publishBatch(
+                       array( array( $srcPath, $dstRel, $archiveRel, $options ) ), $flags );
                if ( $status->successCount == 0 ) {
                        $status->ok = false;
                }
@@ -1054,13 +1061,14 @@ class FileRepo {
        /**
         * Publish a batch of files
         *
-        * @param $triplets Array: (source, dest, archive) triplets as per publish()
+        * @param $ntuples Array: (source, dest, archive) triplets or
+        *        (source, dest, archive, options) 4-tuples as per publish().
         * @param $flags Integer: bitfield, may be FileRepo::DELETE_SOURCE to indicate
         *        that the source files should be deleted if possible
         * @throws MWException
         * @return FileRepoStatus
         */
-       public function publishBatch( array $triplets, $flags = 0 ) {
+       public function publishBatch( array $ntuples, $flags = 0 ) {
                $this->assertWritableRepo(); // fail out if read-only
 
                $backend = $this->backend; // convenience
@@ -1075,8 +1083,9 @@ class FileRepo {
                $operations = array();
                $sourceFSFilesToDelete = array(); // cleanup for disk source files
                // Validate each triplet and get the store operation...
-               foreach ( $triplets as $i => $triplet ) {
-                       list( $srcPath, $dstRel, $archiveRel ) = $triplet;
+               foreach ( $ntuples as $i => $ntuple ) {
+                       list( $srcPath, $dstRel, $archiveRel ) = $ntuple;
+                       $options = isset( $ntuple[3] ) ? $ntuple[3] : array();
                        // Resolve source to a storage path if virtual
                        $srcPath = $this->resolveToStoragePath( $srcPath );
                        if ( !$this->validateFilename( $dstRel ) ) {
@@ -1100,6 +1109,9 @@ class FileRepo {
                                return $this->newFatal( 'directorycreateerror', $archiveDir );
                        }
 
+                       // Set any desired headers to be use in GET/HEAD responses
+                       $headers = isset( $options['headers'] ) ? $options['headers'] : array();
+
                        // Archive destination file if it exists.
                        // This will check if the archive file also exists and fail if does.
                        // This is a sanity check to avoid data loss. On Windows and Linux,
@@ -1117,25 +1129,28 @@ class FileRepo {
                        if ( FileBackend::isStoragePath( $srcPath ) ) {
                                if ( $flags & self::DELETE_SOURCE ) {
                                        $operations[] = array(
-                                               'op'           => 'move',
-                                               'src'          => $srcPath,
-                                               'dst'          => $dstPath,
-                                               'overwrite'    => true // replace current
+                                               'op'        => 'move',
+                                               'src'       => $srcPath,
+                                               'dst'       => $dstPath,
+                                               'overwrite' => true, // replace current
+                                               'headers'   => $headers
                                        );
                                } else {
                                        $operations[] = array(
-                                               'op'           => 'copy',
-                                               'src'          => $srcPath,
-                                               'dst'          => $dstPath,
-                                               'overwrite'    => true // replace current
+                                               'op'        => 'copy',
+                                               'src'       => $srcPath,
+                                               'dst'       => $dstPath,
+                                               'overwrite' => true, // replace current
+                                               'headers'   => $headers
                                        );
                                }
                        } else { // FS source path
                                $operations[] = array(
-                                       'op'           => 'store',
-                                       'src'          => $srcPath,
-                                       'dst'          => $dstPath,
-                                       'overwrite'    => true // replace current
+                                       'op'        => 'store',
+                                       'src'       => $srcPath,
+                                       'dst'       => $dstPath,
+                                       'overwrite' => true, // replace current
+                                       'headers'   => $headers
                                );
                                if ( $flags & self::DELETE_SOURCE ) {
                                        $sourceFSFilesToDelete[] = $srcPath;
@@ -1146,8 +1161,8 @@ class FileRepo {
                // Execute the operations for each triplet
                $status->merge( $backend->doOperations( $operations ) );
                // Find out which files were archived...
-               foreach ( $triplets as $i => $triplet ) {
-                       list( $srcPath, $dstRel, $archiveRel ) = $triplet;
+               foreach ( $ntuples as $i => $ntuple ) {
+                       list( $srcPath, $dstRel, $archiveRel ) = $ntuple;
                        $archivePath = $this->getZonePath( 'public' ) . "/$archiveRel";
                        if ( $this->fileExists( $archivePath ) ) {
                                $status->value[$i] = 'archived';
@@ -1405,6 +1420,17 @@ class FileRepo {
                return $this->backend->getFileTimestamp( array( 'src' => $path ) );
        }
 
+       /**
+        * Get the size of a file with a given virtual URL/storage path
+        *
+        * @param $virtualUrl string
+        * @return integer|bool False on failure
+        */
+       public function getFileSize( $virtualUrl ) {
+               $path = $this->resolveToStoragePath( $virtualUrl );
+               return $this->backend->getFileSize( array( 'src' => $path ) );
+       }
+
        /**
         * Get the sha1 (base 36) of a file with a given virtual URL/storage path
         *
index 9a080ae..c1abe61 100644 (file)
@@ -1390,17 +1390,21 @@ abstract class File {
         * The archive name should be passed through to recordUpload for database
         * registration.
         *
+        * Options to $options include:
+        *   - headers : name/value map of HTTP headers to use in response to GET/HEAD requests
+        *
         * @param $srcPath String: local filesystem path to the source image
         * @param $flags Integer: a bitwise combination of:
         *     File::DELETE_SOURCE    Delete the source file, i.e. move
         *         rather than copy
+        * @param $options Array Optional additional parameters
         * @return FileRepoStatus object. On success, the value member contains the
         *     archive name, or an empty string if it was a new file.
         *
         * STUB
         * Overridden by LocalFile
         */
-       function publish( $srcPath, $flags = 0 ) {
+       function publish( $srcPath, $flags = 0, array $options = array() ) {
                $this->readOnlyError();
        }
 
@@ -1740,6 +1744,18 @@ abstract class File {
                return $fsFile->getSha1Base36();
        }
 
+       /**
+        * @return Array HTTP header name/value map to use for HEAD/GET request responses
+        */
+       function getStreamHeaders() {
+               $handler = $this->getHandler();
+               if ( $handler ) {
+                       return $handler->getStreamHeaders( $this->getMetadata() );
+               } else {
+                       return array();
+               }
+       }
+
        /**
         * @return string
         */
index 91f6cb6..a03df85 100644 (file)
@@ -57,9 +57,10 @@ class ForeignDBFile extends LocalFile {
        /**
         * @param $srcPath String
         * @param $flags int
+        * @param $options Array
         * @throws MWException
         */
-       function publish( $srcPath, $flags = 0 ) {
+       function publish( $srcPath, $flags = 0, array $options = array() ) {
                $this->readOnlyError();
        }
 
index f0a3c15..e8f2540 100644 (file)
@@ -951,7 +951,7 @@ class LocalFile extends File {
 
        /**
         * Upload a file and record it in the DB
-        * @param $srcPath String: source storage path or virtual URL
+        * @param $srcPath String: source storage path, virtual URL, or filesystem path
         * @param $comment String: upload description
         * @param $pageText String: text to use for the new description page,
         *                  if a new description page is created
@@ -972,11 +972,31 @@ class LocalFile extends File {
                        return $this->readOnlyFatalStatus();
                }
 
+               if ( !$props ) {
+                       wfProfileIn( __METHOD__ . '-getProps' );
+                       if ( $this->repo->isVirtualUrl( $srcPath )
+                               || FileBackend::isStoragePath( $srcPath ) )
+                       {
+                               $props = $this->repo->getFileProps( $srcPath );
+                       } else {
+                               $props = FSFile::getPropsFromPath( $srcPath );
+                       }
+                       wfProfileOut( __METHOD__ . '-getProps' );
+               }
+
+               $options = array();
+               $handler = MediaHandler::getHandler( $props['mime'] );
+               if ( $handler ) {
+                       $options['headers'] = $handler->getStreamHeaders( $props['metadata'] );
+               } else {
+                       $options['headers'] = array();
+               }
+
                // truncate nicely or the DB will do it for us
                // non-nicely (dangling multi-byte chars, non-truncated version in cache).
                $comment = $wgContLang->truncate( $comment, 255 );
                $this->lock(); // begin
-               $status = $this->publish( $srcPath, $flags );
+               $status = $this->publish( $srcPath, $flags, $options );
 
                if ( $status->successCount > 0 ) {
                        # Essentially we are displacing any existing current file and saving
@@ -1252,11 +1272,12 @@ class LocalFile extends File {
         * @param $srcPath String: local filesystem path to the source image
         * @param $flags Integer: a bitwise combination of:
         *     File::DELETE_SOURCE      Delete the source file, i.e. move rather than copy
+        * @param $options Array Optional additional parameters
         * @return FileRepoStatus object. On success, the value member contains the
         *     archive name, or an empty string if it was a new file.
         */
-       function publish( $srcPath, $flags = 0 ) {
-               return $this->publishTo( $srcPath, $this->getRel(), $flags );
+       function publish( $srcPath, $flags = 0, array $options = array() ) {
+               return $this->publishTo( $srcPath, $this->getRel(), $flags, $options );
        }
 
        /**
@@ -1270,10 +1291,11 @@ class LocalFile extends File {
         * @param $dstRel String: target relative path
         * @param $flags Integer: a bitwise combination of:
         *     File::DELETE_SOURCE      Delete the source file, i.e. move rather than copy
+        * @param $options Array Optional additional parameters
         * @return FileRepoStatus object. On success, the value member contains the
         *     archive name, or an empty string if it was a new file.
         */
-       function publishTo( $srcPath, $dstRel, $flags = 0 ) {
+       function publishTo( $srcPath, $dstRel, $flags = 0, array $options = array() ) {
                if ( $this->getRepo()->getReadOnlyReason() !== false ) {
                        return $this->readOnlyFatalStatus();
                }
@@ -1283,7 +1305,7 @@ class LocalFile extends File {
                $archiveName = wfTimestamp( TS_MW ) . '!'. $this->getName();
                $archiveRel = 'archive/' . $this->getHashPath() . $archiveName;
                $flags = $flags & File::DELETE_SOURCE ? LocalRepo::DELETE_SOURCE : 0;
-               $status = $this->repo->publish( $srcPath, $dstRel, $archiveRel, $flags );
+               $status = $this->repo->publish( $srcPath, $dstRel, $archiveRel, $flags, $options );
 
                if ( $status->value == 'new' ) {
                        $status->value = '';
@@ -1475,7 +1497,6 @@ class LocalFile extends File {
         * @return bool|mixed
         */
        function getDescriptionText() {
-               global $wgParser;
                $revision = Revision::newFromTitle( $this->title, false, Revision::READ_NORMAL );
                if ( !$revision ) return false;
                $content = $revision->getContent();
index 8d4a3f8..698d1eb 100644 (file)
@@ -179,10 +179,18 @@ class UnregisteredLocalFile extends File {
         */
        function getSize() {
                $this->assertRepoDefined();
-               $props = $this->repo->getFileProps( $this->path );
-               if ( isset( $props['size'] ) ) {
-                       return $props['size'];
-               }
-               return false; // doesn't exist
+               return $this->repo->getFileSize( $this->path );
+       }
+
+       /**
+        * Optimize getLocalRefPath() by using an existing local reference.
+        * The file at the path of $fsFile should not be deleted (or at least
+        * not until the end of the request). This is mostly a performance hack.
+        *
+        * @param $fsFile FSFile
+        * @return void
+        */
+       public function setLocalReference( FSFile $fsFile ) {
+               $this->fsFile = $fsFile;
        }
 }
index 740ead5..312b796 100644 (file)
@@ -39,6 +39,13 @@ abstract class DatabaseUpdater {
         */
        protected $updates = array();
 
+       /**
+        * Array of updates that were skipped
+        *
+        * @var array
+        */
+       protected $updatesSkipped = array();
+
        /**
         * List of extension-provided database updates
         * @var array
@@ -67,6 +74,20 @@ abstract class DatabaseUpdater {
                'PopulateFilearchiveSha1',
        );
 
+       /**
+        * File handle for SQL output.
+        *
+        * @var Filehandle
+        */
+       protected $fileHandle = null;
+
+       /**
+        * Flag specifying whether or not to skip schema (e.g. SQL-only) updates.
+        *
+        * @var bool
+        */
+       protected $skipSchema = false;
+
        /**
         * Constructor
         *
@@ -80,6 +101,7 @@ abstract class DatabaseUpdater {
                $this->shared = $shared;
                if ( $maintenance ) {
                        $this->maintenance = $maintenance;
+                       $this->fileHandle = $maintenance->fileHandle;
                } else {
                        $this->maintenance = new FakeMaintenance;
                }
@@ -287,16 +309,35 @@ abstract class DatabaseUpdater {
                return $this->postDatabaseUpdateMaintenance;
        }
 
+       /**
+        * @since 1.21
+        *
+        * Writes the schema updates desired to a file for the DB Admin to run.
+        */
+       private function writeSchemaUpdateFile( $schemaUpdate = array() ) {
+               $updates = $this->updatesSkipped;
+               $this->updatesSkipped = array();
+
+               foreach( $updates as $funcList ) {
+                       $func = $funcList[0];
+                       $arg = $funcList[1];
+                       $ret = call_user_func_array( $func, $arg );
+                       flush();
+                       $this->updatesSkipped[] = $arg;
+               }
+       }
+
        /**
         * Do all the updates
         *
         * @param $what Array: what updates to perform
         */
        public function doUpdates( $what = array( 'core', 'extensions', 'stats' ) ) {
-               global $wgVersion;
+               global $wgVersion, $wgLocalisationCacheConf;
 
                $this->db->begin( __METHOD__ );
                $what = array_flip( $what );
+               $this->skipSchema = isset( $what['noschema'] ) || $this->fileHandle !== null;
                if ( isset( $what['core'] ) ) {
                        $this->runUpdates( $this->getCoreUpdateList(), false );
                }
@@ -305,11 +346,26 @@ abstract class DatabaseUpdater {
                        $this->runUpdates( $this->getExtensionUpdates(), true );
                }
 
-               $this->setAppliedUpdates( $wgVersion, $this->updates );
-
                if ( isset( $what['stats'] ) ) {
                        $this->checkStats();
                }
+
+               if ( isset( $what['purge'] ) ) {
+                       $this->purgeCache();
+
+                       if ( $wgLocalisationCacheConf['manualRecache'] ) {
+                               $this->rebuildLocalisationCache();
+                       }
+               }
+
+               $this->setAppliedUpdates( $wgVersion, $this->updates );
+
+               if( $this->fileHandle ) {
+                       $this->skipSchema = false;
+                       $this->writeSchemaUpdateFile( );
+                       $this->setAppliedUpdates( "$wgVersion-schema", $this->updatesSkipped );
+               }
+
                $this->db->commit( __METHOD__ );
        }
 
@@ -321,6 +377,8 @@ abstract class DatabaseUpdater {
         *                  functions
         */
        private function runUpdates( array $updates, $passSelf ) {
+               $updatesDone = array();
+               $updatesSkipped = array();
                foreach ( $updates as $params ) {
                        $func = array_shift( $params );
                        if( !is_array( $func ) && method_exists( $this, $func ) ) {
@@ -328,10 +386,16 @@ abstract class DatabaseUpdater {
                        } elseif ( $passSelf ) {
                                array_unshift( $params, $this );
                        }
-                       call_user_func_array( $func, $params );
+                       $ret = call_user_func_array( $func, $params );
                        flush();
+                       if( $ret !== false ) {
+                               $updatesDone[] = $params;
+                       } else {
+                               $updatesSkipped[] = array( $func, $params );
+                       }
                }
-               $this->updates = array_merge( $this->updates, $updates );
+               $this->updatesSkipped = array_merge( $this->updatesSkipped, $updatesSkipped );
+               $this->updates = array_merge( $this->updates, $updatesDone );
        }
 
        /**
@@ -458,24 +522,63 @@ abstract class DatabaseUpdater {
         */
        protected abstract function getCoreUpdateList();
 
+       /**
+        * Append an SQL fragment to the open file handle.
+        *
+        * @param $filename String: File name to open
+        */
+       public function copyFile( $filename ) {
+               $this->db->sourceFile( $filename, false, false, false,
+                       array( $this, 'appendLine' )
+               );
+       }
+
+       /**
+        * Append a line to the open filehandle.  The line is assumed to
+        * be a complete SQL statement.
+        *
+        * This is used as a callback for for sourceLine().
+        *
+        * @param $line String text to append to the file
+        * @return Boolean false to skip actually executing the file
+        * @throws MWException
+        */
+       public function appendLine( $line ) {
+               $line = rtrim( $line ) . ";\n";
+               if( fwrite( $this->fileHandle, $line ) === false ) {
+                       throw new MWException( "trouble writing file" );
+               }
+               return false;
+       }
+
        /**
         * Applies a SQL patch
         * @param $path String Path to the patch file
         * @param $isFullPath Boolean Whether to treat $path as a relative or not
         * @param $msg String Description of the patch
+        * @return boolean false if patch is skipped.
         */
        protected function applyPatch( $path, $isFullPath = false, $msg = null ) {
                if ( $msg === null ) {
                        $msg = "Applying $path patch";
                }
+               if ( $this->skipSchema ) {
+                       $this->output( "...skipping schema change ($msg).\n" );
+                       return false;
+               }
+
+               $this->output( "$msg ..." );
 
                if ( !$isFullPath ) {
                        $path = $this->db->patchPath( $path );
                }
-
-               $this->output( "$msg ..." );
-               $this->db->sourceFile( $path );
-               $this->output( "done.\n" );
+               if( $this->fileHandle !== null ) {
+                       $this->copyFile( $path );
+               } else {
+                       $this->db->sourceFile( $path );
+               }
+               $this->output( "done.\n" );
+               return true;
        }
 
        /**
@@ -483,13 +586,15 @@ abstract class DatabaseUpdater {
         * @param $name String Name of the new table
         * @param $patch String Path to the patch file
         * @param $fullpath Boolean Whether to treat $patch path as a relative or not
+        * @return Boolean false if this was skipped because schema changes are skipped
         */
        protected function addTable( $name, $patch, $fullpath = false ) {
                if ( $this->db->tableExists( $name, __METHOD__ ) ) {
                        $this->output( "...$name table already exists.\n" );
                } else {
-                       $this->applyPatch( $patch, $fullpath, "Creating $name table" );
+                       return $this->applyPatch( $patch, $fullpath, "Creating $name table" );
                }
+               return true;
        }
 
        /**
@@ -498,6 +603,7 @@ abstract class DatabaseUpdater {
         * @param $field String Name of the new field
         * @param $patch String Path to the patch file
         * @param $fullpath Boolean Whether to treat $patch path as a relative or not
+        * @return Boolean false if this was skipped because schema changes are skipped
         */
        protected function addField( $table, $field, $patch, $fullpath = false ) {
                if ( !$this->db->tableExists( $table, __METHOD__ ) ) {
@@ -505,8 +611,9 @@ abstract class DatabaseUpdater {
                } elseif ( $this->db->fieldExists( $table, $field, __METHOD__ ) ) {
                        $this->output( "...have $field field in $table table.\n" );
                } else {
-                       $this->applyPatch( $patch, $fullpath, "Adding $field field to table $table" );
+                       return $this->applyPatch( $patch, $fullpath, "Adding $field field to table $table" );
                }
+               return true;
        }
 
        /**
@@ -515,13 +622,18 @@ abstract class DatabaseUpdater {
         * @param $index String Name of the new index
         * @param $patch String Path to the patch file
         * @param $fullpath Boolean Whether to treat $patch path as a relative or not
+        * @return Boolean false if this was skipped because schema changes are skipped
         */
        protected function addIndex( $table, $index, $patch, $fullpath = false ) {
-               if ( $this->db->indexExists( $table, $index, __METHOD__ ) ) {
+               if ( !$this->db->tableExists( $table, __METHOD__ ) ) {
+                       $this->output( "...skipping: '$table' table doesn't exist yet.\n" );
+                       return false;
+               } else if ( $this->db->indexExists( $table, $index, __METHOD__ ) ) {
                        $this->output( "...index $index already set on $table table.\n" );
                } else {
-                       $this->applyPatch( $patch, $fullpath, "Adding index $index to table $table" );
+                       return $this->applyPatch( $patch, $fullpath, "Adding index $index to table $table" );
                }
+               return true;
        }
 
        /**
@@ -531,13 +643,15 @@ abstract class DatabaseUpdater {
         * @param $field String Name of the old field
         * @param $patch String Path to the patch file
         * @param $fullpath Boolean Whether to treat $patch path as a relative or not
+        * @return Boolean false if this was skipped because schema changes are skipped
         */
        protected function dropField( $table, $field, $patch, $fullpath = false ) {
                if ( $this->db->fieldExists( $table, $field, __METHOD__ ) ) {
-                       $this->applyPatch( $patch, $fullpath, "Table $table contains $field field. Dropping" );
+                       return $this->applyPatch( $patch, $fullpath, "Table $table contains $field field. Dropping" );
                } else {
                        $this->output( "...$table table does not contain $field field.\n" );
                }
+               return true;
        }
 
        /**
@@ -547,13 +661,15 @@ abstract class DatabaseUpdater {
         * @param $index String: Name of the old index
         * @param $patch String: Path to the patch file
         * @param $fullpath Boolean: Whether to treat $patch path as a relative or not
+        * @return Boolean false if this was skipped because schema changes are skipped
         */
        protected function dropIndex( $table, $index, $patch, $fullpath = false ) {
                if ( $this->db->indexExists( $table, $index, __METHOD__ ) ) {
-                       $this->applyPatch( $patch, $fullpath, "Dropping $index index from table $table" );
+                       return $this->applyPatch( $patch, $fullpath, "Dropping $index index from table $table" );
                } else {
                        $this->output( "...$index key doesn't exist.\n" );
                }
+               return true;
        }
 
        /**
@@ -565,6 +681,7 @@ abstract class DatabaseUpdater {
         * @param $table string
         * @param $patch string|false
         * @param $fullpath bool
+        * @return Boolean false if this was skipped because schema changes are skipped
         */
        public function dropTable( $table, $patch = false, $fullpath = false ) {
                if ( $this->db->tableExists( $table, __METHOD__ ) ) {
@@ -576,12 +693,12 @@ abstract class DatabaseUpdater {
                                $this->output( "done.\n" );
                        }
                        else {
-                               $this->applyPatch( $patch, $fullpath, $msg );
+                               return $this->applyPatch( $patch, $fullpath, $msg );
                        }
-
                } else {
                        $this->output( "...$table doesn't exist.\n" );
                }
+               return true;
        }
 
        /**
@@ -591,6 +708,7 @@ abstract class DatabaseUpdater {
         * @param $field String: name of the field to modify
         * @param $patch String: path to the patch file
         * @param $fullpath Boolean: whether to treat $patch path as a relative or not
+        * @return Boolean false if this was skipped because schema changes are skipped
         */
        public function modifyField( $table, $field, $patch, $fullpath = false ) {
                $updateKey = "$table-$field-$patch";
@@ -601,9 +719,10 @@ abstract class DatabaseUpdater {
                } elseif( $this->updateRowExists( $updateKey ) ) {
                        $this->output( "...$field in table $table already modified by patch $patch.\n" );
                } else {
-                       $this->applyPatch( $patch, $fullpath, "Modifying $field field of table $table" );
+                       return $this->applyPatch( $patch, $fullpath, "Modifying $field field of table $table" );
                        $this->insertUpdateRow( $updateKey );
                }
+               return true;
        }
 
        /**
@@ -699,7 +818,8 @@ abstract class DatabaseUpdater {
                        return;
                }
 
-               $this->applyPatch( 'patch-tc-timestamp.sql', false, "Converting tc_time from UNIX epoch to MediaWiki timestamp" );
+               return $this->applyPatch( 'patch-tc-timestamp.sql', false,
+                       "Converting tc_time from UNIX epoch to MediaWiki timestamp" );
        }
 
        /**
@@ -707,29 +827,33 @@ abstract class DatabaseUpdater {
         */
        protected function doCollationUpdate() {
                global $wgCategoryCollation;
-               if ( $this->db->selectField(
-                       'categorylinks',
-                       'COUNT(*)',
-                       'cl_collation != ' . $this->db->addQuotes( $wgCategoryCollation ),
-                       __METHOD__
-               ) == 0 ) {
-                       $this->output( "...collations up-to-date.\n" );
-                       return;
-               }
+               if ( $this->db->fieldExists( 'categorylinks', 'cl_collation', __METHOD__ ) ) {
+                       if ( $this->db->selectField(
+                               'categorylinks',
+                               'COUNT(*)',
+                               'cl_collation != ' . $this->db->addQuotes( $wgCategoryCollation ),
+                               __METHOD__
+                               ) == 0 ) {
+                                       $this->output( "...collations up-to-date.\n" );
+                                       return;
+                       }
 
-               $this->output( "Updating category collations..." );
-               $task = $this->maintenance->runChild( 'UpdateCollation' );
-               $task->execute();
-               $this->output( "...done.\n" );
+                       $this->output( "Updating category collations..." );
+                       $task = $this->maintenance->runChild( 'UpdateCollation' );
+                       $task->execute();
+                       $this->output( "...done.\n" );
+               }
        }
 
        /**
         * Migrates user options from the user table blob to user_properties
         */
        protected function doMigrateUserOptions() {
-               $cl = $this->maintenance->runChild( 'ConvertUserOptions', 'convertUserOptions.php' );
-               $cl->execute();
-               $this->output( "done.\n" );
+               if( $this->db->tableExists( 'user_properties' ) ) {
+                       $cl = $this->maintenance->runChild( 'ConvertUserOptions', 'convertUserOptions.php' );
+                       $cl->execute();
+                       $this->output( "done.\n" );
+               }
        }
 
        /**
index 32056e3..0a5161d 100644 (file)
@@ -4175,6 +4175,8 @@ $messages['de-formal'] = array(
  * @author Mirzali
  */
 $messages['diq'] = array(
+       'config-title' => 'MediaWiki $1 sazkerdış',
+       'config-information' => 'Melumat',
        'config-your-language' => 'Zıwanê şıma:',
        'config-wiki-language' => 'Wiki zıwan:',
        'config-back' => '← Peyser',
@@ -4185,7 +4187,10 @@ $messages['diq'] = array(
        'config-page-name' => 'Name',
        'config-page-options' => 'Weçinegi',
        'config-page-install' => 'Barine',
+       'config-page-complete' => 'Temamyayo',
        'config-page-readme' => 'Mı bıwane',
+       'config-page-copying' => 'Kopyayeno',
+       'config-page-upgradedoc' => 'Berzkerdış',
        'config-restart' => 'E, fına dest pekê',
        'config-sidebar' => "* [//www.mediawiki.org MediaWiki keye]
 * [//www.mediawiki.org/wiki/Help:Contents User's Şınasiye]
@@ -4214,11 +4219,14 @@ $messages['diq'] = array(
        'config-admin-name' => 'Namey şıma:',
        'config-admin-password' => 'Parola:',
        'config-admin-password-confirm' => 'Fına parola:',
+       'config-admin-email' => 'Adresa e-postey:',
+       'config-profile-private' => 'Bexse wiki',
        'config-license-cc-by-sa' => 'Creative Commons Attribution Share Alike',
        'config-license-cc-by' => 'Creative Commons Attribution',
        'config-license-cc-by-nc-sa' => 'Creative Commons Attribution Non-Commercial Share Alike',
        'config-license-pd' => 'Malê Şari',
        'config-extensions' => 'Olekeni',
+       'config-help' => 'peşti',
        'mainpagetext' => "'''MediaWiki vıst ra ser, vıraziya.'''",
        'mainpagedocfooter' => 'Seba gurenayış u eyarkerdışê Wiki-Softwarey [//meta.wikimedia.org/wiki/Help:Contents İdarê karberi] de mıracaet ke.
 
@@ -9774,8 +9782,8 @@ MediaWikiのインストールはできません。',
 しかし、MediaWikiには PHP $2 以上が必要です。',
        'config-unicode-using-utf8' => 'Unicode正規化に、Brion Vibberのutf8_normalize.soを使用。',
        'config-unicode-using-intl' => 'Unicode正規化に[http://pecl.php.net/intl intl PECL 拡張機能]を使用。',
-       'config-unicode-pure-php-warning' => "'''警告''':Unicode正規化の処理に [http://pecl.php.net/intl intl PECL 拡張機能]が使用可能ではなく、処理の遅いピュア PHP の実装を代わりに用いています。
-高トラフィックのサイトを運営する場合は、[//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode正規化に関するページ]をお読みください。",
+       'config-unicode-pure-php-warning' => "'''警告''': Unicode 正規化の処理に [http://pecl.php.net/intl intl PECL 拡張機能]を利用できないため、処理が遅いピュア PHP の実装を代わりに使用しています。
+高トラフィックのサイトを運営する場合は、[//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode 正規化]をお読みください。",
        'config-unicode-update-warning' => "'''警告''':インストールされているバージョンのUnicode正規化ラッパーは、[http://site.icu-project.org/ ICUプロジェクト]のライブラリの古いバージョンを使用しています。
 Unicodeを少しでも利用する可能性があるなら、[//www.mediawiki.org/wiki/Unicode_normalization_considerations アップグレード]する必要があります。",
        'config-no-db' => '適切なデータベース ドライバーが見つかりませんでした! PHP にデータベース ドライバーをインストールする必要があります。
@@ -12428,13 +12436,13 @@ chmod a+w $3</pre>',
 По инсталацијата имате на избор и посложени кориснички права и поставки. Погледајте во [//www.mediawiki.org/wiki/Manual:User_rights прирачникот].",
        'config-license' => 'Авторски права и лиценца:',
        'config-license-none' => 'Без подножје за лиценца',
-       'config-license-cc-by-sa' => 'Creative Commons НаведиИзвор СподелиПодИстиУслови',
+       'config-license-cc-by-sa' => 'Криејтив комонс НаведиИзвор СподелиПодИстиУслови',
        'config-license-cc-by' => 'Криејтив комонс НаведиИзвор',
-       'config-license-cc-by-nc-sa' => 'Creative Commons НаведиИзвор-Некомерцијално-СподелиПодИстиУслови',
+       'config-license-cc-by-nc-sa' => 'Криејтив комонс НаведиИзвор-Некомерцијално-СподелиПодИстиУслови',
        'config-license-cc-0' => 'Криејтив комонс Нула (јавна сопственост)',
        'config-license-gfdl' => 'ГНУ-ова лиценца за слободна документација 1.3 или понова',
        'config-license-pd' => 'Јавна сопственост',
-       'config-license-cc-choose' => 'Одберете друга Creative Commons лиценца по ваш избор',
+       'config-license-cc-choose' => 'Одберете друга лиценца на Криејтив комонс по ваш избор',
        'config-license-help' => "Многу јавни викија ги ставаат сите придонеси под [http://freedomdefined.org/Definition слободна лиценца].
 Со ова се создава атмосфера на општа сопственост и поттикнува долгорочно учество.
 Ова не е неопходно за викија на поединечни физички или правни лица.
@@ -12482,10 +12490,10 @@ chmod a+w $3</pre>',
 За да може ова да работи, МедијаВики бара пристап до интернет.
 
 За повеќе информации за оваа функција и напатствија за нејзино поставување на вики (сите други освен Ризницата), коносултирајте го [//mediawiki.org/wiki/Manual:$wgForeignFileRepos прирачникот].',
-       'config-cc-error' => 'Изборникот на Creative Commons лиценца не даде резултати.
+       'config-cc-error' => 'Изборникот на лиценци од Криејтив комонс не даде резултати.
 Внесете го името на лиценцата рачно.',
        'config-cc-again' => 'Одберете повторно...',
-       'config-cc-not-chosen' => 'Одберете ја саканата Creative Commons лиценца и кликнете на „продолжи“.',
+       'config-cc-not-chosen' => 'Одберете ја саканата лиценца од Криејтив комонс и стиснете на „продолжи“.',
        'config-advanced-settings' => 'Напредни нагодувања',
        'config-cache-options' => 'Нагодувања за кеширање на објекти:',
        'config-cache-help' => 'Кеширањето на објекти се користи за зголемување на брзината на МедијаВики со кеширање на често употребуваните податоци.
@@ -18302,6 +18310,7 @@ $messages['yi'] = array(
        'config-page-language' => 'שפראַך',
        'config-page-name' => 'נאָמען',
        'config-page-options' => 'ברירות',
+       'config-ns-generic' => 'פראיעקט',
        'config-admin-name' => 'אײַער נאָמען:',
        'config-admin-password' => 'פאַסווארט:',
        'config-admin-email' => 'בליצפּאָסט אַדרעס:',
index 3f1dad9..c00dc13 100644 (file)
@@ -155,8 +155,8 @@ class MysqlUpdater extends DatabaseUpdater {
                        // 1.15
                        array( 'doUniquePlTlIl' ),
                        array( 'addTable', 'change_tag',                        'patch-change_tag.sql' ),
-                       array( 'addTable', 'tag_summary',                       'patch-change_tag.sql' ),
-                       array( 'addTable', 'valid_tag',                         'patch-change_tag.sql' ),
+                       /* array( 'addTable', 'tag_summary',                       'patch-change_tag.sql' ), */
+                       /* array( 'addTable', 'valid_tag',                         'patch-change_tag.sql' ), */
 
                        // 1.16
                        array( 'addTable', 'user_properties',                   'patch-user_properties.sql' ),
@@ -225,6 +225,8 @@ class MysqlUpdater extends DatabaseUpdater {
                        array( 'addTable', 'sites',                            'patch-sites.sql' ),
                        array( 'addField', 'filearchive',   'fa_sha1',          'patch-fa_sha1.sql' ),
                        array( 'addField', 'job',           'job_token',         'patch-job_token.sql' ),
+                       array( 'addField', 'job',           'job_attempts',       'patch-job_attempts.sql' ),
+                       array( 'doEnableProfiling' ),
                );
        }
 
@@ -639,6 +641,9 @@ class MysqlUpdater extends DatabaseUpdater {
         */
        protected function doWatchlistNull() {
                $info = $this->db->fieldInfo( 'watchlist', 'wl_notificationtimestamp' );
+               if ( !$info ) {
+                       return;
+               }
                if ( $info->isNullable() ) {
                        $this->output( "...wl_notificationtimestamp is already nullable.\n" );
                        return;
@@ -771,11 +776,19 @@ class MysqlUpdater extends DatabaseUpdater {
                }
        }
 
+       protected function doEnableProfiling() {
+               global $wgProfileToDatabase;
+               if ( $wgProfileToDatabase === true && ! $this->db->tableExists( 'profiling', __METHOD__ ) ) {
+                       $this->applyPatch( 'patch-profiling.sql', false, 'Add profiling table' );
+               }
+       }
+
        protected function doMaybeProfilingMemoryUpdate() {
                if ( !$this->db->tableExists( 'profiling', __METHOD__ ) ) {
-                       // Simply ignore
+                       return true;
                } elseif ( $this->db->fieldExists( 'profiling', 'pf_memory', __METHOD__ ) ) {
                        $this->output( "...profiling table has pf_memory field.\n" );
+                       return true;
                } else {
                        $this->applyPatch( 'patch-profiling-memory.sql', false, "Adding pf_memory field to table profiling" );
                }
@@ -786,16 +799,21 @@ class MysqlUpdater extends DatabaseUpdater {
                if ( !$info ) {
                        $this->applyPatch( 'patch-filearchive-user-index.sql', false, "Updating filearchive indices" );
                }
+               return true;
        }
 
        protected function doUniquePlTlIl() {
                $info = $this->db->indexInfo( 'pagelinks', 'pl_namespace' );
                if ( is_array( $info ) && !$info[0]->Non_unique ) {
                        $this->output( "...pl_namespace, tl_namespace, il_to indices are already UNIQUE.\n" );
-                       return;
+                       return true;
+               }
+               if ( $this->skipSchema ) {
+                       $this->output( "...skipping schema change (making pl_namespace, tl_namespace and il_to indices UNIQUE).\n" );
+                       return false;
                }
 
-               $this->applyPatch( 'patch-pl-tl-il-unique.sql', false, "Making pl_namespace, tl_namespace and il_to indices UNIQUE" );
+               return $this->applyPatch( 'patch-pl-tl-il-unique.sql', false, "Making pl_namespace, tl_namespace and il_to indices UNIQUE" );
        }
 
        protected function renameEuWikiId() {
@@ -839,6 +857,9 @@ class MysqlUpdater extends DatabaseUpdater {
 
        protected function doUserNewTalkTimestampNotNull() {
                $info = $this->db->fieldInfo( 'user_newtalk', 'user_last_timestamp' );
+               if ( $info === false ) {
+                       return;
+               }
                if ( $info->isNullable() ) {
                        $this->output( "...user_last_timestamp is already nullable.\n" );
                        return;
index 2fa3f31..472283d 100644 (file)
@@ -105,6 +105,8 @@ class SqliteUpdater extends DatabaseUpdater {
                        array( 'addTable', 'sites',                            'patch-sites.sql' ),
                        array( 'addField', 'filearchive',   'fa_sha1',          'patch-fa_sha1.sql' ),
                        array( 'addField', 'job',           'job_token',         'patch-job_token.sql' ),
+                       array( 'addField', 'job',           'job_attempts',      'patch-job_attempts.sql' ),
+                       array( 'doEnableProfiling' ),
                );
        }
 
@@ -128,4 +130,11 @@ class SqliteUpdater extends DatabaseUpdater {
                        $this->output( "...fulltext search table appears to be in order.\n" );
                }
        }
+
+       protected function doEnableProfiling() {
+               global $wgProfileToDatabase;
+               if ( $wgProfileToDatabase === true && ! $this->db->tableExists( 'profiling', __METHOD__ ) ) {
+                       $this->applyPatch( 'patch-profiling.sql', false, 'Add profiling table' );
+               }
+       }
 }
index 0d2803e..927ca4e 100644 (file)
@@ -178,6 +178,51 @@ abstract class Job {
                return $this->removeDuplicates;
        }
 
+       /**
+        * Subclasses may need to override this to make duplication detection work
+        *
+        * @return Array Map of key/values
+        */
+       public function getDeduplicationInfo() {
+               $info = array(
+                       'type'      => $this->getType(),
+                       'namespace' => $this->getTitle()->getNamespace(),
+                       'title'     => $this->getTitle()->getDBkey(),
+                       'params'    => $this->getParams()
+               );
+               // Identical jobs with different "root" jobs should count as duplicates
+               if ( is_array( $info['params'] ) ) {
+                       unset( $info['params']['rootJobSignature'] );
+                       unset( $info['params']['rootJobTimestamp'] );
+               }
+               return $info;
+       }
+
+       /**
+        * @param $key string A key that identifies the task
+        * @return Array
+        */
+       public static function newRootJobParams( $key ) {
+               return array(
+                       'rootJobSignature' => sha1( $key ),
+                       'rootJobTimestamp' => wfTimestampNow()
+               );
+       }
+
+       /**
+        * @return Array
+        */
+       public function getRootJobParams() {
+               return array(
+                       'rootJobSignature' => isset( $this->params['rootJobSignature'] )
+                               ? $this->params['rootJobSignature']
+                               : null,
+                       'rootJobTimestamp' => isset( $this->params['rootJobTimestamp'] )
+                               ? $this->params['rootJobTimestamp']
+                               : null
+               );
+       }
+
        /**
         * Insert a single job into the queue.
         * @return bool true on success
index 21ef6d3..e88441d 100644 (file)
@@ -32,6 +32,7 @@ abstract class JobQueue {
        protected $wiki; // string; wiki ID
        protected $type; // string; job type
        protected $order; // string; job priority for pop()
+       protected $claimTTL; // integer; seconds
 
        const QoS_Atomic = 1; // integer; "all-or-nothing" job insertions
 
@@ -39,23 +40,28 @@ abstract class JobQueue {
         * @param $params array
         */
        protected function __construct( array $params ) {
-               $this->wiki  = $params['wiki'];
-               $this->type  = $params['type'];
-               $this->order = isset( $params['order'] ) ? $params['order'] : 'random';
+               $this->wiki     = $params['wiki'];
+               $this->type     = $params['type'];
+               $this->order    = isset( $params['order'] ) ? $params['order'] : 'random';
+               $this->claimTTL = isset( $params['claimTTL'] ) ? $params['claimTTL'] : 0;
        }
 
        /**
         * Get a job queue object of the specified type.
         * $params includes:
-        *     class : What job class to use (determines job type)
-        *     wiki  : wiki ID of the wiki the jobs are for (defaults to current wiki)
-        *     type  : The name of the job types this queue handles
-        *     order : Order that pop() selects jobs, either "timestamp" or "random".
-        *             If "timestamp" is used, the queue will effectively be FIFO. Note that
-        *             pop() will not be exactly FIFO, and even if it was, job completion would
-        *             not appear to be exactly FIFO since jobs can take different times to finish.
-        *             If "random" is used, pop() will pick jobs in random order. This might be
-        *             useful for improving concurrency depending on the queue storage medium.
+        *   class    : What job class to use (determines job type)
+        *   wiki     : wiki ID of the wiki the jobs are for (defaults to current wiki)
+        *   type     : The name of the job types this queue handles
+        *   order    : Order that pop() selects jobs, one of "fifo", "timestamp" or "random".
+        *              If "fifo" is used, the queue will effectively be FIFO. Note that
+        *              job completion will not appear to be exactly FIFO if there are multiple
+        *              job runners since jobs can take different times to finish once popped.
+        *              If "timestamp" is used, the queue will at least be loosely ordered
+        *              by timestamp, allowing for some jobs to be popped off out of order.
+        *              If "random" is used, pop() will pick jobs in random order. This might be
+        *              useful for improving concurrency depending on the queue storage medium.
+        *   claimTTL : If supported, the queue will recycle jobs that have been popped
+        *              but not acknowledged as completed after this many seconds.
         *
         * @param $params array
         * @return JobQueue
@@ -177,6 +183,53 @@ abstract class JobQueue {
         */
        abstract protected function doAck( Job $job );
 
+       /**
+        * Register the "root job" of a given job into the queue for de-duplication.
+        * This should only be called right *after* all the new jobs have been inserted.
+        * This is used to turn older, duplicate, job entries into no-ops. The root job
+        * information will remain in the registry until it simply falls out of cache.
+        *
+        * This requires that $job has two special fields in the "params" array:
+        *   - rootJobSignature : hash (e.g. SHA1) that identifies the task
+        *   - rootJobTimestamp : TS_MW timestamp of this instance of the task
+        *
+        * A "root job" is a conceptual job that consist of potentially many smaller jobs
+        * that are actually inserted into the queue. For example, "refreshLinks" jobs are
+        * spawned when a template is edited. One can think of the task as "update links
+        * of pages that use template X" and an instance of that task as a "root job".
+        * However, what actually goes into the queue are potentially many refreshLinks2 jobs.
+        * Since these jobs include things like page ID ranges and DB master positions, and morph
+        * into smaller refreshLinks2 jobs recursively, simple duplicate detection (like job_sha1)
+        * for individual jobs being identical is not useful.
+        *
+        * In the case of "refreshLinks", if these jobs are still in the queue when the template
+        * is edited again, we want all of these old refreshLinks jobs for that template to become
+        * no-ops. This can greatly reduce server load, since refreshLinks jobs involves parsing.
+        * Essentially, the new batch of jobs belong to a new "root job" and the older ones to a
+        * previous "root job" for the same task of "update links of pages that use template X".
+        *
+        * @param $job Job
+        * @return bool
+        */
+       final public function deduplicateRootJob( Job $job ) {
+               if ( $job->getType() !== $this->type ) {
+                       throw new MWException( "Got '{$job->getType()}' job; expected '{$this->type}'." );
+               }
+               wfProfileIn( __METHOD__ );
+               $ok = $this->doDeduplicateRootJob( $job );
+               wfProfileOut( __METHOD__ );
+               return $ok;
+       }
+
+       /**
+        * @see JobQueue::deduplicateRootJob()
+        * @param $job Job
+        * @return bool
+        */
+       protected function doDeduplicateRootJob( Job $job ) {
+               return true;
+       }
+
        /**
         * Wait for any slaves or backup servers to catch up
         *
index 223ef41..0c01db7 100644 (file)
  * @since 1.21
  */
 class JobQueueDB extends JobQueue {
-       const CACHE_TTL      = 300; // integer; seconds
-       const MAX_JOB_RANDOM = 2147483647; // 2^31 - 1; used for job_random
+       const CACHE_TTL      = 300; // integer; seconds to cache queue information
+       const MAX_AGE_PRUNE  = 604800; // integer; seconds a job can live once claimed
+       const MAX_ATTEMPTS   = 3; // integer; number of times to try a job
+       const MAX_JOB_RANDOM = 2147483647; // integer; 2^31 - 1, used for job_random
 
        /**
         * @see JobQueue::doIsEmpty()
@@ -123,9 +125,13 @@ class JobQueueDB extends JobQueue {
                $autoTrx = $dbw->getFlag( DBO_TRX ); // automatic begin() enabled?
                $dbw->clearFlag( DBO_TRX ); // make each query its own transaction
                try {
+                       // Occasionally recycle jobs back into the queue that have been claimed too long
+                       if ( mt_rand( 0, 99 ) == 0 ) {
+                               $this->recycleStaleJobs();
+                       }
                        do { // retry when our row is invalid or deleted as a duplicate
                                // Try to reserve a row in the DB...
-                               if ( $this->order === 'timestamp' ) { // oldest first
+                               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
@@ -159,6 +165,10 @@ class JobQueueDB extends JobQueue {
                                        );
                                        wfIncrStats( 'job-pop', $dbw->affectedRows() );
                                }
+                               // Flag this job as an old duplicate based on its "root" job...
+                               if ( $this->isRootJobOldDuplicate( $job ) ) {
+                                       $job = DuplicateJob::newFromJob( $job ); // convert to a no-op
+                               }
                                break; // done
                        } while( true );
                } catch ( DBError $e ) {
@@ -199,7 +209,10 @@ class JobQueueDB extends JobQueue {
                        );
                        if ( $row ) { // claim the job
                                $dbw->update( 'job', // update by PK
-                                       array( 'job_token' => $uuid, 'job_token_timestamp' => $dbw->timestamp() ),
+                                       array(
+                                               'job_token'           => $uuid,
+                                               'job_token_timestamp' => $dbw->timestamp(),
+                                               'job_attempts = job_attempts+1' ),
                                        array( 'job_cmd' => $this->type, 'job_id' => $row->job_id, 'job_token' => '' ),
                                        __METHOD__
                                );
@@ -232,26 +245,30 @@ class JobQueueDB extends JobQueue {
                                // same table being changed in an UPDATE query in MySQL (gives Error: 1093).
                                // Oracle and Postgre have no such limitation. However, MySQL offers an
                                // alternative here by supporting ORDER BY + LIMIT for UPDATE queries.
-                               $dbw->query( "UPDATE {$dbw->tableName( 'job' )}
-                                       SET
-                                               job_token = {$dbw->addQuotes( $uuid ) },
-                                               job_token_timestamp = {$dbw->addQuotes( $dbw->timestamp() )}
-                                       WHERE (
-                                               job_cmd = {$dbw->addQuotes( $this->type )}
-                                               AND job_token = {$dbw->addQuotes( '' )}
-                                       ) ORDER BY job_random ASC LIMIT 1",
+                               $dbw->query( "UPDATE {$dbw->tableName( 'job' )} " .
+                                       "SET " .
+                                               "job_token = {$dbw->addQuotes( $uuid ) }, " .
+                                               "job_token_timestamp = {$dbw->addQuotes( $dbw->timestamp() )}, " .
+                                               "job_attempts = job_attempts+1 " .
+                                       "WHERE ( " .
+                                               "job_cmd = {$dbw->addQuotes( $this->type )} " .
+                                               "AND job_token = {$dbw->addQuotes( '' )} " .
+                                       ") ORDER BY job_id ASC LIMIT 1",
                                        __METHOD__
                                );
                        } else {
                                // Use a subquery to find the job, within an UPDATE to claim it.
                                // This uses as much of the DB wrapper functions as possible.
                                $dbw->update( 'job',
-                                       array( 'job_token' => $uuid, 'job_token_timestamp' => $dbw->timestamp() ),
+                                       array(
+                                               'job_token'           => $uuid,
+                                               'job_token_timestamp' => $dbw->timestamp(),
+                                               'job_attempts = job_attempts+1' ),
                                        array( 'job_id = (' .
                                                $dbw->selectSQLText( 'job', 'job_id',
                                                        array( 'job_cmd' => $this->type, 'job_token' => '' ),
                                                        __METHOD__,
-                                                       array( 'ORDER BY' => 'job_random ASC', 'LIMIT' => 1 ) ) .
+                                                       array( 'ORDER BY' => 'job_id ASC', 'LIMIT' => 1 ) ) .
                                                ')'
                                        ),
                                        __METHOD__
@@ -273,6 +290,51 @@ class JobQueueDB extends JobQueue {
                return $row;
        }
 
+       /**
+        * Recycle or destroy any jobs that have been claimed for too long
+        *
+        * @return integer Number of jobs recycled/deleted
+        */
+       protected function recycleStaleJobs() {
+               $now   = time();
+               $dbw   = $this->getMasterDB();
+               $count = 0; // affected rows
+
+               if ( $this->claimTTL > 0 ) { // re-try stale jobs...
+                       $claimCutoff = $dbw->timestamp( $now - $this->claimTTL );
+                       // 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.
+                       $dbw->update( 'job',
+                               array(
+                                       'job_token' => '',
+                                       'job_token_timestamp' => $dbw->timestamp( $now ) ), // time of release
+                               array(
+                                       'job_cmd' => $this->type,
+                                       "job_token != {$dbw->addQuotes( '' )}", // was acquired
+                                       "job_token_timestamp < {$dbw->addQuotes( $claimCutoff )}", // stale
+                                       "job_attempts < {$dbw->addQuotes( self::MAX_ATTEMPTS )}" ),
+                               __METHOD__
+                       );
+                       $count += $dbw->affectedRows();
+               }
+
+               // Just destroy 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( self::MAX_ATTEMPTS )}";
+               }
+               $dbw->delete( 'job', $conds, __METHOD__ );
+               $count += $dbw->affectedRows();
+
+               return $count;
+       }
+
        /**
         * @see JobQueue::doAck()
         * @return Job|bool
@@ -295,6 +357,62 @@ class JobQueueDB extends JobQueue {
                return true;
        }
 
+       /**
+        * @see JobQueue::doDeduplicateRootJob()
+        * @return bool
+        */
+       protected function doDeduplicateRootJob( Job $job ) {
+               $params = $job->getParams();
+               if ( !isset( $params['rootJobSignature'] ) ) {
+                       throw new MWException( "Cannot register root job; missing 'rootJobSignature'." );
+               } elseif ( !isset( $params['rootJobTimestamp'] ) ) {
+                       throw new MWException( "Cannot register root job; missing 'rootJobTimestamp'." );
+               }
+               $key = $this->getRootJobCacheKey( $params['rootJobSignature'] );
+               // Callers should call batchInsert() and then this function so that if the insert
+               // fails, the de-duplication registration will be aborted. Since the insert is
+               // deferred till "transaction idle", do that same here, so that the ordering is
+               // maintained. Having only the de-duplication registration succeed would cause
+               // jobs to become no-ops without any actual jobs that made them redundant.
+               $this->getMasterDB()->onTransactionIdle( function() use ( $params, $key ) {
+                       global $wgMemc;
+
+                       $timestamp = $wgMemc->get( $key ); // current last timestamp of this job
+                       if ( $timestamp && $timestamp >= $params['rootJobTimestamp'] ) {
+                               return true; // a newer version of this root job was enqueued
+                       }
+
+                       // Update the timestamp of the last root job started at the location...
+                       return $wgMemc->set( $key, $params['rootJobTimestamp'], 14*86400 ); // 2 weeks
+               } );
+
+               return true;
+       }
+
+       /**
+        * Check if the "root" job of a given job has been superseded by a newer one
+        *
+        * @param $job Job
+        * @return bool
+        */
+       protected function isRootJobOldDuplicate( Job $job ) {
+               global $wgMemc;
+
+               $params = $job->getParams();
+               if ( !isset( $params['rootJobSignature'] ) ) {
+                       return false; // job has no de-deplication info
+               } elseif ( !isset( $params['rootJobTimestamp'] ) ) {
+                       trigger_error( "Cannot check root job; missing 'rootJobTimestamp'." );
+                       return false;
+               }
+
+               // Get the last time this root job was enqueued
+               $timestamp = $wgMemc->get( $this->getRootJobCacheKey( $params['rootJobSignature'] ) );
+
+               // Check if a new root job was started at the location after this one's...
+               return ( $timestamp && $timestamp > $params['rootJobTimestamp'] );
+       }
+
        /**
         * @see JobQueue::doWaitForBackups()
         * @return void
@@ -322,27 +440,22 @@ class JobQueueDB extends JobQueue {
         * @return array
         */
        protected function insertFields( Job $job ) {
-               // Rows that describe the nature of the job
-               $descFields = array(
+               $dbw = $this->getMasterDB();
+               return array(
+                       // Fields that describe the nature of the job
                        'job_cmd'       => $job->getType(),
                        'job_namespace' => $job->getTitle()->getNamespace(),
                        'job_title'     => $job->getTitle()->getDBkey(),
                        'job_params'    => self::makeBlob( $job->getParams() ),
-               );
-               // Additional job metadata
-               if ( $this->order === 'timestamp' ) { // oldest first
-                       $random = time() - 1325376000; // seconds since "January 1, 2012"
-               } else { // random first
-                       $random = mt_rand( 0, self::MAX_JOB_RANDOM );
-               }
-               $dbw = $this->getMasterDB();
-               $metaFields = array(
+                       // Additional job metadata
                        'job_id'        => $dbw->nextSequenceValue( 'job_job_id_seq' ),
                        'job_timestamp' => $dbw->timestamp(),
-                       'job_sha1'      => wfBaseConvert( sha1( serialize( $descFields ) ), 16, 36, 32 ),
-                       'job_random'    => $random
+                       'job_sha1'      => wfBaseConvert(
+                               sha1( serialize( $job->getDeduplicationInfo() ) ),
+                               16, 36, 31
+                       ),
+                       'job_random'    => mt_rand( 0, self::MAX_JOB_RANDOM )
                );
-               return ( $descFields + $metaFields );
        }
 
        /**
@@ -353,6 +466,15 @@ class JobQueueDB extends JobQueue {
                return wfForeignMemcKey( $db, $prefix, 'jobqueue', $this->type, 'isempty' );
        }
 
+       /**
+        * @param string $signature Hash identifier of the root job
+        * @return string
+        */
+       private function getRootJobCacheKey( $signature ) {
+               list( $db, $prefix ) = wfSplitWikiID( $this->wiki );
+               return wfForeignMemcKey( $db, $prefix, 'jobqueue', $this->type, 'rootjob', $signature );
+       }
+
        /**
         * @param $params
         * @return string
index 48f2746..97e0598 100644 (file)
@@ -132,6 +132,17 @@ class JobQueueGroup {
                return $this->get( $job->getType() )->ack( $job );
        }
 
+       /**
+        * Register the "root job" of a given job into the queue for de-duplication.
+        * This should only be called right *after* all the new jobs have been inserted.
+        *
+        * @param $job Job
+        * @return bool
+        */
+       public function deduplicateRootJob( Job $job ) {
+               return $this->get( $job->getType() )->deduplicateRootJob( $job );
+       }
+
        /**
         * Get the list of queue types
         *
diff --git a/includes/job/jobs/DuplicateJob.php b/includes/job/jobs/DuplicateJob.php
new file mode 100644 (file)
index 0000000..6e056de
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+/**
+ * No-op job that does nothing.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ */
+
+/**
+ * No-op job that does nothing. Used to represent duplicates.
+ *
+ * @ingroup JobQueue
+ */
+final class DuplicateJob extends Job {
+       /**
+        * Callers should use DuplicateJob::newFromJob() instead
+        *
+        * @param $title Title
+        * @param $params Array: job parameters
+        * @param $id Integer: job id
+        */
+       function __construct( $title, $params, $id = 0 ) {
+               parent::__construct( 'duplicate', $title, $params, $id );
+       }
+
+       /**
+        * Get a duplicate no-op version of a job
+        *
+        * @param Job $job
+        * @return Job
+        */
+       public static function newFromJob( Job $job ) {
+               $job = new self( $job->getTitle(), $job->getParams(), $job->getId() );
+               $job->command = $job->getType();
+               $job->params  = is_array( $job->params ) ? $job->params : array();
+               $job->params  = array( 'isDuplicate' => true ) + $job->params;
+               return $job;
+       }
+
+       public function run() {
+               return true;
+       }
+}
index b4c925e..2be05b6 100644 (file)
@@ -49,7 +49,8 @@ class EnotifNotifyJob extends Job {
                        $this->params['summary'],
                        $this->params['minorEdit'],
                        $this->params['oldid'],
-                       $this->params['watchers']
+                       $this->params['watchers'],
+                       $this->params['pageStatus']
                );
                return true;
        }
index 4e6fd6c..20245b3 100644 (file)
  * Job wrapper for HTMLCacheUpdate. Gets run whenever a related
  * job gets called from the queue.
  *
+ * This class is designed to work efficiently with small numbers of links, and
+ * to work reasonably well with up to ~10^5 links. Above ~10^6 links, the memory
+ * and time requirements of loading all backlinked IDs in doUpdate() might become
+ * prohibitive. The requirements measured at Wikimedia are approximately:
+ *
+ *   memory: 48 bytes per row
+ *   time: 16us per row for the query plus processing
+ *
+ * The reason this query is done is to support partitioning of the job
+ * by backlinked ID. The memory issue could be allieviated by doing this query in
+ * batches, but of course LIMIT with an offset is inefficient on the DB side.
+ *
+ * The class is nevertheless a vast improvement on the previous method of using
+ * File::getLinksTo() and Title::touchArray(), which uses about 2KB of memory per
+ * link.
+ *
  * @ingroup JobQueue
  */
 class HTMLCacheUpdateJob extends Job {
-       var $table, $start, $end;
+       /** @var BacklinkCache */
+       protected $blCache;
+
+       protected $rowsPerJob, $rowsPerQuery;
 
        /**
         * Construct a job
@@ -37,15 +56,199 @@ class HTMLCacheUpdateJob extends Job {
         * @param $id Integer: job id
         */
        function __construct( $title, $params, $id = 0 ) {
+               global $wgUpdateRowsPerJob, $wgUpdateRowsPerQuery;
+
                parent::__construct( 'htmlCacheUpdate', $title, $params, $id );
-               $this->table = $params['table'];
-               $this->start = $params['start'];
-               $this->end = $params['end'];
+
+               $this->rowsPerJob   = $wgUpdateRowsPerJob;
+               $this->rowsPerQuery = $wgUpdateRowsPerQuery;
+               $this->blCache      = $title->getBacklinkCache();
        }
 
        public function run() {
-               $update = new HTMLCacheUpdate( $this->title, $this->table, $this->start, $this->end );
-               $update->doUpdate();
+               if ( isset( $this->params['start'] ) && isset( $this->params['end'] ) ) {
+                       # This is hit when a job is actually performed
+                       return $this->doPartialUpdate();
+               } else {
+                       # This is hit when the jobs have to be inserted
+                       return $this->doFullUpdate();
+               }
+       }
+
+       /**
+        * Update all of the backlinks
+        */
+       protected function doFullUpdate() {
+               # Get an estimate of the number of rows from the BacklinkCache
+               $numRows = $this->blCache->getNumLinks( $this->params['table'] );
+               if ( $numRows > $this->rowsPerJob * 2 ) {
+                       # Do fast cached partition
+                       $this->insertPartitionJobs();
+               } else {
+                       # Get the links from the DB
+                       $titleArray = $this->blCache->getLinks( $this->params['table'] );
+                       # Check if the row count estimate was correct
+                       if ( $titleArray->count() > $this->rowsPerJob * 2 ) {
+                               # Not correct, do accurate partition
+                               wfDebug( __METHOD__.": row count estimate was incorrect, repartitioning\n" );
+                               $this->insertJobsFromTitles( $titleArray );
+                       } else {
+                               $this->invalidateTitles( $titleArray ); // just do the query
+                       }
+               }
+               return true;
+       }
+
+       /**
+        * Update some of the backlinks, defined by a page ID range
+        */
+       protected function doPartialUpdate() {
+               $titleArray = $this->blCache->getLinks(
+                       $this->params['table'], $this->params['start'], $this->params['end'] );
+               if ( $titleArray->count() <= $this->rowsPerJob * 2 ) {
+                       # This partition is small enough, do the update
+                       $this->invalidateTitles( $titleArray );
+               } else {
+                       # Partitioning was excessively inaccurate. Divide the job further.
+                       # This can occur when a large number of links are added in a short
+                       # period of time, say by updating a heavily-used template.
+                       $this->insertJobsFromTitles( $titleArray );
+               }
                return true;
        }
+
+       /**
+        * Partition the current range given by $this->params['start'] and $this->params['end'],
+        * using a pre-calculated title array which gives the links in that range.
+        * Queue the resulting jobs.
+        *
+        * @param $titleArray array
+        * @param $rootJobParams array
+        * @rerturn void
+        */
+       protected function insertJobsFromTitles( $titleArray, $rootJobParams = array() ) {
+               // Carry over any "root job" information
+               $rootJobParams = $this->getRootJobParams();
+               # We make subpartitions in the sense that the start of the first job
+               # will be the start of the parent partition, and the end of the last
+               # job will be the end of the parent partition.
+               $jobs = array();
+               $start = $this->params['start']; # start of the current job
+               $numTitles = 0;
+               foreach ( $titleArray as $title ) {
+                       $id = $title->getArticleID();
+                       # $numTitles is now the number of titles in the current job not
+                       # including the current ID
+                       if ( $numTitles >= $this->rowsPerJob ) {
+                               # Add a job up to but not including the current ID
+                               $jobs[] = new HTMLCacheUpdateJob( $this->title,
+                                       array(
+                                               'table' => $this->params['table'],
+                                               'start' => $start,
+                                               'end'   => $id - 1
+                                       ) + $rootJobParams // carry over information for de-duplication
+                               );
+                               $start = $id;
+                               $numTitles = 0;
+                       }
+                       $numTitles++;
+               }
+               # Last job
+               $jobs[] = new HTMLCacheUpdateJob( $this->title,
+                       array(
+                               'table' => $this->params['table'],
+                               'start' => $start,
+                               'end'   => $this->params['end']
+                       ) + $rootJobParams // carry over information for de-duplication
+               );
+               wfDebug( __METHOD__.": repartitioning into " . count( $jobs ) . " jobs\n" );
+
+               if ( count( $jobs ) < 2 ) {
+                       # I don't think this is possible at present, but handling this case
+                       # makes the code a bit more robust against future code updates and
+                       # avoids a potential infinite loop of repartitioning
+                       wfDebug( __METHOD__.": repartitioning failed!\n" );
+                       $this->invalidateTitles( $titleArray );
+               } else {
+                       JobQueueGroup::singleton()->push( $jobs );
+               }
+       }
+
+       /**
+        * @param $rootJobParams array
+        * @return void
+        */
+       protected function insertPartitionJobs( $rootJobParams = array() ) {
+               // Carry over any "root job" information
+               $rootJobParams = $this->getRootJobParams();
+
+               $batches = $this->blCache->partition( $this->params['table'], $this->rowsPerJob );
+               if ( !count( $batches ) ) {
+                       return; // no jobs to insert
+               }
+
+               $jobs = array();
+               foreach ( $batches as $batch ) {
+                       list( $start, $end ) = $batch;
+                       $jobs[] = new HTMLCacheUpdateJob( $this->title,
+                               array(
+                                       'table' => $this->params['table'],
+                                       'start' => $start,
+                                       'end'   => $end,
+                               ) + $rootJobParams // carry over information for de-duplication
+                       );
+               }
+
+               JobQueueGroup::singleton()->push( $jobs );
+       }
+
+       /**
+        * Invalidate an array (or iterator) of Title objects, right now
+        * @param $titleArray array
+        */
+       protected function invalidateTitles( $titleArray ) {
+               global $wgUseFileCache, $wgUseSquid;
+
+               $dbw = wfGetDB( DB_MASTER );
+               $timestamp = $dbw->timestamp();
+
+               # Get all IDs in this query into an array
+               $ids = array();
+               foreach ( $titleArray as $title ) {
+                       $ids[] = $title->getArticleID();
+               }
+
+               if ( !$ids ) {
+                       return;
+               }
+
+               # Don't invalidated pages that were already invalidated
+               $touchedCond = isset( $this->params['rootJobTimestamp'] )
+                       ? array( "page_touched < " .
+                               $dbw->addQuotes( $dbw->timestamp( $this->params['rootJobTimestamp'] ) ) )
+                       : array();
+
+               # Update page_touched
+               $batches = array_chunk( $ids, $this->rowsPerQuery );
+               foreach ( $batches as $batch ) {
+                       $dbw->update( 'page',
+                               array( 'page_touched' => $timestamp ),
+                               array( 'page_id' => $batch ) + $touchedCond,
+                               __METHOD__
+                       );
+               }
+
+               # Update squid
+               if ( $wgUseSquid ) {
+                       $u = SquidUpdate::newFromTitles( $titleArray );
+                       $u->doUpdate();
+               }
+
+               # Update file cache
+               if  ( $wgUseFileCache ) {
+                       foreach ( $titleArray as $title ) {
+                               HTMLFileCache::clearFileCache( $title );
+                       }
+               }
+       }
 }
index eef3bf7..99a8429 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Degenerate job that just replaces itself in the queue.
+ * Degenerate job that does nothing.
  *
  * 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
@@ -22,8 +22,9 @@
  */
 
 /**
- * Degenerate job that just replace itself in the queue.
- * Useful for lock contention and performance testing.
+ * Degenerate job that does nothing, but can optionally replace itself
+ * in the queue and/or sleep for a brief time period. These can be used
+ * to represent "no-op" jobs or test lock contention and performance.
  *
  * @ingroup JobQueue
  */
index 384244f..20e4f16 100644 (file)
@@ -69,6 +69,24 @@ class RefreshLinksJob extends Job {
                return true;
        }
 
+       /**
+        * @return Array
+        */
+       public function getDeduplicationInfo() {
+               $info = parent::getDeduplicationInfo();
+               // Don't let highly unique "masterPos" values ruin duplicate detection
+               if ( is_array( $info['params'] ) ) {
+                       unset( $info['params']['masterPos'] );
+               }
+               return $info;
+       }
+
+       /**
+        * @param $title Title
+        * @param $revision Revision
+        * @param $fname string
+        * @return void
+        */
        public static function runForTitleInternal( Title $title, Revision $revision, $fname ) {
                wfProfileIn( $fname );
                $content = $revision->getContent( Revision::RAW );
@@ -78,7 +96,10 @@ class RefreshLinksJob extends Job {
                        $content = $revision->getContentHandler()->makeEmptyContent();
                }
 
-               $updates = $content->getSecondaryDataUpdates( $title, null, false );
+               // Revision ID must be passed to the parser output to get revision variables correct
+               $parserOutput = $content->getParserOutput( $title, $revision->getId(), null, false );
+
+               $updates = $content->getSecondaryDataUpdates( $title, null, false, $parserOutput );
                DataUpdate::runUpdates( $updates );
                wfProfileOut( $fname );
        }
@@ -91,8 +112,6 @@ class RefreshLinksJob extends Job {
  * @ingroup JobQueue
  */
 class RefreshLinksJob2 extends Job {
-       const MAX_TITLES_RUN = 10;
-
        function __construct( $title, $params, $id = 0 ) {
                parent::__construct( 'refreshLinks2', $title, $params, $id );
        }
@@ -102,6 +121,8 @@ class RefreshLinksJob2 extends Job {
         * @return boolean success
         */
        function run() {
+               global $wgUpdateRowsPerJob;
+
                wfProfileIn( __METHOD__ );
 
                $linkCache = LinkCache::singleton();
@@ -111,16 +132,16 @@ class RefreshLinksJob2 extends Job {
                        $this->error = "refreshLinks2: Invalid title";
                        wfProfileOut( __METHOD__ );
                        return false;
-               } elseif ( !isset( $this->params['start'] ) || !isset( $this->params['end'] ) ) {
-                       $this->error = "refreshLinks2: Invalid params";
-                       wfProfileOut( __METHOD__ );
-                       return false;
                }
 
                // Back compat for pre-r94435 jobs
                $table = isset( $this->params['table'] ) ? $this->params['table'] : 'templatelinks';
 
-               // Avoid slave lag when fetching templates
+               // Avoid slave lag when fetching templates.
+               // When the outermost job is run, we know that the caller that enqueued it must have
+               // committed the relevant changes to the DB by now. At that point, record the master
+               // position and pass it along as the job recursively breaks into smaller range jobs.
+               // Hopefully, when leaf jobs are popped, the slaves will have reached that position.
                if ( isset( $this->params['masterPos'] ) ) {
                        $masterPos = $this->params['masterPos'];
                } elseif ( wfGetLB()->getServerCount() > 1  ) {
@@ -129,73 +150,77 @@ class RefreshLinksJob2 extends Job {
                        $masterPos = false;
                }
 
-               $titles = $this->title->getBacklinkCache()->getLinks(
-                       $table, $this->params['start'], $this->params['end'] );
-
-               if ( $titles->count() > self::MAX_TITLES_RUN ) {
-                       # We don't want to parse too many pages per job as it can starve other jobs.
-                       # If there are too many pages to parse, break this up into smaller jobs. By passing
-                       # in the master position here we can cut down on the time spent waiting for slaves to
-                       # catch up by the runners handling these jobs since time will have passed between now
-                       # and when they pop these jobs off the queue.
-                       $start = 0; // batch start
-                       $end   = 0; // batch end
-                       $bsize = 0; // batch size
-                       $first = true; // first of batch
-                       $jobs  = array();
-                       foreach ( $titles as $title ) {
-                               $start = $first ? $title->getArticleId() : $start;
-                               $end   = $title->getArticleId();
-                               $first = false;
-                               if ( ++$bsize >= self::MAX_TITLES_RUN ) {
-                                       $jobs[] = new RefreshLinksJob2( $this->title, array(
-                                               'table'     => $table,
-                                               'start'     => $start,
-                                               'end'       => $end,
-                                               'masterPos' => $masterPos
-                                       ) );
-                                       $first = true;
-                                       $start = $end = $bsize = 0;
-                               }
-                       }
-                       if ( $bsize > 0 ) { // group remaining pages into a job
-                               $jobs[] = new RefreshLinksJob2( $this->title, array(
-                                       'table'     => $table,
-                                       'start'     => $start,
-                                       'end'       => $end,
-                                       'masterPos' => $masterPos
-                               ) );
-                       }
-                       Job::batchInsert( $jobs );
-               } elseif ( php_sapi_name() != 'cli' ) {
-                       # Not suitable for page load triggered job running!
-                       # Gracefully switch to refreshLinks jobs if this happens.
-                       $jobs = array();
-                       foreach ( $titles as $title ) {
-                               $jobs[] = new RefreshLinksJob( $title, array( 'masterPos' => $masterPos ) );
-                       }
-                       Job::batchInsert( $jobs );
+               $tbc  = $this->title->getBacklinkCache();
+
+               $jobs = array(); // jobs to insert
+               if ( isset( $this->params['start'] ) && isset( $this->params['end'] ) ) {
+                       # This is a partition job to trigger the insertion of leaf jobs...
+                       $jobs = array_merge( $jobs, $this->getSingleTitleJobs( $table, $masterPos ) );
                } else {
-                       # Wait for the DB of the current/next slave DB handle to catch up to the master.
-                       # This way, we get the correct page_latest for templates or files that just changed
-                       # milliseconds ago, having triggered this job to begin with.
-                       if ( $masterPos ) {
-                               wfGetLB()->waitFor( $masterPos );
-                       }
-                       # Re-parse each page that transcludes this page and update their tracking links...
-                       foreach ( $titles as $title ) {
-                               $revision = Revision::newFromTitle( $title, false, Revision::READ_NORMAL );
-                               if ( !$revision ) {
-                                       $this->error = 'refreshLinks: Article not found "' .
-                                               $title->getPrefixedDBkey() . '"';
-                                       continue; // skip this page
+                       # This is a base job to trigger the insertion of partitioned jobs...
+                       if ( $tbc->getNumLinks( $table ) <= $wgUpdateRowsPerJob ) {
+                               # Just directly insert the single per-title jobs
+                               $jobs = array_merge( $jobs, $this->getSingleTitleJobs( $table, $masterPos ) );
+                       } else {
+                               # Insert the partition jobs to make per-title jobs
+                               foreach ( $tbc->partition( $table, $wgUpdateRowsPerJob ) as $batch ) {
+                                       list( $start, $end ) = $batch;
+                                       $jobs[] = new RefreshLinksJob2( $this->title,
+                                               array(
+                                                       'table'            => $table,
+                                                       'start'            => $start,
+                                                       'end'              => $end,
+                                                       'masterPos'        => $masterPos,
+                                               ) + $this->getRootJobParams() // carry over information for de-duplication
+                                       );
                                }
-                               RefreshLinksJob::runForTitleInternal( $title, $revision, __METHOD__ );
-                               wfWaitForSlaves();
                        }
                }
 
+               if ( count( $jobs ) ) {
+                       JobQueueGroup::singleton()->push( $jobs );
+               }
+
                wfProfileOut( __METHOD__ );
                return true;
        }
+
+       /**
+        * @param $table string
+        * @param $masterPos mixed
+        * @return Array
+        */
+       protected function getSingleTitleJobs( $table, $masterPos ) {
+               # The "start"/"end" fields are not set for the base jobs
+               $start  = isset( $this->params['start'] ) ? $this->params['start'] : false;
+               $end    = isset( $this->params['end'] ) ? $this->params['end'] : false;
+               $titles = $this->title->getBacklinkCache()->getLinks( $table, $start, $end );
+               # Convert into single page refresh links jobs.
+               # This handles well when in sapi mode and is useful in any case for job
+               # de-duplication. If many pages use template A, and that template itself
+               # uses template B, then an edit to both will create many duplicate jobs.
+               # Roughly speaking, for each page, one of the "RefreshLinksJob" jobs will
+               # get run first, and when it does, it will remove the duplicates. Of course,
+               # one page could have its job popped when the other page's job is still
+               # buried within the logic of a refreshLinks2 job.
+               $jobs = array();
+               foreach ( $titles as $title ) {
+                       $jobs[] = new RefreshLinksJob( $title,
+                               array( 'masterPos' => $masterPos ) + $this->getRootJobParams()
+                       ); // carry over information for de-duplication
+               }
+               return $jobs;
+       }
+
+       /**
+        * @return Array
+        */
+       public function getDeduplicationInfo() {
+               $info = parent::getDeduplicationInfo();
+               // Don't let highly unique "masterPos" values ruin duplicate detection
+               if ( is_array( $info['params'] ) ) {
+                       unset( $info['params']['masterPos'] );
+               }
+               return $info;
+       }
 }
index f67700c..75da5c7 100644 (file)
@@ -31,21 +31,16 @@ class FormatJson {
         * Returns the JSON representation of a value.
         *
         * @param $value Mixed: the value being encoded. Can be any type except a resource.
-        * @param $isHtml Boolean
-        *
-        * @todo FIXME: "$isHtml" parameter's purpose is not documented. It appears to
-        *        map to a parameter labeled "pretty-print output with indents and
-        *        newlines" in Services_JSON::encode(), which has no string relation
-        *        to HTML output.
+        * @param $pretty Boolean: If true, adds non-significant whitespace to improve readability.
         *
         * @return string
         */
-       public static function encode( $value, $isHtml = false ) {
-               if ( !function_exists( 'json_encode' ) || ( $isHtml && version_compare( PHP_VERSION, '5.4.0', '<' ) ) ) {
+       public static function encode( $value, $pretty = false ) {
+               if ( !function_exists( 'json_encode' ) || ( $pretty && version_compare( PHP_VERSION, '5.4.0', '<' ) ) ) {
                        $json = new Services_JSON();
-                       return $json->encode( $value, $isHtml );
+                       return $json->encode( $value, $pretty );
                } else {
-                       return json_encode( $value, $isHtml ? JSON_PRETTY_PRINT : 0 );
+                       return json_encode( $value, $pretty ? JSON_PRETTY_PRINT : 0 );
                }
        }
 
index 965099f..dd764e9 100644 (file)
@@ -243,6 +243,15 @@ abstract class MediaHandler {
                return array( $ext, $mime );
        }
 
+       /**
+        * Get useful response headers for GET/HEAD requests for a file with the given metadata
+        * @param $metadata mixed Result of the getMetadata() function of this handler for a file
+        * @return Array
+        */
+       public function getStreamHeaders( $metadata ) {
+               return array();
+       }
+
        /**
         * True if the handled types can be transformed
         * @return bool
index 53716df..f7e988f 100644 (file)
@@ -120,6 +120,12 @@ class SvgHandler extends ImageHandler {
                        return new ThumbnailImage( $image, $dstUrl, $dstPath, $params );
                }
 
+               $metadata = $this->unpackMetadata( $image->getMetadata() );
+               if ( isset( $metadata['error'] ) ) { // sanity check
+                       $err = wfMessage( 'svg-long-error', $metadata['error']['message'] )->text();
+                       return new MediaTransformError( 'thumbnail_error', $clientWidth, $clientHeight, $err );
+               }
+
                if ( !wfMkdirParents( dirname( $dstPath ), null, __METHOD__ ) ) {
                        return new MediaTransformError( 'thumbnail_error', $clientWidth, $clientHeight,
                                wfMessage( 'thumbnail_dest_directory' )->text() );
@@ -127,7 +133,7 @@ class SvgHandler extends ImageHandler {
 
                $srcPath = $image->getLocalRefPath();
                $status = $this->rasterize( $srcPath, $dstPath, $physicalWidth, $physicalHeight );
-               if( $status === true ) {
+               if ( $status === true ) {
                        return new ThumbnailImage( $image, $dstUrl, $dstPath, $params );
                } else {
                        return $status; // MediaTransformError
@@ -214,6 +220,8 @@ class SvgHandler extends ImageHandler {
                if ( isset( $metadata['width'] ) && isset( $metadata['height'] ) ) {
                        return array( $metadata['width'], $metadata['height'], 'SVG',
                                        "width=\"{$metadata['width']}\" height=\"{$metadata['height']}\"" );
+               } else { // error
+                       return array( 0, 0, 'SVG', "width=\"0\" height=\"0\"" );
                }
        }
 
@@ -232,6 +240,12 @@ class SvgHandler extends ImageHandler {
         */
        function getLongDesc( $file ) {
                global $wgLang;
+
+               $metadata = $this->unpackMetadata( $file->getMetadata() );
+               if ( isset( $metadata['error'] ) ) {
+                       return wfMessage( 'svg-long-error', $metadata['error']['message'] )->text();
+               }
+
                $size = $wgLang->formatSize( $file->getSize() );
 
                if ( $this->isAnimatedImage( $file ) ) {
@@ -240,23 +254,23 @@ class SvgHandler extends ImageHandler {
                        $msg = wfMessage( 'svg-long-desc' );
                }
 
-               $msg->numParams(
-                       $file->getWidth(),
-                       $file->getHeight()
-               );
-               $msg->Params( $size );
+               $msg->numParams( $file->getWidth(), $file->getHeight() )->params( $size );
+
                return $msg->parse();
        }
 
        function getMetadata( $file, $filename ) {
+               $metadata = array( 'version' => self::SVG_METADATA_VERSION );
                try {
-                       $metadata = SVGMetadataExtractor::getMetadata( $filename );
-               } catch( Exception $e ) {
-                       // Broken file?
+                       $metadata += SVGMetadataExtractor::getMetadata( $filename );
+               } catch( MWException $e ) { // @TODO: SVG specific exceptions
+                       // File not found, broken, etc.
+                       $metadata['error'] = array(
+                               'message' => $e->getMessage(),
+                               'code'    => $e->getCode()
+                       );
                        wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
-                       return '0';
                }
-               $metadata['version'] = self::SVG_METADATA_VERSION;
                return serialize( $metadata );
        }
 
@@ -306,7 +320,7 @@ class SvgHandler extends ImageHandler {
                        return false;
                }
                $metadata = $this->unpackMetadata( $metadata );
-               if ( !$metadata ) {
+               if ( !$metadata || isset( $metadata['error'] ) ) {
                        return false;
                }
 
diff --git a/includes/mobile/DeviceDetection.php b/includes/mobile/DeviceDetection.php
deleted file mode 100644 (file)
index 262665b..0000000
+++ /dev/null
@@ -1,459 +0,0 @@
-<?php
-/**
- * Mobile device detection code
- *
- * Copyright © 2011 Patrick Reilly
- * http://www.mediawiki.org/
- *
- * 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
- */
-
-/**
- * Base for classes describing devices and their capabilities
- * @since 1.20
- */
-interface IDeviceProperties {
-       /**
-        * @return string: 'html' or 'wml'
-        */
-       function format();
-
-       /**
-        * @return bool
-        */
-       function supportsJavaScript();
-
-       /**
-        * @return bool
-        */
-       function supportsJQuery();
-
-       /**
-        * @return bool
-        */
-       function disableZoom();
-}
-
-/**
- * @since 1.20
- */
-interface IDeviceDetector {
-       /**
-        * @param $userAgent
-        * @param string $acceptHeader
-        * @return IDeviceProperties
-        */
-       function detectDeviceProperties( $userAgent, $acceptHeader = '' );
-
-       /**
-        * @param $deviceName
-        * @return IDeviceProperties
-        */
-       function getDeviceProperties( $deviceName );
-
-       /**
-        * @param $userAgent string
-        * @param $acceptHeader string
-        * @return string
-        */
-       function detectDeviceName( $userAgent, $acceptHeader = '' );
-}
-
-/**
- * MediaWiki's default IDeviceProperties implementation
- */
-final class DeviceProperties implements IDeviceProperties {
-       private $device;
-
-       public function __construct( array $deviceCapabilities ) {
-               $this->device = $deviceCapabilities;
-       }
-
-       /**
-        * @return string
-        */
-       function format() {
-               return $this->device['view_format'];
-       }
-
-       /**
-        * @return bool
-        */
-       function supportsJavaScript() {
-               return $this->device['supports_javascript'];
-       }
-
-       /**
-        * @return bool
-        */
-       function supportsJQuery() {
-               return $this->device['supports_jquery'];
-       }
-
-       /**
-        * @return bool
-        */
-       function disableZoom() {
-               return $this->device['disable_zoom'];
-       }
-}
-
-/**
- * Provides abstraction for a device.
- * A device can select which format a request should receive and
- * may be extended to provide access to particular device functionality.
- * @since 1.20
- */
-class DeviceDetection implements IDeviceDetector {
-
-       private static $formats = array (
-                       'html' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'default',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                       ),
-                       'capable' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'default',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => true,
-                       ),
-                       'webkit' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'webkit',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => false,
-                       ),
-                       'ie' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'default',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => false,
-                       ),
-                       'android' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'android',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => false,
-                       ),
-                       'iphone' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'iphone',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => false,
-                       ),
-                       'iphone2' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'iphone2',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => true,
-                       ),
-                       'native_iphone' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'default',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => false,
-                       ),
-                       'palm_pre' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'palm_pre',
-                               'supports_javascript' => true,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                       ),
-                       'kindle' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'kindle',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                       ),
-                       'kindle2' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'kindle',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                       ),
-                       'blackberry' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'blackberry',
-                               'supports_javascript' => true,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                       ),
-                       'blackberry-lt5' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'blackberry',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                       ),
-                       'netfront' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'simple',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                       ),
-                       'wap2' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'simple',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                       ),
-                       'psp' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'psp',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                       ),
-                       'ps3' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'simple',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                       ),
-                       'wii' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'wii',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => true,
-                       ),
-                       'operamini' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'operamini',
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                       ),
-                       'operamobile' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'operamobile',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => true,
-                       ),
-                       'nokia' => array (
-                               'view_format' => 'html',
-                               'css_file_name' => 'nokia',
-                               'supports_javascript' => true,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                       ),
-                       'wml' => array (
-                               'view_format' => 'wml',
-                               'css_file_name' => null,
-                               'supports_javascript' => false,
-                               'supports_jquery' => false,
-                               'disable_zoom' => true,
-                       ),
-               );
-
-       /**
-        * Returns an instance of detection class, overridable by extensions
-        * @return IDeviceDetector
-        */
-       public static function factory() {
-               global $wgDeviceDetectionClass;
-
-               static $instance = null;
-               if ( !$instance ) {
-                       $instance = new $wgDeviceDetectionClass();
-               }
-               return $instance;
-       }
-
-       /**
-        * @deprecated: Deprecated, will be removed once detectDeviceProperties() will be deployed everywhere on WMF
-        * @param $userAgent
-        * @param string $acceptHeader
-        * @return array
-        */
-       public function detectDevice( $userAgent, $acceptHeader = '' ) {
-               $formatName = $this->detectFormatName( $userAgent, $acceptHeader );
-               return $this->getDevice( $formatName );
-       }
-
-       /**
-        * @param $userAgent
-        * @param string $acceptHeader
-        * @return IDeviceProperties
-        */
-       public function detectDeviceProperties( $userAgent, $acceptHeader = '' ) {
-               $deviceName = $this->detectDeviceName( $userAgent, $acceptHeader );
-               return $this->getDeviceProperties( $deviceName );
-       }
-
-       /**
-        * @deprecated: Deprecated, will be removed once detectDeviceProperties() will be deployed everywhere on WMF
-        * @param $formatName
-        * @return array
-        */
-       public function getDevice( $formatName ) {
-               return ( isset( self::$formats[$formatName] ) ) ? self::$formats[$formatName] : array();
-       }
-
-       /**
-        * @param $deviceName
-        * @return IDeviceProperties
-        */
-       public function getDeviceProperties( $deviceName ) {
-               if ( isset( self::$formats[$deviceName] ) ) {
-                       return new DeviceProperties( self::$formats[$deviceName] );
-               } else {
-                       return new DeviceProperties( array(
-                               'view_format' => 'html',
-                               'css_file_name' => 'default',
-                               'supports_javascript' => true,
-                               'supports_jquery' => true,
-                               'disable_zoom' => true,
-                       ) );
-               }
-       }
-
-       /**
-        * @deprecated: Renamed to detectDeviceName()
-        * @param $userAgent string
-        * @param $acceptHeader string
-        * @return string
-        */
-       public function detectFormatName( $userAgent, $acceptHeader = '' ) {
-               return $this->detectDeviceName( $userAgent, $acceptHeader );
-       }
-
-       /**
-        * @param $userAgent string
-        * @param $acceptHeader string
-        * @return string
-        */
-       public function detectDeviceName( $userAgent, $acceptHeader = '' ) {
-               wfProfileIn( __METHOD__ );
-
-               $deviceName = '';
-               if ( preg_match( '/Android/', $userAgent ) ) {
-                       $deviceName = 'android';
-                       if ( strpos( $userAgent, 'Opera Mini' ) !== false ) {
-                               $deviceName = 'operamini';
-                       } elseif ( strpos( $userAgent, 'Opera Mobi' ) !== false ) {
-                               $deviceName = 'operamobile';
-                       }
-               } elseif ( preg_match( '/MSIE 9.0/', $userAgent ) ||
-                               preg_match( '/MSIE 8.0/', $userAgent ) ) {
-                       $deviceName = 'ie';
-               } elseif( preg_match( '/MSIE/', $userAgent ) ) {
-                       $deviceName = 'html';
-               } elseif ( strpos( $userAgent, 'Opera Mobi' ) !== false ) {
-                       $deviceName = 'operamobile';
-               } elseif ( preg_match( '/iPad.* Safari/', $userAgent ) ) {
-                       $deviceName = 'iphone';
-               } elseif ( preg_match( '/iPhone.* Safari/', $userAgent ) ) {
-                       if ( strpos( $userAgent, 'iPhone OS 2' ) !== false ) {
-                               $deviceName = 'iphone2';
-                       } else {
-                               $deviceName = 'iphone';
-                       }
-               } elseif ( preg_match( '/iPhone/', $userAgent ) ) {
-                       if ( strpos( $userAgent, 'Opera' ) !== false ) {
-                               $deviceName = 'operamini';
-                       } else {
-                               $deviceName = 'native_iphone';
-                       }
-               } elseif ( preg_match( '/WebKit/', $userAgent ) ) {
-                       if ( preg_match( '/Series60/', $userAgent ) ) {
-                               $deviceName = 'nokia';
-                       } elseif ( preg_match( '/webOS/', $userAgent ) ) {
-                               $deviceName = 'palm_pre';
-                       } else {
-                               $deviceName = 'webkit';
-                       }
-               } elseif ( preg_match( '/Opera/', $userAgent ) ) {
-                       if ( strpos( $userAgent, 'Nintendo Wii' ) !== false ) {
-                               $deviceName = 'wii';
-                       } elseif ( strpos( $userAgent, 'Opera Mini' ) !== false ) {
-                               $deviceName = 'operamini';
-                       } else {
-                               $deviceName = 'operamobile';
-                       }
-               } elseif ( preg_match( '/Kindle\/1.0/', $userAgent ) ) {
-                       $deviceName = 'kindle';
-               } elseif ( preg_match( '/Kindle\/2.0/', $userAgent ) ) {
-                       $deviceName = 'kindle2';
-               } elseif ( preg_match( '/Firefox/', $userAgent ) ) {
-                       $deviceName = 'capable';
-               } elseif ( preg_match( '/NetFront/', $userAgent ) ) {
-                       $deviceName = 'netfront';
-               } elseif ( preg_match( '/SEMC-Browser/', $userAgent ) ) {
-                       $deviceName = 'wap2';
-               } elseif ( preg_match( '/Series60/', $userAgent ) ) {
-                       $deviceName = 'wap2';
-               } elseif ( preg_match( '/PlayStation Portable/', $userAgent ) ) {
-                       $deviceName = 'psp';
-               } elseif ( preg_match( '/PLAYSTATION 3/', $userAgent ) ) {
-                       $deviceName = 'ps3';
-               } elseif ( preg_match( '/SAMSUNG/', $userAgent ) ) {
-                       $deviceName = 'capable';
-               } elseif ( preg_match( '/BlackBerry/', $userAgent ) ) {
-                       if( preg_match( '/BlackBerry[^\/]*\/[1-4]\./', $userAgent ) ) {
-                               $deviceName = 'blackberry-lt5';
-                       } else {
-                               $deviceName = 'blackberry';
-                       }
-               }
-
-               if ( $deviceName === '' ) {
-                       if ( strpos( $acceptHeader, 'application/vnd.wap.xhtml+xml' ) !== false ) {
-                               // Should be wap2
-                               $deviceName = 'html';
-                       } elseif ( strpos( $acceptHeader, 'vnd.wap.wml' ) !== false ) {
-                               $deviceName = 'wml';
-                       } else {
-                               $deviceName = 'html';
-                       }
-               }
-               wfProfileOut( __METHOD__ );
-               return $deviceName;
-       }
-
-       /**
-        * @return array: List of all device-specific stylesheets
-        */
-       public function getCssFiles() {
-               $files = array();
-
-               foreach ( self::$formats as $dev ) {
-                       if ( isset( $dev['css_file_name'] ) ) {
-                               $files[] = $dev['css_file_name'];
-                       }
-               }
-               return array_unique( $files );
-       }
-}
index 72f6a9f..787a168 100644 (file)
@@ -277,7 +277,7 @@ class MWMemcached {
         * @param $exp Integer: (optional) Expiration time. This can be a number of seconds
         * to cache for (up to 30 days inclusive).  Any timespans of 30 days + 1 second or
         * longer must be the timestamp of the time at which the mapping should expire. It
-        * is safe to use timestamps in all cases, regardless of exipration
+        * is safe to use timestamps in all cases, regardless of expiration
         * eg: strtotime("+3 hour")
         *
         * @return Boolean
index 83b6016..e4af262 100644 (file)
@@ -141,7 +141,7 @@ class ObjectCache {
         *
         * This always uses the PHP client, since the PECL client has a different
         * hashing scheme and a different interpretation of the flags bitfield, so
-        * switching between the two clients randomly would be disasterous.
+        * switching between the two clients randomly would be disastrous.
         *
         * @param $params array
         *
index d9fcdf9..512605d 100644 (file)
@@ -246,6 +246,13 @@ class Parser {
                }
        }
 
+       /**
+        * Allow extensions to clean up when the parser is cloned
+        */
+       function __clone() {
+               wfRunHooks( 'ParserCloned', array( $this ) );
+       }
+
        /**
         * Do various kinds of initialisation on the first call of the parser
         */
@@ -542,7 +549,7 @@ class Parser {
         * Also removes comments.
         * @return mixed|string
         */
-       function preprocess( $text, Title $title, ParserOptions $options, $revid = null ) {
+       function preprocess( $text, Title $title = null, ParserOptions $options, $revid = null ) {
                wfProfileIn( __METHOD__ );
                $this->startParse( $title, $options, self::OT_PREPROCESS, true );
                if ( $revid !== null ) {
@@ -1307,7 +1314,8 @@ class Parser {
                if ( $text === false ) {
                        # Not an image, make a link
                        $text = Linker::makeExternalLink( $url,
-                               $this->getConverterLanguage()->markNoConversion($url), true, 'free',
+                               $this->getConverterLanguage()->markNoConversion( $url, true ),
+                               true, 'free',
                                $this->getExternalLinkAttribs( $url ) );
                        # Register it in the output object...
                        # Replace unnecessary URL escape codes with their equivalent characters
@@ -4688,11 +4696,7 @@ class Parser {
                        global $wgTitle;
                        $title = $wgTitle;
                }
-               if ( !$title ) {
-                       # It's not uncommon having a null $wgTitle in scripts. See r80898
-                       # Create a ghost title in such case
-                       $title = Title::newFromText( 'Dwimmerlaik' );
-               }
+
                $text = $this->preprocess( $text, $title, $options );
 
                $executing = false;
index ed2d436..5cc1b0f 100644 (file)
@@ -59,9 +59,15 @@ class MWTidyWrapper {
                        dechex( mt_rand( 0, 0x7fffffff ) ) . dechex( mt_rand( 0, 0x7fffffff ) );
                $this->mMarkerIndex = 0;
 
+               // Replace <mw:editsection> elements with placeholders
                $wrappedtext = preg_replace_callback( ParserOutput::EDITSECTION_REGEX,
                        array( &$this, 'replaceEditSectionLinksCallback' ), $text );
 
+               // Modify inline Microdata <link> and <meta> elements so they say <html-link> and <html-meta> so
+               // we can trick Tidy into not stripping them out by including them in tidy's new-empty-tags config
+               $wrappedtext = preg_replace( '!<(link|meta)([^>]*?)(/{0,1}>)!', '<html-$1$2$3', $wrappedtext );
+
+               // Wrap the whole thing in a doctype and body for Tidy.
                $wrappedtext = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"'.
                        ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>'.
                        '<head><title>test</title></head><body>'.$wrappedtext.'</body></html>';
@@ -86,7 +92,13 @@ class MWTidyWrapper {
         * @return string
         */
        public function postprocess( $text ) {
-               return $this->mTokens->replace( $text );
+               // Revert <html-{link,meta}> back to <{link,meta}>
+               $text = preg_replace( '!<html-(link|meta)([^>]*?)(/{0,1}>)!', '<$1$2$3', $text );
+
+               // Restore the contents of placeholder tokens
+               $text = $this->mTokens->replace( $text );
+
+               return $text;
        }
 
 }
index 8fec0d6..0e170fb 100644 (file)
@@ -77,7 +77,7 @@ abstract class ResourceLoaderModule {
        }
 
        /**
-        * Set this module's name. This is called by ResourceLodaer::register()
+        * Set this module's name. This is called by ResourceLoader::register()
         * when registering the module. Other code should not call this.
         *
         * @param $name String: Name
@@ -91,7 +91,7 @@ abstract class ResourceLoaderModule {
         * with ResourceLoader::register()
         *
         * @return Int ResourceLoaderModule class constant, the subclass default
-        *     if not set manuall
+        *     if not set manually
         */
        public function getOrigin() {
                return $this->origin;
index d90e8c4..bdb240e 100644 (file)
@@ -81,7 +81,10 @@ class ResourceLoaderUserCSSPrefsModule extends ResourceLoaderModule {
                                $rules[] = ".editsection { display: none; }\n";
                        }
                        if ( $options['editfont'] !== 'default' ) {
-                               $rules[] = "textarea { font-family: {$options['editfont']}; }\n";
+                               // Double-check that $options['editfont'] consists of safe characters only
+                               if ( preg_match( '/^[a-zA-Z0-9_, -]+$/', $options['editfont'] ) ) {
+                                       $rules[] = "textarea { font-family: {$options['editfont']}; }\n";
+                               }
                        }
                        $style = implode( "\n", $rules );
                        if ( $this->getFlip( $context ) ) {
index 62d096a..6d787c5 100644 (file)
@@ -43,7 +43,8 @@ class ResourceLoaderUserTokensModule extends ResourceLoaderModule {
 
                return array(
                        'editToken' => $wgUser->getEditToken(),
-                       'watchToken' => ApiQueryInfo::getWatchToken(null, null),
+                       'patrolToken' => ApiQueryRecentChanges::getPatrolToken( null, null ),
+                       'watchToken' => ApiQueryInfo::getWatchToken( null, null ),
                );
        }
 
index ec542a6..0199edb 100644 (file)
@@ -187,6 +187,11 @@ class SearchEngine {
                                return null;
                        }
 
+                       # Try files if searching in the Media: namespace
+                       if ( $title->getNamespace() == NS_MEDIA ) {
+                               $title = Title::makeTitle( NS_FILE, $title->getText() );
+                       }
+
                        if ( $title->isSpecialPage() || $title->isExternal() || $title->exists() ) {
                                return $title;
                        }
@@ -197,22 +202,23 @@ class SearchEngine {
                                return $title;
                        }
 
+                       if ( !wfRunHooks( 'SearchAfterNoDirectMatch', array( $term, &$title ) ) ) {
+                               return $title;
+                       }
+
                        # Now try all lower case (i.e. first letter capitalized)
-                       #
                        $title = Title::newFromText( $wgContLang->lc( $term ) );
                        if ( $title && $title->exists() ) {
                                return $title;
                        }
 
                        # Now try capitalized string
-                       #
                        $title = Title::newFromText( $wgContLang->ucwords( $term ) );
                        if ( $title && $title->exists() ) {
                                return $title;
                        }
 
                        # Now try all upper case
-                       #
                        $title = Title::newFromText( $wgContLang->uc( $term ) );
                        if ( $title && $title->exists() ) {
                                return $title;
index 0d5db11..b2e2e71 100644 (file)
@@ -1,18 +1,37 @@
 <?php
-
 /**
  * Class representing a MediaWiki site.
  *
- * @since 1.21
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
  * @ingroup Site
- *
  * @license GNU GPL v2+
  * @author John Erling Blad < jeblad@gmail.com >
  * @author Daniel Kinzler
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
+
+/**
+ * Class representing a MediaWiki site.
+ *
+ * @since 1.21
+ *
+ * @ingroup Site
+ */
 class MediaWikiSite extends SiteObject {
 
        const PATH_FILE = 'file_path';
index 1d6656a..aae1b34 100644 (file)
@@ -507,53 +507,74 @@ class SpecialBlock extends FormSpecialPage {
         * @return Message
         */
        public static function validateTargetField( $value, $alldata, $form ) {
+               $status = self::validateTarget( $value, $form->getUser() );
+               if ( !$status->isOK() ) {
+                       $errors = $status->getErrorsArray();
+                       return call_user_func_array( array( $form, 'msg' ), $errors[0] );
+               } else {
+                       return true;
+               }
+       }
+
+       /**
+        * Validate a block target.
+        *
+        * @since 1.21
+        * @param String $value Block target to check
+        * @param User $user Performer of the block
+        * @return Status
+        */
+       public static function validateTarget( $value, User $user ) {
                global $wgBlockCIDRLimit;
 
                list( $target, $type ) = self::getTargetAndType( $value );
+               $status = Status::newGood( $target );
 
                if ( $type == Block::TYPE_USER ) {
-                       # TODO: why do we not have a User->exists() method?
-                       if ( !$target->getId() ) {
-                               return $form->msg( 'nosuchusershort',
-                                       wfEscapeWikiText( $target->getName() ) );
+                       if ( $target->isAnon() ) {
+                               $status->fatal(
+                                       'nosuchusershort',
+                                       wfEscapeWikiText( $target->getName() )
+                               );
                        }
 
-                       $status = self::checkUnblockSelf( $target, $form->getUser() );
-                       if ( $status !== true ) {
-                               return $form->msg( 'badaccess', $status );
+                       $unblockStatus = self::checkUnblockSelf( $target, $user );
+                       if ( $unblockStatus !== true ) {
+                               $status->fatal( 'badaccess', $unblockStatus );
                        }
-
                } elseif ( $type == Block::TYPE_RANGE ) {
                        list( $ip, $range ) = explode( '/', $target, 2 );
 
-                       if ( ( IP::isIPv4( $ip ) && $wgBlockCIDRLimit['IPv4'] == 32 )
-                               || ( IP::isIPv6( $ip ) && $wgBlockCIDRLimit['IPv6'] == 128 ) )
-                       {
-                               # Range block effectively disabled
-                               return $form->msg( 'range_block_disabled' );
+                       if (
+                               ( IP::isIPv4( $ip ) && $wgBlockCIDRLimit['IPv4'] == 32 ) ||
+                               ( IP::isIPv6( $ip ) && $wgBlockCIDRLimit['IPv6'] == 128 )
+                       ) {
+                               // Range block effectively disabled
+                               $status->fatal( 'range_block_disabled' );
                        }
 
-                       if ( ( IP::isIPv4( $ip ) && $range > 32 )
-                               || ( IP::isIPv6( $ip ) && $range > 128 ) )
-                       {
-                               # Dodgy range
-                               return $form->msg( 'ip_range_invalid' );
+                       if (
+                               ( IP::isIPv4( $ip ) && $range > 32 ) ||
+                               ( IP::isIPv6( $ip ) && $range > 128 )
+                       ) {
+                               // Dodgy range
+                               $status->fatal( 'ip_range_invalid' );
                        }
 
                        if ( IP::isIPv4( $ip ) && $range < $wgBlockCIDRLimit['IPv4'] ) {
-                               return $form->msg( 'ip_range_toolarge', $wgBlockCIDRLimit['IPv4'] );
+                               $status->fatal( 'ip_range_toolarge', $wgBlockCIDRLimit['IPv4'] );
                        }
 
                        if ( IP::isIPv6( $ip ) && $range < $wgBlockCIDRLimit['IPv6'] ) {
-                               return $form->msg( 'ip_range_toolarge', $wgBlockCIDRLimit['IPv6'] );
+                               $status->fatal( 'ip_range_toolarge', $wgBlockCIDRLimit['IPv6'] );
                        }
                } elseif ( $type == Block::TYPE_IP ) {
                        # All is well
                } else {
-                       return $form->msg( 'badipaddress' );
+                       $status->fatal( 'badipaddress' );
                }
 
-               return true;
+               return $status;
        }
 
        /**
index 0996de3..99d2ebf 100644 (file)
@@ -213,6 +213,8 @@ class SpecialChangeEmail extends UnlistedSpecialPage {
         * @return bool|string true or string on success, false on failure
         */
        protected function attemptChange( User $user, $pass, $newaddr ) {
+               global $wgAuth;
+
                if ( $newaddr != '' && !Sanitizer::validateEmail( $newaddr ) ) {
                        $this->error( 'invalidemailaddress' );
                        return false;
@@ -248,6 +250,8 @@ class SpecialChangeEmail extends UnlistedSpecialPage {
 
                $user->saveSettings();
 
+               $wgAuth->updateExternalDB( $user );
+
                return $status->value;
        }
 }
index 689e096..c58d4da 100644 (file)
@@ -534,8 +534,8 @@ class SpecialContributions extends SpecialPage {
                        );
 
                $explain = $this->msg( 'sp-contributions-explain' );
-               if ( $explain->exists() ) {
-                       $form .= "<p id='mw-sp-contributions-explain'>{$explain}</p>";
+               if ( !$explain->isBlank() ) {
+                       $form .= "<p id='mw-sp-contributions-explain'>{$explain->parse()}</p>";
                }
                $form .= Xml::closeElement( 'fieldset' ) .
                        Xml::closeElement( 'form' );
index f542640..14f9c8d 100644 (file)
@@ -109,8 +109,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
        public function feedSetup() {
                global $wgFeedLimit;
                $opts = $this->getDefaultOptions();
-               # Feed is cached on limit,hideminor,namespace; other params would randomly not work
-               $opts->fetchValuesFromRequest( $this->getRequest(), array( 'limit', 'hideminor', 'namespace' ) );
+               $opts->fetchValuesFromRequest( $this->getRequest() );
                $opts->validateIntBounds( 'limit', 0, $wgFeedLimit );
                return $opts;
        }
index 70d98df..d2d91bd 100644 (file)
@@ -31,4 +31,17 @@ class UncategorizedCategoriesPage extends UncategorizedPagesPage {
                parent::__construct( $name );
                $this->requestedNamespace = NS_CATEGORY;
        }
+
+       /**
+        * Formats the result
+        * @param $skin The current skin
+        * @param $result The query result
+        * @return string The category link
+        */
+       function formatResult ( $skin, $result ) {
+               $title = Title::makeTitle( NS_CATEGORY, $result->title );
+               $text = $title->getText();
+
+               return Linker::linkKnown( $title, htmlspecialchars( $text ) );
+        }
 }
index c0420e5..0d2ac7e 100644 (file)
@@ -417,6 +417,9 @@ class PageArchive {
                $logEntry->setPerformer( $user );
                $logEntry->setTarget( $this->title );
                $logEntry->setComment( $reason );
+
+               wfRunHooks( 'ArticleUndeleteLogEntry', array( $this, &$logEntry, $user ) );
+
                $logid = $logEntry->insert();
                $logEntry->publish( $logid );
 
index c077c4d..4980ffb 100644 (file)
@@ -559,7 +559,7 @@ class LoginForm extends SpecialPage {
                }
 
                $isAutoCreated = false;
-               if ( 0 == $u->getID() ) {
+               if ( $u->getID() == 0 ) {
                        $status = $this->attemptAutoCreate( $u );
                        if ( $status !== self::SUCCESS ) {
                                return $status;
@@ -569,8 +569,9 @@ class LoginForm extends SpecialPage {
                } else {
                        global $wgExternalAuthType, $wgAutocreatePolicy;
                        if ( $wgExternalAuthType && $wgAutocreatePolicy != 'never'
-                       && is_object( $this->mExtUser )
-                       && $this->mExtUser->authenticate( $this->mPassword ) ) {
+                               && is_object( $this->mExtUser )
+                               && $this->mExtUser->authenticate( $this->mPassword )
+                       ) {
                                # The external user and local user have the same name and
                                # password, so we assume they're the same.
                                $this->mExtUser->linkToLocal( $u->getID() );
@@ -751,11 +752,10 @@ class LoginForm extends SpecialPage {
        }
 
        function processLogin() {
-               global $wgMemc, $wgLang;
+               global $wgMemc, $wgLang, $wgSecureLogin;
 
                switch ( $this->authenticateUserData() ) {
                        case self::SUCCESS:
-                               global $wgSecureLogin;
                                # We've verified now, update the real record
                                $user = $this->getUser();
                                if( (bool)$this->mRemember != (bool)$user->getOption( 'rememberpassword' ) ) {
@@ -785,6 +785,8 @@ class LoginForm extends SpecialPage {
                                        $userLang = Language::factory( $code );
                                        $wgLang = $userLang;
                                        $this->getContext()->setLanguage( $userLang );
+                                       // Reset SessionID on Successful login (bug 40995)
+                                       $this->renewSessionId();
                                        $this->successfulLogin();
                                } else {
                                        $this->cookieRedirectCheck( 'login' );
@@ -897,7 +899,8 @@ class LoginForm extends SpecialPage {
                wfRunHooks( 'UserLoginComplete', array( &$currentUser, &$injected_html ) );
 
                if( $injected_html !== '' ) {
-                       $this->displaySuccessfulLogin( 'loginsuccess', $injected_html );
+                       $this->displaySuccessfulAction( $this->msg( 'loginsuccesstitle' ),
+                               'loginsuccess', $injected_html );
                } else {
                        $this->executeReturnTo( 'successredirect' );
                }
@@ -913,7 +916,7 @@ class LoginForm extends SpecialPage {
                # Run any hooks; display injected HTML
                $currentUser = $this->getUser();
                $injected_html = '';
-               $welcome_creation_msg = 'welcomecreation';
+               $welcome_creation_msg = 'welcomecreation-msg';
 
                wfRunHooks( 'UserLoginComplete', array( &$currentUser, &$injected_html ) );
 
@@ -924,18 +927,21 @@ class LoginForm extends SpecialPage {
                 */
                wfRunHooks( 'BeforeWelcomeCreation', array( &$welcome_creation_msg, &$injected_html ) );
 
-               $this->displaySuccessfulLogin( $welcome_creation_msg, $injected_html );
+               $this->displaySuccessfulAction( $this->msg( 'welcomeuser', $this->getUser()->getName() ),
+                       $welcome_creation_msg, $injected_html );
        }
 
        /**
-        * Display a "login successful" page.
+        * Display an "successful action" page.
+        *
+        * @param $title string|Message page's title
         * @param $msgname string
         * @param $injected_html string
         */
-       private function displaySuccessfulLogin( $msgname, $injected_html ) {
+       private function displaySuccessfulAction( $title, $msgname, $injected_html ) {
                $out = $this->getOutput();
-               $out->setPageTitle( $this->msg( 'loginsuccesstitle' ) );
-               if( $msgname ){
+               $out->setPageTitle( $title );
+               if ( $msgname ) {
                        $out->addWikiMsg( $msgname, wfEscapeWikiText( $this->getUser()->getName() ) );
                }
 
@@ -1254,6 +1260,23 @@ class LoginForm extends SpecialPage {
                $wgRequest->setSessionData( 'wsCreateaccountToken', null );
        }
 
+       /**
+        * Renew the user's session id, using strong entropy
+        */
+       private function renewSessionId() {
+               if ( wfCheckEntropy() ) {
+                       session_regenerate_id( false );
+               } else {
+                       //If we don't trust PHP's entropy, we have to replace the session manually
+                       $tmp = $_SESSION;
+                       session_unset();
+                       session_write_close();
+                       session_id( MWCryptRand::generateHex( 32 ) );
+                       session_start();
+                       $_SESSION = $tmp;
+               }
+       }
+
        /**
         * @private
         */
index 7ace5f8..0ff5fc9 100644 (file)
@@ -263,9 +263,13 @@ class SpecialVersion extends SpecialPage {
         */
        private static function getwgVersionLinked() {
                global $wgVersion;
-               $versionParts = array();
-               preg_match( "/^(\d+\.\d+)/", $wgVersion, $versionParts );
-               return "[https://www.mediawiki.org/wiki/MediaWiki_{$versionParts[1]} $wgVersion]";
+               $versionUrl = "";
+               if( wfRunHooks( 'SpecialVersionVersionUrl', array( $wgVersion, &$versionUrl ) ) ) {
+                       $versionParts = array();
+                       preg_match( "/^(\d+\.\d+)/", $wgVersion, $versionParts );
+                       $versionUrl = "https://www.mediawiki.org/wiki/MediaWiki_{$versionParts[1]}";
+               }
+               return "[$versionUrl $wgVersion]";
        }
 
        /**
index aa333fc..6c94729 100644 (file)
@@ -16,4 +16,7 @@ quiet: yes
 quote-nbsp: yes
 fix-backslash: no
 fix-uri: no
-new-inline-tags: video,audio,source,track,bdi
+# 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-inline-tags: video, audio, source, track, bdi, data, time, mark
index d40b53d..fa4931c 100644 (file)
@@ -244,7 +244,7 @@ abstract class UploadBase {
                        // @TODO: just make uploads work with storage paths
                        // UploadFromStash loads files via virtuals URLs
                        $tmpFile = $repo->getLocalCopy( $srcPath );
-                       $tmpFile->bind( $this ); // keep alive with $thumb
+                       $tmpFile->bind( $this ); // keep alive with $this
                        wfProfileOut( __METHOD__ );
                        return $tmpFile->getPath();
                }
index b0e5fb6..e923c20 100644 (file)
@@ -120,17 +120,24 @@ class UploadFromChunks extends UploadFromFile {
                // Get a 0-byte temp file to perform the concatenation at
                $tmpFile = TempFSFile::factory( 'chunkedupload_', $ext );
                $tmpPath = $tmpFile
-                       ? $tmpFile->getPath()
+                       ? $tmpFile->bind( $this )->getPath() // keep alive with $this
                        : false; // fail in concatenate()
                // Concatenate the chunks at the temp file
+               $tStart = microtime( true );
                $status = $this->repo->concatenate( $fileList, $tmpPath, FileRepo::DELETE_SOURCE );
+               $tAmount = microtime( true ) - $tStart;
                if( !$status->isOk() ){
                        return $status;
                }
+               wfDebugLog( 'fileconcatenate', "Combined $i chunks in $tAmount seconds.\n" );
                // Update the mTempPath and mLocalFile
                // ( for FileUpload or normal Stash to take over )
                $this->mTempPath = $tmpPath; // file system path
+               $tStart = microtime( true );
                $this->mLocalFile = parent::stashFile();
+               $tAmount = microtime( true ) - $tStart;
+               $this->mLocalFile->setLocalReference( $tmpFile ); // reuse (e.g. for getImageInfo())
+               wfDebugLog( 'fileconcatenate', "Stashed combined file ($i chunks) in $tAmount seconds.\n" );
 
                return $status;
        }
@@ -203,6 +210,9 @@ class UploadFromChunks extends UploadFromFile {
                                        $this->getOffset() . ' inx:' . $this->getChunkIndex() . "\n" );
 
                $dbw = $this->repo->getMasterDb();
+               // Use a quick transaction since we will upload the full temp file into shared
+               // storage, which takes time for large files. We don't want to hold locks then.
+               $dbw->begin();
                $dbw->update(
                        'uploadstash',
                        array(
@@ -213,6 +223,7 @@ class UploadFromChunks extends UploadFromFile {
                        array( 'us_key' => $this->mFileKey ),
                        __METHOD__
                );
+               $dbw->commit();
        }
 
        /**
index 733c686..09bcaea 100644 (file)
@@ -182,7 +182,7 @@ class UploadStash {
         * @return UploadStashFile: file, or null on failure
         */
        public function stashFile( $path, $sourceType = null ) {
-               if ( ! file_exists( $path ) ) {
+               if ( !is_file( $path ) ) {
                        wfDebug( __METHOD__ . " tried to stash file at '$path', but it doesn't exist\n" );
                        throw new UploadStashBadPathException( "path doesn't exist" );
                }
@@ -192,12 +192,10 @@ class UploadStash {
                // we will be initializing from some tmpnam files that don't have extensions.
                // most of MediaWiki assumes all uploaded files have good extensions. So, we fix this.
                $extension = self::getExtensionForPath( $path );
-               if ( ! preg_match( "/\\.\\Q$extension\\E$/", $path ) ) {
+               if ( !preg_match( "/\\.\\Q$extension\\E$/", $path ) ) {
                        $pathWithGoodExtension = "$path.$extension";
-                       if ( ! rename( $path, $pathWithGoodExtension ) ) {
-                               throw new UploadStashFileException( "couldn't rename $path to have a better extension at $pathWithGoodExtension" );
-                       }
-                       $path = $pathWithGoodExtension;
+               } else {
+                       $pathWithGoodExtension = $path;
                }
 
                // If no key was supplied, make one.  a mysql insertid would be totally reasonable here, except
@@ -221,7 +219,7 @@ class UploadStash {
                wfDebug( __METHOD__ . " key for '$path': $key\n" );
 
                // if not already in a temporary area, put it there
-               $storeStatus = $this->repo->storeTemp( basename( $path ), $path );
+               $storeStatus = $this->repo->storeTemp( basename( $pathWithGoodExtension ), $path );
 
                if ( ! $storeStatus->isOK() ) {
                        // It is a convention in MediaWiki to only return one error per API exception, even if multiple errors
@@ -244,9 +242,6 @@ class UploadStash {
                }
                $stashPath = $storeStatus->value;
 
-               // we have renamed the file so we have to cleanup once done
-               unlink($path);
-
                // fetch the current user ID
                if ( !$this->isLoggedIn ) {
                        throw new UploadStashNotLoggedInException( __METHOD__ . ' No user is logged in, files must belong to users' );
index c4807a6..7475d2f 100644 (file)
@@ -3482,8 +3482,22 @@ class Language {
                                }
                        }
                }
-               // If all else fails, return the original string.
-               return $str;
+
+               // If all else fails, return a standard duration or timestamp description.
+               $time = strtotime( $str, 0 );
+               if ( $time === false ) { // Unknown format. Return it as-is in case.
+                       return $str;
+               } elseif ( $time !== strtotime( $str, 1 ) ) { // It's a relative timestamp.
+                       // $time is relative to 0 so it's a duration length.
+                       return $this->formatDuration( $time );
+               } else { // It's an absolute timestamp.
+                       if ( $time === 0 ) {
+                               // wfTimestamp() handles 0 as current time instead of epoch.
+                               return $this->timeanddate( '19700101000000' );
+                       } else {
+                               return $this->timeanddate( $time );
+                       }
+               }
        }
 
        /**
@@ -3690,15 +3704,24 @@ class Language {
        }
 
        /**
-        * Enclose a string with the "no conversion" tag. This is used by
-        * various functions in the Parser
+        * Prepare external link text for conversion. When the text is
+        * a URL, it shouldn't be converted, and it'll be wrapped in
+        * the "raw" tag (-{R| }-) to prevent conversion.
+        *
+        * This function is called "markNoConversion" for historical
+        * reasons.
         *
-        * @param $text String: text to be tagged for no conversion
-        * @param $noParse bool
+        * @param $text String: text to be used for external link
+        * @param $noParse bool: wrap it without confirming it's a real URL first
         * @return string the tagged text
         */
        public function markNoConversion( $text, $noParse = false ) {
-               return $this->mConverter->markNoConversion( $text, $noParse );
+               // Excluding protocal-relative URLs may avoid many false positives.
+               if ( $noParse || preg_match( '/^(?:' . wfUrlProtocolsWithoutProtRel() . ')/', $text ) ) {
+                       return $this->mConverter->markNoConversion( $text );
+               } else {
+                       return $text;
+               }
        }
 
        /**
index da55c82..9944ef0 100644 (file)
@@ -55,6 +55,7 @@
        'avk' => 'Kotava', # Kotava
        'ay' => 'Aymar aru',    # Aymara
        'az' => 'azərbaycanca',        # Azerbaijani
+       'azb' => 'تورکجه',        # South Azerbaijani
        'ba' => 'башҡортса',   # Bashkir
        'bar' => 'Boarisch',    # Bavarian (Austro-Bavarian and South Tyrolean)
        'bat-smg' => 'žemaitėška', # Samogitian (deprecated code, 'sgs' in ISO 693-3 since 2010-06-30 )
        'nap' => 'Nnapulitano', # Neapolitan
        'nb' => "norsk (bokmål)\xE2\x80\x8E",          # Norwegian (Bokmal)
        'nds' => 'Plattdüütsch',      # Low German ''or'' Low Saxon
-       'nds-nl' => 'Nedersaksisch',    # Dutch Low Saxon
+       'nds-nl' => 'Nedersaksies',     # aka Nedersaksisch: Dutch Low Saxon
        'ne' => 'नेपाली',   # Nepali
        'new' => 'नेपाल भाषा',                # Newar / Nepal Bhasha
        'ng' => 'Oshiwambo',            # Ndonga
index 6482070..0d652d4 100644 (file)
@@ -66,20 +66,6 @@ class GanConverter extends LanguageConverter {
                );
        }
 
-       /**
-        * there shouldn't be any latin text in Chinese conversion, so no need
-        * to mark anything.
-        * $noParse is there for compatibility with LanguageConvert::markNoConversion
-        *
-        * @param $text string
-        * @param $noParse bool
-        *
-        * @return string
-        */
-       function markNoConversion( $text, $noParse = false ) {
-               return $text;
-       }
-
        /**
         * @param $key string
         * @return String
index 79e5582..fe5cdf8 100644 (file)
@@ -157,21 +157,6 @@ class IuConverter extends LanguageConverter {
                        $link = $oldlink;
        }
 
-       /**
-        * We want our external link captions to be converted in variants,
-        * so we return the original text instead -{$text}-, except for URLs
-        *
-        * @param $text string
-        * @param $noParse bool
-        *
-        * @return string
-        */
-       function markNoConversion( $text, $noParse = false ) {
-               if ( $noParse || preg_match( "/^https?:\/\/|ftp:\/\/|irc:\/\//", $text ) )
-                       return parent::markNoConversion( $text );
-               return $text;
-       }
-
        /**
         * An ugly function wrapper for parsing Image titles
         * (to prevent image name conversion)
index bdaf2f4..6dd6959 100644 (file)
@@ -390,21 +390,6 @@ class KkConverter extends LanguageConverter {
                }
        }
 
-       /**
-        * We want our external link captions to be converted in variants,
-        * so we return the original text instead -{$text}-, except for URLs
-        *
-        * @param $text string
-        * @param $noParse string|bool
-        *
-        * @return string
-        */
-       function markNoConversion( $text, $noParse = false ) {
-               if ( $noParse || preg_match( "/^https?:\/\/|ftp:\/\/|irc:\/\//", $text ) )
-                       return parent::markNoConversion( $text );
-               return $text;
-       }
-
        /**
         * @param $key string
         * @return String
index 0eac439..30d98ba 100644 (file)
@@ -177,21 +177,6 @@ class KuConverter extends LanguageConverter {
                        $link = $oldlink;
        }
 
-       /**
-        * We want our external link captions to be converted in variants,
-        * so we return the original text instead -{$text}-, except for URLs
-        *
-        * @param $text string
-        * @param $noParse bool
-        *
-        * @return string
-        */
-       function markNoConversion( $text, $noParse = false ) {
-               if ( $noParse || preg_match( "/^https?:\/\/|ftp:\/\/|irc:\/\//", $text ) )
-                   return parent::markNoConversion( $text );
-               return $text;
-       }
-
        /**
         * An ugly function wrapper for parsing Image titles
         * (to prevent image name conversion)
index 4833d1c..5ddcfde 100644 (file)
@@ -136,21 +136,6 @@ class ShiConverter extends LanguageConverter {
                        $link = $oldlink;
        }
 
-       /**
-        * We want our external link captions to be converted in variants,
-        * so we return the original text instead -{$text}-, except for URLs
-        *
-        * @param $text string
-        * @param $noParse bool
-        *
-        * @return string
-        */
-       function markNoConversion( $text, $noParse = false ) {
-               if ( $noParse || preg_match( "/^https?:\/\/|ftp:\/\/|irc:\/\//", $text ) )
-                       return parent::markNoConversion( $text );
-               return $text;
-       }
-
        /**
         * An ugly function wrapper for parsing Image titles
         * (to prevent image name conversion)
index b472743..3610c1e 100644 (file)
@@ -128,21 +128,6 @@ class SrConverter extends LanguageConverter {
                        $link = $oldlink;
        }
 
-       /**
-        * We want our external link captions to be converted in variants,
-        * so we return the original text instead -{$text}-, except for URLs
-        *
-        * @param $text string
-        * @param $noParse bool
-        *
-        * @return string
-        */
-       function markNoConversion( $text, $noParse = false ) {
-               if ( $noParse || preg_match( "/^https?:\/\/|ftp:\/\/|irc:\/\//", $text ) )
-                       return parent::markNoConversion( $text );
-               return $text;
-       }
-
        /**
         * An ugly function wrapper for parsing Image titles
         * (to prevent image name conversion)
index 8bf66a3..04767f2 100644 (file)
@@ -87,20 +87,6 @@ class ZhConverter extends LanguageConverter {
                $this->mTables['zh-tw']->merge( $this->mTables['zh-hant'] );
        }
 
-       /**
-        * there shouldn't be any latin text in Chinese conversion, so no need
-        * to mark anything.
-        * $noParse is there for compatibility with LanguageConvert::markNoConversion
-        *
-        * @param $text string
-        * @param $noParse bool
-        *
-        * @return string
-        */
-       function markNoConversion( $text, $noParse = false ) {
-               return $text;
-       }
-
        /**
         * @param $key string
         * @return String
index f98b4bd..c5fe35d 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/**    زَوُن (   زَوُن)
+/** Arabic, Tunisian Spoken (تونسي)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
  * @author Csisc
  */
 
+$fallback = 'ar';
+
+$rtl = true;
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'ضع خطا تحت الوصلات:',
index 3347bba..e326663 100644 (file)
@@ -616,9 +616,6 @@ Die rede hiervoor is "\'\'$3\'\'".',
 
 U kan aanhou om {{SITENAME}} anoniem te gebruik; of u kan weer <span class='plainlinks'>[$1 inteken]</span> as dieselfde of 'n ander gebruiker.
 Dit is moontlik dat sommige bladsye nog sal aandui dat u aangeteken is totdat u u webblaaier se kas skoonmaak.",
-'welcomecreation' => '== Welkom, $1! ==
-U rekening is geskep;
-moenie vergeet om u [[Special:Preferences|persoonlike voorkeure vir {{SITENAME}}]] te stel nie.',
 'yourname' => 'Gebruikersnaam:',
 'yourpassword' => 'Wagwoord:',
 'yourpasswordagain' => 'Herhaal wagwoord',
@@ -2241,11 +2238,7 @@ As u die bladsy later van u dophoulys wil verwyder, kliek \"verwyder van dophoul
 
 'enotif_mailer' => '{{SITENAME}} E-pos kennisgewings',
 'enotif_reset' => 'Merk alle bladsye as besoek',
-'enotif_newpagetext' => "Dis 'n nuwe bladsy.",
 'enotif_impersonal_salutation' => '{{SITENAME}} gebruiker',
-'changed' => 'verander',
-'created' => 'geskep',
-'enotif_subject' => 'Bladsy $PAGETITLE op {{SITENAME}} is $CHANGEDORCREATED deur $PAGEEDITOR',
 'enotif_lastvisited' => 'Sien $1 vir alle wysigings sedert u laaste besoek.',
 'enotif_lastdiff' => 'Sien $1 om hierdie wysiging te bekyk.',
 'enotif_anon_editor' => 'anonieme gebruiker $1',
index 3e59f1e..5aa7ce6 100644 (file)
@@ -388,9 +388,6 @@ $2",
 
 አሁንም በቁጥር መታወቂያዎ ማዘጋጀት ይቻላል። ወይም ደግሞ እንደገና በብዕር ስምዎ መግባት ይችላሉ።
 በጥቂት ሴኮንድ ውስጥ ወደሚከተለው ገጽ በቀጥታ ይመለሳል፦",
-'welcomecreation' => '== ሰላምታ፣ $1! ==
-
-የብዕር ስምዎ ተፈጥሯል። ምርጫዎችዎን ለማስተካከል ይችላሉ።',
 'yourname' => 'Username / የብዕር ስም:',
 'yourpassword' => 'Password / መግቢያ ቃል',
 'yourpasswordagain' => 'መግቢያ ቃልዎን ዳግመኛ ይስጡ',
@@ -1361,11 +1358,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 'enotif_mailer' => 'የ{{SITENAME}} ኢሜል-ማስታወቂያ',
 'enotif_reset' => 'ገጾች ሁሉ የተጎበኙ ሆነው ለማመልከት',
-'enotif_newpagetext' => 'ይህ አዲስ ገጽ ነው።',
 'enotif_impersonal_salutation' => '{{SITENAME}} ተጠቃሚ',
-'changed' => 'ተለወጠ',
-'created' => 'ተፈጠረ',
-'enotif_subject' => 'የ{{SITENAME}} ገጽ $PAGETITLE  በ$PAGEEDITOR $CHANGEDORCREATED',
 'enotif_lastvisited' => 'መጨረሻ ከጎበኙ ጀምሮ ለውጦችን ሁሉ ለመመልከት $1 ይዩ።',
 'enotif_lastdiff' => 'ይህን ለውጥ ለማመልከት $1 ይዩ።',
 'enotif_anon_editor' => 'ቁጥር አድራሻ $1',
index 6b2746a..d932ad9 100644 (file)
@@ -522,9 +522,6 @@ A razón data ye ''$2''.",
 'logouttext' => "'''Ha rematato a sesión.'''
 
 Puede continar navegando por {{SITENAME}} anonimament, u puede <span class='plainlinks'>[$1 encetar]</span> una nueva sesión con o mesmo nombre d'usuario u bell atro diferent. Pare cuenta que, entre que se limpia a caché d'o navegador, puet estar que bellas pachinas s'amuestren como si encara continase en a sesión anterior.",
-'welcomecreation' => "== ¡Bienveniu(da), $1! ==
-S'ha creyato a suya cuenta.
-No xublide de presonalizar [[Special:Preferences|as suyas preferencias en {{SITENAME}}]].",
 'yourname' => "Nombre d'usuario:",
 'yourpassword' => "Clau d'acceso:",
 'yourpasswordagain' => 'Torne a escribir a clau:',
@@ -2054,11 +2051,7 @@ L\'adreza de correu-e que endicó en as suyas [[Special:Preferences|preferencias
 
 'enotif_mailer' => 'Sistema de notificación por correu de {{SITENAME}}',
 'enotif_reset' => 'Marcar todas as pachinas como vesitatas',
-'enotif_newpagetext' => 'Ista ye una nueva pachina.',
 'enotif_impersonal_salutation' => 'usuario de {{SITENAME}}',
-'changed' => 'editata',
-'created' => 'creyata',
-'enotif_subject' => 'A pachina $PAGETITLE de {{SITENAME}} ha estato $CHANGEDORCREATED por $PAGEEDITOR',
 'enotif_lastvisited' => 'Vaiga ta $1 ta veyer totz os cambeos dende a suya zaguer vesita.',
 'enotif_lastdiff' => 'Vaiga ta $1 ta veyer iste cambeo.',
 'enotif_anon_editor' => 'usuario anonimo $1',
index 543c10f..36bebbe 100644 (file)
@@ -50,6 +50,7 @@
  * @author TTMTT
  * @author Tarawneh
  * @author TheEgyptian
+ * @author Tux-tn
  * @author Uwe a
  * @author Zack wadghiri
  * @author Zanatos
@@ -881,9 +882,6 @@ $2',
 
 تستطيع المتابعة باستعمال {{SITENAME}} كمجهول، أو <span class='plainlinks'>[$1 الدخول مرة أخرى]</span> بنفس الاسم أو باسم آخر.
 من الممكن أن ترى بعض الصفحات كما لو أنك مسجل الدخول، وذلك حتى تقوم بإفراغ الصفحات المختزنة في المتصفح لديك.",
-'welcomecreation' => '== مرحبا، $1! ==
-تم إنشاء حسابك.
-لا تنس أن تغير [[Special:Preferences|تفضيلاتك في {{SITENAME}}]].',
 'yourname' => 'اسم المستخدم:',
 'yourpassword' => 'كلمة السر:',
 'yourpasswordagain' => 'أعد كتابة كلمة السر:',
@@ -1264,6 +1262,7 @@ $2
 'content-not-allowed-here' => '"$1" المحتوى غير مسموح على صفحة [[$2]]',
 
 # Content models
+'content-model-text' => 'نص عادي',
 'content-model-javascript' => 'جافاسكربت',
 
 # Parser/template warnings
@@ -2548,11 +2547,7 @@ $1',
 
 'enotif_mailer' => 'نظام {{SITENAME}} البريدي للإخطارات',
 'enotif_reset' => 'علم على كل الصفحات كمزارة',
-'enotif_newpagetext' => 'هذه صفحة جديدة.',
 'enotif_impersonal_salutation' => 'مستخدم {{SITENAME}}',
-'changed' => 'غيرت',
-'created' => 'أنشئت',
-'enotif_subject' => 'صفحة {{SITENAME}} $PAGETITLE $CHANGEDORCREATED بواسطة $PAGEEDITOR',
 'enotif_lastvisited' => 'انظر $1 لكل التغييرات منذ زيارتك الأخيرة.',
 'enotif_lastdiff' => 'انظر $1 لرؤية هذا التغيير.',
 'enotif_anon_editor' => 'مستخدم مجهول $1',
index 67d38ab..771cbc9 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author 334a
  * @author A2raya07
+ * @author Amire80
  * @author Basharh
  * @author Man2fly2002
  * @author Michaelovic
@@ -220,7 +221,7 @@ $messages = array(
 'hidden-category-category' => 'ܣܕܪ̈ܐ ܛܘܫܝ̈ܐ',
 'category-subcat-count' => '{{PLURAL:$2|ܣܕܪܐ ܗܢܐ ܐܝܬ ܒܗ ܗܢܐ ܣܕܪܐ ܦܪܥܝܐ ܕܐܬܐ ܒܠܚܘܕ.|ܣܕܪܐ ܗܢܐ ܐܝܬ ܒܗ {{PLURAL:$1|ܣܕܪܐ ܦܪܥܝܐ ܕܐܬܐ|$1 ܣܕܪ̈ܐ ܦܪ̈ܥܝܐ ܕܐܬܝܢ}}، ܡܢ ܣܘܝܟܐ ܕ $2.}}',
 'category-subcat-count-limited' => 'ܣܕܪܐ ܗܢܐ ܐܝܬ ܒܗ {{PLURAL:$1|ܣܕܪܐ ܦܪܥܝܐ ܗܢܐ|$1 ܣܕܪ̈ܐ ܦܪ̈ܥܝܐ ܗܠܝܢ}}.',
-'category-article-count' => '{{PLURAL:$2|Ü£Ü\95ܪÜ\90 Ü\97Ü¢Ü\90 Ü\90Ü\9dܬ Ü\92Ü\97 Ü¦Ü\90ܬÜ\90 Ü\97Ü\95Ü\90 Ü\92Ü Ü\9aÜ\98Ü\95.|Ü\90Ü\9dܬ {{PLURAL:$1|ܦÜ\90ܬÜ\90 Ü\95Ü\90ܬÜ\9dÜ\90|$1 Ü¦Ü\90ܬܬÌ\88Ü\90 Ü\95Ü\90ܬÜ\9dÜ¢}} Ü\92Ü£Ü\95ܪÜ\90 Ü\97Ü¢Ü\90, ܡܢ ܣܘܝܟܐ ܕ $2.}}',
+'category-article-count' => '{{PLURAL:$2|Ü£Ü\95ܪÜ\90 Ü\97Ü¢Ü\90 Ü Ü\9dܬ Ü\92Ü\97 Ü¦Ü\90ܬܬÌ\88Ü\90.|Ü£Ü\95ܪÜ\90 Ü\97Ü¢Ü\90 Ü\90Ü\9dܬ Ü\92Ü\97 Ü¦Ü\90ܬÜ\90 Ü\97Ü\95Ü\90 Ü\92Ü Ü\9aÜ\98Ü\95.|{{PLURAL:$1||Ü\90Ü\9dܬ Ü¦Ü\90ܬÜ\90 Ü\95Ü\90ܬÜ\9dÜ\90\90Ü\9dܬ $1 Ü¦Ü\90ܬܬÌ\88Ü\90 Ü\95Ü\90ܬÜ\9dÜ¢}} Ü\92Ü£Ü\95ܪÜ\90 Ü\97Ü¢Ü\90Ø\8c ܡܢ ܣܘܝܟܐ ܕ $2.}}',
 'category-article-count-limited' => '{{PLURAL:$1|ܦܐܬܐ ܗܕܐ|$1 ܦܐܬܬ̈ܐ ܗܠܝܢ}} ܒܣܕܪܐ ܗܢܐ.',
 'category-file-count' => '{{PLURAL:$2|ܣܕܪܐ ܗܢܐ ܐܝܬ ܒܗ ܠܦܦܐ ܕܐܬܐ ܒܠܚܘܕ.|{{PLURAL:$1|ܠܦܦܐ ܕܐܬܐ ܐܝܬܘܗܝ|$1 ܠܦܦ̈ܐ ܕܐܬܝܢ ܐܝܬܝܗܘܢ}} ܒܣܕܪܐ ܗܢܐ، ܡܢ ܣܘܝܟܐ ܕ $2.}}',
 'category-file-count-limited' => 'ܐܝܬ {{PLURAL:$1|ܠܦܦܐ ܕܐܬܐ|$1 ܠܦܦ̈ܐ ܕܐܬܝܢ}} ܒܣܕܪܐ ܗܫܝܐ.',
@@ -230,9 +231,9 @@ $messages = array(
 'article' => 'ܡܓܠܬܐ',
 'newwindow' => '(ܦܬܚ ܒܟܘܬܐ ܚܕܬܐ)',
 'cancel' => 'ܒܛܘܠ',
-'moredotdotdot' => '...ܝܬܝܪ',
-'mypage' => 'ܦÜ\90ܬÜ\9d',
-'mytalk' => 'Ü¡Ü¡Ü Ü Ü\9d',
+'moredotdotdot' => 'ܝܬܝܪ...',
+'mypage' => 'ܦÜ\90ܬÜ\90',
+'mytalk' => 'Ü¡Ü¡Ü Ü Ü\90',
 'anontalk' => 'ܡܡܠܠܐ ܕܗܢܐ ܐܝ ܦܝ (IP)',
 'navigation' => 'ܐܠܦܪܘܬܐ',
 'and' => '&#32;ܘ',
@@ -263,6 +264,7 @@ $messages = array(
 'namespaces' => 'ܚܩܠܬ̈ܐ',
 'variants' => 'ܡܫܬܚܠܦܢܘ̈ܬܐ',
 
+'navigation-heading' => 'ܡܟܬܒܘܬܐ ܕܐܠܦܪܘܬܐ',
 'errorpagetitle' => 'ܦܘܕܐ',
 'returnto' => 'ܕܥܘܪ ܠ$1.',
 'tagline' => 'ܡܢ {{SITENAME}}',
@@ -421,9 +423,6 @@ $1',
 ܡܨܐ ܐܢܬ ܐܦܠܚܬ {{SITENAME}} ܐܝܟ ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ ܐܘ ܡܨܐ ܐܢܬ ܕ<span class='plainlinks'>[$1 ܬܥܘܠ]</span> ܒܚܘܫܒܢܐ ܥܝܢܗ ܐܘ ܐܝܟ ܡܦܠܚܢܐ ܐܚܪܢܐ.
 
 ܚܕ ܟܡܐ ܡܢ ܦܐܬܬ̈ܐ ܡܬܚܙܝܢ ܐܝܟ ܕܗܘ ܐܢܬ ܥܠܝܠܐ ܥܕܡܐ ܕܐܣܦܩܬ ܠܦܐܬܬ̈ܐ ܠܒܝܟܬ̈ܐ ܕܡܦܐܬܢܐ ܕܝܠܟ",
-'welcomecreation' => '== ܒܫܝܢܐ, $1! ==
-ܐܬܒܪܝ ܚܘܫܒܢܟ.
-ܠܐ ܢܫܐ ܐܢܬ ܠܫܚܠܦܬܐ ܕ[[Special:Preferences|ܨܒܝܢܝܘܬ̈ܐ ܒ {{SITENAME}}]].',
 'yourname' => 'ܫܡܐ ܕܡܦܠܚܢܐ:',
 'yourpassword' => 'ܡܠܬܐ ܕܥܠܠܐ:',
 'yourpasswordagain' => 'ܟܬܘܒ ܡܠܬܐ ܕܥܠܠܐ ܙܒܢܬܐ ܐܚܪܬܐ:',
@@ -512,7 +511,7 @@ $1',
 'showdiff' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ',
 'anoneditwarning' => "'''ܙܘܗܪܐ:''' ܠܐ ܐܝܬܝܟ ܥܠܝܠܐ.
 ܐܝ ܦܝ (IP) ܕܝܠܟ ܢܬܟܬܒ ܒܬܫܥܝܬܐ ܕܦܐܬܐ.",
-'anonpreviewwarning' => '"Ü Ü\90 Ü\90Ü\9dܬÜ\9dÜ\9f Ü¥Ü Ü\9dÜ Ü\90. Ü\90Ü¢ Ü Ü\92Ü\9f Ü¦Ü\90ܬÜ\90 Ü\90ܢܬ Ü\90Ü\9d Ü¦Ü\9d (IP) Ü\95Ü\9dÜ Ü\9f Ü¢Ü¬Ü\9fܬÜ\92 ܒܬܫܥܝܬܐ ܕܫܘܚܠܦܐ ܕܦܐܬܐ."',
+'anonpreviewwarning' => '"Ü Ü\90 Ü\90Ü\9dܬÜ\9dÜ\9f Ü¥Ü Ü\9dÜ Ü\90. Ü Ü\92Ü\9fܬÜ\90 Ü\95ܦÜ\90ܬÜ\90 Ü¢Ü¬Ü\9fܬÜ\92 Ü\90Ü\9d Ü¦Ü\9d (IP) Ü\95Ü\9dÜ Ü\9f ܒܬܫܥܝܬܐ ܕܫܘܚܠܦܐ ܕܦܐܬܐ."',
 'summary-preview' => 'ܚܝܪܐ ܩܕܡܝܐ ܕܦܣܝܩܬ̈ܐ :',
 'blockedtitle' => 'ܡܦܠܚܢܐ ܗܘ ܡܚܪܡܐ',
 'blockednoreason' => 'ܠܝܬ ܥܠܬܐ ܝܗܝܒܬܐ',
@@ -691,7 +690,7 @@ $1',
 
 # Preferences page
 'preferences' => 'ܨܒܝܢܝܘܬ̈ܐ',
-'mypreferences' => 'ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬÌ\88Ü\9d',
+'mypreferences' => 'ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬÌ\88Ü\90',
 'prefs-edits' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ:',
 'prefsnologin' => 'ܠܝܬܝܟ ܥܠܝܠܐ',
 'changepassword' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ',
@@ -999,7 +998,8 @@ $1',
 'randomredirect-nopages' => 'ܠܝܬ ܨܘܝܒ̈ܐ ܒܚܩܠܐ ܕ"$1".',
 
 # Statistics
-'statistics' => 'ܡܢܝܢܘܬ',
+'statistics' => 'ܚܒܝܫܘܬ ܡܢܝܢܐ',
+'statistics-header-hooks' => 'ܚܒܝܫܘܬ ܡܢܝܢܐ ܐܚܪܢܐ',
 'statistics-pages' => 'ܦܐܬܬ̈ܐ',
 'statistics-views-peredit' => 'ܚܘܘܝ̈ܐ ܠܟܠ ܫܘܚܠܦܐ',
 'statistics-users' => '[[Special:ListUsers|ܡܦܠܚܢ̈ܐ]] ܡܣܓܠ̈ܐ',
@@ -1181,7 +1181,7 @@ $1',
 
 # Watchlist
 'watchlist' => 'ܪ̈ܗܝܬܝ',
-'mywatchlist' => 'ܪÌ\88Ü\97Ü\9dܬÜ\9d',
+'mywatchlist' => 'ܪÌ\88Ü\97Ü\9dܬÜ\90',
 'watchlistfor2' => 'ܕ $1 $2',
 'nowatchlist' => 'ܠܝܬ ܠܟ ܡܕܡ ܒܪ̈ܗܝܬܐ ܕܝܠܟ',
 'watchlistanontext' => '$1 ܠܚܙܝܐ ܐܘ ܫܚܠܦܬܐ ܕܦܐܬܬ̈ܐ ܒܪ̈ܗܝܬܟ.',
@@ -1208,10 +1208,7 @@ $1',
 'unwatching' => 'ܠܚܝ ܪܗܝܐ...',
 
 'enotif_reset' => 'ܫܘܕܥ ܟܠ ܦܐܬܬ̈ܐ ܐܝܟ ܣܥܝܪ̈ܬܐ',
-'enotif_newpagetext' => 'ܗܕܐ ܗܝ ܦܐܬܐ ܚܕܬܐ',
 'enotif_impersonal_salutation' => 'ܡܦܠܚܢܐ {{SITENAME}}',
-'changed' => 'ܐܫܬܚܠܦܬ',
-'created' => 'ܒܪܐ',
 'enotif_lastvisited' => 'ܚܙܝ $1 ܠܟܠ ܫܘܚܠܦ̈ܐ ܡܢ ܐܡܬܝ ܕܣܘܥܪܢܐ ܐܚܪܝܐ ܕܝܠܟ.',
 'enotif_lastdiff' => 'ܚܙܝ $1 ܠܚܙܝܐ ܕܫܘܚܠܦܐ ܗܢܐ.',
 'enotif_anon_editor' => 'ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ $1',
@@ -1309,7 +1306,7 @@ $1',
 # Contributions
 'contributions' => 'ܫܘܬܦܘܝܬ̈ܐ ܕܡܦܠܚܢܐ',
 'contributions-title' => 'ܫܘܬܦܘܝܬ̈ܐ ܕܡܦܠܚܢܐ ܠ$1',
-'mycontris' => 'Ü«Ü\98ܬܦÜ\98Ü\9dܬÌ\88Ü\9d',
+'mycontris' => 'Ü«Ü\98ܬܦÜ\98Ü\9dܬÌ\88Ü\90',
 'contribsub2' => 'ܕ $1 ($2)',
 'uctop' => '(ܥܠܝܐ)',
 'month' => 'ܡܢ ܝܪܚܐ ܕ (ܘܡܢ ܩܕܡ ܗܝܕܝܢ):',
@@ -1345,7 +1342,7 @@ $1',
 'whatlinkshere-hideredirs' => '$1 ܨܘܝܒ̈ܐ',
 'whatlinkshere-hidetrans' => '$1 ܡܬܚܪ̈ܙܢܘܬܐ',
 'whatlinkshere-hidelinks' => '$1 ܐܣܘܪ̈ܐ',
-'whatlinkshere-hideimages' => '$1 Ü\90Ü£Ü\98ܪÜ\90 Ü\95ܨÜ\98ܪܬܐ',
+'whatlinkshere-hideimages' => '$1 Ü\90Ü£Ü\98ܪÜ\90 Ü\95ܠܦܦܐ',
 'whatlinkshere-filters' => 'ܡܨܦܝܢܝܬ̈ܐ',
 
 # Block/unblock
@@ -1740,9 +1737,9 @@ $1',
 'logentry-move-move-noredirect' => '$1 ܫܢܐ ܦܐܬܐ ܕ $3 ܠ $4 ܕܠܐ ܫܒܩܐ ܦܐܬܐ ܕܨܘܝܒܐ',
 'logentry-move-move_redir' => '$1 ܫܢܐ ܦܐܬܐ ܕ $3 ܠ $4 ܕܐܝܬܘܗܝ ܦܐܬܐ ܕܨܘܝܒܐ',
 'logentry-move-move_redir-noredirect' => '$1 ܫܢܐ ܦܐܬܐ ܕ $3 ܠ $4 ܕܐܝܬܘܗܝ ܦܐܬܐ ܕܨܘܝܒܐ ܘܕܠܐ ܫܒܩܐ ܦܐܬܐ ܕܨܘܝܒܐ',
-'logentry-newusers-newusers' => '$1 ܒܪܐ ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ',
-'logentry-newusers-create' => '$1 ܒܪܐ ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ',
-'logentry-newusers-create2' => '$1 ܒܪܐ ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $3',
+'logentry-newusers-newusers' => 'ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $1 ܐܬܒܪܐ',
+'logentry-newusers-create' => 'ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $1 ܐܬܒܪܐ',
+'logentry-newusers-create2' => 'ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $3 ܐܬܒܪܐ ܒܝܕ $1',
 'logentry-newusers-autocreate' => 'ܚܘܫܒܢܐ $1 ܐܬܒܪܝ ܝܬܐܝܬ',
 'newuserlog-byemail' => 'ܡܠܬܐ ܕܥܠܠܐ ܐܫܬܕܪܬ ܒܝܕ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
 
index 022c04a..ad4f067 100644 (file)
@@ -17,6 +17,8 @@
 
 $fallback = 'ar';
 
+$rtl = true;
+
 $namespaceNames = array(
        NS_MEDIA            => 'ميديا',
        NS_SPECIAL          => 'خاص',
@@ -315,7 +317,7 @@ $messages = array(
 'tog-editsectiononrightclick' => 'اسمح بـ تعديل الاجزاء لما تعمل right-click بـ الماوس على عناوين الاجزاء (بيحتاج JavaScript)',
 'tog-showtoc' => 'بين جدول المحتويات (بتاع الصفح اللى فيها اكتر من 3 عناوين)',
 'tog-rememberpassword' => ' (لمدة   $1 {{PLURAL:$1|يوم|يوم}})خليك فاكر دخولى على الكمبيوتر دا',
-'tog-watchcreations' => 'زوّد الصفح اللى ابتديتها على ليستة الصفح اللى باراقبها',
+'tog-watchcreations' => 'زوّد الصفح اللى ابتديتها على ليستة الصفح اللى باراقبها.',
 'tog-watchdefault' => 'زوّد الصفح اللى باعدلها على ليستة الصفح اللى باراقبها',
 'tog-watchmoves' => 'زوّد الصفح اللى بانقلها على ليستة الصفح اللى باراقبها',
 'tog-watchdeletion' => 'زوّد الصفح اللى بامسحها على ليستة الصفح اللى باراقبها',
@@ -323,15 +325,16 @@ $messages = array(
 'tog-previewontop' => 'بين الپروڤه قبل علبة التعديل',
 'tog-previewonfirst' => 'بين البروفة عند أول تعديل',
 'tog-nocache' => 'عطّل تخزين البراوزر للصفحه',
-'tog-enotifwatchlistpages' => 'ابعت لى ايميل لما تتغير صفحه فى لستة الصفحات اللى باراقبها',
+'tog-enotifwatchlistpages' => '
+ابعت لى ايميل لما تتغير صفحه فى لستة الصفحات اللى باراقبها',
 'tog-enotifusertalkpages' => 'ابعتلى ايميل لما صفحة مناقشتى تتغيير',
-'tog-enotifminoredits' => 'ابعتلى ايميل للتعديلات الصغيره للصفحات',
+'tog-enotifminoredits' => 'ابعتلى ايميل  عن التعديلات الصغيره للصفحات',
 'tog-enotifrevealaddr' => 'بين الايميل بتاعى فى ايميلات الاعلام',
 'tog-shownumberswatching' => 'بين عدد اليوزرز المراقبين',
 'tog-oldsig' => 'الامضا دلوقتى:',
 'tog-fancysig' => 'امضا خام (من غير لينك أوتوماتيك)',
-'tog-externaleditor' => 'استعÙ\85Ù\84 Ù\85حرر Ø®Ø§Ø±Ø¬Ù\89 Ø§Ù\81تراضÙ\8aا',
-'tog-externaldiff' => 'استعÙ\85Ù\84 Ù\81رÙ\82 Ø®Ø§Ø±Ø¬Ù\89 Ø§Ù\81تراضÙ\8aا',
+'tog-externaleditor' => 'استخدÙ\85 Ù\85حرر Ø®Ø§Ø±Ø¬Ù\89 Ø¨Ø´Ù\83Ù\84 Ø§Ù\81تراضÙ\89 (Ù\84Ù\84خبرا Ø¨Ø³Ø\8c Ù\8aحتاج Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø®Ø§ØµØ© Ø¹Ù\84Ù\89 Ù\83Ù\88Ù\85بÙ\8aÙ\88ترÙ\83) ([//www.mediawiki.org/wiki/Manual:External_editors Ù\84Ù\85زÙ\8aد Ù\85Ù\86 Ø§Ù\84Ù\85عÙ\84Ù\88Ù\85ات].)',
+'tog-externaldiff' => 'استخدÙ\85 Ù\81رÙ\82 Ø®Ø§Ø±Ø¬Ù\89 Ø¨Ø´Ù\83Ù\84 Ø§Ù\81تراضÙ\89 (Ù\84Ù\84خبرا Ø¨Ø³Ø\8c Ù\8aحتاج Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø®Ø§ØµØ© Ø¹Ù\84Ù\89 Ù\83Ù\88Ù\85بÙ\8aÙ\88ترÙ\83) ([//www.mediawiki.org/wiki/Manual:External_editors Ù\84Ù\85عÙ\84Ù\88Ù\85ات Ø§Ù\83تر].)',
 'tog-showjumplinks' => 'خلى وصلات "روح لـ" تكون شغالة.',
 'tog-uselivepreview' => 'استخدم البروفة السريعة (جافاسكريبت) (تجريبي)',
 'tog-forceeditsummary' => 'نبهنى عند تدخيل ملخص للتعديل  فاضي',
@@ -433,8 +436,8 @@ $messages = array(
 'newwindow' => '(بتفتح ويندو جديده)',
 'cancel' => 'كانسل',
 'moredotdotdot' => 'اكتر...',
-'mypage' => 'صفحتى',
-'mytalk' => 'Ù\85Ù\86اÙ\82شاتÙ\89',
+'mypage' => 'صفحه',
+'mytalk' => 'Ù\83Ù\84اÙ\85',
 'anontalk' => 'المناقشة مع عنوان الأيبى دا',
 'navigation' => 'استكشاف',
 'and' => '&#32;و',
@@ -682,9 +685,6 @@ $2',
 
 تقدر تكمل استعمال {{SITENAME}} على انك مجهول، أو <span class='plainlinks'>[$1 الدخول مرة تانيه]</span> بنفس الاسم أو باسم تاني.
 ممكن تشوف بعض الصفحات  كأنك متسجل ، و دا علشان استعمال الصفحات المتخبية فى المتصفح بتاعك.",
-'welcomecreation' => '== اهلاً و سهلا يا $1! ==
-اتفتحلك حساب.
-ما تنساش تغير [[Special:Preferences|تفضيلاتك في {{SITENAME}}]].',
 'yourname' => 'اليوزرنيم:',
 'yourpassword' => 'الباسوورد:',
 'yourpasswordagain' => 'اكتب الباسورد تاني:',
@@ -2107,11 +2107,7 @@ PICT # misc.
 
 'enotif_mailer' => 'نظام {{SITENAME}} البريدى للإخطارات',
 'enotif_reset' => 'علم على كل الصفحات كأنك خلاص زرتها',
-'enotif_newpagetext' => 'دى صفحه جديده.',
 'enotif_impersonal_salutation' => 'يوزر {{SITENAME}}',
-'changed' => 'اتغيرت',
-'created' => 'إتنشأت',
-'enotif_subject' => 'صفحة {{SITENAME}} $PAGETITLE تم $CHANGEDORCREATED بواسطة $PAGEEDITOR',
 'enotif_lastvisited' => 'شوف $1 لمراجعة كل التغييرات اللى حصلت من أخر زيارة ليك.',
 'enotif_lastdiff' => 'شوف $1 علشان تبص على التغيير دا.',
 'enotif_anon_editor' => 'يوزر مش معروف $1',
index 8935082..cd09835 100644 (file)
@@ -589,7 +589,8 @@ $2',
 
 আপুনি বেনামী ভাবেও {{SITENAME}} ব্যৱহাৰ কৰিব পাৰে, অথবা আকৌ সেই একে বা বেলেগ নামেৰে <span class='plainlinks'>[$1 প্ৰৱেশ]</span> কৰিব পাৰে।
 মন কৰিব যে যেতিয়ালৈকে আপোনাৰ ব্ৰাউজাৰৰ অস্থায়ী-স্মৃতি (cache memory) খালী নকৰে, তেতিয়ালৈকে কিছুমান পৃষ্ঠাত আপুনি প্ৰৱেশ কৰা বুলি দেখুৱাই থাকিব পাৰে।",
-'welcomecreation' => '== আদৰিছোঁ, $1! ==
+'welcomeuser' => 'আদৰিছোঁ, $1!',
+'welcomecreation-msg' => '== আদৰিছোঁ, $1! ==
 আপোনাৰ সদস্যভুক্তি হৈ গ’ল ।
 [[Special:Preferences|{{SITENAME}}ৰ পছন্দসমূহ]]ত আপোনাৰ পছন্দমতে ব্যক্তিগতকৰণ কৰি ল’বলৈ নাপাহৰে যেন ।',
 'yourname' => 'সদস্যনাম:',
@@ -2234,11 +2235,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 
 'enotif_mailer' => '{{SITENAME}} জাননী ই-পত্ৰ প্ৰেৰক',
 'enotif_reset' => 'সকলো পৃষ্ঠা পৰিদৰ্শিত বুলি চিহ্নিত কৰক',
-'enotif_newpagetext' => 'এইখন এখন নতুন পৃষ্ঠা।',
 'enotif_impersonal_salutation' => '{{SITENAME}} সদস্য',
-'changed' => 'সলোৱা হৈছে',
-'created' => 'সৃষ্টি কৰা হ’ল',
-'enotif_subject' => '{{SITENAME}}ৰ $PAGETITLE পৃষ্ঠাখন $PAGEEDITORৰ দ্বাৰা $CHANGEDORCREATED',
 'enotif_lastvisited' => 'আপোনাৰ শেষ পৰিদৰ্শনৰ পিছত হোৱা সকলো সালসলনিৰ বাবে $1 চাওক ।',
 'enotif_lastdiff' => 'এই পৰিৱৰ্তনটো চাবৰ বাবে $1 চাওক ।',
 'enotif_anon_editor' => 'বেনামী সদস্য $1',
@@ -3084,6 +3081,7 @@ $1',
 'hours' => '{{PLURAL:$1|$1 ঘন্টা|$1 ঘন্টা}}',
 'days' => '{{PLURAL:$1|$1 দিন|$1 দিন}}',
 'ago' => '$1 আগেয়ে',
+'just-now' => 'এইমাত্ৰ',
 
 # Bad image list
 'bad_image_list' => 'The format is as follows:
index ef3c8dd..0b49e89 100644 (file)
@@ -225,6 +225,7 @@ $messages = array(
 'namespaces' => 'Espacios de nome',
 'variants' => 'Variantes',
 
+'navigation-heading' => 'Menú de navegación',
 'errorpagetitle' => 'Error',
 'returnto' => 'Tornar a $1.',
 'tagline' => 'De {{SITENAME}}',
@@ -470,8 +471,8 @@ L'alministrador que lu bloquió dio esti motivu: «$3».",
 
 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.",
-'welcomecreation' => "== ¡Bienllegáu, $1! ==
-Creóse la to cuenta.
+'welcomeuser' => '¡Afayati, $1!',
+'welcomecreation-msg' => "Creóse la to cuenta.
 Nun t'escaezas d'escoyer les tos [[Special:Preferences|preferencies de {{SITENAME}}]].",
 'yourname' => "Nome d'usuariu:",
 'yourpassword' => 'Clave:',
@@ -1639,6 +1640,7 @@ Si'l problema persiste, contauta con un [[Special:ListUsers/sysop|alministrador]
 'backend-fail-notsame' => 'Yá esiste un ficheru non idénticu en $1.',
 'backend-fail-invalidpath' => "$1 nun ye una ruta d'almacenamientu válida.",
 'backend-fail-delete' => 'Nun se pudo desaniciar el ficheru $1.',
+'backend-fail-describe' => 'Nun se pudieron camudar los metadatos del ficheru "$1".',
 'backend-fail-alreadyexists' => 'El ficheru $1 yá esiste.',
 'backend-fail-store' => 'Nun se pudo guardar el ficheru $1 en $2.',
 'backend-fail-copy' => 'Nun se pudo copiar el ficheru $1 como $2.',
@@ -2144,24 +2146,27 @@ Si más tarde quies quitala de la llista de vixilancia calca en "Dexar de vixila
 
 'enotif_mailer' => 'Notificación de corréu de {{SITENAME}}',
 'enotif_reset' => 'Marcar toles páxines visitaes',
-'enotif_newpagetext' => 'Esta ye una páxina nueva.',
 'enotif_impersonal_salutation' => 'Usuariu de {{SITENAME}}',
-'changed' => 'camudada',
-'created' => 'creada',
-'enotif_subject' => 'La páxina de {{SITENAME}} $PAGETITLE foi $CHANGEDORCREATED por $PAGEEDITOR',
+'enotif_subject_deleted' => '{{GENDER:$2|$2}} desanició la páxina «$1» de {{SITENAME}}',
+'enotif_subject_created' => '{{GENDER:$2|$2}} creó la páxina «$1» de {{SITENAME}}',
+'enotif_subject_moved' => '{{GENDER:$2|$2}} treslladó la páxina «$1» de {{SITENAME}}',
+'enotif_subject_restored' => '{{GENDER:$2|$2}} restauró la páxina «$1» de {{SITENAME}}',
+'enotif_subject_changed' => '{{GENDER:$2|$2}} camudó la páxina «$1» de {{SITENAME}}',
+'enotif_body_intro_deleted' => '{{GENDER:$2|$2}} desanició la páxina «$1» de {{SITENAME}} el $PAGEEDITDATE, consulta $3 pa ver la revisión actual.',
+'enotif_body_intro_created' => '{{GENDER:$2|$2}} creó la páxina «$1» de {{SITENAME}} el $PAGEEDITDATE, consulta $3 pa ver la revisión actual.',
+'enotif_body_intro_moved' => '{{GENDER:$2|$2}} treslladó la páxina «$1» de {{SITENAME}} el $PAGEEDITDATE, consulta $3 pa ver la revisión actual.',
+'enotif_body_intro_restored' => '{{GENDER:$2|$2}} restauró la páxina «$1» de {{SITENAME}} el $PAGEEDITDATE, consulta $3 pa ver la revisión actual.',
+'enotif_body_intro_changed' => '{{GENDER:$2|$2}} camudó la páxina «$1» de {{SITENAME}} el $PAGEEDITDATE, consulta $3 pa ver la revisión actual.',
 'enotif_lastvisited' => 'Mira en $1 pa ver tolos cambios dende la cabera visita.',
 'enotif_lastdiff' => 'Mira en $1 pa ver esti cambéu.',
 'enotif_anon_editor' => 'usuariu anónimu $1',
 'enotif_body' => 'Estimáu $WATCHINGUSERNAME,
 
-
-La páxina de {{SITENAME}} $PAGETITLE foi $CHANGEDORCREATED el $PAGEEDITDATE por $PAGEEDITOR, mira $PAGETITLE_URL pa ver la versión actual.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Resume del editor: $PAGESUMMARY $PAGEMINOREDIT
 
-Ponte\'n contautu col editor:
+Ponte en contautu col editor:
 corréu: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
@@ -2959,6 +2964,8 @@ Probablemente tea causao por un enllaz a un sitiu esternu de la llista prieta.',
 'markedaspatrollederror' => 'Nun se pue marcar como supervisada',
 'markedaspatrollederrortext' => 'Necesites conseñar una revisión pa marcala como supervisada.',
 'markedaspatrollederror-noautopatrol' => 'Nun tienes permisu pa marcar los cambios propios como supervisaos.',
+'markedaspatrollednotify' => 'Esti cambiu en $1 marcóse como revisáu.',
+'markedaspatrollederrornotify' => "Falló l'aición de marcar como revisáu.",
 
 # Patrol log
 'patrol-log-page' => 'Rexistru de supervisión',
@@ -3779,9 +3786,9 @@ Les imáxenes amuésense a resolución completa; les demás tribes d'archivu exe
 'logentry-move-move_redir-noredirect' => '$1 treslladó la páxina "$3" a "$4" sobre una redireición ensin dexar una redireición',
 'logentry-patrol-patrol' => '$1 marcó la revisión $4 de la páxina "$3" como patrullada',
 'logentry-patrol-patrol-auto' => '$1 marcó automaticamente la revisión $4 de la páxina "$3" como patrullada',
-'logentry-newusers-newusers' => "$1 creó una cuenta d'usuariu",
-'logentry-newusers-create' => "$1 creó una cuenta d'usuariu",
-'logentry-newusers-create2' => "$1 creó una cuenta d'usuariu $3",
+'logentry-newusers-newusers' => "Se creó la cuenta d'usuariu $1",
+'logentry-newusers-create' => "Se creó la cuenta d'usuariu $1",
+'logentry-newusers-create2' => "$1 creó la cuenta d'usuariu $3",
 'logentry-newusers-autocreate' => 'La cuenta $1 se creó automáticamente',
 'newuserlog-byemail' => 'conseña unviada per corréu electrónicu',
 
@@ -3857,6 +3864,4 @@ D\'otra miente, pues usar el formulariu cenciellu d\'abaxo. El to comentariu apa
 'duration-centuries' => '$1 {{PLURAL:$1|sieglu|sieglos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|mileniu|milenios}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'alderique',
 );
index 532fd1c..e8c1654 100644 (file)
@@ -444,8 +444,6 @@ Batdume : ''$2''.",
 # Login and logout pages
 'logouttext' => 'Rin daletoe til solgluyanaf.
 Rin va {{SITENAME}} yoltiskon ware rofavel oke, bifoton kan ar yolt, va int toldogluyal.',
-'welcomecreation' => '<h2>Til drumbaf, $1!</h2><p>Rinaf favesikpata su zo redur.
-Me vulkul da rupeson va "Lodamaceem" bu va intaf {{SITENAME}} rotuilkal.',
 'yourname' => 'Rinaf favesikyolt',
 'yourpassword' => 'Rinaf remravlem',
 'yourpasswordagain' => 'Va rinaf remravlem tolon bazel',
@@ -1492,11 +1490,7 @@ Ta sulara va batu bu div rinafi suzdasiki, koe grablexo va « Mea suzdá » vule
 
 'enotif_mailer' => '{{SITENAME}} Kowalzesi Staksasiki',
 'enotif_reset' => 'Va kotu woranu bu tcalar',
-'enotif_newpagetext' => 'Batcoba tir warzafu bu',
 'enotif_impersonal_salutation' => '{{SITENAME}} favesik',
-'changed' => 'betayan',
-'created' => 'reduyun',
-'enotif_subject' => '{{SITENAME}} bu $PAGETITLE su zo $CHANGEDORCREATED gan $PAGEEDITOR',
 'enotif_lastvisited' => 'Va $1 disukel ta da va kot betaks mali ironokafa worara wil.',
 'enotif_lastdiff' => 'Ta wira va bat betaks va $1 disukel.',
 'enotif_anon_editor' => '$1 yoltiskaf favesik',
index 5460386..1fbf8f1 100644 (file)
@@ -10,6 +10,7 @@
  * @author Cekli829
  * @author Don Alessandro
  * @author E THP
+ * @author Ebrahimi-amir
  * @author Emperyan
  * @author Erdemaslancan
  * @author Gulmammad
@@ -475,9 +476,6 @@ Göstərilən səbəb: "\'\'$2\'\'".',
 'logouttext' => "'''Sistemdən çıxdınız.'''
 
 Siz {{SITENAME}} saytını anonim olaraq istifadə etməyə davam edə bilər və ya eyni, yaxud başqa istifadəçi adı ilə <span class='plainlinks'>[$1 yenidən daxil ola]</span> bilərsiniz. Veb-brauzerin keş yaddaşını təmizləyənədək bəzi səhifələr hələ də sistemdə imişsiniz kimi görünə bilər.",
-'welcomecreation' => '== $1, xoş gəlmişsiniz! ==
-Hesabınız yaradıldı.
-[[Special:Preferences|{{SITENAME}} nizamlamalarınızı]] dəyişdirməyi unutmayın.',
 'yourname' => 'İstifadəçi adı',
 'yourpassword' => 'Parol:',
 'yourpasswordagain' => 'Parolu təkrar yazın:',
@@ -1741,11 +1739,7 @@ Fərdi hüquqlar haqqında əlavə məlumatı [[{{MediaWiki:Listgrouprights-help
 
 'enotif_mailer' => '{{SITENAME}} Bildiriş Xidməti',
 'enotif_reset' => 'Baxılmış bütün səhifələri işarələ.',
-'enotif_newpagetext' => 'Bu səhifə yeni səhifədir.',
 'enotif_impersonal_salutation' => '{{SITENAME}} istifadəçisi',
-'changed' => 'dəyişdi',
-'created' => 'yaradıldı',
-'enotif_subject' => '{{SITENAME}} saytındakı $PAGETITLE səhifəsi $PAGEEDITOR tərəfindən $CHANGEDORCREATED',
 'enotif_lastvisited' => 'Sonuncu ziyarətinizdən indiyədək olan bütün dəyişiklikləri görmək üçün baxın: $1.',
 'enotif_lastdiff' => 'Bu dəyişikliyi görmək üçün $1 səhifəsinə baxın.',
 'enotif_anon_editor' => 'qeydiyyatsız istifadəçi $1',
@@ -2329,9 +2323,16 @@ Zəhmət olmasa başqa ad seçin.',
 
 # Info page
 'pageinfo-title' => '"$1" üçün məlumat',
+'pageinfo-header-basic' => 'Əsas məlumatlar',
 'pageinfo-header-edits' => 'Redaktələr',
+'pageinfo-header-restrictions' => 'Səhifə mühafizəsi',
+'pageinfo-header-properties' => 'Səhifə xüsusiyyətləri',
 'pageinfo-views' => 'Göstərmə səhifəsi',
 'pageinfo-watchers' => 'Baxış sayı',
+'pageinfo-firstuser' => 'Səhifəni yaradan',
+'pageinfo-firsttime' => 'Səhifənin yaranma tarixi',
+'pageinfo-lastuser' => 'Sonuncu redaktor',
+'pageinfo-lasttime' => 'Sonuncu redaktənin tarixi',
 'pageinfo-edits' => 'Redaktələrin sayı',
 'pageinfo-authors' => 'Fərqli müəlliflərin sayı',
 
diff --git a/languages/messages/MessagesAzb.php b/languages/messages/MessagesAzb.php
new file mode 100644 (file)
index 0000000..8e3dbb8
--- /dev/null
@@ -0,0 +1,2096 @@
+<?php
+/** South Azerbaijani (تورکجه)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Amir a57
+ * @author Arjanizary
+ * @author Calak
+ * @author E THP
+ * @author Ebrahimi-amir
+ * @author Erdemaslancan
+ * @author Mousa
+ */
+
+$fallback = 'fa';
+$rtl = true;
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'باغلانتی‌لارین آلتینی خطله:',
+'tog-justify' => 'متنی صحیفه بویو پایلا',
+'tog-hideminor' => 'سون دییشیکلیکلرده کیچیک‌لری گیزلت',
+'tog-hidepatrolled' => 'نظارتلنمیش دَییشیکلیکلری سون دییشیکلیکلرده گیزلت',
+'tog-newpageshidepatrolled' => 'نظارتلنمیش صحیفه‌لری یئنی صحیفه‌لر سیاهی‌سیندان گیزلت',
+'tog-extendwatchlist' => 'ایزله‌دیکلری، بوتون دیشیکلیکلری گؤسترمک اوچون گئنیشلندیر',
+'tog-usenewrc' => 'دَییشیکلیکلری سون دَییشیکلیکلر صحیفه‌سینده ایزله‌دیکلر صحیفه‌سینده گروپ‌لا (جاوااسکریپت لازیم‌دیر)',
+'tog-numberheadings' => 'باشلیق‌لاری اوتوماتیک نومره‌له',
+'tog-showtoolbar' => 'دَییشدیرمه آراج چوبوغونو گؤستر (جاوااسکریپت لازیم‌دیر)',
+'tog-editondblclick' => 'صحیفه‌‌لری ایکی کلیکله دَییشدیر (جاوااسکریپت لازیم‌دیر)',
+'tog-editsection' => '[دَییشدیر] باغلانتی‌سیلا بؤلوم دَییشدیرمه‌سینه ایجازه وئر',
+'tog-editsectiononrightclick' => 'بؤلوم‌لرین دیشدیرمه‌سینی، باشلیقلارین اوزرینده ساغ‌کلیک ائتمک‌له ایجازه وئر (جاوااسکریپت لازیم‌دیر)',
+'tog-showtoc' => 'ایچینده‌کیلر جدولینی گؤستر (۳-دن آرتیق باشلیقلاری اولان صحیفه‌‌لرده)',
+'tog-rememberpassword' => 'منیم گیریشیمی بو بیلگی‌سایاردا یاددا ساخلا (چوخو {{PLURAL:$1|بیر گونه|$1 گونه}} کیمی)',
+'tog-watchcreations' => 'ياراتدیغیم صحیفه‌‌لری و يوکله‌دیگیم فايل‌لاری ایزله‌مه‌لریمه آرتیر',
+'tog-watchdefault' => 'دَییشدیردیگیم صحیفه‌‌لری و فايل‌لاری ایزله‌دیکلریمه آرتیر',
+'tog-watchmoves' => 'داشیدیغیم صحیفه‌‌لری و فايل‌لاری ایزله‌دیکلریمه آرتیر',
+'tog-watchdeletion' => 'سیلدیگیم صحیفه‌‌لری و فايل‌لاری ایزله‌دیکلریمه آرتیر',
+'tog-minordefault' => 'دیفالت اولاراق بوتون دَییشدیر‌مه‌لریمی کیچیک دَییشدیر کیمی نیشانلا',
+'tog-previewontop' => 'اؤن‌گؤستریشی يازماق قوتوسوندان قاباق گؤستر',
+'tog-previewonfirst' => 'ایلک دَییشدیرمه‌ده اؤن‌گؤستریشی گؤستر',
+'tog-nocache' => 'براوزرین کَش ائتمگینی ایشلدن سال',
+'tog-enotifwatchlistpages' => 'ایزله‌دیکلریم‌ده اولان صحیفه یوخسا فایل دَییشدیریلنده، منه ایمیل گؤندر',
+'tog-enotifusertalkpages' => 'دانیشیق صحیفه‌‌م دَییشدیریلنده منه ایمیل گؤندر',
+'tog-enotifminoredits' => 'صحیفه‌لرده و فایل‌لاردا کیچیک دَییشیکلیکلر اولسا دا منه ایمیل گؤندر',
+'tog-enotifrevealaddr' => 'منیم ایمیل آدرسیمی خبر وئرمه ایمیل‌لرینده گؤستر',
+'tog-shownumberswatching' => 'ایزله‌ين ایستیفاده‌چیلرین سایینی گؤستر',
+'tog-oldsig' => 'ایندی‌کی ایمضا:',
+'tog-fancysig' => 'ویکی متن کیمی ایمضا (اوتوماتیک باغلانتی‌سیز)',
+'tog-externaleditor' => 'دَییشدیرمک اوچون ائشیک یازیلیم ایشلد (یالنیز چوخ باشارانلار اوچون، بیلگی‌سایارینیزدا مخصوص تنظیملر لازیم‌دیر. [//www.mediawiki.org/wiki/Manual:External_editors آرتیق بیلگیلر])',
+'tog-externaldiff' => 'موقاییسه ائتمک اوچون ائشیک یازیلیم ایشلد (یالنیز چوخ باشارانلار اوچون، بیلگی‌سایارینیزدا مخصوص تنظیملر لازیم‌دیر. [//www.mediawiki.org/wiki/Manual:External_editors آرتیق بیلگیلر])',
+'tog-showjumplinks' => '«آتلان:» یاردیم باغلانتیلارینی آچ',
+'tog-uselivepreview' => 'دیری اؤن‌گؤستریش ایشلد (جاوااسکریپت لازیم‌دیر)(تست مرحله‌سینده)',
+'tog-forceeditsummary' => 'دَییشیکلیک قیساسی بوش قالاندا منی بیلدیر',
+'tog-watchlisthideown' => 'منیم دَییشیکلیکلریمی ایزله‌دیکلردن گیزلت',
+'tog-watchlisthidebots' => 'بوت دَییشیکلیکلرینی ایزله‌دیکلردن گیزلت',
+'tog-watchlisthideminor' => 'کیچیک دَییشیکلیکلری ایزله‌دیکلردن گیزلت',
+'tog-watchlisthideliu' => 'قئيدیاتلی ایستیفاده‌چیلرین رئداکته‌لرینی ایزله‌مه سياهیسیندا گیزلت',
+'tog-watchlisthideanons' => 'قئيدیاتدان کئچمه‌میش ایستیفاده‌چیلرین رئداکته‌لرینی ایزله‌مه سياهیسیندا گیزلت',
+'tog-watchlisthidepatrolled' => 'يوخلانیلمیش رئداکته‌لری ایزله‌مه سياهیسیندا گیزلت',
+'tog-ccmeonemails' => 'گؤندردیگیم میل-مکتوبون نوسخه‌لرینی منه گؤندر',
+'tog-diffonly' => 'وئرسیيالارین موقايیسه‌سی زامانی صحیفه‌‌نین مظمونونو گؤسترمه',
+'tog-showhiddencats' => 'گیزلی کاتئقوریيالاری گؤستر',
+'tog-norollbackdiff' => 'گئری قايتاردیقدان سونرا، ائدیلمیش ديَشیکیک‌لری ديَشیکلیک‌لر سياهیسیندان سیل',
+
+'underline-always' => 'همیشه',
+'underline-never' => 'هئچ واخت',
+'underline-default' => 'دیفالت قابیق یوخسا براوزر',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'دَییشدیرمه قوتوطونون فونت نؤوعو:',
+'editfont-default' => 'براوزر دیفالتی',
+'editfont-monospace' => 'ثابیت آرالی فونت',
+'editfont-sansserif' => 'بوجاق‌سیز فونت',
+'editfont-serif' => 'بوجاق‌لی فونت',
+
+# Dates
+'sunday' => 'سود گونو',
+'monday' => 'دوزگونو',
+'tuesday' => 'آرا گون',
+'wednesday' => 'اوْدگونو',
+'thursday' => 'سوگونو',
+'friday' => 'آینی‌گون',
+'saturday' => 'يئل‌گونو',
+'sun' => 'یکشنبه',
+'mon' => 'دوشنبه',
+'tue' => 'سه‌شنبه',
+'wed' => 'چهارشنبه',
+'thu' => 'پنج‌شنبه',
+'fri' => 'جمعه',
+'sat' => 'شنبه',
+'january' => 'ژانویه',
+'february' => 'فئوریه',
+'march' => 'مارس',
+'april' => 'آوریل',
+'may_long' => 'مئی',
+'june' => 'ژوئن',
+'july' => 'ژولای',
+'august' => 'آقوست',
+'september' => 'سئپتامبر',
+'october' => 'اوکتوبر',
+'november' => 'نووامبر',
+'december' => 'دئسامبر',
+'january-gen' => 'ژانویه',
+'february-gen' => 'فوریه',
+'march-gen' => 'مارس',
+'april-gen' => 'آوریل',
+'may-gen' => 'مِی',
+'june-gen' => 'ژوئن',
+'july-gen' => 'جولای',
+'august-gen' => 'آقوست',
+'september-gen' => 'سئپتامبر',
+'october-gen' => 'اوکتوبر',
+'november-gen' => 'نووامبر',
+'december-gen' => 'دئسامبر',
+'jan' => 'ژانویه',
+'feb' => 'فئوریه',
+'mar' => 'مارس',
+'apr' => 'آوریل',
+'may' => 'مئی',
+'jun' => 'ژوئن',
+'jul' => 'ژولای',
+'aug' => 'آقوست',
+'sep' => 'سئپتامبر',
+'oct' => 'اوکتوبر',
+'nov' => 'نووامبر',
+'dec' => 'دئسامبر',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|بؤلمه|بؤلمه‌لر}}',
+'category_header' => '«$1» بؤلمه‌سین‌ده‌کی مقاله‌لر',
+'subcategories' => 'آلت بؤلمه‌لر',
+'category-media-header' => '«$1» بؤلمه‌سینده مئدیا',
+'category-empty' => "''بو بؤلمه‌نین ایندی فایل یوخسا مئدیاسی یوخدور.''",
+'hidden-categories' => '{{PLURAL:$1|گیزلی بؤلمه|گیزلی بؤلمه‌لر}}',
+'hidden-category-category' => 'گیزلی بؤلمه‌لر',
+'category-subcat-count' => 'بو بؤلمه‌ده {{PLURAL:$2|یالنیز|}} آشاغیداکی {{PLURAL:$1|بیر|$1}} آلت‌بؤلمه وار؛ بو بؤلمه‌نین جمعاً $2 آلت‌بؤلمه‌سی وار.',
+'category-subcat-count-limited' => 'بو بؤلمه‌ده آشاغیداکی {{PLURAL:$1|آلت‌بؤلمه|$1 آلت‌بؤلمه}} واردیر.',
+'category-article-count' => 'بو بؤلمه‌ده {{PLURAL:$2|یالنیز|}} آشاغیداکی {{PLURAL:$1|بیر|$1}} صحیفه وار؛ بو بؤلمه‌نین جمعاً $2 صحیفه‌سی وار.',
+'category-article-count-limited' => 'بو بؤلمه‌ده، آشاغیداکی {{PLURAL:$1|یارپاق|$1 یارپاق}} واردیر.',
+'category-file-count' => 'بو بؤلمه‌ده {{PLURAL:$2|یالنیز|}} آشاغیداکی {{PLURAL:$1|بیر|$1}} فایل وار؛ بو بؤلمه‌نین جمعاً $2 فایلی وار.',
+'category-file-count-limited' => 'بؤلمه‌ده، بو {{PLURAL:$1|فایل|$1 فایل}} واردیر.',
+'listingcontinuesabbrev' => '(داوام)',
+'index-category' => 'ایندئکس‌لشدیریلمیش یارپاقلار',
+'noindex-category' => 'ایندئکس‌لشدیریلمه‌ین یارپاقلار',
+'broken-file-category' => 'فایل‌لارا قیریلمیش باغلانتیلاری اولان یارپاقلار',
+
+'about' => 'گؤره',
+'article' => 'ایچری‌لی یارپاق',
+'newwindow' => '(یئنی پنجره‌ده آچیلیر)',
+'cancel' => 'لغو ائت',
+'moredotdotdot' => 'داها...',
+'mypage' => 'مقاله',
+'mytalk' => 'دانیشیق',
+'anontalk' => 'بو آی‌پی آدرسینه دانیشیق',
+'navigation' => 'دولانماق',
+'and' => '&#32;و',
+
+# Cologne Blue skin
+'qbfind' => 'تاپ',
+'qbbrowse' => 'گؤزدن گئچید',
+'qbedit' => 'دَيیشدیر',
+'qbpageoptions' => 'بو صحیفه‌‌',
+'qbmyoptions' => 'منیم صحیفه‌‌لریم',
+'qbspecialpages' => 'اؤزل صحیفه‌لر',
+'faq' => 'چوخ سوروشولان سواللار',
+'faqpage' => 'Project:چوخلو سوروشولان سورغولار',
+
+# Vector skin
+'vector-action-addsection' => 'قونو آرتیر',
+'vector-action-delete' => 'سیل',
+'vector-action-move' => 'آدینی ديَیشدیر',
+'vector-action-protect' => 'قورو',
+'vector-action-undelete' => 'سیلمگی قایتار',
+'vector-action-unprotect' => 'قوروماغی دَییشدیر',
+'vector-simplesearch-preference' => 'ساده‌لشدیریلمیش آختاریش چوبوغو (یالنیز Vector دَری‌سینده)',
+'vector-view-create' => 'یارات',
+'vector-view-edit' => 'دَییشدیر',
+'vector-view-history' => 'گئچمیشه باخ',
+'vector-view-view' => 'اوخو',
+'vector-view-viewsource' => 'قایناغا باخ',
+'actions' => 'ایشلر',
+'namespaces' => 'آدلار فضاسی',
+'variants' => 'واریانتلار',
+
+'navigation-heading' => 'ناویگاسيون مئنوسو',
+'errorpagetitle' => 'خطا',
+'returnto' => '$1-ه/ا قاییت',
+'tagline' => '{{SITENAME}} سایتیندان',
+'help' => 'یاردیم',
+'search' => 'آختار',
+'searchbutton' => 'آختار',
+'go' => 'کئت',
+'searcharticle' => 'گئت',
+'history' => 'صحیفه‌‌نین گئچمیشی',
+'history_short' => 'گئچمیش',
+'updatedmarker' => 'سون باخیشیمدان بویانا، یئنی‌لشیب‌دیر',
+'printableversion' => 'چاپ ائتمه‌لی نوسخه',
+'permalink' => 'قالان باغلانتی',
+'print' => 'یازدیر',
+'view' => 'باخ',
+'edit' => 'دَییشدیر',
+'create' => 'یارات',
+'editthispage' => 'بو صحیفه‌‌نی دَییش',
+'create-this-page' => 'بو صحیفه‌‌نی يارات',
+'delete' => 'سیل',
+'deletethispage' => 'بو صحیفه‌‌نی سیل',
+'undelete_short' => '{{PLURAL:$1|بیر دَییشیکلیگی|$1 دَییشیکلیگی}} برپا ائت',
+'viewdeleted_short' => '{{PLURAL:$1|بیر|$1}} سیلینمیش دَییشیکلیگی گؤستر',
+'protect' => 'موحافظه‌‌ ائت',
+'protect_change' => 'ديَیش',
+'protectthispage' => 'بو صحیفه‌‌نی موحافظه‌‌ ائت',
+'unprotect' => 'موحافظه‌‌نی کنارلاشدیر',
+'unprotectthispage' => 'بو یارپاغین قوروماسینی دَییشدیر',
+'newpage' => 'يئنی صحیفه‌‌',
+'talkpage' => 'بو یارپاغا گؤره دانیشیق آپارین',
+'talkpagelinktext' => 'دانیشیق',
+'specialpage' => 'اؤزل صحیفه',
+'personaltools' => 'شخصی آراجلار',
+'postcomment' => 'يئنی بؤلوم',
+'articlepage' => 'مقاله یه باخین',
+'talk' => 'دانیشیق',
+'views' => 'گؤرونوشلر',
+'toolbox' => 'آراجلار قوتوسو',
+'userpage' => 'ایستیفاده‌چی صحیفه‌‌سینی گؤستر',
+'projectpage' => 'پروژه صحیفه‌سینه باخین',
+'imagepage' => 'فایل صحیفه‌سینه باخین',
+'mediawikipage' => 'مئساژ صحیفه‌سینه باخین',
+'templatepage' => 'شابلون صحیفه‌سینه  باخین',
+'viewhelppage' => 'یاردیم صحیفه‌سینه باخین',
+'categorypage' => 'بؤلمه صحیفه‌‌سینی گؤستر',
+'viewtalkpage' => 'دانیشیغا باخین',
+'otherlanguages' => 'آیری دیللرده',
+'redirectedfrom' => '($1 صحیفه‌‌سیندن يؤنلن‌دیریلمیش‌دیر)',
+'redirectpagesub' => 'یوللاندیرما صحیفه‌سی',
+'lastmodifiedat' => 'بۇ صحیفه‌‌ سوْنونجو دفعه‌‌ $1، $2 تاریخینده دَییشیلیب.',
+'viewcount' => 'بو یارپاق {{PLURAL:$1|بیر|$1}} دفعه گؤرونوب‌دور.',
+'protectedpage' => 'قورونموش یارپاق',
+'jumpto' => 'آتلان:',
+'jumptonavigation' => 'دولانماق',
+'jumptosearch' => 'آختار',
+'view-pool-error' => 'باغیشلایین، ایندی خیدمت‌چیلر آرتیق یوک آلتیندادیلار.
+چوخلو ایشلدنلر بو یارپاغی گؤرمک ایسته‌ییرلر.
+لوطفاً یئنی‌دن بو یارپاغا ال تاپماغا چالیشماقدان اؤنجه، بیر آز دؤزون.
+
+$1',
+'pool-timeout' => 'قیفیلا دؤزمک واختی قورتاردی',
+'pool-queuefull' => 'چیخاریش صحیفه‌‌سی دولودور',
+'pool-errorunknown' => 'تانینمامیش خطا',
+
+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
+'aboutsite' => '{{SITENAME}}-ا گؤره',
+'aboutpage' => 'Project:حاقیندا',
+'copyright' => 'ایچینده‌کیلر $1 لیسانسی احاطه‌سینده‌دیلر.',
+'copyrightpage' => '{{ns:project}}:کوپی حاقی',
+'currentevents' => 'ایندیکی اولایلار',
+'currentevents-url' => 'Project:ایندیکی اولایلار',
+'disclaimers' => 'مسئولیتدن ایمتیناع',
+'disclaimerpage' => 'Project:مسولیتدن ایمتیناع',
+'edithelp' => 'ديَیشیکلیک‌لر اوچون یاردیم',
+'edithelppage' => 'Help:دَییشدیرمه',
+'helppage' => 'Help:ایچینده‌کیلر',
+'mainpage' => 'آنا صحیفه',
+'mainpage-description' => 'آنا صحیفه',
+'policy-url' => 'Project:قایدالار',
+'portal' => 'کند مئيدانی',
+'portal-url' => 'Project: توپلوم پورتالی',
+'privacy' => 'گیزلیلیک سیاستی',
+'privacypage' => 'Project:گیزلیلیک سیاستی',
+
+'badaccess' => 'یول وئرمه خطاسی',
+'badaccess-group0' => 'ایسته‌دیگینیز ایشه ایجازه‌نیز یوخدور.',
+'badaccess-groups' => 'ایسته‌دیگینیز ایشین ایجازه‌سی، تکجه بو {{PLURAL:$2|گروپ|گروپلار}}داکی ایشلدنلره وئریلیب‌دیر: $1.',
+
+'versionrequired' => 'مدئدیاویکی یازیلیمینین $1 نوسخه‌سی لازیم‌دیر',
+'versionrequiredtext' => 'بو یارپاغی ایشلتدماغا، مئدیاویکی یازیلیمینین $1 نوسخه‌سی لازیم‌دیر.
+[[Special:Version|نوسخه یارپاغینا]] باخین.',
+
+'ok' => 'تامام',
+'retrievedfrom' => '«$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' => 'دَییش',
+'viewsourceold' => 'قایناقا باخ',
+'editlink' => 'دَییشدیر',
+'viewsourcelink' => 'قایناغا باخ',
+'editsectionhint' => 'بؤلومو دَییشدیر: $1',
+'toc' => 'ایچینده‌کی‌لر',
+'showtoc' => 'گؤستر',
+'hidetoc' => 'گیزلت',
+'collapsible-collapse' => 'گیزلت',
+'collapsible-expand' => 'گئنشتیرمه',
+'thisisdeleted' => '$1-نا باخ یا اونو قایتار؟',
+'viewdeleted' => '$1 گؤستریلسین؟',
+'restorelink' => '{{PLURAL:$1|بیر سیلینمیش دَییشیکلیک|$1 سیلینمیش دَییشیکلیکلر}}',
+'feedlinks' => 'بسلمه',
+'feed-invalid' => 'گئچرسیز آبونه کانال جورو.',
+'feed-unavailable' => 'سیندیکاسیا خطلری ال‌ده دئییل‌لر',
+'site-rss-feed' => '$1 آراس اس اوچون یئمک',
+'site-atom-feed' => '$1 آتومات بسله‌مه‌سی',
+'page-rss-feed' => '$1 آراس اس اوچون یئمک',
+'page-atom-feed' => '$1 آتوم فید',
+'red-link-title' => '$1 (صحیفه یوخدور)',
+'sort-descending' => 'آزالان سیرالاماق',
+'sort-ascending' => 'چوخالان سیرالاماق',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'مقاله',
+'nstab-user' => 'ایستیفاده‌چی صحیفه‌سی',
+'nstab-media' => 'مئدیا یارپاقی',
+'nstab-special' => 'اؤزل صحیفه',
+'nstab-project' => 'پروژه صحیفه‌سی',
+'nstab-image' => 'فایل',
+'nstab-mediawiki' => 'مئساژ',
+'nstab-template' => 'شابلون',
+'nstab-help' => 'یاردیم صحیفه‌سی',
+'nstab-category' => 'بؤلمه',
+
+# Main script and global functions
+'nosuchaction' => 'بو جور چالیشم مؤوجود دئيیل.',
+'nosuchactiontext' => 'URL-ده گؤستریلن ایش گئچرسیزدیر.
+اولا بیلر کی URL-ی یانلیش یازیب یوخسا یانلیش باغلانتی‌لا گلمیشسینیز.
+همده بو، {{SITENAME}} سایتی ایشلدن یازیلیمین خطاسینی گؤستره بیلر.',
+'nosuchspecialpage' => 'بئله اؤزل یارپاق یوخدور',
+'nospecialpagetext' => '<strong>سیز بیر یانلیش اؤزل یارپاغینی ایسته‌میسینیز.</strong>
+دوزگون اؤزل یارپاق‌لارین سیاهی‌سینی [[Special:SpecialPages|{{int:specialpages}}]]-ده گؤره بیلرسینیز.',
+
+# General errors
+'error' => 'خطا',
+'databaseerror' => 'دیتابیس خطاسی',
+'dberrortext' => 'بیر دیتابیس سورغو سینتکس خطاسی قاباغا گلدی.
+بو، یازیلیم‌دا بیر خطانی گؤستره بیلر.
+سون قصد ائدیلن دیتابیس سورغوسو بو ایدی:
+<blockquote><code>$1</code></blockquote>
+"<code>$2</code>" فونکسیاسی ایچیندن.
+دیتابیس بو خطانی قایتاردی: "<samp>$3: $4</samp>".',
+'dberrortextcl' => 'بیر دیتابیس سورغو سینتکس خطاسی قاباغا گلدی.
+سون قصد ائدیلن دیتابیس سورغوسو بو ایدی:
+"$1"
+"$2" فونکسیاسی ایچیندن.
+دیتابیس بو خطانی قایتاردی: "$3: $4"',
+'laggedslavemode' => "'''دیقت:''' یارپاق‌دا، سون دَییشیکلیکلرین اولماماسی ایمکانی وار.",
+'readonly' => 'دیتابیس باغلانیب',
+'enterlockreason' => 'باغلاما نَدَن‌لیگی و آچیلماغین تخمینی واختینی یازین',
+'readonlytext' => 'ایندی دیتابیس یئنی گیرمه‌لره و باشقا دَییشیکلیکلره باغلی‌دیر، اولا بیلر بو روتین دیتابیس باخیمی اوچون‌دور، قورتاران‌دان سونرا، عادی دورومونا قاییتاجاق.
+
+اونو باغلایان ایداره‌چی بو ایضاحی وئریب‌دیر: $1',
+'missing-article' => 'معلومات بازاسی، تاپیلماسی ایستنن "$1" $2 آدلی صحیفه‌‌يه عاید متنی تاپا بیلمه‌دی. 
+
+بۇ وضعیت صحیفه‌‌نین، سیلینمیش بیر صحیفه‌‌نین کئچمیش وئرسیياسی اوْلماسیندان قايناقلانا بیلر. 
+
+اگر نیيه بۇ دئيیلسه، پروْقرامدا بیر سهو ایله قارشیلاشمیش اوْلا بیلرسینیز. 
+خاهیش ائدیریک بۇنو بیر [[Special:ListUsers/sysop|administrator]]، URL نوْت ائده‌رک گؤندرین.',
+'missingarticle-rev' => '(تفتیش#: $1)',
+'missingarticle-diff' => '(فرق: $1, $2)',
+'readonly_lag' => 'ایکینجی درجه‌لی دیتابیس خیدمت‌چیلری، آنا دیتابیسه یئتیشماغا گؤره، بو دیتابیس اوتوماتیک باغلانیب‌دیر',
+'internalerror' => 'ایچ خطاسی',
+'internalerror_info' => 'ایچ خطاسی: $1',
+'fileappenderrorread' => 'اکلَنَنده، «$1»-نو اوخوماق مومکون دئییل‌دیر.',
+'fileappenderror' => '«$1»-نو «$2»-نا اکله‌مک اولانمادی.',
+'filecopyerror' => '«$1» فایلینی، «$2»-نا کوپی اولانمادی.',
+'filerenameerror' => '«$1» فایلین آدی «$2»-نا دَییشدیریلنمه‌دی.',
+'filedeleteerror' => '«$1» فایلی سیلیننمه‌دی.',
+'directorycreateerror' => '«$1» دایرکتوری‌سی سیلیننمه‌دی.',
+'filenotfound' => '«$1» فایلی تاپیلانمادی.',
+'fileexistserror' => '«$1» فایلینا یازیلانمادی: فایل اؤنجه‌دن واردیر.',
+'unexpected' => 'گؤزلنیمله‌ین دَیَر: «$1»=«$2»',
+'formerror' => 'خطا: فورم یوللانانمادی.',
+'badarticleerror' => 'بو ایشی بو یارپاق اوستون‌ده ائتمک اولماز.',
+'cannotdelete' => '«$1» فایل یا یارپاغی سیلیننمه‌دی.
+اولا بیلر اونو اؤنجه‌دن باشقا بیر اشلدن سیلمیش اولا.',
+'cannotdelete-title' => '«$1» یارپاغی سیلیننمیر',
+'delete-hook-aborted' => 'سیمک، چنگل‌له یاری‌دا قالدی.
+او هئچ بیر ایضاح وئرمه‌دی.',
+'badtitle' => 'پیس باشلیق',
+'badtitletext' => 'آختاریلان صحیفه‌‌ آدی سهودیر و يا بوْشدور، يا دا دۆزگون اوْلمايان دیللر‌آراسی، ياخود ویکیلرآراسی کئچید ایستیفاده ائدیلیب. 
+باشلیقلاردا ایستیفاده ائدیلمه‌سی قاداغان اوْلونان بیر و يا داها چوْخ سیمووْل ایستیفاده ائدیلمیش اوْلا بیلر.',
+'perfcached' => 'بو بیلگی، کَش اولوب‌دور و اولا بیلر گونجل اولماسین. چوخو {{PLURAL:$1|بیر نتیجه|$1 نتیجه}} کَش‌ده‌دیر.',
+'perfcachedts' => 'بو بیلگی کَش اولوب‌دور، سون دفعه $1 واختیندا گونجلیب‌دیر. چوخو {{PLURAL:$4|بیر نتیجه|$4 نتیجه}} کَش‌ده‌دیر.',
+'querypage-no-updates' => 'بو یارپاق‌دا گونجل‌له‌مک ایندی باغلانیب‌دیر.
+بورداکی بیلگیلر یئنی‌لشمیه‌جکلر.',
+'wrong_wfQuery_params' => 'wfQuery() اوچون یانلیش پارامئترلر وئریلیب‌دیر<br />
+فونکسیا: $1<br />
+سورغو: $2',
+'viewsource' => 'قایناغا باخ',
+'viewsource-title' => '$1 اوچون قایناغا باخین',
+'actionthrottled' => 'سیزین چالیشمانیزین قاباغی آلیندی',
+'actionthrottledtext' => 'آنتی-ایسپام حرکت‌لری گؤره، بیر حرکتی قیسا بیر زامان آرالیغیندا چوخئتمه‌نیز انگللندی، و سیز حدی آشمیسینیز. لطفاً بیر نئچه دقیقه سونرا یئنی‌دن یوخلایین.',
+'protectedpagetext' => 'بو صحیفه دیَیشمه اوچون باغلی‌دیر.',
+'viewsourcetext' => 'سیز بو صحیفه‌نین مزمونونو گؤره و کؤچوره بیلرسینیز:',
+'viewyourtext' => "'''اؤز دَییشیکلیکلرینیز''' ین کودونو گؤروب و بو صحیفه‌یه کوپی ائده بیلرسینیز:",
+'protectedinterface' => 'بو صحیفه‌ده پروقرام تأمیناتی اوچون سیستئم بیلگی‌لری وار و سوی-ایستیفاده‌نین قارشی‌سینی آلماق اوچون محافظه اولونما‌لی‌دیر.',
+'editinginterface' => "'''دیقت:''' سیز بیر یازیلیم آرا-اوزونه یازی تعمین ائدن صحیفه‌نی دَییشدیرمک‌ده‌سینیز.
+بو صحیفه‌نی دَییشدیرمک، بو ویکی‌نی ایستیفاده ائدن باشقا ایستیفاده‌چیلرین گؤرونوشونو دَییشه‌جک‌دیر.
+چئویرمه‌لری بوتون ویکی‌لره آرتیریب یوخسا دَییشدیرمک اوچون لوطفاً [//translatewiki.net/ translatewiki.net]، مئدیاویکی‌نین یئرلیلشدیرمه پروژه‌سیندن ایستیفاده ائدین.",
+'sqlhidden' => '(اس‌کیوال سورغوسو گیزلی)',
+'cascadeprotected' => 'بو صحیفه دَییشیکلیکلر قاباغیندا قورونوب‌دور، چونکو بو آشاغیداکی، آبشاری {{PLURAL:$1|سئچمه‌سی|سئچمه‌لری}} سئچیلن، قورونان {{PLURAL:$1|صحیفه|صحیفه‌لر}} ایچینده‌دیر:
+$2',
+'namespaceprotected' => "سیز '''$1''' آدآلانینداکی یارپاقلارین دَییشمه‌سینه ایجازه‌نیز یوخدور.",
+'customcssprotected' => 'سیز بو CSS صفحه‌سینین دَییشمه‌سینه ایجازه‌نیز یوخدور نییه کی اون‌دا باشقا ایشلدنین شخصی تنظیملری واردیر.',
+'customjsprotected' => 'سیز بو جاوااسکریپت صفحه‌سینین دَییشمه‌سینه ایجازه‌نیز یوخدور، نییه کی اون‌دا باشقا ایشلدنین شخصی تنظیملری واردیر.',
+'ns-specialprotected' => 'اؤزل یارپاقلاری دَییشمک اولماز.',
+'titleprotected' => 'بو آددا یارپاغین یارادیلماسی [[User:$1|$1]] ایشلدن طرفیندن باغلانیب‌دیر.
+اونون نَدَن‌لیگی بودور: "\'\'$2\'\'"',
+'filereadonlyerror' => '«$2» آنباری‌نین تکجه-اوخومالی دوروموندا اولدوغونا گؤره، «$1»-ی دَییشمک اولماز.
+
+اونو باغلایان ایداره‌چی بو ایضاحی وئریب‌دیر: $3',
+'invalidtitle-knownnamespace' => '«$2» آدآلان‌لی و «$3» یازی‌لی یانلیش باشلیق',
+'invalidtitle-unknownnamespace' => 'تانینمامیش $1 نومره‌لی آدآلان و «$2» یازی‌لی یانلیش باشلیق',
+'exception-nologin' => 'گیریش ائتمه‌میسینیز',
+'exception-nologin-text' => 'بو یارپاق یا ایشی گؤرمگه، بو ویکی‌یه گیرمه‌لیسینیز.',
+
+# Virus scanner
+'virus-badscanner' => "پیس تنظیملر: تانینمامیش ویروس یوخلایان: ''$1''",
+'virus-scanfailed' => 'یوخلاماق باشا چاتمادی (کود $1)',
+'virus-unknownscanner' => 'تانینمامیش آنتی‌ویروس:',
+
+# Login and logout pages
+'welcomeuser' => 'خوش گلمیسینیز, $1!',
+'yourname' => 'ایستیفاده‌چی آدی:',
+'yourpassword' => 'رمز',
+'yourpasswordagain' => 'پسووردو یئنی‌دن یاز',
+'remembermypassword' => 'بو بیلگی‌سایاردا منیم گیریشیمی (چوخو $1 {{PLURAL:$1|گون}}ه قدر) یاددا ساخلا',
+'securelogin-stick-https' => 'گیرندن سونرا، HTTPS-ه باغلی قال',
+'yourdomainname' => 'سیزین دامنه:',
+'password-change-forbidden' => 'بو ویکی‌ده رمزلری دَییشه بیلنمه‌سینیز.',
+'externaldberror' => 'بیر دیتابیس دوغرولاما خطاسی اولدو، یوخسا سیزین ائشیک حسابینیزی گونجل‌لدمگه ایجازه‌نیز یوخدور.',
+'login' => 'گیریش',
+'nav-login-createaccount' => 'گیریش / حساب یاراد',
+'loginprompt' => '{{SITENAME}} سایتینا گیریش اوچون، کوکی‌لره ایجازه وئرمک لازیم‌دیر.',
+'userlogin' => 'گیریش / حساب یاراد',
+'userloginnocreate' => 'گیریش',
+'logout' => 'چیخیش',
+'userlogout' => 'چیخیش',
+'notloggedin' => 'گیرمه‌میسینیز',
+'nologin' => 'حسابینیز یوخدومو؟ $1.',
+'nologinlink' => 'حساب یارات',
+'createaccount' => 'حساب یارات',
+'gotaccount' => 'اؤنجه‌دن حسابینیز وارمی؟ $1.',
+'gotaccountlink' => 'گیریش',
+'userlogin-resetlink' => 'گیریش بیلگیلرینیزی اونوتموسونوز؟',
+'createaccountmail' => 'ایمیل ایله',
+'createaccountreason' => 'نَدَن‌لیک:',
+'badretype' => 'یازدیغینیز رمزلر بیر دئییل‌لر.',
+'userexists' => 'یازدیغینیز آد، اؤنجه‌دن ایشده‌دیر.
+لوطفاً باشقا بیر آد سئچین.',
+'loginerror' => 'گیریش خطاسی',
+'createaccounterror' => 'بو حساب یارادیلانمادیر: $1',
+'nocookiesnew' => 'ایستیفاده‌چی حسابی یارادیلدی، اما سیز گیرمه‌میسینیز.
+{{SITENAME}} ایستیفاده‌چیلری گیردیرمک اوچون، کوکی‌لری ایشلدیر.
+سیزین کوکی‌لریز باغلانیب‌دیر.
+لوطفاً اونلاری آچین و سونرا یئنی ایستیفاده‌چی آدی و رمزینیزله گیریش ائدین.',
+'nocookieslogin' => '{{SITENAME}} ایشلدنلری گیردیرمک اوچون، کوکی‌لری ایشلدیر.
+سیزین کوکی‌لریز باغلانیب‌دیر.
+لوطفا اونلاری آچین و یئنی‌دن چالیشین.',
+'nocookiesfornew' => 'قایناغینی دوغرو اولدوغونو بیلمه‌مک اوچون، ایشلدن حسابی یارادیلمادی.
+کوکی‌لرینیزین آچیق اولدوغون دان آرخایین اولوب، بو یارپاغی یئنی‌دن یوکله‌ییب، یئنی‌دن چالیشین.',
+'noname' => 'گئچرلی ایستیفاده‌چی آدی وئرمه‌دینیز.',
+'loginsuccesstitle' => 'گیریش اوغورلو',
+'loginsuccess' => "'''سیز ایندی {{SITENAME}} سایتینا، «$1» آدی‌له گیرمیسینیز.'''",
+'nosuchuser' => '«$1» آدلا ایستیفاده‌چی یوخدور.
+ایستیفاده‌چی آدلاری، حرفلرین بؤیوک/کیچیک‌لیگینه حساس‌دیلار.
+یازدیغینیزا یئنی‌دن باخین، یوخسا [[Special:UserLogin/signup|یئنی بیر حساب آچین]].',
+'nosuchusershort' => '"$1" آدلا ایستیفاده‌چی یوخدور.
+دوزگون یازدیغینیزدان آرخایین اولون.',
+'nouserspecified' => 'بیر ایستیفاده‌چی آدی وئرمه‌لیسینیز.',
+'login-userblocked' => 'بو ایستیفاده چی باغلانیب‌دیر. گیریشه ایجازه یوخدور.',
+'wrongpassword' => 'یانلیش رمز وئریلدی.
+یئنی‌دن یازین.',
+'wrongpasswordempty' => 'بوش رمز وئردینیز.
+یئنی‌دن یازین.',
+'passwordtooshort' => 'رمز، آزی {{PLURAL:$1|بیر|$1}} کاراکتئر اولمالی‌دیر.',
+'password-name-match' => 'رمزینیز ایستیفاده‌چی آدینیزلا فرق‌لی اولمالی‌دیر.',
+'password-login-forbidden' => 'بو ایستیفاده‌چی آدی و رمزی ایشلدمک، قاداغان اولوب‌دور.',
+'mailmypassword' => 'یئنی رمزی ایمیل ایله گؤندر',
+'passwordremindertitle' => '{{SITENAME}} سایتینا یئنی گئچیجی رمز',
+'passwordremindertext' => 'بیر کس (احتیمالاً سیز، $1 آی‌پی آدرسی‌له) {{SITENAME}} ($4) اوچون یئنی رمز ایستگی وئریب‌دیر. «$2» ایستیفاده‌چیسی اوچون یئنی بیر رمز دوزلیب و «$3»-ه تنظیم اولوب‌دور. بو سیزین ایسته‌دیگینیز اولسا، گیریب و بیر یئنی رمز وئرمک لازیم‌دیر.
+بو گئچیجی رمز، {{PLURAL:$5|بیر|$5}} گون‌ده واختی گئچه‌جک‌دیر.
+
+بو ایستگی باشقا بیر کس وئریب‌سه، یوخسا سیز رمزینیزی یادا گئتیرمیسیزسه، و داها اونو دَییشمک ایسته‌میرسینیزسه، بو مئساژی نظره توتماییب و اسکی رمزینیزی ایشلدمگه داوام ائده بیلرسینیز.',
+'noemail' => '«$1» ایستیفاده‌چی‌یه ایمیل آدرسی قئید اولماییب‌دیر.',
+'noemailcreate' => 'دوزگون بیر ایمیل آدرسی وئرمه‌لیسینیز',
+'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' => 'سیزین ایمیل آدرسینیز هله دوغرولانماییب‌دیر.
+آشاغیداکی اؤزل‌لیکلر اوچون هئچ بیر ایمیل گؤندریلمه‌یه‌جک‌دیر.',
+'noemailprefs' => 'بو خیدمتلردن يارارلانماق اوچون ترجیح لریندا ائ-مکتوب اونوانینی گؤستر.',
+'emailconfirmlink' => 'ایمیل-پوست اونوانینی تصدیق ائت',
+'invalidemailaddress' => 'بو ایمیل آدرس، یانلیش فورمتی اولدوغو اوچون، قبول اولماز.
+لوطفاً دوزگون فورمت‌لی آدرس وئرین، یوخسا اونو بوش بوراخین.',
+'cannotchangeemail' => 'حساب ایمیل آدرسلری بو ویکی‌ده دَییشیلنمزلر.',
+'emaildisabled' => 'بو سایت ایمیل گؤندرنمز.',
+'accountcreated' => 'حساب یارادیلدی',
+'accountcreatedtext' => '$1 ایستیفاده‌چی حسابی یارادیلیب‌دیر.',
+'createaccount-title' => '{{SITENAME}} اوچون حساب یارادیلماسی',
+'createaccount-text' => 'بیر کس، سیزین ایمیل آدرسینیزه {{SITENAME}} ($4) سایتیندا «$2» آدی و «$3» رمزی ایله بیر حساب آچیب‌دیر. سیز گرک گیریش ائدیب و رمزینیزی ایندی دَییشدیره‌سیز.
+
+بو حساب یانلیش دوزلیب‌سه، بو مئساژا محل قویمایابیلرسیز.',
+'usernamehasherror' => 'ایستیفاده‌چی آدیندا hash حرفلری اولا بیلمز',
+'login-throttled' => 'سیزین چوخ گیریش چالیشماغینیز اولوب‌دور.
+لوطفاً یئنی‌دن چالیشماق‌دان اؤنجه بیر آز دؤزون.',
+'login-abort-generic' => 'سیزین گیریشینیز باشاری‌سیز اولدو - دایاندیریلدی',
+'loginlanguagelabel' => 'دیل: $1',
+'suspicious-userlogout' => 'سیزین چیخیش ایستگینیز رد اولوندو. بو، براوزرین یا پروکسی-کَشلمه‌سینین دوزگون ایشله‌مه‌مه‌سین‌دن قایناق‌لانیر.',
+
+# E-mail sending
+'php-mail-error-unknown' => 'پی‌اچ‌پی‌نین mail() فونکسیاسیندا تانینمامیش خطا.',
+'user-mail-no-addy' => 'ایمیل آدرسی اولماماق‌لا، ایمیل گؤندرمگه چالیشدی',
+
+# Change password dialog
+'resetpass' => 'رمزی دَییشدیر',
+'resetpass_announce' => 'سیز بیر گئچرلی ایمیل اولونان کود ایله گیرمیسینیز.
+گیرمگی قورتارماق اوچون، یئنی بیر رمز قویمالیسینیز:',
+'resetpass_header' => 'حساب رمزینی دَییشدیر',
+'oldpassword' => 'اسکی رمز',
+'newpassword' => 'یئنی رمز',
+'retypenew' => 'یئنی رمزی یئنی‌دن یازین:',
+'resetpass_submit' => 'رمز یارادین و گیریش ائدین',
+'resetpass_success' => 'رمزینیز باشاری‌لا دَییشدیرلدی! ایندی گیریرسینیز...',
+'resetpass_forbidden' => 'رمزلر دَییشیلمز',
+'resetpass-no-info' => 'بو صحیفه‌نی دوغرو گؤردوگونوز اوچون سیستمه گیرمه‌لیسینیز.',
+'resetpass-submit-loggedin' => 'رمزی دَییشدیر',
+'resetpass-submit-cancel' => 'لغو ائت',
+'resetpass-wrong-oldpass' => 'یانلیش گئچیجی یا ایندیکی رمز.
+اولا بیلر سیز باشاریلیق‌لا رمزینیزی دَییشمیسینیز یوخسا یئنی گئچرلی رمز ایسته‌میسینیز.',
+'resetpass-temp-password' => 'گئچیجی رمز:',
+
+# Special:PasswordReset
+'passwordreset' => 'رمزی یئنی‌له',
+'passwordreset-text' => 'حسابینیزا بیلگیلرینه گؤره یادا سالما ایمیلی آلماق اوچون، بو فورمو دولدورون.',
+'passwordreset-legend' => 'رمزی یئنی‌له',
+'passwordreset-disabled' => 'بو ویکی‌ده رمزی یئنی‌له‌مک باغلانیب‌دیر.',
+'passwordreset-pretext' => '{{PLURAL:$1|آشاغیداکی وئری پارچالارینین بیرینی وئرین}}',
+'passwordreset-username' => 'ایستیفاده‌چی آدی:',
+'passwordreset-domain' => 'دامنه:',
+'passwordreset-capture' => 'سون نتیجه ایمیل گؤستریلسین؟',
+'passwordreset-capture-help' => 'بو قوطویا علامت قویساز، (گئچیجی رمزی اولان) ایمیل ایستیفاده‌چی‌یه گؤندریلن کیمی بوردا سیزه گؤستریله‌جکدیر.',
+'passwordreset-email' => 'ایمیل آدرسی:',
+'passwordreset-emailtitle' => '{{SITENAME}}-ده حساب بیلگیلری',
+'passwordreset-emailtext-ip' => 'بیر کس (احتیمالاً سیز، $1 آی‌پی آدرسی‌له)، {{SITENAME}} ($4) سایتینداکی حسابینیز اوچون یادا سالما بیلگیلری ایسته‌ییب‌دیر. آشاغیداکی ایستیفاده‌چی {{PLURAL:$3|حسابی|حسابلاری}} بو ایمیل ایله ایلگی‌لی‌دیرلر:
+
+$2
+
+بو گئچیجی {{PLURAL:$3|رمز|رمزلر}}، {{PLURAL:$5|بیر گون|$5 گون}}‌ده {{PLURAL:$3|واختی|واختلاری}} قورتاراجاق‌دیر.
+سیز گرک ایندی سایتا گیریب و یئنی بیر رمز سئچه‌سینیز. باشقا آدام بو ایستَگی وئرمیش‌سه، یوخسا سیز اسکی رمزینیزی یادا گتیرمیشسینیزسه، و داها اونو چئویرمک ایسته‌میرسینیزسه، بو مئساژی سایماییب و اسکی رمزینیزی ایشلدمگه داوام ائده بیلرسینیز.',
+'passwordreset-emailtext-user' => '{{SITENAME}} سایتیندا، $1 ایستیفاده‌چی، سیزین اوردا ($4) حسابینیز بیلگیلری اوچون بیر یادا سالما ایستگی وئریب‌دیر. آشاغیداکی {{PLURAL:$3|ایستیفاده‌چی|ایستیفاده‌چیلر}} بو ایمیل ایله ایلگیلیدیرلر:
+
+$2
+
+بو گئچیجی {{PLURAL:$3|رمز|رمزلر}}، {{PLURAL:$5|بیر|$5گون}} سونرا واختلاری قورتاراجاق‌دیر. 
+سیز گرک ایندی گیریب و بیر یئنی رمز سئچه‌سینیز. باشقا آدام بو ایستَگی وئرمیش‌سه، یوخسا سیز اسکی رمزینیزی یادا گتیرمیشسینیزسه، و داها اونو چئویرمک ایسته‌میرسینیزسه، بو مئساژی سایماییب و اسکی رمزینیزی ایشلدمگه داوام ائده بیلرسینیز.',
+'passwordreset-emailelement' => 'ایستیفاده‌چی آدی: $1
+گئچیجی رمز: $2',
+'passwordreset-emailsent' => 'بیر یادا سالما ایمیلی گؤندریلیب‌دیر.',
+'passwordreset-emailsent-capture' => 'آشاغیدا گؤستریلن کیمی بیر یادا سالما ایمیلی گؤندریلیب‌دیر.',
+'passwordreset-emailerror-capture' => 'آشاغیدا گؤستریلن کیمی بیر یادا سالما ایمیل یارادیلیب‌دیر، اما ایستیفاده‌چی‌یه گؤندرمگی باشاریلی اولمادی: $1',
+
+# Special:ChangeEmail
+'changeemail' => 'ایمیل آدرسینی دَییشدیر',
+'changeemail-header' => 'حساب ایمیل آدرسینی دَییشدیر',
+'changeemail-text' => 'ایمیل آدرسینیزی دَییشمک اوچون بو فورمو دولدورون. بو دَییشیگی دوغرولاماق اوچون رمزینیزی وئرمه‌لیسینیز.',
+'changeemail-no-info' => 'بو صحیفه‌نی دوغرو گؤردوگونوز اوچون سیستمه گیرمه‌لیسینیز.',
+'changeemail-oldemail' => 'ایندیکی ایمیل آدرس:',
+'changeemail-newemail' => 'یئنی ایمیل آدرسی:',
+'changeemail-none' => '(هئچ)',
+'changeemail-submit' => 'ایمیلی دَییشدیر',
+'changeemail-cancel' => 'لغو',
+
+# Edit page toolbar
+'bold_sample' => 'قالین یازی',
+'bold_tip' => 'قالین یازی',
+'italic_sample' => 'اَیری یازی',
+'italic_tip' => 'اَیری یازی',
+'link_sample' => 'باغلانتی باشلیغی',
+'link_tip' => 'ایچری باغلانتی‌سی',
+'extlink_sample' => 'http://www.example.com باغلانتی باشلیغی',
+'extlink_tip' => 'خاریجی باغلانتی (http:// اؤن‌اکی‌نی اونوتمایین)',
+'headline_sample' => 'باشلیق متنی',
+'headline_tip' => '۲ یوکسک باشلیق',
+'nowiki_sample' => 'فورمت‌لشدیریلمه‌میش یازی‌نی بورا داخیل ائدین',
+'nowiki_tip' => 'ویکی فورمت‌لندیرمه‌سینی سایما',
+'image_tip' => 'یئرلشدیریلمیش فایل',
+'media_tip' => 'فایل باغلانتی‌سی',
+'sig_tip' => 'سیزین ایمضانیز واخت ایله',
+'hr_tip' => 'دوزئی خط (آز ایشلدین)',
+
+# Edit pages
+'summary' => 'قیساسی:',
+'subject' => 'قونو/باشلیق:',
+'minoredit' => 'بو بیر کیچیک دَییشدیرمه‌دیر',
+'watchthis' => 'بو صفحه‌نی ایزله',
+'savearticle' => 'صحیفه‌نی قئید ائت',
+'preview' => 'اؤن‌گؤستریش',
+'showpreview' => 'اؤن‌گؤستریش',
+'showlivepreview' => 'دیری اؤن‌گؤستریش',
+'showdiff' => 'دَییشیکلیکلری گؤستر',
+'anoneditwarning' => "'''دیقت:''' سیز سیستئمه گیرمه‌میسینیز. سیزین آی‌پی آدرسینیز بو صفحه‌نین دییشیک تاریخچه‌سین‌ده یازیلاجاق‌دیر.",
+'anonpreviewwarning' => "''سیستمه گیرمه‌میسینیز. قئید ائتمک‌له، سیزین آی‌پی آدرسینیز بو صحیفه‌نین گئچمیشین‌ده ثبت اولوناجاقدیر.''",
+'missingsummary' => "'''یادا سالما:''' سیز بیر دَییشیکلیک قیساسی یازمامیسینیز. «{{int:savearticle}}» دویمه‌سینی تیک‌لاسازسا، دَییشیکلیگینیز، قیسا شرح‌سیز اولاراق قئید اولوناجاق.",
+'missingcommenttext' => 'لوطفاً آشاغی‌دا بیر یوروم یازین.',
+'missingcommentheader' => "'''یادا سالما:''' سیز یورومونوز اوچون بیر قونو/باشلیق یازمامیسینیز.
+«{{int:savearticle}}»-ی تیک‌لاسازسا، دَییشیکلیگینیز، قونو/باشلیق-ی اولمایاراق قئید اولوناجاق‌دیر.",
+'summary-preview' => 'قیسا اؤن‌گؤستریش:',
+'subject-preview' => 'قونو/باشلیق اؤن‌گؤستریشی:',
+'blockedtitle' => 'ایستیفاده‌چی باغلانیب',
+'blockednoreason' => 'دلیل وئریلمه‌ییب',
+'whitelistedittext' => 'صحیفه‌لری دَییشمک اوچون گرک $1.',
+'confirmedittext' => 'سیز صحیفه‌لری دَییشدیرمک‌دن اؤنجه، ایمیل آدرسینیزی دوغرولامالیسینیز.
+لوطفاً ایمیل آدرسینیزی [[Special:Preferences|ایستیفاده‌چی تنظیملری]]نیزدن بیلدیریب و دوغرولایین.',
+'nosuchsectiontitle' => 'بؤلوم تاپیلانمادی',
+'nosuchsectiontext' => 'سیز بیر وار اولمایان بؤلومو دَییشدیرمگه چالیشدینیز.
+اولا بولر سیز صحیفه‌یه باخاندا، او بؤلوم سیلینیب یوخسا داشینیب‌دیر.',
+'loginreqtitle' => 'گیریش لازیم‌دیر',
+'loginreqlink' => 'گیریش',
+'loginreqpagetext' => 'باشقا صحیفه‌لری گؤرمک اوچون گرک $1.',
+'accmailtitle' => 'رمز گؤندریلدی',
+'accmailtext' => "[[User talk:$1|$1]] اوچون بیر راست‌گله رمز یارادیلیب و $2-ه گؤندریلدی.
+
+بو یئنی حسابین رمزی، گیرندن سونرا ''[[Special:ChangePassword|رمز دَییشدیرمه]]'' صحیفه‌سیندن دَییشیله بیلر.",
+'newarticle' => '(یئنی)',
+'newarticletext' => "مؤوجود اوْلمايان صحیفه‌‌يه اوْلان کئچیدی ایزله‌دینیز. 
+آشاغیداکی ساحه‌‌يه مظمونونو يازاراق بۇ صحیفه‌‌نی '''سیز''' يارادا بیلرسینیز. (علاوه‌‌ معلومات اۆچون [[{{MediaWiki:Helppage}}|کؤمک صحیفه‌‌سینه]] باخین). اگر بۇ صحیفه‌‌يه سهون گلمیسینیزسه ساده‌جه اوْلاراق براوزئرین '''گئری''' دۆيمه‌سینه وۇرون.",
+'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={{FULLPAGENAMEE}}}} باخا],
+و يا صحیفه‌‌نی  [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktə]</span> ائده بیلرسینیز.',
+'missing-revision' => '«{{PAGENAME}}» صحیفه‌سی اوچون $1 نومره‌لی نوسخه یوخدور.
+
+عموماُ بو ایشکال، واختی گئچمیش بیر باغلانتی ایله سیلینمیش بیر صحیفه‌یه گلنده، قاباغا گلر.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیلمک سیاهی]‌سینده باشقا بیلگیلر اولا بیلر.',
+'userpage-userdoesnotexist' => '«$1» ایستیفاده‌چی حسابی یارانماییب‌دیر.
+بو صحیفه‌نی یارادماق یوخسا دَییشدیرمگینه بیر ده باخین.',
+'userpage-userdoesnotexist-view' => '«$1» ایستیفاده‌چی حسابی یارانماییب‌دیر.',
+'blocked-notice-logextract' => 'بو ایستیفاده‌چی ایندی باغلانیب‌دیر.
+باغلاماق سیاهی‌سینده‌کی سون یازی آشاغیدا قایناق اوچون گلیب‌دیر:',
+'usercssyoucanpreview' => "'''اؤنری:''' یئنی سی‌اس‌اس-ی قئید ائتمک‌دن اؤنجه، یوخلاماق اوچون، «{{int:showpreview}}» دویمه‌سینی ایشلدین.",
+'userjsyoucanpreview' => "'''اؤنری:''' یئنی جاوااسکریپتی قئید ائتمک‌دن اؤنجه، یوخلاماق اوچون، «{{int:showpreview}}» دویمه‌سینی ایشلدین.",
+'updated' => '(گونجل‌لندی)',
+'note' => "'''دیقت:'''",
+'previewnote' => "'''بونون ساده‌جه بیر سیناق گؤستریشی اولدوغونو نظرده آلین.'''
+سیزین دییشیکلرینیز هله قئید اولونماییب!",
+'continue-editing' => 'دَییشدیرمه یئرینه گئت',
+'editing' => '<font style="color:red">$1</font> دییشدیریلیر',
+'creating' => '$1 یارادیلیر',
+'editingsection' => '$1 دَییشدیریلیر (بؤلوم)',
+'editingcomment' => '$1 دَییشدیریلیر (یئنی بؤلوم)',
+'yourtext' => 'یازینیز',
+'storedversion' => 'قئید ائدیلمیش نوسخه',
+'yourdiff' => 'فرقلر',
+'templatesused' => '{{PLURAL:$1|شابلون}} بو صفحه‌ده ایشلنیب‌دیر:',
+'templatesusedpreview' => '{{PLURAL:$1|بیر|$1}} شابلون بو اؤن‌گؤستریش‌ده ایشلنیب‌دیر:',
+'templatesusedsection' => '{{PLURAL:$1|شابلون}} بو بؤلمه‌ده ایشلنیب‌دیر:',
+'template-protected' => '(قورونوب)',
+'template-semiprotected' => '(یاریم‌قورونموش)',
+'hiddencategories' => 'بو صحیفه {{PLURAL:$1|بیر گیزلی دسته‌یه|$1 گیزلی دسته‌لره}} عایددیر:',
+'nocreatetitle' => 'صحیفه یاراتما محدودلاشدیریلیب.',
+'nocreatetext' => '{{SITENAME}} یئنی صحیفه یارادماق ایمکانی‌نی محدودلاشدیریب‌دیر.
+سیز دالی دؤنوب و اؤنجه‌دن اولان بیر صحیفه‌نی دَییشدیره بیلرسینیز، یا دا [[Special:UserLogin|گیریب یوخسا یئنی حساب آچین]].',
+'nocreate-loggedin' => 'سیزین یئنی صحیفه‌لر یاراتماغا ایجازه‌نیز یوخدور.',
+'sectioneditnotsupported-title' => 'بؤلوم دییشدیرمه‌سی دستک‌لنمیر',
+'sectioneditnotsupported-text' => 'بو صحیفه‌ده بؤلوم دَییشدیرمه‌سی دستکلنمیر.',
+'permissionserrors' => 'ایزین خطاسی',
+'permissionserrorstext' => 'سیز آشاغیداکی {{PLURAL:$1|دلیل|دلیل‌لر}}ه گؤره، او ایشه ایجازه‌نیز یوخدور.',
+'permissionserrorstext-withaction' => 'سیز آشاغیداکی {{PLURAL:$1|دلیل|دلیل‌لر}}ه گؤره، $2 ایشینه ایجازه‌نیز یوخدور.:',
+'recreate-moveddeleted-warn' => "'''دیقت: سیز اؤنجه‌ده سیلینمیش بیر صفحه‌نی یئنی‌دن یارادیرسینیز.'''
+
+بو صفحه‌نین یئنی‌دن یارادماغی‌نین نه‌قدر اویغون اولدوغونو گرک نظرده آلاسینیز.
+بو صفحه‌نین سیلمک و آپارماق گئچمیشی بوردا گؤستریلیب‌دیر:",
+'moveddeleted-notice' => 'بو یارپاق سیلین‌میش‌دیر
+معلومات اوچون آشاغیدا بو یارپاق‌ین تاریخچه‌سیندن مووافیق سیلمه قئيدلری گؤستریلمیش‌دیر.',
+'log-fulllog' => 'بوتون بیلگی‌لری گؤستر',
+'edit-hook-aborted' => 'دوزلیش‌لر قارماق-پروسئ‌دور طرفین‌دن گئری قایتاریلیب.
+علاوه ایزاهات وئریلمه‌ییب.',
+'edit-conflict' => 'سیزله برابر دییشدیرمه',
+'edit-already-exists' => 'یئنی صحیفنی یاراتماق مومکون دئییل.
+بئله کی، بو آددا صحیفه آرتیق مؤوجوددور.',
+'defaultmessagetext' => 'دفالت دانیشیق متنی',
+
+# Content models
+'content-model-wikitext' => 'ویکی متن',
+'content-model-text' => 'ساده متن',
+'content-model-javascript' => 'جاوااسکریپت',
+'content-model-css' => 'سی‌اس‌اس',
+
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''دیققت!''' داخیل ائدیلن شابلوْنلارین حجمی حددیندن آرتیق بؤيوکدور.
+بعضی شابلوْنلار علاوه‌‌ اوْلونماياجاق.",
+'post-expand-template-inclusion-category' => 'شابلونون داخیل اولدوغو صحیفه‌‌لرین اؤلچوسو بؤيوکدور.',
+'post-expand-template-argument-warning' => "'''دیقت:''' بو صفحه‌ده، آزی بیر چوخ اوزون بویلو شابلون آرگومانی واردیر.
+بو آرگومانلارین اوستون‌دن کئچیلیب‌دیر.",
+'post-expand-template-argument-category' => 'شابلونلاردا بوراخیلمیش آرگومانلارین مؤوجود اولدوغو صفحه‌لر',
+'parser-template-loop-warning' => '[[$1]]: شابلوندا دويون تاپیلدی',
+'parser-template-recursion-depth-warning' => '($1) شابلوندا درین‌لیک لیمیتی کئچیلدی',
+'language-converter-depth-warning' => '($1) دیل کونوئرتورونون لیمیتی کئچیلدی',
+
+# "Undo" feature
+'undo-success' => 'بو دَییشیک‌لیک گئری آلینا بیلر. لطفاً آشاغی‌داکی موقاییسه ائتمیی نظارت ائدین، حقیقتن بو دییشیک‌لیگی ائتمک ایستدیگینیزدن امین اولون و صحیفنی یازا‌راق بیر اوولکی دییشیک‌لیگی گئرییه آلین.',
+'undo-failure' => 'دییشیک‌لیک‌لرین توققوشماسی نتیجه‌سینده گئرییه قایتارما ایشی اوغورسوز اولدو.',
+'undo-norev' => 'دوزلیش‌لر گئری قایتاریلا بیلینمیر، چونکی اونلار یا مؤوجود دئییل، یا دا سیلینیب.',
+
+# Account creation failure
+'cantcreateaccounttitle' => 'حساب آچیلمیر.',
+
+# History pages
+'viewpagelogs' => 'بو صحیفه‌نین قئیدلرینه باخ',
+'nohistory' => 'بو صحیفه اوچون دَییشدیرمه گئچمیشی یوخدور.',
+'currentrev' => 'سون نوسخه',
+'currentrev-asof' => '$1 تاریخینه کیمی سون حال',
+'revisionasof' => 'وئرسیياسی',
+'revision-info' => '$2 طرفیندن يارادیلمیش $1 تاریخلی ديَیشیکلیک',
+'previousrevision' => 'اول‌کی وئرسیيا',
+'nextrevision' => 'سونراکی حالی',
+'currentrevisionlink' => 'سون نوسخه',
+'cur' => 'ایندی',
+'next' => 'سونراکی',
+'last' => 'اؤنجه',
+'page_first' => 'ایلک',
+'page_last' => 'سون',
+'histlegend' => "فرقلری سئچمه: موقاییسه ائتمک ایسته‌دیگینیز دییشیک‌لیکلرین یانینداکی گیرده دویمه‌لره علامت قویون و سونرا Enter-ی ووروب یوخسا آشاغیداکی اویمه‌نی وورون.<br />
+آچیقلاما:'''({{int:cur}})''' =سون نوسخه ایله فرقلر ، '''({{int:last}})''' = اؤنجه‌کی نوسخه ایله فرقلر، '''{{int:minoreditletter}}''' = کیچیک دییشیک‌لیک.",
+'history-fieldset-title' => 'کئچمیشی آختار',
+'history-show-deleted' => 'یانلیز سیلینن‌لر',
+'histfirst' => 'ان یئنی',
+'histlast' => 'ان اسکی',
+'historysize' => '({{PLURAL:$1|بیر|$1}} بایت)',
+'historyempty' => '(بوش)',
+
+# Revision feed
+'history-feed-title' => 'دَییشیکلیکلر گئچمیشی',
+'history-feed-description' => 'ویکی‌ده بو صحیفه اوچون نوسخه‌لر گئچمیشی',
+'history-feed-item-nocomment' => '$1 دن $2',
+'history-feed-empty' => 'ایسته‌دیگینیز صحیفه یوخدور.
+اولا بیلر کی بو ویکی‌دن سیلینیب یوخسا آدی دَییشیلیب‌دیر.
+ایلگیلی یئنی صحیفه‌لری تاپماق اوچون [[Special:Search|بو ویکی‌ده آختارماغا چالیشین]].',
+
+# Revision deletion
+'rev-deleted-comment' => '(شرحلر سیلیندی)',
+'rev-deleted-user' => '(ایستیفاده‌چی آدی سیلیندی)',
+'rev-deleted-event' => '(قئيد سیلیندی)',
+'rev-deleted-user-contribs' => '[ایستیفاده‌چی آدی و يا ای-پی اونوانی سیلیندی - ديَیشیکلیک چالیشمالاردان چیخاریلدی]',
+'rev-deleted-text-permission' => "بو ديَیشیکلیک بو صحیفه‌دن '''سیلینیب دیر.'''",
+'rev-delundel' => 'گؤستر/گیزلت',
+'rev-showdeleted' => 'گؤستر',
+'revisiondelete' => 'صحیفه‌‌نین وئرسیيالارینی سیل/برپا ائت',
+'revdelete-nooldid-title' => 'هدف ديَیشیکلیگی کئچرسیزدیر',
+'revdelete-nologtype-title' => 'هئچ بیر قئيد تیپی وئریلمه‌دی',
+'revdelete-nologtype-text' => 'بو عملیاتی دؤوره‌يه سوخماق اوچون بیر قئيد تیپی ایفاده ائتمه‌دینیز.',
+'revdelete-nologid-title' => 'يانلیش ژورنال يازیسی',
+'revdelete-no-file' => 'آختاریلان فايل مؤوجود دئيیل',
+'revdelete-show-file-submit' => 'بلی',
+'revdelete-legend' => 'محدودیتلری موعيينلشدیر:',
+'revdelete-hide-text' => 'صحیفه‌‌نین بو وئرسیياسی‌نین متنینی گیزله',
+'revdelete-hide-image' => 'فایلین ایچینده‌کیلرینی گیزلت',
+'revdelete-hide-name' => 'حرکتی و مقصدی گیزله‌مک',
+'revdelete-hide-comment' => 'ديَیشیکلیکلرین شرحینی گیزله',
+'revdelete-hide-user' => 'دَییشدیرن یازارین ایستیفاده‌چی آدینی/آی‌پی اونوانینی گیزله',
+'revdelete-radio-same' => '(ديَیشدیرمه)',
+'revdelete-radio-set' => 'بلی',
+'revdelete-radio-unset' => 'یوخ',
+'revdelete-suppress' => 'بیلگی‌لری ایداره‌چیلردن ده گیزله',
+'revdelete-log' => 'ندن',
+'logdelete-success' => "''' گونده‌لیک گؤرونوشو اوغورلا تاماملاندی.'''",
+'revdel-restore' => 'گؤرونوشو دییش',
+'revdel-restore-deleted' => 'سیلینمیش دئیشیلیک‌لر',
+'revdel-restore-visible' => 'گؤرونن دوزه‌لیشلر',
+'pagehist' => 'صحیفه‌‌نین گئچمیشی',
+'deletedhist' => 'سیلین‌میش گئچمیشی',
+'revdelete-hide-current' => 'تاریخ $2 و ساعات $1-ده‌کی آیتئمی گیزلدمک خطاسی: بو ایندیکی نوسخه‌دیر و گیزلدیلنمز.',
+'revdelete-show-no-access' => 'تاریخ $2 و ساعات $1-ده‌کی آیتئمی گؤسترمک خطاسی: بو آیتئم «محدودلاشدیریلیب» و سیز اونا ال تاپانماسینیز.',
+'revdelete-modify-no-access' => 'تاریخ $2 و ساعات $1-ده‌کی آیتئمی دَییشدیرمک خطاسی: بو آیتئم «محدودلاشدیریلیب» و سیز اونا ال تاپانماسینیز.',
+'revdelete-modify-missing' => '$1 نومره‌لی آیتئمی دَییشدیرمک خطاسی: بو آیتئم دیتابیس‌ده دئییل!',
+'revdelete-no-change' => "'''دیقت:''' تاریخ $2 و ساعات $1-ده‌کی آیتئم اوچون اؤنجه‌دن گؤرونوش تنظیملری ایستگی وئریلیب‌دیر.",
+'revdelete-concurrent-change' => 'تاریخ $2 و ساعات $1-ده‌کی آیتئمی گیزلدمک خطاسی: نظره گلیر سیز اونو دَییشدیرنده، باشقا بیر کس اونو دَییشیب‌دیر.
+لوطفاً سیاهی‌لره باخین.',
+'revdelete-only-restricted' => 'تاریخ $2 و ساعات $1-ده‌کی آیتئمی گیزلدمک خطاسی: سیز باشقا گؤرونوش تنظیملرینین هئچ بیرینی سئچمه‌مک‌له، آیتئملری ایداره‌چیلردن گیزلده بیلنمزسینیز.',
+'revdelete-reason-dropdown' => '*عمومی سیلمک دلیل‌لری
+** کوپی حاقی نقضی
+** اویغون‌سوز باخیش یوخسا شخصی بیلگیلر
+** اویغون‌سوز ایستیفاده‌چی آدی
+** ایفتیرا احتیمالی اولان بیلگیلر',
+'revdelete-otherreason' => 'باشقا/آرتیق دلیل:',
+'revdelete-reasonotherlist' => 'آیری فیکیرلر',
+'revdelete-edit-reasonlist' => 'سیلمک دلیل‌لرینی دَییشدیر',
+'revdelete-offender' => 'نوسخه یازاری:',
+
+# Suppression log
+'suppressionlog' => 'سؤندورمک سیاهی‌سی',
+'suppressionlogtext' => 'آشاغی‌دا ایداره‌چیلردن گیزلنن سیلمکلر و باغلاماقلار شامیل اولان سیاهی گؤستریلیر.
+ایندیکی ایش‌ده اولان باغلاماقلارین سیاهی‌سینی گؤرمگه، [[Special:BlockList|باغلانانلار صحیفه‌سی]]نه باش وورون.',
+
+# History merging
+'mergehistory' => 'صحیفه‌لر بیرلشدیرمه گئچمیشی',
+'mergehistory-header' => 'بو صحیفه ایله، سیز بیر صحیفه‌نین نوسخه‌لرینین گئچمیشینی، یئنی بیر صحیفه‌نینکی ایله بیلشدیره بیلرسینیز.
+آرخایین اولون کی بو دَییشیکلیک تاریخی صحیفه‌نین داوامینی ساخلایاجاق‌دیر.',
+'mergehistory-box' => 'ایکی صحیفه‌نین نوسخه‌لرینی بیرلشدیرمک:',
+'mergehistory-from' => 'قایناق صحیفه:',
+'mergehistory-into' => 'مقصد صحیفه:',
+'mergehistory-list' => 'بیلشدیریله بیلن دَییشیکلیک گئچمیشی',
+'mergehistory-merge' => '[[:$1]]-ین آشاغیداکی نوسخهلری، [[:$2]]-ین‌له بیرلشه بیلرلر.
+یالنیز بلیرلنمیش زامان‌دا و اوندان اؤنجه ائدیلمیش دَییشیکلیکلری بیرلشدیرمک اوچون، گیرده دویمه‌لردن ایستیفاده ائدین.
+دیقت ائدین کی دولانما باغلانتیلارینی ایشلدمک، بو سوتونو یئنی‌له‌یه‌جکدیر.',
+'mergehistory-go' => 'بیرلشدیریله بیلن دَییشیکلیکلری گؤستر',
+'mergehistory-submit' => 'نوسخه‌لری بیرلشدیرمک',
+'mergehistory-empty' => 'نوسخه‌لرین هئچ بیری بیرلشدیریلنمزلر.',
+'mergehistory-success' => '[[:$1]]-ین {{PLURAL:$3|بیر|$3}} نوسخه‌سی باشاری‌لا [[:$2]]-له بیرلشدیریلدی.',
+'mergehistory-fail' => 'گئچمیش بیرلشدیریلنمه‌دی، لوطفاً صحیفه و زامان پارامئترلرینی یئنی‌دن یوخلایین.',
+'mergehistory-no-source' => '$1 قایناق صحیفه‌سی یوخدور.',
+'mergehistory-no-destination' => '$1 مقصد صحیفه‌سی یوخدور.',
+'mergehistory-invalid-source' => 'قایناق صحیفه‌نین گرک دوزگون باشلیغی اولسون.',
+'mergehistory-invalid-destination' => 'مقصد صحیفه‌نین گرک دوزگون باشلیغی اولسون.',
+'mergehistory-autocomment' => '[[:$1]]، [[:$2]] ایله بیرلشدیریلدی',
+'mergehistory-comment' => '[[:$1]]، [[:$2]] ایله بیرلشدیریلدی: $3',
+'mergehistory-same-destination' => 'قایناق و مقصد صحیفه‌لر، بیر اولانمازلار',
+'mergehistory-reason' => 'ندن',
+
+# Merge log
+'mergelog' => 'بیرلشدیرمه سیاهی‌سی',
+'pagemerge-logentry' => '[[$1]]، [[$2]] ایله بیرلشدیریلدی (نوسخه‌لر $3-ه قدر)',
+'revertmerge' => 'آيیر',
+'mergelogpagetext' => 'آشاغدی‌دا، ان سون صحیفه بیرلشدیریلمه‌لری گؤستریلیر.',
+
+# Diffs
+'history-title' => '"$1" صحیفه‌سی‌نین کئچمیشی',
+'difference-title' => '«$1» نوسخه‌لرینین آراسینداکی فرقلری',
+'difference-title-multipage' => '«$1» و «$2» صحیفه‌لرین آراسینداکی فرقلر',
+'difference-multipage' => '(صحیفه‌لر آراسینداکی فرقلر)',
+'lineno' => 'خط $1:',
+'compareselectedversions' => 'سئچیلمیش نوسخه‌لری قارشیلاشدیر',
+'showhideselectedversions' => 'سئچیلمیش نوسخه‌لری گؤستر/گیزلد',
+'editundo' => 'گئری‌دون',
+'diff-multi' => '({{PLURAL:$2|بیر ایستیفاده‌چی|$2 ایستیفاده‌چی}} طرفیندن ائدیلن {{PLURAL:$1|بیر آرا رئداکت|$1 آرا رئداکته}} گؤستریلمیر)',
+'diff-multi-manyusers' => '{{PLURAL:$2|بیر|$2}}-دن چوخ ایستیفاده‌چی یارادان {{PLURAL:$1|بیر|$1}} نوسخه، گؤستریلمه‌ییب‌دیر',
+'difference-missing-revision' => 'بو فرقین ($1) {{PLURAL:$2|بیر|$2}} نوسخه‌سی تاپیلانمادی.
+
+عموماً بو خطا، سیلینن بیر صحیفه‌یه واختی گئچمیش بیر فرق باغلانتی‌سیلا گلمک ایله آرا گلر.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}سیلمک سیاهی‌سی]ندا باشقا بیلگیلر اولا بیلر.',
+
+# Search results
+'searchresults' => 'آختاریش سونوجلاری',
+'searchresults-title' => '«$1» اوچون آختاریش نتیجه‌لری',
+'searchresulttext' => '{{SITENAME}} سایتینی آختارماق‌دا آرتیق بیلگیلر اوچون [[{{MediaWiki:Helppage}}|{{int:help}}]]-ه باخین.',
+'searchsubtitle' => "سیز '''[[:$1]]'''-ی آختاردینیز ([[Special:Prefixindex/$1| «$1» ایله باشلانان بوتون صحیفه‌لر]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|«$1»-ه باغلانان بوتون صحیفه‌لر]])",
+'searchsubtitleinvalid' => "'''$1'''-ی آختاردینیز",
+'toomanymatches' => 'چوخلو سونوچلار تاپیلدی، لوطفاً باشقا بیر سورغویلا چالیشین.',
+'titlematches' => 'صحیفه‌‌ آدی عینیدیر',
+'notitlematches' => 'عینی صحیفه باشلیغی تاپیلمادی',
+'textmatches' => 'یازی عینی‌دیر',
+'notextmatches' => 'هئچ بیر بنزر صحیفه یازی‌سی تاپیلمادی',
+'prevn' => 'اولکی{{PLURAL:$1|$1}}',
+'nextn' => 'سونراکی{{PLURAL:$1|$1}}',
+'prevn-title' => 'اولکی بیر $1 {{PLURAL:$1|نتیجه}}',
+'nextn-title' => 'سونراکی $1 {{PLURAL:$1|سونوج|سونوجلار}}',
+'shown-title' => 'هر صحیفه‌ده {{PLURAL:$1|بیر|$1}} نتیجه گؤستر',
+'viewprevnext' => 'گؤستر ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-legend' => 'آختارماق تنظیملری',
+'searchmenu-exists' => "'''\"[[:\$1]]\" آدلی صحیفه بو ویکی‌ده وار.'''",
+'searchmenu-new' => "'''بو ویکیده \"[[:\$1]]\" صحیفه‌‌سینی يارات !'''",
+'searchhelp-url' => 'Help:ایچینده‌کیلر',
+'searchmenu-prefix' => '[[Special:PrefixIndex/$1| بو اؤن‌اک ایله اولان صحیفه‌لری آختار]]',
+'searchprofile-articles' => 'مقاله‌لر',
+'searchprofile-project' => 'یاردیم و پروژه صحیفه‌لری',
+'searchprofile-images' => 'مولتی‌مئدیا',
+'searchprofile-everything' => 'هرشئی',
+'searchprofile-advanced' => 'گلیشمیش',
+'searchprofile-articles-tooltip' => '$1 ده / دا آختار',
+'searchprofile-project-tooltip' => '$1 ده / دا آختار',
+'searchprofile-images-tooltip' => 'فایل اوچون آختار',
+'searchprofile-everything-tooltip' => 'بوتون متنلری آختار (دانیشیق صحیفه‌لری اولماقلا)',
+'searchprofile-advanced-tooltip' => 'تاپشیریلان صحیفه فضالاریندا آختار',
+'search-result-size' => '$1 ({{PLURAL:$2|۱ سؤزجوک|$2 سؤزجوک}})',
+'search-result-category-size' => '{{PLURAL:$1|1 اویه|$1 اویه‌لر}} ({{PLURAL:$2|1 آلت کاتقوریا|$2 آلت کاتقوریالار}}, {{PLURAL:$3|1 فایل|$3 فایللار}})',
+'search-result-score' => 'اویغونلوق: $1٪',
+'search-redirect' => 'یول‌لاندیرما $1',
+'search-section' => '(بؤلوم $1)',
+'search-suggest' => 'بونو نظرده توتوردونوزمو: $1',
+'search-interwiki-caption' => 'قارداش پروژه‌لر',
+'search-interwiki-default' => '$1 سونوج:',
+'search-interwiki-more' => '(داها)',
+'search-relatedarticle' => 'ایلگیلی',
+'mwsuggest-disable' => 'AJAX اؤنرلرینی باغلا',
+'searcheverything-enable' => 'بوتون آدفضالاریندا آختار',
+'searchrelated' => 'ایلگیلی',
+'searchall' => 'بوتون',
+'showingresults' => "آشاغیدا نومره '''$2'''-دن باشلایان {{PLURAL:$1|'''بیر'''|'''$1'''}} سونوجا قدر گؤستریلیر.",
+'showingresultsnum' => "آشاغیدا نومره '''$2'''-دن باشلایان {{PLURAL:$3|'''بیر'''|'''$3'''}} سونوج گؤستریلیر.",
+'showingresultsheader' => "'''$4''' اوچون {{PLURAL:$5|'''$3'''-دن '''$1''' نتیجه|'''$3'''-دن '''$1-$2''' نتیجه}}",
+'nonefound' => "'''دیقت:''' یالنیز بعضی آدفضالاری آختاریلیر. سورغونوزو ''all:'' اؤن‌اکی‌نی آرتیرماقلا بوتون یئرلرده (او جومله‌دن دانیشیق صحیفه‌لری، شابلونلار و سونرا) آختارین، یوخسا ایسته‌دیگینیز آدفضاسینین آدینی اؤن‌اک کیمی آرتیرین و یالنیز اوردا آختارین.",
+'search-nonefound' => 'سیزین سورونوزا اویغون نتیجه تاپیلمادی.',
+'powersearch' => 'اؤزل آختاریش',
+'powersearch-legend' => 'گلیشمیش آختاریش',
+'powersearch-ns' => 'آدفضالاریندا آختار',
+'powersearch-redir' => 'یوللاندیرمالاری لیست ائت',
+'powersearch-field' => 'آختار:',
+'powersearch-togglelabel' => 'یوخلا:',
+'powersearch-toggleall' => 'بوتون',
+'powersearch-togglenone' => 'هئچ بیری',
+'search-external' => 'ائشیک آختاریش',
+'searchdisabled' => '{{SITENAME}} آختاریشی باغلانیب‌دیر.
+ایندی گوگل ایله آختارا بیلرسینیز.
+دیقت ائدین کی اونون {{SITENAME}} ایندئکسی، کؤهنه اولا بیلر.',
+
+# Quickbar
+'qbsettings' => 'سورعت پانئلی',
+'qbsettings-none' => 'هئچ بیری',
+'qbsettings-fixedleft' => 'سولا ثابیت',
+'qbsettings-fixedright' => 'ساغا ثابیت',
+'qbsettings-floatingleft' => 'سولا اوزن',
+'qbsettings-floatingright' => 'ساغا اوزن',
+'qbsettings-directionality' => 'ثابیت، سیزین دیل یازینیزین یولویلا',
+
+# Preferences page
+'preferences' => 'ترجیحلر',
+'mypreferences' => 'ترجیح‌لر',
+'prefs-edits' => 'دَییشمه‌لرین سایی:',
+'prefsnologin' => 'گیرمه‌میسینیز',
+'prefsnologintext' => 'ایستیفاده‌چی تنظیملرینی دَییشمک اوچون، <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} گیرمه‌لیسینیز]</span>.',
+'changepassword' => 'رمزی دَییشدیر',
+'prefs-skin' => 'قابیق',
+'skin-preview' => 'اؤن‌گؤستریش',
+'datedefault' => 'سئچیم‌سیز',
+'prefs-beta' => 'بئتا اؤزل‌لیکلر',
+'prefs-datetime' => 'تاریخ و واخت',
+'prefs-labs' => 'آزماییشی اؤزل‌لیکلر',
+'prefs-user-pages' => 'ایستیفاده‌چی صحیفه‌لری',
+'prefs-personal' => 'ایستیفاده‌چی پروفایلی',
+'prefs-rc' => 'سون دَییشیکلیکلر',
+'prefs-watchlist' => 'ایزله‌دیکلر',
+'prefs-watchlist-days' => 'ایزله‌دیکلرده گؤستریلن گونلر',
+'prefs-watchlist-days-max' => 'چوخو {{PLURAL:$1|بیر|$1}} گون',
+'prefs-watchlist-edits' => 'گنیشلنمیش ایزله‌مه‌لرده گؤستریلن دَییشیکلیکلرین چوخو:',
+'prefs-watchlist-edits-max' => 'چوخ سایی: ۱۰۰۰',
+'prefs-watchlist-token' => 'ایزله‌دیکلر نیشانی:',
+'prefs-misc' => 'باشقا',
+'prefs-resetpass' => 'رمزی دَییشدیر',
+'prefs-changeemail' => 'ایمیل آدرسینی دَییشدیر',
+'prefs-setemail' => 'بیر ایمیل آدرسی وئر',
+'prefs-email' => 'ایمیل ترجیحلری',
+'prefs-rendering' => 'گؤرونوش',
+'saveprefs' => 'قئید ائت',
+'resetprefs' => 'قئید ائدیلمه‌میش ترجیحلری صیفیرله',
+'restoreprefs' => 'بوتون ایلک ترجیحلری قایتار',
+'prefs-editing' => 'دَییشتیرمک حالیندا',
+'prefs-edit-boxsize' => 'دَییشدیرمه پنجره‌سینین اؤلچو',
+'rows' => 'سطرلر:',
+'columns' => 'سوتونلار',
+'searchresultshead' => 'آختار',
+'resultsperpage' => 'صحیفه‌‌يه عاید تاپیلمیش نتیجه‌لر:',
+'stub-threshold-disabled' => 'چالیشمایان',
+'recentchangescount' => 'سون ديَیشیکلیکلرده باشلیق سايی:',
+'savedprefs' => 'سئچیمینیز قئيد ائدیلدی.',
+'timezonelegend' => 'چاغ بؤلگه‌سی:',
+'localtime' => 'یئرلی چاغ:',
+'timezoneuseserverdefault' => 'ویکی اؤن‌فرضینی ایشلد ($1)',
+'timezoneuseoffset' => 'باشقا (چاغ فرقینی بیلدیر)',
+'timezoneoffset' => 'واقت فرقی¹:',
+'servertime' => 'خیدمتچی چاغی:',
+'guesstimezone' => 'براوزِردن دولدور',
+'timezoneregion-africa' => 'آفریقا',
+'timezoneregion-america' => 'آمریکا',
+'timezoneregion-antarctica' => 'گونئی قطب',
+'timezoneregion-arctic' => 'قوزئی قطب',
+'timezoneregion-asia' => 'آسیا',
+'timezoneregion-atlantic' => 'اطلس اوقیانوسو',
+'timezoneregion-australia' => 'اوسترالیا',
+'timezoneregion-europe' => 'اوروپا',
+'timezoneregion-indian' => 'هیند اوقیانوسو',
+'timezoneregion-pacific' => 'بؤیوک اوقیانوس',
+'allowemail' => 'باشقا ایستیفاده‌چیلردن ایمیل آلماغی آچ',
+'prefs-searchoptions' => 'آختار',
+'prefs-namespaces' => 'آدلار فضاسی:',
+'defaultns' => 'یوخسا بو آدفضالاریندا آختار:',
+'default' => 'فرض ائدیلن',
+'prefs-files' => 'فایل‌لار',
+'prefs-custom-css' => 'شخصی سی‌اس‌اس',
+'prefs-custom-js' => 'شخصی جاوااسکریپت',
+'prefs-common-css-js' => 'بوتون قابیقلار اوچون پایلاشمیش سی‌اس‌اس/جاوااسکریپت:',
+'prefs-reset-intro' => 'ترجیحلرینیزی سایتین ایلک فرض ائدیلنلرینه دؤندرمک اوچون، بو صحیفه‌دن ایستیفاده ائده بیلرسینیز.
+بو ایش قایتاریلا بیلمز.',
+'prefs-emailconfirm-label' => 'ایمیل دوغرولاماسی:',
+'prefs-textboxsize' => 'دَییشدیرمه قوتوسونون اؤلچو',
+'youremail' => 'ایمیل:',
+'username' => 'ایستیفاده‌چی آدی:',
+'uid' => 'ایستیفاده‌چی ID:',
+'prefs-memberingroups' => '{{PLURAL:$1|گروپ|گروپلار}} عوضوو:',
+'prefs-registration' => 'یازیلماق واختی:',
+'yourrealname' => 'دوغرو آد',
+'yourlanguage' => 'دیل:',
+'yourvariant' => 'دیل واریانتی:',
+'prefs-help-variant' => 'بو ویکی‌نین ایچینده‌کیلری‌نین گؤستریلدیگی اوچون سئچدیگینیز واریانت یوخسا اورتوقرافی.',
+'yournick' => 'یئنی ایمضا:',
+'prefs-help-signature' => 'دانیشیق صحیفه‌لرینده یاخیشلار گرک «<nowiki>~~~~</nowiki>» ایله ایمضالانالار. بو نیشان اوتوماتیک‌جه سیزین آدینیز و تاریخه دؤنه‌جک‌دیر.',
+'badsig' => 'یانلیش خام ایمضا.
+اچ‌تی‌ام‌ال تگ‌لرینی یوخلایین.',
+'badsiglength' => 'ایمضانیز چوخ اوزون‌دور.
+او گرک {{PLURAL:$1|بیر|$1}} حرف‌دن اوزون اولمایا.',
+'yourgender' => 'جینس:',
+'gender-unknown' => 'بیلیندیرمه‌میش',
+'gender-male' => 'آقا',
+'gender-female' => 'خانیم',
+'prefs-help-gender' => 'ایستگه یاغلی: یازیلیم‌لا، دوزگون جنسیته ایلگی‌لی آدرس وئرمک اوچون ایشنیر.
+بو بیلگی، عمومی اولاجاق‌دیر.',
+'email' => 'ایمیل',
+'prefs-help-realname' => 'اصلی آد ایستگه باغلی‌دیر.
+اگر اونو وئرماغی سئچسز، سیزین ایشلرینیزی سیزه مونتسب ائدن‌ده، بو اصلی آد ایشلنه‌جک‌دیر.',
+'prefs-help-email' => 'ایمیل آدرسی ایسته‌یه باغلی‌دیر، آنجاق بو پسووردوزو اۇنوتدوغوز حالدا سیزه يئنی پسوورد گؤندرمه‌يه ایمکان وئریر',
+'prefs-help-email-others' => 'سیز هم‌ده باشقا ایشلدنلره ایجازه وئره بیلرسیز، سیزین ایشلدن یوخسا دانیشیق یارپاغیزدا بیر باغلانتی واسیطه‌سی ایله، سیزله ایلگی قورسونلار.
+باشقا ایشلدنلر سیزینله ایلگی قوراندا، ایمیل آدرسیز گؤستریلمه‌یه‌جک‌دیر.',
+'prefs-help-email-required' => 'ایمیل آدرس گرکلی‌دیر.',
+'prefs-info' => 'اساس بیلگیلر',
+'prefs-i18n' => 'اولوسلارآراسی‌لاشدیرما',
+'prefs-signature' => 'ایمضا',
+'prefs-dateformat' => 'تاریخ فورمتی',
+'prefs-timeoffset' => 'ساعات قورشاغینین فرقی',
+'prefs-advancedediting' => 'گلیشمیش سئچَنکلر',
+'prefs-advancedrc' => 'گلیشمیش سئچَنکلر',
+'prefs-advancedrendering' => 'گلیشمیش سئچَنکلر',
+'prefs-advancedsearchoptions' => 'گلیشمیش سئچَنکلر',
+'prefs-advancedwatchlist' => 'گلیشمیش سئچَنکلر',
+'prefs-displayrc' => 'گؤرونتو سئچَنکلری',
+'prefs-displaysearchoptions' => 'گؤرونتو سئچَنکلری',
+'prefs-displaywatchlist' => 'گؤرونتو سئچَنکلری',
+'prefs-diffs' => 'فرقلر',
+
+# User preference: e-mail validation using jQuery
+'email-address-validity-valid' => 'ایمیل آدرسی، گئچرلی نظره گلیر',
+'email-address-validity-invalid' => 'گئچرلی بیر ایمیل آدرسی وئرین',
+
+# User rights
+'userrights' => 'ایستیفاده‌چی حاقلاری ایداره‌سی',
+'userrights-lookup-user' => 'ایستیفاده‌چی گروپلاری ایداره‌سی',
+'userrights-user-editname' => 'ایستیفاده‌چی آدی‌نیزی یازین',
+'editusergroup' => 'ایستیفاده‌چی قروپونو دَییشدیر',
+'userrights-editusergroup' => 'ایستیفاده‌چی قروپونو دَییشدیر',
+'saveusergroups' => 'ایستیفاده‌چی قروپونو قئيد ائت',
+'userrights-groupsmember' => 'داخیل اولدوغو قروپلار:',
+'userrights-groupsmember-auto' => 'گومان ائدیلن عضو:',
+'userrights-reason' => 'ندن:',
+'userrights-no-interwiki' => 'سیزه باشقا ویکی لايیهه‌لرده‌کی ایستیفاده‌چیلرین ائستاتوسونو ديَیشمه‌يه ایزین وئریلمه‌يیب',
+'userrights-nodatabase' => '$1 وئریلنلر بازاسی يا مؤوجود دئيیل، يا دا لوکال دئيیل.',
+'userrights-changeable-col' => 'ديَیشدیره بیلدیگینیز قروپلار',
+'userrights-unchangeable-col' => 'ديَیشدیره بیلمه‌دیگینیز قروپلار',
+
+# Groups
+'group' => 'گروپ:',
+'group-user' => 'ایستفاده‌چیلر',
+'group-autoconfirmed' => 'اوتوماتیک دوغرولانمیش ایستیفاده‌چیلر',
+'group-bot' => 'بوتلار',
+'group-sysop' => 'ایداره‌چیلر',
+'group-bureaucrat' => 'بوروکراتلار',
+'group-suppress' => 'باخانلار',
+'group-all' => '(بوتون)',
+
+'group-user-member' => '{{GENDER:$1|ایستیفاده‌چی}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|دوغرولانمیش ایستیفاده‌چی}}',
+'group-bot-member' => '{{GENDER:$1|بوت}}',
+'group-sysop-member' => '{{GENDER:$1|ایداره‌چی}}',
+'group-bureaucrat-member' => '{{GENDER:$1|بوروکرات}}',
+'group-suppress-member' => '{{GENDER:$1|نظارت}}',
+
+'grouppage-user' => '{{ns:project}}:ایستیفاده‌چیلر',
+'grouppage-autoconfirmed' => '{{ns:project}}:دوغرولانمیش ایستیفاده‌چیلر',
+'grouppage-bot' => '{{ns:project}}:بوتلار',
+'grouppage-sysop' => '{{ns:project}}:ایداره‌چیلر',
+'grouppage-bureaucrat' => '{{ns:project}}:بوروکراتلار',
+'grouppage-suppress' => '{{ns:project}}:نظارت',
+
+# Rights
+'right-read' => 'صحیفه‌لری اوخو',
+'right-edit' => 'صحیفه‌لری دَییشدیر',
+'right-createpage' => 'صحیفه‌لری یاراد (دانیشیق صحیفه‌لر نظرده توتولمور)',
+'right-createtalk' => 'دانیشیق صحیفه‌لری یاراد',
+'right-createaccount' => 'یئنی ایستیفاده‌چی حسابلاری یاراد',
+'right-minoredit' => 'دَییشیکلیکلری، کیچیک اولاراق نیشانلا',
+'right-move' => 'صحیفه‌لرین آدینی دَییشدیر',
+'right-move-subpages' => 'صحیفه‌لرین آدلارینی، آلت‌صحیفه‌لری ایله بیرلیکده، دَییشدیر',
+'right-move-rootuserpages' => 'ایستیفاده‌چی کؤک صحیفه‌لرینین آدلارینی دَییشدیر',
+'right-movefile' => 'فایل‌لارین آدلارینی دَییشدیر',
+'right-suppressredirect' => 'صحیفه‌لرین آدینی دَییشدیرنده، قایناق صحیفه‌لردن یوللاندیرما یارادما',
+'right-upload' => 'فایل یوکله‌یین',
+'right-reupload' => 'اؤنجه‌دن اولان فایل‌لارین اوستونه یاز',
+'right-reupload-own' => 'همن ایستیفاده‌چی ایله یوکلنن فایل‌لارین اوستونه یاز',
+'right-reupload-shared' => 'عمومی آنبارها اولان فایل‌لاری، محلی اولاراق ابطال ائت',
+'right-upload_by_url' => 'فایل‌لاری بیر اینترنت آدرسیندن یوکله',
+'right-purge' => 'بیر صحیفه‌نین کَشینی، دوغرولانمامیش سیل',
+'right-autoconfirmed' => 'یاریم‌قورونموش صحیفه‌لری دَییشدیر',
+'right-bot' => 'بیر اوتوماتیک پروسئس کیمی حساب اولون',
+'right-nominornewtalk' => 'دانیشیق صحیفه‌لرده کیچیک دَییشیکلیک، یئنی مئساژ یارادماسین',
+'right-apihighlimits' => 'API سورغولاریندا، یوخاری محدودیتلر ایشلد',
+'right-writeapi' => 'یازان API ایشلد',
+'right-delete' => 'صحیفه‌لری سیل',
+'right-bigdelete' => 'یئکه گئچمیشلری اولان صحیفه‌لری سیل',
+'right-deletelogentry' => 'بعضی خاص سیاهی آیتئملرینی سیل و سیلماغی قایتار',
+'right-deleterevision' => 'بعضی خاص صحیفه نوسخه‌لرینی سیل و سیلماغی قایتار',
+'right-deletedhistory' => 'سیلینمیش گئچمیش آیتئملرینی، یازیلارینی گؤسترمه‌مکله، گؤستر',
+'right-deletedtext' => 'سیلینمیش یازی و سیلینمیش نوسخه‌لر آراسینداکی فرقلره باخ',
+'right-browsearchive' => 'سیلینمیش صحیفه‌لری آختار',
+'right-undelete' => 'بیر صحیفه‌نین سیلینمگینی قایتار',
+'right-suppressrevision' => 'ایداره‌چیلردن گیزلی اولان نوسخه‌لره باخ و قایتار',
+'right-suppressionlog' => 'خصوصی سیاهی‌لره باخ',
+'right-block' => 'باشقا ایستیفاده‌چیلرله دَییشدیرمگی باغلا',
+'right-blockemail' => 'بیر ایستیفاده‌چینین ایمیل گؤندرمگینی باغلا',
+'right-hideuser' => 'بیر ایستیفاده‌چی آدینی باغلا و اونو عموم‌دان گیزلد',
+'right-ipblock-exempt' => 'آی‌پی باغلاماقلاری، اوتوماتیک باغلاماقلاری و سیرا باغلاماقلاریندان گئچ',
+'right-proxyunbannable' => 'پروکسیلرین اوتوماتیک باغلاماقلاریندان گئچ',
+'right-unblockself' => 'اؤزلرینی آچسینلار',
+'right-protect' => 'قوروماق سطحینی و قورونموش صحیفه‌لری دَییشدیر',
+'right-editprotected' => 'قورونموش صحیفه‌لری (قورونماقلاری مونتشیر اولمایان) دَییشدیر',
+'right-editinterface' => 'ایستیفاده‌چی آرا-اوزونو دَییشدیر',
+'right-editusercssjs' => 'باشقا ایستیفاده‌چیلرین سی‌اس‌اس و جاوااسکریپت فایل‌لارینی دَییشدیر',
+'right-editusercss' => 'باشقا ایستفاده‌چیلرین سی‌اس‌اس فایل‌لارینی دَییشدیر',
+'right-edituserjs' => 'باشقا ایستیفاده‌چیلرین جاوااسکریپت فایل‌لارینی دَییشدیر',
+'right-rollback' => 'بیر خاص صحیفه‌نی سون دفعه دَییشدیرن ایستیفاده‌چینین دَییشیکلیکلرینی تئزلیکله قایتار',
+'right-markbotedits' => 'قایتاریلان دَییشیکلیکلری، بوت دَییشیکلیگی اولاراق نیشانلا',
+'right-noratelimit' => 'سورعت محدودیتلریندن گئچ',
+'right-import' => 'باشقا ویکیلردن صحیفه گیردیر',
+'right-importupload' => 'بیر فایل یوکلمه‌سیندن صحیفه گیردیر',
+'right-patrol' => 'باشقالارین دَییشیکلیکلرینه نظارت ائت',
+'right-autopatrol' => 'بیر کسین اؤز دَییشیکلیکلرینی، نظارتلنمیش اولاراق نیشانلا',
+'right-patrolmarks' => 'سون نظارتلنمیش دَییشیکلیکلره باخ',
+'right-unwatchedpages' => 'نظارتلنمه‌میش صحیفه‌لرین لیستینه باخ',
+'right-mergehistory' => 'صحیفه‌لرین گئچمیشلرینی بیرلشدیر',
+'right-userrights' => 'بوتون ایستیفاده‌چی حاقلارینی دَییشدیر',
+'right-userrights-interwiki' => 'باشقا ویکیلرده‌کی ایستیفاده‌چیلرین ایستیفاده‌چی حاقلارینی دَییشدیر',
+'right-siteadmin' => 'دیتابیسی قیفیل‌لا و قیفیلینی آچ',
+'right-override-export-depth' => 'ایچری باغلانتیلاری اولان صحیفه‌لری، چوخو ۵ درجه درینلیگی ایله، ایخراج ائت',
+'right-sendemail' => 'باشقا ایستیفاده‌چیلره ایمیل گؤندر',
+'right-passwordreset' => 'رمز یئنی‌له‌مه ایمیل‌لرینه باخ',
+
+# User rights log
+'rightslog' => 'ایستیفاده‌چی حاقلاری سیاهی‌سی',
+'rightslogtext' => 'بو، ایستیفاده‌چی حاقلارینا اولان دَییشیکلیکلر سیاهی‌سی‌دیر.',
+'rightslogentry' => '$1-ین گروپ عوضولوغو، $2-دن $3-ه دَییشدیریلدی',
+'rightslogentry-autopromote' => 'اوتوماتیک اولاراق $2-دن $3-ه مقامی آرتیریلدی',
+'logentry-rights-rights' => '$1 $3-ین گروپ عوضولوگونو $4-دن $5-ه دَییشدیردی',
+'logentry-rights-rights-legacy' => '$1، $3-ین گروپ عوضولوگونو دَییشدیردی',
+'logentry-rights-autopromote' => '$1-ین مقامی اوتوماتیک $4-دن $5-ه آرتیریلدی',
+'rightsnone' => '(هئچ)',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-read' => 'بو صحیفه‌نی اوخو',
+'action-edit' => 'بو صحیفه‌نی دَییشدیر',
+'action-createpage' => 'صحیفه یاراد',
+'action-createtalk' => 'دانیشیق صحیفه‌سی یاراد',
+'action-createaccount' => 'بو ایستیفاده‌چی حسابینی یاراد',
+'action-minoredit' => 'بو دَییشیکلیگی، کیچیک اولاراق نیشانلا',
+'action-move' => 'بو صحیفه‌‌نین آدینی ديَیشدیر',
+'action-move-subpages' => 'بو صحیفه‌نین آدینی، آلت‌صحیفه‌لری ایله بیرلیکده دَییشدیر',
+'action-move-rootuserpages' => 'ایستیفاده‌چی کؤک صحیفه‌لرینین آدلارینی دَییشدیر',
+'action-movefile' => 'بو فایلین آدینی دَییشدیر',
+'action-upload' => 'بو فایلی یوکله',
+'action-reupload' => 'بو اؤنجه‌دن اولان فایلین اوستونه یاز',
+'action-reupload-shared' => 'بو فایلی بیر عمومی آنبارها ایبطال ائت',
+'action-upload_by_url' => 'بو فایلی بیر اینترنت آدرسیندن یوکله',
+'action-writeapi' => 'یازان API ایشلد',
+'action-delete' => 'بو صحیفه‌‌نی سیل',
+'action-deleterevision' => 'بو نوسخه‌نی سیل',
+'action-deletedhistory' => 'بو صحیفه‌نین سیلینمیش گئچمیشینه باخ',
+'action-browsearchive' => 'سیلینمیش صحیفه‌لری آختار',
+'action-undelete' => 'بو صحیفه‌نین سیلمگینی قایتار',
+'action-suppressrevision' => 'بو گیزلی نوسخه‌یه یئنی‌دن باخ و اونو قایتار',
+'action-suppressionlog' => 'بو خصوصی سیاهی‌یا باخ',
+'action-block' => 'بو ایستیفاده‌چی‌نین دَییشدیرمه‌سینین قاباغینی آل',
+'action-protect' => 'بو صحیفه اوچون قورونماق سطحلرینی دَییشدیر',
+'action-rollback' => 'بیر خاص صحیفه‌نی سون دفعه دَییشدیرن ایستیفاده‌چینین دَییشیکلیکلرینی تئزلیکله قایتار',
+'action-import' => 'بو صحیفه‌نی باشقا بیر ویکی‌دن گیردیر',
+'action-importupload' => 'بو صحیفه‌نی بیر فایل یوکلمه‌سیندن گیردیر',
+'action-patrol' => 'باشقالارین دَییشیکلیکلرینی، نظارتلنمیش اولاراق نیشانلا',
+'action-autopatrol' => 'اؤز دَییشیکلیکلرینیزی نظارتلنمیش اولاراق نیشانلا',
+'action-unwatchedpages' => 'نظارتلنمه‌میش صحیفه‌لرین لیستینه باخ',
+'action-mergehistory' => 'بو صحیفه‌نین گئچمیشینی بیرلشدیر',
+'action-userrights' => 'بوتون ایستیفاده‌چی حاقلارینی دَییشدیر',
+'action-userrights-interwiki' => 'باشقا ویکیلرده‌کی ایستیفاده‌چیلرین ایستیفاده‌چی حاقلارینی دَییشدیر',
+'action-siteadmin' => 'دیتابیسی قیفیل‌لا یا قیفیلینی آچ',
+'action-sendemail' => 'ایمیل گؤندر',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|دَییشیکلیک}}',
+'recentchanges' => 'سون دَییشیکلیکلر',
+'recentchanges-legend' => 'سون دییشیکلر سئچمه‌لری',
+'recentchanges-summary' => 'بو صحیفه‌ده، ویکی‌یه ان سون وئریلن دَییشیکلیکلری ایزله.',
+'recentchanges-feed-description' => 'ویکی‌ده‌کی ان سون ديَیشیکلیک‌لری بو يايیم کانالیندان ایزله‌يین.',
+'recentchanges-label-newpage' => 'بو دییشیک یئنی بیر صحیفه یاراتدی',
+'recentchanges-label-minor' => 'بو بیر کیچیک دَییشدیرمه‌دیر',
+'recentchanges-label-bot' => 'بو دییشیک بیر بوت طرفین‌دن ائدیلیب‌دیر',
+'recentchanges-label-unpatrolled' => 'بو دییشیک هله گؤزدن کئچیریلمه‌ییب‌دیر',
+'rcnote' => "آشاغیداکی {{PLURAL:$1|'''1''' ديَیشیکلیک|'''$1''' ديَیشیکلیک}} ساعت$5, $4 تاریخینه قدر سون {{PLURAL:$2|گون|'''$2''' گون}} عرضینده ائدیلمیشدیر.",
+'rcnotefrom' => "آشاغیدا '''$2'''-دن ('''$1'''-ه قدر) ديَیشیکلیکلر سادالانمیشدیر.",
+'rclistfrom' => '$1 واختیندان باشلایاراق یئنی دییشیکلری گؤستر',
+'rcshowhideminor' => 'کیچیک دییشیکلری $1',
+'rcshowhidebots' => 'بوتلاری $1',
+'rcshowhideliu' => 'ایچری گیرمیش ایستیفاده‌چیلری $1',
+'rcshowhideanons' => 'تانینمامیش ایستیفاده‌چیلری $1',
+'rcshowhidepatr' => 'نظارت ائدیلن دَییشیکلری $1',
+'rcshowhidemine' => 'منیم دییشیکلریمی $1',
+'rclinks' => 'سون $2 گون عرضینده‌کی سون  $1 ديَیشیکلیگی گؤستر <br />$3',
+'diff' => 'فرق',
+'hist' => 'گئچمیش',
+'hide' => 'گیزلت',
+'show' => 'گؤستر',
+'minoreditletter' => 'ک',
+'newpageletter' => 'ی',
+'boteditletter' => 'ب',
+'number_of_watching_users_pageview' => '[{{PLURAL:$1|بیر|$1}} ایزله‌ین ایستیفاده‌چی]',
+'rc_categories' => 'بؤلمه‌لره محدودلاشدیر («|» ایله آییر)',
+'rc_categories_any' => 'هر',
+'rc-change-size-new' => 'دَییشیکلیک‌دن سونرا {{PLURAL:|بیر|$1}} بایت',
+'newsectionsummary' => '/* $1 */ یئنی بؤلمه',
+'rc-enhanced-expand' => 'تفصیلاتی گؤستر (جاوااسکریپت لازیم‌دیر)',
+'rc-enhanced-hide' => 'تفصیل‌لری گیزلت',
+'rc-old-title' => 'ایلک‌جه «$1» آدی‌له یارانمیشدیر',
+
+# Recent changes linked
+'recentchangeslinked' => 'ایلگیلی دَییشیکلیکلر',
+'recentchangeslinked-feed' => 'ایلگیلی دَییشیکلیکلر',
+'recentchangeslinked-toolbox' => 'ایلگیلی دَییشیکلیکلر',
+'recentchangeslinked-title' => "''$1'' ایله ایلگی‌لی دییشیکلر",
+'recentchangeslinked-noresult' => 'قئيد اوْلونان دؤورده علاقه‌دار صحیفه‌‌لرده هئچ بیر ديَیشیکلیک يوْخدور.',
+'recentchangeslinked-summary' => "آشاغیداکی سیياهی، قئيد اوْلونان صحیفه‌‌يه (و يا قئيد اوْلونان کاتئقوْرياداکی صحیفه‌‌لره) داخیلی کئچید وئرن صحیفه‌‌لرده ائدیلمیش سوْن ديَیشیکلیکلرین سیياهیسیدیر. 
+[[Special:Watchlist|ایزله‌مه سیياهینیزداکی]] صحیفه‌‌لر '''قالین''' شریفتله گؤستریلمیشدیر.",
+'recentchangeslinked-page' => 'صحیفه آدی:',
+'recentchangeslinked-to' => 'قئيد اوْلونان صحیفه‌‌ده‌کی دئيیل، اوْنا داخیلی کئچید وئرن صحیفه‌‌لرده‌کی ديَیشیکلیکلری گؤستر',
+
+# Upload
+'upload' => 'فایل یوکله‌یین',
+'uploadbtn' => 'فایل یوکله‌یین',
+'reuploaddesc' => 'يوکلئمئ فورمونا گئری دؤن.',
+'upload-tryagain' => 'ديَشدیریلمیش فايل ایضاهینی گؤندر',
+'uploadnologin' => 'گیریش ائتمه‌میسینیز',
+'uploadnologintext' => 'فايل يوکله‌مک اوچون [[Special:UserLogin|گیریش ائتمه‌میسینیز]].',
+'uploaderror' => 'یوکلمه خطاسی',
+'upload-permitted' => 'ایجازه وئریلن فايل تیپلری: $1.',
+'upload-preferred' => 'ایجازه وئریلن فايل تیپلری: $1.',
+'upload-prohibited' => 'ایجازه وئریلمه‌ين فايل تیپلری: $1.',
+'uploadlog' => 'يوکله‌مه قئيدی',
+'uploadlogpage' => 'یوکلمه قئیدلری',
+'uploadlogpagetext' => 'آشاغیدا ان سون یوکله‌نیلن فایل‌لارین لیستی گؤستریلیر.
+داها گؤرونوش‌لو گؤسترمک اوچون، [[Special:NewFiles|یئنی فایل‌لار گالئری‌سینه]] باخین.',
+'filename' => 'فایل آدی',
+'filedesc' => 'قیساسی',
+'fileuploadsummary' => 'قیساسی:',
+'filereuploadsummary' => 'فایل دَییشیکلری:',
+'filestatus' => 'مؤلف حوقوقلاری:',
+'filesource' => 'قایناق:',
+'uploadedfiles' => 'یوکلنمیش فایللار‌',
+'ignorewarning' => 'خبردارلیقلارا اهمیت وئرمه و فايلی ساخلا',
+'ignorewarnings' => 'بوتون خبردارلیقلارا محل قويماماق',
+'minlength1' => 'فايل آدی ان آزی بیر حرفدن عبارت اولمالیدیر.',
+'filetype-missing' => 'فايلین هئچ بیر اوزانتیسی يوخدور (مثلا، ".jpg").',
+'empty-file' => 'سیز یول‌لادیغینیز فایل، بوش ایدی.',
+'filename-tooshort' => 'فایل آدی چوخ قیسادی.',
+'unknown-error' => 'بیلینمه‌ين بیر خطا ياراندی.',
+'tmp-create-error' => 'مووققتی فايل يارادیلا بیلمه‌دی.',
+'uploadedimage' => '"[[$1]]" یوکلندی',
+'sourceurl' => 'قایناق آدرسی',
+'upload-description' => 'فایل ایضاهی',
+'upload-options' => 'یوکلمه سئچینیکلر',
+'upload-failure-msg' => '[$2]-دن یوکله‌دیگینیزده بیر ایشکال قاباغا گلدی:
+
+$1',
+'upload-warning-subj' => 'یوکلمه خبردارلیغی',
+'upload-warning-msg' => '[$2]-دن یوکله‌دیگینیزده بیر ایشکال قاباغا گلدی. بو ایشکالی دوزلدمک اوچون، [[Special:Upload/stash/$1|یوکلمه فورمو]]نا قاییدا بیلرسینیز.',
+
+'upload-proto-error' => 'یانلیش پروتوکول',
+'upload-proto-error-text' => 'اوزاقدان یوکلمه، <code>http://</code> یوخسا <code>ftp://</code> ایله باشلانان آدرس ایسته‌ییر.',
+'upload-file-error' => 'ایچ خطاسی',
+
+# Special:UploadStash
+'uploadstash' => 'گیزلی يوکله‌مه',
+'uploadstash-clear' => 'مووققتی فايللاری تمیزله',
+'uploadstash-refresh' => 'فايل سیياهیسینی يئنیله',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'گیریش قاداغاندیر',
+
+'license' => 'لیسانس:',
+'license-header' => 'لیسانس',
+'nolicense' => 'هئچ‌بیری سئچیلمه‌ییب',
+'license-nopreview' => '(اؤن‌گؤستریش یوخدور)',
+'upload_source_url' => '(بیر گئچرلی و عموم گؤره بیلن اینترنت آدرسی)',
+'upload_source_file' => '(بیلگی‌سایارینیزدا بیر فایل)',
+
+# Special:ListFiles
+'listfiles-summary' => 'بو اؤزل صحیفه، بوتون یوکله‌نیلن فایل‌لاری گؤستریر.
+ایستیفاده‌چیه فیلتر اولوناندا، یالنیز او ایستیفاده‌چی سون نوسخه‌لرینی یوکله‌ین فایل‌لار گؤستریلیر.',
+'listfiles_search_for' => 'مئدیا آدی اوچون آختار:',
+'imgfile' => 'فایل',
+'listfiles' => 'فایل لیستی',
+'listfiles_thumb' => 'کیچیک شکیل',
+'listfiles_date' => 'تاریخ',
+'listfiles_name' => 'آد',
+'listfiles_user' => 'ایستیفاده‌چی',
+'listfiles_size' => 'اؤلچو',
+'listfiles_description' => 'شرح',
+'listfiles_count' => 'نوسخه‌لر',
+
+# File description page
+'file-anchor-link' => 'فایل',
+'filehist' => 'فايل گئچمیشی',
+'filehist-help' => 'فايلین اول‌کی وئرسیياسینی گؤرمک اۆچون گۆن/تاریخ بؤلمه‌سینده‌کی تاریخلری تێقلايین.',
+'filehist-deleteall' => 'هاممی‌سین سیل',
+'filehist-deleteone' => 'سیل',
+'filehist-revert' => 'قایتار',
+'filehist-current' => 'ایندیکی',
+'filehist-datetime' => 'تاریخ/واخت',
+'filehist-thumb' => 'کیچیک شکیل',
+'filehist-thumbtext' => '$1 تاریخینده‌کی وئرسیيانین کیچیلدیلمیش گؤرونتوسو',
+'filehist-nothumb' => 'کیچیک شکیل یوخدو',
+'filehist-user' => 'ایستیفاده‌چی',
+'filehist-dimensions' => 'اؤلچولر',
+'filehist-filesize' => 'فایل اؤلچوسو',
+'filehist-comment' => 'باخیش',
+'filehist-missing' => 'فایل یوخدور',
+'imagelinks' => 'فايل کئچیدلری',
+'linkstoimage' => 'آشاغیداکی {{PLURAL:$1|صحیفه|$1 صحیفه‌لر}} بو فایلا {{PLURAL:$1|باغلانیر|باغلانیرلار}}',
+'linkstoimage-more' => 'بو فایلا {{PLURAL:$1|بیر|$1}}-دن چوخ صحیفه باغلانتی‌سی واردیر.
+آشاغیداکی لیست بو فایلا یالنیز ایلک $1 صحیفه باغلانتیسینی گؤستریر.
+بیر [[Special:WhatLinksHere/$2|بوتون لیست]] ده واردیر.',
+'nolinkstoimage' => 'بو فایلا هئچ بیر صحیفه باغلانماییب.',
+'sharedupload-desc-here' => 'بو فایل $1-دن‌دیر و آیری پروژه‌ده ایستیفاده اولماق امکانی وار.
+اونون باره‌سینده اولان شرح [$2 فایلین شرح صحیفه‌سی] آشاغیدا گوستریلیب.',
+'shared-repo-from' => '$1-دن',
+
+# File reversion
+'filerevert-legend' => 'فايلی اولکی وضعیتینه قايتار',
+
+# File deletion
+'filedelete' => 'سیل $1',
+'filedelete-legend' => 'فایلی سیل',
+'filedelete-intro' => "سیز '''[[Media:$1|$1]]''' فایلینی بوتون گئچمیشی‌له بیرلیکده سیلمک‌ده‌سینیز.",
+'filedelete-intro-old' => "سیز '''[[Media:$1|$1]]''' فایلینین [$4 $3، $2]-ده‌کی نوسخه‌سینی سیلمک‌ده‌سینیز.",
+'filedelete-comment' => 'نَدَن‌لیک:',
+'filedelete-submit' => 'سیل',
+'filedelete-reason-otherlist' => 'باشقا سبب',
+'filedelete-edit-reasonlist' => 'سیلمک دلیل‌لرینی دَییشدیر',
+'filedelete-maintenance' => 'ساخلاماق سیراسیندا، فایل‌لاری سیلمک و قایتارماق، گئچرلی اولاراق باغلی‌دیر.',
+'filedelete-maintenance-title' => 'فایل سیلیننمه‌دی',
+
+# MIME search
+'mimesearch' => 'MIME آختار',
+'mimesearch-summary' => 'بو صحیفه، فایل‌لارین MIME-لارینا گؤره فیلترله‌مگی آچار.
+وئرمک: contenttype/subtype، میثال: <code>image/jpeg</code>.',
+'mimetype' => 'MIME تیپی:',
+'download' => 'اَندیر',
+
+# Unwatched pages
+'unwatchedpages' => 'ایزلنمه‌میش صحیفه‌لر',
+
+# List redirects
+'listredirects' => 'یول‌لاندیرمالارین لیستی',
+
+# Unused templates
+'unusedtemplates' => 'ایشلدیلمه‌میش شابلونلار',
+'unusedtemplatestext' => 'بو صحیفه بوتون، {{ns:template}} آدفضاسیندا اولان و باشقا صحیفه‌لرده اولمایان صحیفه‌لری لیست ائدیر.
+شابلونلاری سیلمک‌دن اؤنجه، لوطفاً اونلارا اولان باشقا باغلانتیلاری یوخلایین.',
+'unusedtemplateswlh' => 'باشقا باغلانتیلار',
+
+# Random page
+'randompage' => 'راست‌گله صحیفه',
+'randompage-nopages' => 'بو {{PLURAL:$2|آدفضاسیندا|آدفضالاریندا}} هئچ صحیفه یوخدور: $1.',
+
+# Random redirect
+'randomredirect' => 'راست‌گله یول‌لاندیرما',
+'randomredirect-nopages' => '«$1» آدفضاسیندا هئچ بیر یول‌لاندیرما یوخدور.',
+
+# Statistics
+'statistics' => 'آمارلار',
+'statistics-header-pages' => 'صحیفه آمارلاری',
+'statistics-header-edits' => 'دَییشمه آمارلاری',
+'statistics-header-views' => 'باخما آمارلاری',
+'statistics-header-users' => 'ایستیفاده‌چی آمارلاری',
+'statistics-header-hooks' => 'باشقا آمارلار',
+'statistics-articles' => 'مقاله‌لر',
+'statistics-pages' => 'صحیفه‌لر:',
+'statistics-pages-desc' => 'بو ویکی‌ده بوتون صحیفه‌لر، او جومله‌دن دانیشیق صحیفه‌لری، یول‌لاندیرمالار و سونرا.',
+'statistics-files' => 'یوکلنمیش فایل‌لار',
+'statistics-edits' => '{{SITENAME}} یولا دوشندن بَری صحیفه دَییشیکلیکلری',
+'statistics-edits-average' => 'هر صحیفه‌ده اورتا دَییشیکلیک سایی',
+'statistics-views-total' => 'گؤرونوشلر جمعی',
+'statistics-views-total-desc' => 'اولمایان صحیفه‌لر و اؤزل صحیفه‌لره گؤرونوشلر، داخیل ائدیلمه‌ییب‌دیر',
+'statistics-views-peredit' => 'دَییشیکلیگه گؤرونوشلر',
+'statistics-users' => 'یازیلمیش [[Special:ListUsers|ایستیفاده‌چیلر]]',
+'statistics-users-active' => 'چالیشقان ایستیفاده‌چیلر',
+'statistics-users-active-desc' => 'سون {{PLURAL:$1|بیر|$1}} گون‌ده بیر ایش گؤرن ایستیفاده‌چیلر',
+'statistics-mostpopular' => 'ان چوخ گؤرونموش صحیفه‌لر',
+
+'disambiguations' => 'آیدین‌لاشدیرما صحیفه‌لرینه باغلانتیلاری اولان صحیفه‌لر',
+'disambiguationspage' => 'Template:دقیقلش‌دیرمه',
+'disambiguations-text' => "آشاغیداکی صحیفه‌لرده آزی بیر باغلانتی، '''بلیرلیندیمه صحیفه‌لری'''نه واردیر.
+اولا بیلر اونلاری داها اویغون صحیفه‌یه باغلاماق لازیم اولا.<br />
+بیر صحیفه، بلیرلندیرمه صحیفه‌سی کیمی اولار، اگر [[MediaWiki:Disambiguationspage]] صحیفه‌سینه باغلانمیش بیر شابلون‌دان ایستیفاده ائتسه.",
+
+'doubleredirects' => 'ایکی‌قات یول‌لاندیرمالار',
+'double-redirect-fixer' => 'يؤنلندیرمه تعمیرجیسی',
+
+'brokenredirects' => 'خطالی ایستیقامتلندیرمه',
+'brokenredirects-edit' => 'دَییش',
+'brokenredirects-delete' => 'سیل',
+
+'withoutinterwiki' => 'دیل باغلانتیلاری اولمایان صحیفه‌لر',
+'withoutinterwiki-summary' => 'آشاغیداکی صحیفه‌لر، باشقا دیل‌لره باغلانتیلاری یوخدور.',
+'withoutinterwiki-legend' => 'اؤن‌اَک',
+'withoutinterwiki-submit' => 'گؤستر',
+
+'fewestrevisions' => 'ان آز دَییشدیریلن صحیفه‌لر',
+
+# Miscellaneous special pages
+'nbytes' => '{{PLURAL:$1|بیر|$1}} بایت',
+'ncategories' => '{{PLURAL:$1|بیر|$1}} بؤلمه',
+'ninterwikis' => '{{PLURAL:$1|بیر|$1}} ویکی‌آراسی',
+'nlinks' => '{{PLURAL:$1|بیر|$1}} باغلانتی',
+'nmembers' => '$1 {{PLURAL:$1|اویه|اویه‌لر}}',
+'nrevisions' => '{{PLURAL:$1|بیر|$1}} نوسخه',
+'nviews' => '{{PLURAL:$1|بیر|$1}} گؤرونوش',
+'lonelypages' => 'يئتیم صحیفه‌‌لر',
+'unusedcategories' => 'ایستیفاده ائدیلمه‌میش بؤلمه‌لر',
+'unusedimages' => 'ایشلنمه‌میش فایل‌لار',
+'popularpages' => 'سئویلن صحیفه‌لر',
+'wantedcategories' => 'یسته نن بؤلمه‌لر',
+'wantedpages' => 'ایسته نن صحیفه‌لر',
+'wantedpages-badtitle' => 'مراجعت زامانتی يانلیش باشلیق: $1',
+'wantedtemplates' => 'ایسته نن شابلونلار',
+'mostlinked' => 'ان چوخ کئچیدلنن صحیفه‌‌لر',
+'mostimages' => 'ان چوخ ایستیفاده ائدیلمیش شکیللر',
+'prefixindex' => 'پرئفیکس ایندئکسلی بوتون یارپاقلار',
+'shortpages' => 'قیسا صحیفه‌‌لر',
+'longpages' => 'اوزون صحیفه‌‌لر',
+'deadendpages' => 'کئچید وئرمه‌ين صحیفه‌‌لر',
+'deadendpagestext' => 'آشاغیداکی صحیفه‌‌لردن بو ویکیپئدیياداکی دیگر صحیفه‌‌لره هئچ بیر کئچید يوخدور.',
+'protectedpages' => 'محافظه‌‌لی صحیفه‌‌لر',
+'protectedpages-indef' => 'يالنیز مدتسیز محافظه‌‌لر',
+'listusers' => 'ایستیفاده‌چی سیياهیسی',
+'listusers-editsonly' => 'يالنیز دَییشدیرمه ائدن ایستیفاده‌چیلری گؤستر',
+'listusers-creationsort' => 'يارانما تاریخینه گؤره سیرالا',
+'usereditcount' => '$1 {{PLURAL:$1|دَییشدیرمه}}',
+'usercreated' => 'ساعت  $2, $1 تاریخ‌ده {{GENDER:$3|قئيدیاتدان کئچیب}}',
+'newpages' => 'يئنی صحیفه‌‌‌لر',
+'newpages-username' => 'ایستیفاده‌چی آدی:',
+'ancientpages' => 'ان اسکی صحیفه‌لر',
+'move' => 'آدینی دَییشدیر',
+'movethispage' => 'بو صحیفه‌‌نین آدینی ديَیشدیر',
+'notargettitle' => 'وئریلمه‌يیب',
+'pager-newer-n' => '{{PLURAL:$1|بیر داها یئنی|$1 داها یئنی}}',
+'pager-older-n' => '{{PLURAL:$1|بیر داها کؤهنه|$1 داها کؤهنه}}',
+'suppress' => 'باخان',
+'querypage-disabled' => 'پِرفورمانس اوچون بو اؤزل صحیفه باغلانیب‌دیر.',
+
+# Book sources
+'booksources' => 'کیتاب قایناقلاری',
+'booksources-search-legend' => 'کیتاب قایناقلارین آختار',
+'booksources-go' => 'گئت',
+
+# Special:Log
+'specialloguserlabel' => 'ایجراچی',
+'log' => 'سیاهه‌لر',
+'all-logs-page' => 'بوتون اجتماعی قئيدلر',
+'logempty' => 'ژورنالدا اويغون قئيد تاپیلمادی.',
+
+# Special:AllPages
+'allpages' => 'بوتون صحیفه‌لر',
+'alphaindexline' => '$1-دن $2-یه',
+'nextpage' => 'سونراکی صحیفه‌‌ ($1)',
+'allarticles' => 'بوتون یارپاقلار',
+'allpagesprev' => 'اونجه‌کی',
+'allpagesnext' => 'سونراکی',
+'allpagessubmit' => 'گئت',
+
+# Special:Categories
+'categories' => 'بؤلمه‌لر',
+
+# Special:LinkSearch
+'linksearch-pat' => 'آختاریش اولگوسو:',
+'linksearch-ns' => 'آد فضاسی:',
+'linksearch-ok' => 'آختار',
+'linksearch-text' => '«*.wikipedia.org» کیمی نیشانلاری ایشلده بیلرسینیز.
+آزی بیر دنه «*.org» کیمی یوخاری دامنه لازیم‌دیر.<br />
+دستلکلنمیش پروتوکول‌لار: <code>$1</code> (بوش بیراخیلسا، http:// نظرده آلیناجاقدیر).',
+'linksearch-line' => '$2-دن $1 کئچید وئریلیب',
+'linksearch-error' => 'نیشانلار یالنیز آدی اولینده گله بیلرلر.',
+
+# Special:ListUsers
+'listusersfrom' => 'بوندان باشلایاراق ایستیفاده‌چیلری گؤستر:',
+'listusers-submit' => 'گؤستر',
+'listusers-noresult' => 'هئچ ایستیفاده‌چی تاپیلمادی.',
+'listusers-blocked' => '(باغلانیب)',
+
+# Special:ActiveUsers
+'activeusers' => 'چالیشان ایستیفاده‌چیلرین لیستی',
+'activeusers-intro' => 'بوردا سون {{PLURAL:$1|بیر|$1}} گون‌ده بیر ایشلر گؤرن ایستیفاده‌چیلرین لیستی گؤستریلیر.',
+'activeusers-count' => 'سون {{PLURAL:$3|بیر|$3}} گون‌ده، {{PLURAL:$1|بیر|$1}} دَییشیکلیک.',
+'activeusers-from' => 'بوندان باشلایاراق ایستیفاده‌چیلری گؤستر:',
+'activeusers-hidebots' => 'بوتلاری گیزلت',
+'activeusers-hidesysops' => 'ایداره‌چیلری گیزلت',
+'activeusers-noresult' => 'هئچ ایستیفاده‌چی تاپیلمادی.',
+
+# Special:Log/newusers
+'newuserlogpage' => 'يئنی ایستیفاده‌چی‌لرین یارادیلماسی',
+'newuserlogpagetext' => 'بو ایستیفاده‌چی یارادماق سیاهیسیدیر.',
+
+# Special:ListGroupRights
+'listgrouprights' => 'ایستیفاده‌چی گروپ حاقلاری',
+'listgrouprights-summary' => 'آشاغیدا، بو ویکی‌ده تانیلان ایستیفاده‌چی گروپلاری و اونلارین حاقلاری گؤستریلیر.
+تک حاقلار اوچون ده، [[{{MediaWiki:Listgrouprights-helppage}}|آرتیق بیلگیلر]] اولا بیلر.',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">وئریلمیش حاق</span>
+* <span class="listgrouprights-revoked">قایتاریلمیش حاق</span>',
+'listgrouprights-group' => 'گروپ',
+'listgrouprights-rights' => 'حاقلار',
+'listgrouprights-helppage' => 'Help:گروپ حاقلاری',
+'listgrouprights-members' => '(عضولرین لیستی)',
+'listgrouprights-addgroup' => '{{PLURAL:$2|گروپو|گروپلاری}} آرتیر: $1',
+'listgrouprights-removegroup' => '{{PLURAL:$2|گروپو|گروپلاری}} سیل: $1',
+'listgrouprights-addgroup-all' => 'بوتون گروپلاری آرتیر',
+'listgrouprights-removegroup-all' => 'بوتون گروپلاری سیل',
+'listgrouprights-addgroup-self' => '{{PLURAL:$2|گروپو|گروپلاری}} اؤز حسابینا آرتیر: $1',
+'listgrouprights-removegroup-self' => '{{PLURAL:$2|گروپو|گروپلاری}} اؤز حسابیندان سیل: $1',
+'listgrouprights-addgroup-self-all' => 'بوتون گروپلاری اؤز حسابینا آرتیر',
+'listgrouprights-removegroup-self-all' => 'بوتون گروپلاری اؤز حسابیندان سیل',
+
+# E-mail user
+'mailnologin' => 'گؤندرمه آدرسی یوخدور',
+'mailnologintext' => 'باشقا ایستیفاده‌چیلره ایمیل گؤندرک اوچون، [[Special:UserLogin|گیریش]] ائدیب و [[Special:Preferences|ترجیحلر]]ینیزده گئچرلی ایمیل آدرسی وئرمه‌لیسینیز.',
+'emailuser' => 'بو ایشلدنه ایمیل گؤندر',
+'emailuser-title-target' => 'بو {{GENDER:$1|ایستیفاده‌چی}}‌یه ایمیل گؤندر',
+'emailuser-title-notarget' => 'ایستیفاده‌چی‌یه ایمیل گؤندر',
+'emailpage' => 'ایستیفاده‌چی‌یه ایمیل گؤندر',
+'emailpagetext' => 'آشغیداکی فورم‌دان، بو {{GENDER:$1|ایستیفاده‌چی}}‌یه ایمیل گؤندرمک اوچون ایستیفاده ائده بیلرسینیز.
+[[Special:Preferences|اؤز ترجیحلرینیز]]ده وئرن ایمیل آدرسی، بو ایمیلین "From" یئرینده گؤستریله‌جک‌دیر و بونا گؤره ایمیلی آلان سیزه موستقیم جاواب گؤندره بیلر.',
+'usermailererror' => 'ایمیل‌دن بو خطا قایتاریلدی:',
+'defemailsubject' => '«$1» آدلی ایستیفاده‌چی‌دن، {{SITENAME}} ایمیلی',
+'usermaildisabled' => 'ایستیفاده‌چی ایمیلی باغلی‌دیر',
+'usermaildisabledtext' => 'بو ویکی‌ده باشقا ایستیفاده‌چیلره ایمیل گؤندره بیلنمه‌سینیز',
+'noemailtitle' => 'ایمیل آدرسی یوخدور',
+'noemailtext' => 'بو ایستیفاده‌چی، بیر گئچرلی ایمیل آدرسی وئرمه‌ییب‌دیر.',
+'nowikiemailtitle' => 'ایمیل ایجازه‌سی یوخدور',
+'nowikiemailtext' => 'بو ایستیفاده‌چی، باشقا ایستیفاده‌چیلردن ایمیل آلماماغینی بیلدیریب‌دیر.',
+'emailnotarget' => 'آلان اوچون، اولمایان یوخسا گئچرسیز ایستیفاده‌چی آدی.',
+'emailtarget' => 'آلانین ایستیفاده‌چی آدینی دَییشدیر',
+'emailusername' => 'ایستیفاده‌چی آدی:',
+'emailusernamesubmit' => 'گؤندر',
+'email-legend' => 'باشقا {{SITENAME}} ایستیفاده‌چیسینه ایمیل گؤندر',
+'emailfrom' => 'کیم‌دن:',
+'emailto' => 'کیمه:',
+'emailsubject' => 'قونو:',
+'emailmessage' => 'مئساژ',
+'emailsend' => 'گؤندر',
+'emailccme' => 'مئساژیمین بیر کوپیسینی ده منه ایمیل ائت.',
+'emailccsubject' => 'سیزین $1-ه مئساژینیزین کوپی‌سی: $2',
+'emailsent' => 'ایمیل گؤنده‌ریلدی',
+'emailsenttext' => 'ایمیل مئساژینیز گئنده‌ریلدی.',
+'emailuserfooter' => 'بو ایمیل، {{SITENAME}}-ده «ایستیفاده‌چی‌یه ایمیل گؤندر» ایمکانی ایله، $1-دن $2-ه گؤنده‌ریلیب‌دیر.',
+
+# User Messenger
+'usermessage-summary' => 'مئساژ گئنده‌ریلدی.',
+'usermessage-editor' => 'سیستِم مئساژ گؤندَرَنی',
+
+# Watchlist
+'watchlist' => 'ایزله‌دیگیم صحیفه‌‌لر',
+'mywatchlist' => 'ایزله‌دیکلر',
+'watchlistfor2' => '$1 اوچون $2',
+'watch' => 'ایزله',
+'watchthispage' => 'بو صفحه‌نی ایزله',
+'unwatch' => 'ایزله‌مه',
+'watchlist-details' => 'دانیشیق صفحه‌لرینی سایمایاراق، {{PLURAL:$1|$1 صفحه‌نی}} ایزله‌ییرسینیز.',
+'wlshowlast' => 'بونلاری گؤستر: سون $1 ساعتی $2 گونو $3',
+'watchlist-options' => 'ایزله‌دیکلر سئچمه‌لری',
+
+# Delete
+'deletepage' => 'صحیفه‌‌نی سیل',
+'confirm' => 'تصدیق ائت',
+'delete-confirm' => 'سیل $1',
+'delete-legend' => 'سیل',
+'actioncomplete' => 'چالیشما سوناچاتدی',
+'actionfailed' => 'فعالیت اوغورسوزاولدو',
+'dellogpage' => 'سیلمه سییاهسی',
+
+# Rollback
+'rollbacklink' => 'گئری‌دؤندر',
+
+# Protect
+'protectlogpage' => 'قوروما قئیدلری',
+'protectedarticle' => '"[[$1]]" قورولدو',
+'protect-otherreason-op' => 'دیگر سبب',
+'restriction-type' => 'حقوقلار',
+'restriction-level' => 'محدودیت درجه‌‌سی:',
+'minimum-size' => 'ان کوچیک بویوت',
+'maximum-size' => 'ان بویوک بویوت',
+'pagesize' => '(بایت)',
+
+# Restrictions (nouns)
+'restriction-edit' => 'دَییش',
+'restriction-move' => 'آدینی دَییشدیر',
+'restriction-upload' => 'یوکله',
+
+# Restriction levels
+'restriction-level-autoconfirmed' => '(ياریم-محافظه‌‌)',
+
+# Undelete
+'undelete' => 'سیلینمیش صحیفه‌‌لری گؤستر',
+'undelete-nodiff' => 'اولکی دَییشمه تاپیلمادی.',
+'undeletelink' => 'باخ/قایتار',
+'undeleteviewlink' => 'باخ',
+'undeletereset' => 'قور',
+'undelete-search-submit' => 'آختار',
+
+# Namespace form on various pages
+'namespace' => 'آد فضاسی:',
+'invert' => 'سئچیلنی دؤندر',
+'blanknamespace' => '(آنا)',
+
+# Contributions
+'contributions' => 'ایستیفاده‌چی چالیشمالاری',
+'contributions-title' => '$1 ایستیفاده‌چی چالیشمالاری',
+'mycontris' => 'چالیشمالار',
+'contribsub2' => '$1 ($2)دان/دن',
+'uctop' => '(یوخاری)',
+'month' => 'بو آی‌دان (و اؤنجه‌سی):',
+'year' => 'بو ایل‌دن (و اؤنجه‌سی):',
+
+'sp-contributions-newbies' => 'تکجه یئنی ایشلدن‌لرین چالیشمالارینی گؤستر',
+'sp-contributions-blocklog' => 'بلوکلاما قئیدلری',
+'sp-contributions-deleted' => 'سیلینمیش ایستیفاده‌چی چالیشمالاری',
+'sp-contributions-uploads' => 'یوکله‌نَنلر',
+'sp-contributions-logs' => 'قئیدلر',
+'sp-contributions-talk' => 'دانیشیق',
+'sp-contributions-search' => 'چالیشمالاری آختار',
+'sp-contributions-username' => 'آی-پی عونوانی و یا ایستیفاده‌چی آدی',
+'sp-contributions-toponly' => 'تکجه سون نوسخه اولان دییشیکلری گؤستر',
+'sp-contributions-submit' => 'آختار',
+
+# What links here
+'whatlinkshere' => 'بو صحیفه‌یه باغلانتیلار',
+'whatlinkshere-title' => '"$1" -ه/ا باغلانان صحیفه‌لر',
+'whatlinkshere-page' => 'صحیفه:',
+'linkshere' => "آشاغیداکی صحیفه‌لر '''[[:$1]]'''-ه باغلانیب:",
+'nolinkshere' => "یارپاغینا هئچ آیری  یارپاق باغلانماییب'''[[:$1]]'''.",
+'nolinkshere-ns' => "سئچیلمیش آدفضاسیندا، هئچ صحیفه '''[[:$1]]'''-ه باغلانتی‌سی یوخدور.",
+'isredirect' => 'یوللاندیرما صحیفه‌سی',
+'istemplate' => 'داخیل اولموش',
+'isimage' => 'شکیل اوچون کئچید',
+'whatlinkshere-prev' => '{{PLURAL:$1|اؤنجه‌کی|اؤنجه‌کی $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|سونراکی|سونراکی $1}}',
+'whatlinkshere-links' => '← باغلانتیلار',
+'whatlinkshere-hideredirs' => '$1 ایستیقامتلندیرمه‌لر',
+'whatlinkshere-hidetrans' => 'علاوه‌لری $1',
+'whatlinkshere-hidelinks' => 'باغلانتیلاری $1',
+'whatlinkshere-hideimages' => '$1 شکیل اوچون کئچیدلر',
+'whatlinkshere-filters' => 'سوزگجلر',
+
+# Block/unblock
+'ipboptions' => '2 ساعت:2 hours,1 گون:1 day,3 گونلر:3 days,1 هفته:1 week,2 هفته‌لر:2 weeks,1 آی:1 month,3 آیلار:3 months,6 آیلار:6 months,1 ایل:1 year,مدتسیز:infinite',
+'ipblocklist' => 'بلوکلانمیش ایشلدنلر',
+'blocklink' => 'بلوک',
+'unblocklink' => 'بلوکلامانی قالدیر',
+'change-blocklink' => 'بلوکلامانی ديَیشدیر',
+'contribslink' => 'چالیشمالار',
+'blocklogpage' => 'بلوکلاما قئیدلری',
+'blocklogentry' => 'طرفیندن [[$1]] بلوْکلاندی، بلوْک مدتی: $2 $3',
+'block-log-flags-nocreate' => 'حساب یاراتماق اولماز',
+
+# Move page
+'movelogpage' => 'يئرديیشمه سییاهه',
+'revertmove' => 'گئری آل',
+
+# Export
+'export' => 'صحیفه‌‌لری ایخراج ائت',
+
+# Namespace 8 related
+'allmessagesname' => 'آد',
+'allmessagesdefault' => 'دفالت دانیشیق متنی',
+
+# Thumbnails
+'thumbnail-more' => 'بؤیوت',
+'thumbnail_error' => 'کیچیک شکیل یاراتما خطاسی: $1',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'ایستیفاده‌چی صفحه‌نیز',
+'tooltip-pt-mytalk' => 'دانیشیق یارپاغیز',
+'tooltip-pt-preferences' => 'ترجیحلرینیز',
+'tooltip-pt-watchlist' => 'دییشمکلرینی ایزله‌دیگینیز صفحه‌لرین سیاهی‌سی',
+'tooltip-pt-mycontris' => 'ائتدیگیم ديَیشیکلیک‌لرین سیياهیسی',
+'tooltip-pt-login' => 'داخیل اولمانیز توصیه‌‌ اولونور، آمما بو مجبوری طلب دئيیل.',
+'tooltip-pt-logout' => 'چیخیش',
+'tooltip-ca-talk' => 'ایچینده‌کیلره گؤره دانیشیق',
+'tooltip-ca-edit' => 'سیز بو صحیفه‌نی دَییشدیره بیلرسینیز. لوطفاً قئید ائتمه‌دن اونجه اؤن‌گؤستریش دویگه‌سینی ایشلدین',
+'tooltip-ca-addsection' => 'یئنی بؤلوم یارات',
+'tooltip-ca-viewsource' => 'بو صحیفه‌‌ محافظه‌‌ اولونوب. آمما سیز اونون متنینه باخاب و متنین صورتینی کؤچوره بیلرسینیز.',
+'tooltip-ca-history' => 'بۇ صحیفه‌‌نین کئچمیش نۆسخه‌لری.',
+'tooltip-ca-protect' => 'بو صحیفه‌نی قورو',
+'tooltip-ca-delete' => 'بو صحیفه‌‌نی سیل',
+'tooltip-ca-move' => 'بو صحیفه‌‌نین آدینی ديَیشدیر',
+'tooltip-ca-watch' => 'بو صحیفه‌‌نی ایزله',
+'tooltip-ca-unwatch' => 'بو صفحه‌نی ایزله‌دیگینیز صفحه‌لردن قالدیرین',
+'tooltip-search' => '{{SITENAME}}-دا آختار',
+'tooltip-search-go' => 'اولورسا بو آددا بیر صحیفه‌یه گئت',
+'tooltip-search-fulltext' => 'بو یازی اولان صحیفه‌لری آختار',
+'tooltip-p-logo' => 'آنا صحیفه‌یه باخ',
+'tooltip-n-mainpage' => 'آنا صحیفه‌یه باخین',
+'tooltip-n-mainpage-description' => 'آنا صحیفه‌یه باخین',
+'tooltip-n-portal' => 'پروژه‌یه گؤره، سیز نه ایش گوره بیلرسیز، هاردا نه‌لری تاپا بیلرسیز',
+'tooltip-n-currentevents' => 'گونجل اولایلارلا ایلگیلی بیلگیلر تاپ',
+'tooltip-n-recentchanges' => 'بو ویکی‌ده سون دَییشیکلرین لیستی',
+'tooltip-n-randompage' => 'راست‌گله بیر صحیفه گتیر',
+'tooltip-n-help' => 'آنلاماق یئری',
+'tooltip-t-whatlinkshere' => 'بورایا لینک اولان بوتون صحیفه‌لرین لیستی',
+'tooltip-t-recentchangeslinked' => 'بۇ مقاله‌يه عاید باشقا صحیفه‌‌لرده يئنی ديَیشیکلیکلر',
+'tooltip-feed-atom' => 'بو صحیفه‌‌ اوچون آتوم يايیمی',
+'tooltip-t-contributions' => 'بو ایستیفاده‌چی‌نین وئردیگی دییشیکلر سیاهی‌سی',
+'tooltip-t-emailuser' => 'بو ایستیفاده‌چی یه بیر ایمیل گؤندر',
+'tooltip-t-upload' => 'فایل یوکله‌یین',
+'tooltip-t-specialpages' => 'بوتون اؤزل صحیفه‌لرین لیستی',
+'tooltip-t-print' => 'بو صحیفه‌‌نین چاپ ائدیلن نوسخه‌سی',
+'tooltip-t-permalink' => 'یارپاغا بو وئرسیياسینا دایمی کئچید',
+'tooltip-ca-nstab-main' => 'مقاله‌یه باخین',
+'tooltip-ca-nstab-user' => 'ایستیفاده‌چی صفحه‌سینه باخ',
+'tooltip-ca-nstab-special' => 'بو بیر اؤزل یارپاق‌دیر، سیز اونو دَییشدیره بیلمزسیز',
+'tooltip-ca-nstab-project' => 'پروژه صحیفه‌سینه باخ',
+'tooltip-ca-nstab-image' => 'فايلین صحیفه‌‌سینه باخ',
+'tooltip-ca-nstab-template' => 'شابلونا باخ',
+'tooltip-ca-nstab-category' => 'بؤلمه صحیفه‌‌سینی گؤستر',
+'tooltip-minoredit' => 'بو دییشیگی کیچیک دییشیک کیمی قئید ائت',
+'tooltip-save' => 'ديَیشیکلیکلرینیزی قئيد ائدین',
+'tooltip-preview' => 'لوطفاً صحیفه‌نی قئید ائتمک‌دن اؤنجه، دییشیکلرینیزی سیناق گؤستریش ایله باخین!',
+'tooltip-diff' => 'مقاله‌ده ائتدیگی‌نیز ديَیشیکلیک‌لره باخین',
+'tooltip-compareselectedversions' => 'بو صحیفه‌نین ایکی سئچیلمیش نوسخه‌لری‌نین فرقلرینه باخ',
+'tooltip-watch' => 'بو صفحه‌نی ایزله‌دیکلرینیزه آرتیر',
+'tooltip-rollback' => 'سوْنونجو ایستیفاده‌چی طرفیندن ائدیلمیش بۆتون ديَیشیکلیکلری بیر دفعه‌‌يه گئری قايتار',
+'tooltip-undo' => 'ائدیلمیش ديَیشیکلیگی گئری قايتار و گئری قايتارما سببینی قئيد ائتمک اۆچون سێناق گؤستریشینی آچ',
+'tooltip-summary' => 'قیسا بیر خلاصه‌‌ داخیل ائدین',
+
+# Browsing diffs
+'previousdiff' => 'اسکی دَییشدیرمه',
+'nextdiff' => 'یئنی دَییشدیرمه',
+
+# Media information
+'file-info-size' => '$1 × $2 پیکسل, فایل اؤلچوسو: $3, MIME نوعو: $4',
+'file-nohires' => 'یوخاری کیفیت الده یوخدور.',
+'svg-long-desc' => 'SVG فایلی، $1 × $2 پیکسئل، فایلین اؤلچوسو: $3',
+'show-big-image' => 'یوکسک کیفیت‌لی',
+
+# Bad image list
+'bad_image_list' => 'فوْرمات بۇ شکیلده اوْلمالیدیر: 
+
+يالنیز سیياهی بندلری (* ایشاره‌سی ایله باشلايان سطرلر) نظره آلینیر. 
+سطرده‌کی ایلک کئچید، علاوه‌‌ اوْلونماسی قاداغان اوْلونموش شکیله کئچید اوْلمالیدیر. 
+همین سطرده‌کی نؤوبتی کئچیدلر استثنا حساب اوْلونور. مثلا، فايل مقاله‌ده سطرین ایچینده گؤرونه بیلر.',
+
+# Metadata
+'metadata' => 'مئتامعلوماتلار',
+'metadata-help' => 'بۇ فايلدا فوْتوْاپارات و يا سکانئرله علاوه‌‌ اوْلونموش معلوماتلار وار. اگر فايل سوْنرادان دَییشدیریلیبسه، بعضی پارامئترلر بۇ شکیلده گؤستریلنلردن فرقلی اوْلا بیلر.',
+'metadata-fields' => 'بو صحیفه‌‌ده سیرالانان ائخیف مئتاداتا ساحه‌‌لری شکیل گؤرونوش صحیفه‌‌لرینده مئتاداتا جدوه‌لی چؤکدويونده ایستیفاده ائدیلیر. دیگرلری وارسايیلان اولاراق گیزلنه‌جکدیر. 
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+
+# EXIF tags
+'exif-credit' => 'تعمین ائدیچی',
+
+'exif-copyrighted-false' => 'عمومی دامنه',
+
+'exif-unknowndate' => 'تانینمامیش تاریخ',
+
+'exif-orientation-1' => 'نورمال',
+'exif-orientation-2' => 'یاتای چئویریلیب',
+'exif-orientation-3' => '۱۸۰ درجه دؤنده‌ریلیب',
+'exif-orientation-4' => 'دیکَی چئویریلیب',
+'exif-orientation-5' => '۹۰ درجه ساعات عکسی دؤنده‌ریلیب و دیکَی چئویریلیب',
+'exif-orientation-6' => '۹۰ درجه ساعات عکسی دؤنده‌ریلیب',
+'exif-orientation-7' => '۹۰ درجه ساعات یولوندا دؤنده‌ریلیب و دیکَی چئویریلیب',
+'exif-orientation-8' => '۹۰ درجه ساعات یولوندا دؤنده‌ریلیب',
+
+'exif-planarconfiguration-1' => 'قالین فورمت',
+'exif-planarconfiguration-2' => 'دوزلمه فورمت',
+
+'exif-colorspace-65535' => 'تنظیم‌لنمه‌میش',
+
+'exif-componentsconfiguration-0' => 'یوخدور',
+
+'exif-exposureprogram-0' => 'تانیملانماییب',
+'exif-exposureprogram-1' => 'ال ایله',
+'exif-exposureprogram-2' => 'نورمال پروقرام',
+'exif-exposureprogram-3' => 'آچیقلیق اوستونلوگو',
+'exif-exposureprogram-4' => 'شاتیر اوستونلوگو',
+'exif-exposureprogram-5' => 'یارادیجی پروقرام (میدان درینلیگینه اَییلمیش)',
+'exif-exposureprogram-6' => 'حرکت پروقرامی (شاتیر سورعتینه اَییلمیش)',
+'exif-exposureprogram-7' => 'پورتره دورومو (دالیلاری فوکوس‌دا اولمایان یاخین عکسلر اوچون)',
+'exif-exposureprogram-8' => 'منظره دورومو (دالیلاری فوکوس‌دا اولان منظره عکسلری اوچون)',
+
+'exif-subjectdistance-value' => '$1 متر',
+
+'exif-meteringmode-0' => 'بیلینمه‌ین',
+'exif-meteringmode-1' => 'اورتا',
+'exif-meteringmode-2' => 'وسطی آغیر اورتا',
+'exif-meteringmode-3' => 'بیر-نوقطه‌لی',
+'exif-meteringmode-4' => 'نئچه-نوقطه‌لی',
+'exif-meteringmode-5' => 'اؤرنک',
+'exif-meteringmode-6' => 'قیسمی',
+'exif-meteringmode-255' => 'باشقا',
+
+'exif-lightsource-0' => 'بیلینمه‌ین',
+'exif-lightsource-1' => 'گون‌ایشیغی',
+'exif-lightsource-2' => 'فلورسانت',
+'exif-lightsource-3' => 'تنگستن (ایستی‌سیز ایشیق)',
+'exif-lightsource-4' => 'فلاش',
+'exif-lightsource-9' => 'یاخشی هاوا',
+'exif-lightsource-10' => 'بولودلو هاوا',
+'exif-lightsource-11' => 'کؤلگه',
+'exif-lightsource-12' => 'گون‌ایشیغی فلورسانت (D 5700 – 7100K)',
+'exif-lightsource-13' => 'گون آغ فلورسانت (N 4600 – 5400K)',
+'exif-lightsource-14' => 'سرین آغ فلورسانت (W 3900 – 4500K)',
+'exif-lightsource-15' => 'آغ فلورسانت (WW 3200 – 3700K)',
+'exif-lightsource-17' => 'A ایستاندارد ایشیق',
+'exif-lightsource-18' => 'B ایستاندارد ایشیق',
+'exif-lightsource-19' => 'C ایستاندارد ایشیق',
+'exif-lightsource-24' => 'ISO ایستودیو تنگستنی',
+'exif-lightsource-255' => 'باشقا ایشیق قایناغی',
+
+# Flash modes
+'exif-flash-fired-0' => 'فلاش یاندیریلمادی',
+'exif-flash-fired-1' => 'فلاش یاندیریلدی',
+'exif-flash-return-0' => 'دؤنن ایشیق بیلن فونکسیاسی یوخدور',
+'exif-flash-return-2' => 'دؤنن ایشیق بیلیننمه‌دی',
+'exif-flash-return-3' => 'دؤنن ایشیق بیلیندی',
+'exif-flash-mode-1' => 'زورلو فلاش یاندیریلماسی',
+'exif-flash-mode-2' => 'زورلو فلاش یاندیریلماماسی',
+'exif-flash-mode-3' => 'اوتوماتیک دوروم',
+'exif-flash-function-1' => 'فلاش یوخدور',
+'exif-flash-redeye-1' => 'قیرمیز-گؤز آزالتما دورومو',
+
+'exif-focalplaneresolutionunit-2' => 'اینچ',
+
+'exif-sensingmethod-1' => 'تاندیریلمامیش',
+'exif-sensingmethod-2' => 'بیر چیپ‌لی رنگ ساحه سِنسورو',
+'exif-sensingmethod-3' => 'ایکی چیپ‌لی رنگ ساحه سِنسورو',
+'exif-sensingmethod-4' => 'اوچ چیپ‌لی رنگ ساحه سِنسورو',
+'exif-sensingmethod-5' => 'سیرالی رنگ ساحه سِنسورو',
+'exif-sensingmethod-7' => 'اوچ-خط‌لی سِنسور',
+'exif-sensingmethod-8' => 'بیر چیپ‌لی رنگ خط سِنسورو',
+
+'exif-filesource-3' => 'دیجیتال کامئرا',
+
+'exif-scenetype-1' => 'موستقیم سالینمیش عکس',
+
+'exif-customrendered-0' => 'نورمال پروسِس',
+'exif-customrendered-1' => 'اؤزل پروسِس',
+
+'exif-exposuremode-0' => 'اوتو ایشیق-توتما',
+'exif-exposuremode-1' => 'ال ایله ایشیق-توتما',
+'exif-exposuremode-2' => 'اوتو دیرَکلندیرمه',
+
+'exif-whitebalance-0' => 'اوتوماتیک آغ رنگی بالانسلاندیرماسی',
+'exif-whitebalance-1' => 'ای ایله آغ رنگ بالانسلاندیرماسی',
+
+'exif-scenecapturetype-0' => 'ایستاندارد',
+'exif-scenecapturetype-1' => 'منظره',
+'exif-scenecapturetype-2' => 'پورتره',
+'exif-scenecapturetype-3' => 'گئجه گؤرونوشو',
+
+'exif-gaincontrol-0' => 'هئچ',
+'exif-gaincontrol-1' => 'آز-آلماغی آرتیر',
+'exif-gaincontrol-2' => 'چوخ-آلماغی آرتیر',
+'exif-gaincontrol-3' => 'آز-آلماغی آزالت',
+'exif-gaincontrol-4' => 'چوخ-آلماغی آزالت',
+
+'exif-contrast-0' => 'نورمال',
+'exif-contrast-1' => 'یوموشاق',
+'exif-contrast-2' => 'بَرک',
+
+'exif-saturation-0' => 'نورمال',
+'exif-saturation-1' => 'آشاغی دویدورما',
+'exif-saturation-2' => 'یوخاری دویدورما',
+
+'exif-sharpness-0' => 'نورمال',
+'exif-sharpness-1' => 'یوموشاق',
+'exif-sharpness-2' => 'بَرک',
+
+'exif-subjectdistancerange-0' => 'بیلینمه‌ین',
+'exif-subjectdistancerange-1' => 'ماکرو',
+'exif-subjectdistancerange-2' => 'یاخین گؤرونوش',
+'exif-subjectdistancerange-3' => 'اوزاق گؤرونوش',
+
+# Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
+'exif-gpslatitude-n' => 'قوزئی عرض درجه‌سی',
+'exif-gpslatitude-s' => 'گونئی عرض درجه‌سی',
+
+# Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
+'exif-gpslongitude-e' => 'دوغو عرض درجه‌سی',
+'exif-gpslongitude-w' => 'باتی عرض درجه‌سی',
+
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '{{PLURAL:$1|بیر|$1}} متر دنیز سویه‌سیندن یوخاری',
+'exif-gpsaltitude-below-sealevel' => '{{PLURAL:$1|بیر|$1}} متر نیز سویه‌سیندن آشاغی',
+
+# External editor support
+'edit-externally' => 'بو فایلی خاریجی یازیلیم‌لا دَییشدیر',
+'edit-externally-help' => '(آرتیق بیلگیلر اوچون[//www.mediawiki.org/wiki/Manual:External_editors setup instructions] -ه باخ)',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'بوتون',
+'namespacesall' => 'بوتون',
+'monthsall' => 'بوتون',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'سیياهیداکی صحیفه‌‌لرده ائدیلن ديَیشیکلیک‌لر',
+'watchlisttools-edit' => 'ایزله‌مه لیستینه باخ و دَییشدیر',
+'watchlisttools-raw' => 'متن کیمی دییشدیر',
+
+# Core parser functions
+'duplicate-defaultsort' => '\'\'\'دیققت:\'\'\' احتیمال ائدیلن "$2" دفالت آچاری اول‌کی "$1" دفالت آچارینی کئچرسیز ائدیر.',
+
+# Special:FilePath
+'filepath-submit' => 'گئت',
+
+# Special:SpecialPages
+'specialpages' => 'اؤزل صحیفه‌لر',
+
+# External image whitelist
+'external_image_whitelist' => ' #بو ساتیری اولدوغو گیبی بیراکین <pre>
+#دوزئنلی ایفادئ پارچالارینی (سادئجئ // آراسیندا کالان کیسمی) آشاغیيا ائکلئيین 
+#Bunlar harici (hotlink) resimlerin URLleri ile eşlenecektir
+#ائشلئشئنلئر رئسیم اولاراک گؤرونئجئک، آکسی تاکدیردئ سادئجئ رئسمئ بیر باغلانتی گؤرونئجئکتیر 
+# # ile başlayan satırlar yorum olarak muamele görecektir
+#Büyük-küçük harf duyarsızdır
+
+#Bütün düzenli ifade parçalarını bu satırın üstüne ekleyin. Bu satırı olduğu gibi bırakın</pre>',
+
+# Special:Tags
+'tag-filter' => '[[Special:Tags|ائتیکئت ]] سوزگجی:',
+
+# Special:ComparePages
+'compare-invalid-title' => 'وئردیگینیز باشلیق گئچرسیزدیر.',
+'compare-title-not-exists' => 'وئردیگینیز باشلیق یوخدور.',
+'compare-revision-not-exists' => 'بَلیرتدیگینیز نوسخه یوخدور.',
+
+# Database error messages
+'dberr-header' => 'بو ویکی‌ده بیر ایشکال وار',
+'dberr-problems' => 'عوذر ایسته‌ییریک!
+بو سایت‌دا تِکنیکی ایشکال‌لار واردیر.',
+'dberr-again' => 'بیر نئچه دقیقه دؤزوب سونرا یئنی‌دن یوکله‌یین.',
+'dberr-info' => '(دیتابیس خیدمت‌چیسی‌یه باغلانماق اولونمادی: $1)',
+'dberr-usegoogle' => 'بو آرادا، گوگل‌ده آختارابیلرسینیز.',
+'dberr-outofdate' => 'دیقت ائدین کی اوردا بیزیم سایتیمیزین ایندِکسی کؤهنه اولا بیلر.',
+'dberr-cachederror' => 'بو ایسته‌نیلن صحیفه‌نین بیر کَش اولونموش کوپی‌سیدیر و کؤهنه اولا بیلر.',
+
+# HTML forms
+'htmlform-invalid-input' => 'سیزین بعضی وئردیکلرینیزله ایلگی‌لی موشکول‌لر وار',
+'htmlform-select-badoption' => 'سیز وئردیگینیز دَیَر، گئچرلی دئییل.',
+'htmlform-int-invalid' => 'سیز وئردیگینیز دَیَر، بیر تام عدد دئییل.',
+'htmlform-float-invalid' => 'سیز وئردیگینیز دَیَر، بیر عدد دئییل.',
+'htmlform-int-toolow' => 'سیز وئردیگینیز دَیَر، $1 آشاغی حدین‌دن آزدیر',
+'htmlform-int-toohigh' => 'سیز وئردیگینیز دَیَر، $1 یوخاری حدین‌دن چوخدور',
+'htmlform-required' => 'بو دَیَر لازیم‌دیر',
+'htmlform-submit' => 'گؤندر',
+'htmlform-reset' => 'دَییشیکلیکلری قایتار',
+'htmlform-selectorother-other' => 'باشقا',
+
+# SQLite database support
+'sqlite-has-fts' => '$1 بوتون یازی آختارما دستگی‌له',
+'sqlite-no-fts' => '$1 بوتون یازی آختارماماق‌لا',
+
+# New logging system
+'logentry-delete-delete' => '$1، $3 صحیفه‌سینی سیلدی',
+'logentry-delete-restore' => '$1، $3 صحیفه‌سینی قایتاردی',
+'logentry-delete-event' => '$1، $3-ده $5 سیاهی اولایینین {{PLURAL:$5|گؤرونوشونو|گؤرونوشلرینی}} دَییشدیردی: $4',
+'logentry-delete-revision' => '$1، $3 صحیفه‌سینده $5 نوسخه‌نین {{PLURAL:گؤرونوشونو|گؤرونوشلرینی}} دَییشدیردی: $4',
+'logentry-delete-event-legacy' => '$1، $3-ده سیاهی اولایلارینین گؤرونوشلرینی دَییشدیردی',
+'logentry-delete-revision-legacy' => '$1، $3 صحیفه‌سینده نوسخه‌لرین گؤرونوشلرینی دَییشدیردی',
+'logentry-suppress-delete' => '$1، $3 صحیفه‌سینی یاتیردی',
+'logentry-suppress-event' => '$1، $3-ده $5 سیاهی اولایینین {{PLURAL:$5|گؤرونوشونو|گؤرونوشلرینی}} گیزلینجه دَییشدیردی: $4',
+'logentry-suppress-revision' => '$1، $3 صحیفه‌سینده $5 نوسخه‌نین {{PLURAL:گؤرونوشونو|گؤرونوشلرینی}} گیزلینجه دَییشدیردی: $4',
+'logentry-suppress-event-legacy' => '$1، $3-ده سیاهی اولایلارینین گؤرونوشلرینی گیزلینجه دَییشدیردی',
+'logentry-suppress-revision-legacy' => '$1، $3 صحیفه‌سینده نوسخه‌لرین گؤرونوشلرینی گیزلینجه دَییشدیردی',
+'revdelete-content-hid' => 'ایچینده‌کیلر گیزلی‌دیر',
+'revdelete-summary-hid' => 'دَییشیکلیک قیساسی گیزلی‌دیر',
+'revdelete-uname-hid' => 'ایستیفاده‌چی آدی گیزلی‌دیر',
+'revdelete-content-unhid' => 'ایچینده‌کیلر گیزلیلیک‌دن چیخدی',
+'revdelete-summary-unhid' => 'دَییشیکلیک قیساسی گیزلیلیک‌دن چیخدی',
+'revdelete-uname-unhid' => 'ایستیفاده‌چی آدی گیزلیلیک‌دن چیخدی',
+'revdelete-restricted' => 'ایداره‌چیلره محدودیت قویدو',
+'revdelete-unrestricted' => 'ایداره‌چیلرین محدودیتلرینی گؤتوردو',
+'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-patrol-patrol' => '$1، $3 صحیفه‌سینین $4 نوسخه‌سینی، نظارتلنمیش نیشانلادی',
+'logentry-patrol-patrol-auto' => '$1، $3 صحیفه‌سینین $4 نوسخه‌سینی، اوتوماتیک اولاراق نظارتلنمیش نیشانلادی',
+'logentry-newusers-newusers' => '$1، بیر ایستیفاده‌چی حسابی یاراتدی',
+'logentry-newusers-create' => '$1 بیر ایستیفاده‌چی حسابی یاراتدی',
+'logentry-newusers-create2' => '$1 بیر ایستیفاده‌چی حسابی یاراتدی $3',
+'logentry-newusers-autocreate' => '$1 حسابی اوتوماتیک یارادیلدی',
+'newuserlog-byemail' => 'رمز ایمیل ایله گؤندریلدی',
+
+# Feedback
+'feedback-bugornote' => 'بیر تکنیکی خطانی شرح وئرمگه آماده اولساز، لوطفاً [$1 بیر باگ بیلدیرین].
+او اولماسا، بو آشاغیداکی ساده فورم‌دان ایستیفاده ائده بیلرسینیز. سیزین باخیشینیز، ایستیفاده‌چی آدینیزلا، «[$3 $2]» صحیفه‌سینه آرتیریلاجاق‌دیر.',
+'feedback-subject' => 'قونو:',
+'feedback-message' => 'مئساژ:',
+'feedback-cancel' => 'لغو ائت',
+'feedback-submit' => 'گئری-بیلدیریمی یول‌لا',
+'feedback-adding' => 'صحیفه‌یه گئری-بیلدیریم آرتیریلیر...',
+'feedback-error1' => 'خطا: API-دان تانینمامیش نتیجه',
+'feedback-error2' => 'خطا: دَییشدیرمه باشاری‌سیز اولدو',
+'feedback-error3' => 'خطا: API-دان جاواب گلمه‌دی',
+'feedback-thanks' => 'تشکورلر! سیزین گئری-بیلدیریمینیز «[$2 $1]» صحیفه‌سینه گؤندریلدی.',
+'feedback-close' => 'اولدو',
+'feedback-bugcheck' => 'گؤزل! فقط لوطفاً باخین او [$1 تانینمیش خطالار]دان اولماسین.',
+'feedback-bugnew' => 'یوخلادیم. یئنی بیر خطا گؤندر',
+
+# Search suggestions
+'searchsuggest-search' => 'آختار',
+'searchsuggest-containing' => 'ساخلانیلیر...',
+
+# API errors
+'api-error-badaccess-groups' => 'سیزین بو ویکی‌یه فایل یوکله‌مک ایجازه‌نیز یوخدور.',
+'api-error-badtoken' => 'ایچری خطاسی: پیس کود.',
+'api-error-copyuploaddisabled' => 'بو خیدمتچی‌ده، اینترنت آدرسی‌له فایل یوکله‌مک یاساقلانیب‌دیر.',
+'api-error-duplicate' => 'بو یاست‌دا، همن بیلگیلرله، باشقا {{PLURAL:$1|[$2 فایل]|[$2 فایل‌لار]}} واردیر.',
+'api-error-duplicate-archive' => 'بو یاست‌دا، همن بیلگیلرله، باشقا {{PLURAL:$1|[$2 فایل]|[$2 فایل‌لار]}} وار ایدی، اما {{PLURAL:$1|سیلینیب‌دیر|سیلینیبلر}}.',
+'api-error-duplicate-archive-popup-title' => 'تیکرارلانمیش {{PLURAL:$1|فایل|فایل‌لار}}، اؤنجه‌دن {{PLURAL:$1|سیلینیب‌دیر|سیلینیبلر}}.',
+'api-error-duplicate-popup-title' => 'تیکرارلانمیش {{PLURAL:$1|فایل|فایل‌لار}}.',
+'api-error-empty-file' => 'سیز یول‌لادیغینیز فایل، بوش ایدی.',
+'api-error-emptypage' => 'یئنی بوش صحیفه یارادماغا ایجازه یوخدور.',
+'api-error-fetchfileerror' => 'ایچری خطا: فایلی گتیرمک‌ده بیر ایشکال قاباغا گلدی.',
+'api-error-fileexists-forbidden' => '«$1» آدلا بیر فایل واردیر و اوستونه یازماق اولماز.',
+'api-error-fileexists-shared-forbidden' => 'پایلاشمیش آنباردا «$1» آدلا بیر فایل واردیر و اوستونه یازماق اولماز.',
+'api-error-file-too-large' => 'سیز یول‌لادیغینیز فایل، چوخ یئکه ایدی.',
+'api-error-filename-tooshort' => 'فایل آدی چوخ قیسادی.',
+'api-error-filetype-banned' => 'بوجور فایل یاساق‌لانیب‌دیر.',
+'api-error-filetype-banned-type' => '$1 فایل {{PLURAL:$4|نؤوعو ایجازه‌لی دئییل|نؤوعلری ایجازه‌لی دئییل‌لر}}. ایجازه‌لی فایل {{PLURAL:$3|نؤوعو بئله‌دیر|نؤوعلاری بئله‌دیرلر}}: $2.',
+'api-error-filetype-missing' => 'فایل آدینین اوزانتیسی یوخدور.',
+'api-error-hookaborted' => 'سیز وئردیگینیز دَییشیکلیکلرین قاباغی، بیر extension ایله قاباغی آلیندی.',
+'api-error-http' => 'ایچری خطا: خیدمتچی‌یه باغلانماق اولونمادیر.',
+'api-error-illegal-filename' => 'بو فایل آدینا ایجازه یوخدور.',
+'api-error-internal-error' => 'ایچری خطا: سیزین فایلینیزی بو ویکی‌یه یوکله‌مک‌ده بیر ایشکال قاباغا گلدی.',
+'api-error-invalid-file-key' => 'ایچری خطا: فایل، گئچرلی آنباردا تاپیلانمادی.',
+'api-error-missingparam' => 'ایچری خطا: ایستک‌ده بعضی پارامترلر وئریلمه‌ییبلر.',
+'api-error-missingresult' => 'ایچری خطا: کوپی‌نین باشاریلی اولدوغو بیلینمیر.',
+'api-error-mustbeloggedin' => 'فایل یوکله‌مک اوچون، گیریش ائتمه‌لیسینیز.',
+'api-error-mustbeposted' => 'ایچری خطا: بو ایستک اوچون HTTP POST لازیم‌دیر.',
+'api-error-noimageinfo' => 'یوکله‌مک باشاریلی اولدور، اما خیدمت‌چی فایلا گؤره هئچ بیر بیلگیلر وئرمه‌دی.',
+'api-error-nomodule' => 'ایچری خطا: هئچ بیر آپلود ماژولی یوخدور.',
+'api-error-ok-but-empty' => 'ایچری خطا: خیدمتچی‌دن جاواب گلمه‌دی.',
+'api-error-overwrite' => 'بیر اولان فایلین اوستونه یازماغا ایجازه یوخدور.',
+'api-error-stashfailed' => 'ایچری خطا: خیدمتچی، گئچیجی فایلی ساخلایانمادی.',
+'api-error-timeout' => 'خیدمتچی، گؤزله‌نیلن واخت‌دا جاواب وئرمه‌دی.',
+'api-error-unclassified' => 'بیر تانینمامیش خطا قاباغا گلدی.',
+'api-error-unknown-code' => 'تانینمامیش خطا: «$1».',
+'api-error-unknown-error' => 'ایچری خطا: سیزین فایلینیزی یوکله‌مگه چالیشاندا بیر ایشکال قاباغا گلدی.',
+'api-error-unknown-warning' => 'تانینمامیش ایخطار: «$1».',
+'api-error-unknownerror' => 'تانینمامیش خطا: «$1».',
+'api-error-uploaddisabled' => 'بو ویکی‌ده یوکله‌مک باغلانیب‌دیر.',
+'api-error-verification-error' => 'فایل خاراب‌دیر یوخسا یانلیش اوزانتی‌سی واردیر.',
+
+# Durations
+'duration-seconds' => '{{PLURAL:$1|بیر|$1}} ثانیه',
+'duration-minutes' => '{{PLURAL:$1|بیر|$1}} دقیقه',
+'duration-hours' => '{{PLURAL:$1|بیر|$1}} ساعات',
+'duration-days' => '{{PLURAL:$1|بیر|$1}} گون',
+'duration-weeks' => '{{PLURAL:$1|بیر|$1}} هفته',
+'duration-years' => '{{PLURAL:$1|بیر|$1}} ایل',
+'duration-decades' => '{{PLURAL:$1|بیر|$1}} اون‌ایل',
+'duration-centuries' => '{{PLURAL:$1|بیر|$1}} یوز-ایل',
+'duration-millennia' => '{{PLURAL:$1|بیر|$1}} مین‌ایل',
+
+);
index c6fd49c..eaf2af2 100644 (file)
@@ -278,7 +278,7 @@ $messages = array(
 'cancel' => 'Бөтөрөргә',
 'moredotdotdot' => 'Дауамы...',
 'mypage' => 'Шәхси бит',
-'mytalk' => 'Минең менән әңгәмә',
+'mytalk' => 'Әңгәмә',
 'anontalk' => 'Был IP-адресының фекер алышыу бите',
 'navigation' => 'Төп йүнәлештәр',
 'and' => '&#32;һәм',
@@ -554,9 +554,6 @@ $2',
 
 Һеҙ {{SITENAME}} проектында аноним рәүештә дауам итә йәки <span class='plainlinks'>[$1 яңынан таныла]</span> алаһығыҙ (үҙ йәки башҡа исем менән).
 Ҡайһы бер биттәр һеҙ системала танылған һымаҡ күренергә мөмкин, уны бөтөрөү өсөн браузер кэшын таҙартығыҙ.",
-'welcomecreation' => '== Рәхим итегеҙ, $1! ==
-Иҫәп яҙыуығыҙ яһалды.
-Шәхси [[Special:Preferences|көйләүҙәрегеҙҙе]] үҙегеҙгә уңайлы итеп үҙгәртергә онотмағыҙ.',
 'yourname' => 'Ҡатнашыусы исеме',
 'yourpassword' => 'Һеҙҙең пароль',
 'yourpasswordagain' => 'Паролде ҡабаттан яҙыу',
@@ -797,8 +794,8 @@ $2
 <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} тап килгән журнал яҙмаларын таба]
 йәки '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} бындай исемле яңы бит яһай]'''</span> алаһығыҙ.",
 'noarticletext-nopermission' => 'Хәҙерге ваҡытта был биттә текст юҡ.
-ҺеÒ\99 Ð±Ð°Ñ\88ҡа Ð¼Ó\99Ò¡Ó\99лÓ\99ләрҙә [[Special:Search/{{PAGENAME}}|был исемде]] йәки
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналдағы яҙмаларҙы] эҙләй алаһығыҙ.</span>',
+ҺеÒ\99 Ð±Ð°Ñ\88ҡа Ð±Ð¸Ñ\82Ñ\82әрҙә [[Special:Search/{{PAGENAME}}|был исемде]] йәки
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналдағы яҙмаларҙы] эҙләй алаһығыҙ, тик һеҙҙең бит яһау хоҡуғығыҙ юҡ.</span>',
 'missing-revision' => '"{{PAGENAME}}" исемле биттең $1 номерлы өлгөһө юҡ.
 
 Был хәл, ғәҙәттә, юйылған биткә яһалған һылтанманын ваҡыты үтеүенән барлыҡҡа килә.
@@ -1192,7 +1189,7 @@ $1",
 
 # Preferences page
 'preferences' => 'Көйләүҙәр',
-'mypreferences' => 'Көйләүҙәрем',
+'mypreferences' => 'Көйләүҙәр',
 'prefs-edits' => 'Төҙәтеүҙәр һаны:',
 'prefsnologin' => 'Танылмағанһығыҙ',
 'prefsnologintext' => 'Ҡатнашыусы көйләүҙәрен үҙгәртеү өсөн, һеҙ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}танылырға]</span> тейешһегеҙ.',
@@ -2161,11 +2158,7 @@ $1',
 
 'enotif_mailer' => '{{SITENAME}} проектының белдереү хеҙмәте',
 'enotif_reset' => 'Бөтә биттәрҙе ҡаралған тип билдәләргә',
-'enotif_newpagetext' => 'Был яңы бит.',
 'enotif_impersonal_salutation' => '{{SITENAME}} проектының ҡатнашыусыһы',
-'changed' => 'үҙгәртелгән',
-'created' => 'булдырылды',
-'enotif_subject' => '{{SITENAME}} проектының $PAGETITLE бите $PAGEEDITOR тарафынан $CHANGEDORCREATED',
 'enotif_lastvisited' => 'Һеҙҙең аҙаҡҡы кереүегеҙҙән һуңғы үҙгәртеүҙәрҙе ҡарау өсөн, $1 ҡарағыҙ.',
 'enotif_lastdiff' => 'Был үҙгәртеүҙе ҡарау өсөн, $1 ҡарағыҙ.',
 'enotif_anon_editor' => 'танылмаған ҡатнашыусы $1',
@@ -2386,7 +2379,7 @@ $1',
 # Contributions
 'contributions' => 'Ҡатнашыусы өлөшө',
 'contributions-title' => '$1 исемле ҡулланыусының кереткән өлөшө',
-'mycontris' => 'Башҡарған эштәр',
+'mycontris' => 'Өлөш',
 'contribsub2' => '$1 ($2) өсөн',
 'nocontribs' => 'Күрһәтелгән шарттарға яуап биргән үҙгәртеүҙәр табылманы.',
 'uctop' => '(аҙаҡҡы)',
@@ -2427,7 +2420,7 @@ $1',
 'whatlinkshere-hideredirs' => 'Йүнәлтеүҙәрҙе $1',
 'whatlinkshere-hidetrans' => 'Ҡушылғандарҙы $1',
 'whatlinkshere-hidelinks' => 'Һылтанмаларҙы $1',
-'whatlinkshere-hideimages' => 'Рәсем өсөн һылтанматарҙы $1',
+'whatlinkshere-hideimages' => 'файл һылтанмаларын $1',
 'whatlinkshere-filters' => 'Һайлау',
 
 # Block/unblock
@@ -2892,10 +2885,26 @@ The wiki server cannot provide data in a format your client can read.',
 # Info page
 'pageinfo-title' => '«$1» буйынса мәғлүмәт',
 'pageinfo-header-edits' => 'Үҙгәртеүҙәр',
+'pageinfo-display-title' => 'Күренгән исем',
+'pageinfo-default-sort' => 'Ғәҙәттәге сортлау асҡысы',
+'pageinfo-length' => 'Бит оҙонлоғо (байттарҙа)',
+'pageinfo-article-id' => 'Бит идентификаторы',
+'pageinfo-language' => 'Бит эстәлегенең теле',
+'pageinfo-robot-policy' => 'Эҙләү хеҙмәттәре статусы',
+'pageinfo-robot-index' => 'Индекслана',
+'pageinfo-robot-noindex' => 'Индексланмай',
 'pageinfo-views' => 'Ҡарау һаны',
-'pageinfo-watchers' => 'Күҙәтеүселәр һаны',
-'pageinfo-edits' => 'Төҙәтеү һаны',
+'pageinfo-watchers' => 'Битте күҙәтеүселәр һаны',
+'pageinfo-redirects-name' => 'Был биткә йүнәлтеүҙәр',
+'pageinfo-subpages-name' => 'Был биттең эске биттәре',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|йүнәлтеү}}; $3 {{PLURAL:$3|ябай}})',
+'pageinfo-firstuser' => 'Битте яһаусы',
+'pageinfo-firsttime' => 'Битте яһау датаһы',
+'pageinfo-lastuser' => 'Һуңғы мөхәррирләүсе',
+'pageinfo-lasttime' => 'Һуңғы мөхәррирләү датаһы',
+'pageinfo-edits' => 'Дөйөм төҙәтеү һаны',
 'pageinfo-authors' => 'Төрлө авторҙар һаны',
+'pageinfo-recent-edits' => 'Һуңғы ваҡыттағы төҙәтеүҙәр ($1 эсендә)',
 'pageinfo-toolboxlink' => 'Бит мәғлүмәттәре',
 
 # Skin names
@@ -3558,7 +3567,7 @@ $5
 'watchlisttools-raw' => 'Текст һымаҡ үҙгәртеү',
 
 # Signatures
-'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|фекер алышыу]])',
+'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|әңгәмә]])',
 
 # Core parser functions
 'unknown_extension_tag' => 'Билдәһеҙ "$1" киңәйтеү тегы',
index fbe88c5..77f882b 100644 (file)
@@ -94,51 +94,51 @@ $messages = array(
 'wed' => 'Mi',
 'thu' => 'Du',
 'fri' => 'Fr',
-'sat' => 'Så',
-'january' => 'Jänner',
+'sat' => 'Sa',
+'january' => 'Jenna',
 'february' => 'Feba',
-'march' => 'März',
-'april' => 'Aprü',
+'march' => 'Meaz',
+'april' => 'Aprui',
 'may_long' => 'Mai',
 'june' => 'Juni',
 'july' => 'Juli',
 'august' => 'August',
-'september' => 'September',
+'september' => 'Septemba',
 'october' => 'Oktoba',
 'november' => 'Novemba',
-'december' => 'Dezember',
-'january-gen' => 'Jänner',
-'february-gen' => 'Feewer',
-'march-gen' => 'März',
-'april-gen' => 'Aprü',
+'december' => 'Dezemba',
+'january-gen' => 'Jenna',
+'february-gen' => 'Feba',
+'march-gen' => 'Meaz',
+'april-gen' => 'Aprui',
 'may-gen' => 'Mai',
 'june-gen' => 'Juni',
 'july-gen' => 'Juli',
 'august-gen' => 'August',
-'september-gen' => 'September',
-'october-gen' => 'Oktower',
-'november-gen' => 'November',
-'december-gen' => 'Dezember',
-'jan' => 'Jän.',
-'feb' => 'Few.',
-'mar' => 'Mär.',
+'september-gen' => 'Septemba',
+'october-gen' => 'Oktoba',
+'november-gen' => 'Novemba',
+'december-gen' => 'Dezemba',
+'jan' => 'Jen.',
+'feb' => 'Feb.',
+'mar' => 'Mea.',
 'apr' => 'Apr.',
 'may' => 'Mai',
 'jun' => 'Jun.',
 'jul' => 'Jul.',
 'aug' => 'Aug.',
 'sep' => 'Sep.',
-'oct' => 'Ókt.',
-'nov' => 'Nóv.',
+'oct' => 'Okt.',
+'nov' => 'Nov.',
 'dec' => 'Dez.',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Kategorie|Kategorien}}',
+'pagecategories' => '{{PLURAL:$1|Kategorie|Kategorina}}',
 'category_header' => 'Seiten in da Kategorie „$1“',
 'subcategories' => 'Unterkategorien',
 'category-media-header' => 'Medien in da Kategorie „$1“',
 'category-empty' => "''De Kategorie enthoit im Moment koane Seiten und koane Medien ned.''",
-'hidden-categories' => '{{PLURAL:$1|Vasteckte Kategorie|Vasteckte Kategorien}}',
+'hidden-categories' => '{{PLURAL:$1|Vasteckte Kategorie|Vasteckte Kategorina}}',
 'hidden-category-category' => 'Vasteckte Kategorie',
 'category-subcat-count' => '{{PLURAL:$2|De Kategorie enthoit netter de foigande Unterkategorie:|{{PLURAL:$1|De foigande Unterkategorie is oane voh insgsåmt $2 Unterkategorien in derer Kategorie:|Voh insgsåmt $2 Unterkategorien in derer Kategorie wern $1 åzoagt:}}}}',
 'category-subcat-count-limited' => 'In de Kategorie {{PLURAL:$1|is de foigande Unterkategorie|san de foiganden Unterkategorien}} eihsortird:',
@@ -154,12 +154,12 @@ $messages = array(
 'about' => 'Iba',
 'article' => 'Artike',
 'newwindow' => '(werd in am neichen Fenster aufgmocht)',
-'cancel' => 'Obbrecher',
+'cancel' => 'Obbrecha',
 'moredotdotdot' => 'Merer',
 'mypage' => 'Eigerne Seiten',
 'mytalk' => 'Mei Dischkurs',
 'anontalk' => 'Dischkrirseiten voh derer IP-Adress',
-'navigation' => 'Navigazión',
+'navigation' => 'Navigation',
 'and' => '&#32;und',
 
 # Cologne Blue skin
@@ -169,7 +169,7 @@ $messages = array(
 'qbpageoptions' => 'Seitenopzionen',
 'qbmyoptions' => 'Meine Seiten',
 'qbspecialpages' => 'Speziaalseiten',
-'faq' => 'Heiffige Frong',
+'faq' => 'Oft gstejte Frong',
 'faqpage' => 'Project:FAQ',
 
 # Vector skin
@@ -180,32 +180,32 @@ $messages = array(
 'vector-action-undelete' => 'Wiederherstön',
 'vector-action-unprotect' => 'freigeem',
 'vector-simplesearch-preference' => 'Daweiterte Suachvurschläg aktivirn (netter Vector)',
-'vector-view-create' => 'Erstön',
-'vector-view-edit' => 'Werkeln',
-'vector-view-history' => 'Versiónsgschicht',
-'vector-view-view' => 'Leesen',
+'vector-view-create' => 'Aufbaun',
+'vector-view-edit' => 'Werkln',
+'vector-view-history' => 'Gschicht oschaugn',
+'vector-view-view' => 'Lesn',
 'vector-view-viewsource' => 'Quejtext ozoagn',
-'actions' => 'Akziónen',
+'actions' => 'Aktiona',
 'namespaces' => 'Namasramm',
-'variants' => 'Varianten',
+'variants' => 'Variantn',
 
 'errorpagetitle' => 'Feeler',
 'returnto' => 'Zruck zua da Seiten $1.',
 'tagline' => 'Aus {{SITENAME}}',
-'help' => 'Hüf und Frong?',
+'help' => 'Huif',
 'search' => 'Suach',
-'searchbutton' => 'Suachen',
+'searchbutton' => 'Suacha',
 'go' => 'Ausfyrn',
 'searcharticle' => 'Artiké',
 'history' => 'Versiónen',
-'history_short' => 'Versionen/Autorn',
+'history_short' => 'Gschicht oschaugn',
 'updatedmarker' => '(gänderd)',
 'printableversion' => 'Druckversion',
-'permalink' => 'Permanenter Link',
+'permalink' => 'Permanenta Link',
 'print' => 'Drucken',
 'view' => 'Leesen',
-'edit' => 'werkeln',
-'create' => 'Erstön',
+'edit' => 'Werkln',
+'create' => 'Aufbaun',
 'editthispage' => 'Seiten beorweiten',
 'create-this-page' => 'Seiten erstön',
 'delete' => 'léschen',
@@ -213,7 +213,7 @@ $messages = array(
 'undelete_short' => '{{PLURAL:$1|1 Version|$1 Versionen}} wiederherstön',
 'viewdeleted_short' => '{{PLURAL:$1|Oah geléschde Versión|$1 geléschde Versiónen}} åschauh',
 'protect' => 'Schytzen',
-'protect_change' => 'ändern',
+'protect_change' => 'endan',
 'protectthispage' => 'Seiten schytzen',
 'unprotect' => 'freigeem',
 'unprotectthispage' => 'Seitenschutz ändern',
@@ -221,11 +221,11 @@ $messages = array(
 'talkpage' => 'De Seiten bsprecher',
 'talkpagelinktext' => 'Dischkrian',
 'specialpage' => 'Speziaalseiten',
-'personaltools' => 'Persénlichs Werkzeig',
+'personaltools' => 'Mei Werkzeig',
 'postcomment' => 'Neicher Obschnit',
 'articlepage' => 'Seiteninhoid åzoang',
 'talk' => 'Dischkrian',
-'views' => 'Åsichten',
+'views' => 'Osichtn',
 'toolbox' => 'Werkzeigkisten',
 'userpage' => 'Benutzerseiten',
 'projectpage' => 'Projektseiten åzoang',
@@ -235,14 +235,14 @@ $messages = array(
 'viewhelppage' => 'Hüfeseiten åzoang',
 'categorypage' => 'Kategorieseiten åzoang',
 'viewtalkpage' => 'Diskussion',
-'otherlanguages' => 'Ånderne Sproochen',
-'redirectedfrom' => '(Weidergloatt voh $1)',
+'otherlanguages' => 'Andane Sprochn',
+'redirectedfrom' => '(Weidagloadt vo $1)',
 'redirectpagesub' => 'Weiderloatung',
-'lastmodifiedat' => 'Dé Seiten is zlétzd am $1 um $2 gänderd worn.',
+'lastmodifiedat' => 'De Seitn is zletzt am $1 um $2 gendad worn.',
 'viewcount' => 'Dé Seiten do is bis iatz {{PLURAL:$1|oahmoi|$1-moi}} obgruaffm worn.',
 'protectedpage' => 'Gschytzde Seiten',
-'jumpto' => 'Wexeln zua:',
-'jumptonavigation' => 'Navigazión',
+'jumpto' => 'Wexln za:',
+'jumptonavigation' => 'Navigation',
 'jumptosearch' => 'Suach',
 'view-pool-error' => "Tschuidige, dé Server san im Moment ywerlostt.
 Zvü Leid vasuachen, dé Seiten do z' bsuachen.
@@ -255,23 +255,23 @@ $1",
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 'aboutsite' => 'Iba {{SITENAME}}',
-'aboutpage' => 'Project:Ywer',
+'aboutpage' => 'Project:Iba',
 'copyright' => 'Da Inhoid is unter da $1 vafiagbor.',
 'copyrightpage' => '{{ns:project}}:Urheewerrechte',
 'currentevents' => 'Aktuelle Ereigniss',
 'currentevents-url' => 'Project:Aktuelle Ereigniss',
 'disclaimers' => 'Impressum',
 'disclaimerpage' => 'Project:Impressum',
-'edithelp' => 'Beorweitungshüfm',
-'edithelppage' => 'Help:Beorweitungshüfm',
+'edithelp' => 'Huif fias Werkln',
+'edithelppage' => 'Help:Werkln',
 'helppage' => 'Help:Inhoidsvazeichnis',
 'mainpage' => 'Hoamseitn',
-'mainpage-description' => 'Hauptseiten',
+'mainpage-description' => 'Hoamseitn',
 'policy-url' => 'Project:Richtlinien',
 'portal' => 'Autornportal',
 'portal-url' => 'Project:Autornportal',
-'privacy' => 'Daatenschutz',
-'privacypage' => 'Project:Daatenschutz',
+'privacy' => 'Datnschutz',
+'privacypage' => 'Project:Datnschutz',
 
 'badaccess' => 'Koane ausreichenden Rechtt',
 'badaccess-group0' => "Du host néd d' daforderliche Berechtigung fyr dé Akzión do.",
@@ -282,16 +282,16 @@ $1",
 Schaug auf [[Special:Version|Versiónsseiten]]",
 
 'ok' => 'Passt',
-'retrievedfrom' => 'Voh „$1“',
+'retrievedfrom' => 'Vh „$1“',
 'youhavenewmessages' => 'Du host $1 ($2).',
 'newmessageslink' => 'neiche Nochrichtn',
 'newmessagesdifflink' => 'Letzte Endarung',
 'youhavenewmessagesmulti' => 'Du host neiche Nochrichtn: $1',
 'editsection' => 'Werkln',
-'editold' => 'werkeln',
+'editold' => 'Werkln',
 'viewsourceold' => 'Quötext åzoang',
 'editlink' => 'werkln',
-'viewsourcelink' => 'an Quötext åschauh',
+'viewsourcelink' => 'In Quejtext ozoagn',
 'editsectionhint' => 'Obschnit beorweiden: $1',
 'toc' => 'Inhoidsvazeichnis',
 'showtoc' => 'Åzoang',
@@ -305,22 +305,22 @@ Schaug auf [[Special:Version|Versiónsseiten]]",
 'feed-invalid' => 'Néd gütiger Feed-Abonnement-Typ.',
 'feed-unavailable' => 'Es steengern koane Feeds zur Vafiagung.',
 'site-rss-feed' => 'RSS-Feed fyr $1',
-'site-atom-feed' => 'Atom-Feed fyr $1',
+'site-atom-feed' => 'Atom-Feed fia $1',
 'page-rss-feed' => 'RSS-Feed fyr „$1“',
-'page-atom-feed' => 'Atom-Feed fyr „$1“',
+'page-atom-feed' => 'Atom-Feed fia „$1“',
 'red-link-title' => '$1 (de Seitn gibts ned)',
 'sort-descending' => 'Obsteigend sortiern',
 'sort-ascending' => 'Aufsteigend sortiern',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Seiten',
-'nstab-user' => 'Benutzerseiten',
+'nstab-main' => 'Seitn',
+'nstab-user' => 'Nutzaseitn',
 'nstab-media' => 'Meedienseiten',
 'nstab-special' => 'Spezialseitn',
 'nstab-project' => 'Projektseiten',
-'nstab-image' => 'Daatei',
+'nstab-image' => 'Datei',
 'nstab-mediawiki' => 'Systémnoochricht',
-'nstab-template' => 'Vurlog',
+'nstab-template' => 'Vorlog',
 'nstab-help' => 'Hüfeseiten',
 'nstab-category' => 'Kategorie',
 
@@ -352,11 +352,11 @@ De Daatenbånk möidt 'n Feeler: „<tt>$3: $4</tt>“.",
 'readonlytext' => 'De Daatenbånk is vurywergeehend fyr Neieihtreeg und Änderrungen gsperrd. Bittschee vasuchs spaader nuamoi.
 
 Grund voh da Sperrung: $1',
-'missing-article' => 'Der Text voh „$1“ $2 is néd in da Daatenbånk gfunden worn.
+'missing-article' => 'Da Text vo „$1“ $2 is in da Daatenbank ned gfundn worn.
 
-Dé Seiten is méglicherweis gléschd óder vaschóm worn.
+De Seitn is meglicherwei gleschd oda vaschobm worn.
 
-Fois dés néd zuadrifft, host eventuö an Feeler in da Software gfunden. Bittscheh möd dés am [[Special:ListUsers/sysop|Administraator]] unter da Nennung voh da URL.',
+Fois des ned zuatrifft, hosd eventuell an Fehla im Programm gfundn. Bittschee informia an [[Special:ListUsers/sysop|Administrator]] und nenn eam de URL.',
 'missingarticle-rev' => '(Versiónsnummer: $1)',
 'missingarticle-diff' => '(Unterschiad zwischen Versionen: $1, $2)',
 'readonly_lag' => "De Daatenbånk is automaatisch fyr Schraibzuagriff gsperrt, damid se d' vatailten Daatenbånkserver (slaves) mim Hauptdaatenbånkserver (master) obglaichen kennan.",
@@ -415,10 +415,6 @@ $2",
 
 Du kåst {{SITENAME}} iatzerd anónym weiderdoah, óder di danaid unterm söwing óder am åndern Benutzernåm <span class='plainlinks'>[$1 åmöden]</span>.
 Beochtt ower, daas oanige Seiten noh åzoang kennern, daas du ågmödt bist, sólång du néd deih Browsercache glaard host.",
-'welcomecreation' => '== Servas, $1! ==
-
-Deih Benutzerkontó is grood eihgrichtt worn.
-Vagiss bittscheh néd, deine [[Special:Preferences|{{SITENAME}}-Eishtellungen]] åzpassen',
 'yourname' => 'Benutzernåm:',
 'yourpassword' => 'Posswort:',
 'yourpasswordagain' => 'Posswort nóamoi',
@@ -427,7 +423,7 @@ Vagiss bittscheh néd, deine [[Special:Preferences|{{SITENAME}}-Eishtellungen]]
 'yourdomainname' => 'Eanerne Domain:',
 'externaldberror' => 'Entweder es ligt a Feeler bai da externen Authentifiziarung vur oder du derfst dai externs Benytzerkonto ned aktualisirn.',
 'login' => 'Åmöden',
-'nav-login-createaccount' => 'Åmöden / Kóntó erstön',
+'nav-login-createaccount' => 'Eilogga / Konto olegn',
 'loginprompt' => 'Zur Åmödung miassen Cookies aktivird seih.',
 'userlogin' => 'Åmöden / Kontó erstön',
 'userloginnocreate' => 'Åmöden',
@@ -479,7 +475,7 @@ Es muass sichergstöd seih, daas Cookies aktivierd san. Danoch bittscheh d' Seit
 # Edit page toolbar
 'bold_sample' => 'Fetter Text',
 'bold_tip' => 'Fetter Text',
-'italic_sample' => 'Kursiaver Text',
+'italic_sample' => 'Kursiva Text',
 'italic_tip' => 'Kursiaver Text',
 'link_sample' => 'Link-Text',
 'link_tip' => 'Interner Link',
@@ -491,18 +487,18 @@ Es muass sichergstöd seih, daas Cookies aktivierd san. Danoch bittscheh d' Seit
 'nowiki_tip' => 'Ned-formatirder Text',
 'image_tip' => 'Daateilink',
 'media_tip' => 'Meediendaatei-Link',
-'sig_tip' => 'Deih Unterschrift mid Zeidstempe',
+'sig_tip' => 'Dei Untaschrift mit Zeitstempe',
 'hr_tip' => 'Woogrechte Linie (sporsåm vawenden)',
 
 # Edit pages
 'summary' => 'Zåmmfossung:',
 'subject' => 'Bedreff',
-'minoredit' => 'Netter Kloanigkeiten san vaänderd worn',
+'minoredit' => 'Nua Kloanigkeidn san vaendat worn',
 'watchthis' => "D' Seiten beówochten",
-'savearticle' => 'Seiten speichern',
+'savearticle' => 'Seitn speichan',
 'preview' => 'Vurschau',
-'showpreview' => 'Vurschau zoang',
-'showdiff' => 'Änderrungen zoang',
+'showpreview' => 'Vorschau zoagn',
+'showdiff' => 'Endarunga zoagn',
 'anoneditwarning' => "Du beorweitsd dé Seiten ois néd-ågmöidt. Wånn du dé speichertsd, werd deih aktuelle IP-Adress in da Versiónsgschichd aufzeichnet und is dodamid unwiaderruafflich '''éffmtléch''' zum åschauh.",
 'missingsummary' => "'''Hiwais:''' du host koa Zåmmfossung ågeem. Wånn du ernait auf „{{int:savearticle}}“ druckst, werd dai Enderung one a Zåmmfossung ywernumma.",
 'missingcommenttext' => 'Bittschee gib a Zåmmfossung ai.',
@@ -524,19 +520,19 @@ Bist du föschlicherweis dodan, dånn druck dé '''Zruck'''-Schoitflächen voh d
 'anontalkpagetext' => "---- ''De Seiten werd dodazua hergnumma, am ned-ågmöiderten Benutzer Nochrichten z' hinterlossen.
 Wånnst mid de Kommentare auf derer Seiten nix åfanga kåst, is vamuatlich da friarerne Inhower vo derer IP-Adress gmoat und du kåstas ignorirn.
 Wånnst a anonymer Benutzer bist und denkst, das irrelevante Kommentare ån di grichtt worn san, [[Special:UserLogin|möid de bittschee å]], um zuakynfteg Vawirrung z' vamein.''",
-'noarticletext' => 'De Saiten enthoit zua Zaid koan Text ned.
-Du kååst an Titl vo derer Saiten auf de åndern Saiten [[Special:Search/{{PAGENAME}}|suacha]],
-<span class="plainlinks"> in de dazuagheraden [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Logbiache suacha] oder de Saiten [{{fullurl:{{FULLPAGENAME}}|action=edit}} beorwaiten]</span>.',
-'noarticletext-nopermission' => 'Dé Seiten enthoit im Moment nó koan Text néd.
-Du derfst an Titel auf åndre Seiten [[Special:Search/{{PAGENAME}}|suachen]]
-óder dé zuaghering <span class="plainlinks">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbiachén åschaung].</span>',
+'noarticletext' => 'De Seitn enthoid momentan koan Text ned.
+Du konst [[Special:Search/{{PAGENAME}}|nochm Titl]] in andan Seitn suacha,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de Logbiacha duachsuacha],
+oda [{{fullurl:{{FULLPAGENAME}}|action=edit}} de Seitn beorbatn]</span>.',
+'noarticletext-nopermission' => 'There is currently no text in this page.
+Du konst [[Special:Search/{{PAGENAME}}|in Seitntitl]] in andan Seitn suacha, oda <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} dia de Logbiachln dazua oschaugn]</span>, oba du hosd koa Berechtigung de Seitn ozlegn.',
 'userpage-userdoesnotexist' => 'Des Benutzerkonto „<nowiki>$1</nowiki>“ is ned vurhånden. Bittschee priaf, ob du de Seiten wirkle erstöin/beorweiten wüist.',
 'userpage-userdoesnotexist-view' => 'Benutzerkonto „$1“ existiard ned.',
 'blocked-notice-logextract' => "{{GENDER:$1|Der Benutzer|De Benutzarin|Der Benutzer do}} is zurzeid gesperrd.
 Zua da Informazion foigt a aktueller Auszug aus 'm Benutzersperr-Logbiache:",
 'updated' => '(Gänderd)',
 'note' => "'''Hihweis:'''",
-'previewnote' => "'''Dés is netter a Vurschau, d' Seiten is nuh néd gspeicherd worn!'''",
+'previewnote' => "'''Des is nua a Vorschau, de Seitn is no ned gspeichad worn!'''",
 'previewconflict' => "Dé Vurschau gibt 'n Inhoid vom ówern Textföd wieder. Só werd d' Seiten ausschaung, wånnst iatz speichern duast.",
 'session_fail_preview' => "'''Daine Beorwaitungen håm ned gspaichert wern kenna, wail Sitzungsdaaten valurn gånga san.'''
 Bittschee vasuachs nuamoi, indem du unter da foiganden Textvurschau noamoi auf „Saiten spaichern“ druckst.
@@ -568,7 +564,7 @@ Zur Informazion foigt da aktuöie Logbuachaitrog:",
 'templatesused' => "{{PLURAL:$1|Dé fóigernde Vurlog|D' fóigernden Vurlong wern}} auf derer Seiten vawendt:",
 'templatesusedpreview' => "{{PLURAL:$1|De foigande Vurlog werd|D' foiganden Vurlong wern}} in derer Saiten-Vurschau vawendt:",
 'templatesusedsection' => '{{PLURAL:$1|Dé fóigende Vurlog werd|Fóigende Vurlong wern}} voh dém Obschnit vawendt:',
-'template-protected' => '(schreibgschytzd)',
+'template-protected' => '(schreibgschitzt)',
 'template-semiprotected' => '(schreibgschytzd fyr néd-ågmödte Benützer)',
 'hiddencategories' => 'Dé Seiten is in {{PLURAL:$1|a vasteckde Kategorie|$1 vasteckde Kategorien}} eihsortird:',
 'nocreatetitle' => 'De Erstöiung vo naiche Saiten is aigschränkt.',
@@ -585,8 +581,9 @@ Zua deiner Informazión fóigts Lésch- und Vaschiawungs-Logbiaché mid da Begry
 'edit-conflict' => 'Konflikt ban Beorwaten.',
 
 # Parser/template warnings
-'post-expand-template-inclusion-warning' => "Owocht: D' Gréss vo eihbundne Vurlong is z' gróss, étlé Vurlong kennern néd eihbunden wern.",
-'post-expand-template-inclusion-category' => "Seiten, in dé d' maximoie Gréss eihbundner Vurlong ywerschritten is",
+'post-expand-template-inclusion-warning' => 'Obocht: De Gress vo eibundne Vorlong is z gross.
+A poar Vorlogn wean ned eibundn.',
+'post-expand-template-inclusion-category' => 'Seitn, wo d Gress vo de eibundnan Vorlogn ibaschrittn is',
 'post-expand-template-argument-warning' => "'''Ówocht:''' Dé Seiten enthoit minderstens oah Argument in ner Vurlog, dés expandird z' gróss is. Dé Argumentt wern ignorird.",
 'post-expand-template-argument-category' => 'Seiten, dé ignorirde Vurlongargumentt enthoiden',
 
@@ -599,15 +596,15 @@ Zua deiner Informazión fóigts Lésch- und Vaschiawungs-Logbiaché mid da Begry
 # History pages
 'viewpagelogs' => 'Logbiacher fyr dé Seiten åzoang',
 'currentrev' => 'Aktuelle Versión',
-'currentrev-asof' => 'Aktuelle Versión vom $2, $3 Uar.',
-'revisionasof' => 'Versión vom $2, $3 Uar.',
+'currentrev-asof' => 'Letzte Version vo $1',
+'revisionasof' => 'Version vom $1',
 'revision-info' => 'Version vom $2 um $5 Uar am $4.',
-'previousrevision' => '← Nextöderne Versión',
+'previousrevision' => '← Nextejtane Version',
 'nextrevision' => 'Nextjyngerne Version →',
 'currentrevisionlink' => 'Aktuelle Versión',
-'cur' => 'Aktuö',
+'cur' => 'Aktuell',
 'next' => 'Naxte',
-'last' => 'Vurherige',
+'last' => 'Friaare',
 'page_first' => 'Auhfaung',
 'page_last' => 'End',
 'histlegend' => "Zur da Auhzoag voh dé Änderrungen oahfoch dé z' vagleichenden Versiónen auswön und d' Schoitflächen „{{int:compareselectedversions}}“ drucken.<br />
@@ -637,62 +634,62 @@ Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}
 'revdelete-nooldid-title' => 'Koa Version ogem',
 'revdelete-text' => "'''Der Inhalt oder andere Bestandteile gelöschter Versionen sind nicht mehr öffentlich einsehbar, erscheinen jedoch weiterhin als Einträge in der Versionsgeschichte.'''
 {{SITENAME}}-Administratoren können den entfernten Inhalt oder andere entfernte Bestandteile weiterhin einsehen und wiederherstellen, es sei denn, es wurde festgelegt, dass die Zugangsbeschränkungen auch für Administratoren gelten.",
-'revdel-restore' => 'Siagborkeid ändern',
-'revdel-restore-deleted' => 'gschléschde Versión',
-'revdel-restore-visible' => 'siagbore Versión',
+'revdel-restore' => 'Siachtborkeit endan',
+'revdel-restore-deleted' => 'gleschte Versiona',
+'revdel-restore-visible' => 'sichtbore Versiona',
 'pagehist' => 'Versiónsgschicht',
 'deletedhist' => 'Gléschde Versiónen',
 
 # Merge log
-'revertmerge' => 'Vaoanigung zruckénemmer',
+'revertmerge' => 'Vaoanigung zruckdoa',
 'mergelogpagetext' => "Des is s'Logbuach vu de vareinigtn Versionsgschichtn.",
 
 # Diffs
-'history-title' => 'Versiónsgschicht voh „$1“',
-'lineno' => 'Zeiln $1:',
+'history-title' => 'Gschicht vo „$1“ oschaugn',
+'lineno' => 'Zein $1:',
 'compareselectedversions' => 'Gwöde Versionen vagleichen',
-'editundo' => 'ryckgängig',
+'editundo' => 'zruck doa',
 'diff-multi' => '({{PLURAL:$1|A dazwischenliegerte Versión|$1 dazwischenliegende Versiónen}} {{PLURAL:$2|vohram Benutzer|vo $2 Benutzern}} {{PLURAL:$1|werd|wern}} néd åzoagt)',
 
 # Search results
 'searchresults' => 'Suachergebniss',
-'searchresults-title' => 'Ergebniss voh da Suach noch „$1“',
+'searchresults-title' => 'Suacheagebniss fia „$1“',
 'searchresulttext' => "Fia weidare Infos üwa's Suacha schau auf'd [[{{MediaWiki:Helppage}}|Hüifeseitn]].",
 'searchsubtitle' => 'Dei Suachãnfråg: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|ålle Seitn, de mid „$1“ ãnfãngan]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ålle Seitn, de wås nåch „$1“ valinkn]])',
 'searchsubtitleinvalid' => 'Dei Suachãnfråg: „$1“.',
 'notitlematches' => 'Koane Üwareinstimmungen mid de Seitntitl',
 'notextmatches' => 'Ka Üwareinstimmung mid dem Inhåit gfundn',
-'prevn' => '{{PLURAL:$1|vurheriger|vurherige $1}}',
-'nextn' => '{{PLURAL:$1|naxter|naxte $1}}',
-'prevn-title' => '{{PLURAL:$1|Vurherigs Ergebnis|Vurherige $1 Ergebniss}}',
+'prevn' => '{{PLURAL:$1|vorheriga|vorherige $1}}',
+'nextn' => '{{PLURAL:$1|naxta|naxte $1}}',
+'prevn-title' => '{{PLURAL:$1|Vorherigs Ergebnis|Vorherige $1 Ergebniss}}',
 'nextn-title' => '{{PLURAL:$1|Foilgends Ergebnis|Foigende $1 Ergebniss}}',
-'shown-title' => 'Zoag $1 {{PLURAL:$1|Ergebnis|Ergebniss}} pró Seiten',
+'shown-title' => 'Zoag $1 {{PLURAL:$1|Ergebnis|Ergebniss}} pro Seitn',
 'viewprevnext' => 'Zoag ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Es gibt a Seiten, dé'n Nåmen „[[:$1]]“ hod.'''",
-'searchmenu-new' => "'''Erstö d' Seiten „[[:$1]]“ in dém Wiki.'''",
-'searchprofile-articles' => 'Inhoidsseiten',
-'searchprofile-project' => 'Hüfe und Prójektseiten',
-'searchprofile-images' => 'Muitimeedia',
-'searchprofile-everything' => 'Oiss',
-'searchprofile-advanced' => 'Daweiterd',
-'searchprofile-articles-tooltip' => 'Suachen auf $1',
-'searchprofile-project-tooltip' => 'Suachen in $1',
-'searchprofile-images-tooltip' => 'Noch Büder suachen',
-'searchprofile-everything-tooltip' => 'Gsåmmten Inhoid durchsuachen (inkl. Dischkrirseiten)',
-'searchprofile-advanced-tooltip' => 'Suach in weiderne Nåmensraim',
-'search-result-size' => '$1 ({{PLURAL:$2|1 Wort|$2 Werter}})',
+'searchmenu-new' => "'''De Seitn „[[:$1]]“ in em Wiki eastejn.'''",
+'searchprofile-articles' => 'Inhoidsseitn',
+'searchprofile-project' => 'Huif- und Projektseitn',
+'searchprofile-images' => 'Muitimedia',
+'searchprofile-everything' => 'Ollas',
+'searchprofile-advanced' => 'Daweitad',
+'searchprofile-articles-tooltip' => 'Suacha in $1',
+'searchprofile-project-tooltip' => 'Suacha in $1',
+'searchprofile-images-tooltip' => 'Noch Datein suacha',
+'searchprofile-everything-tooltip' => 'In gsamtn Inhoid duachsuacha (inkl. Dischkriaseitn)',
+'searchprofile-advanced-tooltip' => 'Suach in weidna Namasramm',
+'search-result-size' => '$1 ({{PLURAL:$2|1 Wort|$2 Weata}})',
 'search-result-category-size' => '{{PLURAL:$1|1 Seiten|$1 Seiten}} ({{PLURAL:$2|1 Unterkategorie|$2 Unterkategorien}}, {{PLURAL:$3|1 Daatei|$3 Daatein}})',
-'search-redirect' => '(Weiderloattung voh „$1“)',
-'search-section' => '(Åbschnitt $1)',
-'search-suggest' => 'Häderst „$1“ gmoahd?',
+'search-redirect' => '(Weidaloatung vo „$1“)',
+'search-section' => '(Obschnitt $1)',
+'search-suggest' => 'Hädast „$1“ gmoand?',
 'search-interwiki-caption' => 'Schwesterprojekte',
 'search-interwiki-default' => '$1 Eagebnisse:',
 'search-interwiki-more' => '(mea)',
 'searchrelated' => 'vawåndt',
 'searchall' => 'olle',
-'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' voh '''$3'''|Ergebniss '''$1–$2''' voh '''$3'''}} fyr '''$4'''",
+'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' vo '''$3'''|Ergebniss '''$1–$2''' vo '''$3'''}} fia '''$4'''",
 'nonefound' => "'''Hiwais:''' Es wern standardmässig nur oanige Nåmensraim durchsuacht. Setz ''all:'' vur dain Suachbegrif, um olle Saiten (inkl. Dischkrirsaiten, Vurlong usw.) z' durchsuacha oder züid 'n Nåmen vom z' durchsuachanden Nåmensraum.",
-'search-nonefound' => 'Fyr deih Suachåfrog san koane Ergebniss gfunden worn',
+'search-nonefound' => 'Fia dei Suachofrog gibts koa Ergebnis',
 'powersearch' => 'Suach',
 'powersearch-legend' => 'Daweiterde Suach',
 'powersearch-ns' => 'Suach in Nåmensraim:',
@@ -767,7 +764,7 @@ Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|Änderrung|Änderrungen}}',
-'recentchanges' => 'Létzde Änderrungen',
+'recentchanges' => 'Letzte Endarunga',
 'recentchanges-legend' => 'Åzoagopziónen',
 'recentchanges-summary' => "Auf derer Seiten kåst d' létzden Änderrungen auf '''{{SITENAME}}''' nochévavóing.",
 'recentchanges-feed-description' => 'Vafóig mid dém Feed dé létzden Änderrungen in {{SITENAME}}.',
@@ -785,10 +782,10 @@ Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}
 'rcshowhidepatr' => 'Kontróilirde Änderrungen $1',
 'rcshowhidemine' => 'Eigerne Beiträg $1',
 'rclinks' => "D' létzden $1 Änderrungen voh dé létzden $2 Dog åzoang<br />$3",
-'diff' => 'Unterschiad',
-'hist' => 'Versiónen',
-'hide' => 'ausblenden',
-'show' => 'eihblenden',
+'diff' => 'Untaschied',
+'hist' => 'Versiona',
+'hide' => 'Ausblendn',
+'show' => 'Zoag',
 'minoreditletter' => 'K',
 'newpageletter' => 'Neich',
 'boteditletter' => 'B',
@@ -802,10 +799,11 @@ Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}
 # Recent changes linked
 'recentchangeslinked' => 'Änderrungen ån valinkte Seiten',
 'recentchangeslinked-feed' => 'Valinkts priaffm',
-'recentchangeslinked-toolbox' => 'Valinkts priaffm',
+'recentchangeslinked-toolbox' => 'Endarunga af valinktn Seitn',
 'recentchangeslinked-title' => 'Änderrungen ån Seiten, dé voh „$1“ valinkt san',
 'recentchangeslinked-noresult' => 'Im ausgwöden Zeidraum san an dé valinkden Seiten koane Änderrungen vurgnummer worn.',
-'recentchangeslinked-summary' => "Dé Speziaalseiten zoagd d' létzden Änderrungen bei dé Seiten, zua dé voh ner gwissen Seiten valinkd werd (bzw. dé wos in ner gwissen Kategorie eihsortird san). Seiten voh deiner [[Special:Watchlist|Beówochtungslisten]] wern '''fett''' åzoagd.",
+'recentchangeslinked-summary' => "Des is a Listn vo de letztn Endarunga af Seitn, de wo vo ana bstimmtn Seitn valinkt san (bzw. za ana bstimmtn Kategorie ghean).
+Seitn af [[Special:Watchlist|deina Beobochtungslistn]] san '''fett'''.",
 'recentchangeslinked-page' => 'Seiten:',
 'recentchangeslinked-to' => 'Zoagt Änderrungen auf Seiten, dé do her valinken',
 
@@ -878,20 +876,20 @@ Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}
 'listfiles_count' => 'Versiónen',
 
 # File description page
-'file-anchor-link' => 'Daatei',
-'filehist' => 'Daateiversiónen',
-'filehist-help' => "Klick auf an Zeidbunkt, um dé Versión z' loon.",
+'file-anchor-link' => 'Datei',
+'filehist' => 'Dateiversiona',
+'filehist-help' => 'Klick auf an Zeitpunkt, um de Version ozschaugn.',
 'filehist-revert' => 'zrucksétzen',
-'filehist-current' => 'aktuö',
-'filehist-datetime' => 'Versión vom',
-'filehist-thumb' => 'Vurschaubüdel',
-'filehist-thumbtext' => "Vurschaubüdel fyr d' Versión vom $1, $3 Uar",
-'filehist-user' => 'Benutzer',
-'filehist-dimensions' => 'Moosse',
+'filehist-current' => 'aktuell',
+'filehist-datetime' => 'Version vom',
+'filehist-thumb' => 'Vorschaubuidl',
+'filehist-thumbtext' => 'Vorschaubuidl fia d Version vo $1',
+'filehist-user' => 'Nutza',
+'filehist-dimensions' => 'Dimensiona',
 'filehist-filesize' => 'Dateigreess',
 'filehist-comment' => 'Kommentar',
-'imagelinks' => 'Daateivawendung',
-'linkstoimage' => "{{PLURAL:$1|D'foignde Seitn vawendt|De foigndn $1 Seitn vawendn}} de Datei:",
+'imagelinks' => 'Dateivawendung',
+'linkstoimage' => '{{PLURAL:$1|De foigende Seitn vawendt|De foigendn $1 Seitn vawendn}} de Datei:',
 'linkstoimage-more' => "Es {{PLURAL:$1|valinkt|valinkn}} mea wia {{PLURAL:$1|oa Seitn |$1 Seitn}} auf de Datei.
 De foignde Listn zaagt netta {{PLURAL:$1|in easten Link|de easten $1 Links}} auf de Datei.
 A [[Special:WhatLinksHere/$2|voiständige Listn]] gibt's aa.",
@@ -900,7 +898,7 @@ A [[Special:WhatLinksHere/$2|voiständige Listn]] gibt's aa.",
 'duplicatesoffile' => "{{PLURAL:$1|D'foignde Datei is a Duplikat|De foigndn $1 Datein han Duplikate}} vu dea Datei ([[Special:FileDuplicateSearch/$2|weidare Deteus]]):",
 'sharedupload' => 'De Datei stãmmt aus $1 und deaf bei ãndare Projekte vawendt wean.',
 'sharedupload-desc-there' => "De Datei stãmmt aus $1 und deaf bei ãndera Projekte vawendt wean. Schau auf'd [$2 Dateibeschreibungsseitn] fia weidare Infoamazionen.",
-'sharedupload-desc-here' => "Dé Daatei ståmmt aus $1 und derf voh åndre Prójektt vawendt wern. D' Bschreiwung voh da [$2 Daateibschreiwungsseiten] werd unten åzoagt.",
+'sharedupload-desc-here' => 'De Datei stammt aus $1 und deaf vo andan Projektn vawendt wean. De Bschreibung vo da [$2 Dateibschreibungsseitn] wead unen ozoagt.',
 'uploadnewversion-linktext' => 'A neiche Versión voh derer Daatei aufféloon',
 
 # File reversion
@@ -920,7 +918,7 @@ A [[Special:WhatLinksHere/$2|voiständige Listn]] gibt's aa.",
 'unusedtemplateswlh' => 'Aundre Links',
 
 # Random page
-'randompage' => 'Zuafällige Seiten',
+'randompage' => 'Zuafoisseitn',
 
 # Statistics
 'statistics' => 'Staatistik',
@@ -952,7 +950,7 @@ Links as Naumensraim wern do néd afglistt.",
 'fewestrevisions' => "Seiten mid d' weenigsten Versiónen",
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|Byte|Bytes}}',
+'nbytes' => '$1 {{PLURAL:$1|Byte}}',
 'ncategories' => '$1 {{PLURAL:$1|Kategorie|Kategorien}}',
 'nlinks' => '{{PLURAL:$1|a Link|$1 Links}}',
 'nmembers' => '{{PLURAL:$1|1 Eithråg|$1 Eihtreeg}}',
@@ -986,7 +984,7 @@ Links as Naumensraim wern do néd afglistt.",
 'protectedpages-cascade' => 'Netter Seiten mid Kaskadenschutz',
 'protectedtitles' => 'Gschytzde Seitennaumen',
 'usercreated' => '{{GENDER:$3|Erstöd}} am $1 um $2 Uar',
-'newpages' => 'Neiche Seiten',
+'newpages' => 'Neiche Seitn',
 'newpages-username' => 'Benutzernåm:',
 'ancientpages' => 'Schoh länger nimmer beorweitade Seiten',
 'move' => 'vaschiam',
@@ -1019,7 +1017,7 @@ Links as Naumensraim wern do néd afglistt.",
 'allnotinnamespace' => 'Ollte Seiten  (néd im $1 Naumensraum)',
 'allpagesprev' => 'Vurige',
 'allpagesnext' => 'Naxde',
-'allpagessubmit' => 'Auhwenden',
+'allpagessubmit' => 'Owendn',
 'allpagesprefix' => 'Seiten zoang mid Präfix:',
 'allpagesbadtitle' => "Da eihgeewerne Seitennaum is néd gütig: Er hod éntwéder a vurauhgstöds Sprooch-, a Interwiki-Kyrzel óder enthoitt oah óder mererne Zeichen, dé in d' Seitennaumen néd vawendt wern derffm.",
 'allpages-bad-ns' => 'Dén Naumensraum „$1“ gibts in {{SITENAME}} néd.',
@@ -1100,7 +1098,7 @@ Zuasätzlige Informaziónen ywer dé oahzelnen Rechtt kennan [[{{MediaWiki:Listg
 Waunnst dé Seiten wieder voh deiner Beówochtungslisten weggerddoah mechst, druck oafoch auf da jeeweiling Seiten auf „nimmer beówochten“.',
 'removewatch' => 'Voh da Beówochtungslisten wegdoah',
 'removedwatchtext' => "D' Seiten „[[:$1]]“ is voh deiner [[Special:Watchlist|Beówochtungslisten]] wegdauh worn.",
-'watch' => 'Beówochten',
+'watch' => 'Beobochtn',
 'watchthispage' => "D' Seiten beówochten",
 'unwatch' => 'nimmer beówochten',
 'unwatchthispage' => 'Nimmer beówochten',
@@ -1125,11 +1123,7 @@ Waunnst dé Seiten wieder voh deiner Beówochtungslisten weggerddoah mechst, dru
 
 'enotif_mailer' => '{{SITENAME}}-E-Mail-Benoochrichtigungsdeanst',
 'enotif_reset' => 'Olle Seiten ois bsuacht markiern',
-'enotif_newpagetext' => 'Dés is a neiche Seiten.',
 'enotif_impersonal_salutation' => '{{SITENAME}}-Benutzer',
-'changed' => 'gänderd',
-'created' => 'erstöd',
-'enotif_subject' => '[{{SITENAME}}] Dé Seiten „$PAGETITLE“ is voh $PAGEEDITOR $CHANGEDORCREATED',
 'enotif_lastvisited' => 'Olle Änderrungen auf oan Blick: $1',
 'enotif_lastdiff' => 'Schaug auf $1 noch derer Änderrung.',
 'enotif_anon_editor' => 'Anonymer Benutzer $1',
@@ -1186,7 +1180,7 @@ Ryckmödungen und a weidre Hüf: {{canonicalurl:{{MediaWiki:Helppage}}}}',
 'delete-edit-reasonlist' => 'Léschgrynd beorwaten',
 
 # Rollback
-'rollbacklink' => 'Zrucksétzen',
+'rollbacklink' => 'Zrucksetzn',
 'rollbackfailed' => 'Zruckésétzen gscheiterd',
 'cantrollback' => "D' Änderrung kauh néd zruckégsétzd wern, weis koane friarern Autorn gibt.",
 
@@ -1228,8 +1222,8 @@ genauasó wia Details zum létzden Benutzer, der dé Seiten vur da Léschung bor
 Da aktuöje Text voh da gléschden Seiten is netter fyr Administraatorn zuagänglich.',
 'undelete-revision' => 'Geléschde Versión voh $1 (vom $4 um $5 Uar), $3:',
 'undeletebtn' => 'Wiederherstön',
-'undeletelink' => 'åschauh / wiaderherstön',
-'undeleteviewlink' => 'åschaung',
+'undeletelink' => 'oschaugn / wiadaheastejn',
+'undeleteviewlink' => 'oschaugn',
 'undeletereset' => 'Zrucksétzen',
 'undeletedfiles' => '$1 {{plural:$1|Datei|Dateien}} san wieda hergstellt worn',
 'undelete-search-box' => 'Suach noch gléschde Seiten',
@@ -1240,12 +1234,12 @@ Da aktuöje Text voh da gléschden Seiten is netter fyr Administraatorn zuagäng
 'namespace' => 'Namasramm:',
 'invert' => 'Auswoi umdraan',
 'namespace_association' => 'Zuagordnéter Nåmensraum',
-'blanknamespace' => '(Seiten)',
+'blanknamespace' => '(Seitn)',
 
 # Contributions
 'contributions' => 'Benutzerbeiträg',
 'contributions-title' => 'Benutzerbeiträg voh „$1“',
-'mycontris' => 'Meine Beidräg',
+'mycontris' => 'Meine Beidreg',
 'contribsub2' => 'Fyr $1 ($2)',
 'uctop' => '(aktuö)',
 'month' => 'und Monad',
@@ -1264,7 +1258,7 @@ Da aktuöje Text voh da gléschden Seiten is netter fyr Administraatorn zuagäng
 'sp-contributions-submit' => 'Suachen',
 
 # What links here
-'whatlinkshere' => 'Links auf dé Seiten',
+'whatlinkshere' => 'Links af de Seitn',
 'whatlinkshere-title' => 'Seiten, dé noch „$1“ valinken',
 'whatlinkshere-page' => 'Seiten:',
 'linkshere' => "D' vóigernden Seiten valinken noch '''„[[:$1]]“''':",
@@ -1278,7 +1272,7 @@ Da aktuöje Text voh da gléschden Seiten is netter fyr Administraatorn zuagäng
 'whatlinkshere-hideredirs' => 'Weidaleitungen $1',
 'whatlinkshere-hidetrans' => 'Vurlongeihbindung $1',
 'whatlinkshere-hidelinks' => 'Links $1',
-'whatlinkshere-hideimages' => 'Daateilinks $1',
+'whatlinkshere-hideimages' => '$1 Dateilinks',
 'whatlinkshere-filters' => 'Füter',
 
 # Block/unblock
@@ -1309,7 +1303,7 @@ Gib bittschee an Grund fyr d' Sperrn å.",
 'ipbenableautoblock' => "Sperr dé aktuö voh dém Benutzer gnutzde IP-Adress sówia autómaatisch olle fóiganden, voh dénen aus er Beorweitungen óder 's Auhléng voh Benutzerkóntós vasuacht.",
 'ipbsubmit' => 'IP-Adress/Benutzer sperrn',
 'ipbother' => 'Åndre Dauer (auf englisch):',
-'ipboptions' => '2 Stund:2 hours,1 Dog:1 day,3 Dog:3 days,1 Woch:1 week,2 Wochen:2 weeks,1 Monad:1 month,3 Monad:3 months,6 Monad:6 months,1 Jor:1 year, Leemslång:infinite',
+'ipboptions' => '2 Stund:2 hours,1 Dog:1 day,3 Dog:3 days,1 Woch:1 week,2 Wocha:2 weeks,1 Monat:1 month,3 Monat:3 months,6 Monat:6 months,1 Joar:1 year, Infinit:infinite',
 'ipbotheroption' => 'Åndre Dauer:',
 'ipbotherreason' => 'Ånderner/ergenznder Grund:',
 'ipbhidename' => 'An Benytzernåmen in Beorwaitungen und Linsten vastecken',
@@ -1333,9 +1327,9 @@ Zur da Aufheewung vo da Sperrn schau unter da [[Special:BlockList|Listen vo olle
 'ipblocklist-legend' => 'Suach noch am gsperrden Benytzer',
 'createaccountblock' => "'s erstön voh Benutzerkóntós is gsperrd",
 'emailblock' => 'E-Póst vaschicker is gsperrd',
-'blocklink' => 'sperrn',
-'unblocklink' => 'Freigeem',
-'change-blocklink' => 'Sperr ändern',
+'blocklink' => 'Sperrn',
+'unblocklink' => 'Freigebm',
+'change-blocklink' => 'Sperr endan',
 'contribslink' => 'Beidräg',
 'emaillink' => 'E-Póst schicker',
 'autoblocker' => 'Autómaatische Sperr, wei du a gmoahsaume IP-Adress mim [[User:$1|$1]] bnutzd. Grund voh da Benutzersperrn: „$2“.',
@@ -1398,13 +1392,13 @@ Bittschee gib außadem druntn in '''neichn''' Nãm vu da Seitn ei und schreib ku
 'movetalk' => "Waunns geet, d' Dischkrierseiten aa midvaschiam",
 'movelogpage' => 'Vaschiawungs-Logbiaché',
 'movereason' => 'Grund:',
-'revertmove' => 'zruck vaschiam',
+'revertmove' => 'zruck vaschiabm',
 'delete_and_move' => 'Löschn und vaschiam',
 'delete_and_move_reason' => 'glöscht, um Plåtz fia Vaschiam zum macha',
 'selfmove' => 'Ursprungs- und Zielname sand gleich; a Seitn kann net auf sich selber verschom wern.',
 
 # Export
-'export' => 'Seiten exportirn',
+'export' => 'Seitn exportian',
 
 # Namespace 8 related
 'allmessagesname' => 'Nåm:',
@@ -1415,7 +1409,7 @@ Bsuach bittschee de Saiten [//www.mediawiki.org/wiki/Localisation MediaWiki-Loka
 'allmessagesnotsupportedDB' => "'''Special:Allmessages''' is im Moment net möglich, wei de Datenbank offline is.",
 
 # Thumbnails
-'thumbnail-more' => 'vagreessern',
+'thumbnail-more' => 'vagressan',
 'thumbnail_error' => 'Feeler beim Erstön vom Vurschaubüd: $1',
 
 # Special:Import
@@ -1425,67 +1419,69 @@ Bsuach bittschee de Saiten [//www.mediawiki.org/wiki/Localisation MediaWiki-Loka
 'importlogpage' => 'Import-Logbuach',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage' => 'Deih Benutzerseiten',
-'tooltip-pt-mytalk' => 'Deih Diskussiónsseiten',
-'tooltip-pt-preferences' => 'Eigerne Eihstellungen',
-'tooltip-pt-watchlist' => "Listen voh d' Seiten, dést beówochst",
-'tooltip-pt-mycontris' => 'Listen voh dé eigernen Beiträg',
-'tooltip-pt-login' => 'Das ma sé ånmödt, werd zwor gern gseeng, is ower koah Pflicht néd.',
-'tooltip-pt-logout' => 'Obmöden',
-'tooltip-ca-talk' => 'Diskussión zum Seiteninhoid',
-'tooltip-ca-edit' => "Seiten beorweiden. Bittscheh vurm Speichern d' Vurschaufunkzión brauchen",
-'tooltip-ca-addsection' => 'Neichen Obschnit åfånger',
-'tooltip-ca-viewsource' => 'Dé Seiten is gschytzd. Da Quötext kå ower ågschaud wern.',
-'tooltip-ca-history' => 'Friarerne Versiónen voh derer Seiten',
+'tooltip-pt-userpage' => 'Dei Nutzaseitn',
+'tooltip-pt-mytalk' => 'Dei Dischkriaseitn',
+'tooltip-pt-preferences' => 'Deine Preferenzn',
+'tooltip-pt-watchlist' => 'A Listn vo Seitn, wos du beobochtest',
+'tooltip-pt-mycontris' => 'A Listn vo de oagna Beidreg',
+'tooltip-pt-login' => 'Warad schee, wensd di omejdn dadast, es is oba ned zwingend nedig.',
+'tooltip-pt-logout' => 'Auslogga',
+'tooltip-ca-talk' => 'Dischkrian iban Seitninhoid',
+'tooltip-ca-edit' => 'Du konsd de Seitn beorbatn. Bittschee vawendt in Vorschau-Knopf bevorsd speichasd.',
+'tooltip-ca-addsection' => 'Neichn Obschnitt ofanga',
+'tooltip-ca-viewsource' => 'De Seitn is gschitzd. In Quejtext konsda oschaugn.',
+'tooltip-ca-history' => 'Friaare Versiona vo dera Seitn',
 'tooltip-ca-protect' => 'Seiten schytzen',
 'tooltip-ca-unprotect' => 'Seitenschutz ändern',
 'tooltip-ca-delete' => 'De Seitn löschen',
 'tooltip-ca-undelete' => 'Eihträg wiederherstön, bevur dé Seiten gléscht worn is.',
-'tooltip-ca-move' => 'Dé Seiten vaschiam',
-'tooltip-ca-watch' => 'Dé Seiten zua persénlichen Beówochtungslisten dazua doah',
+'tooltip-ca-move' => 'De Seitn vaschiabm',
+'tooltip-ca-watch' => 'De Seitn zua Beobochtungslistn dazua doa',
 'tooltip-ca-unwatch' => 'Dé Seiten voh da persénlichen Beówochtungslisten entferner',
-'tooltip-search' => '{{SITENAME}} durchsuachen',
+'tooltip-search' => '{{SITENAME}} duachsuacha',
 'tooltip-search-go' => 'Gee direkt zua derer Seiten, dé exakd am eihgeewernen Nåm entspricht.',
-'tooltip-search-fulltext' => 'Suach noch Seiten, dé dén Text enthoiden',
-'tooltip-p-logo' => 'Hauptseiten',
-'tooltip-n-mainpage' => 'Hauptseiten åzoang',
-'tooltip-n-mainpage-description' => 'Hauptseiten bsuachen',
-'tooltip-n-portal' => "Ywers Portoi, wos d' mochen kåst, wó eppers z' finden is",
-'tooltip-n-currentevents' => 'Hintergrundinformaziónen ywer akutelle Ereigniss',
-'tooltip-n-recentchanges' => 'Listen voh dé létzden Änderrungen auf {{SITENAME}}',
-'tooltip-n-randompage' => 'Zuaföige Seiten',
-'tooltip-n-help' => 'Hüfeseiten åzoang',
-'tooltip-t-whatlinkshere' => 'Listen voh olle Seiten, dé do her zoang',
-'tooltip-t-recentchangeslinked' => "D' létzden Änderrungen auf dé Seiten, dé voh do valinkt san",
+'tooltip-search-fulltext' => 'Suach noch Seitn, wo den Text enthoiden',
+'tooltip-p-logo' => 'Schau da de Hoamseitn o',
+'tooltip-n-mainpage' => 'Schau da de Hoamseitn o',
+'tooltip-n-mainpage-description' => 'De Hoamseitn bsuacha',
+'tooltip-n-portal' => 'Ibas Projekt, wos d mocha konst, wo wos z findn is',
+'tooltip-n-currentevents' => 'Hintergrundinformaziónen ywer akutelle Ereigniss
+
+Hintagrundinfo za Neiigkeidn',
+'tooltip-n-recentchanges' => 'A Listn vo de letztn Endarunga in da {{SITENAME}}',
+'tooltip-n-randompage' => 'A Zuafoisseitn afruafa',
+'tooltip-n-help' => 'Huifseitn ozoagn',
+'tooltip-t-whatlinkshere' => 'A Listn vo oin Seitn, wo do hea zoagn',
+'tooltip-t-recentchangeslinked' => 'De letztn Endarunga af Seitn, de wo do hea valinka',
 'tooltip-feed-rss' => 'RSS-Feed vo derer Saiten',
-'tooltip-feed-atom' => 'Atom-Feed vo derer Saiten',
+'tooltip-feed-atom' => 'Atom-Feed vo dera Seitn',
 'tooltip-t-contributions' => "D' Listen voh d' Beiträg voh dém Benutzer åschauh",
 'tooltip-t-emailuser' => 'Dém Benutzer a E-Post schicken',
 'tooltip-t-upload' => 'Datein affelodn',
-'tooltip-t-specialpages' => 'Listen voh olle Speziaalseiten',
-'tooltip-t-print' => 'Druckåsicht voh derer Seiten',
-'tooltip-t-permalink' => 'Dauerhofter Link zua derer Seitenversión',
-'tooltip-ca-nstab-main' => 'Seiteninhoid åzoang',
+'tooltip-t-specialpages' => 'A Listn vo olle Spezialseitn',
+'tooltip-t-print' => 'Druckosicht za dea Seitn',
+'tooltip-t-permalink' => 'Dauerhofta Link za dea Seitnversion',
+'tooltip-ca-nstab-main' => 'Seitninhoid ozoagn',
 'tooltip-ca-nstab-user' => 'Benutzerseiten åzoang',
 'tooltip-ca-nstab-media' => 'Meediendaateiseiten åzoang',
 'tooltip-ca-nstab-special' => 'Dés is a Speziaalseiten dést néd beorweiden kåst.',
 'tooltip-ca-nstab-project' => 'Portoiseiten åzoang',
-'tooltip-ca-nstab-image' => 'Daateiseiten åzoang',
+'tooltip-ca-nstab-image' => 'Dateiseiten ozoagn',
 'tooltip-ca-nstab-mediawiki' => 'MediaWiki-Systémtext åzoang',
-'tooltip-ca-nstab-template' => 'Vurlog åzoang',
+'tooltip-ca-nstab-template' => 'Vorlog ozoagn',
 'tooltip-ca-nstab-help' => 'Huifseitn oozoang',
-'tooltip-ca-nstab-category' => 'Kategorieseiten åzoang',
+'tooltip-ca-nstab-category' => 'Kategorieseitn ozoagn',
 'tooltip-minoredit' => 'Dé Änderrung ois a kloane markirn.',
-'tooltip-save' => 'Änderrungen speichern',
+'tooltip-save' => 'Endarunga speichan',
 'tooltip-preview' => 'A Vurschau voh dé Änderrungen an derer Seiten. Bittscheh vurm Speichern bnutzen!',
 'tooltip-diff' => 'Änderrungen am Text zoang',
 'tooltip-compareselectedversions' => 'Unterschiade zwischen zwoa ausgwöde Versiónen voh derer  Seiten vagleichen.',
 'tooltip-watch' => 'Dé Seiten zua persénlichen Beówochtungslisten dazua doah',
 'tooltip-recreate' => 'Seitn nei erstelln, obwoi sie glöscht worn is.',
 'tooltip-upload' => 'Start as Aufféloon',
-'tooltip-rollback' => 'Sétzd olle Beiträg, dé vom gleichen Benutzer gmocht worn san, mid am oanzing Klick auf dé Versión zruck, dé aktuö gwén is, bevur der oane zum werkeln ågfånger hod.',
-'tooltip-undo' => 'Mocht netter dé oane Änderrung ryckgängég und zoagts Resuitot in da Vurschau å, damid in da Zåmmfossungszeiln a Begryndung ågeem wern kå.',
-'tooltip-summary' => 'Gib a kurze Zåmmfossung eih',
+'tooltip-rollback' => 'Setzt olle Endarunga zruck, de wo vom gleichn Nutza gmocht worn san.',
+'tooltip-undo' => 'Nimmt nua de oane Endarung zruck und eameglicht an Grund ozgebm (Zammfossungszein).',
+'tooltip-summary' => 'Gib a kuaze Zammfossung ein',
 
 # Attribution
 'lastmodifiedatby' => 'Dé Seiten is zletzt am $1 um $2 voh $3 gänderd worn.',
@@ -1504,7 +1500,7 @@ Bsuach bittschee de Saiten [//www.mediawiki.org/wiki/Localisation MediaWiki-Loka
 'nextdiff' => 'zum nextn Untaschied in de Veasionen →',
 
 # Media information
-'file-info-size' => '$1 × $2 Pixel, Daateigreess: $3, MIME-Typ: $4',
+'file-info-size' => '$1 × $2 Pixel, Dateigress: $3, MIME-Typ: $4',
 'file-nohires' => 'Es gibt koah heecherne Auflésung.',
 'svg-long-desc' => 'SVG-Datei, Basisgreß: $1 × $2 Pixl, Dateigreß: $3',
 'show-big-image' => 'Versión in heecherner Auflésung',
@@ -1516,13 +1512,14 @@ Bsuach bittschee de Saiten [//www.mediawiki.org/wiki/Localisation MediaWiki-Loka
 'ilsubmit' => 'Suach',
 
 # Bad image list
-'bad_image_list' => "Formaat:
+'bad_image_list' => 'Format wia foigt:
 
-Netter Zeun, dé mid am * åfångern, wern ausgwertt. Ois ersters noch 'm * muass a Link auf a unerwynschde Daatei steh.
-Dodrauf fóigende Links auf Seiten in da söm Zeun definirn Ausnåmen, in dénen eanern Zåmmenhång dé Daatei trótzdém vawendt wern derf.",
+Nua Zein, de wo mit am * ofanga, wean ausgweatet. 
+Da easchte Link in da Zein, muass a Link af a schlechte Datei sei.
+Irgendwejche foigandn Links in da sejm Zein definian Ausnahma, z. B. Seitn wo de Datei trotzdem vawendt wean deaf.',
 
 # Metadata
-'metadata' => 'Metadaaten',
+'metadata' => 'Metadatn',
 'metadata-help' => 'Dé Daatei enthoit weiderne Informaziónen, dé in da Reegel voh da Digitoikammera óder am vawenderden Scanner ståmmern. Durch a noochträgliche Beorweidung voh da Originoidaatei kennern oanige Deteils vaänderd worn seih.',
 'metadata-expand' => 'Erweitate Deteus eiblendn',
 'metadata-collapse' => "D' erweiterden Details eihblenden",
index 94ae3bc..bfc8df8 100644 (file)
@@ -16,6 +16,8 @@
 
 $fallback = 'fa';
 
+$rtl = true;
+
 $namespaceNames = array(
        NS_MEDIA            => 'مدیا',
        NS_SPECIAL          => 'حاص',
@@ -509,9 +511,6 @@ $2',
 
 شما تونیت چه {{SITENAME}} ناشناس استفاده کنیت یا شما تونیت دگه وراد بیت گون دگه یا هما کاربر.
 توجه بیت که لهتی صفحات شاید په داب هما وهدی که شما وراد بوتتیت پیش درگ بند تا وهدی که ذخیره بروزر وتی پاک کنیت.",
-'welcomecreation' => '== وش آتکی،$1! ==
-شمی حساب شر بیت.
- مه شموشیت وتی [[Special:Preferences|{{SITENAME}} ترجیحات]] ترجیحات عوض کنیت',
 'yourname' => 'نام کاربری',
 'yourpassword' => 'کلمه رمز',
 'yourpasswordagain' => 'کلمه رمز دگه نویس',
@@ -1787,11 +1786,7 @@ PICT # misc.
 
 'enotif_mailer' => '{{SITENAME}} ایمیل دیم دهوک اخطاری',
 'enotif_reset' => 'نشان کن کل صفحات په داب چارتگین',
-'enotif_newpagetext' => 'شی یک نوکین صفحه ایت.',
 'enotif_impersonal_salutation' => '{{SITENAME}} کاربر',
-'changed' => 'عوض بوت.',
-'created' => 'شربوتت',
-'enotif_subject' => '{{SITENAME}} صفحه $PAGETITLE بوتت $CHANGEDORCREATED گون $PAGEEDITOR',
 'enotif_lastvisited' => 'بچار  $1 په کلین تغییرات چه شمی آهری چارگ.',
 'enotif_lastdiff' => 'بچار $1 په گندگ ای تغییر.',
 'enotif_anon_editor' => 'ناشناس کاربر $1',
index c328974..25e63ea 100644 (file)
@@ -508,9 +508,6 @@ An administrador na iyo an nagkandado kaini nagpahayag kaining kapaliwanagan: "$
 
 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.",
-'welcomecreation' => '== Maogmang Pag-abot, $1! ==
-An saimong panindog (account) naimukna na tabi.
-Dae ka man tabi malingaw na ribayan an saimong [[Special:Preferences|{{SITENAME}} mga kabôtan]].',
 'yourname' => 'Pangaran kan paragamit:',
 'yourpassword' => 'Pasa-taramon:',
 'yourpasswordagain' => 'Pakilaog giraray kan sekretong panlaog:',
@@ -2144,11 +2141,7 @@ Kun boot mong halîon an páhina sa pigbabantayan mo sa maabot na panahon, pindo
 
 'enotif_mailer' => '{{SITENAME}} Kartero nin isi',
 'enotif_reset' => 'Markahan an gabos na mga binisitang pahina',
-'enotif_newpagetext' => 'Bâgo ining pahina.',
 'enotif_impersonal_salutation' => '{{SITENAME}} parágamit',
-'changed' => 'pigbâgo',
-'created' => 'piggibo',
-'enotif_subject' => 'An pahinang {{SITENAME}} na $PAGETITLE binago $CHANGEDORCREATED ni $PAGEEDITOR',
 'enotif_lastvisited' => 'Hilingón an $1 para sa gabos na mga pagbâgo poon kan huring bisita.',
 'enotif_lastdiff' => 'Hilingón an $1 tangarig mahiling an pagbâgong ini.',
 'enotif_anon_editor' => 'dai bistong parágamit $1',
index 518bf65..1d79763 100644 (file)
@@ -94,7 +94,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Без паказу ўхваленых правак у нядаўніх змяненнях',
 'tog-newpageshidepatrolled' => 'Без паказу ўхваленых правак у пераліку новых старонак',
 'tog-extendwatchlist' => 'Паказваць усе змяненні, а не толькі апошнія',
-'tog-usenewrc' => 'УдаÑ\81каналенÑ\8b Ð²Ñ\8bглÑ\8fд (паÑ\82Ñ\80абÑ\83е Ð¯Ð²Ð°Ñ\81кÑ\80Ñ\8bпÑ\82)',
+'tog-usenewrc' => 'Ð\93Ñ\80Ñ\83паваÑ\86Ñ\8c Ð·Ð¼ÐµÐ½Ñ\8b Ñ\81Ñ\82аÑ\80онкÑ\96 Ñ\9e Ñ\81пÑ\96Ñ\81аÑ\85 Ð°Ð¿Ð¾Ñ\88нÑ\96Ñ\85 Ð·Ð¼ÐµÐ½Ð°Ñ\9e Ñ\96 Ð½Ð°Ð·Ñ\96Ñ\80аннÑ\8fÑ\9e (паÑ\82Ñ\80абÑ\83е JavaScript)',
 'tog-numberheadings' => 'Аўта-нумараваць падзагалоўкі',
 'tog-showtoolbar' => 'Паказваць рэдактарскую стужку (Яваскрыпт)',
 'tog-editondblclick' => 'Праўка старонак па падвойным пстрыку (Яваскрыпт)',
@@ -102,10 +102,10 @@ $messages = array(
 'tog-editsectiononrightclick' => 'Праўка падраздзелаў па правым пстрыку на загалоўку (Яваскрыпт)',
 'tog-showtoc' => 'Паказваць змест (для старонак, дзе больш за 3 падзагалоўкі)',
 'tog-rememberpassword' => 'Памятаць уваходныя даныя ў гэтым браўзеры (не даўжэй за $1 {{PLURAL:$1|дзень|дні|дзён}})',
-'tog-watchcreations' => 'Старонкі, створаныя мной, дадаюцца да назіранага',
-'tog-watchdefault' => 'Старонкі, праўленыя мной, дадаюцца да назіранага',
-'tog-watchmoves' => 'Старонкі, перанесеныя мной, дадаюцца да назіранага',
-'tog-watchdeletion' => 'Старонкі, сцёртыя мной, дадаюцца да назіранага',
+'tog-watchcreations' => 'Старонкі і файлы, створаныя мной, дадаюцца да назіранага',
+'tog-watchdefault' => 'Старонкі і файлы пасля маіх правак дадаюцца да назіранага',
+'tog-watchmoves' => 'Старонкі і файлы, перанесеныя мной пад іншую назву, дадаюцца да назіранага',
+'tog-watchdeletion' => 'Старонкі і файлы, сцёртыя мной, дадаюцца да назіранага',
 'tog-minordefault' => 'Пачынаць кожную праўку як дробную',
 'tog-previewontop' => 'Папярэдні паказ — над рэдактарскім полем',
 'tog-previewonfirst' => 'Папярэдні паказ пры першай праўцы',
@@ -481,7 +481,6 @@ $2',
 'logouttext' => "'''Вы выйшлі з сістэмы.'''
 
 Можна працягваць працу на {{SITENAME}} ананімна, або можна <span class='plainlinks'>[$1 ўвайсці ў сістэму ізноў]</span>, пад тым самым або пад іншым удзельніцкім імем. Заўважце, што некаторыя старонкі могуць паказвацца так, быццам вы яшчэ не выйшлі; у такім разе трэба ачысціць кэш вашага браўзера.",
-'welcomecreation' => '== Вітаем, $1! == Ваш  рахунак быў створаны. Не забудзьцеся дапасаваць свае [[Special:Preferences|{{SITENAME}} настáўленні]].',
 'yourname' => 'Імя ўдзельніка',
 'yourpassword' => 'Пароль',
 'yourpasswordagain' => 'Паўтарыце пароль',
@@ -717,7 +716,7 @@ $2
 або [{{fullurl:{{FULLPAGENAME}}|action=edit}} папрацаваць з гэтай старонкай]</span>.',
 'noarticletext-nopermission' => 'Старонка не ўтрымлівае тэксту.
 Вы можаце [[Special:Search/{{PAGENAME}}|пашукаць гэткую назву]] ў іншых старонках,
-ці <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ў журналах]</span>.',
+ці <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ў журналах]</span>, але вы не маеце дазволу на стварэнне гэтай старонкі.',
 'userpage-userdoesnotexist' => 'Рахунак удзельніка "<nowiki>$1</nowiki>" не зарэгістраваны. Праверце, ці вы жадаеце стварыць або паправіць гэтую старонку.',
 'userpage-userdoesnotexist-view' => 'Уліковы запіс удзельніка " $1 "не зарэгістраваны.',
 'blocked-notice-logextract' => 'Гэты карыстальнік у дадзены момант заблакаваны. 
@@ -738,7 +737,7 @@ $2
 'userinvalidcssjstitle' => "'''Увага:''' Няма вокладкі з назвай \"\$1\". Памятайце, што свае старонкі .css і .js называюцца толькі малымі літарамі, такім чынам, напр., {{ns:user}}:Foo/vector.css, а не {{ns:user}}:Foo/Vector.css.",
 'updated' => '(абноўлена)',
 'note' => "'''Заўвага:'''",
-'previewnote' => "'''Ð\93эта папярэдні паказ; праўкі яшчэ не замацаваныя!'''",
+'previewnote' => "'''Ð\9fамÑ\8fÑ\82айÑ\86е, Ð³эта папярэдні паказ; праўкі яшчэ не замацаваныя!'''",
 'previewconflict' => 'Гэта папярэдні паказ магчымага выніку замацоўвання актуальнага стану крынічнага тэксту ў верхнім тэкставым полі.',
 'session_fail_preview' => "'''Не ўдалося апрацаваць вашую праўку, таму што сервер згубіў звесткі аб вашым сеансе.
 Паспрабуйце, калі ласка, ізноў. Калі і тады не атрымаецца, паспрабуйце [[Special:UserLogout|выйсці з сістэмы]] і зайсці ізноў.'''",
@@ -1966,7 +1965,7 @@ $1',
 
 # Watchlist
 'watchlist' => 'Мой спіс назіранага',
-'mywatchlist' => 'Ð\9dазÑ\96Ñ\80анае',
+'mywatchlist' => 'СпÑ\96Ñ\81 Ð½Ð°Ð·Ñ\96Ñ\80анага',
 'watchlistfor2' => 'Для $1 $2',
 'nowatchlist' => 'Ваш спіс назіранага зараз пусты.',
 'watchlistanontext' => 'Каб бачыць або правіць складнікі назіранага, трэба $1.',
@@ -2004,11 +2003,7 @@ $1',
 
 'enotif_mailer' => 'Апавяшчальнік {{SITENAME}}',
 'enotif_reset' => 'Пазначыць усе старонкі як наведаныя',
-'enotif_newpagetext' => 'Гэта новая старонка.',
 'enotif_impersonal_salutation' => 'Шаноўны ўдзельнік {{SITENAME}}',
-'changed' => 'зменена',
-'created' => 'створана',
-'enotif_subject' => 'Старонка {{SITENAME}} з назвай $PAGETITLE была $CHANGEDORCREATED удзельнікам $PAGEEDITOR',
 'enotif_lastvisited' => 'Гл. $1 каб бачыць усе мены пасля вашага апошняга наведвання.',
 'enotif_lastdiff' => 'Гл. $1 каб бачыць гэтую мену.',
 'enotif_anon_editor' => 'ананімны ўдзельнік $1',
index ccdae69..b6dcb13 100644 (file)
@@ -41,11 +41,14 @@ $namespaceNames = array(
 );
 
 $namespaceAliases = array(
-       'Удзельніца' => NS_USER,
-       'Гутаркі ўдзельніцы' => NS_USER_TALK,
-       'Абмеркаваньне_$1' => NS_PROJECT_TALK,
+       'Абмеркаваньне_$1' => NS_PROJECT_TALK, // legacy support for old non-inflected links
        'Выява' => NS_FILE,
-       'Абмеркаваньне выявы' => NS_FILE_TALK,
+       'Абмеркаваньне_выявы' => NS_FILE_TALK,
+);
+
+$namespaceGenderAliases = array(
+       NS_USER      => array( 'male' => 'Удзельнік', 'female' => 'Удзельніца' ),
+       NS_USER_TALK => array( 'male' => 'Гутаркі_ўдзельніка', 'female' => 'Гутаркі_ўдзельніцы' ),
 );
 
 $specialPageAliases = array(
@@ -423,6 +426,7 @@ $messages = array(
 'namespaces' => 'Прасторы назваў',
 'variants' => 'Варыянты',
 
+'navigation-heading' => 'Навігацыйнае мэню',
 'errorpagetitle' => 'Памылка',
 'returnto' => 'Вярнуцца да старонкі «$1».',
 'tagline' => 'Зьвесткі з {{GRAMMAR:родны|{{SITENAME}}}}',
@@ -665,8 +669,8 @@ $2',
 
 Вы можаце працягваць працу ў {{GRAMMAR:месны|{{SITENAME}}}} ананімна, альбо можаце <span class='plainlinks'>[$1 ўвайсьці ў сыстэму]</span> як той жа альбо іншы ўдзельнік.
 Некаторыя старонкі могуць паказвацца, быццам Вы ўсё яшчэ ў сыстэме. Каб гэтага пазьбегнуць, трэба ачысьціць кэш браўзэра.",
-'welcomecreation' => '== Вітаем, $1! ==
-Ваш рахунак быў створаны.
+'welcomeuser' => 'Вітаем, $1!',
+'welcomecreation-msg' => 'Ваш рахунак быў створаны.
 Не забудзьцеся зьмяніць Вашыя [[Special:Preferences|налады ў {{GRAMMAR:месны|{{SITENAME}}}}]].',
 'yourname' => 'Імя ўдзельніка:',
 'yourpassword' => 'Пароль:',
@@ -1786,6 +1790,7 @@ $1',
 'backend-fail-notsame' => 'Неідэнтыфікаваны файл ужо існуе $1.',
 'backend-fail-invalidpath' => '$1 не зьяўляецца слушным шляхам да сховішча.',
 'backend-fail-delete' => 'Немагчыма выдаліць файл $1.',
+'backend-fail-describe' => 'Не атрымалася зьмяніць мэтазьвесткі для файла «$1».',
 'backend-fail-alreadyexists' => 'Файл $1 ужо існуе.',
 'backend-fail-store' => 'Немагчыма захаваць файл $1 у $2.',
 'backend-fail-copy' => 'Немагчыма скапіяваць файл $1 у $2.',
@@ -2293,29 +2298,31 @@ $1',
 
 'enotif_mailer' => 'Служба паштовага апавяшчэньня {{GRAMMAR:родны|{{SITENAME}}}}',
 'enotif_reset' => 'Пазначыць усе старонкі як прагледжаныя',
-'enotif_newpagetext' => 'Гэта новая старонка.',
 'enotif_impersonal_salutation' => 'Удзельнік {{GRAMMAR:родны|{{SITENAME}}}}',
-'changed' => 'зьмененая',
-'created' => 'створаная',
-'enotif_subject' => 'Старонка {{GRAMMAR:родны|{{SITENAME}}}} $PAGETITLE была $CHANGEDORCREATED ўдзельнікам $PAGEEDITOR',
+'enotif_subject_deleted' => 'Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была выдаленая {{GENDER:$2|удзельнікам|удзельніцай}} $2',
+'enotif_subject_created' => 'Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была створаная {{GENDER:$2|удзельнікам|удзельніцай}} $2',
+'enotif_subject_moved' => 'Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была перанесеная {{GENDER:$2|удзельнікам|удзельніцай}} $2',
+'enotif_subject_restored' => 'Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была адноўленая {{GENDER:$2|удзельнікам|удзельніцай}} $2',
+'enotif_subject_changed' => 'Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была зьмененая {{GENDER:$2|удзельнікам|удзельніцай}} $2',
+'enotif_body_intro_deleted' => 'Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была выдаленая $PAGEEDITDATE {{GENDER:$2|удзельнікам|удзельніцай}} $2, па цяперашнюю вэрсію глядзіце $3.',
+'enotif_body_intro_created' => 'Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была створаная $PAGEEDITDATE {{GENDER:$2|удзельнікам|удзельніцай}} $2, па цяперашнюю вэрсію глядзіце $3.',
+'enotif_body_intro_moved' => 'Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была перанесеная $PAGEEDITDATE {{GENDER:$2|удзельнікам|удзельніцай}} $2, па цяперашнюю вэрсію глядзіце $3.',
+'enotif_body_intro_restored' => 'Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была адноўленая $PAGEEDITDATE {{GENDER:$2|удзельнікам|удзельніцай}} $2, па цяперашнюю вэрсію глядзіце $3.',
+'enotif_body_intro_changed' => 'Старонка {{GRAMMAR:родны|{{SITENAME}}}} «$1» была зьмененая $PAGEEDITDATE {{GENDER:$2|удзельнікам|удзельніцай}} $2, па цяперашнюю вэрсію глядзіце $3.',
 'enotif_lastvisited' => 'Глядзіце на $1 усе апошнія зьмены, якія адбыліся пасьля Вашага апошняга наведваньня.',
 'enotif_lastdiff' => 'Глядзіце $1, каб пабачыць гэтую зьмену.',
 'enotif_anon_editor' => 'ананімны ўдзельнік $1',
-'enotif_body' => 'Шаноўны $WATCHINGUSERNAME,
-
-
-Старонка $PAGETITLE {{GRAMMAR:родны|{{SITENAME}}}} была $CHANGEDORCREATED $PAGEEDITDATE $PAGEEDITOR, глядзіце цяперашнюю вэрсію на $PAGETITLE_URL.
+'enotif_body' => 'Вітаем, $WATCHINGUSERNAME.
 
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
\9aаÑ\80оÑ\82кае Ð°пісаньне зьменаў: $PAGESUMMARY $PAGEMINOREDIT
\90пісаньне зьменаў: $PAGESUMMARY $PAGEMINOREDIT
 
-Зьвязацца з аўтарам:
-электронная пошта: $PAGEEDITOR_EMAIL
²Ñ\96кÑ\96\81Ñ\82аÑ\80онка: $PAGEEDITOR_WIKI
+Зьвязацца з рэдактарам:
+па электроннай пошце: $PAGEEDITOR_EMAIL
¿Ñ\80азÑ\8c Ð²Ñ\96кÑ\96\81Ñ\82аÑ\80онкÑ\83: $PAGEEDITOR_WIKI
 
-Паведамленьні ня будуць дасылацца ў выпадку паўторных рэдагаваньняў, пакуль Вы не наведаеце гэтую старонку.
-Вы можаце пазначыць сьцяжкі дасылкі паведамленьняў для ўсіх старонках назіраньня Вашага сьпісу назіраньня.
+Паведамленьні ня будуць дасылацца ў выпадку паўторных рэдагаваньняў, пакуль Вы не наведаеце гэтую старонку. Вы можаце пазначыць сьцяжкі дасылкі паведамленьняў для ўсіх старонках назіраньня Вашага сьпісу назіраньня.
 
              Сыстэма паведамленьняў {{GRAMMAR:родны|{{SITENAME}}}}
 
@@ -2568,7 +2575,7 @@ $1',
 'autoblockid' => 'Аўтаматычнае блякаваньне №$1',
 'block' => 'Заблякаваць удзельніка',
 'unblock' => 'Разблякаваць удзельніка',
-'blockip' => 'Ð\91лÑ\8fкаванÑ\8cне Ñ\9eдзелÑ\8cнÑ\96ка Ñ\86Ñ\96 Ñ\9eдзелÑ\8cнÑ\96Ñ\86Ñ\8b',
+'blockip' => 'Ð\97аблÑ\8fкаваÑ\86Ñ\8c',
 'blockip-title' => 'Блякаваньне ўдзельніка ці ўдзельніцы',
 'blockip-legend' => 'Заблякаваць удзельніка',
 'blockiptext' => 'Наступная форма дазваляе заблякаваць магчымасьць рэдагаваньня з пэўнага IP-адрасу альбо імя ўдзельніка. Гэта трэба рабіць толькі дзеля прадухіленьня вандалізму і згодна з [[{{MediaWiki:Policy-url}}|правіламі]]. Пазначце ніжэй дакладную прычыну (напрыклад, пералічыце асобныя старонкі, на якіх былі парушэньні).',
@@ -2927,7 +2934,7 @@ $1',
 'javascripttest-qunit-heading' => 'Набор QUnit-тэстаў для MediaWiki JavaScript',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage' => 'Ваша старонка ўдзельніка',
+'tooltip-pt-userpage' => 'Вашая ўласная старонка',
 'tooltip-pt-anonuserpage' => 'Старонка ўдзельніка для IP-адрасу, зь якога Вы рэдагуеце',
 'tooltip-pt-mytalk' => 'Ваша старонка гутарак',
 'tooltip-pt-anontalk' => 'Старонка гутарак пра рэдагаваньні, зробленыя з гэтага IP-адрасу',
@@ -2960,7 +2967,7 @@ $1',
 'tooltip-n-currentevents' => 'Атрымаць інфармацыю пра актуальныя падзеі',
 'tooltip-n-recentchanges' => 'Сьпіс апошніх зьменаў у {{GRAMMAR:месны|{{SITENAME}}}}.',
 'tooltip-n-randompage' => 'Паказаць выпадковую старонку',
-'tooltip-n-help' => 'Месца, каб пра ўсё даведацца.',
+'tooltip-n-help' => 'Месца, каб пра ўсё даведацца',
 'tooltip-t-whatlinkshere' => 'Сьпіс усіх старонак, якія спасылаюцца на гэтую',
 'tooltip-t-recentchangeslinked' => 'Апошнія зьмены ў старонках, на якія спасылаецца гэтая старонка',
 'tooltip-feed-rss' => 'RSS-стужка для гэтай старонкі',
@@ -3083,6 +3090,8 @@ $1',
 'markedaspatrollederror' => 'Немагчыма пазначыць як «патруляваную»',
 'markedaspatrollederrortext' => 'Вы мусіце абраць вэрсію, каб пазначыць яе «патруляванай».',
 'markedaspatrollederror-noautopatrol' => 'Вам не дазволена пазначаць Вашыя ўласныя зьмены як «патруляваныя».',
+'markedaspatrollednotify' => 'Гэтая зьмена ў «$1» была пазначаная як патруляваная.',
+'markedaspatrollederrornotify' => 'Не атрымалася адпатруляваць старонку.',
 
 # Patrol log
 'patrol-log-page' => 'Журнал патруляваньняў',
@@ -3149,11 +3158,14 @@ $1',
 'hours' => '$1 {{PLURAL:$1|гадзіна|гадзіны|гадзінаў}}',
 'days' => '$1 {{PLURAL:$1|дзень|дні|дзён}}',
 'ago' => '$1 таму',
+'just-now' => 'толькі што',
 
 # Bad image list
 'bad_image_list' => 'Фармат наступны:
 
-Разглядаюцца толькі элемэнты сьпісу (радкі, якія пачынаюцца з *). Першая спасылка ў радку мусіць быць спасылкай на кепскую выяву. Усе наступныя спасылкі ў тым жа радку будуць разглядацца як выключэньні, напрыклад, старонкі, дзе можа зьяўляцца выява.',
+Разглядаюцца толькі элемэнты сьпісу (радкі, якія пачынаюцца з *).
+Першая спасылка ў радку мусіць быць спасылкай на кепскую выяву.
+Усе наступныя спасылкі ў тым жа радку будуць разглядацца як выключэньні, напрыклад, старонкі, дзе можа зьяўляцца выява.',
 
 # Metadata
 'metadata' => 'Мэтазьвесткі',
@@ -3907,8 +3919,8 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'logentry-move-move_redir-noredirect' => '$1 перанёс старонку $3 у $4 паўзьверх перанакіраваньня без пакінутага перанакіраваньня',
 'logentry-patrol-patrol' => '$1 пазначыў вэрсію $4 старонкі $3 як правераную',
 'logentry-patrol-patrol-auto' => '$1 аўтаматычна пазначыў вэрсію $4 старонкі $3 як правераную',
-'logentry-newusers-newusers' => '$1 стварыў рахунак',
-'logentry-newusers-create' => '$1 стварыў рахунак',
+'logentry-newusers-newusers' => 'Быў створаны рахунак $1',
+'logentry-newusers-create' => 'Быў створаны рахунак $1',
 'logentry-newusers-create2' => '$1 стварыў рахунак $3',
 'logentry-newusers-autocreate' => 'Рахунак $1 быў створаны аўтаматычна',
 'newuserlog-byemail' => 'Пароль адасланы па электроннай пошце',
@@ -3986,5 +3998,5 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'duration-millennia' => '$1 {{PLURAL:$1|тысячагодзьдзе|тысячагодзьдзі|тысячагодзьдзяў}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'гутаркі',
+'svg-long-error' => 'Няслушны SVG-файл: $1',
 );
index eb69d43..cf47927 100644 (file)
@@ -371,8 +371,8 @@ $messages = array(
 'newwindow' => '(отваря се в нов прозорец)',
 'cancel' => 'Отказ',
 'moredotdotdot' => 'Още…',
-'mypage' => 'Ð\9cоÑ\8fÑ\82а Ñ\81траница',
-'mytalk' => 'Ð\9cоÑ\8fÑ\82а Ð±еседа',
+'mypage' => 'Страница',
+'mytalk' => 'Ð\91еседа',
 'anontalk' => 'Беседа за адреса',
 'navigation' => 'Навигация',
 'and' => '&#32;и',
@@ -394,7 +394,7 @@ $messages = array(
 'vector-action-protect' => 'Защита',
 'vector-action-undelete' => 'Възстановяване',
 'vector-action-unprotect' => 'Промяна на защитата',
-'vector-simplesearch-preference' => 'Ð\92клÑ\8eÑ\87ване Ð½Ð° Ð¿Ñ\80едложенииÑ\8f Ð¿Ñ\80и Ñ\82Ñ\8aÑ\80Ñ\81ене (Ñ\81амо Ð·Ð° Ð¸Ð·Ð³Ð»ÐµÐ´а Vector)',
+'vector-simplesearch-preference' => 'Ð\92клÑ\8eÑ\87ване Ð½Ð° Ð¾Ð¿Ñ\80оÑ\81Ñ\82ена Ð»ÐµÐ½Ñ\82а Ð·Ð° Ñ\82Ñ\8aÑ\80Ñ\81ене (Ñ\81амо Ð·Ð° Ð¾Ð±Ð»Ð¸Ðºа Vector)',
 'vector-view-create' => 'Създаване',
 'vector-view-edit' => 'Редактиране',
 'vector-view-history' => 'История',
@@ -404,6 +404,7 @@ $messages = array(
 'namespaces' => 'Именни пространства',
 'variants' => 'Варианти',
 
+'navigation-heading' => 'Навигация',
 'errorpagetitle' => 'Грешка',
 'returnto' => 'Обратно към $1.',
 'tagline' => 'от {{SITENAME}}',
@@ -501,6 +502,8 @@ $1',
 'youhavenewmessages' => 'Имате $1 ($2).',
 'newmessageslink' => 'нови съобщения',
 'newmessagesdifflink' => 'разлика с предишната версия',
+'youhavenewmessagesfromusers' => 'Имате $1 от {{PLURAL:$3|друг потребител|$3 потребители}} ($2).',
+'youhavenewmessagesmanyusers' => 'Имате $1 от много потребители ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ново съобщение|нови съобщения}}',
 'youhavenewmessagesmulti' => 'Имате нови съобщения в $1',
 'editsection' => 'редактиране',
@@ -635,9 +638,8 @@ $2',
 
 Можете да продължите да използвате {{SITENAME}} анонимно или да <span class='plainlinks'>[$1 влезете отново]</span> като друг потребител.
 Обърнете внимание, че някои страници все още ще се показват така, сякаш сте влезли, докато не изтриете кеш-паметта на браузъра.",
-'welcomecreation' => '== Добре дошли, $1! ==
-
-Вашата сметка беше създадена.
+'welcomeuser' => 'Здравейте, $1!',
+'welcomecreation-msg' => 'Вашата сметка беше създадена.
 Можете да промените [[Special:Preferences|настройките на {{SITENAME}}]] според предпочитанията си.',
 'yourname' => 'Потребителско име:',
 'yourpassword' => 'Парола:',
@@ -884,9 +886,12 @@ $2
 
 ''Ако сте анонимен потребител и мислите, че тези неуместни коментари са отправени към вас, [[Special:UserLogin/signup|регистрирайте се]] или [[Special:UserLogin|влезте в системата]], за да избегнете евентуално бъдещо объркване с други анонимни потребители.''",
 '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={{FULLPAGENAMEE}}}} потърсите в съответните дневници]</span>.',
+'noarticletext-nopermission' => 'Текущо в тази страница няма текст.
+Можете да [[Special:Search/{{PAGENAME}}|потърсите заглавието на тази страница ]] в други страници или да <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} потърсите в съответните дневници]</span>, но нямате права да създадете тази страница.',
+'missing-revision' => 'Версия #$1 на страницата „{{PAGENAME}}“ не съществува.
+
+Това обикновено се дължи на препратка от историята на страницата, която е била изтрита.
+Подробности могат да бъдат открити в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневника на изтриванията].',
 'userpage-userdoesnotexist' => 'Няма регистрирана потребителска сметка за „<nowiki>$1</nowiki>“. Изисква се потвърждение, че желаете да създадете/редактирате тази страница?',
 'userpage-userdoesnotexist-view' => 'Не е регистрирана потребителска сметка на име „$1“.',
 'blocked-notice-logextract' => 'В момента този потребител е блокиран.
@@ -987,6 +992,16 @@ $2
 'edit-already-exists' => 'Не можа да се създаде нова страница.
 Такава вече съществува.',
 'defaultmessagetext' => 'Текст на съобщението по подразбиране',
+'content-failed-to-parse' => 'Неуспех при анализиране на съдържанието от тип $2 за модела $1: $3',
+'invalid-content-data' => 'Невалидни данни за съдържание',
+'content-not-allowed-here' => '
+На страницата [[$2]] не е позволено използването на $1',
+
+# Content models
+'content-model-wikitext' => 'уикитекст',
+'content-model-text' => 'обикновен текст',
+'content-model-javascript' => 'Джаваскрипт',
+'content-model-css' => 'CSS',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Внимание: Тази страница прекалено много пъти използва ресурсоемки парсерни функции.
@@ -1001,6 +1016,8 @@ $2
 'parser-template-loop-warning' => 'Открито зацикляне на шаблон: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Надвишен лимит на дълбочината при шаблонна рекурсия ($1)',
 'language-converter-depth-warning' => 'Надвишени са възможностите за автоматичен превод ($1)',
+'node-count-exceeded-category' => 'Страници, където е превишен възел-граф',
+'node-count-exceeded-warning' => 'Страница превишава възел-брой',
 
 # "Undo" feature
 'undo-success' => 'Редакцията може да бъде върната. Прегледайте долното сравнение и се уверете, че наистина искате да го направите. След това съхранете страницата, за да извършите връщането.',
@@ -1489,6 +1506,9 @@ $1",
 'rightslog' => 'Дневник на потребителските права',
 'rightslogtext' => 'Това е дневник на промените на потребителски права.',
 'rightslogentry' => 'промени потребителската група на $1 от $2 в $3',
+'rightslogentry-autopromote' => 'автоматично е повишен от $2 до$3',
+'logentry-rights-autopromote' => '
+$1 е автоматично повишен от $4 до $5',
 'rightsnone' => '(никакви)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1560,9 +1580,11 @@ $1",
 'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|наблюдаващ потребител|наблюдаващи потребители}}]',
 'rc_categories' => 'Само от категории (разделител „|“)',
 'rc_categories_any' => 'Която и да е',
+'rc-change-size-new' => '$1 {{PLURAL:$1|бит|бита}} след редакцията',
 'newsectionsummary' => 'Нова тема /* $1 */',
 'rc-enhanced-expand' => 'Показване на детайли (изисква JavaScript)',
 'rc-enhanced-hide' => 'Скриване на детайли',
+'rc-old-title' => 'първоначално създадена като „$1“',
 
 # Recent changes linked
 'recentchangeslinked' => 'Свързани промени',
@@ -2156,11 +2178,7 @@ $1',
 
 'enotif_mailer' => 'Известяване по пощата на {{SITENAME}}',
 'enotif_reset' => 'Отбелязване на всички страници като посетени',
-'enotif_newpagetext' => 'Това е нова страница.',
 'enotif_impersonal_salutation' => 'Потребител на {{SITENAME}}',
-'changed' => 'променена',
-'created' => 'създадена',
-'enotif_subject' => 'Страницата $PAGETITLE в {{SITENAME}} е била $CHANGEDORCREATED от $PAGEEDITOR',
 'enotif_lastvisited' => 'Преглед на всички промени след последното ви посещение: $1.',
 'enotif_lastdiff' => 'Преглед на тази промяна: $1.',
 'enotif_anon_editor' => 'анонимен потребител $1',
@@ -2228,6 +2246,8 @@ $UNWATCHURL
 'rollback' => 'Отмяна на промените',
 'rollback_short' => 'Отмяна',
 'rollbacklink' => 'отмяна',
+'rollbacklinkcount' => 'отмяна на $1 {{PLURAL:$1|редакция|редакции}}',
+'rollbacklinkcount-morethan' => 'отмяна на повече от $1 {{PLURAL:$1|редакция|редакции}}',
 'rollbackfailed' => 'Отмяната не сполучи',
 'cantrollback' => 'Не може да се извърши отмяна на редакциите. Последният редактор е и единствен автор на страницата.',
 'alreadyrolled' => 'Редакцията на [[:$1]], направена от [[User:$2|$2]] ([[User talk:$2|Беседа]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), не може да бъде отменена. Някой друг вече е редактирал страницата или е отменил промените.
@@ -2331,7 +2351,8 @@ $UNWATCHURL
 'undeletedrevisions' => '{{PLURAL:$1|Една версия беше възстановена|$1 версии бяха възстановени}}',
 'undeletedrevisions-files' => '{{PLURAL:$1|Една версия|$1 версии}} и {{PLURAL:$1|един файл|$2 файла}} бяха възстановени',
 'undeletedfiles' => '{{PLURAL:$1|Един файл беше възстановен|$1 файла бяха възстановени}}',
-'cannotundelete' => 'Грешка при възстановяването. Възможно е някой друг вече да е възстановил страницата.',
+'cannotundelete' => 'Възстановяването беше неуспешно:
+$1',
 'undeletedpage' => "'''Страницата „$1“ беше възстановена.'''
 
 Можете да видите последните изтрити и възстановени страници в [[Special:Log/delete|дневника на изтриванията]].",
@@ -2364,7 +2385,7 @@ $1',
 # Contributions
 'contributions' => 'Приноси',
 'contributions-title' => 'Потребителски приноси за $1',
-'mycontris' => 'Ð\9cоиÑ\82е Ð¿риноси',
+'mycontris' => 'Ð\9fриноси',
 'contribsub2' => 'За $1 ($2)',
 'nocontribs' => 'Не са намерени промени, отговарящи на критерия.',
 'uctop' => ' (последна)',
@@ -2864,6 +2885,8 @@ $1',
 'pageinfo-edits' => 'Общ брой редакции',
 'pageinfo-authors' => 'Общ брой на отделните автори',
 'pageinfo-magic-words' => '{{PLURAL:$1|Вълшебна думичка|Вълшебни думички}} ($1)',
+'pageinfo-contentpage-yes' => 'Да',
+'pageinfo-protect-cascading-yes' => 'Да',
 
 # Skin names
 'skinname-standard' => 'Класика',
@@ -3620,8 +3643,8 @@ MediaWiki се разпространява с надеждата, че ще б
 'logentry-move-move_redir-noredirect' => '$1 премести върху пренасочване „$3“ като „$4“ без пренасочване',
 'logentry-patrol-patrol' => '$1 отбеляза като патрулирана версия $4 на страницата „$3“',
 'logentry-patrol-patrol-auto' => '$1 автоматично отбеляза като патрулирана версия $4 на страницата $3',
-'logentry-newusers-newusers' => '$1 създаде потребителска сметка',
-'logentry-newusers-create' => '$1 създаде потребителска сметка',
+'logentry-newusers-newusers' => 'Потребителската сметка $1 беше създадена',
+'logentry-newusers-create' => 'Потребителската сметка $1 беше създадена',
 'logentry-newusers-create2' => '$1 създаде потребителска сметка $3',
 'logentry-newusers-autocreate' => 'Сметката $1 беше създадена автоматично',
 'newuserlog-byemail' => 'паролата е изпратена по е-поща',
index c4b7111..9542b65 100644 (file)
@@ -540,9 +540,6 @@ Administrator nang takunci nintu manawarakan panjalasan: "$3".',
 
 Pian kawa manyambung hagan mangguna'akan {{SITENAME}} kada bangaran, atawa Pian kawa <span class='plainlinks'>[$1 babuat log pulang]</span> sawagai pamakai nang sama atawa sawagai pamakai balain.
 Catatan bahwasa babarapa tungkaran pinanya masih ha tarus manampaiakan Pian masih babuat log, sampai Pian mahabisakan timbuluk panjalajah web Pian.",
-'welcomecreation' => '==Salamat datang, $1!==
-Akun Pian sudah diulah.
-Jangan kada ingat hagan maubah [[Special:Preferences|kakatujuan {{SITENAME}}]] Pian.',
 'yourname' => 'Ngaran pamakai:',
 'yourpassword' => 'Katasunduk:',
 'yourpasswordagain' => 'Katik pulang katasunduk:',
@@ -2131,11 +2128,7 @@ Parubahan-parubahan salanjutnya pada tungkaran ini dan tungkaran pamandiran tara
 
 'enotif_mailer' => 'Panyurili pamadahan {{SITENAME}}',
 'enotif_reset' => 'Tandai samunyaan tutungkaran sudah diilangi',
-'enotif_newpagetext' => 'Ngini adalah sabuah tungkaran hanyar.',
 'enotif_impersonal_salutation' => 'Pamuruk {{SITENAME}}',
-'changed' => "ta'ubah",
-'created' => "ta'ulah",
-'enotif_subject' => 'Tungkaran $PAGETITLE pintang {{SITENAME}} sudah $CHANGEDORCREATED ulih $PAGEEDITOR',
 'enotif_lastvisited' => 'Janaki $1 gasan samunyaan parubahan mula Pian pauncitan tadi bailang.',
 'enotif_lastdiff' => 'Janaki $1 hagaan maniringi parubahan ngini.',
 'enotif_anon_editor' => 'pamuruk kada-bangaran $1',
index b08cce1..28fe789 100644 (file)
@@ -202,7 +202,7 @@ $messages = array(
 'cancel' => 'বাতিল',
 'moredotdotdot' => 'আরও...',
 'mypage' => 'আমার পাতা',
-'mytalk' => 'à¦\86মার à¦\86লাপ',
+'mytalk' => 'à¦\86লà§\8bà¦\9aনা',
 'anontalk' => 'এই বেনামী ব্যবহারকারীর আলাপের পাতা',
 'navigation' => 'পরিভ্রমণ',
 'and' => '&#32;এবং',
@@ -476,9 +476,6 @@ $2',
 
 এ পরিস্থিতিতে আপনি বেনামে {{SITENAME}} ব্যবহার করতে পারেন, কিংবা একই বা পৃথক নামে <span class='plainlinks'>[$1 আবার প্রবেশ করতে]</span> পারেন।
 লক্ষ্য করুন যে, এর কোন কোন পাতা এখনও এমনভাবে দেখাতে পারে যাতে মনে হবে আপনি আগের অবস্থাতেই আছেন। এক্ষেত্রে আপনাকে আপনার ব্রাওজারের ক্যাশ পরিষ্কার (clear browser cache) করে নিতে হবে।",
-'welcomecreation' => '== স্বাগতম $1! ==
-আপনার অ্যাকাউন্ট তৈরী হয়েছে।
-আপনার [[Special:Preferences|{{SITENAME}} পছন্দসমূহ]]  স্থির করে নিতে ভুলবেন না কিন্তু।',
 'yourname' => 'ব্যবহারকারী নাম:',
 'yourpassword' => 'শব্দচাবি:',
 'yourpasswordagain' => 'শব্দচাবিটি (password) আবার লিখুন',
@@ -1123,7 +1120,7 @@ $1",
 
 # Preferences page
 'preferences' => 'আমার পছন্দ',
-'mypreferences' => 'à¦\86মার à¦ªà¦\9bনà§\8dদ',
+'mypreferences' => 'পà¦\9bনà§\8dদসমà§\82হ',
 'prefs-edits' => 'সম্পাদনা সংখ্যা:',
 'prefsnologin' => 'আপনি লগ-ইন করেননি',
 'prefsnologintext' => 'ব্যবহারকারীর পছন্দ ঠিক করতে হলে আপনাকে অবশ্যই <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} লগইন]</span> করা অবস্থায় থাকতে হবে।',
@@ -1964,7 +1961,7 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 'linksearch-ok' => 'অনুসন্ধান',
 'linksearch-text' => '"*.wikipedia.org" এর মত ওয়াইল্ড কার্ড ব্যবহার করা যেতে পারে।
 নূন্যতম একটি টপ লেভেল ডোমেইন প্রয়োজন, যেমন "*.org".<br />
-যà§\87 à¦¸à¦\95ল à¦ªà§\8dরà§\8bà¦\9fà§\8bà¦\95ল à¦¸à¦®à¦°à§\8dথন à¦\95রà§\87: <code>$1</code> (à¦\85নà§\81সনà§\8dধান à¦¬à¦\95à§\8dসà§\87 à¦\8fà¦\97à§\81লà§\8b à¦¬à§\8dযবহার à¦\95রবà§\87ন à¦¨à¦¾)।',
+যà§\87 à¦¸à¦\95ল à¦ªà§\8dরà§\8bà¦\9fà§\8bà¦\95ল à¦¸à¦®à¦°à§\8dথন à¦\95রà§\87: <code>$1</code> (পà§\8dরà§\8bà¦\9fà¦\95ল à¦\89লà§\8dলà§\87à¦\96 à¦\95রা à¦¨à¦¾ à¦¹à¦²à§\87 http:// à¦¡à¦¿à¦«à¦²à§\8dà¦\9f à¦¹à¦¿à¦¸à¦¾à¦¬à§\87 à¦¬à§\8dযবহà§\83ত à¦¹à¦¬à§\87)।',
 'linksearch-line' => '$2 থেকে $1 এ লিংক করা হয়েছে',
 'linksearch-error' => 'হোস্ট নামের শুরুতে কেবলমাত্র ওয়াইল্ডকার্ড ব্যবহার করা যায়।',
 
@@ -2045,7 +2042,7 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 
 # Watchlist
 'watchlist' => 'আমার নজর তালিকা',
-'mywatchlist' => 'à¦\86মার à¦¨à¦\9cর à¦¤à¦¾à¦²à¦¿à¦\95া',
+'mywatchlist' => 'নজর তালিকা',
 'watchlistfor2' => '$1 ($2)-এর জন্য',
 'nowatchlist' => 'আপনার নজরতালিকা খালি।',
 'watchlistanontext' => 'আপনার নজরতালিকার আইটেমগুলি দেখতে বা সম্পাদনা করতে অনুগ্রহ করে $1।',
@@ -2085,11 +2082,7 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 
 'enotif_mailer' => '{{SITENAME}} বিজ্ঞপ্তি ই-মেইল প্রেরক',
 'enotif_reset' => 'সমস্ত পাতা দেখা হয়েছে হিসেবে চিহ্নিত করুন',
-'enotif_newpagetext' => 'এটি একটি নতুন পাতা।',
 'enotif_impersonal_salutation' => '{{SITENAME}} ব্যবহারকারী',
-'changed' => 'পরিবর্তিত',
-'created' => 'তৈরী হয়েছিল',
-'enotif_subject' => '{{SITENAME}}-এর $PAGETITLE শিরোনামের পাতাটি $PAGEEDITOR কর্তৃক $CHANGEDORCREATED হয়েছে',
 'enotif_lastvisited' => 'আপনার শেষ আগমনের পরে সংঘটিত সমস্ত পরিবর্তনের জন্য $1 দেখুন।',
 'enotif_lastdiff' => 'এই পরিবর্তনটি দেখার জন্য $1 দেখুন।',
 'enotif_anon_editor' => 'বেনামী ব্যবহারকারী $1',
@@ -2307,7 +2300,7 @@ $1',
 # Contributions
 'contributions' => 'ব্যবহারকারীর অবদান',
 'contributions-title' => '$1 ব্যবহারকারীর অবদানসমূহ',
-'mycontris' => 'à¦\86মার à¦\85বদান',
+'mycontris' => 'অবদান',
 'contribsub2' => '$1 ($2)-এর জন্য',
 'nocontribs' => 'এই শর্তগুলির সাথে মিলে যায়, এমন কোন পরিবর্তন খুঁজে পাওয়া যায়নি।',
 'uctop' => '(শীর্ষ)',
@@ -2348,7 +2341,7 @@ $1',
 'whatlinkshere-hideredirs' => '$1 টি পুননির্দেশনা',
 'whatlinkshere-hidetrans' => '$1 ট্রান্সক্লুশন',
 'whatlinkshere-hidelinks' => '$1 টি সংযোগ',
-'whatlinkshere-hideimages' => '$1 à¦\9aিতà§\8dর সংযোগ',
+'whatlinkshere-hideimages' => '$1 à¦«à¦¾à¦\87ল সংযোগ',
 'whatlinkshere-filters' => 'ছাকনী',
 
 # Block/unblock
index b9a145c..c3aeffd 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Freeyak
  * @author Jason (on bo.wikipedia.org)
+ * @author YeshiTuhden
  */
 
 $digitTransformTable = array(
@@ -230,6 +231,7 @@ $messages = array(
 'disclaimerpage' => 'Project:སྤྱིའི་དགག་བྱ།',
 'edithelp' => 'རྩོམ་སྒྲིག་རོགས་རམ།',
 'edithelppage' => 'Help:རྩོམ་སྒྲིག',
+'helppage' => 'Help:ནང་དོན་',
 'mainpage' => 'གཙོ་ངོས།',
 'mainpage-description' => 'གཙོ་ངོས།',
 'policy-url' => 'Project: སྒྲིག་གཞི།',
@@ -395,6 +397,8 @@ $messages = array(
 'templatesused' => 'ཤོག་ངོས་འདིར་སྤྱད་པའི་ {{PLURAL:$1|དཔེ་པང་།|དཔེ་པང་།}}',
 'template-protected' => 'སྲུང་སྐྱོབ་འོག་ཡོད་པ།',
 'nocreate-loggedin' => 'ཤོག་ངོས་གསར་བཟོའི་ཆོག་མཆན་མི་འདུག',
+'recreate-moveddeleted-warn' => "'''ཉེན་བརྡ་:རང་གིས་སུབ་ཚར་བའི་ཤོག་ལེ་ཞིག་བསྐྱར་བཟོ་བྱེད་ཀྱི་འདུག་ '''
+ཁྱེད་རང་གལ་སྲིད་མུ་མཐུད་ཤོག་ལེ་འདི་བཟོ་ཅོས་བྱེད་འདོད་ན་སྟབས་བདེ་ཞིག་ལ་ང་ཚོས་སུབ་བཟིན་པའི་ཤོག་ལེ་འདིར་ཉར་ཡོད།",
 
 # History pages
 'viewpagelogs' => 'ཤོག་ངོས་འདིའི་ཉིན་ཐོ་ལ་ལྟ་བ།',
@@ -445,9 +449,14 @@ $messages = array(
 'nextn' => 'རྗེས་མ་{{PLURAL:$1|$1}}',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3)ལ་ལྟ་བ།',
 'searchmenu-legend' => 'འཚོལ་ཞིབ་འདེམས་ཚན།',
+'searchmenu-new' => 'ལྦེ་ཁེ་སྟེང་ལ་ཤོག་ལེ་ [[:$1]]བཟོས།',
+'searchprofile-project' => 'རོགས་རམ་དང་འཆར་གཞིའི་ཤོག་ངོས་',
+'searchprofile-everything' => 'ཚང་མ་',
+'searchprofile-advanced' => 'མཐོ་རིམ་',
 'searchprofile-articles-tooltip' => '$1ནང་དུ་འཚོལ་བ།',
 'searchprofile-project-tooltip' => '$1ནང་དུ་འཚོལ་བ།',
 'searchprofile-images-tooltip' => 'ཡིག་ཆ་འཚོལ་བ།',
+'searchprofile-everything-tooltip' => 'བརྗོད་དོན་ཚང་མ་འཚོལ་གཞིབ་བྱེད་(གྲོས་མེས་ཤོག་ངོས་ཡང་འཚུད་པ་)',
 'search-result-size' => '$1({{PLURAL:$2|1 word|$2 words}})',
 'search-redirect' => '($1རིམ་འགྲེམ།)',
 'search-section' => '(ཚན་པ $1)',
@@ -457,6 +466,7 @@ $messages = array(
 'search-interwiki-more' => '(དེ་ལས་མང་བ།)',
 'search-relatedarticle' => 'འབྲེལ་ཡོད།',
 'searchall' => 'ཚང་མ།',
+'search-nonefound' => 'ཁྱེད་ཀྱི་འདྲི་ཞིབ་དང་མཐུན་པའི་ལན་མི་འདུག་',
 'powersearch' => 'ཞིབ་ཏུ་འཚོལ་བ།',
 'powersearch-legend' => 'ཞིབ་ཏུ་འཚོལ་བ།',
 'powersearch-ns' => 'མིང་གནས་ནང་འཚོལ་བ།',
@@ -731,6 +741,7 @@ $messages = array(
 
 # Undelete
 'undeletelink' => 'ལྟ་བ། / བསྐྱར་འདྲེན།',
+'undeleteviewlink' => 'ལྟ་བ་',
 'undelete-search-submit' => 'འཚོལ།',
 
 # Namespace form on various pages
@@ -784,6 +795,7 @@ $messages = array(
 
 # Namespace 8 related
 'allmessages' => 'མ་ལག་གི་སྐད་ཆ།',
+'allmessagesname' => 'མིང་',
 
 # Thumbnails
 'thumbnail-more' => 'ཆེ་རུ་གཏོང་བ།',
@@ -838,6 +850,7 @@ $messages = array(
 'tooltip-save' => 'བཟོ་བཅོས་ཉར་ཚགས་བྱོས།',
 'tooltip-preview' => 'ཉར་ཚགས་ཀྱི་སྔོན་དུ་བཟོ་བཅོས་ལ་བསྐྱར་ཞིབ་གནང་རོགས།',
 'tooltip-diff' => 'གང་ལ་བཟོ་བཅོས་བྱས་པའི་ཡིག་འབྲུ་སྟོན་པ།',
+'tooltip-summary' => 'ཕྱོགས་བསྡོམས་ཐུང་ངུ་ཞིག་འབྲིས་',
 
 # Browsing diffs
 'previousdiff' => '← རྩོམ་སྒྲིག་རྙིང་བ།',
index 12ff736..b0f1d7e 100644 (file)
@@ -15,6 +15,8 @@
 
 $fallback = 'fa';
 
+$rtl = true;
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'لینکهای خط به زیر',
index b9cb6da..7493550 100644 (file)
@@ -584,10 +584,6 @@ Setu amañ perak ''$2''.",
 
 Gallout a rit kenderc'hel da implijout {{SITENAME}} en un doare dizanv, pe <span class='plainlinks'>[$1 kevreañ en-dro]</span> gant an hevelep anv pe un anv all mar fell deoc'h.
 Notit mat e c'hallo pajennoù zo kenderc'hel da vezañ diskwelet evel pa vefec'h kevreet c'hoazh, betek ma vo riñset krubuilh ho merdeer ganeoc'h.",
-'welcomecreation' => '== Degemer mat, $1! ==
-
-Krouet eo bet ho kont implijer.
-Na zisoñjit ket resisaat ho [[Special:Preferences|penndibaboù evit {{SITENAME}}]].',
 'yourname' => 'Anv implijer :',
 'yourpassword' => 'Ger-tremen :',
 'yourpasswordagain' => 'Skrivit ho ker-tremen en-dro',
@@ -2142,7 +2138,7 @@ evit gallout kas ur postel d'un implijer all.",
 'emailuser-title-target' => "Kas ur postel d'an {{PLURAL:$1|an implijer-mañ|an implijerez-mañ}}",
 'emailuser-title-notarget' => "Kas ur postel d'un implijer",
 'emailpage' => 'Postel implijer',
-'emailpagetext' => "Gallout a rit ober gant ar furmskrid a-is a-benn kas ur postel d'an implijer-mañ.
+'emailpagetext' => "Gallout a rit ober gant ar furmskrid a-is a-benn kas ur postel d'an {{GENDER:\$1|implijer|implijerez}}-mañ.
 E maezienn \"Kaser\" ho postel e vo merket ar chomlec'h postel resisaet ganeoc'h-c'hwi en ho [[Special:Preferences|Penndibaboù]], d'ar resever da c'hallout respont deoc'h war-eeun ma kar.",
 'usermailererror' => 'Fazi postel :',
 'defemailsubject' => 'Postel kaset eus {{SITENAME}} gant an implijer "$1"',
@@ -2213,11 +2209,7 @@ Evit tennañ ar bajenn-mañ a-ziwar ho rollad evezhiañ, klikit war "Paouez da e
 
 'enotif_mailer' => 'Posteler Kemenn {{SITENAME}}',
 'enotif_reset' => 'Merkañ an holl bajennoù evel gwelet',
-'enotif_newpagetext' => 'Ur bajenn nevez eo homañ.',
 'enotif_impersonal_salutation' => 'implijer {{SITENAME}}',
-'changed' => 'kemmet',
-'created' => 'Krouet',
-'enotif_subject' => '$CHANGEDORCREATED eo bet pajenn $PAGETITLE {{SITENAME}} gant $PAGEEDITOR',
 'enotif_lastvisited' => 'Sellet ouzh $1 evit gwelet an holl gemmoù abaoe ho selladenn ziwezhañ.',
 'enotif_lastdiff' => "Gwelet $1 evit sellet ouzh ar c'hemm-mañ.",
 'enotif_anon_editor' => 'implijer dizanv $1',
@@ -2400,7 +2392,8 @@ Ma'z eus bet krouet ur bajenn nevez dezhi an hevelep anv abaoe an diverkadenn, e
 'undeletedrevisions' => 'Adsavet {{PLURAL:$1|1 stumm|$1 stumm}}',
 'undeletedrevisions-files' => 'Adsavet ez ez eus bet {{PLURAL:$1|1 stumm|$1 stumm}} ha {{PLURAL:$2|1 restr|$2 restr}}',
 'undeletedfiles' => '{{PLURAL:$1|1 restr|$1 restr}} adsavet',
-'cannotundelete' => "Dibosupl eo diziverkañ; moarvat eo bet diziverket gant unan bennak all araozoc'h.",
+'cannotundelete' => 'Dibosupl eo diziverkañ:
+$1',
 'undeletedpage' => "'''Diziverket eo bet $1'''
 
 Sellit ouzh [[Special:Log/delete|marilh an diverkadennoù]] evit teuler ur sell ouzh an diverkadennoù diwezhañ.",
@@ -2962,6 +2955,7 @@ Sur a-walc'h abalamour d'ul liamm enni a gas d'ul lec'hienn ziavaez berzet.",
 'pageinfo-default-sort' => "Alc'hwez rummañ dre ziouer",
 'pageinfo-length' => 'Ment ar bajenn (en oktedoù)',
 'pageinfo-article-id' => 'Niverenn ar bajenn',
+'pageinfo-language' => 'Yezh ar bajenn',
 'pageinfo-robot-policy' => 'Statud al lusker klask',
 'pageinfo-robot-index' => "A c'haller menegeriñ",
 'pageinfo-robot-noindex' => "Ne c'haller ket menegeriñ",
index 5c70272..84d3d13 100644 (file)
@@ -681,9 +681,6 @@ Iz razloga "\'\'$2\'\'".',
 
 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.",
-'welcomecreation' => '== Dobro došli, $1 ==
-Vaš nalog je napravljen.
-Ne zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} podešavanja]].',
 'yourname' => 'Korisničko ime:',
 'yourpassword' => 'Šifra:',
 'yourpasswordagain' => 'Ponovite šifru:',
@@ -2285,11 +2282,7 @@ Ako kasnije želite da uklonite stranicu sa vašeg spiska praćenih članaka, kl
 
 'enotif_mailer' => '{{SITENAME}} obaviještenje o pošti',
 'enotif_reset' => 'Označi sve strane kao posjećene',
-'enotif_newpagetext' => 'Ovo je novi članak.',
 'enotif_impersonal_salutation' => '{{SITENAME}} korisnik',
-'changed' => 'promijenjena',
-'created' => 'napravljena',
-'enotif_subject' => '{{SITENAME}} strana $PAGETITLE je bila $CHANGEDORCREATED od strane $PAGEEDITOR',
 'enotif_lastvisited' => 'Pogledajte $1 za sve izmjene od vaše posljednje posjete.',
 'enotif_lastdiff' => 'Vidi $1 da pregledate ovu promjenu.',
 'enotif_anon_editor' => 'anonimni korisnik $1',
index f19cb10..4196034 100644 (file)
@@ -25,6 +25,7 @@
  * @author Pasqual (ca)
  * @author Paucabot
  * @author PerroVerd
+ * @author Pitort
  * @author Pérez
  * @author Qllach
  * @author SMP
@@ -34,6 +35,7 @@
  * @author Ssola
  * @author Toniher
  * @author Vriullop
+ * @author Àlex
  * @author לערי ריינהארט
  */
 
@@ -208,8 +210,8 @@ $messages = array(
 'tog-editsectiononrightclick' => "Habilita l'edició per seccions en clicar amb el botó dret sobre els títols de les seccions (cal JavaScript)",
 'tog-showtoc' => 'Mostra la taula de continguts (per pàgines amb més de 3 seccions)',
 'tog-rememberpassword' => 'Recorda la sessió al navegador (per un màxim de {{PLURAL:$1|dia|dies}})',
-'tog-watchcreations' => 'Afegeix les pàgines que vagi creant a la llista de seguiment',
-'tog-watchdefault' => 'Afegeix les pàgines que vagi creant a la llista de seguiment',
+'tog-watchcreations' => 'Afegeix les pàgines que vagi creant i fitxers que carregui a la llista de seguiment',
+'tog-watchdefault' => 'Afegeix les pàgines que vagi editant a la llista de seguiment',
 'tog-watchmoves' => 'Afegeix les pàgines que reanomeni a la llista de seguiment',
 'tog-watchdeletion' => 'Afegeix les pàgines que elimini a la llista de seguiment',
 'tog-minordefault' => 'Marca totes les contribucions com a edicions menors per defecte',
@@ -328,7 +330,7 @@ $messages = array(
 'newwindow' => '(obre en una nova finestra)',
 'cancel' => 'Anuŀla',
 'moredotdotdot' => 'Més...',
-'mypage' => 'Pàgina personal',
+'mypage' => 'Pàgina',
 'mytalk' => 'Discussió',
 'anontalk' => "Discussió d'aquesta IP",
 'navigation' => 'Navegació',
@@ -361,6 +363,7 @@ $messages = array(
 'namespaces' => 'Espais de noms',
 'variants' => 'Variants',
 
+'navigation-heading' => 'Menú de navegació',
 'errorpagetitle' => 'Error',
 'returnto' => 'Torna cap a $1.',
 'tagline' => 'De {{SITENAME}}',
@@ -476,7 +479,7 @@ $1",
 'thisisdeleted' => 'Voleu mostrar o restaurar $1?',
 'viewdeleted' => 'Voleu mostrar $1?',
 'restorelink' => '{{PLURAL:$1|una versió esborrada|$1 versions esborrades}}',
-'feedlinks' => 'Sindicament:',
+'feedlinks' => 'Sindicació:',
 'feed-invalid' => 'La subscripció no és vàlida pel tipus de sindicament.',
 'feed-unavailable' => 'Els canals de sindicació no estan disponibles',
 'site-rss-feed' => 'Canal RSS $1',
@@ -600,10 +603,9 @@ L\'administrador que l\'ha bloquejat ha donat aquesta explicació: "$3".',
 
 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.",
-'welcomecreation' => "== Us donem la benvinguda, $1! ==
-
-S'ha creat el vostre compte.
-No oblideu de canviar les vostres [[Special:Preferences|preferències de {{SITENAME}}]].",
+'welcomeuser' => 'Benvingut,  $1 !',
+'welcomecreation-msg' => 'El vostre compte ha estat creat.
+No oblideu de canviar les vostres [[Special:Preferences|{{SITENAME}} preferències]].',
 'yourname' => "Nom d'usuari",
 'yourpassword' => 'Contrasenya',
 'yourpasswordagain' => 'Escriviu una altra vegada la contrasenya',
@@ -1120,7 +1122,7 @@ Si us plau, verifica els registres.",
 ** Comentari o informació personal inapropiada
 ** Nom d'usuari inapropiat
 ** Informació potencialment calumniosa",
-'revdelete-otherreason' => 'Altre motiu / motiu suplementari:',
+'revdelete-otherreason' => 'Motiu diferent o addicional:',
 'revdelete-reasonotherlist' => 'Altres raons',
 'revdelete-edit-reasonlist' => "Editar el motiu d'esborrament",
 'revdelete-offender' => 'Autor de la revisió:',
@@ -1479,6 +1481,9 @@ Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
 'rightslogtext' => "Aquest és un registre de canvis dels permisos d'usuari.",
 'rightslogentry' => 'ha modificat els drets de $1 del grup $2 a $3',
 'rightslogentry-autopromote' => 'ha estat promogut automàticament de $2 a $3',
+'logentry-rights-rights' => '$1 ha canviat la pertinença de grups per $3 de $4 a $5',
+'logentry-rights-rights-legacy' => '$1 ha canviat la pertinença de grups per $3',
+'logentry-rights-autopromote' => '$1 ha estat promogut automàticament de $4 a $5',
 'rightsnone' => '(cap)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1700,6 +1705,7 @@ $1',
 'backend-fail-notsame' => 'Ja existeix un fitxer no idèntic a $1.',
 'backend-fail-invalidpath' => "$1 no és un camí d'emmagatzemament vàlid.",
 'backend-fail-delete' => "No s'ha pogut suprimir el fitxer $1.",
+'backend-fail-describe' => 'La modificació de les metadades del fitxer "$1" no és possible.',
 'backend-fail-alreadyexists' => 'El fitxer $1 ja existeix.',
 'backend-fail-store' => "No s'ha pogut emmagatzemar el fitxer $1 a $2.",
 'backend-fail-copy' => "No s'ha pogut copiar el fitxer $1 a $2.",
@@ -1870,7 +1876,7 @@ Potser voleu modificar-ne la descripció en la seva [$2 pàgina de descripció].
 'filedelete-success-old' => "<span class=\"plainlinks\">La versió de '''[[Media:\$1|\$1]]''' s'ha eliminat el \$2 a les \$3.</span>",
 'filedelete-nofile' => "'''$1''' no existeix.",
 'filedelete-nofile-old' => "No hi ha cap versió arxivada de '''$1''' amb els atributs especificats.",
-'filedelete-otherreason' => 'Motius alternatius/addicionals:',
+'filedelete-otherreason' => 'Motiu diferent o addicional:',
 'filedelete-reason-otherlist' => 'Altres motius',
 'filedelete-reason-dropdown' => "*Motius d'eliminació comuns
 ** Violació dels drets d'autor / copyright
@@ -2081,9 +2087,9 @@ Vegeu també [[Special:WantedCategories|les categories soŀlicitades]].",
 'linksearch-pat' => 'Patró de cerca:',
 'linksearch-ns' => 'Espai de noms:',
 'linksearch-ok' => 'Cerca',
-'linksearch-text' => 'Podeu fer servir caràcters comodí com "*.wikipedia.org".
+'linksearch-text' => 'Es poden utilitzar caràcters comodí com "*.wikipedia.org".
 Necessita com a mínim un domini de primer nivell, per exemple "*.org".<br />
-Protocols admesos: <code> $1 </code> (no els afegiu en la vostra recerca).',
+Protocols admesos: <code>$1</code> (http:// per defecte si no se n\'especifica cap).',
 'linksearch-line' => '$1 enllaçat a $2',
 'linksearch-error' => "Els caràcters comodí només poden aparèixer a l'inici de l'url.",
 
@@ -2134,8 +2140,8 @@ per enviar un correu electrònic a altres usuaris.",
 'emailuser-title-target' => 'Enviar un correu electrònic a {{GENDER:$1|aquest usuari|aquesta usuària}}',
 'emailuser-title-notarget' => "Enviar un correu electrònic a l'usuari",
 'emailpage' => 'Correu electrònic a usuari',
-'emailpagetext' => "Podeu usar el següent formulari per a enviar un missatge de correu electrònic a aquest usuari.
-L'adreça electrònica que heu entrat en [[Special:Preferences|les vostres preferències d'usuari]] apareixerà com a remitent del correu electrònic, de manera que el destinatari us podrà respondre directament.",
+'emailpagetext' => "Podeu usar el següent formulari per a enviar un missatge de correu electrònic a {{GENDER:$1|aquest usuari|aquesta usuària}}.
+L'adreça electrònica que vau indicar a [[Special:Preferences|les vostres preferències d'usuari]] apareixerà com a remitent del correu electrònic, de manera que el destinatari us podrà respondre directament.",
 'usermailererror' => "L'objecte de correu ha retornat un error:",
 'defemailsubject' => 'Correu electrònic de l\'usuari "$1" de {{SITENAME}}',
 'usermaildisabled' => "Correu electrònic d'usuaris deshabilitat",
@@ -2203,11 +2209,7 @@ S'hi mostraran els canvis futurs que tinguin lloc en aquesta pàgina i la corres
 
 'enotif_mailer' => 'Sistema de notificació per correl de {{SITENAME}}',
 'enotif_reset' => 'Marca totes les pàgines com a visitades',
-'enotif_newpagetext' => 'Aquesta és una nova pàgina.',
 'enotif_impersonal_salutation' => 'usuari de la {{SITENAME}}',
-'changed' => 'modificada',
-'created' => 'creada',
-'enotif_subject' => 'La pàgina $PAGETITLE a {{SITENAME}} ha estat $CHANGEDORCREATED per $PAGEEDITOR',
 'enotif_lastvisited' => "Vegeu $1 per a tots els canvis que s'han fet d'ença de la vostra darrera visita.",
 'enotif_lastdiff' => 'Consulteu $1 per a visualitzar aquest canvi.',
 'enotif_anon_editor' => 'usuari anònim $1',
@@ -2263,7 +2265,7 @@ Vegeu $2 per a un registre dels esborrats més recents.',
 'deletionlog' => "Registre d'esborrats",
 'reverted' => 'Invertit amb una revisió anterior',
 'deletecomment' => 'Motiu:',
-'deleteotherreason' => 'Motius diferents o addicionals:',
+'deleteotherreason' => 'Motiu diferent o addicional:',
 'deletereasonotherlist' => 'Altres motius',
 'deletereason-dropdown' => "*Motius freqüents d'esborrat
 ** Demanada per l'autor
@@ -2334,7 +2336,7 @@ Ací es troben els paràmetres actuals de la pàgina '''$1''':",
 'protect-othertime' => 'Un altre termini:',
 'protect-othertime-op' => 'un altre termini',
 'protect-existing-expiry' => "Data d'expiració existent: $2 a les $3",
-'protect-otherreason' => 'Altres motius:',
+'protect-otherreason' => 'Motiu diferent o addicional:',
 'protect-otherreason-op' => 'Altres motius',
 'protect-dropdown' => "*Motius comuns de protecció
 ** Vandalisme excessiu
@@ -2465,7 +2467,7 @@ Per més detalls, la última entrada del registre es mostra a continuació:',
 'whatlinkshere-hideredirs' => '$1 redireccions',
 'whatlinkshere-hidetrans' => '$1 inclusions',
 'whatlinkshere-hidelinks' => '$1 enllaços',
-'whatlinkshere-hideimages' => '$1 enllaços a imatge',
+'whatlinkshere-hideimages' => '$1 enllaços de fitxers',
 'whatlinkshere-filters' => 'Filtres',
 
 # Block/unblock
@@ -2501,7 +2503,7 @@ quines pàgines en concret estan sent vandalitzades).",
 'ipbother' => 'Un altre termini',
 'ipboptions' => '2 hores:2 hours,1 dia:1 day,3 dies:3 days,1 setmana:1 week,2 setmanes:2 weeks,1 mes:1 month,3 mesos:3 months,6 mesos:6 months,1 any:1 year,infinit:infinite',
 'ipbotheroption' => 'un altre',
-'ipbotherreason' => 'Altres motius o addicionals:',
+'ipbotherreason' => 'Motiu diferent o addicional:',
 'ipbhidename' => "Amaga el nom d'usuari de les edicions i llistes",
 'ipbwatchuser' => "Vigila les pàgines d'usuari i de discussió de l'usuari",
 'ipb-disableusertalk' => 'Impedeix que aquest usuari pugui modificar la seva pàgina de discussió mentre dura el blocatge',
@@ -2715,16 +2717,16 @@ A continuació es mostra la darrera entrada del registre com a referència:",
 'file-exists-sharedrepo' => "El nom de fitxer escollit ja s'utilitza al dipòsit compartit. Escolliu un altre nom.",
 
 # Export
-'export' => 'Exporta les pàgines',
+'export' => 'Exportació de pàgines',
 'exporttext' => "Podeu exportar a XML el text i l'historial d'una pàgina en concret o d'un conjunt de pàgines; aleshores el resultat pot importar-se en un altre lloc web basat en wiki amb programari de MediaWiki mitjançant la [[Special:Import|pàgina d'importació]].
 
 Per a exportar pàgines, escriviu els títols que desitgeu al quadre de text de sota, un títol per línia, i seleccioneu si desitgeu o no la versió actual juntament amb totes les versions antigues, amb la pàgina d'historial, o només la pàgina actual amb la informació de la darrera modificació.
 
 En el darrer cas, podeu fer servir un enllaç com ara [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] per a la pàgina «[[{{MediaWiki:Mainpage}}]]».",
 'exportall' => 'Exporta totes les pàgines',
-'exportcuronly' => "Exporta únicament la versió actual en voltes de l'historial sencer",
+'exportcuronly' => "Inclou només la versió actual, sense l'historial complet",
 'exportnohistory' => "----
-'''Nota:''' s'ha inhabilitat l'exportació sencera d'historial de pàgines mitjançant aquest formulari a causa de problemes de rendiment del servidor.",
+'''Nota:''' s'ha inhabilitat l'exportació sencera d'historial de pàgines mitjançant aquest formulari a causa de problemes de rendiment.",
 'exportlistauthors' => 'Inclouen una llista completa dels contribuents per a cada pàgina',
 'export-submit' => 'Exporta',
 'export-addcattext' => 'Afegeix pàgines de la categoria:',
@@ -2944,6 +2946,7 @@ Això deu ser degut per un enllaç a un lloc extern inclòs a la llista negra.',
 'pageinfo-default-sort' => "Clau d'ordenació predeterminada",
 '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',
@@ -2987,6 +2990,8 @@ Això deu ser degut per un enllaç a un lloc extern inclòs a la llista negra.',
 'markedaspatrollederror' => 'No es pot marcar com a supervisat',
 'markedaspatrollederrortext' => 'Cal que especifiqueu una versió per a marcar-la com a supervisada.',
 'markedaspatrollederror-noautopatrol' => 'No podeu marcar les vostres pròpies modificacions com a supervisades.',
+'markedaspatrollednotify' => 'Aquesta modificació a $1 ha estat marcada com a patrullada.',
+'markedaspatrollederrornotify' => 'Ha fallat la marca com a patrullat.',
 
 # Patrol log
 'patrol-log-page' => 'Registre de supervisió',
@@ -2995,7 +3000,7 @@ Això deu ser degut per un enllaç a un lloc extern inclòs a la llista negra.',
 
 # Image deletion
 'deletedrevision' => "S'ha eliminat la revisió antiga $1.",
-'filedeleteerror-short' => "S'ha produït un error en suprimir el fitxer: $1",
+'filedeleteerror-short' => 'Error en suprimir el fitxer: $1',
 'filedeleteerror-long' => "S'han produït errors en suprimir el fitxer:
 
 $1",
@@ -3172,7 +3177,7 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
 'exif-gpsstatus' => 'Estat del receptor',
 'exif-gpsmeasuremode' => 'Mode de mesura',
 'exif-gpsdop' => 'Precisió de la mesura',
-'exif-gpsspeedref' => 'Unitats de velocitat',
+'exif-gpsspeedref' => 'Unitat de velocitat',
 'exif-gpsspeed' => 'Velocitat del receptor GPS',
 'exif-gpstrackref' => 'Referència per la direcció del moviment',
 'exif-gpstrack' => 'Direcció del moviment',
@@ -3552,6 +3557,7 @@ Aquest codi de confirmació caducarà el $4.",
 # Scary transclusion
 'scarytranscludedisabled' => "[S'ha inhabilitat la transclusió interwiki]",
 'scarytranscludefailed' => '[Ha fallat la recuperació de la plantilla per a $1]',
+'scarytranscludefailed-httpstatus' => '[Ha fallat la recuperació de la plantilla per a $1: HTTP $2]',
 'scarytranscludetoolong' => "[L'URL és massa llarg]",
 
 # Delete conflict
@@ -3662,6 +3668,7 @@ També podeu [[Special:EditWatchlist|utilitzar l'editor estàndard]].",
 'version-license' => 'Llicència',
 'version-poweredby-credits' => "El wiki funciona gràcies a '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'altres',
+'version-credits-summary' => 'El nostre reconeixement a les següents persones per la seva aportació a [[Special:Version|MediaWiki]]',
 'version-license-info' => "MediaWiki és programari lliure, podeu redistribuir-lo i/o modificar-lo sota els termes de la Llicència Pública General GNU publicada per la Free Software Foundation, ja sigui de la seva versió 2 o (a elecció vostra) qualsevol versió posterior. 
 
 MediaWiki es distribueix en l'esperança de ser d'utilitat, però SENSE CAP GARANTIA; ni tan sols la garantia implícita de COMERCIALITZACIÓ o ADEQUACIÓ A UNA FINALITAT DETERMINADA. En trobareu més detalls a  la Llicència Pública General GNU.
@@ -3801,8 +3808,8 @@ Les imatges es mostren en plena resolució; altres tipus de fitxer s'inicien dir
 'logentry-move-move_redir-noredirect' => '$1 ha desplaçat la pàgina $3 a $4 on hi havia una redirecció i sense crear una nova redirecció',
 'logentry-patrol-patrol' => '$1 ha marcat la versió $4 de la pàgina $3 com a patrullada',
 'logentry-patrol-patrol-auto' => '$1 ha marcat automàticament la versió $4 de la pàgina $3 com a patrullada',
-'logentry-newusers-newusers' => "$1 ha creat un compte d'usuari",
-'logentry-newusers-create' => "$1 ha creat un compte d'usuari",
+'logentry-newusers-newusers' => "S'ha creat el compte d'usuari $1",
+'logentry-newusers-create' => "S'ha creat el compte d'usuari $1",
 'logentry-newusers-create2' => "$1 ha creat el compte d'usuari $3",
 'logentry-newusers-autocreate' => "El compte d'usuari $1 ha estat creat de manera automàtica",
 'newuserlog-byemail' => 'contrasenya enviada per correu electrònic',
index f5cacdf..3946a71 100644 (file)
@@ -412,7 +412,7 @@ $1',
 'youhavenewmessages' => '$1ت ھەیە ($2).',
 'newmessageslink' => 'پەیامی نوێ',
 'newmessagesdifflink' => 'دوایین گۆڕانکاری',
-'youhavenewmessagesfromusers' => '$1ت لە {{PLURAL:$3|بەکارھێنەرێکی تر| $3 بەکارھێنەر}} ھەیە ($2).',
+'youhavenewmessagesfromusers' => 'لە {{PLURAL:$3|بەکارھێنەرێک|$3 بەکارھێنەران}} $1ت ھەیە ($2).',
 'youhavenewmessagesmanyusers' => '$1ت  لە ژمارەیەک بەکارھێنەر ھەیە ( $2 ).',
 'newmessageslinkplural' => '{{PLURAL:$1|پەیامێکی نوێ|پەیامی نوێ}}',
 'newmessagesdifflinkplural' => 'دوایین {{PLURAL:$1|گۆڕانکاری|گۆڕانکارییەکان}}',
@@ -468,10 +468,10 @@ $1',
 'databaseerror' => 'ھەڵەی داتابەیس',
 'dberrortext' => 'ھەڵەیەکی ڕستەنووسی لە داواکاریی بنکەیدراو ڕووی داوە.
 لەوانەیە ئەوە نیشاندەری کەلێنێک لە نەرمامێرەکەدا بێت.
-دوایین تێکۆشان بۆ داواکاری بنکەیدراو:
-<blockquote><tt>$1</tt></blockquote>.
-لە نێو کرداری "<tt>$2</tt>".
-بنکەیدراو ھەڵەی"<tt>$3: $4</tt>" گەڕاندووتەوە.',
+دوایین تێکۆشان بۆ داواکاری بنکەیدراو:  
+<blockquote><code>$1</code></blockquote>
+لە ناو کرداری "<code>$2</code>".
+بنکەیدراو ھەڵەی "<samp>$3: $4</samp>" گەڕاندووەتەوە.',
 'dberrortextcl' => 'هەڵەیەکی ڕستەنووسی لە داواکاریی بنکە‌یدراو ڕوویداوە.
 دوایین تێکۆشان بۆ داواکاری بنکەیدراو ئەمە بووە:
 "$1"
@@ -551,9 +551,7 @@ $2',
 
 دەتوانی بە شێوەی بێناو درێژە بدەی بە بەرکارھێنانی {{SITENAME}}، یان دەتوانی <span class='plainlinks'>[$1 دیسانەوە بچیتەوە ژوورەوە]</span> ھەر بەو ناوە یان بە ناوی بەکارھێنەرییەکی جیاوازەوە.
 ئاگادار بە کە ھەتا کاتێک کە کەشی وێبگەڕەکەت دەسڕیتەوە، سەرەڕای چوونەدەرەوەی تۆ ھەندێک لە پەڕەکان ھەر بە شێوەیەک نیشان دەدرێن کە گوایە تۆ ھێشتا لە ژوورەوەیت.",
-'welcomecreation' => '== بەخێربێی، $1! ==
-ھەژمارەکەت دروست کرا.
-لە بیرت نەچێت کە گۆڕانکاری لە [[Special:Preferences|ھەڵبژاردەکانی {{SITENAME}}]]ی تایبەتی خۆت بدەی.',
+'welcomeuser' => 'بەخێربێیت، $1!',
 'yourname' => 'ناوی بەکارھێنەری:',
 'yourpassword' => 'تێپەڕوشە:',
 'yourpasswordagain' => 'دیسان تێپەڕوشەکە بنووسەوە:',
@@ -610,6 +608,7 @@ $2',
 
 ئەگەر کەسێکی تر ئەم داوایەی کردووە یان تێپەڕوشەکەت هاتووەتەوە بیرت و ئیتر پێویستت بە گۆڕانی نییە، دەتوانی گوێ بەم پەیامە نەدەیت و لە تێپەڕوشە کۆنەکەت کەڵک وەربگری.',
 'noemail' => 'ھیچ ئەدرەسێکی ئیمەیل تۆمار نەکراوە بۆ بەکارھێنەر « $1 ».',
+'noemailcreate' => 'دەبێ ناونیشانێکی دروستی ئیمەیل بنووسی',
 'passwordsent' => 'تێپەڕوشەیەکی نوێ ناردرا بۆ ئەدرەسی ئیمەیلی تۆمارکراوی «$1».
 تکایە دوای وەرگرتنی دیسان بچۆ ژوورەوە.',
 'blocked-mailpassword' => 'ئادرەسی ئای‌پی تۆ بۆ دەستکاری کردن بەستراوه بۆیە بۆ بەرگری لە بەکارهێنانی نابەجێ ئەنجامی گەڕانەوەی تێپەڕوشە ڕیگە نەدراوە.',
@@ -627,6 +626,7 @@ $2',
 'emailconfirmlink' => 'ئیمەیلەکەت پشت‌ڕاست بکەرەوە',
 'invalidemailaddress' => 'ئەو ئەدرەسی ئی‌مێڵە لەبەر ئەوەی بە شێوازێکی نەناسراوە، پەسند نەکرا.
 تکایە ئەدرەسێک بە شێوازی ناسراو بنووسە یان ئەو خانەیە بەتاڵ بهێڵەوە.',
+'emaildisabled' => 'ئەم ماڵپەڕە ناتوانێ ئیمەیل بنێرێ.',
 'accountcreated' => 'ھەژمار دروست کرا',
 'accountcreatedtext' => 'هەژماری بەکارهێنەری $1 دروست کراوە.',
 'createaccount-title' => 'درووست‌کردنی هەژمارە بۆ {{SITENAME}}',
@@ -905,6 +905,9 @@ $2
 'defaultmessagetext' => 'دەقی پەیامی هەمیشەیی',
 
 # Content models
+'content-model-wikitext' => 'ویکیدەق',
+'content-model-text' => 'دەقی ساکار',
+'content-model-javascript' => 'جاڤاسکریپت',
 'content-model-css' => 'سی ئێس ئێس',
 
 # Parser/template warnings
@@ -977,17 +980,22 @@ $3 هۆکاری "$2" خستوەتەڕوو',
 وردەکاری سەبارەت بەوە لە [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی بەرگری]دا دەست دەکەوێت.
 ھێشتا ئەگەر بتەوێ دەتوانی [$1 ئەم پێداچوونەوەیە ببینی].",
 'rev-deleted-text-view' => "ئەم پێداچوونەوەیە لەم پەڕەیە '''سڕدراوەتەوە'''.
-ئێستا دەتوانی بیبینی؛ وردەکاری سەبارەت بەوە لە [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی سڕینەوە]دا دەست کەوێت.",
+ئێستا دەتوانی بیبینی؛ وردەکاری سەبارەت بەوە لە [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی سڕینەوە]دا دەست دەکەوێت.",
 'rev-suppressed-text-view' => "ئەم پێداچوونەوەیە لەم پەڕەیە '''بەرگری لێ‌کراوە'''.
 ئێستا دەتوانی بیبینی؛ وردەکاری سەبارەت بەوە لە [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی بەرگری]دا دەست دەکەوێت.",
 'rev-deleted-no-diff' => "ناتوانی ئەم جیاوازیە ببینی لەبەر ئەوەی یەکێک لە پێداچوونەوەکان '''سڕدراوەتەوه'''‌.<br />
 لەوانەیە وردەکاری سەبارەت بەوە لێرەدا دەست کەوێ : [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی بەرگری].",
+'rev-suppressed-no-diff' => "ناتوانی ئەم چیاوازییە ببینی چون یەکێک لە پێداچوونەوەکان '''سڕدراوەتەوە'''.",
 'rev-deleted-unhide-diff' => "یەکێک لە پێداچوونەوەکانی ئەم جیاوازیە '''سڕدراوەتەوه'''.
 وردەکاری سەبارەت بەوە لە [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی سڕینەوە]دا دەست دەکەوێت.
 ھێشتا ئەگەر بتەوێ دەتوانی [$1 ئەم جیاوازییە ببینی].",
 'rev-suppressed-unhide-diff' => "یەکێک لە پێداچوونەوەکانی ئەم جیاوازیە '''سڕدراوەتەوه'''.
 وردەکاری سەبارەت بەوە لە [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی بەرگری]دا دەست دەکەوێت.
 ھێشتا ئەگەر بتەوێ دەتوانی [$1 ئەم جیاوازییە ببینی].",
+'rev-deleted-diff-view' => "یەکێک لە پێداچوونەوەکانی ئەم جیاوازییە  '''سڕدراوەتەوە'''.
+ئێستا دەتوانی بیبینی؛ وردەکاری سەبارەت بەوە لە [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی سڕینەوە]دا دەست دەکەوێت.",
+'rev-suppressed-diff-view' => "یەکێک لە پێداچوونەوەکانی ئەم جیاوازییە '''بەرگری لێ‌کراوە'''.
+ئێستا دەتوانی بیبینی؛ وردەکاری سەبارەت بەوە لە [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} لۆگی بەرگری]دا دەست دەکەوێت.",
 'rev-delundel' => 'نیشانبدە/بشارەوە',
 'rev-showdeleted' => 'نیشان بدە',
 'revisiondelete' => 'سڕینەوە/ھێنانەوەی پێداچوونەوەکان',
@@ -1051,7 +1059,7 @@ $1",
 ** ناوی بەکارھێنەریی نەشیاو
 ** زانیارییەک کە دەتوانێ بوختاناوی بێت',
 'revdelete-otherreason' => 'ھۆکاری تر/زیاتر:',
-'revdelete-reasonotherlist' => 'هۆکاری دیکە',
+'revdelete-reasonotherlist' => 'ھۆکاری تر',
 'revdelete-edit-reasonlist' => 'دەستکاریی ھۆکارەکانی سڕینەوە',
 'revdelete-offender' => 'نووسەری پیاچوونەوە:',
 
@@ -1292,6 +1300,10 @@ $1",
 'prefs-displaywatchlist' => 'ھەڵبژاردەکانی نیشاندان',
 'prefs-diffs' => 'جیاوازییەکان',
 
+# User preference: e-mail validation using jQuery
+'email-address-validity-valid' => 'ناونیشانی ئیمەیل دروست وە بەر چاو دێت',
+'email-address-validity-invalid' => 'ناونیشانێکی دروستی ئیمەیل بنووسە',
+
 # User rights
 'userrights' => 'بەڕێوەبردنی مافەکانی بەکارھێنەر',
 'userrights-lookup-user' => 'بەڕێوەبردنی گرووپەکانی بەکارھێنەر',
@@ -1454,7 +1466,7 @@ $1",
 'rcshowhidebots' => 'بۆتەکان $1',
 'rcshowhideliu' => 'بەکارھێنەرە تۆمارکراوەکان $1',
 'rcshowhideanons' => 'بەکارھێنەرە نەناسراوەکان $1',
-'rcshowhidepatr' => 'Ú¯Û\86راÙ\86کارÛ\8cÛ\8cÛ\95 Ú©Û\86Ù\86ترÛ\86Úµکراوەکان $1',
+'rcshowhidepatr' => 'Ú¯Û\86راÙ\86کارÛ\8cÛ\8cÛ\95 Ú\86اÙ\88دÛ\8eرÛ\8cکراوەکان $1',
 'rcshowhidemine' => 'دەستکارییەکانی من $1',
 'rclinks' => 'دوایین $1 گۆڕانکاریی $2 ڕۆژی ڕابردوو نیشان بدە<br />$3',
 'diff' => 'جیاوازی',
@@ -1467,9 +1479,11 @@ $1",
 'number_of_watching_users_pageview' => '[$1 چاودێر لەسەر {{PLURAL:$1|بەکارهێنەر|بەکارهێنەر}}]',
 'rc_categories' => 'بەرتەسک‌کردنەوە بە هاوپۆلەکان (به "|" جودای بکەوە‌)',
 'rc_categories_any' => 'هەرکام',
+'rc-change-size-new' => '$1 {{PLURAL:$1|بایت}} پاش گۆڕانکاری',
 'newsectionsummary' => '/* $1 */ بەشی نوێ',
 'rc-enhanced-expand' => 'وردەکارییەکان پیشان بدە (پێویستی بە جاڤاسکریپتە)',
 'rc-enhanced-hide' => 'وردەکارییەکان بشارەوە',
+'rc-old-title' => 'بە ناوی سەرەکیی «$1» دروست کراوە',
 
 # Recent changes linked
 'recentchangeslinked' => 'گۆڕانکارییە پەیوەندیدارەکان',
@@ -1521,6 +1535,7 @@ $1",
 'minlength1' => 'ناوی پەڕگەکان دەبێ لانیکەم یەک پیت ببێت.',
 'illegalfilename' => 'ناوی‌پەڕگەی "$1" پیتێکی تێدایە کە ڕێگەنەدراوە بۆ سەردێڕی لاپەڕە بەکاربێت.
 تکایە ناوی پەڕگەکە بگۆڕە و دیسان باری بکەوە.',
+'filename-toolong' => 'ناوی پەڕگە ناتوانێ لە ٢٤٠ بایت درێژتر بێت.',
 'badfilename' => 'ناوی پەڕگە بە "$1" گۆڕا .',
 'filetype-badmime' => 'ڕێگە نەدراوە پەڕگەی "$1" جۆری MIME بار بکرێت.',
 'filetype-bad-ie-mime' => 'ناتوانین ئەم پەڕگە باربکەین لەبەر ئەوەی وێبگەڕی Internet Explore ئەوە وەک "$1" دەناسێت کە ڕێگەنەدراوەیە و جۆرە پەڕگەیەکی مەترسی‌دارە.',
@@ -1533,6 +1548,7 @@ $2، ئەو جۆرە {{PLURAL:$3|پەڕگەیە کە ڕێگەی|پەڕگانەی
 'file-too-large' => 'ئەو پەڕگەیە ناردووتە زۆر گەورەیە.',
 'filename-tooshort' => 'ناوی پەڕگە زۆر کورتە.',
 'filetype-banned' => 'ئەم جۆرە پەڕگەیە قەدەغەیە.',
+'illegal-filename' => 'ناوی پەڕگە رێگەپێ‌نەدراوە.',
 'unknown-error' => 'ھەڵەیەکی نەزانراو ڕوویداوە.',
 'large-file' => 'پێشنیار دەکرێت قەبارەی پەڕگەکان زیاتر لە $1 نەبێت؛
 قەبارەی ئەم پەڕگە $2.',
@@ -1609,11 +1625,18 @@ $1',
 'upload-http-error' => 'هەڵەیەکی HTTP ڕووئ داوە: $1',
 
 # File backend
+'backend-fail-stream' => 'نەکرا پەڕگەی $1 بنێردرێت.',
+'backend-fail-notexists' => 'پەڕگەی $1 بوونی نییە.',
 'backend-fail-delete' => 'نەکرا پەڕگەی $1 بسڕدرێتەوە.',
 'backend-fail-copy' => 'نەکرا پەڕگەی $1 کۆپی بکرێت بۆ $2.',
 'backend-fail-move' => 'نەکرا پەڕگەی $1 بگوازرێتەوە بۆ $2.',
+'backend-fail-read' => 'نەکرا پەڕگەی $1 بخوێنرێتەوە.',
 'backend-fail-create' => 'نەکرا پەڕگەی $1 بنووسرێت',
 
+# Special:UploadStash
+'uploadstash-errclear' => 'سڕینەوەی پەڕگەکان سەرکەوتوو نەبوو.',
+'uploadstash-refresh' => 'نوێکردنەوەی پێرستی پەڕگەکان',
+
 # img_auth script messages
 'img-auth-accessdenied' => 'تێپه‌ربوون ره‌تکرایه‌وه‌',
 'img-auth-nofile' => 'فایلی "$1" بوونی نیه‌',
@@ -1709,8 +1732,8 @@ $1',
 'filedelete-success-old' => "وەشانی $3، $2 لە '''[[Media:$1|$1]]''' سڕاوەتەوە.",
 'filedelete-nofile' => "'''$1''' بوونی نییە.",
 'filedelete-nofile-old' => "وەشانێکی ئەرشیڤ‌کراوی '''$1''' بەو تایبەتمەندییە دیاری‌کراوانە نییە.",
-'filedelete-otherreason' => 'هۆکاری دیکە\\زیادی:',
-'filedelete-reason-otherlist' => 'هۆکاری دیکە',
+'filedelete-otherreason' => 'ھۆکاری تر/زیاتر:',
+'filedelete-reason-otherlist' => 'ھۆکاری تر',
 'filedelete-reason-dropdown' => '*هوکارە هاوبەشەکانی سڕینەوە
 **لادان لە مافەکانی بڵاوکردنەوە
 ***پەڕگەی دووبارەکراوە',
@@ -1766,9 +1789,9 @@ $1',
 
 'disambiguations' => 'ئەو پەڕانە لینکیان ھەیە بۆ پەڕەکانی ڕوونکردنەوە',
 'disambiguationspage' => 'Template:ڕوونکردنەوە',
-'disambiguations-text' => "ئەم پەڕانە بەستەریان ھەیە بۆ '''پەڕەی ڕوونکردنەوە'''.
-ئەوانە دەبێ لە جیاتی ئەوە بەستەریان ببێت بۆ بابەتی گونجاو.<br />
-ئەگەر پەڕەیەک لە داڕێژەیەک کەڵک وەرگرێت کە بەستەری ھەیە بۆ [[MediaWiki:Disambiguationspage]]، وەک پەڕەی ڕوونکردنەوە مامەڵەی لەگەڵدا دەکرێ.",
+'disambiguations-text' => "ئەم پەڕانە لانی کەم یەک بەستەریان بۆ '''پەڕەی ڕوونکردنەوە''' ھەیە.
+لەوانەیە لە جیاتی ئەو، بەستەریان ھەبێت  بۆ بابەتەکانیی گونجاو.<br />
+ئەگەر پەڕەیەک لە داڕێژەیەک کەڵک وەرگرێت کە بەستەری ھەبێت بۆ [[MediaWiki:Disambiguationspage]]، وەک پەڕەی ڕوونکردنەوە لەبەر چاو دەگیرێت.",
 
 'doubleredirects' => 'دووجار ڕەوانەکراوەکان',
 'doubleredirectstext' => 'ئەم پەڕە لیستی ئەو پەڕانەیە کە ڕەوانەکراون بۆ پەڕەیەکی ڕەوانەکراوی دیکە.
@@ -1793,6 +1816,7 @@ $1',
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|بایت|بایت}}',
 'ncategories' => '$1 {{PLURAL:$1|ھاوپۆل|ھاوپۆل}}',
+'ninterwikis' => '$1 {{PLURAL:$1|نێوانویکی}}',
 'nlinks' => '$1 {{PLURAL:$1|بەستەر|بەستەر}}',
 'nmembers' => '$1 {{PLURAL:$1|ئەندام|ئەندام}}',
 'nrevisions' => '$1 {{PLURAL:$1|پیاچوونەوە|پیاچوونەوە}}',
@@ -1819,6 +1843,7 @@ $1',
 'mostlinkedtemplates' => 'ئەو داڕێژانە زۆرترین بەستەریان پێدراوە',
 'mostcategories' => 'پەڕە زۆرتر پۆلێنکراوەکان',
 'mostimages' => 'ئەو پەڕگانە زۆرترین بەستەریان پێدراوە',
+'mostinterwikis' => 'پەڕەکان بە زۆرترین نێوانویکی',
 'mostrevisions' => 'ئەو پەڕانە زۆرترین پیاچوونەوەیان ھەیە',
 'prefixindex' => 'گشت پەڕەکان بە پێشگرەوە',
 'prefixindex-namespace' => 'هەموو پەڕەکان بەپێشگری (بۆشایی ناوی $1)',
@@ -1890,7 +1915,7 @@ $1',
 'allpagesbadtitle' => 'سەردێڕی لاپەڕە گونجاو نەبوو یان پێشگڕێکی بەینی‌زمانی یان بەینی‌ویکی هەبوو.
 لەوانەیە یەک یان زیاتر پیتی نەگونجاو بۆ سەردێڕی لەخۆ گرتبێ.',
 'allpages-bad-ns' => '{{SITENAME}} ناوبۆشایی نیە "$1".',
-'allpages-hide-redirects' => 'ڕەوانەکراوەکان بشارەوە',
+'allpages-hide-redirects' => 'ڕەوانەکەرەکان بشارەوە',
 
 # SpecialCachedPage
 'cachedspecial-refresh-now' => 'دواترین پیشانبدە',
@@ -1961,6 +1986,7 @@ $1',
 'mailnologin' => 'ناونیشان بۆ ناردن نییه‌',
 'mailnologintext' => 'ده‌بێ له‌ [[Special:UserLogin|ژووره‌وه‌]] بیت و ناونیشانێکی بڕواپێ‌کراوی ئی‌مه‌یلت له‌ ناو [[Special:Preferences|هه‌ڵبژارده‌کان]] دیاری کردبێت تا بتوانی ئی‌مه‌یل بنێریت بۆ به‌کارهێنه‌رانی دیکه‌.',
 'emailuser' => 'ئیمەیل بنێرە بۆ ئەم بەکارھێنەرە',
+'emailuser-title-target' => 'ئیمەیلی ئەم {{GENDER:$1|بەکارھێنەر}}ە',
 'emailuser-title-notarget' => 'ئیمەیل بۆ بەکارھێنەر',
 'emailpage' => 'ئیمەیل بۆ بەکارھێنەر',
 'emailpagetext' => 'دەتوانی لەم فۆرمەی ژێرەوە بۆ ناردنی ئیمەیلێک بۆ ئەم {{GENDER:$1|بەکارھێنەر}}ە کەڵک وەربگریت.
@@ -2027,11 +2053,7 @@ $1',
 
 'enotif_mailer' => 'نامەی ڕاگەیاندنی {{SITENAME}}',
 'enotif_reset' => 'گشت پەڕەکان وەک بینراو دیاری بکە',
-'enotif_newpagetext' => 'ئەمە پەڕەیەکی تازەیە.',
 'enotif_impersonal_salutation' => 'بەکارهێنەری      {{SITENAME}}',
-'changed' => 'گۆڕدرا',
-'created' => 'دروستکرا',
-'enotif_subject' => '‫پەڕەی «$PAGETITLE»ی {{SITENAME}} بەدەستی $PAGEEDITOR $CHANGEDORCREATED',
 'enotif_lastvisited' => 'بۆ بینینی ھەموو گۆرانکارییەکانی پاش دوایین سەردانت $1 ببینە.',
 'enotif_lastdiff' => 'بۆ بینینی ئەم گۆڕانکارییە $1 ببینە.',
 'enotif_anon_editor' => 'بەکارھێنەری نەناسراو $1',
@@ -2069,8 +2091,8 @@ $UNWATCHURL
 'confirm' => 'پشتدار بکەرەوە',
 'excontent' => 'ناوەرۆک ئەمە بوو: «$1»',
 'excontentauthor' => 'ناوەرۆک ئەمە بوو: «$1» (و تەنیا بەشداربوو «[[Special:Contributions/$2|$2]]» بوو)',
-'exbeforeblank' => 'ناوەرۆک بەر لە بەتاڵ کردنەوە ئەمە بوو: «$1»',
-'exblank' => 'پەڕە خاڵی بوو',
+'exbeforeblank' => 'ناوەرۆک بەر لە واڵاکردنەوە ئەمە بوو: «$1»',
+'exblank' => 'پەڕە واڵا بوو',
 'delete-confirm' => 'سڕینەوەی «$1»',
 'delete-legend' => 'بیسڕەوە',
 'historywarning' => "'''وشیار بە:''' پەڕەیەک کە دەتەوێ بیسڕیتەوە مێژوویەکی ھەیە بە نزیکەی $1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}}وە:",
@@ -2085,8 +2107,8 @@ $UNWATCHURL
 'deletionlog' => 'لۆگی سڕینەوە',
 'reverted' => 'گەڕێندراوە بۆ پێداچوونەوەی پێشووتر',
 'deletecomment' => 'ھۆکار:',
-'deleteotherreason' => 'Ú¾Û\86کارÛ\8c Ø¯Û\8cÚ©Û\95:',
-'deletereasonotherlist' => 'Ú¾Û\86کارÛ\8c Ø¯Û\8cÚ©Û\95',
+'deleteotherreason' => 'Ú¾Û\86کارÛ\8c ØªØ±/زÛ\8cاتر:',
+'deletereasonotherlist' => 'Ú¾Û\86کارÛ\8c ØªØ±',
 'deletereason-dropdown' => '* ھۆکاری سڕینەوە
 ** داواکاریی نووسەر
 ** تێکدانی مافی لەبەرگرتنەوە
@@ -2150,14 +2172,15 @@ $UNWATCHURL
 'protect-level-sysop' => 'تەنھا بەڕێوەبەران',
 'protect-summary-cascade' => 'تاڤگەیی',
 'protect-expiring' => 'بەسەردەچێ لە ڕێکەوتی $1 (UTC)',
+'protect-expiring-local' => 'بە سەر دەچێ لە $1',
 'protect-expiry-indefinite' => 'بێسنوور',
 'protect-cascade' => 'پەڕەکانی نێو ئەم پەڕە بپارێزە (پاراستنی تاڤگەیی)',
 'protect-cantedit' => 'ناتوانی ئاستی پاراستنی ئەم پەڕە بگۆڕی، چونکوو تۆ ئیجازەی ئەم کارەت نیە.',
 'protect-othertime' => 'کاتی دیکە:',
 'protect-othertime-op' => 'کاتی دیکە',
 'protect-existing-expiry' => 'ئەم کاتی بەسەرچوونی ماوە کە هەیە: $3، $2',
-'protect-otherreason' => 'هۆکاری زیادکراو\\دیکە:',
-'protect-otherreason-op' => 'Ú¾Û\86کارÛ\8c Ø¯Û\8cÚ©Û\95',
+'protect-otherreason' => 'ھۆکاری تر/زیاتر:',
+'protect-otherreason-op' => 'Ú¾Û\86کارÛ\8c ØªØ±',
 'protect-dropdown' => '*ھۆکارە باوەکانی پاراستن
 ** خراپکاریی لەڕادەبەدەر
 ** سپامی لەڕادەبەدەر
@@ -2257,6 +2280,10 @@ $1',
 'sp-contributions-logs' => 'لۆگەکان',
 'sp-contributions-talk' => 'لێدوان',
 'sp-contributions-userrights' => 'بەڕێوبەرایەتی مافەکانی بەکارهێنەر',
+'sp-contributions-blocked-notice' => 'ھەنووکە ئەم بەکارھێنەرە بەربەست کراوە.
+دوایین بابەتی لۆگی بەربەستن لە ژێرەوە ھاتووە:',
+'sp-contributions-blocked-notice-anon' => 'ھەنووکە ئەم ناونیشانەی IPیە بەربەست کراوە.
+دوایین بابەتی لۆگی بەربەستن لە ژێرەوە ھاتووە:',
 'sp-contributions-search' => 'گەڕان بۆ بەشدارییەکان',
 'sp-contributions-username' => 'ناونیشانی ئای‌پی یان ناوی‌ بەکارھێنەری:',
 'sp-contributions-toponly' => 'تەنیا ئەو دەستکارییانە نیشانبدە کە دوایین پیاچوونەوەن',
@@ -2275,7 +2302,7 @@ $1',
 'whatlinkshere-prev' => '{{PLURAL:$1|پێشتر|$1 ی پێشتر}}',
 'whatlinkshere-next' => '{{PLURAL:$1|دیکە|$1 ی دیکە}}',
 'whatlinkshere-links' => '← بەستەرەکان',
-'whatlinkshere-hideredirs' => 'ڕەوانەکراوەکان $1',
+'whatlinkshere-hideredirs' => 'ڕەوانەکەرەکان $1',
 'whatlinkshere-hidetrans' => '$1 ھێنانەناوەوەکان',
 'whatlinkshere-hidelinks' => '$1 بەستەر',
 'whatlinkshere-hideimages' => '$1 بەستەرەکانی پەڕگە',
@@ -2305,14 +2332,14 @@ $1',
 'ipb-hardblock' => 'بەرگری بەکارھێنەرانی تۆمارکراو بکە لە دەستکاریکردن لە ڕێگەی ناونیشانی ئەم IPیەوە',
 'ipbcreateaccount' => 'بەرگری بکە لە دروستکردنی ھەژمار',
 'ipbemailban' => 'بەرگری بکە لە ئیمەیل ناردنی بەکارھێنەر',
-'ipbenableautoblock' => 'Ø®Û\86کار Ø¨Û\95ربÛ\95ستâ\80\8cکردÙ\86Û\8c Ø¦Û\95Ù\88 Ù\86اÙ\88Ù\86Û\8cشاÙ\86Û\8câ\80\8c Ø¦Ø§Û\8câ\80\8cÙ¾Û\8cÛ\95 Ù\88ا Ø¦Û\95Ù\85 Ø¨Û\95کارâ\80\8cÙ\87Û\8eÙ\86Û\95رÛ\95 Ú©Û\95ÚµÚ©Û\8c Ù\84Û\8eâ\80\8cÙ\88Û\95رگرتÙ\88Ù\88Û\95 Ù\88 Ø¦Û\95Ù\88 Ø¦Ø§Û\8câ\80\8cÙ¾Û\8câ\80\8cÛ\8cاÙ\86Û\95Û\8c Ø¯Û\8cÚ©Û\95 Ù\88ا Ù\84Û\95Ù\88Û\8eÙ\88Û\95 Ù\87Û\95Ù\88ÚµÛ\8c Ø¯Û\95ستکارÛ\8c Ø¦Û\95دÛ\95Ù\86.',
-'ipbsubmit' => 'بەربەست‌کردنی ئەم بەکارهێنەرە',
+'ipbenableautoblock' => 'بÛ\95 Ø´Û\8eÙ\88Û\95Û\8c Ø®Û\86Ú¯Û\95Ú\95 Ø¯Ù\88اÛ\8cÛ\8cÙ\86 Ù\86اÙ\88Ù\86Û\8cشاÙ\86Û\8câ\80\8c Ø¦Ø§Û\8câ\80\8cÙ¾Û\8c Ù\88ا Ø¦Û\95Ù\85 Ø¨Û\95کارâ\80\8cÙ\87Û\8eÙ\86Û\95رÛ\95 Ú©Û\95ÚµÚ©Û\8c Ù\84Û\8eâ\80\8cÙ\88Û\95رگرتÙ\88Ù\88Û\95 Ù\88 Ø¦Û\95Ù\88 Ø¦Ø§Û\8câ\80\8cÙ¾Û\8câ\80\8cÛ\8cاÙ\86Û\95Û\8c ØªØ± Ù\88ا Ù\84Û\95Ù\88Û\8eÙ\88Û\95 Ù\87Û\95Ù\88ÚµÛ\8c Ø¯Û\95ستکارÛ\8c Ø¯Û\95دات Ø¨Û\95ربÛ\95ست Ø¨Ú©Û\95',
+'ipbsubmit' => 'بەربەستکردنی ئەم بەکارھێنەرە',
 'ipbother' => 'کاتی‌ دیکە:',
 'ipboptions' => '٢ کاتژمێر:2 hours,١ ڕۆژ:1 day,٣ ڕۆژ:3 days,١ ھەفتە:1 week,٢ ھەفتە:2 weeks,١ مانگ:1 month,٣ مانگ:3 months,٦ مانگ:6 months,١ ساڵ:1 year,بێ‌سنوور:infinite',
 'ipbotheroption' => 'دیکە',
-'ipbotherreason' => 'هۆکاری زیادکراو\\دیکە:',
+'ipbotherreason' => 'ھۆکاری تر/زیاتر:',
 'ipbhidename' => 'شاردنەوەی ناوی‌ بەکارهێنەر لە دەستکاری و لیستەکان',
-'ipbwatchuser' => 'دیتنی لاپەڕەی بەکارهێنەر و وتووێژی ئەم بەکارهێنەرە',
+'ipbwatchuser' => 'پەڕەکانی بەکارھێنەر و لێدوانی ئەم بەکارهێنەرە بخە ژێر چاودێری',
 'ipb-disableusertalk' => 'بەرگری ئەم بەکارھێنەرە بکە لە دستکاریکردنی پەڕەی لێدوانەکەی کاتێک بەربەست کراوە',
 'ipb-change-block' => 'دیسان بەربەست‌کردنەوەی ئەم بەکارهێنەرە بەم هەڵبژاردانە',
 'badipaddress' => 'ناونیشانی ئای‌پی نەگونجاو',
@@ -2323,17 +2350,19 @@ $1',
 'ipb-unblock-addr' => 'لە بەربەست‌دەرهێنانی $1',
 'ipb-unblock' => 'لە بەربەست‌دەرهێنانی ناوی بەکارهێنەریەک یا ناونیشانێکی ئای‌پی',
 'ipb-blocklist' => 'دیتنی ئەو بەربەستانەی وا هەیە',
-'ipb-blocklist-contribs' => 'هاوبەشیەکان بۆ $1',
+'ipb-blocklist-contribs' => 'بەشدارییەکانی $1',
 'unblockip' => 'لە بەربەست‌دەرهێنانی بەکارهێنەر',
 'unblockiptext' => 'بۆ گەڕاندنەوەی دەست‌پی‌گەیشتنی نووسین بۆ ئەو دوایین ئای‌پی یان بەکارهێنەری بەربەست کراوە، لەو فۆرمەی خوارەوە کەڵک وەرگرە.',
 'ipusubmit' => 'لابردنی ئەم بەربەستە',
 'unblocked' => '[[User:$1|$1]] لە بەربەست دەرهێنرا',
 'unblocked-id' => 'بەربەستی $1 لابرا',
 'blocklist' => 'بەکارھێنەر بەربەستکراوەکان',
-'ipblocklist' => 'بەکارھێنەر بەربەستنکراوەکان',
+'ipblocklist' => 'بەکارھێنەر بەربەستکراوەکان',
 'ipblocklist-legend' => 'دۆزینەوەی بەکارهێنەرێکی بەربەست‌کراو',
+'blocklist-userblocks' => 'ھەژمارە بەربەستکراوەکان بشارەوە',
 'blocklist-target' => 'مەبەست',
 'blocklist-expiry' => 'ھەتا:',
+'blocklist-params' => 'پارامەترەکانی بەربەستن',
 'blocklist-reason' => 'ھۆکار',
 'ipblocklist-submit' => 'گەڕان',
 'ipblocklist-localblock' => 'بەرەبەستنی خۆماڵی',
@@ -2603,6 +2632,9 @@ $1',
 'import-logentry-interwiki' => 'ترانس‌ویکی‌کراو $1',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}} لە $2',
 
+# JavaScriptTest
+'javascripttest' => 'تاقیکردنەوەی جاڤاسکریپت',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'پەڕەی بەکارھێنەرییەکەت',
 'tooltip-pt-anonuserpage' => 'پەڕەی بەکارھێنەری بۆ ئای‌پی یەکە کە بەناویەوە خەریکی دەستکاری کردنی',
@@ -2839,6 +2871,7 @@ $1',
 # EXIF tags
 'exif-imagewidth' => 'پانی',
 'exif-imagelength' => 'بەرزی',
+'exif-datetime' => 'ڕێکەوتی و کاتی گۆڕانی پەڕگە',
 'exif-imagedescription' => 'ناونیشانی وێنە',
 'exif-model' => 'جۆری کامێرا',
 'exif-software' => 'نەرمەواڵەی بەکارهاتوو',
@@ -2856,7 +2889,9 @@ $1',
 'exif-saturation' => 'تێربوون',
 'exif-gpslatitude' => 'پانی',
 'exif-gpslongitude' => 'درێژی',
+'exif-gpsaltitude' => 'بەرزایی',
 'exif-gpstimestamp' => 'کاتی GPS (سەعاتی ئەتۆمی)',
+'exif-gpssatellites' => 'سەتەلایتەکانی بەکارگیراو بۆ پێوان',
 'exif-gpsmeasuremode' => 'جۆری پێوان',
 'exif-gpsdop' => 'وردی پێوان',
 'exif-gpsspeedref' => 'یەکەی خێرایی',
@@ -2865,7 +2900,17 @@ $1',
 'exif-gpsimgdirection' => 'ئاڕاستەی وێنە',
 'exif-gpsareainformation' => 'ناوی ناوچەی GPS',
 'exif-gpsdatestamp' => 'ڕێکەوتی GPS',
+'exif-jpegfilecomment' => 'تێبینیی پەڕگەی JPEG',
+'exif-worldregioncreated' => 'ناوچەی جیھانێک کە وێنەکە تێیدا گیراوە',
+'exif-countrycreated' => 'وڵاتێک کە وێنەکە تێیدا گیراوە',
+'exif-citycreated' => 'شارێک کە وێنەکە تێیدا گیراوە',
+'exif-worldregiondest' => 'ناوچەی جیھانی نیشان دراو',
+'exif-countrydest' => 'وڵاتی نیشان دراو',
+'exif-countrycodedest' => 'کۆدی وڵاتی نیشان دراو',
+'exif-provinceorstatedest' => 'پارێزگا یان ویلایەتی نیشان دراو',
+'exif-citydest' => 'شاری نیشان دراو',
 'exif-objectname' => 'سەردێری کورت',
+'exif-specialinstructions' => 'ڕیسای کاری تایبەت',
 'exif-headline' => 'سەردێر',
 'exif-source' => 'سەرچاوە',
 'exif-contact' => 'زانیاری پەیوەندیکردن',
@@ -2873,8 +2918,14 @@ $1',
 'exif-languagecode' => 'زمان',
 'exif-iimversion' => 'وەشانی IIM',
 'exif-iimcategory' => 'پۆل',
+'exif-lens' => 'لێنزی بەکارگیراو',
+'exif-serialnumber' => 'ژمارە زنجیرەی کامێرا',
+'exif-cameraownername' => 'خاوەنی کامێرا',
 'exif-copyrighted' => 'ڕەوشی مافی لەبەرگرتنەوە',
 'exif-pngfilecomment' => 'تێبینیی پەڕگەی PNG',
+'exif-contentwarning' => 'ھۆشداری ناوەرۆک',
+'exif-giffilecomment' => 'تێبینیی پەڕگەی GIF',
+'exif-intellectualgenre' => 'جۆری بابەت',
 
 # Make & model, can be wikified in order to link to the camera and model name
 'exif-subjectnewscode-value' => '$2 ($1)',
@@ -2882,6 +2933,9 @@ $1',
 # EXIF attributes
 'exif-compression-1' => 'نەپەستێنراو',
 
+'exif-copyrighted-true' => 'خاوەنی مافی بڵاوکردنەوە',
+'exif-copyrighted-false' => 'پاوانی گشتی',
+
 'exif-unknowndate' => 'ڕێکەوتی نەزانراو',
 
 'exif-orientation-1' => 'ئاسایی',
@@ -2986,6 +3040,10 @@ $1',
 'exif-gpslongitude-e' => 'پانیی جوگرافیایی ڕۆژهەڵات',
 'exif-gpslongitude-w' => 'پانیی جوگرافیایی ڕۆژئاوا',
 
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|مەتر}} بەرزتر لە ئاستی زەریا',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|مەتر}} نزمتر لە ئاستی زەریا',
+
 # Pseudotags used for GPSSpeedRef
 'exif-gpsspeed-k' => 'کیلۆمەتر هەر کاتژمێر',
 'exif-gpsspeed-m' => 'مایل هەر کاتژمێر',
@@ -2997,6 +3055,13 @@ $1',
 
 'exif-gpsdop-good' => 'چاک ($1)',
 
+'exif-objectcycle-a' => 'تەنیا بەیانان',
+'exif-objectcycle-p' => 'تەنیا ئێواران',
+'exif-objectcycle-b' => 'بەیانان و ئێواران',
+
+# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
+'exif-gpsdirection-t' => 'لای دروست',
+
 'exif-dc-contributor' => 'بەشداربووان',
 'exif-dc-date' => 'ڕۆژ(ەکان)',
 'exif-dc-publisher' => 'بڵاوکار',
@@ -3007,10 +3072,16 @@ $1',
 
 'exif-rating-rejected' => 'ڕەت کراوە',
 
+'exif-isospeedratings-overflow' => 'گەورەتر لە ٦٥٥٣٥',
+
+'exif-iimcategory-ace' => 'ھونەر، چاند و تاوژین',
+'exif-iimcategory-fin' => 'ئابووری و بازرگانی',
 'exif-iimcategory-edu' => 'فێرکاری',
+'exif-iimcategory-evn' => 'ژینگە',
 'exif-iimcategory-hth' => 'تەندروستی',
 'exif-iimcategory-lab' => 'کار',
 'exif-iimcategory-pol' => 'سیاسەت',
+'exif-iimcategory-rel' => 'ئایین و باوەڕ',
 'exif-iimcategory-sci' => 'زانست و تەکنۆلۆژیا',
 'exif-iimcategory-soi' => 'بابەتە کۆمەڵایەتییەکان',
 'exif-iimcategory-spo' => 'وەرزشەکان',
@@ -3369,6 +3440,8 @@ $5
 'searchsuggest-containing' => 'بە لەبەرگرتنەوەی ...',
 
 # API errors
+'api-error-empty-file' => 'ئەو پەڕگەیە کە ناردووتە واڵا بوو.',
+'api-error-file-too-large' => 'ئەو پەڕگەیە ناردووتە زۆر گەورەیە.',
 'api-error-filename-tooshort' => 'ناوی پەڕگەکە زۆر کورتە.',
 'api-error-filetype-banned' => 'ئەم جۆرە پەڕگەیە قەدەغەیە.',
 'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|جۆرە پەڕگەیەکی ڕێگەپێدراو نییە|جۆرە پەڕگە ڕێگەپێدراوەکان نین}}. {{PLURAL:$3|جۆرە پەڕگەی ڕێگەپێدراو ئەمەیە|جۆرە پەڕگەکانی ڕێگەپێدراو ئەمانەن}}:  $2.',
@@ -3388,6 +3461,4 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|سەدە|سەدە}}',
 'duration-millennia' => '$1 {{PLURAL:$1|ھەزارە|ھەزارە}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'لێدوان',
 );
index dc2eb5b..70d8a54 100644 (file)
@@ -240,8 +240,8 @@ $messages = array(
 'newwindow' => '(янъы бир пенджереде ачылыр)',
 'cancel' => 'Лягъу',
 'moredotdotdot' => 'Даа...',
-'mypage' => 'Саифем',
-'mytalk' => 'Музакере саифем',
+'mypage' => 'Саифе',
+'mytalk' => 'Музакере',
 'anontalk' => 'Бу IP-нинъ музакереси',
 'navigation' => 'Сайтта ёл тапув',
 'and' => '&#32;ве',
@@ -490,9 +490,6 @@ $2',
 'logouttext' => "'''Отурымны къапаттынъыз.'''
 
 Шимди {{SITENAME}} сайтыны аноним оларакъ къулланып оласынъыз, я да янъыдан <span class='plainlinks'>[$1 отурым ачып]</span> оласынъыз (истер айны къулланыджы адынен, истер башкъа бир къулланыджы адынен). Web браузеринъиз кэшини темизлегендже базы саифелер санки аля даа отурымынъыз ачыкъ экен киби корюнип олур.",
-'welcomecreation' => '== Хош кельдинъиз, $1! ==
-Эсабынъыз ачылды.
-Бу сайтнынъ [[Special:Preferences|сазламаларыны]] шахсынъызгъа коре денъиштирмеге унутманъыз.',
 'yourname' => 'Къулланыджы адынъыз',
 'yourpassword' => 'Паролинъиз',
 'yourpasswordagain' => 'Парольни бир даа язынъыз:',
@@ -1440,11 +1437,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 
 'enotif_mailer' => '{{SITENAME}} почта вастасынен хабер берген хызмет',
 'enotif_reset' => 'Джумле саифелерни бакъылгъан оларакъ ишаретле',
-'enotif_newpagetext' => 'Бу янъы бир саифедир.',
 'enotif_impersonal_salutation' => '{{SITENAME}} къулланыджысы',
-'changed' => 'денъиштирильди',
-'created' => 'яратылды',
-'enotif_subject' => '«{{SITENAME}}» $PAGETITLE саифеси $PAGEEDITOR къулланыджы тарафындан $CHANGEDORCREATED',
 'enotif_lastvisited' => 'Сонъки зияретинъизден берли япылгъан денъишмелерни корьмек ичюн $1 бакъынъыз.',
 'enotif_anon_editor' => 'адсыз (аноним) къулланыджы $1',
 'enotif_body' => 'Сайгъылы $WATCHINGUSERNAME,
index 766e0ba..d68ea76 100644 (file)
@@ -234,8 +234,8 @@ $messages = array(
 'newwindow' => '(yañı bir pencerede açılır)',
 'cancel' => 'Lâğu',
 'moredotdotdot' => 'Daa...',
-'mypage' => 'Saifem',
-'mytalk' => 'Muzakere saifem',
+'mypage' => 'Saife',
+'mytalk' => 'Muzakere',
 'anontalk' => 'Bu IP-niñ muzakeresi',
 'navigation' => 'Saytta yol tapuv',
 'and' => '&#32;ve',
@@ -485,9 +485,6 @@ Sebep: ''$2''.",
 'logouttext' => "'''Oturımnı qapattıñız.'''
 
 Şimdi {{SITENAME}} saytını anonim olaraq qullanıp olasıñız, ya da yañıdan <span class='plainlinks'>[$1 oturım açıp]</span> olasıñız (ister aynı qullanıcı adınen, ister başqa bir qullanıcı adınen). Web brauzeriñiz keşini temizlegence bazı saifeler sanki alâ daa oturımıñız açıq eken kibi körünip olur.",
-'welcomecreation' => '== Hoş keldiñiz, $1! ==
-Esabıñız açıldı.
-Bu saytnıñ [[Special:Preferences|sazlamalarını]] şahsıñızğa köre deñiştirmege unutmañız.',
 'yourname' => 'Qullanıcı adıñız',
 'yourpassword' => 'Paroliñiz',
 'yourpasswordagain' => 'Parolni bir daa yazıñız:',
@@ -1434,11 +1431,7 @@ Ayrıca [[Special:WantedCategories|talap etilgen kategoriyalarnıñ cedveline]]
 
 'enotif_mailer' => '{{SITENAME}} poçta vastasınen haber bergen hızmet',
 'enotif_reset' => 'Cümle saifelerni baqılğan olaraq işaretle',
-'enotif_newpagetext' => 'Bu yañı bir saifedir.',
 'enotif_impersonal_salutation' => '{{SITENAME}} qullanıcısı',
-'changed' => 'deñiştirildi',
-'created' => 'yaratıldı',
-'enotif_subject' => '"{{SITENAME}}" $PAGETITLE saifesi $PAGEEDITOR qullanıcı tarafından $CHANGEDORCREATED',
 'enotif_lastvisited' => 'Soñki ziyaretiñizden berli yapılğan deñişmelerni körmek içün $1 baqıñız.',
 'enotif_anon_editor' => 'adsız (anonim) qullanıcı $1',
 'enotif_body' => 'Sayğılı $WATCHINGUSERNAME,
index 64a2382..6322cdf 100644 (file)
@@ -525,6 +525,7 @@ $messages = array(
 'namespaces' => 'Jmenné prostory',
 'variants' => 'Varianty',
 
+'navigation-heading' => 'Navigační menu',
 'errorpagetitle' => 'Chyba',
 'returnto' => 'Návrat na stránku „$1“.',
 'tagline' => 'Z {{grammar:2sg|{{SITENAME}}}}',
@@ -765,8 +766,8 @@ Správce serveru, který úložiště zamkl, poskytl toto zdůvodnění: „''$3
 
 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.",
-'welcomecreation' => '== Vítejte, $1! ==
-Váš účet byl úspěšně vytvořen.
+'welcomeuser' => 'Vítejte, uživateli $1!',
+'welcomecreation-msg' => 'Váš účet byl vytvořen.
 Nezapomeňte si upravit své [[Special:Preferences|nastavení {{grammar:2sg|{{SITENAME}}}}]].',
 'yourname' => 'Uživatelské jméno:',
 'yourpassword' => 'Vaše heslo',
@@ -965,16 +966,16 @@ Pokud ještě jednou kliknete na „{{int:savearticle}}“, bude vaše editace z
 'summary-preview' => 'Náhled shrnutí:',
 'subject-preview' => 'Náhled předmětu/nadpisu:',
 'blockedtitle' => 'Uživatel zablokován',
-'blockedtext' => "Vaší IP adrese či uživatelskému jménu byla zablokována možnost editace.'''
+'blockedtext' => "'''Vaší IP adrese či uživatelskému jménu byla zablokována možnost editace.'''
 
-Zablokování provedl{{gender:$1||a}} $1.
+Zablokování provedl{{GENDER:$4||a}} $1.
 Udaným důvodem bylo ''$2''.
 
 * Začátek blokování: $8
 * Zablokování vyprší: $6
 * Blokovaný uživatel: $7
 
-Pokud chcete zablokování prodiskutovat, můžete kontaktovat {{gender:$1|uživatele|uživatelku}} $1 či jiného [[{{MediaWiki:Grouppage-sysop}}|správce]].
+Pokud chcete zablokování prodiskutovat, můžete kontaktovat {{GENDER:$4|uživatele|uživatelku}} $1 či jiného [[{{MediaWiki:Grouppage-sysop}}|správce]].
 Uvědomte si, že nemůžete použít nabídku „Poslat e-mail“, jestliže nemáte ve svém [[Special:Preferences|nastavení]] uvedenu platnou e-mailovou adresu nebo pokud vám byla tato možnost zakázána.
 Vaše IP adresa je $3 a&nbsp;identifikační číslo bloku je #$5; tyto údaje uvádějte ve všech dotazech na správce.",
 'autoblockedtext' => "Vaše IP adresa byla automaticky zablokována, protože ji používal jiný uživatel, kterého zablokoval $1.
@@ -1882,6 +1883,7 @@ Kontaktuje prosím [[Special:ListUsers/sysop|správce]].',
 'backend-fail-notsame' => 'Odlišný soubor $1 už existuje.',
 'backend-fail-invalidpath' => '$1 je neplatná cesta k místu uložení.',
 'backend-fail-delete' => 'Soubor $1 nelze smazat.',
+'backend-fail-describe' => 'Nepodařilo se změnit metadata souboru „$1“.',
 'backend-fail-alreadyexists' => 'Soubor $1 už existuje.',
 'backend-fail-store' => 'Soubor $1 nelze uložit v $2.',
 'backend-fail-copy' => 'Soubor $1 nelze kopírovat do $2.',
@@ -2385,19 +2387,23 @@ E-mailová adresa, kterou máte uvedenu v [[Special:Preferences|nastavení]], se
 
 'enotif_mailer' => 'Zasílač hlášení {{grammar:2sg|{{SITENAME}}}}',
 'enotif_reset' => 'Označit vše jako navštívené',
-'enotif_newpagetext' => 'Toto je nová stránka.',
 'enotif_impersonal_salutation' => 'Uživatel {{grammar:2sg|{{SITENAME}}}}',
-'changed' => 'upravil',
-'created' => 'vytvořil',
-'enotif_subject' => '$PAGEEDITOR upravil stránku $PAGETITLE na {{grammar:6sg|{{SITENAME}}}}.',
+'enotif_subject_deleted' => '$2 {{gender:$2|smazal|smazala}} stránku $1 na {{grammar:6sg|{{SITENAME}}}}',
+'enotif_subject_created' => '$2 {{gender:$2|založil|založila}} stránku $1 na {{grammar:6sg|{{SITENAME}}}}',
+'enotif_subject_moved' => '$2 {{gender:$2|přesunul|přesunula}} stránku $1 na {{grammar:6sg|{{SITENAME}}}}',
+'enotif_subject_restored' => '$2 {{gender:$2|obnovil|obnovila}} stránku $1 na {{grammar:6sg|{{SITENAME}}}}',
+'enotif_subject_changed' => '$2 {{gender:$2|změnil|změnila}} stránku $1 na {{grammar:6sg|{{SITENAME}}}}',
+'enotif_body_intro_deleted' => 'V $PAGEEDITDATE {{gender:$2|smazal|smazala}} $2 na {{grammar:6sg|{{SITENAME}}}} stránku $1, vizte aktuální verzi na $3 .',
+'enotif_body_intro_created' => 'V $PAGEEDITDATE {{gender:$2|založil|založila}} $2 na {{grammar:6sg|{{SITENAME}}}} stránku $1, vizte aktuální verzi na $3 .',
+'enotif_body_intro_moved' => 'V $PAGEEDITDATE {{gender:$2|přesunul|přesunula}} $2 na {{grammar:6sg|{{SITENAME}}}} stránku $1, vizte aktuální verzi na $3 .',
+'enotif_body_intro_restored' => 'V $PAGEEDITDATE {{gender:$2|obnovil|obnovila}} $2 na {{grammar:6sg|{{SITENAME}}}} stránku $1, vizte aktuální verzi na $3 .',
+'enotif_body_intro_changed' => 'V $PAGEEDITDATE {{gender:$2|změnil|změnila}} $2 na {{grammar:6sg|{{SITENAME}}}} stránku $1, vizte aktuální verzi na $3 .',
 'enotif_lastvisited' => 'Vizte $1 pro seznam všech změn od minulé návštěvy.',
 'enotif_lastdiff' => 'Tuto změnu vizte na $1 .',
 'enotif_anon_editor' => 'anonymní uživatel $1',
 'enotif_body' => 'Vážený uživateli $WATCHINGUSERNAME,
 
-Ve $PAGEEDITDATE $CHANGEDORCREATED $PAGEEDITOR stránku $PAGETITLE, vizte aktuální verzi na $PAGETITLE_URL .
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Shrnutí editace: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2405,8 +2411,7 @@ Uživatele, který změnu provedl, můžete kontaktovat:
 e-mailem: $PAGEEDITOR_EMAIL
 na wiki: $PAGEEDITOR_WIKI
 
-Dokud stránku nenavštívíte, nebudou vám zasílána další oznámení o změnách této stránky.
-Případně si můžete vynulovat příznaky ve svém seznamu sledovaných stránek.
+Dokud stránku nenavštívíte, nebudou vám zasílána další oznámení o změnách této stránky. Případně si můžete vynulovat příznaky ve svém seznamu sledovaných stránek.
 
        S pozdravem váš zasílač hlášení {{grammar:2sg|{{SITENAME}}}}
 
@@ -3180,6 +3185,8 @@ Uložte jej na svůj disk a nahrajte ho sem.',
 'markedaspatrollederror' => 'Nelze označit za prověřené',
 'markedaspatrollederrortext' => 'Musíte zvolit revizi, která má být označena jako prověřená.',
 'markedaspatrollederror-noautopatrol' => 'Nemáte dovoleno označovat vlastní editace jako prověřené.',
+'markedaspatrollednotify' => 'Tato změna stránky $1 byla označena jako prověřená.',
+'markedaspatrollederrornotify' => 'Nepodařilo se označit jako prověřené.',
 
 # Patrol log
 'patrol-log-page' => 'Kniha prověřených editací',
@@ -3245,6 +3252,7 @@ Otevřením souboru můžete ohrozit svůj počítač.",
 'days' => '{{PLURAL:$1|$1 den|$1 dny|$1 dní}}',
 'ago' => 'před 
 $1',
+'just-now' => 'Právě teď',
 
 # Bad image list
 'bad_image_list' => 'Tato stránka má následující formát:
@@ -3945,8 +3953,7 @@ Obrázky se zobrazí v plném rozlišení, jiné typy souborů se otevřenou v p
 'specialpages' => 'Speciální stránky',
 'specialpages-note' => '----
 * Normální speciální stránky
-* <span class="mw-specialpagerestricted">Speciální stránky s&nbsp;vyhrazeným přístupem</span>
-* <span class="mw-specialpagecached">Speciální stránky z&nbsp;cache (mohou být zastaralé)</span>',
+* <span class="mw-specialpagerestricted">Speciální stránky s&nbsp;vyhrazeným přístupem</span>',
 'specialpages-group-maintenance' => 'Údržba',
 'specialpages-group-other' => 'Ostatní',
 'specialpages-group-login' => 'Přihlášení / vytvoření účtu',
@@ -4050,8 +4057,8 @@ Obrázky se zobrazí v plném rozlišení, jiné typy souborů se otevřenou v p
 'logentry-move-move_redir-noredirect' => '$1 přesunul stránku $3 na $4 místo přesměrování bez založení přesměrování',
 'logentry-patrol-patrol' => '$1 označil revizi $4 stránky $3 jako prověřenou',
 'logentry-patrol-patrol-auto' => '$1 automaticky označil revizi $4 stránky $3 jako prověřenou',
-'logentry-newusers-newusers' => '$1 si založil uživatelský účet',
-'logentry-newusers-create' => '$1 si založil uživatelský účet',
+'logentry-newusers-newusers' => 'Byl založen uživatelský účet $1',
+'logentry-newusers-create' => 'Byl založen uživatelský účet $1',
 'logentry-newusers-create2' => '$1 založil uživatelský účet $3',
 'logentry-newusers-autocreate' => 'Automaticky byl založen účet $1',
 'newuserlog-byemail' => 'heslo zasláno e-mailem',
@@ -4129,5 +4136,5 @@ Jinak můžete využít jednoduchý formulář níže. Váš komentář bude př
 'duration-millennia' => '$1 {{PLURAL:$1|tisíciletí}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'diskuse',
+'svg-long-error' => 'Neplatný soubor SVG: $1',
 );
index dc29b25..1914124 100644 (file)
@@ -154,8 +154,8 @@ $messages = array(
 'article' => 'члѣнъ',
 'newwindow' => '(иномь окънѣ)',
 'moredotdotdot' => 'вѧщє ···',
-'mypage' => 'моꙗ страница',
-'mytalk' => 'моê\99\97 Ð±Ñ\94Ñ\81ѣда',
+'mypage' => 'страница',
+'mytalk' => 'бєсѣда',
 'navigation' => 'плаваниѥ',
 'and' => '&#32;и',
 
@@ -321,7 +321,7 @@ $messages = array(
 или [{{fullurl:{{FULLPAGENAME}}|action=edit}} ѭжє исправити]</span> можєши',
 'noarticletext-nopermission' => 'нꙑнѣ с̑ьдє ничєсожє нє напьсано ѥстъ ⁙
 [[Special:Search/{{PAGENAME}}|си страницѧ имѧ искати]] дроугꙑ страницѧ или
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} съвѧꙁанꙑ їсторїѩ видѣти]</span> можєши',
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} съвѧꙁанꙑ їсторїѩ видѣти]</span> можєши ⁙ сътворити жє си страницѧ нє можєши',
 'userpage-userdoesnotexist' => 'польꙃєватєльска мѣста ⁖ $1 ⁖ нꙑнѣ нѣстъ ⁙
 прѣдъ сътворѥниѥмь или исправлѥниѥмь си страницѧ помꙑсли жє ащє исто тъ дѣиство ноуждьно ли',
 'clearyourcache' => "'''НАРОЧИТО''': По съхранѥнии можєши обити своѥго съмотрила съхранъ да видѣлъ би мѣнꙑ
@@ -393,7 +393,7 @@ $messages = array(
 
 # Preferences page
 'preferences' => 'строи',
-'mypreferences' => 'мои строи',
+'mypreferences' => 'строи',
 'changepassword' => 'таина словєсє иꙁмѣнѥниѥ',
 'prefs-rc' => 'послѣдьнѩ мѣнꙑ',
 'prefs-watchlist' => 'блюдєниꙗ',
@@ -489,6 +489,8 @@ $messages = array(
 'filedesc' => 'опьсаниѥ',
 'fileuploadsummary' => 'опьсаниѥ:',
 'uploadedimage' => '⁖ [[$1]] ⁖ положєнъ ѥстъ',
+'upload-source' => 'источьно дѣло',
+'sourcefilename' => 'источьна дѣла имꙗ :',
 'watchthisupload' => 'си дѣла блюдєниѥ',
 'upload-success-subj' => 'дѣло положєно ѥстъ',
 
@@ -602,7 +604,7 @@ $messages = array(
 
 # Watchlist
 'watchlist' => 'моꙗ блюдєниꙗ',
-'mywatchlist' => 'моê\99\97 Ð±Ð»Ñ\8eдÑ\94ниê\99\97',
+'mywatchlist' => 'блюдєниꙗ',
 'addedwatchtext' => "страница ⁖ [[:$1]] ⁖ нꙑнѣ подъ твоимь [[Special:Watchlist|блюдєниѥмь]] ѥстъ ⁙
 всꙗ ѥѩ и ѥѩжє бєсѣдꙑ мѣнꙑ страницѧ ⁖ [[Special:Watchlist|моꙗ блюдєниꙗ]] ⁖ покаꙁанꙑ сѫтъ и  [[Special:RecentChanges|послѣдьнъ мѣнъ]] каталоꙃѣ '''чрьнꙑимъ''' сѧ авлꙗѭтъ",
 'removedwatchtext' => 'страница ⁖ [[:$1]] ⁖ нꙑнѣ твоѥго [[Special:Watchlist|блюдєниꙗ]] иꙁнєсєна ѥстъ',
@@ -614,8 +616,6 @@ $messages = array(
 'watching' => 'блюдєниѥ ...',
 'unwatching' => 'оставьлєниѥ блюдєниꙗ ...',
 
-'created' => 'сътворѥнъ ѥстъ',
-
 # Delete
 'deletepage' => 'поничьжєниѥ',
 'excontent' => "вънѫтри бѣ: '$1'",
@@ -653,7 +653,7 @@ $messages = array(
 # Contributions
 'contributions' => 'польꙃєватєлꙗ добродѣꙗниꙗ',
 'contributions-title' => 'польꙃєватєлꙗ ⁖ $1 ⁖ добродѣꙗниꙗ',
-'mycontris' => 'моê\99\97 Ð´Ð¾Ð±Ñ\80одѣê\99\97ниê\99\97',
+'mycontris' => 'добродѣꙗниꙗ',
 'contribsub2' => 'польꙃєватєлꙗ имѧ ⁖ $1 ⁖ ѥстъ ($2)',
 'uctop' => '(послѣдьнꙗ мѣна)',
 
@@ -688,6 +688,7 @@ $messages = array(
 'blocklink' => 'ꙁагради',
 'contribslink' => 'добродѣꙗниꙗ',
 'blocklogpage' => 'ꙁаграждєниꙗ їсторїꙗ',
+'blocklogentry' => 'ꙁаградихъ [[$1]] на врѣмѧ $2 $3',
 
 # Move page
 'move-page' => 'прѣимєнованиѥ ⁖ $1 ⁖',
@@ -732,6 +733,7 @@ $messages = array(
 'tooltip-t-specialpages' => 'вьсѣѩ нарочьнъ страницѧ каталогъ',
 'tooltip-t-print' => 'сѥѩ страницѧ пєчатьнъ обраꙁъ',
 'tooltip-ca-nstab-special' => 'си нарочьна страница ѥстъ · ѥѩжє иꙁмѣнꙗти нє можєши',
+'tooltip-minoredit' => 'оꙁначи ꙗко малоу мѣноу',
 'tooltip-watch' => 'си страницѧ блюдєниѥ',
 
 # Info page
@@ -796,9 +798,10 @@ $messages = array(
 'logentry-delete-delete' => '$1 поничьжихъ страницѫ ⁖ $3 ⁖',
 'logentry-move-move' => '$1 нарєчє страницѫ ⁖ $3 ⁖ имєньмь ⁖ $4 ⁖',
 'logentry-move-move-noredirect' => '$1 нарєчє страницѫ ⁖ $3 ⁖ имєньмь ⁖ $4 ⁖ бєꙁ прѣнаправлєниꙗ сътворѥниꙗ',
-'logentry-newusers-create' => '$1 сътворихъ польꙃєватєльско мѣсто',
+'logentry-newusers-create' => 'польꙃєватєльско мѣсто ⁖ $1 ⁖ сътворѥно ѥстъ',
 
 # Search suggestions
+'searchsuggest-search' => 'исканиѥ',
 'searchsuggest-containing' => 'сѥ дрьжащи···',
 
 # API errors
index cf7a28c..59629b8 100644 (file)
@@ -282,6 +282,7 @@ $messages = array(
 'namespaces' => 'Parthau',
 'variants' => 'Amrywiolion',
 
+'navigation-heading' => 'Llywio',
 'errorpagetitle' => 'Gwall',
 'returnto' => 'Dychwelyd at $1.',
 'tagline' => 'Oddi ar {{SITENAME}}',
@@ -494,7 +495,7 @@ Ceisiwch eto ymhen rhai munudau.",
 'viewsourcetext' => 'Cewch weld a chopïo côd y dudalen:',
 'viewyourtext' => "Cewch weld a copïo ffynhonnell ''eich golygiadau'' i'r dudalen hon:",
 'protectedinterface' => "Testun ar gyfer rhyngwyneb y wici yw cynnwys y dudalen hon. Clowyd y dudalen er mwyn ei diogeli. Os am gyfieithu'r neges neu ei newid ym mhob wici yn hytrach nag yn hwn yn unig, defnyddiwch [//translatewiki.net/ translatewiki.net], y prosiect MediaWiki sy'n hyrwyddo'r gwaith cyfieithu.",
-'editinginterface' => "'''Dalier sylw:''' Rydych yn golygu tudalen sy'n rhan o destun rhyngwyneb y meddalwedd. Bydd newidiadau i'r dudalen hon yn effeithio ar y rhyngwyneb a ddefnyddir gan eraill. Os am gyfieithu'r neges, ystyriwch ddefnyddio [//translatewiki.net/wiki/Main_Page?setlang=cy translatewiki.net], sef y prosiect MediaWiki sy'n hyrwyddo creu wicïau amlieithog.",
+'editinginterface' => "'''Dalier sylw:''' Rydych yn golygu tudalen sy'n rhan o destun rhyngwyneb y meddalwedd. Bydd newidiadau i'r dudalen hon yn effeithio ar y rhyngwyneb a ddefnyddir ar y wici hwn yn unig. Os am gyfieithu'r neges rhagosodedig a ddefnyddir ar bob wici, ystyriwch ddefnyddio [//translatewiki.net/ translatewiki.net], sef y prosiect MediaWiki sy'n hyrwyddo creu rhyngwyneb amlieithog ar wicïau.",
 'sqlhidden' => '(cuddiwyd chwiliad SQL)',
 'cascadeprotected' => "Diogelwyd y dudalen hon rhag ei newid, oherwydd ei bod wedi ei chynnwys yn y {{PLURAL:$1|dudalen ganlynol|dudalen ganlynol|tudalennau canlynol|tudalennau canlynol|tudalennau canlynol|tudalennau canlynol}}, a {{PLURAL:$1|honno yn ei thro wedi ei|honno yn ei thro wedi ei|rheiny yn eu tro wedi eu|rheiny yn eu tro wedi eu|rheiny yn eu tro wedi eu|rheiny yn eu tro wedi eu}} diogelu, a'r dewisiad 'sgydol' ynghynn:
 $2",
@@ -522,9 +523,7 @@ Y rheswm a roddwyd gan y gweinyddwr a roddodd y ffeil dan glo yw "\'\'$3\'\'".',
 
 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.",
-'welcomecreation' => "==Croeso, $1!==
-Mae eich cyfrif wedi'i greu.
-Cofiwch osod y [[Special:Preferences|dewisiadau]] sydd fwyaf hwylus i chi ar {{SITENAME}}.",
+'welcomeuser' => 'Croeso, $1!',
 'yourname' => 'Eich enw defnyddiwr:',
 'yourpassword' => 'Eich cyfrinair:',
 'yourpasswordagain' => 'Ail-deipiwch y cyfrinair:',
@@ -1633,7 +1632,7 @@ Os yw'r broblem yn parhau, cysylltwch â [[Special:ListUsers/sysop|gweinyddwr]].
 'backend-fail-internal' => 'Cafwyd gwall anhysbys yn y storfa tu ôl i\'r llenni yn "$1".',
 'backend-fail-contenttype' => 'Methwyd a dirnad pa fath o gynnwys sydd yn y ffeil y ceisir ei storio yn "$1".',
 'backend-fail-batchsize' => "Rhoddwyd llwyth o {{PLURAL:$1|$1 o weithrediadau}} ffeil i'w gwneud i'r storfa; ni all nifer y {{PLURAL:$2|gweithrediadau}} fod yn fwy na $2.",
-'backend-fail-usable' => "Ni ellid ysgrifennu'r ffeil $1 oherwydd nad oedd caniatad digonol ynteu bod cyfeiriaduron neu flychau yn eisiau.",
+'backend-fail-usable' => 'Ni ellid darllen nag ysgrifennu\'r ffeil "$1" oherwydd nad oedd caniatad digonol ynteu bod cyfeiriaduron neu flychau yn eisiau.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Methwyd cysylltu â lòg y gweithrediadau ar y storfa "$1".',
@@ -1768,7 +1767,7 @@ Mae modd golygu'r disgrifiad ohoni ar ei [$2 thudalen disgrifio] fan honno.",
 'shared-repo-from' => 'oddi ar $1',
 'shared-repo' => 'storfa cyfrannol',
 'shared-repo-name-wikimediacommons' => 'Comin Wikimedia',
-'upload-disallowed-here' => "Yn anffodus ni allwch drosysgrifo'r ddelwedd hon.",
+'upload-disallowed-here' => "Ni allwch drosysgrifo'r ffeil hon.",
 
 # File reversion
 'filerevert' => 'Gwrthdroi $1',
@@ -2005,7 +2004,7 @@ Gweler hefyd [[Special:WantedCategories|categorïau sydd eu hangen]].",
 'linksearch-ok' => 'Chwilio',
 'linksearch-text' => 'Gellir defnyddio cardiau gwyllt megis "*.wikipedia.org".
 Mae angen parth lefel-uchaf o leiaf, er enghraifft "*.org".<br />
-Protocoliau sy\'n cael eu cynnal: <code>$1</code> (peidiwch ag ychwanegu\'r rhain wrth ysgrifennu\'r ymholiad).',
+Protocoliau sy\'n cael eu cynnal: <code>$1</code> (yn neidio i http:// os na roddir protocol o gwbl).',
 'linksearch-line' => 'Mae cysylltiad i gael i $1 oddi wrth $2',
 'linksearch-error' => "Dim ond ar ddechrau enw'r gwesteiwr y gallwch osod cardiau gwyllt.",
 
@@ -2055,8 +2054,8 @@ er mwyn medru anfon e-bost at ddefnyddwyr eraill.',
 'emailuser-title-target' => "Ebostio'r {{GENDER:$1|defnyddiwr hwn}}",
 'emailuser-title-notarget' => 'Anfon e-bost at ddefnyddiwr',
 'emailpage' => 'Anfon e-bost at ddefnyddiwr',
-'emailpagetext' => "Os yw'r cyfeiriad e-bost sydd yn newisiadau'r defnyddiwr hwn yn un dilys, gellir anfon neges ato o'i ysgrifennu ar y ffurflen isod.
-Bydd y cyfeiriad e-bost a osodoch yn eich [[Special:Preferences|dewisiadau chithau]] yn ymddangos ym maes \"Oddi wrth\" yr e-bost, fel bod y defnyddiwr arall yn gallu anfon ateb atoch.",
+'emailpagetext' => 'Os yw\'r cyfeiriad e-bost sydd yn newisiadau\'r {{GENDER:$1|defnyddiwr}} hwn yn un dilys, gellir anfon neges ato o\'i ysgrifennu ar y ffurflen isod.
+Bydd y cyfeiriad e-bost a osodoch yn eich [[Special:Preferences|dewisiadau chithau]] yn ymddangos ym maes "Oddi wrth" yr e-bost, fel bod y defnyddiwr arall yn gallu anfon ateb atoch.',
 'usermailererror' => 'Dychwelwyd gwall gan y rhaglen e-bost:',
 'defemailsubject' => '{{SITENAME}} yn anfon e-bost oddi wrth y defnyddiwr "$1"',
 'usermaildisabled' => 'Dim modd anfon e-bost at ddefnyddwyr',
@@ -2125,11 +2124,7 @@ Os ydych am ddiddymu'r dudalen o'r rhestr wylio, cliciwch ar \"Stopio gwylio\" y
 
 'enotif_mailer' => 'Sustem hysbysu {{SITENAME}}',
 'enotif_reset' => 'Ystyried bod pob tudalen wedi cael ymweliad',
-'enotif_newpagetext' => 'Mae hon yn dudalen newydd.',
 'enotif_impersonal_salutation' => 'at ddefnyddiwr {{SITENAME}}',
-'changed' => 'Newidiwyd',
-'created' => 'crëwyd',
-'enotif_subject' => '$CHANGEDORCREATED y dudalen \'$PAGETITLE\' ar {{SITENAME}} gan $PAGEEDITOR',
 'enotif_lastvisited' => 'Gwelwch $1 am bob newid ers eich ymweliad blaenorol.',
 'enotif_lastdiff' => 'Gallwch weld y newid ar $1.',
 'enotif_anon_editor' => 'defnyddiwr anhysbys $1',
@@ -2311,8 +2306,8 @@ Mae'n bosibl bod nam ar y cyswllt, neu fod y diwygiad eisoes wedi'i adfer neu we
 'undeletedrevisions' => 'wedi adfer $1 {{PLURAL:$1|diwygiad|diwygiad|ddiwygiad|diwygiad|diwygiad|diwygiad}}',
 'undeletedrevisions-files' => 'Adferwyd $1 {{PLURAL:$1|fersiwn|fersiwn|fersiwn|fersiwn|fersiwn|fersiwn}} a $2 {{PLURAL:$2|ffeil|ffeil|ffeil|ffeil|ffeil|ffeil}}',
 'undeletedfiles' => 'Adferwyd $1 {{PLURAL:$1|ffeil|ffeil|ffeil|ffeil|ffeil|ffeil}}',
-'cannotundelete' => "Mae'r cais i ddad-ddileu wedi'i fethu;
-efallai bod rhywun arall wedi dad-ddileu'r dudalen yn barod.",
+'cannotundelete' => "Mae'r cais i ddad-ddileu wedi methu:
+$1",
 'undeletedpage' => "'''Adferwyd $1'''
 
 Ceir cofnod o'r tudalennau a ddilëwyd neu a adferwyd yn ddiweddar ar y [[Special:Log/delete|lòg ddileuon]].",
@@ -2868,6 +2863,7 @@ Achos hyn yn fwy na thebyg yw presenoldeb cysylltiad i wefan ar y rhestr wahardd
 'pageinfo-lasttime' => 'Dyddiad y golygiad diweddaraf',
 'pageinfo-edits' => 'Cyfanswm y golygiadau',
 'pageinfo-authors' => 'Cyfanswm yr awduron gwahanol',
+'pageinfo-recent-edits' => 'Nifer y golygiadau diweddar (o fewn y $1 diwethaf).',
 'pageinfo-magic-words' => '{{PLURAL:$1|Gair|Gair|Geiriau}} hud ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Categori|Categori|Categorïau}} cudd ($1)',
 'pageinfo-toolboxlink' => 'Gwybodaeth am y dudalen',
@@ -3683,9 +3679,9 @@ Dangosir delweddau ar eu maint llawn, dechreuir ffeiliau o fathau eraill yn unio
 'logentry-move-move_redir-noredirect' => 'Symudwyd y dudalen $3 i $4 gan $1 dros ddolen ailgyfeirio heb adael dolen ailgyfeirio newydd',
 'logentry-patrol-patrol' => "Rhoddodd $1 nod ar ddiwygiad $4 o'r dudalen $3 yn dynodi ei fod wedi derbyn ymweliad patrôl",
 'logentry-patrol-patrol-auto' => "Rhoddodd $1 nod yn awtomatig ar ddiwygiad $4 o'r dudalen $3 yn dynodi ei fod wedi derbyn ymweliad patrôl",
-'logentry-newusers-newusers' => 'Crëodd $1 gyfrif defnyddiwr',
-'logentry-newusers-create' => 'Crëodd $1 gyfrif defnyddiwr',
-'logentry-newusers-create2' => 'Crëodd $1 y cyfrif defnyddiwr $3',
+'logentry-newusers-newusers' => 'Dechreuwyd y cyfrif defnyddiwr $1',
+'logentry-newusers-create' => 'Dechreuwyd y cyfrif defnyddiwr $1',
+'logentry-newusers-create2' => 'Dechreuwyd y cyfrif defnyddiwr $3 gan $1',
 'logentry-newusers-autocreate' => 'Crëwyd y cyfrif $1 yn awtomatig',
 'newuserlog-byemail' => 'anfonwyd y cyfrinair trwy e-bost',
 
@@ -3760,6 +3756,4 @@ Dangosir delweddau ar eu maint llawn, dechreuir ffeiliau o fathau eraill yn unio
 'duration-centuries' => '$1 {{PLURAL:$1|canmlwydd|ganmlwydd|ganmlwydd|canmlwydd|chanmlwydd|canmlwydd}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milflwydd|filflwydd|filflwydd|milflwydd|milflwydd|milflwydd}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'sgwrs',
 );
index a5b086c..1e5aa42 100644 (file)
@@ -354,6 +354,7 @@ $messages = array(
 'namespaces' => 'Navnerum',
 'variants' => 'Varianter',
 
+'navigation-heading' => 'Navigationsmenu',
 'errorpagetitle' => 'Fejl',
 'returnto' => 'Tilbage til $1.',
 'tagline' => 'Fra {{SITENAME}}',
@@ -594,9 +595,9 @@ Administratoren, som skrivebeskyttede den, gav følgende begrundelse: "$3".',
 
 Du kan fortsætte med at bruge {{SITENAME}} anonymt, eller du kan <span class='plainlinks'>[$1 logge på igen]</span> som den samme eller en anden bruger.
 Bemærk, at nogle sider stadigvæk kan vises som om du var logget på, indtil du tømmer din browsers cache.",
-'welcomecreation' => '== Velkommen, $1! ==
-
-Din konto er blevet oprettet. Glem ikke at personliggøre dine [[Special:Preferences|{{SITENAME}}-indstillinger]].',
+'welcomeuser' => 'Velkommen, $1!',
+'welcomecreation-msg' => 'Din konto er blevet oprettet.
+Glem ikke at ændre dine [[Special:Preferences|{{SITENAME}} indstillinger]].',
 'yourname' => 'Dit brugernavn:',
 'yourpassword' => 'Din adgangskode:',
 'yourpasswordagain' => 'Gentag adgangskode',
@@ -799,7 +800,7 @@ Blokeringen udløber: $6
 Blokeringen er rettet mod: $7
 
 Du kan kontakte $1 eller en af de andre [[{{MediaWiki:Grouppage-sysop}}|administratorer]] for at diskutere blokeringen.
-Du kan ikke bruge funktionen 'e-mail til denne bruger' medmindre der er angivet en gyldig email-adresse i dine
+Du kan ikke bruge funktionen 'e-mail til denne bruger' medmindre der er angivet en gyldig e-mailadresse i dine
 [[Special:Preferences|kontoindstillinger]], og du ikke er blevet blokeret fra at bruge den.
 
 Din nuværende IP-adresse er $3, og blokerings-id er #$5.
@@ -1319,7 +1320,7 @@ Her er en tilfældig genereret værdi som du kan bruge: $1',
 Det kan ikke gøres om.',
 'prefs-emailconfirm-label' => 'Bekræftelse af e-mail:',
 'prefs-textboxsize' => 'Størrelse på redigeringsvindue',
-'youremail' => 'Din e-mail-adresse:',
+'youremail' => 'Din e-mailadresse:',
 'username' => 'Brugernavn:',
 'uid' => 'Brugernummer:',
 'prefs-memberingroups' => 'Medlem af {{PLURAL:$1|gruppen|grupperne}}:',
@@ -1701,6 +1702,7 @@ Informer venligst en [[Special:ListUsers/sysop|systemadministrator]].',
 'backend-fail-notsame' => 'En ikke-identisk fil eksisterer allerede som $1.',
 'backend-fail-invalidpath' => '$1 er ikke en gyldig lagringssti.',
 'backend-fail-delete' => 'Kunne ikke slette filen $1.',
+'backend-fail-describe' => 'Ikke kunne ændre metadata for filen "$1".',
 'backend-fail-alreadyexists' => 'Filen $1 findes allerede.',
 'backend-fail-store' => 'Kunne ikke gemme filen $1 i $2.',
 'backend-fail-copy' => 'Kunne ikke kopiere filen $1 til $2.',
@@ -2204,19 +2206,23 @@ Den e-mail-adresse, du har angivet i [[Special:Preferences|dine indstillinger]],
 
 'enotif_mailer' => '{{SITENAME}} informationsmail',
 'enotif_reset' => 'Marker alle sider som besøgt',
-'enotif_newpagetext' => 'Dette er en ny side.',
 'enotif_impersonal_salutation' => '{{SITENAME}} bruger',
-'changed' => 'ændret',
-'created' => 'oprettet',
-'enotif_subject' => '{{SITENAME}}-siden $PAGETITLE er blevet ændret af $PAGEEDITOR',
+'enotif_subject_deleted' => '{{SITENAME}} side $1 er blevet slettet af {{gender:$2|$2}}',
+'enotif_subject_created' => '{{SITENAME}} side $1 er blevet oprettet af {{gender:$2|$2}}',
+'enotif_subject_moved' => '{{SITENAME}} side $1 er blevet flyttet af {{gender:$2|$2}}',
+'enotif_subject_restored' => '{{SITENAME}} side $1 er blevet gendannet af {{gender:$2|$2}}',
+'enotif_subject_changed' => '{{SITENAME}} side $1 er blevet ændret af {{gender:$2|$2}}',
+'enotif_body_intro_deleted' => 'Siden {{SITENAME}} $1 er blevet slettet på $PAGEEDITDATE af {{gender:$2|$2}}, se $3 for den aktuelle version.',
+'enotif_body_intro_created' => 'Siden {{SITENAME}} $1 er blevet oprettet på $PAGEEDITDATE af {{gender:$2|$2}}, se $3 for den aktuelle version.',
+'enotif_body_intro_moved' => 'Siden {{SITENAME}} $1 er blevet flyttet på $PAGEEDITDATE af {{gender:$2|$2}}, se  $3  for den aktuelle revision.',
+'enotif_body_intro_restored' => 'Siden {{SITENAME}} $1 er blevet gendannet på $PAGEEDITDATE af {{gender:$2|$2}}, se $3 for den aktuelle version.',
+'enotif_body_intro_changed' => 'Siden {{SITENAME}} $1 er blevet ændret på $PAGEEDITDATE af {{gender:$2|$2}}, se $3 for den aktuelle version.',
 'enotif_lastvisited' => 'Se $1 for alle ændringer siden dit sidste besøg.',
 'enotif_lastdiff' => 'Se $1 for at vise denne ændring.',
 'enotif_anon_editor' => 'anonym bruger $1',
 'enotif_body' => 'Kære $WATCHINGUSERNAME,
 
-{{SITENAME}}-siden $PAGETITLE er blevet $CHANGEDORCREATED den $PAGEEDITDATE af $PAGEEDITOR, se $PAGETITLE_URL for den aktuelle version.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Bidragyderens opsummering: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2224,13 +2230,12 @@ Kontakt bidragyderen:
 e-mail: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Du vil ikke modtage flere beskeder om yderligere ændringer medmindre du besøger denne side.
-På din overvågningsliste kan du også nulstille alle markeringer på de sider, du overvåger.
+Du vil ikke modtage flere beskeder om yderligere ændringer medmindre du besøger denne side. På din overvågningsliste kan du også nulstille alle markeringer på de sider, du overvåger.
 
              Med venlig hilsen {{SITENAME}}s informationssystem
 
 --
-For at ændre dine indstillinger for e-mail-notifikationer, besøg
+For at ændre dine indstillinger for email notifikationer, besøg
 {{canonicalurl:{{#special:Preferences}}}}
 
 For at ændre indstillingerne for din overvågningsliste, besøg
@@ -2548,7 +2553,7 @@ Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
 'unblocklink' => 'ophæv blokering',
 'change-blocklink' => 'ændr blokering',
 'contribslink' => 'bidrag',
-'emaillink' => 'send email',
+'emaillink' => 'send e-mail',
 'autoblocker' => 'Du er automatisk blokeret, fordi du deler IP-adresse med "[[User:$1|$1]]".
 Begrundelse: "$2".',
 'blocklogpage' => 'Blokeringslog',
@@ -2974,6 +2979,8 @@ Dette skyldes sandsynligvis en henvisning til et sortlistet eksternt websted.',
 'markedaspatrollederror' => 'Markering som „kontrolleret“ ikke mulig.',
 'markedaspatrollederrortext' => 'Du skal vælge en sideændring.',
 'markedaspatrollederror-noautopatrol' => 'Du må ikke markere dine egne ændringer som kontrolleret.',
+'markedaspatrollednotify' => 'Denne ændring af $1 er blevet markeret som patruljeret.',
+'markedaspatrollederrornotify' => 'Markering som patruljeret mislykkedes.',
 
 # Patrol log
 'patrol-log-page' => 'Kontrollog',
@@ -3038,6 +3045,7 @@ Du kan beskadige dit system hvis du udfører den.",
 'hours' => '{{PLURAL: $1|$1 time|$1 timer}}',
 'days' => '{{PLURAL: $1|$1 dag|$1 dage}}',
 'ago' => '$1 siden',
+'just-now' => 'lige nu',
 
 # Bad image list
 'bad_image_list' => 'Formatet er:
@@ -3776,9 +3784,9 @@ Billeder vises i fuld opløsning, og andre mediatyper vil blive aktiveret med de
 'logentry-move-move_redir-noredirect' => '$1 flyttede siden $3 til $4 hen over en omdirigering og uden at efterlade en omdirigering',
 'logentry-patrol-patrol' => '$1 markerede version $4 af siden $3 som patruljeret',
 'logentry-patrol-patrol-auto' => '$1 markerede automatisk version $4 af siden $3 som patruljeret',
-'logentry-newusers-newusers' => '$1 oprettede en brugerkonto',
-'logentry-newusers-create' => '$1 oprettede en brugerkonto',
-'logentry-newusers-create2' => '$1 oprettede brugerkontoen $3',
+'logentry-newusers-newusers' => 'Brugerkontoen $1 blev oprettet',
+'logentry-newusers-create' => 'Brugerkontoen $1 blev oprettet',
+'logentry-newusers-create2' => 'Brugerkontoen $3 blev oprettet af $1',
 'logentry-newusers-autocreate' => 'Kontoen $1 blev automatisk oprettet',
 'newuserlog-byemail' => 'kodeord tilsendt pr. e-mail',
 
@@ -3855,5 +3863,5 @@ Ellers kan du bruge den enkle formular nedenfor. Din kommentar vil blive tilføj
 'duration-millennia' => '$1 {{PLURAL:$1|årtusind|årtusinder}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'diskussion',
+'svg-long-error' => 'Ugyldig SVG-fil: $1',
 );
index 7bd2d85..ef06ff9 100644 (file)
@@ -413,7 +413,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Kontrollierte Änderungen in den „Letzten Änderungen“ ausblenden',
 'tog-newpageshidepatrolled' => 'Kontrollierte Seiten bei den „Neuen Seiten“ ausblenden',
 'tog-extendwatchlist' => 'Erweiterte Beobachtungsliste zur Anzeige aller Änderungen',
-'tog-usenewrc' => 'Seitenbezogene Gruppierung bei den „Letzten Änderungen“ und auf der Beobachtungsliste (benötigt JavaScript)',
+'tog-usenewrc' => 'Seitenbezogene Gruppierung in den „Letzten Änderungen“ und auf der Beobachtungsliste (benötigt JavaScript)',
 'tog-numberheadings' => 'Überschriften automatisch nummerieren',
 'tog-showtoolbar' => 'Bearbeiten-Werkzeugleiste anzeigen (benötigt JavaScript)',
 'tog-editondblclick' => 'Seiten mit Doppelklick bearbeiten (benötigt JavaScript)',
@@ -573,6 +573,7 @@ $messages = array(
 'namespaces' => 'Namensräume',
 'variants' => 'Varianten',
 
+'navigation-heading' => 'Navigationsmenü',
 'errorpagetitle' => 'Fehler',
 'returnto' => 'Zurück zur Seite $1.',
 'tagline' => 'Aus {{SITENAME}}',
@@ -816,10 +817,7 @@ Der Administrator, der den Schreibzugriff sperrte, gab folgenden Grund an: „$3
 
 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.",
-'welcomecreation' => '== Willkommen, $1! ==
-
-Dein Benutzerkonto wurde soeben eingerichtet.
-Vergiss nicht, deine [[Special:Preferences|Einstellungen]] für dieses Wiki anzupassen.',
+'welcomeuser' => 'Willkommen, $1!',
 'yourname' => 'Benutzername:',
 'yourpassword' => 'Passwort:',
 'yourpasswordagain' => 'Passwort wiederholen:',
@@ -1938,6 +1936,7 @@ Wenn das Problem weiter besteht, informiere einen [[Special:ListUsers/sysop|Syst
 'backend-fail-notsame' => 'Es ist bereits eine Datei $1 vorhanden, die nicht identisch ist.',
 'backend-fail-invalidpath' => '$1 ist kein gültiger Pfad zum Speichern.',
 'backend-fail-delete' => 'Die Datei $1 konnte nicht gelöscht werden.',
+'backend-fail-describe' => 'Die Metadaten für die Datei „$1“ konnten nicht geändert werden.',
 'backend-fail-alreadyexists' => 'Die Seite $1 ist bereits vorhanden',
 'backend-fail-store' => 'Die Datei $1 konnte nicht unter $2 gespeichert werden.',
 'backend-fail-copy' => 'Die Datei $1 konnte nicht nach $2 kopiert werden.',
@@ -2438,21 +2437,23 @@ Spätere Änderungen an dieser Seite und der zugehörigen Diskussionsseite werde
 
 'enotif_mailer' => '{{SITENAME}}-E-Mail-Benachrichtigungsdienst',
 'enotif_reset' => 'Alle Seiten als besucht markieren',
-'enotif_newpagetext' => 'Das ist eine neue Seite.',
 'enotif_impersonal_salutation' => '{{SITENAME}}-Benutzer',
-'changed' => 'geändert',
-'created' => 'erstellt',
-'enotif_subject' => '[{{SITENAME}}] Die Seite „$PAGETITLE“ wurde von $PAGEEDITOR $CHANGEDORCREATED',
+'enotif_subject_deleted' => '{{SITENAME}}-Seite $1 wurde von {{GENDER:$2|$2}} gelöscht',
+'enotif_subject_created' => '{{SITENAME}}-Seite $1 wurde von {{GENDER:$2|$2}} erstellt',
+'enotif_subject_moved' => '{{SITENAME}}-Seite $1 wurde von {{GENDER:$2|$2}} verschoben',
+'enotif_subject_restored' => '{{SITENAME}}-Seite $1 wurde von {{GENDER:$2|$2}} wiederhergestellt',
+'enotif_subject_changed' => '{{SITENAME}}-Seite $1 wurde von {{GENDER:$2|$2}} geändert',
+'enotif_body_intro_deleted' => 'Die {{SITENAME}}-Seite $1 wurde am $PAGEEDITDATE von {{GENDER:$2|$2}} gelöscht. Siehe $3 für deren aktuelle Version.',
+'enotif_body_intro_created' => 'Die {{SITENAME}}-Seite $1 wurde am $PAGEEDITDATE von {{GENDER:$2|$2}} erstellt. Siehe $3 für deren aktuelle Version.',
+'enotif_body_intro_moved' => 'Die {{SITENAME}}-Seite $1 wurde am $PAGEEDITDATE von {{GENDER:$2|$2}} verschoben. Siehe $3 für deren aktuelle Version.',
+'enotif_body_intro_restored' => 'Die {{SITENAME}}-Seite $1 wurde am $PAGEEDITDATE von {{GENDER:$2|$2}} wiederhergestellt. Siehe $3 für deren aktuelle Version.',
+'enotif_body_intro_changed' => 'Die {{SITENAME}}-Seite $1 wurde am $PAGEEDITDATE von {{GENDER:$2|$2}} geändert. Siehe $3 für deren aktuelle Version.',
 'enotif_lastvisited' => 'Alle Änderungen auf einen Blick: $1',
 'enotif_lastdiff' => 'Siehe $1 nach dieser Änderung.',
 'enotif_anon_editor' => 'Anonymer Benutzer $1',
 'enotif_body' => 'Hallo $WATCHINGUSERNAME,
 
-die {{SITENAME}}-Seite „$PAGETITLE“ wurde von $PAGEEDITOR am $PAGEEDITDATE um $PAGEEDITTIME Uhr $CHANGEDORCREATED.
-
-Aktuelle Version: $PAGETITLE_URL
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Zusammenfassung des Bearbeiters: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -3242,6 +3243,8 @@ Das liegt wahrscheinlich an einem Link auf eine externe Seite.',
 'markedaspatrollederror' => 'Markierung als „kontrolliert“ nicht möglich.',
 'markedaspatrollederrortext' => 'Du musst eine Seitenänderung auswählen.',
 'markedaspatrollederror-noautopatrol' => 'Es ist nicht erlaubt, eigene Bearbeitungen als kontrolliert zu markieren.',
+'markedaspatrollednotify' => 'Diese Änderung an $1 wurde als kontrolliert markiert.',
+'markedaspatrollederrornotify' => 'Der Versuch, die Version als kontrolliert zu markieren, ist fehlgeschlagen.',
 
 # Patrol log
 'patrol-log-page' => 'Kontroll-Logbuch',
@@ -3305,6 +3308,7 @@ Durch das Herunterladen und Öffnen der Datei kann dein Computer beschädigt wer
 'hours' => '{{PLURAL:$1|einer Stunde|$1 Stunden}}',
 'days' => '{{PLURAL:$1|$1 Tag|$1 Tage}}',
 'ago' => 'vor $1',
+'just-now' => 'Gerade eben',
 
 # Bad image list
 'bad_image_list' => 'Format:
@@ -4151,5 +4155,5 @@ Anderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kom
 'duration-millennia' => '$1 {{PLURAL:$1|Jahrtausend|Jahrtausende}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'Diskussion',
+'svg-long-error' => 'Ungültige SVG-Datei: $1',
 );
index f90d61c..1609e69 100644 (file)
@@ -437,7 +437,7 @@ $messages = array(
 
 'linkprefix' => "'''MediaWiki niya ro.'''",
 
-'about' => 'Heqa',
+'about' => 'Heqa cı de',
 'article' => 'Wesiqe',
 'newwindow' => '(pençereyê newey de beno a)',
 'cancel' => 'Bıtexelne',
@@ -472,9 +472,10 @@ $messages = array(
 'vector-view-view' => 'Bıwane',
 'vector-view-viewsource' => 'Çımey bıvêne',
 'actions' => 'Kerdışi',
-'namespaces' => 'Cayê namey',
+'namespaces' => 'Cayê namam',
 'variants' => 'Varyanti',
 
+'navigation-heading' => 'Menuya Navigasyoni',
 'errorpagetitle' => 'Xırab',
 'returnto' => 'Peyser şo $1.',
 'tagline' => '{{SITENAME}} ra',
@@ -488,7 +489,7 @@ $messages = array(
 'updatedmarker' => 'cıkewtena mına peyêne ra dıme biyo rocane',
 'printableversion' => 'Asayışê çapkerdışi',
 'permalink' => 'Gıreyo jûqere',
-'print' => 'Çap ke',
+'print' => 'Nusten ke',
 'view' => 'Bıvin',
 'edit' => 'Bıvurnên',
 'create' => 'Vıraze',
@@ -540,7 +541,7 @@ $1',
 'pool-errorunknown' => 'Xeta nêzanıtiye',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
-'aboutsite' => 'Heqa de {{SITENAME}}',
+'aboutsite' => 'Heqa {{SITENAME}}i de',
 'aboutpage' => 'Project:Heqdê cı',
 'copyright' => 'Zerrek bınê $1 dero.',
 'copyrightpage' => '{{ns:project}}:Heqa telifi',
@@ -722,9 +723,8 @@ Xızmetkarê  kılitkerdışi wa bewni ro enay wa çımra ravyarno: "$3".',
 
 Nıka kamiyê xo eşkera mekere u siteyê {{SITENAME}} ra eşkeni devam bıkeri, ya zi <span class='plainlinks'>[$1 newe ra hesabê xo akere]</span> (wazeni pey nameyê xo, wazeni pey yewna name).
 Wexta ke verhafızayê cıgerayoxê şıma pak beno no benate de taye peli de hesabe şıma akerde aseno.",
-'welcomecreation' => '== Şıma xeyr amey, $1! ==
-
-Hesabê şıma biyo a.
+'welcomeuser' => 'Xeyr ameyê $1',
+'welcomecreation-msg' => 'Hesabê şıma abiyo.
 [[Special:Preferences|{{SITENAME}} vurnayişê tercihanê xo]], xo vir ra mekere.',
 'yourname' => 'Namey karberi',
 'yourpassword' => 'Parola',
@@ -832,7 +832,7 @@ Bıne vındere u newe ra dest pê bıkere.',
 'resetpass_forbidden' => 'parolayi nêvuryayi',
 'resetpass-no-info' => 'şıma gani hesab akere u hona bıeşke bırese cı',
 'resetpass-submit-loggedin' => 'Parola bıvurne',
-'resetpass-submit-cancel' => 'ibtal ke',
+'resetpass-submit-cancel' => 'Bıtexelne',
 'resetpass-wrong-oldpass' => 'parolayo parola maqbul niyo.
 şıma ya parolaye xo vurnayo ya zi parolayo muwaqqat waşto.',
 'resetpass-temp-password' => 'parolayo muweqet:',
@@ -899,10 +899,10 @@ Parola vêrdiye: $2',
 'hr_tip' => 'Çıxiza dimdayi (hend akar mefiye)',
 
 # Edit pages
-'summary' => 'Xulasa:',
+'summary' => "<font style=\"color:Blue\">'''Xulasa:'''</font>",
 'subject' => 'Mewzu/sernuşte:',
-'minoredit' => 'Eno vurnayışo de qıckeko',
-'watchthis' => 'Ena pele seyr ke',
+'minoredit' => "<font style=\"color:Green\">'''Eno vurnayışo de qıckeko'''</font>",
+'watchthis' => "<font style=\"color:Green\">'''Ena pele seyr ke'''</font>",
 'savearticle' => 'Pele qeyd ke',
 'preview' => 'Verqayt',
 'showpreview' => 'Verqayti bımocne',
@@ -1009,8 +1009,8 @@ Vurnayışê şıma hona qeyd nêbiyo!",
 Vurnayişê şıma qey nêxerepyayişê peli tepeya geyra a.
 Eke şıma servisê proksi yo anonim şuxulneni sebebê ey noyo.'''",
 'edit_form_incomplete' => "'''Qandê form dê vurnayışa tay wastera ma nêreşti; Vurnayışê ke şıma kerdê nêalızyayê, çım ra ravyarnê u fına bıcerbnê.'''",
-'editing' => 'Şımayê kenê <font style="color:red">$1</font> bıvurnê',
-'creating' => "Pela $1'i vıraze",
+'editing' => 'Şımayê <font style="color:red">$1</font> vurnenê',
+'creating' => 'Pela <font style="color:blue">$1</font> vırazê',
 'editingsection' => 'Per da $1 de şımaye kenê ke leti bıvurnê',
 'editingcomment' => '$1 vuryeno (qısmo newe)',
 'editconflict' => 'Vurnayişê ke yewbini nêtepışeni: $1',
@@ -1276,7 +1276,7 @@ no vurnayişo ke şıma keni kontrol bıkere yew pelo kehen nêbo.',
 # Merge log
 'mergelog' => 'Logê yew kerdişî',
 'pagemerge-logentry' => '[[$1]] u [[$2]] yew kerd (revizyonî heta $3)',
-'revertmerge' => 'Ro mevılêşne/pê meşane',
+'revertmerge' => 'Abırnê',
 'mergelogpagetext' => 'Cêr de jû liste esta ke mocnena ra, raya tewr peyêne kamci pela tarixi be a bine ra şanawa pê.',
 
 # Diffs
@@ -1341,7 +1341,7 @@ Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'searcheverything-enable' => 'cayê nameyê hemi de bigêre',
 'searchrelated' => 'eleqeyın',
 'searchall' => 'pêro',
-'showingresults' => "Heta {{PLURAL:$1|'''1''' netice|'''$1''' neticeyan}} ke pê #'''$2''' başli beno ey bimocne .",
+'showingresults' => "#$2 netican ra {{PLURAL:$1|'''1''' netica|'''$1''' neticey}} cêr deyê.",
 'showingresultsnum' => "'''$2''' netican ra nata  {{PLURAL:$3|'''1''' netice|'''$3''' neticeyê}} cêrde liste biyê.",
 'showingresultsheader' => "{{PLURAL:$5|Neticeyê '''$1''' of '''$3'''|Neticeyanê '''$1 - $2''' hetê '''$3'''}} qe '''$4'''",
 'nonefound' => "'''Teme''': Teyna tay namecayan cıgeyro beno.
@@ -1383,7 +1383,7 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
 'prefs-user-pages' => 'Pela Karberi',
 'prefs-personal' => 'Pela karberi',
 'prefs-rc' => 'Vurnayışê peyêni',
-'prefs-watchlist' => 'Lista seyr-kerdışi',
+'prefs-watchlist' => 'Lista seyrkerdışi',
 'prefs-watchlist-days' => 'Rocê ke lista seyrkerdışi de bêrê ramocnaene',
 'prefs-watchlist-days-max' => 'tewr vêşi $1 {{PLURAL:$1|roci|roci}}',
 'prefs-watchlist-edits' => 'tewr zêde amarê vurnayışi ke lista seyrkerdışia herakerdiye de bıasê:',
@@ -1433,7 +1433,7 @@ Etıya şıma rê yew kılito raştameo ke şıma şenê bıgurenê/bıxebetnê:
 'timezoneregion-pacific' => 'Okyanuso Pasifik',
 'allowemail' => 'Karberê bini wa bışê mı rê e-posta bırışê.',
 'prefs-searchoptions' => 'Cı geyre',
-'prefs-namespaces' => 'Caê namey',
+'prefs-namespaces' => 'Cayê namam',
 'defaultns' => 'Eke heni, enê cayanê namey de cı geyre (sae ke):',
 'default' => 'qısur',
 'prefs-files' => 'Dosyey',
@@ -1847,6 +1847,7 @@ Eke problem dewam kerd [[Special:ListUsers/sysop|serkari]] de irtibat kewe.',
 'backend-fail-notsame' => 'Zey $1 ju dosya xora  esta.',
 'backend-fail-invalidpath' => '$1 rayê da depo kerdışa raştay niya.',
 'backend-fail-delete' => '$1 nê besterneyê',
+'backend-fail-describe' => 'Qande dosya da "$1" metadata nêvurêna.',
 'backend-fail-alreadyexists' => "Dosyay $1'ya nêwanêna",
 'backend-fail-store' => '$1 ra $2 berdışo nê wanêno',
 'backend-fail-copy' => '$1 ra $2 kopya kerdışena dosyayo nêbeno',
@@ -2315,7 +2316,7 @@ qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed
 
 # Watchlist
 'watchlist' => 'Lista mına seyrkerdışi',
-'mywatchlist' => 'Lista seyr kerdışi',
+'mywatchlist' => 'Lista seyrkerdışi',
 'watchlistfor2' => 'Qandê $1 ($2)',
 'nowatchlist' => 'listeya temaşa kerdıişê şıma de yew madde zi çina.',
 'watchlistanontext' => 'qey vurnayişê maddeya listeya temaşakerdişi $1.',
@@ -2351,15 +2352,21 @@ Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni. Hem zi çı dem
 
 'enotif_mailer' => 'postaya xeberdayişi {{SITENAME}}',
 'enotif_reset' => 'Pela pêro ziyaret kerde deye mor ke',
-'enotif_newpagetext' => 'Ena yew pela newî ya.',
 'enotif_impersonal_salutation' => '{{SITENAME}} karber',
-'changed' => 'vurneya',
-'created' => 'viraziya',
-'enotif_subject' => 'pelê {{SITENAME}}i $PAGETITLE, hetê/perrê $PAGEEDITOR $CHANGEDORCREATED',
+'enotif_subject_deleted' => '{{SITENAME}} de pera $1 {{gender:$2|$2}} esterıt.',
+'enotif_subject_created' => '{{SITENAME}} de pera $1 {{gender:$2|$2}} vıraşt',
+'enotif_subject_moved' => '{{SITENAME}} de pera $1 {{gender:$2|$2}} berde',
+'enotif_subject_restored' => '{{SITENAME}} de pera $1 {{gender:$2|$2}} timar ke',
+'enotif_subject_changed' => '{{SITENAME}} de pera $1 {{gender:$2|$2}} vurne',
+'enotif_body_intro_deleted' => '{{SITENAME}} de pera $1 $PAGEEDITDATE de {{gender:$2|$2}}i esterıt, rewizyonê $3 bıvin.',
+'enotif_body_intro_created' => '{{SITENAME}} de pera $1 $PAGEEDITDATE de {{gender:$2|$2}}i vıraşt, rewizyonê $3 bıvin.',
+'enotif_body_intro_moved' => '{{SITENAME}} de pera $1 $PAGEEDITDATE de {{gender:$2|$2}}i berd, rewizyonê $3 bıvin.',
+'enotif_body_intro_restored' => '{{SITENAME}} de pera $1 $PAGEEDITDATE de {{gender:$2|$2}}i timar ke, rewizyonê $3 bıvin.',
+'enotif_body_intro_changed' => '{{SITENAME}} de pera $1 $PAGEEDITDATE de {{gender:$2|$2}}i vurne, rewizyonê $3 bıvin.',
 'enotif_lastvisited' => 'ziyareta şıma ye peyini ra nata heme vuryayiş ê ke biyê bıewnê $1i re..',
 'enotif_lastdiff' => 'qey vinayişê ney vurnayişi bıewnê pelê $1i',
 'enotif_anon_editor' => 'karbero anonim $1',
-'enotif_body' => 'Embazê $WATCHINGUSERNAME,
+'enotif_body' => 'Erciyayê $WATCHINGUSERNAME,
 
 {{SITENAME}} keyepel de no $PAGETITLE pelo sernameyın re $PAGEEDITDATE no tarix de $PAGEEDITOR no karberi $CHANGEDORCREATED. şıma eşkeni bıresi halê no peli re $PAGETITLE_URL na adresi ra.
 
@@ -2376,13 +2383,16 @@ no pel o ke behs beno heta ziyaret kerdışê yewna heli, mesajê vuriyayişi n
            {{SITENAME}} sistemê hişyariyê keyepeli.
 
 --
-qey vurnayişê eyari:
+Qey vurnayişê eyari:
 {{canonicalurl:{{#Special:Watchlist/edit}}}}
 
-qey wedarayişê ena pele liste xo ra seyr kerdişi, şo
+Qey vurnayişê eyaran de lista seyri:
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+Qey wedarayişê ena pele liste xo ra seyr kerdişi, şo
 $UNWATCHURL
 
-qey hemkari u pêşniyazi:
+Qey hemkari u pêşniyazi:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
 
 # Delete
@@ -2573,7 +2583,7 @@ $1',
 # Contributions
 'contributions' => 'İştiraqê karberi',
 'contributions-title' => 'Dekerdenê karber de $1',
-'mycontris' => 'Cıkerdışi',
+'mycontris' => 'İştıraqi',
 'contribsub2' => 'Qandê $1 ($2)',
 'nocontribs' => 'Ena kriteriya de vurnayîş çini yo.',
 'uctop' => '(top)',
@@ -2884,7 +2894,7 @@ ma vaci: qey pelê "[[{{MediaWiki:Mainpage}}]]i " [[{{#Special:Export}}/{{MediaW
 # Namespace 8 related
 'allmessages' => 'Mesacê sistemi',
 'allmessagesname' => 'Name',
-'allmessagesdefault' => 'Hesıbyaye metnê mesaci',
+'allmessagesdefault' => 'Metnê mesacê hesabiyayey',
 'allmessagescurrent' => 'Nuşteyê mesacê rocaney',
 'allmessagestext' => 'na liste, listeya mesajê cayê nameyê wikimedya yo.
 eke şıma qayili paşt bıdi mahalli kerdışê wikimedyayi, kerem kerê pelê [//www.mediawiki.org/wiki/Localisation mahalli kerdışê wikimedyayi] u [//translatewiki.net translatewiki.net] ziyaret bıkerê.',
@@ -2963,15 +2973,15 @@ dosyaya emaneti vindbiyo',
 'import-rootpage-nosubpage' => 'Qan de bınnaman reçe de "$1" re mısade nedano.',
 
 # Import log
-'importlogpage' => 'Logê împortî',
+'importlogpage' => 'Defterê seyırio idxal',
 'importlogpagetext' => 'wiki yo ke nişane biyo tera kırıştışê zerredayişi nêbeno.',
 'import-logentry-upload' => 'dosyayê bar kerdişî ra [[$1]] împort biyo',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|revizyon|revizyonî}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|çımraviyarnayış|çımraviyarnayışi}}',
 'import-logentry-interwiki' => '$1 transwiki biyo',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|revizyon|revizyonî}} $2 ra',
 
 # JavaScriptTest
-'javascripttest' => 'Cerbnayışê JavaScripti',
+'javascripttest' => 'Cerebnayışê JavaScripti',
 'javascripttest-title' => 'Testê $1 gurweyênê',
 'javascripttest-pagetext-noframework' => 'Na pela testanê JavaScripta gurweynayışi re abıryaya.',
 'javascripttest-pagetext-unknownframework' => 'Çerçeweyê "$1" cerbnayışi xırabo.',
@@ -2987,7 +2997,7 @@ dosyaya emaneti vindbiyo',
 'tooltip-pt-anontalk' => 'vurnayiş ê ke no Ipadresi ra biyo muneqeşa bıker',
 'tooltip-pt-preferences' => 'Tercihê to',
 'tooltip-pt-watchlist' => 'Lista pelanê ke to gırewtê seyrkerdış',
-'tooltip-pt-mycontris' => 'Listey iştıraqan',
+'tooltip-pt-mycontris' => 'Yew lista iştıraqanê şıma',
 'tooltip-pt-login' => 'Mayê şıma ronıştış akerdışi rê dawet keme; labelê ronıştış mecburi niyo',
 'tooltip-pt-anonlogin' => 'Seba cıkewtışi şıma rê dewato; labelê, no zeruri niyo',
 'tooltip-pt-logout' => 'Bıveciye',
@@ -2995,28 +3005,27 @@ dosyaya emaneti vindbiyo',
 'tooltip-ca-edit' => 'Tı şenay na pele bıvurnê.
 Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
 'tooltip-ca-addsection' => 'Yew qısımo newe ake',
-'tooltip-ca-viewsource' => 'Ena pele kılit biyo.
-
-Çımey ena pele bıvin',
+'tooltip-ca-viewsource' => 'Ena pele kılit biya.
+Şıma şenê çımeyê aye bıvênê',
 'tooltip-ca-history' => 'Versiyonê verênê ena pele',
 'tooltip-ca-protect' => 'Ena pele kılit ke',
 'tooltip-ca-unprotect' => 'Starkerdışe ena peler bıvurne',
 'tooltip-ca-delete' => 'Ena perer besternê',
 'tooltip-ca-undelete' => 'peli biyarê halê ver hewnakerdışi',
 'tooltip-ca-move' => 'Ena pele bere',
-'tooltip-ca-watch' => 'Ena pela lista mına seyr-kerdışi ri dek',
+'tooltip-ca-watch' => 'Ena pele lista xoya seyrkerdışi ke',
 'tooltip-ca-unwatch' => 'Ena pele listeya seyir-kerdışi xo ra bıvec',
 'tooltip-search' => 'Zerreyê {{SITENAME}} de cı geyre',
 'tooltip-search-go' => 'Ebe nê namey tami şo yew pela ke esta',
 'tooltip-search-fulltext' => 'Nê  metni peran dı cı geyre',
-'tooltip-p-logo' => 'Pera serên',
+'tooltip-p-logo' => 'Pela seri bıvênên',
 'tooltip-n-mainpage' => 'Şo pela seri',
 'tooltip-n-mainpage-description' => 'Şo pela seri',
 'tooltip-n-portal' => 'Heqa projey de, kes çı şeno bıkero, çıçiyo koti deyo',
 'tooltip-n-currentevents' => 'Vurnayışanê peyênan de melumatê pey bıvêne',
 'tooltip-n-recentchanges' => 'Wiki de lista vurnayışanê peyênan',
 'tooltip-n-randompage' => 'Şırê pera ke raştameyê',
-'tooltip-n-help' => 'Qande desteg grotışi',
+'tooltip-n-help' => 'Cayê doskerdışi',
 'tooltip-t-whatlinkshere' => 'Lista pelanê wikiya pêroina ke tiya gırê bena',
 'tooltip-t-recentchangeslinked' => 'Vurnayışê peyênê pelanê ke ena pela ra gırê biyê',
 'tooltip-feed-rss' => 'RSS feed qe ena pele',
@@ -3024,14 +3033,14 @@ Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
 'tooltip-t-contributions' => 'İştirakanê ena karber bevin',
 'tooltip-t-emailuser' => 'Ena karber ri yew email bışırav',
 'tooltip-t-upload' => 'Dosya bar ke',
-'tooltip-t-specialpages' => 'Listeya pelan dê xasa pêron',
+'tooltip-t-specialpages' => 'Yew lista pelanê xasanê pêroyinan',
 'tooltip-t-print' => 'Nımuney çapkerdışiê ena pele',
 'tooltip-t-permalink' => 'Gırêyo daimi be ena versiyonê pele',
 'tooltip-ca-nstab-main' => 'Pela zerreki bımocne',
 'tooltip-ca-nstab-user' => 'Pela karberi bıvin',
 'tooltip-ca-nstab-media' => 'Pele Mediya bivinên',
 'tooltip-ca-nstab-special' => 'Na yew pelê da xususiya, şıma nêşenê nae bıvurnê',
-'tooltip-ca-nstab-project' => 'Pera proci bıvin',
+'tooltip-ca-nstab-project' => 'Pela procey bıvêne',
 'tooltip-ca-nstab-image' => 'Pelay dosya bımocne',
 'tooltip-ca-nstab-mediawiki' => 'Mesacê sistemi bivinên',
 'tooltip-ca-nstab-template' => 'Şabloni bıvinê',
@@ -3046,7 +3055,7 @@ Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
 'tooltip-watchlistedit-normal-submit' => 'Sernuşteya hewad',
 'tooltip-watchlistedit-raw-submit' => 'Listeyê seyri newen ke',
 'tooltip-recreate' => 'pel hewn a bışiyo zi tepiya biya',
-'tooltip-upload' => 'Bar bike',
+'tooltip-upload' => 'Dest be barkerdışi ke',
 'tooltip-rollback' => '"Peyser bia" be yew tık pela iştıraq(an)ê peyên|i(an) peyser ano.',
 'tooltip-undo' => '"Undo" ena vurnayışê newi iptal kena u vurnayışê verni a kena.
 Tı eşkeno yew sebeb bınus.',
@@ -3600,7 +3609,7 @@ mw.loader.using( 'jquery.cookie', function() {
 'pageinfo-display-title' => 'Sernuştey bımocne',
 'pageinfo-default-sort' => 'Hesıbyaye mırfeyo kılm',
 'pageinfo-length' => 'Derdeya pela (bayti heta)',
-'pageinfo-article-id' => 'Nımrey pela',
+'pageinfo-article-id' => 'Kamiya pele',
 'pageinfo-language' => 'Zıwanê zerreyê pele',
 'pageinfo-robot-policy' => 'Weziyetê motor de cıgeyrayışi',
 'pageinfo-robot-index' => 'İIndeksbiyayen',
@@ -3613,7 +3622,7 @@ mw.loader.using( 'jquery.cookie', function() {
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|hetenayış|hetenayışi}}; $3 {{PLURAL:$3|raykerdışt|raykerdışi}})',
 'pageinfo-firstuser' => 'Pela vıraşter',
 'pageinfo-firsttime' => 'Demê pela vıraştışi',
-'pageinfo-lastuser' => 'Vurnayeno peyên',
+'pageinfo-lastuser' => 'Vurnayo peyên',
 'pageinfo-lasttime' => 'Deme u vurnayışo peyên',
 'pageinfo-edits' => 'Amarina vurnayışan pêro',
 'pageinfo-authors' => 'Amarina nuştekaran pêro',
@@ -3643,7 +3652,7 @@ mw.loader.using( 'jquery.cookie', function() {
 'skinname-vector' => 'Vektor',
 
 # Patrolling
-'markaspatrolleddiff' => 'Nişan bike ke devriye biyo',
+'markaspatrolleddiff' => 'Nişan bıke ke dewriya biyo',
 'markaspatrolledtext' => 'Ena pele nişan bike ke devriye biyo',
 'markedaspatrolled' => 'Nişan biyo ke verni de devriye biyo',
 'markedaspatrolledtext' => 'Versiyone weçinaye [[:$1]] nişan biyo ke devriye biyo',
@@ -3652,6 +3661,8 @@ mw.loader.using( 'jquery.cookie', function() {
 'markedaspatrollederror' => 'Nişan nibeno ke devriye biyo',
 'markedaspatrollederrortext' => 'Ti gani revizyon işaret bike ke Nişanê devriye biyo',
 'markedaspatrollederror-noautopatrol' => 'Ti nieşkeno ke vurnayişê xo nişan bike ke devriye biyê.',
+'markedaspatrollednotify' => 'Na vurnayışa dewriye deye $1 nışan biyo.',
+'markedaspatrollederrornotify' => 'Nışan kerdışê dewriyey nêbı',
 
 # Patrol log
 'patrol-log-page' => 'Logê devriye',
@@ -3721,6 +3732,7 @@ Gurênayışê nae de, beno ke sistemê şıma zerar bıvêno.",
 'hours' => 'Verdê {{PLURAL:$1|$1 seata|$1 seata}}',
 'days' => 'Verdê {{PLURAL:$1|$1 rocan|$1 rocan}}',
 'ago' => 'Verdê $1',
+'just-now' => 'Hema newke',
 
 # Bad image list
 'bad_image_list' => 'Şeklo umumi wınayo:
@@ -4427,7 +4439,7 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'watchlistedit-raw-submit' => 'Listeyê seyri newen ke',
 'watchlistedit-raw-done' => 'Listeyê tuyê seyrkerdişi rocaniye biyo',
 'watchlistedit-raw-added' => '{{PLURAL:$1|1 seroğ|$1 seroğî}} de kerd:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 seroğ|$1 seroğî}} de wedarno:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 seroğ|$1 seroği}} besteriyaye:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'vurnayışanê eleqadari bıvin',
@@ -4522,7 +4534,7 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'version-license' => 'Lisans',
 'version-poweredby-credits' => "Ena wiki, dezginda '''[//www.mediawiki.org/ MediaWiki]''' ya piya vıraziyaya, heqê telifi © 2001-$1 $2.",
 'version-poweredby-others' => 'Zewmi',
-'version-credits-summary' => 'Ma qayılime ke [[Special:Version|MediaWiki]] rê ke kami desteg dayo wa mayê vanime inan bışınasne.',
+'version-credits-summary' => 'Ma qayılime ke [[Special:Version|MediaWiki]] rê ke kami destek dayo wa mayê vanime inan bışınasne.',
 'version-license-info' => "MediaWiki xoseri jew nuştereno; MediaWiki'yer, weqfê xoseri nuşteren GNU lisansiya merdumi şene ke vıla kerê, bıvurnê u timar kerê.
 
 Nuşterenê MediaWiki merdumi cı ra nahfat bivinê deye êyê mısade danê; feqet ke nêşeno BIROŞO yana XOSERİ VILA KERO qerantiya ney çına. bewni rê lisansta GNU'y.
@@ -4665,9 +4677,9 @@ Ena sita dı newke xırabiya teknik esta.',
 'logentry-move-move_redir-noredirect' => '$1 hetenayışê qeydê pela da  $3 ahulnê $4 sero hetenayış vıraşt',
 'logentry-patrol-patrol' => '$1 revizyonê pela da $4 $3 ke kontrol',
 'logentry-patrol-patrol-auto' => "$1 pelay $3'i rewizyon dê $4 ya kontrol ke",
-'logentry-newusers-newusers' => '$1 deye namey karberi vıraziya',
-'logentry-newusers-create' => '$1 deye namey karberi vıraziya',
-'logentry-newusers-create2' => "$1'i $3 rê hesab vıraşt",
+'logentry-newusers-newusers' => 'Hesabê karberi $1 vıraziya',
+'logentry-newusers-create' => 'Hesabê karberi $1 vıraziya',
+'logentry-newusers-create2' => 'Hesabê karberi $1 terefê $3 ra vıraziya',
 'logentry-newusers-autocreate' => 'Hesabê $1 Otomatikmen vıraziya',
 'newuserlog-byemail' => 'pê e-mail ra paralo şiravt',
 
@@ -4743,5 +4755,5 @@ Ena sita dı newke xırabiya teknik esta.',
 'duration-millennia' => '$1 {{PLURAL:$1|milenyum|milenyumi}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'behse',
+'svg-long-error' => "Nêmeqbul dosyaya SVG'i: $1",
 );
index 35f92f7..f40e386 100644 (file)
@@ -324,6 +324,7 @@ $messages = array(
 'namespaces' => 'Mjenjowe rumy',
 'variants' => 'Warianty',
 
+'navigation-heading' => 'Nawigaciski meni',
 'errorpagetitle' => 'Zmólka',
 'returnto' => 'Slědk k bokoju $1.',
 'tagline' => 'Z {{GRAMMAR:genitiw|{{SITENAME}}}}',
@@ -562,9 +563,8 @@ Administrator, kenž jo jen zastajił, jo toś tu pśicynu pódał: "$3".',
 
 Móžoš {{SITENAME}} anomymnje dalej wužywaś abo móžoš <span class='plainlinks'>[$1 se znowego pśizjawiś]</span> ako samski abo hynakšy wužywaŕ.
 Źiwaj na to, až někotare boki se dalej tak zwobraznjuju ako by hyšći pśizjawjeny był, až njewuproznijoš cache swójego wobglědowaka.",
-'welcomecreation' => '== Witaj, $1! ==
-
-Twójo konto jo se załožyło. Njezabydni změniś swóje [[Special:Preferences|nastajenja {{SITENAME}}]].',
+'welcomeuser' => 'Witaj $1',
+'welcomecreation-msg' => 'Twójo konto jo se załožyło. Njezabydni změniś swóje [[Special:Preferences|nastajenja za {{SITENAME}}]].',
 'yourname' => 'mě wužywarja',
 'yourpassword' => 'šćitne gronidło:',
 'yourpasswordagain' => 'Šćitne gronidło hyšći raz zapódaś:',
@@ -1659,6 +1659,7 @@ $1',
 'backend-fail-notsame' => 'Njeidentiska dataja $1 južo eksistěrujo.',
 'backend-fail-invalidpath' => '$1 njejo płaśiwy puśik za składowanje.',
 'backend-fail-delete' => 'Dataja $1 njedajo se wulašowaś.',
+'backend-fail-describe' => 'Metadaty za dataju "$1" njedaju se změniś.',
 'backend-fail-alreadyexists' => 'Dataja $1 južo eksistěrujo.',
 'backend-fail-store' => 'Dataja $1 njedajo se pód $2 składowaś.',
 'backend-fail-copy' => 'Dataja $1 njedajo se pód $2 kopěrowaś.',
@@ -2155,19 +2156,23 @@ Pózdźejšne změny na toś tom boku a w pśisłušecej diskusiji se tam nalicu
 
 'enotif_mailer' => '{{SITENAME}} e-mailowe powěsći',
 'enotif_reset' => 'Wšykne boki ako woglědane markěrowaś',
-'enotif_newpagetext' => 'To jo nowy bok.',
 'enotif_impersonal_salutation' => '{{SITENAME}}-wužywaŕ',
-'changed' => 'změnił',
-'created' => 'napórał',
-'enotif_subject' => '[{{SITENAME}}] $PAGEEDITOR jo bok "$PAGETITLE" $CHANGEDORCREATED',
+'enotif_subject_deleted' => 'Bok {{GRAMMAR:genitiw|{{SITENAME}}}} $1 jo se wót {{GENDER:$2|$2}} wulašował',
+'enotif_subject_created' => 'Bok {{GRAMMAR:genitiw|{{SITENAME}}}} $1 jo se wót {{GENDER:$2|$2}} napórał',
+'enotif_subject_moved' => 'Bok {{GRAMMAR:genitiw|{{SITENAME}}}} $1 jo se wót {{GENDER:$2|$2}} pśesunuł',
+'enotif_subject_restored' => 'Bok {{GRAMMAR:genitiw|{{SITENAME}}}} $1 jo se wót {{GENDER:$2|$2}} wótnowił',
+'enotif_subject_changed' => 'Bok {{GRAMMAR:genitiw|{{SITENAME}}}} $1 jo se wót {{GENDER:$2|$2}} změnił',
+'enotif_body_intro_deleted' => 'Bok{{GRAMMAR:genitiw|{{SITENAME}}}} $1 jo se na $PAGEEDITDATE wót {{GENDER:$1|$2}} wulašował, glědaj $3 za aktualnu wersiju.',
+'enotif_body_intro_created' => 'Bok {{GRAMMAR:genitiw|{{SITENAME}}}} $1 jo se na $PAGEEDITDATE wót {{GENDER:$2|$2}} napórał, glědaj $3 za aktualnu wersiju.',
+'enotif_body_intro_moved' => 'Bok{{GRAMMAR:genitiw|{{SITENAME}}}} $1 jo se na $PAGEEDITDATE wót {{GENDER:$1|$2}} pśesunuł, glědaj $3 za aktualnu wersiju.',
+'enotif_body_intro_restored' => 'Bok {{GRAMMAR:genitiw|{{SITENAME}}}} $1 jo se na $PAGEEDITDATE wót {{GENDER:$2|$2}} wótnowił, glědaj $3 za aktualnu wersiju.',
+'enotif_body_intro_changed' => 'Bok {{GRAMMAR:genitiw|{{SITENAME}}}} $1 jo se na $PAGEEDITDATE wót {{GENDER:$2|$2}} změnił, glědaj $3 za aktualnu wersiju.',
 'enotif_lastvisited' => 'Wšykne změny na jadno póglědnjenje: $1',
 'enotif_lastdiff' => 'Za toś tu změnu glědaj w $1.',
 'enotif_anon_editor' => 'anonymny wužywaŕ $1',
 'enotif_body' => 'Luby $WATCHINGUSERNAME,
 
-$PAGEEDITOR jo bok $PAGETITLE na {{GRAMMAR:lokatiw|{{SITENAME}}}} $PAGEEDITDATE $CHANGEDORCREATED, glědaj $PAGETITLE_URL za aktualnu wersiju.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Zespominanje wobźěłarja: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2175,10 +2180,9 @@ Kontakt z wobźěłarjom:
 E-mail: $PAGEEDITOR_EMAIL
 Wiki: $PAGEEDITOR_WIKI
 
-Njebudu žedne dalšne powěźeńki w paźe dalšnych změnow, snaźkuli woglědujoš se toś ten bok.
-Móźoś teke chórgojcki powěźeńkow za wšykne twóje wobglědowane boki slědk stajiś.
+Njebudu žedne dalšne powěźeńki w paźe dalšnych změnow, snaźkuli woglědujoš se toś ten bok. Móźoś teke chórgojcki powěźeńkow za wšykne twóje wobglědowane boki slědk stajiś.
 
-             Twój pśijaśelny powěsćowy system {{SITENAME}}
+Twój pśijaśelny powěsćowy system {{SITENAME}}
 --
 Aby swoje nastajenja za e-mailowe zdźělenja změnił, woglědaj
 {{canonicalurl:{{#special:Preferences}}}}
@@ -2921,6 +2925,8 @@ W zespominanju dajo se pśicyna pódaś.',
 'markedaspatrollederror' => 'Markěrowanje ako "kontrolěrowane" njejo móžne.',
 'markedaspatrollederrortext' => 'Musyš wersiju wuzwóliś.',
 'markedaspatrollederror-noautopatrol' => 'Njesmějoš swóje změny ako kontrolěrowane markěrowaś.',
+'markedaspatrollednotify' => 'Toś ta změna do $1 jo se ako doglědowana markěrowała.',
+'markedaspatrollederrornotify' => 'Markěrowanje ako doglědowane jo se njeraźiło.',
 
 # Patrol log
 'patrol-log-page' => 'Protokol kontrolow',
@@ -2983,6 +2989,7 @@ $1',
 'hours' => '{{PLURAL:$1|$1 góźinu|$1 góźinoma|$1 góźinami|$1 góźinami}}',
 'days' => '{{PLURAL:$1|$1 dnjom|$1 dnjoma|$1 dnjami|$1 dnjami}}',
 'ago' => 'pśed $1',
+'just-now' => 'rowno',
 
 # Bad image list
 'bad_image_list' => 'Format jo slědujucy:
@@ -3729,8 +3736,8 @@ Wobraze se w połnym wótgranicowanju pokazuju, druge datajowe typy se ze zwěza
 'logentry-move-move_redir-noredirect' => '$1 jo pśesunuł bok $3 do $4 a jo pśepisał dalejpósrědnjenje, mimo až jo napórał dalejpósrědnjenje',
 'logentry-patrol-patrol' => '$1 jo markěrował wersiju $4 boka $3 ako doglědowanu',
 'logentry-patrol-patrol-auto' => '$1 jo awtomatiski markěrował wersiju $4 boka $3 ako doglědowanu',
-'logentry-newusers-newusers' => '$1 jo załožył wužywarske konto',
-'logentry-newusers-create' => '$1 jo załožył wužywarske konto',
+'logentry-newusers-newusers' => 'Wužywarske konto $1 jo se załožyło',
+'logentry-newusers-create' => 'Wužywarske konto $1 jo se załožyło',
 'logentry-newusers-create2' => '$1 jo załožył wužywarske konto $3',
 'logentry-newusers-autocreate' => 'Konto $1 jo se awtomatiski załožyło',
 'newuserlog-byemail' => 'Pótajne słowo bu pśez e-mail pósłane.',
@@ -3808,5 +3815,5 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'duration-millennia' => '$1 {{PLURAL:$1|lěttysac|lěttysaca|lěttysace|lěttysacow}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'diskusija',
+'svg-long-error' => 'Njepłaśiwa SVG-dataja: $1',
 );
index 3525193..161fadb 100644 (file)
@@ -26,6 +26,7 @@
  * @author Kaganer
  * @author Kiolalis
  * @author Kiriakos
+ * @author Kongr43gpen
  * @author Lou
  * @author MF-Warburg
  * @author Malafaya
@@ -399,7 +400,7 @@ $messages = array(
 
 'underline-always' => 'Πάντα',
 'underline-never' => 'Ποτέ',
-'underline-default' => 'ΠÏ\81οεÏ\80ιλογή Ï\84οÏ\85 browser',
+'underline-default' => 'ΠÏ\81οεÏ\80ιλεγμένο Ï\80Ï\81Ï\8cγÏ\81αμμα Ï\80εÏ\81ιήγηÏ\83ηÏ\82',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Τύπος γραμματοσειράς της περιοχής επεξεργασίας:',
@@ -484,8 +485,8 @@ $messages = array(
 'newwindow' => '(ανοίγει σε ξεχωριστό παράθυρο)',
 'cancel' => 'Ακύρωση',
 'moredotdotdot' => 'Περισσότερα...',
-'mypage' => 'Î\97 Ï\83ελίδα Î¼Î¿Ï\85',
-'mytalk' => 'Î\9fι Ï\83Ï\85ζηÏ\84ήÏ\83ειÏ\82 Î¼Î¿Ï\85',
+'mypage' => 'Σελίδα',
+'mytalk' => 'ΣÏ\85ζήÏ\84ηÏ\83η',
 'anontalk' => 'Οι συζητήσεις αυτής της διεύθυνσης IP',
 'navigation' => 'Πλοήγηση',
 'and' => '&#32;και',
@@ -507,7 +508,7 @@ $messages = array(
 'vector-action-protect' => 'Προστασία',
 'vector-action-undelete' => 'Επαναφορά',
 'vector-action-unprotect' => 'Αλλάξτε την προστασία',
-'vector-simplesearch-preference' => 'Î\95νεÏ\81γοÏ\80οίηÏ\83η ÎµÎ½Î¹Ï\83Ï\87Ï\85μένÏ\89ν Ï\80Ï\81οÏ\84άÏ\83εÏ\89ν Î±Î½Î±Î¶Î®Ï\84ηÏ\83ηÏ\82',
+'vector-simplesearch-preference' => 'Î\95νεÏ\81γοÏ\80οίηÏ\83η Î±Ï\80λοÏ\80οιημένηÏ\82 Î¼Ï\80άÏ\81αÏ\82 Î±Î½Î±Î¶Î®Ï\84ηÏ\83ηÏ\82 (μÏ\8cνον Vector skin)',
 'vector-view-create' => 'Δημιουργία',
 'vector-view-edit' => 'Επεξεργασία',
 'vector-view-history' => 'Προβολή ιστορικού',
@@ -517,6 +518,7 @@ $messages = array(
 'namespaces' => 'Περιοχές ονομάτων',
 'variants' => 'Παραλλαγές',
 
+'navigation-heading' => 'Μενού πλοήγησης',
 'errorpagetitle' => 'Σφάλμα',
 'returnto' => 'Επιστροφή στη σελίδα $1.',
 'tagline' => 'Από {{SITENAME}}',
@@ -668,12 +670,12 @@ $1',
 # General errors
 'error' => 'Σφάλμα',
 'databaseerror' => 'Σφάλμα στη βάση δεδομένων',
-'dberrortext' => 'ΣημειÏ\8eθηκε Ï\83Ï\85νÏ\84ακÏ\84ικÏ\8c Ï\83Ï\86άλμα Ï\83ε Î±Î¯τημα προς τη βάση δεδομένων.
+'dberrortext' => 'ΣημειÏ\8eθηκε Ï\83Ï\85νÏ\84ακÏ\84ικÏ\8c Ï\83Ï\86άλμα Ï\83ε ÎµÏ\81Ï\8eτημα προς τη βάση δεδομένων.
 Πιθανόν να πρόκειται για ένδειξη σφάλματος στο λογισμικό.
 Το τελευταίο αίτημα προς τη βάση δεδομένων που επιχειρήθηκε ήταν:
-<blockquote><tt>$1</tt></blockquote>
-μέσα από τη λειτουργία "<tt>$2</tt>".
-Η βάση δεδομένων επέστρεψε σφάλμα "<tt>$3: $4</tt>".',
+<blockquote><code>$1</code></blockquote>
+μέσα από τη λειτουργία "<code>$2</code>".
+Η βάση δεδομένων επέστρεψε σφάλμα "<samp>$3: $4</samp>".',
 'dberrortextcl' => 'Σημειώθηκε συντακτικό σφάλμα σε αίτημα προς τη βάση δεδομένων.
 Το τελευταίο αίτημα που επιχειρήθηκε ήταν:
 "$1"
@@ -723,8 +725,10 @@ $1',
 'protectedpagetext' => 'Αυτή η σελίδα έχει κλειδωθεί για αποτροπή επεξεργασίας της.',
 'viewsourcetext' => 'Μπορείτε να δείτε και να αντιγράψετε τον κώδικα αυτής της σελίδας:',
 'viewyourtext' => "Μπορείτε να προβάλετε και να αντιγράψετε τον κώδικα των '''επεξεργασιών σας''' σε αυτήν τη σελίδα:",
-'protectedinterface' => 'Αυτή η σελίδα παρέχει κείμενο διεπαφής για το λογισμικό, και έχει κλειδωθεί για πρόληψη τυχόν βανδαλισμού.',
-'editinginterface' => "'''Προσοχή:''' Επεξεργάζεστε μια σελίδα η οποία χρησιμοποιείται για να παρέχει κείμενο διεπαφής για το λογισμικό. Αλλαγές σε αυτή τη σελίδα θα επηρεάσουν την εμφάνιση της διεπαφής χρήστη για τους άλλους χρήστες. Εάν θέλετε να διορθώσετε τη μετάφραση, μπορείτε να χρησιμοποιήσετε το [//translatewiki.net/wiki/Main_Page?setlang=el translatewiki.net], που ασχολείται με τις μεταφράσεις των μηνυμάτων MediaWiki.",
+'protectedinterface' => 'Αυτή η σελίδα παρέχει κείμενο διεπαφής για το λογισμικό σε αυτό το wiki, και έχει κλειδωθεί για αποτροπή τυχόν βανδαλισμού.
+
+Για να προσθέσετε ή να αλλάξετε τις μεταφράσεις για όλα τα wikis, παρακαλούμε χρησιμοποιήστε  [//translatewiki.net/ translatewiki.net], το εγχείρημα τοπικοποίησης του  MediaWiki.',
+'editinginterface' => "'''Προσοχή:''' Επεξεργάζεστε μια σελίδα η οποία χρησιμοποιείται για να παρέχει κείμενο διεπαφής για το λογισμικό. Αλλαγές σε αυτή τη σελίδα θα επηρεάσουν την εμφάνιση της διεπαφής χρήστη για τους άλλους χρήστες. Εάν θέλετε να διορθώσετε τη μετάφραση, μπορείτε να χρησιμοποιήσετε το [//translatewiki.net/ translatewiki.net], το εγχείρημα για με τις μεταφράσεις των μηνυμάτων MediaWiki.",
 'sqlhidden' => '(το αίτημα SQL δεν εμφανίζεται)',
 'cascadeprotected' => 'Αυτή η σελίδα έχει προστατευθεί από επεξεργασία, επειδή περιλαμβάνεται στις ακόλουθες {{PLURAL:$1|σελίδα|σελίδες}}, που είναι προστατευμένες με την ενεργοποιημένη "διαδοχική" προστασία στο:
 $2',
@@ -750,15 +754,16 @@ $2',
 
 Μπορείτε να παραμείνετε στο {{SITENAME}} ανώνυμα, ή μπορείτε <span class='plainlinks'>[$1 να συνδεθείτε ξανά]</span> με το ίδιο ή με διαφορετικό (εάν έχετε) όνομα χρήστη.
 Έχετε υπόψη σας πως αρκετές σελίδες θα συνεχίσουν να εμφανίζονται κανονικά, σαν να μην έχετε αποσυνδεθεί, μέχρι να καθαρίσετε τη λανθάνουσα μνήμη του φυλλομετρητή σας.",
-'welcomecreation' => '== Καλώς ήλθατε, $1! ==
-Ο λογαριασμός σας έχει δημιουργηθεί.
-Μην ξεχάσετε να ρυθμίσετε τις [[Special:Preferences|προτιμήσεις]] σας στο {{SITENAME}}.',
+'welcomeuser' => 'Καλώς ορίσατε, $1!',
+'welcomecreation-msg' => 'Ο λογαριασμός σας έχει δημιουργηθεί.
+Μην ξεχάσετε να αλλάξετε τις [[Special:Preferences|{{SITENAME}} προτιμήσεις]] σας.',
 'yourname' => 'Όνομα χρήστη:',
 'yourpassword' => 'Κωδικός:',
 'yourpasswordagain' => 'Πληκτρολογήστε ξανά τον κωδικό',
 'remembermypassword' => 'Διατήρηση του κωδικού πρόσβασης σε αυτόν τον υπολογιστή (για μέγιστο $1 {{PLURAL:$1|ημέρα|ημέρες}})',
 'securelogin-stick-https' => 'Μείνετε συνδεδεμένοι με HTTPS μετά την είσοδο',
 'yourdomainname' => 'Το domain σας:',
+'password-change-forbidden' => 'Δεν μπορείτε να αλλάξετε τους κωδικούς πρόσβασης σε αυτό το βίκι.',
 'externaldberror' => 'Είτε συνέβη κάποιο σφάλμα εξωτερικής πιστοποίησης της βάσης δεδομένων είτε δεν σας έχει επιτραπεί να ενημερώσετε τον εξωτερικό σας λογαριασμό.',
 'login' => 'Είσοδος',
 'nav-login-createaccount' => 'Δημιουργία Λογαριασμού/Είσοδος',
@@ -986,8 +991,8 @@ $2
 <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={{FULLPAGENAMEE}}}} να αναζητήσετε τα σχετικά αρχεία]</span>.',
+Μπορείτε να [[Special:Search/{{PAGENAME}}|αναζητήσετε αυτόν τον τίτλο σελίδας]] σε άλλες σελίδες,
+ή <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} να αναζητήσετε τα σχετικά αρχεία]</span>, αλλά δεν έχεις την άδεια να δημιουργήσεις αυτή τη σελίδα.',
 'userpage-userdoesnotexist' => 'Ο Λογαριασμός του χρήστη "<nowiki>$1</nowiki>" δεν είναι καταχωρημένος. Παρακαλώ δείτε αν θα θέλατε να δημιουργήσετε/επεξεργαστείτε αυτή τη σελίδα.',
 'userpage-userdoesnotexist-view' => 'Ο λογαριασμός χρήστη "$1" δεν είναι εγγεγραμμένος.',
 'blocked-notice-logextract' => 'Επί του παρόντος, αυτός ο χρήστης έχει υποστεί φραγή. Παρακάτω παρέχεται για αναφορά η πιο πρόσφατη καταχώρηση του αρχείου φραγών.',
@@ -995,7 +1000,6 @@ $2
  * '''Firefox / Safari:''' Κρατήστε ''Shift'' κάνοντας κλικ στο κουμπί ''Ανανέωση'' ή πατήστε ''Ctrl-F5'' ή ''Ctrl-R'' ('' ⌘-R'' σε Mac)
  * '''Google Chrome:''' Πιέστε τα πλήκτρα ''Ctrl-Shift-R'' (''⌘-Shift-R'' σε Mac)
  * '''Internet Explorer:''' Κρατήστε ''Ctrl'' κάνοντας κλικ στην επιλογή ''Ανανέωση'', ή πατήστε ''Ctrl-F5'' 
- * '''Konqueror:''' Κάντε κλικ στο κουμπί '' Ανανέωση'' ή  πιέστε το πλήκτρο ''F5''
  * '''Opera:''' Εκκαθαρίστε την προσωρινή μνήμη στο ''Εργαλεία → Προτιμήσεις''",
 'usercssyoucanpreview' => "'''Χρήσιμη συμβουλή:''' Χρησιμοποιήστε το κουμπί \"{{int:showpreview}}\" για να ελέγξτε τα νέα σας CSS πριν τα αποθηκεύσετε.",
 'userjsyoucanpreview' => "'''Χρήσιμη συμβουλή:''' Χρησιμοποιήστε το κουμπί \"{{int:showpreview}}\" για να ελέγξτε τη νέα σας JS πριν την αποθηκεύσετε.",
@@ -1010,7 +1014,7 @@ $2
 'note' => "'''Προσοχή: '''",
 'previewnote' => "'''Να θυμάστε ότι αυτή είναι μόνο μια προεπισκόπηση.'''
 Οι αλλαγές σας δεν έχουν ακόμη αποθηκευτεί!",
-'continue-editing' => 'ΣÏ\85νέÏ\87εια επεξεργασίας',
+'continue-editing' => 'Î\9cεÏ\84αβείÏ\84ε Ï\83Ï\84ην Ï\80εÏ\81ιοÏ\87ή επεξεργασίας',
 'previewconflict' => 'Αυτή η προεπισκόπηση απεικονίζει το κείμενο στην επάνω περιοχή επεξεργασίας κειμένου, όπως θα εμφανιστεί εάν επιλέξετε να το αποθηκεύσετε.',
 'session_fail_preview' => "'''Συγγνώμη! Δεν μπορούσαμε να διεκπεραιώσουμε την επεξεργασία σας λόγω απώλειας των δεδομένων της συνεδρίας.
 Παρακαλώ προσπαθήστε ξανά. Αν δεν δουλεύει ξανά, δοκιμάστε να αποσυνδεθείτε και να συνδεθείτε πάλι.'''",
@@ -1090,6 +1094,13 @@ $2
 'edit-already-exists' => 'Δεν ήταν εφικτό να δημιουργηθεί η νέα σελίδα.
 Υπάρχει ήδη.',
 'defaultmessagetext' => 'Προεπιλεγμένο κείμενο μηνύματος',
+'invalid-content-data' => 'Μη έγκυρα δεδομένα περιεχομένου',
+
+# Content models
+'content-model-wikitext' => 'βικικείμενο',
+'content-model-text' => 'απλό κείμενο',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Προειδοποίηση: Αυτή η σελίδα περιέχει πάρα πολύ ακριβό αναλυτή λειτουργικών κλήσεων.
@@ -1237,8 +1248,10 @@ $1",
 Παρακαλώ ελέξτε τα αρχεία καταγραφών.',
 'revdelete-only-restricted' => 'Σφάλμα κατα την απόκρυψη του αντικειμένου στις $2, $1: δεν μπορείτε να αποκρύψετε τη προβολή στοιχείων από τους διαχειριστές χωρίς ταυτόχρονα να επιλέξετε και μία από τις άλλες επιλογές απόκρυψης.',
 'revdelete-reason-dropdown' => '*Συνήθεις αιτίες διαγραφής
-** Παραβίαση δικαιωμάτων
-** Ανάρμοστες προσωπικές πληροφορίες',
+** Παραβίαση πνευματικών δικαιωμάτων
+** Ανάρμοστα σχόλια ή προσωπικές πληροφορίες 
+** Ανάρμοστο όνομα χρήστη 
+** Εν δυνάμει δυσφημιστική πληροφορία',
 'revdelete-otherreason' => 'Άλλος/πρόσθετος λόγος:',
 'revdelete-reasonotherlist' => 'Άλλος λόγος',
 'revdelete-edit-reasonlist' => 'Επεξεργασία λόγων διαγραφής',
@@ -1363,7 +1376,7 @@ $1",
 
 # Preferences page
 'preferences' => 'Προτιμήσεις',
-'mypreferences' => 'Î\9fι Ï\80Ï\81οÏ\84ιμήÏ\83ειÏ\82 Î¼Î¿Ï\85',
+'mypreferences' => 'ΠÏ\81οÏ\84ιμήÏ\83ειÏ\82',
 'prefs-edits' => 'Αριθμός επεξεργασιών:',
 'prefsnologin' => 'Δεν έχετε συνδεθεί.',
 'prefsnologintext' => 'Πρέπει να έχετε <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} συνδεθεί]</span> για να καθορίσετε τις προτιμήσεις χρήστη.',
@@ -1426,7 +1439,7 @@ $1",
 'timezoneregion-indian' => 'Ινδικός Ωκεανός',
 'timezoneregion-pacific' => 'Ειρηνικός Ωκεανός',
 'allowemail' => 'Ενεργοποίηση παραλαβής μηνύματος ηλεκτρονικού ταχυδρομείου από άλλους χρήστες',
-'prefs-searchoptions' => 'Î\95Ï\80ιλογέÏ\82 Î±Î½Î±Î¶Î®Ï\84ηÏ\83ηÏ\82',
+'prefs-searchoptions' => 'Î\91ναζήÏ\84ηÏ\83η',
 'prefs-namespaces' => 'Περιοχές ονομάτων',
 'defaultns' => 'Ειδάλλως αναζήτηση σε αυτές τις περιοχές ονομάτων:',
 'default' => 'προεπιλογή',
@@ -1592,6 +1605,8 @@ $1",
 'rightslogtext' => 'Καταγραφές των αλλαγών στα δικαιώματα χρηστών.',
 'rightslogentry' => 'η ιδιότητα μέλους ομάδας για τον/την $1 από $2 σε $3 άλλαξε',
 'rightslogentry-autopromote' => 'προωθήθηκε αυτόματα από $2 σε $3',
+'logentry-rights-rights-legacy' => '{{GENDER:$1|Ο|Η}} $1 άλλαξε την ιδιότητα μέλους ομάδας {{GENDER:$1|του|της}} $3',
+'logentry-rights-autopromote' => '$1 προωθήθηκε αυτόματα από το $4 στο $5',
 'rightsnone' => '(κανένα)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1830,6 +1845,7 @@ $1',
 'backend-fail-notsame' => 'Ένα μη-ταυτόσημο αρχείο υπάρχει ήδη στο $1.',
 'backend-fail-invalidpath' => '$1 δεν είναι έγκυρη διαδρομή αποθήκευσης.',
 'backend-fail-delete' => 'Αδύνατη η διαγραφή αρχείου $1.',
+'backend-fail-describe' => 'Δεν ήταν δυνατή η αλλαγή μεταδεδομένων για το αρχείο "$1".',
 'backend-fail-alreadyexists' => 'Το αρχείο $1 υπάρχει ήδη.',
 'backend-fail-store' => 'Αδύνατη η αποθήκευση του αρχείου $1 σε $2.',
 'backend-fail-copy' => 'Αδύνατη η αντιγραφή του αρχείου από $1 σε $2.',
@@ -1844,10 +1860,11 @@ $1',
 'backend-fail-connect' => 'Δεν ήταν δυνατή η σύνδεση στο αντικείμενο αποθήκευσης "$1".',
 'backend-fail-internal' => 'Παρουσιάστηκε ένα άγνωστο σφάλμα στην αποθήκευση παρασκηνίου "$1".',
 'backend-fail-contenttype' => 'Δεν μπόρεσε να προσδιοριστεί ο τύπος περιεχομένου του αρχείου για την αποθήκευση σε "$1".',
+'backend-fail-usable' => 'Δεν ήταν δυνατή η ανάγνωση ή εγγραφή του αρχείου "$1" λόγω ανεπαρκών δικαιωμάτων ή απουσίας καταλόγων/φακέλων.',
 
 # Lock manager
 'lockmanager-notlocked' => 'Δεν μπορέσατε να  ξεκλειδώσετε το " $1 ". Δεν είναι κλειδωμένο.',
-'lockmanager-fail-closelock' => 'Δεν μπόρεσε να κλείσει το κλειδωμένο αρχείο για " $1 ".',
+'lockmanager-fail-closelock' => 'Δεν μπόρεσε να κλείσει το κλειδωμένο αρχείο για "$1".',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'Παρουσιάστηκε σφάλμα κατά το άνοιγμα του αρχείου για ZIP ελέγχους.',
@@ -1962,6 +1979,7 @@ $1',
 'shared-repo-from' => 'από το $1',
 'shared-repo' => 'ένα κοινό εναποθετήριο',
 'shared-repo-name-wikimediacommons' => 'Κοινά Wikimedia',
+'upload-disallowed-here' => 'Δεν μπορείτε να αντικαταστήσετε αυτό το αρχείο.',
 
 # File reversion
 'filerevert' => 'Επαναφορά $1',
@@ -2032,7 +2050,7 @@ $1',
 'statistics-edits' => 'Επεξεργασίες σελίδων από τη δημιουργία του εγχειρήματος {{SITENAME}}',
 'statistics-edits-average' => 'Μέσος όρος επεξεργασιών ανά σελίδα',
 'statistics-views-total' => 'Συνολικές εμφανίσεις',
-'statistics-views-total-desc' => ' Επισκέψεις σε μη  υπάρχουσες σελίδες και ειδικές σελίδες δεν συμπεριλαμβάνονται',
+'statistics-views-total-desc' => 'Επισκέψεις σε μη υπάρχουσες σελίδες και ειδικές σελίδες δεν συμπεριλαμβάνονται',
 'statistics-views-peredit' => 'Εμφανίσεις ανά επεξεργασία',
 'statistics-users' => 'Εγγεγραμμένοι [[Special:ListUsers|χρήστες]]',
 'statistics-users-active' => 'Ενεργοί χρήστες',
@@ -2094,6 +2112,7 @@ $1',
 'mostlinkedtemplates' => 'Περισσότερο χρησιμοποιούμενα πρότυπα',
 'mostcategories' => 'Άρθρα με τις περισσότερες κατηγορίες',
 'mostimages' => 'Περισσότερο χρησιμοποιούμενα αρχεία',
+'mostinterwikis' => 'Σελίδες με τους περισσότερους διαγλωσσικούς συνδέσμους',
 'mostrevisions' => 'Άρθρα με τις περισσότερες αναθεωρήσεις',
 'prefixindex' => 'Όλες οι σελίδες με πρόθεμα',
 'prefixindex-namespace' => 'Όλες οι σελίδες με πρόθεμα (περιοχής  $1)',
@@ -2192,7 +2211,7 @@ $1',
 'linksearch-ok' => 'Αναζήτηση',
 'linksearch-text' => 'Χαρακτήρες όπως "*.wikipedia.org" μπορούν να χρησιμοποιηθούν. 
 Χρειάζεται τουλάχιστον ένα domain ανώτατου επιπέδου, για παράδειγμα "*.org".<br />
-Υποστηριζόμενα πρωτόκολλα: <code> $1 </code> (μην προσθέτετε οποιαδήποτε από αυτές στην αναζήτησή σας).',
+Υποστηριζόμενα πρωτόκολλα: <code>$1</code> (μην προσθέτετε οποιαδήποτε από αυτές στην αναζήτησή σας).',
 'linksearch-line' => 'Η $1 συνδεδεμένη από την $2',
 'linksearch-error' => 'Λέξεις-μπαλαντέρ μπορεί να εμφανιστούν μόνο στην αρχή τού ονόματος ιστοτόπου (hostname).',
 
@@ -2314,11 +2333,7 @@ $1',
 
 'enotif_mailer' => 'Σύστημα ειδοποίησης μέσω αλληλογραφίας του {{SITENAME}}',
 'enotif_reset' => 'Σημειώστε όλες τις σελίδες ως αναγνωσμένες.',
-'enotif_newpagetext' => 'Αυτή είναι μια νέα σελίδα.',
 'enotif_impersonal_salutation' => 'Χρήστης του ιστοτόπου "{{SITENAME}}"',
-'changed' => 'έχει αλλάξει',
-'created' => 'δημιουργήθηκε',
-'enotif_subject' => 'Η σελίδα $PAGETITLE του εγχειρήματος {{SITENAME}} $CHANGEDORCREATED από το χρήστη $PAGEEDITOR',
 'enotif_lastvisited' => 'Δείτε το $1 για όλες τις αλλαγές που έγιναν από την τελευταία σας επίσκεψη.',
 'enotif_lastdiff' => 'Δείτε το $1 για να εμφανίσετε αυτή την αλλαγή.',
 'enotif_anon_editor' => 'ανώνυμος χρήστης $1',
@@ -2501,7 +2516,7 @@ $UNWATCHURL
 'undeletedrevisions' => '{{PLURAL:$1|τροποποίηση|τροποποιήσεις}} αποκαταστάθηκαν',
 'undeletedrevisions-files' => '$1 {{PLURAL:$1|αναθεώρηση|αναθεωρήσεις}} και $2 {{PLURAL:$2|αρχείο|αρχεία}} επαναφέρθηκαν',
 'undeletedfiles' => '$1 {{PLURAL:$1|αρχείο|αρχεία}} επαναφέρθηκαν',
-'cannotundelete' => 'Î\97 ÎµÏ\80αναÏ\86οÏ\81ά Î±Ï\80έÏ\84Ï\85Ï\87ε: ÎºÎ¬Ï\80οιοÏ\82 Î¬Î»Î»Î¿Ï\82 Î¼Ï\80οÏ\81εί Î½Î± Î­Ï\87ει ÎµÏ\80αναÏ\86έÏ\81ει Ï\84η Ï\83ελίδα Ï\80Ï\81Ï\8eÏ\84οÏ\82.',
+'cannotundelete' => 'Î\97 Î±Î½Î±Î¯Ï\81εÏ\83η Î´Î¹Î±Î³Ï\81αÏ\86ήÏ\82 Î±Ï\80έÏ\84Ï\85Ï\87ε: $1',
 'undeletedpage' => "'''Η $1 έχει επαναφερθεί'''
 
 Συμβουλευτείτε το [[Special:Log/delete|αρχείο καταγραφής διαγραφών]] για ένα μητρώο των πρόσφατων διαγραφών και επαναφορών.",
@@ -2534,7 +2549,7 @@ $1',
 # Contributions
 'contributions' => 'Συνεισφορές χρήστη',
 'contributions-title' => 'Συνεισφορές του χρήστη $1',
-'mycontris' => 'Î\9fι Ï\83Ï\85νειÏ\83Ï\86οÏ\81έÏ\82 Î¼Î¿Ï\85',
+'mycontris' => 'ΣÏ\85νειÏ\83Ï\86οÏ\81έÏ\82',
 'contribsub2' => 'Για τον/την $1 ($2)',
 'nocontribs' => 'Δεν βρέθηκαν αλλαγές με αυτά τα κριτήρια.',
 'uctop' => '(τελευταία)',
@@ -2574,7 +2589,7 @@ $1',
 'whatlinkshere-hideredirs' => '$1 ανακατευθύνσεις',
 'whatlinkshere-hidetrans' => '$1 υπερκλεισμοί',
 'whatlinkshere-hidelinks' => '$1 συνδέσμων',
-'whatlinkshere-hideimages' => '$1 Ï\83Ï\8dνδεÏ\83μοι ÎµÎ¹ÎºÏ\8cνων',
+'whatlinkshere-hideimages' => '$1 Ï\83Ï\8dνδεÏ\83μοι Î±Ï\81Ï\87είων',
 'whatlinkshere-filters' => 'Φίλτρα',
 
 # Block/unblock
@@ -2908,6 +2923,8 @@ $1',
 'import-error-edit' => 'Η σελίδα "$1" δεν εισήχθηκε επειδή δεν επιτρέπεται να το επεξεργαστείτε.',
 'import-error-create' => 'Η σελίδα "$1" δεν εισήχθηκε επειδή δεν επιτρέπεται να τη δημιουργήσετε.',
 'import-error-interwiki' => 'Η σελίδα " $1 " δεν έχει εισαχθεί, επειδή το όνομα της δεσμευμένο για εξωτερική σύνδεση (interwiki).',
+'import-error-special' => 'Η σελίδα "$1" δεν εισήχθη επειδή ανήκει σε έναν ειδικό χώρο ονομάτων που δεν επιτρέπει σελίδες.',
+'import-error-invalid' => 'Η σελίδα "$1" δεν εισήχθη επειδή το όνομά της δεν είναι έγκυρο.',
 
 # Import log
 'importlogpage' => 'Αρχείο καταγραφής εισαγωγών',
@@ -3059,6 +3076,8 @@ $1',
 'pageinfo-article-id' => 'Αναγνωριστικό σελίδας',
 'pageinfo-language' => 'Γλώσσα σελίδας περιεχομένου',
 'pageinfo-robot-policy' => 'Στάτους μηχανής αναζήτησης',
+'pageinfo-robot-index' => 'Καταχωρήσιμο σε ευρετήριο',
+'pageinfo-robot-noindex' => 'Μη καταχωρήσιμο σε ευρετήριο',
 'pageinfo-views' => 'Αριθμός προβολών',
 'pageinfo-watchers' => 'Αριθμός παρατηρητών σελίδας',
 'pageinfo-redirects-name' => 'Ανακατευθύνσεις σε αυτή τη σελίδα',
@@ -3070,7 +3089,7 @@ $1',
 'pageinfo-lasttime' => 'Ημερομηνία τελευταίας επεξεργασίας',
 'pageinfo-edits' => 'Συνολικός αριθμός επεξεργασιών',
 'pageinfo-authors' => 'Συνολικός αριθμός διαφορετικών συντακτών',
-'pageinfo-recent-edits' => 'Πρόσφατος αριθμός επεξεργασιών (σε διάστημα &1)',
+'pageinfo-recent-edits' => 'Πρόσφατος αριθμός επεξεργασιών (σε διάστημα $1)',
 'pageinfo-recent-authors' => 'Πρόσφατος αριθμός μοναδικών συντακτών',
 'pageinfo-magic-words' => '{{PLURAL:$1|Μαγική λέξη|Μαγικές λέξεις}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Κρυφή κατηγορία|Κρυφές κατηγορίες}} ($1)',
@@ -3131,6 +3150,7 @@ $1',
 'file-info-size-pages' => '$1 × $2 εικονοστοιχεία, μέγεθος αρχείου: $3 , τύπος MIME: $4 , $5 {{PLURAL:$5| σελίδα | σελίδες}}',
 'file-nohires' => 'Δεν διατίθεται υψηλότερη ανάλυση.',
 'svg-long-desc' => "Αρχείο SVG, κατ' όνομα $1 × $2 εικονοστοιχεία, μέγεθος αρχείου: $3",
+'svg-long-desc-animated' => 'Κινούμενο αρχείο SVG, ονομαστικό μέγεθος σε pixels: $1 × $2, μέγεθος αρχείου: $3',
 'show-big-image' => 'Πλήρης ανάλυση',
 'show-big-image-preview' => 'Μέγεθος αυτής της προεπισκόπησης: $1 .',
 'show-big-image-other' => 'Άλλες {{PLURAL:$2|ανάλυση|αναλύσεις}}: $1.',
@@ -3140,6 +3160,7 @@ $1',
 'file-info-png-looped' => 'Σε άπειρο βρόγχο',
 'file-info-png-repeat' => 'έπαιξε $1 {{PLURAL:$1|φορά|φορές}}',
 'file-info-png-frames' => '$1 {{PLURAL:$1|πλαίσιο|πλαίσια}}',
+'file-no-thumb-animation' => "'''Σημείωση: λόγω τεχνικών περιορισμών, οι μικρογραφίες αυτού του αρχείου δεν θα είναι κινούμενες.'''",
 
 # Special:NewFiles
 'newimages' => 'Πινακοθήκη νέων εικόνων',
@@ -3758,6 +3779,7 @@ $5
 'version-license' => 'Άδεια χρήσης',
 'version-poweredby-credits' => "Αυτό το wiki λειτουργεί με στο '''[//www.mediawiki.org/ MediaWiki]''', πνευματική ιδιοκτησία © 2001-$1 $2.",
 'version-poweredby-others' => 'άλλοι',
+'version-credits-summary' => 'Θα θέλαμε να αναγνωρίσουμε τη συμβολή των παρακάτω προσώπων στο [[Special:Version|MediaWiki]].',
 'version-license-info' => "Το MediaWiki είναι ελεύθερο λογισμικό. Μπορείτε να το αναδιανείμετε ή/και να το τροποποιήσετε υπό τους όρους της άδειας GNU General Public License όπως αυτή εκδόθηκε από το Free Software Foundation· είτε της δεύτερης έκδοσης της άδειας, είτε (κατ' επιλογή σας) οποιασδήποτε επόμενης έκδοσης.
 
 Το MediaWiki διανέμεται με την ελπίδα ότι θα είναι χρήσιμο, αλλά ΧΩΡΙΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ· ούτε καν την σιωπηρή εγγύηση ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ή ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ ΕΝΑ ΣΥΓΚΕΚΡΙΜΕΝΟ ΣΚΟΠΟ. Βλ. GNU General Public License για περισσότερες λεπτομέρειες.
@@ -3889,9 +3911,9 @@ $5
 'logentry-move-move_redir-noredirect' => '{{GENDER:$1|Ο|Η}} $1 μετακίνησε την σελίδα $3 στην $4 πάνω από ανακατεύθυνση χωρίς να αφήσει ανακατεύθυνση',
 'logentry-patrol-patrol' => '{{GENDER:$1|Ο|Η}} $1 σήμανε την έκδοση $4 της σελίδας $3 ως ελεγμένη',
 'logentry-patrol-patrol-auto' => '{{GENDER:$1|Ο|Η}} $1 αυτόματα σήμανε την έκδοση $4 της σελίδας $3 ως ελεγμένη',
-'logentry-newusers-newusers' => '{{GENDER:$1|Ο|Η}} $1 δημιούργησε έναν λογαριασμό χρήστη',
-'logentry-newusers-create' => '{{GENDER:$1|Ο|Η}} $1 δημιούργησε έναν λογαριασμό χρήστη',
-'logentry-newusers-create2' => '{{GENDER:$1|Ο|Η}} $1 δημιούργησε τον λογαριασμό χρήστη $3',
+'logentry-newusers-newusers' => 'Ο λογαριασμός χρήστη $1 δημιουργήθηκε',
+'logentry-newusers-create' => 'Ο λογαριασμός χρήστη $1 δημιουργήθηκε',
+'logentry-newusers-create2' => 'Ο λογαριασμός χρήστη $3 δημιουργήθηκε από {{GENDER:$1|τον|την}} $1',
 'logentry-newusers-autocreate' => 'Ο λογαριασμός $1 δημιουργήθηκε αυτόματα',
 'newuserlog-byemail' => 'ο κωδικός έχει σταλεί μέσω ηλεκτρονικού μηνύματος',
 
@@ -3926,10 +3948,12 @@ $5
 'api-error-empty-file' => 'Το αρχείο που υποβάλλατε ήταν κενό.',
 'api-error-emptypage' => 'Η δημιουργία νέων, κενών σελιδών δεν επιτρέπετε.',
 'api-error-fetchfileerror' => 'Εσωτερικό σφάλμα: κάτι πήγε στραβά κατά την ανάκτηση του αρχείου.',
+'api-error-fileexists-forbidden' => 'Ένα αρχείο με το όνομα "$1" υπάρχει ήδη, και δεν είναι δυνατό να αντικατασταθεί.',
+'api-error-fileexists-shared-forbidden' => 'Ένα αρχείο με όνομα "$1" υπάρχει ήδη στο χώρο φύλαξης κοινόχρηστων αρχείων και δεν είναι δυνατό να αντικατασταθεί.',
 'api-error-file-too-large' => 'Το αρχείο που υποβάλλατε ήταν πολύ μεγάλο.',
 'api-error-filename-tooshort' => 'Το όνομα αρχείου είναι πολύ μικρό.',
 'api-error-filetype-banned' => 'Αυτός ο τύπος αρχείου έχει απαγορευτεί.',
-'api-error-filetype-banned-type' => '$1 δεν είναι {{PLURAL:$4|επιτρεπόμενος τύπος αρχείου|επιτρεπόμενοι τύποι αρχείων}}.  {{PLURAL:$3|Επιτρεπόμενος τύπος αρχείων|Επιτρεπόμενοι τύποι αρχείων}} είναι $2.',
+'api-error-filetype-banned-type' => '$1 δεν είναι {{PLURAL:$4|επιτρεπόμενος τύπος αρχείου|επιτρεπόμενοι τύποι αρχείων}}.  {{PLURAL:$3|Επιτρεπόμενος τύπος αρχείων|Επιτρεπόμενοι τύποι αρχείων}} είναι το $2.',
 'api-error-filetype-missing' => 'Το αρχείο δεν έχει επέκταση.',
 'api-error-hookaborted' => 'Η τροποποίηση που επιχειρήσατε να κάνετε ματαιώθηκε από ένα άγκιστρο της επέκτασης.',
 'api-error-http' => 'Εσωτερικό σφάλμα: δεν είναι δυνατή η σύνδεση με το διακομιστή.',
index ec31872..81fea50 100644 (file)
@@ -569,6 +569,7 @@ $preloadedMessages = array(
        'searcharticle',
        'searchbutton',
        'sidebar',
+       'navigation-heading',
        'site-atom-feed',
        'sitenotice',
        'specialpages',
@@ -767,17 +768,16 @@ XHTML id names.
 
 'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD', # only translate this message to other languages if you have to change it
 
-'about'                => 'About',
-'article'              => 'Content page',
-'newwindow'            => '(opens in new window)',
-'cancel'               => 'Cancel',
-'moredotdotdot'        => 'More...',
-'mypage'               => 'Page',
-'mytalk'               => 'Talk',
-'mytalk-parenthetical' => 'talk',
-'anontalk'             => 'Talk for this IP address',
-'navigation'           => 'Navigation',
-'and'                  => '&#32;and',
+'about'         => 'About',
+'article'       => 'Content page',
+'newwindow'     => '(opens in new window)',
+'cancel'        => 'Cancel',
+'moredotdotdot' => 'More...',
+'mypage'        => 'Page',
+'mytalk'        => 'Talk',
+'anontalk'      => 'Talk for this IP address',
+'navigation'    => 'Navigation',
+'and'           => '&#32;and',
 
 # Cologne Blue skin
 'qbfind'         => 'Find',
@@ -808,71 +808,72 @@ XHTML id names.
 'namespaces'                     => 'Namespaces',
 'variants'                       => 'Variants',
 
-'errorpagetitle'    => 'Error',
-'returnto'          => 'Return to $1.',
-'tagline'           => 'From {{SITENAME}}',
-'help'              => 'Help',
-'search'            => 'Search',
-'searchbutton'      => 'Search',
-'go'                => 'Go',
-'searcharticle'     => 'Go',
-'history'           => 'Page history',
-'history_short'     => 'History',
-'updatedmarker'     => 'updated since my last visit',
-'printableversion'  => 'Printable version',
-'permalink'         => 'Permanent link',
-'print'             => 'Print',
-'view'              => 'View',
-'edit'              => 'Edit',
-'create'            => 'Create',
-'editthispage'      => 'Edit this page',
-'create-this-page'  => 'Create this page',
-'delete'            => 'Delete',
-'deletethispage'    => 'Delete this page',
-'undelete_short'    => 'Undelete {{PLURAL:$1|one edit|$1 edits}}',
-'viewdeleted_short' => 'View {{PLURAL:$1|one deleted edit|$1 deleted edits}}',
-'protect'           => 'Protect',
-'protect_change'    => 'change',
-'protectthispage'   => 'Protect this page',
-'unprotect'         => 'Change protection',
-'unprotectthispage' => 'Change protection of this page',
-'newpage'           => 'New page',
-'talkpage'          => 'Discuss this page',
-'talkpagelinktext'  => 'Talk',
-'specialpage'       => 'Special page',
-'personaltools'     => 'Personal tools',
-'postcomment'       => 'New section',
-'addsection'        => '+', # do not translate or duplicate this message to other languages
-'articlepage'       => 'View content page',
-'talk'              => 'Discussion',
-'views'             => 'Views',
-'toolbox'           => 'Toolbox',
-'userpage'          => 'View user page',
-'projectpage'       => 'View project page',
-'imagepage'         => 'View file page',
-'mediawikipage'     => 'View message page',
-'templatepage'      => 'View template page',
-'viewhelppage'      => 'View help page',
-'categorypage'      => 'View category page',
-'viewtalkpage'      => 'View discussion',
-'otherlanguages'    => 'In other languages',
-'redirectedfrom'    => '(Redirected from $1)',
-'redirectpagesub'   => 'Redirect page',
-'talkpageheader'    => '-', # do not translate or duplicate this message to other languages
-'lastmodifiedat'    => 'This page was last modified on $1, at $2.',
-'viewcount'         => 'This page has been accessed {{PLURAL:$1|once|$1 times}}.',
-'protectedpage'     => 'Protected page',
-'jumpto'            => 'Jump to:',
-'jumptonavigation'  => 'navigation',
-'jumptosearch'      => 'search',
-'view-pool-error'   => 'Sorry, the servers are overloaded at the moment.
+'navigation-heading' => 'Navigation menu',
+'errorpagetitle'     => 'Error',
+'returnto'           => 'Return to $1.',
+'tagline'            => 'From {{SITENAME}}',
+'help'               => 'Help',
+'search'             => 'Search',
+'searchbutton'       => 'Search',
+'go'                 => 'Go',
+'searcharticle'      => 'Go',
+'history'            => 'Page history',
+'history_short'      => 'History',
+'updatedmarker'      => 'updated since my last visit',
+'printableversion'   => 'Printable version',
+'permalink'          => 'Permanent link',
+'print'              => 'Print',
+'view'               => 'View',
+'edit'               => 'Edit',
+'create'             => 'Create',
+'editthispage'       => 'Edit this page',
+'create-this-page'   => 'Create this page',
+'delete'             => 'Delete',
+'deletethispage'     => 'Delete this page',
+'undelete_short'     => 'Undelete {{PLURAL:$1|one edit|$1 edits}}',
+'viewdeleted_short'  => 'View {{PLURAL:$1|one deleted edit|$1 deleted edits}}',
+'protect'            => 'Protect',
+'protect_change'     => 'change',
+'protectthispage'    => 'Protect this page',
+'unprotect'          => 'Change protection',
+'unprotectthispage'  => 'Change protection of this page',
+'newpage'            => 'New page',
+'talkpage'           => 'Discuss this page',
+'talkpagelinktext'   => 'Talk',
+'specialpage'        => 'Special page',
+'personaltools'      => 'Personal tools',
+'postcomment'        => 'New section',
+'addsection'         => '+', # do not translate or duplicate this message to other languages
+'articlepage'        => 'View content page',
+'talk'               => 'Discussion',
+'views'              => 'Views',
+'toolbox'            => 'Toolbox',
+'userpage'           => 'View user page',
+'projectpage'        => 'View project page',
+'imagepage'          => 'View file page',
+'mediawikipage'      => 'View message page',
+'templatepage'       => 'View template page',
+'viewhelppage'       => 'View help page',
+'categorypage'       => 'View category page',
+'viewtalkpage'       => 'View discussion',
+'otherlanguages'     => 'In other languages',
+'redirectedfrom'     => '(Redirected from $1)',
+'redirectpagesub'    => 'Redirect page',
+'talkpageheader'     => '-', # do not translate or duplicate this message to other languages
+'lastmodifiedat'     => 'This page was last modified on $1, at $2.',
+'viewcount'          => 'This page has been accessed {{PLURAL:$1|once|$1 times}}.',
+'protectedpage'      => 'Protected page',
+'jumpto'             => 'Jump to:',
+'jumptonavigation'   => 'navigation',
+'jumptosearch'       => 'search',
+'view-pool-error'    => 'Sorry, the servers are overloaded at the moment.
 Too many users are trying to view this page.
 Please wait a while before you try to access this page again.
 
 $1',
-'pool-timeout'      => 'Timeout waiting for the lock',
-'pool-queuefull'    => 'Pool queue is full',
-'pool-errorunknown' => 'Unknown error',
+'pool-timeout'       => 'Timeout waiting for the lock',
+'pool-queuefull'     => 'Pool queue is full',
+'pool-errorunknown'  => 'Unknown error',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 'aboutsite'            => 'About {{SITENAME}}',
@@ -1067,8 +1068,8 @@ The administrator who locked it offered this explanation: "$3".',
 
 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.",
-'welcomecreation'            => '== Welcome, $1! ==
-Your account has been created.
+'welcomeuser'                => 'Welcome, $1!',
+'welcomecreation-msg'        => 'Your account has been created.
 Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'yourname'                   => 'Username:',
 'yourpassword'               => 'Password:',
@@ -2315,6 +2316,7 @@ If the problem persists, contact an [[Special:ListUsers/sysop|administrator]].',
 'backend-fail-notsame'       => 'A non-identical file already exists at "$1".',
 'backend-fail-invalidpath'   => '"$1" is not a valid storage path.',
 'backend-fail-delete'        => 'Could not delete file "$1".',
+'backend-fail-describe'      => 'Could not change metadata for file "$1".',
 'backend-fail-alreadyexists' => 'The file "$1" already exists.',
 'backend-fail-store'         => 'Could not store file "$1" at "$2".',
 'backend-fail-copy'          => 'Could not copy file "$1" to "$2".',
@@ -2811,7 +2813,6 @@ There may be [[{{MediaWiki:Listgrouprights-helppage}}|additional information]] a
 'emailuser-title-notarget' => 'E-mail user',
 'emailuser-summary'        => '', # do not translate or duplicate this message to other languages
 'emailpage'                => 'E-mail user',
-// Dummy GENDER to prevent warnings at translatewiki
 'emailpagetext'            => 'You can use the form below to send an e-mail message to this {{GENDER:$1|user}}.
 The e-mail address you entered in [[Special:Preferences|your user preferences]] will appear as the "From" address of the e-mail, so the recipient will be able to reply directly to you.',
 'usermailererror'          => 'Mail object returned error:',
@@ -2882,20 +2883,23 @@ Future changes to this page and its associated talk page will be listed there, a
 
 'enotif_mailer'                => '{{SITENAME}} notification mailer',
 'enotif_reset'                 => 'Mark all pages visited',
-'enotif_newpagetext'           => 'This is a new page.',
 'enotif_impersonal_salutation' => '{{SITENAME}} user',
-'changed'                      => 'changed',
-'created'                      => 'created',
-'enotif_subject'               => '{{SITENAME}} page $PAGETITLE has been $CHANGEDORCREATED by $PAGEEDITOR',
+'enotif_subject_deleted'       => '{{SITENAME}} page $1 has been deleted by {{gender:$2|$2}}',
+'enotif_subject_created'       => '{{SITENAME}} page $1 has been created by {{gender:$2|$2}}',
+'enotif_subject_moved'         => '{{SITENAME}} page $1 has been moved by {{gender:$2|$2}}',
+'enotif_subject_restored'      => '{{SITENAME}} page $1 has been restored by {{gender:$2|$2}}',
+'enotif_subject_changed'       => '{{SITENAME}} page $1 has been changed by {{gender:$2|$2}}',
+'enotif_body_intro_deleted'    => 'The {{SITENAME}} page $1 has been deleted on $PAGEEDITDATE by {{gender:$2|$2}}, see $3 for the current revision.',
+'enotif_body_intro_created'    => 'The {{SITENAME}} page $1 has been created on $PAGEEDITDATE by {{gender:$2|$2}}, see $3 for the current revision.',
+'enotif_body_intro_moved'      => 'The {{SITENAME}} page $1 has been moved on $PAGEEDITDATE by {{gender:$2|$2}}, see $3 for the current revision.',
+'enotif_body_intro_restored'   => 'The {{SITENAME}} page $1 has been restored on $PAGEEDITDATE by {{gender:$2|$2}}, see $3 for the current revision.',
+'enotif_body_intro_changed'    => 'The {{SITENAME}} page $1 has been changed on $PAGEEDITDATE by {{gender:$2|$2}}, see $3 for the current revision.',
 'enotif_lastvisited'           => 'See $1 for all changes since your last visit.',
 'enotif_lastdiff'              => 'See $1 to view this change.',
 'enotif_anon_editor'           => 'anonymous user $1',
 'enotif_body'                  => 'Dear $WATCHINGUSERNAME,
 
-
-The {{SITENAME}} page $PAGETITLE has been $CHANGEDORCREATED on $PAGEEDITDATE by $PAGEEDITOR, see $PAGETITLE_URL for the current revision.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Editor\'s summary: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2903,8 +2907,7 @@ Contact the editor:
 mail: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-There will be no other notifications in case of further changes unless you visit this page.
-You could also reset the notification flags for all your watched pages on your watchlist.
+There will be no other notifications in case of further changes unless you visit this page. You could also reset the notification flags for all your watched pages on your watchlist.
 
                         Your friendly {{SITENAME}} notification system
 
@@ -3746,44 +3749,44 @@ This is probably caused by a link to a blacklisted external site.',
 'spam_deleting'       => 'All revisions contained links to $1, deleting',
 
 # Info page
-'pageinfo-header'              => '-', # do not translate or duplicate this message to other languages
-'pageinfo-title'               => 'Information for "$1"',
-'pageinfo-not-current'         => 'Sorry, it\'s impossible to provide this information for old revisions.',
-'pageinfo-header-basic'        => 'Basic information',
-'pageinfo-header-edits'        => 'Edit history',
-'pageinfo-header-restrictions' => 'Page protection',
-'pageinfo-header-properties'   => 'Page properties',
-'pageinfo-display-title'       => 'Display title',
-'pageinfo-default-sort'        => 'Default sort key',
-'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-views'               => 'Number of views',
-'pageinfo-watchers'            => 'Number of page watchers',
-'pageinfo-redirects-name'      => '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-value'      => '$1 ($2 {{PLURAL:$2|redirect|redirects}}; $3 {{PLURAL:$3|non-redirect|non-redirects}})',
-'pageinfo-firstuser'           => 'Page creator',
-'pageinfo-firsttime'           => 'Date of page creation',
-'pageinfo-lastuser'            => 'Latest editor',
-'pageinfo-lasttime'            => 'Date of latest edit',
-'pageinfo-edits'               => 'Total number of edits',
-'pageinfo-authors'             => 'Total number of distinct authors',
-'pageinfo-recent-edits'        => 'Recent number of edits (within past $1)',
-'pageinfo-recent-authors'      => 'Recent number of distinct authors',
-'pageinfo-magic-words'         => 'Magic {{PLURAL:$1|word|words}} ($1)',
-'pageinfo-hidden-categories'   => 'Hidden {{PLURAL:$1|category|categories}} ($1)',
-'pageinfo-templates'           => 'Transcluded {{PLURAL:$1|template|templates}} ($1)',
-'pageinfo-footer'              => '-', # do not translate or duplicate this message to other languages
-'pageinfo-toolboxlink'         => 'Page information',
-'pageinfo-redirectsto'         => 'Redirects to',
-'pageinfo-redirectsto-info'    => 'info',
-'pageinfo-contentpage'         => 'Counted as a content page',
-'pageinfo-contentpage-yes'     => 'Yes',
+'pageinfo-header'                 => '-', # do not translate or duplicate this message to other languages
+'pageinfo-title'                  => 'Information for "$1"',
+'pageinfo-not-current'            => "Sorry, it's impossible to provide this information for old revisions.",
+'pageinfo-header-basic'           => 'Basic information',
+'pageinfo-header-edits'           => 'Edit history',
+'pageinfo-header-restrictions'    => 'Page protection',
+'pageinfo-header-properties'      => 'Page properties',
+'pageinfo-display-title'          => 'Display title',
+'pageinfo-default-sort'           => 'Default sort key',
+'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-views'                  => 'Number of views',
+'pageinfo-watchers'               => 'Number of page watchers',
+'pageinfo-redirects-name'         => '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-value'         => '$1 ($2 {{PLURAL:$2|redirect|redirects}}; $3 {{PLURAL:$3|non-redirect|non-redirects}})',
+'pageinfo-firstuser'              => 'Page creator',
+'pageinfo-firsttime'              => 'Date of page creation',
+'pageinfo-lastuser'               => 'Latest editor',
+'pageinfo-lasttime'               => 'Date of latest edit',
+'pageinfo-edits'                  => 'Total number of edits',
+'pageinfo-authors'                => 'Total number of distinct authors',
+'pageinfo-recent-edits'           => 'Recent number of edits (within past $1)',
+'pageinfo-recent-authors'         => 'Recent number of distinct authors',
+'pageinfo-magic-words'            => 'Magic {{PLURAL:$1|word|words}} ($1)',
+'pageinfo-hidden-categories'      => 'Hidden {{PLURAL:$1|category|categories}} ($1)',
+'pageinfo-templates'              => 'Transcluded {{PLURAL:$1|template|templates}} ($1)',
+'pageinfo-footer'                 => '-', # do not translate or duplicate this message to other languages
+'pageinfo-toolboxlink'            => 'Page information',
+'pageinfo-redirectsto'            => 'Redirects to',
+'pageinfo-redirectsto-info'       => 'info',
+'pageinfo-contentpage'            => 'Counted as a content page',
+'pageinfo-contentpage-yes'        => 'Yes',
 'pageinfo-protect-cascading'      => 'Protections are cascading from here',
 'pageinfo-protect-cascading-yes'  => 'Yes',
 'pageinfo-protect-cascading-from' => 'Protections are cascading from',
@@ -3810,6 +3813,8 @@ This is probably caused by a link to a blacklisted external site.',
 'markedaspatrollederror'              => 'Cannot mark as patrolled',
 'markedaspatrollederrortext'          => 'You need to specify a revision to mark as patrolled.',
 'markedaspatrollederror-noautopatrol' => 'You are not allowed to mark your own changes as patrolled.',
+'markedaspatrollednotify'             => 'This change to $1 has been marked as patrolled.',
+'markedaspatrollederrornotify'        => 'Marking as patrolled failed.',
 
 # Patrol log
 'patrol-log-page'      => 'Patrol log',
@@ -3844,6 +3849,7 @@ By executing it, your system may be compromised.",
 'file-nohires'                => 'No higher resolution available.',
 'svg-long-desc'               => 'SVG file, nominally $1 × $2 pixels, file size: $3',
 'svg-long-desc-animated'      => 'Animated SVG file, nominally $1 × $2 pixels, file size: $3',
+'svg-long-error'              => 'Invalid SVG file: $1',
 'show-big-image'              => 'Full resolution',
 'show-big-image-preview'      => 'Size of this preview: $1.',
 'show-big-image-other'        => 'Other {{PLURAL:$2|resolution|resolutions}}: $1.',
@@ -3879,6 +3885,7 @@ By executing it, your system may be compromised.",
 'hours'          => '{{PLURAL:$1|$1 hour|$1 hours}}',
 'days'           => '{{PLURAL:$1|$1 day|$1 days}}',
 'ago'            => '$1 ago',
+'just-now'       => 'just now',
 
 # Bad image list
 'bad_image_list' => 'The format is as follows:
@@ -4867,10 +4874,10 @@ This site is experiencing technical difficulties.',
 'logentry-move-move_redir-noredirect' => '$1 moved page $3 to $4 over a redirect without leaving a redirect',
 'logentry-patrol-patrol'              => '$1 marked revision $4 of page $3 patrolled',
 'logentry-patrol-patrol-auto'         => '$1 automatically marked revision $4 of page $3 patrolled',
-'logentry-newusers-newusers'          => '$1 created a user account',
-'logentry-newusers-create'            => '$1 created a user account',
-'logentry-newusers-create2'           => '$1 created a user account $3',
-'logentry-newusers-autocreate'        => 'Account $1 was created automatically',
+'logentry-newusers-newusers'          => 'User account $1 was created',
+'logentry-newusers-create'            => 'User account $1 was created',
+'logentry-newusers-create2'           => 'User account $3 was created by $1',
+'logentry-newusers-autocreate'        => 'User account $1 was created automatically',
 'newuserlog-byemail'                  => 'password sent by e-mail',
 
 # For IRC, see bug 34508. Do not change
index 7121523..2e2704d 100644 (file)
@@ -443,8 +443,8 @@ $messages = array(
 'newwindow' => '(en nova fenestro)',
 'cancel' => 'Nuligi',
 'moredotdotdot' => 'Pli...',
-'mypage' => 'Mia paĝo',
-'mytalk' => 'Mia diskuto',
+'mypage' => 'Paĝo',
+'mytalk' => 'Diskuto',
 'anontalk' => 'Diskutpaĝo por tiu ĉi IP',
 'navigation' => 'Navigado',
 'and' => '&#32;kaj',
@@ -476,6 +476,7 @@ $messages = array(
 'namespaces' => 'Nomspacoj',
 'variants' => 'Variantoj',
 
+'navigation-heading' => 'Navigacia menuo',
 'errorpagetitle' => 'Eraro',
 'returnto' => 'Reiri al $1.',
 'tagline' => 'El {{SITENAME}}',
@@ -722,9 +723,7 @@ La administranto kiu ŝlosis ĝin proponis tiun klarigon: "$3".',
 
 Vi rajtas daŭre vikiumi sennome, aŭ vi povas <span class='plainlinks'>[$1 reensaluti]</span> kiel la sama aŭ kiel alia uzanto.
 Notu ke iuj paĝoj daŭre ŝajnos kvazaŭ vi ankoraŭ estas ensalutita, ĝis vi refreŝigu vian retumilan kaŝmemoron.",
-'welcomecreation' => '== Bonvenon, $1! ==
-Via konto estas kreita.
-Ne forgesu fari viajn [[Special:Preferences|{{SITENAME}}-preferojn]].',
+'welcomeuser' => 'Bonvenon, $1!',
 'yourname' => 'Salutnomo:',
 'yourpassword' => 'Pasvorto:',
 'yourpasswordagain' => 'Retajpu pasvorton',
@@ -1088,6 +1087,14 @@ Verŝajne ĝi estis forigita.',
 'edit-already-exists' => 'Ne eblis krei novan paĝon.
 Ĝi jam ekzistas.',
 'defaultmessagetext' => 'Defaŭlta teksto',
+'invalid-content-data' => 'Enhavo estas malvalida',
+'content-not-allowed-here' => 'Enhavo de $1 ne estas permesita en paĝo [[$2]]',
+
+# Content models
+'content-model-wikitext' => 'vikiteksto',
+'content-model-text' => 'ordinara teksto',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Averto: Ĉi tiu paĝo enhavas tro da multekostaj sintaksaj funkcio-vokoj.
@@ -1377,7 +1384,7 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 
 # Preferences page
 'preferences' => 'Preferoj',
-'mypreferences' => 'Miaj preferoj',
+'mypreferences' => 'Preferoj',
 'prefs-edits' => 'Nombro de redaktoj:',
 'prefsnologin' => 'Ne jam salutis!',
 'prefsnologintext' => 'Vi devas esti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ensalutita]</span> por fari viajn preferojn.',
@@ -1608,6 +1615,8 @@ Jen hazarde generita valoro por via uzo: $1',
 'rightslogtext' => 'Ĉi tio estas protokolo pri la ŝanĝoj de uzantorajtoj.',
 'rightslogentry' => 'ŝanĝis grupan membrecon por $1 de $2 al $3',
 'rightslogentry-autopromote' => 'estis aŭtomate altrangigita de $2 al $3',
+'logentry-rights-rights' => '$1 ŝanĝis grupan membrecon por $3 de $4 al $5',
+'logentry-rights-rights-legacy' => '$1 ŝanĝis grupan membrecon por $3',
 'rightsnone' => '(nenia)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -2271,7 +2280,7 @@ Estas [[{{MediaWiki:Listgrouprights-helppage}}|aldona informo]] pri individuaj r
 'emailuser-title-target' => 'Retpoŝti ĉi tiun {{GENDER:$1|uzanton}}',
 'emailuser-title-notarget' => 'Retpoŝti uzanton',
 'emailpage' => 'Retpoŝti uzanton',
-'emailpagetext' => 'Vi povas uzi la jenan paĝon por sendi retpoŝtan mesaĝon al ĉi tiu uzanto.
+'emailpagetext' => 'Vi povas uzi la jenan paĝon por sendi retpoŝtan mesaĝon al ĉi tiu {{GENDER:$1|uzanto|uzantino}}.
 La retadreso kiun vi enigis en [[Special:Preferences|viaj preferoj]] aperos kiel la "De" adreso de la retpoŝto, do la ricevonto eblos respondi rekte al vi.',
 'usermailererror' => 'Resendita retmesaĝa erarsubjekto:',
 'defemailsubject' => '{{SITENAME}} retmesaĝo de uzanto "$1"',
@@ -2338,11 +2347,7 @@ La retadreso kiun vi enigis en [[Special:Preferences|viaj preferoj]] aperos kiel
 
 'enotif_mailer' => 'Averta retmesaĝo de {{SITENAME}}',
 'enotif_reset' => 'Marki ĉiujn paĝojn vizititaj',
-'enotif_newpagetext' => 'Tiu ĉi estas nova paĝo',
 'enotif_impersonal_salutation' => 'Uzanto de {{SITENAME}}',
-'changed' => 'ŝanĝita',
-'created' => 'kreita',
-'enotif_subject' => 'la paĝo $PAGETITLE de {{SITENAME}} estis $CHANGEDORCREATED de $PAGEEDITOR',
 'enotif_lastvisited' => 'Vidi $1 por ĉiuj ŝanĝoj de post via lasta vizito.',
 'enotif_lastdiff' => 'Vidi $1 por rigardi ĉi tiun ŝanĝon.',
 'enotif_anon_editor' => 'anonima uzanto $1',
@@ -2557,7 +2562,7 @@ $1',
 # Contributions
 'contributions' => 'Kontribuoj de uzanto',
 'contributions-title' => 'Kontribuoj de uzanto $1',
-'mycontris' => 'Miaj kontribuoj',
+'mycontris' => 'Kontribuoj',
 'contribsub2' => 'De $1 ($2)',
 'nocontribs' => 'Trovis neniajn redaktojn laŭ tiu kriterio.',
 'uctop' => ' (lasta)',
@@ -3102,6 +3107,7 @@ Datoj de versioj kaj nomoj de redaktantoj estos preservitaj.
 'pageinfo-default-sort' => 'Pravaloro de ordiga ŝlosilo',
 'pageinfo-length' => 'Paĝgrandeco (en bajtoj)',
 'pageinfo-article-id' => 'Paĝa identigo',
+'pageinfo-language' => 'Lingvo de paĝa enhavo',
 'pageinfo-robot-policy' => 'Statuso de la serĉilo',
 'pageinfo-robot-index' => 'Indeksebla',
 'pageinfo-robot-noindex' => 'Ne indeksebla',
@@ -3956,9 +3962,9 @@ Bildoj montriĝas en plena distingivo, aliaj dosiertipoj estas malfermataj rekte
 'logentry-move-move_redir-noredirect' => '$1 movis paĝon $3 al $4 anstataŭigante alidirektilon sen lasante alidirektilon',
 'logentry-patrol-patrol' => '$1 markis revizion $4 de paĝo $3 kiel patrolita',
 'logentry-patrol-patrol-auto' => '$1 aŭtomate markis revizion $4 de paĝo $3 kiel patrolita',
-'logentry-newusers-newusers' => '$1 kreis salutnomon',
-'logentry-newusers-create' => '$1 kreis salutnomon',
-'logentry-newusers-create2' => '$1 kreis salutnomo $3',
+'logentry-newusers-newusers' => '$1 kreis konton',
+'logentry-newusers-create' => '$1 kreis konton',
+'logentry-newusers-create2' => '$1 kreis uzanton $3',
 'logentry-newusers-autocreate' => 'Konto $1 estis kreita aŭtomate',
 'newuserlog-byemail' => 'pasvorto sendita retpoŝte',
 
index 0451d5a..0327145 100644 (file)
@@ -42,6 +42,7 @@
  * @author Fitoschido
  * @author Fluence
  * @author Gustronico
+ * @author Gwickwire
  * @author Hercule
  * @author Icvav
  * @author Imre
@@ -354,7 +355,7 @@ $dateFormats = array(
        'dmy both' => 'H:i j M Y',
 );
 
-$separatorTransformTable = array( ',' => '.', '.' => ',' );
+$separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
 $linkTrail = '/^([a-záéíóúñ]+)(.*)$/sDu';
 
 $messages = array(
@@ -511,7 +512,7 @@ $messages = array(
 # Vector skin
 'vector-action-addsection' => 'Nueva sección',
 'vector-action-delete' => 'Borrar',
-'vector-action-move' => 'Mover',
+'vector-action-move' => 'Trasladar',
 'vector-action-protect' => 'Proteger',
 'vector-action-undelete' => 'Restaurar',
 'vector-action-unprotect' => 'Cambiar protección',
@@ -525,6 +526,7 @@ $messages = array(
 'namespaces' => 'Espacios de nombres',
 'variants' => 'Variantes',
 
+'navigation-heading' => 'Menú de navegación',
 'errorpagetitle' => 'Error',
 'returnto' => 'Volver a $1.',
 'tagline' => 'De {{SITENAME}}',
@@ -766,10 +768,9 @@ El administrador que lo ha bloqueado ofrece esta explicación: "$3".',
 
 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.",
-'welcomecreation' => '== ¡Bienvenido(a), $1! ==
-
-Tu cuenta ha sido creada.
-No olvides personalizar [[Special:Preferences|tus preferencias]].',
+'welcomeuser' => '¡Bienvenido, $1!',
+'welcomecreation-msg' => 'Tu cuenta ha sido creada.
+No olvides cambiar tus [[Special:Preferences|preferencias de {{SITENAME}} ]].',
 'yourname' => 'Nombre de usuario:',
 'yourpassword' => 'Contraseña:',
 'yourpasswordagain' => 'Confirma la contraseña:',
@@ -1606,8 +1607,8 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'right-minoredit' => 'Marcar ediciones como «menores»',
 'right-move' => 'Trasladar páginas',
 'right-move-subpages' => 'Trasladar páginas con sus subpáginas',
-'right-move-rootuserpages' => 'Mover páginas del usuario raíz',
-'right-movefile' => 'Mover archivos',
+'right-move-rootuserpages' => 'Trasladar páginas de usuario raíz',
+'right-movefile' => 'Trasladar archivos',
 'right-suppressredirect' => 'No crear redirecciones de las páginas fuente  al trasladar páginas',
 'right-upload' => 'Subir archivos',
 'right-reupload' => 'Subir una nueva versión de un archivo existente',
@@ -1664,7 +1665,7 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'rightslogtext' => 'Este es un registro de cambios en los permisos de usuarios.',
 'rightslogentry' => 'modificó los grupos a los que pertenece $1: de $2 a $3',
 'rightslogentry-autopromote' => 'fue promovido automáticamente desde $2 a $3',
-'logentry-rights-rights' => '$1 modificó la pertenencia a grupos para $3, de $4 a $5',
+'logentry-rights-rights' => '$1 modificó los grupos a los que pertenece $3: de $4 a $5',
 'logentry-rights-rights-legacy' => '$1 ha cambiado la pertenencia a grupos de $3',
 'logentry-rights-autopromote' => '$1 fue promocionado automáticamente de $4 a $5',
 'rightsnone' => '(ninguno)',
@@ -1676,10 +1677,10 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'action-createtalk' => 'crear páginas de discusión',
 'action-createaccount' => 'crear esta cuenta de usuario',
 'action-minoredit' => 'marcar este cambio como menor',
-'action-move' => 'mover esta página',
-'action-move-subpages' => 'mover esta página y sus subpáginas',
-'action-move-rootuserpages' => 'mover páginas del usuario raíz',
-'action-movefile' => 'mover este archivo',
+'action-move' => 'trasladar esta página',
+'action-move-subpages' => 'trasladar esta página y sus subpáginas',
+'action-move-rootuserpages' => 'trasladar páginas de usuario raíz',
+'action-movefile' => 'trasladar este archivo',
 'action-upload' => 'subir este archivo',
 'action-reupload' => 'reemplazar este archivo existente',
 'action-reupload-shared' => 'reemplazar este archivo existente en un depósito compartido',
@@ -1905,10 +1906,11 @@ $1',
 'backend-fail-notsame' => 'Ya existe un fichero distinto en $1.',
 'backend-fail-invalidpath' => '$1 no es una ruta de almacenamiento válida',
 'backend-fail-delete' => 'No se pudo borrar el archivo «$1».',
+'backend-fail-describe' => 'No pudieron cambiar los metadatos del archivo "$1".',
 'backend-fail-alreadyexists' => 'El archivo  $1  ya existe.',
 'backend-fail-store' => 'No se pudo almacenar el archivo $1 en $2.',
 'backend-fail-copy' => 'No se pudo copiar el archivo $1 a $2.',
-'backend-fail-move' => 'No se pudo mover el archivo $1 a $2.',
+'backend-fail-move' => 'No se pudo trasladar el archivo $1 a $2.',
 'backend-fail-opentemp' => 'No se pudo crear archivo temporal.',
 'backend-fail-writetemp' => 'No se pudo escribir en el archivo temporal.',
 'backend-fail-closetemp' => 'No se pudo cerrar el archivo temporal.',
@@ -2409,31 +2411,33 @@ La dirección de correo electrónico que indicaste en [[Special:Preferences|tus
 
 'enotif_mailer' => 'Notificación por correo de {{SITENAME}}',
 'enotif_reset' => 'Marcar todas las páginas como visitadas',
-'enotif_newpagetext' => 'Se trata de una nueva página.',
 'enotif_impersonal_salutation' => 'usuario de {{SITENAME}}',
-'changed' => 'modificada',
-'created' => 'creada',
-'enotif_subject' => 'La página $PAGETITLE de {{SITENAME}} ha sido $CHANGEDORCREATED por $PAGEEDITOR',
+'enotif_subject_deleted' => 'La página $1 de {{SITENAME}} ha sido eliminada por {{gender:$2|$2}}',
+'enotif_subject_created' => 'La página $1 de {{SITENAME}} ha sido creada por {{GENDER:$2|$2}}',
+'enotif_subject_moved' => 'La página $1 de {{SITENAME}} ha sido trasladada por {{GENDER:$2|$2}}',
+'enotif_subject_restored' => 'La página $1 de {{SITENAME}} ha sido restaurada por {{GENDER:$2|$2}}',
+'enotif_subject_changed' => 'La página $1 de {{SITENAME}} ha sido cambiada por {{GENDER:$2|$2}}',
+'enotif_body_intro_deleted' => 'La página $1 de {{SITENAME}} ha sido borrada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.',
+'enotif_body_intro_created' => 'La página $1 de {{SITENAME}} ha sido creada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.',
+'enotif_body_intro_moved' => 'La página $1 de {{SITENAME}} ha sido trasladada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.',
+'enotif_body_intro_restored' => 'La página $1 de {{SITENAME}} ha sido restaurada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.',
+'enotif_body_intro_changed' => 'La página $1 de {{SITENAME}} ha sido cambiada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3 para la revisión actual.',
 'enotif_lastvisited' => 'Consulta $1 para ver todos los cambios realizados desde tu última visita.',
 'enotif_lastdiff' => 'Consulta $1 para ver este cambio.',
 'enotif_anon_editor' => 'usuario anónimo $1',
 'enotif_body' => 'Estimado/a $WATCHINGUSERNAME,
 
-La página de {{SITENAME}} $PAGETITLE ha sido $CHANGEDORCREATED el $PAGEEDITDATE por el usuario $PAGEEDITOR.
-La versión actual se encuentra en $PAGETITLE_URL
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
-El resumen de edición es: $PAGESUMMARY $PAGEMINOREDIT
+Resumen de edición: $PAGESUMMARY $PAGEMINOREDIT
 
-Contacta al editor:
+Contacta con el editor:
 Correo electrónico: $PAGEEDITOR_EMAIL
 Wiki: $PAGEEDITOR_WIKI
 
-No habrá otras notificaciones en caso de cambios adicionales, a menos que visites esta página nuevamente.
-También puedes reestablecer las notificaciones para todas tus páginas vigiladas en tu página de vigilancia.
+No habrá otras notificaciones en caso de cambios adicionales, a menos que visites esta página nuevamente. También puedes reestablecer las notificaciones de todas tus páginas que sigas en tu página de vigilancia.
 
-             El sistema de notificación de {{SITENAME}}.
+El sistema de notificaciones de {{SITENAME}}.
 
 --
 Para cambiar las opciones de tu lista de seguimiento, visita:
@@ -2442,7 +2446,7 @@ Para cambiar las opciones de tu lista de seguimiento, visita:
 Para borrar la página de tu lista de seguimiento visita:
 $UNWATCHURL
 
-Retroalimentación y asistencia adicional:
+Comentarios y asistencia adicional:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
 
 # Delete
@@ -2632,8 +2636,8 @@ $1',
 'contribsub2' => '$1 ($2)',
 'nocontribs' => 'No se encontraron cambios que cumplieran estos criterios.',
 'uctop' => '(última edición)',
-'month' => 'Desde el mes (y anterior):',
-'year' => 'Desde el año (y anterior):',
+'month' => 'Desde el mes (y anteriores):',
+'year' => 'Desde el año (y anteriores):',
 
 'sp-contributions-newbies' => 'Mostrar solo las contribuciones de usuarios nuevos',
 'sp-contributions-newbies-sub' => 'Para cuentas nuevas',
@@ -2770,7 +2774,7 @@ Consulta la [[Special:BlockList|lista de bloqueos]] para ver la lista de bloqueo
 'block-log-flags-noemail' => 'correo electrónico deshabilitado',
 'block-log-flags-nousertalk' => 'no puede editar su propia página de discusión',
 'block-log-flags-angry-autoblock' => 'autobloqueo avanzado habilitado',
-'block-log-flags-hiddenname' => 'nombre de usuario oculto',
+'block-log-flags-hiddenname' => 'nombre de usuario ocultado',
 'range_block_disabled' => 'La facultad de administrador de crear bloqueos por rangos está deshabilitada.',
 'ipb_expiry_invalid' => 'El tiempo de caducidad no es válido.',
 'ipb_expiry_temp' => 'Los bloqueos a nombres de usuario ocultos deben ser permanentes.',
@@ -2818,7 +2822,7 @@ Sin embargo, está bloqueada como parte del rango $2, que puede ser desbloqueado
 # Move page
 'move-page' => 'Trasladar $1',
 'move-page-legend' => 'Renombrar página',
-'movepagetext' => "Usando el siguiente formulario se renombrará una página, moviendo todo su historial al nuevo nombre.
+'movepagetext' => "Usando el siguiente formulario se renombrará una página, trasladando todo su historial al nuevo nombre.
 El título anterior se convertirá en una redirección al nuevo título.
 Los enlaces al antiguo título de la página no se cambiarán.
 Asegúrate de no dejar [[Special:DoubleRedirects|redirecciones dobles]] o [[Special:BrokenRedirects|rotas]].
@@ -2830,7 +2834,7 @@ Esto significa que podrás renombrar una página a su título original si has co
 '''¡Aviso!'''
 Este puede ser un cambio drástico e inesperado para una página popular;
 por favor, asegúrate de entender las consecuencias del procedimiento antes de seguir adelante.",
-'movepagetext-noredirectfixer' => "Usando el siguiente formulario se renombrará una página, moviendo todo su historial al nuevo nombre.
+'movepagetext-noredirectfixer' => "Usando el siguiente formulario se renombrará una página, trasladando todo su historial al nuevo nombre.
 El título anterior se convertirá en una redirección al nuevo título.
 Asegúrate de no dejar [[Special:DoubleRedirects|redirecciones dobles]] o [[Special:BrokenRedirects|rotas]].
 Tú eres responsable de hacer que los enlaces sigan apuntando adonde se supone que deberían hacerlo.
@@ -2842,19 +2846,19 @@ Esto significa que podrás renombrar una página a su título original si has co
 Este puede ser un cambio drástico e inesperado para una página popular;
 por favor, asegúrate de entender las consecuencias del procedimiento antes de seguir adelante.",
 'movepagetalktext' => "La página de discusión asociada, si existe, será renombrada automáticamente '''a menos que:'''
-*Esté moviendo la página entre espacios de nombres diferentes,
+*Estés trasladando la página entre espacios de nombres diferentes,
 *Una página de discusión no vacía ya exista con el nombre nuevo, o
-*No actives la opción «Renombrar la página de discusión también».
+*No marques el recuadro «Renombrar la página de discusión asociada».
 
 En estos casos, deberás trasladar manualmente el contenido de la página de discusión.",
 'movearticle' => 'Renombrar página',
-'moveuserpage-warning' => "'''Aviso:''' estás a punto de mover una página de usuario. Ten en cuenta que solo será trasladada la página; el usuario '''no''' será renombrado.",
+'moveuserpage-warning' => "'''Aviso:''' estás a punto de trasladar una página de usuario. Ten en cuenta que solo será trasladada la página; el usuario '''no''' será renombrado.",
 'movenologin' => 'No has iniciado sesión',
 'movenologintext' => 'Es necesario ser usuario registrado y [[Special:UserLogin|haber iniciado sesión]] para renombrar una página.',
-'movenotallowed' => 'No tienes permiso para mover páginas.',
-'movenotallowedfile' => 'No tienes permiso para mover archivos.',
-'cant-move-user-page' => 'No tienes permiso para mover páginas de usuario (excepto subpáginas).',
-'cant-move-to-user-page' => 'No tienes permiso para mover una página a una página de usuario (excepto a subpáginas de usuario).',
+'movenotallowed' => 'No tienes permiso para trasladar páginas.',
+'movenotallowedfile' => 'No tienes permiso para trasladar archivos.',
+'cant-move-user-page' => 'No tienes permiso para trasladar páginas de usuario (excepto subpáginas).',
+'cant-move-to-user-page' => 'No tienes permiso para trasladar una página a una página de usuario (excepto a subpáginas de usuario).',
 'newtitle' => 'A título nuevo:',
 'move-watch' => 'Vigilar páginas de origen y destino',
 'movepagebtn' => 'Renombrar página',
@@ -2864,8 +2868,8 @@ En estos casos, deberás trasladar manualmente el contenido de la página de dis
 'movepage-moved-noredirect' => 'Se ha suprimido la creación de la redirección.',
 'articleexists' => 'Ya existe una página con ese nombre, o el nombre que has escogido no es válido.
 Por favor, elige otro nombre.',
-'cantmove-titleprotected' => 'No puedes mover la página a esta ubicación, porque el nuevo título ha sido protegido para evitar su creación.',
-'talkexists' => 'La página fue renombrada con éxito, pero la discusión no se pudo mover porque ya existe una en el título nuevo. Por favor incorpora sus contenidos manualmente.',
+'cantmove-titleprotected' => 'No puedes trasladar la página a esta ubicación, porque el nuevo título ha sido protegido para evitar su creación.',
+'talkexists' => 'La página fue renombrada con éxito, pero la discusión no se pudo trasladar porque ya existe una con el título nuevo. Por favor, incorpora sus contenidos manualmente.',
 'movedto' => 'renombrado a',
 'movetalk' => 'Renombrar la página de discusión asociada',
 'move-subpages' => 'Intentar trasladar las subpáginas (hasta $1)',
@@ -2873,7 +2877,7 @@ Por favor, elige otro nombre.',
 'movepage-page-exists' => 'La página $1 ya existe, por lo que no puede ser renombrada automáticamente.',
 'movepage-page-moved' => 'La página $1 ha sido trasladada a $2.',
 'movepage-page-unmoved' => 'La página $1 no se ha podido trasladar a $2.',
-'movepage-max-pages' => 'Se {{PLURAL:$1|ha trasladado un máximo de una página|han trasladado un máximo de $1 páginas}}, y no se van a mover más automáticamente.',
+'movepage-max-pages' => 'Se {{PLURAL:$1|ha trasladado un máximo de una página|han trasladado un máximo de $1 páginas}}, y no van a trasladarse más automáticamente.',
 'movelogpage' => 'Registro de traslados',
 'movelogpagetext' => 'Abajo se encuentra una lista de páginas trasladadas.',
 'movesubpage' => '{{PLURAL:$1|Subpágina|Subpáginas}}',
@@ -2896,7 +2900,7 @@ no se puede trasladar una página sobre sí misma.',
 'immobile-target-page' => 'No se puede trasladar a tal título.',
 'bad-target-model' => 'El destino deseado utiliza un modelo diferente de contenido. No se puede realizar la conversión de $1 a $2.',
 'imagenocrossnamespace' => 'No se puede trasladar el fichero a otro espacio de nombres',
-'nonfile-cannot-move-to-file' => 'No es posible mover un no-archivo al espacio de nombres de archivo',
+'nonfile-cannot-move-to-file' => 'No es posible trasladar lo que no es un archivo al espacio de nombres de archivo',
 'imagetypemismatch' => 'La nueva extensión de archivo no corresponde con su tipo',
 'imageinvalidfilename' => 'El nombre del fichero de destino no es válido',
 'fix-double-redirects' => 'Actualizar las redirecciones que apuntan al título original',
@@ -2906,7 +2910,7 @@ A continuación se muestra la última entrada de registro para referencia:",
 'semiprotectedpagemovewarning' => "'''Nota:''' Esta página ha sido bloqueada para que  solamente usuarios registrados pueden moverla.
 A continuación se muestra la última entrada de registro para referencia:",
 'move-over-sharedrepo' => '== El archivo existe ==
-[[:$1]] existe en un repositorio compartido. Mover el archivo a este título invalidará el archivo compartido.',
+[[:$1]] existe en un repositorio compartido. El traslado a este título invalidará la compartición del archivo.',
 'file-exists-sharedrepo' => 'El nombre de archivo elegido ya está siendo usado en un repositorio compartido.
 Por favor, elige otro nombre.',
 
@@ -3051,8 +3055,8 @@ Puedes ver su código fuente',
 'tooltip-ca-unprotect' => 'Cambiar protección de esta página',
 'tooltip-ca-delete' => 'Borrar esta página',
 'tooltip-ca-undelete' => 'Restaurar las ediciones hechas a esta página antes de que fuese borrada',
-'tooltip-ca-move' => 'Mover esta página',
-'tooltip-ca-watch' => 'Añadir esta página a su lista de seguimiento',
+'tooltip-ca-move' => 'Trasladar esta página',
+'tooltip-ca-watch' => 'Añadir esta página a tu lista de seguimiento',
 'tooltip-ca-unwatch' => 'Borrar esta página de su lista de seguimiento',
 'tooltip-search' => 'Buscar en {{SITENAME}}',
 'tooltip-search-go' => 'Ir al artículo con este nombre exacto si existe',
@@ -3090,7 +3094,7 @@ Puedes ver su código fuente',
 'tooltip-preview' => 'Previsualiza los cambios realizados. ¡Por favor, hazlo antes de grabar!',
 'tooltip-diff' => 'Muestra los cambios que ha introducido en el texto.',
 'tooltip-compareselectedversions' => 'Ver las diferencias entre las dos versiones seleccionadas de esta página.',
-'tooltip-watch' => 'Añadir esta página a su lista de seguimiento',
+'tooltip-watch' => 'Añadir esta página a tu lista de seguimiento',
 'tooltip-watchlistedit-normal-submit' => 'Borrar páginas',
 'tooltip-watchlistedit-raw-submit' => 'Actualizar lista de seguimiento',
 'tooltip-recreate' => 'Recupera una página que ha sido borrada',
@@ -3223,6 +3227,8 @@ Esto podría estar causado por un enlace a un sitio externo incluido en la lista
 'markedaspatrollederror' => 'No se puede marcar como patrullada',
 'markedaspatrollederrortext' => 'Debes especificar una revisión para marcarla como patrullada.',
 'markedaspatrollederror-noautopatrol' => 'No tienes permisos para marcar tus propios cambios como revisados.',
+'markedaspatrollednotify' => 'Este cambio realizado en $1 se ha marcado como revisado.',
+'markedaspatrollederrornotify' => 'Error al marcar como revisado.',
 
 # Patrol log
 'patrol-log-page' => 'Registro de revisiones',
@@ -3291,6 +3297,7 @@ Ejecutarlo podría comprometer la seguridad de su equipo.",
 'hours' => '{{PLURAL:$1|una hora|$1 horas}}',
 'days' => '{{PLURAL:$1|un día|$1 días}}',
 'ago' => 'hace $1',
+'just-now' => 'Ahora mismo',
 
 # Bad image list
 'bad_image_list' => 'El formato es el siguiente:
@@ -4024,9 +4031,9 @@ Este sitio está experimentando dificultades técnicas.',
 'logentry-suppress-revision' => '$1 modificó secretamente la visibilidad de {{PLURAL:$5|una edición|$5 ediciones}} en la página $3: $4',
 'logentry-suppress-event-legacy' => '$1 modificó secretamente la visibilidad de los eventos del registro en $3',
 'logentry-suppress-revision-legacy' => '$1 modificó secretamente la visibilidad de las ediciones en la página $3',
-'revdelete-content-hid' => 'contenido oculto',
+'revdelete-content-hid' => 'contenido ocultado',
 'revdelete-summary-hid' => 'resumen de edición oculto',
-'revdelete-uname-hid' => 'nombre de usuario oculto',
+'revdelete-uname-hid' => 'nombre de usuario ocultado',
 'revdelete-content-unhid' => 'contenido mostrado',
 'revdelete-summary-unhid' => 'resumen de edición mostrado',
 'revdelete-uname-unhid' => 'nombre de usuario mostrado',
@@ -4038,9 +4045,9 @@ Este sitio está experimentando dificultades técnicas.',
 'logentry-move-move_redir-noredirect' => '$1 movió la página $3 a $4 sobre una redirección, sin dejar redirección',
 'logentry-patrol-patrol' => '$1 marcó la edición $4 de la página $3 como patrullada',
 'logentry-patrol-patrol-auto' => '$1 marcó automáticamente la edición $4 de la página $3 como patrullada',
-'logentry-newusers-newusers' => '$1 creó una cuenta de usuario',
-'logentry-newusers-create' => '$1 creó una cuenta de usuario',
-'logentry-newusers-create2' => '$1 creó una cuenta de usuario $3',
+'logentry-newusers-newusers' => 'Se ha creado la cuenta de usuario $1',
+'logentry-newusers-create' => 'Se ha creado la cuenta de usuario $1',
+'logentry-newusers-create2' => '$1 ha creado la cuenta de usuario $3',
 'logentry-newusers-autocreate' => 'La cuenta $1 fue creada automáticamente',
 'newuserlog-byemail' => 'contraseña enviada por correo electrónico',
 
@@ -4118,5 +4125,5 @@ En otro caso, puedes usar el siguiente formulario. Tu comentario será añadido
 'duration-millennia' => '$1 {{PLURAL:$1|milenio|milenios}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'discusión',
+'svg-long-error' => 'Archivo SVG no válido: $1',
 );
index a73374c..3c488e0 100644 (file)
@@ -698,10 +698,9 @@ Administraator lukustas selle järgmisel põhjusel: "$3".',
 
 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.",
-'welcomecreation' => '== Tere tulemast, $1! ==
-
-Sinu konto on loodud.
-Ära unusta oma {{GRAMMAR:genitive|{{SITENAME}}}} [[Special:Preferences|eelistusi]] seada.',
+'welcomeuser' => 'Tere tulemast, $1!',
+'welcomecreation-msg' => 'Sinu konto on loodud.
+Ära unusta seada oma {{GRAMMAR:genitive|{{SITENAME}}}} [[Eri:Eelistused|eelistusi]].',
 'yourname' => 'Kasutajanimi:',
 'yourpassword' => 'Parool:',
 'yourpasswordagain' => 'Sisesta parool uuesti:',
@@ -2289,11 +2288,7 @@ Kui tahad seda lehte hiljem jälgimisloendist eemaldada, klõpsa päisenupule \"
 
 'enotif_mailer' => '{{GRAMMAR:genitive|{{SITENAME}}}} lehekülje muutmise teavitaja',
 'enotif_reset' => 'Märgi kõik lehed loetuks',
-'enotif_newpagetext' => 'See on uus lehekülg.',
 'enotif_impersonal_salutation' => '{{GRAMMAR:genitive|{{SITENAME}}}} kasutaja',
-'changed' => 'muutnud lehekülge',
-'created' => 'loonud lehekülje',
-'enotif_subject' => '$PAGEEDITOR on {{GRAMMAR:inessive|{{SITENAME}}}} $CHANGEDORCREATED $PAGETITLE',
 'enotif_lastvisited' => 'Kõigi sinu viimase külastuse järel tehtud muudatuste nägemiseks vaata: $1.',
 'enotif_lastdiff' => 'Muudatus on leheküljel $1.',
 'enotif_anon_editor' => 'anonüümne kasutaja $1',
index a490b8c..f18d272 100644 (file)
@@ -173,7 +173,7 @@ $messages = array(
 
 'underline-always' => 'Beti',
 'underline-never' => 'Inoiz ez',
-'underline-default' => 'Nabigatzailearen lehenetsitako balioa',
+'underline-default' => 'Lehenetsitako nabigatzailea',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Aldatu eremuko letra tipoa:',
@@ -258,8 +258,8 @@ $messages = array(
 'newwindow' => '(leiho berrian irekitzen da)',
 'cancel' => 'Utzi',
 'moredotdotdot' => 'Gehiago...',
-'mypage' => 'Nire orrialdea',
-'mytalk' => 'Nire eztabaida',
+'mypage' => 'Orrialdea',
+'mytalk' => 'Eztabaida',
 'anontalk' => 'IP honen eztabaida',
 'navigation' => 'Nabigazioa',
 'and' => '&#32;eta',
@@ -281,7 +281,7 @@ $messages = array(
 'vector-action-protect' => 'Babestu',
 'vector-action-undelete' => 'Berreskuratu',
 'vector-action-unprotect' => 'Babesa aldatu',
-'vector-simplesearch-preference' => 'Baimendu bilaketa gomendio hobetuak (Vector itxurarekin bakarrik)',
+'vector-simplesearch-preference' => 'Bilaketa barra sinplifikatua gaitu (Vector itxurarekin bakarrik)',
 'vector-view-create' => 'Sortu',
 'vector-view-edit' => 'Aldatu',
 'vector-view-history' => 'Historia ikusi',
@@ -493,7 +493,8 @@ Kontsulta: $2',
 Saia zaitez berriro minutu batzuen buruan, mesedez.',
 'protectedpagetext' => 'Orrialde hau aldaketak saihesteko blokeatu egin da.',
 'viewsourcetext' => 'Orrialde honen testua ikusi eta kopiatu dezakezu:',
-'protectedinterface' => 'Orrialde honek softwarearentzako interfaze testua gordetzen du eta blokeatuta dago bandalismoak saihesteko.',
+'protectedinterface' => 'Orrialde honek softwarearentzako interfaze testua gordetzen du eta blokeatuta dago bandalismoak saihesteko.
+Wiki guztientzako aldaketak egin edo gehitzeko, mesedez erabili [//translatewiki.net/ translatewiki.net], MediaWikiren lokalizazio proiektua.',
 'editinginterface' => "'''Oharra:''' Softwarearentzako interfaze testua duen orrialde bat aldatzen ari zara.
 Orrialde honetako aldaketek erabiltzaile guztiei eragingo die.
 Itzulpenetarako, [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] erabili ezazu, MediaWiki proiektuan.",
@@ -504,6 +505,7 @@ $2",
 'ns-specialprotected' => 'Ezin dira {{ns:special}} izen-tarteko orrialdeak editatu.',
 'titleprotected' => "[[User:$1|$1]]ek izenburu hau sortzea ekidin zuen.
 Emandako arrazoia ''$2'' izan zen.",
+'exception-nologin' => 'Saioa hasi gabe',
 
 # Virus scanner
 'virus-badscanner' => "Ezarpen txarrak: antibirus ezezaguna: ''$1''",
@@ -515,9 +517,6 @@ Emandako arrazoia ''$2'' izan zen.",
 
 Erabiltzaile anonimo bezala jarrai dezakezu {{SITENAME}} erabiltzen, edo <span class='plainlinks'>[$1 saioa has dezakezu berriz]</span> erabiltzaile berdinarekin edo ezberdin batekin.
 Kontuan izan orrialde batzuk saioa hasita bazenu bezala ikus ditzakezula nabigatzailearen katxea garbitu arte.",
-'welcomecreation' => '== Ongi etorri, $1! ==
-
-Zure kontua sortu egin da. Ez ahaztu [[Special:Preferences|{{SITENAME}}(e)ko hobespenak]] aldatzea.',
 'yourname' => 'Erabiltzaile izena',
 'yourpassword' => 'Pasahitza:',
 'yourpasswordagain' => 'Pasahitza berriz',
@@ -593,6 +592,7 @@ Ondorioz, ezin duzu kontu gehiago sortu.',
 'invalidemailaddress' => 'Ezin da e-posta helbide hori ontzat eman baliogabeko formatua duela dirudielako.
 
 Mesedez, formatu egokia duen helbide bat zehaztu, edo hutsik utzi.',
+'emaildisabled' => 'Gune honek ezin du e-postarik bidali.',
 'accountcreated' => 'Kontua sortuta',
 'accountcreatedtext' => '$1 erabiltzaile kontua sortu egin da.',
 'createaccount-title' => '{{SITENAME}}-rako kontua sortu',
@@ -734,9 +734,9 @@ Erabiltzaile anonimoa bazara eta zurekin zerikusirik ez duten mezuak jasotzen ba
 Beste orrialde batzuetan [[Special:Search/{{PAGENAME}}|bilatu dezakezu izenburu hau]],
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} bilatu lotutako logak],
 edo [{{fullurl:{{FULLPAGENAME}}|action=edit}} berau aldatu ere egin dezakezu]</span>.',
-'noarticletext-nopermission' => 'Une honetan ez dago texturik orri honetan.
-Beste orrietan [[Special:Search/{{PAGENAME}}|testua bilatu dezakezu]],
-edo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} erlazionatutako erregistroak ikusi]</span>.',
+'noarticletext-nopermission' => 'Une honetan ez dago testurik orrialde honetan.
+Beste orrialdeetan [[Special:Search/{{PAGENAME}}|izenburu hau bilatu dezakezu]],
+edo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} erlazionatutako erregistroak bilatu]</span>, baina ez duzu orrialde hau sortzeko baimenik.',
 'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" lankidea ez dago erregistatuta. Mesedez, konprobatu orri hau editatu/sortu nahi duzun.',
 'userpage-userdoesnotexist-view' => '"$1" erabiltzaile-kontua ez dago erregistraturik.',
 'blocked-notice-logextract' => 'Erabiltzaile hau blokeatuta dago une honetan.
@@ -760,7 +760,7 @@ Azken blokeoaren erregistroa ageri da behean, erreferentzia gisa:',
 'note' => "'''Oharra:'''",
 'previewnote' => "'''Gogoratu hau aurrikuspen bat dela.'''
 Zure aldaketak ez dira oraindik gorde!",
-'continue-editing' => 'Aldatzen jarraitu',
+'continue-editing' => 'Edizio-eremura joan',
 'previewconflict' => 'Aurreikuspenak aldaketen koadroan idatzitako testua erakusten du, gorde ondoren agertuko den bezala.',
 'session_fail_preview' => "'''Sentitzen dugu! Ezin izan da zure aldaketa prozesatu, saioko datu batzuen galera dela-eta. Mesedez, saiatu berriz. Arazoak jarraitzen badu, saiatu saioa amaitu eta berriz hasten.'''",
 'session_fail_preview_html' => "'''Sentitzen dugu! Ezin izan dugu zure aldaketa burutu, saio datu galera bat medio.'''
@@ -834,6 +834,12 @@ Ez du azalpenik eman.',
 'edit-already-exists' => 'Ezin izan da orri berria sortu.
 Jada existitzen da.',
 
+# Content models
+'content-model-wikitext' => 'wikitestua',
+'content-model-text' => 'testu laua',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
+
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Adi: Orrialde honek parser funtzio deialdi oso garesti gehiegi ditu.
 
@@ -1107,7 +1113,7 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
 
 # Preferences page
 'preferences' => 'Hobespenak',
-'mypreferences' => 'Nire hobespenak',
+'mypreferences' => 'Hobespenak',
 'prefs-edits' => 'Aldaketa kopurua:',
 'prefsnologin' => 'Saioa hasi gabe',
 'prefsnologintext' => '<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} Izena eman]</span> behar duzu zure hobespenak ezartzeko.',
@@ -1118,6 +1124,7 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
 'prefs-beta' => 'Beta ezaugarriak',
 'prefs-datetime' => 'Data eta ordua',
 'prefs-labs' => 'Labs ezaugarriak',
+'prefs-user-pages' => 'Erabiltzaile orrialdeak',
 'prefs-personal' => 'Erabiltzaile profila',
 'prefs-rc' => 'Azken aldaketak',
 'prefs-watchlist' => 'Jarraipen zerrenda',
@@ -1166,7 +1173,7 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
 'timezoneregion-indian' => 'Indiar Ozeanoa',
 'timezoneregion-pacific' => 'Ozeano Barea',
 'allowemail' => 'Beste erabiltzaileengandik e-posta mezuak jasotzea gaitu',
-'prefs-searchoptions' => 'Bilaketa aukerak',
+'prefs-searchoptions' => 'Bilatu',
 'prefs-namespaces' => 'Izen-tarteak',
 'defaultns' => 'Bestela izen-tarte hauetan bilatu:',
 'default' => 'lehenetsia',
@@ -1836,7 +1843,7 @@ Ikus, gainera [[Special:WantedCategories|kategoriarik eskatuenak]].',
 'linksearch-ok' => 'Bilatu',
 'linksearch-text' => '"*.wikipedia.org" bezalako izartxoak erabil daitezke.
 Gutxienez goi mailako domeinua behar du, adibidez "*.org".<br />
-Baimendutako protokoloak: <code>$1</code> (zure bilaketan hauek ez gehitu).',
+Baimendutako protokoloak: <code>$1</code> (protokoloa zehazten ez bada http:// hartzen da lehenetsitzat).',
 'linksearch-line' => '$1, $2(e)tik lotuta',
 'linksearch-error' => 'Komodinak izenaren hasieran bakarrik agertu beharko lirateke.',
 
@@ -1944,11 +1951,7 @@ Jarraipen zerrendatik artikulua kentzeko, artikuluan ''ez jarraitu''ri eman.",
 
 'enotif_mailer' => '{{SITENAME}}(e)ko Oharpen Postaria',
 'enotif_reset' => 'Orrialde guztiak bisitatu bezala markatu',
-'enotif_newpagetext' => 'Honako hau orrialde berria da.',
 'enotif_impersonal_salutation' => '{{SITENAME}} erabiltzailea',
-'changed' => 'aldatu',
-'created' => 'sortu',
-'enotif_subject' => '{{SITENAME}}(e)ko $PAGETITLE orrialdea $PAGEEDITOR(e)k $CHANGEDORCREATED du',
 'enotif_lastvisited' => 'Jo $1 orrialdera zure azken bisitaz geroztik izandako aldaketa guztiak ikusteko.',
 'enotif_lastdiff' => 'Jo $1(e)ra aldaketa hau ikusteko.',
 'enotif_anon_editor' => '$1 erabiltzaile anonimoa',
@@ -2197,10 +2200,11 @@ Blokeo erregistroa azken sarrera ematen da azpian erreferentziarako:',
 'whatlinkshere-hideredirs' => '$1 birzuzenketak',
 'whatlinkshere-hidetrans' => '$1 transklusioak',
 'whatlinkshere-hidelinks' => '$1 loturak',
-'whatlinkshere-hideimages' => '$1 irudiak loturak ditu',
+'whatlinkshere-hideimages' => '$1 irudi loturak',
 'whatlinkshere-filters' => 'Iragazleak',
 
 # Block/unblock
+'autoblockid' => 'Blokeo automatikoa #$1',
 'block' => 'Erabiltzailea blokeatu',
 'unblock' => 'Erabiltzailea desblokeatu',
 'blockip' => 'Erabiltzailea blokeatu',
@@ -2599,6 +2603,9 @@ Baliteke zerrenda beltzean dagoen kanpo lotura batek sortzea arazo hori.',
 'pageinfo-header-edits' => 'Aldaketen historia',
 'pageinfo-views' => 'Bistaratze-kopurua',
 'pageinfo-edits' => 'Aldaketa kopuru totala',
+'pageinfo-redirectsto-info' => 'Info',
+'pageinfo-contentpage-yes' => 'Bai',
+'pageinfo-protect-cascading-yes' => 'Bai',
 
 # Skin names
 'skinname-standard' => 'Lehenetsia',
@@ -3285,7 +3292,11 @@ Irudiak bereizmen handienean daude, bestelako fitxategi motak beraiei esleitutak
 'revdelete-restricted' => 'administratzaileentzako mugak ezarri dira',
 'revdelete-unrestricted' => 'administratzaileentzako mugak kendu dira',
 'logentry-move-move' => '$1 wikilariak «$3» orria «$4» izenera aldatu du',
+'logentry-move-move-noredirect' => '$1 wikilariak «$3» orria «$4» izenera aldatu du, birzuzenketarik utzi gabe',
 'logentry-move-move_redir-noredirect' => '$1 wikilariak «$3» orria «$4» izenera aldatu du, birzuzenketa bat gainidatzita, birzuzenketarik utzi gabe',
+'logentry-newusers-newusers' => '$1 wikilariak erabiltzaile kontu bat sortu du',
+'logentry-newusers-create' => '$1 wikilariak erabiltzaile kontu bat sortu du',
+'logentry-newusers-create2' => '$1 wikilariak $3 erabiltzaile kontu bat sortu du',
 'newuserlog-byemail' => 'pasahitza e-postaz bidali da',
 
 # Feedback
index bbfb129..10cb2b8 100644 (file)
@@ -378,10 +378,6 @@ La razón es la siguienti: ''$2''.",
 'logouttext' => "'''Cuenta afechá corretamenti.'''<br />
 Pueis acontinal gastandu {{SITENAME}} de holma anónima, u <span class='plainlinks'>[$1 entral ena tu cuenta]</span> con el mesmu ussuáriu, u con otru.
 Dati cuenta que hata que nu esborris el caché del tu escrucaol pué paecel que la tu cuenta acontina abierta n'angunas páginas.",
-'welcomecreation' => "== Bienviniu, $1! ==
-
-La tu cuenta d'ussuáriu á siu criá.
-Alcuerdati de chambal las tus [[Special:Preferences|preferéncias de {{SITENAME}}]].",
 'yourname' => "Nombri d'usuáriu:",
 'yourpassword' => 'Consínia:',
 'yourpasswordagain' => 'Escrebi e nuevu la consínia:',
@@ -1421,11 +1417,7 @@ Si quieis ehal de vehilal la páhina, pursa sobri \"Ehal de vehilal\".",
 
 'enotif_mailer' => 'Notificaeru pol correu e {{SITENAME}}',
 'enotif_reset' => 'Aseñalal tolas páhinas vesitás',
-'enotif_newpagetext' => 'Esta páhina es nueva.',
 'enotif_impersonal_salutation' => 'usuáriu e {{SITENAME}}',
-'changed' => 'chambau',
-'created' => 'criá',
-'enotif_subject' => '{{SITENAME}}: la páhina $PAGETITLE á siu $CHANGEDORCREATED pol $PAGEEDITOR',
 'enotif_lastvisited' => 'Vai pa $1 pa visoreal tolos chambus hechus dendi la tu úrtima vesita.',
 'enotif_lastdiff' => 'Vai pa $1 pa visoreal esti chambu.',
 'enotif_anon_editor' => 'usuáriu anónimu $1',
index 98f6400..ea1acb1 100644 (file)
@@ -592,6 +592,7 @@ $messages = array(
 'namespaces' => 'فضاهای نام',
 'variants' => 'گویش‌ها',
 
+'navigation-heading' => 'منوی ناوبری',
 'errorpagetitle' => 'خطا',
 'returnto' => 'بازگشت به $1.',
 'tagline' => 'از {{SITENAME}}',
@@ -843,9 +844,7 @@ $2',
 
 شما می‌توانید به استفادهٔ گمنام از {{SITENAME}} ادامه دهید، یا با همین حساب کاربری یا حسابی دیگر <span class='plainlinks'>[$1 به سامانه وارد شوید]</span>.
 توجه کنید که تا زمانی که میانگیر مرورگرتان را پاک نکنید، بعضی صفحه‌ها ممکن است به گونه‌ای نمایش یابند که گویی هنوز از سامانه خارج نشده‌اید.",
-'welcomecreation' => '==$1، خوش آمدید!==
-حساب شما ایجاد شد.
-فراموش نکنید که [[Special:Preferences|ترجیحات {{SITENAME}}]] را برای خود تغییر دهید.',
+'welcomeuser' => 'خوشامدید، $1!',
 'yourname' => 'نام کاربری:',
 'yourpassword' => 'گذرواژه:',
 'yourpasswordagain' => 'تکرار گذرواژه:',
@@ -1756,7 +1755,7 @@ $1",
 'rightslogentry-autopromote' => 'به طور خودکار از $2 به $3 ارتقا یافت',
 'logentry-rights-rights' => '$1 عضویت $3 را از گروه $4 به $5 تغییر داد',
 'logentry-rights-rights-legacy' => '$1 گروه عضویت $3 را تغییر داد',
-'logentry-rights-autopromote' => '$1به طور خودکار از $4  به $5 ارتقا یافت',
+'logentry-rights-autopromote' => '$1 به طور خودکار از $4 به $5 ارتقا یافت',
 'rightsnone' => '(هیچ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1995,6 +1994,7 @@ $1',
 'backend-fail-notsame' => 'پروندهٔ غیریکسانی در $1 وجود دارد.',
 'backend-fail-invalidpath' => '$1 مسیر ذخیره‌سازی معتبری نیست.',
 'backend-fail-delete' => 'نمی‌توان پروندهٔ $1 را حذف کرد.',
+'backend-fail-describe' => 'نمی‌توان فرادادهٔ پروندهٔ «$1» را تغییر داد.',
 'backend-fail-alreadyexists' => 'پروندهٔ $1 از قبل وجود داشت.',
 'backend-fail-store' => 'نمی‌توان پروندهٔ $1 را در $2 ذخیره کرد.',
 'backend-fail-copy' => 'نمی‌توان پروندهٔ $1 را به $2 کپی کرد.',
@@ -2503,11 +2503,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 
 'enotif_mailer' => 'رایانامهٔ اطلاع‌رسانی {{SITENAME}}',
 'enotif_reset' => 'علامت‌گذاری همهٔ صفحه‌ها به عنوان بازدید شده',
-'enotif_newpagetext' => 'این یک صفحهٔ تازه‌است.',
 'enotif_impersonal_salutation' => 'کاربر {{SITENAME}}',
-'changed' => 'تغییر یافته',
-'created' => 'ایجاد شده',
-'enotif_subject' => 'صفحهٔ «$PAGETITLE» در {{SITENAME}} به دست $PAGEEDITOR $CHANGEDORCREATED است.',
 'enotif_lastvisited' => 'برای دیدن همهٔ تغییرات از آخرین باری که سر زده‌اید $1 را ببینید.',
 'enotif_lastdiff' => 'برای نمایش این تغییر $1 را ببینید.',
 'enotif_anon_editor' => 'کاربر ناشناس $1',
@@ -3304,6 +3300,8 @@ $1',
 'markedaspatrollederror' => 'برچسب گشت زده نشد',
 'markedaspatrollederrortext' => 'باید یک نسخه را مشخص کنید تا برچسب گشت بخورد.',
 'markedaspatrollederror-noautopatrol' => 'شما نمی‌توانید به تغییرات انجام شده توسط خودتان برچسب گشت بزنید.',
+'markedaspatrollednotify' => 'این تغییر روی $1 برچسب گشت خورده است.',
+'markedaspatrollederrornotify' => 'زدن برچسب گشت، ناموفق بود.',
 
 # Patrol log
 'patrol-log-page' => 'سیاههٔ گشت',
@@ -3368,6 +3366,7 @@ $1',
 'hours' => '{{PLURAL: $1|ساعت|ساعت}}',
 'days' => '{{PLURAL: $1|روز|روز}}',
 'ago' => '$1 پیش',
+'just-now' => 'هم‌اکنون',
 
 # Bad image list
 'bad_image_list' => 'اطلاعات را باید اینگونه وارد کنید:
@@ -4180,9 +4179,9 @@ $5
 'logentry-move-move_redir-noredirect' => '$1 صفحهٔ $3 را بدون برجای‌گذاشتن تغییرمسیر به $4 که تغییرمسیر بود منتقل کرد',
 'logentry-patrol-patrol' => '$1 نسخه $4 صفحه $3 را به عنوان گشت خورده علامت زد',
 'logentry-patrol-patrol-auto' => '$1 نسخه $4 صفحه $3 را به طور خودکار به عنوان گشت خورده علامت زد',
-'logentry-newusers-newusers' => '$1 یک حساب کاربری ایجاد کرد',
-'logentry-newusers-create' => '$1 یک حساب کاربری ایجاد کرد',
-'logentry-newusers-create2' => '$1 یک حساب کاربری ایجاد کرد $3',
+'logentry-newusers-newusers' => 'حساب کاربری $1 ایجاد شد',
+'logentry-newusers-create' => 'حساب کاربری $1 ایجاد شد',
+'logentry-newusers-create2' => 'حساب کاربری $3 توسط $1 ایجاد شد',
 'logentry-newusers-autocreate' => 'حساب $1  به شکل خودکار ساخته شد',
 'newuserlog-byemail' => 'گذرواژه بوسیله رایانامه ارسال شد',
 
@@ -4257,6 +4256,4 @@ $5
 'duration-centuries' => '$1 قرن',
 'duration-millennia' => '{{PLURAL:$1|هزار سال |$1 هزار سال}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'بحث',
 );
index 3c655b0..dcd71f1 100644 (file)
@@ -349,7 +349,7 @@ $messages = array(
 'tog-watchlisthidebots' => 'Piilota bottien muokkaukset',
 'tog-watchlisthideminor' => 'Piilota pienet muokkaukset',
 'tog-watchlisthideliu' => 'Piilota kirjautuneiden käyttäjien muokkaukset tarkkailulistalta',
-'tog-watchlisthideanons' => 'Piilota anonyymien käyttäjien muokkaukset tarkkailulistalta',
+'tog-watchlisthideanons' => 'Piilota rekisteröitymättömien käyttäjien muokkaukset tarkkailulistalta',
 'tog-watchlisthidepatrolled' => 'Piilota tarkastetut muokkaukset tarkkailulistalta',
 'tog-ccmeonemails' => 'Lähetä minulle kopio MediaWikin kautta lähetetyistä sähköposteista',
 'tog-diffonly' => 'Älä näytä sivun sisältöä versioita vertailtaessa',
@@ -455,7 +455,7 @@ $messages = array(
 'qbbrowse' => 'Selaa',
 'qbedit' => 'Muokkaa',
 'qbpageoptions' => 'Sivuasetukset',
-'qbmyoptions' => 'Asetukset',
+'qbmyoptions' => 'Omat sivut',
 'qbspecialpages' => 'Toimintosivut',
 'faq' => 'Usein kysytyt kysymykset',
 'faqpage' => 'Project:Usein kysytyt kysymykset',
@@ -477,6 +477,7 @@ $messages = array(
 'namespaces' => 'Nimiavaruudet',
 'variants' => 'Kirjoitusjärjestelmät',
 
+'navigation-heading' => 'Navigointivalikko',
 'errorpagetitle' => 'Virhe',
 'returnto' => 'Palaa sivulle $1.',
 'tagline' => '{{SITENAME}}',
@@ -671,7 +672,7 @@ Joku muu on saattanut poistaa sen.',
 'badtitle' => 'Virheellinen otsikko',
 'badtitletext' => 'Pyytämäsi sivuotsikko oli virheellinen, tyhjä tai väärin linkitetty kieltenvälinen tai wikienvälinen linkki.',
 'perfcached' => 'Tiedot ovat välimuistista eivätkä välttämättä ole ajan tasalla. Välimuistissa on saatavilla enintään {{PLURAL:$1|yksi tulos|$1 tulosta}}.',
-'perfcachedts' => 'Tiedot ovat välimuistista ja se päivitettiin viimeksi $1. Välimuistissa on saatavilla enintään {{PLURAL:$4|yksi tulos|$4 tulosta}}.',
+'perfcachedts' => 'Nämä tiedot ovat välimuistista, ja ne on päivitetty viimeksi $1. Välimuistissa on saatavilla enintään {{PLURAL:$4|yksi tulos|$4 tulosta}}.',
 'querypage-no-updates' => 'Tämän sivun tietoja ei toistaiseksi päivitetä.',
 'wrong_wfQuery_params' => 'Virheelliset parametrit wfQuery()<br />Funktio: $1<br />Tiedustelu: $2',
 'viewsource' => 'Lähdekoodi',
@@ -713,8 +714,8 @@ Lukituksen asettanut ylläpitäjä on antanut seuraavan syyn toimenpiteelle: $3.
 
 Voit jatkaa {{GRAMMAR:genitive|{{SITENAME}}}} käyttöä nimettömänä, tai <span class='plainlinks'>[$1 kirjautua uudelleen sisään]</span>.
 Huomaa, että jotkut sivut saattavat näkyä edelleen kuin olisit kirjautunut sisään, kunnes tyhjennät selaimen välimuistin.",
-'welcomecreation' => '== Tervetuloa $1! ==
-Käyttäjätunnuksesi on luotu.
+'welcomeuser' => 'Tervetuloa $1!',
+'welcomecreation-msg' => 'Käyttäjätunnuksesi on luotu.
 Älä unohda virittää {{GRAMMAR:genitive|{{SITENAME}}}} [[Special:Preferences|asetuksiasi]].',
 'yourname' => 'Käyttäjätunnus',
 'yourpassword' => 'Salasana',
@@ -2296,19 +2297,23 @@ Lisätietoa yksittäisistä käyttäjäoikeuksista saattaa löytyä [[{{MediaWik
 
 'enotif_mailer' => '{{GRAMMAR:genitive|{{SITENAME}}}} sivu on muuttunut -ilmoitus',
 'enotif_reset' => 'Merkitse kaikki sivut kerralla nähdyiksi',
-'enotif_newpagetext' => 'Tämä on uusi sivu.',
 'enotif_impersonal_salutation' => '{{SITENAME}}-käyttäjä',
-'changed' => 'muuttanut sivua',
-'created' => 'luonut sivun',
-'enotif_subject' => '$PAGEEDITOR on $CHANGEDORCREATED $PAGETITLE',
+'enotif_subject_deleted' => '{{gender:$2|$2}} poisti {{SITENAME}}-sivun $1',
+'enotif_subject_created' => '{{gender:$2|$2}} loi {{SITENAME}}-sivun $1',
+'enotif_subject_moved' => '{{gender:$2|$2}} siirsi {{SITENAME}}-sivun $1',
+'enotif_subject_restored' => '{{gender:$2|$2}} palautti {{SITENAME}}-sivun $1',
+'enotif_subject_changed' => '{{gender:$2|$2}} muutti {{SITENAME}}-sivua $1',
+'enotif_body_intro_deleted' => '{{gender:$2|$2}} poisti {{SITENAME}}-sivun $1 $PAGEEDITDATE, sivun nykyinen versio on osoitteessa $3.',
+'enotif_body_intro_created' => '{{gender:$2|$2}} loi {{SITENAME}}-sivun $1 $PAGEEDITDATE, sivun nykyinen versio on osoitteessa $3.',
+'enotif_body_intro_moved' => '{{gender:$2|$2}} siirsi {{SITENAME}}-sivun $1 $PAGEEDITDATE, sivun nykyinen versio on osoitteessa $3.',
+'enotif_body_intro_restored' => '{{gender:$2|$2}} palautti {{SITENAME}}-sivun $1 $PAGEEDITDATE, sivun nykyinen versio on osoitteessa $3.',
+'enotif_body_intro_changed' => '{{gender:$2|$2}} muutti {{SITENAME}}-sivua $1 $PAGEEDITDATE, sivun nykyinen versio on osoitteessa $3.',
 'enotif_lastvisited' => 'Osoitteessa $1 on kaikki muutokset viimeisen käyntisi jälkeen.',
 'enotif_lastdiff' => 'Muutos on osoitteessa $1.',
 'enotif_anon_editor' => 'kirjautumaton käyttäjä $1',
 'enotif_body' => '$WATCHINGUSERNAME,
 
-{{GRAMMAR:genitive|{{SITENAME}}}} käyttäjä $PAGEEDITOR on $CHANGEDORCREATED $PAGETITLE $PAGEEDITDATE. Nykyinen versio on osoitteessa $PAGETITLE_URL .
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Muokkaajan yhteenveto: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -3032,6 +3037,7 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
 'pageinfo-default-sort' => 'Oletuslajitteluavain',
 'pageinfo-length' => 'Sivun pituus (tavuina)',
 'pageinfo-article-id' => 'Sivun tunniste',
+'pageinfo-language' => 'Sivun sisällön kielen',
 'pageinfo-robot-policy' => 'Hakukonemerkinnät',
 'pageinfo-robot-index' => 'Indeksoitava',
 'pageinfo-robot-noindex' => 'Ei indeksoitava',
@@ -3884,8 +3890,8 @@ Kuvat näytetään täysikokoisina. Muut tiedostot avataan niille määritetyss
 'logentry-move-move_redir-noredirect' => '$1 siirsi sivun $3 ohjauksen $4 päälle luomatta ohjausta',
 'logentry-patrol-patrol' => '$1 merkitsi sivun $3 muutoksen $4 tarkastetuksi',
 'logentry-patrol-patrol-auto' => '$1 merkitsi automaattisesti sivun $3 muutoksen $4 tarkastetuksi',
-'logentry-newusers-newusers' => '$1 loi käyttäjätunnuksen',
-'logentry-newusers-create' => '$1 loi käyttäjätunnuksen',
+'logentry-newusers-newusers' => 'Käyttäjätunnus $1 luotiin',
+'logentry-newusers-create' => 'Käyttäjätunnus $1 luotiin',
 'logentry-newusers-create2' => '$1 loi käyttäjätunnuksen $3',
 'logentry-newusers-autocreate' => 'Käyttäjätunnus $1 luotiin automaattisesti',
 'newuserlog-byemail' => 'salasana lähetetty sähköpostitse',
@@ -3962,6 +3968,4 @@ Muussa tapauksessa voit käyttää alla olevaa helpompaa lomaketta. Kommenttisi
 'duration-centuries' => '$1 {{PLURAL:$1|vuosisata|vuosisataa}}',
 'duration-millennia' => '$1 {{PLURAL:$1|vuosituhat|vuosituhatta}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'keskustelu',
 );
index b7f197d..dc2999f 100644 (file)
@@ -51,6 +51,7 @@
  * @author Litlok
  * @author Lloffiwr
  * @author Louperivois
+ * @author Ltrlg
  * @author Lucyin
  * @author McDutchie
  * @author Meithal
@@ -74,6 +75,7 @@
  * @author TouzaxA
  * @author Tpt
  * @author Urhixidur
+ * @author VIGNERON
  * @author Verdy p
  * @author WikiEoFrEn
  * @author Wyz
@@ -539,6 +541,7 @@ $messages = array(
 'namespaces' => 'Espaces de noms',
 'variants' => 'Variantes',
 
+'navigation-heading' => 'Menu de navigation',
 'errorpagetitle' => 'Erreur',
 'returnto' => 'Revenir à la page $1.',
 'tagline' => 'De {{SITENAME}}',
@@ -781,10 +784,9 @@ L'administrateur qui l'a verrouillé a fourni ce motif: « $3 ».",
 
 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.",
-'welcomecreation' => "== Bienvenue, $1 ! ==
-
-Votre compte a été créé.
-N'oubliez pas de personnaliser vos [[Special:Preferences|préférences sur {{SITENAME}}]].",
+'welcomeuser' => 'Bienvenue, $1!',
+'welcomecreation-msg' => "Votre compte a été créé.
+N'oubliez pas de modifier vos [[Special:Preferences|{{SITENAME}} préférences]].",
 'yourname' => "Nom d'utilisateur :",
 'yourpassword' => 'Mot de passe&nbsp;:',
 'yourpasswordagain' => 'Confirmez le mot de passe :',
@@ -1813,25 +1815,25 @@ Veuillez vérifier que vous désirez vraiment importer ce fichier.',
 'fileexists' => "Un fichier existe déjà sous ce nom.
 Merci de vérifier <strong>[[:$1]]</strong> si vous n'êtes pas certain{{GENDER:||e|}} de vouloir le modifier.
 [[$1|thumb]]",
-'filepageexists' => 'La page de description pour ce fichier a déjà été créée ici <strong>[[:$1]]</strong>, mais aucun fichier n’existe actuellement sous ce nom.
-Le résumé que vous allez spécifier napparaîtra pas sur la page de description.
-Pour que ce soit le cas, vous devrez modifier manuellement la page. [[$1|thumb]]',
+'filepageexists' => "La page de description pour ce fichier a déjà été créée ici <strong>[[:$1]]</strong>, mais aucun fichier n'existe actuellement sous ce nom.
+Le résumé que vous allez spécifier n'apparaîtra pas sur la page de description.
+Pour que ce soit le cas, vous devrez modifier manuellement la page. [[$1|thumb]]",
 'fileexists-extension' => 'Un fichier existe avec un nom proche : [[$2|thumb]]
 * Nom du fichier à importer : <strong>[[:$1]]</strong>
 * Nom du fichier existant : <strong>[[:$2]]</strong>
 Veuillez choisir un autre nom.',
 'fileexists-thumbnail-yes' => "Le fichier semble être une image en taille réduite ''(vignette)''. [[$1|thumb]]
 Veuillez vérifier le fichier <strong>[[:$1]]</strong>.
-Si le fichier vérifié est la même image avec la taille initiale, il n’y a pas besoin d’importer une version réduite.",
+Si le fichier vérifié est la même image avec la taille initiale, il n'y a pas besoin d'importer une version réduite.",
 'file-thumbnail-no' => "Le nom du fichier commence par <strong>$1</strong>.
-Il est possible qu’il s’agisse d’une version réduite ''(vignette)''.
+Il est possible qu'il s'agisse d'une version réduite ''(vignette)''.
 Si vous disposez du fichier en haute résolution, importez-le, sinon veuillez modifier son nom.",
-'fileexists-forbidden' => 'Un fichier avec ce nom existe déjà et ne peut pas être écrasé.
-Si vous voulez toujours importer votre fichier, merci de retourner en arrière et d’utiliser un nouveau nom. [[File:$1|thumb|center|$1]]',
+'fileexists-forbidden' => "Un fichier avec ce nom existe déjà et ne peut pas être écrasé.
+Si vous voulez toujours importer votre fichier, merci de retourner en arrière et d'utiliser un nouveau nom. [[File:$1|thumb|center|$1]]",
 'fileexists-shared-forbidden' => 'Un fichier portant ce nom existe déjà dans le dépôt de fichiers partagé.
 Si vous voulez toujours importer votre fichier, veuillez revenir en arrière et utiliser un autre nom. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Ce fichier est un doublon {{PLURAL:$1|du fichier suivant|des fichiers suivants}} :',
-'file-deleted-duplicate' => 'Un fichier identique à celui-ci ([[:$1]]) a déjà été supprimé. Vous devriez vérifier le journal des suppressions de ce fichier avant de l’importer à nouveau.',
+'file-deleted-duplicate' => "Un fichier identique à celui-ci ([[:$1]]) a déjà été supprimé. Vous devriez vérifier le journal des suppressions de ce fichier avant de l'importer à nouveau.",
 'uploadwarning' => 'Attention !',
 'uploadwarning-text' => 'Modifiez la description du fichier et essayez de nouveau.',
 'savefile' => 'Sauvegarder le fichier',
@@ -1839,9 +1841,9 @@ Si vous voulez toujours importer votre fichier, veuillez revenir en arrière et
 'overwroteimage' => 'a importé une nouvelle version de « [[$1]] »',
 'uploaddisabled' => "Désolé, l'import de fichiers est désactivé.",
 'copyuploaddisabled' => 'Import de fichier par URL désactivé.',
-'uploadfromurl-queued' => 'Votre fichier a été mis dans la file d’attente.',
+'uploadfromurl-queued' => "Votre fichier a été mis dans la file d'attente.",
 'uploaddisabledtext' => "L'import de fichiers est désactivé sur ce wiki.",
-'php-uploaddisabledtext' => "L'import de fichiers a été désactivé dans PHP. Vérifiez loption de configuration file_uploads.",
+'php-uploaddisabledtext' => "L'import de fichiers a été désactivé dans PHP. Vérifiez l'option de configuration file_uploads.",
 'uploadscripted' => 'Ce fichier contient du code HTML ou un script qui pourrait être interprété de façon incorrecte par un navigateur web.',
 'uploadvirus' => 'Ce fichier contient un virus ! Pour plus de détails, consultez : $1',
 'uploadjava' => "C'est un fichier ZIP qui contient un fichier Java .class.
@@ -1854,8 +1856,8 @@ Le téléchargement de fichiers Java n'est pas autorisé, car ils peuvent contou
 'upload-description' => 'Description du fichier',
 'upload-options' => "Options d'import de fichiers",
 'watchthisupload' => 'Suivre ce fichier',
-'filewasdeleted' => 'Un fichier avec ce nom a déjà été importé, puis supprimé.
-Vous devriez vérifier $1 avant de l’importer à nouveau.',
+'filewasdeleted' => "Un fichier avec ce nom a déjà été importé, puis supprimé.
+Vous devriez vérifier $1 avant de l'importer à nouveau.",
 'filename-bad-prefix' => "Le nom du fichier commence par '''« $1 »''' qui est typiquement un nom attribué automatiquement par les appareils photo numériques.
 Veuillez choisir un nom de fichier descriptif.",
 'filename-prefix-blacklist' => ' #<!-- laisser cette ligne telle quelle --><pre>
@@ -1887,9 +1889,9 @@ $1',
 'upload-file-error-text' => 'Une erreur interne est survenue en voulant créer un fichier temporaire sur le serveur. Veuillez contacter un [[Special:ListUsers/sysop|administrateur]].',
 'upload-misc-error' => "Erreur d'import inconnue",
 'upload-misc-error-text' => "Une erreur inconnue est survenue pendant l'import.
-Veuillez vérifier que lURL est valide et accessible, puis essayer à nouveau.
+Veuillez vérifier que l'URL est valide et accessible, puis essayer à nouveau.
 Si le problème persiste, contactez un [[Special:ListUsers/sysop|administrateur]].",
-'upload-too-many-redirects' => 'L’URL contient trop de redirections.',
+'upload-too-many-redirects' => "L'URL contient trop de redirections.",
 'upload-unknown-size' => 'Taille inconnue',
 'upload-http-error' => 'Une erreur HTTP est survenue : $1',
 'upload-copy-upload-invalid-domain' => "La copie des téléchargements n'est pas disponible depuis ce domaine.",
@@ -1900,8 +1902,9 @@ Si le problème persiste, contactez un [[Special:ListUsers/sysop|administrateur]
 'backend-fail-notexists' => "Le fichier $1 n'existe pas.",
 'backend-fail-hashes' => "Impossible d'obtenir les hachages du fichier pour comparaison.",
 'backend-fail-notsame' => 'Un fichier différent existe déjà pour $1 .',
-'backend-fail-invalidpath' => '$1 n’est pas un chemin de stockage valide.',
+'backend-fail-invalidpath' => "$1 n'est pas un chemin de stockage valide.",
 'backend-fail-delete' => 'Impossible de supprimer le fichier $1.',
+'backend-fail-describe' => 'Impossible de modifier les métadonnées du fichier "$1".',
 'backend-fail-alreadyexists' => 'Le fichier $1 existe déjà.',
 'backend-fail-store' => 'Impossible de stocker le fichier $1 en $2.',
 'backend-fail-copy' => 'Impossible de copier le fichier $1 en $2.',
@@ -1910,26 +1913,26 @@ Si le problème persiste, contactez un [[Special:ListUsers/sysop|administrateur]
 'backend-fail-writetemp' => "Impossible d'écrire dans le fichier temporaire.",
 'backend-fail-closetemp' => 'Impossible de fermer le fichier temporaire.',
 'backend-fail-read' => 'Impossible de lire le fichier $1.',
-'backend-fail-create' => 'Impossible d’écrire le fichier $1.',
-'backend-fail-maxsize' => "Impossible décrire le fichier $1 parce qu'il est plus grand {{PLURAL:$2|qu'un octet|que $2 octets}}.",
+'backend-fail-create' => "Impossible d'écrire le fichier $1.",
+'backend-fail-maxsize' => "Impossible d'écrire le fichier $1 parce qu'il est plus grand {{PLURAL:$2|qu'un octet|que $2 octets}}.",
 'backend-fail-readonly' => 'Le support de stockage "$1" est actuellement en lecture seule. La raison indiquée est: "$2"',
 'backend-fail-synced' => 'Le fichier "$1" est dans un état incohérent dans les supports de stockage internes',
 'backend-fail-connect' => 'Impossible de se connecter au support de stockage "$1".',
 'backend-fail-internal' => 'Une erreur inconnue s\'est produite dans le support de stockage "$1".',
 'backend-fail-contenttype' => 'Impossible de déterminer le type de contenu du fichier à stocker en "$1".',
 'backend-fail-batchsize' => 'Le support de stockage a fourni un lot de $1 {{PLURAL:$1|opération|opérations}} de fichier; la limite est $2 {{PLURAL:$2|opération|opérations}}.',
-'backend-fail-usable' => 'Impossible de lire ou d’écrire le fichier « $1 » en raison de droits insuffisants ou répertoires/conteneurs manquants.',
+'backend-fail-usable' => "Impossible de lire ou d'écrire le fichier « $1 » en raison de droits insuffisants ou répertoires/conteneurs manquants.",
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Impossible de se connecter à la base de données du journal pour le terminal de stockage "$1".',
 'filejournal-fail-dbquery' => 'Impossible de mettre à jour la base de données du journal pour le terminal de stockage "$1".',
 
 # Lock manager
-'lockmanager-notlocked' => 'Impossible de déverrouiller « $1 » ; elle n’est pas verrouillée.',
+'lockmanager-notlocked' => "Impossible de déverrouiller « $1 » ; elle n'est pas verrouillée.",
 'lockmanager-fail-closelock' => 'Impossible de fermer le fichier de verrou pour « $1 ».',
 'lockmanager-fail-deletelock' => 'Impossible de supprimer le fichier de verrou pour « $1 ».',
-'lockmanager-fail-acquirelock' => 'Impossible d’obtenir le verrou pour « $1 ».',
-'lockmanager-fail-openlock' => 'Impossible d’ouvrir le fichier de verrou pour « $1» .',
+'lockmanager-fail-acquirelock' => "Impossible d'obtenir le verrou pour « $1 ».",
+'lockmanager-fail-openlock' => "Impossible d'ouvrir le fichier de verrou pour « $1» .",
 'lockmanager-fail-releaselock' => 'Impossible de relâcher le verrou pour « $1 ».',
 'lockmanager-fail-db-bucket' => 'Impossible de contacter suffisamment de bases de données de verrouillage dans le godet $1.',
 'lockmanager-fail-db-release' => 'Impossible de relâcher les verrous sur la base de données $1.',
@@ -1937,8 +1940,8 @@ Si le problème persiste, contactez un [[Special:ListUsers/sysop|administrateur]
 'lockmanager-fail-svr-release' => 'Impossible de relâcher les verrous sur le serveur $1.',
 
 # ZipDirectoryReader
-'zip-file-open-error' => 'Une erreur s’est produite lors de l’ouverture du fichier ZIP pour contrôle.',
-'zip-wrong-format' => 'Le fichier spécifié n’est pas une archive ZIP.',
+'zip-file-open-error' => "Une erreur s'est produite lors de l'ouverture du fichier ZIP pour contrôle.",
+'zip-wrong-format' => "Le fichier spécifié n'est pas une archive ZIP.",
 'zip-bad' => 'Le fichier est une archive ZIP corrompue ou illisible.
 Il ne peut pas être correctement vérifié pour la sécurité.',
 'zip-unsupported' => 'Le fichier est une archive ZIP qui utilise des caractéristiques non supportées par MediaWiki. 
@@ -1956,36 +1959,36 @@ Sa sécurité ne peut pas être correctement vérifiée.',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Accès refusé',
-'img-auth-nopathinfo' => 'PATH_INFO manquant.
-Votre serveur nest pas paramétré pour passer cette information.
+'img-auth-nopathinfo' => "PATH_INFO manquant.
+Votre serveur n'est pas paramétré pour passer cette information.
 Il fonctionne peut-être en CGI et ne supporte pas img_auth.
-Voyez https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
-'img-auth-notindir' => "Le chemin demandé nest pas le répertoire d'import configuré.",
+Voyez https://www.mediawiki.org/wiki/Manual:Image_Authorization.",
+'img-auth-notindir' => "Le chemin demandé n'est pas le répertoire d'import configuré.",
 'img-auth-badtitle' => 'Impossible de construire un titre valide à partir de « $1 ».',
-'img-auth-nologinnWL' => 'Vous n’êtes pas connecté et « $1 » n’est pas dans la liste blanche.',
-'img-auth-nofile' => 'Le fichier « $1 » n’existe pas.',
-'img-auth-isdir' => 'Vous essayez d’accéder au répertoire « $1 ».
-Seul l’accès aux fichiers est permis.',
+'img-auth-nologinnWL' => "Vous n'êtes pas connecté et « $1 » n'est pas dans la liste blanche.",
+'img-auth-nofile' => "Le fichier « $1 » n'existe pas.",
+'img-auth-isdir' => "Vous essayez d'accéder au répertoire « $1 ».
+Seul l'accès aux fichiers est permis.",
 'img-auth-streaming' => 'Lecture en continu de « $1 ».',
-'img-auth-public' => 'La fonction de img_auth.php est d’afficher des fichiers d’un wiki privé.
+'img-auth-public' => "La fonction de img_auth.php est d'afficher des fichiers d'un wiki privé.
 Ce wiki est configuré comme un wiki public.
-Pour une sécurité optimale, img_auth.php est désactivé.',
-'img-auth-noread' => 'L’utilisateur n’a pas le droit en lecture sur « $1 ».',
+Pour une sécurité optimale, img_auth.php est désactivé.",
+'img-auth-noread' => "L'utilisateur n'a pas le droit en lecture sur « $1 ».",
 'img-auth-bad-query-string' => "L'URL a une chaîne de requête invalide.",
 
 # HTTP errors
 'http-invalid-url' => 'URL incorrecte : $1',
 'http-invalid-scheme' => 'Les URL avec le schéma « $1 » ne sont pas supportées.',
-'http-request-error' => 'Erreur inconnue lors de l’envoi de la requête.',
+'http-request-error' => "Erreur inconnue lors de l'envoi de la requête.",
 'http-read-error' => 'Erreur de lecture HTTP.',
 'http-timed-out' => 'La requête HTTP a expiré.',
-'http-curl-error' => 'Erreur lors de la récupération de l’URL : $1',
-'http-host-unreachable' => 'Impossible d’atteindre l’URL.',
+'http-curl-error' => "Erreur lors de la récupération de l'URL : $1",
+'http-host-unreachable' => "Impossible d'atteindre l'URL.",
 'http-bad-status' => 'Il y a eu un problème lors de la requête HTTP : $1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
 'upload-curl-error6' => 'URL injoignable',
-'upload-curl-error6-text' => 'L’URL fournie ne peut pas être atteinte. Veuillez vérifier que l’URL est correcte et que le site est en ligne.',
+'upload-curl-error6-text' => "L'URL fournie ne peut pas être atteinte. Veuillez vérifier que l'URL est correcte et que le site est en ligne.",
 'upload-curl-error28' => "Dépassement du délai lors de l'import",
 'upload-curl-error28-text' => 'Le site a mis trop longtemps à répondre. Vérifiez que le site est en ligne, attendez un peu et réessayez. Vous pouvez aussi réessayer à une heure de moindre affluence.',
 
@@ -2013,7 +2016,7 @@ Quand elle est filtrée par utilisateur, seuls les fichiers dont la version la p
 # File description page
 'file-anchor-link' => 'Fichier',
 'filehist' => 'Historique du fichier',
-'filehist-help' => 'Cliquer sur une date et heure pour voir le fichier tel qu’il était à ce moment-là.',
+'filehist-help' => "Cliquer sur une date et heure pour voir le fichier tel qu'il était à ce moment-là.",
 'filehist-deleteall' => 'supprimer tout',
 'filehist-deleteone' => 'supprimer',
 'filehist-revert' => 'rétablir',
@@ -2029,24 +2032,24 @@ Quand elle est filtrée par utilisateur, seuls les fichiers dont la version la p
 'filehist-missing' => 'Fichier manquant',
 'imagelinks' => 'Utilisation du fichier',
 'linkstoimage' => '{{PLURAL:$1|La page suivante utilise|Les $1 pages suivantes utilisent}} ce fichier :',
-'linkstoimage-more' => 'Plus {{PLURAL:$1|d’une page utilise|de $1 pages utilisent}} ce fichier.
+'linkstoimage-more' => "Plus {{PLURAL:$1|d'une page utilise|de $1 pages utilisent}} ce fichier.
 La liste suivante affiche seulement {{PLURAL:$1|la première page qui utilise|les $1 premières pages qui utilisent}} ce fichier.
-Une [[Special:WhatLinksHere/$2|liste complète]] est disponible.',
-'nolinkstoimage' => 'Aucune page n’utilise ce fichier.',
+Une [[Special:WhatLinksHere/$2|liste complète]] est disponible.",
+'nolinkstoimage' => "Aucune page n'utilise ce fichier.",
 'morelinkstoimage' => 'Voir [[Special:WhatLinksHere/$1|plus de liens]] vers ce fichier.',
 'linkstoimage-redirect' => '$1 (redirection de fichier) $2',
 'duplicatesoffile' => '{{PLURAL:$1|Le fichier suivant est un duplicata|Les fichiers suivants sont des duplicatas}} de celui-ci ([[Special:FileDuplicateSearch/$2|plus de détails]]) :',
-'sharedupload' => 'Ce fichier provient de : $1. Il peut être utilisé par d’autres projets.',
-'sharedupload-desc-there' => 'Ce fichier provient de : $1. Il peut être utilisé par d’autres projets.
-Veuillez consulter [$2 sa page de description] pour plus d’informations.',
-'sharedupload-desc-here' => 'Ce fichier provient de $1. Il peut être utilisé par d’autres projets.
-Sa description sur sa [$2 page de description] est affichée ci-dessous.',
-'sharedupload-desc-edit' => 'Ce fichier provient de : $1. Il peut être utilisé par d’autres projets.
-Vous voulez peut-être modifier la description sur sa [$2 page de description].',
-'sharedupload-desc-create' => 'Ce fichier provient de : $1. Il peut être utilisé par d’autres projets.
-Vous voulez peut-être modifier la description sur sa [$2 page de description].',
+'sharedupload' => "Ce fichier provient de : $1. Il peut être utilisé par d'autres projets.",
+'sharedupload-desc-there' => "Ce fichier provient de : $1. Il peut être utilisé par d'autres projets.
+Veuillez consulter [$2 sa page de description] pour plus d'informations.",
+'sharedupload-desc-here' => "Ce fichier provient de $1. Il peut être utilisé par d'autres projets.
+Sa description sur sa [$2 page de description] est affichée ci-dessous.",
+'sharedupload-desc-edit' => "Ce fichier provient de : $1. Il peut être utilisé par d'autres projets.
+Vous voulez peut-être modifier la description sur sa [$2 page de description].",
+'sharedupload-desc-create' => "Ce fichier provient de : $1. Il peut être utilisé par d'autres projets.
+Vous voulez peut-être modifier la description sur sa [$2 page de description].",
 'filepage-nofile' => 'Aucun fichier de ce nom existe.',
-'filepage-nofile-link' => 'Aucun fichier de ce nom n’existe, mais vous pouvez [$1 en importer un].',
+'filepage-nofile-link' => "Aucun fichier de ce nom n'existe, mais vous pouvez [$1 en importer un].",
 'uploadnewversion-linktext' => 'Importer une nouvelle version de ce fichier',
 'shared-repo-from' => 'de : $1',
 'shared-repo' => 'un dépôt partagé',
@@ -2062,24 +2065,24 @@ Vous voulez peut-être modifier la description sur sa [$2 page de description].'
 'filerevert-defaultcomment' => 'Version du $1 à $2 rétablie',
 'filerevert-submit' => 'Rétablir',
 'filerevert-success' => "'''[[Media:$1|$1]]''' a été rétabli à [$4 la version du $2 à $3].",
-'filerevert-badversion' => 'Il n’y a pas localement de version antérieure du fichier qui porte la date indiquée.',
+'filerevert-badversion' => "Il n'y a pas localement de version antérieure du fichier qui porte la date indiquée.",
 
 # File deletion
 'filedelete' => 'Supprimer $1',
 'filedelete-legend' => 'Supprimer le fichier',
 'filedelete-intro' => "Vous êtes sur le point de supprimer '''[[Media:$1|$1]]''' ainsi que tout son historique.",
-'filedelete-intro-old' => "Vous êtes en train deffacer la version de '''[[Media:$1|$1]]''' du [$4 $2 à $3].",
+'filedelete-intro-old' => "Vous êtes en train d'effacer la version de '''[[Media:$1|$1]]''' du [$4 $2 à $3].",
 'filedelete-comment' => 'Motif :',
 'filedelete-submit' => 'Supprimer',
 'filedelete-success' => "'''$1''' a été supprimé.",
 'filedelete-success-old' => "La version de '''[[Media:$1|$1]]''' du $2 à $3 a été supprimée.",
-'filedelete-nofile' => "'''$1''' nexiste pas.",
-'filedelete-nofile-old' => "Il nexiste aucune version archivée de '''$1''' avec les attributs indiqués.",
+'filedelete-nofile' => "'''$1''' n'existe pas.",
+'filedelete-nofile-old' => "Il n'existe aucune version archivée de '''$1''' avec les attributs indiqués.",
 'filedelete-otherreason' => 'Motif autre / supplémentaire :',
 'filedelete-reason-otherlist' => 'Autre motif',
-'filedelete-reason-dropdown' => '* Motifs fréquents de suppression de fichiers
-** Violation du droit dauteur
-** Fichier dupliqué',
+'filedelete-reason-dropdown' => "* Motifs fréquents de suppression de fichiers
+** Violation du droit d'auteur
+** Fichier dupliqué",
 'filedelete-edit-reasonlist' => 'Modifier les motifs fréquents de suppression',
 'filedelete-maintenance' => 'La suppression et restauration de fichiers est temporairement désactivée durant la maintenance.',
 'filedelete-maintenance-title' => 'Impossible de supprimer le fichier',
@@ -2092,24 +2095,24 @@ Entrée : ''typedecontenu''/''sous-type'', par exemple <code>image/jpeg</code>."
 'download' => 'télécharger',
 
 # Unwatched pages
-'unwatchedpages' => 'Pages ne faisant partie d’aucune liste de suivi',
+'unwatchedpages' => "Pages ne faisant partie d'aucune liste de suivi",
 
 # List redirects
 'listredirects' => 'Liste des redirections',
 
 # Unused templates
 'unusedtemplates' => 'Modèles inutilisés',
-'unusedtemplatestext' => 'Cette page liste toutes les pages de l’espace de noms « {{ns:template}} » qui ne sont incluses dans aucune autre page.
-N’oubliez pas de vérifier s’il n’y a pas d’autres liens vers les modèles avant de les supprimer.',
+'unusedtemplatestext' => "Cette page liste toutes les pages de l'espace de noms « {{ns:template}} » qui ne sont incluses dans aucune autre page.
+N'oubliez pas de vérifier s'il n'y a pas d'autres liens vers les modèles avant de les supprimer.",
 'unusedtemplateswlh' => 'autres liens',
 
 # Random page
 'randompage' => 'Page au hasard',
-'randompage-nopages' => 'Il n’y a aucune page dans {{PLURAL:$2|l’espace de noms|les espaces de noms}} : $1.',
+'randompage-nopages' => "Il n'y a aucune page dans {{PLURAL:$2|l'espace de noms|les espaces de noms}} : $1.",
 
 # Random redirect
 'randomredirect' => 'Page de redirection au hasard',
-'randomredirect-nopages' => 'Il n’y a aucune page de redirection dans l’espace de noms « $1 ».',
+'randomredirect-nopages' => "Il n'y a aucune page de redirection dans l'espace de noms « $1 ».",
 
 # Statistics
 'statistics' => 'Statistiques',
@@ -2122,7 +2125,7 @@ N’oubliez pas de vérifier s’il n’y a pas d’autres liens vers les modèl
 'statistics-pages' => 'Pages',
 'statistics-pages-desc' => 'Toutes les pages du wiki, y compris les pages de discussion, les redirections, etc.',
 'statistics-files' => 'Fichers importés',
-'statistics-edits' => 'Modifications de pages depuis l’installation de {{SITENAME}}',
+'statistics-edits' => "Modifications de pages depuis l'installation de {{SITENAME}}",
 'statistics-edits-average' => 'Nombre moyen de modifications par page',
 'statistics-views-total' => 'Visites',
 'statistics-views-total-desc' => 'Les vues des pages non existantes et des pages spéciales ne sont pas incluses',
@@ -2132,11 +2135,11 @@ N’oubliez pas de vérifier s’il n’y a pas d’autres liens vers les modèl
 'statistics-users-active-desc' => 'Utilisateurs ayant fait au moins une action durant {{PLURAL:$1|le dernier jours|les $1 derniers jours}}',
 'statistics-mostpopular' => 'Pages les plus consultées',
 
-'disambiguations' => 'Pages ayant des liens vers des pages d’homonymie',
+'disambiguations' => "Pages ayant des liens vers des pages d'homonymie",
 'disambiguationspage' => 'Template:Homonymie',
-'disambiguations-text' => "Les pages suivantes comportent au moins un lien vers une '''page dhomonymie'''.
+'disambiguations-text' => "Les pages suivantes comportent au moins un lien vers une '''page d'homonymie'''.
 Elles devraient plutôt pointer vers le bon article.<br />
-Une page est considérée comme une page dhomonymie si elle utilise un modèle lié à [[MediaWiki:Disambiguationspage]]",
+Une page est considérée comme une page d'homonymie si elle utilise un modèle lié à [[MediaWiki:Disambiguationspage]]",
 
 'doubleredirects' => 'Doubles redirections',
 'doubleredirectstext' => 'Voici une liste des pages qui redirigent vers des pages qui sont elles-mêmes des pages de redirection.
@@ -2152,7 +2155,7 @@ Les entrées <del>barrées</del> ont été résolues.',
 'brokenredirects-delete' => 'supprimer',
 
 'withoutinterwiki' => 'Pages sans liens inter-langues',
-'withoutinterwiki-summary' => 'Les pages suivantes ne possèdent pas de liens vers d’autres langues :',
+'withoutinterwiki-summary' => "Les pages suivantes ne possèdent pas de liens vers d'autres langues :",
 'withoutinterwiki-legend' => 'Préfixe',
 'withoutinterwiki-submit' => 'Afficher',
 
@@ -2168,9 +2171,9 @@ Les entrées <del>barrées</del> ont été résolues.',
 'nviews' => '$1 consultation{{PLURAL:$1||s}}',
 'nimagelinks' => 'Utilisé sur $1 {{PLURAL:$1|page|pages}}',
 'ntransclusions' => 'Utilisé sur $1 {{PLURAL:$1|page|pages}}',
-'specialpage-empty' => 'Il n’y a aucun résultat à afficher.',
+'specialpage-empty' => "Il n'y a aucun résultat à afficher.",
 'lonelypages' => 'Pages orphelines',
-'lonelypagestext' => 'Les pages suivantes ne sont ni pointées, ni incluses par d’autres pages du wiki.',
+'lonelypagestext' => "Les pages suivantes ne sont ni pointées, ni incluses par d'autres pages du wiki.",
 'uncategorizedpages' => 'Pages sans catégories',
 'uncategorizedcategories' => 'Catégories sans catégories',
 'uncategorizedimages' => 'Fichiers sans catégories',
@@ -2182,8 +2185,8 @@ Les entrées <del>barrées</del> ont été résolues.',
 'wantedpages' => 'Pages les plus demandées',
 'wantedpages-badtitle' => 'Titre invalide dans les résultats : $1',
 'wantedfiles' => 'Fichiers les plus demandés',
-'wantedfiletext-cat' => 'Les fichiers suivants sont utilisés, mais n’existent pas. Les fichiers d’autres dépôts peuvent être listés malgré qu’ils existent. Tous ces faux positifs seront <del>barrés</del>. En outre, les pages qui intègrent des fichiers qui n’existent pas sont répertoriées dans [[:$1]].',
-'wantedfiletext-nocat' => 'Les fichiers suivants sont utilisés, mais n’existent pas. Les fichiers d’autres dépôts peuvent être listés malgré qu’ils existent. Tous ces faux positifs seront <del>barrés</del>.',
+'wantedfiletext-cat' => "Les fichiers suivants sont utilisés, mais n'existent pas. Les fichiers d'autres dépôts peuvent être listés malgré qu'ils existent. Tous ces faux positifs seront <del>barrés</del>. En outre, les pages qui intègrent des fichiers qui n'existent pas sont répertoriées dans [[:$1]].",
+'wantedfiletext-nocat' => "Les fichiers suivants sont utilisés, mais n'existent pas. Les fichiers d'autres dépôts peuvent être listés malgré qu'ils existent. Tous ces faux positifs seront <del>barrés</del>.",
 'wantedtemplates' => 'Modèles demandés',
 'mostlinked' => 'Pages les plus liées',
 'mostlinkedcategories' => 'Catégories les plus utilisées',
@@ -2197,32 +2200,32 @@ Les entrées <del>barrées</del> ont été résolues.',
 'shortpages' => 'Pages courtes',
 'longpages' => 'Pages longues',
 'deadendpages' => 'Pages en impasse',
-'deadendpagestext' => 'Les pages suivantes ne contiennent aucun lien vers d’autres pages du wiki.',
+'deadendpagestext' => "Les pages suivantes ne contiennent aucun lien vers d'autres pages du wiki.",
 'protectedpages' => 'Pages protégées',
 'protectedpages-indef' => 'Uniquement les protections permanentes',
 'protectedpages-cascade' => 'Uniquement les protections en cascade',
 'protectedpagestext' => 'Les pages suivantes sont protégées contre les modifications ou le déplacement.',
-'protectedpagesempty' => 'Aucune page n’est protégée de cette façon.',
+'protectedpagesempty' => "Aucune page n'est protégée de cette façon.",
 'protectedtitles' => 'Titres protégés',
 'protectedtitlestext' => 'Les titres suivants sont protégés à la création',
-'protectedtitlesempty' => 'Aucun titre n’est actuellement protégé avec ces paramètres.',
+'protectedtitlesempty' => "Aucun titre n'est actuellement protégé avec ces paramètres.",
 'listusers' => 'Liste des utilisateurs',
 'listusers-editsonly' => 'Ne montrer que les utilisateurs ayant au moins une contribution',
 'listusers-creationsort' => 'Trier par date de création',
 'usereditcount' => '$1 modification{{PLURAL:$1||s}}',
 'usercreated' => '{{GENDER:$3|Créé}} le $1 à $2',
 'newpages' => 'Nouvelles pages',
-'newpages-username' => 'Nom d’utilisateur :',
+'newpages-username' => "Nom d'utilisateur :",
 'ancientpages' => 'Pages les plus anciennement modifiées',
 'move' => 'Renommer',
 'movethispage' => 'Renommer cette page',
-'unusedimagestext' => 'Les fichiers suivants existent, mais ne sont inclus dans aucune page.
-Veuillez noter que d’autres sites peuvent avoir un lien direct vers un fichier, et donc qu’un fichier peut être listé ici alors qu’il est en réalité utilisé sur ces sites.',
+'unusedimagestext' => "Les fichiers suivants existent, mais ne sont inclus dans aucune page.
+Veuillez noter que d'autres sites peuvent avoir un lien direct vers un fichier, et donc qu'un fichier peut être listé ici alors qu'il est en réalité utilisé sur ces sites.",
 'unusedcategoriestext' => 'Les catégories suivantes existent mais aucune page ou catégorie ne les utilise.',
 'notargettitle' => 'Pas de cible',
-'notargettext' => 'Vous n’avez pas indiqué une page ou un utilisateur sur lequel vous souhaitez effectuer cette action.',
+'notargettext' => "Vous n'avez pas indiqué une page ou un utilisateur sur lequel vous souhaitez effectuer cette action.",
 'nopagetitle' => 'Aucune telle page cible',
-'nopagetext' => 'La page cible que vous avez indiquée n’existe pas.',
+'nopagetext' => "La page cible que vous avez indiquée n'existe pas.",
 'pager-newer-n' => '{{PLURAL:$1|plus récente|$1 plus récentes}}',
 'pager-older-n' => '{{PLURAL:$1|plus ancienne|$1 plus anciennes}}',
 'suppress' => 'Superviser',
@@ -2233,16 +2236,16 @@ Veuillez noter que d’autres sites peuvent avoir un lien direct vers un fichier
 'booksources-search-legend' => 'Rechercher parmi des ouvrages de référence',
 'booksources-isbn' => 'ISBN :',
 'booksources-go' => 'Lister',
-'booksources-text' => 'Voici une liste indicative et non exclusive de liens vers d’autres sites vendant des livres neufs et d’occasion et sur lesquels vous trouverez peut-être des informations sur les ouvrages que vous cherchez :',
-'booksources-invalid-isbn' => 'L’ISBN donné ne semble pas être correct ; vérifiez si vous avez fait une erreur en copiant la source originale.',
+'booksources-text' => "Voici une liste indicative et non exclusive de liens vers d'autres sites vendant des livres neufs et d'occasion et sur lesquels vous trouverez peut-être des informations sur les ouvrages que vous cherchez :",
+'booksources-invalid-isbn' => "L'ISBN donné ne semble pas être correct ; vérifiez si vous avez fait une erreur en copiant la source originale.",
 
 # Special:Log
 'specialloguserlabel' => 'Auteur :',
 'speciallogtitlelabel' => 'Cible (titre ou utilisateur):',
-'log' => 'Journaux d’opérations',
+'log' => "Journaux d'opérations",
 'all-logs-page' => 'Tous les journaux publics',
-'alllogstext' => 'Affichage combiné de tous les journaux disponibles sur {{SITENAME}}.<br />
-Vous pouvez personnaliser l’affichage en sélectionnant le type de journal, le nom d’utilisateur ou la page concernée (ces deux derniers étant sensibles à la casse).',
+'alllogstext' => "Affichage combiné de tous les journaux disponibles sur {{SITENAME}}.<br />
+Vous pouvez personnaliser l'affichage en sélectionnant le type de journal, le nom d'utilisateur ou la page concernée (ces deux derniers étant sensibles à la casse).",
 'logempty' => 'Aucune opération correspondante dans les journaux.',
 'log-title-wildcard' => 'Chercher parmi les titres commençant par ce texte',
 'showhideselectedlogentries' => 'Afficher/masquer les entrées de journal sélectionnées',
@@ -2253,16 +2256,16 @@ Vous pouvez personnaliser l’affichage en sélectionnant le type de journal, le
 'nextpage' => 'Page suivante ($1)',
 'prevpage' => 'Page précédente ($1)',
 'allpagesfrom' => 'Afficher les pages à partir de :',
-'allpagesto' => 'Afficher les pages jusqu’à :',
+'allpagesto' => "Afficher les pages jusqu'à :",
 'allarticles' => 'Toutes les pages',
-'allinnamespace' => 'Toutes les pages (dans l’espace de noms $1)',
-'allnotinnamespace' => 'Toutes les pages (hors de l’espace de noms $1)',
+'allinnamespace' => "Toutes les pages (dans l'espace de noms $1)",
+'allnotinnamespace' => "Toutes les pages (hors de l'espace de noms $1)",
 'allpagesprev' => 'Précédent',
 'allpagesnext' => 'Suivant',
 'allpagessubmit' => 'Lister',
 'allpagesprefix' => 'Afficher les pages commençant par :',
 'allpagesbadtitle' => 'Le titre de page indiqué est incorrect : il contient un préfixe inter-langue ou inter-wiki réservé, ou contient un ou plusieurs caractères inutilisables dans les titres.',
-'allpages-bad-ns' => '{{SITENAME}} n’a pas d’espace de noms « $1 ».',
+'allpages-bad-ns' => "{{SITENAME}} n'a pas d'espace de noms « $1 ».",
 'allpages-hide-redirects' => 'Masquer les redirections',
 
 # SpecialCachedPage
@@ -2276,7 +2279,7 @@ Vous pouvez personnaliser l’affichage en sélectionnant le type de journal, le
 [[Special:UnusedCategories|Les catégories inutilisées]] ne sont pas affichées ici.
 Voyez aussi [[Special:WantedCategories|les catégories demandées]].',
 'categoriesfrom' => 'Afficher les catégories à partir de :',
-'special-categories-sort-count' => 'tri par nombre d’éléments',
+'special-categories-sort-count' => "tri par nombre d'éléments",
 'special-categories-sort-abc' => 'tri alphabétique',
 
 # Special:DeletedContributions
@@ -2293,7 +2296,7 @@ Voyez aussi [[Special:WantedCategories|les catégories demandées]].',
 Ils nécessitent au moins un domaine de niveau supérieur, par exemple « *.org ».<br />
 Protocoles reconnus : <code>$1</code> (http:// par défaut si aucun protocole n'est indiqué).",
 'linksearch-line' => '$1 est lié depuis $2',
-'linksearch-error' => 'Les caractères jokers ne peuvent être utilisés qu’au début du nom de domaine de l’hôte.',
+'linksearch-error' => "Les caractères jokers ne peuvent être utilisés qu'au début du nom de domaine de l'hôte.",
 
 # Special:ListUsers
 'listusersfrom' => 'Afficher les utilisateurs à partir de :',
@@ -2312,12 +2315,12 @@ Protocoles reconnus : <code>$1</code> (http:// par défaut si aucun protocole n'
 
 # Special:Log/newusers
 'newuserlogpage' => 'Journal des créations de comptes utilisateur',
-'newuserlogpagetext' => 'Cette page affiche l’historique des créations de comptes utilisateur.',
+'newuserlogpagetext' => "Cette page affiche l'historique des créations de comptes utilisateur.",
 
 # Special:ListGroupRights
-'listgrouprights' => 'Droits des groupes d’utilisateurs',
-'listgrouprights-summary' => 'Cette page contient une liste des groupes définis sur ce wiki ainsi que les droits d’accès qui leur sont associés.
-Des [[{{MediaWiki:Listgrouprights-helppage}}|informations additionnelles]] peuvent exister au sujet des droits individuels.',
+'listgrouprights' => "Droits des groupes d'utilisateurs",
+'listgrouprights-summary' => "Cette page contient une liste des groupes définis sur ce wiki ainsi que les droits d'accès qui leur sont associés.
+Des [[{{MediaWiki:Listgrouprights-helppage}}|informations additionnelles]] peuvent exister au sujet des droits individuels.",
 'listgrouprights-key' => '*<span class="listgrouprights-granted">Droit octroyé</span>
 *<span class="listgrouprights-revoked">Droit révoqué</span>',
 'listgrouprights-group' => 'Groupe',
@@ -2328,31 +2331,31 @@ Des [[{{MediaWiki:Listgrouprights-helppage}}|informations additionnelles]] peuve
 'listgrouprights-removegroup' => 'Retirer des membres {{PLURAL:$2|du groupe|des groupes}} : $1',
 'listgrouprights-addgroup-all' => 'Ajouter des membres à tous les groupes',
 'listgrouprights-removegroup-all' => 'Retirer des membres de tous les groupes',
-'listgrouprights-addgroup-self' => 'Peut s’ajouter {{PLURAL:$2|le groupe|les groupes}} à son propre compte : $1',
+'listgrouprights-addgroup-self' => "Peut s'ajouter {{PLURAL:$2|le groupe|les groupes}} à son propre compte : $1",
 'listgrouprights-removegroup-self' => 'Peut se retirer {{PLURAL:$2|le groupe|les groupes}} de son propre compte : $1',
-'listgrouprights-addgroup-self-all' => 'Peut s’ajouter tous les groupes à son propre compte',
+'listgrouprights-addgroup-self-all' => "Peut s'ajouter tous les groupes à son propre compte",
 'listgrouprights-removegroup-self-all' => 'Peut se retirer tous les groupes de son propre compte',
 
 # E-mail user
-'mailnologin' => 'Pas d’adresse d’expéditeur',
-'mailnologintext' => 'Vous devez être [[Special:UserLogin|identifié]] et avoir indiqué une adresse électronique valide dans vos [[Special:Preferences|préférences]] pour pouvoir envoyer des courriels à d’autres utilisateurs.',
+'mailnologin' => "Pas d'adresse d'expéditeur",
+'mailnologintext' => "Vous devez être [[Special:UserLogin|identifié]] et avoir indiqué une adresse électronique valide dans vos [[Special:Preferences|préférences]] pour pouvoir envoyer des courriels à d'autres utilisateurs.",
 'emailuser' => 'Lui envoyer un courriel',
 'emailuser-title-target' => 'Envoyer un courriel à {{GENDER:$1|cet utilisateur|cette utilisatrice}}',
 'emailuser-title-notarget' => "Envoyer un courriel à l'utilisateur",
 'emailpage' => "Envoyer un courriel à l'utilisateur",
-'emailpagetext' => 'Vous pouvez utiliser le formulaire ci-dessous pour envoyer un courriel à {{GENDER:$1|cet utilisateur|cette utilisatrice}}.
-L’adresse électronique que vous avez indiquée dans [[Special:Preferences|vos préférences]] apparaîtra dans le champ « Expéditeur » de votre message ; ainsi, le destinataire pourra vous répondre directement.',
-'usermailererror' => 'Erreur dans l’objet du courriel :',
+'emailpagetext' => "Vous pouvez utiliser le formulaire ci-dessous pour envoyer un courriel à {{GENDER:$1|cet utilisateur|cette utilisatrice}}.
+L'adresse électronique que vous avez indiquée dans [[Special:Preferences|vos préférences]] apparaîtra dans le champ « Expéditeur » de votre message ; ainsi, le destinataire pourra vous répondre directement.",
+'usermailererror' => "Erreur dans l'objet du courriel :",
 'defemailsubject' => "{{SITENAME}} Courriel de l'utilisateur « $1 »",
-'usermaildisabled' => 'L’envoi de courriels entre utilisateurs est désactivé',
-'usermaildisabledtext' => 'Vous ne pouvez pas envoyer de courriels à d’autres utilisateurs sur ce wiki',
+'usermaildisabled' => "L'envoi de courriels entre utilisateurs est désactivé",
+'usermaildisabledtext' => "Vous ne pouvez pas envoyer de courriels à d'autres utilisateurs sur ce wiki",
 'noemailtitle' => 'Aucune adresse de courriel',
-'noemailtext' => 'Cet utilisateur n’a pas spécifié une adresse de courriel valide.',
+'noemailtext' => "Cet utilisateur n'a pas spécifié une adresse de courriel valide.",
 'nowikiemailtitle' => 'Pas de courriel autorisé',
-'nowikiemailtext' => 'Cet utilisateur a choisi de ne pas recevoir de courriel de la part d’autres utilisateurs.',
+'nowikiemailtext' => "Cet utilisateur a choisi de ne pas recevoir de courriel de la part d'autres utilisateurs.",
 'emailnotarget' => "Nom d'utilisateur du destinataire inexistant ou invalide.",
 'emailtarget' => "Entrez le nom d'utilisateur du destinataire",
-'emailusername' => 'Nom d’utilisateur :',
+'emailusername' => "Nom d'utilisateur :",
 'emailusernamesubmit' => 'Soumettre',
 'email-legend' => 'Envoyer un courriel à un autre utilisateur de {{SITENAME}}',
 'emailfrom' => 'De :',
@@ -2360,7 +2363,7 @@ L’adresse électronique que vous avez indiquée dans [[Special:Preferences|vos
 'emailsubject' => 'Objet :',
 'emailmessage' => 'Message :',
 'emailsend' => 'Envoyer',
-'emailccme' => 'M’envoyer par courriel une copie de mon message.',
+'emailccme' => "M'envoyer par courriel une copie de mon message.",
 'emailccsubject' => 'Copie de votre message à $1 : $2',
 'emailsent' => 'Courriel envoyé',
 'emailsenttext' => 'Votre message a été envoyé par courriel.',
@@ -2386,16 +2389,16 @@ L’adresse électronique que vous avez indiquée dans [[Special:Preferences|vos
 'watchthispage' => 'Suivre cette page',
 'unwatch' => 'Ne plus suivre',
 'unwatchthispage' => 'Ne plus suivre',
-'notanarticle' => 'Ce n’est pas une page de contenu',
+'notanarticle' => "Ce n'est pas une page de contenu",
 'notvisiblerev' => 'La version a été supprimée',
-'watchnochange' => 'Aucun des éléments que vous suivez n’a été modifié durant la période affichée.',
+'watchnochange' => "Aucun des éléments que vous suivez n'a été modifié durant la période affichée.",
 'watchlist-details' => 'Votre liste de suivi référence $1 page{{PLURAL:$1||s}}, sans compter les pages de discussion.',
 'wlheader-enotif' => '* La notification par courriel est activée.',
 'wlheader-showupdated' => "* Les pages qui ont été modifiées depuis votre dernière visite sont affichées en '''gras'''.",
 'watchmethod-recent' => 'vérification des modifications récentes pour y trouver des pages suivies',
 'watchmethod-list' => 'vérification des pages suivies pour y trouver des modifications récentes',
 'watchlistcontains' => 'Votre liste de suivi référence $1 page{{PLURAL:$1||s}}.',
-'iteminvalidname' => 'Problème avec l’élément « $1 » : le nom est invalide.',
+'iteminvalidname' => "Problème avec l'élément « $1 » : le nom est invalide.",
 'wlnote' => "Ci-dessous {{PLURAL:$1|figure la dernière modification effectuée|figurent les '''$1''' dernières modifications effectuées}} durant {{PLURAL:$2|la dernière heure|les '''$2''' dernières heures}}, depuis $3, $4.",
 'wlshowlast' => 'Montrer les dernières $1 heures, les derniers $2 jours ou bien $3',
 'watchlist-options' => 'Options de la liste de suivi',
@@ -2407,19 +2410,23 @@ L’adresse électronique que vous avez indiquée dans [[Special:Preferences|vos
 
 'enotif_mailer' => 'Système de notification par courriel de {{SITENAME}}',
 'enotif_reset' => 'Marquer toutes les pages comme visitées',
-'enotif_newpagetext' => 'Ceci est une nouvelle page.',
 'enotif_impersonal_salutation' => 'Utilisateur de {{SITENAME}}',
-'changed' => 'modifiée',
-'created' => 'créée',
-'enotif_subject' => 'La page $PAGETITLE de {{SITENAME}} a été $CHANGEDORCREATED par $PAGEEDITOR',
+'enotif_subject_deleted' => 'La page $1 sur {{SITENAME}} a été supprimée par {{GENDER:$2|$2}}',
+'enotif_subject_created' => 'La page $1 sur {{SITENAME}} a été créée par {{GENDER:$2|$2}}',
+'enotif_subject_moved' => 'La page $1 sur {{SITENAME}} a été renommée par {{GENDER:$2|$2}}',
+'enotif_subject_restored' => 'La page $1 sur {{SITENAME}} a été restaurée par {{GENDER:$2|$2}}',
+'enotif_subject_changed' => 'La page $1 sur {{SITENAME}} a été modifiée par {{GENDER:$2|$2}}',
+'enotif_body_intro_deleted' => 'La page $1 sur {{SITENAME}} a été effacée le $PAGEEDITDATE par {{GENDER:$2|$2}}, voir $3 pour la révision actuelle.',
+'enotif_body_intro_created' => 'La page $1 sur {{SITENAME}} a été créée le $PAGEEDITDATE par {{GENDER:$2|$2}}, voir $3 pour la révision actuelle.',
+'enotif_body_intro_moved' => 'La page $1 sur {{SITENAME}} a été renommée le $PAGEEDITDATE par {{GENDER:$2|$2}}, voir $3 pour la révision actuelle.',
+'enotif_body_intro_restored' => 'La page $1 sur {{SITENAME}} a été restaurée le $PAGEEDITDATE par {{GENDER:$2|$2}}, voir $3 pour la révision actuelle.',
+'enotif_body_intro_changed' => 'La page $1 sur {{SITENAME}} a été modifiée le $PAGEEDITDATE par {{GENDER:$2|$2}}, voir $3 pour la révision actuelle.',
 'enotif_lastvisited' => 'Voyez $1 pour tous les changements depuis votre dernière visite.',
 'enotif_lastdiff' => 'Voyez $1 pour visualiser ces changements.',
 'enotif_anon_editor' => 'utilisateur non-enregistré $1',
 'enotif_body' => 'Cher $WATCHINGUSERNAME,
 
-La page « $PAGETITLE » de {{SITENAME}} a été $CHANGEDORCREATED le $PAGEEDITDATE par « $PAGEEDITOR », visitez $PAGETITLE_URL pour visualiser la version actuelle.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Résumé du contributeur : $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2427,8 +2434,7 @@ Contactez ce contributeur :
 courriel : $PAGEEDITOR_EMAIL
 wiki : $PAGEEDITOR_WIKI
 
-Il n’y aura pas d’autres notifications en cas de changements ultérieurs, à moins que vous ne visitiez cette page.
-Vous pouvez aussi réinitialiser les drapeaux de notification pour toutes les pages de votre liste de suivi.
+Il n\'y aura pas d\'autres notifications en cas de changements ultérieurs, à moins que vous ne visitiez cette page. Vous pouvez aussi réinitialiser les drapeaux de notification pour toutes les pages de votre liste de suivi.
 
              Votre système de notification de {{SITENAME}}
 
@@ -2455,9 +2461,9 @@ Retour et assistance :
 'delete-confirm' => 'Supprimer « $1 »',
 'delete-legend' => 'Supprimer',
 'historywarning' => "'''Attention :''' la page que vous êtes sur le point de supprimer a un historique avec environ $1 {{PLURAL:$1|version|versions}} :",
-'confirmdeletetext' => 'Vous êtes sur le point de supprimer une page ou un fichier, ainsi que toutes ses versions antérieures historisées. Veuillez confirmer que c’est bien là ce que vous voulez faire, que vous en comprenez les conséquences et que vous faites ceci en accord avec les [[{{MediaWiki:Policy-url}}|règles internes]].',
+'confirmdeletetext' => "Vous êtes sur le point de supprimer une page ou un fichier, ainsi que toutes ses versions antérieures historisées. Veuillez confirmer que c'est bien là ce que vous voulez faire, que vous en comprenez les conséquences et que vous faites ceci en accord avec les [[{{MediaWiki:Policy-url}}|règles internes]].",
 'actioncomplete' => 'Action effectuée',
-'actionfailed' => 'L’action a échoué',
+'actionfailed' => "L'action a échoué",
 'deletedtext' => '« $1 » a été supprimée.
 Voir $2 pour une liste des suppressions récentes.',
 'dellogpage' => 'Journal des suppressions de page',
@@ -2467,16 +2473,16 @@ Voir $2 pour une liste des suppressions récentes.',
 'deletecomment' => 'Motif :',
 'deleteotherreason' => 'Motif autre ou supplémentaire :',
 'deletereasonotherlist' => 'Autre motif',
-'deletereason-dropdown' => '* Motifs de suppression les plus courants
-** Demande de lauteur
-** Violation des droits dauteur
-** Vandalisme',
+'deletereason-dropdown' => "* Motifs de suppression les plus courants
+** Demande de l'auteur
+** Violation des droits d'auteur
+** Vandalisme",
 'delete-edit-reasonlist' => 'Modifier les motifs de suppression de page',
 'delete-toobig' => 'Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}.
 La suppression de telles pages a été restreinte pour prévenir des perturbations accidentelles de {{SITENAME}}.',
-'delete-warning-toobig' => 'Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}.
+'delete-warning-toobig' => "Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}.
 La supprimer peut perturber le fonctionnement de la base de données de {{SITENAME}} ;
-veuiller ne procéder qu’avec prudence.',
+veuiller ne procéder qu'avec prudence.",
 
 # Rollback
 'rollback' => 'Révoquer les modifications',
@@ -2487,21 +2493,21 @@ veuiller ne procéder qu’avec prudence.',
 'rollbackfailed' => 'La révocation a échoué',
 'cantrollback' => 'Impossible de révoquer la modification ;
 le dernier contributeur est le seul auteur de cette page.',
-'alreadyrolled' => 'Impossible de révoquer la dernière modification de la page « [[:$1]] » effectuée par [[User:$2|$2]] ([[User talk:$2|Discuter]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ;
-quelqu’un d’autre a déjà modifié ou révoqué la page.
+'alreadyrolled' => "Impossible de révoquer la dernière modification de la page « [[:$1]] » effectuée par [[User:$2|$2]] ([[User talk:$2|Discuter]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ;
+quelqu'un d'autre a déjà modifié ou révoqué la page.
 
-La dernière modification de la page a été effectuée par [[User:$3|$3]] ([[User talk:$3|Discuter]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+La dernière modification de la page a été effectuée par [[User:$3|$3]] ([[User talk:$3|Discuter]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
 'editcomment' => "Le résumé de la modification était : « ''$1'' ».",
 'revertpage' => 'Révocation des modifications de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]]) vers la dernière version de [[User:$1|$1]]',
-'revertpage-nouser' => 'Révocation des modifications par (nom d’utilisateur supprimé) à la dernière version par [[User:$1|$1]]',
+'revertpage-nouser' => "Révocation des modifications par (nom d'utilisateur supprimé) à la dernière version par [[User:$1|$1]]",
 'rollback-success' => 'Révocation des modifications effectuées par $1 ;
 rétablissement de la dernière version par $2.',
 
 # Edit tokens
 'sessionfailure-title' => 'Erreur de session',
-'sessionfailure' => 'Votre session de connexion semble avoir des problèmes ;
-cette action a été annulée en prévention dun piratage de session.
-Veuillez cliquer sur « Précédent », rechargez la page d’où vous venez, puis réessayez.',
+'sessionfailure' => "Votre session de connexion semble avoir des problèmes ;
+cette action a été annulée en prévention d'un piratage de session.
+Veuillez cliquer sur « Précédent », rechargez la page d'où vous venez, puis réessayez.",
 
 # Protect
 'protectlogpage' => 'Journal des protections',
@@ -2518,18 +2524,18 @@ Consultez la [[Special:ProtectedPages|liste des pages protégées]] pour la list
 'protect-badnamespace-text' => 'Les pages dans cet espace de noms ne peuvent pas être protégées.',
 'protect-legend' => 'Confirmer la protection',
 'protectcomment' => 'Motif :',
-'protectexpiry' => 'Date d’expiration :',
-'protect_expiry_invalid' => 'La date d’expiration est invalide.',
-'protect_expiry_old' => 'La date d’expiration est déjà passée.',
-'protect-unchain-permissions' => 'Déverrouiller davantage d’options de protection',
+'protectexpiry' => "Date d'expiration :",
+'protect_expiry_invalid' => "La date d'expiration est invalide.",
+'protect_expiry_old' => "La date d'expiration est déjà passée.",
+'protect-unchain-permissions' => "Déverrouiller davantage d'options de protection",
 'protect-text' => "Vous pouvez consulter et modifier le niveau de protection de la page '''$1'''.",
 'protect-locked-blocked' => "Vous ne pouvez pas modifier les niveaux de protection tant que vous êtes bloqué{{GENDER:||e|(e)}}.
 Voici les réglages actuels de la page '''$1''' :",
 'protect-locked-dblock' => "Le niveau de protection ne peut pas être modifié car la base de données est verrouillée.
 Voici les réglages actuels de la page '''$1''' :",
-'protect-locked-access' => "Vous navez pas les droits nécessaires pour modifier les niveaux de protection de pages.
+'protect-locked-access' => "Vous n'avez pas les droits nécessaires pour modifier les niveaux de protection de pages.
 Voici les réglages actuels de la page '''$1''' :",
-'protect-cascadeon' => 'Cette page est protégée car incluse dans {{PLURAL:$1|la page suivante, qui a été protégée|les pages suivantes, qui ont été protégées}} avec l’option « protection en cascade » activée. Vous pouvez changer le niveau de protection de cette page sans que cela n’affecte la protection en cascade.',
+'protect-cascadeon' => "Cette page est protégée car incluse dans {{PLURAL:$1|la page suivante, qui a été protégée|les pages suivantes, qui ont été protégées}} avec l'option « protection en cascade » activée. Vous pouvez changer le niveau de protection de cette page sans que cela n'affecte la protection en cascade.",
 'protect-default' => 'Autoriser tous les utilisateurs',
 'protect-fallback' => 'Nécessite la permission « $1 »',
 'protect-level-autoconfirmed' => 'Bloquer les nouveaux utilisateurs et les utilisateurs anonymes',
@@ -2539,10 +2545,10 @@ Voici les réglages actuels de la page '''$1''' :",
 'protect-expiring-local' => 'expire le $1',
 'protect-expiry-indefinite' => 'infini',
 'protect-cascade' => 'Protéger les pages incluses dans celle-ci (protection en cascade)',
-'protect-cantedit' => 'Vous ne pouvez pas changer les niveaux de protection de cette page car vous n’avez pas la permission de la modifier.',
-'protect-othertime' => 'Autre date d’expiration :',
-'protect-othertime-op' => 'autre date d’expiration',
-'protect-existing-expiry' => 'Date d’expiration existante : $2 à $3',
+'protect-cantedit' => "Vous ne pouvez pas changer les niveaux de protection de cette page car vous n'avez pas la permission de la modifier.",
+'protect-othertime' => "Autre date d'expiration :",
+'protect-othertime-op' => "autre date d'expiration",
+'protect-existing-expiry' => "Date d'expiration existante : $2 à $3",
 'protect-otherreason' => 'Motif autre ou supplémentaire :',
 'protect-otherreason-op' => 'Autre motif',
 'protect-dropdown' => '* Motifs de protection courants
@@ -2574,22 +2580,22 @@ Voici les réglages actuels de la page '''$1''' :",
 'undeletepage' => 'Voir et restaurer des pages supprimées',
 'undeletepagetitle' => "'''La liste suivante contient des versions supprimées de [[:$1|$1]]'''.",
 'viewdeletedpage' => 'Voir les pages supprimées',
-'undeletepagetext' => '{{PLURAL:$1|La page suivante a été supprimée et se trouve|Les pages suivantes ont été supprimées et se trouvent}} dans la base de données archive, d’où {{PLURAL:$1|elle peut|elles peuvent}} encore être restaurée{{PLURAL:$1||s}}.
-L’archive peut être nettoyée périodiquement.',
+'undeletepagetext' => "{{PLURAL:$1|La page suivante a été supprimée et se trouve|Les pages suivantes ont été supprimées et se trouvent}} dans la base de données archive, d'où {{PLURAL:$1|elle peut|elles peuvent}} encore être restaurée{{PLURAL:$1||s}}.
+L'archive peut être nettoyée périodiquement.",
 'undelete-fieldset-title' => 'Restaurer les versions',
-'undeleteextrahelp' => "Pour restaurer lhistorique complet de cette page, laissez toutes les cases décochées et cliquez sur '''''Restaurer'''''.
+'undeleteextrahelp' => "Pour restaurer l'historique complet de cette page, laissez toutes les cases décochées et cliquez sur '''''Restaurer'''''.
 Pour effectuer une restauration partielle, cochez les cases correspondant aux versions à rétablir, puis cliquez sur '''''Restaurer'''''.",
 'undeleterevisions' => '$1 {{PLURAL:$1|version archivée|versions archivées}}',
-'undeletehistory' => 'Si vous restaurez la page, toutes les versions seront replacées dans l’historique.
-Si une nouvelle page avec le même nom a été créée depuis la suppression, les versions restaurées apparaîtront dans l’historique antérieur et la version courante ne sera pas automatiquement remplacée.',
+'undeletehistory' => "Si vous restaurez la page, toutes les versions seront replacées dans l'historique.
+Si une nouvelle page avec le même nom a été créée depuis la suppression, les versions restaurées apparaîtront dans l'historique antérieur et la version courante ne sera pas automatiquement remplacée.",
 'undeleterevdel' => 'La restauration ne sera pas effectuée si, au final, la version la plus récente de la page ou du fichier reste partiellement supprimée.
 Dans de tels cas, vous devez décocher ou démasquer les versions effacées les plus récentes (en tête de liste).',
-'undeletehistorynoadmin' => 'Cette page a été supprimée.
-Le motif de la suppression est indiqué dans le résumé ci-dessous, avec les détails des utilisateurs qui lont modifié avant sa suppression.
-Le contenu effectif de ces versions supprimées n’est accessible qu’aux administrateurs.',
+'undeletehistorynoadmin' => "Cette page a été supprimée.
+Le motif de la suppression est indiqué dans le résumé ci-dessous, avec les détails des utilisateurs qui l'ont modifié avant sa suppression.
+Le contenu effectif de ces versions supprimées n'est accessible qu'aux administrateurs.",
 'undelete-revision' => 'Version supprimée de $1 (version du $4 à $5) par $3 :',
-'undeleterevision-missing' => 'Version incorrecte ou manquante.
-Vous avez peut-être un mauvais lien, ou la version a pu être restaurée ou supprimée de l’archive.',
+'undeleterevision-missing' => "Version incorrecte ou manquante.
+Vous avez peut-être un mauvais lien, ou la version a pu être restaurée ou supprimée de l'archive.",
 'undelete-nodiff' => 'Aucune version précédente trouvée.',
 'undeletebtn' => 'Restaurer',
 'undeletelink' => 'visualiser/rétablir',
@@ -2610,12 +2616,12 @@ Consultez le [[Special:Log/delete|journal des suppressions]] pour obtenir la lis
 'undelete-search-box' => 'Rechercher des pages supprimées',
 'undelete-search-prefix' => 'Montrer les pages commençant par :',
 'undelete-search-submit' => 'Rechercher',
-'undelete-no-results' => 'Aucune page correspondante n’a été trouvée dans les archives de suppression.',
+'undelete-no-results' => "Aucune page correspondante n'a été trouvée dans les archives de suppression.",
 'undelete-filename-mismatch' => 'Impossible de restaurer la version du fichier datée du $1 : le nom de fichier ne correspond pas.',
 'undelete-bad-store-key' => 'Impossible de restaurer la version du fichier datée du $1 : le fichier était absent avant la suppression.',
-'undelete-cleanup-error' => 'Erreur lors de la suppression du fichier d’archive inutilisé « $1 ».',
-'undelete-missing-filearchive' => 'Impossible de restaurer le fichier d’archive avec l’identifiant $1 parce qu’il n’est pas dans la base de données.
-Il a peut-être déjà été restauré.',
+'undelete-cleanup-error' => "Erreur lors de la suppression du fichier d'archive inutilisé « $1 ».",
+'undelete-missing-filearchive' => "Impossible de restaurer le fichier d'archive avec l'identifiant $1 parce qu'il n'est pas dans la base de données.
+Il a peut-être déjà été restauré.",
 'undelete-error' => "Page d'erreur d'annulation",
 'undelete-error-short' => 'Erreur lors de la restauration du fichier : $1',
 'undelete-error-long' => 'Des erreurs ont été rencontrées lors de la restauration du fichier :
@@ -2634,10 +2640,10 @@ $1',
 
 # Contributions
 'contributions' => "Contributions de l'utilisateur",
-'contributions-title' => 'Liste des contributions de l’utilisateur $1',
+'contributions-title' => "Liste des contributions de l'utilisateur $1",
 'mycontris' => 'Contributions',
 'contribsub2' => 'Pour $1 ($2)',
-'nocontribs' => 'Aucune modification correspondant à ces critères n’a été trouvée.',
+'nocontribs' => "Aucune modification correspondant à ces critères n'a été trouvée.",
 'uctop' => '(dernière)',
 'month' => 'À partir du mois (et précédents) :',
 'year' => "À partir de l'année (et précédentes) :",
@@ -2726,7 +2732,7 @@ Consultez la [[Special:BlockList|liste des blocages]] pour revoir les blocages.'
 'ipb-blocklist' => 'Voir les blocages existants',
 'ipb-blocklist-contribs' => 'Contributions pour $1',
 'unblockip' => 'Débloquer un utilisateur ou une adresse IP',
-'unblockiptext' => 'Utilisez le formulaire ci-dessous pour rétablir l’accès aux modifications depuis une adresse IP ou un nom d’utilisateur.',
+'unblockiptext' => "Utilisez le formulaire ci-dessous pour rétablir l'accès aux modifications depuis une adresse IP ou un nom d'utilisateur.",
 'ipusubmit' => 'Supprimer ce blocage',
 'unblocked' => '[[User:$1|$1]] a été débloqué',
 'unblocked-range' => '$1 a été débloqué',
@@ -2736,11 +2742,11 @@ Consultez la [[Special:BlockList|liste des blocages]] pour revoir les blocages.'
 'ipblocklist-legend' => 'Chercher un utilisateur bloqué',
 'blocklist-userblocks' => 'Masquer les blocages de comptes',
 'blocklist-tempblocks' => 'Masquer les blocages temporaires',
-'blocklist-addressblocks' => 'Masquer les blocages d’adresses IP uniques',
+'blocklist-addressblocks' => "Masquer les blocages d'adresses IP uniques",
 'blocklist-rangeblocks' => 'Masquer les blocs de portée',
 'blocklist-timestamp' => 'Date et heure',
 'blocklist-target' => 'Cible',
-'blocklist-expiry' => 'Date d’expiration',
+'blocklist-expiry' => "Date d'expiration",
 'blocklist-by' => 'Administrateur ayant effectué le blocage',
 'blocklist-params' => 'Paramètres de blocage',
 'blocklist-reason' => 'Motif',
@@ -2768,9 +2774,9 @@ Le motif fourni pour le blocage de $1 est : « $2 ».',
 'blocklog-showsuppresslog' => 'Cet utilisateur a été bloqué et caché précédemment. Le journal des suppressions est disponible ci-dessous :',
 'blocklogentry' => 'a bloqué [[$1]] ; expiration : $2 $3',
 'reblock-logentry' => 'a modifié les paramètres du blocage de [[$1]] avec une expiration au $2 $3',
-'blocklogtext' => 'Ceci est le journal des actions de blocages et déblocages d’utilisateurs.
+'blocklogtext' => "Ceci est le journal des actions de blocages et déblocages d'utilisateurs.
 Les adresses IP automatiquement bloquées ne sont pas listées.
-Consultez la [[Special:BlockList|liste des blocages]] pour voir les bannissements et blocages effectivement en cours.',
+Consultez la [[Special:BlockList|liste des blocages]] pour voir les bannissements et blocages effectivement en cours.",
 'unblocklogentry' => 'a débloqué $1',
 'block-log-flags-anononly' => 'utilisateurs anonymes seulement',
 'block-log-flags-nocreate' => 'création de compte interdite',
@@ -2778,75 +2784,75 @@ Consultez la [[Special:BlockList|liste des blocages]] pour voir les bannissement
 'block-log-flags-noemail' => 'envoi de courriel interdit',
 'block-log-flags-nousertalk' => 'ne peut modifier sa propre page de discussion',
 'block-log-flags-angry-autoblock' => 'autoblocage amélioré activé',
-'block-log-flags-hiddenname' => 'nom d’utilisateur caché',
+'block-log-flags-hiddenname' => "nom d'utilisateur caché",
 'range_block_disabled' => 'Le droit administrateur de créer des blocages de plages IP est désactivé.',
-'ipb_expiry_invalid' => 'Durée d’expiration incorrecte.',
-'ipb_expiry_temp' => 'Les blocages de noms d’utilisateurs cachés doivent être permanents.',
+'ipb_expiry_invalid' => "Durée d'expiration incorrecte.",
+'ipb_expiry_temp' => "Les blocages de noms d'utilisateurs cachés doivent être permanents.",
 'ipb_hide_invalid' => 'Impossible de supprimer ce compte ; il semble avoir trop de modifications.',
 'ipb_already_blocked' => '« $1 » est déjà bloqué',
 'ipb-needreblock' => '$1 est déjà bloqué. Voulez-vous modifier les paramètres ?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Autre blocage|Autres blocages}}',
 'unblock-hideuser' => "Vous ne pouvez pas débloquer cet utilisateur, car son nom d'utilisateur a été masqué.",
-'ipb_cant_unblock' => 'Erreur : identifiant de blocage $1 non trouvé.
-Il est possible qu’un déblocage ait déjà été effectué.',
-'ipb_blocked_as_range' => 'Erreur : l’adresse IP $1 n’est pas bloquée directement et ne peut donc pas être débloquée.
-Elle fait cependant partie de la plage $2 qui, elle, peut être débloquée.',
+'ipb_cant_unblock' => "Erreur : identifiant de blocage $1 non trouvé.
+Il est possible qu'un déblocage ait déjà été effectué.",
+'ipb_blocked_as_range' => "Erreur : l'adresse IP $1 n'est pas bloquée directement et ne peut donc pas être débloquée.
+Elle fait cependant partie de la plage $2 qui, elle, peut être débloquée.",
 'ip_range_invalid' => 'Plage IP incorrecte.',
 'ip_range_toolarge' => 'Les blocages de plages plus grandes que /$1 ne sont pas autorisées.',
 'blockme' => 'Bloquez-moi',
 'proxyblocker' => 'Bloqueur de mandataires',
 'proxyblocker-disabled' => 'Cette fonction est désactivée.',
-'proxyblockreason' => 'Votre adresse IP a été bloquée car il s’agit d’un mandataire ouvert.
-Veuillez contacter votre fournisseur d’accès Internet ou votre support technique et l’informer de ce sérieux problème de sécurité.',
+'proxyblockreason' => "Votre adresse IP a été bloquée car il s'agit d'un mandataire ouvert.
+Veuillez contacter votre fournisseur d'accès Internet ou votre support technique et l'informer de ce sérieux problème de sécurité.",
 'proxyblocksuccess' => 'Fait.',
 'sorbsreason' => 'Votre adresse IP est listée comme mandataire ouvert dans le DNSBL utilisé par {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Votre adresse IP est listée comme mandataire ouvert dans le DNSBL utilisé par {{SITENAME}}.
 Vous ne pouvez pas créer un compte.',
-'cant-block-while-blocked' => 'Vous ne pouvez pas bloquer d’autres utilisateurs tant que vous êtes bloqué{{GENDER:||e|(e)}}.',
-'cant-see-hidden-user' => "L’utilisateur que vous tentez de bloquer a déjà été bloqué et masqué. N’ayant pas le droit ''hideuser'', vous ne pouvez pas voir ou modifier le blocage de cet utilisateur.",
-'ipbblocked' => 'Vous ne pouvez pas bloquer ou débloquer d’autres utilisateurs, parce que vous êtes vous-même bloqué',
-'ipbnounblockself' => 'Vous n’êtes pas autorisé à vous débloquer vous-même',
+'cant-block-while-blocked' => "Vous ne pouvez pas bloquer d'autres utilisateurs tant que vous êtes bloqué{{GENDER:||e|(e)}}.",
+'cant-see-hidden-user' => "L'utilisateur que vous tentez de bloquer a déjà été bloqué et masqué. N'ayant pas le droit ''hideuser'', vous ne pouvez pas voir ou modifier le blocage de cet utilisateur.",
+'ipbblocked' => "Vous ne pouvez pas bloquer ou débloquer d'autres utilisateurs, parce que vous êtes vous-même bloqué",
+'ipbnounblockself' => "Vous n'êtes pas autorisé à vous débloquer vous-même",
 
 # Developer tools
 'lockdb' => 'Verrouiller la base de données',
 'unlockdb' => 'Déverrouiller la base de données',
-'lockdbtext' => 'Le verrouillage de la base de données empêchera tous les utilisateurs de modifier des pages, d’enregistrer leurs préférences, de modifier leur liste de suivi et d’effectuer toutes les autres opérations nécessitant des changements dans la base de données.
-Veuillez confirmer que c’est bien là ce que vous voulez faire et que vous déverrouillerez la base dès que votre opération de maintenance sera terminée.',
-'unlockdbtext' => 'Le déverrouillage de la base de données permettra à nouveau à tous les utilisateurs de modifier des pages, de changer leurs préférences, de modifier leur liste de suivi et d’effectuer les autres opérations nécessitant des changements dans la base de données.
-Veuillez confirmer que c’est bien là ce que vous voulez faire.',
+'lockdbtext' => "Le verrouillage de la base de données empêchera tous les utilisateurs de modifier des pages, d'enregistrer leurs préférences, de modifier leur liste de suivi et d'effectuer toutes les autres opérations nécessitant des changements dans la base de données.
+Veuillez confirmer que c'est bien là ce que vous voulez faire et que vous déverrouillerez la base dès que votre opération de maintenance sera terminée.",
+'unlockdbtext' => "Le déverrouillage de la base de données permettra à nouveau à tous les utilisateurs de modifier des pages, de changer leurs préférences, de modifier leur liste de suivi et d'effectuer les autres opérations nécessitant des changements dans la base de données.
+Veuillez confirmer que c'est bien là ce que vous voulez faire.",
 'lockconfirm' => 'Oui, je confirme que je souhaite verrouiller la base de données.',
 'unlockconfirm' => 'Oui, je confirme que je souhaite déverrouiller la base de données.',
 'lockbtn' => 'Verrouiller la base de données',
 'unlockbtn' => 'Déverrouiller la base de données',
-'locknoconfirm' => 'Vous n’avez pas coché la case de confirmation.',
+'locknoconfirm' => "Vous n'avez pas coché la case de confirmation.",
 'lockdbsuccesssub' => 'Verrouillage de la base de données réussi',
 'unlockdbsuccesssub' => 'Verrouillage de la base de données supprimé',
-'lockdbsuccesstext' => 'La base de données a été verrouillée.<br />
-N’oubliez pas de la [[Special:UnlockDB|déverrouiller]] lorsque vous aurez terminé votre opération de maintenance.',
+'lockdbsuccesstext' => "La base de données a été verrouillée.<br />
+N'oubliez pas de la [[Special:UnlockDB|déverrouiller]] lorsque vous aurez terminé votre opération de maintenance.",
 'unlockdbsuccesstext' => 'La base de données a été déverrouillée.',
-'lockfilenotwritable' => 'Le fichier de verrouillage de la base de données n’est pas inscriptible.
-Pour bloquer ou débloquer la base de données, il doit être accessible par le serveur web.',
-'databasenotlocked' => 'La base de données n’est pas verrouillée.',
+'lockfilenotwritable' => "Le fichier de verrouillage de la base de données n'est pas inscriptible.
+Pour bloquer ou débloquer la base de données, il doit être accessible par le serveur web.",
+'databasenotlocked' => "La base de données n'est pas verrouillée.",
 'lockedbyandtime' => '(par $1 le $2 à $3)',
 
 # Move page
 'move-page' => 'Renommer $1',
 'move-page-legend' => 'Renommer une page',
-'movepagetext' => "Utilisez le formulaire ci-dessous pour renommer une page, en déplaçant tout son historique vers le nouveau nom. Lancien titre deviendra une page de redirection vers le nouveau titre. Vous pouvez mettre à jour automatiquement les redirections actuelles qui pointent vers le titre original. Si vous choisissez de ne pas le faire, assurez-vous de vérifier toute [[Special:DoubleRedirects|double redirection]] ou [[Special:BrokenRedirects|redirection cassée]]. Vous avez la responsabilité de vous assurer que les liens continuent de pointer vers leur destination supposée.
+'movepagetext' => "Utilisez le formulaire ci-dessous pour renommer une page, en déplaçant tout son historique vers le nouveau nom. L'ancien titre deviendra une page de redirection vers le nouveau titre. Vous pouvez mettre à jour automatiquement les redirections actuelles qui pointent vers le titre original. Si vous choisissez de ne pas le faire, assurez-vous de vérifier toute [[Special:DoubleRedirects|double redirection]] ou [[Special:BrokenRedirects|redirection cassée]]. Vous avez la responsabilité de vous assurer que les liens continuent de pointer vers leur destination supposée.
 
-Notez que la page ne sera '''pas''' renommée s’il existe déjà une page avec le nouveau titre, sauf si cette dernière a un historique de modifications vierge et est soit vide, soit une simple redirection. Ceci permet de renommer une page vers sa position d’origine si le déplacement s’avère erroné.
+Notez que la page ne sera '''pas''' renommée s'il existe déjà une page avec le nouveau titre, sauf si cette dernière a un historique de modifications vierge et est soit vide, soit une simple redirection. Ceci permet de renommer une page vers sa position d'origine si le déplacement s'avère erroné.
 
 '''Attention !'''
-Ceci peut provoquer un changement radical et imprévu pour une page souvent consultée ; assurez-vous den avoir compris les conséquences avant de continuer.",
+Ceci peut provoquer un changement radical et imprévu pour une page souvent consultée ; assurez-vous d'en avoir compris les conséquences avant de continuer.",
 'movepagetext-noredirectfixer' => "Utilisez le formulaire ci-dessous pour renommer une page, en déplaçant tout son historique vers le nouveau nom.
-Lancien titre deviendra une page de redirection vers le nouveau titre.
+L'ancien titre deviendra une page de redirection vers le nouveau titre.
 Vérifiez bien les [[Special:DoubleRedirects|doubles redirections]] ou les [[Special:BrokenRedirects|redirections cassées]].
 Vous avez la responsabilité de vous assurer que les liens continuent de pointer vers leur destination supposée.
 
-Notez que la page ne sera '''pas''' déplacée s’il existe déjà une page avec le nouveau titre, sauf si cette dernière a un historique de modifications vierge et est soit vide, soit une simple redirection. Ceci permet de renommer une page vers sa position d’origine si le déplacement s’avère erroné, et il est impossible d’écraser une page existante.
+Notez que la page ne sera '''pas''' déplacée s'il existe déjà une page avec le nouveau titre, sauf si cette dernière a un historique de modifications vierge et est soit vide, soit une simple redirection. Ceci permet de renommer une page vers sa position d'origine si le déplacement s'avère erroné, et il est impossible d'écraser une page existante.
 
 '''Attention !'''
-Ceci peut provoquer un changement radical et imprévu pour une page souvent consultée ; assurez-vous den avoir compris les conséquences avant de continuer.",
+Ceci peut provoquer un changement radical et imprévu pour une page souvent consultée ; assurez-vous d'en avoir compris les conséquences avant de continuer.",
 'movepagetalktext' => "La page de discussion associée, si présente, sera automatiquement renommée '''sauf si :'''
 * vous déplacez la page vers un autre espace de noms, ou
 * une page de discussion non vide existe déjà sous le nouveau nom, ou
@@ -2854,37 +2860,37 @@ Ceci peut provoquer un changement radical et imprévu pour une page souvent cons
 
 Dans ces cas-là, vous devrez renommer ou fusionner cette page de discussion manuellement si vous le désirez.",
 'movearticle' => 'Renommer la page :',
-'moveuserpage-warning' => "'''Attention :''' Vous êtes sur le point de renommer une page d’utilisateur. Veuillez noter que seul la page sera renommée et que l’utilisateur '''ne''' sera '''pas''' renommé.",
-'movenologin' => 'Vous n’êtes pas identifié{{GENDER:||e|(e)}}.',
-'movenologintext' => 'Pour pouvoir renommer une page, vous devez être [[Special:UserLogin|identifié{{GENDER:||e|(e)}}]] avec un compte utilisateur enregistré et d’ancienneté suffisante.',
-'movenotallowed' => 'Vous n’avez pas la permission de renommer les pages.',
-'movenotallowedfile' => 'Vous n’avez pas la permission de renommer les fichiers.',
-'cant-move-user-page' => 'Vous n’avez pas la permission de renommer les pages principales d’utilisateurs (en dehors de leurs sous-pages).',
-'cant-move-to-user-page' => 'Vous n’avez pas la permission de renommer une page vers une page utilisateur (à l’exception d’une sous-page).',
+'moveuserpage-warning' => "'''Attention :''' Vous êtes sur le point de renommer une page d'utilisateur. Veuillez noter que seul la page sera renommée et que l'utilisateur '''ne''' sera '''pas''' renommé.",
+'movenologin' => "Vous n'êtes pas identifié{{GENDER:||e|(e)}}.",
+'movenologintext' => "Pour pouvoir renommer une page, vous devez être [[Special:UserLogin|identifié{{GENDER:||e|(e)}}]] avec un compte utilisateur enregistré et d'ancienneté suffisante.",
+'movenotallowed' => "Vous n'avez pas la permission de renommer les pages.",
+'movenotallowedfile' => "Vous n'avez pas la permission de renommer les fichiers.",
+'cant-move-user-page' => "Vous n'avez pas la permission de renommer les pages principales d'utilisateurs (en dehors de leurs sous-pages).",
+'cant-move-to-user-page' => "Vous n'avez pas la permission de renommer une page vers une page utilisateur (à l'exception d'une sous-page).",
 'newtitle' => 'Vers le nouveau titre :',
 'move-watch' => 'Suivre les pages originale et nouvelle',
 'movepagebtn' => 'Renommer la page',
 'pagemovedsub' => 'Renommage réussi',
 'movepage-moved' => "'''« $1 »''' a été renommé '''« $2 »'''",
-'movepage-moved-redirect' => 'Une redirection depuis l’ancien nom a été créée.',
-'movepage-moved-noredirect' => 'La création d’une redirection depuis l’ancien nom a été annulée.',
-'articleexists' => 'Il existe déjà une page portant ce titre, ou le titre que vous avez choisi n’est pas correct.
-Veuillez en choisir un autre.',
+'movepage-moved-redirect' => "Une redirection depuis l'ancien nom a été créée.",
+'movepage-moved-noredirect' => "La création d'une redirection depuis l'ancien nom a été annulée.",
+'articleexists' => "Il existe déjà une page portant ce titre, ou le titre que vous avez choisi n'est pas correct.
+Veuillez en choisir un autre.",
 'cantmove-titleprotected' => 'Vous ne pouvez pas déplacer une page vers cet emplacement car la création de page avec ce nouveau titre a été protégée.',
-'talkexists' => "'''La page elle-même a été déplacée avec succès, mais la page de discussion na pas pu être déplacée car il en existait déjà une sous le nouveau nom. Veuillez les fusionner manuellement.'''",
+'talkexists' => "'''La page elle-même a été déplacée avec succès, mais la page de discussion n'a pas pu être déplacée car il en existait déjà une sous le nouveau nom. Veuillez les fusionner manuellement.'''",
 'movedto' => 'renommé en',
 'movetalk' => 'Renommer aussi la page de discussion associée',
-'move-subpages' => 'Renommer les sous-pages (jusqu’à $1 {{PLURAL:$1|page|pages}})',
-'move-talk-subpages' => 'Renommer les sous-pages de la page de discussion (jusqu’à $1 pages)',
+'move-subpages' => "Renommer les sous-pages (jusqu'à $1 {{PLURAL:$1|page|pages}})",
+'move-talk-subpages' => "Renommer les sous-pages de la page de discussion (jusqu'à $1 pages)",
 'movepage-page-exists' => 'La page $1 existe déjà et ne peut pas être écrasée automatiquement.',
 'movepage-page-moved' => 'La page $1 a été renommée en $2.',
-'movepage-page-unmoved' => 'La page $1 n’a pas pu être renommée en $2.',
+'movepage-page-unmoved' => "La page $1 n'a pas pu être renommée en $2.",
 'movepage-max-pages' => 'Le maximum de $1 {{PLURAL:$1|page renommée|pages renommées}} a été atteint et aucune autre page ne sera renommée automatiquement.',
 'movelogpage' => 'Journal des renommages',
 'movelogpagetext' => 'Voici la liste de toutes les pages renommées ou déplacées.',
 'movesubpage' => 'Sous-page{{PLURAL:$1||s}}',
 'movesubpagetext' => 'Cette page a $1 {{PLURAL:$1|sous-page affichée|sous-pages affichées}} ci-dessous.',
-'movenosubpage' => 'Cette page n’a aucune sous-page.',
+'movenosubpage' => "Cette page n'a aucune sous-page.",
 'movereason' => 'Motif :',
 'revertmove' => 'rétablir',
 'delete_and_move' => 'Supprimer et renommer',
@@ -2893,21 +2899,21 @@ La page de destination « [[:$1]] » existe déjà.
 Êtes-vous certain{{GENDER:||e|}} de vouloir la supprimer pour permettre ce renommage ?',
 'delete_and_move_confirm' => 'Oui, supprimer la page de destination',
 'delete_and_move_reason' => 'Page supprimée pour permettre le renommage depuis "[[$1]]"',
-'selfmove' => 'Les titres d’origine et de destination sont les mêmes ;
-impossible de renommer une page sur elle-même.',
-'immobile-source-namespace' => 'Vous ne pouvez pas renommer les pages dans l’espace de noms « $1 »',
-'immobile-target-namespace' => 'Vous ne pouvez pas renommer des pages vers l’espace de noms « $1 »',
+'selfmove' => "Les titres d'origine et de destination sont les mêmes ;
+impossible de renommer une page sur elle-même.",
+'immobile-source-namespace' => "Vous ne pouvez pas renommer les pages dans l'espace de noms « $1 »",
+'immobile-target-namespace' => "Vous ne pouvez pas renommer des pages vers l'espace de noms « $1 »",
 'immobile-target-namespace-iw' => 'Les destinations interwikis ne sont pas une cible valide pour les déplacements.',
-'immobile-source-page' => 'Cette page n’est pas renommable.',
-'immobile-target-page' => 'Il n’est pas possible de renommer la page vers ce titre.',
+'immobile-source-page' => "Cette page n'est pas renommable.",
+'immobile-target-page' => "Il n'est pas possible de renommer la page vers ce titre.",
 'bad-target-model' => 'La destination souhaitée utilise un autre modèle de contenu. Impossible de convertir de $1 vers $2.',
 'imagenocrossnamespace' => 'Impossible de renommer un fichier vers un espace de noms autre que fichier.',
-'nonfile-cannot-move-to-file' => "Impossible de renommer quelque chose d’autre qu'un fichier vers l’espace de noms fichier.",
+'nonfile-cannot-move-to-file' => "Impossible de renommer quelque chose d'autre qu'un fichier vers l'espace de noms fichier.",
 'imagetypemismatch' => 'La nouvelle extension de ce fichier ne correspond pas à son type.',
 'imageinvalidfilename' => 'Le nom du fichier cible est incorrect',
 'fix-double-redirects' => 'Mettre à jour les redirections pointant vers le titre original',
 'move-leave-redirect' => 'Laisser une redirection vers le nouveau titre',
-'protectedpagemovewarning' => "'''Attention :''' Cette page a été protégée afin que seuls les utilisateurs possédant les droits dadministrateur puissent la renommer. La dernière entrée du journal est affichée ci-dessous pour référence :",
+'protectedpagemovewarning' => "'''Attention :''' Cette page a été protégée afin que seuls les utilisateurs possédant les droits d'administrateur puissent la renommer. La dernière entrée du journal est affichée ci-dessous pour référence :",
 'semiprotectedpagemovewarning' => "'''Note :''' Cette page a été protégée afin que seuls les utilisateurs enregistrés puissent la renommer. La dernière entrée du journal est affichée ci-dessous pour référence :",
 'move-over-sharedrepo' => '== Le fichier existe ==
 [[:$1]] existe déjà sur un dépôt partagé. Renommer ce fichier rendra le fichier sur le dépôt partage inaccessible.',
@@ -2916,21 +2922,21 @@ Choisissez un autre nom.',
 
 # Export
 'export' => 'Exporter des pages',
-'exporttext' => 'Vous pouvez exporter en XML le texte et l’historique d’une page ou d’un ensemble de pages ;
-le résultat peut alors être importé dans un autre wiki utilisant le logiciel MediaWiki via la [[Special:Import|page dimportation]].
+'exporttext' => "Vous pouvez exporter en XML le texte et l'historique d'une page ou d'un ensemble de pages ;
+le résultat peut alors être importé dans un autre wiki utilisant le logiciel MediaWiki via la [[Special:Import|page d'importation]].
 
-Pour exporter des pages, entrez leurs titres dans la boîte de texte ci-dessous, à raison d’un titre par ligne. Sélectionnez si vous désirez ou non la version actuelle avec toutes les anciennes versions, avec les lignes de l’historique de la page, ou simplement la page actuelle avec des informations sur la dernière modification.
+Pour exporter des pages, entrez leurs titres dans la boîte de texte ci-dessous, à raison d'un titre par ligne. Sélectionnez si vous désirez ou non la version actuelle avec toutes les anciennes versions, avec les lignes de l'historique de la page, ou simplement la page actuelle avec des informations sur la dernière modification.
 
-Dans ce dernier cas vous pouvez aussi utiliser un lien, tel que [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] pour la page [[{{MediaWiki:Mainpage}}]].',
+Dans ce dernier cas vous pouvez aussi utiliser un lien, tel que [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] pour la page [[{{MediaWiki:Mainpage}}]].",
 'exportall' => 'Exporter toutes les pages',
-'exportcuronly' => 'Exporter uniquement la version courante, sans l’historique complet',
+'exportcuronly' => "Exporter uniquement la version courante, sans l'historique complet",
 'exportnohistory' => "----
-'''Note :''' l’exportation de l’historique complet des pages à l’aide de ce formulaire a été désactivée pour des raisons de performance.",
+'''Note :''' l'exportation de l'historique complet des pages à l'aide de ce formulaire a été désactivée pour des raisons de performance.",
 'exportlistauthors' => 'Inclure une liste complète des contributeurs pour chaque page',
 'export-submit' => 'Exporter',
 'export-addcattext' => 'Ajouter les pages de la catégorie :',
 'export-addcat' => 'Ajouter',
-'export-addnstext' => 'Ajouter des pages dans l’espace de noms :',
+'export-addnstext' => "Ajouter des pages dans l'espace de noms :",
 'export-addns' => 'Ajouter',
 'export-download' => 'Enregistrer dans un fichier',
 'export-templates' => 'Inclure les modèles',
@@ -2941,9 +2947,9 @@ Dans ce dernier cas vous pouvez aussi utiliser un lien, tel que [[{{#Special:Exp
 'allmessagesname' => 'Nom du message',
 'allmessagesdefault' => 'Message par défaut',
 'allmessagescurrent' => 'Message actuel',
-'allmessagestext' => 'Ceci est la liste des messages disponibles dans l’espace MediaWiki.
-Veuillez visiter la [//www.mediawiki.org/wiki/Localisation Localisation de MediaWiki] et [//translatewiki.net/ translatewiki.net] si vous désirez contribuer à la localisation générique de MediaWiki.',
-'allmessagesnotsupportedDB' => "Cette page '''{{ns:special}}:Allmessages''' nest pas utilisable car '''\$wgUseDatabaseMessages''' a été désactivé.",
+'allmessagestext' => "Ceci est la liste des messages disponibles dans l'espace MediaWiki.
+Veuillez visiter la [//www.mediawiki.org/wiki/Localisation Localisation de MediaWiki] et [//translatewiki.net/ translatewiki.net] si vous désirez contribuer à la localisation générique de MediaWiki.",
+'allmessagesnotsupportedDB' => "Cette page '''{{ns:special}}:Allmessages''' n'est pas utilisable car '''\$wgUseDatabaseMessages''' a été désactivé.",
 'allmessages-filter-legend' => 'Filtrer',
 'allmessages-filter' => 'Filtrer par état de modification :',
 'allmessages-filter-unmodified' => 'Non modifié',
@@ -2963,67 +2969,67 @@ Veuillez visiter la [//www.mediawiki.org/wiki/Localisation Localisation de Media
 'thumbnail-dest-create' => "Impossible d'enregistrer la vignette sur la destination",
 'thumbnail_invalid_params' => 'Paramètres de la miniature incorrects',
 'thumbnail_dest_directory' => 'Impossible de créer le répertoire de destination',
-'thumbnail_image-type' => 'Type d’image non supporté',
+'thumbnail_image-type' => "Type d'image non supporté",
 'thumbnail_gd-library' => 'Configuration incomplète de la bibliothèque GD : fonction $1 introuvable',
 'thumbnail_image-missing' => 'Le fichier suivant est introuvable : $1',
 
 # Special:Import
 'import' => 'Importer des pages',
 'importinterwiki' => 'Importation inter-wiki',
-'import-interwiki-text' => 'Sélectionnez un wiki et un titre de page à importer.
+'import-interwiki-text' => "Sélectionnez un wiki et un titre de page à importer.
 Les dates des versions et les noms des contributeurs seront préservés.
-Toutes les actions d’importation inter-wiki sont consignées dans l’[[Special:Log/import|historique des importations]].',
+Toutes les actions d'importation inter-wiki sont consignées dans l'[[Special:Log/import|historique des importations]].",
 'import-interwiki-source' => 'Wiki et page sources :',
-'import-interwiki-history' => 'Copier toutes les versions de l’historique de cette page',
+'import-interwiki-history' => "Copier toutes les versions de l'historique de cette page",
 'import-interwiki-templates' => 'Inclure tous les modèles',
 'import-interwiki-submit' => 'Importer',
 'import-interwiki-namespace' => 'Espace de noms de destination :',
 'import-interwiki-rootpage' => 'Page racine de destination (optionnelle):',
 'import-upload-filename' => 'Nom du fichier :',
 'import-comment' => 'Commentaire :',
-'importtext' => 'Veuillez exporter le fichier depuis le wiki d’origine en utilisant son [[Special:Export|outil d’exportation]].
-Sauvegardez-le sur votre disque dur puis importez-le ici.',
+'importtext' => "Veuillez exporter le fichier depuis le wiki d'origine en utilisant son [[Special:Export|outil d'exportation]].
+Sauvegardez-le sur votre disque dur puis importez-le ici.",
 'importstart' => 'Importation des pages…',
 'import-revision-count' => '$1 version{{PLURAL:$1||s}}',
 'importnopages' => 'Aucune page à importer.',
 'imported-log-entries' => '$1 {{PLURAL:$1|entrée|entrées}} du journal {{PLURAL:$1|importée|importées}}.',
-'importfailed' => 'Échec de l’importation : <nowiki>$1</nowiki>',
+'importfailed' => "Échec de l'importation : <nowiki>$1</nowiki>",
 'importunknownsource' => 'Type inconnu de la source à importer',
-'importcantopen' => 'Impossible d’ouvrir le fichier à importer',
+'importcantopen' => "Impossible d'ouvrir le fichier à importer",
 'importbadinterwiki' => 'Mauvais lien inter-wiki',
 'importnotext' => 'Vide ou sans texte',
-'importsuccess' => 'L’importation a réussi !',
-'importhistoryconflict' => 'Un conflit a été détecté dans l’historique des versions (cette page a pu être importée auparavant).',
-'importnosources' => "Aucune source d’importation inter-wiki n’a été définie et l'import direct d’historiques est désactivé.",
-'importnofile' => 'Aucun fichier d’importation n’a été envoyé.',
+'importsuccess' => "L'importation a réussi !",
+'importhistoryconflict' => "Un conflit a été détecté dans l'historique des versions (cette page a pu être importée auparavant).",
+'importnosources' => "Aucune source d'importation inter-wiki n'a été définie et l'import direct d'historiques est désactivé.",
+'importnofile' => "Aucun fichier d'importation n'a été envoyé.",
 'importuploaderrorsize' => "L'import du fichier a échoué.
 Sa taille est supérieure au maximum autorisé pour l'import de fichier.",
 'importuploaderrorpartial' => "L'import du fichier échoué.
-Son contenu na été transféré que partiellement.",
+Son contenu n'a été transféré que partiellement.",
 'importuploaderrortemp' => "L'import du fichier a échoué.
 Un dossier temporaire est manquant.",
-'import-parse-failure' => 'Échec lors de l’analyse du XML à importer',
+'import-parse-failure' => "Échec lors de l'analyse du XML à importer",
 'import-noarticle' => 'Aucune page à importer !',
 'import-nonewrevisions' => 'Toutes les versions ont été importées auparavant.',
 'xml-error-string' => '$1 à la ligne $2, colonne $3 (octet $4) : $5',
 'import-upload' => 'Import de données XML',
 'import-token-mismatch' => 'Perte des données de session. Veuillez réessayez.',
-'import-invalid-interwiki' => 'Impossible d’importer depuis le wiki spécifié.',
-'import-error-edit' => 'La page « $1 » n’a pas été importée parce que vous n’êtes pas autorisés à la modifier.',
-'import-error-create' => 'La page « $1 » n’a pas été importée parce que vous n’êtes pas autorisés à la créer.',
+'import-invalid-interwiki' => "Impossible d'importer depuis le wiki spécifié.",
+'import-error-edit' => "La page « $1 » n'a pas été importée parce que vous n'êtes pas autorisés à la modifier.",
+'import-error-create' => "La page « $1 » n'a pas été importée parce que vous n'êtes pas autorisés à la créer.",
 'import-error-interwiki' => "La page « $1 » n'est pas importée parce que son nom est réservé pour un lien externe (interwiki).",
-'import-error-special' => 'La page " $1 " n\'est pas importée parce qu\'elle appartient à un espace de noms special qui nen autorise aucune.',
-'import-error-invalid' => 'Page « $1 » n’est pas importée parce que son nom n’est pas valide.',
+'import-error-special' => 'La page " $1 " n\'est pas importée parce qu\'elle appartient à un espace de noms special qui n\'en autorise aucune.',
+'import-error-invalid' => "Page « $1 » n'est pas importée parce que son nom n'est pas valide.",
 'import-options-wrong' => '{{PLURAL:$2|Mauvaise option|Mauvaises options}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'La page racine fournie est un titre non valide.',
 'import-rootpage-nosubpage' => 'L\'espace de noms "$1" de la page racine n\'autorise pas les sous-pages.',
 
 # Import log
 'importlogpage' => 'Journal des importations',
-'importlogpagetext' => 'Importations administratives de pages d’autres wikis, avec leur historique de modification.',
+'importlogpagetext' => "Importations administratives de pages d'autres wikis, avec leur historique de modification.",
 'import-logentry-upload' => 'a importé [[$1]] par envoi de fichier',
 'import-logentry-upload-detail' => '$1 version{{PLURAL:$1||s}}',
-'import-logentry-interwiki' => 'a importé $1 d’un wiki à l’autre',
+'import-logentry-interwiki' => "a importé $1 d'un wiki à l'autre",
 'import-logentry-interwiki-detail' => '$1 version{{PLURAL:$1||s}} depuis $2',
 
 # JavaScriptTest
@@ -3038,18 +3044,18 @@ Un dossier temporaire est manquant.",
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Votre page utilisateur',
-'tooltip-pt-anonuserpage' => 'La page utilisateur de l’IP avec laquelle vous contribuez',
+'tooltip-pt-anonuserpage' => "La page utilisateur de l'IP avec laquelle vous contribuez",
 'tooltip-pt-mytalk' => 'Votre page de discussion',
 'tooltip-pt-anontalk' => 'La page de discussion pour les contributions depuis cette adresse IP',
 'tooltip-pt-preferences' => 'Vos préférences',
 'tooltip-pt-watchlist' => 'La liste des pages dont vous suivez les modifications',
 'tooltip-pt-mycontris' => 'La liste de vos contributions',
-'tooltip-pt-login' => 'Vous êtes encouragé{{GENDER:||e|(e)}} à vous identifier ; ce n’est cependant pas obligatoire.',
-'tooltip-pt-anonlogin' => 'Vous êtes encouragé{{GENDER:||e|(e)}} à vous identifier ; ce n’est cependant pas obligatoire.',
+'tooltip-pt-login' => "Vous êtes encouragé{{GENDER:||e|(e)}} à vous identifier ; ce n'est cependant pas obligatoire.",
+'tooltip-pt-anonlogin' => "Vous êtes encouragé{{GENDER:||e|(e)}} à vous identifier ; ce n'est cependant pas obligatoire.",
 'tooltip-pt-logout' => 'Se déconnecter',
 'tooltip-ca-talk' => 'Discussion au sujet de cette page de contenu',
-'tooltip-ca-edit' => 'Vous pouvez modifier cette page.
-Veuillez utiliser le bouton de prévisualisation avant d’enregistrer.',
+'tooltip-ca-edit' => "Vous pouvez modifier cette page.
+Veuillez utiliser le bouton de prévisualisation avant d'enregistrer.",
 'tooltip-ca-addsection' => 'Commencer une nouvelle section',
 'tooltip-ca-viewsource' => 'Cette page est protégée.
 Vous pouvez toutefois en visualiser la source.',
@@ -3065,10 +3071,10 @@ Vous pouvez toutefois en visualiser la source.',
 'tooltip-search-go' => 'Aller vers une page portant exactement ce nom si elle existe.',
 'tooltip-search-fulltext' => 'Rechercher les pages comportant ce texte.',
 'tooltip-p-logo' => 'Page principale',
-'tooltip-n-mainpage' => 'Visiter la page d’accueil du site',
-'tooltip-n-mainpage-description' => 'Aller à l’accueil',
+'tooltip-n-mainpage' => "Visiter la page d'accueil du site",
+'tooltip-n-mainpage-description' => "Aller à l'accueil",
 'tooltip-n-portal' => 'À propos du projet',
-'tooltip-n-currentevents' => 'Trouver les informations de fond sur l’actualité du moment',
+'tooltip-n-currentevents' => "Trouver les informations de fond sur l'actualité du moment",
 'tooltip-n-recentchanges' => 'Liste des modifications récentes sur le wiki',
 'tooltip-n-randompage' => 'Afficher une page au hasard',
 'tooltip-n-help' => 'Aide',
@@ -3090,7 +3096,7 @@ Vous pouvez toutefois en visualiser la source.',
 'tooltip-ca-nstab-image' => 'Voir la page du fichier',
 'tooltip-ca-nstab-mediawiki' => 'Voir le message système',
 'tooltip-ca-nstab-template' => 'Voir le modèle',
-'tooltip-ca-nstab-help' => 'Voir la page d’aide',
+'tooltip-ca-nstab-help' => "Voir la page d'aide",
 'tooltip-ca-nstab-category' => 'Voir la page de la catégorie',
 'tooltip-minoredit' => 'Marquer mes modifications comme mineures',
 'tooltip-save' => 'Publier vos modifications',
@@ -3103,8 +3109,8 @@ Vous pouvez toutefois en visualiser la source.',
 'tooltip-recreate' => 'Recréer la page même si celle-ci a été effacée',
 'tooltip-upload' => "Démarrer l'import",
 'tooltip-rollback' => '« Révoquer » annule en un clic la ou les modification(s) de cette page par son dernier contributeur.',
-'tooltip-undo' => '« Défaire » révoque cette modification et ouvre la fenêtre de modification en mode prévisualisation.
-Permet de rétablir la version précédente et d’ajouter un motif dans la boîte de résumé.',
+'tooltip-undo' => "« Défaire » révoque cette modification et ouvre la fenêtre de modification en mode prévisualisation.
+Permet de rétablir la version précédente et d'ajouter un motif dans la boîte de résumé.",
 'tooltip-preferences-save' => 'Sauvegarder les préférences',
 'tooltip-summary' => 'Entrez un bref résumé',
 
@@ -3149,20 +3155,20 @@ Permet de rétablir la version précédente et d’ajouter un motif dans la boî
 # Attribution
 'anonymous' => '{{PLURAL:$1|Utilisateur non enregistré|Utilisateurs non enregistrés}} sur {{SITENAME}}',
 'siteuser' => "{{GENDER:$2|l'utilisateur|l'utilisatrice|l'utilisateur}} $1 de {{SITENAME}}",
-'anonuser' => 'l’utilisateur anonyme $1 de {{SITENAME}}',
+'anonuser' => "l'utilisateur anonyme $1 de {{SITENAME}}",
 'lastmodifiedatby' => 'Cette page a été modifiée pour la dernière fois le $1 à $2 par $3.',
 'othercontribs' => 'Basé sur le travail de $1.',
 'others' => 'autres',
-'siteusers' => '{{PLURAL:$2|l’utilisateur|les utilisateurs}} $1 de {{SITENAME}}',
-'anonusers' => '{{PLURAL:$2|l’utilisateur anonyme|les utilisateurs anonymes}} $1 de {{SITENAME}}',
+'siteusers' => "{{PLURAL:$2|l'utilisateur|les utilisateurs}} $1 de {{SITENAME}}",
+'anonusers' => "{{PLURAL:$2|l'utilisateur anonyme|les utilisateurs anonymes}} $1 de {{SITENAME}}",
 'creditspage' => 'Crédits de la page',
-'nocredits' => 'Il n’y a pas d’informations d’attribution disponibles pour cette page.',
+'nocredits' => "Il n'y a pas d'informations d'attribution disponibles pour cette page.",
 
 # Spam protection
 'spamprotectiontitle' => 'Filtre de protection anti-pollution',
-'spamprotectiontext' => 'La page que vous avez voulu sauvegarder a été bloquée par le filtre anti-pollution. Ceci est probablement dû à l’introduction d’un lien vers un site externe apparaissant sur la liste noire. Cette dernière utilise les expressions rationnelles suivantes :',
-'spamprotectionmatch' => "La chaîne de caractères « '''$1''' » a déclenché le détecteur de pourriel.",
-'spambot_username' => 'Nettoyage de pourriels par MediaWiki',
+'spamprotectiontext' => "La page que vous avez voulu sauvegarder a été bloquée par le filtre anti-pollution. Ceci est probablement dû à l'introduction d'un lien vers un site externe apparaissant sur la liste noire. Cette dernière utilise les expressions rationnelles suivantes :",
+'spamprotectionmatch' => "La chaîne de caractères « '''$1''' » a déclenché le détecteur de spam.",
+'spambot_username' => 'Nettoyage de spams par MediaWiki',
 'spam_reverting' => 'Rétablissement de la dernière version ne contenant pas de lien vers $1',
 'spam_blanking' => 'Toutes les versions contenant des liens vers $1 sont blanchies',
 'spam_deleting' => 'Toutes les versions contenaient des liens vers $1, suppression',
@@ -3223,16 +3229,18 @@ Permet de rétablir la version précédente et d’ajouter un motif dans la boî
 'markaspatrolledtext' => 'Marquer cette page comme relue',
 'markedaspatrolled' => 'Marquée comme relue',
 'markedaspatrolledtext' => 'La version sélectionnée de [[:$1]] a été marquée comme relue.',
-'rcpatroldisabled' => 'La fonction de relecture des modifications récentes n’est pas activée.',
+'rcpatroldisabled' => "La fonction de relecture des modifications récentes n'est pas activée.",
 'rcpatroldisabledtext' => 'La fonctionnalité de relecture des modifications récentes est actuellement désactivée.',
 'markedaspatrollederror' => 'Ne peut être marquée comme relue',
 'markedaspatrollederrortext' => 'Vous devez sélectionner une version pour pouvoir la marquer comme relue.',
-'markedaspatrollederror-noautopatrol' => 'Vous n’avez pas le droit de marquer vos propres modifications comme relues.',
+'markedaspatrollederror-noautopatrol' => "Vous n'avez pas le droit de marquer vos propres modifications comme relues.",
+'markedaspatrollednotify' => 'Cette modification de $1 a été marquée comme contrôlée.',
+'markedaspatrollederrornotify' => 'Échec du marquage comme contrôlé.',
 
 # Patrol log
 'patrol-log-page' => 'Journal des relectures',
-'patrol-log-header' => 'Voici l’historique des versions relues.',
-'log-show-hide-patrol' => '$1 l’historique des relectures',
+'patrol-log-header' => "Voici l'historique des versions relues.",
+'log-show-hide-patrol' => "$1 l'historique des relectures",
 
 # Image deletion
 'deletedrevision' => 'Ancienne version $1 supprimée',
@@ -3240,10 +3248,10 @@ Permet de rétablir la version précédente et d’ajouter un motif dans la boî
 'filedeleteerror-long' => 'Des erreurs ont été rencontrées lors de la suppression du fichier :
 
 $1',
-'filedelete-missing' => 'Le fichier « $1 » ne peut pas être supprimé parce qu’il n’existe pas.',
-'filedelete-old-unregistered' => 'La version du fichier spécifiée « $1 » n’est pas dans la base de données.',
-'filedelete-current-unregistered' => 'Le fichier spécifié « $1 » n’est pas dans la base de données.',
-'filedelete-archive-read-only' => 'Le dossier d’archivage « $1 » n’est pas modifiable par le serveur.',
+'filedelete-missing' => "Le fichier « $1 » ne peut pas être supprimé parce qu'il n'existe pas.",
+'filedelete-old-unregistered' => "La version du fichier spécifiée « $1 » n'est pas dans la base de données.",
+'filedelete-current-unregistered' => "Le fichier spécifié « $1 » n'est pas dans la base de données.",
+'filedelete-archive-read-only' => "Le dossier d'archivage « $1 » n'est pas modifiable par le serveur.",
 
 # Browsing diffs
 'previousdiff' => '← Modification précédente',
@@ -3251,7 +3259,7 @@ $1',
 
 # Media information
 'mediawarning' => "'''Attention :''' ce type de fichier peut contenir du code malveillant.
-Si vous lexécutez, votre système peut être compromis.",
+Si vous l'exécutez, votre système peut être compromis.",
 'imagemaxsize' => "Taille maximale des images :<br />''(pour les pages de description de fichier)''",
 'thumbsize' => 'Taille de la miniature :',
 'widthheightpage' => '$1 × $2, $3 page{{PLURAL:$3||s}}',
@@ -3292,19 +3300,20 @@ Si vous l’exécutez, votre système peut être compromis.",
 'hours' => '{{PLURAL:$1|$1 heure|$1 heures}}',
 'days' => '{{PLURAL:$1|$1 jour|$1 jours}}',
 'ago' => 'Il y a $1',
+'just-now' => "à l'instant",
 
 # Bad image list
-'bad_image_list' => 'Le format est le suivant :
+'bad_image_list' => "Le format est le suivant :
 
-Seules les listes d’énumération (commençant par *) sont prises en compte. Le premier lien d’une ligne doit être celui d’une mauvaise image.
-Les autres liens sur la même ligne sont considérés comme des exceptions, par exemple des pages sur lesquelles l’image peut apparaître.',
+Seules les listes d'énumération (commençant par *) sont prises en compte. Le premier lien d'une ligne doit être celui d'une mauvaise image.
+Les autres liens sur la même ligne sont considérés comme des exceptions, par exemple des pages sur lesquelles l'image peut apparaître.",
 
 # Metadata
 'metadata' => 'Métadonnées',
-'metadata-help' => 'Ce fichier contient des informations supplémentaires, probablement ajoutées par l’appareil photo numérique ou le numériseur utilisé pour le créer. Si le fichier a été modifié depuis son état original, certains détails peuvent ne pas refléter entièrement l’image modifiée.',
+'metadata-help' => "Ce fichier contient des informations supplémentaires, probablement ajoutées par l'appareil photo numérique ou le numériseur utilisé pour le créer. Si le fichier a été modifié depuis son état original, certains détails peuvent ne pas refléter entièrement l'image modifiée.",
 'metadata-expand' => 'Afficher les informations détaillées',
 'metadata-collapse' => 'Masquer les informations détaillées',
-'metadata-fields' => 'Les champs de métadonnées d’image listés dans ce message seront inclus dans la page de description de l’image quand la table de métadonnées sera réduite. Les autres champs seront cachés par défaut.
+'metadata-fields' => "Les champs de métadonnées d'image listés dans ce message seront inclus dans la page de description de l'image quand la table de métadonnées sera réduite. Les autres champs seront cachés par défaut.
 * make
 * model
 * datetimeoriginal
@@ -3317,7 +3326,7 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 * imagedescription
 * gpslatitude
 * gpslongitude
-* gpsaltitude',
+* gpsaltitude",
 
 # EXIF tags
 'exif-imagewidth' => 'Largeur',
@@ -3332,7 +3341,7 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 'exif-ycbcrpositioning' => 'Positionnement YCbCr',
 'exif-xresolution' => 'Résolution horizontale',
 'exif-yresolution' => 'Résolution verticale',
-'exif-stripoffsets' => 'Emplacement des données de l’image',
+'exif-stripoffsets' => "Emplacement des données de l'image",
 'exif-rowsperstrip' => 'Nombre de lignes par bande',
 'exif-stripbytecounts' => 'Taille en octets par bande',
 'exif-jpeginterchangeformat' => 'Position du SOI JPEG',
@@ -3342,36 +3351,36 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 'exif-ycbcrcoefficients' => 'Coefficients YCbCr',
 'exif-referenceblackwhite' => 'Valeurs de référence noir et blanc',
 'exif-datetime' => 'Date de modification',
-'exif-imagedescription' => 'Description de l’image',
-'exif-make' => 'Fabricant de l’appareil',
-'exif-model' => 'Modèle de l’appareil',
+'exif-imagedescription' => "Description de l'image",
+'exif-make' => "Fabricant de l'appareil",
+'exif-model' => "Modèle de l'appareil",
 'exif-software' => 'Logiciel utilisé',
 'exif-artist' => 'Auteur',
-'exif-copyright' => 'Détenteur du droit d’auteur',
+'exif-copyright' => "Détenteur du droit d'auteur",
 'exif-exifversion' => 'Version EXIF',
 'exif-flashpixversion' => 'Version FlashPix',
 'exif-colorspace' => 'Espace colorimétrique',
 'exif-componentsconfiguration' => 'Signification de chaque composante',
-'exif-compressedbitsperpixel' => 'Mode de compression de l’image',
-'exif-pixelydimension' => 'Largeur de l’image',
-'exif-pixelxdimension' => 'Hauteur de l’image',
-'exif-usercomment' => 'Commentaires de l’utilisateur',
+'exif-compressedbitsperpixel' => "Mode de compression de l'image",
+'exif-pixelydimension' => "Largeur de l'image",
+'exif-pixelxdimension' => "Hauteur de l'image",
+'exif-usercomment' => "Commentaires de l'utilisateur",
 'exif-relatedsoundfile' => 'Fichier audio associé',
 'exif-datetimeoriginal' => 'Date de la prise originelle',
 'exif-datetimedigitized' => 'Date de la numérisation',
 'exif-subsectime' => 'Date de modification',
 'exif-subsectimeoriginal' => 'Date de la prise originelle',
 'exif-subsectimedigitized' => 'Date de la numérisation',
-'exif-exposuretime' => 'Temps d’exposition',
+'exif-exposuretime' => "Temps d'exposition",
 'exif-exposuretime-format' => '$1 s ($2 s)',
 'exif-fnumber' => 'Ouverture',
-'exif-exposureprogram' => 'Programme d’exposition',
+'exif-exposureprogram' => "Programme d'exposition",
 'exif-spectralsensitivity' => 'Sensibilité spectrale',
 'exif-isospeedratings' => 'Sensibilité ISO',
-'exif-shutterspeedvalue' => 'vitesse d’obturation de l’APEX',
-'exif-aperturevalue' => 'Ouverture de l’APEX',
+'exif-shutterspeedvalue' => "vitesse d'obturation de l'APEX",
+'exif-aperturevalue' => "Ouverture de l'APEX",
 'exif-brightnessvalue' => 'Luminance APEX',
-'exif-exposurebiasvalue' => 'Correction d’exposition',
+'exif-exposurebiasvalue' => "Correction d'exposition",
 'exif-maxaperturevalue' => 'Ouverture maximale',
 'exif-subjectdistance' => 'Distance du sujet',
 'exif-meteringmode' => 'Mode de mesure',
@@ -3384,12 +3393,12 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 'exif-focalplaneyresolution' => 'Résolution verticale du plan focal',
 'exif-focalplaneresolutionunit' => 'Unité de résolution du plan focal',
 'exif-subjectlocation' => 'Localisation du sujet',
-'exif-exposureindex' => 'Index d’exposition',
+'exif-exposureindex' => "Index d'exposition",
 'exif-sensingmethod' => 'Type de capteur',
 'exif-filesource' => 'Source du fichier',
 'exif-scenetype' => 'Type de scène',
 'exif-customrendered' => 'Rendu personnalisé',
-'exif-exposuremode' => 'Mode d’exposition',
+'exif-exposuremode' => "Mode d'exposition",
 'exif-whitebalance' => 'Balance des blancs',
 'exif-digitalzoomratio' => 'Taux de zoom numérique',
 'exif-focallengthin35mmfilm' => 'Longueur focale pour un film 35 mm',
@@ -3400,13 +3409,13 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 'exif-sharpness' => 'Netteté',
 'exif-devicesettingdescription' => 'Description de la configuration du dispositif',
 'exif-subjectdistancerange' => 'Distance du sujet',
-'exif-imageuniqueid' => 'Identifiant unique de l’image',
+'exif-imageuniqueid' => "Identifiant unique de l'image",
 'exif-gpsversionid' => 'Version de la balise GPS',
 'exif-gpslatituderef' => 'Référence pour la latitude',
 'exif-gpslatitude' => 'Latitude',
 'exif-gpslongituderef' => 'Référence pour la longitude',
 'exif-gpslongitude' => 'Longitude',
-'exif-gpsaltituderef' => 'Référence d’altitude (0=altitude, 1=profondeur)',
+'exif-gpsaltituderef' => "Référence d'altitude (0=altitude, 1=profondeur)",
 'exif-gpsaltitude' => 'Altitude',
 'exif-gpstimestamp' => 'Heure GPS (horloge atomique)',
 'exif-gpssatellites' => 'Satellites utilisés pour la mesure',
@@ -3417,8 +3426,8 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 'exif-gpsspeed' => 'Vitesse du récepteur GPS',
 'exif-gpstrackref' => 'Référence pour la direction du mouvement',
 'exif-gpstrack' => 'Direction du mouvement',
-'exif-gpsimgdirectionref' => 'Référence pour la direction de l’image',
-'exif-gpsimgdirection' => 'Direction de l’image',
+'exif-gpsimgdirectionref' => "Référence pour la direction de l'image",
+'exif-gpsimgdirection' => "Direction de l'image",
 'exif-gpsmapdatum' => 'Système géodésique utilisé',
 'exif-gpsdestlatituderef' => 'Référence pour la latitude de la destination',
 'exif-gpsdestlatitude' => 'Latitude de la destination',
@@ -3451,7 +3460,7 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 'exif-headline' => 'Titre',
 'exif-credit' => 'Crédit / fournisseur',
 'exif-source' => 'Source',
-'exif-editstatus' => 'Statut éditorial de l’image',
+'exif-editstatus' => "Statut éditorial de l'image",
 'exif-urgency' => 'Urgence',
 'exif-fixtureidentifier' => 'Nom élément récurrent',
 'exif-locationdest' => 'Lieu représenté',
@@ -3468,17 +3477,17 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 'exif-originaltransmissionref' => 'Code de localisation de la transmission originale',
 'exif-identifier' => 'Identifiant',
 'exif-lens' => 'Lentille utilisée',
-'exif-serialnumber' => 'Numéro de série de l’appareil photo',
+'exif-serialnumber' => "Numéro de série de l'appareil photo",
 'exif-cameraownername' => "Propriétaire de l'appareil photo",
 'exif-label' => 'Libellé',
 'exif-datetimemetadata' => 'Date de la dernière modification des métadonnées',
-'exif-nickname' => 'Nom informel de l’image',
+'exif-nickname' => "Nom informel de l'image",
 'exif-rating' => 'Note (sur 5)',
 'exif-rightscertificate' => 'Certificat de gestion des droits',
-'exif-copyrighted' => 'Statut du droit d’auteur',
-'exif-copyrightowner' => 'Détenteur du droit d’auteur',
-'exif-usageterms' => 'Conditions d’utilisation',
-'exif-webstatement' => 'Déclaration de droits d’auteur en ligne',
+'exif-copyrighted' => "Statut du droit d'auteur",
+'exif-copyrightowner' => "Détenteur du droit d'auteur",
+'exif-usageterms' => "Conditions d'utilisation",
+'exif-webstatement' => "Déclaration de droits d'auteur en ligne",
 'exif-originaldocumentid' => 'Identifiant unique du document original',
 'exif-licenseurl' => 'URL de la licence',
 'exif-morepermissionsurl' => 'Informations sur les licences alternatives',
@@ -3488,14 +3497,14 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 'exif-disclaimer' => 'Désistement',
 'exif-contentwarning' => 'Avertissement sur le contenu',
 'exif-giffilecomment' => 'Commentaire de fichier GIF',
-'exif-intellectualgenre' => 'Type d’élément',
+'exif-intellectualgenre' => "Type d'élément",
 'exif-subjectnewscode' => 'Code du sujet',
 'exif-scenecode' => 'Code de scène IPTC',
 'exif-event' => 'Événement représenté',
 'exif-organisationinimage' => 'Organisation représentée',
 'exif-personinimage' => 'Personne représentée',
-'exif-originalimageheight' => 'Hauteur de l’image avant qu’elle ait été recadrée',
-'exif-originalimagewidth' => 'Largeur de l’image avant qu’elle ait été recadrée',
+'exif-originalimageheight' => "Hauteur de l'image avant qu'elle ait été recadrée",
+'exif-originalimagewidth' => "Largeur de l'image avant qu'elle ait été recadrée",
 
 # EXIF attributes
 'exif-compression-1' => 'Non compressé',
@@ -3503,7 +3512,7 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 'exif-compression-3' => 'CCITT Groupe 3 codage du fax',
 'exif-compression-4' => 'CCITT Groupe 4 codage du fax',
 
-'exif-copyrighted-true' => 'Soumis au droit d’auteur',
+'exif-copyrighted-true' => "Soumis au droit d'auteur",
 'exif-copyrighted-false' => 'Domaine public',
 
 'exif-unknowndate' => 'Date inconnue',
@@ -3522,16 +3531,16 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 
 'exif-colorspace-65535' => 'Non calibré',
 
-'exif-componentsconfiguration-0' => 'N’existe pas',
+'exif-componentsconfiguration-0' => "N'existe pas",
 'exif-componentsconfiguration-5' => 'V',
 
 'exif-exposureprogram-0' => 'Indéfini',
 'exif-exposureprogram-1' => 'Manuel',
 'exif-exposureprogram-2' => 'Programme normal',
-'exif-exposureprogram-3' => 'Priorité à l’ouverture',
-'exif-exposureprogram-4' => 'Priorité à l’obturateur',
+'exif-exposureprogram-3' => "Priorité à l'ouverture",
+'exif-exposureprogram-4' => "Priorité à l'obturateur",
 'exif-exposureprogram-5' => 'Programme création (préférence à la profondeur de champ)',
-'exif-exposureprogram-6' => 'Programme action (préférence à la vitesse d’obturation)',
+'exif-exposureprogram-6' => "Programme action (préférence à la vitesse d'obturation)",
 'exif-exposureprogram-7' => 'Mode portrait (pour clichés de près avec arrière-plan flou)',
 'exif-exposureprogram-8' => 'Mode paysage (pour des clichés de paysages nets)',
 
@@ -3647,8 +3656,8 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 'exif-gpsmeasuremode-3' => 'Mesure à 3 dimensions',
 
 # Pseudotags used for GPSSpeedRef
-'exif-gpsspeed-k' => 'Kilomètres à l’heure',
-'exif-gpsspeed-m' => 'Milles à l’heure',
+'exif-gpsspeed-k' => "Kilomètres à l'heure",
+'exif-gpsspeed-m' => "Milles à l'heure",
 'exif-gpsspeed-n' => 'Nœud',
 
 # Pseudotags used for GPSDestDistanceRef
@@ -3707,11 +3716,11 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 'exif-urgency-normal' => 'Normale ($1)',
 'exif-urgency-low' => 'Faible ($1)',
 'exif-urgency-high' => 'Haute ($1)',
-'exif-urgency-other' => 'Urgence définie par l’utilisateur ($1)',
+'exif-urgency-other' => "Urgence définie par l'utilisateur ($1)",
 
 # External editor support
 'edit-externally' => 'Modifier ce fichier en utilisant une application externe',
-'edit-externally-help' => '(Consulter [//www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] pour plus d’informations)',
+'edit-externally-help' => "(Consulter [//www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d'installation] pour plus d'informations)",
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tout',
@@ -3720,8 +3729,8 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 'limitall' => 'tous',
 
 # E-mail address confirmation
-'confirmemail' => 'Confirmer l’adresse de courriel',
-'confirmemail_noemail' => 'Vous n’avez pas défini une adresse de courriel valide dans vos [[Special:Preferences|préférences]].',
+'confirmemail' => "Confirmer l'adresse de courriel",
+'confirmemail_noemail' => "Vous n'avez pas défini une adresse de courriel valide dans vos [[Special:Preferences|préférences]].",
 'confirmemail_text' => 'Ce wiki nécessite la vérification de votre adresse de courriel avant de pouvoir utiliser toute fonction de messagerie.
 Utilisez le bouton ci-dessous pour envoyer un courriel de confirmation à votre adresse.
 Le courriel inclura un lien comportant un code à usage unique et limité dans le temps ;
@@ -3730,39 +3739,39 @@ chargez ce lien dans votre navigateur pour confirmer que votre adresse de courri
 si vous venez de créer votre compte, veuillez attendre quelques minutes que le courriel arrive avant de demander un nouveau code.',
 'confirmemail_send' => 'Envoyer un code de confirmation',
 'confirmemail_sent' => 'Courriel de confirmation envoyé',
-'confirmemail_oncreate' => 'Un code de confirmation a été envoyé à votre adresse de courriel.
-Ce code n’est pas requis pour vous identifier sur ce wiki, mais vous devrez le fournir pour activer toute fonction de messagerie.',
-'confirmemail_sendfailed' => '{{SITENAME}} n’a pas pu vous envoyer le courriel de confirmation.
+'confirmemail_oncreate' => "Un code de confirmation a été envoyé à votre adresse de courriel.
+Ce code n'est pas requis pour vous identifier sur ce wiki, mais vous devrez le fournir pour activer toute fonction de messagerie.",
+'confirmemail_sendfailed' => "{{SITENAME}} n'a pas pu vous envoyer le courriel de confirmation.
 Veuillez vérifiez que votre adresse de courriel ne comprend aucun caractère incorrect.
 
-Le programme d’envoi de courriel a retourné l’indication suivante : $1',
+Le programme d'envoi de courriel a retourné l'indication suivante : $1",
 'confirmemail_invalid' => 'Code de confirmation incorrect.
 Celui-ci a peut-être expiré.',
 'confirmemail_needlogin' => 'Vous devez vous $1 pour confirmer votre adresse de courriel.',
 'confirmemail_success' => 'Votre adresse de courriel a été confirmée.
 Vous pouvez maintenant vous [[Special:UserLogin|{{MediaWiki:Loginreqlink}}]] et profiter du wiki.',
 'confirmemail_loggedin' => 'Votre adresse de courriel est maintenant confirmée.',
-'confirmemail_error' => 'Un problème est survenu lors de l’enregistrement de votre confirmation.',
-'confirmemail_subject' => 'Confirmation d’adresse de courriel pour {{SITENAME}}',
-'confirmemail_body' => 'Quelqu’un, probablement vous, à partir de l’adresse IP $1,
+'confirmemail_error' => "Un problème est survenu lors de l'enregistrement de votre confirmation.",
+'confirmemail_subject' => "Confirmation d'adresse de courriel pour {{SITENAME}}",
+'confirmemail_body' => "Quelqu'un, probablement vous, à partir de l'adresse IP $1,
 a enregistré un compte « $2 » avec cette adresse de courriel
 sur le site {{SITENAME}}.
 
 Pour confirmer que ce compte vous appartient vraiment et afin
-dactiver les fonctions de messagerie sur {{SITENAME}},
+d'activer les fonctions de messagerie sur {{SITENAME}},
 veuillez suivre ce lien dans votre navigateur :
 
 $3
 
-Si vous n’avez *pas* enregistré ce compte, n’ouvrez pas ce lien ;
-vous pouvez suivre lautre lien ci-dessous pour annuler la
+Si vous n'avez *pas* enregistré ce compte, n'ouvrez pas ce lien ;
+vous pouvez suivre l'autre lien ci-dessous pour annuler la
 confirmation de votre adresse courriel :
 
 $5
 
-Ce code de confirmation expirera le $4.',
-'confirmemail_body_changed' => 'Quelqu’un, probablement vous, à partir de l’adresse IP $1,
-a modifié ladresse de courriel associée au compte « $2 » de {{SITENAME}}
+Ce code de confirmation expirera le $4.",
+'confirmemail_body_changed' => "Quelqu'un, probablement vous, à partir de l'adresse IP $1,
+a modifié l'adresse de courriel associée au compte « $2 » de {{SITENAME}}
 en cette adresse.
 
 Pour confirmer que ce compte vous appartient vraiment et afin
@@ -3771,14 +3780,14 @@ veuillez suivre ce lien dans votre navigateur :
 
 $3
 
-Si ce compte ne vous appartient *pas*, nouvrez pas ce lien ;
-vous pouvez suivre lautre lien ci-dessous pour annuler la
+Si ce compte ne vous appartient *pas*, n'ouvrez pas ce lien ;
+vous pouvez suivre l'autre lien ci-dessous pour annuler la
 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}}.
+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}}.
 
 Pour confirmer que ce compte vous appartient et réactiver les fonctions de courriel sur {{SITENAME}}, ouvrez ce lien dans votre navigateur Web :
 
@@ -3786,9 +3795,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 ladresse 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',
 
@@ -3958,7 +3967,7 @@ Vous pouvez aussi [[Special:EditWatchlist|utiliser l’éditeur normal]].',
 'version-specialpages' => 'Pages spéciales',
 'version-parserhooks' => 'Greffons de l’analyseur syntaxique',
 'version-variables' => 'Variables',
-'version-antispam' => 'Prévention du pourriel',
+'version-antispam' => 'Prévention du spam',
 'version-skins' => 'Habillages',
 'version-other' => 'Divers',
 'version-mediahandlers' => 'Manipulateurs de médias',
@@ -4114,9 +4123,9 @@ Les images sont montrées dans leur pleine résolution, les autres fichiers sont
 'logentry-move-move_redir-noredirect' => '$1 a déplacé la page $3 vers $4 par-dessus une redirection sans laisser de redirection',
 'logentry-patrol-patrol' => '$1 a marqué la révision $4 de la page $3 comme relue',
 'logentry-patrol-patrol-auto' => '$1 a automatiquement marqué la révision $4 de la page $3 comme relue',
-'logentry-newusers-newusers' => '$1 a créé un compte utilisateur',
-'logentry-newusers-create' => '$1 a créé son compte utilisateur',
-'logentry-newusers-create2' => '$1 a créé un compte utilisateur $3',
+'logentry-newusers-newusers' => 'Le compte utilisateur $1 a été créé',
+'logentry-newusers-create' => 'Le compte utilisateur $1 a été créé',
+'logentry-newusers-create2' => 'Le compte utilisateur $3 a été créé par $1',
 'logentry-newusers-autocreate' => 'Le compte $1 a été créé automatiquement',
 'newuserlog-byemail' => 'mot de passe envoyé par courriel',
 
@@ -4166,7 +4175,7 @@ Sinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentai
 'api-error-missingparam' => 'Erreur interne : Il manque des paramètres dans la requête.',
 'api-error-missingresult' => 'Erreur interne : Nous n’avons pas pu déterminer si la copie avait réussi.',
 'api-error-mustbeloggedin' => 'Vous devez être connecté pour télécharger des fichiers.',
-'api-error-mustbeposted' => 'Il y a un bogue dans ce logiciel ; il n’utilise pas la méthode HTTP adéquate.',
+'api-error-mustbeposted' => 'Erreur interne : cette requête nécessite la méthode HTTP POST.',
 'api-error-noimageinfo' => 'Le téléversement a réussi, mais le serveur n’a pas donné d’informations sur le fichier.',
 'api-error-nomodule' => 'Erreur interne : aucun module de versement défini.',
 'api-error-ok-but-empty' => 'Erreur interne : Le serveur n’a pas répondu.',
@@ -4193,5 +4202,5 @@ Sinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentai
 'duration-millennia' => '$1 millénaire{{PLURAL:$1||s}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'discuter',
+'svg-long-error' => 'Fichier SVG non valide: $1',
 );
index b3e439b..5e4e8f3 100644 (file)
@@ -713,9 +713,6 @@ La rêson balyêye est « ''$2'' ».",
 
 Vos pouede continuar a empleyér {{SITENAME}} de façon anonima ou ben <span class='plainlinks'>[$1 vos tornar branchiér]</span> desot lo mémo nom ou un ôtro.
 Notâd qu’y at des pâges que pôvont étre oncor fêtes vêre coment se vos érâd adés branchiê{{GENDER:||ye|(ye)}}, tant que vos èfaciéd lo cacho de voutron navigator.",
-'welcomecreation' => '== Benvegnua, $1 ! ==
-Voutron compto est étâ fêt.
-Oubliâd pas de pèrsonalisar voutres [[Special:Preferences|prèferences dessus {{SITENAME}}]].',
 'yourname' => 'Nom d’utilisator :',
 'yourpassword' => 'Contresegno :',
 'yourpasswordagain' => 'Confirmâd lo contresegno :',
@@ -2350,11 +2347,7 @@ Los changements a vegnir de ceta pâge et de sa pâge de discussion y seront lis
 
 'enotif_mailer' => 'Sistèmo de notificacion per mèssageria èlèctronica de {{SITENAME}}',
 'enotif_reset' => 'Marcar totes les pâges coment visitâs',
-'enotif_newpagetext' => 'O est una pâge novèla.',
 'enotif_impersonal_salutation' => 'Usanciér de {{SITENAME}}',
-'changed' => 'changiê',
-'created' => 'fêta',
-'enotif_subject' => 'La pâge « $PAGETITLE » de {{SITENAME}} at étâ $CHANGEDORCREATED per $PAGEEDITOR',
 'enotif_lastvisited' => 'Vêde $1 por tôs los changements dês voutra dèrriére visita.',
 'enotif_lastdiff' => 'Vêde $1 por vêre cél changement.',
 'enotif_anon_editor' => 'usanciér pas encartâ $1',
index 142a056..9dbcb72 100644 (file)
@@ -505,8 +505,6 @@ De oanfierde reden is ''$2''.",
 
 Jo kinne de {{SITENAME}} fierders anonym brûke, of jo op 'e <span class='plainlinks'>[$1 nij oanmelde]</span> ûnder deselde of in oare namme.
 Mûglik wurdt noch in tal siden werjûn as wiene Jo oanmeld, oant Jo de cache fan Jo browser leegje.",
-'welcomecreation' => '<h2>Wolkom, $1!</h2><p>Jo ynstellings binne oanmakke.
-Ferjit net se oan jo foarkar oan te passen.',
 'yourname' => 'Jo meidochnamme:',
 'yourpassword' => 'Jo wachtwurd',
 'yourpasswordagain' => 'Jo wachtwurd (nochris)',
@@ -1714,10 +1712,7 @@ At jo letter in side net mear folgje wolle, dan brûke jo op dy side de keppelin
 'watching' => "Dwaande mei op'e folchlist te setten ...",
 'unwatching' => "Dwaande mei fan'e folchlist ôf te heljen ...",
 
-'enotif_newpagetext' => 'Dit is in nije side.',
 'enotif_impersonal_salutation' => 'meidogger fan {{SITENAME}}',
-'changed' => 'feroare',
-'created' => 'oanmakke',
 'enotif_body' => 'Bêste $WATCHINGUSERNAME,
 
 De {{SITENAME}}side \'$PAGETITLE\' is op $PAGEEDITDATE $CHANGEDORCREATED troch meidogger $PAGEEDITOR;
index bd2c902..d0a51dc 100644 (file)
@@ -477,9 +477,6 @@ An fáth ná ''$2''.",
 
 Is féidir leat an {{SITENAME}} a úsáid fós gan ainm, nó is féidir leat <span class='plainlinks'>[$1 logáil isteach arís]</span> mar an úsáideoir céanna, nó mar úsáideoir eile.
 Tabhair faoi deara go taispeáinfear roinnt leathanaigh mar atá tú logáilte isteach fós, go dtí go ghlanfá amach do taisce líonleitheora.",
-'welcomecreation' => '== Tá fáilte romhat, $1! ==
-
-Cruthaíodh do chuntas. Ná déan dearmad athrú a dhéanamh ar do chuid [[Special:Preferences|sainroghanna {{GRAMMAR:genitive|{{SITENAME}}}}]].',
 'yourname' => "D'ainm úsáideora",
 'yourpassword' => "D'fhocal faire",
 'yourpasswordagain' => "Athiontráil d'fhocal faire",
@@ -1307,11 +1304,7 @@ taobh istigh den tréimhse atá roghnaithe agat.',
 
 'enotif_mailer' => 'Fógrasheoltóir as {{SITENAME}}',
 'enotif_reset' => 'Marcáil gach leathanach bheith tadhlaithe',
-'enotif_newpagetext' => 'Is leathanach nua é seo.',
 'enotif_impersonal_salutation' => 'úsáideoir {{SITENAME}}',
-'changed' => "D'athraigh",
-'created' => 'Chruthaigh',
-'enotif_subject' => '  $CHANGEDORCREATED $PAGEEDITOR an leathanach $PAGETITLE ag {{SITENAME}}.',
 'enotif_lastvisited' => 'Féach ar $1 le haghaidh gach athrú a rinneadh ó thús na cuairte seo caite a rinne tú.',
 'enotif_anon_editor' => 'úsáideoir gan ainm $1',
 'enotif_body' => 'A $WATCHINGUSERNAME, a chara,
index a373aeb..6095d74 100644 (file)
@@ -401,9 +401,6 @@ $2',
 'logouttext' => "'''汝退出正哩。'''
 
 接到汝得匿名使用{{SITENAME}},或<span class='plainlinks'>[$1 登入过]</span>。除非汝删吥浏览器缓存,只把子页面可能会接到话汝系登入状态。",
-'welcomecreation' => '== 欢迎, $1! ==
-
-建正哩汝𠮶帐户,莫𫍧记设置 [[Special:Preferences|{{SITENAME}}𠮶个人参数]]。',
 'yourname' => '用户名:',
 'yourpassword' => '密码:',
 'yourpasswordagain' => '输过道密码:',
@@ -1293,11 +1290,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 'enotif_mailer' => '{{SITENAME}}邮件报告员',
 'enotif_reset' => '拿全部文章标成已读',
-'enotif_newpagetext' => '个系新开𠮶页面。',
 'enotif_impersonal_salutation' => '{{SITENAME}}用户',
-'changed' => '改卟嘞',
-'created' => '建正嘞',
-'enotif_subject' => '{{SITENAME}}有页面 $PAGETITLE拖$PAGEEDITOR $CHANGEDORCREATED',
 'enotif_lastvisited' => '眵倷上回访问后𠮶全部改动请去$1。',
 'enotif_lastdiff' => '想眵改动请去$1。',
 'enotif_anon_editor' => '匿名用户$1',
index 060e337..d3e42c0 100644 (file)
@@ -423,9 +423,6 @@ $2',
 'logouttext' => "'''汝退出正哩。'''
 
 接到汝得匿名使用{{SITENAME}},或<span class='plainlinks'>[$1 登入過]</span>。除非汝刪吥瀏覽器緩存,隻把子頁面可能會接到話汝係登入狀態。",
-'welcomecreation' => '== 歡迎, $1! ==
-
-建正哩汝嗰帳戶,莫誺記設置 [[Special:Preferences|{{SITENAME}}嗰個人參數]]。',
 'yourname' => '用戶名:',
 'yourpassword' => '密碼:',
 'yourpasswordagain' => '輸過道密碼:',
@@ -1315,11 +1312,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 'enotif_mailer' => '{{SITENAME}}郵件報告員',
 'enotif_reset' => '拿全部文章標成已讀',
-'enotif_newpagetext' => '箇係新開嗰頁面。',
 'enotif_impersonal_salutation' => '{{SITENAME}}用戶',
-'changed' => '改卟嘞',
-'created' => '建正嘞',
-'enotif_subject' => '{{SITENAME}}有頁面 $PAGETITLE拕$PAGEEDITOR $CHANGEDORCREATED',
 'enotif_lastvisited' => '眵倷上回訪問後嗰全部改動請去$1。',
 'enotif_lastdiff' => '想眵改動請去$1。',
 'enotif_anon_editor' => '匿名用戶$1',
index 4d8d0d7..aa645d0 100644 (file)
@@ -352,7 +352,7 @@ $messages = array(
 'broken-file-category' => 'Páxinas con ligazóns rotas cara a ficheiros',
 
 'about' => 'Acerca de',
-'article' => 'Artigo',
+'article' => 'Páxina de contido',
 'newwindow' => '(abre unha ventá nova)',
 'cancel' => 'Cancelar',
 'moredotdotdot' => 'Máis...',
@@ -389,6 +389,7 @@ $messages = array(
 'namespaces' => 'Espazos de nomes',
 'variants' => 'Variantes',
 
+'navigation-heading' => 'Menú de navegación',
 'errorpagetitle' => 'Erro',
 'returnto' => 'Volver a "$1".',
 'tagline' => 'De {{SITENAME}}',
@@ -524,7 +525,7 @@ $1',
 'nstab-image' => 'Ficheiro',
 'nstab-mediawiki' => 'Mensaxe',
 'nstab-template' => 'Modelo',
-'nstab-help' => 'Axuda',
+'nstab-help' => 'Páxina de axuda',
 'nstab-category' => 'Categoría',
 
 # Main script and global functions
@@ -612,7 +613,7 @@ $2',
 'namespaceprotected' => "Non dispón de permisos para modificar páxinas no espazo de nomes '''$1'''.",
 'customcssprotected' => 'Non dispón de permisos para modificar esta páxina de CSS, dado que contén a configuración persoal doutro usuario.',
 'customjsprotected' => 'Non dispón de permisos para modificar esta páxina de JavaScript, dado que contén a configuración persoal doutro usuario.',
-'ns-specialprotected' => 'Non se poden editar as páxinas no espazo de nomes {{ns:special}}.',
+'ns-specialprotected' => 'Non se poden editar as páxinas no espazo de nomes "{{ns:special}}".',
 'titleprotected' => "Este título foi protexido da creación por [[User:$1|$1]].
 O motivo achegado é ''$2''.",
 'filereadonlyerror' => 'Non se puido modificar o ficheiro "$1" porque o repositorio "$2" está en modo de só lectura.
@@ -633,8 +634,8 @@ O administrador que bloqueou o repositorio achegou este motivo: "$3".',
 
 Pode continuar usando {{SITENAME}} de xeito anónimo, ou pode <span class='plainlinks'>[$1 acceder de novo]</span> co mesmo nome de usuario ou con outro.
 Teña en conta que mentres non se limpa a memoria caché do seu navegador algunhas páxinas poden continuar aparecendo como se aínda estivese dentro do sistema.",
-'welcomecreation' => '== Reciba a nosa benvida, $1! ==
-A súa conta foi creada correctamente.
+'welcomeuser' => 'Reciba a nosa benvida, $1!',
+'welcomecreation-msg' => 'A súa conta foi creada correctamente.
 Non esqueza personalizar as súas [[Special:Preferences|preferencias de {{SITENAME}}]].',
 'yourname' => 'Nome de usuario:',
 'yourpassword' => 'Contrasinal:',
@@ -1323,7 +1324,7 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
 'prefs-datetime' => 'Data e hora',
 'prefs-labs' => 'Características experimentais',
 'prefs-user-pages' => 'Páxinas de usuario',
-'prefs-personal' => 'Información do usuario',
+'prefs-personal' => 'Información de usuario',
 'prefs-rc' => 'Cambios recentes',
 'prefs-watchlist' => 'Lista de vixilancia',
 'prefs-watchlist-days' => 'Número de días que mostrar na lista de vixilancia:',
@@ -1792,6 +1793,7 @@ Se o problema persiste, póñase en contacto cun [[Special:ListUsers/sysop|admin
 'backend-fail-notsame' => 'Xa existe un ficheiro chamado "$1", con contidos diferentes.',
 'backend-fail-invalidpath' => '"$1" non é unha ruta de almacenamento válida.',
 'backend-fail-delete' => 'Non se deu borrado o ficheiro "$1".',
+'backend-fail-describe' => 'Non se puideron cambiar os metadatos do ficheiro "$1".',
 'backend-fail-alreadyexists' => 'O ficheiro "$1" xa existe.',
 'backend-fail-store' => 'Non se deu almacenado o ficheiro "$1" en "$2".',
 'backend-fail-copy' => 'Non se deu copiado o ficheiro "$1" en "$2".',
@@ -2297,22 +2299,25 @@ Os cambios futuros nesta páxina e na súa páxina de conversa asociada serán l
 'unwatching' => 'Deixando de vixiar...',
 'watcherrortext' => 'Houbo un erro ao cambiar as súas opcións de vixilancia para a páxina "$1".',
 
-'enotif_mailer' => 'Correo de aviso de {{SITENAME}}',
+'enotif_mailer' => 'Sistema de notificacións por correo de {{SITENAME}}',
 'enotif_reset' => 'Marcar todas as páxinas como visitadas',
-'enotif_newpagetext' => 'Esta é unha páxina nova.',
 'enotif_impersonal_salutation' => 'usuario de {{SITENAME}}',
-'changed' => 'modificada',
-'created' => 'creada',
-'enotif_subject' => 'A páxina de {{SITENAME}} chamada "$PAGETITLE" foi $CHANGEDORCREATED por $PAGEEDITOR',
-'enotif_lastvisited' => 'Vexa $1 para comprobar todos os cambios desde a súa última visita.',
-'enotif_lastdiff' => 'Vexa $1 para visualizar esta modificación.',
+'enotif_subject_deleted' => '{{GENDER:$2|$2}} borrou a páxina chamada "$1" en {{SITENAME}}',
+'enotif_subject_created' => '{{GENDER:$2|$2}} creou a páxina chamada "$1" en {{SITENAME}}',
+'enotif_subject_moved' => '{{GENDER:$2|$2}} trasladou a páxina chamada "$1" en {{SITENAME}}',
+'enotif_subject_restored' => '{{GENDER:$2|$2}} restaurou a páxina chamada "$1" en {{SITENAME}}',
+'enotif_subject_changed' => '{{GENDER:$2|$2}} modificou a páxina chamada "$1" en {{SITENAME}}',
+'enotif_body_intro_deleted' => '{{GENDER:$2|$2}} borrou a páxina chamada "$1" en {{SITENAME}} o $PAGEEDITDATE. Consulte $3 para ver a revisión actual.',
+'enotif_body_intro_created' => '{{GENDER:$2|$2}} creou a páxina chamada "$1" en {{SITENAME}} o $PAGEEDITDATE. Consulte $3 para ver a revisión actual.',
+'enotif_body_intro_moved' => '{{GENDER:$2|$2}} trasladou a páxina chamada "$1" en {{SITENAME}} o $PAGEEDITDATE. Consulte $3 para ver a revisión actual.',
+'enotif_body_intro_restored' => '{{GENDER:$2|$2}} restaurou a páxina chamada "$1" en {{SITENAME}} o $PAGEEDITDATE. Consulte $3 para ver a revisión actual.',
+'enotif_body_intro_changed' => '{{GENDER:$2|$2}} modificou a páxina chamada "$1" en {{SITENAME}} o $PAGEEDITDATE. Consulte $3 para ver a revisión actual.',
+'enotif_lastvisited' => 'Consulte $1 para comprobar todos os cambios feitos desde a súa última visita.',
+'enotif_lastdiff' => 'Consulte $1 para ver esta modificación.',
 'enotif_anon_editor' => 'usuario anónimo $1',
-'enotif_body' => 'Estimado $WATCHINGUSERNAME:
+'enotif_body' => 'Boas, $WATCHINGUSERNAME:
 
-
-A páxina de {{SITENAME}} "$PAGETITLE" foi $CHANGEDORCREATED o $PAGEEDITDATE por $PAGEEDITOR, olle $PAGETITLE_URL para comprobar a versión actual.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Resumo de edición: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2320,10 +2325,9 @@ Pode contactar co editor:
 por correo electrónico: $PAGEEDITOR_EMAIL
 no wiki: $PAGEEDITOR_WIKI
 
-Non se producirán novas notificacións cando haxa novos cambios ata que vostede visite a páxina.
-Pode borrar os indicadores de aviso de notificación para o conxunto das páxinas marcadas na súa lista de vixilancia.
+Non se producirán novas notificacións cando haxa novos cambios ata que vostede visite a páxina. Pode borrar os indicadores de aviso de notificación para o conxunto das páxinas marcadas na súa lista de vixilancia.
 
-             O sistema de aviso de {{SITENAME}}
+       O sistema de avisos de {{SITENAME}}
 
 --
 Para cambiar as notificacións por correo electrónico, visite
@@ -2971,7 +2975,7 @@ Pode ver o código fonte.',
 'tooltip-feed-atom' => 'Fonte de novas Atom desta páxina',
 'tooltip-t-contributions' => 'Ver a lista de contribucións {{GENDER:{{BASEPAGENAME}}|deste usuario|desta usuaria}}',
 'tooltip-t-emailuser' => 'Enviarlle unha mensaxe a {{GENDER:{{BASEPAGENAME}}|este usuario|esta usuaria}} por correo electrónico',
-'tooltip-t-upload' => 'Cargar os ficheiros',
+'tooltip-t-upload' => 'Cargar ficheiros',
 'tooltip-t-specialpages' => 'Lista de todas as páxinas especiais',
 'tooltip-t-print' => 'Versión para imprimir da páxina',
 'tooltip-t-permalink' => 'Ligazón permanente a esta versión da páxina',
@@ -3120,6 +3124,8 @@ Isto, probabelmente, se debe a unha ligazón cara a un sitio externo que está n
 'markedaspatrollederror' => 'Non se pode marcar como revisada',
 'markedaspatrollederrortext' => 'É preciso especificar unha revisión para marcala como revisada.',
 'markedaspatrollederror-noautopatrol' => 'Non está permitido que un mesmo marque as propias edicións como revisadas.',
+'markedaspatrollednotify' => 'A modificación feita en "$1" marcouse como revisada.',
+'markedaspatrollederrornotify' => 'Erro ao marcar como revisada.',
 
 # Patrol log
 'patrol-log-page' => 'Rexistro de revisións',
@@ -3941,10 +3947,10 @@ As imaxes móstranse na súa resolución completa; outros tipos de ficheiros in
 'logentry-move-move_redir-noredirect' => '$1 moveu a páxina "$3" a "$4" sobre unha redirección sen deixar unha redirección',
 'logentry-patrol-patrol' => '$1 marcou a revisión $4 da páxina "$3" como patrullada',
 'logentry-patrol-patrol-auto' => '$1 marcou automaticamente a revisión $4 da páxina "$3" como patrullada',
-'logentry-newusers-newusers' => '$1 creou unha conta de usuario',
-'logentry-newusers-create' => '$1 creou unha conta de usuario',
-'logentry-newusers-create2' => '$1 creou unha conta de usuario $3',
-'logentry-newusers-autocreate' => 'A conta $1 creouse automaticamente',
+'logentry-newusers-newusers' => 'Creouse a conta de usuario $1',
+'logentry-newusers-create' => 'Creouse a conta de usuario $1',
+'logentry-newusers-create2' => '$1 creou a conta de usuario $3',
+'logentry-newusers-autocreate' => 'A conta de usuario $1 creouse automaticamente',
 'newuserlog-byemail' => 'contrasinal enviado por correo electrónico',
 
 # Feedback
@@ -4019,6 +4025,4 @@ En caso contrario, pode empregar o formulario sinxelo inferior. O seu comentario
 'duration-centuries' => '$1 {{PLURAL:$1|século|séculos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenio|milenios}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'conversa',
 );
index 511a535..2a37792 100644 (file)
@@ -14,6 +14,8 @@
 
 $fallback = 'fa';
 
+$rtl = true;
+
 $messages = array(
 'moredotdotdot' => 'ویشتر...',
 'mypage' => 'می هنه‌شر',
index d287798..e1f807f 100644 (file)
@@ -414,9 +414,6 @@ $2',
 
 Ἔξεστί σοι χρῆσθαι τῷ {{SITENAME}} ἀνωνύμως, ἢ ἔξεστί σοι <span class='plainlinks'>[$1 συνδεῖσθαι πάλιν]</span> ὡς ὁ αὐτὸς ἢ ὡς ἄλλος χρώμενος.
 Δέλτοι τινὲς δέ, ἐνδεχομένως, δειχθήσονται ὡς ἂν ἀκμὴν συνδεδεμένος ᾖς, μέχρι ὅτε καθαίρῃς τὴν λανθάνουσαν μνήμην τοῦ προγράμματος πλοηγήσεώς σου.",
-'welcomecreation' => '== Ὡς εὖ παρέστης, $1! ==
-
-Λογισμός σὸς πεποίηται. Μέμνησο μεταβάλλειν τὰς τοῦ [[Special:Preferences|{{SITENAME}} προαιρέσεις σου]].',
 'yourname' => 'Ὄνομα χρωμένου:',
 'yourpassword' => 'Σῆμα:',
 'yourpasswordagain' => 'Ἀνατυπῶσαι σύνθημα:',
@@ -1565,11 +1562,7 @@ $1",
 
 'enotif_mailer' => 'Σύστημα εἰδήσεως τοῦ {{SITENAME}} μέσῳ ἐπιστολῶν',
 'enotif_reset' => 'Σημαίνειν ἁπάσας τὰς ἐπεσκοπημένας δέλτους',
-'enotif_newpagetext' => 'Ἥδε νέα δέλτος ἐστίν.',
 'enotif_impersonal_salutation' => 'Χρώμενος τῷ {{SITENAME}}',
-'changed' => 'ἠλλαγμένη',
-'created' => 'ποιηθέν',
-'enotif_subject' => 'Ἡ τοῦ {{SITENAME}} δέλτος $PAGETITLE ἐποιἠθη $CHANGEDORCREATED ὑπὸ τὸν $PAGEEDITOR',
 'enotif_lastvisited' => 'Ἴδε $1 διὰ ἁπάσας τὰς ἀλλαγὰς ἐκ τῆς ὑστάτης ἐπισκέψεώς σου.',
 'enotif_lastdiff' => 'Ἴδε $1 διὰ τὸ ὁρᾶν τήνδε τὴν ἀλλαγήν.',
 'enotif_anon_editor' => 'ἀνώνυμος χρώμενος $1',
index e046694..fbff293 100644 (file)
@@ -537,9 +537,6 @@ Dr Administrator, wu dr Schrybzuegriff gsperrt het, het dää Grund aagee: „$3
 Du chasch {{SITENAME}} wyter anonym bruche, oder Du chasch di <span class='plainlinks'>[$1 wider aamälde]</span> mit em glyche oder eme andere Benutzername.
 
 Ochat: s cha syy, ass bstimmti Syte eso aazeigt wäre, wie wänn Du allno aagmäldet wärsch, bis Du dr Zwischespycher vu Dyym Browser glescht hesch.",
-'welcomecreation' => '==Willcho, $1!==
-Dyy Benutzerkonto isch aaglait wore.
-Vergiss nid, dyni [[Special:Preferences|{{SITENAME}}-Yystellige]] aazpasse.',
 'yourname' => 'Dyy Benutzername',
 'yourpassword' => 'Passwort:',
 'yourpasswordagain' => 'Passwort no mol yygee:',
@@ -2144,11 +2141,7 @@ Wänn Du d Syte speter wider vu dr Lischt witt stryyche, deno druck eifach uf 
 
 'enotif_mailer' => '{{SITENAME}} E-Mail-Benochrichtigungsdienscht',
 'enotif_reset' => 'Alli Syte as aagluegt markiere',
-'enotif_newpagetext' => 'Des isch e neiji Syte.',
 'enotif_impersonal_salutation' => '{{SITENAME}}-Benutzer',
-'changed' => 'gänderet',
-'created' => 'aagleit',
-'enotif_subject' => 'D {{SITENAME}} Syte $PAGETITLE isch vum $PAGEEDITOR $CHANGEDORCREATED wore.',
 'enotif_lastvisited' => '$1 zeigt alli Änderige uf s Mol.',
 'enotif_lastdiff' => 'Lueg $1 no däre Änderig.',
 'enotif_anon_editor' => 'Anonyme Benutzer $1',
index baff36b..c8873a8 100644 (file)
@@ -18,6 +18,7 @@
  * @author Jay
  * @author Kaganer
  * @author KartikMistry
+ * @author Kondi
  * @author Metrix1312
  * @author Mohit.dalal
  * @author Nehal
@@ -418,9 +419,9 @@ $1',
 'youhavenewmessages' => 'તમારા માટે $1 ($2).',
 'newmessageslink' => 'નવીન સંદેશ',
 'newmessagesdifflink' => 'છેલ્લો ફેરફાર',
-'youhavenewmessagesfromusers' => 'આપને માટે {{PLURAL:$3|અન્ય સભ્યના|$3 અન્ય સભ્યોના}} $1 છે. ($2).',
+'youhavenewmessagesfromusers' => 'આપને માટે {{PLURAL:$3|અન્ય સભ્ય|$3 અન્ય સભ્યો}} તરફથી $1 છે. ($2).',
 'youhavenewmessagesmanyusers' => 'આપને માટે $1 છે. ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|નવો સંદેશ|નવાં સંદેશાઓ}}',
+'newmessageslinkplural' => '{{PLURAL:$1|નવો સંદેશો|નવા સંદેશા}}',
 'newmessagesdifflinkplural' => 'છેલ્લા {{PLURAL:$1|ફેરફાર|ફેરફારો}}',
 'youhavenewmessagesmulti' => '$1 ઉપર તમારા માટે નવો સંદેશ છે.',
 'editsection' => 'ફેરફાર કરો',
@@ -562,9 +563,6 @@ $2',
 
 તમે અનામી તરીકે {{SITENAME}} વાપરવાનું ચાલુ રાખી શકો છો, કે પછી તેના તે જ કે અલગ સભ્ય તરીકે <span class='plainlinks'>[$1 ફરી પ્રવેશ]</span> કરી શકો છો.
 ધ્યાન રાખો કે જ્યાં સુધી તમે તમારા બ્રાઉઝરનો  કૅશ સાફ નહીં કરો ત્યાં સુધી કેટલાક પાનાં તમે પ્રવેશી ચુક્યા છો તેમ બતાવશે.",
-'welcomecreation' => '== તમારૂં સ્વાગત છે $1! ==
-તમારૂં ખાતું બની ગયું છે.
-તમારી [[Special:Preferences|{{SITENAME}} પસંદ]] બદલવાનું ભૂલશો નહીં.',
 'yourname' => 'સભ્ય નામ:',
 'yourpassword' => 'ગુપ્ત સંજ્ઞા:',
 'yourpasswordagain' => 'ગુપ્ત સંજ્ઞા (પાસવર્ડ) ફરી લખો',
@@ -850,7 +848,7 @@ $2
 'note' => "'''નોંધ:'''",
 'previewnote' => "'''આ ફક્ત પૂર્વાવલોકન છે;'''
 તમારા ફેરફારો હજુ સાચવવામાં નથી આવ્યા!",
-'continue-editing' => 'વાàª\82àª\9aવાનું ચાલુ રાખો',
+'continue-editing' => 'ફà«\87રફાર àª\95રવાનું ચાલુ રાખો',
 'previewconflict' => 'જો તમે આ પાનું સાચવશો તો આ પ્રિવ્યુમાં દેખાય છે તેવું સચવાશે.',
 'session_fail_preview' => "'''અફસોસ છે! સત્ર માહિતી ખોઇ દેવાને કારણે અમે તમારું કાર્ય સાચવી ન શક્યાં.'''
 કૃપયા ફરી પ્રયત્ન કરો.
@@ -2182,11 +2180,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 
 'enotif_mailer' => '{{SITENAME}} સૂચના ઈ-મેલ પાઠક',
 'enotif_reset' => 'બધા પાનાને મુલાકાત લેવાયેલા અંકિત કરો',
-'enotif_newpagetext' => 'આ નવું પાનું છે.',
 'enotif_impersonal_salutation' => '{{SITENAME}} સભ્ય',
-'changed' => 'બદલ્યું',
-'created' => 'બનાવ્યું',
-'enotif_subject' => '{{SITENAME}} નું પાનું $PAGETITLE $PAGEEDITOR દ્વારા $CHANGEDORCREATED',
 'enotif_lastvisited' => 'તમારી પાછલી મુલાકાત પછી થયેલા બધા ફેરફારો માટે $1 જુઓ',
 'enotif_lastdiff' => 'આ ફેરફાર જોવા $1 જુઓ',
 'enotif_anon_editor' => 'અનામિ સભ્ય $1',
index ab4d580..ac155d2 100644 (file)
@@ -342,9 +342,6 @@ Cur coontey jeh da [[Special:ListUsers/sysop|reireyder]], as goaill stiagh yn UR
 'virus-unknownscanner' => 'ronseyder noi-veerys gyn enney',
 
 # Login and logout pages
-'welcomecreation' => '== Failt ort, $1! ==
-Ta dty choontys crooit nish.<br />
-Ny jean jarrood dty [[Special:Preferences|hosheeaghtyn {{SITENAME}}]] y chaghlaa.',
 'yourname' => "Dt'ennym ymmydeyr:",
 'yourpassword' => 'Fockle yn arrey:',
 'yourpasswordagain' => "Aascreeu d'ockle arrey:",
@@ -999,10 +996,7 @@ Bee caghlaaghyn jeant er y duillag shoh as e ghuillag resoonaght ry-akin ayns y
 'watching' => 'Jannoo arrey...',
 'unwatching' => 'Stap y chur er arrey...',
 
-'enotif_newpagetext' => 'She duillag noa eh shoh.',
 'enotif_impersonal_salutation' => '{{SITENAME}} ymmydeyr',
-'changed' => 'ceaghlit',
-'created' => 'crooit',
 'enotif_anon_editor' => 'ymmydeyr $1 neuenmyssit',
 'enotif_body' => '$WATCHINGUSERNAME veen,
 
index 459e976..05863ff 100644 (file)
@@ -328,7 +328,6 @@ For translations, please consider using [//translatewiki.net/wiki/Main_Page?setl
 'logouttext' => "'''Ngì hien-chhai yí-kîn thui-chhut.'''
 
 Ngì khó-yî ki-siu̍k yî ngia̍k-miàng fông-sṳt sṳ́-yung {{SITENAME}}, fe̍t-chá chai-chhṳ yî siông-thùng fe̍t-he mò-thùng yung-fu sṳ̂n-fun tên-ngi̍p.",
-'welcomecreation' => '<h2>Fôn-ngiàng, $1!</h2><p>Ngì-ke chong-ho yí-kîn kien-li̍p, put-yeu mong-ki sat-chṳ {{SITENAME}} ke-ngìn chhâm-sṳ.</p>',
 'yourname' => 'Yung-fu-miàng',
 'yourpassword' => 'Me̍t-ma:',
 'yourpasswordagain' => 'Chai-chhṳ sû-ngi̍p me̍t-ma:',
@@ -1064,11 +1063,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 'enotif_mailer' => '{{SITENAME}} email thûng-tî-hi',
 'enotif_reset' => 'Chiông só-yû hong-mien phêu-vi yí-kîn thu̍k-ko.',
-'enotif_newpagetext' => 'Liá-he sîn-kien vùn-chông.',
 'enotif_impersonal_salutation' => '{{SITENAME}} yung-fu',
-'changed' => 'siû-kói liáu',
-'created' => 'Yí-kîn kien-li̍p',
-'enotif_subject' => '{{SITENAME}} yû vùn-chông $PAGETITLE pûn $PAGEEDITOR $CHANGEDORCREATED',
 'enotif_lastvisited' => 'Kiám-sṳ ngì song-chhṳ fóng-mun heu ke só-yû kiên-kói chhián chhâm-siòng $1.',
 'enotif_lastdiff' => 'Kiám-chhà kiên-kói chhiáng chhâm-siòng $1.',
 'enotif_anon_editor' => 'ngia̍k-miàng yung-fu $1',
index 6c513e1..f4e5e06 100644 (file)
@@ -517,6 +517,7 @@ $messages = array(
 'namespaces' => 'מרחבי שם',
 'variants' => 'גרסאות שפה',
 
+'navigation-heading' => 'תפריט הניווט',
 'errorpagetitle' => 'שגיאה',
 'returnto' => 'חזרה לדף $1.',
 'tagline' => 'מתוך {{SITENAME}}',
@@ -762,9 +763,9 @@ $2',
 
 באפשרותכם להמשיך ולעשות שימוש ב{{grammar:תחילית|{{SITENAME}}}} באופן אנונימי, או <span class='plainlinks'>[$1 לשוב ולהיכנס לאתר]</span> עם שם משתמש זהה או אחר.
 שימו לב כי ייתכן שדפים אחדים ימשיכו להיות מוצגים כאילו אתם עדיין מחוברים לחשבון עד שתנקו את המטמון של הדפדפן שלכם.",
-'welcomecreation' => '== ברוך בואך, $1! ==
-חשבונך נוצר.
-נא לא לשכוח להתאים את [[Special:Preferences|העדפות המשתמש]] שלך באתר {{SITENAME}}.',
+'welcomeuser' => 'ברוך בואך, $1!',
+'welcomecreation-msg' => 'חשבונך נוצר.
+נא לא לשכוח להתאים את [[Special:Preferences|העדפות המשתמש]] שלך ב{{grammar:תחילית|{{SITENAME}}}}.',
 'yourname' => 'שם משתמש:',
 'yourpassword' => 'סיסמה:',
 'yourpasswordagain' => 'הקש סיסמה שנית:',
@@ -1904,23 +1905,24 @@ $1',
 'upload-copy-upload-invalid-domain' => 'העלאת קבצים משרת זה אינה אפשרית.',
 
 # File backend
-'backend-fail-stream' => 'לא הייתה אפשרות להזרים את הקובץ $1.',
-'backend-fail-backup' => 'לא הייתה אפשרות לגבות את הקובץ $1.',
-'backend-fail-notexists' => 'הקובץ $1 אינו קיים.',
+'backend-fail-stream' => 'לא הייתה אפשרות להזרים את הקובץ "$1".',
+'backend-fail-backup' => 'לא הייתה אפשרות לגבות את הקובץ "$1".',
+'backend-fail-notexists' => 'הקובץ "$1" אינו קיים.',
 'backend-fail-hashes' => 'לא הייתה אפשרות לקבל גיבובי קבצים עבור ההשוואה.',
-'backend-fail-notsame' => 'כבר קיים קובץ לא זהה ב־$1.',
-'backend-fail-invalidpath' => '$1 אינו נתיב אחסון תקין.',
-'backend-fail-delete' => 'לא הצליחה מחיקת הקובץ $1.',
-'backend-fail-alreadyexists' => 'הקובץ $1 כבר קיים.',
-'backend-fail-store' => 'לא הייתה אפשרות לאחסן את הקובץ $1 ב־$2',
-'backend-fail-copy' => 'לא הייתה אפשרות להעתיק את הקובץ $1 אל $2',
-'backend-fail-move' => 'לא הייתה אפשרות להעביר את הקובץ $1 אל $2',
+'backend-fail-notsame' => 'כבר קיים קובץ לא זהה ב־"$1".',
+'backend-fail-invalidpath' => '"$1" אינו נתיב אחסון תקין.',
+'backend-fail-delete' => 'לא הייתה אפשרות למחוק את הקובץ "$1".',
+'backend-fail-describe' => 'לא הייתה אפשרות לשנות את המידע הנוסף על הקובץ "$1".',
+'backend-fail-alreadyexists' => 'הקובץ "$1" כבר קיים.',
+'backend-fail-store' => 'לא הייתה אפשרות לאחסן את הקובץ "$1" ב־"$2".',
+'backend-fail-copy' => 'לא הייתה אפשרות להעתיק את הקובץ "$1" ל־"$2".',
+'backend-fail-move' => 'לא הייתה אפשרות להעביר את הקובץ "$1" ל־"$2".',
 'backend-fail-opentemp' => 'לא הייתה אפשרות לפתוח את הקובץ הזמני.',
 'backend-fail-writetemp' => 'לא הייתה אפשרות לכתוב אל הקובץ הזמני.',
 'backend-fail-closetemp' => 'לא הייתה אפשרות לסגור את הקובץ הזמני.',
-'backend-fail-read' => 'קר×\99×\90ת ×\94ק×\95×\91×¥ $1 ×\9c×\90 ×\94צ×\9c×\99×\97×\94',
-'backend-fail-create' => '×\9bת×\99×\91ת ×\94ק×\95×\91×¥ $1 ×\9c×\90 ×\94צ×\9c×\99×\97×\94',
-'backend-fail-maxsize' => '×\9bת×\99×\91ת ×\94ק×\95×\91×¥ $1 ×\9c×\90 ×\94צ×\9c×\99×\97×\94 כיוון שהוא גדול יותר {{PLURAL:$2|מבית אחד|מ־$2 בתים}}.',
+'backend-fail-read' => '×\9c×\90 × ×\99ת×\9f ×\94×\99×\94 ×\9cקר×\95×\90 ×\90ת ×\94ק×\95×\91×¥ "$1".',
+'backend-fail-create' => '×\9c×\90 × ×\99ת×\9f ×\94×\99×\94 ×\9c×\9bת×\95×\91 ×\90ת ×\94ק×\95×\91×¥ "$1".',
+'backend-fail-maxsize' => '×\9c×\90 × ×\99ת×\9f ×\94×\99×\94 ×\9c×\9bת×\95×\91 ×\90ת ×\94ק×\95×\91×¥ "$1" כיוון שהוא גדול יותר {{PLURAL:$2|מבית אחד|מ־$2 בתים}}.',
 'backend-fail-readonly' => 'מאגר האחסון לקבצים "$1" הוא כרגע במצב קריאה בלבד. הסיבה שניתנה לכך היא: "\'\'\'$2\'\'\'"',
 'backend-fail-synced' => 'הקובץ "$1" נמצא במצב לא עקבי בתוך מאגרי אחסון הקבצים הפנימיים',
 'backend-fail-connect' => 'לא ניתן היה להתחבר למאגר אחסון הקבצים הפנימי "$1".',
@@ -2418,19 +2420,23 @@ $1',
 
 'enotif_mailer' => 'הודעות {{SITENAME}}',
 'enotif_reset' => 'סימון כל הדפים כאילו נצפו',
-'enotif_newpagetext' => 'זהו דף חדש.',
 'enotif_impersonal_salutation' => 'משתמש של {{SITENAME}}',
-'changed' => 'שונה',
-'created' => 'נוצר',
-'enotif_subject' => 'הדף $PAGETITLE ב{{grammar:תחילית|{{SITENAME}}}} $CHANGEDORCREATED על ידי $PAGEEDITOR',
+'enotif_subject_deleted' => 'הדף $1 ב{{grammar:תחילית|{{SITENAME}}}} נמחק על ידי {{gender:$2|$2}}',
+'enotif_subject_created' => 'הדף $1 ב{{grammar:תחילית|{{SITENAME}}}} נוצר על ידי {{gender:$2|$2}}',
+'enotif_subject_moved' => 'הדף $1 ב{{grammar:תחילית|{{SITENAME}}}} הועבר על ידי {{gender:$2|$2}}',
+'enotif_subject_restored' => 'הדף $1 ב{{grammar:תחילית|{{SITENAME}}}} שוחזר על ידי {{gender:$2|$2}}',
+'enotif_subject_changed' => 'הדף $1 ב{{grammar:תחילית|{{SITENAME}}}} שונה על ידי {{gender:$2|$2}}',
+'enotif_body_intro_deleted' => 'הדף $1 ב{{grammar:תחילית|{{SITENAME}}}} נמחק ב־$PAGEEDITDATE על ידי {{gender:$2|$2}}, ראו $3 לגרסה הנוכחית.',
+'enotif_body_intro_created' => 'הדף $1 ב{{grammar:תחילית|{{SITENAME}}}} נוצר ב־$PAGEEDITDATE על ידי {{gender:$2|$2}}, ראו $3 לגרסה הנוכחית.',
+'enotif_body_intro_moved' => 'הדף $1 ב{{grammar:תחילית|{{SITENAME}}}} הועבר ב־$PAGEEDITDATE על ידי {{gender:$2|$2}}, ראו $3 לגרסה הנוכחית.',
+'enotif_body_intro_restored' => 'הדף $1 ב{{grammar:תחילית|{{SITENAME}}}} שוחזר ב־$PAGEEDITDATE על ידי {{gender:$2|$2}}, ראו $3 לגרסה הנוכחית.',
+'enotif_body_intro_changed' => 'הדף $1 ב{{grammar:תחילית|{{SITENAME}}}} שונה ב־$PAGEEDITDATE על ידי {{gender:$2|$2}}, ראו $3 לגרסה הנוכחית.',
 'enotif_lastvisited' => 'ראו $1 לכל השינויים מאז ביקורכם האחרון.',
 'enotif_lastdiff' => 'ראו $1 לשינוי זה.',
 'enotif_anon_editor' => 'משתמש אנונימי $1',
 'enotif_body' => 'לכבוד $WATCHINGUSERNAME,
 
-הדף $PAGETITLE ב{{grammar:תחילית|{{SITENAME}}}} $CHANGEDORCREATED ב־$PAGEEDITDATE על ידי $PAGEEDITOR, ראו $PAGETITLE_URL לגרסה הנוכחית.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 תקציר העריכה: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -3235,6 +3241,8 @@ $1',
 'markedaspatrollederror' => 'לא ניתן לסמן כבדוק',
 'markedaspatrollederrortext' => 'עליכם לציין גרסה שתציינו כבדוקה.',
 'markedaspatrollederror-noautopatrol' => 'אינכם מורשים לסמן את השינויים של עצמכם כבדוקים.',
+'markedaspatrollednotify' => 'שינוי זה ל"$1" סומן כבדוק.',
+'markedaspatrollederrornotify' => 'סימון השינוי כבדוק נכשל.',
 
 # Patrol log
 'patrol-log-page' => 'יומן שינויים בדוקים',
@@ -3298,6 +3306,7 @@ $1',
 'hours' => '{{PLURAL:$1|שעה|שעתיים|$1 שעות}}',
 'days' => '{{PLURAL:$1|יום|יומיים|$1 ימים}}',
 'ago' => 'לפני $1',
+'just-now' => 'לפני זמן קצר',
 
 # Bad image list
 'bad_image_list' => 'דרך הכתיבה בהודעה היא כמתואר להלן:
@@ -4108,10 +4117,10 @@ $5
 'logentry-move-move_redir-noredirect' => '$1 העביר את הדף $3 ל{{GRAMMAR:תחילית|$4}} תוך דריסת הפניה ובלי להשאיר הפניה',
 'logentry-patrol-patrol' => '$1 סימן את הגרסה $4 בדף $3 כבדוקה',
 'logentry-patrol-patrol-auto' => '$1 סימן אוטומטית את הגרסה $4 בדף $3 כבדוקה',
-'logentry-newusers-newusers' => '$1 יצר חשבון משתמש',
-'logentry-newusers-create' => '$1 יצר חשבון משתמש',
-'logentry-newusers-create2' => '$1 יצר חשבון משתמש $3',
-'logentry-newusers-autocreate' => '×\94×\97ש×\91×\95×\9f $1 נוצר אוטומטית',
+'logentry-newusers-newusers' => 'חשבון המשתמש $1 נוצר',
+'logentry-newusers-create' => 'חשבון המשתמש $1 נוצר',
+'logentry-newusers-create2' => 'חשבון המשתמש $3 נוצר על ידי $1',
+'logentry-newusers-autocreate' => '×\97ש×\91×\95×\9f ×\94×\9eשת×\9eש $1 נוצר אוטומטית',
 'newuserlog-byemail' => 'הסיסמה נשלחה בדוא"ל',
 
 # Feedback
@@ -4187,5 +4196,5 @@ $5
 'duration-millennia' => '{{PLURAL:$1|אלף שנה|אלפיים שנה|$1 אלפי שנים}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'שיחה',
+'svg-long-error' => 'קובץ SVG לא תקין: $1',
 );
index e78fc8d..4183c53 100644 (file)
@@ -31,6 +31,7 @@
  * @author Omprakash
  * @author Pulkitsingh01
  * @author Purodha
+ * @author Raj Singh
  * @author Rajesh
  * @author Rajivkurjee
  * @author Reedy
@@ -226,7 +227,7 @@ $messages = array(
 
 'underline-always' => 'सदैव',
 'underline-never' => 'कभी नहीं',
-'underline-default' => 'ब्राउज़र डिफ़ॉल्ट',
+'underline-default' => 'तà¥\8dवà¤\9aा à¤¯à¤¾ à¤¬à¥\8dराà¤\89à¤\9c़र à¤¡à¤¿à¤«à¤¼à¥\89लà¥\8dà¤\9f',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'सम्पादन क्षेत्र की मुद्रलिपि शैली:',
@@ -582,8 +583,6 @@ $2',
 
 आप बेनामी हो के {{SITENAME}} का प्रयोग जारी रख सकते हैं, या उसी या किसी और सदस्य के तौर पर <span class='plainlinks'>[$1 फिर से सत्रारंभ]</span> कर सकते हैं।
 ध्यान दें कि जब तक आप अपनी ब्राउज़र कैशे खाली नहीं करते हैं, कुछ पृष्ठ अब भी ऐसे दिख सकते हैं जैसे कि आपका सत्र अभी भी चल रहा हो।",
-'welcomecreation' => '== आपका स्वागत है, $1 ! ==
-आपका खाता बनाया जा चुका है। अपनी [[Special:Preferences|{{SITENAME}} वरीयताएँ]] परिवर्तित करना न भूलिएगा।',
 'yourname' => 'सदस्यनाम:',
 'yourpassword' => 'कूटशब्द:',
 'yourpasswordagain' => 'कूटशब्द दुबारा लिखें:',
@@ -952,6 +951,9 @@ $2
 यह पहले से मौजूद है।',
 'defaultmessagetext' => 'संदेश का डिफ़ॉल्ट पाठ',
 
+# Content models
+'content-model-javascript' => 'जावास्क्रिप्ट',
+
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''चेतावनी:''' इस पृष्ठ पर बहुत अधिक संख्या में कीमती पार्सर फ़ंक्शनों का प्रयोग किया गया है।
 
@@ -1190,7 +1192,7 @@ $1",
 'search-result-size' => '$1 ({{PLURAL:$2|$2 शब्द}})',
 'search-result-category-size' => '{{PLURAL:$1|$1 सदस्य}} ({{PLURAL:$2|$2 उपश्रेणी|$2 उपश्रेणियाँ}}, {{PLURAL:$3|$3 सञ्चिका|$3 सञ्चिकाएँ}})',
 'search-result-score' => 'संबद्ध: $1%',
-'search-redirect' => '(पुनर्निर्देश $1)',
+'search-redirect' => '($1 से पुनर्निर्देशित)',
 'search-section' => '(अनुभाग $1)',
 'search-suggest' => 'कहीं आपका मतलब $1 तो नहीं था?',
 'search-interwiki-caption' => 'अन्य प्रकल्प',
@@ -1230,7 +1232,7 @@ $1",
 
 # Preferences page
 'preferences' => 'मेरी वरीयताएँ',
-'mypreferences' => 'मà¥\87रà¥\80 à¤µà¤°à¥\80यताà¤\8fà¤\81',
+'mypreferences' => 'मà¥\87रà¥\80 à¤ªà¤¸à¤\82द',
 'prefs-edits' => 'संपादन संख्या:',
 'prefsnologin' => 'लॉग इन नहीं किया है',
 'prefsnologintext' => 'वरीयताएँ बदलने के लिए आपको <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} सत्रारंभ]</span> करना होगा।',
@@ -1965,6 +1967,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|बाइट|बाइट}}',
 'ncategories' => '{{PLURAL:$1|एक श्रेणी|$1 श्रेणियाँ}}',
+'ninterwikis' => '$1 अंतरविकी {{PLURAL:$1|कड़ी|कड़ियाँ}}',
 'nlinks' => '$1 {{PLURAL:$1|कड़ी|कड़ियाँ}}',
 'nmembers' => '$1 {{PLURAL:$1|सदस्य}}',
 'nrevisions' => '$1 {{PLURAL:$1|अवतरण}}',
@@ -2047,6 +2050,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 आप और बारीकी के लिए लॉग का प्रकार, सदस्य नाम (लघु-दीर्घ-अक्षर संवेदी), या प्रभावित पृष्ठ (लघु-दीर्घ-अक्षर संवेदी) चुन सकते हैं।',
 'logempty' => 'लॉग में ऐसी प्रविष्टि नहीं है।',
 'log-title-wildcard' => 'इस पाठ से शुरू होने वाले शीर्षक खोजें',
+'showhideselectedlogentries' => 'चयनित लॉग प्रविष्टियाँ दिखाएँ/छुपाएँ',
 
 # Special:AllPages
 'allpages' => 'सभी पृष्ठ',
@@ -2134,6 +2138,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'mailnologin' => 'पाने वाले का एड्रेस दिया नहीं',
 'mailnologintext' => 'अन्य सदस्यों को इ-मेल भेजने के लिये [[Special:UserLogin|लॉग इन]] करना आवश्यक है और आपकी [[Special:Preferences|वरीयताओं]] में वैध ई-मेल पता होना आवश्यक है।',
 'emailuser' => 'इस सदस्य को ई-मेल भेजें',
+'emailuser-title-target' => 'इस {{GENDER:$1|सदस्य|सदस्या}} को ई-मेल करें।',
+'emailuser-title-notarget' => 'सदस्य को ई-मेल करें',
 'emailpage' => 'सदस्य को ई-मेल करें',
 'emailpagetext' => 'नीचे दिए पर्चे को जरिए आप इस सदस्य को ई-मेल भेज सकते हैं।
 आपने जो पता [[Special:Preferences|अपनी सदस्य वरीयताओं]] में दिया था वह इस ई-मेल के "भेजने वाले" के तौर पर आएगा, अतः प्राप्तकर्ता आपको सीधे जवाब दे सकेंगे।',
@@ -2205,11 +2211,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 
 'enotif_mailer' => '{{SITENAME}} सूचना इ-मेल कर्ता',
 'enotif_reset' => 'सभी पृष्ठ देखे हुए दर्शाएँ',
-'enotif_newpagetext' => 'यह नया पृष्ठ है।',
 'enotif_impersonal_salutation' => '{{SITENAME}} सदस्य',
-'changed' => 'परिवर्तित किया',
-'created' => 'बनाया',
-'enotif_subject' => '{{SITENAME}} पृष्ठ $PAGETITLE $PAGEEDITOR ने $CHANGEDORCREATED',
 'enotif_lastvisited' => 'आपकी आखिरी भेंट के बाद हुए बदलाव देखने के लिये $1 देखें।',
 'enotif_lastdiff' => 'इस बदलाव को देखने के लिये $1 देखें।',
 'enotif_anon_editor' => 'अनामक सदस्य $1',
index e71cc73..8e5f5bd 100644 (file)
@@ -442,9 +442,6 @@ Jon administrator iske lock karis hae, koi kaaran nai diis hae: "$3"',
 
 Aap bina naam ke {{SITENAME}} ke kaam me lae sakta hai, nai to aap wahi sadasya ke naam se nai to duusra sadasya ke naam se <span class='plainlinks'>[$1 log in kare sakta hai]</span>.
 Yaad rakhna ki kuch panna wahi rakam se dekhai jaise ki aap log in bhaya hai, jab tak ki browser ke cache safaa nai hoe jaae.",
-'welcomecreation' => '== Swagat, $1! ==
-Aap ke account banae dewa gais hai.
-Aapan [[Special:Preferences|{{SITENAME}} pasand]]  ke badle nai bhulna.',
 'yourname' => 'Username:',
 'yourpassword' => 'Password:',
 'yourpasswordagain' => 'Password fir se type karo:',
@@ -2032,11 +2029,7 @@ Ii panna ke aage ke badlao aur usse jurra baat waala panna ki suchi hian pe hae,
 
 'enotif_mailer' => '{{SITENAME}} Suchna de waala Mailer',
 'enotif_reset' => 'Sab panna ke visited mark karo',
-'enotif_newpagetext' => 'Ii ek nawaa panna hai.',
 'enotif_impersonal_salutation' => '{{SITENAME}} sadasya',
-'changed' => 'badal dewa gais hai',
-'created' => 'banae dewa gais hai',
-'enotif_subject' => '$PAGEEDITOR {{SITENAME}} panna $PAGETITLE ke badal $CHANGEDORCREATED diis hai',
 'enotif_lastvisited' => 'Aap ke pichhla visit ke baad ke badlao ke khatir $1 ke dekho.',
 'enotif_lastdiff' => 'Ii badlao ke dekhe ke khatir $1 ke dekho.',
 'enotif_anon_editor' => 'bina naam ke sadasya $1',
index 8b114e4..f5da857 100644 (file)
@@ -711,10 +711,6 @@ $2',
 
 Možete nastaviti s korištenjem {{SITENAME}} neprijavljeni, ili se možete ponovo <span class='plainlinks'>[$1 prijaviti]</span> pod istim ili drugim imenom.
 Neke se stranice mogu prikazivati kao da ste još uvijek prijavljeni, sve dok ne očistite međuspremnik svog preglednika.",
-'welcomecreation' => '== Dobrodošli, $1! ==
-Vaš je suradnički račun otvoren.
-
-Ne zaboravite prilagoditi [[Special:Preferences|{{SITENAME}} postavke]].',
 'yourname' => 'Suradničko ime',
 'yourpassword' => 'Lozinka:',
 'yourpasswordagain' => 'Ponovno upišite lozinku',
@@ -2180,6 +2176,7 @@ Dodatne informacije o pojedinim pravim se mogu pronaći [[{{MediaWiki:Listgroupr
 i imati valjanu adresu e-pošte u svojim [[Special:Preferences|postavkama]]
 da bi mogli slati poštu drugim suradnicima.',
 'emailuser' => 'Pošalji e-poštu ovom suradniku',
+'emailuser-title-target' => 'Pošalji poruku {{GENDER:$1|suradniku|suradnici|suradniku}}',
 'emailuser-title-notarget' => 'Pošalji e-poštu suradniku',
 'emailpage' => 'Pošalji e-poštu suradniku',
 'emailpagetext' => 'Možete koristiti ovaj obrazac za slanje elektroničke pošte ovom suradniku.
@@ -2251,11 +2248,7 @@ Promjene na toj stranici i njenoj stranici za razgovor bit će prikazane na popi
 
 'enotif_mailer' => '{{SITENAME}} - izvješća o promjenama',
 'enotif_reset' => 'Označi sve stranice kao već posjećene',
-'enotif_newpagetext' => 'Ovo je nova stranica.',
 'enotif_impersonal_salutation' => '{{SITENAME}} suradnik',
-'changed' => 'promijenio',
-'created' => 'stvorio',
-'enotif_subject' => '{{SITENAME}}: Stranicu $PAGETITLE je $CHANGEDORCREATED suradnik $PAGEEDITOR',
 'enotif_lastvisited' => 'Pogledaj $1 za promjene od zadnjeg posjeta.',
 'enotif_lastdiff' => 'Pogledajte $1 kako biste mogli vidjeti tu izmjenu.',
 'enotif_anon_editor' => 'neprijavljeni suradnik $1',
index 1667193..dab38c8 100644 (file)
@@ -319,6 +319,7 @@ $messages = array(
 'namespaces' => 'Mjenowe rumy',
 'variants' => 'Warianty',
 
+'navigation-heading' => 'Nawigaciski meni',
 'errorpagetitle' => 'Zmylk',
 'returnto' => 'Wróćo k stronje $1.',
 'tagline' => 'z {{GRAMMAR:genitiw|{{SITENAME}}}}',
@@ -558,9 +559,9 @@ Administrator, kiž je jón zawrěł, je tule přičinu podał: "$3".',
 
 Móžeš {{GRAMMAR:akuzatiw|{{SITENAME}}}} nětko anonymnje dale wužiwać abo so ze samsnym abo druhim wužiwarskim mjenom <span class='plainlinks'>[$1 zaso přizjewić]</span>.
 Wobkedźbuj, zo so někotre strony dale jewja, kaž by hišće přizjewjeny był, doniž pufrowak swojeho wobhladowaka njewuprózdnješ.",
-'welcomecreation' => '== Witaj, $1! ==
-
-Twoje konto bu wutworjene. Njezabudź swoje nastajenja za [[Special:Preferences|{{GRAMMAR:akuzatiw|{{SITENAME}}}}]] změnić.',
+'welcomeuser' => 'Witaj $1',
+'welcomecreation-msg' => 'Twoje konto bu wutworjene.
+Njezabudź swoje [[Special:Preferences|nastajenja za {{GRAMMAR:akuzatiw|{{SITENAME}}}}]] změnić.',
 'yourname' => 'Wužiwarske mjeno:',
 'yourpassword' => 'Hesło:',
 'yourpasswordagain' => 'Hesło znowa zapodać:',
@@ -1662,6 +1663,7 @@ $1',
 'backend-fail-notsame' => 'Dataja, kotraž identiska njeje, hižo pola $1 eksistuje.',
 'backend-fail-invalidpath' => '$1 płaćiwy pućik za składowanje njeje.',
 'backend-fail-delete' => 'Dataja $1 njeda so zhašeć.',
+'backend-fail-describe' => 'Metadaty za dataju "$1" njedadźa so změnić.',
 'backend-fail-alreadyexists' => 'Dataja $1 hižo eksistuje.',
 'backend-fail-store' => 'Dataja $1 njeda so pod $2 składować',
 'backend-fail-copy' => 'Dataja $1 njeda so do $2 kopěrować',
@@ -2158,20 +2160,24 @@ Jeli chceš stronu pozdźišo ze swojich wobkedźbowankow wotstronić, klikń na
 
 'enotif_mailer' => '{{SITENAME}} E-mejlowe zdźělenje',
 'enotif_reset' => 'Wšě strony jako wopytane woznamjenić',
-'enotif_newpagetext' => 'To je nowa strona.',
 'enotif_impersonal_salutation' => 'wužiwar {{GRAMMAR:genitiw|{{SITENAME}}}}',
-'changed' => 'změnjena',
-'created' => 'wutworjena',
-'enotif_subject' => '[{{SITENAME}}] Strona „$PAGETITLE” bu přez wužiwarja $PAGEEDITOR $CHANGEDORCREATED.',
+'enotif_subject_deleted' => 'Strona {{GRAMMAR:genitiw|{{SITENAME}}}} $1 je so wot {{GENDER:$2|$2}} zhašała',
+'enotif_subject_created' => 'Strona {{GRAMMAR:genitiw|{{SITENAME}}}} $1 je so wot {{GENDER:$2|$2}} wutworiła',
+'enotif_subject_moved' => 'Strona {{GRAMMAR:genitiw|{{SITENAME}}}} $1 je so wot {{GENDER:$2|$2}} přesunyła',
+'enotif_subject_restored' => 'Strona {{GRAMMAR:genitiw|{{SITENAME}}}} $1 je so wot {{GENDER:$2|$2}} wobnowiła',
+'enotif_subject_changed' => 'Strona {{GRAMMAR:genitiw|{{SITENAME}}}} $1 je so wot {{GENDER:$2|$2}} změniła',
+'enotif_body_intro_deleted' => 'Strona {{GRAMMAR:genitiw|{{SITENAME}}}} $1 je so na $PAGEEDITDATE wot {{GENDER:$1|$2}} zhašała, hlej $3 za aktualnu wersiju',
+'enotif_body_intro_created' => 'Strona {{GRAMMAR:genitiw|{{SITENAME}}}} $1 je so na $PAGEEDITDATE wot {{GENDER:$2|$2}} wutworiła, hlej $3 za aktualnu wersiju',
+'enotif_body_intro_moved' => 'Strona {{GRAMMAR:genitiw|{{SITENAME}}}} $1 je so na $PAGEEDITDATE wot {{GENDER:$2|$2}} přesunyła, hlej $3 za aktualnu wersiju',
+'enotif_body_intro_restored' => 'Strona {{GRAMMAR:genitiw|{{SITENAME}}}} $1 je so na $PAGEEDITDATE wot {{GENDER:$2|$2}} wobnowiła, hlej $3 za aktualnu wersiju',
+'enotif_body_intro_changed' => 'Strona {{GRAMMAR:genitiw|{{SITENAME}}}} $1 je so na $PAGEEDITDATE wot {{GENDER:$2|$2}} změniła, hlej $3 za aktualnu wersiju',
 'enotif_lastvisited' => 'Hlej $1 za wšě změny po twojim poslednim wopyće.',
 'enotif_lastdiff' => 'Hlej $1 za tutu změnu.',
 'enotif_anon_editor' => 'anonymny wužiwar $1',
 'enotif_body' => 'Luby $WATCHINGUSERNAME,
 
+$PAGEINTRO $NEWPAGE
 
-Strona we {{GRAMMAR:lokatiw|{{SITENAME}}}} z mjenom $PAGETITLE bu dnja $PAGEEDITDATE wot $PAGEEDITOR $CHANGEDORCREATED, hlej $PAGETITLE_URL za aktualnu wersiju.
-
-$NEWPAGE
 
 Zjeće wobdźěłarja: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2182,7 +2188,7 @@ wiki: $PAGEEDITOR_WIKI
 Njebudu žane druhe zdźělenki w padźe dalšich změnow, chibazo wopytaš tutu stronu.
 Móžeš tež zdźělenske marki za wšě swoje wobkedźbowane strony we swojich wobkedźbowankach wróćo stajić.
 
-               Twój přećelny zdźělenski system {{GRAMMAR:genitiw|{{SITENAME}}}}
+Twój přećelny zdźělenski system {{GRAMMAR:genitiw|{{SITENAME}}}}
 
 --
 Zo by swoje nastajenja za e-mejlowe zdźělenja změnił, wopytaj
@@ -2917,6 +2923,8 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
 'markedaspatrollederror' => 'Njemóžno jako přepruwowanu woznamjenić.',
 'markedaspatrollederrortext' => 'Dyrbiš wersiju podać, kotraž so ma jako přepruwowana woznamjenić.',
 'markedaspatrollederror-noautopatrol' => 'Njesměš swoje změny jako přepruwowane woznamjenjeć.',
+'markedaspatrollednotify' => 'Tuta změna do $1 je so jako dohladowana markěrowała.',
+'markedaspatrollederrornotify' => 'Markěrowanje jako dohladowane je so njeporadźiło.',
 
 # Patrol log
 'patrol-log-page' => 'Protokol přepruwowanjow',
@@ -2980,6 +2988,7 @@ $1',
 'hours' => '{{PLURAL:$1|$1 hodźinu|$1 hodźinomaj|$1 hodźinami|$1 hodźinami}}',
 'days' => '{{PLURAL:$1|$1 dnjom|$1 dnjomaj|$1 dnjemi|$1 dnjemi}}',
 'ago' => 'před $1',
+'just-now' => 'runje',
 
 # Bad image list
 'bad_image_list' => 'Format:
@@ -3720,8 +3729,8 @@ Wobrazy so połnym rozeznaću pokazuja, druhe datajowe typy so ze zwjazanym prog
 'logentry-move-move_redir-noredirect' => '$1 přesuny stronu $3 do $4 přepisujo dalesposrědkowanje, bjeztoho zo by dalesposrědkowanje wutworił',
 'logentry-patrol-patrol' => '$1 markěrowaše wersiju $4 strony $3 jako skontrolowanu',
 'logentry-patrol-patrol-auto' => '$1 awtomatisce markěrowaše wersiju $4 strony $3 jako skontrolowanu',
-'logentry-newusers-newusers' => '$1 je wužiwarske konto załožił',
-'logentry-newusers-create' => '$1 je wužiwarske konto załožił',
+'logentry-newusers-newusers' => 'Wužiwarske konto $1 je so załožiło',
+'logentry-newusers-create' => 'Wužiwarske konto $1 je so załožiło',
 'logentry-newusers-create2' => '$1 załoži wužiwarske konto $3',
 'logentry-newusers-autocreate' => 'Konto $1 je so awtomatisce załožiło',
 'newuserlog-byemail' => 'Hesło z e-mejlku pósłane',
@@ -3799,5 +3808,5 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 'duration-millennia' => '$1 {{PLURAL:$1|lěttysac|lěttysacaj|lěttysacy|lěttysacow}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'diskusija',
+'svg-long-error' => 'Njepłaćiwa SVG-dataja: $1',
 );
index 9bbf3fa..2f6b7a3 100644 (file)
@@ -445,7 +445,7 @@ $messages = array(
 'cancel' => 'Mégse',
 'moredotdotdot' => 'Tovább…',
 'mypage' => 'Lapom',
-'mytalk' => 'Vitalapom',
+'mytalk' => 'Vitalap',
 'anontalk' => 'Az IP-címhez tartozó vitalap',
 'navigation' => 'Navigáció',
 'and' => '&#32;és',
@@ -716,9 +716,6 @@ A lezárást végrehajtó rendszergazda az alábbi indoklást adta meg: "$3".',
 
 Folytathatod névtelenül  a(z) {{SITENAME}} használatát, vagy <span class='plainlinks'>[$1 ismét bejelentkezhetsz]</span> ugyanezzel, vagy egy másik névvel.
 Lehetséges, hogy néhány oldalon továbbra is azt látod, be vagy jelentkezve, mindaddig, amíg nem üríted a böngésződ gyorsítótárát.",
-'welcomecreation' => '== Köszöntünk, $1! ==
-A felhasználói fiókodat létrehoztuk.
-Ne felejtsd el átnézni a [[Special:Preferences|személyes beállításaidat]].',
 'yourname' => 'Szerkesztőneved:',
 'yourpassword' => 'Jelszavad:',
 'yourpasswordagain' => 'Jelszavad ismét:',
@@ -2274,7 +2271,7 @@ Feladóként a [[Special:Preferences|beállításaid]]nál megadott e-mail-címe
 
 # Watchlist
 'watchlist' => 'Figyelőlistám',
-'mywatchlist' => 'Figyelőlistám',
+'mywatchlist' => 'Figyelőlista',
 'watchlistfor2' => '$1 részére $2',
 'nowatchlist' => 'Nincs lap a figyelőlistádon.',
 'watchlistanontext' => 'A figyelőlistád megtekintéséhez és szerkesztéséhez $1.',
@@ -2310,11 +2307,7 @@ Ezután minden, a lapon vagy annak vitalapján történő változást ott fogsz
 
 'enotif_mailer' => '{{SITENAME}} Értesítéspostázó',
 'enotif_reset' => 'Az összes lap megjelölése felkeresettként',
-'enotif_newpagetext' => 'Ez egy új lap.',
 'enotif_impersonal_salutation' => '{{SITENAME}} felhasználó',
-'changed' => 'megváltoztatta',
-'created' => 'létrehozta',
-'enotif_subject' => 'A(z) {{SITENAME}} $PAGETITLE című oldalát $CHANGEDORCREATED $PAGEEDITOR',
 'enotif_lastvisited' => 'Lásd a $1 lapot az utolsó látogatásod óta történt változtatásokért.',
 'enotif_lastdiff' => 'Lásd a $1 lapot ezen változtatás megtekintéséhez.',
 'enotif_anon_editor' => '$1 névtelen felhasználó',
@@ -2535,7 +2528,7 @@ $1',
 # Contributions
 'contributions' => 'Szerkesztő közreműködései',
 'contributions-title' => '$1 közreműködései',
-'mycontris' => 'Közreműködéseim',
+'mycontris' => 'Közreműködések',
 'contribsub2' => '$1 ($2)',
 'nocontribs' => 'Nem található a feltételeknek megfelelő változtatás.',
 'uctop' => ' (utolsó)',
@@ -3078,6 +3071,7 @@ Ez valószínűleg egy olyan link miatt van, ami egy feketelistán lévő oldalr
 'pageinfo-default-sort' => 'Alapértelmezett rendezési kulcs',
 'pageinfo-length' => 'Lap hossza (bájtokban)',
 'pageinfo-article-id' => 'Lapazonosító',
+'pageinfo-language' => 'Laptartalom nyelve',
 'pageinfo-robot-policy' => 'Kereső motor státusz',
 'pageinfo-robot-index' => 'Indexelhető',
 'pageinfo-robot-noindex' => 'Nem indexelhető',
@@ -3097,6 +3091,12 @@ Ez valószínűleg egy olyan link miatt van, ami egy feketelistán lévő oldalr
 'pageinfo-magic-words' => 'Varázs{{PLURAL:$1|szó|szavak}} ($1)',
 'pageinfo-hidden-categories' => 'Rejtett {{PLURAL:$1|kategória|kategóriák}} ($1)',
 'pageinfo-templates' => 'Felhasznált {{PLURAL:$1|sablon|sablonok}} ($1)',
+'pageinfo-toolboxlink' => 'Lapinformációk',
+'pageinfo-redirectsto' => 'Átirányítás ide',
+'pageinfo-redirectsto-info' => 'infó',
+'pageinfo-contentpage' => 'Tartalmi lapnak számít',
+'pageinfo-contentpage-yes' => 'Igen',
+'pageinfo-protect-cascading-yes' => 'Igen',
 
 # Skin names
 'skinname-standard' => 'Klasszikus',
@@ -3118,6 +3118,8 @@ Ez valószínűleg egy olyan link miatt van, ami egy feketelistán lévő oldalr
 'markedaspatrollederror' => 'Nem lehet ellenőrzöttnek jelölni',
 'markedaspatrollederrortext' => 'Meg kell adnod egy ellenőrzöttként megjelölt változatot.',
 'markedaspatrollederror-noautopatrol' => 'A saját változtatásaid megjelölése ellenőrzöttként nem engedélyezett.',
+'markedaspatrollednotify' => '$1 változtatása ellenőrzöttnek lett jelölve.',
+'markedaspatrollederrornotify' => 'Nem sikerült ellenőrzöttnek jelölni.',
 
 # Patrol log
 'patrol-log-page' => 'Ellenőrzési napló (patrol)',
index a082bc6..4fa6d2b 100644 (file)
@@ -14,6 +14,7 @@
  * @author Teak
  * @author Togaed
  * @author Vacio
+ * @author Vadgt
  * @author Xelgen
  * @author Համլետ
  * @author לערי ריינהארט
@@ -279,7 +280,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Թաքցնել պարեկված խմբագրումները վերջին փոփոխությունների ցանկից',
 'tog-newpageshidepatrolled' => 'Թաքցնել պարեկված էջերը նոր էջերի ցանկից',
 'tog-extendwatchlist' => 'Ընդարձակել հսկացանկը՝ ցույց տալով բոլոր փոփոխությունները, այլ ոչ միայն վերջինները',
-'tog-usenewrc' => 'Օգտագործել վերջին փոփոխությունների լավացված ցանկ (պահանջում է JavaScript)',
+'tog-usenewrc' => 'Խմբավորել փոփոխությունները Վերջին փոփոխություններում և հսկացանկում (պահանջում է JavaScript)',
 'tog-numberheadings' => 'Ինքնաթվագրել վերնագրերը',
 'tog-showtoolbar' => 'Ցույց տալ խմբագրումների գործիքների վահանակը (JavaScript)',
 'tog-editondblclick' => 'Խմբագրել էջերը կրկնակի մատնահարմամբ (JavaScript)',
@@ -287,9 +288,9 @@ $messages = array(
 'tog-editsectiononrightclick' => 'Խմբագրել բաժինները վերնագրի աջ մատնահարմամբ (JavaScript)',
 'tog-showtoc' => 'Ցույց տալ բովանդակությունը (3  կամ ավել վերնագրեր ունեցող էջերի համար)',
 'tog-rememberpassword' => 'Հիշել իմ մուտքագրված տվյալներն այս համակարգչում ($1 {{PLURAL:$1|օրից}} ոչ ավել ժամկետով)',
-'tog-watchcreations' => 'Ավելացնել իմ ստեղծած էջերը հսկացանկին',
-'tog-watchdefault' => 'Ավելացնել իմ խմբագրած էջերը հսկացանկին',
-'tog-watchmoves' => 'Ավելացնել իմ վերնավանած էջերը հսկացանկին',
+'tog-watchcreations' => 'Ավելացնել իմ ստեղծած էջերը և բեռնած նիշքերը հսկացանկին',
+'tog-watchdefault' => 'Ավելացնել իմ խմբագրած էջերը և նիշքերը հսկացանկին',
+'tog-watchmoves' => 'Ավելացնել իմ վերնավանած էջերը և նիշքերը հսկացանկին',
 'tog-watchdeletion' => 'Ավելացնել իմ ջնջած էջերը հսկացանկին',
 'tog-minordefault' => 'Նշել խմբագրումները որպես չնչին ըստ լռության',
 'tog-previewontop' => 'Ցույց տալ նախադիտումը խմբագրման դաշտից առաջ',
@@ -406,7 +407,7 @@ $messages = array(
 'cancel' => 'Բեկանել',
 'moredotdotdot' => 'Ավելին...',
 'mypage' => 'Իմ էջը',
-'mytalk' => 'Իմ քննարկումները',
+'mytalk' => 'Քննարկումներ',
 'anontalk' => 'Քննարկում այս IP-հասցեի համար',
 'navigation' => 'Շրջել կայքում',
 'and' => '&#32;և',
@@ -530,7 +531,7 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => 'Ստացված է «$1» էջից',
 'youhavenewmessages' => 'Դուք ունեք $1 ($2)։',
-'newmessageslink' => 'Õ¶Õ¸Ö\80 Õ¸Ö\82Õ²Õ¥Ö\80Õ±Õ¶Õ¥Ö\80',
+'newmessageslink' => 'Õ\86Õ¸Ö\80 Õ°Õ¡Õ²Õ¸Ö\80Õ¤Õ¡Õ£Ö\80Õ¸Ö\82Õ©ÕµÕ¸Ö\82Õ¶',
 'newmessagesdifflink' => 'վերջին փոփոխությունը',
 'newmessageslinkplural' => '{{PLURAL:$1|նոր հաղորդագրություն|նոր հաղորդագրություններ}}',
 'newmessagesdifflinkplural' => '$1 {{PLURAL:$1|փոփոխում|փոփոխումներ}}',
@@ -567,7 +568,7 @@ $1',
 'nstab-special' => 'Սպասարկող էջ',
 'nstab-project' => 'Նախագծի էջ',
 'nstab-image' => 'Նիշք',
-'nstab-mediawiki' => 'Õ\88Ö\82Õ²Õ¥Ö\80Õ±',
+'nstab-mediawiki' => 'Õ\80Õ¡Õ²Õ¸Ö\80Õ¤Õ¡Õ£Ö\80Õ¸Ö\82Õ©ÕµÕ¸Ö\82Õ¶',
 'nstab-template' => 'Կաղապար',
 'nstab-help' => 'Օգնության էջ',
 'nstab-category' => 'Կատեգորիա',
@@ -629,7 +630,7 @@ $1',
 'cannotdelete-title' => 'Հնարավոր չէ ջնջել $1 էջը',
 'badtitle' => 'Անընդունելի անվանում',
 'badtitletext' => 'Հարցված էջի անվանումը անընդունելի է, դատարկ է կամ սխալ միջ-լեզվական կամ ինտերվիքի անվանում է։ Հնարավոր է, որ այն պարունակում է անթույլատրելի սիմվոլներ։',
-'perfcached' => 'Հետևյալ տվյալները վերցված են քեշից և հնարավոր է չարտացոլեն վերջին փոփոխությունները։ A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
+'perfcached' => 'Հետևյալ տվյալները վերցված են քեշից և հնարավոր է չարտացոլեն վերջին փոփոխությունները։ Առավելագույն {{PLURAL:$1|արդյունք|$1 արդյունք}} է հասանելի քեշում։',
 'perfcachedts' => 'Հետևյալ տվյալները վերցված են քեշից և վերջին անգամ թարմացվել են $1։ A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Այս էջի փոփոխությունները ներկայումս արգելված են։ Այստեղի տվյալները այժմ չեն թարմացվի։',
 'wrong_wfQuery_params' => 'Անթույլատրելի պարամետրեր wfQuery() ֆունկցիայի համար<br />
@@ -666,9 +667,7 @@ $2',
 'logouttext' => "'''Դուք դուրս եկաք համակարգից։'''
 
 Դուք կարող եք շարունակել օգտագործել {{SITENAME}} կայքը անանուն, կամ <span class='plainlinks'>[$1 կրկին մուտք գործել համակարգ]</span> նույն կամ մեկ այլ մասնակցի անվամբ։ Ի նկատի ունեցեք, որ որոշ էջեր կարող են ցուցադրվել այնպես՝ ինչպես եթե դեռ համակարգում լինեիք մինչև որ չջնջեք ձեր զննարկիչի հիշապահեստը։",
-'welcomecreation' => '== Բարի՛ գալուստ, $1 ==
-Ձեր հաշիվը ստեղծված է։
-Չմոռանաք անձնավորել ձեր [[Special:Preferences|նախընտրությունները]]։',
+'welcomeuser' => 'Բարի գալո՜ւստ, $1',
 'yourname' => 'Մասնակցի անուն.',
 'yourpassword' => 'Գաղտնաբառ.',
 'yourpasswordagain' => 'Կրկնեք գաղտնաբառը.',
@@ -676,17 +675,17 @@ $2',
 'yourdomainname' => 'Ձեր դոմենը.',
 'password-change-forbidden' => 'Այս վիքիում չեք կարող փոխել գաղտնաբառ։',
 'externaldberror' => 'Տեղի է ունեցել վավերացման արտաքին տվյալների բազայի սխալ, կամ դուք չունեք բավարար իրավունքներ ձեր արտաքին հաշվի փոփոխման համար։',
-'login' => 'Մտնել',
+'login' => 'Մտնել համակարգ',
 'nav-login-createaccount' => 'Մտնել / Գրանցվել',
 'loginprompt' => '{{SITENAME}} մուտք գործելու համար հարկավոր է քուքիները թույլատրել։',
 'userlogin' => 'Մտնել / Գրանցվել',
 'userloginnocreate' => 'Մտնել',
-'logout' => 'ÔµÕ¬Õ¶Õ¥Õ¬',
+'logout' => 'Ô´Õ¸Ö\82Ö\80Õ½ Õ£Õ¡Õ¬ Õ°Õ¡Õ´Õ¡Õ¯Õ¡Ö\80Õ£Õ«Ö\81',
 'userlogout' => 'Ելնել',
 'notloggedin' => 'Դուք չեք մտել համակարգ',
 'nologin' => "Դեռևս չե՞ք գրանցվել։ '''$1'''։",
 'nologinlink' => 'Ստեղծեք մասնակցային հաշիվ',
-'createaccount' => 'Õ\8dÕ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¶Õ¸Ö\80 Õ´Õ¡Õ½Õ¶Õ¡Õ¯Ö\81Õ¡ÕµÕ«Õ¶ Õ°Õ¡Õ·Õ«Õ¾',
+'createaccount' => 'Ստեղծել նոր հաշիվ',
 'gotaccount' => "Դուք արդեն գրանցվա՞ծ եք։ '''$1'''։",
 'gotaccountlink' => 'Մուտք գործեք համակարգ',
 'userlogin-resetlink' => 'Մոռացե՞լ եք Ձեր լոգին տվյալները։',
@@ -771,8 +770,12 @@ $2',
 'resetpass-temp-password' => 'Ժամանակավոր գաղտնաբառ.',
 
 # Special:PasswordReset
+'passwordreset' => 'Վերականգնել գաղտնաբառը',
+'passwordreset-text' => 'Լրացրեք ձևը՝ էլ-փոստով ձեր տվյալների մասին հիշեցում ստանալու համար։',
 'passwordreset-legend' => 'Վերականգնել գաղտնաբառը',
+'passwordreset-disabled' => 'Գաղտնաբառի վերականգնումը այս վիքիում թույլատրված չէ։',
 'passwordreset-username' => 'Մասնակցի անուն.',
+'passwordreset-email' => 'Էլ-փոստի հասցեն՝',
 'passwordreset-emailelement' => 'Մասնակցային անուն. $1
 Ժամանակավոր գաղտնաբառ. $2',
 'passwordreset-emailsent' => 'Ուղարկվեց հիշեցնող էլ․ նամակ։',
@@ -785,7 +788,7 @@ $2',
 'changeemail-oldemail' => 'Ներկա էլ․ հասցե․',
 'changeemail-newemail' => 'Նոր էլ․ հասցե․',
 'changeemail-none' => '(ոչ մի)',
-'changeemail-submit' => 'Խմբագրել էլ․ հասցեն',
+'changeemail-submit' => 'Փոխել էլ․ հասցեն',
 'changeemail-cancel' => 'Չեղարկել',
 
 # Edit page toolbar
@@ -835,7 +838,7 @@ $2',
 * Արգելափակման մարում՝ $6
 * Արգելափակվել է՝ $7
 
-Ô´Õ¸Ö\82Ö\84 Õ¯Õ¡Ö\80Õ¸Õ² Õ¥Ö\84 Õ¯Õ¡ÕºÕ¶Õ¾Õ¥Õ¬ $1 Õ´Õ¡Õ½Õ¶Õ¡Õ¯Ö\81Õ« Õ¯Õ¡Õ´ Õ´Õ¥Õ¯ Õ¡ÕµÕ¬ [[{{MediaWiki:Grouppage-sysop}}|Õ¡Õ¤Õ´Õ«Õ¶Õ«Õ½Õ¿Ö\80Õ¡Õ¿Õ¸Ö\80Õ«]] Õ°Õ¥Õ¿Õ\9d Õ±Õ¥Ö\80 Õ¡Ö\80Õ£Õ¥Õ¬Õ¡Ö\83Õ¡Õ¯Õ¸Ö\82Õ´Õ¨ Ö\84Õ¶Õ¶Õ¡Ö\80Õ¯Õ¥Õ¬Õ¸Ö\82 Õ¶ÕºÕ¡Õ¿Õ¡Õ¯Õ¸Õ¾։
+Ô´Õ¸Ö\82Ö\84 Õ¯Õ¡Ö\80Õ¸Õ² Õ¥Ö\84 Õ¯Õ¡ÕºÕ¾Õ¥Õ¬ $1 Õ´Õ¡Õ½Õ¶Õ¡Õ¯Ö\81Õ« Õ¯Õ¡Õ´ Õ´Õ¥Õ¯ Õ¡ÕµÕ¬ [[{{MediaWiki:Grouppage-sysop}}|Õ¡Õ¤Õ´Õ«Õ¶Õ«Õ½Õ¿Ö\80Õ¡Õ¿Õ¸Ö\80Õ«]] Õ°Õ¥Õ¿Õ\9d Õ±Õ¥Ö\80 Õ¡Ö\80Õ£Õ¥Õ¬Õ¡Ö\83Õ¡Õ¯Õ¸Ö\82Õ´Õ¨ Ö\84Õ¶Õ¶Õ¡Ö\80Õ¯Õ¥Õ¬Õ¸Ö\82 Õ¶ÕºÕ¡Õ¿Õ¡Õ¯Õ¸Õ¾Ö\89 Ô´Õ¡ Õ¶Õ¡Ö\87 Õ°Õ¶Õ¡Ö\80Õ¡Õ¾Õ¸Ö\80 Õ§ Õ¡Õ¶Õ¥Õ¬ Õ±Õ¥Ö\80 Ö\84Õ¶Õ¶Õ¡Ö\80Õ¯Õ´Õ¡Õ¶ Õ§Õ»Õ¸Ö\82Õ´։
 Դուք չեք կարող օգտվել` «էլ-նամակ ուղարկել այս մասնակցին» հնարավորությունից, քանի դեռ ինքներդ գործող էլ-փոստի հասցե չէք  նշել ձեր [[Special:Preferences|մասնակցի նախընտրություններում]] և չեք արգելափակվել այս հնարավորւությունը օգտագործելուց։
 
 Ձեր ընթացիկ IP-հասցեն է` $3, արգելափակման իդենտիֆիկատորը՝ #$5։
@@ -849,7 +852,7 @@ $2',
 * Արգելափակման մարում՝ $6
 * Արգելափակվել է՝ $7
 
-Ô´Õ¸Ö\82Ö\84 Õ¯Õ¡Ö\80Õ¸Õ² Õ¥Ö\84 Õ¯Õ¡ÕºÕ¶Õ¾Õ¥Õ¬ $1 Õ´Õ¡Õ½Õ¶Õ¡Õ¯Ö\81Õ« Õ¯Õ¡Õ´ Õ´Õ¥Õ¯ Õ¡ÕµÕ¬ [[{{MediaWiki:Grouppage-sysop}}|Õ¡Õ¤Õ´Õ«Õ¶Õ«Õ½Õ¿Ö\80Õ¡Õ¿Õ¸Ö\80Õ«]] Õ°Õ¥Õ¿Õ\9d Õ±Õ¥Ö\80 Õ¡Ö\80Õ£Õ¥Õ¬Õ¡Ö\83Õ¡Õ¯Õ¸Ö\82Õ´Õ¨ Ö\84Õ¶Õ¶Õ¡Ö\80Õ¯Õ¥Õ¬Õ¸Ö\82 Õ¶ÕºÕ¡Õ¿Õ¡Õ¯Õ¸Õ¾Ö\89
+Դուք կարող եք կապվել $1 մասնակցի կամ մեկ այլ [[{{MediaWiki:Grouppage-sysop}}|ադմինիստրատորի]] հետ՝ ձեր արգելափակումը քննարկելու նպատակով։
 
 Դուք չեք կարող օգտվել «էլ-նամակ ուղարկել այս մասնակցին» հնարավորությունից քանի դեռ ինքներդ գործող էլ-փոստի հասցե չէք  նշել ձեր [[Special:Preferences|մասնակցի նախընտրություններում]] և չեք արգելափակվել այս հնարավորությից օգտվելուց։
 
@@ -1148,7 +1151,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 
 # Preferences page
 'preferences' => 'Նախընտրություններ',
-'mypreferences' => 'Իմ նախընտրությունները',
+'mypreferences' => 'Նախընտրություններ',
 'prefs-edits' => 'Խմբագրումների քանակը.',
 'prefsnologin' => 'Դուք չեք մտել համակարգ',
 'prefsnologintext' => 'Մասնակցային նախընտրությունները փոփոխելու համար անհրաժեշտ է <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} մտնել համակարգ]</span>։',
@@ -1239,7 +1242,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 Այս տեղեկությունը բոլորին տեսանլի է լինելու։',
 'email' => 'Էլ-փոստ',
 'prefs-help-realname' => 'Իրական անունը պարտադիր չէ, սակայն եթե դուք նշեք դա, ապա այն կօգտագործվի ձեր փոփոխությունների իրական անվանը վերագրման համար։',
-'prefs-help-email' => 'Էլեկտրոնային փոստի մուտքագրումը պարտադիր չէ, սակայն սա թույլ կտա մյուս մասնակիցներին կապնվել ձեզ հետ ձեր մասնակցի կամ մասնակցի քննարկման էջի միջոցով՝ առանց ձեր անձի կամ ձեր էլեկտրոնային հասցեի բացահայտման։',
+'prefs-help-email' => 'Էլ-փոստի հասցեն նշելը պարտադիր չէ, սակայն այն անհրաժեշտ կլինի, եթե դուք երբևէ մոռանաք ձեր գաղտնաբառը։',
 'prefs-help-email-required' => 'Էլ-փոստի հասցեն նշելը պարտադիր է։',
 'prefs-info' => 'Հիմնական տեղեկություններ',
 'prefs-i18n' => 'Միջազգայնացում',
@@ -1297,10 +1300,17 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'grouppage-suppress' => '{{ns:project}}:Հսկիչ',
 
 # Rights
-'right-edit' => 'էջերի խմբագրում',
-'right-move' => 'Տեղափոխել էջերը',
-'right-move-subpages' => 'Տեղափոխել էջերն իրենց ենթաէջերով',
+'right-read' => 'Դիտել էջեր',
+'right-edit' => 'Խմբագրել էջեր',
+'right-createtalk' => 'Ստեղծել քննարկման էջեր',
+'right-createaccount' => 'Ստեղծել նոր մասնակցային հաշիվներ',
+'right-minoredit' => 'Նշել խմբագրումը որպես ստուգված',
+'right-move' => 'Վերանվանել էջը',
+'right-move-subpages' => 'Վերանվանել էջն իր ենթաէջերով',
+'right-movefile' => 'Վերանվանել նիշքեր',
+'right-suppressredirect' => 'Էջը վերանավանելիս վերահղում չթողնել',
 'right-upload' => 'Նիշքերի բեռնում',
+'right-upload_by_url' => 'Բեռնել նիշքեր ինտերնետային հասցեից',
 'right-delete' => 'Էջերի ջնջում',
 
 # User rights log
@@ -1384,6 +1394,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'filename' => 'Նիշքի անվանում',
 'filedesc' => 'Ամփոփում',
 'fileuploadsummary' => 'Նկարագրություն՝',
+'filereuploadsummary' => 'Ֆայլի Փոփոխություները:',
 'filestatus' => 'Հեղինակային իրավունքի կարգավիճակ.',
 'filesource' => 'Աղբյուր՝',
 'uploadedfiles' => 'Բեռնված նիշքեր',
@@ -1429,7 +1440,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'upload-proto-error' => 'Սխալ պրոտոկոլ',
 'upload-proto-error-text' => 'Հեռավոր բեռնումը պահանջում է URL-հասցե, որը սկսվում է <code>http://</code> կամ <code>ftp://</code> նախածանցով։',
 'upload-file-error' => 'Ներքին սխալ',
-'upload-file-error-text' => 'Õ\8fÕ¥Õ²Õ« Õ¸Ö\82Õ¶Õ¥Ö\81Õ¡Õ¾ Õ¶Õ¥Ö\80Ö\84Õ«Õ¶ Õ½Õ­Õ¡Õ¬Õ\9d Õ½Õ¥Ö\80Õ¾Õ¥Ö\80Õ« Õ¾Ö\80Õ¡ ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯Õ¡Õ¾Õ¸Ö\80 Õ¶Õ«Õ·Ö\84 Õ½Õ¿Õ¥Õ²Õ®Õ¥Õ¬Õ«Õ½Ö\89 Ô½Õ¶Õ¤Ö\80Õ¸Ö\82Õ´ Õ¥Õ¶Ö\84 Õ¯Õ¡ÕºÕ¶Õ¾Õ¥Õ¬ Õ°Õ¡Õ´Õ¡Õ¯Õ¡Ö\80Õ£Õ¡ÕµÕ«Õ¶ [[Special:ListUsers/sysop|Õ¡Õ¤Õ´Õ«Õ¶Õ«Õ½Õ¿Ö\80Õ¡Õ¿Õ¸Ö\80Õ«]] Õ°Õ¥Õ¿Ö\89',
+'upload-file-error-text' => 'Տեղի ունեցավ ներքին սխալ՝ սերվերի վրա ժամանակավոր նիշք ստեղծելիս։ Խնդրում ենք կապվել համակարգային [[Special:ListUsers/sysop|ադմինիստրատորի]] հետ։',
 'upload-misc-error' => 'Բեռնման անհայտ սխալ',
 'upload-misc-error-text' => 'Տեղի ունեցավ անհայտ սխալ բեռնման ընթացքում։ Խնդրում ենք ստուգել URL-հասցեի ճշտությունն ու հասանելիությունը և փորձել կրկին։ Սխալի կրկնման դեպքում կապնվեք համակարգային ադմինիստրատորի հետ։',
 
@@ -1599,6 +1610,7 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'mostlinkedtemplates' => 'Կաղապարներ, որոնց շատ են հղվում',
 'mostcategories' => 'Ամենաշատ կատեգորիաներով էջեր',
 'mostimages' => 'Ամենաշատ օգտագործվող նկարներ',
+'mostinterwikis' => 'Ամենաշատ միջլեզվային հղումներով էջեր',
 'mostrevisions' => 'Ամենաշատ վերափոխումներով հոդվածներ',
 'prefixindex' => 'Բոլոր էջերը ըստ սկզբնատառի',
 'shortpages' => 'Կարճ էջեր',
@@ -1703,6 +1715,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'usermaildisabledtext' => 'Այս վիքիում չեք կարղ էլ․ նամակ ուղարկել այլ մասնակիցների',
 'noemailtitle' => 'Չկա էլ-փոստի հասցե',
 'noemailtext' => 'Այս մասնակիցը չի նշել էլ-փոստի հասցե կամ նախընտրել է չստանալ էլ-նամակներ այլ մասնակիցներից։',
+'emailusername' => 'Մասնակցի անուն՝',
 'email-legend' => 'Ուղարկել էլ․ նամակ {{SITENAME}}յի այլ մասնակցի',
 'emailfrom' => 'Ումից.',
 'emailto' => 'Ում.',
@@ -1716,7 +1729,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 # Watchlist
 'watchlist' => 'Իմ հսկողության ցանկը',
-'mywatchlist' => 'Իմ հսկացանկը',
+'mywatchlist' => 'Հսկացանկ',
 'nowatchlist' => 'Ձեր հսկողության ցանկը դատարկ է։',
 'watchlistanontext' => 'Անհրաժեշտ է $1՝ հսկացանկը դիտելու կամ խմբագրելու համար։',
 'watchnologin' => 'Չեք մտել համակարգ',
@@ -1750,11 +1763,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 'enotif_mailer' => '{{grammar:genitive|{{SITENAME}}}} Տեղեկացման ծառայություն',
 'enotif_reset' => 'Նշել բոլոր էջերը այցելված',
-'enotif_newpagetext' => 'Սա նոր էջ է։',
 'enotif_impersonal_salutation' => '{{grammar:genitive|{{SITENAME}}}} մասնակից',
-'changed' => 'փոփոխված է',
-'created' => 'ստեղծված է',
-'enotif_subject' => '{{grammar:genitive|{{SITENAME}}}} «$PAGETITLE» էջը $CHANGEDORCREATED $PAGEEDITOR մասնակցի կողմից',
 'enotif_lastvisited' => 'Տես $1՝ ձեր վերջին այցից ի վեր կատարված փոփոխությունների համար։',
 'enotif_lastdiff' => 'Տես $1՝ այս փոփոխությունը դիտելու համար։',
 'enotif_anon_editor' => 'անանուն մասնակից $1',
@@ -1864,6 +1873,7 @@ $NEWPAGE
 'protect-cantedit' => 'Դուք չեք կարող փոխել այս էջի պաշտպանության մակարդակը, քանի որ ձեզ չի թույլատրվում խմբագրել այն։',
 'protect-othertime' => 'Այլ ժամկետ',
 'protect-othertime-op' => 'այլ ժամկետ',
+'protect-otherreason-op' => 'Այլ պատճառ',
 'protect-dropdown' => '* Ամենահաճախ նշվող պատճառներ
 ** Հաճախակի վանդալություններ
 ** Հաճախակի սփամ
@@ -1942,7 +1952,7 @@ $1',
 # Contributions
 'contributions' => 'Մասնակցի ներդրում',
 'contributions-title' => '$1 մասնակցի ներդրումը',
-'mycontris' => 'Իմ ներդրումը',
+'mycontris' => 'Ներդրում',
 'contribsub2' => '$1-ի ներդրումները ($2)',
 'nocontribs' => 'Այս չափանիշներին համապատասխանող փոփոխություններ չեն գտնվել։',
 'uctop' => ' (վերջինը)',
@@ -2069,7 +2079,7 @@ $1',
 'ipb_cant_unblock' => 'Սխալ. համար «$1» արգելափակումը չի գտնվել։ Հնարավոր է, որ արգելափակումն արդեն հանված է։',
 'ip_range_invalid' => 'IP-հասցեների անթույլատրելի լայնույթ։',
 'proxyblocker' => 'Փոխանորդի արգելափակում',
-'proxyblockreason' => 'Õ\81Õ¥Ö\80 IP-Õ°Õ¡Õ½Ö\81Õ¥Õ¶ Õ¡Ö\80Õ£Õ¥Õ¬Õ¡Ö\83Õ¡Õ¯Õ¾Õ¥Õ¬ Õ§, Ö\84Õ¡Õ¶Õ« Õ¸Ö\80 Õ¡ÕµÕ¶ Õ¡Õ¦Õ¡Õ¿ Ö\85Õ£Õ¿Õ¡Õ£Õ¸Ö\80Õ®Õ´Õ¡Õ¶ Ö\83Õ¸Õ­Õ¡Õ¶Õ¸Ö\80Õ¤ Õ§Ö\89 Ô½Õ¶Õ¤Ö\80Õ¸Ö\82Õ´ Õ¥Õ¶Ö\84 Õ¯Õ¡ÕºÕ¶վել ձեր ցանցային կամ տեխնիկական ծառայության տրամադրողի հետ և տեղեկացնել այս լուրջ անվտանգության խնդրի մասին։',
+'proxyblockreason' => 'Õ\81Õ¥Ö\80 IP-Õ°Õ¡Õ½Ö\81Õ¥Õ¶ Õ¡Ö\80Õ£Õ¥Õ¬Õ¡Ö\83Õ¡Õ¯Õ¾Õ¥Õ¬ Õ§, Ö\84Õ¡Õ¶Õ« Õ¸Ö\80 Õ¡ÕµÕ¶ ÕºÕ¡Õ¿Õ¯Õ¡Õ¶Õ¸Ö\82Õ´ Õ§ Õ°Õ¡Õ¶Ö\80Õ¡ÕµÕ«Õ¶ Õ´Õ«Õ»Õ¶Õ¸Ö\80Õ¤ (ÕºÖ\80Õ¸Ö\84Õ½Õ«) Õ½Õ¥Õ¼Õ¾Õ¥Ö\80Õ«Õ¶Ö\89 Ô½Õ¶Õ¤Ö\80Õ¸Ö\82Õ´ Õ¥Õ¶Ö\84 Õ¯Õ¡Õºվել ձեր ցանցային կամ տեխնիկական ծառայության տրամադրողի հետ և տեղեկացնել այս լուրջ անվտանգության խնդրի մասին։',
 'proxyblocksuccess' => 'Արված է։',
 'sorbsreason' => 'Ձեր IP-հասցեն հաշվված է որպես ազատ օգտագործման փոխանորդ DNSBL ցանկում։',
 'sorbs_create_account_reason' => 'Ձեր IP-հասցեն հաշվված է որպես ազատ օգտագործման փոխանորդ DNSBL ցանկում։ Դուք չեք կարող ստեղծել մասնակցային հաշիվ։',
@@ -2160,6 +2170,7 @@ $1',
 'export-submit' => 'Արտածել',
 'export-addcattext' => 'Ավելացնել էջեր կատեգորիայից.',
 'export-addcat' => 'Ավելացնել',
+'export-addns' => 'Ավելացնել',
 'export-download' => 'Առաջարկել հիշել որպես նիշք',
 
 # Namespace 8 related
@@ -2170,6 +2181,9 @@ $1',
 'allmessagestext' => 'Ստորև բերված է «MediaWiki» անվանատարածքի բոլոր համակարգային ուղերձների ցանկը։
 Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
 'allmessagesnotsupportedDB' => "Այս էջը չի գործում, քանի որ '''\$wgUseDatabaseMessages''' հատկանիշը անջատված է։",
+'allmessages-filter-all' => 'Բոլորը',
+'allmessages-language' => 'Լեզու',
+'allmessages-filter-submit' => 'Անցնել',
 
 # Thumbnails
 'thumbnail-more' => 'Ընդարձակել',
@@ -2469,11 +2483,13 @@ $3
 'unit-pixel' => ' փիքսել',
 
 # action=purge
-'confirm_purge_button' => 'OK',
+'confirm_purge_button' => 'ԼԱՎ',
 'confirm-purge-top' => 'Մաքրե՞լ այս էջի քեշը։',
 
 # action=watch/unwatch
+'confirm-watch-button' => 'ԼԱՎ',
 'confirm-watch-top' => 'Ավելացնե՞լ ձեր հսկացանկին',
+'confirm-unwatch-button' => 'ԼԱՎ',
 'confirm-unwatch-top' => 'Հեռացնե՞լ ձեր հսկացանկից։',
 
 # Multipage image navigation
@@ -2550,7 +2566,15 @@ $3
 'filepath-submit' => 'Անցնել',
 
 # Special:FileDuplicateSearch
+'fileduplicatesearch' => 'Փնտրել կրկնօրինակ պատկերներ',
+'fileduplicatesearch-summary' => 'Փնտրել կրկնօրինակ պատկերներ՝ հեշ արժեքների հիման վրա',
+'fileduplicatesearch-legend' => 'Փնտրել կրկնօրինակներ',
+'fileduplicatesearch-filename' => 'Նիշքի անուն․',
 'fileduplicatesearch-submit' => 'Որոնել',
+'fileduplicatesearch-info' => '$1 × $2 փիքսել<br />Նիշքի չափը՝ $3<br />MIME-տիպը՝ $4',
+'fileduplicatesearch-result-1' => '$1 նիշքը կրկնօրինակներ չունի',
+'fileduplicatesearch-result-n' => '$1 նիշքն ունի {{PLURAL:$2|1 նույնական կրկնօրինակ|$2 նույնական կրկնօրինակ}}.',
+'fileduplicatesearch-noresults' => '$1 անունով նիշք չի գտնվել',
 
 # Special:SpecialPages
 'specialpages' => 'Սպասարկող էջեր',
@@ -2579,6 +2603,8 @@ $3
 'tags-edit' => 'խմբագրել',
 
 # Special:ComparePages
+'comparepages' => 'Համեմատել էջեր',
+'compare-selector' => 'Համեմատել էջի տարբերակներ',
 'compare-page1' => 'Էջ 1',
 'compare-page2' => 'Էջ 2',
 'compare-submit' => 'Համեմատել',
index d1d7ed2..05408b5 100644 (file)
@@ -276,8 +276,8 @@ $messages = array(
 'newwindow' => '(se aperi in un nove fenestra)',
 'cancel' => 'Cancellar',
 'moredotdotdot' => 'Plus...',
-'mypage' => 'Mi pagina',
-'mytalk' => 'Mi discussion',
+'mypage' => 'Pagina',
+'mytalk' => 'Discussion',
 'anontalk' => 'Discussion pro iste adresse IP',
 'navigation' => 'Navigation',
 'and' => '&#32;e',
@@ -309,6 +309,7 @@ $messages = array(
 'namespaces' => 'Spatios de nomines',
 'variants' => 'Variantes',
 
+'navigation-heading' => 'Menu de navigation',
 'errorpagetitle' => 'Error',
 'returnto' => 'Retornar a $1.',
 'tagline' => 'De {{SITENAME}}',
@@ -553,8 +554,8 @@ Le administrator qui lo blocava offereva iste explication: "$3".',
 
 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.",
-'welcomecreation' => '== Benvenite, $1! ==
-Tu conto ha essite create.
+'welcomeuser' => 'Benvenite, $1!',
+'welcomecreation-msg' => 'Tu conto ha essite create.
 Non oblida personalisar tu [[Special:Preferences|preferentias in {{SITENAME}}]].',
 'yourname' => 'Nomine de usator:',
 'yourpassword' => 'Contrasigno:',
@@ -1244,7 +1245,7 @@ Nota que lor indices del contento de {{SITENAME}} pote esser obsolete.',
 
 # Preferences page
 'preferences' => 'Preferentias',
-'mypreferences' => 'Mi preferentias',
+'mypreferences' => 'Preferentias',
 'prefs-edits' => 'Numero de modificationes:',
 'prefsnologin' => 'Tu non ha aperite un session',
 'prefsnologintext' => 'Tu debe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aperir session]</span> pro configurar preferentias de usator.',
@@ -1726,6 +1727,7 @@ Si le problema persiste, contacta un [[Special:ListUsers/sysop|administrator]].'
 'backend-fail-notsame' => 'Un file non identic jam existe a $1.',
 'backend-fail-invalidpath' => '$1 non es un cammino valide de immagazinage.',
 'backend-fail-delete' => 'Impossibile deler file $1.',
+'backend-fail-describe' => 'Impossibile cambiar le metadatos pro le file "$1".',
 'backend-fail-alreadyexists' => 'Le file $1 jam existe.',
 'backend-fail-store' => 'Non poteva immagazinar le file $1 a $2',
 'backend-fail-copy' => 'Impossibile copiar file $1 a $2',
@@ -2117,8 +2119,8 @@ Vide etiam le [[Special:WantedCategories|categorias desirate]].',
 'linksearch-ns' => 'Spatio de nomines:',
 'linksearch-ok' => 'Cercar',
 'linksearch-text' => 'Es possibile usar metacharacteres como in "*.wikipedia.org".
-Necessita al minus un dominio de nivello superior, per exemplo "*.org".<br />
-Protocollos supportate: <code>$1</code> (non include alcun de istes in tu recerca).',
+Isto necessita specificar al minus le dominio de nivello superior, per exemplo "*.org".<br />
+Protocollos supportate: <code>$1</code> (http:// es assumite si nulle protocollo es specificate).',
 'linksearch-line' => '$1 ligate ab $2',
 'linksearch-error' => 'Le metacharacteres pote apparer solmente al initio del nomine de host.',
 
@@ -2202,7 +2204,7 @@ como le adresse del expeditor, de sorta que le destinatario potera responder te
 
 # Watchlist
 'watchlist' => 'Mi observatorio',
-'mywatchlist' => 'Mi observatorio',
+'mywatchlist' => 'Observatorio',
 'watchlistfor2' => 'De $1 $2',
 'nowatchlist' => 'Tu non ha paginas sub observation.',
 'watchlistanontext' => 'Tu debe $1 pro poter vider o modificar entratas in tu observatorio.',
@@ -2240,11 +2242,7 @@ render lo plus facile de deteger.",
 
 'enotif_mailer' => 'Systema de notification via e-mail de {{SITENAME}}',
 'enotif_reset' => 'Marcar tote le paginas como visitate',
-'enotif_newpagetext' => 'Isto es un nove pagina.',
 'enotif_impersonal_salutation' => 'Usator de {{SITENAME}}',
-'changed' => 'modificate',
-'created' => 'create',
-'enotif_subject' => 'Le pagina $PAGETITLE de {{SITENAME}} ha essite $CHANGEDORCREATED per $PAGEEDITOR',
 'enotif_lastvisited' => 'Vide $1 pro tote le modificationes depost tu ultime visita.',
 'enotif_lastdiff' => 'Vide $1 pro revider iste modification.',
 'enotif_anon_editor' => 'usator anonyme $1',
@@ -2473,7 +2471,7 @@ $1',
 # Contributions
 'contributions' => 'Contributiones del usator',
 'contributions-title' => 'Contributiones del usator $1',
-'mycontris' => 'Mi contributiones',
+'mycontris' => 'Contributiones',
 'contribsub2' => 'Pro $1 ($2)',
 'nocontribs' => 'Necun modification ha essite trovate secundo iste criterios.',
 'uctop' => '(ultime)',
@@ -2513,7 +2511,7 @@ Le ultime entrata del registro de blocadas es reproducite hic infra pro informat
 'whatlinkshere-hideredirs' => '$1 redirectiones',
 'whatlinkshere-hidetrans' => '$1 transclusiones',
 'whatlinkshere-hidelinks' => '$1 ligamines',
-'whatlinkshere-hideimages' => '$1 ligamines verso imagines',
+'whatlinkshere-hideimages' => '$1 le ligamines a files',
 'whatlinkshere-filters' => 'Filtros',
 
 # Block/unblock
@@ -3069,6 +3067,8 @@ Le causa es probabilemente un ligamine verso un sito externe que es presente in
 'markedaspatrollederror' => 'Impossibile marcar como patruliate',
 'markedaspatrollederrortext' => 'Tu debe specificar un version a marcar como patruliate.',
 'markedaspatrollederror-noautopatrol' => 'Tu non es permittite a marcar tu proprie modificationes como patruliate.',
+'markedaspatrollednotify' => 'Iste modification de $1 ha essite marcate como patruliate.',
+'markedaspatrollederrornotify' => 'Le marcar como patruliate ha fallite.',
 
 # Patrol log
 'patrol-log-page' => 'Registro de patrulia',
@@ -3132,6 +3132,7 @@ Le execution de illo pote compromitter le securitate de tu systema.",
 'hours' => '{{PLURAL:$1|$1 hora|$1 horas}}',
 'days' => '{{PLURAL:$1|$1 die|$1 dies}}',
 'ago' => '$1 retro',
+'just-now' => 'Justo nunc',
 
 # Bad image list
 'bad_image_list' => 'Le formato es como seque:
@@ -3886,9 +3887,9 @@ Le imagines se monstra in plen resolution, le altere typos de file se executa di
 'logentry-move-move_redir-noredirect' => '$1 renominava le pagina $3 a $4, superscribente un redirection sin lassar un nove redirection',
 'logentry-patrol-patrol' => '$1 marcava le version $4 del pagina $3 como patruliate',
 'logentry-patrol-patrol-auto' => '$1 automaticamente marcava le version $4 del pagina $3 como patruliate',
-'logentry-newusers-newusers' => '$1 creava un conto de usator',
-'logentry-newusers-create' => '$1 creava un conto de usator',
-'logentry-newusers-create2' => '$1 creava un conto de usator $3',
+'logentry-newusers-newusers' => 'Le conto de usator $1 ha essite create',
+'logentry-newusers-create' => 'Le conto de usator $1 ha essite create',
+'logentry-newusers-create2' => 'Le conto de usator $3 ha essite create per $1',
 'logentry-newusers-autocreate' => 'Le conto $1 ha essite create automaticamente',
 'newuserlog-byemail' => 'contrasigno inviate per e-mail',
 
index 3c46067..9d7a06b 100644 (file)
@@ -383,7 +383,7 @@ $messages = array(
 
 'underline-always' => 'Selalu',
 'underline-never' => 'Tidak pernah',
-'underline-default' => 'Bawaan penjelajah web',
+'underline-default' => 'Kulit atau penjelajah bawaan',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Gaya tulisan komputer pada kotak penyuntingan:',
@@ -468,8 +468,8 @@ $messages = array(
 'newwindow' => '(buka di jendela baru)',
 'cancel' => 'Batalkan',
 'moredotdotdot' => 'Lainnya...',
-'mypage' => 'Halaman saya',
-'mytalk' => 'Pembicaraan saya',
+'mypage' => 'Halaman',
+'mytalk' => 'Pembicaraan',
 'anontalk' => 'Pembicaraan IP ini',
 'navigation' => 'Navigasi',
 'and' => '&#32;dan',
@@ -491,7 +491,7 @@ $messages = array(
 'vector-action-protect' => 'Lindungi',
 'vector-action-undelete' => 'Pembatalan penghapusan',
 'vector-action-unprotect' => 'Ubah perlindungan',
-'vector-simplesearch-preference' => 'Aktifkan pencarian saran yang disempurnakan (hanya kulit Vector)',
+'vector-simplesearch-preference' => 'Aktifkan bilah pencarian sederhana (hanya kulit Vector)',
 'vector-view-create' => 'Buat',
 'vector-view-edit' => 'Sunting',
 'vector-view-history' => 'Versi terdahulu',
@@ -654,9 +654,9 @@ Daftar halaman istimewa yang sah dapat dilihat di [[Special:SpecialPages|{{int:s
 'dberrortext' => 'Ada kesalahan sintaks pada permintaan basis data.
 Kesalahan ini mungkin menandakan adanya sebuah \'\'bug\'\' dalam perangkat lunak.
 Permintaan basis data yang terakhir adalah:
-<blockquote><tt>$1</tt></blockquote>
-dari dalam fungsi "<tt>$2</tt>".
-Basis data menghasilkan kesalahan "<tt>$3: $4</tt>".',
+<blockquote><code>$1</code></blockquote>
+dari dalam fungsi "<code>$2</code>".
+Basis data menghasilkan kesalahan "<samp>$3: $4</samp>".',
 'dberrortextcl' => 'Ada kesalahan sintaks pada permintaan basis data.
 Permintaan basis data yang terakhir adalah:
 "$1"
@@ -704,9 +704,9 @@ Mungkin telah dihapus oleh orang lain.',
 'protectedpagetext' => 'Halaman ini telah dikunci untuk menghindari penyuntingan.',
 'viewsourcetext' => 'Anda dapat melihat atau menyalin sumber halaman ini:',
 'viewyourtext' => "Anda dapat melihat atau menyalin sumber dari '''suntingan Anda''' ke halaman ini:",
-'protectedinterface' => 'Halaman ini berisi teks antarmuka untuk digunakan oleh perangkat lunak dan telah dikunci untuk menghindari kesalahan.',
-'editinginterface' => "'''Peringatan:''' Anda menyunting suatu halaman yang digunakan untuk menyediakan teks antarmuka untuk perangkat lunak situs ini. Perubahan teks ini akan mempengaruhi tampilan pada antarmuka pengguna untuk pengguna lain.
-Untuk terjemahan, harap gunakan [//translatewiki.net/wiki/Main_Page?setlang=id translatewiki.net], proyek pelokalan MediaWiki.",
+'protectedinterface' => 'Halaman ini memuat teks antarmuka untuk perangkat lunak pada wiki ini, dan dilindungi terhadap penyalahgunaan. Untuk menambah atau mengubah terjemahan pada semua wiki, harap gunakan [//translatewiki.net/ translatewiki.net], proyek pelokalan MediaWiki.',
+'editinginterface' => "'''Peringatan:''' Anda menyunting suatu halaman yang digunakan untuk menyediakan teks antarmuka untuk perangkat lunak situs ini. Perubahan teks ini akan memengaruhi tampilan pada antarmuka pengguna untuk pengguna lain di wiki ini.
+Untuk menambah atau mengubahterjemahan untuk semua wiki, harap gunakan [//translatewiki.net/ translatewiki.net], proyek pelokalan MediaWiki.",
 'sqlhidden' => '(Permintaan SQL disembunyikan)',
 'cascadeprotected' => 'Halaman ini telah dilindungi dari penyuntingan karena disertakan di {{PLURAL:$1|halaman|halaman-halaman}} berikut yang telah dilindungi dengan opsi "runtun":
 $2',
@@ -734,9 +734,6 @@ Administrator yang terkunci menawarkan penjelasan ini: " $3 ".',
 
 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",
-'welcomecreation' => '== Selamat datang, $1! ==
-
-Akun Anda telah dibuat. Jangan lupa mengatur konfigurasi [[Special:Preferences|preferensi {{SITENAME}}]] Anda.',
 'yourname' => 'Nama pengguna:',
 'yourpassword' => 'Kata sandi:',
 'yourpasswordagain' => 'Ulangi kata sandi:',
@@ -992,11 +989,10 @@ Rinciannya dapat ditemukan di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGE
 'userpage-userdoesnotexist-view' => 'Pengguna "$1" tidak terdaftar.',
 'blocked-notice-logextract' => 'Pengguna ini sedang diblokir.
 Entri log pemblokiran terakhir tersedia di bawah ini sebagai rujukan.',
-'clearyourcache' => "'''Catatan:''' Setelah menyimpan, Anda mungkin harus memotong tembolok peramban Anda untuk melihat perubahan.
+'clearyourcache' => "'''Catatan:''' Setelah menyimpan, Anda mungkin harus memintas singgahan peramban Anda untuk melihat perubahan.
 * '''Firefox / Safari:''' Tahan ''Shift'' sambil mengeklik ''Reload'', atau tekan ''Ctrl-F5'' atau ''Ctrl-R'' (''⌘-R'' di Mac)
 * '''Google Chrome:''' Tekan ''Ctrl-Shift-R'' (''⌘-Shift-R'' di Mac)
 * '''Internet Explorer:''' Tahan ''Ctrl'' sambl mengeklik ''Refresh'', atau tekan ''Ctrl-F5''
-* '''Konqueror:''' Klik ''Reload'' atau tekan ''F5''
 * '''Opera:''' Bersihkan tembolok di ''Tools → Preferences''",
 'usercssyoucanpreview' => "'''Tips:''' Gunakan tombol \"{{int:showpreview}}\" untuk menguji CSS baru Anda sebelum menyimpannya.",
 'userjsyoucanpreview' => "'''Tips:''' Gunakan tombol \"{{int:showpreview}}\" untuk menguji JS baru Anda sebelum menyimpannya.",
@@ -1091,6 +1087,14 @@ Halaman kemungkinan telah dihapus.',
 'edit-already-exists' => 'Tidak dapat membuat halaman baru
 karena telah ada.',
 'defaultmessagetext' => 'Teks baku',
+'invalid-content-data' => 'Data konten tidak sah',
+'content-not-allowed-here' => 'Konten "$1" tidak diizinkan di halaman [[$2]]',
+
+# Content models
+'content-model-wikitext' => 'teks wiki',
+'content-model-text' => 'teks polos',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Peringatan: Halaman ini mengandung terlalu banyak panggilan fungsi parser.
@@ -1111,6 +1115,7 @@ Beberapa templat akan diabaikan.',
 'expansion-depth-exceeded-warning' => 'Page exceeded the expansion depth',
 'parser-unstrip-loop-warning' => 'Unstrip loop detected',
 'parser-unstrip-recursion-limit' => 'Unstrip recursion limit exceeded ($1)',
+'converter-manual-rule-error' => 'Kesalahan terdeteksi di aturan konversi bahasa manual',
 
 # "Undo" feature
 'undo-success' => 'Suntingan ini dapat dibatalkan. Tolong cek perbandingan di bawah untuk meyakinkan bahwa benar itu yang Anda ingin lakukan, lalu simpan perubahan tersebut untuk menyelesaikan pembatalan suntingan.',
@@ -1241,9 +1246,10 @@ Anda tidak memiliki akses ke revisi ini.',
 'revdelete-concurrent-change' => 'Gagal mengubah revisi per $2, $1: statusnya kemungkinan telah diubah oleh pengguna lain bersamaan dengan Anda.
 Silakan periksa catatan log.',
 'revdelete-only-restricted' => 'Kesalahan sewaktu menyembunyikan butir bertanggal $2, $1: Anda tidak dapat menyembunyikan butir dari pengurus tanpa memilih juga salah satu opsi penyembunyian lainnya.',
-'revdelete-reason-dropdown' => '*Alasan penghapusan
+'revdelete-reason-dropdown' => '*Alasan penghapusan yang umum
 ** Pelanggaran hak cipta
-** Informasi pribadi yang tidak pantas
+** Komentar atau informasi pribadi yang tidak pantas
+** Nama pengguna yang tidak pantas
 ** Berpotensi mencemarkan nama baik',
 'revdelete-otherreason' => 'Alasan lain/tambahan:',
 'revdelete-reasonotherlist' => 'Alasan lain',
@@ -1371,7 +1377,7 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
 
 # Preferences page
 'preferences' => 'Preferensi',
-'mypreferences' => 'Preferensi saya',
+'mypreferences' => 'Preferensi',
 'prefs-edits' => 'Jumlah suntingan:',
 'prefsnologin' => 'Belum masuk log',
 'prefsnologintext' => 'Anda harus <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} masuk log]</span> untuk mengeset preferensi Anda.',
@@ -1433,7 +1439,7 @@ Berikut ini adalah nilai acak yang dapat Anda gunakan: $1',
 'timezoneregion-indian' => 'Samudera Hindia',
 'timezoneregion-pacific' => 'Samudera Pasifik',
 'allowemail' => 'Izinkan pengguna lain mengirim surel',
-'prefs-searchoptions' => 'Pencarian',
+'prefs-searchoptions' => 'Cari',
 'prefs-namespaces' => 'Ruang nama',
 'defaultns' => 'Atau cari dalam ruang-ruang nama berikut:',
 'default' => 'baku',
@@ -1839,7 +1845,7 @@ Silakan hubungi salah seorang [[Special:ListUsers/sysop|pengurus]].',
 'backend-fail-internal' => 'Kesalahan yang tidak dikenal terjadi di backend penyimpanan "$1".',
 'backend-fail-contenttype' => 'Tidak dapat menentukan tipe konten dari berkas yang disimpan di "$1".',
 'backend-fail-batchsize' => 'Penyimpanan backend diberikan batch $1 berkas {{PLURAL:$1||}}operasi; batasnya adalah $2 {{PLURAL:$2||}}operasi.',
-'backend-fail-usable' => 'Tidak dapat membuat berkas $1 karena izin tidak memadai atau direktori/kontainer yang hilang.',
+'backend-fail-usable' => 'Tidak dapat membaca atau menulis berkas "$1" karena izin tidak memadai atau direktori/kontainer hilang.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Tidak dapat menyambung ke database jurnal untuk penyimpanan backend "$1".',
@@ -2204,8 +2210,8 @@ Lihat pula [[Special:WantedCategories|kategori yang diinginkan]].',
 'linksearch-ns' => 'Ruang nama:',
 'linksearch-ok' => 'Cari',
 'linksearch-text' => 'Kartu liar seperti "*.wikipedia.org" dapat digunakan.
-Membutuhkan sedikitnya satu ranah tingkat atas, misalnya "*.org".<br />
-Protokol yang didukung: <code>$1</code> (jangan tambahkan dalam pencarian Anda)',
+Perlu sedikitnya satu domain tingkat atas, misalnya "*.org".<br />
+Protokol yang didukung: <code>$1</code> (menggunakan http:// bila protokol tidak ditentukan)',
 'linksearch-line' => '$1 memiliki pranala dari $2',
 'linksearch-error' => "''Wildcards'' hanya dapat digunakan di bagian awal dari nama host.",
 
@@ -2250,6 +2256,8 @@ Protokol yang didukung: <code>$1</code> (jangan tambahkan dalam pencarian Anda)'
 'mailnologin' => 'Tidak ada alamat surel',
 'mailnologintext' => 'Anda harus [[Special:UserLogin|masuk log]] dan mempunyai alamat surel yang sah di dalam [[Special:Preferences|preferensi]] untuk mengirimkan surel kepada pengguna lain.',
 'emailuser' => 'Surel pengguna',
+'emailuser-title-target' => 'Kirim surel ke {{GENDER:$1|pengguna}} ini',
+'emailuser-title-notarget' => 'Kirim surel',
 'emailpage' => 'Kirim surel ke pengguna ini',
 'emailpagetext' => 'Anda dapat menggunakan formulir di bawah ini untuk mengirimkan surel ke pengguna ini.
 Alamat surel yang Anda masukkan di [[Special:Preferences|preferensi akun Anda]] akan muncul sebagai alamat "Dari" dalam surel tersebut, sehingga penerima dapat langsung membalas kepada Anda.',
@@ -2283,7 +2291,7 @@ Alamat surel yang Anda masukkan di [[Special:Preferences|preferensi akun Anda]]
 
 # Watchlist
 'watchlist' => 'Daftar pantauan',
-'mywatchlist' => 'Pantauan saya',
+'mywatchlist' => 'Daftar pantauan',
 'watchlistfor2' => 'Untuk $1 $2',
 'nowatchlist' => 'Daftar pantauan Anda kosong.',
 'watchlistanontext' => 'Silakan $1 untuk melihat atau menyunting daftar pantauan Anda.',
@@ -2319,11 +2327,7 @@ Perubahan-perubahan berikutnya pada halaman tersebut dan halaman pembicaraan ter
 
 'enotif_mailer' => 'Pengirim Notifikasi {{SITENAME}}',
 'enotif_reset' => 'Tandai semua halaman sebagai telah dikunjungi',
-'enotif_newpagetext' => 'Ini adalah halaman baru.',
 'enotif_impersonal_salutation' => 'Pengguna {{SITENAME}}',
-'changed' => 'diubah',
-'created' => 'dibuat',
-'enotif_subject' => 'Halaman $PAGETITLE di {{SITENAME}} telah $CHANGEDORCREATED oleh $PAGEEDITOR',
 'enotif_lastvisited' => 'Lihat $1 untuk semua perubahan sejak kunjungan terakhir Anda.',
 'enotif_lastdiff' => 'Kunjungi $1 untuk melihat perubahan ini.',
 'enotif_anon_editor' => 'pengguna anonim $1',
@@ -2534,7 +2538,7 @@ $1',
 # Contributions
 'contributions' => 'Kontribusi pengguna',
 'contributions-title' => 'Kontribusi pengguna untuk $1',
-'mycontris' => 'Kontribusi saya',
+'mycontris' => 'Kontribusi',
 'contribsub2' => 'Untuk $1 ($2)',
 'nocontribs' => 'Tidak ada perubahan yang sesuai dengan kriteria tersebut.',
 'uctop' => ' (atas)',
@@ -3044,11 +3048,33 @@ Ini mungkin disebabkan oleh pranala ke situs luar yang termasuk dalam daftar hit
 
 # Info page
 'pageinfo-title' => 'Informasi untuk "$1"',
-'pageinfo-header-edits' => 'Suntingan',
+'pageinfo-header-basic' => 'Informasi dasar',
+'pageinfo-header-edits' => 'Sejarah suntingan',
+'pageinfo-header-restrictions' => 'Perlindungan halaman',
+'pageinfo-header-properties' => 'Properti halaman',
+'pageinfo-display-title' => 'Judul tampilan',
+'pageinfo-default-sort' => 'Kunci urut baku',
+'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-views' => 'Jumlah penampilan',
-'pageinfo-watchers' => 'Jumlah pemantau',
-'pageinfo-edits' => 'Jumlah suntingan',
-'pageinfo-authors' => 'Jumlah penulis yang berbeda',
+'pageinfo-watchers' => 'Jumlah pemantau halaman',
+'pageinfo-redirects-name' => 'Pengalihan ke halaman ini',
+'pageinfo-subpages-name' => 'Subhalaman halaman ini',
+'pageinfo-firstuser' => 'Pembuat halaman',
+'pageinfo-firsttime' => 'Tanggal pembuatan halaman',
+'pageinfo-lastuser' => 'Penyunting terakhir',
+'pageinfo-lasttime' => 'Tanggal suntingan terakhir',
+'pageinfo-edits' => 'Jumlah total suntingan',
+'pageinfo-authors' => 'Jumlah total penulis yang berbeda',
+'pageinfo-toolboxlink' => 'Informasi halaman',
+'pageinfo-redirectsto' => 'Beralih ke',
+'pageinfo-redirectsto-info' => 'Info',
+'pageinfo-contentpage-yes' => 'Ya',
+'pageinfo-protect-cascading-yes' => 'Ya',
 
 # Skin names
 'skinname-standard' => 'Klasik',
@@ -3911,7 +3937,7 @@ Gambar ditampilkan dalam resolusi penuh dan tipe lain berkas akan dibuka langsun
 'logentry-move-move_redir-noredirect' => '$1 memindahkan halaman $3 ke $4 melalui pengalihan tanpa membuat pengalihan',
 'logentry-patrol-patrol' => '$1 menandai revisi $4 dari halaman $3 terpatroli',
 'logentry-patrol-patrol-auto' => '$1 secara otomatis menandai revisi $4 dari halaman $3 terpatroli',
-'logentry-newusers-newusers' => '$1 membuat akun pengguna',
+'logentry-newusers-newusers' => 'Akun pengguna $1 telah dibuat',
 'logentry-newusers-create' => '$1 membuat akun pengguna',
 'logentry-newusers-create2' => '$1 membuat akun pengguna $3',
 'logentry-newusers-autocreate' => 'Akun $1 dibuat secara otomatis',
@@ -3951,7 +3977,7 @@ Jika tidak, Anda dapat menggunakan formulir mudah di bawah ini. Komentar Anda ak
 'api-error-file-too-large' => 'Berkas yang Anda kirim terlalu besar.',
 'api-error-filename-tooshort' => 'Nama berkas terlalu pendek.',
 'api-error-filetype-banned' => 'Jenis berkas ini dilarang.',
-'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|adalah ekstensi berkas yang tidak diizinkan|adalah ekstensi berkas yang tidak diizinkan}}. {{PLURAL:$3|Jenis berkas yang diperolehkan adalah|Jenis berkas yang diperolehkan adalah}} $2.',
+'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|bukan ekstensi berkas yang diizinkan|bukan ekstensi berkas yang diizinkan}}. {{PLURAL:$3|Jenis berkas yang diizinkan adalah|Jenis berkas yang diizinkan adalah}} $2.',
 'api-error-filetype-missing' => 'Berkas tidak memiliki ekstensi.',
 'api-error-hookaborted' => 'Modifikasi yang Anda coba lakukan dibatalkan oleh suatu kaitan ekstensi.',
 'api-error-http' => 'Kesalahan internal: tidak dapat menghubungkan ke peladen.',
index d56b03e..2dcb229 100644 (file)
@@ -447,9 +447,9 @@ Ti administrador a nagserra ket nagited iti daytoy a panagilawlawag "\'\'$3\'\'"
 
 Mabalinmo nga ituloy ti agusar iti {{SITENAME}} a di am-ammo, wenno <span class='plainlinks'>[\$1 sumrek ka manen]</span> iti sigud wenno sabali nga agar-aramat.
 Laglagipem a sumagmamano a pampanid ti mabalin a nakaparang latta a kasla nakaserrekka pay laeng, aginggana no dalusam ti \"cache\" ti panagbasabasam.",
-'welcomecreation' => '== Kablaaw, $1! ==
-Naaramiden ti pakabilangam.
-Dimo liplipatan a sukatan dagita kaykayatmo idiay [[Special:Preferences|{{SITENAME}} kaykayat]].',
+'welcomeuser' => 'Naragsak nga isasangbay, $1!',
+'welcomecreation-msg' => 'Naaramiden ti pakabilangam.
+Dimo liplipatan a sukatan dagiti kakaykayatam idiay [[Special:Preferences|{{SITENAME}} kakaykayatan]].',
 'yourname' => 'Nagan ti agar-aramat:',
 'yourpassword' => 'Kontrasenias:',
 'yourpasswordagain' => 'Uliten ti kontrasenias:',
@@ -1135,8 +1135,8 @@ Laglagipem laeng a dagiti pagsurotan nagyan ti {{SITENAME}} ket baka baak.',
 'qbsettings-directionality' => 'Nasimpa, gapu laeng ti papanan ti panagsurat ti pagsasaom',
 
 # Preferences page
-'preferences' => 'Kaykayatan',
-'mypreferences' => 'Kaykayatan',
+'preferences' => 'Kakaykayatan',
+'mypreferences' => 'Kakaykayatan',
 'prefs-edits' => 'Bilang dagiti inurnos:',
 'prefsnologin' => 'Saan a nakastrek',
 'prefsnologintext' => 'Masapul a <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} nakastrekka]</span> tapno makapili kadagiti kakaykayatam.',
@@ -1237,7 +1237,7 @@ Daytoy a pakaammo ket makita ti publiko.',
 'prefs-help-realname' => 'Saan a nasken ti pudno a nagan.
 Ngem no kayatmo nga ited, maaramat daytoy a kas pammadayaw ken pangpatalged iti obram.',
 'prefs-help-email' => 'Ti e-surat a pagtaengan ket saan a masapul, ngem masapul no agsukat ka ti kontrasenias, no baka malipatam ti kontrasenias mo.',
-'prefs-help-email-others' => 'Mabalinmo nga agpili tapno dagiti sabsabali nga agar-aramat ket ma e-suratandaka idiay panagsilpo ti panidmo wenno ti panid ti kapatangam.
+'prefs-help-email-others' => 'Mabalinmo nga agpili tapno dagiti sabsabali nga agar-aramat ket ma e-suratandaka idiay panagsilpo ti panidmo wenno ti panid ti tungtungam.
 Ti e-surat a pagtaengam ket saan nga maipakita kadagiti agar-aramat nga agkontak kenka.',
 'prefs-help-email-required' => 'Masapul ti e-surat a pagtaengan.',
 'prefs-info' => 'Kangrunaan a pakaammuan',
@@ -1612,6 +1612,7 @@ No ti parikut ket agsubli latta, kontaken ti [[Special:ListUsers/sysop|administr
 'backend-fail-notsame' => 'Addaan ti saan a kapada ti papeles idiay $1.',
 'backend-fail-invalidpath' => '$1 ket imbalido a pagnaan ti pagidulinan.',
 'backend-fail-delete' => 'Saan a maikkat ti papeles $1.',
+'backend-fail-describe' => 'Saam a mabaliwan ti metadata para iti papeles ti "$1".',
 'backend-fail-alreadyexists' => 'Ti papeles $1 ket addan.',
 'backend-fail-store' => 'Saan a maidulin ti papeles $1 idiay $2.',
 'backend-fail-copy' => 'Saan a makopia ti papeles $1 idiay $2.',
@@ -2118,11 +2119,7 @@ Mailistanto ditoy dagiti pinagsukat daytoy a panid iti masakbayan agraman ti kan
 
 'enotif_mailer' => 'Agipatulod ti pakiammo ti {{SITENAME}}',
 'enotif_reset' => 'Markaan amin a pampanid a kas nasarungkaranen',
-'enotif_newpagetext' => 'Baro daytoy a panid.',
 'enotif_impersonal_salutation' => '{{SITENAME}} agar-aramat',
-'changed' => 'nasukatan',
-'created' => 'naaramid',
-'enotif_subject' => 'Ti {{SITENAME}} a panid a $PAGETITLE ket $CHANGEDORCREATED ni $PAGEEDITOR',
 'enotif_lastvisited' => 'Kitaen ti $1 para iti am-amin a panagsukat sipud ti naudi nga isasarungkarmo.',
 'enotif_lastdiff' => 'Kitaen ti $1 tapno mabuya daytoy a panagsukat.',
 'enotif_anon_editor' => 'di am-ammo nga agar-aramat $1',
@@ -2796,7 +2793,7 @@ Mabalinmo a kitaen ti taudanna.',
 'tooltip-n-currentevents' => 'Agsapul iti lugar ti likud a pakaammo kadagiti agdama a paspasamak',
 'tooltip-n-recentchanges' => 'Listaan dagiti naudi a sinukatan iti wiki.',
 'tooltip-n-randompage' => 'Mangiparuar iti pugto a panid',
-'tooltip-n-help' => 'Ti lugar a pakasapulan.',
+'tooltip-n-help' => 'Ti lugar a pagsapulan',
 'tooltip-t-whatlinkshere' => 'Listaan ti am-amin a pampanid ti wiki a nakasilpo ditoy',
 'tooltip-t-recentchangeslinked' => 'Kinaudian a sinukatan  dagiti panid a nakasilpo ditoy a panid',
 'tooltip-feed-rss' => 'RSS a pakan para iti daytoy a panid',
@@ -2907,6 +2904,8 @@ Daytoy ket mabalin a gapuanan babaen ti panilpo a naiparit ti akin ruar a pagsaa
 'markedaspatrollederror' => 'Madi a mamarkaan a kas napatruliaan',
 'markedaspatrollederrortext' => 'Nasken a naganam ti maysa a rebision tapno mamarkaan a kas napatruliaan.',
 'markedaspatrollederror-noautopatrol' => 'Saanmo a mabalin a markaan dagita sinukatam a kas napatruliaan.',
+'markedaspatrollednotify' => 'Daytoy a panagbaliw ti $1 ket namarkaanen a kas napatruliaan.',
+'markedaspatrollederrornotify' => 'Ti panagmarka a kas napatruliaan ket napaay.',
 
 # Patrol log
 'patrol-log-page' => 'Listaan ti napatruliaan',
@@ -3550,7 +3549,7 @@ Mabalinmo pay nga [[Special:EditWatchlist|usaren ti dati a panagurnos]].',
 'watchlisttools-raw' => 'Urnosen ti kilaw a listaan ti bambantayan',
 
 # Signatures
-'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|patang]])',
+'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|tungtungan]])',
 
 # Core parser functions
 'unknown_extension_tag' => 'Di amammo a pagpaatiddog nga etiketa "$1"',
@@ -3621,7 +3620,7 @@ Dagiti imahen ket agparang iti kadakkelan a resolusion, dagiti sabali a kita ti
 'specialpages-group-users' => 'Dagiti agar-aramat ken karkarbengan',
 'specialpages-group-highuse' => 'Adu ti panaka-usar a pampanid',
 'specialpages-group-pages' => 'Listaan dagiti panid',
-'specialpages-group-pagetools' => 'Dagiti ramramit ti panid',
+'specialpages-group-pagetools' => 'Ramramit ti panid',
 'specialpages-group-wiki' => 'Linaon ti wiki ken ramramit',
 'specialpages-group-redirects' => 'Maibawbaw-ing dagiti espesial a pampanid',
 'specialpages-group-spam' => 'Ramramit kontra spam',
@@ -3795,6 +3794,4 @@ Nupay kasta, mau-sarmo ti nakabuklan dita baba. Ti komentario nga itedmo ket mai
 'duration-centuries' => '$1 {{PLURAL:$1|siglo|sig-siglo}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenio|mil-milenio}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'tungtungan',
 );
index 40ac42d..6e99062 100644 (file)
@@ -638,9 +638,6 @@ Möppudýrið sem læsti skránni gaf þessa ástæðu: "\'\'$3\'\'".',
 
 Þú getur haldið áfram að nota {{SITENAME}} óþekkt(ur), eða þú getur <span class='plainlinks'>[$1 skráð þig inn aftur]</span> sem sami eða annar notandi.
 Athugaðu að sumar síður kunna að birtast líkt og þú sért ennþá skráð(ur) inn, þangað til að þú hreinsar skyndiminnið í vafranum þínum.",
-'welcomecreation' => '== Velkomin(n), $1! ==
-Aðgangurinn þinn hefur verið búinn til.
-Ekki gleyma að breyta [[Special:Preferences|{{SITENAME}}-stillingunum]] þínum.',
 'yourname' => 'Notandanafn:',
 'yourpassword' => 'Lykilorð:',
 'yourpasswordagain' => 'Endurrita lykilorð:',
@@ -2177,11 +2174,7 @@ Frekari breytingar á henni eða spallsíðu hennar munu verða sýndar þar, og
 'watcherrortext' => 'Villa kom upp við breytingu á stillingum vaktlistans fyrir "$1".',
 
 'enotif_reset' => 'Merkja allar síður sem skoðaðar',
-'enotif_newpagetext' => 'Þetta er ný síða.',
 'enotif_impersonal_salutation' => '{{SITENAME}}notandi',
-'changed' => 'breytt',
-'created' => 'búin til',
-'enotif_subject' => '$PAGETITLE á {{SITENAME}} hefur verið $CHANGEDORCREATED af $PAGEEDITOR',
 'enotif_lastvisited' => 'Heimsóttu eftirfarandi tengil til að sjá allar breytingar síðan 
 þú heimsóttir síðuna síðast:
   $1',
index 0cba9d3..140164c 100644 (file)
@@ -19,6 +19,7 @@
  * @author Brownout
  * @author Candalua
  * @author Civvì
+ * @author Codicorumus
  * @author Cruccone
  * @author Cryptex
  * @author Dakrismeno
@@ -434,6 +435,7 @@ $messages = array(
 'namespaces' => 'Namespace',
 'variants' => 'Varianti',
 
+'navigation-heading' => 'Menu di navigazione',
 'errorpagetitle' => 'Errore',
 'returnto' => 'Torna a $1.',
 'tagline' => 'Da {{SITENAME}}.',
@@ -675,9 +677,9 @@ L\'amministratore che lo ha bloccato ha fornito questa motivazione: "$3".',
 
 Si può continuare ad usare {{SITENAME}} come utente anonimo oppure <span class='plainlinks'>[$1 eseguire un nuovo accesso]</span>, con lo stesso nome utente o un nome diverso.
 Nota che alcune pagine potrebbero continuare ad apparire come se il logout non fosse avvenuto finché non viene pulita la cache del proprio browser.",
-'welcomecreation' => "== Benvenuto, $1! ==
-
-L'account è stato creato correttamente. Non dimenticare di personalizzare le [[Special:Preferences|preferenze di {{SITENAME}}]].",
+'welcomeuser' => 'Benvenuto, $1!',
+'welcomecreation-msg' => "L'account è stato creato correttamente.
+Non dimenticare di personalizzare le [[Special:Preferences|preferenze di {{SITENAME}}]].",
 'yourname' => 'Nome utente:',
 'yourpassword' => 'Password:',
 'yourpasswordagain' => 'Ripeti la password:',
@@ -1102,7 +1104,7 @@ Legenda: '''({{int:cur}})''' = differenze con la versione attuale, '''({{int:las
 'rev-deleted-text-permission' => "Questa versione della pagina è stata '''cancellata'''.
 Consultare il [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log delle cancellazioni] per ulteriori dettagli.",
 'rev-deleted-text-unhide' => "Questa versione della pagina è stata '''cancellata'''.
-Consultare il [{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} log delle cancellazioni] per ulteriori dettagli.
+Consultare il [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log delle cancellazioni] per ulteriori dettagli.
 Agli amministratori è ancora consentito [$1 visualizzare questa versione] se necessario.",
 'rev-suppressed-text-unhide' => "Questa versione della pagina è stata '''rimossa'''.
 Consultare il [{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} log di rimozione] per ulteriori dettagli.
@@ -1770,6 +1772,7 @@ $1',
 'backend-fail-notsame' => 'Esiste già un file non identico a  $1 .',
 'backend-fail-invalidpath' => '$1 non è un percorso di archiviazione valido.',
 'backend-fail-delete' => 'Impossibile cancellare il file $1.',
+'backend-fail-describe' => 'Impossibile modificare i metadati del file "$1".',
 'backend-fail-alreadyexists' => 'Il file $1 esiste già.',
 'backend-fail-store' => 'Impossibilie memorizzare file  $1  in  $2 .',
 'backend-fail-copy' => 'Impossibile copiare il file  $1  in  $2 .',
@@ -2274,19 +2277,23 @@ il titolo della pagina apparirà in '''grassetto''' nella pagina delle [[Special
 
 'enotif_mailer' => 'Sistema di notifica via e-mail di {{SITENAME}}',
 'enotif_reset' => 'Segna tutte le pagine come già visitate',
-'enotif_newpagetext' => 'Questa è una nuova pagina.',
 'enotif_impersonal_salutation' => 'Utente di {{SITENAME}}',
-'changed' => 'modificata',
-'created' => 'creata',
-'enotif_subject' => 'La pagina $PAGETITLE di {{SITENAME}} è stata $CHANGEDORCREATED da $PAGEEDITOR',
+'enotif_subject_deleted' => 'La pagina $1 di {{SITENAME}} è stata cancellata da {{gender:$2|$2}}',
+'enotif_subject_created' => 'La pagina $1 di {{SITENAME}} è stata creata da {{gender:$2|$2}}',
+'enotif_subject_moved' => 'La pagina $1 di {{SITENAME}} è stata spostata da {{gender:$2|$2}}',
+'enotif_subject_restored' => 'La pagina $1 di {{SITENAME}} è stata ripristinata da {{gender:$2|$2}}',
+'enotif_subject_changed' => 'La pagina $1 di {{SITENAME}} è stata modificata da {{gender:$2|$2}}',
+'enotif_body_intro_deleted' => 'La pagina $1 di {{SITENAME}} è stata cancellata da {{gender:$2|$2}} il $PAGEEDITDATE, vedi $3 per la versione attuale.',
+'enotif_body_intro_created' => 'La pagina $1 di {{SITENAME}} è stata creata da {{gender:$2|$2}} il $PAGEEDITDATE, vedi $3 per la versione attuale.',
+'enotif_body_intro_moved' => 'La pagina $1 di {{SITENAME}} è stata spostata da {{gender:$2|$2}} il $PAGEEDITDATE, vedi $3 per la versione attuale.',
+'enotif_body_intro_restored' => 'La pagina $1 di {{SITENAME}} è stata ripristinata da {{gender:$2|$2}} il $PAGEEDITDATE, vedi $3 per la versione attuale.',
+'enotif_body_intro_changed' => 'La pagina $1 di {{SITENAME}} è stata modificata da {{gender:$2|$2}} il $PAGEEDITDATE, vedi $3 per la versione attuale.',
 'enotif_lastvisited' => "Consultare $1 per vedere tutte le modifiche dall'ultima visita.",
 'enotif_lastdiff' => 'Vedere $1 per visualizzare la modifica.',
 'enotif_anon_editor' => 'utente anonimo $1',
 'enotif_body' => 'Gentile $WATCHINGUSERNAME,
 
-la pagina $PAGETITLE di {{SITENAME}} è stata $CHANGEDORCREATED in data $PAGEEDITDATE da $PAGEEDITOR; la versione attuale si trova all\'indirizzo $PAGETITLE_URL.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Oggetto della modifica, inserito dall\'autore: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2299,7 +2306,7 @@ Non verranno inviate altre notifiche in caso di ulteriori cambiamenti, a meno ch
              Il sistema di notifica di {{SITENAME}}, al tuo servizio
 
 --
-Per modificare le impostazioni delle notifiche via e-mail, visita 
+Per modificare le impostazioni delle notifiche via email, visita 
 {{canonicalurl:{{#special:Preferences}}}}
 
 Per modificare la lista degli osservati speciali, visita 
@@ -3053,6 +3060,8 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
 'markedaspatrollederror' => 'Impossibile contrassegnare la voce come verificata',
 'markedaspatrollederrortext' => 'Occorre specificare una modifica da contrassegnare come verificata.',
 'markedaspatrollederror-noautopatrol' => 'Non si dispone dei permessi necessari per segnare le proprie modifiche come verificate.',
+'markedaspatrollednotify' => 'La modifica a $1 è stata contrassegnata come verificata.',
+'markedaspatrollederrornotify' => 'Errore durante la verifica.',
 
 # Patrol log
 'patrol-log-page' => 'Modifiche verificate',
@@ -3119,6 +3128,7 @@ $1',
 'hours' => "{{PLURAL:$1|un'ora|$1 ore}}",
 'days' => '{{PLURAL:$1|un giorno|$1 giorni}}',
 'ago' => '$1 fa',
+'just-now' => 'proprio ora',
 
 # Bad image list
 'bad_image_list' => "Il formato è il seguente:
@@ -3880,9 +3890,9 @@ Le immagini vengono mostrate alla massima risoluzione disponibile, per gli altri
 'logentry-move-move_redir-noredirect' => '$1 ha spostato la pagina $3 a $4 al posto di un redirect senza lasciare redirect',
 'logentry-patrol-patrol' => '$1 ha segnato la versione $4 della pagina $3 come verificata',
 'logentry-patrol-patrol-auto' => '$1 ha segnato automaticamente la versione $4 della pagina $3 come verificata',
-'logentry-newusers-newusers' => "$1 ha creato un'utenza",
-'logentry-newusers-create' => "$1 ha creato un'utenza",
-'logentry-newusers-create2' => "$1 ha creato un'utenza $3",
+'logentry-newusers-newusers' => "L'account utente $1 è stato creato",
+'logentry-newusers-create' => "L'account utente $1 è stato creato",
+'logentry-newusers-create2' => "L'account utente $3 è stato creato da $1",
 'logentry-newusers-autocreate' => "L'utenza $1 è stata creata automaticamente",
 'newuserlog-byemail' => 'password inviata via mail',
 
@@ -3958,5 +3968,5 @@ Le immagini vengono mostrate alla massima risoluzione disponibile, per gli altri
 'duration-millennia' => '$1 {{PLURAL:$1|millennio|millenni}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'discussioni',
+'svg-long-error' => 'File SVG non valido: $1',
 );
index dd294e1..90d3732 100644 (file)
@@ -528,6 +528,7 @@ $messages = array(
 'namespaces' => '名前空間',
 'variants' => '変種',
 
+'navigation-heading' => '案内メニュー',
 'errorpagetitle' => 'エラー',
 'returnto' => '$1 に戻る。',
 'tagline' => '提供:{{SITENAME}}',
@@ -712,7 +713,7 @@ URL を間違って入力したか、正しくないリンクをたどった可
 'internalerror_info' => '内部エラー:$1',
 'fileappenderrorread' => '追加中に、「$1」を読み取れませんでした。',
 'fileappenderror' => '「$1」を「$2」に追加できませんでした。',
-'filecopyerror' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\82\92ã\80\8c$2ã\80\8dã\81¸複製できませんでした。',
+'filecopyerror' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\82\92ã\80\8c$2ã\80\8dã\81«複製できませんでした。',
 'filerenameerror' => 'ファイル名を「$1」から「$2」へ変更できませんでした。',
 'filedeleteerror' => 'ファイル「$1」を削除できませんでした。',
 'directorycreateerror' => 'ディレクトリ「$1」を作成できませんでした。',
@@ -776,8 +777,8 @@ $2',
 
 このまま匿名で{{SITENAME}}の使用を続行できます。同じまたは別の利用者として<span class='plainlinks'>[$1 もう一度ログイン]</span>することもできます。
 なお、ページによっては、ブラウザーのキャッシュをクリアするまで、ログインしているかのように表示され続ける場合があるためご注意ください。",
-'welcomecreation' => '== ようこそ、$1 さん! ==
-アカウントが作成されました。
+'welcomeuser' => 'ようこそ、$1さん!',
+'welcomecreation-msg' => 'アカウントが作成されました。
 [[Special:Preferences|{{SITENAME}}の個人設定]]の変更も忘れないようにしてください。',
 'yourname' => '利用者名:',
 'yourpassword' => 'パスワード:',
@@ -1962,19 +1963,20 @@ $1',
 'backend-fail-backup' => 'ファイル $1 をバックアップできませんでした。',
 'backend-fail-notexists' => 'ファイル $1 は存在しません。',
 'backend-fail-hashes' => 'ファイルの比較用のハッシュを取得できませんでした。',
-'backend-fail-notsame' => 'ファイル名 $1 は既に他のファイルが使用しています。',
-'backend-fail-invalidpath' => '$1 はストレージパスに使用できません。',
-'backend-fail-delete' => 'ファイル $1 を削除できませんでした。',
-'backend-fail-alreadyexists' => 'ファイル $1 は既に存在します。',
-'backend-fail-store' => 'ファイル $1 を $2 に格納できませんでした。',
-'backend-fail-copy' => 'ファイル $1 を $2 にコピーできませんでした。',
-'backend-fail-move' => 'ファイル $1 を $2 に移動できませんでした。',
+'backend-fail-notsame' => '異なる内容のファイル「$1」が既に存在します。',
+'backend-fail-invalidpath' => '「$1」は有効なストレージパスではありません。',
+'backend-fail-delete' => 'ファイル「$1」を削除できませんでした。',
+'backend-fail-describe' => 'ファイル「$1」のメタデータを変更できませんでした。',
+'backend-fail-alreadyexists' => 'ファイル「$1」は既に存在します。',
+'backend-fail-store' => 'ファイル「$1」を「$2」に格納できませんでした。',
+'backend-fail-copy' => 'ファイル「$1」を「$2」に複製できませんでした。',
+'backend-fail-move' => 'ファイル「$1」を「$2」に移動できませんでした。',
 'backend-fail-opentemp' => '一時ファイルを開けませんでした。',
 'backend-fail-writetemp' => '一時ファイルに書き込めませんでした。',
 'backend-fail-closetemp' => '一時ファイルを閉じることができませんでした。',
-'backend-fail-read' => 'ファイル $1 を読み込めませんでした。',
-'backend-fail-create' => 'ファイル $1 に書き込めませんでした。',
-'backend-fail-maxsize' => 'サイズが {{PLURAL:$2|$2 バイト}}を超えているため、ファイル $1 に書き込めませんでした。',
+'backend-fail-read' => 'ファイル「$1」から読み取れませんでした。',
+'backend-fail-create' => 'ファイル「$1」に書き込めませんでした。',
+'backend-fail-maxsize' => 'サイズが {{PLURAL:$2|$2 バイト}}を超えているため、ファイル「$1」に書き込めませんでした。',
 'backend-fail-readonly' => "ストレージバックエンド「$1」は現在読み取り専用です。理由:「''$2''」",
 'backend-fail-synced' => 'ファイル「$1」は、ストレージバックエンド内部で不一致の状態にあります',
 'backend-fail-connect' => 'ストレージバックエンド「$1」に接続できませんでした。',
@@ -2410,7 +2412,7 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'emailuser-title-target' => 'この{{GENDER:$1|利用者}}にメールを送信',
 'emailuser-title-notarget' => '利用者にメールを送信',
 'emailpage' => '利用者にメールを送信',
-'emailpagetext' => '以下のフォームを使用してこの利用者にメールを送信できます。
+'emailpagetext' => '以下のフォームを使用してこの{{GENDER:$1|利用者}}にメールを送信できます。
 「差出人」として、[[Special:Preferences|利用者の個人設定]]で入力したメールアドレスが設定されます。これにより、受信者があなたに直接返信できるようになります。',
 'usermailererror' => 'メールが以下のエラーを返しました:',
 'defemailsubject' => '{{SITENAME}} 利用者「$1」からのメール',
@@ -2422,16 +2424,16 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'nowikiemailtext' => 'この利用者は他の利用者からメールを受け取らない設定にしています。',
 'emailnotarget' => '受信者の利用者名が存在しない、あるいは無効です。',
 'emailtarget' => '受信者の利用者名を入力してください',
-'emailusername' => '利用者名',
+'emailusername' => '利用者名:',
 'emailusernamesubmit' => '送信',
 'email-legend' => '{{SITENAME}} の他の利用者にメールを送信',
-'emailfrom' => '差出人',
-'emailto' => '宛先',
-'emailsubject' => '件名',
-'emailmessage' => '本文',
+'emailfrom' => '差出人:',
+'emailto' => '宛先:',
+'emailsubject' => '件名:',
+'emailmessage' => '本文:',
 'emailsend' => '送信',
 'emailccme' => '自分宛に控えを送信する。',
-'emailccsubject' => '$1に送信したメールの控え:$2',
+'emailccsubject' => '$1 に送信したメールの控え: $2',
 'emailsent' => 'メールを送信しました',
 'emailsenttext' => 'メールを送信しました。',
 'emailuserfooter' => 'このメールは$1から$2へ、{{SITENAME}}の「利用者にメールを送信」機能で送信されました。',
@@ -2478,12 +2480,13 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 
 'enotif_mailer' => '{{SITENAME}} 通知メール',
 'enotif_reset' => 'すべてのページを訪問済みにする',
-'enotif_newpagetext' => 'これは新しいページです。',
 'enotif_impersonal_salutation' => '{{SITENAME}} 利用者',
-'changed' => '変更',
-'created' => '作成',
-'enotif_subject' => '{{SITENAME}}のページ「$PAGETITLE」が$PAGEEDITORによって$CHANGEDORCREATEDされました',
-'enotif_lastvisited' => '最後に閲覧して以降のすべての変更は $1 をご覧ください。',
+'enotif_subject_deleted' => '{{SITENAME}} ページ $1 を {{gender:$2|$2}} が削除しました',
+'enotif_subject_created' => '{{SITENAME}} ページ $1 を {{gender:$2|$2}} が作成しました',
+'enotif_subject_moved' => '{{SITENAME}} ページ $1 を {{gender:$2|$2}} が移動しました',
+'enotif_subject_restored' => '{{SITENAME}} ページ $1 を {{gender:$2|$2}} が復元しました',
+'enotif_subject_changed' => '{{SITENAME}} ページ $1 を {{gender:$2|$2}} が変更しました',
+'enotif_lastvisited' => '最終訪問以降のすべての変更は $1 をご覧ください。',
 'enotif_lastdiff' => 'この変更内容を表示するには $1 をご覧ください。',
 'enotif_anon_editor' => '匿名利用者「$1」',
 'enotif_body' => '$WATCHINGUSERNAMEさん
@@ -3027,7 +3030,7 @@ $1 のブロックの理由は「''$2''」です。",
 'allmessagesdefault' => '既定のメッセージ文',
 'allmessagescurrent' => '現在のメッセージ文',
 'allmessagestext' => 'これは MediaWiki 名前空間で利用できるシステム メッセージの一覧です。
-MediaWiki 全般のローカライズ(地域化)に貢献したい場合は、[//www.mediawiki.org/wiki/Localisation/ja MediaWiki のローカライズ] や [//translatewiki.net?setlang=ja translatewiki.net] をご覧ください。',
+MediaWiki 全般のローカライズ (地域化) に貢献したい場合は、[//www.mediawiki.org/wiki/Localisation/ja MediaWiki のローカライズ]や [//translatewiki.net?setlang=ja translatewiki.net] をご覧ください。',
 'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''が無効のため、このページを使用できません。",
 'allmessages-filter-legend' => '絞り込み',
 'allmessages-filter' => '変更状態により絞り込む:',
@@ -3314,6 +3317,8 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'markedaspatrollederror' => '巡回済みにできません',
 'markedaspatrollederrortext' => '巡回済みにするには、版を指定する必要があります。',
 'markedaspatrollederror-noautopatrol' => '自分の編集を巡回済みにする権限がありません。',
+'markedaspatrollednotify' => '$1 へのこの変更は巡回済みになりました。',
+'markedaspatrollederrornotify' => '巡回済みにするのに失敗しました。',
 
 # Patrol log
 'patrol-log-page' => '巡回記録',
@@ -4216,9 +4221,9 @@ MediaWikiは、有用であることを期待して配布されていますが
 'compare-rev1' => '版 1',
 'compare-rev2' => '版 2',
 'compare-submit' => '比較',
-'compare-invalid-title' => '指定したページ名は使用できません。',
-'compare-title-not-exists' => 'æ\8c\87å®\9aã\81\95ã\82\8cたページは存在しません。',
-'compare-revision-not-exists' => 'æ\8c\87å®\9aã\81\95ã\82\8cた版は存在しません。',
+'compare-invalid-title' => '指定したページ名は無効です。',
+'compare-title-not-exists' => 'æ\8c\87å®\9aã\81\97たページは存在しません。',
+'compare-revision-not-exists' => 'æ\8c\87å®\9aã\81\97た版は存在しません。',
 
 # Database error messages
 'dberr-header' => 'このウィキには問題があります',
@@ -4272,10 +4277,10 @@ MediaWikiは、有用であることを期待して配布されていますが
 'logentry-move-move_redir-noredirect' => '$1 がページ「$3」をリダイレクトの「$4」に、リダイレクトを残さずに移動しました',
 'logentry-patrol-patrol' => '$1 がページ「$3」の版 $4 を巡回済みとしました',
 'logentry-patrol-patrol-auto' => '$1 が自動的にページ「$3」の版 $4 を巡回済みとしました',
-'logentry-newusers-newusers' => '$1 が利用者アカウントを作成しました',
-'logentry-newusers-create' => '$1 が利用者アカウントを作成しました',
-'logentry-newusers-create2' => '$1 が利用者アカウント $3 を作成しました',
-'logentry-newusers-autocreate' => 'アカウント $1 が自動的に作成されました',
+'logentry-newusers-newusers' => '利用者アカウント $1 が作成されました',
+'logentry-newusers-create' => '利用者アカウント $1 が作成されました',
+'logentry-newusers-create2' => '利用者アカウント $3 が $1 により作成されました',
+'logentry-newusers-autocreate' => '利用者アカウント $1 が自動的に作成されました',
 'newuserlog-byemail' => 'パスワードをメールでお送りしました',
 
 # Feedback
@@ -4350,4 +4355,6 @@ MediaWikiは、有用であることを期待して配布されていますが
 'duration-centuries' => '$1 {{PLURAL:$1|世紀}}',
 'duration-millennia' => '$1{{PLURAL:$1|,000 年}}',
 
+# Unknown messages
+'svg-long-error' => '無効な SVG ファイル: $1',
 );
index cfc77ad..cf6eb39 100644 (file)
@@ -184,8 +184,8 @@ $messages = array(
 'newwindow' => '(buka ing jendhéla anyar)',
 'cancel' => 'Batalna',
 'moredotdotdot' => 'Liyané...',
-'mypage' => 'Kacaku',
-'mytalk' => 'Gunemanku',
+'mypage' => 'Kaca',
+'mytalk' => 'Wicara',
 'anontalk' => 'Dhiskusi IP puniki',
 'navigation' => 'Pandhu Arah',
 'and' => '&#32;Lan',
@@ -207,7 +207,7 @@ $messages = array(
 'vector-action-protect' => 'Reksa',
 'vector-action-undelete' => 'Batalna pambusakan',
 'vector-action-unprotect' => 'Owahi pangreksan',
-'vector-simplesearch-preference' => 'Aktifaken pamrayogi pamadosan ingkang kasampurnakaken (namung kulit vektor)',
+'vector-simplesearch-preference' => 'Urubaké wilah panggolèkan ringkes (namung kulit Vèktor)',
 'vector-view-create' => 'Gawé',
 'vector-view-edit' => 'Sunting',
 'vector-view-history' => 'Sajarah kaca',
@@ -217,6 +217,7 @@ $messages = array(
 'namespaces' => 'Ruang jeneng',
 'variants' => 'Varian',
 
+'navigation-heading' => 'Menu navigasi',
 'errorpagetitle' => 'Kasalahan',
 'returnto' => 'Bali menyang $1.',
 'tagline' => 'Saka {{SITENAME}}',
@@ -450,9 +451,6 @@ Pangurus sing ngopèni kuwi ngawedharaké: "$3".',
 Sampéyan bisa nganggo {{SITENAME}} sacara anonim, utawa bisa <span class='plainlinks'>[$1 mlebu log manèh]</span> kanthi jeneng panganggo sing padha utawa beda.
 
 Cathet yèn sapérangan kaca mungkin isih nampilaké tulisan yèn Sampéyan isih nèng njero log, kuwi bisa ilang yèn Sampéyan ngresiki ''cache'' pramban Sampéyan.",
-'welcomecreation' => '== Sugeng rawuh, $1! ==
-
-Akun panjenengan wis kacipta. Aja lali nata konfigurasi [[Special:Preferences|preferensi {{SITENAME}}]] panjenengan.',
 'yourname' => 'Asma pangangeman',
 'yourpassword' => 'Tembung sandhi:',
 'yourpasswordagain' => 'Balènana tembung sandhi',
@@ -675,7 +673,7 @@ Yèn ora sengaja tekan kéné, bisa ngeklik pencètan '''back''' waé ing panjla
 utawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} nyunting kaca iki]</span>.',
 'noarticletext-nopermission' => 'Saiki ora ana tèks ing kaca iki. 
 Sampéyan bisa [[Special:Search/{{PAGENAME}}|nggolèki judhul kaca iki]] nèng kaca liya, 
-utawa <span class="plainlinks">[{{fullurl:{{#Special:Log}}|kaca={{urlencode:{{FULLPAGENAME}}}}}} nggolèki log sing kaitan].',
+utawa <span class="plainlinks">[{{fullurl:{{#Special:Log}}|kaca={{urlencode:{{FULLPAGENAME}}}}}} nggolèki log sing kaitan]</span>, nanging Sampéyan ora nduwèni idin nggawé kaca iki.',
 'missing-revision' => 'Benahan #$1 saka kaca ajeneng "{{PAGENAME}}" ora ana.
 
 Iki biasané kasebabaké pranala riwayat sing kedaluwarsa saka kaca kuwi wis dibusak.
@@ -1054,7 +1052,7 @@ Rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 
 # Preferences page
 'preferences' => 'Preferensi (pilihan)',
-'mypreferences' => 'Préferènsiku',
+'mypreferences' => 'Préferènsi',
 'prefs-edits' => 'Gunggungé suntingan:',
 'prefsnologin' => 'Durung mlebu log',
 'prefsnologintext' => 'Panjenengan kudu <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}| mlebu log]</span> kanggo ngowahin préferènsi njenengan.',
@@ -1962,7 +1960,7 @@ Alamat layang-e sing panjenengan lebokaké ing [[Special:Preferences|préferèsi
 
 # Watchlist
 'watchlist' => 'Daftar artikel pilihan',
-'mywatchlist' => 'Daftar pangawasanku',
+'mywatchlist' => 'Daftar pangawasan',
 'watchlistfor2' => 'Kanggo $1 $2',
 'nowatchlist' => 'Daftar pangawasan panjenengan kosong.',
 'watchlistanontext' => 'Mangga $1 kanggo mirsani utawa nyunting daftar pangawasan panjenengan.',
@@ -1998,11 +1996,7 @@ Owah-owahan sing dumadi ing tembé ing kaca iku lan kaca dhiskusi sing kagandhè
 
 'enotif_mailer' => 'Pangirim Notifikasi {{SITENAME}}',
 'enotif_reset' => 'Tandhanana kabèh kaca sing wis ditiliki',
-'enotif_newpagetext' => 'Iki sawijining kaca anyar.',
 'enotif_impersonal_salutation' => 'Panganggo {{SITENAME}}',
-'changed' => 'kaubah',
-'created' => 'kadamel',
-'enotif_subject' => 'Kaca $PAGETITLE ing {{SITENAME}} wis $CHANGEDORCREATED déning $PAGEEDITOR',
 'enotif_lastvisited' => 'Deleng $1 kanggo kabèh owah-owahan wiwit pungkasan panjenengan niliki.',
 'enotif_lastdiff' => 'Tilikana $1 kanggo mirsani owah-owahan iki.',
 'enotif_anon_editor' => 'panganggo anonim $1',
@@ -2214,7 +2208,7 @@ $1',
 # Contributions
 'contributions' => 'Sumbangan panganggo',
 'contributions-title' => 'Kontribusi panganggo kanggo $1',
-'mycontris' => 'Kontribusiku',
+'mycontris' => 'Kontribusi',
 'contribsub2' => 'Kanggo $1 ($2)',
 'nocontribs' => 'Ora ditemokaké owah-owahan sing cocog karo kritéria kasebut iku.',
 'uctop' => ' (dhuwur)',
@@ -2255,7 +2249,7 @@ $1',
 'whatlinkshere-hideredirs' => '$1 pangalihan-pangalihan',
 'whatlinkshere-hidetrans' => '$1 transklusi',
 'whatlinkshere-hidelinks' => 'pranala-pranala $1',
-'whatlinkshere-hideimages' => '$1 pranala-pranala berkas',
+'whatlinkshere-hideimages' => '$1 pranala berkas',
 'whatlinkshere-filters' => 'Filter-filter',
 
 # Block/unblock
@@ -2693,11 +2687,22 @@ Mbokmanawa iki disebabaké anané pranala jaba sing klebu daftar ireng.',
 
 # Info page
 'pageinfo-title' => 'Inpormasi kanggo "$1"',
-'pageinfo-header-edits' => 'Suntingan',
+'pageinfo-header-edits' => 'Riwayat suntingan',
 'pageinfo-views' => 'Cacahing delokan',
-'pageinfo-watchers' => 'Cacahing pangawas',
-'pageinfo-edits' => 'Cacahing suntingan',
-'pageinfo-authors' => 'Cacahing beda-beda panganggit',
+'pageinfo-watchers' => 'Cacahé pangawas kaca',
+'pageinfo-lasttime' => 'Tanggal suntingan pungkasan',
+'pageinfo-edits' => 'Cacahé kabèh suntingan',
+'pageinfo-authors' => 'Cacahé kabèh panganggit sing bédha-bédha.',
+'pageinfo-recent-edits' => 'Cacahé suntingan saiki (ing $1 kapungkur)',
+'pageinfo-recent-authors' => 'Cacahé panganggit sing bédha-bédha saiki',
+'pageinfo-magic-words' => '{{PLURAL:$1|Tembung|Tembung}} mujarab ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|Katégori|Katégori}} kadhelikaké ($1)',
+'pageinfo-toolboxlink' => 'Informasi kaca',
+'pageinfo-redirectsto' => 'Dialihaké dhateng',
+'pageinfo-redirectsto-info' => 'info',
+'pageinfo-contentpage' => 'Diétung minangka satunggaling kaca isi',
+'pageinfo-contentpage-yes' => 'Iya',
+'pageinfo-protect-cascading-yes' => 'Iya',
 
 # Patrolling
 'markaspatrolleddiff' => 'Tandhanana wis dipatroli',
@@ -3470,9 +3475,9 @@ Gambar dituduhaké mawa résolusi kebak lan tipe liyané berkas bakal dibuka lan
 'logentry-move-move_redir-noredirect' => '$1 mindhahaké kaca $3 nèng $4 ngliwati pangalihan tanpa nginggalaké pangalihan',
 'logentry-patrol-patrol' => '$1 nandhai benahan $4 saka kaca $3 kaawasi',
 'logentry-patrol-patrol-auto' => '$1 otomatis nandhai benahan $4 saka kaca $3 kaawasai',
-'logentry-newusers-newusers' => '$1 nggawé akun panganggo',
-'logentry-newusers-create' => '$1 nggawé akun panganggo',
-'logentry-newusers-create2' => '$1 nggawé akun panganggo $3',
+'logentry-newusers-newusers' => 'Akun panganggo $1 digawé',
+'logentry-newusers-create' => 'Akun panganggo $1 digawé',
+'logentry-newusers-create2' => 'Akun panganggo $3 digawé déning $1',
 'logentry-newusers-autocreate' => 'Akun $1 digawé otomatis',
 'newuserlog-byemail' => 'tembung sandhi wis dikirim liwat e-mail',
 
index 59a7ad5..b1e2130 100644 (file)
@@ -304,7 +304,7 @@ $messages = array(
 'cancel' => 'გაუქმება',
 'moredotdotdot' => 'ვრცლად...',
 'mypage' => 'გვერდი',
-'mytalk' => 'á\83©á\83\94á\83\9bá\83\98 á\83\92á\83\90á\83\9cá\83®á\83\98á\83\9aá\83\95á\83\90',
+'mytalk' => 'განხილვა',
 'anontalk' => 'ამ IP-ს განხილვა',
 'navigation' => 'ნავიგაცია',
 'and' => '&#32;და',
@@ -336,6 +336,7 @@ $messages = array(
 'namespaces' => 'სახელთა სივრცე',
 'variants' => 'ვარიანტები',
 
+'navigation-heading' => 'სანავიგაციო მენიუ',
 'errorpagetitle' => 'შეცდომა',
 'returnto' => 'დაბრუნდი $1-ზე.',
 'tagline' => '{{SITENAME}} გვერდიდან',
@@ -585,8 +586,8 @@ $2',
 შეგიძლიათ გამოიყენოთ {{SITENAME}} ანონიმურად, ან შეგიძლიათ
 <span class='plainlinks'>[$1 შეხვიდეთ ისევ]</span> როგორც იგივე ან სხვა მომხმარებელი.
 შენიშნეთ, რომ ზოგიერთ გვერდზე შესაძლოა ისევ უჩვენებდეს რომ შესული ხართ სანამ თქვენი ბრაუზერის მეხსიერებას არ გაწმენდთ.",
-'welcomecreation' => '== მოგესალმებით, $1! ==
-თქვენი ანგარიში შექმნილია.
+'welcomeuser' => 'მოგესალმებით, $1!',
+'welcomecreation-msg' => 'თქვენი ანგარიში შექმნილია.
 არ დაგავიწყდეთ თქვენი [[Special:Preferences|{{SITENAME}}-ის კონფიგურაციის]] შეცვლა.',
 'yourname' => 'მომხმარებელი:',
 'yourpassword' => 'პაროლი:',
@@ -855,6 +856,10 @@ $2
 'noarticletext-nopermission' => 'ამ დროისთვის ეს გვერდი ცარიელია.
 თქვენ შეგიძლიათ [[Special:Search/{{PAGENAME}}|მოძებნოთ ეს სათაური]] სხვა გვერდებზე,
 ან <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} მოძებნოთ ჟურნალების შესაბამისი ჩანაწერები].</span> თქვენ არ გაქვთ ამ გვერდის შექმნის ნებართვა.',
+'missing-revision' => 'ვერსია $1 გვერდისათვის „{{PAGENAME}}“ არ არსებობს.
+
+ეს ჩვეულებრივ ხდება მაშინ, თუ მოძველებული ბმულით გადადიხართ გვერდზე, რომელიც წაიშალა.
+დეტალური ინფორმაცია შესაძლებელია იყოს [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} წაშლების ჟურნალში].',
 'userpage-userdoesnotexist' => 'ანგარიში «<nowiki>$1</nowiki>» არ არსებობს. დარწმუნდით, რომ მართლაც გსურთ ამ ანგარიშის შექმნა ან შესწორება.Убедитесь, что вы действительно желаете создать или изменить эту страницу.',
 'userpage-userdoesnotexist-view' => 'მომხმარებელი „$1“ არ არის დარეგისტრირებული.',
 'blocked-notice-logextract' => 'ეს მომხმარებელი უკვე დაიბლოკა.
@@ -1173,6 +1178,10 @@ $1",
 'editundo' => 'გაუქმება',
 'diff-multi' => '({{PLURAL:$2|ერთი მომხმარებლის|$2 მომხმარებლების}} {{PLURAL:$1|ერთი შუალედური ვერსია|$1 შუალედური ვერსიები}} არ არის ნაჩვენები.)',
 'diff-multi-manyusers' => '({{PLURAL:$2|ერთი მომხმარებლის|$2 მომხმარებლების}} {{PLURAL:$1|ერთი შუალედური ვერსია|$1 შუალედური ვერსიები}}, რომლებიც არ არის ნაჩვენები.)',
+'difference-missing-revision' => '{{PLURAL:$2|$2 ვერსია}} ამ შედარებისათვის ($1) {{PLURAL:$2|ვერ მოიძებნა}}.
+
+ეს ჩვეულებრივ ხდება მაშინ, თუ ვერსიების შედარების მოძველებული ბმულით გადადიხართ გვერდზე, რომელიც წაიშალა.
+დეტალური ინფორმაცია შესაძლებელია იყოს [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} წაშლების ჟურნალში].',
 
 # Search results
 'searchresults' => 'ძიების შედეგები',
@@ -1248,7 +1257,7 @@ $1",
 
 # Preferences page
 'preferences' => 'კონფიგურაცია',
-'mypreferences' => 'á\83©á\83\94á\83\9bá\83\98 á\83\99á\83\9dá\83\9cá\83¤á\83\98á\83\92á\83£á\83 á\83\90á\83ªá\83\98á\83\90',
+'mypreferences' => 'კონფიგურაცია',
 'prefs-edits' => 'რედაქციების რაოდენობა:',
 'prefsnologin' => 'შესული არ ხართ',
 'prefsnologintext' => 'თქვენ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} რეგისტრირებული უნდა იყოთ]</span> მომხმარებლის კონფიგურაციის შესაცვლელად.',
@@ -1377,7 +1386,7 @@ $1",
 'userrights-editusergroup' => 'რედაქტირება გაუკეთეთ მომხმარებელთა ჯგუფებს',
 'saveusergroups' => 'მომხმარებელთა ჯგუფების შენახვა',
 'userrights-groupsmember' => 'ჯგუფის წევრი:',
-'userrights-groupsmember-auto' => 'á\83\92á\83\90á\83£á\83\92á\83\94á\83\91á\83\90á\83 ი წევრი:',
+'userrights-groupsmember-auto' => 'á\83\9cá\83\90á\83\92á\83£á\83\9aá\83\98á\83¡á\83®á\83\9bá\83\94á\83\95ი წევრი:',
 'userrights-groups-help' => 'თქვენ შეგიძლიათ შეცვალოთ ჯგუფები, რომელშიც შედის ეს მომხმარებელი.
 * თუ ჯგუფის სახელწოდებასთან გაკეთებულია ნიშნული, ე.ი მომხმარებელი შედის ამ ჯგუფში.
 * თუ ნიშნული არ არის – მომხმარებელი არ განეკუთვნება არსებულ ჯგუფს.
@@ -1482,6 +1491,9 @@ $1",
 'rightslogtext' => 'მომხმარებელთა უფლებების ცვლილებათა ჟურბალი',
 'rightslogentry' => 'შესწორდა მომხმარებლის ჯგუფები $1  $2-დან  $3-ზე',
 'rightslogentry-autopromote' => 'ავტომატურად იქნა გადაყვანილი $2–დან $3–ში',
+'logentry-rights-rights' => '$1 შეცვალა ჯგუფის წევრობა $3-თვის $4-დან $5-ზე',
+'logentry-rights-rights-legacy' => '$1 შეცვალა ჯგუფის წევრობა $3-თვის',
+'logentry-rights-autopromote' => '$1 ავტომატურად იქნა გადაყვანილი $4–დან $5–ში',
 'rightsnone' => '(არცერთი)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1653,7 +1665,7 @@ $1",
 თუ თქვენ მაინც გსურთ მისი ატვირთვა დაბრუნდით უკან და ატვირთეთ სხვა სახელით. [[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => 'ფაილი ამ სახელწოდებით უკვე არსებობს ფაილების საერთო საცავში. თუ შეიძლება, უკან დაბრუნდით და ჩატვირთეთ ფაილი სხვა სახელწოდებით. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'ეს ფაილი არის შემდეგი {{PLURAL:$1|შემდეგი ფაილის|сშემდეგი ფაილების}} დუბლიკატი:',
-'file-deleted-duplicate' => 'á\83\9bá\83¡á\83\92á\83\90á\83\95á\83¡á\83\98 á\83¤á\83\90á\83\98á\83\9aá\83\98 ([[:$1]]) á\83£á\83\99á\83\95á\83\94 á\83¬á\83\90á\83¨á\83\9aá\83\98á\83\9aá\83\90. á\83\92á\83\97á\83®á\83\9dá\83\95á\83\97, á\83\92á\83\90á\83\94á\83ªá\83\90á\83\9cá\83\98á\83\97 á\83¤á\83\90á\83\98á\83\9aá\83\98á\83¡ á\83¬á\83\90á\83¨á\83\9aá\83\98á\83¡ á\83\98á\83¡á\83¢á\83\9dá\83 á\83\98á\83\90á\83¡, á\83\9bá\83\90á\83\9cá\83\90á\83\9bá\83\93á\83\94 á\83\95á\83\98á\83\93á\83 á\83\94 á\83\9bá\83\90á\83¡ á\83®á\83\94á\83\9aá\83\9bá\83\94á\83\9dá\83 á\83\94á\83\93 á\83\90á\83¢á\83\95á\83\98á\83 á\83¢ავთ.',
+'file-deleted-duplicate' => 'á\83\9bá\83¡á\83\92á\83\90á\83\95á\83¡á\83\98 á\83¤á\83\90á\83\98á\83\9aá\83\98 ([[:$1]]) á\83£á\83\99á\83\95á\83\94 á\83¬á\83\90á\83¨á\83\9aá\83\98á\83\9aá\83\90. á\83\92á\83\97á\83®á\83\9dá\83\95á\83\97, á\83\92á\83\90á\83\94á\83ªá\83\90á\83\9cá\83\98á\83\97 á\83¤á\83\90á\83\98á\83\9aá\83\98á\83¡ á\83¬á\83\90á\83¨á\83\9aá\83\98á\83¡ á\83\98á\83¡á\83¢á\83\9dá\83 á\83\98á\83\90á\83¡, á\83\9bá\83\90á\83\9cá\83\90á\83\9bá\83\93á\83\94 á\83\95á\83\98á\83\93á\83 á\83\94 á\83\9bá\83\90á\83¡ á\83®á\83\94á\83\9aá\83\9bá\83\94á\83\9dá\83 á\83\94á\83\93 á\83\90á\83¢á\83\95á\83\98á\83 á\83\97ავთ.',
 'uploadwarning' => 'გადატვირთვის შეხსენება',
 'uploadwarning-text' => 'გთხოვთ ჩაასწოროთ ფაილის აღწერა ქვევით და ხელმეორედ სცადოთ.',
 'savefile' => 'ფაილის შენახვა',
@@ -1709,6 +1721,7 @@ $1',
 'backend-fail-notsame' => 'უკვე არსებობს  ფაილი $1, რომელიც არაა იდენტური.',
 'backend-fail-invalidpath' => '$1 არ წარმოადგენს შენახვის ხელმისაწვდომ გზას.',
 'backend-fail-delete' => 'ფაილი $1-ის წაშლა ვერ მოხერხდა.',
+'backend-fail-describe' => 'შეუძლებელია მეტამონაცემების შეცვლა ფაილისათვის „$1“',
 'backend-fail-alreadyexists' => 'ფაილი $1 უკვე არსებობს.',
 'backend-fail-store' => 'ფაილი $1-ის შენახვა $2-ზე ვერ მოხერხდა.',
 'backend-fail-copy' => 'ფაილი $1-ის კოპირება $2-ში ვერ მოხერხდა.',
@@ -1839,8 +1852,8 @@ $1',
 'filehist-missing' => 'ფაილი ვერ მოიძებნა',
 'imagelinks' => 'ფაილის გამოყენება',
 'linkstoimage' => 'მომდევნო {{PLURAL:$1|გვერდი|გვერდები}} ებმის ამ ფაილს:',
-'linkstoimage-more' => '$1-á\83\96á\83\94 á\83\9bá\83\94á\83¢á\83\98 {{PLURAL:$1|á\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98\83¤ვერდების|გვერდები}} რომლებსაც აქვთ ბმულები ამ ფაილზე.
-В данном списке {{PLURAL:$1|წარმოდგენილია მხოლოდ $1 ბმული|წარმოდგენილია მხოლოდ $1 ბმულები|წარმოდგენილია მხოლოდ $1 ბმულების}} ამ ფაილზე
+'linkstoimage-more' => '$1-á\83\96á\83\94 á\83\9bá\83\94á\83¢á\83\98 {{PLURAL:$1|á\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98\83\92ვერდების|გვერდები}} რომლებსაც აქვთ ბმულები ამ ფაილზე.
+მოცემულ სიაში {{PLURAL:$1|წარმოდგენილია მხოლოდ $1 ბმული|წარმოდგენილია მხოლოდ $1 ბმულები|წარმოდგენილია მხოლოდ $1 ბმულების}} ამ ფაილზე.
 შეგიძლიათ ნახოთ ასევე [[Special:WhatLinksHere/$2|სრული სია]].',
 'nolinkstoimage' => 'არ არსებობს ამ ფაილთან დაკავშირებული გვერდები.',
 'morelinkstoimage' => 'იხილეთ [[Special:WhatLinksHere/$1|სხვა ბმულები]] ამ ფაილზე.',
@@ -1895,7 +1908,7 @@ $1',
 
 # MIME search
 'mimesearch' => 'MIME ძიება',
-'mimesearch-summary' => 'ამ გვერდის მეშვეობით ესაძლებელია ფაილების მოძიება მათი MIME-ტიპის მიხედვით. შეტანის ფორმა: შიგთავსის ტიპი/ქვეტიპი, მაგ <code>image/jpeg</code>.',
+'mimesearch-summary' => 'á\83\90á\83\9b á\83\92á\83\95á\83\94á\83 á\83\93á\83\98á\83¡ á\83\9bá\83\94á\83¨á\83\95á\83\94á\83\9dá\83\91á\83\98á\83\97 á\83¨á\83\94á\83¡á\83\90á\83«á\83\9aá\83\94á\83\91á\83\94á\83\9aá\83\98á\83\90 á\83¤á\83\90á\83\98á\83\9aá\83\94á\83\91á\83\98á\83¡ á\83\9bá\83\9dá\83«á\83\98á\83\94á\83\91á\83\90 á\83\9bá\83\90á\83\97á\83\98 MIME-á\83¢á\83\98á\83\9eá\83\98á\83¡ á\83\9bá\83\98á\83®á\83\94á\83\93á\83\95á\83\98á\83\97. á\83¨á\83\94á\83¢á\83\90á\83\9cá\83\98á\83¡ á\83¤á\83\9dá\83 á\83\9bá\83\90: á\83¨á\83\98á\83\92á\83\97á\83\90á\83\95á\83¡á\83\98á\83¡ á\83¢á\83\98á\83\9eá\83\98\83¥á\83\95á\83\94á\83¢á\83\98á\83\9eá\83\98, á\83\9bá\83\90á\83\92 <code>image/jpeg</code>.',
 'mimetype' => 'MIME ტიპი:',
 'download' => 'გადმოტვირთვა',
 
@@ -1926,7 +1939,7 @@ $1',
 'statistics-header-views' => 'გვერდის მონახულების სტატისტიკა',
 'statistics-header-users' => 'მომხმარებლის სტატისტიკა',
 'statistics-header-hooks' => 'სხვა სტატისტიკა',
-'statistics-articles' => 'á\83¡á\83¢á\83\90á\83¢á\83\98á\83\94á\83\91á\83\98á\83¡',
+'statistics-articles' => 'á\83¡á\83¢á\83\90á\83¢á\83\98á\83\90',
 'statistics-pages' => 'გვერდები',
 'statistics-pages-desc' => 'ვიკის ყველა გვერდი, განხილვის, გადამისამართების და სხვ. ჩათვლით.',
 'statistics-files' => 'ატვირთული ფაილები',
@@ -1937,7 +1950,7 @@ $1',
 'statistics-views-peredit' => 'შესწორებათა ხილვა',
 'statistics-users' => 'დარეგისტრირებული [[Special:ListUsers|მომხმარებლები]]',
 'statistics-users-active' => 'აქტიური მომხმარებლები',
-'statistics-users-active-desc' => 'მომხმარებლები, რომლებმაც განახორციელეს ქმედება  {{PLURAL:$1|ბოლო $1 დღე|ბოლო  $1 დღის|ბოლო $1 დღეების}}',
+'statistics-users-active-desc' => 'მომხმარებლები, რომლებმაც განახორციელეს ქმედება {{PLURAL:$1|ბოლო $1 დღის|ბოლო $1 დღის}} განმავლობაში',
 'statistics-mostpopular' => 'ყველზე ხშირად ხილვადი გვერდები',
 
 'disambiguations' => 'გვერდები, რომელთაც აქვთ ბმული მრავალმნიშვნელოვან გვერდებზე',
@@ -2011,7 +2024,7 @@ $1',
 'protectedpages-indef' => 'მხოლოდ უვადო დაცვები',
 'protectedpages-cascade' => 'მხოლოდ კასკადური დაცვა',
 'protectedpagestext' => 'შემდეგი გვერდები დაცულია გადატანისა თუ ცვლილებებისგან.',
-'protectedpagesempty' => 'ამ დროისთვის არ არსებობს დაცული გვერდები მოთხოვნილი პარამეტრეით.',
+'protectedpagesempty' => 'á\83\90á\83\9b á\83\93á\83 á\83\9dá\83\98á\83¡á\83\97á\83\95á\83\98á\83¡ á\83\90á\83  á\83\90á\83 á\83¡á\83\94á\83\91á\83\9dá\83\91á\83¡ á\83\93á\83\90á\83ªá\83£á\83\9aá\83\98 á\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98 á\83\9bá\83\9dá\83\97á\83®á\83\9dá\83\95á\83\9cá\83\98á\83\9aá\83\98 á\83\9eá\83\90á\83 á\83\90á\83\9bá\83\94á\83¢á\83 á\83\94á\83\91á\83\98á\83\97.',
 'protectedtitles' => 'დაცული სათაურები',
 'protectedtitlestext' => 'შემდეგი სახელების გამოყენება არ შეიძლება',
 'protectedtitlesempty' => 'ამ დროისთვის არ არსებობს მოთხოვნილი გვერდები მოცემული პარამეტრებით.',
@@ -2141,7 +2154,7 @@ $1',
 'listgrouprights-addgroup-all' => 'ჩაამატეთ ყველა ჯგუფი',
 'listgrouprights-removegroup-all' => 'ყველა ჯგუფის წაშლა',
 'listgrouprights-addgroup-self' => 'შეუძლია ჩაუმატოს {{PLURAL:$2|ჯგუფი|ჯგუფები}} თავის ანგარიშს: $1',
-'listgrouprights-removegroup-self' => 'á\83¨á\83\94á\83£á\83«á\83\9aá\83\98á\83\90 á\83¬á\83\90á\83¨á\83\90á\83\9aá\83\9dá\83¡ {{PLURAL:$2|á\83¯á\83\92á\83§á\83¤á\83£|ჯგუფები}} თავისი ანგარიშიდან: $1',
+'listgrouprights-removegroup-self' => 'á\83¨á\83\94á\83£á\83«á\83\9aá\83\98á\83\90 á\83¬á\83\90á\83¨á\83\90á\83\9aá\83\9dá\83¡ {{PLURAL:$2|á\83¯á\83\92á\83£á\83¤á\83\98|ჯგუფები}} თავისი ანგარიშიდან: $1',
 'listgrouprights-addgroup-self-all' => 'შეუძლია ყელა ჯგუფია ჩამატება ანგარიშს.',
 'listgrouprights-removegroup-self-all' => 'შეუძლია თავისი ანგარიშის ყველა ჯგუფის წაშლა.',
 
@@ -2184,7 +2197,7 @@ $1',
 
 # Watchlist
 'watchlist' => 'ჩემი კონტროლის სია',
-'mywatchlist' => 'á\83©á\83\94á\83\9bá\83\98 á\83\99á\83\9dá\83\9cá\83¢á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83¡á\83\98á\83\90',
+'mywatchlist' => 'კონტროლის სია',
 'watchlistfor2' => '$1 ($2) თვის',
 'nowatchlist' => 'თქვენი კონტროლის სია ცარიელია.',
 'watchlistanontext' => '$1
@@ -2222,19 +2235,18 @@ $1',
 
 'enotif_mailer' => '{{SITENAME}}. ელ. ფოსტით შეტყობინების სამსახური',
 'enotif_reset' => 'აღნიშნე ყველა გვერდი, როგორც გადასინჯული',
-'enotif_newpagetext' => 'ეს არის ახალი გვერდი.',
 'enotif_impersonal_salutation' => 'ვიკიპედიის მომხმარებელი',
-'changed' => 'შეცვლილი',
-'created' => 'შექმნილია',
-'enotif_subject' => '{{SITENAME}}: გვერდი $PAGETITLE $CHANGEDORCREATED იქნა მომხმარებლის $PAGEEDITOR მიერ',
+'enotif_subject_deleted' => 'გვერდი პროექტიდან „{{SITENAME}}“ სახელწოდებით „$1“ წაშალა {{gender:$2|მომხმარებელმა}} $2',
+'enotif_subject_created' => 'გვერდი პროექტიდან „{{SITENAME}}“ სახელწოდებით „$1“ შექმნა {{gender:$2|მომხმარებელმა}} $2',
+'enotif_subject_moved' => 'გვერდი პროექტიდან „{{SITENAME}}“ სახელწოდებით „$1“ გადაიტანა {{gender:$2|მომხმარებელმა}} $2',
+'enotif_subject_restored' => 'გვერდი პროექტიდან „{{SITENAME}}“ სახელწოდებით „$1“ აღადგინა {{gender:$2|მომხმარებელმა}} $2',
+'enotif_subject_changed' => 'გვერდი პროექტიდან „{{SITENAME}}“ სახელწოდებით „$1“ შეცვალა {{gender:$2|მომხმარებელმა}} $2',
 'enotif_lastvisited' => 'იხ. $1 ყველა ცვლილებისთვის თქვენი ბოლო შემოსვლის შემდეგ.',
 'enotif_lastdiff' => 'იხილეთ $1 ამ ცვლილების სანახავად.',
 'enotif_anon_editor' => 'ანონიმური მომხმარებელი $1',
-'enotif_body' => 'პატივცემულო $WATCHINGUSERNAME,
-
-პროექტ "{{SITENAME}}"-ის გვერდი $PAGETITLE შეიცვალა $CHANGEDORCREATED $PAGEEDITDATE მომხმარებელ $PAGEEDITOR-ის მიერ, მინდინარე ვერსიის სანახავად იხილეთ $PAGETITLE_URL.
+'enotif_body' => 'ძვირფასო $WATCHINGUSERNAME,
 
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 ცვლილების მოკლე აღწერა: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2242,10 +2254,9 @@ $NEWPAGE
 ელ.ფოსტა: $PAGEEDITOR_EMAIL
 ვიკი: $PAGEEDITOR_WIKI
 
-შემდგომი ცვლილებების შესახებ შეტყობინებების მისაღებად ამ გვერდს კვლავ უნდა ესტუმროთ.
-აგრეთვე შეგიძლიათ აღადგინოთ შეტყობინებათა პარამეტრები თქვენს კონტროლის სიაში შეტანილი ყველა საკონტროლო გვერდისათვის.
+შემდგომი ცვლილებების შესახებ შეტყობინებების მისაღებად ამ გვერდს კვლავ უნდა ესტუმროთ. თქვენ აგრეთვე შეგიძლიათ თქვენ კონტროლის სიაში გათიშოთ შეტყობინების ფუნქცია ყველა გვერდისათვის.
 
-             {{SITENAME}} შეტყობინებათა სისტემა
+                        {{SITENAME}} შეტყობინებათა სისტემა
 
 --
 შეტყობინების პარამეტრების ცვლილება
@@ -2294,7 +2305,7 @@ $UNWATCHURL
 იმოქმედეთ სიფრთხილით.',
 
 # Rollback
-'rollback' => 'á\83 á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98á\83¡ á\83\92á\83\90á\83£á\83¥á\83\9bá\83\94á\83\91á\83\90',
+'rollback' => 'ცვლილებების გაუქმება',
 'rollback_short' => 'სწრაფი გაუქმება',
 'rollbacklink' => 'სწრაფი გაუქმება',
 'rollbacklinkcount' => '$1 {{PLURAL:$1|ცვლილების|ცვლილების}} გაუქმება',
@@ -2398,7 +2409,7 @@ $UNWATCHURL
 'undeleterevdel' => 'აღდგენა არ შესრულდება, თუ ის გამოიწვევს გვერდის ბოლო ვერსიის ან ფაილის ნაწილობრივ წაშლას.
 ასეთ შემთხვევაში თქვენ უნდა მოხსნათ ნიშნული ან აჩვენოთ ბოლო წაშლილი ვერსიები.',
 'undeletehistorynoadmin' => 'ეს სტატია წაშლილია. წაშლის მიზეზი ნაჩვენებია მოკლე ანოტაციაში ქვემოთ, იმ მომხმარებელთა დეტალებთან ერთად ვინც რედაქტირება გაუკეთა ამ გვერდს წაშლის წინ. იმ წაშლილი ტექსტების აქტუალური ვერსიები მიღწევადია მხოლოდ ადმინისტრატორებისათვის.',
-'undelete-revision' => 'წაიშალა ვერსია $1 ($4-დან  $5) მომხმარებლის $3:',
+'undelete-revision' => '$1-ის წაშლილი ვერსია ($5, $4-ის მდგომარეობით), შენახული მომხმარებლის $3 მიერ:',
 'undeleterevision-missing' => 'არასწორი ან არარსებული ვერსია. სავარაუდოდ ქვენ გადახვედით არასწორ ბმულზე, ან იგი წაიშალა არქივიდან.',
 'undelete-nodiff' => 'წინა ცვლილება ვერ ვიპოვეთ.',
 'undeletebtn' => 'აღდგენა',
@@ -2445,7 +2456,7 @@ $1',
 # Contributions
 'contributions' => 'მომხმარებლის წვლილი',
 'contributions-title' => 'მომხმარებლის წვლილი $1',
-'mycontris' => 'á\83©á\83\94á\83\9bá\83\98 á\83¬á\83\95á\83\9aá\83\98á\83\9aá\83\98',
+'mycontris' => 'წვლილი',
 'contribsub2' => '$1 ($2) თვის',
 'nocontribs' => 'ძებნისას მითითებული პარამეტრების შესაბამისი არც ერთი ცვლილება ნაპოვნი არ არის',
 'uctop' => '(თავი)',
@@ -2843,7 +2854,7 @@ $1',
 'tooltip-pt-anonuserpage' => 'ჩემი IP-ის მქონე მომხმარებლის გვერდი',
 'tooltip-pt-mytalk' => 'თქვენი განხილვის გვერდი',
 'tooltip-pt-anontalk' => 'ჩემი  IP-ის განხილვის გვერდი',
-'tooltip-pt-preferences' => 'á\83©á\83\94á\83\9bი კონფიგურაცია',
+'tooltip-pt-preferences' => 'á\83\97á\83¥á\83\95á\83\94á\83\9cი კონფიგურაცია',
 'tooltip-pt-watchlist' => 'გვერდების სია, რომელთა ცვლილებებს თქვენ უთვალთვალებთ',
 'tooltip-pt-mycontris' => 'თქვენი წვლილის სია',
 'tooltip-pt-login' => 'სასურველია დარეგისტრირდეთ, თუმცა აუცილებელია არაა.',
@@ -2953,7 +2964,7 @@ $1',
 
 # Info page
 'pageinfo-title' => 'ინფორმაცია „$1“-თვის',
-'pageinfo-not-current' => 'á\83\9bá\83\9dá\83\9cá\83\90á\83ªá\83\94á\83\9bá\83\94á\83\91á\83\98 á\83¬á\83\90á\83 á\83\9bá\83\9dá\83\93á\83\92á\83\94á\83\9cá\83\98á\83\9aá\83\98á\83\90 á\83\9bá\83®á\83\9dá\83\9aá\83\9dá\83\93 á\83\9bá\83\98á\83\9bá\83\93á\83\98á\83\9cá\83\90á\83 á\83\94 á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\94á\83\91á\83\98á\83¡á\83\90á\83\97á\83\95á\83\98á\83¡.',
+'pageinfo-not-current' => 'á\83\91á\83\9dá\83\93á\83\98á\83¨á\83\98, á\83\94á\83¡ á\83\98á\83\9cá\83¤á\83\9dá\83 á\83\9bá\83\90á\83ªá\83\98á\83\90 á\83¨á\83\94á\83\98á\83«á\83\9aá\83\94á\83\91á\83\90 á\83\90á\83  á\83\98á\83§á\83\9dá\83¡ á\83«á\83\95á\83\94á\83\9a á\83\95á\83\94á\83 á\83¡á\83\98á\83\94á\83\91á\83¨á\83\98.',
 'pageinfo-header-basic' => 'საბაზისო ინფორმაცია',
 'pageinfo-header-edits' => 'რედაქტირების ისტორია',
 'pageinfo-header-restrictions' => 'გვერდის დაცვა',
@@ -2962,6 +2973,7 @@ $1',
 'pageinfo-default-sort' => 'სტანდარტული სორტირების გასაღები',
 'pageinfo-length' => 'გვერდის სიგრძე (ბაიტებში)',
 'pageinfo-article-id' => 'გვერდის ID',
+'pageinfo-language' => 'გვერდის შინაარსის ენა',
 'pageinfo-robot-policy' => 'საძიებო სისტემის სტატუსი',
 'pageinfo-robot-index' => 'ინდექსირდება',
 'pageinfo-robot-noindex' => 'არ ინდექსირდება',
@@ -2983,9 +2995,13 @@ $1',
 'pageinfo-hidden-categories' => 'დამალული {{PLURAL:$1|კატეგორია|კატეგორია}} ($1)',
 'pageinfo-templates' => 'ინტეგრირებულია {{PLURAL:$1|თარგი|თარგი}} ($1)',
 'pageinfo-toolboxlink' => 'გვერდის ინფორმაცია',
+'pageinfo-redirectsto' => 'გადამისამართება',
 'pageinfo-redirectsto-info' => 'ინფორმაცია',
+'pageinfo-contentpage' => 'ითვლება როგორც შინაარსის გვერდი',
 'pageinfo-contentpage-yes' => 'დიახ',
+'pageinfo-protect-cascading' => 'კასკადური დაცვა აქედან',
 'pageinfo-protect-cascading-yes' => 'დიახ',
+'pageinfo-protect-cascading-from' => 'კასკადური დაცვა',
 
 # Skin names
 'skinname-standard' => 'კლასიკური',
@@ -2999,15 +3015,17 @@ $1',
 'skinname-vector' => 'ვექტორული',
 
 # Patrolling
-'markaspatrolleddiff' => 'á\83\9bá\83\9dá\83\9cá\83\98á\83¨á\83\9cá\83\94 á\83 á\83\9dá\83\92á\83\9dá\83 á\83ª á\83\9eá\83\90á\83¢á\83 á\83\9dლირებული',
+'markaspatrolleddiff' => 'á\83\9bá\83\9dá\83\9cá\83\98á\83¨á\83\9cá\83\94 á\83 á\83\9dá\83\92á\83\9dá\83 á\83ª á\83\9eá\83\90á\83¢á\83 á\83£ლირებული',
 'markaspatrolledtext' => 'მონიშნე ეს სტატია როგორც პატრულირებული',
-'markedaspatrolled' => 'á\83\9bá\83\9dá\83\9cá\83\98á\83¨á\83\9cá\83£á\83\9aá\83\98á\83\90 á\83 á\83\9dá\83\92á\83\9dá\83 á\83ª á\83\9eá\83\90á\83¢á\83 á\83\9dლირებული',
-'markedaspatrolledtext' => 'á\83\90á\83 á\83©á\83\94á\83£á\83\9aá\83\98 á\83\95á\83\94á\83 á\83¡á\83\98á\83\90 [[:$1]] á\83\9bá\83\9dá\83\9cá\83\98á\83¨á\83\9cá\83£á\83\9aá\83\98á\83\90 á\83 á\83\9dá\83\92á\83\9dá\83 á\83ª á\83¨á\83\94á\83\9bá\83\9dá\83¬á\83\9bებული',
+'markedaspatrolled' => 'á\83\9bá\83\9dá\83\9cá\83\98á\83¨á\83\9cá\83£á\83\9aá\83\98á\83\90 á\83 á\83\9dá\83\92á\83\9dá\83 á\83ª á\83\9eá\83\90á\83¢á\83 á\83£ლირებული',
+'markedaspatrolledtext' => 'á\83\90á\83 á\83©á\83\94á\83£á\83\9aá\83\98 á\83\95á\83\94á\83 á\83¡á\83\98á\83\90 [[:$1]] á\83\9bá\83\9dá\83\9cá\83\98á\83¨á\83\9cá\83£á\83\9aá\83\98á\83\90 á\83 á\83\9dá\83\92á\83\9dá\83 á\83ª á\83\9eá\83\90á\83¢á\83 á\83£á\83\9aá\83\98á\83 ებული',
 'rcpatroldisabled' => 'ბოლო ცვლილებების პატრულირება აკრძალულია',
 'rcpatroldisabledtext' => 'ბოლო ცვლილებების პატრულირების შესაძლებლობა ამ მომენტისთვის გათიშულია',
 'markedaspatrollederror' => 'შეუძლებელია ამ სტატიის მოhttp://translatewiki.net/w/i.php?title=MediaWiki:Markedaspatrollederror/ka&action=edit&loadgroup=core&loadtask=untranslatedნიშნვნა პატრულირებულად.',
 'markedaspatrollederrortext' => 'თქვენ უნდა მონიშნოთ ვერსია, რომელიც პატრულირებულად ჩაითვლება.',
-'markedaspatrollederror-noautopatrol' => 'თქვენ ვერ მონიშნავთ ამ შესწორებას შემოწმებულად.',
+'markedaspatrollederror-noautopatrol' => 'თქვენ ვერ მონიშნავთ თქვენივე შესწორებებს პატრულირებულად.',
+'markedaspatrollednotify' => 'ეს ცვლილება გვერდზე $1 პატრულირებულად მოინიშნა.',
+'markedaspatrollederrornotify' => 'პატრულირებულად მონიშვნა ვერ მოხერხდა.',
 
 # Patrol log
 'patrol-log-page' => 'პატრულირების ჟურნალი',
@@ -3077,6 +3095,7 @@ $1',
 'hours' => '$1 საათის',
 'days' => '$1 დღის',
 'ago' => '$1 წინ',
+'just-now' => 'ახლახანს',
 
 # Bad image list
 'bad_image_list' => 'ფორმატი შემდეგია:
@@ -3372,7 +3391,7 @@ $8',
 'exif-lightsource-9' => 'კარგი ამინდი',
 'exif-lightsource-10' => 'მოღრუბლული ამინდი',
 'exif-lightsource-11' => 'ჩრდილი',
-'exif-lightsource-12' => 'ღის სინათლის ნათურა D (5700 − 7100K)',
+'exif-lightsource-12' => 'á\83\93á\83¦á\83\98á\83¡ á\83¡á\83\98á\83\9cá\83\90á\83\97á\83\9aá\83\98á\83¡ á\83\9cá\83\90á\83\97á\83£á\83 á\83\90 D (5700 â\88\92 7100K)',
 'exif-lightsource-13' => 'დღის სინათლის ნათურა N(4600 − 5400K)',
 'exif-lightsource-14' => 'დღის სინათლის ნათურა W (3900 − 4500K)',
 'exif-lightsource-15' => 'დღის სინათლის ნათურა WW (3200 − 3700K)',
@@ -3761,6 +3780,7 @@ $5
 'version-license' => 'ლიცენზია',
 'version-poweredby-credits' => "ეს ვიკი მუშაობს '''[//www.mediawiki.org/ MediaWiki]'''-ს ძრავზე, copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'სხვები',
+'version-credits-summary' => 'გვინდა მადლობა გადავუხადოთ შემდეგ მომხმარებლებს მათი წვლილისათვის [[Special:Version|მედიავიკის]] განვითარებაში.',
 'version-license-info' => 'MediaWiki არის თავისუფალი პროგრამული უზრუნველყოფა; შეგიძლიათ მისი გავრცელება ან/და მოდიფიცირება GNU General Public License ლიცენზიის პირობების შესაბამისად. როგორც გამოქვეყნებულია თავისუფალი პროგრამული უზრუნველყოფის ფონდის მიერ; ან ლიცენზიის მეორე ვერსიაში, ან (თქვენი აზრით) უფრო ახალში.
 
 MediaWiki ვრცელდება იმ იმედით, რომ ის სასარგებლო იქნება, მაგრამ გარანტიის გარეშე; კომერციული ღირებულების ნაგულისხმევი გარანტიის გარეშეც კი ან რაიმე მიზნისთვის სარგებლის მისაღებად. მეტი დეტალური ინფორმაციისთვის, იხილეთ GNU General Public License.
@@ -3898,9 +3918,9 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 'logentry-move-move_redir-noredirect' => '$1 გადაიტანა გვერდი $3 $4-ში გადამისამართების დატოვების გარეშე',
 'logentry-patrol-patrol' => '$1 გააკეთა გვერდის „$3“ $4 ვერსიის პატრულირება',
 'logentry-patrol-patrol-auto' => '$1 ავტომატურად გააკეთა გვერდის „$3“ $4 ვერსიის პატრულირება',
-'logentry-newusers-newusers' => '$1 შექმნა მომხმარებლის ანგარიში',
-'logentry-newusers-create' => '$1 შექმნა მომხმარებლის ანგარიში',
-'logentry-newusers-create2' => '$1 შექმნა მომხმარებელ $3 ანგარიში',
+'logentry-newusers-newusers' => 'მომხმარებლის ანგარიში $1 შექმნილია',
+'logentry-newusers-create' => 'მომხმარებლის ანგარიში $1 შეიქმნა',
+'logentry-newusers-create2' => 'მომხმარებლის ანგარიში $3 შექმნა მომხმარებელმა $1',
 'logentry-newusers-autocreate' => 'ანგარიში $1 ავტომატურად შეიქმნა',
 'newuserlog-byemail' => 'პაროლი ელ-ფოსტითაა გამოგზავნილი',
 
@@ -3977,5 +3997,5 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 'duration-millennia' => '$1 {{PLURAL:$1|ათასწლეული|ათასწლეული}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'განხილვა',
+'svg-long-error' => 'არასწორი SVG ფაილი: $1',
 );
index f5531d0..51a66ca 100644 (file)
@@ -445,10 +445,6 @@ Anedbal i tid sekkweṛen yefkad taɣẓint agi : « $3 ».',
 
 Tzemreḍ ad tesseqdceḍ {{SITENAME}} d udrig, <span class='plainlinks'>[$1 ad tkecmeḍ daɣen]</span> s yisem n wemseqdac inek (neɣ nniḍen).
 Kra n isebtar zemren ad sskanen belli mazal-ik s yisem n wemseqdac inek armi temḥuḍ lkac.",
-'welcomecreation' => '== Anṣuf yisek (yisem), $1 ! ==
-
-Amiḍan ik (im) yesnulfad.
-Ur tettuḍ ara ad tbeddleḍ [[Special:Preferences|isemyifiyen inek (inem) ɣef {{SITENAME}}]].',
 'yourname' => 'Isem n wemseqdac',
 'yourpassword' => 'Awal n tbaḍnit',
 'yourpasswordagain' => 'Ɛiwed ssekcem awal n tbaḍnit',
@@ -2037,11 +2033,7 @@ Ma tebɣiḍ ad tekkseḍ asebter seg wumuɣ n uɛessi inek, wekki ɣef \"Fakk a
 
 'enotif_mailer' => 'Email n talɣut n {{SITENAME}}',
 'enotif_reset' => 'Rcem akk isebtar mmeẓren',
-'enotif_newpagetext' => 'Wagi d asebter amaynut.',
 'enotif_impersonal_salutation' => 'Amseqdac n {{SITENAME}}',
-'changed' => 'yettubeddel',
-'created' => 'yettwaxleq',
-'enotif_subject' => 'Asebter $PAGETITLE n {{SITENAME}} $CHANGEDORCREATED sɣur $PAGEEDITOR',
 'enotif_lastvisited' => 'Ẓer $1 i akk ibeddlen segwasmi tkecmeḍ tikelt taneggarut.',
 'enotif_lastdiff' => 'Ẓer $1 akken ad tmuqleḍ abeddel.',
 'enotif_anon_editor' => 'aseqdac ur i siggezen ara $1',
@@ -2549,6 +2541,7 @@ Lukan a t-tesseqdceḍ yezmer ad yexsser aselkim inek/inem.",
 'hours' => '{{PLURAL:$1|$1 asrag|$1 isragen}}',
 'days' => '{{PLURAL:$1|$1 ass|$1 ussan}}',
 'ago' => '$1 aya',
+'just-now' => 'Tura kan',
 
 # Bad image list
 'bad_image_list' => 'Amasal d-wagi :
index a685766..f9b7d34 100644 (file)
@@ -283,6 +283,7 @@ $1',
 'toc' => 'فہرست',
 'showtoc' => 'پشاوے',
 'hidetoc' => 'کھوشتاوے',
+'collapsible-collapse' => 'خاتمہ/Collapse',
 'thisisdeleted' => 'لوڑے  یا بحال کورے $1',
 'viewdeleted' => 'لوڑے $1؟',
 'restorelink' => '{{PLURAL:$1|ای ترمیم حذف ہوی|$1 ترامیم حذف ہونی}}',
@@ -386,9 +387,6 @@ MySQL جوابِ خطاء پرائے "$3: $4"',
 # Login and logout pages
 'logouttext' => "'''ھنیسے تو خارج بیتی آسوس'''<br />
 تو خفی الاسم {{SITENAME}}  استعمال جاری لاکھیکو بوس، یا دوبارہ ھیہ نامو یا مختلف نامان سورا داخل دی بیکو بوس۔  ھیہ یاد آوری کورے کہ ای کما صفحات ھش <span class='plainlinks'>[\$1 دوباری لاگن بوس]</span> غیچھی گونی کہ تو ھنیسے خارج نو بیتی آسوس، کلہ پت کہ تو تان تفصحہ (براؤزرو) ابطن (cache) صاف نوکوروس۔\",",
-'welcomecreation' => '== رحمت عزیز چترالی تتے خوشان گیے ریران، $1 ! ==
-
-تہ  کھاتہ ساوزینو بیتی شیر تو تان [[Special:Preferences|{{SITENAME}} ترجیحات]]ن مرتب کوریکو مو روخڅے.',
 'yourname' => 'اسمِ رکنیت',
 'yourpassword' => 'کلمۂ شناخت(پاسورڈ)',
 'yourpasswordagain' => 'کلمۂ شناخت(پاسورڈو)دوبارہ نیویشے',
@@ -557,6 +555,8 @@ MySQL جوابِ خطاء پرائے "$3: $4"',
 صفحو نوشتۂ حذف شدگی و منتقلی ذیلا بطورِ حوالہ دیونو بویان.',
 
 # Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''خبردار:''' سانچو سایز بو لوٹ شیر.
+بعضی سانچہ شامل نو بونی.",
 'post-expand-template-inclusion-category' => 'ھش صفحات کہ ھتیرا ٹمپلیٹ یعنی سانچو ناپ لوٹ بیتی شیر۔',
 'post-expand-template-argument-category' => 'ھش صفحات کہ ھتیرا بوغینو بیرو سانچان یعنی(ٹمپلیٹان) لو شینی۔',
 
@@ -569,6 +569,7 @@ MySQL جوابِ خطاء پرائے "$3: $4"',
 'nextrevision' => '→پروشٹیو اعادہ',
 'currentrevisionlink' => 'حالیہ نظرثانی',
 'cur' => 'رائج',
+'next' => 'پروشٹیو',
 'last' => 'سابقہ',
 'histlegend' => "انتخاب: مختلف نسخان موازنہ کوریکو بچے ، پیامی خانان نشان زد کوری موڑا دیرو بٹنا کلک کورے۔
 
@@ -689,6 +690,7 @@ HTML tags لوڑے.',",
 'recentchanges-label-newpage' => 'ھیہ ترمیم نوغ صفحہ تخلیق آریر',
 'recentchanges-label-minor' => 'ھیہ ای معمولی ترمیم شیر',
 'recentchanges-label-bot' => 'ھیہ ایڈیٹو خود کار بوٹو زریعا انجام دیونو ہوی',
+'recentchanges-label-unpatrolled' => 'ھیہ ترمیمو ھمونیہ پت مراجعت(Patrolled) کورونو نو بیتی شیر',
 'rcnote' => "درج ذیل گزشتہ {{PLURAL:$2|بس|'''$2''' انوسا}} باک {{PLURAL:$1|'''ای''' تبدیلی شیر|آخری '''$1''' تبدیلی شینی}}، $5، $4.",
 'rcnotefrom' => "ھیہ موڑا '''$2''' کورونو بیرو تبدیلیان تفصیلات شینی ('''$1''' تبدیلیان پشینو بونیان)۔",
 'rclistfrom' => '$1 نوغ تبدیلیاں پشیک شروع کورے',
@@ -713,6 +715,7 @@ HTML tags لوڑے.',",
 'recentchangeslinked' => 'متعلقہ تبدیلی',
 'recentchangeslinked-toolbox' => 'موقعی تبدیلی',
 'recentchangeslinked-title' => 'متعلقہ تبدیلی "$1"',
+'recentchangeslinked-noresult' => 'ھمی صفحا موجودہ وختہ کیہ تبدیلی نیکی۔',
 'recentchangeslinked-summary' => "ھیہ ھتے تبدیلیان لسٹ شیر کہ ھیتان پھوک مدا پروشٹی ساوزینو بیتی شینی وا ھے صفحان سوم جستہ خور کیہ صفحہ چوکی شینی یا کیہ خاص زمرہ جاتو ممبرانن سوم چوکی شینی<br />
 ساوزیرو [[Special:Watchlist|موڑا صفحہ]] '''بولڈ''' شینی",
 'recentchangeslinked-page' => 'کھوار ویکیپیڈیو منصوبو صفحو لوڑے',
@@ -928,6 +931,7 @@ HTML tags لوڑے.',",
 
 # Block/unblock
 'blockip' => 'داخلہ ممنوع براۓ صارف',
+'ipboptions' => '2 گھنٹہ:2 hours,1 آنوس:1 day,3 بس:3 days,1 ہفتہ:1 week,2 ہفتہ:2 weeks,1 مس:1 month,3 مس:3 months,6 مس:6 months,1 سال:1 year,لامحدود:infinite',
 'ipblocklist' => 'داخلہ ممنوع براۓ صارف',
 'blocklink' => 'پاوبندی لیگاوے',
 'unblocklink' => 'پاوبندی ختم',
@@ -1059,6 +1063,8 @@ HTML tags لوڑے.',",
 * gpslongitude
 * gpsaltitude',
 
+'exif-dc-date' => 'تاریخ',
+
 # External editor support
 'edit-externally' => 'ھیہ مسلو ایڈیٹ کورے',
 'edit-externally-help' => '(See the [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)
@@ -1069,6 +1075,9 @@ HTML tags لوڑے.',",
 'namespacesall' => 'تھمامو',
 'monthsall' => 'سف',
 
+# action=purge
+'confirm_purge_button' => 'OK/ٹھیک شیر',
+
 # Table pager
 'table_pager_first' => 'آویلو صفحہ',
 
@@ -1080,10 +1089,25 @@ HTML tags لوڑے.',",
 # Core parser functions
 'duplicate-defaultsort' => '\'\'\'خبردار:\'\'\' ڈیفالٹ تاڑٰ(نغڑی) "$2" پروشٹیو ڈیفالٹ تاڑا "$1" لیگی شیر۔',
 
+# Special:FilePath
+'filepath-page' => 'فایل',
+'filepath-submit' => 'Go/بوغے',
+
 # Special:SpecialPages
 'specialpages' => 'اسپیشل صفحہ',
 
 # Special:Tags
 'tag-filter' => '[[Special:Tags|Tag]] filter:',
+'tag-filter-submit' => 'فلٹر',
+'tags-title' => 'Tags/ٹیگز',
+
+# Special:ComparePages
+'compare-page1' => 'صفحہ 1',
+
+# Feedback
+'feedback-message' => 'پیغام',
+
+# Search suggestions
+'searchsuggest-search' => 'Search/تلاش',
 
 );
index 7dd9664..d6d552a 100644 (file)
@@ -448,9 +448,6 @@ Sebebê ho ''$2'' dero.",
 
 Sıma şikinê dızdêni {{SITENAME}} de dewam kerê, ya jê eyni karberi ya ki jê jüyê de bini <span class='plainlinks'>[$1 oncia cıkuyê]</span>.
 Beno ke taê peli sıma hona cıkote asnenê, hata ke sıma ''browser cache''ê ho kerd pak.",
-'welcomecreation' => '== Xêr amê, $1! ==
-Hesabê sıma vıraciya.
-Vurnaena [[Special:Preferences|melumatanê {{SITENAME}}]] ho vira mekerê.',
 'yourname' => 'Namê karberi:',
 'yourpassword' => 'Parola:',
 'yourpasswordagain' => 'Parola tekrar ke:',
@@ -1154,7 +1151,7 @@ Cêr [$2 pela arezekerdena dosya de] arezekerdene asnina.',
 
 # Watchlist
 'watchlist' => 'Pela mına şêrkerdene',
-'mywatchlist' => 'Lista mına şêrkerdışi',
+'mywatchlist' => 'Lista şêrkerdışi',
 'watchlistfor2' => 'Serba $1 ($2)',
 'addedwatchtext' => "Pela \"[[:\$1]]\"i ilawe biye be [[Special:Watchlist|pela şêrkerdişi]].
 Nara dıme, vurnaisê na pele u pela hurênaisê dawa alaqedare ita bena lista, u pele [[Special:RecentChanges|lista vurnaisunê peyênu]] de '''qolınd''' asena ke cı ra asan weçiniyo.",
@@ -1170,8 +1167,6 @@ Nara dıme, vurnaisê na pele u pela hurênaisê dawa alaqedare ita bena lista,
 'watching' => 'Şêr ke…',
 'unwatching' => 'Şêr meke…',
 
-'changed' => 'vuriya',
-
 # Delete
 'deletepage' => 'Pele bıestere',
 'delete-legend' => 'Bıestere',
@@ -1259,7 +1254,7 @@ Tı şikina sewiya sevekiyaena na pele bıvurnê, hema yê nae sevekiyaena qedem
 # Contributions
 'contributions' => 'İştırakê karberi',
 'contributions-title' => '$1 de iştırakê karberi',
-'mycontris' => 'İştıraqê mı',
+'mycontris' => 'İştıraqi',
 'contribsub2' => 'Serba $1 ($2)',
 'uctop' => '(ser)',
 'month' => 'Asme ra (u ravêr):',
index 8e1f306..c265eb4 100644 (file)
@@ -726,9 +726,6 @@ $2',
 
 جۇيەگە كىرمەستەن {{SITENAME}} جوباسىن پايدالانۋىن جالعاستىرا الاسىز, نەمەسە ٴدال سول نە وزگە قاتىسۋشى بوپ قايتا كرۋىڭىز مۇمكىن.
 اڭعارتپا: كەيبىر بەتتەر شولعىشىڭىزدىڭ بۇركەمەسىن تازارتقانشا دەيىن ٴالى دە كىرپ قالعانىڭىزداي كورىنۋى مۇمكىن.",
-'welcomecreation' => '== قوش كەلدىڭىز, $1! ==
-جاڭا تىركەلگىڭىز جاسالدى.
-{{SITENAME}} باپتالىمدارىڭىزدى وزگەرتۋىن ۇمىتپاڭىز.',
 'yourname' => 'قاتىسۋشى اتىڭىز:',
 'yourpassword' => 'قۇپىييا ٴسوزىڭىز:',
 'yourpasswordagain' => 'قۇپىييا ٴسوزدى قايتالاڭىز:',
@@ -1753,11 +1750,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 'enotif_mailer' => '{{SITENAME}} ەسكەرتۋ حات جىبەرۋ قىزمەتى',
 'enotif_reset' => 'بارلىق بەت كەلىپ-كەتىلدى دەپ بەلگىلە',
-'enotif_newpagetext' => 'مىناۋ جاڭا بەت.',
 'enotif_impersonal_salutation' => '{{SITENAME}} قاتىسۋشىسى',
-'changed' => 'وزگەرتتى',
-'created' => 'باستادى',
-'enotif_subject' => '{{SITENAME}} جوباسىندا $PAGEEDITOR $PAGETITLE اتاۋلى بەتتى $CHANGEDORCREATED',
 'enotif_lastvisited' => 'سوڭعى كەلىپ-كەتۋىڭىزدەن بەرى بولعان وزگەرىستەر ٴۇشىن $1 دەگەندى قاراڭىز.',
 'enotif_lastdiff' => 'وسى وزگەرىس ٴۇشىن $1 دەگەندى قاراڭىز.',
 'enotif_anon_editor' => 'تىركەلگىسىز قاتىسۋشى $1',
index 2d4042f..4d2e73b 100644 (file)
@@ -757,9 +757,6 @@ $2',
 
 Жүйеге кірместен де {{SITENAME}} жобасын пайдалана аласыз, немесе баяғы не өзге қатысушы ретінде жүйеге <span class='plainlinks'>[$1 қайта кіруіңізге]</span> болады.
 Аңғартпа: Кейбір беттер шолғышыңыздың кэшін тазартқанша әлі де жүйеге кіріп отырғаныңыздай көрінуі мүмкін.",
-'welcomecreation' => '== Қош келдіңіз, $1! ==
-Жаңа тіркелгіңіз жасалды.
-Өзіңіздің [[Special:Preferences|жеке баптауларыңызды]] өзгертуді ұмытпаңыз.',
 'yourname' => 'Қатысушы аты:',
 'yourpassword' => 'Құпия сөз:',
 'yourpasswordagain' => 'Құпия сөзді қайталаңыз:',
@@ -1990,11 +1987,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 'enotif_mailer' => '{{SITENAME}} ескерту хат жіберу қызметі',
 'enotif_reset' => 'Барлық бет келіп-кетілді деп белгіле',
-'enotif_newpagetext' => 'Мынау жаңа бет.',
 'enotif_impersonal_salutation' => '{{SITENAME}} қатысушысы',
-'changed' => 'өзгертті',
-'created' => 'бастады',
-'enotif_subject' => '{{SITENAME}} жобасында $PAGEEDITOR $PAGETITLE атаулы бетті $CHANGEDORCREATED',
 'enotif_lastvisited' => 'Соңғы келіп-кетуіңізден бері болған өзгерістер үшін $1 дегенді қараңыз.',
 'enotif_lastdiff' => 'Осы өзгеріс үшін $1 дегенді қараңыз.',
 'enotif_anon_editor' => 'тіркелгісіз қатысушы $1',
index 9c491d9..5738a6f 100644 (file)
@@ -689,9 +689,6 @@ Keltirilgen sebebi: ''$2''.",
 
 Jüýege kirmesten {{SITENAME}} jobasın paýdalanwın jalğastıra alasız, nemese däl sol ne özge qatıswşı bop qaýta krwiñiz mümkin.
 Añğartpa: Keýbir better şolğışıñızdıñ bürkemesin tazartqanşa deýin äli de kirp qalğanıñızdaý körinwi mümkin.",
-'welcomecreation' => '== Qoş keldiñiz, $1! ==
-Jaña tirkelgiñiz jasaldı.
-{{SITENAME}} baptalımdarıñızdı özgertwin umıtpañız.',
 'yourname' => 'Qatıswşı atıñız:',
 'yourpassword' => 'Qupïya söziñiz:',
 'yourpasswordagain' => 'Qupïya sözdi qaýtalañız:',
@@ -1716,11 +1713,7 @@ Bul bettiñ jäne baýlanıstı talqılaw betiniñ keleşektegi özgeristeri mı
 
 'enotif_mailer' => '{{SITENAME}} eskertw xat jiberw qızmeti',
 'enotif_reset' => 'Barlıq bet kelip-ketildi dep belgile',
-'enotif_newpagetext' => 'Mınaw jaña bet.',
 'enotif_impersonal_salutation' => '{{SITENAME}} qatıswşısı',
-'changed' => 'özgertti',
-'created' => 'bastadı',
-'enotif_subject' => '{{SITENAME}} jobasında $PAGEEDITOR $PAGETITLE atawlı betti $CHANGEDORCREATED',
 'enotif_lastvisited' => 'Soñğı kelip-ketwiñizden beri bolğan özgerister üşin $1 degendi qarañız.',
 'enotif_lastdiff' => 'Osı özgeris üşin $1 degendi qarañız.',
 'enotif_anon_editor' => 'tirkelgisiz qatıswşı $1',
index fa139c8..1c9e0ff 100644 (file)
@@ -646,6 +646,7 @@ $2',
 'filereadonlyerror' => 'មិនអាចកែប្រែឯកសារ "$1" បានទេពីព្រោះថតឯកសារ "$2" ស្ថិតក្នុងម៉ូដសំរាប់តែអានប៉ុណ្ណោះ។
 
 អភិបាលដែលបានចាក់សោរវាបានផ្ដល់សេចក្ដីពន្យល់បែបនេះ៖ "$3"។',
+'exception-nologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
 'exception-nologin-text' => 'ទំព័រឬសកម្មភាពនេះតំរូវអោយអ្នកធ្វើការកត់ឈ្មោះចូលទៅក្នុងវិគីនេះ។',
 
 # Virus scanner
@@ -659,10 +660,6 @@ $2',
 អ្នកអាចបន្តប្រើប្រាស់{{SITENAME}}ក្នុងភាពអនាមិក ឬ <span class='plainlinks'>[$1 កត់ឈ្មោះចូលម្ដងទៀត]</span>ក្នុងនាមជាអ្នកប្រើប្រាស់ដដែលឬផ្សេងទៀត។
 
 សូមកត់សំគាល់ថាទំព័រមួយចំនួនប្រហែលជានៅតែបង្ហាញដូចពេលលោកអ្នកកត់ឈ្មោះចូលក្នុងគណនីរបស់លោកអ្នកដដែល។ ប្រសិនបើមានករណីនេះកើតឡើង សូមសំអាត សតិភ្ជាប់នៃកម្មវិធីរុករករបស់លោកអ្នក។",
-'welcomecreation' => '== សូមស្វាគមន៍ $1! ==
-
-គណនីរបស់អ្នកត្រូវបានបង្កើតហើយ។
-កុំភ្លេចផ្លាស់ប្ដូរ[[Special:Preferences|ចំណង់ចំណូលចិត្ត{{SITENAME}}]]របស់អ្នក។',
 'yourname' => 'អត្តនាម៖',
 'yourpassword' => 'ពាក្យសំងាត់៖',
 'yourpasswordagain' => 'វាយពាក្យសំងាត់ម្តងទៀត៖',
@@ -977,7 +974,7 @@ $2
 'updated' => '(បានបន្ទាន់សម័យ)',
 'note' => "'''ចំណាំ៖'''",
 'previewnote' => "'''សូមចាំថានេះគ្រាន់តែជា​ការបង្ហាញការមើលជាមុនប៉ុណ្ណោះ។ បំលាស់ប្ដូរ​របស់អ្នកមិនទាន់បាន​រក្សាទុកទេ!'''",
-'continue-editing' => 'á\9e\94á\9e\93á\9f\92á\9e\8fធ្វើការកែប្រែ',
+'continue-editing' => 'á\9e\91á\9f\85á\9e\80á\9e¶á\9e\93á\9f\8bá\9e\80á\9e\93á\9f\92á\9e\9bá\9f\82á\9e\84á\9e\9fá\9f\86á\9e\9aá\9e¶á\9e\94á\9f\8bធ្វើការកែប្រែ',
 'previewconflict' => 'ការមើលមុននេះយោងតាមអត្ថបទក្នុងប្រអប់កែប្រែខាងលើ។ ទំព័រអត្ថបទនឹងបង្ហាញចេញបែបនេះប្រសិនបើអ្នកជ្រើសរើសរក្សាទុក។',
 'session_fail_preview' => "'''សូមអភ័យទោស! យើងមិនអាចរក្សាទុកការកែប្រែរបស់អ្នកបានទេ ដោយសារបាត់ទិន្នន័យវេនការងារ។
 
@@ -1200,7 +1197,8 @@ $1",
 'revdelete-no-change' => "'''ប្រយ័ត្ន​៖''' វត្ថុ​ដែល​មាន​កាល​បរិច្ឆេទ​ $2, $1 ត្រូវ​បាន​ស្នើ​សុំ​ការ​កំណត់​គំហើញ​រួច​ហើយ​។",
 'revdelete-reason-dropdown' => '*មូលហេតុលុបចោលទូទៅ
 ** បំពានលើកម្មសិទ្ធិបញ្ញា
-** ព័ត៌មានផ្ទាល់ខ្លួនមិនសមរម្យ
+** មតិយោបល់ឬព័ត៌មានផ្ទាល់ខ្លួនមិនសមរម្យ
+** ឈ្មោះអ្នកប្រើប្រាស់មិនសមរម្យ
 ** ព័ត៌មានបង្ខូចកេរ្តិ៍ឈ្មោះ',
 'revdelete-otherreason' => 'មូលហេតុផ្សេង​ៗ/ដទៃទៀត​៖',
 'revdelete-reasonotherlist' => 'មូលហេតុផ្សេង​ទៀត​',
@@ -1394,7 +1392,7 @@ $1",
 'timezoneregion-indian' => 'មហាសមុទ្រឥណ្ឌា',
 'timezoneregion-pacific' => 'មហាសមុទ្រប៉ាស៊ីហ្វិក',
 'allowemail' => 'ទទួលអ៊ីមែលពីអ្នកប្រើប្រាស់ដទៃទៀត',
-'prefs-searchoptions' => 'á\9e\87á\9e\98á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\80á\9e¶á\9e\9aá\9e\9fá\9f\92á\9e\9cá\9f\82á\9e\84á\9e\9aá\9e\80',
+'prefs-searchoptions' => 'ស្វែងរក',
 'prefs-namespaces' => 'ប្រភេទ',
 'defaultns' => 'ស្វែងរក​ក្នុង​លំហឈ្មោះ​ទាំងនេះ​តាម​បែប​ផ្សេង៖',
 'default' => 'លំនាំដើម',
@@ -1908,6 +1906,7 @@ $1',
 'uploadnewversion-linktext' => 'ផ្ទុកឡើងមួយកំណែថ្មីនៃឯកសារនេះ',
 'shared-repo-from' => 'ពី $1',
 'shared-repo' => 'ឃ្លាំងរួម​',
+'upload-disallowed-here' => 'អ្នកមិនអាចសរសេរជាន់ពីលើឯកសារនេះទេ។',
 
 # File reversion
 'filerevert' => 'ត្រឡប់ $1',
@@ -1937,6 +1936,7 @@ $1',
 **ឯកសារជាន់គ្នា',
 'filedelete-edit-reasonlist' => 'មូលហេតុនៃការលុបការកែប្រែ',
 'filedelete-maintenance' => 'ការលុបឬស្តារឯកសារឡើងវិញត្រូវបានផ្អាកជាបណ្ដោះអាសន្ន​ក្នុងពេលធ្វើការថែទាំប្រព័ន្ធ។',
+'filedelete-maintenance-title' => 'មិនអាចលុបឯកសារចោល',
 
 # MIME search
 'mimesearch' => 'ស្វែងរក MIME',
@@ -1988,9 +1988,9 @@ $1',
 
 'disambiguations' => 'ទំព័រដែលភ្ជាប់ទៅទំព័រមានចំណងជើងស្រដៀងគ្នា',
 'disambiguationspage' => 'Template:ស្រដៀងគ្នា',
-'disambiguations-text' => "ទំព័រទាំងឡាយខាងក្រោមនេះភ្ជាប់ទៅកាន់'''ទំព័រពាក្យស្រដៀងគ្នា'''។
+'disambiguations-text' => "á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\91á\9e¶á\9f\86á\9e\84á\9e¡á\9e¶á\9e\99á\9e\81á\9e¶á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e\93á\9f\81á\9f\87á\9e\98á\9e·á\9e\93á\9e\8fá\9f\86á\9e\8eá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bá\9e\99á\9f\89á\9e¶á\9e\84á\9e\8fá\9e·á\9e\85á\9e\98á\9e½á\9e\99á\9e\8aá\9f\82á\9e\9bá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bá\9e\91á\9f\85á\9e\80á\9e¶á\9e\93á\9f\8b'''á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9f\92á\9e\9aá\9e\8aá\9f\80á\9e\84á\9e\82á\9f\92á\9e\93á\9e¶'''á\9f\94
 
\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\91á\9e¶á\9f\86á\9e\84á\9e\93á\9f\81á\9f\87á\9e\82á\9e½á\9e\9aá\9e\8fá\9f\82á\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bá\9e\91á\9f\85á\9e\94á\9f\92á\9e\9aá\9e\92á\9e¶á\9e\93á\9e\94á\9e\91á\9e\8fá\9f\92á\9e\9aá\9e¹á\9e\98á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\8fá\9f\82á\9e\98á\9f\92á\9e\8aá\9e\84។<br />
\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\91á\9e¶á\9f\86á\9e\84á\9e\93á\9f\81á\9f\87á\9e\82á\9e½á\9e\9aá\9e\8fá\9f\82á\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bá\9e\91á\9f\85á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\8fá\9f\92á\9e\9aá\9e¹á\9e\98á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\87á\9e¶á\9e\84á\9e\93á\9f\81á\9f\87á\9e\9cá\9e·á\9e\89។<br />
 ទំព័រមួយត្រូវចាត់ទុកជាទំព័រពាក្យស្រដៀងគ្នា ប្រសិនបើវាប្រើទំព័រគំរូដែលភ្ជាប់មកពី[[MediaWiki:Disambiguationspage]]",
 
 'doubleredirects' => 'ទំព័របញ្ជូនបន្តទ្វេដង',
@@ -2018,6 +2018,7 @@ $1',
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|បៃ|បៃ}}',
 'ncategories' => '$1 {{PLURAL:$1|ចំណាត់ថ្នាក់ក្រុម|ចំណាត់ថ្នាក់ក្រុម}}',
+'ninterwikis' => '$1 {{PLURAL:$1|អន្តរវិគី|អន្តរវិគី}}',
 'nlinks' => '$1 {{PLURAL:$1|តំណភ្ជាប់|តំណភ្ជាប់}}',
 'nmembers' => '$1{{PLURAL:$1|សមាជិក|សមាជិក}}',
 'nrevisions' => '$1 {{PLURAL:$1|កំណែប្រែ}}',
@@ -2252,11 +2253,7 @@ $1',
 
 'enotif_mailer' => 'ភ្នាក់ងារផ្ញើអ៊ីមែលផ្ដល់ដំណឹងរបស់ {{SITENAME}}',
 'enotif_reset' => 'កត់សម្គាល់រាល់គ្រប់ទំព័រដែលបានចូលមើល',
-'enotif_newpagetext' => 'នេះជាទំព័រថ្មី។',
 'enotif_impersonal_salutation' => 'អ្នកប្រើប្រាស់ {{SITENAME}}',
-'changed' => 'បានផ្លាស់ប្តូរ',
-'created' => 'បានបង្កើត',
-'enotif_subject' => 'ទំព័រ $PAGETITLE នៃ {{SITENAME}} ត្រូវបាន $CHANGEDORCREATED ដោយ $PAGEEDITOR',
 'enotif_lastvisited' => 'ពិនិត្យ $1 ចំពោះគ្រប់បំលាស់ប្តូរ តាំងពីពេលចូលមើល ចុងក្រោយ។',
 'enotif_lastdiff' => 'សូមពិនិត្យ$1ដើម្បីមើលបំលាស់ប្តូរនេះ។',
 'enotif_anon_editor' => 'អ្នកប្រើប្រាស់អនាមិក $1',
@@ -2927,14 +2924,19 @@ $1',
 
 # Info page
 'pageinfo-title' => 'ព័ត៌មានសម្រាប់ "$1"',
+'pageinfo-not-current' => 'ព័ត៌មានប្រហែលជាអាចបង្ហាញសំរាប់តែកំណែបច្ចុប្បន្នប៉ុណ្ណោះ។',
 'pageinfo-header-basic' => 'ព័ត៌មាន​មូលដ្ឋាន​',
 'pageinfo-header-edits' => 'ប្រវត្តិកែប្រែ',
 'pageinfo-header-restrictions' => 'ការការពារទំព័រ',
 'pageinfo-header-properties' => 'លក្ខណៈសម្បត្តិទំព័រ',
 'pageinfo-display-title' => 'បង្ហាញចំណងជើង',
+'pageinfo-default-sort' => 'ពាក្យគន្លឺះសំរាប់តំរៀប',
 'pageinfo-length' => 'ប្រវែងទំព័រ (គិតជាបៃ)',
 'pageinfo-article-id' => 'អត្តលេខទំព័រ',
+'pageinfo-language' => 'ភាសារបស់ខ្លឹមសារទំព័រ',
 'pageinfo-robot-policy' => 'ស្ថានភាពម៉ាស៊ីនស្វែងរក',
+'pageinfo-robot-index' => 'អាចដាក់ក្នុងលិបិក្រម',
+'pageinfo-robot-noindex' => 'មិនអាចដាក់ក្នុងលិបិក្រម',
 'pageinfo-views' => 'ចំនួនការបើកមើល',
 'pageinfo-watchers' => 'ចំនួនអ្នកតាមដានទំព័រ',
 'pageinfo-redirects-name' => 'ចំនួនការបញ្ជូនបន្តមកកាន់ទំព័រនេះ',
@@ -2950,6 +2952,15 @@ $1',
 'pageinfo-recent-authors' => 'ចំនួនអ្នកនិពន្ធថ្មីៗនេះ',
 'pageinfo-magic-words' => '{{PLURAL:$1|ពាក្យ|ពាក្យ}} វេទមន្ត ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|ចំណាត់ថ្នាក់ក្រុម|ចំណាត់ថ្នាក់ក្រុម}}ដែលបានលាក់ ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|ទំព័រគំរូ|ទំព័រគំរូ}}ដែលទាញមកបញ្ចូល ($1)',
+'pageinfo-toolboxlink' => 'ព័ត៌មានអំពីទំព័រនេះ',
+'pageinfo-redirectsto' => 'បញ្ជូនបន្តទៅកាន់',
+'pageinfo-redirectsto-info' => 'ព័ត៌មាន​',
+'pageinfo-contentpage' => 'រាប់ជាទំព័រដែលមានខ្លឹមសារនៅខាងក្នុង',
+'pageinfo-contentpage-yes' => 'បាទ/ចាស',
+'pageinfo-protect-cascading' => 'ការការពារត្រូវបានដាក់ជាថ្នាក់ពីទីនេះទៅ',
+'pageinfo-protect-cascading-yes' => 'បាទ/ចាស',
+'pageinfo-protect-cascading-from' => 'ការការពារត្រូវបានដាក់ជាថ្នាក់ពី',
 
 # Skin names
 'skinname-standard' => 'បុរាណ',
index d0edf3a..d286f4b 100644 (file)
@@ -196,7 +196,7 @@ $messages = array(
 'cancel' => 'ವಜಾ ಮಾಡಿ',
 'moredotdotdot' => 'ಇನ್ನಷ್ಟು...',
 'mypage' => 'ನನ್ನ ಪುಟ',
-'mytalk' => 'ನನà³\8dನ à²\9aರà³\8dà²\9aà³\86',
+'mytalk' => 'ಚರ್ಚೆ',
 'anontalk' => 'ಈ ಐ.ಪಿ ಗೆ ಮಾತನಾಡಿ',
 'navigation' => 'ಸಂಚರಣೆ',
 'and' => '&#32;ಮತ್ತು',
@@ -875,7 +875,7 @@ $2',
 
 # Preferences page
 'preferences' => 'ಪ್ರಾಶಸ್ತ್ಯಗಳು',
-'mypreferences' => 'ನನà³\8dನ à²ªà³\8dರಾಶಸà³\8dತà³\8dಯà²\97ಳà³\81',
+'mypreferences' => 'ಪ್ರಾಶಸ್ತ್ಯಗಳು',
 'prefs-edits' => 'ಸಂಪಾದನೆಗಳ ಸಂಖ್ಯೆ:',
 'prefsnologin' => 'ಲಾಗಿನ್ ಆಗಿಲ್ಲ',
 'prefsnologintext' => 'ಬಳಕೆದಾರ ಪ್ರಾಶಸ್ತ್ಯಗಳನ್ನು ಬದಲಾಯಿಸಲು ನೀವು <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ಲಾಗ್ ಇನ್]</span> ಆಗಿರಬೇಕು.',
@@ -1404,7 +1404,7 @@ $2',
 
 # Watchlist
 'watchlist' => 'ವೀಕ್ಷಣಾ ಪಟ್ಟಿ',
-'mywatchlist' => 'ನನà³\8dನ à²µà³\80à²\95à³\8dಷಣಾಪà²\9fà³\8dà²\9fಿ',
+'mywatchlist' => 'ವೀಕ್ಷಣಾಪಟ್ಟಿ',
 'watchlistfor2' => '$1 ($2) ಗೆ',
 'nowatchlist' => 'ನಿಮ್ಮ ವೀಕ್ಷಣಾಪಟ್ಟಿಯಲ್ಲಿ ಯಾವುದೇ ಪುಟಗಳಿಲ್ಲ',
 'watchlistanontext' => 'ನಿಮ್ಮ ವೀಕ್ಷಣಾಪಟ್ಟಿಯನ್ನು ನೋಡಲು ಅಥವ ಸಂಪಾದಿಸಲು ದಯವಿಟ್ಟು $1 ಮಾಡಿ.',
@@ -1432,10 +1432,7 @@ $2',
 'unwatching' => 'ವೀಕ್ಷಣೆಯಿಂದ ತೆಗೆಯಲಾಗುತ್ತಿದೆ...',
 
 'enotif_reset' => 'ಭೇಟಿಯಿತ್ತ ಎಲ್ಲಾ ಪುಟಗಳನ್ನು ಗುರುತು ಮಾಡಿ',
-'enotif_newpagetext' => 'ಇದೊಂದು ಹೊಸ ಪುಟ.',
 'enotif_impersonal_salutation' => '{{SITENAME}} ಸದಸ್ಯ',
-'changed' => 'ಬದಲಾಯಿಸಲಾಗಿದೆ',
-'created' => 'ಸೃಷ್ಟಿಸಲ್ಪಟ್ಟಿದೆ',
 'enotif_lastvisited' => 'ನಿಮ್ಮ ಕಳೆದ ಭೇಟಿಯ ನಂತರದ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳಿಗೆ $1 ನೋಡಿ.',
 'enotif_anon_editor' => 'ಅನಾಮಧೇಯ ಸದಸ್ಯ $1',
 
@@ -1541,7 +1538,7 @@ $2',
 # Contributions
 'contributions' => 'ಸದಸ್ಯರ ಕಾಣಿಕೆಗಳು',
 'contributions-title' => '$1 ಸದಸ್ಯರ ಕಾಣಿಕೆಗಳು',
-'mycontris' => 'ನನà³\8dನ à²\95ಾಣಿà²\95à³\86à²\97ಳà³\81',
+'mycontris' => 'ಕಾಣಿಕೆಗಳು',
 'contribsub2' => '$1 ($2) ಗೆ',
 'uctop' => ' (ಮೇಲಕ್ಕೆ)',
 'month' => 'ಈ ತಿಂಗಳಿಂದ (ಮತ್ತು ಮುಂಚಿನ):',
@@ -1812,6 +1809,10 @@ $2',
 'siteusers' => '{{SITENAME}} {{PLURAL:$2|ಸದಸ್ಯ|ಸದಸ್ಯರು}} $1',
 'creditspage' => 'ಪುಟದ ಗೌರವಗಳು',
 
+# Info page
+'pageinfo-toolboxlink' => 'ಪುಟದ ಮಾಹಿತಿ',
+'pageinfo-redirectsto' => 'ಪುನರ್ನಿರ್ದೇಶನ:',
+
 # Image deletion
 'deletedrevision' => 'ಹಳೆ ಆವೃತ್ತಿ $1 ಅನ್ನು ಅಳಿಸಲಾಗಿದೆ',
 'filedeleteerror-short' => 'ಈ ಫೈಲನ್ನು ಅಳಿಸುವುದರಲ್ಲಿ ದೋಷ: $1',
@@ -2121,4 +2122,15 @@ $5
 'revdelete-restricted' => 'ನಿರ್ವಾಹಕರಿಗೆ ನಿಬಂಧನೆಗಳನ್ನು ಅನ್ವಯಿಸಲಾಯಿತು',
 'revdelete-unrestricted' => 'ನಿರ್ವಾಹಕರ ನಿಬಂಧನೆಗಳನ್ನು ತೆಗೆಯಲಾಯಿತು',
 
+# Durations
+'duration-seconds' => '$1 {{PLURAL:$1|ಕ್ಷಣ|ಕ್ಷಣಗಳು}}',
+'duration-minutes' => '$1 {{PLURAL:$1|ನಿಮಿಷ|ನಿಮಿಷಗಳು}}',
+'duration-hours' => '$1 {{PLURAL:$1|ಘಂಟೆ|ಘಂಟೆಗಳು}}',
+'duration-days' => '$1 {{PLURAL:$1|ದಿನ|ದಿನಗಳು}}',
+'duration-weeks' => '$1 {{PLURAL:$1|ವಾರ|ವಾರಗಳು}}',
+'duration-years' => '$1 {{PLURAL:$1|ವರ್ಷ|ವರ್ಷಗಳು}}',
+'duration-decades' => '$1 {{PLURAL:$1|ದಶಕ|ದಶಕಗಳು}}',
+'duration-centuries' => '$1 {{PLURAL:$1|ಶತಮಾನ|ಶತಮಾನಗಳು}}',
+'duration-millennia' => '$1 {{PLURAL:$1|ಸಹಸ್ರಮಾನ|ಸಹಸ್ರಮಾನಗಳು}}',
+
 );
index d97991a..39d448f 100644 (file)
@@ -510,6 +510,7 @@ $messages = array(
 'namespaces' => '이름공간',
 'variants' => '변수',
 
+'navigation-heading' => '둘러보기 메뉴',
 'errorpagetitle' => '오류',
 'returnto' => '$1(으)로 돌아갑니다.',
 'tagline' => '{{SITENAME}}',
@@ -606,7 +607,7 @@ $1',
 'retrievedfrom' => '원본 주소 "$1"',
 'youhavenewmessages' => '다른 사용자가 $1란에 글을 남겼습니다. ($2)',
 'newmessageslink' => '사용자 토론',
-'newmessagesdifflink' => 'ë°\94ë\80\90 ë\82´ì\9a© ë¹\84êµ\90',
+'newmessagesdifflink' => 'ë§\88ì§\80ë§\89 ë°\94ë\80\90 ë\82´ì\9a©',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|다른 사용자가|사용자 $3명이}} $1란에 글을 남겼습니다. ($2)',
 'youhavenewmessagesmanyusers' => '여러 사용자가 $1란에 글을 남겼습니다. ($2)',
 'newmessageslinkplural' => '{{PLURAL:$1|사용자 토론}}',
@@ -755,8 +756,8 @@ $2',
 
 이대로 이름 없이 {{SITENAME}}을(를) 이용하거나, 방금 사용했던 계정이나 다른 계정으로 다시 <span class='plainlinks'>[$1 로그인]</span>해서 이용할 수 있습니다.
 웹 브라우저의 캐시를 지우지 않으면 몇몇 문서에서 로그인이 되어 있는 것처럼 보일 수 있다는 점을 유의해 주세요.",
-'welcomecreation' => '== $1 님, 환영합니다! ==
-계정이 만들어졌습니다.
+'welcomeuser' => '$1, 환영합니다!',
+'welcomecreation-msg' => '계정이 만들어졌습니다.
 [[Special:Preferences|{{SITENAME}} 사용자 환경 설정]]을 바꿀 수 있습니다.',
 'yourname' => '사용자 이름:',
 'yourpassword' => '비밀번호:',
@@ -932,7 +933,7 @@ $2
 'italic_sample' => '기울인 글씨',
 'italic_tip' => '기울인 글씨',
 'link_sample' => '링크 제목',
-'link_tip' => '내부 링크',
+'link_tip' => '안쪽 링크',
 'extlink_sample' => 'http://www.example.com 사이트 이름',
 'extlink_tip' => '바깥 링크 (주소 앞에 http://가 있어야 합니다.)',
 'headline_sample' => '제목',
@@ -1581,7 +1582,7 @@ HTML 태그를 확인하세요.',
 'userrights-unchangeable-col' => '바꿀 수 없는 권한',
 
 # Groups
-'group' => 'ê\8cí\95\9c:',
+'group' => '그룹:',
 'group-user' => '사용자',
 'group-autoconfirmed' => '자동 인증된 사용자',
 'group-bot' => '봇',
@@ -1924,6 +1925,7 @@ URL이 올바르고 접근 가능한지를 확인하고 다시 시도해주세
 'backend-fail-notsame' => '$1 파일과 같은 이름을 가진 다른 파일이 존재합니다.',
 'backend-fail-invalidpath' => '$1 경로가 유효하지 않습니다.',
 'backend-fail-delete' => '$1 파일을 삭제할 수 없습니다.',
+'backend-fail-describe' => '"$1" 파일에 대한 메타데이터를 바꿀 수 없습니다.',
 'backend-fail-alreadyexists' => '$1 파일이 이미 존재합니다.',
 'backend-fail-store' => '$1 파일을 $2 경로에 저장하지 못했습니다.',
 'backend-fail-copy' => '$1 파일을 $2 경로에 복사하지 못했습니다.',
@@ -2042,7 +2044,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'filehist-deleteall' => '모두 삭제',
 'filehist-deleteone' => '삭제',
 'filehist-revert' => '되돌리기',
-'filehist-current' => '최신',
+'filehist-current' => '현재',
 'filehist-datetime' => '날짜/시간',
 'filehist-thumb' => '섬네일',
 'filehist-thumbtext' => '$1 판의 파일',
@@ -2436,19 +2438,23 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 
 'enotif_mailer' => '{{SITENAME}} 자동 알림 메일',
 'enotif_reset' => '모든 문서를 방문한 것으로 표시하기',
-'enotif_newpagetext' => '이 문서는 새 문서입니다.',
 'enotif_impersonal_salutation' => '{{SITENAME}} 사용자',
-'changed' => '바꾸',
-'created' => '만들',
-'enotif_subject' => '{{SITENAME}}에서 $PAGEEDITOR 사용자가 $PAGETITLE 문서를 $CHANGEDORCREATED었습니다.',
-'enotif_lastvisited' => '마지막으로 방문한 뒤 생긴 모든 바뀜 사항을 보려면 $1을(를) 보세요.',
-'enotif_lastdiff' => '이 바뀐 내용을 보려면 $1을 보세요.',
+'enotif_subject_deleted' => '{{SITENAME}} $1 문서를 {{gender:$2|$2}} 사용자가 삭제했습니다',
+'enotif_subject_created' => '{{SITENAME}} $1 문서를 {{gender:$2|$2}} 사용자가 만들었습니다',
+'enotif_subject_moved' => '{{SITENAME}} $1 문서를 {{gender:$2|$2}} 사용자가 옮겼습니다',
+'enotif_subject_restored' => '{{SITENAME}} $1 문서를 {{gender:$2|$2}} 사용자가 복구했습니다',
+'enotif_subject_changed' => '{{SITENAME}} $1 문서를 {{gender:$2|$2}} 사용자가 바꾸었습니다',
+'enotif_body_intro_deleted' => '{{SITENAME}} $1 문서를 $PAGEEDITDATE에 {{gender:$2|$2}} 사용자가 삭제했습니다. 현재 판은 $3 에서 볼 수 있습니다.',
+'enotif_body_intro_created' => '{{SITENAME}} $1 문서를 $PAGEEDITDATE에 {{gender:$2|$2}} 사용자가 만들었습니다. 현재 판은 $3 에서 볼 수 있습니다.',
+'enotif_body_intro_moved' => '{{SITENAME}} $1 문서를 $PAGEEDITDATE에 {{gender:$2|$2}} 사용자가 옮겼습니다. 현재 판은 $3 에서 볼 수 있습니다.',
+'enotif_body_intro_restored' => '{{SITENAME}} $1 문서를 $PAGEEDITDATE에 {{gender:$2|$2}} 사용자가 복구했습니다. 현재 판은 $3 에서 볼 수 있습니다.',
+'enotif_body_intro_changed' => '{{SITENAME}} $1 문서를 $PAGEEDITDATE에 {{gender:$2|$2}} 사용자가 바꾸었습니다. 현재 판은 $3 에서 볼 수 있습니다.',
+'enotif_lastvisited' => '마지막으로 방문한 뒤 생긴 모든 바뀜 사항을 보려면 $1 을 보세요.',
+'enotif_lastdiff' => '이 바뀐 내용을 보려면 $1 을 보세요.',
 'enotif_anon_editor' => '익명 사용자 $1',
 'enotif_body' => '$WATCHINGUSERNAME님,
 
-{{SITENAME}}의 $PAGETITLE 문서를 $PAGEEDITDATE에 $PAGEEDITOR님이 $CHANGEDORCREATED었습니다. 현재의 문서는 $PAGETITLE_URL 에서 볼 수 있습니다.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 편집 요약: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2456,8 +2462,7 @@ $NEWPAGE
 이메일: $PAGEEDITOR_EMAIL
 위키: $PAGEEDITOR_WIKI
 
-이 문서를 열기 전에는 다른 알림 이메일을 더 이상 보내지 않습니다.
-모든 주시 문서의 알림 딱지를 초기화할 수도 있습니다.
+이 문서를 열기 전에는 다른 알림 이메일을 더 이상 보내지 않습니다. 모든 주시 문서의 알림 딱지를 초기화할 수도 있습니다.
 
 {{SITENAME}} 알림 시스템
 
@@ -3271,6 +3276,8 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 'markedaspatrollederror' => '검토한 것으로 표시할 수 없습니다.',
 'markedaspatrollederrortext' => '검토한 것으로 표시할 판을 지정해야 합니다.',
 'markedaspatrollederror-noautopatrol' => '자신의 편집은 스스로 검토할 수 없습니다.',
+'markedaspatrollednotify' => '$1에 대한 바뀜을 검토한 것으로 표시했습니다.',
+'markedaspatrollederrornotify' => '검토한 것으로 표시를 실패했습니다.',
 
 # Patrol log
 'patrol-log-page' => '검토 기록',
@@ -3334,6 +3341,7 @@ $1',
 'hours' => '$1시간',
 'days' => '$1일',
 'ago' => '$1 전',
+'just-now' => '방금',
 
 # Bad image list
 'bad_image_list' => '형식은 아래와 같습니다.
@@ -4103,9 +4111,9 @@ $5
 'logentry-move-move_redir-noredirect' => '$1 사용자가 $3 문서를 $4 문서로 넘겨주기를 남기지 않으면서 옮기면서 옮길 대상에 있던 넘겨주기를 덮어썼습니다.',
 'logentry-patrol-patrol' => '$1 사용자가 $3 문서의 $4판을 검토한 것으로 표시했습니다.',
 'logentry-patrol-patrol-auto' => '$1 사용자가 자동적으로 $3 문서의 $4판을 검토한 것으로 표시했습니다.',
-'logentry-newusers-newusers' => '$1 사용자 계정을 만들었습니다.',
-'logentry-newusers-create' => '$1 사용자 계정을 만들었습니다.',
-'logentry-newusers-create2' => '$1 사용자가 $3 계정을 만들었습니다.',
+'logentry-newusers-newusers' => '$1 사용자 계정을 만들었습니다.',
+'logentry-newusers-create' => '$1 사용자 계정을 만들었습니다.',
+'logentry-newusers-create2' => '$1 사용자가 $3 사용자 계정을 만들었습니다.',
 'logentry-newusers-autocreate' => '$1 사용자 계정을 자동적으로 만들었습니다.',
 'newuserlog-byemail' => '이메일로 보낸 비밀번호',
 
@@ -4182,5 +4190,5 @@ $5
 'duration-millennia' => '$1{{PLURAL:$1|천년}}',
 
 # Unknown messages
-'mytalk-parenthetical' => '토론',
+'svg-long-error' => '잘못된 SVG 파일: $1',
 );
index 414eada..4f1072c 100644 (file)
@@ -43,9 +43,9 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Джибериулени черт:',
 'tog-justify' => 'Текстни бетни кенглигине кёре тиз',
-'tog-hideminor' => 'Ð\94жангÑ\8b Ñ\82Ñ\8eÑ\80лениÑ\83лени Ñ\81пиÑ\81огÑ\83нда гитче тюрлениулени кёргюзме',
-'tog-hidepatrolled' => 'Ð\94жангÑ\8b Ñ\82Ñ\8eÑ\80лениÑ\83лени Ñ\81пиÑ\81огÑ\83нда тинтилген тюрлениулени кёргюзме',
-'tog-newpageshidepatrolled' => 'Ð\94жангÑ\8b Ð±ÐµÑ\82лени Ñ\81пиÑ\81огÑ\83нда тинтилген бетлени кёргюзме',
+'tog-hideminor' => 'Ð\94жангÑ\8b Ñ\82Ñ\8eÑ\80лениÑ\83лени Ñ\82измеÑ\81инде гитче тюрлениулени кёргюзме',
+'tog-hidepatrolled' => 'Ð\94жангÑ\8b Ñ\82Ñ\8eÑ\80лениÑ\83лени Ñ\82измеÑ\81инде тинтилген тюрлениулени кёргюзме',
+'tog-newpageshidepatrolled' => 'Ð\94жангÑ\8b Ð±ÐµÑ\82лени Ñ\82измеÑ\81инде тинтилген бетлени кёргюзме',
 'tog-extendwatchlist' => 'Кёзде тургъан тизмени, къуру ахыр тюл, бютеу тюрлениулени кёрюр ючюн кенгерт',
 'tog-usenewrc' => 'Ахыр тюрлениуледе эм кёздеги тизмеде бетлени къауум тюрлениулери (JavaScript керекди)',
 'tog-numberheadings' => 'Башлыкъланы (бёлюмлени атлары) автомат номерленсинле',
@@ -55,17 +55,17 @@ $messages = array(
 'tog-editsectiononrightclick' => 'Бёлюмлени бёлюм башлыкъгъа басханлай тюрлендириу бетин ач',
 'tog-showtoc' => 'Башларын кёргюз (3-ден кёб бёлюм башлыгъы болгъан бетлеге)',
 'tog-rememberpassword' => 'Бу компьютерде мени тергеў джазыўуму сакъла (эм кёб $1 {{PLURAL:$1|кюн|кюн}})',
-'tog-watchcreations' => 'Мен къурагъан (башлагъан) бетлени кёзюмде тургъан тизмеме къош',
-'tog-watchdefault' => 'Мен тюрлендирген бетлени кёзюмде тургъан тизмеме къош',
-'tog-watchmoves' => 'Мен атларын ауушдургъан бетлени кёзюмде тургъан тизмеме къош',
-'tog-watchdeletion' => 'Мен кетерген бетлени кёзюмде тургъан тизмеме къош',
+'tog-watchcreations' => 'Мен къурагъан (башлагъан) бетлени эм мен джюклеген файлланы кёзюмде тургъан тизмеме къош',
+'tog-watchdefault' => 'Мен тюрлендирген бетлени эм файлланы кёзюмде тургъан тизмеме къош',
+'tog-watchmoves' => 'Мен атларын ауушдургъан бетлени эм файлланы кёзюмде тургъан тизмеме къош',
+'tog-watchdeletion' => 'Мен кетерген бетлени эм файлланы кёзюмде тургъан тизмеме къош',
 'tog-minordefault' => 'Тынгылау бла бары тюрлениулени «аз магъаналы» белгиле',
 'tog-previewontop' => 'Ал къарауну тюрлендириу бетни башы бла кёргюз',
 'tog-previewonfirst' => 'Тюрледириу бетге кёчгенде ал къарауну кёргюз',
 'tog-nocache' => 'Бетлени браузерге кэш этерге къойма',
-'tog-enotifwatchlistpages' => 'Кёзюмде тургъан тизмемдеги бетлени тюрлениулерин E-mail бла билдир',
+'tog-enotifwatchlistpages' => 'Кёзюмде тургъан тизмемдеги бетлени неда файлланы тюрлениулерин E-mail бла билдир',
 'tog-enotifusertalkpages' => 'E-mail бла билдир энчи бетими тюрлениулерин',
-'tog-enotifminoredits' => 'E-mail бла гитче тюрлениуле огъуна болсалада бирдир',
+'tog-enotifminoredits' => 'Бетлени неда файлланы гитче тюрлениулерин огъуна E-mail бла',
 'tog-enotifrevealaddr' => 'E-mail адресими билдириу письмолада кёргюз',
 'tog-shownumberswatching' => 'Бетни, кёзде тургъан тизмелерине къошханланы санын кёргюз',
 'tog-oldsig' => 'Бусагъатдагъы къол салыннган:',
@@ -105,13 +105,13 @@ $messages = array(
 'thursday' => 'Орта кюн',
 'friday' => 'Байрым кюн',
 'saturday' => 'Шабат кюн',
-'sun' => 'Ыйых кюн',
-'mon' => 'Баш кюн',
+'sun' => 'Ый',
+'mon' => 'Бш',
 'tue' => 'Гр',
 'wed' => 'Брз',
-'thu' => 'Орта кюн',
-'fri' => 'Байрым кюн',
-'sat' => 'ШабаÑ\82 ÐºÑ\8eн',
+'thu' => 'Орт',
+'fri' => 'Брм',
+'sat' => 'Шб',
 'january' => 'январь',
 'february' => 'февраль',
 'march' => 'март',
@@ -168,13 +168,13 @@ $messages = array(
 'noindex-category' => 'Индексленмеген бетле',
 'broken-file-category' => 'Ишлемеген файл джибериулери болгъан бетле',
 
-'about' => 'Ð\90Ñ\87Ñ\8bкÑ\8aлау',
+'about' => 'СÑ\83Ñ\80аÑ\82лау',
 'article' => 'Статья',
 'newwindow' => '(джангы терезеде ачылады)',
 'cancel' => 'Ызына алыу',
 'moredotdotdot' => 'Баргъаны…',
-'mypage' => 'ЭнÑ\87и Ð±ÐµÑ\82им',
-'mytalk' => 'Сюзюу бетим',
+'mypage' => 'Ð\91еÑ\82',
+'mytalk' => 'Сюзюу',
 'anontalk' => 'Бу IP-адресге сюзюу бет',
 'navigation' => 'Навигация',
 'and' => '&#32;эм',
@@ -196,16 +196,17 @@ $messages = array(
 'vector-action-protect' => 'Джакъла',
 'vector-action-undelete' => 'Къайтар',
 'vector-action-unprotect' => 'Джакълауну тюрлендир',
-'vector-simplesearch-preference' => 'Ð\9aенглеÑ\88ген Ð¸Ð·Ð»ÐµÑ\83де Ð±Ð¾Ð»Ñ\83Ñ\88лÑ\83кÑ\8aланÑ\8b Ð´Ð¶Ð°Ð½Ð´Ñ\8bÑ\80 (кÑ\8aÑ\83Ñ\80Ñ\83 Ð\92екÑ\82оÑ\80 мотив ючюн)',
+'vector-simplesearch-preference' => 'ТÑ\8bнÑ\87 Ð¸Ð·Ð»ÐµÑ\83де Ð±Ð¾Ð»Ñ\83Ñ\88лÑ\83кÑ\8aланÑ\8b Ð´Ð¶Ð°Ð½Ð´Ñ\8bÑ\80 (кÑ\8aÑ\83Ñ\80Ñ\83 Â«Ð\92екÑ\82оÑ\80» мотив ючюн)',
 'vector-view-create' => 'Къура',
 'vector-view-edit' => 'Тюрлендир',
 'vector-view-history' => 'Тарихин кёргюз',
 'vector-view-view' => 'Окъу',
 'vector-view-viewsource' => 'Кодха къара',
-'actions' => 'Этимле',
+'actions' => 'Этиуле',
 'namespaces' => 'Атланы аламы',
 'variants' => 'Вариантла',
 
+'navigation-heading' => 'Навигация меню',
 'errorpagetitle' => 'Халат',
 'returnto' => '«$1» бетге къайт',
 'tagline' => '{{SITENAME}} сайтдан',
@@ -216,7 +217,7 @@ $messages = array(
 'searcharticle' => 'Кёч',
 'history' => 'Бетни тарихи',
 'history_short' => 'Тарих',
-'updatedmarker' => 'Ахыр киргенимден сора джангыргъан',
+'updatedmarker' => 'Ахыр киргенимден сора джангыргъанды',
 'printableversion' => 'Басмагъа версиясы',
 'permalink' => 'Дайым джибериу',
 'print' => 'Басмала',
@@ -272,7 +273,7 @@ $1',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 'aboutsite' => '{{SITENAME}} сайтны юсюнден',
-'aboutpage' => 'Project:Ð\90Ñ\87Ñ\8bкÑ\8aлау',
+'aboutpage' => 'Project:СÑ\83Ñ\80аÑ\82лау',
 'copyright' => 'Информация мунга кёре хайырланады: $1',
 'copyrightpage' => '{{ns:project}}:Авторлукъ хакъла',
 'currentevents' => 'Бусагъатда бола тургъанла',
@@ -302,9 +303,10 @@ $1',
 'youhavenewmessages' => 'Сизге $1 келдиле ($2).',
 'newmessageslink' => 'джангы билдириуле',
 'newmessagesdifflink' => 'сюзюу бетигизни ахыр тюрлениую',
+'youhavenewmessagesfromusers' => '{{PLURAL:$3|Башха бир къошулуучудан|$3 къошулуучудан}} сеннге $1 келди ($2).',
 'youhavenewmessagesmanyusers' => 'Талай къошулуучудан $1 барды. ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|джангы билдириуюгюз|джангы билдириулеригиз}}',
-'newmessagesdifflinkplural' => 'ахыр {{PLURAL:$1|тюрлениу|тюрлениу}}',
+'newmessageslinkplural' => '{{PLURAL:$1|джангы билдириу|джангы билдириуле}}',
+'newmessagesdifflinkplural' => 'ахыр {{PLURAL:$1|тюрлениу}}',
 'youhavenewmessagesmulti' => '$1 бетде джангы билдириуле бардыла.',
 'editsection' => 'тюрлендир',
 'editold' => 'тюрлендир',
@@ -318,7 +320,7 @@ $1',
 'collapsible-collapse' => 'джашыр',
 'collapsible-expand' => 'кёргюз',
 'thisisdeleted' => '$1 къараргъа неда къайтарыргъа (тургъузтургъа)?',
-'viewdeleted' => '$1къараймыса?',
+'viewdeleted' => '$1 къараймыса?',
 'restorelink' => 'кетерилген {{PLURAL:$1|1|$1}} тюрлендириу',
 'feedlinks' => 'Бу кёрюмде:',
 'feed-invalid' => 'Джазылыу каналны типи терсди.',
@@ -351,7 +353,7 @@ $1',
 'nosuchspecialpage' => 'Быллай къуллукъ бет джокъду',
 'nospecialpagetext' => '<strong>Сиз излеген къуллукъ бет джокъду.</strong>
 
\91олгÑ\8aан ÐºÑ\8aÑ\83ллÑ\83кÑ\8a Ð±ÐµÑ\82лени Ñ\81пиÑ\81огÑ\83: [[Special:SpecialPages|{{int:specialpages}}]].',
\91олгÑ\8aан ÐºÑ\8aÑ\83ллÑ\83кÑ\8a Ð±ÐµÑ\82лени Ñ\82измеÑ\81и: [[Special:SpecialPages|{{int:specialpages}}]].',
 
 # General errors
 'error' => 'Халат',
@@ -359,9 +361,9 @@ $1',
 'dberrortext' => 'Информация базагъа джиберилген сорууда синтаксис халат табылды.
 Программада халатны ачыкъларгъа да боллукъду ол.
 Информация базагъа ахыр соруу:
-<blockquote><tt>$1</tt></blockquote>
-<tt>«$2»</tt>функциясындан болгъанды.
-База <tt>«$3: $4»</tt> халатны къайтарды.',
+<blockquote><code>$1</code></blockquote>
+«<code>$2</code>» функциясындан болгъанды.
+База «<samp>$3: $4</samp>» халатны къайтарды.',
 'dberrortextcl' => 'Информация базагъа джиберилген сорууда синтаксис халат табылды.
 Информация базагъа ахыр соруу:
 «$1»
@@ -397,6 +399,8 @@ $1',
 'cannotdelete' => '«$1» файлны неда бетни кетерирге болмайды.
 Башха къошулуучу кетерген болургъа боллукъду аны.',
 'cannotdelete-title' => '«$1» бетни кетерирге болмайды',
+'delete-hook-aborted' => 'Тюрлениу тохтатыучу процедура бла ызына алынды.
+Ачыкълау берилмегенди.',
 'badtitle' => 'Джарамагъан ат',
 'badtitletext' => 'Сорулгъан бетни аты терсди, бошду, неда интервики аты терс джазылгъанды. Келишмеген (хайырланыргъа болмагъан) символла хайырланыргъада боллукъдула атында.',
 'perfcached' => 'Бу информация кэшден алыннганды, ахыр тюрлениулени кёргюзмезге боллукъду. Кэшде максимум {{PLURAL:$1|джазыу}} сакъланады.',
@@ -412,15 +416,26 @@ $1',
 'actionthrottledtext' => 'Спамгъа къаршчы кюрешиуню себебинден, аз заманны ичинде бу амал бла кёб кере хайырланыу тыйылыбды. Кечирек джангыдан кёрюгюз.',
 'protectedpagetext' => 'Бу бет тюрлендириуге джабылыбды.',
 'viewsourcetext' => 'Сиз бу бетни башланнган текстине къараргъа эм аны копия этерге боллукъсуз:',
-'protectedinterface' => 'Бу бетде программаны интерфейс билдириую барды. Вандализмге къаршчы кюрешиу себебли, бу бетни тюрлендириу джабылыбды.',
-'editinginterface' => "'''Эс бёлюгюз:'''  Сиз MediaWiki системаны интерфейс бетин тюрлендире турасыз. Бу башха къошулуучулагъ да тиерик затды. Кёчюрюр ючюн [//translatewiki.net/wiki/Main_Page?setlang=ru translatewiki.net] локализация этиу проектни хайырландырыгъыз.",
+'viewyourtext' => "Бу бетде '''кесигизни тюрлендириулеригизни''' къайнакъ текстине къараргъа эм копия этерге боллукъсуз:",
+'protectedinterface' => 'Бу бетде программаны интерфейс билдириую барды.
+Бютеу викиледе да бу билдириуню кёчюрмесин къошар неда тюрлендирир ючюн MediaWiki-ни локализациясыны сайты [//translatewiki.net/ translatewiki.net]-ни хайырландырыгъыз.',
+'editinginterface' => "'''Эс бёл:''' Сен системаны интерфейс бетин тюрлендире тураса. Бу, викини башха къошулуучуларына да тиерик затды. Кёчюрюр ючюн неда кёчюрмелени тюрлендирир ючюн, MediaWiki-ни локализация этиу проекти [//translatewiki.net/ translatewiki.net]-ни хайырландырыгъыз.",
 'sqlhidden' => '(SQL соруу джашырылыбды)',
 'cascadeprotected' => 'Бу бет тюрлениуледен джакъланыбды, ол каскадлы джакълау къабыл этилиннген  {{PLURAL:$1|бетге|бетлеге}} киргени ючюндю:
 $2',
 'namespaceprotected' => '«$1» ат аламда бетлени тюрлендирирге эркинлигигиз джокъду.',
+'customcssprotected' => 'Бу CSS-бетни тюрлендирирге эркинлигигиз джокъду, бу бетде башха къошулуучуну энчи джарашдырыулары барды.',
+'customjsprotected' => 'Бу JavaScript-бетни тюрлендирирге эркинлигигиз джокъду, бу бетде башха къошулуучуну энчи джарашдырыулары барды.',
 'ns-specialprotected' => '«{{ns:special}}» ат аламны бетлерин тюрлендирирге болмайды.',
 'titleprotected' => "Быллай атлы бет къураргъа [[User:$1|$1]]  къоймайды.
 Белгиленнген чурум: ''$2''.",
+'filereadonlyerror' => "«$2» гезен «къуру окъур ючюн» режимде болгъаны себебли «$1» файл тюрленмейди.
+
+Бу режимни салгъан администратор бу ангылатыуну къойгъанды: «''$3''».",
+'invalidtitle-knownnamespace' => '«$2» ат аламы бла эм «$3» тексти бла джарамагъан башлыкъ.',
+'invalidtitle-unknownnamespace' => '$1 белгили болмагъан алам номери бла эм «$2» тексти бла джарамагъан башлыкъ',
+'exception-nologin' => 'Авторизацияны ётмегенсиз',
+'exception-nologin-text' => 'Бу бетге къарар ючюн неда сорулгъан ишни этер ючюн авторизацияны ётерге керекди.',
 
 # Virus scanner
 'virus-badscanner' => "Джарашдырыуну хатасы. Белгисиз вирус сканер: ''$1''",
@@ -432,15 +447,16 @@ $2',
 
 Сиз {{SITENAME}} сайтда аноним халда къалыргъа боллкъсуз. неда <span class='plainlinks'>[$1 джангыдан кирирге]</span>.
 Талай бетле сиз тергеу джазыу (аккаунт) бла киргенча кёрюнюрге боллукъдула, аны кетерир ючюн кэшни джангыртыгъыз.",
-'welcomecreation' => '== Хош келигиз, $1!  ==
-Сизни тергеу джазыуугъуз (аккаунтугъуз) къуралды.
-Сайтны [[Special:Preferences|персонал джарашдырыуларыны]]  къараргъа унутмагъыз.',
+'welcomeuser' => 'Сау кел, $1!',
+'welcomecreation-msg' => 'Сизни тергеу джазыуугъуз (аккаунтугъуз) къуралды.
+{{SITENAME}} сайтда [[Special:Preferences|джарашдырыуларыгъызны]] тюрлендирирге унутмагъыз.',
 'yourname' => 'Къошулуучуну аты',
 'yourpassword' => 'Паролюгъуз:',
 'yourpasswordagain' => 'Паролну джангыдан джаз:',
 'remembermypassword' => 'Бу компьютерде мени тергеў джазыўуму унутма (эм кёб $1 {{PLURAL:$1|кюн|кюн}})',
 'securelogin-stick-https' => 'Чыкъгъандан сора да HTTPS бла байламлы къой',
 'yourdomainname' => 'Сизни доменигиз:',
+'password-change-forbidden' => 'Бу викиде паролугъузну тюрлендиреллик тюлсюз.',
 'externaldberror' => 'Тыш информация базаны болушлугъу бла аутентификация, халатлы болду, неда тыш аккаунтугъузну тюрлендирирге хакъларагъыз джетмейди.',
 'login' => 'Кириу',
 'nav-login-createaccount' => 'Кириу / регистрация этиу',
@@ -465,6 +481,8 @@ $2',
 'createaccounterror' => 'Быллай тергеу джазыу (аккаунт) къураргъа болмайды: $1',
 'nocookiesnew' => 'Къошлуучу регистрацияны ётгенди, алай кирмегенди. {{SITENAME}} къошулуучуланы таныр ючюн «cookies»-ни хайырландырады. Сиз «cookies»-ни эркин этмегенсиз. «Cookies»-ни эркин этигиза да, андан сора джангы атыгъыз эм паролюгъуз бла киригиз.',
 'nocookieslogin' => '{{SITENAME}} къошулуучуланы таныр ючюн «cookies»-ни хаырландырады. Сиз аны джукълатыб турасыз. «Cookies»-ни эркин этигизда джангыдан кёрюгюз.',
+'nocookiesfornew' => 'Къайнагъын тинтир амал болмагъаны себебли тергеу джазыу къуралмады.
+«Cookies» ачыкъ болгъанына ишексиз болугъуз, бетни джангыртыгъыз эм энтда бир кере кёрюгюз.',
 'noname' => 'Терс атны джазгъансыз.',
 'loginsuccesstitle' => 'Авторизация тыйыншлы ётдю',
 'loginsuccess' => "'''Энди {{SITENAME}} сайтха «$1» ат бла кирдигиз.'''",
@@ -478,6 +496,7 @@ $2',
 'wrongpasswordempty' => 'Пароль джазылмай къалгъанды. Джангыдан кёрюгюз.',
 'passwordtooshort' => '$1 {{PLURAL:$1|символдан}} аз болмазгъа керекди пароль.',
 'password-name-match' => 'Пароль къошулуучу атдан башха тюрлю болургъа керекди.',
+'password-login-forbidden' => 'Бу къошулуучу ат бла паролну хайырландыргъан джарамайды.',
 'mailmypassword' => 'Меннге e-mail бла джангы пароль джибер',
 'passwordremindertitle' => '{{SITENAME}}  къошулуучугъа джангы болджаллы пароль',
 'passwordremindertext' => 'Ким эседа (сиз болургъа боллукъсуз, IP-адрес: $1) {{SITENAME}} ($4) къошулуучугъа джангы пароль къураргъа соргъанды. $2 къошулуучугъа джангы пароль: $3. Сорууну джиберген сиз болгъан эсегиз, системагъа кирирге эм паролну алышдырыргъа тыйычлыды. Джангы паролну $5 {{PLURAL:$5|кюнню}} ичинде амалы боллукъду.
@@ -500,6 +519,7 @@ $2',
 'emailconfirmlink' => 'Электрон почта адресигизни бегитигиз.',
 'invalidemailaddress' => 'Электрон почта адресигизи къабыл этилинирге болмайды, форматха келишмегени ючюн.
 Тюз адрес джазыгъыз неда тизгинни бош къоюгъуз.',
+'cannotchangeemail' => 'Тергеу джазыуну электрон почтасыны адреслерин бу викиде тюрлендирирге болмайды.',
 'emaildisabled' => 'Бу сайт, электрон потча бла билдириуле иймейди.',
 'accountcreated' => 'Тергеу джазыу (аккаунт) къуралды',
 'accountcreatedtext' => '$1 къошулуучугъа тергеу джазыу (аккаунт) къуралды.',
@@ -510,11 +530,13 @@ $2',
 'usernamehasherror' => 'Къошулуучуну атында «#» символ болургъа джарамайда.',
 'login-throttled' => 'Сиз асыры кёб кере кирирге кюрешгенсиз.
 Джангыдан кёргюнчю бираз заман ётдюрюгюз.',
+'login-abort-generic' => 'Системагъа кириу джетишимсиз болду',
 'loginlanguagelabel' => 'Тил: $1',
 'suspicious-userlogout' => 'Терс браузер неда кэш этиучу прокси берген соруугъа ушагъаны ючюн, Сизни чыгъаргъа сорууугъуз алынмагъанды.',
 
 # E-mail sending
 'php-mail-error-unknown' => "PHP's mail() функцияда белгили болмагъан халат",
+'user-mail-no-addy' => 'Бир e-mail адрес болмагъанлай e-mail иерге кюрешди',
 
 # Change password dialog
 'resetpass' => 'Паролну тюрлендириу',
@@ -545,8 +567,16 @@ $2',
 'passwordreset-capture-help' => 'Бу белгини салсагъыз, къошулуучугъа ийилген болджаллы пароль бла билдириу сизге кёргюзюллюкдю.',
 'passwordreset-email' => 'Электрон почтаны адреси:',
 'passwordreset-emailtitle' => '{{SITENAME}} сайтдагъы тергеу джазыуну юсюнден билгиле',
+'passwordreset-emailelement' => 'Къошулуучуну аты: $1
+Болджаллы пароль: $2',
+'passwordreset-emailsent' => 'Эсгертиу e-mail ийилди.',
+'passwordreset-emailsent-capture' => 'Ийилген эсгертиу e-mail тюбюрекде берилибди.',
+'passwordreset-emailerror-capture' => 'Ийилген эсгертиу e-mail тюбюрекде берилибди, аны ашырыуу джетишимсиз болду, чурум: $1',
 
 # Special:ChangeEmail
+'changeemail' => 'Электрон почтаны адресин ауушдур',
+'changeemail-header' => 'Электрон почтаны адресин ауушдуруу',
+'changeemail-text' => 'Сизни e-mail адресигизни тюрлендирир ючюн бу форманы толтуругъуз. Тюрлениуню бегитир ючюн паролну джазаргъа керек боллукъду.',
 'changeemail-no-info' => 'Бу бетни кёрюр ючюн сиз системагъа тергеу джазыуугъуз (аккаунтугъуз) бла кирирге керексиз.',
 'changeemail-oldemail' => 'Почтаны бусагъатдагъы адреси:',
 'changeemail-newemail' => 'Электрон почтаны джангы адреси:',
@@ -642,8 +672,7 @@ $2',
 '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={{FULLPAGENAMEE}}}} журналлада джазылгъанланы]</span> табаргъа боллукъсуз.',
+Сиз [[Special:Search/{{PAGENAME}}|бу атны таныгъан]] башха статьяланы, неда <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналлада джазылгъанланы]</span> табаргъа боллукъсуз, алай а бу бетни къураргъа эркинлигигиз джокъду.',
 'userpage-userdoesnotexist' => '«<nowiki>$1</nowiki>» тергеу джазыу (аккаунт) джокъду. Къураргъа/тюрлендирирге излеймисиз бу бетни?',
 'userpage-userdoesnotexist-view' => '«$1» тергеу джазыу (аккаунт) джокъду.',
 'blocked-notice-logextract' => 'Бу къошулуучу бусагъатда блокланыб турады.
@@ -652,7 +681,6 @@ $2',
 * '''Firefox / Safari''': ''Shift'' тиекни басыб тургъанлай инструментлени панелинде ''Джангырт'' тиекни басыгъыз, неда ''Ctrl-F5'' басыгъыз, неда ''Ctrl-R'' (Mac-да — ''⌘-R'')
 * '''Google Chrome:''' ''Ctrl-Shift-R'' басыгъыз (Mac-да — ''⌘-Shift-R'')
 * '''Internet Explorer:''' ''Ctrl'' тиекни басыб тургъанлай ''Джангырт'' тиекни басыгъыз, неда ''Ctrl-F5'' басыгъыз
-* '''Konqueror:''' ''Джангырт'' тиекни басыгъыз, неда ''F5'' тиекни
 * '''Opera:''' ''Инструментле → Джарашдырыула'' менюда кэшни ариулауну сайлагъыз",
 'usercssyoucanpreview' => "'''Юретиу.''' «{{int:showpreview}}» тиекни басыгъыз, джангы CSS-файлны сакълатырыгъызны аллы бла тинтиб кёрюрча.",
 'userjsyoucanpreview' => "'''Юретиу.''' «{{int:showpreview}}» тиекни басыгъыз, джангы JS-файлны сакълатырыгъызны аллы бла тинтиб кёрюрча.",
@@ -667,7 +695,7 @@ $2',
 'note' => "'''Белги:'''",
 'previewnote' => "'''Бу къуру ал къарауду.'''
 Сиз этген тюрлениуле алкъын сакъланмагъандыла!",
-'continue-editing' => 'ТÑ\8eÑ\80лендиÑ\80иÑ\83нÑ\8e бардырыгъыз',
+'continue-editing' => 'ТÑ\8eÑ\80лендиÑ\80иÑ\83лени бардырыгъыз',
 'previewconflict' => 'Бу ал къарау, башындагъы тюрлендириу терезеде текстни сакъланнганча кёргюзеди.',
 'session_fail_preview' => "'''Джарсыугъа, сессияны идентификаторуну тас этгени себебли, сервер сизни тюрлендириуюгюзни сакълаталмагъанды.
 Энтдада кёрюгюз.
@@ -747,6 +775,15 @@ $2',
 'edit-already-exists' => 'Джангы бет къураргъа боллукъ тюлдю.
 Алайсызда барды бу атлы бет.',
 'defaultmessagetext' => 'Тынгылау бла текст',
+'content-failed-to-parse' => '$2 контент $1 типге келишмейди: $3',
+'invalid-content-data' => 'Джаламагъан билгиле',
+'content-not-allowed-here' => '[[$2]] бетни ичинде "$1" контент джарамайды',
+
+# Content models
+'content-model-wikitext' => 'вики-текст',
+'content-model-text' => 'тюз текст',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Эсгериу:''' Бу бетде асыры кёб къайнакълы функция барды.
@@ -761,6 +798,13 @@ $2',
 'parser-template-loop-warning' => 'Шаблон тюйюмчек табылгъанды: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Шаблонну рекурсиясыны теренлигини мардасындан тышына чыгъылды ($1)',
 'language-converter-depth-warning' => 'Тилни тюрлетиуюню мардасы толду  ($1)',
+'node-count-exceeded-category' => 'Тюйюмчеклени саны оздурулгъан бетле',
+'node-count-exceeded-warning' => 'Бетде тюйюмчеклени саны оздурулгъанды',
+'expansion-depth-exceeded-category' => 'Кериуню теренлиги оздурулгъан бетле',
+'expansion-depth-exceeded-warning' => 'Бетде ичине салыныуну чеги оздурулгъанды',
+'parser-unstrip-loop-warning' => 'Джабылмагъан pre табылды',
+'parser-unstrip-recursion-limit' => 'Рекурсияны чеги ($1) оздурулду',
+'converter-manual-rule-error' => 'Тилни башха тюрлю этиуню къол джоругъунда халат',
 
 # "Undo" feature
 'undo-success' => 'Бу тюрлениу ызына алыныргъа боллукъду. Тилейбиз, версияланы тенглешдириуюн осмакълагъыз, керти да бу тюрлендириулени этерге излегенигизден ишексиз болугъуз, сора, тюрлениуле къабыл этилир ючюн, «Бетни къош» деген тиекден басыгъыз.',
@@ -894,7 +938,9 @@ $1",
 'revdelete-only-restricted' => '$2, $1 Джазыуланы, джашырыуну башха джарашдырыуларындан бирин сайламай, администраторладан джашыраллыкъ тюлсюз.',
 'revdelete-reason-dropdown' => '* Кетериуню стандарт чурумлары
 ** Автор хакъланы бузуу
-** Орунсуз энчи билгиле',
+** Орунсуз энчи билгиле
+** Джарамагъан къошулуучу ат
+** Адамны юсюнден джалгъан билгиле',
 'revdelete-otherreason' => 'Башха/къошакъ чурум:',
 'revdelete-reasonotherlist' => 'Башха чурум',
 'revdelete-edit-reasonlist' => 'Чурумланы тизмесин тюрлендир',
@@ -947,6 +993,11 @@ $1",
 'editundo' => 'ызына алыу',
 'diff-multi' => '({{PLURAL:$2|Бир къошулуучу|$2 къошулуучу}} этген {{PLURAL:$1|$1 аралыкъ тюрлениу|$1 аралыкъ тюрлениу}} кёргюзюлмегенди)',
 'diff-multi-manyusers' => '($2 къошулуучудан кёб {{PLURAL:$2|Бир къошулуучу|къошулуучу}} этген {{PLURAL:$1|бир аралыкъ тюрлениу|$1 аралыкъ тюрлениу}} кёргюзюлмегенди)',
+'difference-missing-revision' => 'Бу тенглешдириу ($1) ючюн {{PLURAL:$2|$2 версия}} {{PLURAL:$2|табылмады}}.
+
+
+Бу, эскирген джибериу бла кетерилген бетни версияларын тенглешдириуге кёчген сагъатда кёбюсюне болады.
+Толуракъ информация [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} кетериулени журналында] болургъа боллукъду.',
 
 # Search results
 'searchresults' => 'Излеуню эсеби',
@@ -1021,7 +1072,7 @@ $1",
 
 # Preferences page
 'preferences' => 'Джарашдырыула',
-'mypreferences' => 'Джарашдырыуларым',
+'mypreferences' => 'Джарашдырыула',
 'prefs-edits' => 'Тюрлендириулени саны:',
 'prefsnologin' => 'Системагъа кесигизни танытмагъансыз',
 'prefsnologintext' => 'Къошулуучуну джарашдырыуларын тюрлендирир ючюн <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} системагъа кесигизни танытыргъа]</span> керексиз.',
@@ -1032,16 +1083,19 @@ $1",
 'prefs-beta' => 'Бета-амалла',
 'prefs-datetime' => 'Дата бла сагъат',
 'prefs-labs' => 'Эксперимент амалла',
+'prefs-user-pages' => 'Къошулуучуну бетлери',
 'prefs-personal' => 'Энчи билгиле',
 'prefs-rc' => 'Ахыр тюрлениуле',
-'prefs-watchlist' => 'Ð\9aÑ\8aаÑ\80аÑ\83нÑ\83 Ñ\81пиÑ\81огÑ\83',
-'prefs-watchlist-days' => 'Ð\9aÑ\8aаÑ\80аÑ\83нÑ\83 Ñ\81пиÑ\81огÑ\83нда ÐºÑ\91Ñ\80гÑ\8eзÑ\8eллÑ\8eк ÐºÑ\8eннÑ\8e саны:',
+'prefs-watchlist' => 'Ð\9aÑ\91зде Ñ\82Ñ\83Ñ\80гÑ\8aан Ñ\82изме',
+'prefs-watchlist-days' => 'Ð\9aÑ\91зде Ñ\82Ñ\83Ñ\80гÑ\8aан Ñ\82измеде ÐºÑ\91Ñ\80гÑ\8eзÑ\8eллÑ\8eк ÐºÑ\8eнлени саны:',
 'prefs-watchlist-days-max' => 'Максимум $1 {{PLURAL:$1|кюн|кюн}}',
-'prefs-watchlist-edits' => 'Ð\9aÑ\8aаÑ\80аÑ\83нÑ\83 ÐºÐµÐ½Ð³Ð»ÐµÑ\88диÑ\80илген Ñ\81пиÑ\81огÑ\83нда кёргюзюллюк тюрлениулени саны:',
+'prefs-watchlist-edits' => 'Ð\9aÑ\91зде Ñ\82Ñ\83Ñ\80гÑ\8aан Ñ\82измени ÐºÐµÐ½Ð³Ð»ÐµÑ\88диÑ\80илген Ð²Ð°Ñ\80ианÑ\82Ñ\8bнда кёргюзюллюк тюрлениулени саны:',
 'prefs-watchlist-edits-max' => 'Максимум саны:1000',
-'prefs-watchlist-token' => 'Ð\9aÑ\8aаÑ\80аÑ\83нÑ\83 Ñ\81пиÑ\81огÑ\83нÑ\83 токени:',
+'prefs-watchlist-token' => 'Ð\9aÑ\91зде Ñ\82Ñ\8bÑ\80гÑ\8aан Ñ\82измени токени:',
 'prefs-misc' => 'Башха джарашдыдырыула',
 'prefs-resetpass' => 'Паролну тюрлендир',
+'prefs-changeemail' => 'Электрон почтаны адресин ауушдур',
+'prefs-setemail' => 'Лл. почтаны адресин айырыу',
 'prefs-email' => 'Электрон почтаны параметрлери',
 'prefs-rendering' => 'Кёрюнюую',
 'saveprefs' => 'Сакъла',
@@ -1059,8 +1113,8 @@ $1",
 'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|кюн|кюн}})',
 'recentchangescount' => 'Тынгылау бла кёргюзюллюк тюрлениулени саны:',
 'prefs-help-recentchangescount' => 'Бу, ахыр тюрлениулени, бетни тарихлерин эмда журналланы ичине къошады.',
-'prefs-help-watchlist-token' => 'Ð\91Ñ\83 Ð°Ð»Ð°Ð½Ð½Ñ\8b Ð´Ð¶Ð°Ñ\88Ñ\8bÑ\80Ñ\82Ñ\8bн Ð°Ñ\87Ñ\85Ñ\8bÑ\87 Ð±Ð»Ð° Ñ\82олÑ\82Ñ\83Ñ\80Ñ\83Ñ\83, ÐºÑ\8aаÑ\80аÑ\83 Ñ\81пиÑ\81огÑ\83гÑ\8aÑ\83з ючюн бир RSS-трансляция къурайды.
\91Ñ\83 Ð°Ð»Ð°Ð½Ð´Ð°Ð³Ñ\8aÑ\8b Ð°Ñ\87Ñ\85Ñ\8bÑ\87нÑ\8b Ð±Ð¸Ð»Ð³ÐµÐ½Ð»Ðµ ÐºÑ\8aаÑ\80аÑ\83 Ñ\81пиÑ\81огÑ\83гÑ\8aÑ\83знÑ\83 окъургъа боллукъду, ол себебден сырлы магъана сайлагъыз.
+'prefs-help-watchlist-token' => 'Ð\91Ñ\83 Ð°Ð»Ð°Ð½Ð½Ñ\8b Ð´Ð¶Ð°Ñ\88Ñ\8bÑ\80Ñ\82Ñ\8bн Ð°Ñ\87Ñ\85Ñ\8bÑ\87 Ð±Ð»Ð° Ñ\82олÑ\82Ñ\83Ñ\80Ñ\83Ñ\83, ÐºÑ\91зде Ñ\82Ñ\83Ñ\80гÑ\8aан Ñ\82измегиз ючюн бир RSS-трансляция къурайды.
\91Ñ\83 Ð°Ð»Ð°Ð½Ð´Ð°Ð³Ñ\8aÑ\8b Ð°Ñ\87Ñ\85Ñ\8bÑ\87нÑ\8b Ð±Ð¸Ð»Ð³ÐµÐ½Ð»Ðµ ÐºÑ\91зде Ñ\82Ñ\83Ñ\80гÑ\8aан Ñ\82измегизни окъургъа боллукъду, ол себебден сырлы магъана сайлагъыз.
 Сакъланмагъанлай генерация этилген магъананы хайырландырыргъа боллукъсуз: $1',
 'savedprefs' => 'Джарашдырыуларыгъыз сакъландыла.',
 'timezonelegend' => 'Заман бел:',
@@ -1081,7 +1135,7 @@ $1",
 'timezoneregion-indian' => 'Индий океан',
 'timezoneregion-pacific' => 'Шош океан',
 'allowemail' => 'Башха къошулуучуладан электрон почтаны келмеге къой',
-'prefs-searchoptions' => 'Излеуню джарашдырыулары',
+'prefs-searchoptions' => 'Излеу',
 'prefs-namespaces' => 'Атла алам',
 'defaultns' => 'Башха халда бу атла аламлада изле:',
 'default' => 'тынгылау бла',
@@ -1103,6 +1157,7 @@ $1",
 'yourrealname' => 'Керти атыгъыз:',
 'yourlanguage' => 'Интерфейсни тили:',
 'yourvariant' => 'Ичиндегисини тилини варианты:',
+'prefs-help-variant' => 'Викини бетлерин кёргюзтюрге сайланнган тилни неда орфографияны варианты',
 'yournick' => 'Псевдонимигиз (къол салыулагъа):',
 'prefs-help-signature' => 'Сюзюу бетледеги комментарийлеге «<nowiki>~~~~</nowiki>» символла къошулуб къол салыныргъа керекди, бу, къолугъузгъа эмда заман тамгъагъа буруллукъду.',
 'badsig' => 'Джараусуз къол салыныу.
@@ -1136,6 +1191,10 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'prefs-displaywatchlist' => 'Кёрюнюуню джарашдырыулары',
 'prefs-diffs' => 'Версияланы башхалыкълары',
 
+# User preference: e-mail validation using jQuery
+'email-address-validity-valid' => 'E-mail адрес тюзге ушайды',
+'email-address-validity-invalid' => 'Тюз e-mail адрес джазыгъыз!',
+
 # User rights
 'userrights' => 'Къошулуучуну хакъларына оноу этиу',
 'userrights-lookup-user' => 'Къошулуучуланы къауумуна оноу эт',
@@ -1208,6 +1267,7 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'right-writeapi' => 'API джазыугъа хайырланыуу',
 'right-delete' => 'белтени кетериу',
 'right-bigdelete' => 'узун тарихли бетлени кетериу',
+'right-deletelogentry' => 'журналны белгили бир джазыуларын кетериу эм ызына салыу.',
 'right-deleterevision' => 'бетлени белгили версияларыны кетериу эмда ызына къайтарыу',
 'right-deletedhistory' => 'Узакъдагъы эркинликсиз кетерилген бетлени тарихине къара',
 'right-deletedtext' => 'Кетерилген текстни эм кетерилген версияланы арасындагъы тюрлениулеге къара',
@@ -1235,18 +1295,23 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'right-patrol' => 'Башхаланы тюрлениулерини осмакъланнганларын белгиле',
 'right-autopatrol' => 'Тюрлениуле автоматик осмакъланнган кибик белгиленедиле',
 'right-patrolmarks' => 'Ахыр тюрлениулени осмакъланыуларыны белгилерине къара',
-'right-unwatchedpages' => 'Ð\9aÑ\8aаÑ\80алмагÑ\8aан Ð±ÐµÑ\82лени Ñ\81пиÑ\81огÑ\83на ÐºÑ\8aаÑ\80а',
+'right-unwatchedpages' => 'Ð\9aÑ\91зде Ñ\82Ñ\83Ñ\80гÑ\8aан Ñ\82измегизде Ð±Ð¾Ð»Ð¼Ð°Ð³Ñ\8aан Ð±ÐµÑ\82лени Ñ\82измеÑ\81ине ÐºÑ\8aаÑ\80аÑ\83',
 'right-mergehistory' => 'Бетлени тарихлерини бирлешдир',
 'right-userrights' => 'Бютеу къошулуучуланы хакъларыны тюрлендириу',
 'right-userrights-interwiki' => 'Башха викиледеги къошулуучуларыны хакъларын тюрлендир',
 'right-siteadmin' => 'Билги базаны киритле эмда киритни ач',
 'right-override-export-depth' => 'Бетлени, теренлиги 5-ге дери байламлы бетле бла бирге экспорт эт',
 'right-sendemail' => 'Башха къошулуучулагъа электрон почта джиберирге',
+'right-passwordreset' => "пароль тюрлениуле бла e-mail'леге къарау",
 
 # User rights log
 'rightslog' => 'Къошулуучуну хакъларыны журналы',
 'rightslogtext' => 'Бу къошулуучуну хакъларыны тюрлениуюню журналыды',
 'rightslogentry' => '$1-ни къауумлада членлиги $2-ден $3-ге тюрленнгенди',
+'rightslogentry-autopromote' => '$2 къауумдан автомат халда $3 къауумгъа кёчюрюлдю',
+'logentry-rights-rights' => '$1 къошулуучу, $3 къошулуучуну членлигин $4 къауумдан $5 къауумгъа кёчюрдю',
+'logentry-rights-rights-legacy' => '$1 къошулуучу, $3 къушулуучуну къауумлада членлигин тюрлендирди',
+'logentry-rights-autopromote' => '$1 къошулуучу, $4 къауумдан автомат халда $5 къауумгъа кёчюрюлдю',
 'rightsnone' => '(джокъ)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1274,6 +1339,7 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'action-suppressionlog' => 'бу энчи журналгъа къарау',
 'action-block' => 'Къошулуучуну блок этиу, тюрлендириуле этерге къоймау',
 'action-protect' => 'бу бетни джакълау дараджасын тюрлендириу',
+'action-rollback' => 'бетни ахыр тюрлендирген къошулуучуну тюрлендириулерин дженгил ызына алыу',
 'action-import' => 'бу бетни башха викиден импорт этиу',
 'action-importupload' => 'бу бетни джюкленнген файлдан импорт этиу',
 'action-patrol' => 'башхаланы тюрлендириулерин патруль этилиннгенлеча белгилеу',
@@ -1283,6 +1349,7 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'action-userrights' => 'къошулуучуну бютеу хакъларын тюрлендириу',
 'action-userrights-interwiki' => 'къошулуучуланы башха викиледе хакъларын тюрлендириу',
 'action-siteadmin' => 'билгилени базасын блокга салыу эм блокдан алыу',
+'action-sendemail' => 'E-mail джибериу',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|тюрлениу|тюрлениу}}',
@@ -1315,9 +1382,11 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'rc_categories' => 'Категориялагъа юлеш («|» бла айыр)',
 'rc_categories_any' => 'Къайсы да',
 'rc-change-size' => '$1',
+'rc-change-size-new' => 'Тюрлениуден сора ёлчеми: $1 {{PLURAL:$1|байт}}',
 'newsectionsummary' => '/* $1 */ Джангы бёлюм',
 'rc-enhanced-expand' => 'Къошакъланы кёргюз (JavaScript хайырланады)',
 'rc-enhanced-hide' => 'Къошакъланы джашыр',
+'rc-old-title' => 'биринчи «$1» деб къуралгъан',
 
 # Recent changes linked
 'recentchangeslinked' => 'Байламлы тюрлениуле',
@@ -1344,7 +1413,7 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 
 Бу бетге кетериуле бла ат тюрлендириулени журналы тюбюрекде бериледи:",
 'uploadtext' => "Файл джюклер ючюн тюбюндеги форманы хайырлан.
\90лландан Ð´Ð¶Ñ\8eкленнген Ñ\84айлланÑ\8b ÐºÑ\91Ñ\80Ñ\8eÑ\80 Ð½ÐµÐ´Ð° Ð¸Ð·Ð»ÐµÑ\80 Ñ\8eÑ\87Ñ\8eн [[Special:FileList|джÑ\8eкленнген Ñ\84айлланÑ\8b Ñ\81пиÑ\81огÑ\83на]] къарагъыз, (джангыдан) джюкленнгенле [[Special:Log/upload|джюклеу журналында]], кетерилгенле [[Special:Log/delete|кетериу журналында]] тутуладыла.
\90лландан Ð´Ð¶Ñ\8eкленнген Ñ\84айлланÑ\8b ÐºÑ\91Ñ\80Ñ\8eÑ\80 Ð½ÐµÐ´Ð° Ð¸Ð·Ð»ÐµÑ\80 Ñ\8eÑ\87Ñ\8eн [[Special:FileList|джÑ\8eкленнген Ñ\84айлланÑ\8b Ñ\82измеÑ\81ине]] къарагъыз, (джангыдан) джюкленнгенле [[Special:Log/upload|джюклеу журналында]], кетерилгенле [[Special:Log/delete|кетериу журналында]] тутуладыла.
 
 Бетге файл салыр ючюн байлмыгъызда тюбюндеги формаларыны бирин хайырланыгъыз;
 * Файлны бютеу ёлчемини салыр ючюн: '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>'''
@@ -1355,7 +1424,7 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'upload-prohibited' => 'Джасакъ этилген файлланы типлери: $1.',
 'uploadlog' => 'Джюклеулени журналы',
 'uploadlogpage' => 'Джюклеулени журналы',
-'uploadlogpagetext' => 'ТÑ\8eбÑ\8eнде Ñ\8dм Ð°Ñ\85Ñ\8bÑ\80 ÐºÑ\8aоÑ\88Ñ\83лгÑ\8aан Ñ\84айлланÑ\8b Ñ\81пиÑ\81огÑ\83 барды.
+'uploadlogpagetext' => 'ТÑ\8eбÑ\8eнде Ñ\8dм Ð°Ñ\85Ñ\8bÑ\80 ÐºÑ\8aоÑ\88Ñ\83лгÑ\8aан Ñ\84айлланÑ\8b Ñ\82измеÑ\81и барды.
 Дагъыда [[Special:NewFiles|dosyalджангы файлланы галереясына]] къара, анда джангы джюклеулени юсюнден билгиле толу кёрюгюзюлгендиле.',
 'filename' => 'Файлны аты',
 'filedesc' => 'Къысха ачыкълау',
@@ -1369,6 +1438,7 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'minlength1' => 'Файлны аты эм азы бла бир харифден болургъа керекди.',
 'illegalfilename' => '«$1» файл атда хайырланыугъа къабыл этилмеген символла бардыла.
 Файлны атын тюрлендириб, джангыдан джюклегиз.',
+'filename-toolong' => 'Файлланы атлары 240 байтдан кёб болмазгъа керекдиле.',
 'badfilename' => 'Файлны аты $1 болуб ауушду.',
 'filetype-mime-mismatch' => '«.$1» файл MIME-типге ($2) келишмейди.',
 'filetype-badmime' => '«$1» MIME типли файлланы джюклениуюне эркинлик берлимейди.',
@@ -1392,6 +1462,7 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'large-file' => 'Файлланы $1 байтдан уллу болмасы изленеди (бу файлны ёлчеми $2)',
 'largefileserver' => 'Бу файл сервер эркинлик бергенден уллуду.',
 'emptyfile' => 'Джюклеген файлыгъыз бош кёрюнеди. Буну чуруму файлны атыны джазыуда халат болургъа болур. Файлны джюклерге излегенигизден ишексиз болугъуз.',
+'windows-nonascii-filename' => 'ASCII таблицада болмагъан символла бла файл атланы бу вики тутмайды',
 'fileexists' => 'Быллай атлы файл барды.
 Аны ауушдурурда аккылы эсегиз, алгъын <strong>[[:$1]]</strong> файлгъа кёз джетдиригиз.
 [[$1|thumb]]',
@@ -1478,12 +1549,14 @@ URL-адрес тюз болгъанын осмакълагъыз эмда дж
 # File backend
 'backend-fail-delete' => '«$1» файл кетерилмеди.',
 'backend-fail-store' => '$1 файл $2 ичинде сакъланылынмады.',
+'backend-fail-read' => '«$1» файлны окъуялмады.',
 
 # Special:UploadStash
 'uploadstash' => 'Джашыртын джюклеу',
 'uploadstash-clear' => 'Джашырылгъан файлланы ариула',
 'uploadstash-nofiles' => 'Сизни джашырылгъан файлларыгъыз джокъду',
 'uploadstash-refresh' => 'Файлланы тизмесин джангырт',
+'invalid-chunk-offset' => 'Фрагментни джарамагъан офсети',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Эркинлик джасакъланнганды',
@@ -1493,7 +1566,7 @@ CGI тамалында ишлерге эмда <code>img_auth</code> бла иш
 Къарагъыз: https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 'img-auth-notindir' => 'Изленнген джол джюклениулени папкасы бла байламлы тюлдю.',
 'img-auth-badtitle' => '«$1» бла джараулу башлыкъ этилмейди.',
-'img-auth-nologinnWL' => 'Сиз Ñ\81иÑ\81Ñ\82емагÑ\8aа ÐºÐ¸Ñ\80медигиз, Ñ\8dмда Â«$1» Ð°ÐºÑ\8a Ñ\81пиÑ\81окда тюлдю.',
+'img-auth-nologinnWL' => 'Сиз Ñ\81иÑ\81Ñ\82емагÑ\8aа ÐºÐ¸Ñ\80медигиз, Ñ\8dмда Â«$1» Ð°ÐºÑ\8a Ñ\82измеде тюлдю.',
 'img-auth-nofile' => '«$1» файл джокъду.',
 'img-auth-isdir' => '«$1» каталогга кирирге излейсиз.
 Къуру файллагъа кирирге эркинлик барды.',
@@ -1534,7 +1607,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 Къошулуучугъа кёре айырыуда, ол къошулуучуну джангыз кёб болмай джюклеген файллары кёргюзюледиле.',
 'listfiles_search_for' => 'Медиа ат бла изле:',
 'imgfile' => 'файл',
-'listfiles' => 'ФайлланÑ\8b Ñ\81пиÑ\81огÑ\83',
+'listfiles' => 'ФайлланÑ\8b Ñ\82измеÑ\81и',
 'listfiles_thumb' => 'Миниатюра',
 'listfiles_date' => 'Заман',
 'listfiles_name' => 'Файлны аты',
@@ -1562,9 +1635,9 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'filehist-missing' => 'Файл джокъду',
 'imagelinks' => 'Файлны хайырланыуу',
 'linkstoimage' => 'Бу файлгъа {{PLURAL:$1|бет|$1 бет}} джибередиле:',
-'linkstoimage-more' => '$1-ден артыкъ {{PLURAL:$1|бет|бет}} бу файлгъа джибериу береди.
\9aÑ\91зÑ\8eÑ\83деги Ñ\81пиÑ\81ок ÐºÑ\8aÑ\83Ñ\80Ñ\83 Ð±Ñ\83 Ñ\84айлгÑ\8aа Ð´Ð¶Ð¸Ð±ÐµÑ\80иÑ\83 Ð±ÐµÑ\80ген {{PLURAL:$1|биÑ\80инÑ\87и Ñ\84айлнÑ\8b|биÑ\80инÑ\87и $1 Ñ\84айлнÑ\8b}} ÐºÑ\91Ñ\80гÑ\8eзеди.
-[[Special:WhatLinksHere/$2|ТолÑ\83 Ñ\81пиоÑ\81ок]] барды.',
+'linkstoimage-more' => '$1 дегенден артыкъ {{PLURAL:$1|бет}} бу файлгъа джибериу береди.
\91Ñ\83 Ñ\82измеде Ð±Ñ\83 Ñ\84айлгÑ\8aа {{PLURAL:$1|кÑ\8aÑ\83Ñ\80Ñ\83 $1 Ð´Ð¶Ð¸Ð±ÐµÑ\80иÑ\83}} ÐºÑ\91Ñ\80гÑ\8eзÑ\8eледи.
+[[Special:WhatLinksHere/$2|ТолÑ\83 Ñ\82изме]] Ð´Ð° барды.',
 'nolinkstoimage' => 'Бу файлгъа джиберген бет джокъду.',
 'morelinkstoimage' => 'Бу файлгъа [[Special:WhatLinksHere/$1|къалгъан джибериулеге]] къара.',
 'linkstoimage-redirect' => '$1 (файл редирект) $2',
@@ -1624,7 +1697,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 
 # Unused templates
 'unusedtemplates' => 'Хайырландырылмагъан шаблонла',
-'unusedtemplatestext' => 'Ð\91Ñ\83 Ð±ÐµÑ\82 {{ns:template}} Ð°Ð»Ð°Ð½ Ð°Ñ\82Ñ\8bнда Ñ\82Ñ\83Ñ\80гÑ\8aан Ñ\8dмда Ð±Ð°Ñ\88Ñ\85а Ð±ÐµÑ\82леге ÐºÑ\8aоÑ\88Ñ\83лгмаÑ\8aан Ð±ÐµÑ\82лени Ñ\81пиÑ\81огÑ\83 барды. Кетериуню аллы бла, шаблоннга башха джибериулени джокоълагъыз.',
+'unusedtemplatestext' => 'Ð\91Ñ\83 Ð±ÐµÑ\82 {{ns:template}} Ð°Ð»Ð°Ð½ Ð°Ñ\82Ñ\8bнда Ñ\82Ñ\83Ñ\80гÑ\8aан Ñ\8dмда Ð±Ð°Ñ\88Ñ\85а Ð±ÐµÑ\82леге ÐºÑ\8aоÑ\88Ñ\83лгмаÑ\8aан Ð±ÐµÑ\82лени Ñ\82измеÑ\81и барды. Кетериуню аллы бла, шаблоннга башха джибериулени джокоълагъыз.',
 'unusedtemplateswlh' => 'башха джибериуле',
 
 # Random page
@@ -1658,11 +1731,12 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 
 'disambiguations' => 'Ангылам айыргъан бетлеге джибериулери болгъан бетле',
 'disambiguationspage' => 'Template:кёб магъаналылыкъ',
-'disambiguations-text' => "Бу бетле '''кёб магъаналы бетлеге''' джибериу этедиле. Аны орнуна ала белгили бир статьягъа джибериу этерге керек болурла.<br />
-[[MediaWiki:Disambiguationspage]] бетде аты салынган шаблон бетде болса, ол бет кёб магъаналы бетге саналады.",
+'disambiguations-text' => "Келтирилген бетледе '''кёб магъаналы бетлеге''' эм азы бла бир джибериу барды.
+Аны орнуна ала белгили бир статьягъа джибериу этерге керек болурла.<br />
+[[MediaWiki:Disambiguationspage]] бетде аты салыннган шаблон бар эсе, ол бет кёб магъаналы бетге саналады.",
 
 'doubleredirects' => 'Джибериу болгъан джибериуле',
-'doubleredirectstext' => 'Ð\91Ñ\83 Ð±ÐµÑ\82де Ð±Ð°Ñ\88Ñ\85Ñ\8b Ð´Ð¶Ð¸Ð±ÐµÑ\80иÑ\83леге Ñ\8dÑ\82илген Ð´Ð¶Ð¸Ð±ÐµÑ\80иÑ\83лени Ñ\81пиÑ\81огÑ\83 барды.
+'doubleredirectstext' => 'Ð\91Ñ\83 Ð±ÐµÑ\82де Ð±Ð°Ñ\88Ñ\85Ñ\8b Ð´Ð¶Ð¸Ð±ÐµÑ\80иÑ\83леге Ñ\8dÑ\82илген Ð´Ð¶Ð¸Ð±ÐµÑ\80иÑ\83лени Ñ\82измеÑ\81и барды.
 Хар тизгин биринчи неда экинчи джибериуню эмда асламысында бетни аты джазылгъан, биринчи джибериу кёргюзген, экинчи джибериуню нюзюр бети джазылады.
 <del>Юсю сызылгъан</del> джазыула тюзетилген этгендиле.',
 'double-redirect-fixed-move' => '[[$1]] бет атын тюрлендиргенди, энди ол [[$2]] бетге джибериу этеди',
@@ -1734,7 +1808,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'move' => 'Атын тюрлендириу',
 'movethispage' => 'Бу бетни атын тюрлендир',
 'unusedimagestext' => 'Файлла бардыла, алай а бетге джазылмагъандыла.
-УнÑ\83Ñ\82магÑ\8aÑ\8bз, Ð±Ð°Ñ\88Ñ\85а Ð²ÐµÐ± Ñ\81айÑ\82ланÑ\8b Ð±Ñ\83 Ñ\84айлгÑ\8aа Ð°Ñ\87Ñ\8bкÑ\8aдан URL Ð±Ð»Ð° Ð´Ð¶Ð¸Ð±ÐµÑ\80иÑ\83 Ð±ÐµÑ\80иÑ\80ге Ð±Ð¾Ð»Ð»Ñ\83кÑ\8aлаÑ\80Ñ\8bн, Ñ\8dмда Ð°Ð½Ñ\8b Ñ\8eÑ\87Ñ\8eн Ð±Ñ\83 Ñ\81пиÑ\81окга киргенине къарамай актив халда хайырланыргъа боллукъду.',
+УнÑ\83Ñ\82магÑ\8aÑ\8bз, Ð±Ð°Ñ\88Ñ\85а Ð²ÐµÐ± Ñ\81айÑ\82ланÑ\8b Ð±Ñ\83 Ñ\84айлгÑ\8aа Ð°Ñ\87Ñ\8bкÑ\8aдан URL Ð±Ð»Ð° Ð´Ð¶Ð¸Ð±ÐµÑ\80иÑ\83 Ð±ÐµÑ\80иÑ\80ге Ð±Ð¾Ð»Ð»Ñ\83кÑ\8aлаÑ\80Ñ\8bн, Ñ\8dмда Ð°Ð½Ñ\8b Ñ\8eÑ\87Ñ\8eн Ð±Ñ\83 Ñ\82измеге киргенине къарамай актив халда хайырланыргъа боллукъду.',
 'unusedcategoriestext' => 'Бу категорияла болгъанлыкъгъа, чырт бир статья неда категория джанындан хайырланмыайдыла.',
 'notargettitle' => 'Нюзюр белгиленмегенди',
 'notargettext' => 'Бу функцияны ишлетир ючюн нюзюр бетни неда къошулуучуну белгилемегенсиз.',
@@ -1749,7 +1823,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'booksources-search-legend' => 'Китабны юсюнден информация излеу',
 'booksources-isbn' => 'ISBN:',
 'booksources-go' => 'Таб',
-'booksources-text' => 'Ð\91Ñ\83 Ð±ÐµÑ\82де Ð´Ð¶Ð°Ð½Ð³Ñ\8b Ñ\8dмда Ñ\8dÑ\81ки ÐºÐ¸Ñ\82аб Ñ\81аÑ\82Ñ\85ан Ð±Ð°Ñ\88Ñ\85а Ñ\81айÑ\82лагÑ\8aа Ð´Ð¶Ð¸Ð±ÐµÑ\80иÑ\83лени Ñ\81пиÑ\81огÑ\83 барды, эм излеген китабларыгъызны юсюнден кёбюрек билги билирге боллукъсуз.',
+'booksources-text' => 'Ð\91Ñ\83 Ð±ÐµÑ\82де Ð´Ð¶Ð°Ð½Ð³Ñ\8b Ñ\8dмда Ñ\8dÑ\81ки ÐºÐ¸Ñ\82аб Ñ\81аÑ\82Ñ\85ан Ð±Ð°Ñ\88Ñ\85а Ñ\81айÑ\82лагÑ\8aа Ð´Ð¶Ð¸Ð±ÐµÑ\80иÑ\83лени Ñ\82измеÑ\81и барды, эм излеген китабларыгъызны юсюнден кёбюрек билги билирге боллукъсуз.',
 'booksources-invalid-isbn' => 'Берилген ISBN джараусуз кибик кёрюнеди; оригинал къайнакъдан кёчюрюлген заманда халатланы контроль этигиз.',
 
 # Special:Log
@@ -1775,7 +1849,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'allpagesprev' => 'Аллындагъы',
 'allpagesnext' => 'Эндиги',
 'allpagessubmit' => 'Тындыр',
-'allpagesprefix' => 'Ð\91Ñ\8bлайда Ð´Ð¶Ð°Ð·Ð³Ñ\8aан Ñ\85аÑ\80иÑ\84леден Ð±Ð°Ñ\88ланнган Ð±ÐµÑ\82лени Ñ\81пиÑ\81ок эт:',
+'allpagesprefix' => 'Ð\91Ñ\8bлайда Ð´Ð¶Ð°Ð·Ð³Ñ\8aан Ñ\85аÑ\80иÑ\84леден Ð±Ð°Ñ\88ланнган Ð±ÐµÑ\82лени Ñ\82изме эт:',
 'allpagesbadtitle' => 'Кирилген бет аты тиллени арасы байлм неда викилени арасында байлам болгъаны себебли джараусузду. Башлыкълада хайырланыуу джасакъ болгъан бир неда андан аслам символ тутаргъа болур.',
 'allpages-bad-ns' => '{{SITENAME}} сайтда «$1» ат алам джокъду.',
 'allpages-hide-redirects' => 'Башха бетлеге джиберген бетлени (редиректлени) джашыр',
@@ -1799,9 +1873,9 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'linksearch-pat' => 'Излеуге шаблон:',
 'linksearch-ns' => 'Ат алам:',
 'linksearch-ok' => 'Таб',
-'linksearch-text' => '<code>*.wikipedia.org</code> кибик символлла хайырландырыргъа боллукъдула.
-Эм азы бла огъары дараджаны домени керекди, юлгюге: <code>*.org</code><br />
\94агÑ\8aан Ð±Ð¾Ð»Ð³Ñ\8aан Ð¿Ñ\80оÑ\82околла: <code>$1</code> (бÑ\8bладан ÐºÑ\8aайÑ\81Ñ\8bÑ\81Ñ\8bнда Ð¸Ð·Ð»ÐµÑ\83Ñ\8eгÑ\8eзге ÐºÑ\8aоÑ\88магÑ\8aÑ\8bз)',
+'linksearch-text' => '"*.wikipedia.org" кибик символлла хайырландырыргъа боллукъдула.
+Эм азы бла огъары дараджаны домени керекди, юлгюге: "*.org".<br />
\94агÑ\8aан Ð±Ð¾Ð»Ð³Ñ\8aан Ð¿Ñ\80оÑ\82околла: <code>$1</code> (пÑ\80оÑ\82окол Ð±ÐµÐ»Ð³Ð¸Ð»ÐµÐ½Ð¼ÐµÐ³ÐµÐ½ Ñ\8dÑ\81е, Ñ\82Ñ\8bнгÑ\8bлаÑ\83 Ð±Ð»Ð° http:// Ð±Ð¾Ð»Ð»Ñ\83кÑ\8aдÑ\83)',
 'linksearch-line' => '$1-ге  $2-ден джибериу берилгенди',
 'linksearch-error' => 'Джокерле къуру адреслени аллында хайырланыргъа боллукъдула.',
 
@@ -1813,7 +1887,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 
 # Special:ActiveUsers
 'activeusers' => 'Актив къошулуучуланы тизмеси',
-'activeusers-intro' => 'Ð\91Ñ\83, Ð°Ñ\85Ñ\8bÑ\80 $1 {{PLURAL:$1|кÑ\8eнде|кÑ\8eнде}} ÐºÑ\8aаллайда Ð±Ð¾Ð»Ñ\81Ñ\83н Ð¸Ñ\88леÑ\82ме ÐºÑ\91Ñ\80гÑ\8eзген ÐºÑ\8aоÑ\88лÑ\83Ñ\83Ñ\87Ñ\83ланÑ\8b Ñ\81пиÑ\81огÑ\83дÑ\83.',
+'activeusers-intro' => 'Ð\91Ñ\83, Ð°Ñ\85Ñ\8bÑ\80 $1 {{PLURAL:$1|кÑ\8eнде|кÑ\8eнде}} ÐºÑ\8aаллайда Ð±Ð¾Ð»Ñ\81Ñ\83н Ð¸Ñ\88леÑ\82ме ÐºÑ\91Ñ\80гÑ\8eзген ÐºÑ\8aоÑ\88лÑ\83Ñ\83Ñ\87Ñ\83ланÑ\8b Ñ\82измеÑ\81иди.',
 'activeusers-count' => 'Ахыр {{PLURAL:$3|кюнде|$3 кюнде}} $1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
 'activeusers-from' => 'Бу бла башланнган къошлуучуланы кёргюз:',
 'activeusers-hidebots' => 'Ботланы джашыр',
@@ -1822,11 +1896,11 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 
 # Special:Log/newusers
 'newuserlogpage' => 'Къошулуучуланы регистрацияларыны журналы',
-'newuserlogpagetext' => 'Ð\9aÑ\91б Ð±Ð¾Ð»Ð¼Ð°Ð¹ Ñ\80егиÑ\81Ñ\82Ñ\80аÑ\86иÑ\8f Ñ\8dÑ\82ген ÐºÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83ланÑ\8b Ñ\81пиÑ\81огÑ\83.',
+'newuserlogpagetext' => 'Ð\9aÑ\91б Ð±Ð¾Ð»Ð¼Ð°Ð¹ Ñ\80егиÑ\81Ñ\82Ñ\80аÑ\86иÑ\8f Ñ\8dÑ\82ген ÐºÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83ланÑ\8b Ñ\82измеÑ\81и.',
 
 # Special:ListGroupRights
 'listgrouprights' => 'Къошулуучуланы къауумуну хакълары',
-'listgrouprights-summary' => 'ТÑ\8eбÑ\8eндеги Ð±Ñ\83 Ð²Ð¸ÐºÐ¸Ð´Ðµ Ñ\82анÑ\8bлгÑ\8aан ÐºÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83 ÐºÑ\8aаÑ\83Ñ\83мланÑ\8b Ñ\8dмда Ð°Ð»Ð°Ð½Ñ\8b Ñ\85акÑ\8aлаÑ\80Ñ\8bнÑ\8b Ñ\81пиÑ\81огÑ\83.
+'listgrouprights-summary' => 'ТÑ\8eбÑ\8eндеги Ð±Ñ\83 Ð²Ð¸ÐºÐ¸Ð´Ðµ Ñ\82анÑ\8bлгÑ\8aан ÐºÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83 ÐºÑ\8aаÑ\83Ñ\83мланÑ\8b Ñ\8dмда Ð°Ð»Ð°Ð½Ñ\8b Ñ\85акÑ\8aлаÑ\80Ñ\8bнÑ\8b Ñ\82измеÑ\81и.
 Энчи хакъла бла байламлы [[{{MediaWiki:Listgrouprights-helppage}}|асламыракъ билги]] болургъа болур.',
 'listgrouprights-key' => '* <span class="listgrouprights-granted">Берилген хакъла</span>
 * <span class="listgrouprights-revoked">Сыйырылгъан хакъла</span>',
@@ -1881,7 +1955,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 
 # Watchlist
 'watchlist' => 'Кёзюмде тургъан тизмем',
-'mywatchlist' => 'Кёзюмдеги тизмем',
+'mywatchlist' => 'Кёздеги тизме',
 'watchlistfor2' => '$1 ючюн $2',
 'nowatchlist' => 'Кёзюгюзде тургъан тизмегиз бошду.',
 'watchlistanontext' => 'Кёзюгюзде тургъан тизмегизни статьяланы кёрюр неда тюрлендирир ючюн $1.',
@@ -1891,7 +1965,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'addedwatchtext' => '«[[:$1]]» бет [[Special:Watchlist|кёзюгюзде тургъан тизмегизге]] къошулду.
 Бу бетни эмда муну бла байламлы сюзюу бетни тюрлениулери ол тизмеде белгиленникдиле, [[Special:RecentChanges|джангы тюрлениулени тизмесини]] бетинде уа къалын шрифт бла чертилинникдиле, кёрюрге тынчыракъ болурча.',
 'removewatch' => 'Кёзде тургъан тизмеден кетер',
-'removedwatchtext' => '«[[:$1]]» Ð±ÐµÑ\82 Ñ\81изни [[Special:Watchlist|кÑ\91зÑ\8eгÑ\8eзде Ñ\82Ñ\83Ñ\80гÑ\8aан Ñ\82измегизден]] ÐºÐµÑ\82еÑ\80илгенди.',
+'removedwatchtext' => '«[[:$1]]» бет сизни [[Special:Watchlist|кёзюгюзде тургъан тизмегизден]] кетерилди.',
 'watch' => 'Кёзде тут',
 'watchthispage' => 'Бу бетни кёзде тут',
 'unwatch' => 'Кёзде тутма',
@@ -1906,7 +1980,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'watchmethod-list' => 'кёзде тургъан бетледе этилген ахыр тюрлениуле кёрюу',
 'watchlistcontains' => 'Кёзюгюзде тургъан тизмегизде $1 {{PLURAL:$1|бет|бет}} барды.',
 'iteminvalidname' => "'$1' элемент бла проблемала, джараусуз ат...",
-'wlnote' => "Ð\90Ñ\85Ñ\8bÑ\80 {{PLURAL:$2|биÑ\80 Ñ\81агÑ\8aаÑ\82Ñ\85а|'''$2''' Ñ\81агÑ\8aаÑ\82Ñ\85а}} Ñ\8dÑ\82илген {{PLURAL:$1|аÑ\85Ñ\8bÑ\80 Ñ\82Ñ\8eÑ\80лениÑ\83|аÑ\85Ñ\8bÑ\80 '''$1''' Ñ\82Ñ\8eÑ\80лениÑ\83}} Ñ\82Ñ\8eбÑ\8eндеди.",
+'wlnote' => "ТÑ\8eбÑ\8eндеди ÐºÑ\91Ñ\80гÑ\8eзÑ\8eлгенди: Ð°Ñ\85Ñ\8bÑ\80 '''$2''' Ñ\81агÑ\8aаÑ\82Ñ\85а Ñ\8dÑ\82илген Ð°Ñ\85Ñ\8bÑ\80 '''$1''' Ñ\82Ñ\8eÑ\80лениÑ\83, $3 $4 Ð·Ð°Ð¼Ð°Ð½Ð½Ð³Ð° Ð´ÐµÑ\80и.",
 'wlshowlast' => 'Арт $1 сагъат $2 кюннге $3 кёргюз',
 'watchlist-options' => 'Кёзде тургъан тизмени джарашдырыулары',
 
@@ -1916,11 +1990,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 
 'enotif_mailer' => '{{SITENAME}} Билдириу Почта',
 'enotif_reset' => 'Бютеу бетлени къаралгъанча белгиле',
-'enotif_newpagetext' => 'Бу джангы бетди',
 'enotif_impersonal_salutation' => '{{SITENAME}} къошулуучу',
-'changed' => 'тюрленди',
-'created' => 'къуралды',
-'enotif_subject' => '{{SITENAME}} бет $PAGETITLE, $PAGEEDITOR джанындан $CHANGEDORCREATED этилгенди.',
 'enotif_lastvisited' => 'Ахыр кириуюгюзден бу кереге дери болгъан бютеу тюрлениулени кёрюр ючюн $1-ге къара.',
 'enotif_lastdiff' => 'Бу тюрлениуню кёрюр ючюн, $1 бетге къарагъыз.',
 'enotif_anon_editor' => 'аноним къошулуучу $1',
@@ -1936,14 +2006,14 @@ $NEWPAGE
 эл. почта: $PAGEEDITOR_EMAIL
 вики: $PAGEEDITOR_WIKI
 
\91Ñ\83 Ð±ÐµÑ\82ге ÐºÐ¸Ñ\80гинÑ\87игизге Ð´ÐµÑ\80и Ð±Ñ\83 Ð±ÐµÑ\82 Ð±Ð»Ð° Ð±Ð°Ð¹Ð»Ð°Ð¼Ð»Ñ\8b Ð±Ð°Ñ\88Ñ\85а Ñ\82Ñ\8eÑ\80лендиÑ\80иÑ\83лени Ñ\8eÑ\81Ñ\8eнден Ñ\85апаÑ\80 Ð´Ð¶Ð¸Ð±ÐµÑ\80иллик Ñ\82Ñ\8eлдÑ\8e. Ð¡Ð°Ð½Ñ\87Ñ\8bкÑ\8aлаÑ\83 Ñ\81пиÑ\81огÑ\83гÑ\8aÑ\83здагÑ\8aÑ\83 бютеу бетлени билдириу джибериу опцияларын джукълаталлыкъсыз.
\91Ñ\83 Ð±ÐµÑ\82ге ÐºÐ¸Ñ\80гинÑ\87игизге Ð´ÐµÑ\80и Ð±Ñ\83 Ð±ÐµÑ\82 Ð±Ð»Ð° Ð±Ð°Ð¹Ð»Ð°Ð¼Ð»Ñ\8b Ð±Ð°Ñ\88Ñ\85а Ñ\82Ñ\8eÑ\80лендиÑ\80иÑ\83лени Ñ\8eÑ\81Ñ\8eнден Ñ\85апаÑ\80 Ð´Ð¶Ð¸Ð±ÐµÑ\80иллик Ñ\82Ñ\8eлдÑ\8e. Ð\9aÑ\91зде Ñ\82Ñ\83Ñ\80гÑ\8aан Ñ\82измегиздеги бютеу бетлени билдириу джибериу опцияларын джукълаталлыкъсыз.
 
 {{SITENAME}} сайтны билдириу системасы.
 
 --
 
 Джарашдырыуланы тюрлендирир ючюн:
-{{canonicalurl:Special:Watchlist/edit}}
+{{fullurl:{{#special:Watchlist}}/edit}}
 
 Кёзде тургъан тизмеден кетерир ючюн:
 $UNWATCHURL
@@ -1966,9 +2036,9 @@ $UNWATCHURL
 'actioncomplete' => 'Этим толтурулду',
 'actionfailed' => 'Этим джетишимсиз болду',
 'deletedtext' => '«$1» бет кетерилди.
\90Ñ\85Ñ\8bÑ\80 ÐºÐµÑ\82еÑ\80илгенлени Ñ\81пиÑ\81огÑ\83н кёрюр ючюн, $2на къарагъыз.',
\90Ñ\85Ñ\8bÑ\80 ÐºÐµÑ\82еÑ\80илгенлени Ñ\82измеÑ\81ин кёрюр ючюн, $2на къарагъыз.',
 'dellogpage' => 'Кетерилгенлени журналы',
-'dellogpagetext' => 'ТÑ\8eбÑ\8eндеги Ñ\81пиÑ\81ок ахыр кетериулени журналыды.',
+'dellogpagetext' => 'ТÑ\8eбÑ\8eндеги Ñ\82изме ахыр кетериулени журналыды.',
 'deletionlog' => 'кетериулени журналы',
 'reverted' => 'Алгъынгы версиясына къайтарылгъанды',
 'deletecomment' => 'Чурум:',
@@ -1978,7 +2048,7 @@ $UNWATCHURL
 ** Авторну тилеги
 ** Автор хакъланы бузуу
 ** Вандализм',
-'delete-edit-reasonlist' => 'ЧÑ\83Ñ\80Ñ\83мланÑ\8b Ñ\81пиÑ\81огÑ\83Ñ\82 тюрлендир',
+'delete-edit-reasonlist' => 'ЧÑ\83Ñ\80Ñ\83мланÑ\8b Ñ\82измеÑ\81ин тюрлендир',
 'delete-toobig' => 'Бу бетни, $1 {{PLURAL:$1|версияла|версияла}} бла бек узун тарихи барды.
 Быллай бетлени кетерилиую, {{SITENAME}} сайтны бузмаз ючюн чекленгенди.',
 'delete-warning-toobig' => 'Бу бетни уллу тюрлендириу тарихи барды, $1 {{PLURAL:$1|версиядан|версиядан}} артыкъ.
@@ -1991,10 +2061,10 @@ $UNWATCHURL
 'rollbacklink' => 'ызына къайтарыу',
 'rollbackfailed' => 'Ызына алыу джетишимсизди',
 'cantrollback' => 'Бетге ахыр юлюш къошхан къошулуучу, бетге юлюшюн къошхан джангыз адам болгъаны себебли, тюрлендириуле ызына алыналмайдыла.',
-'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) джанындан [[:$1]] бетде этилген ахыр тюрлендириу ызына алыналмайды;
+'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|сюзюу]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) джанындан [[:$1]] бетде этилген ахыр тюрлендириу ызына алыналмайды;
 башха бири бетде тюрлендириу этди неда бетни ызына алды.
 
-Ахыр тюрлендириуюню этген: [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+Ахыр тюрлендириуюню этген: [[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]] къошулуучуну версиясына къайтарылдыла',
@@ -2013,7 +2083,7 @@ $2 тюрлендирген алгъаракъ версиясына къайты
 Андан аслам билги ючюн [[Special:ProtectedPages|Коруугъа алыннган бетле]] атлы бетге къараргъа боллукъсуз.',
 'protectedarticle' => '«[[$1]]» джакъланыбды',
 'modifiedarticleprotection' => '"[[$1]]" бетни джакъланыу дараджасы тюрленилгенди',
-'unprotectedarticle' => '"[[$1]]" бетден къоруулау алыннганды',
+'unprotectedarticle' => '«[[$1]]» бетден джакълыкъ алыннганды',
 'movedarticleprotection' => 'Къоруулауну джарашдырыулары "[[$2]]" бетден "[[$1]]" бетге кёчюрюлгенди',
 'protect-title' => '"$1" ючюн къоруулау дараджаны сайлагъыз',
 'prot_1movedto2' => '[[$1]] бетни джангы аты: [[$2]]',
@@ -2049,7 +2119,7 @@ $2 тюрлендирген алгъаракъ версиясына къайты
 ** Тохтаусуз спам
 ** Тюрлендириулени урушу
 ** Мийик трафикли бет',
-'protect-edit-reasonlist' => 'ЧÑ\83Ñ\80Ñ\83мланÑ\8b Ñ\81пиÑ\81огÑ\83н тюрлендир',
+'protect-edit-reasonlist' => 'ЧÑ\83Ñ\80Ñ\83мланÑ\8b Ñ\82измеÑ\81ин тюрлендир',
 'protect-expiry-options' => '1 сагъат:1 hour,1 кюн:1 day,1 ыйыкъ:1 week,2 ыйыкъ:2 weeks,1 ау:1 month,3 ау:3 months,6 ау:6 months,1 джыл:1 year,болжалсыз:infinite',
 'restriction-type' => 'Хакълары:',
 'restriction-level' => 'Ийилген дараджасы:',
@@ -2125,7 +2195,7 @@ $1',
 # Contributions
 'contributions' => 'Къошулуучуну къошханы',
 'contributions-title' => '$1 къошулуучуну къошагъы',
-'mycontris' => 'Ð\9aÑ\8aоÑ\88Ñ\85анÑ\8bм',
+'mycontris' => 'Ð\9aÑ\8aоÑ\88Ñ\83м',
 'contribsub2' => '$1 ($2) къошакъ',
 'nocontribs' => 'Бу критерийлеге келишген тюрлениуле табылмадыла',
 'uctop' => '(ахыргъы)',
@@ -2165,10 +2235,11 @@ $1',
 'whatlinkshere-hideredirs' => 'джибериуле $1',
 'whatlinkshere-hidetrans' => 'Къошулуулары $1',
 'whatlinkshere-hidelinks' => '$1 джибериуле',
-'whatlinkshere-hideimages' => 'СÑ\83Ñ\80аÑ\82лагÑ\8aа Ð´Ð¶Ð¸Ð±ÐµÑ\80иÑ\83ле $1',
+'whatlinkshere-hideimages' => 'Файл Ð´Ð¶Ð¸Ð±ÐµÑ\80иÑ\83лени $1',
 'whatlinkshere-filters' => 'Фильтрле',
 
 # Block/unblock
+'block' => 'Къошулуучуну блокла',
 'blockip' => 'Бу къошулуучуну блок эт',
 'blockip-title' => 'Къошулуучуну блокга салыу',
 'blockip-legend' => 'Къошулуучуну блокга салыу',
@@ -2198,9 +2269,9 @@ $1',
 'ipb-change-block' => 'Бу джарашдырыула бла къошулуучуну джангыдан тый',
 'badipaddress' => 'Терс IP-адрес',
 'blockipsuccesssub' => 'Тыйыу джетишимли болду',
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] тыйылды. <br />
¢Ñ\8bйÑ\8bÑ\83ланÑ\8b ÐºÑ\91Ñ\80Ñ\8eÑ\80 Ñ\8eÑ\87Ñ\8eн [[Special:BlockList|Ñ\82Ñ\8bйÑ\8bлгÑ\8aан IP-адÑ\80еÑ\81лени Ñ\81пиÑ\81огÑ\83на]] къарагъыз.',
-'ipb-edit-dropdown' => 'ЧÑ\83Ñ\80Ñ\83мланÑ\8b Ñ\81пиÑ\81огÑ\83н тюрлендир',
+'blockipsuccesstext' => '[[Special:Contributions/$1|«$1»]] блокланды.<br />
\91локланÑ\8bÑ\83ланÑ\8b ÐºÑ\91Ñ\80Ñ\8eÑ\80 Ñ\8eÑ\87Ñ\8eн [[Special:BlockList|блокланнган IP-адÑ\80еÑ\81лени Ñ\82измеÑ\81ине]] къарагъыз.',
+'ipb-edit-dropdown' => 'ЧÑ\83Ñ\80Ñ\83мланÑ\8b Ñ\82измеÑ\81ин тюрлендир',
 'ipb-unblock-addr' => '$1 блокдан ал',
 'ipb-unblock' => 'Къошулуучуну неда IP-адресни тыйылыуун тохтат',
 'ipb-blocklist' => 'Бусагъатдагъы болгъан тыйгъычланы кёргюз',
@@ -2212,7 +2283,11 @@ $1',
 'unblocked-id' => '$1 тыйылыу къоратылгъанды',
 'ipblocklist' => 'Блок этилиннген къошулуучула',
 'ipblocklist-legend' => 'Тыйылгъан къошулуучуну аты',
+'blocklist-timestamp' => 'Дата/заман',
+'blocklist-target' => 'Ышан',
 'blocklist-expiry' => 'Бошалыу датасы',
+'blocklist-by' => 'Блоклагъан администратор',
+'blocklist-params' => 'Блоклауну параметрлери',
 'blocklist-reason' => 'Чурум',
 'ipblocklist-submit' => 'Таб',
 'ipblocklist-localblock' => 'Локал блокга салыу',
@@ -2224,7 +2299,7 @@ $1',
 'createaccountblock' => 'тергеу джазыула къураргъа болмайды',
 'emailblock' => 'e-mail иерге болмайды',
 'blocklist-nousertalk' => 'кесини сюзюу бетин тюрлендирелмейди',
-'ipblocklist-empty' => 'Ð\91локга Ñ\81алÑ\8bÑ\83ланÑ\8b Ñ\81пиÑ\81огÑ\83 бошду.',
+'ipblocklist-empty' => 'Ð\91локга Ñ\81алÑ\8bÑ\83ланÑ\8b Ñ\82измеÑ\81и бошду.',
 'ipblocklist-no-results' => 'Берилген IP-адрес неда къошулуучу ат блокга салынмагъанды.',
 'blocklink' => 'блок эт',
 'unblocklink' => 'блокну ал',
@@ -2241,7 +2316,7 @@ $1',
 'reblock-logentry' => '[[$1]] ючюн бошалыу заманын $2 $3 этиб тыйыу джарашдырыуларын тюрлендирди',
 'blocklogtext' => 'Къошулуучуланы тыйылыу бла тыйылыудан чыгъарыуну журналы.
 Автомат халда тыйылгъан IP-адресле былайда кёргюзюлмейдиле.
-Банла бла блокланы кёрюр ючюн [[Special:BlockList|IP блок списогуна]] къарагъыз.',
+Банла бла блокланы кёрюр ючюн [[Special:BlockList|блок тизмесине]] къарагъыз.',
 'unblocklogentry' => '$1 къошулуучудан блок алынды',
 'block-log-flags-anononly' => 'джангыз аноним къошулуучула',
 'block-log-flags-nocreate' => 'Тергеу джазыуланы (аккаунтланы) регистрациялары тыйылыбды',
@@ -2343,7 +2418,7 @@ $1',
 'movepage-moved-noredirect' => 'Джибериу къуралыу басдырылды.',
 'articleexists' => 'Быллай аты бла бет барды неда сиз джазгъан ат джарамайды.
 Башха ат сайлагъыз.',
-'cantmove-titleprotected' => 'Ð\91Ñ\83 Ð±ÐµÑ\82ни Ð°Ñ\82Ñ\8bн Ñ\82Ñ\8eÑ\80лендиÑ\80еллик Ñ\82Ñ\8eлÑ\81Ñ\8eз, Ð´Ð¶Ð°Ð½Ð³Ñ\8b Ð°Ñ\82 Ð´Ð¶Ð°Ñ\80аÑ\83Ñ\81Ñ\83з Ð°Ñ\82ланÑ\8b Ñ\81пиÑ\81огÑ\83ндадÑ\8b.',
+'cantmove-titleprotected' => 'Ð\91Ñ\83 Ð±ÐµÑ\82ни Ð°Ñ\82Ñ\8bн Ñ\82Ñ\8eÑ\80лендиÑ\80еллик Ñ\82Ñ\8eлÑ\81Ñ\8eз, Ð´Ð¶Ð°Ð½Ð³Ñ\8b Ð°Ñ\82 Ð´Ð¶Ð°Ñ\80аÑ\83Ñ\81Ñ\83з Ð°Ñ\82ланÑ\8b Ñ\82измеÑ\81индеди.',
 'talkexists' => "'''Бетни аты тюрленнгенди, алай а сюзюу бетни кёчюрюрге джарамайды, аллай аты бла бет болгъаны ючюн. Къол бла къошугъуз аланы бири-бирлерине.'''",
 'movedto' => 'аты тюрленнгенди:',
 'movetalk' => 'Байламлы сюзюу бетни атын тюрлендир',
@@ -2354,7 +2429,7 @@ $1',
 'movepage-page-unmoved' => '$1 бет $2 бетге атын ауушдуралмаз.',
 'movepage-max-pages' => 'Эм кёб $1 {{PLURAL:$1|бет|бет}} атын тюрлендирди эм андан асламы автомат халда атын тюрлендирелмез.',
 'movelogpage' => 'Атла тюрлениуню журналы',
-'movelogpagetext' => 'ТÑ\8eбÑ\8eнде Ð±Ð¾Ð»Ð³Ñ\8aан Ñ\81пиÑ\81ок аты тюрлендирилген бетлени кёргюзеди.',
+'movelogpagetext' => 'ТÑ\8eбÑ\8eнде Ð±Ð¾Ð»Ð³Ñ\8aан Ñ\82изме аты тюрлендирилген бетлени кёргюзеди.',
 'movesubpage' => '{{PLURAL:$1|Subpage|Бет тюбле}}',
 'movesubpagetext' => 'Бу бетни тюбюнде кёргюзюлген $1 {{PLURAL:$1|бет тюбю|бет тюбю}} барды.',
 'movenosubpage' => 'Бу бетни тюб бети джокъду.',
@@ -2410,7 +2485,7 @@ $1',
 'allmessagesname' => 'Ат',
 'allmessagesdefault' => 'Оригинал текст',
 'allmessagescurrent' => 'Хайырлана тургъан текст',
-'allmessagestext' => 'Ð\91Ñ\83 Ñ\81пиÑ\81ок MediaWiki Ð°Ñ\82 Ð°Ð»Ð°Ð¼Ñ\8bнда Ð±Ð°Ñ\80 Ð±Ð¾Ð»Ð³Ñ\8aан Ñ\81иÑ\81Ñ\82ема Ð±Ð¸Ð»Ð´Ð¸Ñ\80иÑ\83лени Ñ\81пиÑ\81огÑ\83дÑ\83.
+'allmessagestext' => 'Ð\91Ñ\83 Ñ\82изме MediaWiki Ð°Ñ\82 Ð°Ð»Ð°Ð¼Ñ\8bнда Ð±Ð°Ñ\80 Ð±Ð¾Ð»Ð³Ñ\8aан Ñ\81иÑ\81Ñ\82ема Ð±Ð¸Ð»Ð´Ð¸Ñ\80иÑ\83лени Ñ\82измеÑ\81иди.
 MediaWiki локализациясына юлюш къошаргъа излей эсегиз, [//www.mediawiki.org/wiki/Localisation MediaWiki локализация] бла [//translatewiki.net translatewiki.net] сайтлагъа киригиз.',
 'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' джабыкъ болгъаны ючюн '''{{ns:special}}:Allmessages''' хайырланыугъа ачыкъ тюлдю.",
 'allmessages-filter-legend' => 'Фильтр',
@@ -2447,8 +2522,7 @@ MediaWiki локализациясына юлюш къошаргъа излей
 'import-interwiki-namespace' => 'Нюзюр ат алам:',
 'import-upload-filename' => 'Файлны аты:',
 'import-comment' => 'Эсгериу:',
-'importtext' => 'Файлны вики къайнакъдан [[Special:Export|экспорт амал бла]] эскпорт эт.
-Компьютеригизге салыгъыз эм былайгъа джюклегиз.',
+'importtext' => 'Бетни къайнакъ викиден [[Special:Export|адырны хайырландырыб]] эскпорт этигиз. Файлны дискде сакълагъыз эм былайгъа джюклегиз.',
 'importstart' => 'Файлла импорт этиле турадыла...',
 'import-revision-count' => '$1 {{PLURAL:$1|версия|версия}}',
 'importnopages' => 'Импорт этиллик бет джокъду',
@@ -2574,7 +2648,7 @@ MediaWiki локализациясына юлюш къошаргъа излей
 
 # Spam protection
 'spamprotectiontitle' => 'Спамгъа къаршчы фильтр',
-'spamprotectiontext' => 'Ð\9aÑ\8aоÑ\88аÑ\80гÑ\8aа Ð¸Ð·Ð»ÐµÐ³ÐµÐ½ Ð±ÐµÑ\82 Ñ\81пам Ñ\84илÑ\8cÑ\82Ñ\80 Ð±Ð»Ð° Ð±Ð»Ð¾Ðº Ñ\8dÑ\82илгенди. Ð\9aÑ\8aаÑ\80а Ñ\81пиÑ\81окдагÑ\8aÑ\8b тыш джибериуле чурум болургъа боллукъдула.',
+'spamprotectiontext' => 'Ð\9aÑ\8aоÑ\88аÑ\80гÑ\8aа Ð¸Ð·Ð»ÐµÐ³ÐµÐ½ Ð±ÐµÑ\82 Ñ\81пам Ñ\84илÑ\8cÑ\82Ñ\80 Ð±Ð»Ð° Ð±Ð»Ð¾Ðº Ñ\8dÑ\82илгенди. Ð\9aÑ\8aаÑ\80а Ñ\82измедеги тыш джибериуле чурум болургъа боллукъдула.',
 'spamprotectionmatch' => 'Спам фильтр ишлетген текст: $1',
 'spambot_username' => 'Спамны ариулау',
 'spam_reverting' => '$1 бла джибериую болмагъан ахыр версиягъа къайтылады',
@@ -2582,11 +2656,28 @@ MediaWiki локализациясына юлюш къошаргъа излей
 
 # Info page
 'pageinfo-title' => '«$1» бетни юсюнден информация',
-'pageinfo-header-edits' => 'Тюрлендириуле',
-'pageinfo-watchers' => 'Кёргенлени саны',
-'pageinfo-edits' => 'Тюрлендириулени саны',
-'pageinfo-authors' => 'Авторланы саны',
+'pageinfo-header-basic' => 'Баш билгиле',
+'pageinfo-header-edits' => 'Тюрлениу тарих',
+'pageinfo-header-restrictions' => 'Бетни джакълыгъы',
+'pageinfo-header-properties' => 'Бетни шартлары',
+'pageinfo-display-title' => 'Кёрюннген башлыкъ',
+'pageinfo-default-sort' => 'Тынгылау бла сортлауну ачхычы',
+'pageinfo-length' => 'Бетни узунлугъу (байтла бла)',
+'pageinfo-article-id' => 'Бетни идентификатору',
+'pageinfo-language' => 'Бетни ичиндегисини тили',
+'pageinfo-robot-policy' => 'Излеу къуллукъла бла индексация',
+'pageinfo-robot-index' => 'Индексация этиледи',
+'pageinfo-robot-noindex' => 'Индексация этилмейди',
+'pageinfo-views' => 'Къарауланы саны',
+'pageinfo-watchers' => 'Бетни кёзде тутханланы саны',
+'pageinfo-redirects-name' => 'Бу бетге редиректле',
+'pageinfo-edits' => 'Бютеу тюрлендириулени саны',
+'pageinfo-authors' => 'Тюрлю-тюрлю авторланы саны',
 'pageinfo-toolboxlink' => 'Бетни юсюнден',
+'pageinfo-redirectsto' => 'Башха бетге редиректди —',
+'pageinfo-redirectsto-info' => 'билги',
+'pageinfo-contentpage-yes' => 'Хоу',
+'pageinfo-protect-cascading-yes' => 'Хоу',
 
 # Skin names
 'skinname-standard' => 'Стандарт',
@@ -2672,7 +2763,7 @@ $1',
 # Bad image list
 'bad_image_list' => 'Формат былай болургъа керекди:
 
\9aÑ\8aÑ\83Ñ\80Ñ\83 Ñ\81пиÑ\81окнÑ\83 кесеклери (* символдан башланнганла) саналлыкъдыла.
\9aÑ\8aÑ\83Ñ\80Ñ\83 Ñ\82измени кесеклери (* символдан башланнганла) саналлыкъдыла.
 Тизгинни биринчи джибериую салыргъа болмагъан (аман) суратха джибериу болургъа керекди.
 Андан ары баргъан джибериуле ол тизгинде, сурат къошулургъа болгъан статьялагъа джибериулеге саналлыкъдыла.',
 
@@ -3198,8 +3289,8 @@ $5
 Нормал ал къарауну хайырланыгъыз.',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => '$1 {{PLURAL:$1|Ñ\81екÑ\83ндан|Ñ\81екÑ\83ндан}} Ð´Ð¶Ð°Ð½Ð³Ñ\8b Ñ\82Ñ\8eÑ\80лендиÑ\80иÑ\83ле Ð±Ñ\83 Ñ\81пиÑ\81окда кёрюнмезге боллукъдула.',
-'lag-warn-high' => 'Ð\91илги Ð±Ð°Ð·Ð°Ð½Ñ\8b Ñ\81еÑ\80веÑ\80индеги Ð±ÐµÐº ÐºÐµÑ\87игиÑ\83 Ñ\81ебебли, $1 {{PLURAL:$1|Ñ\81екÑ\83ндан|Ñ\81екÑ\83ндан}} Ð´Ð¶Ð°Ð½Ð³Ñ\8b Ñ\82Ñ\8eÑ\80лендиÑ\80иÑ\83ле Ð±Ñ\83 Ñ\81пиÑ\81окда кёрюнмей къалыргъа болур.',
+'lag-warn-normal' => '$1 {{PLURAL:$1|Ñ\81екÑ\83ндан|Ñ\81екÑ\83ндан}} Ð´Ð¶Ð°Ð½Ð³Ñ\8b Ñ\82Ñ\8eÑ\80лендиÑ\80иÑ\83ле Ð±Ñ\83 Ñ\82измеде кёрюнмезге боллукъдула.',
+'lag-warn-high' => 'Ð\91илги Ð±Ð°Ð·Ð°Ð½Ñ\8b Ñ\81еÑ\80веÑ\80индеги Ð±ÐµÐº ÐºÐµÑ\87игиÑ\83 Ñ\81ебебли, $1 {{PLURAL:$1|Ñ\81екÑ\83ндан|Ñ\81екÑ\83ндан}} Ð´Ð¶Ð°Ð½Ð³Ñ\8b Ñ\82Ñ\8eÑ\80лендиÑ\80иÑ\83ле Ð±Ñ\83 Ñ\82измеде кёрюнмей къалыргъа болур.',
 
 # Watchlist editor
 'watchlistedit-numitems' => 'Кёзде тургъан тизмеде {{PLURAL:$1|1 джазылгъан|$1 джазылгъан}} барды, сюзюу бетлени тышында.',
@@ -3223,8 +3314,8 @@ $5
 'watchlistedit-raw-removed' => '{{PLURAL:$1|1 башлыкъ|$1 башлыкъ}} кетерилди:',
 
 # Watchlist editing tools
-'watchlisttools-view' => 'СпиÑ\81окдан бетледе тюрлениуле',
-'watchlisttools-edit' => 'Ð\9aÑ\8aаÑ\80а/Ñ\82Ñ\8eÑ\80лендиÑ\80 Ñ\81пиÑ\81окну',
+'watchlisttools-view' => 'Тизмеден бетледе тюрлениуле',
+'watchlisttools-edit' => 'Тизмеге ÐºÑ\8aаÑ\80аÑ\83 Ñ\8dм Ñ\82Ñ\8eÑ\80лендиÑ\80иу',
 'watchlisttools-raw' => 'Текстча тюрлендириу',
 
 # Iranian month names
@@ -3342,12 +3433,12 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 * <span class="mw-specialpagecached">Кэш этилген къуллукъчу бетле (эски болургъа боллукъдула).</span>',
 'specialpages-group-maintenance' => 'Техника баджарыуну отчетлары',
 'specialpages-group-other' => 'Башха къуллукъчу бетле',
-'specialpages-group-login' => 'СиÑ\81Ñ\82емагÑ\8aа ÐºÐ¸Ñ\80/регистрация эт',
+'specialpages-group-login' => 'Ð\9aиÑ\80 / регистрация эт',
 'specialpages-group-changes' => 'Ахыр тюрлендириуле бла журналла',
 'specialpages-group-media' => 'Медиа-материалланы юсюнден отчетла бла джюклеуле',
 'specialpages-group-users' => 'Къошулуучула эм хакълары',
 'specialpages-group-highuse' => 'Бек хайырландырылгъан бетле',
-'specialpages-group-pages' => 'Ð\91еÑ\82лени Ñ\81пиÑ\81оклаÑ\80Ñ\8b',
+'specialpages-group-pages' => 'Ð\91еÑ\82лени Ñ\82измелеÑ\80и',
 'specialpages-group-pagetools' => 'Бетге инструментле',
 'specialpages-group-wiki' => 'Вики-билгиле эм инструментле',
 'specialpages-group-redirects' => 'Джиберген къуллукъчу бетле',
@@ -3372,9 +3463,9 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'tag-filter' => '[[Special:Tags|Тег]] фильтр:',
 'tag-filter-submit' => 'Фильтрлендир',
 'tags-title' => 'Тегле',
-'tags-intro' => 'Ð\91Ñ\83 Ð±ÐµÑ\82, Ð´Ð¶Ð°Ð·Ñ\8bлÑ\8bÑ\83нÑ\83 Ñ\82Ñ\8eÑ\80лениÑ\83Ñ\8eнÑ\8e ÐºÑ\91Ñ\80гÑ\8eзÑ\8eÑ\80ге Ð±Ð¾Ð»Ð»Ñ\83кÑ\8a Ñ\82еглени Ñ\8dм Ð°Ð»Ð°Ð½Ñ\8b Ð°Ð½Ð³Ñ\8bламлаÑ\80Ñ\8bнÑ\8b Ñ\81пиÑ\81огÑ\83дÑ\83.',
+'tags-intro' => 'Ð\91Ñ\83 Ð±ÐµÑ\82, Ð´Ð¶Ð°Ð·Ñ\8bлÑ\8bÑ\83нÑ\83 Ñ\82Ñ\8eÑ\80лениÑ\83Ñ\8eнÑ\8e ÐºÑ\91Ñ\80гÑ\8eзÑ\8eÑ\80ге Ð±Ð¾Ð»Ð»Ñ\83кÑ\8a Ñ\82еглени Ñ\8dм Ð°Ð»Ð°Ð½Ñ\8b Ð°Ð½Ð³Ñ\8bламлаÑ\80Ñ\8bнÑ\8b Ñ\82измеÑ\81иди.',
 'tags-tag' => 'Тегни аты',
-'tags-display-header' => 'ТÑ\8eÑ\80лендиÑ\80иÑ\83лени Ñ\81пиÑ\81оклаÑ\80Ñ\8bнда кёрюнюу',
+'tags-display-header' => 'ТÑ\8eÑ\80лендиÑ\80иÑ\83лени Ñ\82измелеÑ\80инде кёрюнюу',
 'tags-description-header' => 'Магъананы толу ангылтыуу',
 'tags-hitcount-header' => 'Белгиленнген тюрлендириуле',
 'tags-edit' => 'тюрлендир',
@@ -3420,12 +3511,20 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'revdelete-summary-hid' => 'тюрлендириуню ачыкълауу джашырылыбды',
 'revdelete-uname-hid' => 'къошулуучуну аты джашырылыбды',
 'revdelete-content-unhid' => 'ичиндегиси кёргюзюлдю',
+'revdelete-summary-unhid' => 'тюрлендириуню суратлауу ачылыбды',
 'revdelete-uname-unhid' => 'къошулуучуну аты ачылды',
 'revdelete-restricted' => 'администраторла ючюн этилген чеклениуле',
 'revdelete-unrestricted' => 'администратолра ючюн этилген чеклениуле къоратылгъандыла',
 '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-patrol-patrol' => '$1, $3 бетни $4 версияын партруль этиб чыкъды',
 'logentry-patrol-patrol-auto' => '$1, $3 бетни $4 версиясын автомат халда тинтиб чыкъды',
-'logentry-newusers-create' => '$1 тергеу джазыу (аккаунт) къурады',
+'logentry-newusers-newusers' => '$1 тергеу джазыу (аккаунт) къуралды',
+'logentry-newusers-create' => '$1 тергеу джазыу (аккаунт) къуралды',
+'logentry-newusers-create2' => '$1, $3 тергеу джазыуну къурады',
+'logentry-newusers-autocreate' => '$1 тергеу джазыу автомат халда къуралды',
 'newuserlog-byemail' => 'пароль электрон почта бла джиберилгенди',
 
 # Feedback
@@ -3448,7 +3547,7 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'api-error-file-too-large' => 'Сиз ийген файл асыры уллуду.',
 'api-error-filename-tooshort' => 'Файлны аты асыры къысхады.',
 'api-error-filetype-banned' => 'Быллай типли файлла джасакъланыбдыла.',
-'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|джасакъланнган файл типди|джасакъланнган файл типледиле}}. Эркинлик берилген {{PLURAL:$3|файл тип|файл типле}}: $2.',
+'api-error-filetype-banned-type' => '$1 — {{PLURAL:$4|джасакъланнган файл типди|джасакъланнган файл типледиле}}. {{PLURAL:$3|Эркинлик берилген файл тип —|Эркинлик берилген файл типле:}} $2.',
 'api-error-filetype-missing' => 'Файлны кенгериую джокъду.',
 'api-error-hookaborted' => 'Сиз теджеген тюрлендириуню кенгертиуню сюзюучю джасакълагъанды.',
 'api-error-illegal-filename' => 'Джарамагъан файл ат.',
index 7e9bd87..ccbfae9 100644 (file)
@@ -344,8 +344,8 @@ $messages = array(
 'newwindow' => '(Mäht e neu Finster op, wann Dinge Brauser dat kann)',
 'cancel' => 'Stopp! Avbreche!',
 'moredotdotdot' => 'Mieh&nbsp;…',
-'mypage' => 'ming Metmaacher-Sigg',
-'mytalk' => 'ming Klaafsigg',
+'mypage' => 'Metmaachersigg',
+'mytalk' => 'Klaafsigg',
 'anontalk' => 'Klaaf för de IP-Adress',
 'navigation' => 'Jangk noh de',
 'and' => ', un',
@@ -635,10 +635,9 @@ Dä Wiki_Köbes dovun hät beim Deeschmaache als Jrond aanjejovve: „$3“',
 
 Do künnts heh em Wiki wigger maache, als ene namelose Metmaacher. Do kanns De ävver och <span class='plainlinks'>[\$1 widder enlogge]</span>, als däselve oder och ene andere Metmaacher.
 Künnt sin, dat De de ein oder ander Sigg immer wigger aanjezeich kriss, wie wann de noch enjelogg wörs. Dun Dingem Brauser singe <i lang=\"en\">Cache</i> fottschmieße oder leddich maache, öm us dä Nummer erus ze kumme!",
-'welcomecreation' => '== Dach, $1! ==
-Dinge Zojang för heh es do.
-Do bes jetz aanjemeldt.
-Denk dran, Do künnts Der [[Special:Preferences|Ding Enstellunge heh för {{GRAMMAR:Akk|{{SITENAME}}}} zeräächmaache]].',
+'welcomeuser' => 'Wellkumme $1!',
+'welcomecreation-msg' => 'Dinge Zohjang es enjerescht.
+Wann De wells, künnts De Ding [[Special:Preferences|Enschtällonge aanpaße]].',
 'yourname' => 'Metmaacher_Naame:',
 'yourpassword' => 'Paßwoot:',
 'yourpasswordagain' => 'Noch ens dat Passwood',
@@ -1397,7 +1396,7 @@ dat dänne ihr Daate topaktuell sin,
 
 # Preferences page
 'preferences' => 'ming Enstellunge',
-'mypreferences' => 'ming Enstellunge',
+'mypreferences' => 'Enstellunge',
 'prefs-edits' => 'Aanzahl Änderunge am Wiki:',
 'prefsnologin' => 'Nit enjelogg',
 'prefsnologintext' => 'Do mööts ald <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} enjelogg]</span> sin, öm Ding Enstellunge ze ändere.',
@@ -1628,6 +1627,7 @@ Ene zohfällesch ußjewörfelte Schlößel, dää De nämme künnß, wöhr: <cod
 'rightslogtext' => 'Hee sin de Änderunge an Metmaacher ehre Räächde opjeliss. Op de Sigge üvver Metmaacher, Wiki-Köbesse, Bürrokrade, Stewards, un esu, kanns De nohlese, wat domet es.',
 'rightslogentry' => 'hät däm Metmaacher „$1“ sing Räächde vun „$2“ op „$3“ ömjestallt.',
 'rightslogentry-autopromote' => 'wood automattesch vun $2 zohm $3 jemaat.',
+'logentry-rights-rights' => '{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} „$1“ hät däm Metmaacher „$3“ sing Jroppe-Räächde vun „$4“ op „$5“ ömjestallt.',
 'logentry-rights-rights-legacy' => '{{GENDER:$1|Dä|Et|Dä Metmaacher|De|Dat}} $1 hät däm Metmaacher $3 sing Räääschte-Jroppe verändert.',
 'logentry-rights-autopromote' => '{{GENDER:$1|Dä|Et|Dä Metmaacher|De|Dat}} $1 wood automattesch vum $4 zom $5 jemaat.',
 'rightsnone' => '(nix)',
@@ -1894,6 +1894,7 @@ Wann et nit flupp, verzäll et enem [[Special:ListUsers/sysop|Wiki-Köbes]].',
 'backend-fail-notsame' => 'En Dattei mem Name $1 jidd et ald, di es ävver ongerscheidlesch.',
 'backend-fail-invalidpath' => '„$1“ es keine jölteje Pahd för et Speischere.',
 'backend-fail-delete' => 'Mer kunnte di Dattei $1 nit fottschmiiße.',
+'backend-fail-describe' => 'Mer kunnte de Metta_Daate för di Dattei $1 nit ändere.',
 'backend-fail-alreadyexists' => 'En Dattei $1 jidd et ald.',
 'backend-fail-store' => 'Mer kunnte di Dattei $1 nit onger $2 affschpeischere.',
 'backend-fail-copy' => 'Mer kunnte di Dattei $1 nit noh $2 koppėėere.',
@@ -2316,7 +2317,7 @@ eins vun all däm op eimol.',
 
 Beim Söke künnd_Er Schtäänsche aanjevve för e Schtöcksche fun ennem Name, wo mer nit jenou weiß, wi et heiß udder wat me nit kenne deit,  zem Beishpöll esu: <code>http://*.example.com</code> un ene bövverschte Name för en Domain moß aanjejovve sin, zem Beishpöll esu: <code>http://*.org</code> 
 
-De Brauserprotokolle, di beim Söke aanjejovve wäde künne, sen: <code>$1</code>es',
+De Brauserprotokolle, di beim Söke aanjejovve wäde künne, sen: <code>$1</code> un der Schtandatt es <code>http://</code> wann nix aanjejovve es.',
 'linksearch-line' => '„$2“ hät ene Link op $1',
 'linksearch-error' => 'Shternshe kam_mer nor aam Aanfang fum Domain-Name bruche.',
 
@@ -2404,7 +2405,7 @@ Alles klor?',
 
 # Watchlist
 'watchlist' => 'ming Oppassliss',
-'mywatchlist' => 'ming Oppassliss',
+'mywatchlist' => 'Oppaßleß',
 'watchlistfor2' => 'För dä $1 $2',
 'nowatchlist' => 'En Ding Oppassliss es nix dren.',
 'watchlistanontext' => 'Do muss $1, domet de en Ding Oppassliss erenluure kanns, oder jet dran ändere.',
@@ -2444,11 +2445,7 @@ dann klick op „Nimieh drop oppasse“ wann De die Sigg om Schirm häs.",
 
 'enotif_mailer' => '{{ucfirst:{{GRAMMAR:Genitive singe male|{{SITENAME}}}}}} Nohreechte-Versand',
 'enotif_reset' => 'Setz all Änderunge op „Aanjeluurt“ un Erledich.',
-'enotif_newpagetext' => 'Dat es en neu aanjelahte Sigg.',
 'enotif_impersonal_salutation' => 'Metmaacher {{GRAMMAR:Genitiv vun|{{SITENAME}}}}',
-'changed' => 'jeändert',
-'created' => 'neu aanjelaht',
-'enotif_subject' => 'De Sigg "$PAGETITLE" wood $CHANGEDORCREATED vum "$PAGEEDITOR" {{GRAMMAR:em|{{SITENAME}}}}',
 'enotif_lastvisited' => 'Luur unger „$1“ - do fings de all die Änderunge zick Dingem letzte Besoch hee.',
 'enotif_lastdiff' => 'Loor op $1 för heh di Änderung aan_ze_loore.',
 'enotif_anon_editor' => 'Dä namelose Metmaacher $1',
@@ -2664,7 +2661,7 @@ $1',
 # Contributions
 'contributions' => 'Däm Metmaacher sing Beidräch',
 'contributions-title' => 'Beidräsch fum  $1',
-'mycontris' => 'ming Beidräch',
+'mycontris' => 'Beidrähch',
 'contribsub2' => 'För dä Metmaacher: $1 ($2)',
 'nocontribs' => 'Mer han kein Änderunge jefonge, en de Logböcher, die do passe däte.',
 'uctop' => ' (Neuste)',
@@ -3274,6 +3271,8 @@ Esu kam_mer noch en Aanmerkung en „{{int:summary}}“ maache.',
 'markedaspatrollederror' => 'Dat Kennzeiche „Nohjeluurt“ kunnt ich nit avspeichere.',
 'markedaspatrollederrortext' => 'Do muss en bestemmte Version ussöke.',
 'markedaspatrollederror-noautopatrol' => 'Do darrefs Ding eije Änderunge nit op „Nohjeloort“ setze!',
+'markedaspatrollednotify' => 'Di Änderong an $1 es jäz nohjekik.',
+'markedaspatrollederrornotify' => 'Dat di Sigg nohjekik es, kunnte mer nit faßhalde.',
 
 # Patrol log
 'patrol-log-page' => 'Logboch vun de nohjeloorte Änderunge',
index a17741f..9680f2a 100644 (file)
  * @author Marmzok
  */
 
-$rtl = true;
-
 $fallback = 'ckb';
 
+$rtl = true;
+
 $digitTransformTable = array(
        '0' => '٠', # &#x0660;
        '1' => '١', # &#x0661;
index e0d8ebd..f3d6850 100644 (file)
@@ -51,6 +51,8 @@ $namespaceAliases = array(
        'Kategorî_nîqaş'   => NS_CATEGORY_TALK,
 );
 
+$separatorTransformTable = array( ',' => '.', '.' => ',' );
+
 $specialPageAliases = array(
        'Categories'                => array( 'Dara_kategoriyan' ),
        'DoubleRedirects'           => array( 'Redirect\'ên_ducarî' ),
@@ -218,6 +220,7 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|Di vê kategoriyê de tenê ev dane heye:|Di vê kategoriyê de {{PLURAL:$2|daneyek heye|$2 dane hene}}. Jêr {{PLURAL:$1|daneyek tê|$1 dane tên}} nîşandan.}}',
 'category-file-count-limited' => 'Ev {{PLURAL:$1|daneya|$1 daneyên}} jêr di vê kategoriyê de ne.',
 'listingcontinuesabbrev' => 'dewam',
+'noindex-category' => 'Rûpelên bênimînok',
 'broken-file-category' => 'Rûpelên bi girêdanên xerabûyî',
 
 'about' => 'Der barê',
@@ -454,9 +457,6 @@ $2',
 
 Tu dikarî {{SITENAME}} niha weke bikarhênerekî nediyarkirî bikarbînî, yan jî tu dikarî dîsa bi vî navê xwe yan navekî din wek bikarhêner <span class='plainlinks'>[$1 dîsa têkevî]</span>.
 Bila di bîra te de be ku gengaz e hin rûpel mîna ku tu hîn bi navê xwe qeyd kiriyî werin nîşandan, heta ku tu nîşanên çavlêgerandina (browser) xwe jênebî.",
-'welcomecreation' => '== Tu bi xêr hatî, $1! ==
-
-Hesabê te hate afirandin. Tu dikarî niha [[Special:Preferences|tercîhên xwe di {{SITENAME}}]] de biguherînî.',
 'yourname' => 'Navê bikarhêner:',
 'yourpassword' => 'Şîfre:',
 'yourpasswordagain' => 'Şîfreyê dîsa binivîse:',
@@ -1037,7 +1037,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'rcshowhidebots' => "Bot'an $1",
 'rcshowhideliu' => 'Bikarhênerên qeydkirî $1',
 'rcshowhideanons' => 'Bikarhênerên neqeydkirî (IP) $1',
-'rcshowhidepatr' => '$1 guherandinên kontrolkirî',
+'rcshowhidepatr' => 'Guherandinên kontrolkirî $1',
 'rcshowhidemine' => 'Guherandinên min $1',
 'rclinks' => '$1 guherandinên di $2 rojên dawî de nîşan bide<br />$3',
 'diff' => 'cudahî',
@@ -1421,11 +1421,7 @@ Gava tu bixwazî wê rûpelê ji nav lîsteya xwe ya şopandinê derbixî, li se
 'unwatching' => 'Neşopîne…',
 
 'enotif_reset' => 'Hemû rûpelan wek lêsekirî nîşanbide',
-'enotif_newpagetext' => 'Ev rûpeleke nû ye.',
 'enotif_impersonal_salutation' => 'Bikarhênerî {{SITENAME}}',
-'changed' => 'hate guhertin',
-'created' => 'hate afirandin',
-'enotif_subject' => '[{{SITENAME}}] Rûpelê "$PAGETITLE" ji $PAGEEDITOR hate $CANGEDORCREATED',
 'enotif_anon_editor' => 'Bikarhênerê/a neqeydkirî $1',
 'enotif_body' => 'Birêz $WATCHINGUSERNAME,
 
@@ -1904,7 +1900,7 @@ Ji ber ku girêdaneke derve di wê rûpelê de heye ev pirsgirêk pêk hat.',
 'imagelisttext' => "Jêr lîsteyek ji $1 file'an heye, duxrekirin $2.",
 'newimages-summary' => 'Ev rûpela taybet dosyeyên ku herî dawî hatine barkirin, nîşan dide.',
 'newimages-legend' => 'Parzûn',
-'showhidebots' => '($1 bot)',
+'showhidebots' => "(Bot'an $1)",
 'noimages' => 'Ne tiştek tê dîtin.',
 'ilsubmit' => 'Lêgerîn',
 'bydate' => 'li gor dîrokê',
index 2059a32..076a4e6 100644 (file)
@@ -109,27 +109,27 @@ $specialPageAliases = array(
 
 $messages = array(
 # User preference toggles
-'tog-hideminor' => 'Kudha chanjyow bian en chanjyow a-dhiwedhes',
-'tog-watchcreations' => "Keworra folednow gwruthys genev dhe'm rol golyas",
-'tog-watchdefault' => "Keworra folednow chanjys genev dhe'm rol golyas",
-'tog-watchmoves' => "Keworra folednow gwayes genev dhe'm rol golyas",
+'tog-hideminor' => 'Cudha chanjyow bian yn chanjyow a-dhiwedhes',
+'tog-watchcreations' => "Keworra folennow gwruthys genev ha restrennow ughkergys genev dhe'm rol golyas",
+'tog-watchdefault' => "Keworra folennow ha restrennow chanjys genev dhe'm rol golyas",
+'tog-watchmoves' => "Keworra folennow ha restrennow gwayys genev dhe'm rol golyas",
 'tog-watchdeletion' => "Keworra folednow dileys genev dhe'm rol golyas",
 
-'underline-always' => 'Pupres',
-'underline-never' => 'Nevra',
-'underline-default' => 'Defowt an beurel',
+'underline-always' => 'Puppres',
+'underline-never' => 'Jammes',
+'underline-default' => 'Defowt an beurel po an grohen',
 
 # Font style option in Special:Preferences
 'editfont-default' => 'Defowt an beurel',
 
 # Dates
-'sunday' => "Dy' Sul",
-'monday' => "Dy' Lun",
-'tuesday' => "Dy' Meurth",
-'wednesday' => "Dy' Merher",
-'thursday' => "Dy' Yow",
-'friday' => "Dy' Gwener",
-'saturday' => "Dy' Sadorn",
+'sunday' => "De'Sul",
+'monday' => "De'Lun",
+'tuesday' => "De'Meurth",
+'wednesday' => "De'Merher",
+'thursday' => "De'Yow",
+'friday' => "De'Gwener",
+'saturday' => "De'Sadorn",
 'sun' => 'Sul',
 'mon' => 'Lun',
 'tue' => 'Meu',
@@ -138,31 +138,31 @@ $messages = array(
 'fri' => 'Gwe',
 'sat' => 'Sad',
 'january' => 'Genver',
-'february' => 'Hwevrel',
+'february' => 'Whevrel',
 'march' => 'Meurth',
 'april' => 'Ebrel',
 'may_long' => 'Me',
 'june' => 'Metheven',
 'july' => 'Gortheren',
 'august' => 'Est',
-'september' => 'Gwydngala',
+'september' => 'Gwynngala',
 'october' => 'Hedra',
 'november' => 'Du',
 'december' => 'Kevardhu',
 'january-gen' => 'Genver',
-'february-gen' => 'Hwevrel',
+'february-gen' => 'Whevrel',
 'march-gen' => 'Meurth',
 'april-gen' => 'Ebrel',
 'may-gen' => 'Me',
 'june-gen' => 'Metheven',
 'july-gen' => 'Gortheren',
 'august-gen' => 'Est',
-'september-gen' => 'Gwydngala',
+'september-gen' => 'Gwynngala',
 'october-gen' => 'Hedra',
 'november-gen' => 'Du',
 'december-gen' => 'Kevardhu',
 'jan' => 'Gen',
-'feb' => 'Hwe',
+'feb' => 'Whe',
 'mar' => 'Meu',
 'apr' => 'Ebr',
 'may' => 'Me',
@@ -175,42 +175,42 @@ $messages = array(
 'dec' => 'Kev',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Klass|Klassys}}',
-'category_header' => 'Folednow e\'n klass "$1"',
+'pagecategories' => '{{PLURAL:$1|Class|Classys}}',
+'category_header' => 'Folennow y\'n class "$1"',
 'subcategories' => 'Isglassys',
-'category-media-header' => 'Media e\'n klass "$1"',
-'category-empty' => "''Nyns eus na folednow na media e'n klass-ma.''",
-'hidden-categories' => '{{PLURAL:$1|Klass kovys|Klass kovys}}',
-'hidden-category-category' => 'Klassys kovys',
-'category-subcat-count' => "{{PLURAL:$2|Nyns eus dhe'n klass-ma marnas an isglass a sew.|Yma dhe'n klass-ma an {{PLURAL:$1|isglass|$1 isglass}} a sew, dhyworth sobm a $2.}}",
-'category-subcat-count-limited' => "Yma dhe'n klass-ma an {{PLURAL:$1|isglass|$1 isglass}} a sew.",
-'category-article-count' => "{{PLURAL:$2|Nyns eus dhe'n klass-ma marnas an folen a sew.|Yma'n {{PLURAL:$1|folen|$1 folednow}} a sew e'n klass-ma, dhyworth sobm a $2.}}",
-'category-article-count-limited' => "Yma'n {{PLURAL:$1|folen|$1 folen}} a sew e'n klass-ma.",
-'category-file-count' => "{{PLURAL:$2|Nyns eus dhe'n klass-ma marnas an folen a sew.|Yma'n {{PLURAL:$1|folen|$1 folen}} a sew e'n klass-ma, dhyworth sobm a $2.}}",
-'category-file-count-limited' => "Yma'n {{PLURAL:$1|folen|$1 folen}} a sew e'n klass-ma.",
+'category-media-header' => 'Media y\'n class "$1"',
+'category-empty' => "''Nyns eus na folennow na media y'n class-ma.''",
+'hidden-categories' => '{{PLURAL:$1|Class cudhys|Classys cudhys}}',
+'hidden-category-category' => 'Classys cudhys',
+'category-subcat-count' => "{{PLURAL:$2|Nyns eus dhe'n class-ma marnas an isglass a sew.|Yma dhe'n class-ma an {{PLURAL:$1|isglass|$1 isglass}} a sew, dhyworth somm a $2.}}",
+'category-subcat-count-limited' => "Yma dhe'n class-ma an {{PLURAL:$1|isglass|$1 isglass}} a sew.",
+'category-article-count' => "{{PLURAL:$2|Nyns eus dhe'n class-ma marnas an folen a sew.|Yma'n {{PLURAL:$1|folen|$1 folennow}} a sew y'n class-ma, dhyworth somm a $2.}}",
+'category-article-count-limited' => "Yma'n {{PLURAL:$1|folen|$1 folen}} a sew y'n class-ma.",
+'category-file-count' => "{{PLURAL:$2|Nyns eus dhe'n class-ma an folen a sew.|Yma'n {{PLURAL:$1|folen|$1 folen}} a sew y'n class-ma, dhyworth somm a $2.}}",
+'category-file-count-limited' => "Yma'n {{PLURAL:$1|folen|$1 folen}} a sew y'n class-ma.",
 'listingcontinuesabbrev' => 'pes.',
 
 'about' => 'A-dro dhe',
-'newwindow' => '(y hwra egeri en fenester nowyth)',
-'cancel' => 'Hedhi',
+'newwindow' => '(y whra egery yn fenester nowyth)',
+'cancel' => 'Hedhy',
 'moredotdotdot' => 'Moy...',
-'mypage' => 'Ow folen',
-'mytalk' => 'Ow hows',
-'anontalk' => 'Keskows rag an drigva IP-ma',
+'mypage' => 'Folen',
+'mytalk' => 'Kescows',
+'anontalk' => 'Kescows rag an drigva IP-ma',
 'navigation' => 'Lewyans',
 'and' => '&#32;ha(g)',
 
 # Cologne Blue skin
-'qbfind' => 'Kavos',
-'qbbrowse' => 'Peuri',
+'qbfind' => 'Cavos',
+'qbbrowse' => 'Peury',
 'qbedit' => 'Chanjya',
 'qbpageoptions' => 'An folen-ma',
-'qbmyoptions' => 'Ow folednow',
-'qbspecialpages' => 'Folednow arbednek',
+'qbmyoptions' => 'Ow folennow',
+'qbspecialpages' => 'Folennow arbennek',
 'faq' => 'FAQ',
 
 # Vector skin
-'vector-action-addsection' => 'Keworra mater',
+'vector-action-addsection' => 'Keworra testen',
 'vector-action-delete' => 'Dilea',
 'vector-action-move' => 'Gwaya',
 'vector-action-protect' => 'Difres',
@@ -218,22 +218,23 @@ $messages = array(
 'vector-action-unprotect' => 'Chanjya difresans',
 'vector-view-create' => 'Gwruthyl',
 'vector-view-edit' => 'Chanjya',
-'vector-view-history' => 'Gweles an istori',
+'vector-view-history' => 'Gweles an istory',
 'vector-view-view' => 'Redya',
-'vector-view-viewsource' => 'Gweles an bednfenten',
+'vector-view-viewsource' => 'Gweles an bennfenten',
 'actions' => 'Gwriansow',
 'namespaces' => 'Spasys hanow',
+'variants' => 'Dyffransow',
 
 'errorpagetitle' => 'Gwall',
-'returnto' => 'Dehweles dhe $1.',
+'returnto' => 'Dewheles dhe $1.',
 'tagline' => 'Dhyworth {{SITENAME}}',
 'help' => 'Gweres',
-'search' => 'Hwilas',
-'searchbutton' => 'Hwilas',
+'search' => 'Whilas',
+'searchbutton' => 'Whilas',
 'go' => 'Ke',
-'searcharticle' => 'Ke',
-'history' => 'Istori an folen',
-'history_short' => 'Istori',
+'searcharticle' => 'Mos',
+'history' => 'Istory an folen',
+'history_short' => 'Istory',
 'printableversion' => 'Versyon pryntyadow',
 'permalink' => 'Kevren fast',
 'print' => 'Pryntya',
@@ -244,8 +245,8 @@ $messages = array(
 'create-this-page' => 'Gwruthyl an folen-ma',
 'delete' => 'Dilea',
 'deletethispage' => 'Dilea an folen-ma',
-'undelete_short' => 'Disdhilea {{PLURAL:$1|udn janj|$1 chanj}}',
-'viewdeleted_short' => 'Gweles {{PLURAL:$1|udn janj diles|$1 chanj diles}}',
+'undelete_short' => 'Disdhilea {{PLURAL:$1|unn janj|$1 chanj}}',
+'viewdeleted_short' => 'Gweles {{PLURAL:$1|unn janj diles|$1 chanj diles}}',
 'protect' => 'Difres',
 'protect_change' => 'chanjya',
 'protectthispage' => 'Difres an folen-ma',
@@ -253,70 +254,70 @@ $messages = array(
 'unprotectthispage' => 'Chanjya difresans an folen-ma',
 'newpage' => 'Folen nowyth',
 'talkpage' => "Dadhelva a-dro dhe'n folen-ma",
-'talkpagelinktext' => 'keskows',
-'specialpage' => 'Folen arbednek',
+'talkpagelinktext' => 'Kescows',
+'specialpage' => 'Folen arbennek',
 'personaltools' => 'Toulys personel',
-'postcomment' => 'Radn nowyth',
-'talk' => 'Keskows',
+'postcomment' => 'Rann noweth',
+'talk' => 'Kescows',
 'views' => 'Gwelow',
-'toolbox' => 'Boks toulys',
+'toolbox' => 'Box toulys',
 'userpage' => 'Folen devnydhyer',
 'projectpage' => 'Folen meta',
 'imagepage' => 'Gweles folen an restren',
 'mediawikipage' => 'Gweles folen an messajys',
-'templatepage' => 'Gweles folen an skantlyn',
+'templatepage' => 'Gweles folen an scantlyn',
 'viewhelppage' => 'Gweles an folen gweres',
-'categorypage' => 'Gweles folen an klass',
-'viewtalkpage' => 'Gweles an keskows',
-'otherlanguages' => 'En yethow erel',
+'categorypage' => 'Gweles folen an class',
+'viewtalkpage' => 'Gweles an kescows',
+'otherlanguages' => 'Yn yethow erel',
 'redirectedfrom' => '(Daswedyes dhyworth $1)',
 'redirectpagesub' => 'Folen daswedyans',
-'lastmodifiedat' => 'An folen-ma a veu kens chanjys an $1, dhe $2.',
-'jumpto' => 'Labma dhe:',
+'lastmodifiedat' => 'An folen-ma a veu chanjys an $1, dhe $2.',
+'jumpto' => 'Lamma dhe:',
 'jumptonavigation' => 'lewyans',
-'jumptosearch' => 'hwilas',
+'jumptosearch' => 'whilas',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 'aboutsite' => 'A-dro dhe {{SITENAME}}',
 'aboutpage' => 'Project:Kedhlow',
-'copyright' => 'Kavadow yw an dalgh en-dadn $1.',
+'copyright' => 'Cavadow yw an dalgh yn-dann $1.',
 'copyrightpage' => '{{ns:project}}:Gwirbryntyansow',
-'currentevents' => 'Darvosow a-lebmyn',
-'currentevents-url' => 'Project:Darvosow a-lebmyn',
+'currentevents' => 'Darvosow a-lemmyn',
+'currentevents-url' => 'Project:Darvosow a-lemmyn',
 'disclaimers' => 'Avisyansow',
-'disclaimerpage' => 'Project:Avisyans ollgebmyn',
+'disclaimerpage' => 'Project:Avisyans ollgemmyn',
 'edithelp' => 'Gweres gans chanjya',
 'edithelppage' => 'Help:Chanjya',
 'helppage' => 'Help:Gweres',
 'mainpage' => 'Folen dre',
 'mainpage-description' => 'Folen dre',
-'policy-url' => 'Project:Polici',
+'policy-url' => 'Project:Policy',
 'portal' => 'Porth an gemeneth',
 'portal-url' => 'Project:Porth an gemeneth',
-'privacy' => 'Polici privetter',
-'privacypage' => 'Project:Polici privetter',
+'privacy' => 'Policy privetter',
+'privacypage' => 'Project:Policy privetter',
 
-'badaccess' => 'Gwall kubmyes',
+'badaccess' => 'Gwall cummyes',
 
 'ok' => 'Sur',
 'retrievedfrom' => 'Daskevys dhyworth "$1"',
 'youhavenewmessages' => 'Yma $1 genowgh ($2).',
-'newmessageslink' => 'messajys nowyth',
-'newmessagesdifflink' => 'chanj kens',
-'youhavenewmessagesmulti' => 'Yma messajys nowyth genowgh war $1',
+'newmessageslink' => 'messajys noweth',
+'newmessagesdifflink' => 'chanj diwettha',
+'youhavenewmessagesmulti' => 'Yma messajys noweth genowgh war $1',
 'editsection' => 'chanjya',
 'editold' => 'chanjya',
-'viewsourceold' => 'gweles an bednfenten',
+'viewsourceold' => 'gweles an bennfenten',
 'editlink' => 'chanjya',
-'viewsourcelink' => 'gweles an bednfenten',
-'editsectionhint' => 'Chanjya an radn: $1',
+'viewsourcelink' => 'gweles an bennfenten',
+'editsectionhint' => 'Chanjya an rann: $1',
 'toc' => 'Rol an folen',
-'showtoc' => 'diskwedhes',
-'hidetoc' => 'kudha',
-'collapsible-expand' => 'Efani',
+'showtoc' => 'disqwedhes',
+'hidetoc' => 'cudha',
+'collapsible-expand' => 'Efany',
 'thisisdeleted' => 'Gweles po restorya $1?',
 'viewdeleted' => 'Gweles $1?',
-'restorelink' => '{{PLURAL:$1|udn janj diles|$1 chanj diles}}',
+'restorelink' => '{{PLURAL:$1|unn janj diles|$1 chanj diles}}',
 'feedlinks' => 'Feed:',
 'site-rss-feed' => '$1 RSS feed',
 'site-atom-feed' => '$1 Atom feed',
@@ -328,84 +329,81 @@ $messages = array(
 'nstab-main' => 'Erthygel',
 'nstab-user' => 'Folen devnydhyer',
 'nstab-media' => 'Folen media',
-'nstab-special' => 'Folen arbednek',
-'nstab-project' => 'Folen towl',
+'nstab-special' => 'Folen arbennek',
+'nstab-project' => 'Folen ragdres',
 'nstab-image' => 'Restren',
 'nstab-mediawiki' => 'Messach',
-'nstab-template' => 'Skantlyn',
+'nstab-template' => 'Scantlyn',
 'nstab-help' => 'Gweres',
-'nstab-category' => 'Klass',
+'nstab-category' => 'Class',
 
 # General errors
 'error' => 'Gwall',
 'databaseerror' => 'Gwall database',
-'readonly' => 'Alhwedhys yw an database',
+'readonly' => 'Alwhedhys yw an database',
 'missingarticle-rev' => '(amendyans#: $1)',
 'missingarticle-diff' => '(Dyffrans: $1, $2)',
 'internalerror' => 'Gwall a-bervedh',
 'internalerror_info' => 'Gwall a-bervedh: $1',
-'filecopyerror' => 'Ny ylles kopia an restren "$1" war-tu "$2".',
-'filerenameerror' => 'Ny ylles dashenwel an restren "$1" dhe "$2".',
-'filedeleteerror' => 'Ny ylles dilea an restren "$1".',
-'filenotfound' => 'Ny ylles kavos an restren "$1".',
+'filecopyerror' => 'Ny veu possybyl copia an restren "$1" dhe "$2".',
+'filerenameerror' => 'Ny veu possybyl dashenwel an restren "$1" dhe "$2".',
+'filedeleteerror' => 'Ny veu possybyl dilea an restren "$1".',
+'filenotfound' => 'Ny veu kevys an restren "$1".',
 'badtitle' => 'Titel drog',
-'viewsource' => 'Gweles an bednfenten',
+'viewsource' => 'Gweles an bennfenten',
 
 # Login and logout pages
-'welcomecreation' => '== Dynnargh, $1! ==
-Gwruthys yw agas akont.
-Na wrewgh ankevi dhe janjya agas [[Special:Preferences|dowisyansow {{SITENAME}}]].',
 'yourname' => 'Hanow usyer:',
 'yourpassword' => 'Ger tremena:',
-'yourpasswordagain' => 'Jynnskrifowgh agas ger tremena arta:',
-'remembermypassword' => "Porth kov a'm ger tremena war'n amontyer-ma (rag $1 {{PLURAL:$1|dydh|dydh}} dhe'n moyha)",
-'securelogin-stick-https' => 'Gwitha junyes gans HTTPS wosa omgelmi',
+'yourpasswordagain' => 'Jynnscrifowgh agas ger tremena arta:',
+'remembermypassword' => "Perthy cov a'm omgelmy war'n jynn amontya-ma (rag $1 {{PLURAL:$1|dedh}} dhe'n moyha)",
+'securelogin-stick-https' => 'Gwitha junyes gans HTTPS wosa omgelmy',
 'yourdomainname' => 'Agas tiredh:',
-'login' => 'Omgelmi',
-'nav-login-createaccount' => 'Omgelmi / Formya akont nowyth',
-'loginprompt' => 'Res yw dhewgh galosegi cookies rag omgelmi orth {{SITENAME}}.',
-'userlogin' => 'Omgelmi / formya akont nowyth',
-'userloginnocreate' => 'Omgelmi',
-'logout' => 'Digelmi',
-'userlogout' => 'Digelmi',
+'login' => 'Omgelmy',
+'nav-login-createaccount' => 'Omgelmy / Formya acont noweth',
+'loginprompt' => 'Res yw dhywgh galosegy cookies rag omgelmy orth {{SITENAME}}.',
+'userlogin' => 'Omgelmy / formya acont noweth',
+'userloginnocreate' => 'Omgelmy',
+'logout' => 'Digelmy',
+'userlogout' => 'Digelmy',
 'notloggedin' => 'Digelmys',
-'nologin' => "A nyns eus akont dhewgh? '''$1'''.",
-'nologinlink' => 'Formyowgh akont',
-'createaccount' => 'Formya akont nowyth',
-'gotaccount' => "Eus akont genowgh seulabres? '''$1'''.",
-'gotaccountlink' => 'Omgelmi',
-'userlogin-resetlink' => 'Eus ankevys genowgh agas manylyon omgelmi?',
+'nologin' => "A nyns eus acont dhywgh? '''$1'''.",
+'nologinlink' => 'Formyowgh acont',
+'createaccount' => 'Formya acont noweth',
+'gotaccount' => "Eus acont dhis seulabres? '''$1'''.",
+'gotaccountlink' => 'Omgelmy',
+'userlogin-resetlink' => 'Eus ankevys genowgh agas manylyon omgelmy?',
 'createaccountmail' => 'der e-bost',
-'createaccountreason' => 'Cheson:',
-'badretype' => 'Ny wra parya an geryow-tremena an eyl gans y gila.',
+'createaccountreason' => 'Acheson:',
+'badretype' => 'Ny wra omdhesedhes an geryow-tremena entrys genowgh.',
 'userexists' => "Yma'n hanow usyer entrys genowgh ow pos usys seulabres.
 Dowisowgh hanow aral mar pleg.",
-'loginerror' => 'Gwall omgelmi',
-'createaccounterror' => 'Ny ylles formya an akont: $1',
-'nocookiesnew' => 'An akont yw formys, mes nyns owgh hwi omgelmys.
-Yma {{SITENAME}} owth usya cookies rag omgelmi devnydhyoryon.
+'loginerror' => 'Gwall omgelmy',
+'createaccounterror' => 'Ny veu possybyl formya an acont: $1',
+'nocookiesnew' => 'Formys yw an acont, mes nyns owgh why omgelmys.
+Yma {{SITENAME}} owth usya cookies rag omgelmy devnydhyoryon.
 Dialosegys yw cookies war agas jynn amontya.
-Gwrewgh aga galosegi, hag omgelmi dre usya agas hanow usyer ha ger tremena nowyth.',
+Gwrewgh aga galosegy, hag omgelmowgh dre usya agas hanow usyer ha ger tremena noweth.',
 'nocookieslogin' => 'Yma {{SITENAME}} owth usya cookies rag omgelmi devnydhyoryon.
 Dialosegys yw cookies war agas jynn amontya.
 Gwrewgh aga galosegi hag assaya arta.',
-'noname' => 'Ny wrussowgh hwi ri hanow usyer da.',
-'loginsuccess' => "'''Omgelmys owgh hwi lebmyn orth {{SITENAME}} avel \"\$1\".'''",
-'nouserspecified' => 'Res yw dhewgh ri hanow usyer.',
-'wrongpassword' => 'Kabm o an ger tremena.
+'noname' => 'Ny wrussowgh why ry hanow usyer da.',
+'loginsuccess' => "'''Omgelmys owgh why lemmyn orth {{SITENAME}} avel \"\$1\".'''",
+'nouserspecified' => 'Res yw dhywgh ry hanow usyer.',
+'wrongpassword' => 'Camm o an ger tremena.
 Assayowgh arta mar pleg.',
 'wrongpasswordempty' => 'Gwag o an ger-tremena res. Assayowgh arta mar pleg.',
 'mailmypassword' => 'E-bostya ger tremena nowyth',
-'noemailcreate' => 'Res yw dhewgh ri trigva ebost da',
-'accountcreated' => 'Formys yw an akont',
-'accountcreatedtext' => 'Formys yw an akont rag $1.',
+'noemailcreate' => 'Res yw dhewgh ry trigva ebost da',
+'accountcreated' => 'Acont formys',
+'accountcreatedtext' => 'Formys re beu an acont rag $1.',
 'loginlanguagelabel' => 'Yeth: $1',
 
 # Change password dialog
 'resetpass' => 'Chanjya ger-tremena',
-'resetpass_header' => 'Chanjya ger tremena an akont',
-'oldpassword' => 'Ger tremena koth:',
-'newpassword' => 'Ger tremena nowyth:',
+'resetpass_header' => 'Chanjya ger tremena an acont',
+'oldpassword' => 'Ger tremena coth:',
+'newpassword' => 'Ger tremena noweth:',
 'resetpass-submit-loggedin' => 'Chanjya an ger-tremena',
 'resetpass-submit-cancel' => 'Hedhi',
 
@@ -414,81 +412,85 @@ Assayowgh arta mar pleg.',
 'passwordreset-email' => 'Trigva ebost:',
 
 # Edit page toolbar
-'bold_sample' => 'Tekst tew',
-'bold_tip' => 'Tekst tew',
-'italic_sample' => 'Tekst italek',
-'italic_tip' => 'Tekst italek',
+'bold_sample' => 'Text tew',
+'bold_tip' => 'Text tew',
+'italic_sample' => 'Text italek',
+'italic_tip' => 'Text italek',
 'link_sample' => 'Titel an gevren',
 'link_tip' => 'Kevren bervedhel',
 'extlink_sample' => 'http://www.example.com titel an gevren',
 'extlink_tip' => 'Kevren a-ves (na ankevowgh an rager http://)',
-'headline_sample' => 'Tekst an titel',
-'headline_tip' => 'Pednlinen nivel 2',
-'nowiki_sample' => 'Keworrowgh tekst heb furvyans obma',
-'nowiki_tip' => 'Skonya ajon furvyans wiki',
+'headline_sample' => 'Text an titel',
+'headline_tip' => 'Pennlinen nivel 2',
+'nowiki_sample' => 'Keworrowgh text heb furvyans omma',
+'nowiki_tip' => 'Sconya aswon furvyans wiki',
 'image_tip' => 'Restren neythys',
 'media_tip' => 'Kevren restren',
 'sig_tip' => 'Agas sinans gans stampa-termyn',
 
 # Edit pages
-'summary' => 'Derivas kot:',
-'subject' => 'Testen/Pednlinen:',
-'minoredit' => 'Chanj bian yw hebma',
+'summary' => 'Derivas cot:',
+'subject' => 'Testen/Pennlinen:',
+'minoredit' => 'Chanj bian yw hemma',
 'watchthis' => 'Golyas an folen-ma',
 'savearticle' => 'Gwitha',
 'preview' => 'Ragwel',
 'showpreview' => 'Ragweles',
-'showdiff' => 'Diskwedhes an chanjyow',
-'anoneditwarning' => "'''Gwarnyans:''' Nyns owgh hwi omgelmys.
-Agas trigva IP a vedh rekordys en istori chanjyow an folen-ma.",
+'showdiff' => 'Disqwedhes an chanjyow',
+'anoneditwarning' => "'''Gwarnyans:''' Nyns owgh why omgelmys.
+Recordys a vedh agas trigva IP yn istory an folen-ma.",
 'summary-preview' => "Ragwel a'n derivas kot:",
-'loginreqlink' => 'omgelmi',
+'loginreqlink' => 'omgelmy',
 'accmailtitle' => 'Danvenys yw an ger-tremena.',
 'newarticle' => '(Nowyth)',
-'noarticletext' => 'Nyns eus tekst war an folen-ma.
-Hwi a ell [[Special:Search/{{PAGENAME}}|hwilas titel an folen-ma]] en folednow erel,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hwilas e\'n kovnotednow kelmys],
+'noarticletext' => 'Nyns eus text y\'n folen-ma.
+Why a yll [[Special:Search/{{PAGENAME}}|whilas titel an folen-ma]] yn folennow erel,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} whilas y\'n covnotennow kelmys],
 po [{{fullurl:{{FULLPAGENAME}}|action=edit}} chanjya an folen-ma]</span>.',
+'noarticletext-nopermission' => 'Nyns eus text y\'n folen-ma a-lemmyn.
+Why a yll [[Special:Search/{{PAGENAME}}|whilas titel an folen-ma]] yn folennow erel, po <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} whilas y\'n covnotennow kelmys]</span>, mes nyns eus cummyes dhywgh a wruthyl an folen-ma.',
 'updated' => '(Nowedhys)',
 'note' => "'''Noten:'''",
-'previewnote' => "'''Gwrewgh perthi kov, nyns yw hebma marnas ragwel.''' Nyns yw agas chanjyow gwithys hwath!",
-'editing' => 'ow chanjya $1',
-'editingsection' => 'ow chanjya $1 (radn)',
-'editingcomment' => 'ow chanjya $1 (radn nowyth)',
-'yourtext' => 'Agas tekst',
+'previewnote' => "Gwrewgh perthy cov, nyns yw hemma marnas ragwel.''' Nyns yw gwithys agas chanjyow whath!",
+'editing' => 'Ow chanjya $1',
+'editingsection' => 'ow chanjya $1 (rann)',
+'editingcomment' => 'ow chanjya $1 (rann noweth)',
+'yourtext' => 'Agas text',
 'yourdiff' => 'Dyffransow',
-'templatesused' => '{{PLURAL:$1|Skantlyn|Skantlyns}} usys war an folen-ma:',
-'templatesusedpreview' => "{{PLURAL:$1|Skantlyn|Skantlyns}} usys e'n ragwel-ma:",
+'templatesused' => '{{PLURAL:$1|Scantlyn|Scantlyns}} usys war an folen-ma:',
+'templatesusedpreview' => "{{PLURAL:$1|Scantlyn|Scantlyns}} usys y'n ragwel-ma:",
 'template-protected' => '(gwithys)',
 'template-semiprotected' => '(hanter-difresys)',
-'hiddencategories' => 'Esel a {{PLURAL:$1|1 glass kovys|$1 klass kovys}} yw an folen-ma:',
-'permissionserrorstext-withaction' => 'Nyns eus kubmyes dhewgh dhe $2, rag an {{PLURAL:$1|cheson|chesonys}} a sew:',
+'hiddencategories' => 'Esel a {{PLURAL:$1|1 glass cudhys|$1 class cudhys}} yw an folen-ma:',
+'permissionserrorstext-withaction' => 'Nyns eus cummyes dhywgh dhe $2, rag an {{PLURAL:$1|acheson|achesonys}} a sew:',
+'moveddeleted-notice' => 'Diles yw an folen-ma.
+Yma covnoten dhileans ha gwayans an folen a-woles.',
 'log-fulllog' => 'Gweles an govnoten dien',
 
 # "Undo" feature
-'undo-summary' => 'Diswul amendyans $1 gans [[Special:Contributions/$2|$2]] ([[User talk:$2|keskows]])',
+'undo-summary' => 'Diswul amendyans $1 gans [[Special:Contributions/$2|$2]] ([[User talk:$2|kescows]])',
 
 # Account creation failure
-'cantcreateaccounttitle' => 'Ny ellir formya an akont',
+'cantcreateaccounttitle' => 'Nyns yw possybyl formya an acont',
 
 # History pages
-'viewpagelogs' => 'Gweles kovnotednow an folen-ma',
+'viewpagelogs' => 'Gweles covnotennow an folen-ma',
 'currentrev' => 'Amendyans diwettha',
-'currentrev-asof' => 'An chanj diwettha dhyworth $1',
-'revisionasof' => 'Amendyans wosa $1',
-'revision-info' => 'Amendyans wosa $1 gans $2',
-'previousrevision' => '← Amendyans kottha',
-'nextrevision' => 'Amendyans nowyttha →',
+'currentrev-asof' => 'An chanj diwettha a-ban $1',
+'revisionasof' => 'Versyon an folen a-ban $1',
+'revision-info' => 'Amendyans a-ban $1 gans $2',
+'previousrevision' => '← Amendyans cottha',
+'nextrevision' => 'Amendyans nowettha →',
 'currentrevisionlink' => 'An amendyans diwettha',
-'cur' => 'lebmyn',
+'cur' => 'lemmyn',
 'next' => 'nessa',
 'last' => 'kens',
 'page_first' => 'kensa',
 'page_last' => 'kens',
-'histlegend' => "Dowis dyffransow: Merkyowgh kistednow radyo an amendyansow dhe geheveli, ha gwaskowgh 'entra' po an boton orth goles an folen.<br />
-Alhwedh: '''({{int:cur}})''' = dyffrans gans an amendyans diwettha, '''({{int:last}})''' = dyffrans gans amendyans kens, '''{{int:minoreditletter}}''' = chanj bian.",
-'history-fieldset-title' => 'Peuri an istori',
-'history-show-deleted' => 'Diles hep ken',
+'histlegend' => "Dowis dyffransow: Merkyowgh kistennow radyo a'n amendyansow dhe gehevely, ha gwascowgh 'entra' po an boton orth goles an folen.<br />
+Alwhedh: '''({{int:cur}})''' = an dyffrans dhyworth an amendyans diwettha, '''({{int:last}})''' = an dyffrans dhyworth an amendyans kens, '''{{int:minoreditletter}}''' = chanj bian.",
+'history-fieldset-title' => 'Peury an istory',
+'history-show-deleted' => 'Re diles yn unnik',
 'histfirst' => 'An moyha a-varr',
 'histlast' => 'An diwettha',
 'historyempty' => '(gwag)',
@@ -497,11 +499,11 @@ Alhwedh: '''({{int:cur}})''' = dyffrans gans an amendyans diwettha, '''({{int:la
 'history-feed-item-nocomment' => '$1 dhe $2',
 
 # Revision deletion
-'rev-delundel' => 'diskwedhes/kudha',
+'rev-delundel' => 'disqwedhes/cudha',
 'revdel-restore' => 'chanjya an hewelder',
 'revdel-restore-deleted' => 'amendyansow diles',
 'revdel-restore-visible' => 'amendyansow gweladow',
-'pagehist' => 'Istori an folen',
+'pagehist' => 'Istory an folen',
 
 # History merging
 'mergehistory-reason' => 'Cheson:',
@@ -510,78 +512,78 @@ Alhwedh: '''({{int:cur}})''' = dyffrans gans an amendyans diwettha, '''({{int:la
 'revertmerge' => 'Disworunya',
 
 # Diffs
-'history-title' => 'Istori an folen "$1"',
-'difference-multipage' => '(Dyffrans ynter an folednow)',
+'history-title' => 'Istory an folen "$1"',
+'difference-multipage' => '(Dyffrans ynter an folennow)',
 'lineno' => 'Linen $1:',
-'compareselectedversions' => 'Keheveli an amendyansow dowisyes',
-'showhideselectedversions' => 'Diskwedhes/kudha amendyansow dowisyes',
+'compareselectedversions' => 'Kehevely an amendyansow dowisyes',
+'showhideselectedversions' => 'Disqwedhes/cudha amendyansow dowisyes',
 'editundo' => 'diswul',
 
 # Search results
-'searchresults' => 'Sewyansow an hwilans',
-'searchresults-title' => 'Sewyansow an hwilans rag "$1"',
-'searchresulttext' => 'Rag moy kedhlow a-dro dhe hwilas en {{SITENAME}}, gwelowgh [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Hwi a wrug hwilas \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|keniver folen ow talleth gans "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|keniver folen ow kevredna dhe "$1"]])',
-'searchsubtitleinvalid' => "Hwi a wrug hwilas '''$1'''",
+'searchresults' => 'Sewyansow whilas',
+'searchresults-title' => 'Sewyansow whilas rag "$1"',
+'searchresulttext' => 'Rag moy kedhlow a-dro dhe whilas yn {{SITENAME}}, gwelowgh [[{{MediaWiki:Helppage}}|{{int:help}}]].',
+'searchsubtitle' => 'Why a wrug whilas \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|keniver folen ow talleth gans "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|keniver folen ow kevrenna dhe "$1"]])',
+'searchsubtitleinvalid' => "Why a wrug whilas '''$1'''",
 'notitlematches' => 'Nyns eus titel folen ow machya',
-'notextmatches' => 'Nyns eus tekst folen ow machya',
+'notextmatches' => 'Nyns eus text folen ow machya',
 'prevn' => 'kens {{PLURAL:$1|$1}}',
 'nextn' => 'nessa {{PLURAL:$1|$1}}',
 'prevn-title' => '$1 {{PLURAL:$1|sewyans|sewyans}} kens',
 'nextn-title' => '$1 {{PLURAL:$1|sewyans|sewyans}} nessa',
 'viewprevnext' => 'Gweles ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Etholyow hwilans',
+'searchmenu-legend' => 'Etholyow whilans',
 'searchmenu-exists' => "''Yma folen henwys \"[[:\$1]]\" war an wiki-ma'''",
 'searchmenu-new' => "'''Gwruthyl an folen \"[[:\$1]]\" war an wiki-ma!'''",
 'searchhelp-url' => 'Help:Gweres',
-'searchprofile-articles' => 'Folednow dalhen',
-'searchprofile-project' => 'Folednow gweres ha ragdres',
+'searchprofile-articles' => 'Folennow dhalhen',
+'searchprofile-project' => 'Folennow gweres ha ragdres',
 'searchprofile-images' => 'Liesmedia',
 'searchprofile-everything' => 'Puptra',
-'searchprofile-advanced' => 'Avoncys',
-'searchprofile-articles-tooltip' => 'Hwilas en $1',
-'searchprofile-project-tooltip' => 'Hwilas en $1',
-'searchprofile-images-tooltip' => 'Hwilas restrednow',
-'searchprofile-everything-tooltip' => 'Hwilas en pub teller (en folednow keskows ynwedh)',
+'searchprofile-advanced' => 'Avonsys',
+'searchprofile-articles-tooltip' => 'Whilas yn $1',
+'searchprofile-project-tooltip' => 'Whilas yn $1',
+'searchprofile-images-tooltip' => 'Whilas restrennow',
+'searchprofile-everything-tooltip' => 'Whilas yn pub teller (yn folennow kescows ynwedh)',
 'search-result-size' => '$1 ({{PLURAL:$2|1 ger|$2 ger}})',
 'search-result-category-size' => '{{PLURAL:$1|1 esel|$1 esel}} ({{PLURAL:$2|1 isglass|$2 isglass}}, {{PLURAL:$3|1 restren|$3 restren}})',
 'search-redirect' => '(daswedyans $1)',
-'search-section' => '(radn $1)',
-'search-suggest' => 'A wrussowgh hwi menya: $1',
-'search-interwiki-caption' => 'Ragdresow hwor',
+'search-section' => '(rann $1)',
+'search-suggest' => 'A wrussowgh why menya: $1',
+'search-interwiki-caption' => 'Ragdresow whor',
 'search-interwiki-default' => '$1 sewyansow:',
 'search-interwiki-more' => '(moy)',
 'search-relatedarticle' => 'Kelmys',
-'mwsuggest-disable' => 'Dialosegi profyansow AJAX',
-'searcheverything-enable' => 'Hwilas en keniver spas-hanow',
+'mwsuggest-disable' => 'Dialosegy profyansow AJAX',
+'searcheverything-enable' => 'Whilas yn keniver spas-hanow',
 'searchrelated' => 'kelmys',
 'searchall' => 'oll',
 'showingresultsheader' => "{{PLURAL:$5|Sewyans '''$1''' dhyworth '''$3'''|Sewyansow '''$1 - $2''' dhyworth '''$3'''}} rag '''$4'''",
-'nonefound' => "'''Noten''': Nyns yw hwilys marnas radn a'n spasys-hanow dre dhefowt.
-Gwrewgh assaya rag-gorra agas govyn gans ''all:'' rag hwilas en pub teller (a-barth an folednow keskows, skantlyns, etc), po usyowgh an spas-hanow hwensys avel rag-gorrans.",
+'nonefound' => "'''Noten''': Nyns yw marnas rann a'n spasys-hanow whilys dre dhefowt.
+Gwrewgh assaya rag-gorra agas govyn gans ''all:'' rag whilas yn pub teller (ynnans an folennow kescows, scantlyns, etc), po usyowgh an spas-hanow whensys avel rag-gorrans.",
 'search-nonefound' => 'Nyns esa sewyansow ow machya an govyn.',
-'powersearch' => 'Hwilans avoncys',
-'powersearch-legend' => 'Hwilans avoncys',
-'powersearch-ns' => 'Hwilas en spasys-hanow:',
-'powersearch-redir' => 'Gorra an daswedyansow en rol',
-'powersearch-field' => 'Hwilas',
+'powersearch' => 'Whilans avonsys',
+'powersearch-legend' => 'Whilans avonsys',
+'powersearch-ns' => 'Whilas yn spasys-hanow:',
+'powersearch-redir' => 'Gorra an daswedyansow yn rol',
+'powersearch-field' => 'Whilas',
 'powersearch-togglelabel' => 'Dowis:',
 'powersearch-toggleall' => 'Oll',
 'powersearch-togglenone' => 'Nagonen',
-'search-external' => 'Hwilans a-ves',
+'search-external' => 'Whilans a-ves',
 
 # Preferences page
 'preferences' => 'Dowisyansow',
-'mypreferences' => 'Ow dowisyansow',
+'mypreferences' => 'Dowisyansow',
 'changepassword' => 'Chanjya an ger-tremena',
-'prefs-skin' => 'Krohen',
+'prefs-skin' => 'Crohen',
 'prefs-datetime' => 'Dedhyans hag eur',
 'prefs-rc' => 'Chanjyow a-dhiwedhes',
 'prefs-watchlist' => 'Rol golyas',
 'prefs-resetpass' => 'Chanjya ger-tremena',
 'prefs-email' => 'Etholyow e-bost',
 'saveprefs' => 'Gwitha',
-'searchresultshead' => 'Hwilas',
+'searchresultshead' => 'Whilas',
 'timezoneregion-africa' => 'Afrika',
 'timezoneregion-america' => 'Amerika',
 'timezoneregion-antarctica' => 'Antarktika',
@@ -605,6 +607,9 @@ Gwrewgh assaya rag-gorra agas govyn gans ''all:'' rag hwilas en pub teller (a-ba
 'gender-male' => 'Gorow',
 'gender-female' => 'Benow',
 'email' => 'E-bost',
+'prefs-help-email' => 'A-dhowis yw ry trigva ebost, mes res yw y sensy rag dassettya agas ger tremena mars yw ankevys.',
+'prefs-help-email-others' => 'Why a yll dowis gasa dhe re erel kestava dhywgh der ebost yn unn glyckya kevren war agas folen devnydhyer po kescows.
+Nyns yw disqwedhys agas trigva ebost pan wrella devnydhyoryon erel kestava dhywgh.',
 'prefs-signature' => 'Sinans',
 'prefs-advancedediting' => 'Etholyow avoncys',
 'prefs-advancedrc' => 'Etholyow avoncys',
@@ -656,43 +661,46 @@ Gwrewgh assaya rag-gorra agas govyn gans ''all:'' rag hwilas en pub teller (a-ba
 'recentchanges' => 'Chanjyow a-dhiwedhes',
 'recentchanges-legend' => 'Etholyow an chanjyow a-dhiwedhes',
 'recentchanges-summary' => "Sewya an chanjyow diwettha eus dhe'n wiki war'n folen-ma.",
-'recentchanges-feed-description' => "Sewya an chanjyow diwettha dhe'n wiki e'n feed-ma.",
-'recentchanges-label-newpage' => 'An chanj-ma a wrug gwruthyl folen nowyth',
-'recentchanges-label-minor' => 'Chanj bian yw hebma',
+'recentchanges-feed-description' => "Helerhy an chanjyow diwettha dhe'n wiki y'n feed-ma.",
+'recentchanges-label-newpage' => 'Y feu gwres folen nowyth gans an chanj-ma',
+'recentchanges-label-minor' => 'Chanj bian yw hemma',
 'recentchanges-label-bot' => 'An chanj-ma a veu gwres gans bot',
-'rclistfrom' => 'Diskwedhes chanjyow nowyth ow talleth a-dhia $1.',
+'rcnote' => "A-woles yma'n {{PLURAL:$1|'''1''' chanj}} y'n {{PLURAL:$2|jedh|'''$2''' dedh}} diwettha, a-ban $5, $4.",
+'rclistfrom' => 'Disqwedhes chanjyow nowyth ow talleth a-ban $1.',
 'rcshowhideminor' => '$1 chanjyow bian',
 'rcshowhidebots' => '$1 botow',
 'rcshowhideliu' => '$1 devnydhoryon omgelmys',
 'rcshowhideanons' => '$1 devnydhyoryon dihanow',
 'rcshowhidemine' => '$1 ow chanjyow',
-'rclinks' => "Diskwedhes an $1 chanj a-dhiwedhes gwres e'n $2 dydh a-dhiwedhes<br />$3",
+'rclinks' => "Disqwedhes an $1 chanj diwettha gwres y'n $2 dedh diwettha<br />$3",
 'diff' => 'dyffrans',
-'hist' => 'istori',
-'hide' => 'Kudha',
-'show' => 'Diskwedhes',
+'hist' => 'istory',
+'hide' => 'Cudha',
+'show' => 'Disqwedhes',
 'minoreditletter' => 'B',
 'newpageletter' => 'N',
 'boteditletter' => 'bot',
 'newsectionsummary' => '/* $1 */ radn nowyth',
-'rc-enhanced-expand' => 'Diskwedhes an manylyon (res yw JavaScript)',
-'rc-enhanced-hide' => 'Kudha manylyon',
+'rc-enhanced-expand' => 'Disqwedhes an manylyon (res yw JavaScript)',
+'rc-enhanced-hide' => 'Cudha manylyon',
 
 # Recent changes linked
 'recentchangeslinked' => 'Chanjyow kelmys',
 'recentchangeslinked-feed' => 'Chanjyow kelmys',
 'recentchangeslinked-toolbox' => 'Chanjyow kelmys',
 'recentchangeslinked-title' => 'Chanjyow kelmys dhe "$1"',
-'recentchangeslinked-summary' => "Hemm yw rol a janjyow a-dhiwedhes gwres war folednow kevrednys dhyworth folen res (po dhe eseli a glass res).
-'''Tew''' yw folednow eus war agas [[Special:Watchlist|rol golyas]].",
+'recentchangeslinked-noresult' => 'Nyns esa chanj veth war folennow kevrennys dres an termyn res.',
+'recentchangeslinked-summary' => "Hemm yw rol a janjyow a-dhiwedhes gwres dhe folennow yw kevrennys dhyworth folen res (po dhe esely a glass res).
+'''Tew''' yw folennow eus war agas [[Special:Watchlist|rol golyas]].",
 'recentchangeslinked-page' => 'Hanow an folen:',
+'recentchangeslinked-to' => "Disqwedhes chanjyow dhe folennow kevennys dhe'n folen res yn le",
 
 # Upload
-'upload' => 'Ughkarga restren',
+'upload' => 'Ughcarga restren',
 'uploadbtn' => 'Ughkarga restren',
-'uploadlogpage' => 'Kovnoten ughkarga',
+'uploadlogpage' => 'Covnoten ughcarga',
 'filename' => 'Hanow-restren',
-'filedesc' => 'Derivas kot',
+'filedesc' => 'Derivas cot',
 'filesource' => 'Pednfenten:',
 'savefile' => 'Gwitha restren',
 'uploadedimage' => '"[[$1]]" ughkergys',
@@ -706,21 +714,24 @@ Gwrewgh assaya rag-gorra agas govyn gans ''all:'' rag hwilas en pub teller (a-ba
 
 # File description page
 'file-anchor-link' => 'Restren',
-'filehist' => 'Istori an folen',
-'filehist-help' => 'Klyckyowgh war dedhyans/eur rag gweles an folen del veu hi nena.',
+'filehist' => 'Istory an restren',
+'filehist-help' => 'Clyckyowgh war dedhyans/eur rag gweles an folen del veu nena.',
 'filehist-deleteall' => 'dilea oll',
 'filehist-deleteone' => 'dilea',
-'filehist-current' => 'a-lebmyn',
+'filehist-revert' => 'trebuchya',
+'filehist-current' => 'a-lemmyn',
 'filehist-datetime' => 'Dedhyans/Eur',
-'filehist-thumb' => 'Skeusednik',
-'filehist-thumbtext' => 'Skeusednik rag an versyon wosa $1',
+'filehist-thumb' => 'Skeusennik',
+'filehist-thumbtext' => 'Skeusennik rag an versyon a-ban $1',
 'filehist-user' => 'Devnydhyer',
 'filehist-dimensions' => 'Mensow',
 'filehist-comment' => 'Ger',
 'imagelinks' => 'Devnydh an restren',
-'linkstoimage' => "Yma'n {{PLURAL:$1|folen|$1 folen}} a sew ow kevredna dhe'n restren-ma:",
-'nolinkstoimage' => "Nyns eus folen ow kevredna dhe'n restren-ma.",
+'linkstoimage' => "Yma'n {{PLURAL:$1|folen|$1 folen}} a sew ow kevrenna dhe'n restren-ma:",
+'nolinkstoimage' => "Nyns eus folen ow kevrenna dhe'n restren-ma.",
 'sharedupload' => 'Yma an folen-ma ow tos dhyworth $1 ha hi a ell bos usys gans ragdresow erel.',
+'sharedupload-desc-here' => "Yma'n restren-ma ow tos dhyworth $1 ha hi a alsa bos yn-dann devnydh gans ragdresow erel.
+Yma'n descrifans war y [$2 folen dhescrifans] disqwedhys a-woles.",
 'uploadnewversion-linktext' => "Ughkarga versyon nowyth a'n restren-ma",
 
 # File deletion
@@ -745,6 +756,7 @@ Gwrewgh assaya rag-gorra agas govyn gans ''all:'' rag hwilas en pub teller (a-ba
 'randompage' => 'Folen dre jons',
 
 # Statistics
+'statistics' => 'Statystygyon',
 'statistics-pages' => 'Folednow',
 
 'brokenredirects-edit' => 'chanjya',
@@ -762,28 +774,29 @@ Gwrewgh assaya rag-gorra agas govyn gans ''all:'' rag hwilas en pub teller (a-ba
 'uncategorizedtemplates' => 'Skantlyns heb klass',
 'unusedcategories' => 'Klassys gwag',
 'unusedimages' => 'Restrednow heb devnydh',
+'prefixindex' => 'Keniver folen gans an rager',
 'shortpages' => 'Folednow berr',
 'longpages' => 'Folednow hir',
 'protectedpages' => 'Folednow difresys',
 'protectedtitles' => 'Titlys difresys',
-'usercreated' => '{{GENDER:$3|Formyes}} war $1 dhe $2',
-'newpages' => 'Folednow nowyth',
+'usercreated' => '{{GENDER:$3|Formyes}} an $1 dhe $2',
+'newpages' => 'Folennow nowyth',
 'newpages-username' => 'Hanow-usyer:',
 'ancientpages' => 'Folednow kottha',
 'move' => 'Gwaya',
 'movethispage' => 'Gwaya an folen-ma',
-'pager-newer-n' => '{{PLURAL:$1|1 nowyttha|$1 nowyttha}}',
-'pager-older-n' => '{{PLURAL:$1|1 kottha|$1 kottha}}',
+'pager-newer-n' => '{{PLURAL:$1|1 nowettha|$1 nowettha}}',
+'pager-older-n' => '{{PLURAL:$1|1 cottha|$1 cottha}}',
 
 # Book sources
-'booksources' => 'Pednfentynyow lyver',
-'booksources-search-legend' => 'Hwilas pednfentynyow lyver',
+'booksources' => 'Pennfentynyow lyver',
+'booksources-search-legend' => 'Whilas pennfentynyow lyver',
 'booksources-go' => 'Mos',
 
 # Special:Log
 'specialloguserlabel' => 'Devnydhyer:',
 'speciallogtitlelabel' => 'Titel:',
-'log' => 'Kovnotednow',
+'log' => 'Covnotennow',
 
 # Special:AllPages
 'allpages' => 'Keniver folen',
@@ -797,7 +810,7 @@ Gwrewgh assaya rag-gorra agas govyn gans ''all:'' rag hwilas en pub teller (a-ba
 'allpagessubmit' => 'Mos',
 
 # Special:Categories
-'categories' => 'Klassys',
+'categories' => 'Classys',
 
 # Special:DeletedContributions
 'sp-deletedcontributions-contribs' => 'kevrohow',
@@ -805,16 +818,16 @@ Gwrewgh assaya rag-gorra agas govyn gans ''all:'' rag hwilas en pub teller (a-ba
 # Special:LinkSearch
 'linksearch' => 'Hwilas kevrednow a-ves',
 'linksearch-ok' => 'Hwilas',
-'linksearch-line' => '$1 yw kevrednys dhyworth $2',
+'linksearch-line' => '$1 yw kevrennys dhyworth $2',
 
 # Special:ListUsers
 'listusers-submit' => 'Diskwedhes',
 
 # Special:Log/newusers
-'newuserlogpage' => 'Kovnoten formya akontow devnydhyer',
+'newuserlogpage' => 'Covnoten formya acontow devnydhyer',
 
 # Special:ListGroupRights
-'listgrouprights-members' => '(rol an eseli)',
+'listgrouprights-members' => '(rol esely)',
 
 # E-mail user
 'emailuser' => 'E-bostya an devnydhyer-ma',
@@ -832,7 +845,8 @@ Gwrewgh assaya rag-gorra agas govyn gans ''all:'' rag hwilas en pub teller (a-ba
 'watch' => 'Golyas',
 'watchthispage' => 'Golyas an folen-ma',
 'unwatch' => 'Diswolyas',
-'watchlist-details' => 'Yma {{PLURAL:$1|$1 folen|$1 folen}} war agas rol golyas, heb ynkludya folednow kows.',
+'watchlist-details' => 'Yma {{PLURAL:$1|$1 folen}} war agas rol golyas, marnas folennow kescows.',
+'wlshowlast' => 'Disqwedhes an $1 our $2 dedh $3 diwettha',
 'watchlist-options' => 'Etholyow an rol golyas',
 
 # Displayed when you click the "watch" button and it is in the process of watching
@@ -843,11 +857,11 @@ Gwrewgh assaya rag-gorra agas govyn gans ''all:'' rag hwilas en pub teller (a-ba
 'deletepage' => 'Dilea an folen',
 'delete-confirm' => 'Dilea "$1"',
 'delete-legend' => 'Dilea',
-'actioncomplete' => 'Kowlwres yw an gwrians',
+'actioncomplete' => 'Cowlwres yw an gwrians',
 'actionfailed' => 'An gwrians a fyllas',
 'deletedtext' => '"$1" yw dileys.
 Gwelowgh $2 rag kovadh a dhileansow a-dhiwedhes.',
-'dellogpage' => 'Kovnoten dhilea',
+'dellogpage' => 'Covnoten dhilea',
 'deletecomment' => 'Cheson:',
 'deleteotherreason' => 'Cheson aral/keworansel:',
 'deletereasonotherlist' => 'Cheson aral',
@@ -856,7 +870,7 @@ Gwelowgh $2 rag kovadh a dhileansow a-dhiwedhes.',
 'rollbacklink' => 'restorya',
 
 # Protect
-'protectlogpage' => 'Kovnoten difres',
+'protectlogpage' => 'Covnoten dhifres',
 'protectedarticle' => 'a dhifresas "[[$1]]"',
 'protectcomment' => 'Cheson:',
 'protectexpiry' => 'Ow tiwedha:',
@@ -875,7 +889,7 @@ Gwelowgh $2 rag kovadh a dhileansow a-dhiwedhes.',
 'restriction-upload' => 'Ughkarga',
 
 # Undelete
-'undeletelink' => 'gweles/daswul',
+'undeletelink' => 'gweles/restorya',
 'undeleteviewlink' => 'gweles',
 'undelete-search-submit' => 'Hwilas',
 'undelete-show-file-submit' => 'Ya',
@@ -883,42 +897,43 @@ Gwelowgh $2 rag kovadh a dhileansow a-dhiwedhes.',
 # Namespace form on various pages
 'namespace' => 'Spas-hanow:',
 'invert' => 'Trebuchya an dowisyans',
-'blanknamespace' => '(Pedn)',
+'blanknamespace' => '(Penn)',
 
 # Contributions
 'contributions' => 'Kevrohow an devnydhyer',
 'contributions-title' => 'Kevrohow $1',
-'mycontris' => 'Ow hevrohow',
+'mycontris' => 'Kevrohow',
 'contribsub2' => 'Rag $1 ($2)',
 'uctop' => '(gwartha)',
-'month' => 'A-dhia mis (ha moy a-varr):',
-'year' => 'A-dhia bledhen (ha moy a-varr):',
-
-'sp-contributions-newbies' => 'Diskwedhes hepken kevrohow akontow nowyth',
-'sp-contributions-blocklog' => 'kovnoten lettya',
-'sp-contributions-uploads' => 'ughkargansow',
-'sp-contributions-logs' => 'kovnotednow',
-'sp-contributions-talk' => 'keskows',
-'sp-contributions-search' => 'Hwilas kevrohow',
+'month' => 'Dhyworth an mis (ha moy a-varr):',
+'year' => 'Dhyworth an vledhen (ha moy a-varr):',
+
+'sp-contributions-newbies' => 'Disqwedhes yn unnik kevrohow acontow noweth',
+'sp-contributions-blocklog' => 'covnoten lettya',
+'sp-contributions-uploads' => 'ughcargansow',
+'sp-contributions-logs' => 'covnotennow',
+'sp-contributions-talk' => 'kescows',
+'sp-contributions-search' => 'Whilas kevrohow',
 'sp-contributions-username' => 'Trigva IP po hanow-usyer:',
-'sp-contributions-submit' => 'Hwilas',
+'sp-contributions-toponly' => 'Disqwedhes yn unnik chanjyow yw amendyansow diwettha',
+'sp-contributions-submit' => 'Whilas',
 
 # What links here
-'whatlinkshere' => "Pandr'eus ow kevredna obma",
-'whatlinkshere-title' => 'Folednow ow kevredna bys "$1"',
+'whatlinkshere' => "Pandr'eus ow kevrenna omma",
+'whatlinkshere-title' => 'Folennow ow kevrenna dhe "$1"',
 'whatlinkshere-page' => 'Folen:',
-'linkshere' => "Yma'n folednow a sew ow kevredna dhe '''[[:$1]]''':",
-'nolinkshere' => "Nyns eus folen ow kevredna dhe '''[[:$1]]'''.",
+'linkshere' => "Yma'n folennow a sew ow kevrenna dhe '''[[:$1]]''':",
+'nolinkshere' => "Nyns eus folen ow kevrenna dhe '''[[:$1]]'''.",
 'isredirect' => 'folen daswedyans',
-'istemplate' => 'treuskludyans',
+'istemplate' => 'treuscludyans',
 'isimage' => 'kevren an restren',
 'whatlinkshere-prev' => '{{PLURAL:$1|kens|kens $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|nessa|nessa $1}}',
-'whatlinkshere-links' => '← kevrednow',
+'whatlinkshere-links' => '← kevrennow',
 'whatlinkshere-hideredirs' => '$1 daswedyansow',
-'whatlinkshere-hidetrans' => '$1 treuskludyans',
-'whatlinkshere-hidelinks' => '$1 kevrednow',
-'whatlinkshere-hideimages' => '$1 kevrednow imach',
+'whatlinkshere-hidetrans' => '$1 treuscludyans',
+'whatlinkshere-hidelinks' => '$1 kevrennow',
+'whatlinkshere-hideimages' => '$1 kevrennow restren',
 'whatlinkshere-filters' => 'Sidhlow',
 
 # Block/unblock
@@ -926,6 +941,7 @@ Gwelowgh $2 rag kovadh a dhileansow a-dhiwedhes.',
 'ipadressorusername' => 'Trigva IP po hanow-usyer:',
 'ipbreason' => 'Cheson:',
 'ipbreasonotherlist' => 'Cheson aral',
+'ipboptions' => '2 our:2 hours,1 dhedh:1 day,3 dedh:3 days,1 seythen:1 week,2 seythen:2 weeks,1 vis:1 month,3 mis:3 months,6 mis:6 months,1 vledhen:1 year,heb diwedh:infinite',
 'ipb-blocklist-contribs' => 'Kevrohow rag $1',
 'ipblocklist' => 'Devnydhyoryon lettyes',
 'ipblocklist-submit' => 'Hwilas',
@@ -933,8 +949,8 @@ Gwelowgh $2 rag kovadh a dhileansow a-dhiwedhes.',
 'unblocklink' => 'dislettya',
 'change-blocklink' => 'chanjya an lettyans',
 'contribslink' => 'kevrohow',
-'blocklogpage' => 'Kovnoten lettya',
-'blocklogentry' => 'a lettyas [[$1]], $2 $3 y/hy termyn diwedh',
+'blocklogpage' => 'Covnoten lettya',
+'blocklogentry' => 'a lettyas [[$1]], bys dhe $2 $3',
 'unblocklogentry' => 'dislettyas $1',
 'block-log-flags-anononly' => 'devnydhyoryon dihanow hepken',
 'block-log-flags-nocreate' => 'dialosegys yw formya akontow',
@@ -950,21 +966,22 @@ Gwelowgh $2 rag kovadh a dhileansow a-dhiwedhes.',
 'pagemovedsub' => 'An gwarnyans a sowenas',
 'movepage-moved' => '\'\'\'Gwayes yw "$1" war-tu "$2"\'\'\'',
 'movedto' => 'gwayes war-tu',
-'movelogpage' => 'Kovnoten gwaya',
+'movelogpage' => 'Covnoten waya',
 'movereason' => 'Cheson:',
 'revertmove' => 'trebuchya',
 
 # Export
-'export' => 'Esperthi folednow',
+'export' => 'Esperthy folennow',
 'export-addcat' => 'Keworra',
 'export-addns' => 'Keworra',
 
 # Namespace 8 related
 'allmessagesname' => 'Hanow',
+'allmessagesdefault' => 'Text messach defowt',
 
 # Thumbnails
 'thumbnail-more' => 'Brashe',
-'thumbnail_error' => 'Gwall ow formya skeusednik: $1',
+'thumbnail_error' => 'Gwall ow formya skeusennik: $1',
 
 # Special:Import
 'import' => 'Ymperthi folednow',
@@ -977,58 +994,58 @@ Gwelowgh $2 rag kovadh a dhileansow a-dhiwedhes.',
 'tooltip-pt-userpage' => 'Agas folen dhevnydhyer',
 'tooltip-pt-mytalk' => 'Agas folen gows',
 'tooltip-pt-preferences' => 'Agas dowisyansow',
-'tooltip-pt-watchlist' => 'Rol a folednow erowgh hwi ow kolyas',
+'tooltip-pt-watchlist' => 'Rol a folennow esowgh why ow colyas rag chanjyow',
 'tooltip-pt-mycontris' => "Rol a'gas kevrohow",
-'tooltip-pt-login' => 'Gwell via dhewgh mar tewgh hag omgelmi, mes nyns yw besi',
-'tooltip-pt-logout' => 'Digelmi',
-'tooltip-ca-talk' => "Dadhelva a-dro dhe'n dalgh",
-'tooltip-ca-edit' => 'Hwi a ell chanjya an folen-ma. Gwrewgh usya an boton ragwel kens gwitha mar pleg.',
-'tooltip-ca-addsection' => 'Dalleth radn nowyth',
-'tooltip-ca-viewsource' => 'Alhwedhys yw an folen-ma.
-Y hellir gweles hy fednfenten.',
-'tooltip-ca-history' => 'Amendyansow koth an folen-ma',
+'tooltip-pt-login' => 'Gwell via dhywgh mar tewgh why hag omgelmy, mes nyns yw besy',
+'tooltip-pt-logout' => 'Digelmy',
+'tooltip-ca-talk' => "Dadhel a-dro dhe'n folen",
+'tooltip-ca-edit' => 'Why a yll chanjya an folen-ma. Gwrewgh usya an boton Ragweles kens gwitha mar pleg.',
+'tooltip-ca-addsection' => 'Dalleth rann nowyth',
+'tooltip-ca-viewsource' => 'Alwhedhys yw an folen-ma.
+Why a yll gweles hy fennfenten.',
+'tooltip-ca-history' => "Amendyansow coth a'n folen-ma",
 'tooltip-ca-protect' => 'Difres an folen-ma',
 'tooltip-ca-delete' => 'Dilea an folen-ma',
 'tooltip-ca-move' => 'Gwaya an folen-ma',
 'tooltip-ca-watch' => "Keworra an folen-ma dhe'gas rol golyas",
 'tooltip-ca-unwatch' => 'Dilea an folen-ma dhyworth agas rol golyas',
-'tooltip-search' => 'Hwilas en {{SITENAME}}',
+'tooltip-search' => 'Whilas yn {{SITENAME}}',
 'tooltip-search-go' => 'Mos dhe folen gans an keth hanow-ma, mars eus',
-'tooltip-search-fulltext' => "Hwilas an tekst-ma e'n folednow",
+'tooltip-search-fulltext' => "Whilas an text-ma y'n folennow",
 'tooltip-p-logo' => "Mos dhe'n folen dre",
 'tooltip-n-mainpage' => "Mos dhe'n folen dre",
 'tooltip-n-mainpage-description' => "Mos dhe'n folen dre",
-'tooltip-n-portal' => "A-dro dhe'n ragdres, an peth a ellowgh hwi gwul, ple kavos taklow",
-'tooltip-n-currentevents' => 'Kavos kedhlow a-dro dhe dharvosow a-lebmyn',
-'tooltip-n-recentchanges' => "Rol an chanjyow a-dhiwedhes e'n wiki",
-'tooltip-n-randompage' => 'Karga folen dre jons',
+'tooltip-n-portal' => "A-dro dhe'n ragdres, an peth a yllowgh why gwul, ple dhe gavos taclow",
+'tooltip-n-currentevents' => 'Cavos kedhlow a-dro dhe dharvosow a-lemmyn',
+'tooltip-n-recentchanges' => "Rol a janjyow a-dhiwedhes y'n wiki",
+'tooltip-n-randompage' => 'Carga folen dre jons',
 'tooltip-n-help' => 'Gweres',
-'tooltip-t-whatlinkshere' => 'Rol a bub folen wiki ow kevredna bys obma',
-'tooltip-t-recentchangeslinked' => 'Chanjyow a-dhiwedhes en folednow eus kevrednys dhyworth an folen-ma',
+'tooltip-t-whatlinkshere' => 'Rol a bub folen wiki ow kevrenna dhe omma',
+'tooltip-t-recentchangeslinked' => 'Chanjyow a-dhiwedhes yn folennow eus kevrennys dhyworth an folen-ma',
 'tooltip-feed-rss' => 'Feed RSS rag an folen-ma',
 'tooltip-feed-atom' => 'Feed Atom rag an folen-ma',
 'tooltip-t-contributions' => 'Gweles rol a gevrohow an devnydhyer-ma',
 'tooltip-t-emailuser' => "Danvon e-bost dhe'n devnydhyer-ma",
-'tooltip-t-upload' => 'Ughkarga restrednow',
-'tooltip-t-specialpages' => 'Rol a geniver folen arbednek',
+'tooltip-t-upload' => 'Ughcarga restrennow',
+'tooltip-t-specialpages' => 'Rol a geniver folen arbennek',
 'tooltip-t-print' => "Versyon pryntyadow a'n folen-ma",
 'tooltip-t-permalink' => "Kevren fast dhe'n amendyans-ma a'n folen",
 'tooltip-ca-nstab-main' => 'Gweles an folen',
 'tooltip-ca-nstab-user' => 'Gweles an folen devnydhyer',
-'tooltip-ca-nstab-special' => 'Folen arbednek yw hebma; ny ellowgh hwi chanjya an folen hy honen.',
+'tooltip-ca-nstab-special' => 'Folen arbennek yw hemma; ny yllowgh why chanjya an folen hy honan.',
 'tooltip-ca-nstab-project' => 'Gweles folen an wiki',
 'tooltip-ca-nstab-image' => 'Gweles folen an restren',
-'tooltip-ca-nstab-template' => 'Gweles an skantlyn',
-'tooltip-ca-nstab-category' => 'Gweles folen an klass',
-'tooltip-minoredit' => 'Merkya hebma avel chanj bian',
+'tooltip-ca-nstab-template' => 'Gweles an scantlyn',
+'tooltip-ca-nstab-category' => 'Gweles folen an class',
+'tooltip-minoredit' => 'Merkya hemma avel chanj bian',
 'tooltip-save' => 'Gwitha agas chanjyow',
-'tooltip-preview' => 'Ragweles agas chanjyow; gwrewgh usya hebma kens gwitha mar pleg!',
-'tooltip-diff' => "Diskwedhes an chanjyow eus gwres genowgh dhe'n tekst",
-'tooltip-compareselectedversions' => 'Gweles an dyffransow ynter dew janjyow dowisyes an folen-ma',
+'tooltip-preview' => 'Ragweles agas chanjyow; gwrewgh usya hemma kens gwitha mar pleg!',
+'tooltip-diff' => "Disqwedhes an chanjyow eus gwres genowgh dhe'n text",
+'tooltip-compareselectedversions' => "Gweles an dyffransow ynter an dhew janjyow dowisyes a'n folen-ma",
 'tooltip-watch' => "Keworra an folen-ma dhe'gas rol golyas",
-'tooltip-rollback' => '"Restorya" a wra trebuchya chanjyow gwres dhe\'n folen-ma gans an kens devnydhyer dre udn glyck',
-'tooltip-undo' => '"Diswul" a wra trebuchya an chanj-ma hag egeri an furvlen chanjya e\'n modh ragweles. Cheson a ell bos keworrys e\'n derivas kot.',
-'tooltip-summary' => 'Entrowgh derivas kot',
+'tooltip-rollback' => '"Restorya" a wra trebuchya chanjyow gwres dhe\'n folen-ma gans an diwettha devnydhyer yn unn glyck',
+'tooltip-undo' => '"Diswul" a wra trebuchya an chanj-ma hag egery an furvlen janjya y\'n modh ragweles. Y hyllir keworra acheson y\'n derivas cot.',
+'tooltip-summary' => 'Entrowgh derivas cot',
 
 # Attribution
 'siteuser' => 'devnydhyer {{SITENAME}} $1',
@@ -1036,21 +1053,21 @@ Y hellir gweles hy fednfenten.',
 'siteusers' => '{{PLURAL:$2|devnydhyer|devnydhyoryon}} {{SITENAME}} $1',
 
 # Browsing diffs
-'previousdiff' => '← Chanj kottha',
-'nextdiff' => 'Chanj nowyttha →',
+'previousdiff' => '← Chanj cottha',
+'nextdiff' => 'Chanj nowettha →',
 
 # Media information
-'file-info-size' => '$1 × $2 piksel, mens an restren: $3, sort MIME : $4',
-'file-nohires' => 'Nyns eus klerder uhella kavadow.',
-'svg-long-desc' => 'Restren SVG, $1 × $2 piksel en hanow, mens an restren: $3',
-'show-big-image' => 'Klerder leun',
+'file-info-size' => '$1 × $2 pixel, mens an restren: $3, sort MIME: $4',
+'file-nohires' => 'Nyns eus clerder uhella cavadow.',
+'svg-long-desc' => 'Restren SVG, $1 × $2 pixel yn hanow, mens an restren: $3',
+'show-big-image' => 'Clerder leun',
 
 # Special:NewFiles
 'ilsubmit' => 'Hwilas',
 
 # Metadata
 'metadata' => 'Metadata',
-'metadata-help' => "Yma dhe'n restren-ma kedhlow keworansel, dres lycklod keworrys dhyworth an kamera besyel po an skanyer usys rag hy gwruthyl po hy besya. Mar veu an folen chanjys dhyworth hy studh gwredhek, possybyl yw na veu radn a'n manylyon-ma nowedhys.",
+'metadata-help' => "Yma dhe'n restren-ma kedhlow keworansel, dres lycklod keworrys dhyworth an camera besyel po an scanyer usys rag hy gwruthyl po hy besya. Mars yw chanjys an restren dhyworth hy studh gwredhek, possybyl yw na veu nebes manylyon nowedhys.",
 'metadata-expand' => 'Diskwedhes manylyon ystydnys',
 'metadata-collapse' => 'Kudha manylyon ystydnys',
 
@@ -1102,7 +1119,7 @@ Y hellir gweles hy fednfenten.',
 'fileduplicatesearch-submit' => 'Hwilas',
 
 # Special:SpecialPages
-'specialpages' => 'Folednow arbednek',
+'specialpages' => 'Folennow arbennek',
 
 # Special:Tags
 'tags-edit' => 'chanjya',
index abcaeab..e0e7ba7 100644 (file)
@@ -495,9 +495,9 @@ Ratio data est "\'\'$2\'\'".',
 
 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.",
-'welcomecreation' => '== Salve, $1! ==
-Ratio tua iam creata est.
-Noli oblivisci [[Special:Preferences|praeferentias tuas]] apud {{grammar:accusative|{{SITENAME}}}} mutare.',
+'welcomeuser' => 'Salve, $1!',
+'welcomecreation-msg' => 'Ratio tua creata est.
+Noli oblivisci [[Special:Preferences|praeferentias]] tuas apud {{grammar:accusative|{{SITENAME}}}} mutare.',
 'yourname' => 'Nomen usoris:',
 'yourpassword' => 'Tessera:',
 'yourpasswordagain' => 'Tesseram adfirmare:',
@@ -1494,11 +1494,7 @@ Si paginam ex indice paginarum custoditarum removere vis, imprime \"decustodire\
 'unwatching' => 'Decustodiens...',
 
 'enotif_reset' => 'Indicare omnes paginas visitatas',
-'enotif_newpagetext' => 'Haec pagina nova est.',
 'enotif_impersonal_salutation' => 'Usor {{grammar:genitive|{{SITENAME}}}}',
-'changed' => 'mutata',
-'created' => 'creata',
-'enotif_subject' => 'Pagina {{grammar:genitive|{{SITENAME}}}} $PAGETITLE ab $PAGEEDITOR $CHANGEDORCREATED est',
 'enotif_lastdiff' => 'Vide $1 ad hanc recensionem inspiciendum.',
 'enotif_anon_editor' => 'usor ignotus $1',
 'enotif_body' => '
@@ -1907,7 +1903,7 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Pagina usoris tua',
 'tooltip-pt-mytalk' => 'Pagina disputationis tua',
-'tooltip-pt-preferences' => 'Praeferentiae meae',
+'tooltip-pt-preferences' => 'Praeferentiae tuae',
 'tooltip-pt-watchlist' => 'Paginae quae custodis ut eorum mutationes facilius vides',
 'tooltip-pt-mycontris' => 'Index conlationum tuarum',
 'tooltip-pt-login' => 'Te conventum aperire hortamur, non autem requisitum',
@@ -2375,9 +2371,9 @@ Quaesumus, adfirma ut iterum hanc paginam crees.",
 'logentry-move-move-noredirect' => '$1 movit paginam $3 ad $4 sine redirectione',
 'logentry-move-move_redir' => '$1 movit paginam $3 ad $4 praeter redirectionem',
 'logentry-move-move_redir-noredirect' => '$1 movit paginam $3 ad $4 praeter redirectionem sine redirectione',
-'logentry-newusers-newusers' => '$1 creavit rationem usoris',
-'logentry-newusers-create' => '$1 creavit rationem usoris',
-'logentry-newusers-create2' => '$1 creavit rationem usoris $3',
+'logentry-newusers-newusers' => 'Ratio usoris $1 creata est',
+'logentry-newusers-create' => 'Ratio usoris $1 creata est',
+'logentry-newusers-create2' => 'Ratio usoris $3 creata est ab usore $1',
 'logentry-newusers-autocreate' => 'Ratio $1 automatice creata est',
 'newuserlog-byemail' => 'tessera missa litteris electronicis',
 
index 2942112..1271d20 100644 (file)
@@ -347,6 +347,7 @@ $messages = array(
 'namespaces' => 'Nummraim',
 'variants' => 'Varianten',
 
+'navigation-heading' => 'Navigatiounsmenü',
 'errorpagetitle' => 'Feeler',
 'returnto' => 'Zréck op $1.',
 'tagline' => 'Vu {{SITENAME}}',
@@ -588,9 +589,9 @@ $2',
 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.",
-'welcomecreation' => '== Wëllkomm, $1! ==
-Äre Kont gouf kreéiert.
-Denkt drun, Är [[Special:Preferences|{{SITENAME}}-Astellungen]] unzepassen.',
+'welcomeuser' => 'Wëllkomm $1!',
+'welcomecreation-msg' => "Äre Benotzerkont gouf ugeluecht.
+Vergiesst net fir Är [[Special:Preferences|{{SITENAME}} Astellungen]] z'änneren",
 'yourname' => 'Benotzernumm:',
 'yourpassword' => 'Passwuert:',
 'yourpasswordagain' => 'Passwuert nach eemol antippen:',
@@ -721,6 +722,12 @@ Vläicht hutt Dir Äert Passwuert scho geännert oder en neit temporäert Passwu
 '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-emailtitle' => 'Detailer vum Benotzerkont op{{SITENAME}}',
+'passwordreset-emailtext-ip' => "Iergendee mat der IP-Adress $1, wahrscheinlech Dir selwer, huet eng Erënnerung fir Är Benotzerkonteninformatiounen op {{SITENAME}} gefrot ($4). {{PLURAL:$3|De Benotzerkont ass|D'Benutzerkonte si}} mat dëser E-Mail-Adress verbonn:
+
+$2
+
+{{PLURAL:$3|Dëst temporärt Passwuert leeft|Dës temporär Passwierder lafe}} bannent {{PLURAL:$5|engem Dag|$5 Deeg}} of.
+Dir sollt Iech aloggen an een neit Passwuert festleeën. Wann een Aneren déi Ufro gemaach huet oder Dir Iech erëm un Äert Passwuert erënnere kënnt an et net ännere wëllt, kënnt Dir dës Noriicht ignoréieren an Äert aalt Passwuert weider benotzen.",
 'passwordreset-emailelement' => 'Benotzernumm: $1
 Temporärt Passwuert: $2',
 'passwordreset-emailsent' => 'Eng Erënnerungs-Mail gouf geschéckt.',
@@ -2178,11 +2185,7 @@ Wann dir dës Säit net méi iwwerwaache wëllt, klickt op \"Net méi iwwerwaach
 
 'enotif_mailer' => '{{SITENAME}} E-Mail-Informatiounssystem',
 'enotif_reset' => 'All Säiten als besicht markéieren',
-'enotif_newpagetext' => 'Dëst ass eng nei Säit.',
 'enotif_impersonal_salutation' => '{{SITENAME}}-Benotzer',
-'changed' => 'geännert',
-'created' => 'gemaach',
-'enotif_subject' => '[{{SITENAME}}] D\'Säit "$PAGETITLE" gouf vum $PAGEEDITOR $CHANGEDORCREATED',
 'enotif_lastvisited' => 'All Ännerungen op ee Bléck: $1',
 'enotif_lastdiff' => 'Kuckt $1 fir dës Ännerung.',
 'enotif_anon_editor' => 'Anonyme Benotzer $1',
@@ -3611,6 +3614,7 @@ Dir kënnt och [[Special:EditWatchlist|de Standard Editeur benotzen]].",
 'version-license' => 'Lizenz',
 'version-poweredby-credits' => "Dës Wiki fonctionnéiert mat '''[//www.mediawiki.org/ MediaWiki]''', Copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'anerer',
+'version-credits-summary' => "Mir soen dëse Persoune 'Merci' fir hir Mataarbecht u [[Special:Version|MediaWiki]].",
 'version-license-info' => "MediaWiki ass fräi Software; Dir kënnt se weiderginn an/oder s'änneren ënnert de Bedingungen vun der GNU-General Public License esou wéi se vun der Free Softare Foundation publizéiert ass; entweder ënner der Versioun 2 vun der Lizenz, oder (no Ärem Choix) enger spéiderer Versioun.
 
 MediaWiki gëtt verdeelt an der Hoffnung datt se nëtzlech ass, awer OUNI IERGENDENG GARANTIE; ouni eng implizit Garantie vu Commercialisatioun oder Eegnung fir e bestëmmte Gebrauch. Kuckt d'GPU Geral Public License fir méi Informatiounen.
@@ -3747,9 +3751,9 @@ Den ugefrote Fichier gëtt direkt gewise respektiv mat enger verbonner Applikati
 'logentry-move-move_redir-noredirect' => "$1 huet d'Säit $3 op $4 geréckelt an dobäi gouf eng Viruleedung iwwerschriwwen an et et gouf keng nei Viruleedung ugeluecht",
 'logentry-patrol-patrol' => "$1 huet d'Versioun $4 vun der Säit $3 als nogekuckt markéiert",
 'logentry-patrol-patrol-auto' => "$1 huet d'Versioun $4 vun der Säit $3 automatesch als nogekuckt markéiert",
-'logentry-newusers-newusers' => '$1  huet e Benotzerkont ugeluecht',
-'logentry-newusers-create' => '$1  huet e Benotzerkont ugeluecht',
-'logentry-newusers-create2' => '$1 huet ee Benotzerkont ugeluecht $3',
+'logentry-newusers-newusers' => 'De Benotzerkont $1 gouf ugeluecht',
+'logentry-newusers-create' => 'De Benotzerkont $1 gouf ugeluecht',
+'logentry-newusers-create2' => 'De Benotzerkont $3 gouf vum $1 ugeluecht',
 'logentry-newusers-autocreate' => 'De Benotzerkont $1 gouf automatesch ugeluecht',
 'newuserlog-byemail' => "d'Passwuert gouf per E-Mail geschéckt",
 
@@ -3825,6 +3829,4 @@ Soss kënnt Dir den einfache Formulär hei drënner benotzen. Är Bemierkung gë
 'duration-centuries' => '$1 {{PLURAL:$1|Joerhonnert|Joerhonnerten}}',
 'duration-millennia' => '$1 {{PLURAL:$1|Millenaire|Millenairen}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'Diskussioun',
 );
index 783d0f8..355931c 100644 (file)
@@ -420,9 +420,9 @@ $messages = array(
 Квевай [[Special:Search/{{PAGENAME}}| и тlвар алай ччин]] муькуь ччинра жугъуриз,
 <span class="plainlinks"> [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналрин талукь тир кхьей затIар жугъуриз],
 ва я [{{fullurl:{{FULLPAGENAME}}|action=edit}} и тlвар алай ччин туькIуьриз жеда] </span>.',
-'noarticletext-nopermission' => 'Iseatda china kxhin avach.
-Kwevay [[Special:Search/{{PAGENAME}}| i twar alay chin алай]] mukiu chinra jaghuriz ak\'ni
-<span class="plainlinks"> [{{fullurl: {{# Special:Log}} | page = {{FULLPAGENAMEE}}}} jurnalrin taluq\' tir kxhey zathar jaghuriz] jeda.',
+'noarticletext-nopermission' => 'Исятда и  ччина са текстни авач.
+Квевай [[Special:Search/{{PAGENAME}}| и тӀвар алай ччин]] муькуь ччинра жугъуриз ва я
+<span class="plainlinks"> [{{fullurl: {{# Special:Log}} | page = {{FULLPAGENAMEE}}}} журналрин талукь тир кхьей затӀар жугъуриз] жеда.',
 'blocked-notice-logextract' => 'И уртах алайчIава блокарнава.
 Агъадихъ блокарунин журналдикай эхиримжи кхьинар къалурнава:',
 'previewnote' => "'''Рикlел хуьх хьи, им анжах сифтедин килигун я.'''  
@@ -952,9 +952,6 @@ Kwevay [[Special:Search/{{PAGENAME}}| i twar alay chin алай]] mukiu chinra j
 'watching' => 'Килигун...',
 'unwatching' => 'Амма клигнай',
 
-'changed' => 'дегишнава',
-'created' => 'туькIуьрнава',
-
 # Delete
 'deletepage' => 'Къакъудун хъувун',
 'confirm' => 'Тестикьун',
@@ -1055,7 +1052,7 @@ Kwevay [[Special:Search/{{PAGENAME}}| i twar alay chin алай]] mukiu chinra j
 'whatlinkshere-hideredirs' => '$1 рахкъурунар',
 'whatlinkshere-hidetrans' => '$1 кутунар',
 'whatlinkshere-hidelinks' => '$1 элячlунар',
-'whatlinkshere-hideimages' => '$1 шикилриз элячIунар',
+'whatlinkshere-hideimages' => '$1 шикилриз элячӀунар',
 'whatlinkshere-filters' => 'Куьзунагар',
 
 # Block/unblock
index f0c2282..cd3c801 100644 (file)
@@ -559,9 +559,6 @@ d\'n Opgegaeve raej vanne sloetendje admin waar "\'\'$3\'\'".',
 
 De kèns {{SITENAME}} noe anoniem (mit vermeljing van IP-adres) gebroeke, of <span class='plainlinks'>[$1 opnuuj aanmelde]</span> ónger dezelfde of 'ne angere naam.
 Mäögelik waert nog 'n deil pagina's getuind esofs te nog aangemeld bis pès te de cache van diene browser laeg maaks.",
-'welcomecreation' => '== Wèlkóm, $1! ==
-Diene gebroeker is noe vaerdig.
-Vergaet neet dien [[Special:Preferences|veurkäöre veur {{SITENAME}}]] aan te passe.',
 'yourname' => 'Diene gebroekersnaam',
 'yourpassword' => 'Die wachwaord',
 'yourpasswordagain' => 'Wachwaord opnuuj intype',
@@ -2136,11 +2133,7 @@ Toekomstige verangeringe aan dees pagina en de biebehurende euverlèkpagina weur
 
 'enotif_mailer' => '{{SITENAME}} notificatiemail',
 'enotif_reset' => "Mèrk alle bezochde pazjena's aan.",
-'enotif_newpagetext' => "DIt is 'n nuuj pazjena.",
 'enotif_impersonal_salutation' => '{{SITENAME}} gebroeker',
-'changed' => 'verangerd',
-'created' => 'aangemaak',
-'enotif_subject' => 'De {{SITENAME}}pagina $PAGETITLE is $CHANGEDORCREATED door $PAGEEDITOR',
 'enotif_lastvisited' => 'Zuug $1 veur al verangeringe saer dien lèste bezeuk.',
 'enotif_lastdiff' => 'Zuug $1 om deze wieziging te zeen.',
 'enotif_anon_editor' => 'anonieme gebroeker $1',
index bd0421f..9a48f44 100644 (file)
@@ -421,8 +421,6 @@ Per piasè, fa raport a 'n'[[Special:ListUsers/sysop|aministradur]], cun la nota
 
 A pudé andà inanz a druvà la {{SITENAME}} in manera anònima, o a pudé <span class='plainlinks'>[$1 cunètev anmò]</span> cun l'istess suranomm o cun un suranomm diferent.
 Tegné cünt che certi paginn pödass che i seguiten a vedess tant 'me se a füdìssuv anmò cuness, fin quand che hii nò vudaa 'l ''cache'' del voster browser.",
-'welcomecreation' => "== Benvegnüü, $1! ==
-'L to cünt l'è staa pruntaa. Desmenteghet mía de mudifegà i to [[Special:Preferences|preferenz de {{SITENAME}}]].",
 'yourname' => 'El to suranóm:',
 'yourpassword' => "Parola d'urdin",
 'yourpasswordagain' => "Mett dent ammò la parola d'urdin",
@@ -974,9 +972,6 @@ i vegnarann segnalaa chichinscì e la pagina la se vedarà cun caràter '''grev'
 'watching' => "Giuntà ai pagin da ten d'ögg...",
 'unwatching' => "Eliminà dai pagin da ten d'ögg...",
 
-'enotif_newpagetext' => "Chesta-chí l'è una pàgina növa.",
-'changed' => 'cambiaa',
-'enotif_subject' => 'La pagina $PAGETITLE de {{SITENAME}} l\'è stada $CHANGEDORCREATED da $PAGEEDITOR',
 'enotif_lastvisited' => 'Varda $1 per vedè tüt i mudifegh da la tua ültema vìsita.',
 'enotif_body' => 'Cara $WATCHINGUSERNAME,
 
index 4334317..d1914ab 100644 (file)
@@ -315,7 +315,7 @@ $messages = array(
 'newwindow' => '(atsidaro naujame lange)',
 'cancel' => 'Atšaukti',
 'moredotdotdot' => 'Daugiau...',
-'mypage' => 'Mano puslapis',
+'mypage' => 'Naudotojo puslapis',
 'mytalk' => 'Mano aptarimas',
 'anontalk' => 'Šio IP aptarimas',
 'navigation' => 'Naršymas',
@@ -589,9 +589,6 @@ Ją užrakinęs administratorius pateikė šį paaiškinimą: "$3".',
 
 Galite toliau naudoti {{SITENAME}} anonimiškai arba <span class='plainlinks'>[$1 prisijunkite]</span> iš naujo tuo pačiu ar kitu naudotoju.
 Pastaba: kai kuriuose puslapiuose ir toliau gali rodyti, kad esate prisijungęs iki tol, kol išvalysite savo naršyklės podėlį.",
-'welcomecreation' => '== Sveiki, $1! ==
-
-Jūsų paskyra buvo sukurta. Nepamirškite pakeisti savo [[Special:Preferences|{{SITENAME}} nustatymų]].',
 'yourname' => 'Naudotojo vardas:',
 'yourpassword' => 'Slaptažodis:',
 'yourpasswordagain' => 'Pakartokite slaptažodį:',
@@ -2148,11 +2145,7 @@ taip pat bus '''paryškinti''' [[Special:RecentChanges|naujausių keitimų sąra
 
 'enotif_mailer' => '{{SITENAME}} Pranešimų sistema',
 'enotif_reset' => 'Pažymėti visus puslapius kaip aplankytus',
-'enotif_newpagetext' => 'Tai naujas puslapis.',
 'enotif_impersonal_salutation' => '{{SITENAME}} naudotojau',
-'changed' => 'pakeitė',
-'created' => 'sukurė',
-'enotif_subject' => '{{SITENAME}} projekte $PAGEEDITOR $CHANGEDORCREATED $PAGETITLE',
 'enotif_lastvisited' => 'Užeikite į $1, jei norite matyti pakeitimus nuo paskutiniojo apsilankymo.',
 'enotif_lastdiff' => 'Užeikite į $1, jei norite pamatyti šį pakeitimą.',
 'enotif_anon_editor' => 'anoniminis naudotojas $1',
index 0638a5d..52ba89f 100644 (file)
@@ -395,9 +395,6 @@ $2',
 'logouttext' => "'''I chhuak fel ta.'''
 Inziaklût kher lovin {{SITENAME}} hi i hmang chhunzawm thei ang, a nih loh vëk pawhin hmangtu hming pangngai emaw, a hming dang emawin <span class='plainlinks'>[$1 lût leh]</span> thei ang.
 I fangtu cache i thenfai hma chu phêk ţhenkhat intar lang a awm reng mai thei, i la  chhuak lo emaw tih mai tùrin.",
-'welcomecreation' => '==Kan lo lawm a che, $1!==
-I siangchan siam a ni ta.
-I [[Special:Preferences|{{SITENAME}}duhdàn]] siam danglam theihnghilh suh ang che.',
 'yourname' => 'Hmangtuhming:',
 'yourpassword' => 'Thurûk:',
 'yourpasswordagain' => 'Thurûk ziak nawn leh rawh le:',
@@ -1419,11 +1416,7 @@ Hetah hian [[Special:UnusedCategories|pawl hman lohho]] pholan tel a ni lo.
 'watchlist-options' => 'Ralvèn duhdàn',
 
 'enotif_reset' => 'Phêk zawng zawng tlawh tawh vek angin chhinchhiah rawh.',
-'enotif_newpagetext' => 'Hei hi phêk thar a ni.',
 'enotif_impersonal_salutation' => '{{SITENAME}} hmangtu',
-'changed' => 'tihdanglam a ni ta',
-'created' => 'siam a ni ta',
-'enotif_subject' => '{{SITENAME}} phêk $PAGETITLE tih hi $CHANGEDORCREATED,  $PAGEEDITOR bultum a ni.',
 'enotif_lastvisited' => 'I tlawh hnuhnùn ber hnu lama tihdanglam zawng zawng en i duh chuan $1 en rawh.',
 'enotif_lastdiff' => 'Hë tihdanglamna hi en tùrin $1 thlír rawh.',
 'enotif_anon_editor' => 'hmangtu hriat loh $1',
index f8e3bc9..a694a09 100644 (file)
@@ -430,9 +430,6 @@ Norādītais iemesls bija ''$2''.",
 
 Vari turpināt to izmantot anonīmi, vari <span class='plainlinks'>[$1 atgriezties]</span> kā cits lietotājs vai varbūt tas pats.
 Ņem vērā, ka arī pēc iziešanas, dažas lapas var tikt parādītas tā, it kā tu vēl būtu iekšā, līdz tiks iztīrīta pārlūka kešatmiņa.",
-'welcomecreation' => '== Laipni lūdzam, $1! ==
-
-Tavs lietotāja konts ir izveidots. Neaizmirsti, ka ir iespējams mainīt [[Special:Preferences|{{grammar:ģenitīvs|{{SITENAME}}}} izmantošanas izvēles]].',
 'yourname' => 'Tavs lietotājvārds',
 'yourpassword' => 'Tava parole:',
 'yourpasswordagain' => 'Atkārto paroli',
@@ -1812,11 +1809,7 @@ Ja vēlāk pārdomāsi un nevēlēsies vairs uzraudzīt šo lapu, klikšķini uz
 
 'enotif_mailer' => '{{SITENAME}} paziņojumu izsūtīšana',
 'enotif_reset' => 'Atzīmēt visas lapas kā apskatītas',
-'enotif_newpagetext' => 'Šī ir jauna lapa.',
 'enotif_impersonal_salutation' => '{{SITENAME}} lietotājs',
-'changed' => 'izmainīja',
-'created' => 'izveidoja',
-'enotif_subject' => '{{grammar:ģenitīvs|{{SITENAME}}}} lapu $PAGETITLE $CHANGEDORCREATED lietotājs $PAGEEDITOR',
 'enotif_lastvisited' => '$1 lai apskatītos visas izmaiņas kopš tava pēdējā apmeklējuma.',
 'enotif_lastdiff' => '$1 lai apskatītos šo izmaiņu.',
 'enotif_anon_editor' => 'anonīms lietotājs $1',
index 8e80197..b2d5ade 100644 (file)
@@ -11,6 +11,7 @@
  * @author Justincheng12345
  * @author Omnipaedista
  * @author Shinjiman
+ * @author Simon Shek
  * @author Super Wang
  */
 
@@ -522,8 +523,6 @@ $2',
 
 子可匿名還覽{{SITENAME}},或<span class='plainlinks'>[$1 復登]</span>同簿、異簿。
 未清謄本,覽器文舊,且慎之。",
-'welcomecreation' => '== $1大駕光臨! ==
-子簿增矣,敬更[[Special:Preferences|簿註]]。',
 'yourname' => '名',
 'yourpassword' => '符節',
 'yourpasswordagain' => '復核節',
@@ -954,7 +953,7 @@ $1",
 'difference-title' => '$1各本之异',
 'difference-title-multipage' => '$1、$2之异',
 'difference-multipage' => '(辨頁)',
-'lineno' => '列$1:',
+'lineno' => '第$1行:',
 'compareselectedversions' => '辨二擇',
 'showhideselectedversions' => '示/藏之擇',
 'editundo' => '悔',
@@ -1836,11 +1835,7 @@ $1',
 
 'enotif_mailer' => '{{SITENAME}}報',
 'enotif_reset' => '令為盡閱',
-'enotif_newpagetext' => '新灶',
 'enotif_impersonal_salutation' => '貴客',
-'changed' => '易',
-'created' => '撰',
-'enotif_subject' => '{{SITENAME}}簿{$PAGEEDITOR}{$CHANGEDORCREATED}{$PAGETITLE}',
 'enotif_lastvisited' => '自子出簿,有易見$1。',
 'enotif_lastdiff' => '欲閱此易,見$1。',
 'enotif_anon_editor' => '過客$1',
index 98788e6..100f6c7 100644 (file)
@@ -423,9 +423,6 @@ $2',
 
 अहाँ {{अन्तर्जाल}} प्रयोग अनाम भऽ कऽ सकै छी, वा अहाँ <span class='plainlinks'>[$1 log in again]</span> वएह आकि कोनो आन प्रयोक्ताक रूपमे सेहू प्रयोक कऽ सकै छी।
 ई मोन राखू जे किछु पन्ना एना देखा पड़ि सकैए जेना अहाँ अखनो सम्प्रवेशित होइ, जावत अहाँ अपन गवेषकक उपस्मृति मेटा नै दै छी।",
-'welcomecreation' => '== स्वागत अछि, $1! ==
-अहाँक खाता खुजि गेल अछि।
-अपन [[Special:Preferences|{{अन्तर्जाल}} preferences]] बदलब नै बिसरू।',
 'yourname' => 'प्रयोक्ता:',
 'yourpassword' => 'कूटशब्द:',
 'yourpasswordagain' => 'कूटशब्द फेरसँ टाइप करू:',
@@ -1968,11 +1965,7 @@ $1',
 
 'enotif_mailer' => '{{जालस्थल}} सूचना पत्रक',
 'enotif_reset' => 'सभ पन्नाकेँ देखल चिन्हित करू',
-'enotif_newpagetext' => 'ई एकटा नव पन्ना छी।',
 'enotif_impersonal_salutation' => '{{अन्तर्जाल}} प्रयोक्ता',
-'changed' => 'बदलल गेल',
-'created' => 'बनाएल गेल',
-'enotif_subject' => '{{अन्तर्जाल}} पन्ना $PAGETITLE भेल $CHANGEDORCREATED द्वारा $PAGEEDITOR',
 'enotif_lastvisited' => 'देखू $1 अपन अन्तिम बेर अएलाक बादक परिवर्तन लेल।',
 'enotif_lastdiff' => 'ऐ परिवर्तनकेँ देखबा लेल $1 देखू।',
 'enotif_anon_editor' => 'गुप्त प्रयोक्ता $1',
index f7b70be..4ed2b93 100644 (file)
@@ -548,9 +548,6 @@ $2',
 
 Тондейть ули кода ащемс {{SITENAME}}са апак содак эли <span class='plainlinks'>[$1 сувак тага весть]</span> кода сяка эли иля тиись.
 Кой-кона лопатне илядсть стамкс кодамкс синь ульсть тонь лисемада инголе мъзярс тонь интернет полатксце изь аруяфтов эсь ванфневи файлхнень эзда.",
-'welcomecreation' => '== Сувак, $1! ==
-
-Тонь сёрматфтомаце анок. Тят юкста полафнемс эсь [[Special:Preferences|{{SITENAME}} латцематне]].',
 'yourname' => 'Тиить лемоц:',
 'yourpassword' => 'Сувама валце:',
 'yourpasswordagain' => 'Сёрматк сувама валце омбоцекс:',
@@ -1754,11 +1751,7 @@ $3 макссь туфталсь - ''$2''",
 
 'enotif_mailer' => '{{SITENAME}} Пачфнематнень Кучи',
 'enotif_reset' => 'Путомс тяшкс сембе суваф лопатнень лангс',
-'enotif_newpagetext' => 'Тя од лопа.',
 'enotif_impersonal_salutation' => '{{SITENAME}} тиись',
-'changed' => 'полафтсь',
-'created' => 'тиф',
-'enotif_subject' => '{{SITENAME}} page $PAGETITLE has been $CHANGEDORCREATED by $PAGEEDITOR',
 'enotif_lastvisited' => 'Ванк $1 тонь мекольце самдот меле сембе поланематнень няфтеманкса.',
 'enotif_lastdiff' => 'Ванк $1 тя полафнемать няфтеманкса.',
 'enotif_anon_editor' => 'лемфтома тиись $1',
index 59cdde3..918cb26 100644 (file)
@@ -616,10 +616,6 @@ Ny antony napetraka dia : « ''$2'' ».",
 
 Mbola afaka mampiasa ny {{SITENAME}} ianao na dia ef anivoaka aza, na afaka <span class='plainlinks'>[$1 miverina mihiditra]</span> ianao ambanin'ny anaranao na anaram-pikambana hafa.
 Fantaro fa ny endriky ny pejy sasany dia mety mitovy amin'ny endrika nahitanao azy tamin' ianao mbola niditra tato, ho toy izany ny endri-pejy raha tsy nofafanao ny cache.",
-'welcomecreation' => '== Tonga soa, $1! ==
-
-Voaforona soa aman-tsara ny kaontinao.
-Aza hadino ny manova ny [[Special:Preferences|safidinao]]',
 'yourname' => 'Solonanarana',
 'yourpassword' => 'Tenimiafina',
 'yourpasswordagain' => 'Avereno ampidirina eto ny tenimiafina',
@@ -2187,11 +2183,7 @@ Aoriana, raha irinao ny hanaisotra azy ao amin'ny pejy arahanao maso, dia tsindr
 
 'enotif_mailer' => "Fomba fampandrenesana amin'ny alalan'ny imailaka an'i {{SITENAME}}",
 'enotif_reset' => 'Marihana ho efa voavaky ny pejy rehetra',
-'enotif_newpagetext' => 'Pejy vaovao ity pejy ity.',
 'enotif_impersonal_salutation' => "Mpikamban'i {{SITENAME}}",
-'changed' => 'voaova',
-'created' => 'voaforona',
-'enotif_subject' => '$CHANGEDORCREATED $PAGEEDITOR ny pejy $PAGETITLE tao amin\'ny {{SITENAME}}',
 'enotif_lastvisited' => "Jereo eto $1 ny niova rehetra hatramin'ny fitsidihanao farany.",
 'enotif_lastdiff' => 'Jereo $1 mba ahitana ireo fanovana ireo.',
 'enotif_anon_editor' => 'mpikambana tsy nisoratra anarana $1',
@@ -3307,7 +3299,11 @@ Aseho amin'ny tena habeny ny sary aseho, ny hafa dia alefa miaraka amin'ny rindr
 'logentry-suppress-delete' => "nofafan'i $1 ny pejy $3",
 'revdelete-restricted' => "nametraka fanerena ho an'ny mpandrindra",
 'revdelete-unrestricted' => "fanerena nesorina tamin'ny mpandrindra",
-'logentry-newusers-create' => 'nanokatra ny kaontiny i $1',
-'newuserlog-byemail' => 'tenimiafina nalefa imailaka',
+'logentry-move-move' => "nanova ny anaran'i $3 ho $4 i $1",
+'logentry-newusers-newusers' => 'Noforonina ny kaontim-pikambana $1',
+'logentry-newusers-create' => 'Noforonina ny kaontim-pikambana $1',
+'logentry-newusers-create2' => "Noforonin'i $1 ny kaomtim-pikambana $3",
+'logentry-newusers-autocreate' => 'Noforonina ho azy ny kaontim-pikambana $&',
+'newuserlog-byemail' => "tenimiafina nalefa tamin'ny imailaka",
 
 );
index ebda528..ca0b296 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Bennylin
+ * @author Iwan Novirion
  * @author Luthfi94
  * @author Naval Scene
  * @author Rahmatdenas
@@ -25,7 +26,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Suruakkan suntingan nan lah dijago di parubahan tabaru',
 'tog-newpageshidepatrolled' => 'Suruakkan halaman nan lah dijago dari senarai halaman baru',
 'tog-extendwatchlist' => 'Kambangkan senarai pantauan untuak malihek sado parubahan, indak nan baru se',
-'tog-usenewrc' => 'Gunoan parubahan terkini tingkek lanjut (paralu JavaScript)',
+'tog-usenewrc' => 'Kalompok parubahan dek laman dalam parubahan tabaru jo daftar pantauan (paralu JavaScript)',
 'tog-numberheadings' => 'Agiah nomor judua sacaro otomatis',
 'tog-showtoolbar' => 'Tampilkan bilah suntiang (paralu JavaScript)',
 'tog-editondblclick' => 'Suntiang laman jo klik ganda (JavaScript)',
@@ -33,20 +34,20 @@ $messages = array(
 'tog-editsectiononrightclick' => 'Hiduikan bagian panyuntiangan jo mangklik kanan pado judul bagian (JavaScript)',
 'tog-showtoc' => 'Caliakkan dafta isi (untuak laman nan mampunyoi labiah dari 3 subbagian)',
 'tog-rememberpassword' => 'Kana log masuak denai di peramban ko (salamo $1 {{PLURAL:$1|hari|hari}})',
-'tog-watchcreations' => 'Tambahkan halaman nan den buek ka daftar pantauan',
-'tog-watchdefault' => 'Tambahkan halaman nan den suntiang ka daftar pantauan',
-'tog-watchmoves' => 'Tambahkan halaman nan den pindahkan ka daftar pantauan',
-'tog-watchdeletion' => 'Tambahkan halaman nan den hapuih ka daftar pantauan',
+'tog-watchcreations' => 'Tambahkan laman nan den buek jo gambar nan den unggah ka daftar pantauan',
+'tog-watchdefault' => 'Tambahkan laman jo gambar nan den suntiang ka daftar pantauan',
+'tog-watchmoves' => 'Tambahkan laman jo gambar nan den pindah ka daftar pantauan',
+'tog-watchdeletion' => 'Tambahkan laman jo gambar nan den hapuih ka daftar pantauan',
 'tog-minordefault' => 'Tandoi sadoalah suntiangan sabagai suntiangan ketek sacaro baku',
 'tog-previewontop' => 'Tampilkan pratonton sabalun kotak suntiang',
 'tog-previewonfirst' => 'Caliakkan pratayang pado suntiangan patamo',
 'tog-nocache' => 'Matikan panyinggahan laman peramban',
-'tog-enotifwatchlistpages' => 'Kirim e-mail kalau laman nan den pantau lah barubah',
+'tog-enotifwatchlistpages' => 'Kirimkan surel kalau laman atau gambar pado daftar pantauan lah barubah',
 'tog-enotifusertalkpages' => 'E-mail ambo jiko laman barundiang denai lah barubah',
-'tog-enotifminoredits' => 'Kirim e-mail walau hanyo ado parubahan saketek',
+'tog-enotifminoredits' => 'Kirimkan surel juo untuk saketek suntingan pado laman jo gambar',
 'tog-enotifrevealaddr' => 'Cogokan alamaik e-mail den pado e-mail notifikasi',
 'tog-shownumberswatching' => 'Tujuakkan jumlah pamantau',
-'tog-oldsig' => 'Pratayang tando tangan:',
+'tog-oldsig' => 'Tando tangan kini:',
 'tog-fancysig' => 'Palakuan tando tangan sabagai teks wiki (tanpa suatu tautan otomatis)',
 'tog-externaleditor' => 'Gunokan editor eksternal sacaro bawaan (untuak nan ahli sajo, kabutuahan pangaturan khusus pado komputer Sanak [//www.mediawiki.org/wiki/Manual:External_editors Informasi labiah lanjuik.].)',
 'tog-externaldiff' => 'Gunokan diff eksternal sacaro bawaan (untuak nan ahli sajo, kabutuahan pangaturan khusus pado komputer Sanak [//www.mediawiki.org/wiki/Manual:External_editors Informasi labiah lanjuik.].)',
@@ -66,7 +67,7 @@ $messages = array(
 
 'underline-always' => 'Taruih',
 'underline-never' => 'Indak pernah',
-'underline-default' => 'Bawaan panjalajah web',
+'underline-default' => 'Kulik atau panjalajah web bawaan',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Gaya tulisan komputer pado kotak panyuntiangan:',
@@ -83,18 +84,18 @@ $messages = array(
 'thursday' => 'Kamih',
 'friday' => 'Jumek',
 'saturday' => 'Sabtu',
-'sun' => 'Aha',
+'sun' => 'Min',
 'mon' => 'Sin',
 'tue' => 'Sal',
 'wed' => 'Rab',
 'thu' => 'Kam',
 'fri' => 'Jum',
-'sat' => 'Sab',
+'sat' => 'Sat',
 'january' => 'Januari',
-'february' => 'Februari',
+'february' => 'Pebruari',
 'march' => 'Maret',
 'april' => 'April',
-'may_long' => 'Mei',
+'may_long' => 'Mai',
 'june' => 'Juni',
 'july' => 'Juli',
 'august' => 'Agustus',
@@ -103,10 +104,10 @@ $messages = array(
 'november' => 'November',
 'december' => 'Desember',
 'january-gen' => 'Januari',
-'february-gen' => 'Februari',
+'february-gen' => 'Pebruari',
 'march-gen' => 'Maret',
 'april-gen' => 'April',
-'may-gen' => 'Mei',
+'may-gen' => 'Mai',
 'june-gen' => 'Juni',
 'july-gen' => 'Juli',
 'august-gen' => 'Agustus',
@@ -115,10 +116,10 @@ $messages = array(
 'november-gen' => 'November',
 'december-gen' => 'Desember',
 'jan' => 'Jan',
-'feb' => 'Feb',
+'feb' => 'Peb',
 'mar' => 'Mar',
 'apr' => 'Apr',
-'may' => 'Mei',
+'may' => 'Mai',
 'jun' => 'Jun',
 'jul' => 'Jul',
 'aug' => 'Agu',
@@ -141,7 +142,7 @@ $messages = array(
 'category-article-count-limited' => 'Kategori iko mamiliki {{PLURAL:$1|ciek laman|$1 laman}} barikuik.',
 'category-file-count' => '{{PLURAL:$2|Kategori iko hanyo mamiliki ciek laman barikuik.|Kategori iko mamiliki {{PLURAL:$1|laman|$1 laman}} barikuik, dari total $2.}}',
 'category-file-count-limited' => 'Kategori iko mamiliki {{PLURAL:$1|laman|$1 laman}} barikuik.',
-'listingcontinuesabbrev' => 'cont.',
+'listingcontinuesabbrev' => 'lanjuik',
 'index-category' => 'Laman nan diindeks',
 'noindex-category' => 'Laman nan indak diindeks',
 'broken-file-category' => 'Laman jo gambar rusak',
@@ -151,10 +152,10 @@ $messages = array(
 'newwindow' => '(buka di jendela baru)',
 'cancel' => 'Batalkan',
 'moredotdotdot' => 'Lainnyo...',
-'mypage' => 'Laman ambo',
-'mytalk' => 'Ota denai',
+'mypage' => 'Laman',
+'mytalk' => 'Maota',
 'anontalk' => 'Ota IP iko',
-'navigation' => 'Navigasi',
+'navigation' => 'Pinteh',
 'and' => '&#32;jo',
 
 # Cologne Blue skin
@@ -173,17 +174,18 @@ $messages = array(
 'vector-action-move' => 'Pindahkan',
 'vector-action-protect' => 'Lindungi',
 'vector-action-undelete' => 'Pambatalan panghapusan',
-'vector-action-unprotect' => 'Palinduangan',
-'vector-simplesearch-preference' => 'Aktifkan pancarian saran nan disampurnokan (hanyo kulik Vector)',
+'vector-action-unprotect' => 'Tuka palinduangan',
+'vector-simplesearch-preference' => 'Aktifkan kotak pancarian sadarano (hanyo kulik Vector)',
 'vector-view-create' => 'Buek',
 'vector-view-edit' => 'Suntiang',
-'vector-view-history' => 'Caliak riwayat nan lalu',
+'vector-view-history' => 'Caliak riwayaik nan lalu',
 'vector-view-view' => 'Baco',
 'vector-view-viewsource' => 'Caliak sumber',
 'actions' => 'Tindakan',
 'namespaces' => 'Ruang namo:',
 'variants' => 'Variasi:',
 
+'navigation-heading' => 'Menu navigasi',
 'errorpagetitle' => 'Kesalahan',
 'returnto' => 'Baliak ka $1',
 'tagline' => 'Dari {{SITENAME}}',
@@ -193,10 +195,10 @@ $messages = array(
 'go' => 'Tuju',
 'searcharticle' => 'Tuju',
 'history' => 'Riwayat halaman',
-'history_short' => 'Riwayat',
+'history_short' => 'Riwayaik',
 'updatedmarker' => 'diubah sajak kunjuangan tarakhir ambo',
 'printableversion' => 'Versi cetak',
-'permalink' => 'Pranala permanen',
+'permalink' => 'Pranala parmanen',
 'print' => 'Cetak',
 'view' => 'Tampilkan',
 'edit' => 'Suntiang',
@@ -210,17 +212,17 @@ $messages = array(
 'protect' => 'Lindungi',
 'protect_change' => 'ubah',
 'protectthispage' => 'Lindungi laman iko',
-'unprotect' => 'Palinduangan',
-'unprotectthispage' => 'Bukak palindungan laman iko',
+'unprotect' => 'Tuka palinduangan',
+'unprotectthispage' => 'Tuka palindungan laman ko',
 'newpage' => 'Laman baru',
 'talkpage' => 'Musyawarahkan laman ko',
 'talkpagelinktext' => 'Maota',
 'specialpage' => 'Laman istimewa',
-'personaltools' => 'Peralatan pribadi',
+'personaltools' => 'Pakakeh paribadi',
 'postcomment' => 'Bagian baru',
 'articlepage' => 'Liek isi laman',
-'talk' => 'Ota',
-'views' => 'Tampilan',
+'talk' => 'Rundiang',
+'views' => 'Caliak',
 'toolbox' => 'Kotak pakakeh',
 'userpage' => 'Liek laman pangguno',
 'projectpage' => 'Caliak laman proyek',
@@ -233,11 +235,11 @@ $messages = array(
 'otherlanguages' => 'Dalam baso lain',
 'redirectedfrom' => '(Dialiahkan dari $1)',
 'redirectpagesub' => 'Laman pengalihan',
-'lastmodifiedat' => 'Laman ko tarakhir diubah pado $1, maso $2.',
+'lastmodifiedat' => 'Laman ko tarakhir diubah pado $2, $1.',
 'viewcount' => 'Laman iko alah diakses sabanyak {{PLURAL:$1|ciek kali|$1 kali}}.<br />',
 'protectedpage' => 'Laman nan dilindungi',
 'jumpto' => 'Lompek ka:',
-'jumptonavigation' => 'navigasi',
+'jumptonavigation' => 'pinteh',
 'jumptosearch' => 'cari',
 'view-pool-error' => 'Maaf, server sadang sibuak pado kini ko.
 Talalu banyak pangguno barusaho mancaliak laman iko.
@@ -249,24 +251,24 @@ $1',
 'pool-errorunknown' => 'Kasalahan nan indak dikatahui',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
-'aboutsite' => 'Tentang {{SITENAME}}',
-'aboutpage' => 'Project:Perihal',
+'aboutsite' => 'Tantang {{SITENAME}}',
+'aboutpage' => 'Project:Tantang',
 'copyright' => 'Kandungan tasadio dalam $1',
 'copyrightpage' => '{{ns:project}}:Hak cipta',
-'currentevents' => 'Paristiwa takini',
-'currentevents-url' => 'Project:Paristiwa takini',
-'disclaimers' => 'Penyangkalan',
-'disclaimerpage' => 'Project:Penyangkalan umum',
+'currentevents' => 'Kajadian kini ko',
+'currentevents-url' => 'Project:Kajadian kini ko',
+'disclaimers' => 'Sanggah',
+'disclaimerpage' => 'Project:Sanggahan umum',
 'edithelp' => 'Bantuan suntingan',
 'edithelppage' => 'Help:Suntingan',
-'helppage' => 'Help:Kandungan',
-'mainpage' => 'Halaman Utamo',
-'mainpage-description' => 'Laman Utamo',
+'helppage' => 'Help:Takadia',
+'mainpage' => 'Laman Utamo',
+'mainpage-description' => 'Laman utamo',
 'policy-url' => 'Project:Kabijakan',
 'portal' => 'Portal komunitas',
 'portal-url' => 'Project:Portal komunitas',
-'privacy' => 'Kebijakan privasi',
-'privacypage' => 'Project:Kebijakan privasi',
+'privacy' => 'Kecipehan privasi',
+'privacypage' => 'Project:Kecipehan privasi',
 
 'badaccess' => 'Kesalahan hak akses',
 'badaccess-group0' => 'Sanak indak diizinkan untuak malakukan tindakan nan Sanak minta.',
@@ -276,20 +278,22 @@ $1',
 'versionrequiredtext' => 'MediaWiki versi $1 dibutuahkan untuak manggunokan laman ijo. Caliak [[Special:Version|laman versi]]',
 
 'ok' => 'OK',
-'retrievedfrom' => 'Diperoleh dari "$1"',
+'retrievedfrom' => 'Didapek dari "$1"',
 'youhavenewmessages' => 'Awak punyo $1 ($2).',
 'newmessageslink' => 'pasan baru',
 'newmessagesdifflink' => 'parubahan terakhir',
 'youhavenewmessagesfromusers' => 'Sanak mandapek $1 dari {{PLURAL:$3|another user|$3 users}} ($2)',
 'youhavenewmessagesmanyusers' => 'Sanak mandapek $1 dari banyak pangguno ($2)',
+'newmessageslinkplural' => '{{PLURAL:$1|sabuah pasan baru|pasan baru}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|parubahan}} taakhia',
 'youhavenewmessagesmulti' => 'Awak ang mandapek pasan baru pado $1',
 'editsection' => 'suntiang',
 'editold' => 'suntiang',
-'viewsourceold' => 'Caliak sumber',
+'viewsourceold' => 'caliak sumber',
 'editlink' => 'suntiang',
-'viewsourcelink' => 'Lihek sumber',
+'viewsourcelink' => 'caliak sumber',
 'editsectionhint' => 'Suntiang bagian: $1',
-'toc' => 'Kandungan',
+'toc' => 'Daftar isi',
 'showtoc' => 'tampilkan',
 'hidetoc' => 'suruakkan',
 'collapsible-collapse' => 'Ketekan',
@@ -301,15 +305,15 @@ $1',
 'feed-invalid' => 'Tipe pamintaan umpan indak tapek.',
 'feed-unavailable' => 'Umpan sindikasi indak tasadio',
 'site-rss-feed' => '$1 RSS Umpan',
-'site-atom-feed' => '$1 umpan Atom',
+'site-atom-feed' => 'Umpan Atom $1',
 'page-rss-feed' => 'Umpan RSS "$1"',
 'page-atom-feed' => '"$1" umpan Atom',
-'red-link-title' => '$1 (halaman alun babuek)',
+'red-link-title' => '$1 (laman indak ado)',
 'sort-descending' => 'Urutkan manurun',
 'sort-ascending' => 'Urutkan manaik',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Halaman',
+'nstab-main' => 'Laman',
 'nstab-user' => 'Laman pangguno',
 'nstab-media' => 'Laman Media',
 'nstab-special' => 'Laman istimewa',
@@ -331,12 +335,12 @@ Dafta laman istimewa nan sah dapek dicaliak di [[Special:SpecialPages|{{int:spec
 # General errors
 'error' => 'Kasalahan',
 'databaseerror' => 'Kasalahan basis data',
-'dberrortext' => 'Ado kasalahan sintaks pado pamintaan basis data.
-Kasalahan ini mungkin manandokan adonyo sabuah \'\'bug\'\' dalam parangkek lunak.
+'dberrortext' => 'Kasalahan sintaks pado pamintaan basis data lah tajadi.
+Iko mungkin manandokan adonyo bug pado parangkek lunak.
 Pamintaan basis data nan tarakhir adalah:
-<blockquote><tt>$1</tt></blockquote>
-dari dalam fungsi "<tt>$2</tt>".
-Basis data manghasilkan kasalahan "<tt>$3: $4</tt>".',
+<blockquote><code>$1</code></blockquote>
+dari dalam fungsi "<code>$2</code>".
+Basis data manghasilkan kasalahan "<samp>$3: $4</samp>".',
 'dberrortextcl' => 'Ado kasalahan sintaks pado pamintaan basis data.
 Pamintaan basis data nan terakhir adalah:
 "$1"
@@ -346,12 +350,12 @@ Basis data manghasilkan kasalahan "$3: $4".',
 'readonly' => 'Basis data dikunci',
 'enterlockreason' => 'Masuakkan alasan panguncian, tamasuak pakiraan bilo kunci akan dibuka',
 'readonlytext' => 'Basis data sadang dikunci tahadok masuakan baru. Panguruih nan malakukan panguncian mamberikan panjalehan sabagai berikut: <p>$1',
-'missing-article' => 'Basis data indak dapek manamukan teks dari laman yang seharusnyo ado, namo "$1" $2.
+'missing-article' => 'Basis data indak dapek manamukan teks dari laman nan saharuihnyo ado, yaitu "$1" $2.
 
-Hal ko biasonyo disebabkan dek pranala usang ka riwayat terdahulu dari laman yang lah dihapuih.
+Hal ko biasonyo disababkan dek pranala usang ka pabaikkan tadahulu laman nan alah dihapuih.
 
-Jiko bukan iko penyebabnyo, awak mungkin lah manamukan sabuah bug dalam perangkat lunak ko.
-Sila laporkan ka [[Special:ListUsers/sysop|Pengurus]], dengan manandokan alamat URL nan dituju.',
+Jikok bukan iko panyababnyo, Sanak mungkin alah manamukan sabuah bug dalam pakakeh lunak.
+Silakan laporkan hal iko ka [[Special:ListUsers/sysop|Pangurus]], dangan manyabuikkan alamaik URL nan dituju.',
 'missingarticle-rev' => '(revisi#: $1)',
 'missingarticle-diff' => '(Bedo: $1, $2)',
 'readonly_lag' => 'Basis data alah dikunci otomatis salagi basis data sakunder malakukan sinkronisasi jo basis data utamo',
@@ -371,20 +375,23 @@ Sila laporkan ka [[Special:ListUsers/sysop|Pengurus]], dengan manandokan alamat
 'cannotdelete' => 'Laman atau berkas "$1" indak dapek dihapuih.
 Mungkin alah dihapuih jo urang lain.',
 'cannotdelete-title' => 'Indak bisa mangapuih halaman "$1"',
+'delete-hook-aborted' => 'Pengapusan batal jo hook.
+Indak ado keterangan.',
 'badtitle' => 'Judul indak sah',
 'badtitletext' => 'Permintaan judul laman indak sah, kosong, atau antarbaso atau antarwiki yang salah sambuang. Mungkin juo ado kandungan karakter yang indak buliah digunoan untuak judul.',
-'perfcached' => 'Data barikuik iko diambiak dari singgahan dan mungkin indak data nan baharu. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Data barikut iko diambiak dari singgahan dan tarakhir dipabaharui pado $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'Data barikuik ko diambiak dari singgahan dan mungkin indak data nan baru. Nan tabanyak dari {{PLURAL:$1|suatu hasil dari|$1 hasilnyo}} ado di singgahan.',
+'perfcachedts' => 'Data barikuik ko singgahan, dan tarakhir diperbarui $1. Nan tabanyak dari {{PLURAL:$1|suatu hasil dari|$1 hasilnyo}} ado di singgahan.',
 'querypage-no-updates' => 'Pamutakhiran dari laman iko sadang dimatian. Data nan ado di siko saat iko indak akan dimuaik ulang.',
 'wrong_wfQuery_params' => 'Parameter salah ka wfQuery()<br />Fungsi: $1<br />Pamintaan: $2',
-'viewsource' => 'Lihek sumber',
+'viewsource' => 'Caliak sumber',
 'viewsource-title' => 'Caliak sumber untuak $1',
 'actionthrottled' => 'Tindakan dibatasi',
 'actionthrottledtext' => 'Anda dibatasi untuak malakuan tindakan iko talalu banyak dalam waktu singkek. Sila mancubo laik satalah bara menit.',
 'protectedpagetext' => 'Laman iko alah dikunci untuak manghindari panyuntiangan.',
 'viewsourcetext' => 'Sanak dapek malihek atau manyalin sumber laman iko:',
 'viewyourtext' => 'Sanak bisa mancaliak dan mangopi sumber untuak "editan sanak" ka halaman iko',
-'protectedinterface' => 'Laman iko barisi teks antarmuko untuak digunoan oleh parangkaik lunak dan alah dikunci untuak manghindari kasalahan.',
+'protectedinterface' => 'Laman iko barisi teks antarmuko untuak digunoan oleh parangkaik lunak di wiki iko sajo, dan alah dikunci untuak manghindari kasalahan. 
+Untuak manambah atau mangubah tarjemahan di sadonyo wiki, tolong digunoan [//translatewiki.net/ translatewiki.net], yaitu proyek lokalisasi dari MediaWiki.',
 'editinginterface' => "'''Paringatan:''' Sanak manyuntiang suatu laman nan digunoan untuak manyediakan teks antarmuko untuak parangkaik lunak situs iko. Parubahan teks iko akan mampangaruhi tampilan pado antarmuko pangguno untuak pangguno lain.
 Untuak tarjamahan, harap gunokan [//translatewiki.net/wiki/Main_Page?setlang=id translatewiki.net], proyek palokalan MediaWiki.",
 'sqlhidden' => '(Pamintaan SQL disuruakkan)',
@@ -399,6 +406,7 @@ Alasan nan diberikan adolah ''$2''.",
 'filereadonlyerror' => 'Indak bisa mangubah berkas "$1" karano repositori berkas "$2" dalam moda baco-sajo.
 
 Pangurus nan manguncinyo manawarkan penjelasan: "$3"',
+'invalidtitle-knownnamespace' => '↓Judul nan indak sah jo ruangnamo "$2" dan teks "$3"',
 'exception-nologin' => 'Indak log masuak',
 'exception-nologin-text' => 'Halaman ko hanyo bisa disuntiang dek pangguno badaftar.',
 
@@ -412,9 +420,8 @@ Pangurus nan manguncinyo manawarkan penjelasan: "$3"',
 
 Sanak dapek taruih manggunoan {{SITENAME}} sacaro anonim, atau Sanak dapek <span class='plainlinks'>[$1 masuak log liak]</span> sabagai pangguno nan samo atau pangguno nan lain.
 Parhatian bahawa bara laman mungkin masih taruih manunjukkan bahawa Sanak masih masuak log sampai Sanak mambarasihan singgahan panjelajah web Sanak.",
-'welcomecreation' => '== Salamaik datang, $1! ==
-
-Akun Sanak alah dibuek. Jan lupo maatur konfigurasi [[Special:Preferences|preferensi {{SITENAME}}]] Sanak.',
+'welcomeuser' => 'Salamaik datang, $1!',
+'welcomecreation-msg' => 'Akun Sanak alah dibuek. Jan lupo maatur konfigurasi [[Special:Preferences|preferensi {{SITENAME}}]] Sanak.',
 'yourname' => 'Namo pangguno:',
 'yourpassword' => 'Kato sandi:',
 'yourpasswordagain' => 'Ulang baliak kato sandi:',
@@ -662,12 +669,11 @@ Jiko awak indak sangajo sampai ka laman ko, klik tombol '''back''' pado penjelaj
 'anontalkpagetext' => "----''Iko adolah laman pambicaraan saurang pangguno anonim nan alun mambuek akun atau indak manggunoannyo.
 Jadi, kami tapaso harus mamakai alamat IP nan basangkutan untuak maidentifikasikannyo.
 Jikok Sanak adolah saurang pangguno anonim dan marasa mandapekkan komentar-komentar nan indak relevan nan ditujuan langsung kapado Sanak, sila [[Special:UserLogin/signup|mambuek akun]] atau [[Special:UserLogin|masuak log]] untuak mahindari karancuan jo pangguno anonim lainnya di lain wakatu.''",
-'noarticletext' => 'Kini ko indak ado teks dalam laman ko.
-Awak dapek [[Special:Search/{{PAGENAME}}|mancari judul laman ko]] pado laman lain,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mancari log nan bakaik],
-atau [{{fullurl:{{FULLPAGENAME}}|action=edit}} suntiang laman ko]</span>.',
+'noarticletext' => 'Kini ko indak ada teks di laman iko.
+Sanak dapek [[Special:Search/{{PAGENAME}}|malakukan pancarian untuak judul laman iko]] di laman-laman lain, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mancari log takaik], atau [{{fullurl:{{FULLPAGENAME}}|action=edit}} manyuntiang laman iko]</span>.',
 'noarticletext-nopermission' => 'Kini ko indak ado teks dalam laman iko.
-Sanak dapek [[Special:Search/{{PAGENAME}}|malakukan pancaharian untuak judul laman iko]] di laman-laman lain, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mancahari log takaik], atau [{{fullurl:{{FULLPAGENAME}}|action=edit}} manyuntiang laman iko]</span>.',
+
+Sanak dapek [[Special:Search/{{PAGENAME}}|malakukan pancahari untuak judul laman iko]] di laman lain, atau <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mancahari log takaik] </span>, tapi Sanak indak punyo izin untuak mambuek laman iko.',
 'missing-revision' => 'Revisi $1 di halaman ko nan banamo "{{PAGENAME}}" indak ado.
 
 Hal iko biasonyo disababkan dek pranala sajarah nan alah kadaluarsa ka halaman ko nan alah dihapuih.
@@ -692,8 +698,8 @@ Pratayang iko alun disimpan!'''",
 'userinvalidcssjstitle' => "'''Paringatan:''' Kulik \"\$1\" indak ditamuan. Harap diingek bahawa laman .css dan .js manggunokan huruf kecil, contoh {{ns:user}}:Foo/vector.css dan bukannyo {{ns:user}}:Foo/Vector.css.",
 'updated' => '(Dipabaharui)',
 'note' => "'''Catatan:'''",
-'previewnote' => "'''Iko hanyo tampilan pratonton.'''
-Parubahan yang awak lakukan alun disimpan!",
+'previewnote' => "'''Ingek bahasonyo iko hanyo pratonton'''
+Parubahan Sanak alun disimpan!",
 'continue-editing' => 'Pai ka area mangedit.',
 'previewconflict' => 'Pratayang iko mancaminan teks pado bagian ateh kotak suntiangan teks sabagaimano akan taliek bilo Sanak manyimpannyo.',
 'session_fail_preview' => "'''Maaf, kami ndak dapek mangolah suntiangan Sanak akibat tahapuihnyo data sesi.
@@ -766,11 +772,20 @@ Barikuik adolah log panghapuihan dan pamindahan dari laman iko:",
 'moveddeleted-notice' => 'Laman iko alah dihapuih.
 Sabagai referensi, barikuik adolah log panghapusan dan pamindahan laman iko.',
 'log-fulllog' => 'Liek saluruah log',
+'edit-gone-missing' => 'Indak bisa mamperbarui halaman.
+Mungkin alah dihapuih.',
 'edit-conflict' => 'Konflik suntingan.',
 'edit-no-change' => 'Suntiangan sanak ditulak, karano indak ado parubahan nan tajadi ka teks.',
 'edit-already-exists' => 'Indak bisa mambuek halaman baru.
 Alah ado.',
 'defaultmessagetext' => 'Teks pasan default.',
+'invalid-content-data' => 'Data kanduangan indak valid.',
+
+# Content models
+'content-model-wikitext' => 'Teks wiki',
+'content-model-text' => 'Teks kosong',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
 
 # Parser/template warnings
 'post-expand-template-inclusion-warning' => "'''Peringatan:''' Ukuran templat talalu gadang.
@@ -783,9 +798,9 @@ Uraian-uraian tu alah diabaikan.',
 # History pages
 'viewpagelogs' => 'Lihek log untuak laman ko',
 'currentrev-asof' => 'Revisi terkini pado $1',
-'revisionasof' => 'Revisi per $1',
+'revisionasof' => 'Pabaikkan per $1',
 'revision-info' => 'Revisi sajak $1 dek $2',
-'previousrevision' => '← Revisi sabalunnyo',
+'previousrevision' => '← Pabaikkan sabalunnyo',
 'nextrevision' => 'Revisi selanjutnyo →',
 'currentrevisionlink' => 'Revisi terkini',
 'cur' => 'kini',
@@ -802,18 +817,18 @@ Legend: '''({{int:kini}})''' = perbedaan jo revisi terakhir, '''({{int:dulu}})''
 
 # Revision deletion
 'rev-delundel' => 'tampilkan/suruakkan',
-'revdel-restore' => 'Ganti tampilan',
-'revdel-restore-deleted' => 'revisi nan lah tahapuih',
+'revdel-restore' => 'ganti tampilan',
+'revdel-restore-deleted' => 'suntiangan nan alah dihapuih',
 'revdel-restore-visible' => 'tampilan revisi',
 
 # Merge log
-'revertmerge' => 'Batal bergabung',
+'revertmerge' => 'Bata bagabuang',
 
 # Diffs
-'history-title' => 'Riwayat revisi dari "$1"',
+'history-title' => 'Riwayaik pabaiakkan dari "$1"',
 'lineno' => 'Barih $1:',
 'compareselectedversions' => 'Bandingkan revisi pilihan',
-'editundo' => 'batalkan',
+'editundo' => 'batalan',
 'diff-multi' => '({{PLURAL:$1|ciek |$1 revisi antaro}} oleh {{PLURAL:$2|ciek|$2 pangguno}} indak ditampilkan)',
 
 # Search results
@@ -824,34 +839,34 @@ Legend: '''({{int:kini}})''' = perbedaan jo revisi terakhir, '''({{int:dulu}})''
 'searchsubtitleinvalid' => "Awak mancari '''$1'''",
 'notitlematches' => 'Indak ado judul nan pas',
 'notextmatches' => 'Indak ado judul nan pas',
-'prevn' => 'sabalunnyo {{PLURAL:$1|$1}}',
-'nextn' => 'salanjuiknyo {{PLURAL:$1|$1}}',
-'prevn-title' => 'Sabalunnyo $1 {{PLURAL:$1|hasil|hasil}}',
-'nextn-title' => 'Barikuiknyo $1 {{PLURAL:$1|hasil|hasil}}',
-'shown-title' => '↓ Tampilkan $1 {{PLURAL:$1|hasil|hasil}} per lama',
-'viewprevnext' => 'Tampilkan ($1 {{int:pipe-separator}} $2) ($3)',
+'prevn' => '{{PLURAL:$1|$1}} sabalunnyo',
+'nextn' => '{{PLURAL:$1|$1}} salanjuknyo',
+'prevn-title' => '$1 {{PLURAL:$1|Hasil|Hasil-hasil}} sabalunnyo',
+'nextn-title' => '$1 {{PLURAL:$1|Hasil|Hasil-hasil}} barikuiknyo',
+'shown-title' => 'Tampilkan $1 {{PLURAL:$1|hasil|hasil-hasil}} per laman',
+'viewprevnext' => 'Caliakkan ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Ado laman nan banamo \"[[:\$1]]\" pado wiki ko.'''",
 'searchmenu-new' => "'''Buek laman \"[[:\$1]]\" di wiki ko!'''",
-'searchprofile-articles' => 'Artikel',
-'searchprofile-project' => '↓ Laman Bantuan dan Proyek',
-'searchprofile-images' => '↓ Multimedia',
-'searchprofile-everything' => '↓ Sadonyo',
-'searchprofile-advanced' => 'Lanjuikan',
-'searchprofile-articles-tooltip' => '↓ Cari di $1',
+'searchprofile-articles' => 'Laman isi',
+'searchprofile-project' => 'Laman Bantuan jo Proyek',
+'searchprofile-images' => 'Multimedia',
+'searchprofile-everything' => 'Sadonyo',
+'searchprofile-advanced' => 'Lanjukkan',
+'searchprofile-articles-tooltip' => 'Cari di $1',
 'searchprofile-project-tooltip' => 'Cari di $1',
-'searchprofile-images-tooltip' => '↓ Cari untuak berkas',
-'searchprofile-everything-tooltip' => '↓ Cari sadoalahnyo (tamasuak laman maota)',
-'searchprofile-advanced-tooltip' => 'Pacaharian di ruang namo tatantu',
+'searchprofile-images-tooltip' => 'Cari untuak berkas',
+'searchprofile-everything-tooltip' => 'Cari sadoalahnyo (tamasuak laman maota)',
+'searchprofile-advanced-tooltip' => 'Pacarian di ruang namo tatantu',
 'search-result-size' => '$1 ({{PLURAL:$2|1 kato|$2 kato}})',
 'search-result-category-size' => '{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkategori|$2 subkategori}}, {{PLURAL:$3|1 berkas|$3 berkas}})',
-'search-redirect' => '(pengalihan $1)',
+'search-redirect' => '(pangaliahan $1)',
 'search-section' => '(bagian $1)',
 'search-suggest' => 'Mungkin maksud awak: $1',
 'search-interwiki-caption' => 'Proyek badunsanak',
 'search-interwiki-default' => 'Hasil $1:',
 'search-interwiki-more' => '(selanjutnyo)',
 'searchrelated' => 'bakaitan',
-'searchall' => 'Sadonyo',
+'searchall' => 'sado',
 'showingresultsheader' => "{{PLURAL:$5|Hasil '''$1''' dari '''$3'''|Hasil '''$1 - $2''' dari '''$3'''}} untuak '''$4'''",
 'nonefound' => "'''Catatan''': hanyo babarapo ruangnamo yang dicari sacaro default.
 Cubo awali permintaan awak tu jo ''all:'' untuak mancari sado kandungan (tamasuak laman ota, templat, dll), atau gunoan ruangnamo yang diinginkan sabagai awalan.",
@@ -864,7 +879,7 @@ Cubo awali permintaan awak tu jo ''all:'' untuak mancari sado kandungan (tamasua
 
 # Preferences page
 'preferences' => 'Preferensi',
-'mypreferences' => 'Preferensi denai',
+'mypreferences' => 'Preferensi',
 'prefs-beta' => 'Corak Beta',
 'prefs-labs' => 'Corak Uji',
 'youremail' => 'Surek Elektronik:',
@@ -904,8 +919,8 @@ Alamaik surek elektronik awak ang tu indak kan katahuan dek urang lain nan mangh
 'rcshowhidepatr' => '$1 suntiangan nan tajago',
 'rcshowhidemine' => '$1 suntingan denai',
 'rclinks' => 'Tampilkan $1 parubahan baru dalam $2 hari terakhir<br />$3',
-'diff' => 'beda',
-'hist' => 'versi',
+'diff' => 'bedo',
+'hist' => 'sajarah',
 'hide' => 'Suruakkan',
 'show' => 'Tampilkan',
 'minoreditletter' => 'k',
@@ -916,16 +931,16 @@ Alamaik surek elektronik awak ang tu indak kan katahuan dek urang lain nan mangh
 
 # Recent changes linked
 'recentchangeslinked' => 'Parubahan takaik',
-'recentchangeslinked-toolbox' => '↓ Parubahan takaik',
+'recentchangeslinked-toolbox' => 'Parubahan takaik',
 'recentchangeslinked-title' => 'Parubahan nan takaik jo "$1"',
 'recentchangeslinked-noresult' => 'Indak ado parubahan pado laman nan tapauik salamo periode nan ditantuan',
-'recentchangeslinked-summary' => "Iko adolah senarai parubahan terakhir pado laman yang takaik jo laman tartantu (atau pado kalompok kategori tartantu).
-Laman pado [[Special:Watchlist|Senarai pantauan]] ditandoi '''cetak taba'''.",
+'recentchangeslinked-summary' => "Iko adolah daftar parubahan tarakhir pado laman nan tahubuang dari laman tatantu (atau anggota dari suatu kategori tatantu).
+Halaman pada [[Special:Watchlist|your watchlist]] ditondai dangan '''cetak taba''",
 'recentchangeslinked-page' => 'Namo laman:',
 'recentchangeslinked-to' => 'Tampilkan parubahan dari laman yang takaik jo laman yang disajikan',
 
 # Upload
-'upload' => 'Unggah berkas',
+'upload' => 'Muek berkas',
 'uploadlogpage' => 'Log unggah',
 'filedesc' => 'Ringkasan',
 'uploadedimage' => 'unggah "[[$1]]"',
@@ -935,7 +950,7 @@ Laman pado [[Special:Watchlist|Senarai pantauan]] ditandoi '''cetak taba'''.",
 
 # File description page
 'file-anchor-link' => 'Berkas',
-'filehist' => 'Riwayat berkas',
+'filehist' => 'Riwayaik berkas',
 'filehist-help' => 'Klik pado tanggal/waktu untuak malihek berkas pado maso tu',
 'filehist-revert' => 'kembalikan',
 'filehist-current' => 'kini ko',
@@ -945,7 +960,7 @@ Laman pado [[Special:Watchlist|Senarai pantauan]] ditandoi '''cetak taba'''.",
 'filehist-user' => 'Pangguno',
 'filehist-dimensions' => 'Dimensi',
 'filehist-comment' => 'Ulasan',
-'imagelinks' => 'Pranala berkas',
+'imagelinks' => 'Panggunoan berkas',
 'linkstoimage' => 'Berikut ko ado {{PLURAL:$1|laman nan takaik|$1 laman nan takaik}} jo berkas ko:',
 'nolinkstoimage' => 'Indak ado laman nan ado batauik ka berkas ko.',
 'sharedupload' => 'Berkas ko barasal dari $1 dan mungkin digunoan oleh berbagai proyek lain.',
@@ -954,7 +969,7 @@ Deskripsi dari [$2 laman deskripsi berkas] ditampilkan di bawah.',
 'uploadnewversion-linktext' => 'Unggah versi baru dari berkas ko',
 
 # Random page
-'randompage' => '↓ Laman sumbarang',
+'randompage' => 'Laman sambarangan',
 
 # Statistics
 'statistics' => 'Statistik',
@@ -965,7 +980,7 @@ Deskripsi dari [$2 laman deskripsi berkas] ditampilkan di bawah.',
 'nbytes' => '$1 {{PLURAL:$1|bait|bait}}',
 'nmembers' => '$1 {{PLURAL:$1|anggota|anggota}}',
 'prefixindex' => 'Semua laman jo awalan',
-'usercreated' => 'Dibuek pado $1 waktu $2',
+'usercreated' => '{{GENDER:$3|Dibuek}} pado $1 pukua $2',
 'newpages' => 'Laman baru',
 'move' => 'Pindahkan',
 'movethispage' => 'Pindahkan laman ko',
@@ -1007,7 +1022,7 @@ Deskripsi dari [$2 laman deskripsi berkas] ditampilkan di bawah.',
 
 # Watchlist
 'watchlist' => 'Senarai pantauan denai',
-'mywatchlist' => 'Senarai pantauan den',
+'mywatchlist' => 'Daftar pantauan denai',
 'watchlistfor2' => 'Untuak $1 $2',
 'addedwatchtext' => "Laman \"[[:\$1]]\" lah ditambahkan ka [[Special:Watchlist|senarai pantauan awak]].
 Parubahan laman ko tamasuak laman otanyo akan ditampilkan dalam '''cetak taba''' pado [[Special:RecentChanges|senarai parubahan]] agar lebih mudah manjagonyo.",
@@ -1064,8 +1079,8 @@ Awak dapek maubah tingkek perlindungannyo, walaupun indak pangaruah pado perlind
 'restriction-level' => 'Tingkek larangan:',
 
 # Undelete
-'undeletelink' => 'tampilkan/pulihkan',
-'undeleteviewlink' => 'liek',
+'undeletelink' => 'caliak/cegakkan',
+'undeleteviewlink' => 'caliak',
 
 # Namespace form on various pages
 'namespace' => 'Ruangnamo:',
@@ -1106,17 +1121,17 @@ Awak dapek maubah tingkek perlindungannyo, walaupun indak pangaruah pado perlind
 'whatlinkshere-hideredirs' => '$1 pengalihan',
 'whatlinkshere-hidetrans' => '$1 transklusi',
 'whatlinkshere-hidelinks' => '$1 pranala',
-'whatlinkshere-hideimages' => '$1 pahubuang gambar',
+'whatlinkshere-hideimages' => '$1 pahubuang berkas',
 'whatlinkshere-filters' => 'Penapis',
 
 # Block/unblock
 'blockip' => 'Blokir pangguno',
 'ipboptions' => '2 jam:2 hours,1 hari:1 day,3 hari:3 days,1 minggu:1 week,2 minggu:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 tahun:1 year,salamonyo:infinite',
 'ipblocklist' => 'Pangguno tablokir',
-'blocklink' => 'blokir',
-'unblocklink' => 'hilangkan blokir',
-'change-blocklink' => 'ubah blokir',
-'contribslink' => 'kontrib',
+'blocklink' => 'balokir',
+'unblocklink' => 'hilangkan balokir',
+'change-blocklink' => 'ubah balokir',
+'contribslink' => 'jariah',
 'blocklogpage' => 'Log pemblokiran',
 'blocklogentry' => 'memblokir [[$1]] dalam maso berlaku $2 $3',
 'unblocklogentry' => 'mahilangkan blokir $1',
@@ -1146,7 +1161,7 @@ Dalam kasus tu, apobilo diinginkan, awak dapek mamindahkan atau manggabuangkan l
 'movetalk' => 'Pindahkan laman ota yang takaik',
 'movelogpage' => 'Log pemindahan',
 'movereason' => 'Alasan:',
-'revertmove' => 'kembalikan',
+'revertmove' => 'baliakkan',
 
 # Export
 'export' => 'Ekspor laman',
@@ -1160,46 +1175,46 @@ Dalam kasus tu, apobilo diinginkan, awak dapek mamindahkan atau manggabuangkan l
 'thumbnail_error' => 'Gagal mambuek thumbnail : $1',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage' => 'Halaman pangguno awak',
-'tooltip-pt-mytalk' => 'Halaman ota awak',
+'tooltip-pt-userpage' => 'Laman pangguno sanak',
+'tooltip-pt-mytalk' => 'Laman ota sanak',
 'tooltip-pt-preferences' => 'Preferensi denai',
-'tooltip-pt-watchlist' => 'Senarai laman nan denai pantau',
-'tooltip-pt-mycontris' => 'Senarai jariah denai',
-'tooltip-pt-login' => 'Awak disarankan untuak masuak log; meskipun, hal tu indak diwajibkan',
+'tooltip-pt-watchlist' => 'Daftar laman nan denai pantau.',
+'tooltip-pt-mycontris' => 'Daftar jariah Sanak',
+'tooltip-pt-login' => 'Sanak disarankan untuak masuak log; musiki, hal tu indak diwajibkan',
 'tooltip-pt-logout' => 'Kalua log',
-'tooltip-ca-talk' => 'Pembicaraan tentang isi halaman',
-'tooltip-ca-edit' => 'Awak buliah suntiang laman ko. Gunokan tombol pratonton sabalun manyimpan',
+'tooltip-ca-talk' => 'Parudiangan tantang isi laman',
+'tooltip-ca-edit' => 'Sanak dapek manyuntiang laman iko. Silakan gunokan tombol pratonton sabalun manyimpan',
 'tooltip-ca-addsection' => 'Mulai bagian baru',
 'tooltip-ca-viewsource' => 'Laman ko dilinduangi.
-Awak hanyo buliah lihek sumber se',
-'tooltip-ca-history' => 'Revisi sabalunnyo laman ko',
+Sanak hanyo buliah lihek sumbernyo sajo',
+'tooltip-ca-history' => 'Pabaiakkan sabalunnyo dari laman ko',
 'tooltip-ca-protect' => 'Lindungi laman ko',
 'tooltip-ca-delete' => 'Hapuih laman iko',
 'tooltip-ca-move' => 'Pindahkan laman ko',
-'tooltip-ca-watch' => 'Tambahkan laman ko ka senarai pantauan awak',
+'tooltip-ca-watch' => 'Tambahkan laman ko ka daftar pantauan sanak',
 'tooltip-ca-unwatch' => 'Kaluaan laman ko dari senarai pantauan awak',
 'tooltip-search' => 'Cari {{SITENAME}}',
 'tooltip-search-go' => 'Cari suatu laman dengan namo yang samo jiko tasadio',
-'tooltip-search-fulltext' => 'Cari halaman nan mamuek teks ko',
-'tooltip-p-logo' => '↓ Kunjungi laman utamo',
-'tooltip-n-mainpage' => 'Kunjungi Halaman Utamo',
-'tooltip-n-mainpage-description' => 'Kunjungi halaman utamo',
-'tooltip-n-portal' => 'Tentang proyek, apo yang dapek awak lakukan, di mano mancari sasuatu',
-'tooltip-n-currentevents' => 'Temukan informasi latar dari peristiwa kini ko',
+'tooltip-search-fulltext' => 'Cari laman untuak teks iko',
+'tooltip-p-logo' => 'Kunjuangi laman utamo',
+'tooltip-n-mainpage' => 'Kunjuangi laman Utamo',
+'tooltip-n-mainpage-description' => 'Kunjuangi laman utamo',
+'tooltip-n-portal' => 'Tantang proyek, apa nan dapek Sanak lakukan, dima untuak manamukan sasuatu',
+'tooltip-n-currentevents' => 'Tamukan informasi manganai latar balakang kajadian kini ko',
 'tooltip-n-recentchanges' => 'Daftar panyuntiangan baru dalam wiki',
-'tooltip-n-randompage' => 'Tampilkan sembarang halaman',
+'tooltip-n-randompage' => 'Muek sambarang laman',
 'tooltip-n-help' => 'Tampek mancari bantuan',
-'tooltip-t-whatlinkshere' => 'Senarai sado halaman wiki yang punyo pranala ka halaman ko',
+'tooltip-t-whatlinkshere' => 'Daftar dari kasado laman wiki nan tahubuang kasiko',
 'tooltip-t-recentchangeslinked' => 'Parubahan baru halaman nan bakaik jo laman ko',
 'tooltip-feed-rss' => 'Umpan RSS untuak laman ko',
 'tooltip-feed-atom' => 'Umpan Atom untuak laman ko',
 'tooltip-t-contributions' => 'Lihek senarai jariah pangguno ko',
 'tooltip-t-emailuser' => 'Kirimkan e-mail ka pangguno ko',
-'tooltip-t-upload' => 'Unggah berkas',
-'tooltip-t-specialpages' => 'Sadoalah halaman istimewa',
-'tooltip-t-print' => 'Versi cetak halaman ko',
-'tooltip-t-permalink' => 'Pranala permanen untuak revisi laman ko',
-'tooltip-ca-nstab-main' => 'Lihek isi laman',
+'tooltip-t-upload' => 'Muek berkas',
+'tooltip-t-specialpages' => 'Daftar dari kasado laman istimewa',
+'tooltip-t-print' => 'Versi cetak dari laman ko',
+'tooltip-t-permalink' => 'Pranala parmanen untuak pabaiakkan laman ko',
+'tooltip-ca-nstab-main' => 'Caliak isi laman',
 'tooltip-ca-nstab-user' => 'Caliak laman pangguno',
 'tooltip-ca-nstab-special' => 'Iko adolah laman istimewa, awak indak buliah manyuntiangnyo',
 'tooltip-ca-nstab-project' => 'Lihek laman proyek',
@@ -1215,8 +1230,8 @@ Awak hanyo buliah lihek sumber se',
 'tooltip-watch' => 'Tambahkan laman ko ka senarai pantauan awak',
 'tooltip-recreate' => 'Buek baliak laman walaupun sabananyo pernah dihapuih',
 'tooltip-upload' => 'Mulai mamuek',
-'tooltip-rollback' => '"Baliakkan" baraliah suntiang laman ko pado kontribusi tarakhir dalam sakali klik',
-'tooltip-undo' => '"Indak jadi" suntiangan ko dibaliakkan dan mambuka kotak suntiang dalam mode pratonton. Alasan dapek ditambah pado kotak ringkasan.',
+'tooltip-rollback' => '"Baliakkan" uruangkan suntiang laman ko pado kontribusi tarakhir dalam sakali klik',
+'tooltip-undo' => '"Batalan" uruangkan panyuntiangan iko jo mambukak bantuak suntiang dalam bantuak pratonton. Hal ko mamungkinkan manambahkan alasan pado kotak ringkasan.',
 'tooltip-preferences-save' => 'Simpan preferensi',
 'tooltip-summary' => 'Masuakan sabuah ringkasan pendek',
 
@@ -1234,11 +1249,11 @@ Awak hanyo buliah lihek sumber se',
 'show-big-image' => 'Resolusi penuh',
 
 # Bad image list
-'bad_image_list' => 'Formatnyo sabagai berikut:
+'bad_image_list' => 'Ukurannyo adolah sabagai barikuik:
 
-Hanyo butir senarai (barih diawali jo tando *) yang dihituang.
-Pranala partamo pado barih tu mesti bakaik ka berkas nan buruak.
-Pranala-pranala salanjuiknyo pado barih nan samo dianggap sabagai pengecualian, yaitu laman nan dapek manampilkan berkas tu.',
+Hanyo daftar butia (barih nan dimulai jo tando *) nan dianggap.
+Pranala patamo pado barih musiti pranala ka berkas buruak.
+Satiok pranala salanjuiknyo pado barih nan samo dianggap pangacualian, yaitu laman dima berkas tasabuik bisa tajadi sajajar.',
 
 # Metadata
 'metadata' => 'Metadata',
@@ -1268,7 +1283,7 @@ Nan lainnyo akan tasuruak sacaro default.
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'semua',
 'namespacesall' => 'semua',
-'monthsall' => 'semua',
+'monthsall' => 'sado',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Tampilkan parubahan takaik',
@@ -1301,4 +1316,7 @@ Nan lainnyo akan tasuruak sacaro default.
 'searchsuggest-search' => 'Cari',
 'searchsuggest-containing' => 'Barisi...',
 
+# Durations
+'duration-millennia' => '$1 {{PLURAL:$1|millennium|millenia}}',
+
 );
index 9a5aa18..89bb65a 100644 (file)
@@ -515,6 +515,7 @@ $messages = array(
 'namespaces' => 'Именски простори',
 'variants' => 'Варијанти',
 
+'navigation-heading' => 'Навигационо мени',
 'errorpagetitle' => 'Грешка',
 'returnto' => 'Назад на $1.',
 'tagline' => 'Од {{SITENAME}}',
@@ -764,9 +765,9 @@ $2',
 
 Можете да продолжите со користење на {{SITENAME}} анонимно или можете <span class='plainlinks'>[$1 повторно да се најавите]</span> под исто или различно корисничко име.
 Да напоменеме дека некои страници може да продолжат да се прикажуваат како да сте најавени, се додека не го исчистите кешот на вашиот прелистувач.",
-'welcomecreation' => '== Добредојдовте, $1! ==
-Вашата корисничка сметка е создадена.
-Не заборавајте да ги [[Special:Preferences|наместите вашите нагодувања]].',
+'welcomeuser' => 'Добредојдовте, $1!',
+'welcomecreation-msg' => 'Вашата корисничка сметка е создадена.
+Не заборавајте да ги измените вашите [[Special:Preferences|{{SITENAME}} нагодувања]].',
 'yourname' => 'Корисничко име:',
 'yourpassword' => 'Лозинка:',
 'yourpasswordagain' => 'Повторете ја лозинката:',
@@ -971,7 +972,7 @@ $2
 'missingsummary' => "'''Потсетник:''' Не внесовте опис на измените. Ако притиснете Зачувај повторно, вашите измени ќе се зачуваат без опис.",
 'missingcommenttext' => 'Ве молиме внесете коментар подолу.',
 'missingcommentheader' => "'''Потсетување:''' Не внесовте наслов за овој коментар.
-Ако повторно кликнете на „{{int:savearticle}}“, уредувањето ќе биде зачувано без наслов.",
+Ако повторно стиснете на „{{int:savearticle}}“, уредувањето ќе биде зачувано без наслов.",
 'summary-preview' => 'Изглед на описот:',
 'subject-preview' => 'Преглед на предметот/насловот:',
 'blockedtitle' => 'Корисникот е блокиран',
@@ -1203,7 +1204,7 @@ $2
 'last' => 'посл',
 'page_first' => 'прв',
 'page_last' => 'последен',
-'histlegend' => "Разлика Ð¿Ð¾Ð¼ÐµÑ\93Ñ\83 Ñ\80евизии: Ð¾Ð·Ð½Ð°Ñ\87еÑ\82е Ð³Ð¸ Ñ\80евизииÑ\82е ÐºÐ¾Ð¸ Ñ\81акаÑ\82е Ð´Ð° Ð³Ð¸ Ñ\81поÑ\80едиÑ\82е Ð¸ Ð¿Ñ\80иÑ\82иÑ\81неÑ\82е Enter или копчето на дното од страницата.<br />
+'histlegend' => "Разлика Ð¿Ð¾Ð¼ÐµÑ\93Ñ\83 Ñ\80евизии: Ð\9eзнаÑ\87еÑ\82е Ð³Ð¸ Ñ\80евизииÑ\82е Ñ\88Ñ\82о Ñ\81акаÑ\82е Ð´Ð° Ð³Ð¸ Ñ\81поÑ\80едиÑ\82е Ð¸ Ð¿Ñ\80иÑ\82иÑ\81неÑ\82е Ð½Ð° Enter или копчето на дното од страницата.<br />
 Легенда: '''({{int:cur}})''' = разлика со последна ревизија, '''({{int:last}})''' = разлика со претходна ревизија, '''{{int:minoreditletter}}''' = ситна промена.",
 'history-fieldset-title' => 'Прелистување на историја',
 'history-show-deleted' => 'Само избришани',
@@ -1924,6 +1925,7 @@ $1',
 'backend-fail-notsame' => 'Веќе постои неистоветна податотека - $1.',
 'backend-fail-invalidpath' => '$1 не е важечка патека за складирање.',
 'backend-fail-delete' => 'Не можев да ја избришам податотеката $1.',
+'backend-fail-describe' => 'Не можев да ги изменам метаподатоците за податотеката „$1“.',
 'backend-fail-alreadyexists' => 'Податотеката $1 веќе постои.',
 'backend-fail-store' => 'Не можев да ја складирам податотеката $1 во $2.',
 'backend-fail-copy' => 'Не можев да ја ископирам податотеката $1 во $2.',
@@ -2038,7 +2040,7 @@ $1',
 # File description page
 'file-anchor-link' => 'Податотека',
 'filehist' => 'Историја на податотеката',
-'filehist-help' => 'Ð\9aликнете на датум/време за да ја видите податотеката како изгледала тогаш.',
+'filehist-help' => 'СÑ\82иÑ\81нете на датум/време за да ја видите податотеката како изгледала тогаш.',
 'filehist-deleteall' => 'избриши ги сите',
 'filehist-deleteone' => 'избриши',
 'filehist-revert' => 'врати',
@@ -2323,7 +2325,7 @@ $1',
 'linksearch-error' => 'Џокер-знаците може да се користат само на почетокот во името на домаќинот.',
 
 # Special:ListUsers
-'listusersfrom' => 'Ð\9fÑ\80икажни ÐºÐ¾Ñ\80иÑ\81ниÑ\86и Ð¿Ð¾Ñ\87нÑ\83ваÑ\98Ñ\9cи Ð¾Ð´:',
+'listusersfrom' => 'Прикажи корисници почнувајќи од:',
 'listusers-submit' => 'Прикажи',
 'listusers-noresult' => 'Не е пронајден корисник.',
 'listusers-blocked' => '(блокиран)',
@@ -2332,7 +2334,7 @@ $1',
 'activeusers' => 'Список на активни корисници',
 'activeusers-intro' => 'Ова е список на корисници кои биле на некој начин активни во последните $1 {{PLURAL:$1|ден|дена}}.',
 'activeusers-count' => '$1 {{PLURAL:$1|уредување|уредувања}} {{PLURAL:$3|денес|во последните $3 дена}}',
-'activeusers-from' => 'Прикажува корисници кои почнуваат на:',
+'activeusers-from' => 'Прикажи корисници почнувајќи од:',
 'activeusers-hidebots' => 'Скриј ботови',
 'activeusers-hidesysops' => 'Скриј администратори',
 'activeusers-noresult' => 'Нема пронајдено корисници.',
@@ -2435,18 +2437,23 @@ $1',
 
 'enotif_mailer' => '{{SITENAME}} Систем за известување',
 'enotif_reset' => 'Означи ги сите страници како посетени',
-'enotif_newpagetext' => 'Ова е нова страница.',
 'enotif_impersonal_salutation' => 'Википедија корисник',
-'changed' => 'изменета',
-'created' => 'создадена',
-'enotif_subject' => 'Страницата $PAGETITLE на {{SITENAME}} беше $CHANGEDORCREATED од $PAGEEDITOR',
+'enotif_subject_deleted' => 'Страницата $1 на {{SITENAME}} е избришана од {{gender:$2|$2}}',
+'enotif_subject_created' => 'Страницата $1 на {{SITENAME}} е создадена од {{gender:$2|$2}}',
+'enotif_subject_moved' => 'Страницата $1 на {{SITENAME}} е преместена од {{gender:$2|$2}}',
+'enotif_subject_restored' => 'Страницата $1 на {{SITENAME}} е повратена од {{gender:$2|$2}}',
+'enotif_subject_changed' => 'Страницата $1 на {{SITENAME}} е изменета од {{gender:$2|$2}}',
+'enotif_body_intro_deleted' => 'Страницата $1 на {{SITENAME}} е избришана на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната ревизија ќе ја најдете на $3.',
+'enotif_body_intro_created' => 'Страницата $1 на {{SITENAME}} е создадена на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната ревизија ќе ја најдете на $3.',
+'enotif_body_intro_moved' => 'Страницата $1 на {{SITENAME}} е преместена на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната ревизија ќе ја најдете на $3.',
+'enotif_body_intro_restored' => 'Страницата $1 на {{SITENAME}} е повратена на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната ревизија ќе ја најдете на $3.',
+'enotif_body_intro_changed' => 'Страницата $1 на {{SITENAME}} е изменета на $PAGEEDITDATE од {{gender:$2|$2}}. Тековната ревизија ќе ја најдете на $3.',
 'enotif_lastvisited' => 'Видете $1 за сите промени од вашата последна посета.',
 'enotif_lastdiff' => 'Видете $1 за да ја видите оваа промена.',
 'enotif_anon_editor' => 'анонимен корисник $1',
 'enotif_body' => 'Почитуван(а) $WATCHINGUSERNAME,
 
-
-На $PAGEEDITDATE е $CHANGEDORCREATED страницата „$PAGETITLE“ на проектот {{SITENAME}}. Измената ја изврши $PAGEEDITOR. Погледајте ја тековната верзија на $PAGETITLE_URL.
+$PAGEINTRO $NEWPAGE
 
 $NEWPAGE
 
@@ -2459,7 +2466,7 @@ $NEWPAGE
 Повеќе нема да добивате известувања во случај на други понатамошни промени, освен ако не ја посетите оваа страница.
 Можете и да ги поништите ознаките за известување за сите набљудувани страници на вашиот список на набљудувања.
 
-             Системот за известување на {{SITENAME}}
+Известителниот систем на {{SITENAME}}
 
 --
 Ако сакате да ги измените нагодувањата за известување по е-пошта, посетете ја страницата
@@ -2471,7 +2478,7 @@ $NEWPAGE
 За да ја избришете страницата од списокот на набљудувања, посетете ја страницата
 $UNWATCHURL
 
\9fовÑ\80аÑ\82ни Ð¸Ð½Ñ\84оÑ\80маÑ\86ии Ð¸ помош:
\92аÑ\88и Ð¼Ð¸Ñ\81леÑ\9aа, Ð¿Ñ\80аÑ\88аÑ\9aа Ð¸ Ð¿Ð¾Ð²ÐµÑ\9cе помош:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
 
 # Delete
@@ -3269,6 +3276,8 @@ $1',
 'markedaspatrollederror' => 'Не можам да означам како проверена',
 'markedaspatrollederrortext' => 'Морате да внесете верзија за да ја означите како проверена.',
 'markedaspatrollederror-noautopatrol' => 'Не можете да ги означите своите промени како проверени.',
+'markedaspatrollednotify' => 'Оваа измена на $1 е означена како испатролирана.',
+'markedaspatrollederrornotify' => 'Означувањето како испатролирано не успеа.',
 
 # Patrol log
 'patrol-log-page' => 'Дневник на патролирања',
@@ -3338,6 +3347,7 @@ $1',
 'hours' => '{{PLURAL:$1|$1 час|$1 часа}}',
 'days' => '{{PLURAL:$1|$1 ден|$1 дена}}',
 'ago' => 'пред $1',
+'just-now' => 'Штотуку',
 
 # Bad image list
 'bad_image_list' => 'Форматот е следниот:
@@ -4240,9 +4250,9 @@ $5
 'logentry-move-move_redir-noredirect' => '$1 ја премести страницата $3 на $4 презапишувајќи врз пренасочување без да остави пренасочување',
 'logentry-patrol-patrol' => '$1 ја означи ревизијата $4 на страницата $3 како испатролирана',
 'logentry-patrol-patrol-auto' => '$1 автоматски ја означи ревизијата $4 на страницата $3 како испатролирана',
-'logentry-newusers-newusers' => '$1 направи корисничка сметка',
-'logentry-newusers-create' => '$1 направи корисничка сметка',
-'logentry-newusers-create2' => '$1 направи корисничка сметка $3',
+'logentry-newusers-newusers' => 'Направена е корисничката сметка $1',
+'logentry-newusers-create' => 'Направена е корисничката сметка $1',
+'logentry-newusers-create2' => 'Направена е корисничката сметка $3; создавач: $1',
 'logentry-newusers-autocreate' => 'Сметката $1 е создадена автоматски',
 'newuserlog-byemail' => 'испратена лозинка по е-пошта',
 
@@ -4319,5 +4329,5 @@ $5
 'duration-millennia' => '$1 {{PLURAL:$1|милениум|милениуми}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'разговор',
+'svg-long-error' => 'Неважечка SVG-податотека: $1',
 );
index e23e4e4..dd34cb1 100644 (file)
@@ -498,6 +498,7 @@ $messages = array(
 'namespaces' => 'നാമമേഖല',
 'variants' => 'രൂപഭേദങ്ങൾ',
 
+'navigation-heading' => 'ഗമന വഴികാട്ടി',
 'errorpagetitle' => 'പിഴവ്',
 'returnto' => '$1 എന്ന താളിലേക്ക് തിരിച്ചുപോവുക.',
 'tagline' => '{{SITENAME}} സംരംഭത്തിൽ നിന്ന്',
@@ -741,9 +742,9 @@ $2',
 അജ്ഞാതമായിരുന്നു കൊണ്ട് {{SITENAME}} സം‌രംഭം താങ്കൾക്കു തുടർന്നും ഉപയോഗിക്കാവുന്നതാണ്‌.
 അല്ലെങ്കിൽ  <span class='plainlinks'>[$1 ലോഗിൻ സൗകര്യം ഉപയോഗിച്ച്]</span> വീണ്ടും ലോഗിൻ ചെയ്യാവുന്നതും ആണ്‌.
 താങ്കൾ വെബ് ബ്രൌസറിന്റെ ക്യാഷെ ശൂന്യമാക്കിയിട്ടില്ലെങ്കിൽ ചില താളുകളിൽ താങ്കൾ ലോഗിൻ ചെയ്തിരിക്കുന്നതായി കാണിക്കാൻ സാധ്യതയുണ്ട്.",
-'welcomecreation' => '== സ്വാഗതം, $1! ==
-താങ്കളുടെ അംഗത്വം സൃഷ്ടിക്കപ്പെട്ടിരിക്കുന്നു.
-താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 [[Special:Preferences|{{SITENAME}} à´\95àµ\8dà´°à´®àµ\80à´\95à´°à´£à´\99àµ\8dà´\99ളിൽ]] à´\86വശàµ\8dയമായ à´®à´¾à´±àµ\8dà´±à´\82 à´µà´°àµ\81à´¤àµ\8dà´¤àµ\81വാൻ à´®à´±à´\95àµ\8dà´\95à´°àµ\81à´¤àµ\87.',
+'welcomeuser' => 'സ്വാഗതം, $1!',
+'welcomecreation-msg' => 'താങ്കളുടെ അംഗത്വം സൃഷ്ടിക്കപ്പെട്ടിരിക്കുന്നു.
+താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 [[Special:Preferences|{{SITENAME}} à´\95àµ\8dà´°à´®àµ\80à´\95à´°à´£à´\99àµ\8dà´\99ളിൽ]] à´®à´¾à´±àµ\8dà´±à´\82 à´µà´°àµ\81à´¤àµ\8dതാൻ à´®à´±à´\95àµ\8dà´\95à´°àµ\81à´¤àµ\8d.',
 'yourname' => 'ഉപയോക്തൃനാമം:',
 'yourpassword' => 'രഹസ്യവാക്ക്:',
 'yourpasswordagain' => 'രഹസ്യവാക്ക് ഒരിക്കൽക്കൂടി:',
@@ -1840,6 +1841,7 @@ $1',
 'backend-fail-notsame' => '$1 എന്ന് സമാനമല്ലാത്ത ഒരു പ്രമാണം നിലവിലുണ്ട്.',
 'backend-fail-invalidpath' => '$1 എന്നത് സാധുവായ ഒരു ശേഖരണ പഥം അല്ല.',
 'backend-fail-delete' => '$1 എന്ന പ്രമാണം മായ്ക്കാൻ കഴിഞ്ഞില്ല.',
+'backend-fail-describe' => '"$1" എന്ന പ്രമാണത്തിന്റെ മെറ്റഡേറ്റ മാറ്റാൻ കഴിയില്ല.',
 'backend-fail-alreadyexists' => '$1 എന്ന പ്രമാണം നിലവിലുണ്ട്.',
 'backend-fail-store' => '$1 എന്ന പ്രമാണം $2 എന്നതിൽ ശേഖരിക്കാൻ കഴിഞ്ഞില്ല.',
 'backend-fail-copy' => '$1 എന്ന പ്രമാണം $2 എന്നതിലേയ്ക്ക് പകർത്താൻ കഴിഞ്ഞില്ല.',
@@ -2345,11 +2347,17 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 
 'enotif_mailer' => '{{SITENAME}} വിജ്ഞാപന മെയിലർ',
 'enotif_reset' => 'എല്ലാ താളുകളും സന്ദർശിച്ചതായി രേഖപ്പെടുത്തുക',
-'enotif_newpagetext' => 'ഇതൊരു പുതിയ താളാണ്‌',
 'enotif_impersonal_salutation' => '{{SITENAME}} ഉപയോക്താവ്',
-'changed' => 'മാറ്റിയിരിക്കുന്നു',
-'created' => 'സൃഷ്ടിച്ചു',
-'enotif_subject' => '{{SITENAME}} സംരംഭത്തിലെ $PAGETITLE എന്ന താൾ $PAGEEDITOR $CHANGEDORCREATED',
+'enotif_subject_deleted' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} മായ്ച്ചിരിക്കുന്നു',
+'enotif_subject_created' => '{{SITENAME}} സംരംഭത്തിl $1 എന്ന താൾ {{gender:$2|$2}} സൃഷ്ടിച്ചിരിക്കുന്നു',
+'enotif_subject_moved' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} മാറ്റിയിരിക്കുന്നു',
+'enotif_subject_restored' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} പുനഃസ്ഥാപിച്ചിരിക്കുന്നു',
+'enotif_subject_changed' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താളിൽ {{gender:$2|$2}} മാറ്റം വരുത്തിയിരിക്കുന്നു',
+'enotif_body_intro_deleted' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ $PAGEEDITDATE-നു {{gender:$2|$2}} മായ്ച്ചിരിക്കുന്നു, ഇപ്പോഴത്തെ നാൾപ്പതിപ്പിനായി $3 കാണുക.',
+'enotif_body_intro_created' => '{{SITENAME}} സംരംഭത്തിൽ $1 എന്ന താൾ $PAGEEDITDATE-നു {{gender:$2|$2}} സൃഷ്ടിച്ചിരിക്കുന്നു, ഇപ്പോഴത്തെ നാൾപ്പതിപ്പിനായി $3 കാണുക.',
+'enotif_body_intro_moved' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ $PAGEEDITDATE-നു {{gender:$2|$2}} മാറ്റിയിരിക്കുന്നു, ഇപ്പോഴത്തെ നാൾപ്പതിപ്പിനായി $3 കാണുക.',
+'enotif_body_intro_restored' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ $PAGEEDITDATE-നു {{gender:$2|$2}} പുനഃസ്ഥാപിച്ചിരിക്കുന്നു, ഇപ്പോഴത്തെ നാൾപ്പതിപ്പിനായി $3 കാണുക.',
+'enotif_body_intro_changed' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താളിൽ $PAGEEDITDATE-നു {{gender:$2|$2}} മാറ്റം വരുത്തിയിരിക്കുന്നു, ഇപ്പോഴത്തെ നാൾപ്പതിപ്പിനായി $3 കാണുക.',
 'enotif_lastvisited' => 'താങ്കളുടെ അവസാന സന്ദർശനത്തിനു ശേഷമുണ്ടായ മാറ്റങ്ങൾ കാണുവാൻ  $1 സന്ദർശിക്കുക.',
 'enotif_lastdiff' => 'ഈ മാറ്റം ദർശിക്കാൻ $1 കാണുക.',
 'enotif_anon_editor' => 'അജ്ഞാത ഉപയോക്താവ് $1',
@@ -3153,6 +3161,8 @@ $1',
 'markedaspatrollederror' => 'റോന്തുചുറ്റിയതായി അടയാളപ്പെടുത്തുക സാധ്യമല്ല',
 'markedaspatrollederrortext' => 'റോന്തുചുറ്റിയതായി അടയാളപ്പെടുത്തേണ്ട നാൾപ്പതിപ്പ താങ്കൾ വ്യക്തമാക്കേണ്ടതാണ്.',
 'markedaspatrollederror-noautopatrol' => 'സ്വന്തം മാറ്റങ്ങൾ റോന്തുചുറ്റിയതായി അടയാളപ്പെടുത്തുക അനുവദനീയമല്ല.',
+'markedaspatrollednotify' => '$1 എന്ന താളിൽ നടത്തിയ ഈ മാറ്റം റോന്തുചുറ്റിയതായി അടയാളപ്പെടുത്തിയിരിക്കുന്നു.',
+'markedaspatrollederrornotify' => 'റോന്തുചുറ്റിയതെന്ന് അടയാളപ്പെടുത്തൽ പരാജയപ്പെട്ടു.',
 
 # Patrol log
 'patrol-log-page' => 'റോന്തുചുറ്റൽ പ്രവർത്തനരേഖ',
@@ -3219,6 +3229,7 @@ $1',
 'hours' => '{{PLURAL:$1|ഒരു മണിക്കൂർ|$1 മണിക്കൂർ}}',
 'days' => '{{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസം}}',
 'ago' => '$1 മുമ്പ്',
+'just-now' => 'ഇപ്പോൾ',
 
 # Bad image list
 'bad_image_list' => 'എഴുത്ത് രീതി താഴെ കൊടുത്തിരിക്കുന്നു:
@@ -3967,8 +3978,8 @@ $5
 'logentry-move-move_redir-noredirect' => '$1, $3 എന്ന താൾ $4 എന്ന താളിനുമുകളിലേയ്ക്ക്, തിരിച്ചുവിടൽ ഇല്ലാതെ മാറ്റിയിരിക്കുന്നു',
 'logentry-patrol-patrol' => '$3 എന്ന താളിന്റെ $4 എന്ന നാൾപ്പതിപ്പ് റോന്തുചുറ്റിയതായി $1 അടയാളപ്പെടുത്തിയിരിക്കുന്നു',
 'logentry-patrol-patrol-auto' => '$3 എന്ന താളിന്റെ $4 എന്ന നാൾപ്പതിപ്പ് റോന്തുചുറ്റിയതായി $1 സ്വതേ അടയാളപ്പെടുത്തിയിരിക്കുന്നു',
-'logentry-newusers-newusers' => '$1 à´\92à´°àµ\81 à´\89പയàµ\8bà´\95àµ\8dà´¤àµ\83 à´\85à´\82à´\97à´¤àµ\8dà´µà´\82 à´¸àµ\83à´·àµ\8dà´\9fà´¿à´\9aàµ\8dà´\9aിരിക്കുന്നു',
-'logentry-newusers-create' => '$1 à´\92à´°àµ\81 à´\89പയàµ\8bà´\95àµ\8dà´¤àµ\83 à´\85à´\82à´\97à´¤àµ\8dà´µà´\82 à´¸àµ\83à´·àµ\8dà´\9fà´¿à´\9aàµ\8dà´\9aിരിക്കുന്നു',
+'logentry-newusers-newusers' => '$1 à´\8eà´¨àµ\8dà´¨ à´\89പയàµ\8bà´\95àµ\8dà´¤àµ\83 à´\85à´\82à´\97à´¤àµ\8dà´µà´\82 à´¸àµ\83à´·àµ\8dà´\9fà´¿à´\95àµ\8dà´\95à´ªàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fിരിക്കുന്നു',
+'logentry-newusers-create' => '$1 à´\8eà´¨àµ\8dà´¨ à´\89പയàµ\8bà´\95àµ\8dà´¤àµ\83 à´\85à´\82à´\97à´¤àµ\8dà´µà´\82 à´¸àµ\83à´·àµ\8dà´\9fà´¿à´\95àµ\8dà´\95à´ªàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fിരിക്കുന്നു',
 'logentry-newusers-create2' => '$3 എന്ന ഉപയോക്തൃ അംഗത്വം $1 സൃഷ്ടിച്ചിരിക്കുന്നു',
 'logentry-newusers-autocreate' => '$1 എന്ന അംഗത്വം സ്വയം സൃഷ്ടിക്കപ്പെട്ടിരിക്കുന്നു',
 'newuserlog-byemail' => 'രഹസ്യവാക്ക് ഇ-മെയിൽ വഴി അയച്ചിരിക്കുന്നു',
@@ -4045,6 +4056,4 @@ $5
 'duration-centuries' => '{{PLURAL:$1|ഒരു നൂറ്റാണ്ട്|$1 നൂറ്റാണ്ട്}}',
 'duration-millennia' => '{{PLURAL:$1|ഒരു സഹസ്രാബ്ദം|$1 സഹസ്രാബ്ദം}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'സംവാദം',
 );
index ab2a010..765b56b 100644 (file)
@@ -67,7 +67,7 @@ $messages = array(
 'tog-nocache' => 'Вэб хөтөчийн хуудасны кешингийг болиулах',
 'tog-enotifwatchlistpages' => 'Миний хянах жагсаалт дахь хуудас өөрчлөгдсөн бол и-мэйл явуулах',
 'tog-enotifusertalkpages' => 'Миний хэлэлцүүлгийн хуудас өөрчлөгдөхөд и-мэйл явуулах',
-'tog-enotifminoredits' => 'Хуудсууд бага зэргээр засварлагдахад ч и-мэйл явуулах',
+'tog-enotifminoredits' => 'Хуудасны өнгөц өөрчлөлтийг мөн и-мейлээр явуул.',
 'tog-enotifrevealaddr' => 'Мэдэгдлийн и-мэйлд миний мэйл хаягийг илчлэх',
 'tog-shownumberswatching' => 'Харж буй хэрэглэгчдийн тоог үзүүлэх',
 'tog-oldsig' => 'Одоогийн гарын үсэг:',
@@ -90,7 +90,7 @@ $messages = array(
 
 'underline-always' => 'Байнга',
 'underline-never' => 'Хэзээ ч үгүй',
-'underline-default' => 'Вэб хөтөчийн анхны тохиргоо',
+'underline-default' => 'Вэб хөтөчийн үндсэн тохиргоо',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Засварлах талбарын фонт хэв маяг:',
@@ -175,8 +175,8 @@ $messages = array(
 'newwindow' => '(шинэ цонх нээгдэнэ)',
 'cancel' => 'Цуцлах',
 'moredotdotdot' => 'Дэлгэрэнгүй...',
-'mypage' => 'Ð\9cиний хуудас',
-'mytalk' => 'Ð\9cиний Ñ\8fÑ\80иа',
+'mypage' => 'Ð¥Ñ\8dÑ\80Ñ\8dглÑ\8dгÑ\87ийн хуудас',
+'mytalk' => 'Ð\9cиний Ñ\85Ñ\8dлÑ\8dлÑ\86үүлÑ\8dг',
 'anontalk' => 'Энэ IP-н яриа',
 'navigation' => 'Залуурдлага',
 'and' => '&#32;ба',
@@ -198,7 +198,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' => 'Түүхийг үзэх',
@@ -438,9 +438,6 @@ $2',
 
 Та ямар нэг хэрэглэгчийн бүртгэлгүйгээр {{SITENAME}}-г ашиглах боломжтой, эсвэл саяынхаа болон өөр хэрэглэгчийн бүртгэлээ ашиглан <span class='plainlinks'>[$1 дахин нэвтэрч]</span> болно.
 Броузерийнхаа хийсвэр санах ойг цэвэрлэх хүртэл зарим нэг хуудсууд нь таны холбогдсон байдлаар харагдаж болзошгүйг анхааруулъя.",
-'welcomecreation' => '= $1, тавтай морилно уу! ==
-Та амжилттай бүртгэгдлээ.
-[[Special:Preferences|{{SITENAME}}-н тохиргоогоо]] өөрчлөхөө мартуузай.',
 'yourname' => 'Хэрэглэгчийн нэр:',
 'yourpassword' => 'Нууц үг:',
 'yourpasswordagain' => 'Нууц үгээ дахин оруулах:',
@@ -1125,7 +1122,7 @@ $1",
 'timezoneregion-indian' => 'Энэтхэгийн далай',
 'timezoneregion-pacific' => 'Номхон далай',
 'allowemail' => 'Бусад хэрэглэгчдээс ирэх мэйлийг зөвшөөрөх',
-'prefs-searchoptions' => 'Хайх сонголтууд',
+'prefs-searchoptions' => 'Хайлт',
 'prefs-namespaces' => 'Нэрний зайнууд',
 'defaultns' => 'Үгүй бол эдгээр нэрний зайнуудад хайх:',
 'default' => 'анхны байдал',
@@ -1555,6 +1552,14 @@ URL нь хүчинтэй, мөн түүн руу орж болж байгаа 
 'backend-fail-contenttype' => '"$1" дахь файлын агуулгын төрлийг таньж чадсангүй.',
 'backend-fail-usable' => '$1 файлд хангалттай зөвшөөрөл олгогдоогүй эсвэл агуулах хавтасгүйн улмаас хадгалж чадсангүй.',
 
+# ZipDirectoryReader
+'zip-file-open-error' => 'Файлыг зип шалгалт хийхэд алдаа гарлаа.',
+'zip-wrong-format' => 'Өгсөн файл зип файл биш байна.',
+
+# Special:UploadStash
+'uploadstash-errclear' => 'Файлыг цэвэрлэхэд саад учирлаа.',
+'uploadstash-refresh' => 'Харагдаж буй файлуудыг сэргээн харах',
+
 # img_auth script messages
 'img-auth-accessdenied' => 'Хандах эрхгүй байна',
 'img-auth-nopathinfo' => 'PATH_INFO байхгүй байна.
@@ -1977,11 +1982,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 
 'enotif_mailer' => '{{SITENAME}}-н мэйл сонордуулга',
 'enotif_reset' => 'Бүх хуудсыг үзсэн гэж тэмдэглэх',
-'enotif_newpagetext' => 'Энэ бол шинэ хуудас.',
 'enotif_impersonal_salutation' => '{{SITENAME}}-н хэрэглэгч',
-'changed' => 'өөрчлөгдсөн',
-'created' => 'үүсгэсэн',
-'enotif_subject' => '{{SITENAME}}-н $PAGETITLE хуудсыг $PAGEEDITOR нь $CHANGEDORCREATED',
 'enotif_lastvisited' => '$1-н хамгийн сүүлд зочилсноос хойших өөрчлөлтүүдийг харуул.',
 'enotif_lastdiff' => '$1-г харж энэ өөрчлөлтийг үзнэ үү.',
 'enotif_anon_editor' => '$1 бүртгэлгүй хэрэглэгч',
@@ -2275,10 +2276,12 @@ $1',
 'ipbwatchuser' => 'Энэ хэрэглэгчийн хэрэглэгчийн ба ярианы хуудсуудыг хянах',
 'ipb-disableusertalk' => 'Энэ хэрэглэгчийг блоклогдсон үедээ өөрийн ярианы хуудсыг янзлахаас зайлс хийлгэх',
 'ipb-change-block' => 'Эдгээр тохиргоотойгоор энэ хэрэглэгчийг дахин түгжих',
+'ipb-confirm' => 'Блоклоход бэлэн',
 'badipaddress' => 'Хүчингүй IP хаяг',
 'blockipsuccesssub' => 'Түгжээ амжилттай боллоо.',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] түгжигдсэн байна.
 <br />Түгжсэн тоймыг [[Special:BlockList|түгжигдсэн IP-ийн жагсаалт]] аас харна уу.',
+'ipb-blockingself' => 'Та өөрийгөө блоклох гэж байна. Тэгэх үү?',
 'ipb-edit-dropdown' => 'Түгжих шалтгаануудыг засварлах',
 'ipb-unblock-addr' => '$1-н түгжээг тайлах',
 'ipb-unblock' => 'Хэрэглэгчийн нэр эсвэл IP хаягийн түгжээг тайлах',
@@ -2652,11 +2655,11 @@ $1',
 
 # Info page
 'pageinfo-title' => '"$1" - хуудасны мэдээлэл',
-'pageinfo-header-edits' => 'Өөрчлөлтүүд',
+'pageinfo-header-edits' => 'Өөрчлөлтийн түүх',
 'pageinfo-views' => 'Харагдацуудын тоо',
-'pageinfo-watchers' => 'Хянагчдын тоо',
+'pageinfo-watchers' => 'Ð¥Ñ\83Ñ\83даÑ\81 Ñ\85Ñ\8fнагÑ\87дÑ\8bн Ñ\82оо',
 'pageinfo-edits' => 'Засваруудын тоо',
-'pageinfo-authors' => 'ТÑ\83Ñ\81 Ñ\82Ñ\83Ñ\81Ñ\8bн зохиогчидын тоо',
+'pageinfo-authors' => 'Ð\9dийÑ\82 зохиогчидын тоо',
 
 # Patrolling
 'markaspatrolleddiff' => 'Хяналтанд авъя',
@@ -2699,6 +2702,7 @@ $1',
 'file-nohires' => 'Илүү чанартай хувилбар байхгүй байна.',
 'svg-long-desc' => 'SVG файл, $1 × $2 пиксэл, файлын хэмжээ: $3',
 'show-big-image' => 'Хамгийн сайн чанартай хувилбар',
+'show-big-image-size' => '$1 × $2 пиксел',
 'file-info-gif-looped' => 'эргэлдсэн',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|фрэйм}}',
 'file-info-png-looped' => 'эргэлдсэн',
@@ -2861,14 +2865,42 @@ $1',
 'exif-gpsareainformation' => 'GPS бүсийн нэр',
 'exif-gpsdatestamp' => 'GPS огноо',
 'exif-gpsdifferential' => 'GPS дифференциал засвар',
+'exif-jpegfilecomment' => 'JPEG файлын тэмдэглэгээ',
+'exif-keywords' => 'Түлхүүр үгс',
+'exif-worldregioncreated' => 'Зураг авсан тив',
+'exif-countrycreated' => 'Зураг авсан улс',
+'exif-countrycodecreated' => 'Зураг авсан улсын код',
+'exif-provinceorstatecreated' => 'Зураг авсан аймаг, хот',
+'exif-citycreated' => 'Зураг авсан хот',
+'exif-sublocationcreated' => 'Зураг авсан хотын хэсэг',
+'exif-worldregiondest' => 'Харагдаж буй тив',
+'exif-countrydest' => 'Харагдаж буй улс',
+'exif-countrycodedest' => 'Харагдаж буй хотын код',
+'exif-provinceorstatedest' => 'Харагдаж буй аймаг, хот.',
+'exif-citydest' => 'Харагдаж буй хотууд',
+'exif-sublocationdest' => 'Харагдаж буй хотын хэсэг',
+'exif-objectname' => 'Жижиг гарчиг',
+'exif-specialinstructions' => 'Тусгай заавар',
+'exif-headline' => 'Толгой хэсэг',
 'exif-source' => 'Эх сурвалж',
+'exif-writer' => 'Бичсэн',
 'exif-languagecode' => 'Хэл',
+'exif-iimversion' => 'IIM хувилбар',
 'exif-iimcategory' => 'Ангилал',
+'exif-datetimeexpires' => 'түүний дараа бүү хэрэглэ',
+'exif-datetimereleased' => 'Гарсан өдөр',
+'exif-originaltransmissionref' => '',
+'exif-identifier' => 'Дэлгэрүүлэгч',
+'exif-lens' => 'Ашигласан линз',
+'exif-serialnumber' => 'Камерны серын дугаар',
 'exif-cameraownername' => 'Камерын эзэн',
 'exif-label' => 'Шошго',
 'exif-datetimemetadata' => 'метадатаг хамгийн сүүлд өөрчилсөн огноо',
+'exif-nickname' => 'Зурганд өгсөн албан бус нэр',
+'exif-rating' => 'Зэрэглэл (5 хүртэл)',
 'exif-copyrighted' => 'Зохиогчийн эрхийн байдал',
 'exif-copyrightowner' => 'Зохиогчийн эрх эзэмшигч',
+'exif-usageterms' => 'Хэрэглээний нөхцөл, шаардлага',
 'exif-originaldocumentid' => 'Ориг баримтын ID',
 
 # EXIF attributes
index df26a3d..834d1ff 100644 (file)
@@ -36,6 +36,7 @@
  * @author Tusharpawar1982
  * @author V.narsikar
  * @author Vpnagarkar
+ * @author Ydyashad
  * @author Ynwala
  * @author अभय नातू
  * @author कोलࣿहापࣿरी
@@ -578,6 +579,7 @@ $1',
 'youhavenewmessages' => 'तुमच्यासाठी $1 ($2).',
 'newmessageslink' => 'नवीन संदेश',
 'newmessagesdifflink' => 'ताजा बदल',
+'newmessagesdifflinkplural' => 'मागिल {{PLURAL:$1|बदल}}',
 'youhavenewmessagesmulti' => '$1 वर तुमच्यासाठी नवीन संदेश आहेत.',
 'editsection' => 'संपादन',
 'editold' => 'संपादन',
@@ -708,14 +710,10 @@ $2',
 
 तुम्ही अनामिकपणे {{SITENAME}}चा उपयोग करत राहू शकता, किंवा त्याच अथवा वेगळ्या सदस्य नावाने <span class='plainlinks'>[$1  पुन्हा दाखल होऊ शकता]</span>.
 आपण स्वत:च्या न्याहाळकाची सय (cache) रिकामी करत नाही तो पर्यंत काही पाने आपण अजून दाखल आहात, असे नुसतेच दाखवत राहू शकतील.",
-'welcomecreation' => '== सुस्वागतम, $1! ==
-
-तुमचे खाते उघडण्यात आले आहे.
-आपल्या [[Special:Preferences|{{SITENAME}} पसंती]] बदलण्यास विसरू नका.',
 'yourname' => 'तुमचे नाव',
 'yourpassword' => 'तुमचा परवलीचा शब्द',
 'yourpasswordagain' => 'तुमचा परवलीचा शब्द पुन्हा लिहा',
-'remembermypassword' => 'माझा प्रवेश या संगणकावर लक्षात ठेवा (जास्तीत जास्त $1 {{PLURAL:$1|दिवसासाठी|दिवसांसाठी}})',
+'remembermypassword' => 'माझा प्रवेश या संगणकावर लक्षात ठेवा (जास्तीत जास्त $1 {{PLURAL:$1|दिवस|दिवसांसाठी}})',
 'securelogin-stick-https' => 'प्रवेशानंतर एचटीटीपीएसच्या संपर्कात रहा',
 'yourdomainname' => 'तुमचे क्षेत्र (डॉमेन) :',
 'externaldberror' => 'विदागार ’खातरजमा’ (प्रमाणितीकरण) त्रुटी होती अथवा तुम्हाला तुमचे बाह्य खाते अद्ययावत  करण्याची परवानगी नाही.',
@@ -2159,6 +2157,7 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'mailnologin' => 'पाठविण्याचा पत्ता नाही',
 'mailnologintext' => 'इतर सदस्यांना विपत्र(ई-मेल) पाठवण्याकरिता तुम्ही [[Special:UserLogin|प्रवेश केलेला]] असणे आणि  प्रमाणित (ई-मेल) पत्ता तुमच्या [[Special:Preferences|पसंतीत]] नमुद असणे आवश्यक आहे.',
 'emailuser' => 'या सदस्याला ई-मेल पाठवा',
+'emailuser-title-notarget' => 'विपत्र (ईमेल) उपयोगकर्ता',
 'emailpage' => 'विपत्र (ईमेल) उपयोगकर्ता',
 'emailpagetext' => 'जर या सदस्याने प्रमाणित विपत्र (ईमेल)पत्ता तीच्या अथवा त्याच्या सदस्य पसंतीत नमुद केला असेल,तर खालील सारणी तुम्हाला एक(च) संदेश पाठवेल.तुम्ही तुमच्या [[Special:Preferences|सदस्य पसंतीत]] नमुद केलेला विपत्र पत्ता "कडून" पत्त्यात येईल म्हणजे  प्राप्तकरता आपल्याला उत्तर देऊ शकेल.',
 'usermailererror' => 'पत्र बाब त्रुटी वापस पाठवली:',
@@ -2228,11 +2227,7 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 
 'enotif_mailer' => '{{SITENAME}} सूचना विपत्र',
 'enotif_reset' => 'सर्व पानास भेट दिल्याचे नमुद करा',
-'enotif_newpagetext' => 'हे नवीन पान आहे.',
 'enotif_impersonal_salutation' => '{{SITENAME}} सदस्य',
-'changed' => 'बदलले',
-'created' => 'तयार केले',
-'enotif_subject' => '{{SITENAME}} पान $PAGETITLE $PAGEEDITOR ने $CHANGEDORCREATED आहे',
 'enotif_lastvisited' => 'तुमच्या शेवटच्या भेटीनंतरचे बदल बघणयासाठी पहा - $1.',
 'enotif_lastdiff' => 'हा बदल पहाण्याकरिता $1 पहा.',
 'enotif_anon_editor' => 'अनामिक उपयोगकर्ता $1',
@@ -2930,7 +2925,10 @@ $1',
 
 # Info page
 'pageinfo-title' => '"$1" च्याबद्दल माहिती',
+'pageinfo-not-current' => 'माफ करा, जुन्या अवृतिला माहिती देणे अक्षक्य आहे|',
+'pageinfo-header-basic' => 'मूलभूत माहिती',
 'pageinfo-header-edits' => 'संपादने',
+'pageinfo-header-restrictions' => 'पान सुरक्षा',
 'pageinfo-views' => 'अभिप्रायांची संख्या',
 'pageinfo-watchers' => 'पाहणाऱ्यांची संख्या',
 'pageinfo-edits' => 'संपादनांची संख्या',
@@ -3729,7 +3727,7 @@ $5
 'sqlite-no-fts' => 'पूर्ण-मजकूर शोध समर्थनाविरहित $1',
 
 # New logging system
-'logentry-delete-delete' => '$1 वगळले पान $3',
+'logentry-delete-delete' => '$1 वगळलेले पान $3',
 'logentry-delete-restore' => '$1 restored पृष्ठ  $3',
 'logentry-delete-event' => ' $3: $4 वरील  {{PLURAL:$5|एका नोंद घटने |$5 lनोंद घटनां}} ची दृष्यता $1 बदलली',
 'logentry-delete-revision' => '$3: $4 पानावरील  {{PLURAL:$5|एका आवृत्ती |$5 lआवृत्यां}} ची दृष्यता $1 बदलली',
index 3816708..7ac4d9e 100644 (file)
@@ -359,6 +359,7 @@ $messages = array(
 'namespaces' => 'Ruang nama',
 'variants' => 'Kelainan',
 
+'navigation-heading' => 'Menu pandu arah',
 'errorpagetitle' => 'Ralat',
 'returnto' => 'Kembali ke $1.',
 'tagline' => 'Daripada {{SITENAME}}.',
@@ -602,9 +603,9 @@ Pentadbir yang menguncinya memberikan penjelasan yang berikut: "$3".',
 '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.",
-'welcomecreation' => '== Selamat datang, $1! ==
-
-Akaun anda telah dibuka. Jangan lupa untuk mengubah [[Special:Preferences|keutamaan {{SITENAME}}]] anda.',
+'welcomeuser' => 'Selamat datang, $1!',
+'welcomecreation-msg' => 'Akaun anda telah dibuka.
+Jangan lupa untuk mengubah [[Special:Preferences|keutamaan anda di {{SITENAME}}]].',
 'yourname' => 'Nama pengguna:',
 'yourpassword' => 'Kata laluan:',
 'yourpasswordagain' => 'Ulangi kata laluan:',
@@ -1721,6 +1722,7 @@ Sila hubungi [[Special:ListUsers/sysop|pentadbir sistem]].',
 'backend-fail-notsame' => 'Satu fail yang tidak seiras sudah wujud di $1.',
 'backend-fail-invalidpath' => '$1 bukan laluan storan yang sah.',
 'backend-fail-delete' => 'Fail $1 tidak dapat dihapuskan.',
+'backend-fail-describe' => 'Metadata untuk fail "$1" tidak dapat diubah.',
 'backend-fail-alreadyexists' => 'Fail $1 sudah wujud.',
 'backend-fail-store' => 'Fail $1 tidak dapat distorkan di $2.',
 'backend-fail-copy' => 'Fail $1 tidak dapat disalin ke $2.',
@@ -2230,11 +2232,7 @@ Jika anda mahu membuang laman tersebut daripada senarai pantau, klik \"Nyahpanta
 
 'enotif_mailer' => 'Sistem Pemberitahuan {{SITENAME}}',
 'enotif_reset' => 'Tandakan semua laman sebagai telah dikunjungi',
-'enotif_newpagetext' => 'Ini adalah sebuah laman baru.',
 'enotif_impersonal_salutation' => 'Pengguna {{SITENAME}}',
-'changed' => 'diubah',
-'created' => 'dicipta',
-'enotif_subject' => 'Laman $PAGETITLE di {{SITENAME}} telah $CHANGEDORCREATED oleh $PAGEEDITOR',
 'enotif_lastvisited' => 'Lihat $1 untuk semua perubahan sejak kunjungan terakhir anda.',
 'enotif_lastdiff' => 'Rujuk $1 untuk melihat perubahan ini.',
 'enotif_anon_editor' => 'pengguna tanpa nama $1',
@@ -3022,6 +3020,8 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
 'markedaspatrollederror' => 'Tidak boleh menanda ronda',
 'markedaspatrollederrortext' => 'Anda perlu menyatakan semakan untuk ditanda ronda.',
 'markedaspatrollederror-noautopatrol' => 'Anda tidak dibenarkan menanda ronda perubahan anda sendiri.',
+'markedaspatrollednotify' => 'Perubahan pada $1 ini telah ditandai sebagai dironda.',
+'markedaspatrollederrornotify' => 'Penandaan sebagai dironda gagal.',
 
 # Patrol log
 'patrol-log-page' => 'Log pemeriksaan',
@@ -3844,9 +3844,9 @@ Imej ditunjuk dalam leraian penuh, jenis fail yang lain dibuka dengan atur cara
 'logentry-move-move_redir-noredirect' => '$1 mengalihkan laman $3 ke $4 pada satu lencongan tanpa meninggalkan lencongan',
 'logentry-patrol-patrol' => '$1 menandakan semakan $4 daripada laman $3 sebagai dironda',
 'logentry-patrol-patrol-auto' => '$1 menandakan semakan $4 daripada laman $3 sebagai dironda secara automatik',
-'logentry-newusers-newusers' => '$1 membuka akaun pengguna',
-'logentry-newusers-create' => '$1 membuka akaun pengguna',
-'logentry-newusers-create2' => '$1 membuka akaun pengguna $3',
+'logentry-newusers-newusers' => 'Akaun pengguna $1 dibuka',
+'logentry-newusers-create' => 'Akaun pengguna $1 dibuka',
+'logentry-newusers-create2' => 'Akaun pengguna $3 dibuka oleh $1',
 'logentry-newusers-autocreate' => 'Akaun $1 dibuka secara automatik',
 'newuserlog-byemail' => 'kata laluan dihantar melalui e-mel',
 
@@ -3922,6 +3922,4 @@ Ataupun, anda boleh menggunakan borang yang mudah di bawah. Ulasan anda akan dic
 'duration-centuries' => '$1 abad',
 'duration-millennia' => '$1 alaf',
 
-# Unknown messages
-'mytalk-parenthetical' => 'bincang',
 );
index 432c871..6955572 100644 (file)
@@ -665,9 +665,6 @@ Ir-raġuni li ġiet mogħtija kienet ''$2''.",
 
 Tista' tkompli tuża' {{SITENAME}} bħala utent anonimu, jew tista' terġa <span class='plainlinks'>[$1 tidħol]</span> bħala l-istess utent jew wieħed differenti.
 Kun af li ċerti paġni jistgħu jkomplu jidhru bħallikieku l-illogjar 'l barra mill-kont qatt ma seħħ, sakemm ma tħassarx il-cache tal-browser.",
-'welcomecreation' => "== Merħba, $1! ==
-Il-kont tiegħek ġie maħluq.<br />
-Tinsiex tippersonalizza l-[[Special:Preferences|preferenzi]] ta' {{SITENAME}}.",
 'yourname' => 'Isem tal-utent:',
 'yourpassword' => 'Password:',
 'yourpasswordagain' => "Erġa' ikteb il-password:",
@@ -1514,8 +1511,9 @@ Hawnhekk hawn valur iġġenerat b'mod każwali li inti tista' tuża: $1",
 # User rights log
 'rightslog' => 'Drittijiet tal-utenti',
 'rightslogtext' => "Dan huwa r-reġistru tal-modifiki ta' drittijiet tal-utenti.",
-'rightslogentry' => "biddel is-sħubija ta' $1 mill-grupp $2 għall-grupp $3",
+'rightslogentry' => "biddel is-sħubija ta' $1 minn $2 għal $3",
 'rightslogentry-autopromote' => 'ġie awtomatikament promoss minn $2 għal $3',
+'logentry-rights-rights' => "$1 biddel is-sħubija ta' $3 minn $4 għal $5",
 'rightsnone' => '(xejn)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1941,15 +1939,16 @@ Daħħal: tip/sottotip, eż. <code>image/jpeg</code>.",
 'disambiguations-text' => "Il-Paġni li jinsabu f'din lista huma parti minn '''paġna ta' diżambigwazzjoni''' b'hekk għandhom jiġu relatati mas-suġġett preċiż minflok. <br />
 Paġna tiġi stimata paġna ta' diżambigwazzjoni dawk kollha li jagħmlu użu mit-template elenkat f'[[MediaWiki:Disambiguationspage]]",
 
-'doubleredirects' => 'Riindirizzi doppji',
-'doubleredirectstext' => 'Din il-paġna telenka dawk il-paġni li jindirizzaw lejn paġna oħra ta\' riindirizzament.
-Kull filliera għandha ħolqa għall-ewwel u t-tieni riindirizz, kif ukoll fejn tirrindirizza t-tieni paġna, is-soltu magħrufa bħalha l-paġna "reali" fejn se twassal, fejn suppost l-ewwel riindirizz għandu jipponta.',
+'doubleredirects' => 'Rindirizzi doppji',
+'doubleredirectstext' => 'Din il-paġna telenka dawk il-paġni li jindirizzaw lejn paġna oħra ta\' rindirizzament.
+Kull filliera għandha ħolqa għall-ewwel u t-tieni rindirizz, kif ukoll fejn tirrindirizza t-tieni paġna, is-soltu magħrufa bħalha l-paġna "reali" fejn se twassal, fejn suppost l-ewwel rindirizz għandu jipponta.
+Daħliet <del>maqtugħa</del> saritilhom it-tiswija.',
 'double-redirect-fixed-move' => '[[$1]] ġie mmexxi awtomatikament, issa hu rindirizz għal [[$2]]',
 'double-redirect-fixed-maintenance' => "Tiswija ta' rindirizz doppju minn [[$1]] għal [[$2]].",
 'double-redirect-fixer' => "Tiswija ta' rindirizz",
 
-'brokenredirects' => 'Riindirizzi ħżiena',
-'brokenredirectstext' => 'Ir-riindirizzi segwenti għandhom ħoloq għal paġni ineżistenti:',
+'brokenredirects' => 'Rindirizzi ħżiena',
+'brokenredirectstext' => 'Ir-rindirizzi segwenti għandhom ħoloq lejn paġni li ma jeżistux:',
 'brokenredirects-edit' => 'editja',
 'brokenredirects-delete' => 'ħassar',
 
@@ -2201,11 +2200,7 @@ Jekk f'xi ħin tkun tixtieq tneħħi l-paġna mil-lista ta' osservazzjoni tiegħ
 
 'enotif_mailer' => "Sistema ta' notifikazzjoni bl-użu tal-posta elettronika fuq {{SITENAME}}",
 'enotif_reset' => 'Immarka l-paġni kollha bħala diġà viżitati',
-'enotif_newpagetext' => 'Din hija paġna ġdida.',
 'enotif_impersonal_salutation' => "Utent ta' {{SITENAME}}",
-'changed' => 'modifikata',
-'created' => 'inħolqot',
-'enotif_subject' => 'Il-Paġna $PAGETITLE ta\' {{SITENAME}} ġiet $CHANGEDORCREATED minn $PAGEEDITOR',
 'enotif_lastvisited' => 'Ara $1 għal modifiki kollha mill-aħħar żjara.',
 'enotif_lastdiff' => 'Ara $1 biex tara din l-modifika.',
 'enotif_anon_editor' => 'utent anonimu $1',
index c5e80be..acb58e8 100644 (file)
@@ -504,9 +504,6 @@ $2، $1',
 'sqlhidden' => '(دستور اس‌کیوال دپوشنی‌یه بیّه)',
 
 # Login and logout pages
-'welcomecreation' => '==$1، خِش بمونی!==
-شِمه حساب بساته بیّه.
-فراموش نکانین که [[Special:Preferences|شه ترجیحات {{SITENAME}}]] ره تنظیم هاکنین.',
 'yourname' => 'شمه کاروری‌نوم:',
 'yourpassword' => 'شمه پسورد',
 'yourpasswordagain' => 'پسورد ره دِباره بنویس',
@@ -864,9 +861,6 @@ $2، $1',
 'watching' => 'ده‌مـبـال هـه‌کـارده‌ن...',
 'unwatching' => 'ده‌مـبـال نـه‌کـارده‌ن...',
 
-'enotif_newpagetext' => 'این صفحه نوبساته هسته',
-'created' => 'بساته بیّه',
-'enotif_subject' => 'صفحه‌ی «$PAGETITLE» {{SITENAME}} به‌دست $PAGEEDITOR $CHANGEDORCREATED‌هسته.',
 'enotif_lastvisited' => 'بدی‌ین همه‌ی تغییرات از آخرین باری که سر بزونی وسّه $1 ره هارشین.',
 'enotif_lastdiff' => 'هارشائن این تغییر وسّه $1 ره بزنین.',
 'enotif_anon_editor' => 'نشناسی‌یه کارور $1',
index 8de89e8..239339b 100644 (file)
@@ -192,7 +192,7 @@ $messages = array(
 'newwindow' => '(Motlapoāz cē yancuīc tlanexillōtl)',
 'cancel' => 'Ticcuepāz',
 'moredotdotdot' => 'Huehca ōmpa...',
-'mypage' => 'Nozāzanil',
+'mypage' => 'Noāmauh',
 'mytalk' => 'Notēixnāmiquiliz',
 'anontalk' => 'Inīn IP ītēixnāmiquiliz',
 'navigation' => 'Nènemòwalistli',
@@ -376,11 +376,6 @@ Hueliz quimpiya tlahtōl tlein ahmo mohuelītih motequitiltia tōcāpan.',
 'virus-unknownscanner' => 'ahmatic antivirus:',
 
 # Login and logout pages
-'welcomecreation' => '== ¡Ximopanōlti, $1! ==
-
-Mocuentah ōmochīuh.
-
-Ye tihuelīti titēchihtoa [[Special:Preferences|motlaēlēhuiliz]].',
 'yourname' => 'Motlatequitiltilīltōca:',
 'yourpassword' => 'Motlahtōlichtacāyo',
 'yourpasswordagain' => 'Motlahtōlichtacāyo occeppa',
@@ -571,6 +566,8 @@ Hueliz ōmopolo huiqui nozo ōmozacac.
 'revdelete-radio-set' => 'Quēmah',
 'revdelete-radio-unset' => 'Ahmo',
 'revdel-restore' => 'Ticpatlāz tlattaliztli',
+'revdel-restore-deleted' => 'tlapohpolōlli tlaceppahuilīztli',
+'revdel-restore-visible' => 'ittaloni tlaceppahuilīztli',
 'pagehist' => 'Zāzanilli tlahcuilōlloh',
 'deletedhist' => 'Ōtlapolo tlahcuilōlloh',
 'revdelete-edit-reasonlist' => 'Tiquimpatlāz īxtlamatiliztli tlapoloaliztechcopa',
@@ -594,10 +591,12 @@ Hueliz ōmopolo huiqui nozo ōmozacac.
 
 # Search results
 'searchresults' => 'Tlatēmoliztli',
+'searchresults-title' => '«$1» tlatēmōliztli īmochīhualiz',
 'searchsubtitle' => 'Ōtictēmōz \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|mochīntīn zāzaniltin mopēhua īca "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|mochīntīn zāzaniltin tzonhuilia "$1" īhuīc]])',
 'searchsubtitleinvalid' => "Ōtictēmo '''$1'''",
 'prevn' => '{{PLURAL:$1|$1}} achtopa',
 'nextn' => 'niman {{PLURAL:$1|$1}}',
+'shown-title' => 'Quinēxiltīz $1 {{PLURAL:$|mochīhualiztli}} cece āmac',
 'viewprevnext' => 'Xiquintta ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => "'''Ye ia zāzanilli ītōca \"[[\$1]]\" inīn huiquipan'''",
 'searchmenu-new' => "'''Tihuelīti ticchīhuāz zāzanilli ītōca \"[[:\$1]]\" inīn huiquipan'''",
@@ -766,6 +765,8 @@ Intlā ticnequi, tlācah quimatīzqueh motequi.',
 'recentchanges' => 'Yancuīc tlapatlaliztli',
 'recentchanges-legend' => 'Yancuīc tlapatlaliztechcopa tlanequiliztli',
 'recentchanges-summary' => 'Xiquinttāz in achi yancuīc ahmo occequīntīn tlapatlaliztli huiquipan inīn zāzanilpan.',
+'recentchanges-label-newpage' => 'Inīn tlapatlaliztli ōquiyōcox cē yancuīc āmatl',
+'recentchanges-label-minor' => 'Inīn tlapatlaliztli tepitōn',
 'rcnote' => "Nicān {{PLURAL:$1|cah '''1''' tlapatlaliaztli|cateh in xōcoyōc '''$1''' tlapatlaliztli}} īpan xōcoyōc {{PLURAL:$2|tōnalli|'''$2''' tōnaltin}} īhuīcpa $5, $4.",
 'rclistfrom' => 'Xiquinttāz yancuīc tlapatlaliztli īhuīcpa $1',
 'rcshowhideminor' => '$1 tlapatlalitzintli',
@@ -995,6 +996,7 @@ Nò mà mỏta in tlèn [[Special:WantedCategories|ìpan kineki tlaìxmatkàtlà
 'linksearch' => 'Calān tzonhuiliztli tlatemoliztli',
 'linksearch-ns' => 'Tōcātzin:',
 'linksearch-ok' => 'Tictēmōz',
+'linksearch-line' => '$1 tzonhuīlo īxquichca $2',
 
 # Special:ListUsers
 'listusers-submit' => 'Tiquittāz',
@@ -1027,10 +1029,7 @@ Nò mà mỏta in tlèn [[Special:WantedCategories|ìpan kineki tlaìxmatkàtlà
 'watching' => 'Tlachiyacah...',
 'unwatching' => 'Ahtlachiyacah...',
 
-'enotif_newpagetext' => 'Inīn cah yancuīc zāzanilli.',
 'enotif_impersonal_salutation' => 'tlatequitiltilīlli īpan {{SITENAME}}',
-'changed' => 'ōmotlacuep',
-'created' => 'ōmochīuh',
 'enotif_anon_editor' => 'ahtōcātlatequitiltilīlli $1',
 'enotif_body' => 'Māhuizzoh $WATCHINGUSERNAME,
 
@@ -1172,12 +1171,14 @@ Xiquitta $2 ic yancuīc tlapololiztli.',
 'ipb-unblock-addr' => 'Ahtiquitzacuilīz $1',
 'ipb-unblock' => 'Ahtiquitzacuilīz IP nozo tlatequitiltilīlli',
 'unblockip' => 'Ahtiquitzacuilīz tlatequitiltilīlli',
+'ipblocklist' => 'Tlatequitiltilīltzacualli',
 'ipblocklist-submit' => 'Tlatēmōz',
 'infiniteblock' => 'ahtlamic',
 'expiringblock' => 'tlami īpan $1 īpan $2',
 'anononlyblock' => 'zan ahtōcā',
 'blocklink' => 'tiquitzacuilīz',
 'unblocklink' => 'ahtiquitzacuilīz',
+'change-blocklink' => 'Ticpatlaz tlatzacualli',
 'contribslink' => 'tlapatlaliztli',
 'blocklogpage' => 'Tlatequitiltilīlli ōmotzacuili',
 'blockme' => 'Timitzcuilīz',
@@ -1274,6 +1275,7 @@ Hueliz cah inīn huēyi tlapatlaliztli. Timitztlātlauhtia ticmatīz cuallōtl a
 'tooltip-ca-unwatch' => 'Ahtictlachiyāz inīn zāzanilli',
 'tooltip-search' => 'Tlatēmōz īpan {{SITENAME}}',
 'tooltip-search-go' => 'Tiyaz in zāzanilhuīc īca inīn huel melāhuac tōcaitl intlā yez',
+'tooltip-search-fulltext' => 'Tictemōz inīn tlahcuilōlli in āmac',
 'tooltip-p-logo' => 'Calīxatl',
 'tooltip-n-mainpage' => 'Tiquittaz in calīxatl',
 'tooltip-n-mainpage-description' => 'Tiquittaz in calīxatl',
@@ -1306,6 +1308,7 @@ Hueliz cah inīn huēyi tlapatlaliztli. Timitztlātlauhtia ticmatīz cuallōtl a
 'tooltip-compareselectedversions' => 'Tiquinttāz ahneneuhquiliztli ōme zāzanilli tlapatlaliznepantlah.',
 'tooltip-watch' => 'Ticcēntilīz inīn zāzanilli motlachiyalizhuīc',
 'tooltip-upload' => 'Ticpēhua quetzaliztli',
+'tooltip-summary' => 'Xicaquilia tepitōn tlahcuilōltōntli',
 
 # Attribution
 'anonymous' => 'Ahtōcāitl {{PLURAL:$1|tlatequitiltilīlli|tlatequitiltilīlli}} īpan {{SITENAME}}',
index b647cf7..3b45724 100644 (file)
@@ -33,6 +33,7 @@
  * @author Nghtwlkr
  * @author Njardarlogar
  * @author Nsaa
+ * @author Pladask
  * @author Purodha
  * @author Qaqqalik
  * @author Samuelsen
@@ -723,9 +724,6 @@ Administrators nærmere begrunnelse: «$3».',
 
 Du kan fortsette å bruke {{SITENAME}} anonymt, eller <span class='plainlinks'>[$1 logge inn igjen]</span> som samme eller en annen bruker.
 Merk at noen sider kan vise at du fortsatt er logget inn fram til du tømmer mellomlageret i nettleseren.",
-'welcomecreation' => '==Velkommen, $1!==
-Brukerkontoen din har blitt opprettet.
-Ikke glem å endre [[Special:Preferences|innstillingene]] dine.',
 'yourname' => 'Brukernavn:',
 'yourpassword' => 'Passord:',
 'yourpasswordagain' => 'Gjenta passord',
@@ -1771,7 +1769,7 @@ Se [[Special:NewFiles|galleriet over nye filer]] for en mer visuell visning',
 'fileexists' => 'Ei fil med dette navnet finnes allerede.
 Sjekk <strong>[[:$1]]</strong> hvis du ikke er sikker på at du vil forandre den.
 [[$1|thumb]]',
-'filepageexists' => 'Beskrivelsessiden for denne filen finnes allerede på <strong>[[:$1]]</strong>, men ingen filer med dette navnet finnes. Sammendraget du skruver inn vil ikke vises på beskrivelsessiden. For at det skal dukke opp der må du skrive det inn manuelt etter å da lastet opp filen.
+'filepageexists' => 'Beskrivelsessiden for denne filen finnes allerede på <strong>[[:$1]]</strong>, men ingen filer med dette navnet finnes. Sammendraget du skriver inn vil ikke vises på beskrivelsessiden. For at det skal dukke opp der må du skrive det inn manuelt etter å ha lastet opp filen.
 [[$1|thumb]]',
 'fileexists-extension' => 'En fil med et lignende navn finnes: [[$2|thumb]]
 * Navnet på din fil: <strong>[[:$1]]</strong>
@@ -2358,11 +2356,7 @@ Fremtidige endringer til denne siden og den tilhørende diskusjonssiden blir lis
 
 'enotif_mailer' => '{{SITENAME}}s påminnelsessystem',
 'enotif_reset' => 'Merk alle sider som besøkt',
-'enotif_newpagetext' => 'Dette er en ny side.',
 'enotif_impersonal_salutation' => '{{SITENAME}}-bruker',
-'changed' => 'endret',
-'created' => 'opprettet',
-'enotif_subject' => '{{SITENAME}}-siden $PAGETITLE har blitt $CHANGEDORCREATED av $PAGEEDITOR',
 'enotif_lastvisited' => 'Se $1 for alle endringer siden ditt forrige besøk.',
 'enotif_lastdiff' => 'Se $1 for å se denne endringen.',
 'enotif_anon_editor' => 'anonym bruker $1',
@@ -3150,6 +3144,8 @@ Dette er sannsynligvis forårsaket av en lenke til et svartelistet eksternt nett
 'markedaspatrollederror' => 'Kan ikke merke som godkjent',
 'markedaspatrollederrortext' => 'Du må spesifisere en versjon å merke som godkjent.',
 'markedaspatrollederror-noautopatrol' => 'Du kan ikke merke dine egne endringer som godkjente.',
+'markedaspatrollednotify' => 'Denne endringen av $1 har blitt patruljert.',
+'markedaspatrollederrornotify' => 'Patruljering feilet.',
 
 # Patrol log
 'patrol-log-page' => 'Godkjenningslogg',
@@ -4061,6 +4057,4 @@ Om det ikke er tilfellet, kan du bruke det enkle skjemaet som du finner under. K
 'duration-centuries' => '$1 {{PLURAL:$1|århundre|århundrer}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennier}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'diskusjon',
 );
index 289b68b..5051116 100644 (file)
@@ -607,9 +607,6 @@ As Grund is angeven: ''$2''.",
 
 Du kannst {{SITENAME}} nu anonym wiederbruken oder di ünner dissen oder en annern Brukernaam wedder <span class='plainlinks'>[$1 anmellen]</span>.
 Denk dor an, dat welk Sieden ünner Ümstänn noch jümmer so wiest warrn köönt, as wenn du anmellt weerst. Dat ännert sik, wenn du den Cache vun dien Browser leddig maakst.",
-'welcomecreation' => '== Willkamen, $1! ==
-Dien Brukerkonto is nu inricht.
-Vergeet nich, de Sied för di persönlich [[Special:Preferences|intostellen]].',
 'yourname' => 'Dien Brukernaam',
 'yourpassword' => 'Dien Passwoort',
 'yourpasswordagain' => 'Passwoort nochmal ingeven',
@@ -1897,11 +1894,7 @@ Mehr Informatschonen över enkelte Rechten staht ünner [[{{MediaWiki:Listgroupr
 
 'enotif_mailer' => '{{SITENAME}} E-Mail-Bescheedgeevdeenst',
 'enotif_reset' => 'All Sieden as besöcht marken',
-'enotif_newpagetext' => 'Dit is en ne’e Siet.',
 'enotif_impersonal_salutation' => '{{SITENAME}}-Bruker',
-'changed' => 'ännert',
-'created' => 'opstellt',
-'enotif_subject' => '[{{SITENAME}}] De Siet „$PAGETITLE“ is vun $PAGEEDITOR $CHANGEDORCREATED worrn',
 'enotif_lastvisited' => 'All Ännern siet dien letzten Besöök op een Blick: $1',
 'enotif_lastdiff' => 'Kiek bi $1 för dit Ännern.',
 'enotif_anon_editor' => 'Anonymen Bruker $1',
index 8ec9d62..acaca93 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Nedersaksisch (Nedersaksisch)
+/** Nedersaksies (Nedersaksies)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -713,9 +713,6 @@ De beheerder gaf hierveur de volgende reden: "$3".',
 
 Je kunnen {{SITENAME}} noen anoniem gebruken of je eigen <span class='plainlinks'>[$1 opniej anmelden]</span> onder disse of n aandere gebrukersnaam.
 t Kan ween dat der wat ziejen bin die weeregeven wörden asof je an-emeld bin totda'j t tussengeheugen van joew webkieker leegmaken.",
-'welcomecreation' => '== Welkom, $1! ==
-Joew gebrukersnaam is an-emaakt.
-Vergeet niet joew [[Special:Preferences|veurkeuren veur {{SITENAME}}]] in te stellen.',
 'yourname' => 'Gebrukersnaam',
 'yourpassword' => 'Wachtwoord',
 'yourpasswordagain' => 'Opniej invoeren',
@@ -2320,11 +2317,7 @@ Toekomstige wiezigingen op disse zied en de overlegzied zullen hier vermeld wör
 
 'enotif_mailer' => '{{SITENAME}}-berichgevingssysteem',
 'enotif_reset' => 'Markeer alle ziejen as bezöcht.',
-'enotif_newpagetext' => 'Dit is n nieje zied.',
 'enotif_impersonal_salutation' => '{{SITENAME}}-gebruker',
-'changed' => 'ewiezigd',
-'created' => 'an-emaakt',
-'enotif_subject' => '{{SITENAME}}-zied $PAGETITLE is $CHANGEDORCREATED deur $PAGEEDITOR',
 'enotif_lastvisited' => 'Zie $1 veur alle wiezigingen sinds joew leste bezeuk.',
 'enotif_lastdiff' => 'Zie $1 um disse wieziging te bekieken.',
 'enotif_anon_editor' => 'anonieme gebruker $1',
index 9d06fc6..9088513 100644 (file)
@@ -60,7 +60,7 @@ $messages = array(
 'tog-hidepatrolled' => 'गस्ती(patrolled)सम्पादनहरु हालका परिवर्तनहरुमा लुकाउने',
 'tog-newpageshidepatrolled' => 'गस्ती(patrolled) पृष्ठहरु नयाँ पृष्ठ सूचीबाट लुकाउने',
 'tog-extendwatchlist' => 'निगरानी सूचीलाई सबै परिवर्तनहरू देखाउने गरी बढाउने , हालैको  बाहेक',
-'tog-usenewrc' => 'विà¤\95सित à¤¹à¤¾à¤²à¤\95à¥\8b à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤ªà¥\8dरयà¥\8bà¤\97 à¤\97रà¥\8dनà¥\87 ( जाभास्क्रिप्ट चाहिन्छ)',
+'tog-usenewrc' => 'पà¥\83षà¥\8dठà¤\95ा à¤­à¤°à¥\8dà¤\96रà¤\95ा à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤° à¤\85वलà¥\8bà¤\95न à¤¸à¥\82à¤\9aà¥\80à¤\95à¥\8b à¤\86धारमा à¤¸à¤¾à¤®à¥\82हिà¤\95 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\81 ( जाभास्क्रिप्ट चाहिन्छ)',
 'tog-numberheadings' => 'शीर्षकहरुलाई स्वत:अङ्कित गर्नुहोस्',
 'tog-showtoolbar' => 'सम्पादन औजारबट्टा देखाउने( जाभा स्क्रिप्ट चाहिन्छ)',
 'tog-editondblclick' => 'दोहोरो क्लिकमा पृष्ठ सम्पादन गर्ने (जाभा स्क्रिप्ट चाहिन्छ)',
@@ -68,17 +68,17 @@ $messages = array(
 'tog-editsectiononrightclick' => 'शीर्षकमा दाहिने क्लिकद्वारा खण्ड सम्पादन सक्षम पार्ने ( जाभा स्क्रिप्ट चाहिने )',
 'tog-showtoc' => 'सामग्री तालिका हेर्ने (तीन भन्दा बढी शीर्षक भएमा)',
 'tog-rememberpassword' => 'यस ब्राउजरमा मेरो प्रवेशलाई सम्झनुहोस् (अधिकतम $1 {{PLURAL:$1|दिन|दिनहरु}} सम्म)',
-'tog-watchcreations' => 'मà¥\87रà¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\82à¤\9aà¥\80मा à¤®à¥\88लà¥\87 à¤¸à¥\83à¤\9cना à¤\97रà¥\87à¤\95à¥\8b à¤ªà¥\83षà¥\8dठ à¤¥à¤ª्ने',
-'tog-watchdefault' => 'मैले सम्पादन गरेको पृष्ठ निगरानी सूचीमा थप्ने',
-'tog-watchmoves' => 'मैले सारेको पृष्ठहरुलाई निगरानी सूचीमा थप्ने',
-'tog-watchdeletion' => 'मैले हटाएको पृष्ठहरुलाई निगरानी सूचीमा थप्ने',
+'tog-watchcreations' => 'मà¥\87रà¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\82à¤\9aà¥\80मा à¤®à¥\88लà¥\87 à¤¸à¥\83à¤\9cना à¤\97रà¥\87à¤\95à¥\8b à¤ªà¥\83षà¥\8dठ à¤° à¤\85पलà¥\8bड à¤\9cà¥\8bड्ने',
+'tog-watchdefault' => 'मà¥\88लà¥\87 à¤¸à¤®à¥\8dपादन à¤\97रà¥\87à¤\95à¥\8b à¤ªà¥\83षà¥\8dठ à¤° à¤«à¤¾à¤\87ल à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\82à¤\9aà¥\80मा à¤¥à¤ªà¥\8dनà¥\87',
+'tog-watchmoves' => 'मैले सारेको पृष्ठहरु र फाइलहरुलाई निगरानी सूचीमा थप्ने',
+'tog-watchdeletion' => 'मैले हटाएको पृष्ठहरु र फाइलहरुलाई निगरानी सूचीमा थप्ने',
 'tog-minordefault' => 'सबै सम्पादनहरुलाई पूर्वनिर्धारित रुपमा सामान्य चिनो लगाउने',
 'tog-previewontop' => 'सम्पादन सन्दुक अगि पूर्वरुप देखाउने',
 'tog-previewonfirst' => 'पहिलो सम्पादनमा पूर्वरुप देखाउने',
 'tog-nocache' => 'ब्राउजर पृष्ठ क्यासिङ्ग निस्क्रिय पार्ने',
-'tog-enotifwatchlistpages' => 'मà¥\87रà¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\82à¤\9aà¥\80मा à¤°à¤¹à¥\87à¤\95à¥\8b à¤ªà¥\83षà¥\8dठ à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रिà¤\8f à¤®à¤²à¤¾à¤\88 à¤\88-मà¥\87ल à¤\97रà¥\8dनà¥\87',
+'tog-enotifwatchlistpages' => 'मà¥\87रà¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\82à¤\9aà¥\80मा à¤°à¤¹à¥\87à¤\95ा à¤ªà¥\83षà¥\8dठ à¤\85थवा à¤«à¤¾à¤\87लहरà¥\81 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रिà¤\8f à¤®à¤²à¤¾à¤\88 à¤\88-मà¥\87ल à¤\97रियà¥\8bसà¥\8d',
 'tog-enotifusertalkpages' => 'मेरो प्रयोगकर्ता वार्ता पृष्ठ परिवर्तन गरिए मलाई ई-मेल गर्ने',
-'tog-enotifminoredits' => 'पृष्ठहरुको सामान्य सम्पादनको लागि पनि मलाई ई-मेल गर्ने',
+'tog-enotifminoredits' => 'पृष्ठहरु र फाइलहरुको सामान्य सम्पादन भएमा पनि मलाई ई-मेल गरियोस्',
 'tog-enotifrevealaddr' => 'जानकारी इ-मेलहरुमा मेरो इ-मेल खुलाउने',
 'tog-shownumberswatching' => 'निगरानी गरिरहेका प्रयोगकर्ताहरुको संख्या देखाउने',
 'tog-oldsig' => 'वर्तमान हस्ताक्षर:',
@@ -102,7 +102,7 @@ $messages = array(
 
 'underline-always' => 'सधैँ',
 'underline-never' => 'कहिल्यै',
-'underline-default' => 'ब्राउजर पूर्वस्थिति',
+'underline-default' => 'सà¥\8dà¤\95à¥\80न à¤\85थवा à¤¬à¥\8dराà¤\89à¤\9cर à¤ªà¥\82रà¥\8dवसà¥\8dथिति',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'फन्ट प्रकार क्षेत्र सम्पादन गर्नुहोस् :',
@@ -189,8 +189,8 @@ $messages = array(
 'newwindow' => '(नयाँ विन्डोमा खुल्छ)',
 'cancel' => 'रद्द',
 'moredotdotdot' => 'थप...',
-'mypage' => 'मà¥\87रà¥\8b à¤ªà¥\83षà¥\8dठ',
-'mytalk' => 'मà¥\87रà¥\8b à¤\95à¥\81रा',
+'mypage' => 'पृष्ठ',
+'mytalk' => 'वारà¥\8dता',
 'anontalk' => 'यस IP को वारेमा वार्तालाप गर्नुहोस्',
 'navigation' => 'अन्वेषण',
 'and' => '&#32;र',
@@ -212,7 +212,7 @@ $messages = array(
 'vector-action-protect' => 'सुरक्षित गर्ने',
 'vector-action-undelete' => 'हटाएको रद्द गर्ने',
 'vector-action-unprotect' => 'सुरक्षा परिवर्तन गर्ने',
-'vector-simplesearch-preference' => 'विशिषà¥\8dठ खोज सुझावहरु सक्रिय पार्ने (भेक्टर त्वचाको लागि मात्र)',
+'vector-simplesearch-preference' => 'साधारण खोज सुझावहरु सक्रिय पार्ने (भेक्टर त्वचाको लागि मात्र)',
 'vector-view-create' => 'सृजना गर्ने',
 'vector-view-edit' => 'सम्पादन',
 'vector-view-history' => 'इतिहास हेर्ने',
@@ -222,6 +222,7 @@ $messages = array(
 'namespaces' => 'नेमस्पेस',
 'variants' => 'बहुरुपहरु',
 
+'navigation-heading' => 'नेविगेशन मेनू',
 'errorpagetitle' => 'त्रुटि',
 'returnto' => '$1 मा फर्कनुहोस् ।',
 'tagline' => '{{SITENAME}}बाट',
@@ -322,6 +323,7 @@ $1',
 'youhavenewmessages' => 'तपाईंको लागि ($2) मा  $1 छ ।',
 'newmessageslink' => 'नयाँ सन्देशहरू',
 'newmessagesdifflink' => 'आखिरी परिवर्तन',
+'youhavenewmessagesfromusers' => 'तपाईंको लागि  {{PLURAL:$3|प्रयोगकर्ता|$3 प्रयोगकर्ताहरु}} ($2) बाट $1',
 'youhavenewmessagesmulti' => 'तपाईंको लागि $1 मा  नयाँ सन्देशहरू छन्',
 'editsection' => 'सम्पादन',
 'editsection-brackets' => '[$1]',
@@ -434,8 +436,8 @@ $1',
 'viewyourtext' => "यस पृष्ठमा रहेका '''तपाईँका सम्पादनहरु''' हेर्न या प्रतिलिपी गर्न सक्नुहुन्छ :",
 'protectedinterface' => 'यो पृष्ठले सफ्टवेयरको लागि अन्तरमोहडा पाठ प्रदान गर्दछ , र यसलाई दुरुपयोग हुनबाट बचाउन ताल्चा मारिएको छ।',
 'editinginterface' => "'''चेतावनी:''' तपाईं यस्तो पृष्ठलाई सम्पादन गर्नुहुँदैछ, जसले सफ्टवेयरको लागि अन्तरमोहोड़ा (interface) पाठ प्रदान गर्दछ।
-यसको परिवर्तनले अरु प्रयोगकर्ताको अन्तरमोहोड़ाको प्रदर्शनमा प्रभाव पार्छ।
-मà¥\80डियाविà¤\95िà¤\95à¥\8b à¤¸à¥\8dथानà¥\80यà¤\95रण à¤ªà¤°à¤¿à¤¯à¥\8bà¤\9cना à¤¨à¤¿à¤®à¥\8dति à¤\85नà¥\81वाद à¤\97रà¥\8dन à¤\95à¥\83पया à¤¯à¤¹à¤¾à¤\81 à¤\9cानà¥\81हà¥\8bसà¥\8d [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net]",
+यसà¤\95à¥\8b à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनलà¥\87 à¤¯à¤¸ à¤µà¤¿à¤\95िमा à¤\85रà¥\81 à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95à¥\8b à¤\85नà¥\8dतरमà¥\8bहà¥\8bड़ाà¤\95à¥\8b à¤ªà¥\8dरदरà¥\8dशनमा à¤ªà¥\8dरभाव à¤ªà¤¾à¤°à¥\8dà¤\9b।
+सबà¥\88 à¤µà¤¿à¤\95िà¤\95ा à¤¨à¤¿à¤®à¥\8dति à¤\85नà¥\81वाद à¤\9cà¥\8bडà¥\8dन à¤\85थवा à¤ªà¤°à¤¿à¤¬à¤°à¥\8dतन à¤\97रà¥\8dन à¤\95à¥\83पया à¤¯à¤¹à¤¾à¤\81 à¤\9cानà¥\81हà¥\8bसà¥\8d [//translatewiki.net/ translatewiki.net], à¤®à¥\80डियाविà¤\95ि à¤¸à¥\8dथानà¥\80यà¤\95रण à¤ªà¤¾à¤°à¤¿à¤¯à¥\8bà¤\9cना।",
 'sqlhidden' => '(SQL क्वेरी लुकाएको)',
 'cascadeprotected' => 'यो पृष्ठ सम्पादन गर्नबाट सुरक्षित गरिएकोछ किनभनें   {{PLURAL:$1|पृष्ठ |पृष्ठहरु}}मा  सुरक्षित गर्नुका साथै प्रपात ("cascading") विकल्प खुल्ला राखिएकोछ:
 $2',
@@ -448,6 +450,7 @@ $2',
 'filereadonlyerror' => 'फाइल "$1" लाई परिवर्तन गर्न सकिंदैन किन भनें फाइल भण्डार  "$2" केवल पढ्ने स्थिति (read-only mode)मा छ।
 
 कारण यो दिएकोछ: "\'\'$3\'\'"।',
+'exception-nologin' => 'प्रवेश (लग ईन) नगरिएको',
 
 # Virus scanner
 'virus-badscanner' => "खराव मिलान: अज्ञात भाइरस स्क्यानर :''$1''",
@@ -458,8 +461,7 @@ $2',
 'logouttext' => "'''तपाईं अहिले बाहिर निस्कनु भएको छ।'''
 तपाईंले नाम/खाताविनै पनि {{SITENAME}}मा प्रयोग गर्न सक्नुहुन्छ, अथवा अघिकै वा अर्कै कुनै नामको खाताबाट <span class='plainlinks'>[$1 फेरि प्रवेश गर्न]</span> पनि सक्नुहुन्छ।
 याद राख्नुहोस् तपाईंले ब्राउजरको स्मरण भण्डार खालि नगर्दासम्म कुनै पृष्ठहरूमा तपाईं अझै प्रवेश गरिराखेको देखाउन सक्छ।",
-'welcomecreation' => '== स्वागतम् , $1! ==
-तपाँईको खाता खोलिएको छ। [[Special:Preferences|{{SITENAME}} preferences]]मा आफ्ना अभिरुचिहरू परिवर्तन गर्न नबिर्सिनुहोला।',
+'welcomeuser' => '$1जी स्वागत छ!',
 'yourname' => 'प्रयोगकर्ता नाम:',
 'yourpassword' => 'पासवर्ड',
 'yourpasswordagain' => 'पासवर्ड फेरि टाईप गर्नुहोस्',
@@ -877,9 +879,9 @@ $2
 'rev-deleted-user-contribs' => '[प्रयोगकर्ताको नाम अथवा IP ठेगाना हटाइयो - योगदानहरुबाट सम्पादन लुकाइयो]',
 'rev-deleted-text-permission' => "यस पृष्ठको पुनरावलोकन '''मेटिएकोछ'''।
 यसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को मेटिएको लगमा पाउन सकिन्छ]।",
-'rev-deleted-text-unhide' => "यस à¤ªà¥\83षà¥\8dठà¤\95à¥\8b à¤ªà¥\81नरावलà¥\8bà¤\95न '''मेटिएकोछ'''।
-यसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को मेटिएको लगमा पाउन सकिन्छ]।
-यदि चाहनु भयो भनें प्रबन्धकको हैसियतमा [यो पुनरावलोकन $1] हेर्न सक्नुहुन्छ।",
+'rev-deleted-text-unhide' => "यस à¤ªà¥\83षà¥\8dठà¤\95à¥\8b à¤¸à¤\82शà¥\8bधन '''मेटिएकोछ'''।
+यसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} को मेटिएको लगमा पाउन सकिन्छ].
+यदि चाहनु भयो भनें [$1 संशोधन हेर्न] सक्नुहुन्छ।",
 'rev-suppressed-text-unhide' => "यस पृष्ठको पुनरावलोकन '''दबाइएकोछ'''।
 यसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को दबाइएको लगमा पाउन सकिन्छ]।
 यदि चाहनु भयो भनें प्रबन्धकको हैसियतमा [यो पुनरावलोकन $1] हेर्न सक्नुहुन्छ।",
@@ -949,9 +951,10 @@ $1",
 'revdelete-concurrent-change' => ' $2, $1 मिति गरिएको वस्तु परिवर्तन गर्न सकिएन: यसको स्थितीले तपाईले परिवर्तन गर्नलाग्नुहुँदा कोहीअरुले न परिवर्तन गरेजस्तो देखाउँछ
 कृपया लगहरु हेर्नुहोला ।',
 'revdelete-only-restricted' => '$2, $1 मिति भएको वस्तु लुकाउदा त्रुटी भएको छ:तपाईले वस्तुहरुलाई प्रवन्धकहरुको दृष्टीबाट दमन गर्न सक्नुहुन्न अझ कुनै पनि अरु दृष्टी विकल्पहरु नछानीकन।',
-'revdelete-reason-dropdown' => '*मेटाउनुका सामान्य कारणहरु
+'revdelete-reason-dropdown' => 'मेटाउनका सामान्य कारणहरु
 ** कपीराइट उल्लंघन
 ** अनुचित व्यक्तिगत जानकारी
+** अनुचित प्रयोगकर्ता नाम
 ** संभावित अपमानजनक जानकारी',
 'revdelete-otherreason' => 'अन्य/थप कारण:',
 'revdelete-reasonotherlist' => 'अरु कारण',
@@ -990,7 +993,7 @@ $1",
 'mergelogpagetext' => 'एउटा पृष्ठको इतिहास अर्कोमा भर्खरै मिलाइएको सूची तल दिइन्छ।',
 
 # Diffs
-'history-title' => '"$1" à¤\95à¥\8b à¤ªà¥\81नरावलà¥\8bà¤\95न इतिहास',
+'history-title' => '"$1" à¤\95à¥\8b à¤ªà¥\81नरावà¥\83तà¥\8dति इतिहास',
 'difference-multipage' => '(पृष्ठहरुमा भिन्नता)',
 'lineno' => 'पंक्ति $1:',
 'compareselectedversions' => 'छानिएका संस्करणहरू दाँज्नुहोस्',
@@ -1075,7 +1078,7 @@ $1",
 
 # Preferences page
 'preferences' => 'रोजाईहरू',
-'mypreferences' => 'मà¥\87रा à¤\85भिरà¥\81à¤\9aिहरà¥\82',
+'mypreferences' => 'पà¥\8dराथमिà¤\95ताहरà¥\81',
 'prefs-edits' => 'सम्पादन संख्या:',
 'prefsnologin' => 'प्रवेश (लग ईन) नगरिएको',
 'prefsnologintext' => 'प्रयोगकर्ता अभिरूचि निर्धारण गर्न <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ]</span>तपाईंले प्रवेश गरेको हुनुपर्छ।',
@@ -1137,7 +1140,7 @@ $1",
 'timezoneregion-indian' => 'हिन्द महासागर',
 'timezoneregion-pacific' => 'प्राशान्त महासागर',
 'allowemail' => 'अरु प्रयोगकर्ताहरुबाट प्राप्त हुने ईमेल enable गर्नुहोस् ।',
-'prefs-searchoptions' => 'खोज विकल्पहरु',
+'prefs-searchoptions' => 'खोज्ने',
 'prefs-namespaces' => 'नेमस्पेसेज',
 'defaultns' => 'अन्यथा यी नेमस्पेसेजमा खोज्ने :',
 'default' => 'पूर्वनिर्धारित',
@@ -1513,7 +1516,7 @@ $1',
 'backend-fail-writetemp' => 'अस्थाइ फाइलमा लेख्न सकिएन',
 'backend-fail-closetemp' => 'अस्थाइ फाइल बन्द गर्न सकिएन',
 'backend-fail-read' => 'फाइल $1 खोल्न सकिएन ।',
-'backend-fail-create' => 'फाà¤\87ल $1 à¤¸à¤¿à¤°à¥\8dà¤\9cना गर्न सकिएन',
+'backend-fail-create' => 'फाà¤\87ल $1 à¤²à¥\87à¤\96à¥\8dन गर्न सकिएन',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'ZIP परीक्षणको लागि फाइल खोल्दा एक त्रुटी भेटीयो ।',
@@ -1903,11 +1906,7 @@ $1',
 
 'enotif_mailer' => '{{SITENAME}} जानकारी प्रेषक',
 'enotif_reset' => 'सबै पृष्ठहरु भनी दाग दिने',
-'enotif_newpagetext' => 'यो नयाँ पृष्ठ हो।',
 'enotif_impersonal_salutation' => '{{SITENAME}} प्रयोगकर्ता',
-'changed' => 'परिवर्तन भइसकेको',
-'created' => 'बनाइएको',
-'enotif_subject' => '$PAGEEDITORद्वारा {{SITENAME}} पृष्ठ $PAGETITLE $CHANGEDORCREATED गरिएको',
 'enotif_lastvisited' => 'अघिल्लो हेराइपछिका सबै परिवर्तनहरुको निम्ति हेर्नुहोस्: $1',
 'enotif_lastdiff' => 'यस परिवर्तनको निम्ति यो $1 हेर्नुहोस्',
 'enotif_anon_editor' => 'अज्ञात  प्रयोगकर्ता  $1',
index c9de2fe..1c07f0e 100644 (file)
@@ -21,6 +21,7 @@
  * @author Hamaryns
  * @author Jens Liebenau
  * @author Kaganer
+ * @author Kippenvlees1
  * @author Krinkle
  * @author MarkvA
  * @author McDutchie
@@ -519,6 +520,7 @@ $messages = array(
 'namespaces' => 'Naamruimten',
 'variants' => 'Varianten',
 
+'navigation-heading' => 'Navigatiemenu',
 'errorpagetitle' => 'Fout',
 'returnto' => 'Terug naar $1.',
 'tagline' => 'Uit {{SITENAME}}',
@@ -767,8 +769,8 @@ De opgegeven reden is "\'\'$3\'\'".',
 
 U kunt {{SITENAME}} nu anoniem gebruiken of weer <span class='plainlinks'>[$1 aanmelden]</span> als dezelfde of een andere gebruiker.
 Mogelijk worden nog een aantal pagina's weergegeven alsof u aangemeld bent totdat u de cache van uw browser leegt.",
-'welcomecreation' => '== Welkom, $1! ==
-Uw gebruiker is geregistreerd.
+'welcomeuser' => 'Welkom, $1!',
+'welcomecreation-msg' => 'Uw gebruiker is aangemaakt.
 Vergeet niet uw [[Special:Preferences|voorkeuren voor {{SITENAME}}]] aan te passen.',
 'yourname' => 'Gebruikersnaam:',
 'yourpassword' => 'Wachtwoord:',
@@ -1161,7 +1163,7 @@ Deze bestaat al.',
 
 # Content models
 'content-model-wikitext' => 'wikitekst',
-'content-model-text' => 'platte tekst',
+'content-model-text' => 'tekst zonder opmaak',
 'content-model-javascript' => 'JavaScript',
 'content-model-css' => 'CSS',
 
@@ -1949,6 +1951,7 @@ Als het probleem aanhoudt, neem dan contact op met een [[Special:ListUsers/sysop
 'backend-fail-notsame' => 'Er staat al een niet-identiek bestand op de plaats $1.',
 'backend-fail-invalidpath' => '$1 is geen geldig opslagpad.',
 'backend-fail-delete' => 'Het bestand $1 kon niet verwijderd worden.',
+'backend-fail-describe' => 'Het was niet mogelijk de metadata aan te passen voor het bestand "$1".',
 'backend-fail-alreadyexists' => 'Het bestand $1 bestaat al.',
 'backend-fail-store' => 'Het was niet mogelijk het bestand $1 op te slaan op locatie $2.',
 'backend-fail-copy' => 'Het was niet mogelijk het bestand $1 te kopiëren naar $2.',
@@ -2150,7 +2153,7 @@ Invoer: inhoudstype/subtype, bijvoorbeeld <code>image/jpeg</code>.',
 # Unused templates
 'unusedtemplates' => 'Ongebruikte sjablonen',
 'unusedtemplatestext' => 'Deze pagina geeft alle pagina\'s weer in de naamruimte {{ns:template}} die op geen enkele pagina gebruikt worden.
-Vergeet niet de "Verwijzingen naar deze pagina" te controleren alvorens dit sjabloon te verwijderen.',
+Vergeet niet de "Verwijzingen naar deze pagina" te controleren alvorens deze sjabloon te verwijderen.',
 'unusedtemplateswlh' => 'andere verwijzingen',
 
 # Random page
@@ -2463,19 +2466,23 @@ Toekomstige bewerkingen van deze pagina en de bijbehorende overlegpagina worden
 
 'enotif_mailer' => '{{SITENAME}}-berichtensysteem',
 'enotif_reset' => "Alle pagina's markeren als bezocht",
-'enotif_newpagetext' => 'Dit is een nieuwe pagina.',
 'enotif_impersonal_salutation' => 'gebruiker van {{SITENAME}}',
-'changed' => 'gewijzigd',
-'created' => 'aangemaakt',
-'enotif_subject' => 'Pagina $PAGETITLE op {{SITENAME}} is $CHANGEDORCREATED door $PAGEEDITOR',
+'enotif_subject_deleted' => '{{SITENAME}}: pagina $1 is verwijderd door {{GENDER:$2|$2}}',
+'enotif_subject_created' => '{{SITENAME}}: pagina $1 is aangemaakt door {{GENDER:$2|$2}}',
+'enotif_subject_moved' => '{{SITENAME}}: pagina $1 is hernoemd door {{GENDER:$2|$2}}',
+'enotif_subject_restored' => '{{SITENAME}}: pagina $1 is teruggeplaatst door {{GENDER:$2|$2}}',
+'enotif_subject_changed' => '{{SITENAME}}: pagina $1 is bewerkt door {{GENDER:$2|$2}}',
+'enotif_body_intro_deleted' => 'De pagina $1 op {{SITENAME}} is verwijderd door {{GENDER:$2|$2}} op $PAGEEDITDATE. Zie $3 voor de huidige versie.',
+'enotif_body_intro_created' => 'De pagina $1 op {{SITENAME}} is aangemaakt door {{GENDER:$2|$2}} op $PAGEEDITDATE. Zie $3 voor de huidige versie.',
+'enotif_body_intro_moved' => 'De pagina $1 op {{SITENAME}} is hernoemd door {{GENDER:$2|$2}} op $PAGEEDITDATE. Zie $3 voor de huidige versie.',
+'enotif_body_intro_restored' => 'De pagina $1 op {{SITENAME}} is teruggeplaatst door {{GENDER:$2|$2}} op $PAGEEDITDATE. Zie $3 voor de huidige versie.',
+'enotif_body_intro_changed' => 'De pagina $1 op {{SITENAME}} is bewerkt door {{GENDER:$2|$2}} op $PAGEEDITDATE. Zie $3 voor de huidige versie.',
 'enotif_lastvisited' => 'Zie $1 voor alle wijzigingen sinds uw laatste bezoek.',
 'enotif_lastdiff' => 'Ga naar $1 om deze wijziging te bekijken.',
 'enotif_anon_editor' => 'anonieme gebruiker $1',
 'enotif_body' => 'Beste $WATCHINGUSERNAME,
 
-De pagina $PAGETITLE op {{SITENAME}} is $CHANGEDORCREATED op $PAGEEDITDATE door $PAGEEDITOR. Zie $PAGETITLE_URL voor de huidige versie.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Samenvatting van de wijziging: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2731,7 +2738,7 @@ De laatste regel uit het blokkeerlogboek wordt hieronder ter referentie weergege
 'whatlinkshere-hideredirs' => 'doorverwijzingen $1',
 'whatlinkshere-hidetrans' => 'Transclusies $1',
 'whatlinkshere-hidelinks' => 'verwijzingen $1',
-'whatlinkshere-hideimages' => 'bestandsverwijzingen $1',
+'whatlinkshere-hideimages' => 'Bestandsverwijzingen $1',
 'whatlinkshere-filters' => 'Filters',
 
 # Block/unblock
@@ -3295,6 +3302,8 @@ Meestal wordt dit door een externe verwijzing op een zwarte lijst veroorzaakt.',
 'markedaspatrollederror' => 'Kan niet als gecontroleerd worden aangemerkt',
 'markedaspatrollederrortext' => 'Selecteer een versie om als gecontroleerd aan te merken.',
 'markedaspatrollederror-noautopatrol' => 'U kunt uw eigen wijzigingen niet als gecontroleerd markeren.',
+'markedaspatrollednotify' => 'Deze bewerking op $1 is gemarkeerd als gecontroleerd.',
+'markedaspatrollederrornotify' => 'Markeren als gecontroleerd mislukt.',
 
 # Patrol log
 'patrol-log-page' => 'Markeerlogboek',
@@ -3359,6 +3368,7 @@ $1',
 'hours' => '{{PLURAL:$1|$1 uur|$1 uur}}',
 'days' => '{{PLURAL:$1|$1 dag|$1 dagen}}',
 'ago' => '$1 geleden',
+'just-now' => 'Daarnet',
 
 # Bad image list
 'bad_image_list' => "De opmaak is als volgt:
@@ -3854,8 +3864,8 @@ De bevestigingscode vervalt op $4.',
 
 # Scary transclusion
 'scarytranscludedisabled' => '[Interwiki-invoeging van sjablonen is uitgeschakeld]',
-'scarytranscludefailed' => '[Het sjabloon $1 kon niet opgehaald worden]',
-'scarytranscludefailed-httpstatus' => '[Het sjabloon $1 kon niet opgehaald worden: HTTP $2]',
+'scarytranscludefailed' => '[De sjabloon $1 kon niet opgehaald worden]',
+'scarytranscludefailed-httpstatus' => '[De sjabloon $1 kon niet opgehaald worden: HTTP $2]',
 'scarytranscludetoolong' => '[De URL is te lang]',
 
 # Delete conflict
@@ -4074,7 +4084,7 @@ Andere bestandstypen worden direct in het met het MIME-type verbonden programma
 'compare-rev1' => 'Versie 1',
 'compare-rev2' => 'Versie 2',
 'compare-submit' => 'Vergelijken',
-'compare-invalid-title' => 'De titel die u hebt opgegeven is ongeldig.',
+'compare-invalid-title' => 'De opgegeven pagina is ongeldig.',
 'compare-title-not-exists' => 'De titel die u hebt opgegeven bestaat niet.',
 'compare-revision-not-exists' => 'De versie die u hebt opgegeven bestaat niet.',
 
@@ -4129,9 +4139,9 @@ Andere bestandstypen worden direct in het met het MIME-type verbonden programma
 'logentry-move-move_redir-noredirect' => '$1 heeft pagina $3 naar $4 hernoemd over een doorverwijzing zonder een doorverwijzing achter te laten',
 'logentry-patrol-patrol' => '$1 heeft versie $4 van pagina $3 als gecontroleerd gemarkeerd',
 'logentry-patrol-patrol-auto' => '$1 heeft versie $4 van pagina $3 automatisch als gecontroleerd gemarkeerd',
-'logentry-newusers-newusers' => '$1 heeft een gebruiker aangemaakt',
-'logentry-newusers-create' => '$1 is als gebruiker aangemaakt',
-'logentry-newusers-create2' => '$1 heeft een gebruiker $3 aangemaakt',
+'logentry-newusers-newusers' => 'Gebruiker $1 is aangemaakt',
+'logentry-newusers-create' => 'Gebruiker $1 is aangemaakt',
+'logentry-newusers-create2' => 'Gebruiker $3 is aangemaakt door $1',
 'logentry-newusers-autocreate' => 'De gebruiker $1 is automatisch aangemaakt',
 'newuserlog-byemail' => 'wachtwoord is verzonden per e-mail',
 
@@ -4208,5 +4218,5 @@ Anders kunt u ook het eenvoudige formulier hieronder gebruiken. Uw reactie wordt
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennia}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'overleg',
+'svg-long-error' => 'Ongeldig SVG-bestand: $1',
 );
index 6708650..317cb3d 100644 (file)
@@ -482,6 +482,7 @@ $messages = array(
 'namespaces' => 'Namnerom',
 'variants' => 'Variantar',
 
+'navigation-heading' => 'Navigasjonsmeny',
 'errorpagetitle' => 'Feil',
 'returnto' => 'Attende til $1.',
 'tagline' => 'Frå {{SITENAME}}',
@@ -713,9 +714,9 @@ Administratoren som låste filsamlinga oppgav den fylgjande årsaka: «$3».',
 
 Du kan no halde fram å bruke {{SITENAME}} anonymt, eller du kan <span class='plainlinks'>[$1 logge inn att]</span>  med same kontoen eller ein annan brukar kan logge inn.
 Ver merksam på at nokre sider framleis kan visast fram som om du er innlogga fram til du slettar mellomlageret til nettlesaren din.",
-'welcomecreation' => '== Hjarteleg velkommen til {{SITENAME}}, $1! ==
-Brukarkontoen din er oppretta.
-Hugs at du kan endre på [[Special:Preferences|innstillingane]] dine.',
+'welcomeuser' => 'Velkomen, $1!',
+'welcomecreation-msg' => 'Brukarkontoen din er oppretta.
+Gløym ikkje å endra [[Special:Preferences|innstillingane dine for {{SITENAME}}]].',
 'yourname' => 'Brukarnamn:',
 'yourpassword' => 'Passord:',
 'yourpasswordagain' => 'Skriv opp att passordet',
@@ -1015,7 +1016,7 @@ Teksten må du ha skrive sjølv eller ha kopiert frå ein ressurs som er kompati
 Systemadministratoren som låste databasen gav følgjande årsak: $1",
 'protectedpagewarning' => "'''ÅTVARING: Denne sida er verna, slik at berre administratorar kan endra henne.'''
 Det siste loggelementet er oppgjeve under som referanse:",
-'semiprotectedpagewarning' => "'''Merk:''' Denne sida er verna slik at berre registrerte brukarar kan endra henne.
+'semiprotectedpagewarning' => "'''Merk:''' Denne sida er verna slik at berre registrerte brukarar kan endre henne.
 Det siste loggelementet er oppgjeve under som referanse:",
 'cascadeprotectedwarning' => "'''Åtvaring:''' Denne sida er verna så berre brukarar med administratortilgang kan endre henne. Dette er fordi ho er inkludert i {{PLURAL:$1|denne djupverna sida|desse djupverna sidene}}:",
 'titleprotectedwarning' => "'''Åtvaring: Denne sida er verna, så berre [[Special:ListGroupRights|nokre brukarar]] kan opprette henne.'''
@@ -1810,6 +1811,7 @@ $1',
 'backend-fail-notsame' => 'Ein ikkje-identisk fil finst alt på «$1».',
 'backend-fail-invalidpath' => '$1 er ikkje ein gyldig lagringsstig.',
 'backend-fail-delete' => 'Kunne ikkje sletta fila «$1».',
+'backend-fail-describe' => 'Kunne ikkje endra metadataa for fila «$1».',
 'backend-fail-alreadyexists' => 'Fila $1 finst frå før.',
 'backend-fail-store' => 'Kunne ikkje lagra fila «$1» på «$2».',
 'backend-fail-copy' => 'Kunne ikkje kopiera fila «$1» til «$2».',
@@ -2308,11 +2310,7 @@ Om du seinare vil fjerne sida frå overvakingslista, klikk på «Fjern overvakin
 
 'enotif_mailer' => '{{SITENAME}}-endringsmeldingssendar',
 'enotif_reset' => 'Merk alle sidene som vitja',
-'enotif_newpagetext' => 'Dette er ei ny side.',
 'enotif_impersonal_salutation' => '{{SITENAME}}-brukar',
-'changed' => 'endra',
-'created' => 'oppretta',
-'enotif_subject' => '{{SITENAME}}-sida $PAGETITLE har vorte $CHANGEDORCREATED av $PAGEEDITOR',
 'enotif_lastvisited' => 'Sjå $1 for alle endringane sidan siste vitjing.',
 'enotif_lastdiff' => 'Sjå $1 for å sjå denne endringa.',
 'enotif_anon_editor' => 'anonym brukar $1',
@@ -2329,7 +2327,7 @@ Kontakta brukaren:
 e-post: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Du får ikkje fleire endringsvarsel minder du vitjar sida på nytt.
+Du får ikkje fleire endringsvarsel r du vitjar sida på nytt.
 Du kan dessutan nullstilla varselflagga for alle sidene på overvakingslista di.
 
 Helsing det venlege meldingssystemet ditt for {{SITENAME}}
@@ -2341,7 +2339,7 @@ For å endra innstillingane dine for e-postvarsling, vitja
 For å endra innstillingane for overvakingslista di, vitja
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-For å fjerna sita frå overvakingslista di, vitja
+For å fjerna sida frå overvakingslista di, vitja
 $UNWATCHURL
 
 Attendemelding og hjelp:
@@ -3081,6 +3079,8 @@ Vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//trans
 'markedaspatrollederror' => 'Kan ikkje merke sida som patruljert',
 'markedaspatrollederrortext' => 'Du må markere ein versjon for å kunne godkjenne.',
 'markedaspatrollederror-noautopatrol' => 'Ein har ikkje høve til å merkje sine eigne endringar som godkjende.',
+'markedaspatrollednotify' => 'Denne endringa på $1 har vorten merkt som patruljert.',
+'markedaspatrollederrornotify' => 'Det gjekk ikkje å merkja endringa som patruljert.',
 
 # Patrol log
 'patrol-log-page' => 'Patruljeringslogg',
@@ -3886,9 +3886,9 @@ Bilete vert viste i full oppløysing, andre filtypar vert starta direkte i dei t
 'logentry-move-move_redir-noredirect' => '$1 flytte sida $3 til $4 over ei omdirigering utan å lata etter ei omdirigering',
 'logentry-patrol-patrol' => '$1 merkte versjon $4 av sida $3 som patruljert',
 'logentry-patrol-patrol-auto' => '$1 merkte automatisk versjon $4 av sida $3 som patruljert',
-'logentry-newusers-newusers' => '$1 oppretta ein brukarkonto',
-'logentry-newusers-create' => '$1 oppretta ein brukarkonto',
-'logentry-newusers-create2' => '$1 oppretta brukarkontoen $3',
+'logentry-newusers-newusers' => 'Brukarkontoen $1 vart oppretta',
+'logentry-newusers-create' => 'Brukarkontoen $1 vart oppretta',
+'logentry-newusers-create2' => 'Brukarkontoen $3 vart oppretta av $1',
 'logentry-newusers-autocreate' => 'Kontoen $1 vart oppretta av seg sjølv',
 'newuserlog-byemail' => 'passordet er sendt på e-post',
 
@@ -3964,6 +3964,4 @@ Om ikkje kan du nytta det enkle skjemaet under. Merknaden din vert lagd til på
 'duration-centuries' => '$1 {{PLURAL:$1|hundreår|hundreår}}',
 'duration-millennia' => '$1 {{PLURAL:$1|tusenår|tusenår}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'diskusjon',
 );
index b29de60..f02999c 100644 (file)
@@ -680,9 +680,6 @@ Lo motiu avançat es « ''$2'' ».",
 
 Podètz contunhar d'utilizar {{SITENAME}} anonimament, o vos podètz <span class='plainlinks'>[$1 tornar connectar]</span> jol meteis nom o amb un autre nom.
 Notatz que d'unas paginas pòdon èsser encara afichadas coma s'eratz encara connect{{GENDER:||at|ada}}, fins al moment qu'escafaretz l'amagatal de vòstre navigador.",
-'welcomecreation' => "== Benvenguda, $1 ! ==
-Vòstre compte d'utilizaire es estat creat.
-Doblidetz pas de personalizar vòstras [[Special:Preferences|{{SITENAME}} preferéncias]].",
 'yourname' => "Vòstre nom d'utilizaire :",
 'yourpassword' => 'Vòstre senhal :',
 'yourpasswordagain' => 'Picatz vòstre senhal tornarmai :',
@@ -2126,11 +2123,7 @@ Las modificacions venentas d\'aquesta pagina e de la pagina de discussion associ
 
 'enotif_mailer' => 'Sistèma d’expedicion de notificacion de {{SITENAME}}',
 'enotif_reset' => 'Marcar totas las paginas coma visitadas',
-'enotif_newpagetext' => 'Aquò es una pagina novèla.',
 'enotif_impersonal_salutation' => 'Utilizaire de {{SITENAME}}',
-'changed' => 'modificada',
-'created' => 'creada',
-'enotif_subject' => 'La pagina $PAGETITLE de {{SITENAME}} es estada $CHANGEDORCREATED per $PAGEEDITOR',
 'enotif_lastvisited' => 'Consultatz $1 per totes los cambiaments dempuèi vòstra darrièra visita.',
 'enotif_lastdiff' => 'Consultatz $1 per veire aquesta modificacion.',
 'enotif_anon_editor' => 'utilizaire anonim $1',
index cd36ce1..6db7ce9 100644 (file)
@@ -390,7 +390,7 @@ $messages = array(
 'cancel' => 'ନାକଚ',
 'moredotdotdot' => 'ଅଧିକ...',
 'mypage' => 'ମୋ ପୃଷ୍ଠା',
-'mytalk' => 'ମà­\8b à¬\86ଲà­\8bà¬\9aନା',
+'mytalk' => 'ଆଲୋଚନା',
 'anontalk' => 'ଏହି ଆଇ.ପି. ଠିକଣା ଉପରେ ଆଲୋଚନା',
 'navigation' => 'ଦିଗବାରେଣି',
 'and' => '&#32;ଓ',
@@ -664,8 +664,7 @@ $2',
 
 ଆପଣ ଅଜଣା ଭାବରେ {{SITENAME}}କୁ ଯାଇପାରିବେ, କିମ୍ବା <span class='plainlinks'>[$1 ଆଉଥରେ]</span> ଆଗର ଇଉଜର ନାଆଁରେ/ଅଲଗା ନାଆଁରେ ଲଗଇନ କରିପାରିବେ ।
 ଜାଣିରଖନ୍ତୁ, କିଛି ପୃଷ୍ଠା ଲଗାଆଉଟ କଲାପରେ ବି ଆଗପରି ଦେଖାଯାଇପାରେ, ଆପଣ ବ୍ରାଉଜର କାସକୁ ହଟାଇଲା ଯାଏଁ ଏହା ଏମିତି ରହିବ ।",
-'welcomecreation' => '== $1!, ଆପଣଙ୍କ ଖାତାଟି ତିଆରି ହୋଇଗଲା==
-ତେବେ, ନିଜର [[Special:Preferences|{{SITENAME}} ପସନ୍ଦସବୁକୁ]] ବଦଳାଇବାକୁ ଭୁଲିବେ ନାହିଁ ।',
+'welcomeuser' => 'ସ୍ଵାଗତ, $1!',
 'yourname' => 'ବ୍ୟବହାରକାରୀଙ୍କ ନାମ:',
 'yourpassword' => 'ପାସୱାର୍ଡ଼',
 'yourpasswordagain' => 'ପାସୱାର୍ଡ଼ ଆଉଥରେ:',
@@ -1336,7 +1335,7 @@ $1",
 
 # Preferences page
 'preferences' => 'ପସନ୍ଦ',
-'mypreferences' => 'ମà­\8b à¬ªà¬¸à¬¨à­\8dଦ',
+'mypreferences' => 'ପସନ୍ଦ',
 'prefs-edits' => 'ସମ୍ପାଦନା ସଂଖ୍ୟା:',
 'prefsnologin' => 'ଲଗ‌‌ ଇନ କରିନାହାନ୍ତି',
 'prefsnologintext' => 'ବ୍ୟବହାରକାରୀଙ୍କ ପସନ୍ଦସବୁ ବଦଳାଇବା ପାଇଁ ଆପଣଙ୍କୁ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ଲଗ ଇନ]</span> କରିବାକୁ ପଡ଼ିବ ।',
@@ -2250,7 +2249,7 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 
 # Watchlist
 'watchlist' => 'ଦେଖାତାଲିକା',
-'mywatchlist' => 'ମà­\8bର à¬¦à­\87à¬\96ାତାଲିକା',
+'mywatchlist' => 'ଦà­\87à¬\96ଣାତାଲିକା',
 'watchlistfor2' => '$1 $2 ପାଇଁ',
 'nowatchlist' => 'ଆପଣଙ୍କ ଦେଖଣା ତାଲିକାରେ କିଛି ବି ଜିନିଷ ନାହିଁ ।',
 'watchlistanontext' => 'ଆପଣା ଦେଖଣାତାଲିକାରେ କିଛି ସମ୍ପାଦନା କରିବା ନିମନ୍ତେ ଦୟାକରି  $1 କରନ୍ତୁ ।',
@@ -2286,11 +2285,7 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 
 'enotif_mailer' => '{{SITENAME}} ସୂଚନା ମେଲ ପ୍ରେରକ',
 'enotif_reset' => 'ସବୁଯାକ ଦେଖାଯାଇଥିବା ପୃଷ୍ଠାକୁ ଚିହ୍ନିତ କରିବେ',
-'enotif_newpagetext' => 'ଏହା ଏକ ନୂଆ ପୃଷ୍ଠା ।',
 'enotif_impersonal_salutation' => '{{SITENAME}} ବ୍ୟବହାରକାରୀ',
-'changed' => 'ବଦଳାଗଲା',
-'created' => 'ତିଆରି କରାଗଲା',
-'enotif_subject' => ' $PAGEEDITORଙ୍କ ଦେଇ {{SITENAME}} ପୃଷ୍ଠାଟି $PAGETITLE  $CHANGEDORCREATED',
 'enotif_lastvisited' => 'ଆପଣଙ୍କ ଶେଷ ଦେଖଣା ପରେ ହୋଇଥିବା ବଦଳସବୁକୁ  ଦେଖିବା ନିମନ୍ତେ $1 ଦେଖନ୍ତୁ ।',
 'enotif_lastdiff' => 'ଏହି ବଦଳ ଦେଖିବା ପାଇଁ $1 ଦେଖନ୍ତୁ ।',
 'enotif_anon_editor' => 'ବେନାମି ସଭ୍ୟ $1',
@@ -2515,7 +2510,7 @@ $1',
 # Contributions
 'contributions' => 'ବ୍ୟବହାରକାରୀଙ୍କ ଦାନ',
 'contributions-title' => '$1 ପାଇଁ ବ୍ୟବହାରକାରୀଙ୍କ ଦାନ',
-'mycontris' => 'ମà­\8b à¬\85ବଦାନ',
+'mycontris' => 'ଅବଦାନ',
 'contribsub2' => '$1 ($2) ପାଇଁ',
 'nocontribs' => 'ଏହି ନିର୍ଣ୍ଣାୟକବଳୀ ନିମନ୍ତେ କିଛି ବି ବଦଳ ମେଳ ଖାଇଲା ନାହିଁ ।',
 'uctop' => '(ଉପର)',
index d9c6daf..f24a186 100644 (file)
@@ -100,12 +100,12 @@ $messages = array(
 'tog-newpageshidepatrolled' => 'Басгæрст фæрстæ ног фæрсты номхыгъдæй æмбæхс',
 'tog-extendwatchlist' => 'Стырдæр цæстдард номхыгъд алы ивдимæ дæр, æрмæст фæстагимæ нал.',
 'tog-usenewrc' => 'Фæстаг æмæ цæстдард ивдтытæ фарсмæ гæсгæ иу кæнæт (домы JavaScript)',
-'tog-numberheadings' => 'Сæргæндты автоматикон нумераци',
+'tog-numberheadings' => 'Сæртæн хæдæвзæргæ номыр æвæрын',
 'tog-showtoolbar' => 'Æвдисын ивыны панел (домы JavaScript)',
 'tog-editondblclick' => 'Фæрстæ дыкъæппæй ив (JavaScript)',
 'tog-editsection' => 'Равдис «баив æй» æрвитæн тексты алы хайы дæр',
-'tog-editsectiononrightclick' => 'СæÑ\80гондÑ\8bл Ñ\80аÑ\85из Ã¦Ñ\80кÑ\8aæппæй Ñ\84аÑ\80Ñ\81Ñ\8b Ñ\85æйÑ\82Ñ\82æ Ð¸Ð² (JavaScript)',
-'tog-showtoc' => 'Сæргæндты номхыгъд æвдис (æртæ сæргондæй фылдæр цы фарсы ис, уым)',
+'tog-editsectiononrightclick' => 'ХайÑ\8b Ñ\81æÑ\80Ñ\8bл Ñ\80аÑ\85иÑ\81 Ã¦Ñ\80кÑ\8aæппæй Ð¸Ð²Ñ\8bнÑ\8b Ñ\84адаÑ\82 Ð±Ð°Ð¸Ñ\83 ÐºÃ¦Ð½Ñ\8bн (домÑ\8b JavaScript)',
+'tog-showtoc' => 'Сæрты номхыгъд æвдисын (æртæйæ фылдæрсæр цы фарсы ис, уым)',
 'tog-rememberpassword' => 'Бахъуыды мæ кæнæд ацы браузер ($1 {{PLURAL:$1|бонмæ|бонмæ}})',
 'tog-watchcreations' => 'Æз цы фæрстæ аразын æмæ цы файлтæ бавгæнын, уыдон мæ цæстдард уæт.',
 'tog-watchdefault' => 'Æз цы фæрстæ æмæ цы файлтæ ивын, уыдон мæ цæстдард уæт',
@@ -140,7 +140,7 @@ $messages = array(
 
 'underline-always' => 'Æдзух',
 'underline-never' => 'Никуы',
-'underline-default' => 'Ð\91Ñ\80аÑ\83зеÑ\80Ñ\8b ÐºÑ\83Ñ\8bд Ñ\83',
+'underline-default' => 'ЦÑ\8aаÑ\80 Ã¦Ð²Ð¸ Ñ\81гаÑ\80æнмæ Ð³Ã¦Ñ\81гæ',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Ивæн бынаты шрифты стил:',
@@ -225,8 +225,8 @@ $messages = array(
 'newwindow' => '(кæны ног рудзынджы)',
 'cancel' => 'Ныууадзын',
 'moredotdotdot' => 'Фылдæр…',
-'mypage' => 'Ð\9cæ Ñ\84арс',
-'mytalk' => 'Ð\9cæ Ð½ыхас',
+'mypage' => 'Фарс',
+'mytalk' => 'Ð\9dыхас',
 'anontalk' => 'Ацы IP-адрисы тæрхон',
 'navigation' => 'Навигаци',
 'and' => '&#32;æмæ',
@@ -258,6 +258,7 @@ $messages = array(
 'namespaces' => 'Номдæттæ',
 'variants' => 'Варианттæ',
 
+'navigation-heading' => 'Навигацион меню',
 'errorpagetitle' => 'Рæдыд',
 'returnto' => 'Фæстæмæ $1 фарсмæ.',
 'tagline' => '{{grammar:ablative|{{SITENAME}}}}',
@@ -333,7 +334,7 @@ $1',
 'disclaimerpage' => 'Project:Нæ бæрн исыны тыххæй',
 'edithelp' => 'Ивынæн æххуыс',
 'edithelppage' => 'Help:Ивд',
-'helppage' => 'Help:СæÑ\80гæндÑ\82æ',
+'helppage' => 'Help:Ð\9cидиÑ\81',
 'mainpage' => 'Сæйраг фарс',
 'mainpage-description' => 'Сæйраг фарс',
 'policy-url' => 'Project:Уагæвæрд',
@@ -367,7 +368,7 @@ $1',
 'editlink' => 'ивын',
 'viewsourcelink' => 'Код кæсын',
 'editsectionhint' => 'Ив хай: $1',
-'toc' => 'Сæргæндтæ',
+'toc' => 'Сæртæ',
 'showtoc' => 'равдисын',
 'hidetoc' => 'бамбæхсын',
 'collapsible-collapse' => 'Стухын',
@@ -455,7 +456,7 @@ $1',
 'cannotdelete-title' => 'Нæ уайы схафын фарс "$1"',
 'delete-hook-aborted' => 'Хук æй хафын нæ бауагъта.
 Уæлæмхасæн æмбарынгæнæн нæ радта.',
-'badtitle' => 'Ã\86нæмбæлон Ñ\81æÑ\80гонд',
+'badtitle' => 'Ã\86взæÑ\80 Ð½Ð¾Ð¼',
 'badtitletext' => 'Æрдомд фарсы ном уыд рæдыдимæ кæнæ афтид кæнæ та йæ æхсæн-æвзаг æви йæ интервики æрвитæн раст нæ уыд.
 Гæнæн ис Номы ис ахæм дамгъæтæ, кæдон уым æвæрын нæй гæнæн.',
 'perfcached' => 'Бындæр цы рардтæ ис, уыдон сты кешгонд æмæ гæнæн ис базæронд сты. Кешы гæнæн ис уа æппæты фылдæр {{PLURAL:$1|иу фæстиуæг|$1 фæстиуæджы}}.',
@@ -505,9 +506,9 @@ $2',
 
 Дæ бон у дарддæр архайай {{grammar:genitive|{{SITENAME}}}} æнæномæй, æви та <span class='plainlinks'>[$1 фæстæмæ бахизын]</span> раздæры номæй кæнæ та æндæр номæй.
 Дæ сæры дар æмæ иуæй иу фæрстæ гæнæн ис æвдыст цæуой афтæ, цымæ нырмæ дæр нæ рахызтæ. Уый тыххæй дæ браузеры кеш сафтид кæн.",
-'welcomecreation' => '== Ӕгас цу, $1! ==
-Дæ аккаунт арæзт æрцыдис.
\9cа Ð´Ã¦ Ñ\84еÑ\80оÑ\85 Ñ\83æÑ\82 Ã¦Ñ\80кæÑ\81Ñ\8bн Ð´Ã¦ [[Special:Preferences|{{grammar:genitive|{{SITENAME}}}} Ñ\84адæÑ\82тæм]].',
+'welcomeuser' => 'Æгас цу, $1!',
+'welcomecreation-msg' => 'Дæ аккаунт арæзт æрцыдис.
\9cа Ð´Ã¦ Ñ\84еÑ\80оÑ\85 Ñ\83æÑ\82 Ã¦Ñ\80кæÑ\81Ñ\8bн Ð´Ã¦ [[Special:Preferences|{{grammar:genitive|{{SITENAME}}}} Ñ\83агæвæÑ\80дтæм]].',
 'yourname' => 'Фæсномыг:',
 'yourpassword' => 'Пароль:',
 'yourpasswordagain' => 'Дæ пароль иу хатт ма:',
@@ -583,7 +584,7 @@ $2',
 'emailauthenticated' => 'Дæ e-mail уыд бæлвырдгонд $2 $3 сахатыл.',
 'emailnotauthenticated' => 'Дæ e-mail адрис нырмæ нæу бæлвырдгонд.
 Иу e-mail дæр дæм нæ уыдзæн æрвыст ацы функцитæй.',
-'noemailprefs' => 'Ð\91аÑ\84Ñ\8bÑ\81Ñ\81 e-mail Ð°Ð´Ñ\80иÑ\81 Ð´Ã¦ Ñ\84адæÑ\82ты, цæмæй ацы функцитæ кусой.',
+'noemailprefs' => 'Ð\91аÑ\84Ñ\8bÑ\81Ñ\81 e-mail Ð°Ð´Ñ\80иÑ\81 Ð´Ã¦ Ñ\83агæвæÑ\80дты, цæмæй ацы функцитæ кусой.',
 'emailconfirmlink' => 'Дæ электронон посты адрис сфидар кæн',
 'invalidemailaddress' => 'E-mail нæй гæнæн райсын, уымæн æмæ йæ формат раст нæу.
 Бафысс раст форматы адрис кæнæ та йæ сафтид кæн.',
@@ -683,12 +684,12 @@ $2
 'nowiki_tip' => 'Ницæмæ дарын вики формат',
 'image_tip' => 'Æфтыд файл',
 'media_tip' => 'Файлмæ æрвитæн',
-'sig_tip' => 'Дæ ырфыст рæстæгимæ',
+'sig_tip' => 'Дæ къухæрфыст, рæстæгимæ',
 'hr_tip' => 'Горизонталон хахх (арæх дзы ма пайда кæн)',
 
 # Edit pages
 'summary' => 'Бындур:',
-'subject' => 'Темæ/сæргонд:',
+'subject' => 'Темæ/сæр:',
 'minoredit' => 'Ай чысыл ивд у.',
 'watchthis' => 'Цæст дарын ацы фарсмæ',
 'savearticle' => 'Бавæрын',
@@ -717,7 +718,7 @@ $2
 * Блокы мысан: $7
 
 Дæ бон у бадзурай {{grammar:allative|$1}} кæнæ [[{{MediaWiki:Grouppage-sysop}}|радгæсмæ]], цæмæй блокы тыххæй аныхас кæнай.
\94æ Ð±Ð¾Ð½ Ð½Ã¦Ñ\83 Ñ\8dлекÑ\82Ñ\80онон Ñ\84Ñ\8bÑ\81Ñ\82æг Ã¦Ð¼ Ð°Ñ\80виÑ\82ай, Ñ\86алÑ\8bнмæ Ð´Ã¦ [[Special:Preferences|аккаÑ\83нÑ\82Ñ\8b Ñ\84адæÑ\82ты]] раст e-mail нæ бацамонай æмæ цалынмæ уымæй дæр нæ дæ блокгонд.
\94æ Ð±Ð¾Ð½ Ð½Ã¦Ñ\83 Ñ\8dлекÑ\82Ñ\80онон Ñ\84Ñ\8bÑ\81Ñ\82æг Ã¦Ð¼ Ð°Ñ\80виÑ\82ай, Ñ\86алÑ\8bнмæ Ð´Ã¦ [[Special:Preferences|аккаÑ\83нÑ\82Ñ\8b Ñ\83агæвæÑ\80дты]] раст e-mail нæ бацамонай æмæ цалынмæ уымæй дæр нæ дæ блокгонд.
 Дæ нырыккон IP адрис у $3, æмæ блокы бæрæггæнæн у #$5.
 Дæ хорзæхæй, уæлдæр цы детальтæ ис, уыдон иу дæ домæнмæ бафтау.",
 'autoblockedtext' => "'''Дæ IP адрис йæхæдæг ныблок ис, уымæн æмæ ууылты архайдта æндæр архайæг, кæй ныблок кодта $1.'''
@@ -731,14 +732,14 @@ $2
 
 Дæ бон у бадзурай {{grammar:allative|$1}} кæнæ æндæр [[{{MediaWiki:Grouppage-sysop}}|радгæсмæ]], цæмæй блокы тыххæй аныхас кæнай.
 
\94æ Ð±Ð¾Ð½ Ð½Ã¦Ñ\83 Ñ\8dлекÑ\82Ñ\80онон Ñ\84Ñ\8bÑ\81Ñ\82æг Ã¦Ð¼ Ð°Ñ\80виÑ\82ай, Ñ\86алÑ\8bнмæ Ð´Ã¦ [[Special:Preferences|аккаÑ\83нÑ\82Ñ\8b Ñ\84адæÑ\82ты]] раст e-mail нæ бацамонай æмæ цалынмæ уымæй дæр нæ дæ блокгонд.
\94æ Ð±Ð¾Ð½ Ð½Ã¦Ñ\83 Ñ\8dлекÑ\82Ñ\80онон Ñ\84Ñ\8bÑ\81Ñ\82æг Ã¦Ð¼ Ð°Ñ\80виÑ\82ай, Ñ\86алÑ\8bнмæ Ð´Ã¦ [[Special:Preferences|аккаÑ\83нÑ\82Ñ\8b Ñ\83агæвæÑ\80дты]] раст e-mail нæ бацамонай æмæ цалынмæ уымæй дæр нæ дæ блокгонд.
 
 Дæ нырыккон IP адрис у $3, æмæ блокы бæрæггæнæн у #$5.
 Дæ хорзæхæй, уæлдæр цы детальтæ ис, уыдон иу дæ домæнмæ бафтау.",
 'blockednoreason' => 'аххос амынд не ’рцыд',
 'whitelistedittext' => 'Дæуæн хъæуы $1, цæмæй фæртæ ивай.',
 'confirmedittext' => 'Фæрстæ ивыны размæ ды хъуамæ сбæлвырд кæнай дæ e-mail адрис.
\94æ Ñ\85æÑ\80зæÑ\85æй, Ñ\81æвæÑ\80 Ã¦Ð¼Ã¦ Ñ\81бæлвÑ\8bÑ\80д ÐºÃ¦Ð½ Ð´Ã¦ e-mail Ð°Ð´Ñ\80иÑ\81 Ð´Ã¦ [[Special:Preferences|Ñ\84адæÑ\82ты]].',
\94æ Ñ\85æÑ\80зæÑ\85æй, Ñ\81æвæÑ\80 Ã¦Ð¼Ã¦ Ñ\81бæлвÑ\8bÑ\80д ÐºÃ¦Ð½ Ð´Ã¦ e-mail Ð°Ð´Ñ\80иÑ\81 Ð´Ã¦ [[Special:Preferences|Ñ\83агæвæÑ\80дты]].',
 'nosuchsectiontitle' => 'Хай нæ уард кæны',
 'nosuchsectiontext' => 'Ды фæлвардтай ахæм фарс ивын, кæцы нæй.
 Гæнæн ис, цалынмæ ды фарс кастæ, уый хаст кæнæ хафт æрцыдис.',
@@ -765,7 +766,7 @@ $2
 'note' => "'''Бафиппай:'''",
 'previewnote' => "'''Зон æй, æмæ ай у æрмæстдæр разбакаст.'''
 Дæ ивдтытæ нырмæ æвæрд не рцыдысты!",
-'continue-editing' => 'Ð\94аÑ\80ддæÑ\80 Ð¸Ð²ын',
+'continue-editing' => 'Ð\98вÑ\8bнÑ\8b Ð±Ñ\8bнаÑ\82мæ Ð°Ñ\86æÑ\83ын',
 'editing' => 'Ивд цæуы $1',
 'editingsection' => 'Ивыс $1 (фарсы хай)',
 'editconflict' => 'Ивыны конфликт: $1',
@@ -851,8 +852,8 @@ $2
 # Search results
 'searchresults' => 'Агуырды фæстиуджытæ',
 'searchresults-title' => 'Агуырды фæстиуæг: «$1»',
-'titlematches' => 'УаÑ\86Ñ\82Ñ\8b Ñ\81æÑ\80гæндÑ\82Ñ\8b Ã¦Ð¼Ñ\86аÑ\83Ñ\82æ',
-'notitlematches' => 'ФæÑ\80Ñ\81Ñ\82Ñ\8b Ñ\81æÑ\80гæндÑ\82Ñ\8b Ð½Ã¦Ð¹',
+'titlematches' => 'УаÑ\86Ñ\8b Ð½Ð¾Ð¼ Ã¦Ð¼Ð±Ã¦Ð»Ñ\8b',
+'notitlematches' => 'Ð\9dикæÑ\86Ñ\8b Ñ\84аÑ\80Ñ\81Ñ\8b Ð½Ð¾Ð¼ Ã¦Ð¼Ð±Ã¦Ð»Ñ\8b',
 'textmatches' => 'Уацты æмцаутæ',
 'prevn' => 'рæздæры {{PLURAL:$1|$1}}',
 'nextn' => 'иннæ {{PLURAL:$1|$1}}',
@@ -862,7 +863,7 @@ $2
 'viewprevnext' => 'Кæсын ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Ацы викийы ис фарс \"[[:\$1]]\" номимæ.'''",
 'searchmenu-new' => "'''Сараз фарс \"[[:\$1]]\" ацы викийы!'''",
-'searchprofile-articles' => 'СæÑ\80гæндÑ\82ы фæрстæ',
+'searchprofile-articles' => 'Ð\9cидиÑ\81ы фæрстæ',
 'searchprofile-project' => 'Æххуыс æмæ Проекты фæрстæ',
 'searchprofile-images' => 'Мультимеди',
 'searchprofile-everything' => 'Алцыдæр',
@@ -879,6 +880,7 @@ $2
 'search-suggest' => 'Кæд мыййаг агурыс: $1',
 'search-interwiki-caption' => 'Æфсымæрон проекттæ',
 'search-interwiki-more' => '(нодзы)',
+'search-relatedarticle' => 'Хæстæг',
 'searchrelated' => 'хæстæг',
 'searchall' => 'иууылдæр',
 'showingresultsheader' => "{{PLURAL:$5|Фæстиуæг '''$1''' '''$3'''-йæ|Фæстиуджытæ '''$1 - $2''' '''$3'''-йæ}} '''{{grammar:dative|$4}}'''",
@@ -897,15 +899,15 @@ $2
 'qbsettings-floatingleft' => 'Рахизырдыгæй ленккæнгæ',
 
 # Preferences page
-'mypreferences' => 'Ð\9cæ Ñ\84адæÑ\82тæ',
+'mypreferences' => 'УагæвæÑ\80дтæ',
 'prefs-edits' => 'Ивдтыты нымæц:',
 'prefsnologin' => 'Системæйæн дæхи нæ бацамыдтай',
 'changepassword' => 'Пароль ивæн',
 'prefs-skin' => 'Цъар',
 'skin-preview' => 'Разæркаст',
-'prefs-beta' => 'Ð\91еÑ\82а Ñ\84адæÑ\82тæ',
+'prefs-beta' => 'Ð\91еÑ\82а Ñ\83агæвæÑ\80дтæ',
 'prefs-datetime' => 'Датæ æмæ рæстæг',
-'prefs-labs' => 'Ð\9bабоÑ\80аÑ\82оÑ\80он Ñ\84адæÑ\82тæ',
+'prefs-labs' => 'Ð\9bабоÑ\80аÑ\82оÑ\80он Ñ\83агæвæÑ\80дтæ',
 'prefs-personal' => 'Архайæджы профил',
 'prefs-rc' => 'Фæстаг ивдтытæ',
 'prefs-watchlist' => 'Цæстдард',
@@ -934,7 +936,7 @@ $2
 'timezoneregion-europe' => 'Европæ',
 'timezoneregion-indian' => 'Индийы фурд',
 'timezoneregion-pacific' => 'Сабыр Фурд',
-'prefs-searchoptions' => 'Агурыны фадæттæ',
+'prefs-searchoptions' => 'Агурын',
 'prefs-namespaces' => 'Номдæттæ',
 'prefs-files' => 'Файлтæ',
 'prefs-custom-css' => 'Хиæвæрд CSS',
@@ -1207,7 +1209,7 @@ $3',
 
 # Watchlist
 'watchlist' => 'Мæ цæстдард рæгъ',
-'mywatchlist' => 'Ð\9cæ Ñ\86æÑ\81Ñ\82даÑ\80д Ñ\84æÑ\80Ñ\81Ñ\82æ',
+'mywatchlist' => 'ЦæÑ\81Ñ\82даÑ\80д',
 'watchlistfor2' => 'Архайæг: $1 $2',
 'nowatchlist' => 'Иу уацмæ дæр дæ цæст нæ дарыс.',
 'watchnologin' => 'Системæйæн дæхи нæ бацамыдтай',
@@ -1227,8 +1229,6 @@ $3',
 'watching' => 'Цæстдард фæрсты номхыгъдмæ афтауын...',
 'unwatching' => 'Цæстдард фæрсты номхыгъдæй аиуварс кæнын...',
 
-'enotif_newpagetext' => 'Ай у нæуæг фарс.',
-'changed' => 'ивд æрцыд',
 'enotif_anon_editor' => 'сусæг архайæг $1',
 
 # Delete
@@ -1274,7 +1274,7 @@ $3',
 # Contributions
 'contributions' => 'Архайæджы бавæрд',
 'contributions-title' => 'Архайæджы бавæрд: $1',
-'mycontris' => 'Ð\9cæ Ð±авæрд',
+'mycontris' => 'Ð\91авæрд',
 'contribsub2' => 'Архайæг: $1 ($2)',
 'uctop' => '(фæстаг)',
 'month' => 'Ацы мæйы (æмæ раздæр):',
@@ -1305,7 +1305,7 @@ $3',
 'whatlinkshere-hideredirs' => '$1 рарвыстытæ',
 'whatlinkshere-hidetrans' => '$1 æфтыдтытæ',
 'whatlinkshere-hidelinks' => '$1 æрвитæнтæ',
-'whatlinkshere-hideimages' => '$1 нывмæ æрвитæнтæ',
+'whatlinkshere-hideimages' => 'Файлмæ æрвитæнтæ $1',
 'whatlinkshere-filters' => 'Фильтртæ',
 
 # Block/unblock
@@ -1368,7 +1368,7 @@ $3',
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Дæ архайæджы фарс',
 'tooltip-pt-mytalk' => 'Дæ ныхасы фарс',
-'tooltip-pt-preferences' => 'Ð\94æ Ñ\84адæÑ\82тæ',
+'tooltip-pt-preferences' => 'Ð\94æ Ñ\83агæвæÑ\80дтæ',
 'tooltip-pt-watchlist' => 'Фæрстæ кæй ивдтытæм ды дарыс дæ цæст',
 'tooltip-pt-mycontris' => 'Дæ бавæрд',
 'tooltip-pt-login' => 'Хуыздæр у куы бахизай системæмæ; фæлæ нæмæнг нæу',
@@ -1570,6 +1570,7 @@ $3',
 # Special:FilePath
 'filepath' => 'Файлмæ фæт',
 'filepath-page' => 'Файл:',
+'filepath-submit' => 'Бацæуын',
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch-filename' => 'Файлы ном:',
@@ -1623,7 +1624,7 @@ $3',
 'api-error-unknown-error' => 'Мидæггаг рæдыд: Цыдæр раст нæ ацыдис, файл куы æвгæдтай, уæд.',
 'api-error-unknown-warning' => 'Нæзонгæ фæдзæхст: "$1".',
 'api-error-unknownerror' => 'Нæзонгæ рæдыд: "$1".',
-'api-error-uploaddisabled' => 'Ацы викийы бавгæныны фадат хицæн у.',
+'api-error-uploaddisabled' => 'Ацы викийы, бавгæныны фадат хицæн у.',
 'api-error-verification-error' => 'Ацы файл гæнæн ис хæлд у, кæнæ йæ номы фæстаг хай раст нæу.',
 
 # Durations
index 5a022f1..004106a 100644 (file)
  * @author Aalam
  * @author Amire80
  * @author Anjalikaushal
+ * @author Babanwalia
  * @author Gman124
  * @author Guglani
  * @author Kaganer
+ * @author Raj Singh
  * @author Sukh
  * @author Surinder.wadhawan
  * @author TariButtar
@@ -143,7 +145,7 @@ $messages = array(
 'tog-editsectiononrightclick' => 'ਸੈਕਸ਼ਨ ਸਿਰਲੇਖਾਂ ਤੇ ਸੱਜੀ ਕਲਿੱਕ ਦੁਆਰਾ ਸੋਧ ਯੋਗ ਕਰੋ (ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਲੋੜੀਂਦੀ ਹੈ)',
 'tog-showtoc' => 'ਟੇਬਲ ਆਫ਼ ਕੰਨਟੈੱਟ ਵੇਖਾਓ (for pages with more than 3 headings)',
 'tog-rememberpassword' => 'ਇਸ ਬਰਾਊਜ਼ਰ ਉੱਤੇ ਮੇਰਾ ਲਾਗਇਨ ਯਾਦ ਰੱਖੋ ($1 {{PLURAL:$1|ਦਿਨ|ਦਿਨਾਂ}} ਲਈ ਵੱਧ ਤੋਂ ਵੱਧ)',
-'tog-watchcreations' => 'ਮà©\87ਰà©\87 à¨µà¨²à©\8bà¨\82 à¨¬à¨£à¨¾à¨\8f à¨\97à¨\8f à¨¨à¨µà©\87à¨\82 à¨¸à¨«à¨¼à©\87 à¨\85ਤà©\87 à¨\85ੱਪਲà©\8bਡ à¨\95à©\80ਤà©\80à¨\86à¨\82 à¨«à¨¼à¨¾à¨\88ਲਾà¨\82 à¨®à©\87ਰà©\80 à¨¨à¨¿à¨\97ਰਾਨà©\80-ਲਿਸà¨\9f à¨µà¨¿ਚ ਪਾਓ',
+'tog-watchcreations' => 'ਮà©\87ਰà©\87 à¨µà¨²à©\8bà¨\82 à¨¬à¨£à¨¾à¨\8f à¨\97à¨\8f à¨¨à¨µà©\87à¨\82 à¨ªà©°à¨¨à©\87 à¨\85ਤà©\87 à¨\85ੱਪਲà©\8bਡ à¨\95à©\80ਤà©\80à¨\86à¨\82 à¨«à¨¼à¨¾à¨\88ਲਾà¨\82 à¨®à©\87ਰà©\80 à¨¨à¨¿à¨\97ਰਾਨà©\80-ਲਿਸà¨\9f à¨µà¨¿à©±ਚ ਪਾਓ',
 'tog-watchdefault' => 'ਮੇਰੇ ਵੱਲੋਂ ਸੋਧੇ ਗਏ ਸਫ਼ੇ ਅਤੇ ਫ਼ਾਈਲਾਂ ਮੇਰੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚ ਪਾਓ',
 'tog-watchmoves' => 'ਮੇਰੇ ਵੱਲੋਂ ਬਦਲੇ ਸਿਰਲੇਖਾਂ ਵਾਲ਼ੇ ਸਫ਼ੇ ਅਤੇ ਫ਼ਾਈਲਾਂ ਮੇਰੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚ ਪਾਓ',
 'tog-watchdeletion' => 'ਮੇਰੇ ਵਲੋਂ ਮਿਟਾਏ ਗਏ ਸਫ਼ੇ ਅਤੇ ਫ਼ਾਈਲਾਂ ਮੇਰੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚ ਪਾਓ',
@@ -183,7 +185,7 @@ Manual:External_editors ਹੋਰ ਜਾਣਕਾਰੀ।])',
 
 'underline-always' => 'ਹਮੇਸ਼ਾਂ',
 'underline-never' => 'ਕਦੇ ਨਹੀਂ',
-'underline-default' => 'ਬਰਾà¨\8aà¨\9c਼ਰ ਡਿਫਾਲਟ',
+'underline-default' => 'ਵਿਸ਼ਾ-ਵਸਤà©\82 à¨\9cਾà¨\82 à¨\87à©°à¨\9fਰਨà©\88à¨\82à¨\9f-à¨\9aਾਰà¨\95 ਡਿਫਾਲਟ',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'ਸੰਪਾਦਨ ਖੇਤਰ ਦੇ ਅੱਖਰਾਂ ਦੀ ਫ਼ੌਂਟ ਰੀਤੀ',
@@ -215,10 +217,10 @@ Manual:External_editors ਹੋਰ ਜਾਣਕਾਰੀ।])',
 'june' => 'ਜੂਨ',
 'july' => 'ਜੁਲਾਈ',
 'august' => 'ਅਗਸਤ',
-'september' => 'ਸਿਤੰਬਰ',
+'september' => 'ਸਤੰਬਰ',
 'october' => 'ਅਕਤੂਬਰ',
 'november' => 'ਨਵੰਬਰ',
-'december' => 'ਦਿਸੰਬਰ',
+'december' => 'ਦਸੰਬਰ',
 'january-gen' => 'ਜਨਵਰੀ',
 'february-gen' => 'ਫ਼ਰਵਰੀ',
 'march-gen' => 'ਮਾਰਚ',
@@ -239,14 +241,14 @@ Manual:External_editors ਹੋਰ ਜਾਣਕਾਰੀ।])',
 'jun' => 'ਜੂਨ',
 'jul' => 'ਜੁਲਾਈ',
 'aug' => 'ਅਗਸਤ',
-'sep' => 'ਸਿਤੰਬਰ',
+'sep' => 'ਸਤੰਬਰ',
 'oct' => 'ਅਕਤੂਬਰ',
 'nov' => 'ਨਵੰਬਰ',
-'dec' => 'ਦਿਸੰਬਰ',
+'dec' => 'ਦਸੰਬਰ',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|à¨\95à©\88à¨\9fà©\87à¨\97ਰà©\80|à¨\95à©\88à¨\9fà©\87à¨\97ਰੀਆਂ}}',
-'category_header' => 'à¨\95à©\88à¨\9fà©\87à¨\97ਰà©\80 "$1" à¨µà¨¿ਚ ਲੇਖ',
+'pagecategories' => '{{PLURAL:$1|ਸ਼à©\8dਰà©\87ਣà©\80|ਸ਼à©\8dਰà©\87ਣੀਆਂ}}',
+'category_header' => 'ਸ਼à©\8dਰà©\87ਣà©\80 "$1" à¨µà¨¿à©±ਚ ਲੇਖ',
 'subcategories' => 'ਸਬ-ਕੈਟੇਗਰੀਆਂ',
 'category-media-header' => 'ਕੈਟੇਗਰੀ "$1" ਵਿਚ ਮੀਡੀਆ',
 'category-empty' => "''ਇਸ ਕੈਟੇਗਰੀ ਵਿਚ ਇਸ ਵੇਲ਼ੇ ਕੋਈ ਵੀ ਸਫ਼ਾ ਜਾਂ ਮੀਡੀਆ ਨਹੀਂ ਹੈ।''",
@@ -254,7 +256,7 @@ Manual:External_editors ਹੋਰ ਜਾਣਕਾਰੀ।])',
 'hidden-category-category' => 'ਲੁਕੀਆਂ ਕੈਟੇਗਰੀਆਂ',
 'category-subcat-count' => 'ਇਸ ਕੈਟੇਗਰੀ ਵਿਚ, ਕੁੱਲ $2 ਵਿਚੋਂ, {{PLURAL:$2|ਸਿਰਫ਼ ਇਹ ਸਬ-ਕੈਟੇਗਰੀ ਹੈ|ਇਹ {{PLURAL:$1|ਸਬ-ਕੈਟੇਗਰੀ ਹੈ|$1 ਸਬ-ਕੈਟੇਗਰੀਆਂ ਹਨ}}}}।',
 'category-subcat-count-limited' => 'ਇਸ ਕੈਟੇਗਰੀ ਵਿਚ {{PLURAL:$1|ਸਬ-ਕੈਟੇਗਰੀ ਹੈ|$1 ਸਬ-ਕੈਟੇਗਰੀਆਂ ਹਨ}}।',
-'category-article-count' => '{{PLURAL:$2|à¨\87ਸ à¨\95à©\88à¨\9fà©\87à¨\97ਰà©\80 à¨µà¨¿à¨\9a à¨¸à¨¿à¨°à¨«à¨¼ à¨\87ਹ à¨¸à¨«à¨¼à¨¾ à¨¹à©\88|à¨\87ਸ à¨\95à©\88à¨\9fà©\87à¨\97ਰà©\80 à¨µà¨¿à¨\9a, à¨\95à©\81ੱਲ $2 à¨µà¨¿à¨\9aà©\8bà¨\82, à¨\87ਹ {{PLURAL:$1|ਸਫ਼ਾ à¨¹à©\88|$1 à¨¸à¨«à¨¼ੇ ਹਨ}}}}।',
+'category-article-count' => '{{PLURAL:$2|à¨\87ਸ à¨¸à¨¼à©\8dਰà©\87ਣà©\80 à¨µà¨¿à©±à¨\9a à¨¸à¨¿à¨°à¨«à¨¼ à¨\87ਹ à¨ªà©°à¨¨à¨¾ à¨¹à©\88।| à¨\87ਸ à¨¸à¨¼à©\8dਰà©\87ਣà©\80 à¨µà¨¿à©±à¨\9a, à¨\95à©\81ੱਲ $2 à¨µà¨¿à©±à¨\9aà©\8bà¨\82, à¨\87ਹ {{PLURAL:$1|ਪੰਨਾ à¨¹à©\88|$1 à¨ªà©°à¨¨ੇ ਹਨ}}}}।',
 'category-article-count-limited' => 'ਮੌਜੂਦਾ ਕੈਟੇਗਰੀ ਵਿਚ ਇਹ {{PLURAL:$1|ਸਫ਼ਾ ਹੈ|$1 ਸਫ਼ੇ ਹਨ}}।',
 'category-file-count' => '{{PLURAL:$2|ਇਸ ਕੈਟੇਗਰੀ ਵਿਚ ਸਿਰਫ਼ ਇਹ ਫ਼ਾਈਲ ਹੈ|ਇਸ ਕੈਟੇਗਰੀ ਵਿਚ {{PLURAL:$1|ਫ਼ਾਈਲ ਹੈ|$1 ਫ਼ਾਈਲਾਂ ਹਨ}}}}।',
 'category-file-count-limited' => 'ਮੌਜੂਦਾ ਕੈਟੇਗਰੀ ਵਿਚ ਇਹ {{PLURAL:$1|ਫ਼ਾਈਲ ਹੈ|$1 ਫ਼ਾਈਲਾਂ ਹਨ}}।',
@@ -268,8 +270,8 @@ Manual:External_editors ਹੋਰ ਜਾਣਕਾਰੀ।])',
 'newwindow' => '(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦੀ ਹੈ)',
 'cancel' => 'ਰੱਦ ਕਰੋ',
 'moredotdotdot' => 'ਹੋਰ...',
-'mypage' => 'ਮà©\87ਰਾ à¨¸à¨«à¨¼ਾ',
-'mytalk' => 'ਮà©\87ਰà©\80 à¨\97ੱਲ-ਬਾਤ',
+'mypage' => 'ਪੰਨਾ',
+'mytalk' => 'ਮà©\87ਰà©\80 à¨\9aਰà¨\9aਾ',
 'anontalk' => 'ਇਸ IP ਲਈ ਗੱਲ-ਬਾਤ',
 'navigation' => 'ਰਹਿਨੁਮਾਈ',
 'and' => '&#32;ਅਤੇ',
@@ -278,9 +280,9 @@ Manual:External_editors ਹੋਰ ਜਾਣਕਾਰੀ।])',
 'qbfind' => 'ਖੋਜੋ',
 'qbbrowse' => 'ਬਰਾਊਜ਼',
 'qbedit' => 'ਸੋਧ',
-'qbpageoptions' => 'à¨\87ਹ à¨¸à¨«à¨¼ਾ',
-'qbmyoptions' => 'ਮà©\87ਰà©\87 à¨¸à¨«à¨¼ੇ',
-'qbspecialpages' => 'à¨\96਼ਾਸ à¨¸à¨«à¨¼ਾ',
+'qbpageoptions' => 'à¨\87ਹ à¨ªà©°à¨¨ਾ',
+'qbmyoptions' => 'ਮà©\87ਰà©\87 à¨ªà©°à¨¨ੇ',
+'qbspecialpages' => 'à¨\96ਾਸ à¨ªà©°à¨¨ਾ',
 'faq' => 'ਅਕਸਰ ਪੁੱਛੇ ਜਾਣ ਵਾਲ਼ੇ ਸਵਾਲ',
 'faqpage' => 'Project:ਸਵਾਲ-ਜਵਾਬ',
 
@@ -331,7 +333,7 @@ Manual:External_editors ਹੋਰ ਜਾਣਕਾਰੀ।])',
 'unprotectthispage' => 'ਇਹ ਸਫ਼ੇ ਦੀ ਸੁਰੱਖਿਆ ਬਦਲੋ',
 'newpage' => 'ਨਵਾਂ ਸਫ਼ਾ',
 'talkpage' => 'ਇਸ ਸਫ਼ੇ ਬਾਰੇ ਚਰਚਾ ਕਰੋ',
-'talkpagelinktext' => 'à¨\97ੱਲ-ਬਾਤ',
+'talkpagelinktext' => 'à¨\9aਰà¨\9aਾ',
 'specialpage' => 'ਖ਼ਾਸ ਸਫ਼ਾ',
 'personaltools' => 'ਨਿੱਜੀ ਸੰਦ',
 'postcomment' => 'ਨਵਾਂ ਸੈਕਸ਼ਨ',
@@ -376,7 +378,7 @@ $1',
 'edithelp' => 'ਮੱਦਦ ਐਡੀਟਿੰਗ',
 'edithelppage' => 'Help:ਐਡਟਿੰਗ',
 'helppage' => 'Help:ਚੀਜ਼ਾਂ',
-'mainpage' => 'ਮà©\81ੱà¨\96 à¨¸à¨«à¨¼ਾ',
+'mainpage' => 'ਮà©\81ੱà¨\96 à¨ªà©°à¨¨ਾ',
 'mainpage-description' => 'ਮੁੱਖ ਸਫ਼ਾ',
 'policy-url' => 'Project:ਪਾਲਸੀ',
 'portal' => 'ਕਮਿਊਨਟੀ ਪੋਰਟਲ',
@@ -402,12 +404,12 @@ $1',
 'newmessageslinkplural' => '{{PLURAL:$1|ਇੱਕ ਨਵਾਂ ਸੁਨੇਹਾ|ਨਵੇਂ ਸੁਨੇਹੇ}} {{PLURAL:$1|ਹੈ|ਹਨ}}',
 'newmessagesdifflinkplural' => 'ਆਖ਼ਰੀ {{PLURAL:$1|ਤਬਦੀਲੀ|ਤਬਦੀਲੀਆਂ}}',
 'youhavenewmessagesmulti' => '$1 ’ਤੇ ਤੁਹਾਡੇ ਲਈ ਨਵੇਂ ਸੁਨੇਹੇ ਹਨ',
-'editsection' => 'ਸੋਧ',
+'editsection' => 'ਸੋਧ',
 'editold' => 'ਸੋਧੋ',
 'viewsourceold' => 'ਸਰੋਤ ਵੇਖੋ',
 'editlink' => 'ਸੋਧੋ',
 'viewsourcelink' => 'ਸਰੋਤ ਵੇਖੋ',
-'editsectionhint' => 'ਸ਼à©\88à¨\95ਸ਼ਨ à¨¸à©\8bਧ: $1',
+'editsectionhint' => 'ਹਿੱਸਾ à¨¸à©\8bਧà©\8b: $1',
 'toc' => 'ਲਿਸਟ',
 'showtoc' => 'ਵੇਖੋ',
 'hidetoc' => 'ਓਹਲੇ',
@@ -423,7 +425,7 @@ $1',
 'site-atom-feed' => '$1 ਐਟਮ ਫੀਡ',
 'page-rss-feed' => '"$1" RSS ਫੀਡ',
 'page-atom-feed' => '"$1" ਐਟਮ ਫੀਡ',
-'red-link-title' => '$1 (ਸਫ਼ਾ ਮੌਜੂਦ ਨਹੀਂ ਹੈ)',
+'red-link-title' => '$1 (ਪੰਨਾ ਮੌਜੂਦ ਨਹੀਂ ਹੈ)',
 'sort-descending' => 'ਘੱਟਦਾ ਕ੍ਰਮ',
 'sort-ascending' => 'ਵੱਧਦਾ ਕ੍ਰਮ',
 
@@ -492,6 +494,7 @@ $1',
 'badtitletext' => 'ਤੁਹਾਡਾ ਦਰਖ਼ਾਸਤਸ਼ੁਦਾ ਸਿਰਲੇਖ ਨਾਕਾਬਿਲ, ਖ਼ਾਲੀ ਜਾਂ ਗ਼ਲਤ ਜੁੜਿਆ ਹੋਇਆ inter-languagd ਜਾਂ inter-wiki ਸਿਰਲੇਖ ਹੈ। ਇਹ ਵੀ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਸ ਵਿਚ ਇਕ-ਦੋ ਅੱਖਰ ਐਸੇ ਹੋਣ ਜੋ ਸਿਰਲੇਖ ਵਿਚ ਵਰਤੇ ਨਹੀਂ ਜਾ ਸਕਦੇ।',
 'viewsource' => 'ਸਰੋਤ ਵੇਖੋ',
 'viewsource-title' => '$1 ਲਈ ਸਰੋਤ ਵੇਖੋ',
+'actionthrottled' => 'ਕਾਰਜ ਬੰਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ',
 'protectedpagetext' => 'ਇਹ ਸਫ਼ਾ ਫੇਰ-ਬਦਲ ਕਰਨ ਖ਼ਿਲਾਫ਼ ਸੁਰੱਖਿਅਤ ਹੈ।',
 'viewsourcetext' => 'ਤੁਸੀਂ ਇਸ ਸਫ਼ੇ ਦਾ ਸਰੋਤ ਵੇਖ ਅਤੇ ਨਕਲ ਕਰ ਸਕਦੇ ਹੋ:',
 'viewyourtext' => 'ਤੁਸੀਂ ਇਸ ਸਫ਼ੇ ’ਤੇ ਕੀਤੀਆਂ "ਆਪਣੀਆਂ ਸੋਧਾਂ" ਦਾ ਸਰੋਤ ਵੇਖ ਅਤੇ ਨਕਲ ਕਰ ਸਕਦੇ ਹੋ:',
@@ -515,9 +518,8 @@ $1',
 
 You can continue to use {{SITENAME}} anonymously, or you can log in again 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.",
-'welcomecreation' => '== ਜੀ ਆਇਆਂ ਨੂੰ, $1! ==
-
-ਤੁਹਾਡਾ ਖਾਤਾ ਬਣ ਚੁੱਕਾ ਹੈ। ਆਪਣੀਆਂ [[Special:Preferences|{{SITENAME}} ਪਸੰਦਾਂ]] ਬਦਲਣੀਆਂ ਨਾ ਭੁੱਲੋ।',
+'welcomeuser' => 'ਜੀ ਆਇਆ ਨੂੰ, $1!',
+'welcomecreation-msg' => 'ਤੁਹਾਡਾ ਖਾਤਾ ਬਣ ਚੁੱਕਾ ਹੈ। ਆਪਣੀਆਂ [[Special:Preferences|{{SITENAME}} ਪਸੰਦਾਂ]] ਬਦਲਣੀਆਂ ਨਾ ਭੁੱਲੋ।',
 'yourname' => 'ਮੈਂਬਰ ਨਾਂ:',
 'yourpassword' => 'ਪਾਸਵਰਡ:',
 'yourpasswordagain' => 'ਪਾਸਵਰਡ ਦੁਬਾਰਾ ਲਿਖੋ:',
@@ -726,7 +728,7 @@ sysop}}|administrator]] ਨਾਲ਼ ਰਾਬਤਾ ਕਰ ਸਕਦੇ ਹੋ
 ਇਕ IP ਪਤਾ ਕਈ ਵਰਤਣ ਵਾਲ਼ਿਆਂ ਦੁਆਰਾ ਸਾਂਝਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
 ਜੇ ਤੁਸੀਂ ਇੱਕ ਗੁਮਨਾਮ ਮੈਂਬਰ ਹੋ ਅਤੇ ਸਮਝਦੇ ਹੋ ਕਿ ਇਹ ਟਿੱਪਣੀਆਂ ਤੁਹਾਡੇ ਲਈ ਹਨ ਤਾਂ ਮਿਹਰਬਾਨੀ ਕਰਕੇ ਹੋਰਾਂ ਗੁਮਨਾਮ ਮੈਂਬਰਾਂ ਨਾਲ਼ ਪੈਦਾ ਹੋਣ ਵਾਲ਼ੀ ਉਲਝਣ ਤੋਂ ਬਚਣ ਲਈ [[Special:UserLogin/signup|ਖਾਤਾ ਬਣਾਓ]] ਜਾਂ [[Special:UserLogin|ਲਾਗਇਨ ਕਰੋ]]।''",
 'noarticletext' => 'ਫ਼ਿਲਹਾਲ ਇਸ ਸਫ਼ੇ ’ਤੇ ਕੋਈ ਲਿਖਤ ਨਹੀਂ ਹੈ। ਤੁਸੀਂ ਦੂਜੇ ਸਫ਼ਿਆਂ ’ਤੇ [[Special:Search/{{PAGENAME}}|ਇਸ ਸਿਰਲੇਖ ਦੀ ਖੋਜ]] ਕਰ ਸਕਦੇ ਹੋ, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ਸਬੰਧਿਤ ਚਿੱਠੇ ਖੋਜ] ਸਕਦੇ ਹੋ ਜਾਂ ਇਸ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ਸਫ਼ੇ ਵਿਚ ਲਿਖ] ਸਕਦੇ ਹੋ</span>।',
-'noarticletext-nopermission' => 'ਫ਼ਿਲਹਾਲ à¨\87ਸ à¨¸à¨«à¨¼à©\87 â\80\99ਤà©\87 à¨\95à©\8bà¨\88 à¨²à¨¿à¨\96ਤ à¨¨à¨¹à©\80à¨\82 à¨¹à©\88। à¨¤à©\81ਸà©\80à¨\82 à¨¦à©\82ਸਰà©\87 à¨¸à¨«à¨¼à¨¿à¨\86à¨\82 à¨¤à©\87 [[Special:Search/{{PAGENAME}}|à¨\87ਸ à¨ªà¨¾à¨  à¨¦à©\80 à¨\96à©\8bà¨\9c]] à¨\95ਰ à¨¸à¨\95ਦà©\87 à¨¹à©\8b, à¨¸à¨¬à©°à¨§à¨¤ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} à¨\9aਿੱਠà©\87] à¨\96à©\8bà¨\9c à¨¸à¨\95ਦà©\87 à¨¹à©\8b, à¨\9cਾà¨\82 [{{fullurl:{{FULLPAGENAME}}|action=edit}} à¨\87ਸ à¨¸à¨«à¨¼à©\87 à¨µà¨¿à¨\9a à¨²à¨¿à¨\96] à¨¸à¨\95ਦà©\87 à¨¹à©\8b</span>।',
+'noarticletext-nopermission' => 'ਫ਼ਿਲਹਾਲ à¨\87ਸ à¨ªà©°à¨¨à©\87 â\80\99ਤà©\87 à¨\95à©\8bà¨\88 à¨²à¨¿à¨\96ਤ à¨¨à¨¹à©\80à¨\82 à¨¹à©\88। à¨¤à©\81ਸà©\80à¨\82 à¨¦à©\82ਸਰà©\87 à¨¸à¨«à¨¼à¨¿à¨\86à¨\82 â\80\99ਤà©\87 [[Special:Search/{{PAGENAME}}|à¨\87ਸ à¨¸à¨¿à¨°à¨²à©\87à¨\96 à¨¦à©\80 à¨\96à©\8bà¨\9c]] à¨\95ਰ à¨¸à¨\95ਦà©\87 à¨¹à©\8b, à¨¸à¨¬à©°à¨§à¨¤ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} à¨\9aਿੱਠà©\87] à¨\96à©\8bà¨\9c à¨¸à¨\95ਦà©\87 à¨¹à©\8b à¨\9cਾà¨\82 [{{fullurl:{{FULLPAGENAME}}|action=edit}} à¨\87ਸ à¨ªà©°à¨¨à©\87 à¨µà¨¿à©±à¨\9a à¨²à¨¿à¨\96] à¨¸à¨\95ਦà©\87 à¨¹à©\8b।</span>',
 'userpage-userdoesnotexist' => 'ਮੈਂਬਰ ਖਾਤਾ "$1" ਰਜਿਸਟਰ ਨਹੀਂ ਹੈ।
 ਜੇ ਤੁਸੀਂ ਇਸਨੂੰ ਬਣਾਉਣਾ/ਸੋਧਣਾ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ ਮਿਰਬਾਨੀ ਕਰਕੇ ਜਾਂਚ ਕਰ ਲਓ।',
 'userpage-userdoesnotexist-view' => 'ਮੈਂਬਰ ਖਾਤਾ "$1" ਰਜਿਸਟਰ ਨਹੀਂ ਹੈ।',
@@ -1006,7 +1008,7 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 
 # Preferences page
 'preferences' => 'ਮੇਰੀ ਪਸੰਦ',
-'mypreferences' => 'ਮà©\87ਰà©\80à¨\86à¨\82 à¨ªà¨¸à©°à¨¦à¨¾à¨\82',
+'mypreferences' => 'ਪਸੰਦਾਂ',
 'prefs-edits' => 'ਸੋਧਾਂ ਦੀ ਗਿਣਤੀ:',
 'prefsnologin' => 'ਲਾਗਇਨ ਨਹੀਂ',
 'prefsnologintext' => 'ਵਰਤੋਂਕਾਰ ਪਸੰਦਾਂ ਸੈੱਟ ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ਲਾਗਇਨ]</span> ਕਰਨਾ ਪਵੇਗਾ।',
@@ -1115,14 +1117,16 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 
 # Groups
 'group' => 'ਗਰੁੱਪ:',
-'group-user' => 'ਵਰਤà©\8bà¨\82à¨\95ਾਰ',
+'group-user' => 'ਮà©\88à¨\82ਬਰ',
 'group-autoconfirmed' => 'ਖ਼ੁਦ-ਤਸਦੀਕਸ਼ੁਦਾ ਮੈਂਬਰ',
 'group-bot' => 'ਬੋਟ',
 'group-all' => '(ਸਭ)',
 
-'group-user-member' => '{{GENDER:$1|ਵਰਤà©\8bà¨\82à¨\95ਾਰ}}',
+'group-user-member' => '{{GENDER:$1|ਮà©\88à¨\82ਬਰ}}',
 'group-bot-member' => 'ਬੋਟ',
 
+'grouppage-user' => '{{ns:project}}:ਮੈਂਬਰ',
+
 # Rights
 'right-read' => 'ਸਫ਼ੇ ਪੜ੍ਹਨਾ',
 'right-edit' => 'ਸਫ਼ੇ ਸੋਧ',
@@ -1179,7 +1183,7 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|ਤਬਦੀਲੀ|
 ਤਬਦੀਲੀਆਂ}}',
-'recentchanges' => 'ਤਾà¨\9c਼ਾ ਤਬਦੀਲੀਆਂ',
+'recentchanges' => 'ਹਾਲ à¨¹à©\80 â\80\99à¨\9a à¨¹à©\8bà¨\88à¨\86à¨\82 ਤਬਦੀਲੀਆਂ',
 'recentchanges-legend' => 'ਤਾਜ਼ਾ ਤਬਦੀਲੀਆਂ ਦੇ ਇਖ਼ਤਿਆਰ',
 'recentchanges-summary' => 'ਇਸ ਵਿਕੀ ’ਤੇ ਹੋਈਆਂ ਸਭ ਤੋਂ ਨਵੀਆਂ ਤਬਦੀਲੀਆਂ ਇਸ ਸਫ਼ੇ ’ਤੇ ਵੇਖੋ।',
 'recentchanges-feed-description' => 'ਇਸ ਵਿਕੀ ’ਤੇ ਹਾਲ ਹੀ ਵਿਚ ਹੋਈਆਂ ਤਬਦੀਲੀਆਂ ਇਸ ਫ਼ੀਡ ’ਚ ਵੇਖੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ।',
@@ -1559,7 +1563,7 @@ to upload files.',
 
 # Watchlist
 'watchlist' => 'ਮੇਰੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ',
-'mywatchlist' => 'ਮà©\87ਰà©\80 à¨¨à¨¿à¨\97ਰਾਨà©\80-ਲਿਸà¨\9f',
+'mywatchlist' => 'ਮà©\87ਰà©\80 à¨§à¨¿à¨\86ਨ-ਸà©\82à¨\9aà©\80',
 'watchlistfor2' => '$1 $2 ਲਈ',
 'nowatchlist' => 'ਤੁਹਾਡੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚ ਕੋਈ ਚੀਜ਼ ਨਹੀਂ ਹੈ।',
 'watchlistanontext' => 'ਆਪਣੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿਚਲੀਆਂ ਚੀਜ਼ਾਂ ਵੇਖਣ ਜਾਂ ਸੋਧਣ ਲਈ ਮਿਹਰਬਾਨੀ ਕਰਕੇ $1।',
@@ -1587,10 +1591,7 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 'watching' => 'ਨਿਗ੍ਹਾ (ਵਾਚ) ਰੱਖੀ ਜਾ ਰਹੀ ਹੈ...',
 'unwatching' => 'ਨਿਗ੍ਹਾ ਰੱਖਣੀ (ਵਾਚ) ਬੰਦ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..',
 
-'enotif_newpagetext' => 'ਇਹ ਨਵਾਂ ਪੇਜ ਹੈ।',
 'enotif_impersonal_salutation' => '{{SITENAME}} ਯੂਜ਼ਰ',
-'changed' => 'ਬਦਲਿਆ',
-'created' => 'ਬਣਾਇਆ',
 'enotif_lastvisited' => 'ਤੁਹਾਡੀ ਆਖ਼ਰੀ ਆਮਦ ਤੋਂ ਲੈ ਕੇ ਹੋਈਆਂ ਤਬਦੀਲੀਆਂ ਵੇਖਣ ਲਈ $1 ਵੇਖੋ।',
 'enotif_lastdiff' => 'ਇਸ ਤਬਦੀਲੀ ਨੂੰ ਵੇਖਣ ਲਈ $1 ਵੇਖੋ।',
 'enotif_anon_editor' => 'ਅਗਿਆਤ ਯੂਜ਼ਰ $1',
@@ -1701,7 +1702,7 @@ delete|ਮਿਟਾਉਣਾਂ ਦਾ ਚਿੱਠਾ]] ਵੇਖੋ।',
 # Contributions
 'contributions' => 'ਮੈਂਬਰ ਯੋਗਦਾਨ',
 'contributions-title' => '$1 ਦੇ ਯੋਗਦਾਨ',
-'mycontris' => 'ਮà©\87ਰਾ à¨¯à©\8bà¨\97ਦਾਨ',
+'mycontris' => 'ਯੋਗਦਾਨ',
 'contribsub2' => '$1 ($2) ਲਈ',
 'uctop' => '(ਟੀਸੀ)',
 'month' => 'ਇਸ (ਅਤੇ ਪਿਛਲੇ) ਮਹੀਨੇ ਤੋਂ :',
@@ -1737,7 +1738,7 @@ delete|ਮਿਟਾਉਣਾਂ ਦਾ ਚਿੱਠਾ]] ਵੇਖੋ।',
 'whatlinkshere-hideredirs' => 'ਅਸਿੱਧੇ ਰਾਹ $1',
 'whatlinkshere-hidetrans' => '$1 ਇੱਥੇ ਕੀ ਕੀ ਜੁੜਦਾ ਹੈ।',
 'whatlinkshere-hidelinks' => '$1 ਲਿੰਕ',
-'whatlinkshere-hideimages' => 'ਤਸਵà©\80ਰ à¨²à¨¿à©°à¨\95 $1',
+'whatlinkshere-hideimages' => 'ਤਸਵà©\80ਰ à¨\9cà©\8bà©\9c $1',
 'whatlinkshere-filters' => 'ਛਾਨਣੀਆਂ',
 
 # Block/unblock
@@ -1897,11 +1898,11 @@ delete|ਮਿਟਾਉਣਾਂ ਦਾ ਚਿੱਠਾ]] ਵੇਖੋ।',
 'tooltip-ca-unwatch' => 'ਇਹ ਸਫ਼ਾ ਆਪਣੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ’ਚੋਂ ਹਟਾਓ',
 'tooltip-search' => '{{SITENAME}} ’ਤੇ ਖੋਜੋ',
 'tooltip-search-go' => 'ਠੀਕ ਇਸ ਨਾਮ ਵਾਲ਼ੇ ਸਫ਼ੇ ’ਤੇ ਜਾਉ, ਜੇ ਮੌਜੂਦ ਹੈ ਤਾਂ',
-'tooltip-search-fulltext' => 'à¨\87ਸ à¨²à¨¿à¨\96ਤ à¨²à¨\88 à¨¸à¨«à¨¼ੇ ਲੱਭੋ',
-'tooltip-p-logo' => 'ਮà©\81ੱà¨\96 à¨¸à¨«à¨¼ੇ ’ਤੇ ਜਾਓ',
+'tooltip-search-fulltext' => 'à¨\87ਸ à¨²à¨¿à¨\96ਤ à¨²à¨\88 à¨ªà©°à¨¨ੇ ਲੱਭੋ',
+'tooltip-p-logo' => 'ਮà©\81ੱà¨\96 à¨ªà©°à¨¨ੇ ’ਤੇ ਜਾਓ',
 'tooltip-n-mainpage' => 'ਮੁੱਖ ਸਫ਼ੇ ’ਤੇ ਜਾਓ',
 'tooltip-n-mainpage-description' => 'ਮੁੱਖ ਸਫ਼ੇ ’ਤੇ ਜਾਓ',
-'tooltip-n-portal' => 'ਪਰà©\8bà¨\9cà©\88à¨\95à¨\9f à¨¬à¨¾à¨°à©\87, à¨¤à©\81ਸà©\80à¨\82 à¨\95à©\80 ਕਰ ਸਕਦੇ ਹੋ, ਕਿੱਥੇ ਕੁਝ ਲੱਭਣਾ ਹੈ',
+'tooltip-n-portal' => 'ਪà©\8dਰà©\8bà¨\9cà©\88à¨\95à¨\9f à¨¬à¨¾à¨°à©\87, à¨\95à©\80 à¨¤à©\81ਸà©\80à¨\82 ਕਰ ਸਕਦੇ ਹੋ, ਕਿੱਥੇ ਕੁਝ ਲੱਭਣਾ ਹੈ',
 'tooltip-n-currentevents' => 'ਮੌਜੂਦਾ ਸਮਾਗਮ ਬਾਰੇ ਪਿਛਲੀ ਜਾਣਕਾਰੀ ਲੱਭੋ',
 'tooltip-n-recentchanges' => 'ਵਿਕੀ ’ਚ ਤਾਜ਼ਾ ਤਬਦੀਲੀਆਂ ਦੀ ਲਿਸਟ',
 'tooltip-n-randompage' => 'ਇਕ ਰਲ਼ਵਾਂ ਸਫ਼ਾ ਲੋਡ ਕਰੋ',
@@ -1912,7 +1913,7 @@ delete|ਮਿਟਾਉਣਾਂ ਦਾ ਚਿੱਠਾ]] ਵੇਖੋ।',
 'tooltip-t-contributions' => 'ਇਸ ਮੈਂਬਰ ਦੇ ਯੋਗਦਾਨ ਦੀ ਲਿਸਟ',
 'tooltip-t-emailuser' => 'ਇਸ ਮੈਂਬਰ ਨੂੰ ਈ-ਮੇਲ ਭੇਜੋ',
 'tooltip-t-upload' => 'ਚਿੱਤਰ ਜਾਂ ਮੀਡਿਆ ਫਾਇਲਾਂ ਅੱਪਲੋਡ ਕਰੋ',
-'tooltip-t-specialpages' => 'ਸਾਰà©\87 à¨\96਼ਾਸ à¨¸à¨«à¨¼ਿਆਂ ਦੀ ਲਿਸਟ',
+'tooltip-t-specialpages' => 'ਸਾਰà©\87 à¨\96ਾਸ à¨ªà©°à¨¨ਿਆਂ ਦੀ ਲਿਸਟ',
 'tooltip-t-print' => 'ਇਹ ਸਫ਼ੇ ਦਾ ਛਪਣਯੋਗ ਵਰਜਨ',
 'tooltip-t-permalink' => 'ਸਫ਼ੇ ਦੇ ਇਸ ਰੀਵਿਜ਼ਨ ਲਈ ਪੱਕਾ ਲਿੰਕ',
 'tooltip-ca-nstab-main' => 'ਸਮੱਗਰੀ ਸਫ਼ਾ ਵੇਖੋ',
@@ -2090,11 +2091,14 @@ delete|ਮਿਟਾਉਣਾਂ ਦਾ ਚਿੱਠਾ]] ਵੇਖੋ।',
 'watchlisttools-edit' => 'ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵੇਖੋ ’ਤੇ ਸੋਧੋ',
 'watchlisttools-raw' => 'ਕੱਚੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਸੋਧੋ',
 
+# Core parser functions
+'duplicate-defaultsort' => 'ਪੁਰਾਣੀ ਮੂਲ ਕਰਮਾਂਕਨ ਕੁੰਜੀ $1 ਦੇ ਬਜਾਏ ਹੁਣ ਮੂਲ ਕਰਮਾਂਕਨ ਕੁੰਜੀ $2 ਹੋਵੇਗੀ।',
+
 # Special:Version
 'version' => 'ਵਰਜਨ',
 
 # Special:SpecialPages
-'specialpages' => 'à¨\96਼ਾਸ à¨¸à¨«à¨¼ੇ',
+'specialpages' => 'à¨\96ਾਸ à¨ªà©°à¨¨ੇ',
 'specialpages-group-login' => 'ਲਾਗਇਨ / ਖਾਤਾ ਬਣਾਓ',
 
 # Special:BlankPage
index b003cb7..8ed1153 100644 (file)
@@ -21,7 +21,7 @@ $messages = array(
 'tog-hidepatrolled' => "Isalikut la reng edit a babanten (''controlled edits'') kareng bayung mengayalili",
 'tog-newpageshidepatrolled' => "Isalikut la reng bulung a babanten (''patrolled pages'') king listaan king bayung bulung (''new page list'')",
 'tog-extendwatchlist' => 'Dagdagan la reng babanten ba lang palto deng anggang mialilan, aliwa mu deng pekabayu.',
-'tog-usenewrc' => 'Mesanting la reng bayung mengayalili (JavaScript)',
+'tog-usenewrc' => '↓mesanting la reng bayung mengayalili (JavaScript)',
 'tog-numberheadings' => 'Tambing lang dinan nomiru deng pamagat',
 'tog-showtoolbar' => 'Ipakit ya panaliling toolbar (JavaScript)',
 'tog-editondblclick' => 'Alilan la reng bulung kapamilatan ning makataduang pamagpindut (JavaScript)',
@@ -29,7 +29,7 @@ $messages = array(
 Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'tog-editsectiononrightclick' => "Paganan ya ing pamag-edit seksiyon (section editing) kapamilata'ning pamag right click kareng pamagat da reng seksiyon (JavaScript)",
 'tog-showtoc' => 'Pakit ya ing kalamnan [table of contents] (kareng bulung a maki 3 o mas dakal a pamagat)',
-'tog-rememberpassword' => 'Tandanan ya ing kanakung login keng computer a ini (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'tog-rememberpassword' => 'Tandanan ya ing kanakung login keng computer a ini (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'Idagdag la deng bulung a lelengan ku kareng babanten',
 'tog-watchdefault' => 'Idagdag la reng bulung a inalilan ku kareng babanten',
 'tog-watchmoves' => 'Idagdag la reng bulung a inalis ku kareng babanten',
@@ -50,7 +50,7 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning 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' => 'Isaliut mo reng alili kareng babante',
+'tog-watchlisthideown' => 'Isalikut mo reng alili kareng babanten',
 'tog-watchlisthidebots' => 'Isalikut la reng edit kareng babanten',
 'tog-watchlisthideminor' => 'Isalikut la reng mangalating edits kareng babanten',
 'tog-watchlisthideliu' => "Isalikut la reng elilan da reng talagamit a maka-log in (''edits by logged in users'') king listaan da reng babanten (''watchlist'')",
@@ -164,6 +164,7 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'vector-view-history' => 'Lawen ya ing amlat',
 'vector-view-view' => 'Basan',
 'vector-view-viewsource' => 'Lawen ya ing pikuanan',
+'actions' => '↓Ding kilus',
 'namespaces' => 'Karinanlagiu',
 'variants' => 'Aliwapa',
 
@@ -367,9 +368,6 @@ Iti ing binie nang sangkan: ''$2''.",
 
 Malyari mung isundu ing pamangamit mu king {{SITENAME}} a e ka papakilala, o malyari kang mag login pasibayu anting pareu o aliwang talagamit.
 Apansingan mung mapalyaring makalto la pa murin deng aliwang bulung a bala mu maka login ka pa murin, anggang e me lilinisan (clear) ing kekang browser cache.",
-'welcomecreation' => '== Malaus ka, $1! ==
-
-Melalang ne ing kekang account. E mo kakalingwan alilan deng kekang piniling {{SITENAME}}',
 'yourname' => 'Lagyung talagamit (Username):',
 'yourpassword' => 'Kekang password:',
 'yourpasswordagain' => 'Pakisulat meng pasibayu ing password:',
@@ -481,9 +479,9 @@ Bang mayari ing kekang pamag-login, kailangan mung mangibiling bayung password k
 'subject' => 'Paksa/pamagat (headline):',
 'minoredit' => 'Malati yang edit ini',
 'watchthis' => 'Banten ya ing bulung a ini',
-'savearticle' => 'I-save ya ing bulung',
-'preview' => 'I-preview',
-'showpreview' => 'Pakit ya ing preview',
+'savearticle' => 'Isikap ya ing bulung',
+'preview' => '↓Ipasinag',
+'showpreview' => 'Pakit ya ing pasinag',
 'showlivepreview' => 'Kasalungsungan (live) a preview',
 'showdiff' => 'Pakit la reng miyalilan',
 'anoneditwarning' => "'''Kapiadian:''' Eka maka-login.  Mitala ya ing kekang IP address king amlat pamanalili (edit history) ning bulung a ini.",
@@ -550,8 +548,8 @@ o [{{fullurl:{{FULLPAGENAME}}|action=edit}} i-edit ing bulung a ini]</span>.',
 Tandanan mung deng pasadiang bulung (custom pages) a .css ampong .js, gagamit lang bansag a mababang letra (lowercase), alm. (alimbawa), {{ns:user}}:Foo/vector.css, at e {{ns:user}}:Foo/Vector.css.",
 'updated' => '(Mibayu)',
 'note' => "'''Kapabaluan:'''",
-'previewnote' => "'''Preview ya mu ini;
-e la pa me-save detang miyalilan!'''",
+'previewnote' => "'''Tandanan mu pasinag ya mu ini.
+Deng elilan mu ela pa misikap!'''",
 'previewconflict' => 'Ing ayus ning makasulat king dake nang babo ning lugal a pipag-edit-an (upper text editing area) ing magi nang itsura ning kekang gagawan nung i-save me iti.',
 'session_fail_preview' => "'''Pasensia na ka! E mi ya apalub ing kekang in-edit uling mewala ing session data.
 Pakisubukan mung pasibayu. Nung ala pa muring miliari, subukan mung mag-logout at mag-login pasibayu.'''",
@@ -621,6 +619,7 @@ Ibie la para king kekang beluan deng kasulatan ning pamagbura ampong pamanalis (
 
 Kailangan, mas ditak la king $2 deti; $1 na la reng atyu ngeni.',
 'expensive-parserfunction-category' => 'Deng bulung a masiadung dakal ing karelang mangamal a parser function call',
+'post-expand-template-inclusion-category' => '↓Bulung nung nu ing ulma kayabe ya ing sukad sinobra ya',
 
 # "Undo" feature
 'undo-success' => 'E maliaring iurung ing pamag-edit a ini. Pakilawe mo reng pikumparang bersion king lalam ba mung akit nung ini pin ing buri mung gawan, at kaibat, i-save mo retang miyalilan bang mayari ing pamanurung king edit.',
@@ -698,7 +697,9 @@ Abusni da pa murin deng aliwang talapanibala (admin) king {{SITENAME}} itang lam
 'revdelete-submit' => 'Ipairal ya kareng mepiling pamanalili (selected revision)',
 'revdelete-success' => "'''Mituldu na ing pamagbayu ning sala/kalinawan.'''",
 'logdelete-success' => "'''Mituldu na ing sala/lino (visibility) ning tala (log).'''",
-'revdel-restore' => 'Alilan ya ing mayaykit',
+'revdel-restore' => 'Alilan ya ing mayayakit',
+'revdel-restore-deleted' => '↓meburang meyalili',
+'revdel-restore-visible' => '↓mayayakit a meyalili',
 'pagehist' => 'Amlat ning bulung',
 'deletedhist' => 'Meburang amlat',
 'revdelete-edit-reasonlist' => 'I-edit la reng sangkan king pamamura',
@@ -738,7 +739,7 @@ Gamitan me ing radio button column bang bukud mung detang miyalilan aniang o bay
 'mergelogpagetext' => 'Makabili la king lalam deng pekabayung pamisanib da reng amlat bulung (page history).',
 
 # Diffs
-'history-title' => 'Amlat ning pamagbayu king "$1"',
+'history-title' => 'Amlat ning pamagbayu king "$1"',
 'lineno' => 'Gulis $1:',
 'compareselectedversions' => 'Pikumpara/piyanti la reng mepiling bersion',
 'editundo' => 'iurung',
@@ -757,9 +758,17 @@ Gamitan me ing radio button column bang bukud mung detang miyalilan aniang o bay
 'notextmatches' => 'Alang tinud/pareu kareng bansag bulung (no page title matches)',
 'prevn' => 'minunang {{PLURAL:$1|$1}}',
 'nextn' => 'tutuking {{PLURAL:$1|$1}}',
+'prevn-title' => '↓Dati $1 {{PLURAL:$1|result|results}}',
+'nextn-title' => '↓
+Tutuking $1 {{PLURAL:$1|result|results}}',
+'shown-title' => '↓Ipakit $1 {{PLURAL:$1|bunga|ding bunga}}balang bulung',
 'viewprevnext' => 'Lon ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Atin bulung a mikilagiung \"[[:\$1]]\" keng wiking ini.'''",
+'searchmenu-new' => "↓'''Maglalang kang bulung \"[[:\$1]] keng wiking ini!'''",
 'searchhelp-url' => 'Help:Kalamnan',
+'searchprofile-articles' => '↓Kalamnan bulung',
+'searchprofile-project' => '↓Saup ampong bulung proyectu',
+'searchprofile-images' => '↓Dakalmedia',
 'searchprofile-everything' => 'Eganagana',
 'searchprofile-articles-tooltip' => 'Paintunan king$1',
 'searchprofile-images-tooltip' => 'Manintun makasimpan',
@@ -798,7 +807,7 @@ Pakitandanan mung maliaring e no makapanaun deng karelang index king kalamnan ni
 
 # Preferences page
 'preferences' => 'Pinili',
-'mypreferences' => 'Deng pinili ku',
+'mypreferences' => 'Deng pinili ku',
 'prefs-edits' => 'Bilang da reng edit:',
 'prefsnologin' => 'ekamaka log',
 'prefsnologintext' => 'Kailangan kang [[Special:UserLogin|maka-login]] ba mong apagana deng pinili ning talagamit (user preferences).',
@@ -987,7 +996,7 @@ Nung ibie me, magamit ya bang kilalanan ing kekang ambag.',
 'recentchangeslinked-toolbox' => 'Miyalilan a makaugne',
 'recentchangeslinked-title' => 'Deng miyalilan a maki kaugnayan king "$1"',
 'recentchangeslinked-noresult' => 'Alang miyalilan kareng bulung a pakasuglung ketang mebanggit a panaun.',
-'recentchangeslinked-summary' => "Makalista la king bulung a iti deng tauling mengayalilan kareng
+'recentchangeslinked-summary' => "↓Makalista la king bulung a iti deng tauling mengayalilan kareng 
 bulung a makasuglung ketang partikular a bulung. '''Makapal la pangasulat''' deng bulung
 king kekang watchlist (tala da reng babanten).",
 'recentchangeslinked-page' => 'Lagyu ning bulung:',
@@ -1090,7 +1099,7 @@ Pakilawe mu nung makasalangi ya iti, manaya ka saguli, at subukan mung pasibayu.
 Mapaliaring mas masanting yang subukan nung mas ditak la reng gagamit.',
 
 'license' => 'Pamamie lisensia:',
-'license-header' => 'Pamamie lisensia:',
+'license-header' => 'Pamamie lisensia',
 'nolicense' => 'Alang mepili',
 'license-nopreview' => '(Alang preview maliaring lon)',
 'upload_source_url' => ' (metung a URL a matatanggap at aluban ding malda)',
@@ -1123,7 +1132,7 @@ Miyalilan ing pamanayus nung i-click ya ing pamagat ning kolum (column header).'
 'filehist-dimensions' => 'Sukad',
 'filehist-filesize' => 'Dagul ning simpan (file size)',
 'filehist-comment' => 'Komentu/Puna',
-'imagelinks' => "Suglung kareng simpan (''file links'')",
+'imagelinks' => "Suglung kareng simpan (''file links'')",
 'linkstoimage' => "Ing tutuking {{PLURAL:$1|page links|$1 pages link}} kaniting simpan (''file''):",
 'nolinkstoimage' => 'Alang bulung a pakasuglung king simpan (file) a ini.',
 'sharedupload' => "Ibat ya king $1 ining simpan (''file'') at maliari yang gamitan kareng aliwang proyectu.",
@@ -1382,11 +1391,7 @@ click me ing \"Tuknangan ing pamagbante\" (Unwatch) king gilid na ning bulung.",
 'unwatching' => 'E ne babanten...',
 
 'enotif_reset' => 'Dinan lang tanda deng eganaganang bulung a pintalan mu',
-'enotif_newpagetext' => 'Bayu yang bulung ini.',
 'enotif_impersonal_salutation' => 'talagamit king {{SITENAME}}',
-'changed' => 'miyalilan',
-'created' => 'melalang',
-'enotif_subject' => 'Ining bulung ning {{SITENAME}} a $PAGETITLE me$CHANGEDORCREATED ya kapamilatan nang $PAGEEDITOR',
 'enotif_lastvisited' => 'Lon me ing $1 para kareng eganaganang miyalilan
 manibat anyang tawli kang linabas.',
 'enotif_lastdiff' => 'Lon me ing $1 ba meng akit ining miyalilan.',
@@ -1538,6 +1543,7 @@ Mapaliaring putut ya ing kekang suglung, o misubli (restored) ya o milako king s
 'undelete-nodiff' => 'Alang meyakit kareng dating meyalili',
 'undeletebtn' => 'Ibálik yang pasibayu',
 'undeletelink' => 'lon/ibalik',
+'undeleteviewlink' => '↓lawen',
 'undeletereset' => 'Isubli king sadia (reset)',
 'undeletecomment' => 'Komentu:',
 'undeletedrevisions' => '{{PLURAL:$1|1 pamagbayung|$1 pamagbayung}} misubli',
@@ -1649,7 +1655,7 @@ mu nung sanu retang bulung a sinira da).',
 'ipusubmit' => 'Ilako ya pangasabat ing address a ini',
 'unblocked' => 'Mesabat ya i [[User:$1|$1]]',
 'unblocked-id' => 'Milako ing Sabat (Block) $1',
-'ipblocklist' => "Deng IP address ampong lagiungtalagamit (''username'') a makasabat",
+'ipblocklist' => 'Deng IP address ampong lagiungtalagamit a makasabat',
 'ipblocklist-legend' => 'Maintun talagamit a makasabat',
 'ipblocklist-submit' => 'Manintun',
 'infiniteblock' => 'alang kapupusan',
@@ -1847,7 +1853,7 @@ Maka-login la reng eganaganang pamaglub a transwiki (transwiki import actions) k
 'tooltip-pt-anonlogin' => 'Pakisabi ming mag-login ka, oneng e sapilitan iti.',
 'tooltip-pt-logout' => 'Mag log out',
 'tooltip-ca-talk' => 'Pamisabi-sabi tungkul king bulung kalamnan (content page)',
-'tooltip-ca-edit' => 'Malyari meng i-edit ing bulung a ini. Pakigamit me pamu ing "preview button" bayu ka mag-save.',
+'tooltip-ca-edit' => 'Malyari meng samasan ing bulung a ini. Pakigamit me pamu ing "pasinag a pipindutan" bayu me isikap.',
 'tooltip-ca-addsection' => "Mangibili kang bayung dake o ''section''.",
 'tooltip-ca-viewsource' => 'Protektadu/makakambil ya ing bulung a ini. Malyari meng lon ing kayang pikuanan (source).',
 'tooltip-ca-history' => 'Deng milabas a bersion ning bulung a ini.',
@@ -1889,16 +1895,17 @@ Maka-login la reng eganaganang pamaglub a transwiki (transwiki import actions) k
 'tooltip-ca-nstab-help' => 'Lon ya ing bulung saup (help page)',
 'tooltip-ca-nstab-category' => 'Lon ya ing bulung pang-kategoriya (category page)',
 'tooltip-minoredit' => 'Markan ya ini antimong malating pamag-edit',
-'tooltip-save' => 'I-save mo reng binayu mu',
-'tooltip-preview' => 'Lon (i-preview) mo pamu detang elilan mu; pakigamit me ini bayu ka mag-save!',
+'tooltip-save' => 'Isikap mo reng binayu mu',
+'tooltip-preview' => 'Lawen mo reng elilan mu keng pasinag. bayu me isikap!',
 'tooltip-diff' => 'Ipakit nung sanu ing inalilan mu ketang makasulat.',
 'tooltip-compareselectedversions' => 'Pakit la reng pamiyaliwa da reng aduang mepiling bersion ning bulung a ini.',
 'tooltip-watch' => 'Idagdag ya ing bulung a ini kareng kekang babanten',
 'tooltip-recreate' => 'Isubli ya ing bulung angiang mebura ne',
 'tooltip-upload' => 'Umpisan ya ing pamaglulan',
-'tooltip-rollback' => "Susubli no ning \"rollback\" deng miyalilan o edit kaniting bulung ning tauling talayambag king metung a ''click''",
-'tooltip-undo' => "Ing \"undo\" susubli ne ing edit at bubusni ne ing edit form king preview mode.
+'tooltip-rollback' => "Susubli no ning \"rollback\" deng miyalilan o edit kaniting bulung ning tauling talayambag king metung a ''pindut (click)''",
+'tooltip-undo' => "Ing \"balikgawan (undo)\" susubli ne ing edit at bubusni ne ing edit form king pasinag mode.
 Paintulutan na ing pamandagdag king sangkan king sampulung (''summary'').",
+'tooltip-summary' => '↓Palub kang makuyad a kabilugan',
 
 # Stylesheets
 'common.css' => '/** CSS mikabit keni maging mabisa ya karing eganaganang pabalat */',
index 78c6297..8e13fe7 100644 (file)
@@ -314,10 +314,6 @@ Si s'n'est poin ch'cas-lo, pététe éq ch'est un bogue din ch'businkillache. <b
 'virus-unknownscanner' => 'intivirus poin connu:',
 
 # Login and logout pages
-'welcomecreation' => "== Binv'nute, $1 ! ==
-
-Vote compte o té créé.
-N'obliez poin d'parsonnaliser vos [[Special:Preferences|préférinches édseur {{SITENAME}}]].",
 'yourname' => "nom d'uzeu:",
 'yourpassword' => "Mot d'passe:",
 'yourpasswordagain' => "Intrer à nouvieu ch'mot d'passe:",
@@ -362,6 +358,12 @@ j'm'escuse mais i feut prinde un aute nom.",
 'resetpass_forbidden' => "Chés mots d'passe is n'peu'te poin ète cangés",
 'resetpass-submit-loggedin' => "Canger ch'mot d'passe",
 
+# Special:PasswordReset
+'passwordreset' => "Ortreuver ch'mot d'passe",
+
+# Special:ChangeEmail
+'changeemail' => "Canger l'adrèche du imèle",
+
 # Edit page toolbar
 'bold_sample' => 'Cros teske',
 'bold_tip' => 'Cros teske',
@@ -622,6 +624,9 @@ Ale doét mie éte pu longue éq $1 {{PLURAL:$1|caracter|caractéres}}.',
 'license' => 'Licince',
 'license-header' => 'Licince',
 
+# Special:ListFiles
+'listfiles' => 'Lisse des fichiés',
+
 # File description page
 'file-anchor-link' => 'Fichié',
 'filehist' => 'Histoère dech fichié',
@@ -657,6 +662,7 @@ Vir apré ([$2 pache]).",
 'nbytes' => '$1 {{PLURAL:$1|octé|octés}}',
 'nmembers' => '$1 {{PLURAL:$1|mimbe|mimbes}}',
 'prefixindex' => 'Tertous chés paches aveuc préfix',
+'listusers' => 'Lisse des uzeus',
 'usercreated' => '{{GENDER:$3|Créé}} ech $1 à $2',
 'newpages' => 'Novèles paches',
 'move' => 'Déplacher',
@@ -693,10 +699,14 @@ Vir apré ([$2 pache]).",
 'linksearch' => 'Loïens éstérieurs',
 'linksearch-line' => '$1 est loïé édpuis $2',
 
+# Special:ActiveUsers
+'activeusers' => 'Lisse des ouvreus uzeus',
+
 # Special:Log/newusers
 'newuserlogpage' => "Jornal éd chés créachons d'comptes d'uzeu",
 
 # Special:ListGroupRights
+'listgrouprights-summary' => "L'pache-lo ch'est ène lisse d'chés groupes d'uzeus définis édseur ech wiki aveuc chés drouots d'intrèe achuchonnés.<br />I put y avoèr ichi d'eutes [[MediaWiki:Listgrouprights-helppage|informacions]] édseur chés drouots individuèls. ([[{{MediaWiki:Listgrouprights-helppage}}|vir]])",
 'listgrouprights-members' => '(lisse éd chés mimbes)',
 
 # E-mail user
@@ -821,6 +831,7 @@ I feut l'foaire seleumint pour inréyer ech vindalime et pi i feut ète acordant
 Donner apré ch'motif  (pèr egzimpe chiter chés paches qu'ont té vindalisées).",
 'ipboptions' => '2 heures:2 hours,1 jour:1 day,3 jours:3 days,1 ésminne:1 week,2 ésminnes:2 weeks,1 moés:1 month,3 moés:3 months,6 moés:6 months,1 an:1 year,infini:infinite',
 'ipbotheroption' => 'eute',
+'blocklist' => 'Uzeus blotchés',
 'ipblocklist' => 'Uzeus blotchés',
 'blocklink' => 'blotcher',
 'unblocklink' => 'déblotcher',
@@ -938,6 +949,9 @@ Os pouvez vir l'source",
 'svg-long-desc' => 'Fichié SVG, résoluchon éd $1 × $2 picsels, diminchon: $3',
 'show-big-image' => 'Plinne résoluchon',
 
+# Special:NewFiles
+'newimages' => "Galerie d'chés nouvieus fichiés",
+
 # Bad image list
 'bad_image_list' => "Ch'format ch'est:
 
index 77d4823..46a08a3 100644 (file)
@@ -32,6 +32,13 @@ $messages = array(
 'thursday' => 'Dunnaschdaach',
 'friday' => 'Fraidaach',
 'saturday' => 'Somschdaach',
+'sun' => 'Su',
+'mon' => 'Mo',
+'tue' => 'Di',
+'wed' => 'Mi',
+'thu' => 'Du',
+'fri' => 'Fr',
+'sat' => 'So',
 'january' => 'Jänner',
 'february' => 'Fewwer',
 'march' => 'März',
@@ -39,7 +46,7 @@ $messages = array(
 'may_long' => 'Mai',
 'june' => 'Juni',
 'july' => 'Juli',
-'august' => 'Auguscht',
+'august' => 'Auguschd',
 'september' => 'Sebdember',
 'october' => 'Ogdower',
 'november' => 'November',
@@ -83,7 +90,7 @@ $messages = array(
 'newwindow' => '(werd im e naie Fenschter uffgmacht)',
 'cancel' => 'Abbreche',
 'mytalk' => 'Gebabbel mit dir',
-'navigation' => 'Navigation',
+'navigation' => 'Nawigadzion',
 
 # Cologne Blue skin
 'qbfind' => 'Finne',
@@ -95,13 +102,14 @@ $messages = array(
 'vector-action-move' => 'Verschiewe',
 'vector-action-protect' => 'Schitze',
 'vector-view-edit' => 'Bearwaide',
+'vector-view-history' => 'Dadaigschischd',
 'vector-view-view' => 'Lese',
 'actions' => 'Agzione',
 
 'errorpagetitle' => 'Fehler',
 'returnto' => 'Zrick zu $1.',
 'tagline' => 'Vun {{SITENAME}}',
-'help' => 'Hilfe',
+'help' => 'Hilf',
 'search' => 'Suche',
 'searchbutton' => 'Suche',
 'go' => 'Adiggel',
@@ -125,8 +133,8 @@ $messages = array(
 'personaltools' => 'Perseenliche Werkzeische',
 'talk' => 'Dischbediere',
 'views' => 'Wievielmol aageguckt',
-'toolbox' => 'Werkzaich',
-'otherlanguages' => 'In annere Sproche',
+'toolbox' => 'Werkzaisch',
+'otherlanguages' => 'In annere Schbroche',
 'redirectedfrom' => '(Wairrerglaidet vun $1)',
 'redirectpagesub' => 'Wairerlaidungssaid',
 'lastmodifiedat' => 'Die Said isch zum ledschde Mol gänneret worre am $1, am $2.',
@@ -140,7 +148,8 @@ $messages = array(
 'aboutpage' => 'Project:Iwwer',
 'copyright' => 'Was do drin schdeht isch unner $1 verfiechbar.',
 'copyrightpage' => '{{ns:project}}:Urhewerrecht',
-'currentevents' => 'Was grad so bassiert isch',
+'currentevents' => 'Was grad so bassierd isch',
+'currentevents-url' => 'Brojegd: Leschdi Eraigniss',
 'disclaimers' => 'Hafdungsausschluß',
 'disclaimerpage' => 'Project:Impressum',
 'edithelp' => 'Hilf fer s Bearwaide',
@@ -149,7 +158,7 @@ $messages = array(
 'mainpage' => 'Hääptsaid',
 'mainpage-description' => 'Startseid',
 'portal' => '{{SITENAME}}-Pordal',
-'privacy' => 'Dadeschutz',
+'privacy' => 'Dadeschuds',
 'privacypage' => 'Project:Daadeschutz',
 
 'badaccess' => 'Kää ausraichende Recht',
@@ -162,7 +171,7 @@ $messages = array(
 'editold' => 'bearwaide',
 'editlink' => 'bearwaide',
 'viewsourcelink' => 'Quell aagucke',
-'editsectionhint' => 'Abschnitt ännere: $1',
+'editsectionhint' => 'Abschnidd ännere: $1',
 'toc' => 'Inhald',
 'showtoc' => 'zaiche',
 'hidetoc' => 'versteggeln',
@@ -170,7 +179,7 @@ $messages = array(
 'site-atom-feed' => '$1 Atom Feed',
 'page-rss-feed' => '"$1" RSS Feed',
 'page-atom-feed' => '"$1" Atom Feed',
-'red-link-title' => '$1 (Said gebbs nid)',
+'red-link-title' => '$1 (Said gebbds nid)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Said',
@@ -389,7 +398,7 @@ Saide uff [[Special:Watchlist|Dainer Beowachdungslischt]] sin '''fett'''.",
 'recentchangeslinked-to' => 'Zaisch Ännerunge uff Saide, wu do her verlinkt sinn',
 
 # Upload
-'upload' => 'Hochlade',
+'upload' => 'Nufflade',
 'uploadbtn' => 'Datei hochlade',
 'uploadlogpage' => 'Dateie-Logbuch',
 'savefile' => 'Datei schbeichere',
@@ -671,13 +680,13 @@ Du kannscht awwer de Quelltext aagucke',
 'tooltip-ca-unwatch' => 'Die Said aus Dainer Beowachdunschlischde rausnemme',
 'tooltip-search' => 'Durchsuch {{SITENAME}}',
 'tooltip-search-go' => 'Geh zu ere Said mit genää dem Namme, wenn s se gebbt',
-'tooltip-search-fulltext' => 'Such in de Said noch dem Text',
+'tooltip-search-fulltext' => 'Such in de Said nochm Tegschd',
 'tooltip-p-logo' => 'Haubdsaid',
 'tooltip-n-mainpage' => 'Uff d Hääptsaid geh',
 'tooltip-n-mainpage-description' => 'Haubdsaid aagucke',
 'tooltip-n-portal' => 'Iwwers Brojegd, wude duu kannschd, wu ebbes finne duschd',
 'tooltip-n-currentevents' => 'hinnergundsinformatione finne iwwer naie Eraichnis',
-'tooltip-n-recentchanges' => 'D Lischt vun de letschte Ännerunge in dem Wiki',
+'tooltip-n-recentchanges' => 'D Lischd vun de ledschde Ännerunge in dem Wiki',
 'tooltip-n-randompage' => 'E zufälliche Said lade',
 'tooltip-n-help' => 'De Ort zum rausfinne',
 'tooltip-t-whatlinkshere' => 'Lischt vun alle Wikisaide, wu do her verlinkt sinn',
@@ -687,7 +696,7 @@ Du kannscht awwer de Quelltext aagucke',
 'tooltip-t-contributions' => 'Die letschte Baidräch vun däm Benutzer aagucke',
 'tooltip-t-emailuser' => 'Dem Benutzer e E-Mail schicke',
 'tooltip-t-upload' => 'Dateije nufflade',
-'tooltip-t-specialpages' => 'Lischt vun alle Spezialsaide',
+'tooltip-t-specialpages' => 'Lischd vun alle Schbezialsaide',
 'tooltip-t-print' => 'Druckversion vun derre Said',
 'tooltip-t-permalink' => 'E dauerhafte Link zu derre Version vun de Said',
 'tooltip-ca-nstab-main' => 'D Inhaldssaid aagucke',
@@ -722,11 +731,11 @@ Du kannscht e Grund in dr Zammfassung aagewwe',
 'ilsubmit' => 'Such',
 
 # Bad image list
-'bad_image_list' => 'Format:
+'bad_image_list' => 'Formad:
 
-nur Zaile, die wu mit eme * aafange werre bericksichticht.
-De erscht Link muss e Link zu ere unerwinschte Datei sai.
-Annere Links in der glaiche Zail werre als Ausnahme behannelt, d. h. Saide, wu d Datei drin vorkumme därft.',
+nur Zaile, wu mid eme * aafange werre bericksichdischd.
+De erschd Link muss e Link zu ere unerwinschd Dadei sai.
+Annere Links in der glaiche Zail werre als Ausnahme behanneld, d. h. Saide, wu d Dadei drin vorkumme därfd.',
 
 # Metadata
 'metadata' => 'Metadata',
index 5aff86f..434a407 100644 (file)
@@ -47,6 +47,7 @@
  * @author Szczepan1990
  * @author Timpul
  * @author ToSter
+ * @author Tsca
  * @author Woytecr
  * @author Wpedzich
  * @author Ymar
@@ -341,7 +342,7 @@ $messages = array(
 
 'underline-always' => 'zawsze',
 'underline-never' => 'nigdy',
-'underline-default' => 'według ustawień przeglądarki',
+'underline-default' => 'według ustawień skórki lub przeglądarki',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Styl czcionki w polu edycyjnym',
@@ -459,6 +460,7 @@ $messages = array(
 'namespaces' => 'Przestrzenie nazw',
 'variants' => 'Warianty',
 
+'navigation-heading' => 'Menu nawigacyjne',
 'errorpagetitle' => 'Błąd',
 'returnto' => 'Wróć do strony $1.',
 'tagline' => 'Z {{GRAMMAR:D.lp|{{SITENAME}}}}',
@@ -556,10 +558,10 @@ $1',
 'youhavenewmessages' => 'Masz $1 ($2).',
 'newmessageslink' => 'nowe wiadomości',
 'newmessagesdifflink' => 'różnica z poprzednią wersją',
-'youhavenewmessagesfromusers' => 'Masz $1 od {{PLURAL:$3|innego użytkownika|$3 innych użytkowników}} ($2).',
+'youhavenewmessagesfromusers' => 'Masz $1 od {{PLURAL:$3|innego użytkownika|$3 użytkowników}} ($2).',
 'youhavenewmessagesmanyusers' => 'Masz $1 od wielu użytkowników ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|jedną wiadomość|$1 wiadomości}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|ostatnia zmiana|ostatnie $1 zmiany|ostatnie $1 zmian}}',
+'newmessageslinkplural' => '{{PLURAL:$1|jedną wiadomość|nowe wiadomości}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|ostatnia zmiana|ostatnie zmiany}}',
 'youhavenewmessagesmulti' => 'Masz nowe wiadomości na $1',
 'editsection' => 'edytuj',
 'editold' => 'edytuj',
@@ -701,9 +703,9 @@ Administrator blokujący go podał następujący powód "\'\'$3\'\'".',
 
 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.",
-'welcomecreation' => '== Witaj, $1! ==
-Twoje konto zostało utworzone.
-Nie zapomnij dostosować [[Special:Preferences|preferencji dla {{GRAMMAR:D.lp|{{SITENAME}}}}]].',
+'welcomeuser' => 'Witaj, $1!',
+'welcomecreation-msg' => 'Twoje konto zostało utworzone.
+Nie zapomnij dostosować [[Special:Preferences|preferencji]].',
 'yourname' => 'Nazwa {{GENDER:|użytkownika|użytkowniczki}}',
 'yourpassword' => 'Hasło',
 'yourpasswordagain' => 'Powtórz hasło',
@@ -1599,7 +1601,10 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'rightslog' => 'Uprawnienia',
 'rightslogtext' => 'Rejestr zmian uprawnień użytkowników.',
 'rightslogentry' => 'zmienił przynależność $1 do grup ($2 → $3)',
-'rightslogentry-autopromote' => 'automatycznie zmienia przynależność ($2 → $3)',
+'rightslogentry-autopromote' => 'automatycznie zmienił przynależność ($2 → $3)',
+'logentry-rights-rights' => '$1 zmienił przynależność $3 do grup ($4 → $5)',
+'logentry-rights-rights-legacy' => '$1 zmienił przynależność $3 do grup',
+'logentry-rights-autopromote' => '$1 automatycznie zmienił przynależność ($4 → $5)',
 'rightsnone' => 'brak',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1846,6 +1851,7 @@ Jeśli problem będzie się powtarzał, skontaktuj się z [[Special:ListUsers/sy
 'backend-fail-notsame' => 'Plik o podobnej nazwie już istnieje w $1.',
 'backend-fail-invalidpath' => '$1nie jest poprawną ścieżką zapisu.',
 'backend-fail-delete' => 'Nie można usunąć pliku $1.',
+'backend-fail-describe' => 'Nie udało się zmienić metadanych pliku "$1".',
 'backend-fail-alreadyexists' => 'Plik „$1” już istnieje',
 'backend-fail-store' => 'Nie może zapisać pliku  $1  w  $2 .',
 'backend-fail-copy' => 'Nie może skopiować pliku $1 do $2.',
@@ -2233,7 +2239,7 @@ Zobacz również [[Special:WantedCategories|brakujące kategorie]].',
 'linksearch-ok' => 'Szukaj',
 'linksearch-text' => 'Można użyć symboli wieloznacznych jak „*.wikipedia.org”.
 Wymaga podania co najmniej domeny najwyższego poziomu np. „*.org”.<br />
-Obsługiwane protokoły: <code>$1</code> (nie podawaj ich podczas wyszukiwania).',
+Obsługiwane protokoły: <code>$1</code> (jeśli nie podano, domyślny to http://).',
 'linksearch-line' => '$1 link na stronie $2',
 'linksearch-error' => 'Symbolu wieloznacznego można użyć wyłącznie na początku nazwy hosta.',
 
@@ -2350,11 +2356,7 @@ Każda zmiana treści tej strony lub związanej z nią strony dyskusji zostanie
 
 'enotif_mailer' => 'Powiadomienie z {{GRAMMAR:D.lp|{{SITENAME}}}}',
 'enotif_reset' => 'Zaznacz wszystkie strony jako odwiedzone',
-'enotif_newpagetext' => 'To jest nowa strona.',
 'enotif_impersonal_salutation' => 'użytkownik {{GRAMMAR:D.lp|{{SITENAME}}}}',
-'changed' => 'zmieniona',
-'created' => 'utworzona',
-'enotif_subject' => 'Strona $PAGETITLE w {{GRAMMAR:MS.lp|{{SITENAME}}}} została $CHANGEDORCREATED przez użytkownika $PAGEEDITOR',
 'enotif_lastvisited' => 'Zobacz na stronie $1 wszystkie zmiany od Twojej ostatniej wizyty.',
 'enotif_lastdiff' => 'Zobacz na stronie $1 tę zmianę.',
 'enotif_anon_editor' => 'użytkownik anonimowy $1',
@@ -2572,7 +2574,7 @@ $1',
 # Contributions
 'contributions' => 'Wkład użytkownika',
 'contributions-title' => 'Wkład {{GENDER:$1|użytkownika|użytkowniczki}} $1',
-'mycontris' => 'Moje edycje',
+'mycontris' => 'Edycje',
 'contribsub2' => 'Dla użytkownika $1 ($2)',
 'nocontribs' => 'Brak zmian odpowiadających tym kryteriom.',
 'uctop' => ' (jako ostatnia)',
@@ -2612,7 +2614,7 @@ Poniżej znajduje się ostatni wpis w rejestrze blokowania.',
 'whatlinkshere-hideredirs' => '$1 przekierowania',
 'whatlinkshere-hidetrans' => '$1 dołączenia',
 'whatlinkshere-hidelinks' => '$1 linki',
-'whatlinkshere-hideimages' => '$1 linki z grafik',
+'whatlinkshere-hideimages' => '$1 linki z plików',
 'whatlinkshere-filters' => 'Filtry',
 
 # Block/unblock
@@ -3104,7 +3106,7 @@ Najprawdopodobniej zostało to spowodowane przez link do zewnętrznej strony int
 
 # Info page
 'pageinfo-title' => 'Informacje o „$1“',
-'pageinfo-not-current' => 'Informacje mogą być wyświetlane tylko dla najnowszej wersji strony.',
+'pageinfo-not-current' => 'Niestety, te informacje nie są dostępne dla starych wersji stron.',
 'pageinfo-header-basic' => 'Podstawowe informacje',
 'pageinfo-header-edits' => 'Historia edycji',
 'pageinfo-header-restrictions' => 'Zmień zabezpieczenie',
@@ -3163,6 +3165,8 @@ Najprawdopodobniej zostało to spowodowane przez link do zewnętrznej strony int
 'markedaspatrollederror' => 'Nie można oznaczyć jako „sprawdzone”',
 'markedaspatrollederrortext' => 'Musisz wybrać wersję żeby oznaczyć ją jako „sprawdzoną”.',
 'markedaspatrollederror-noautopatrol' => 'Nie masz uprawnień wymaganych do oznaczania swoich edycji jako „sprawdzone”.',
+'markedaspatrollednotify' => 'Ta zmiana na stronie «$1» została oznaczona jako sprawdzona.',
+'markedaspatrollederrornotify' => 'Oznaczenie strony jako sprawdzonej nie powiodło się.',
 
 # Patrol log
 'patrol-log-page' => 'Rejestr patrolowania',
@@ -3229,6 +3233,7 @@ Jeśli go otworzysz, możesz zarazić swój system.",
 'hours' => '{{PLURAL:$1|$1 godzina|$1 godziny|$1 godzin}}',
 'days' => '{{PLURAL:$1|$1 dzień|$1 dni}}',
 'ago' => '$1 temu',
+'just-now' => 'przed chwilą',
 
 # Bad image list
 'bad_image_list' => 'Dane należy wprowadzić w formacie:
@@ -4033,9 +4038,9 @@ Grafiki są pokazywane w pełnej rozdzielczości. Inne typy plików są otwieran
 'logentry-move-move_redir-noredirect' => '$1 przenosi stronę $3 na $4 w miejsce przekierowania i bez pozostawienia przekierowania pod starym tytułem',
 'logentry-patrol-patrol' => '$1 oznacza wersję $4 strony $3 jako sprawdzoną',
 'logentry-patrol-patrol-auto' => '$1 automatycznie oznacza wersję $4 strony $3 jako sprawdzoną',
-'logentry-newusers-newusers' => '$1 tworzy konto użytkownika',
-'logentry-newusers-create' => '$1 tworzy konto użytkownika',
-'logentry-newusers-create2' => '$1 tworzy konto użytkownika $3',
+'logentry-newusers-newusers' => 'Konto użytkownika $1 zostało utworzone',
+'logentry-newusers-create' => 'Konto użytkownika $1 zostało utworzone',
+'logentry-newusers-create2' => 'Konto użytkownika $3 zostało utworzone przez użytkownika $1',
 'logentry-newusers-autocreate' => '$1 automatycznie tworzy konto użytkownika',
 'newuserlog-byemail' => 'hasło zostało wysłane e‐mailem',
 
index 832c706..e4cfd53 100644 (file)
@@ -208,6 +208,7 @@ $messages = array(
 'namespaces' => 'Spassi nominaj',
 'variants' => 'Variant',
 
+'navigation-heading' => 'Lista ëd navigassion',
 'errorpagetitle' => 'Eror',
 'returnto' => 'Torna andré a $1.',
 'tagline' => 'Da {{SITENAME}}.',
@@ -448,8 +449,8 @@ L'aministrator ch'a l'ha blocalo a l'ha lassà sta spiegassion: «$3».",
 
 A peul tiré anans a dovré {{SITENAME}} coma Utent anònim, ò pura a peul <span class='plainlinks'>[$1 rintré torna ant ël sistema]</span> con l'istess stranòm che a dovrava prima, ò con un diferent.
 Ch'a nòta che chèiche pàgine a peulo continué a esse visualisà com s'a fussa ancor ant ël sistema, fin ch'a scancela nen la memòria local ëd sò navigador.",
-'welcomecreation' => '==Bin ëvnù, $1!==
-Sò cont a l\'é stàit creà.
+'welcomeuser' => 'Bin ëvnù, $1!',
+'welcomecreation-msg' => 'Sò cont a l\'é stàit creà.
 Che as dësmentia pa ëd cambié ij [[Special:Preferences|"sò gust" an {{SITENAME}}]].',
 'yourname' => 'Sò stranòm',
 'yourpassword' => 'Soa ciav',
@@ -1584,6 +1585,7 @@ Se a-i riva sossì n'àotra vira, ch'as buta an comunicassion con n'[[Special:Li
 'backend-fail-notsame' => "N'archivi nen idéntich a esist già a $1.",
 'backend-fail-invalidpath' => "$1 a l'é pa un përcors ëd memorisassion bon.",
 'backend-fail-delete' => "As peul pa scanselesse l'archivi $1.",
+'backend-fail-describe' => "Impossìbil cangé ij metadat për l'archivi «$1».",
 'backend-fail-alreadyexists' => 'L\'archivi "$1" a esist già.',
 'backend-fail-store' => "As peul pa memorisesse l'archivi $1 a $2.",
 'backend-fail-copy' => "As peul pa copiesse l'archivi $1 su $2.",
@@ -2090,19 +2092,23 @@ Le modìfiche che a-i vniran ant costa pàgina-sì e ant soa pàgina ëd discuss
 
 'enotif_mailer' => '{{SITENAME}} - Servissi ëd Notìfica Postal',
 'enotif_reset' => 'Marché tute le pàgine tanme visità',
-'enotif_newpagetext' => "Costa-sì a l'é na pàgina neuva",
 'enotif_impersonal_salutation' => 'utent ëd {{SITENAME}}',
-'changed' => 'modificà',
-'created' => 'creà',
-'enotif_subject' => 'La pàgina $PAGETITLE ëd {{SITENAME}} a l\'é staita $CHANGEDORCREATED da $PAGEEDITOR',
+'enotif_subject_deleted' => "La pàgina $1 ëd {{SITENAME}} a l'é stàita scancelà da {{gender:$2|$2}}",
+'enotif_subject_created' => "La pàgina $1 ëd {{SITENAME}} a l'é stàita creà da {{gender:$2|$2}}",
+'enotif_subject_moved' => "La pàgina $1 ëd {{SITENAME}} a l'é stàita tramudà da {{gender:$2|$2}}",
+'enotif_subject_restored' => "La pàgina $1 ëd {{SITENAME}} a l'é stàita ripristinà da {{gender:$2|$2}}",
+'enotif_subject_changed' => "La pàgina $1 ëd {{SITENAME}} a l'é stàita modificà da {{gender:$2|$2}}",
+'enotif_body_intro_deleted' => 'La pàgina $1 ëd {{SITENAME}} a l\'é stàita scancelà da {{gender:$2|$2}} ël $PAGEEDITDATE, vëdde $3 për la revision corenta.',
+'enotif_body_intro_created' => 'La pàgina $1 ëd {{SITENAME}} a l\'é stàita creà da {{gender:$2|$2}} ël $PAGEEDITDATE, vëdde $3 për la revision corenta.',
+'enotif_body_intro_moved' => 'La pàgina $1 ëd {{SITENAME}} a l\'é stàita tramudà da {{gender:$2|$2}} ël $PAGEEDITDATE, vëdde $3 për la revision corenta.',
+'enotif_body_intro_restored' => 'La pàgina $1 ëd {{SITENAME}} a l\'é stàita ripristinà da {{gender:$2|$2}} ël $PAGEEDITDATE, vëdde $3 për la revision corenta.',
+'enotif_body_intro_changed' => 'La pàgina $1 ëd {{SITENAME}} a l\'é stàita modificà da {{gender:$2|$2}} ël $PAGEEDITDATE, vëdde $3 për la revision corenta.',
 'enotif_lastvisited' => "Che as varda $1 për ës-ciaré tute le modìfiche da 'nt l'ùltima vira che a l'é passà.",
 'enotif_lastdiff' => "Ch'a varda $1 për visioné sta modìfica.",
 'enotif_anon_editor' => 'utent anònim $1',
 'enotif_body' => 'Car $WATCHINGUSERNAME,
 
-La pàgina $PAGETITLE dël sit {{SITENAME}} a l\'é stàita $CHANGEDORCREATED al $PAGEEDITDATE da $PAGEEDITOR, che a varda $PAGETITLE_URL për la version corenta.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Resumé dl\'editor: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2875,6 +2881,8 @@ Sòn a l'é motobin belfé che a sia rivà përchè a-i era n'anliura a un sit e
 'markedaspatrollederror' => 'As peul pa marché coma verificà',
 'markedaspatrollederrortext' => 'A venta che a spessìfica che version che a veul marchè coma verificà.',
 'markedaspatrollederror-noautopatrol' => "A l'ha nen ël përmess dë marchesse soe modìfiche coma «controlà».",
+'markedaspatrollednotify' => "Ës cambi a $1 a l'é stàit marcà com verificà.",
+'markedaspatrollederrornotify' => 'Marcadura com verificà falìa.',
 
 # Patrol log
 'patrol-log-page' => 'Registr dij contròj',
@@ -2938,6 +2946,7 @@ An fasend-lo marcé ansima a sò ordinator chiel a podrìa porteje ëd dann a s
 'hours' => '{{PLURAL:$1|$1 ora|$1 ore}}',
 'days' => '{{PLURAL:$1|$1 di|$1 di}}',
 'ago' => '$1 fa',
+'just-now' => 'pròpi adess',
 
 # Bad image list
 'bad_image_list' => "La forma a l'é costa-sì:
@@ -3450,16 +3459,16 @@ Cost còdes ëd conferma a scad ai $4.",
 
 # Delete conflict
 'deletedwhileediting' => "'''Avertensa''': sta pàgina-sì a l'é stàita scancelà quand che chiel a l'avìa già anandiasse a modifichela!",
-'confirmrecreate' => "L'utent [[User:$1|$1]] ([[User talk:$1|talk]]) a l'ha scancelà st'articol-sì quand che chiel (chila) a l'avia già anandiasse a modifichelo, dand coma motiv ëd la scancelament:
+'confirmrecreate' => "L'utent [[User:$1|$1]] ([[User talk:$1|talk]]) a l'ha scancelà st'articol-sì quand che chiel a l'avia già anandiasse a modifichelo, dasend coma motiv ëd lë scancelament:
 ''$2''
 Për piasì, che an conferma che da bon a veul torna creélo.",
 'confirmrecreate-noreason' => "L'utent [[User:$1|$1]] ([[User talk:$1|ciaciarade]]) a l'ha scancelà sta pàgina apress che chiel a l'ha ancaminà a modifiché.  Për piasì, ch'a confirma ch'a veul pròpi torna creé sta pàgina.",
-'recreate' => "Créa n'àutra vira",
+'recreate' => 'Creé torna',
 
 # action=purge
 'confirm_purge_button' => 'Va bin',
-'confirm-purge-top' => 'Veujdé la memorisassion dë sta pàgina-sì?',
-'confirm-purge-bottom' => 'Spurghé na pàgina a scansela la "cache" e a fà aparì le revision pì neuve.',
+'confirm-purge-top' => 'Dësvujdé la memorisassion dë sta pàgina-sì?',
+'confirm-purge-bottom' => 'Spurghé na pàgina a scancela la memorisassion local e a fà comparì la revision pì neuva.',
 
 # action=watch/unwatch
 'confirm-watch-button' => 'Va bin',
@@ -3470,8 +3479,8 @@ Për piasì, che an conferma che da bon a veul torna creélo.",
 # Multipage image navigation
 'imgmultipageprev' => '← pàgina andré',
 'imgmultipagenext' => 'pàgina anans →',
-'imgmultigo' => 'Va',
-'imgmultigoto' => ' a la pàgina $1',
+'imgmultigo' => 'Andé!',
+'imgmultigoto' => 'Andé a la pàgina $1',
 
 # Table pager
 'ascending_abbrev' => 'a chërse',
@@ -3481,12 +3490,12 @@ Për piasì, che an conferma che da bon a veul torna creélo.",
 'table_pager_first' => 'Prima pàgina',
 'table_pager_last' => 'Ùltima pàgina',
 'table_pager_limit' => 'Smon-me $1 archivi për pàgina',
-'table_pager_limit_label' => 'Oget për pàgina:',
-'table_pager_limit_submit' => 'Va',
-'table_pager_empty' => 'Pa gnun arsultà',
+'table_pager_limit_label' => 'Arzultà për pàgina:',
+'table_pager_limit_submit' => 'Andé',
+'table_pager_empty' => 'Gnun arzultà',
 
 # Auto-summaries
-'autosumm-blank' => 'Pàgina dësveujdà',
+'autosumm-blank' => 'Pàgina dësvujdà',
 'autosumm-replace' => "Pàgina cambià con '$1'",
 'autoredircomment' => 'Ridiression anvers a [[$1]]',
 'autosumm-new' => "Creà la pàgina con '$1'",
@@ -3500,39 +3509,40 @@ Për piasì, che an conferma che da bon a veul torna creélo.",
 # Live preview
 'livepreview-loading' => "Antramentr ch'as caria…",
 'livepreview-ready' => "Antramentr ch'as caria… Carià.",
-'livepreview-failed' => 'La "preuva dal viv" a l\'é falìa!
-Ch\'a preuva an manera sòlita.',
-'livepreview-error' => 'Conession falà: $1 "$2"
-Ch\'a preuva an manera sòlita.',
+'livepreview-failed' => "La preuva dal viv a l'é falìa!
+Ch'a preuva an manera sòlita.",
+'livepreview-error' => "Conession falìa: $1 «$2».
+Ch'a preuva an manera sòlita.",
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'Le modìfiche pì neuve ëd $1 {{PLURAL:$1|second|second}} a podrìo nen ess-ie ant sta lista-sì.',
-'lag-warn-high' => "Për via che la màchina serventa a tarda a dene d'arspòsta, le modìfiche pì giovne che $1 {{PLURAL:$1|second|second}} fa
-a podrìo ëdcò nen ess-ie ant sta lista -sì.",
+'lag-warn-normal' => 'Le modìfiche pì neuve ëd $1 {{PLURAL:$1|second}} a podrìo nen ess-ie ant sta lista-sì.',
+'lag-warn-high' => "Për via che la màchina serventa a tarda a dene d'arspòsta, le modìfiche fàite men che $1 {{PLURAL:$1|second}} fa
+a podrìo ëdcò nen ess-ie ant sta lista-sì.",
 
 # Watchlist editor
-'watchlistedit-numitems' => "A l'é antramentr ch'a ten sot ëuj {{PLURAL:$1|1 tìtol|$1 tìtoj}}, nen contand le pàgine ëd discussion.",
-'watchlistedit-noitems' => "A-i é pa gnun tìtol ch'as ten-a sot euj.",
-'watchlistedit-normal-title' => "Modifiché la lista ëd lòn ch'as ten sot euj",
-'watchlistedit-normal-legend' => "Gavé via ij tìtoj da 'nt la lista ëd lòn ch'as ten sot euj",
-'watchlistedit-normal-explain' => "Ij tìtoj ch'a ten sot euj a son ësmonù ambelessì-sota. Për gavene via un ch'a-i fasa la crosëtta ant la casela ch'a l'ha aranda, e peuj ch'ai bata ansima a «{{int:Watchlistedit-normal-submit}}». As peul ëdcò [[Special:EditWatchlist/raw|modifiché la lista ampressa]].",
+'watchlistedit-numitems' => "A l'é antramentr ch'a ten sot-euj {{PLURAL:$1|1 tìtol|$1 tìtoj}}, nen contand le pàgine ëd discussion.",
+'watchlistedit-noitems' => "A-i é pa gnun tìtol ch'as ten-a sot-euj.",
+'watchlistedit-normal-title' => "Modifiché la lista ëd lòn ch'as ten sot-euj",
+'watchlistedit-normal-legend' => "Gavé via ij tìtoj da 'nt la lista ëd lòn ch'as ten sot-euj",
+'watchlistedit-normal-explain' => "Ij tìtoj ch'a ten sot-euj a son ësmonù ambelessì-sota.
+Për gavene via un, ch'a-j fasa la crosëtta ant la casela ch'a l'ha aranda, e peuj ch'ai bata ansima a «{{int:Watchlistedit-normal-submit}}». As peul ëdcò [[Special:EditWatchlist/raw|modifiché la lista ampressa]].",
 'watchlistedit-normal-submit' => 'Gavé via ij tìtoj',
-'watchlistedit-normal-done' => "{{PLURAL:$1|1 tìtol a l'é|$1 tìtoj a son}} stait gavà via da 'nt la lista ëd lòn ch'as ten sot euj:",
-'watchlistedit-raw-title' => "Modifiché ampressa la lista ëd lòn ch'as ten sot euj",
-'watchlistedit-raw-legend' => "Modifiché ampressa la lista ëd lòn ch'as ten sot euj",
-'watchlistedit-raw-explain' => "Ij tìtoj ch'a l'é antramentr ch'as ten sot euj a son ambelessì-sota, e a peulo modifichesse ën giontand-ne e gavand-ne via da 'nt la lista; un tìtol për riga.
-Quand a l'ha finì, ch'a-i bata ansima a \"{{int:Watchlistedit-raw-submit}}\".
+'watchlistedit-normal-done' => "{{PLURAL:$1|Un tìtol a l'é|$1 tìtoj a son}} ëstàit gavà via da 'nt la lista ëd lòn ch'as ten sot-euj:",
+'watchlistedit-raw-title' => "Modifiché ampressa la lista ëd lòn ch'as ten sot-euj",
+'watchlistedit-raw-legend' => "Modìfica lesta ëd la lista ëd lòn ch'as ten sot-euj",
+'watchlistedit-raw-explain' => "Ij tìtoj ch'a l'é antramentr ch'as ten sot-euj a son ambelessì-sota, e a peulo modifichesse ën giontand-ne e gavand-ne via da 'nt la lista; un tìtol për riga.
+Quand a l'ha finì, ch'a-i bata ansima a «{{int:Watchlistedit-raw-submit}}».
 As peul ëdcò [[Special:EditWatchlist|dovré l'editor sòlit]].",
 'watchlistedit-raw-titles' => 'Tìtoj:',
 'watchlistedit-raw-submit' => 'Agiorné la Lista',
-'watchlistedit-raw-done' => "La lista ëd lòn ch'as ten sot euj a l'é staita agiornà.",
-'watchlistedit-raw-added' => "A {{PLURAL:$1|l'é|son}} giontasse {{PLURAL:$1|1 tìtol|$1 tìtoj}}:",
-'watchlistedit-raw-removed' => "A {{PLURAL:$1|l'é|son}} gavasse via {{PLURAL:$1|1 tìtol|$1 tìtoj}}:",
+'watchlistedit-raw-done' => "La lista ëd lòn ch'as ten sot-euj a l'é stàita agiornà.",
+'watchlistedit-raw-added' => "{{PLURAL:$1|A l'é|As son}} giontasse {{PLURAL:$1|1 tìtol|$1 tìtoj}}:",
+'watchlistedit-raw-removed' => "{{PLURAL:$1|A l'é|As son}} gavasse via {{PLURAL:$1|1 tìtol|$1 tìtoj}}:",
 
 # Watchlist editing tools
 'watchlisttools-view' => 'S-ciairé le modifiché amportante',
-'watchlisttools-edit' => "Vardé e modifiché la lista ëd lòn ch'as ten sot euj",
-'watchlisttools-raw' => "Modifiché ampressa la lista ëd lòn ch'as ten sot euj",
+'watchlisttools-edit' => "Vardé e modifiché la lista ëd lòn ch'as ten sot-euj",
+'watchlisttools-raw' => "Modifiché ampressa la lista ëd lòn ch'as ten sot-euj",
 
 # Iranian month names
 'iranian-calendar-m1' => 'Prim mèis Jalāli',
@@ -3552,14 +3562,14 @@ As peul ëdcò [[Special:EditWatchlist|dovré l'editor sòlit]].",
 'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ciaciarade]])',
 
 # Core parser functions
-'unknown_extension_tag' => 'Tacolèt d\'estension "$1" pa conossù',
-'duplicate-defaultsort' => "'''Atension:''' La ciav d'ordinament ëd default \"\$2\" a ven al pòst ëd cola ëd prima \"\$1\"",
+'unknown_extension_tag' => "Tichëtta d'estension «$1» pa conossùa",
+'duplicate-defaultsort' => "'''Atension:''' La ciav d'ordinament ëstàndard «$2» a pija ël pòst ëd cola ëd prima «$1».",
 
 # Special:Version
 'version' => 'Version',
 'version-extensions' => 'Estension anstalà',
 'version-specialpages' => 'Pàgine speciaj',
-'version-parserhooks' => 'Gancio dlë scompositor',
+'version-parserhooks' => 'Gancio dël dëscompositor',
 'version-variables' => 'Variàbij',
 'version-antispam' => 'Prevension dla rumenta',
 'version-skins' => 'Pej',
@@ -3567,16 +3577,16 @@ As peul ëdcò [[Special:EditWatchlist|dovré l'editor sòlit]].",
 'version-mediahandlers' => 'Gestor multimojen',
 'version-hooks' => 'Gancio',
 'version-extension-functions' => "Fonsion dj'estension",
-'version-parser-extensiontags' => "Tacolèt dj'estension conossùe da lë scompositor",
-'version-parser-function-hooks' => 'Gancio për le fonsion dlë scompositor',
+'version-parser-extensiontags' => "Tichëtte dj'estension conossùe dal dëscompositor",
+'version-parser-function-hooks' => 'Gancio për le fonsion dël dëscompositor',
 'version-hook-name' => 'Nòm dël gancio',
 'version-hook-subscribedby' => 'A son scrivusse',
 'version-version' => '(Version $1)',
 'version-license' => 'Licensa',
-'version-poweredby-credits' => "Sta wiki-sì a l'é basà su '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Costa wiki-sì a marcia mersì a '''[//www.mediawiki.org/ MediaWiki]''', licensa © 2001-$1 $2.",
 'version-poweredby-others' => 'àutri',
 'version-credits-summary' => 'I tnoma a aringrassié le përson-e sì-dapress për soa contribussion a [[Special:Version|MediaWiki]].',
-'version-license-info' => "MediaWiki a l'é un programa lìber; a peul passelo an gir e/o modifichelo sota le condission dla Licensa Pùblica General GNU coma publicà da la Free Software Foundation; o la version 2 dla licensa o (a soa decision) qualsëssìa version apress.
+'version-license-info' => "MediaWiki a l'é un programa lìber; a peul passelo an gir o modifichelo sota le condission dla Licensa Pùblica General GNU coma publicà da la Free Software Foundation; o la version 2 dla licensa o (a soa decision) qualsëssìa version apress.
 
 MediaWiki a l'é distribuì ant la speransa che a sia ùtil, ma SENSA GNUN-A GARANSÌA; sensa gnanca la garansìa implìcita ëd COMERSIABILITA' o d'ADATAMENT A UN BUT PARTICOLAR. Ch'a lesa la Licensa General Pùblica GNU per pi 'd detaj.
 
@@ -3584,7 +3594,7 @@ A dovrìa avèj arseivù [{{SERVER}}{{SCRIPTPATH}}/COPYING na còpia dla Licensa
 'version-software' => 'Programa anstalà',
 'version-software-product' => 'Prodot',
 'version-software-version' => 'Version',
-'version-entrypoints' => "Anliure ëd pont d'intrada",
+'version-entrypoints' => "Anliure dij pont d'intrada",
 'version-entrypoints-header-entrypoint' => "Pont d'intrada",
 'version-entrypoints-header-url' => "Adrëssa an sl'aragnà",
 
@@ -3715,9 +3725,9 @@ Le figure a së smon-o a amzura pijn-a, j'àotre sòrt d'archivi a ven-o fàite
 'logentry-move-move_redir-noredirect' => "$1 a l'ha tramudà la pàgina $3 a $4 ansima a na ridiression sensa lassé na ridiression",
 'logentry-patrol-patrol' => "$1 a l'ha marcà la revision $4 dla pàgina $3 'me controlà",
 'logentry-patrol-patrol-auto' => "$1 a l'ha marcà automaticament la revision $4 dla pàgina $3 'me controlà",
-'logentry-newusers-newusers' => '$1 creà un cont utent',
-'logentry-newusers-create' => '$1 creà un cont utent',
-'logentry-newusers-create2' => '$1 creà un cont utent $3',
+'logentry-newusers-newusers' => "Ël cont utent $1 a l'é stàit creà",
+'logentry-newusers-create' => "Ël cont utent $1 a l'é stàit creà",
+'logentry-newusers-create2' => "Ël cont utent $3 a l'é stàit creà da $1",
 'logentry-newusers-autocreate' => "Ël cont $1 a l'é stàit creà an automàtich",
 'newuserlog-byemail' => 'ciav spedìa për pòsta eletrònica',
 
@@ -3794,5 +3804,5 @@ Dësnò, a peule dovré ël formlari semplificà sì-sota. Sò coment a sarà gi
 'duration-millennia' => '$1 {{PLURAL:$1|milenari|milenari}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'discussion',
+'svg-long-error' => 'Archivi SVG nen bon: $1',
 );
index 2efddb7..be574b4 100644 (file)
@@ -413,9 +413,6 @@ $messages = array(
 تسی   {{SITENAME}} نوں گمنامی چ ورت سکدے او یا تسی <span class='plainlinks'>[$1 لاگ ان دوبارہ]</span> ہوجاؤ اوسے ناں توں یا وکھرے ورتن والے توں۔ اے گل چیتے رکھنا جے کج صفیاں تے تسی لاگ ان دسے جاؤگے جدوں تک تسی اپنے براؤزر دے کاشے نوں صاف ناں کرلو۔
 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.",
-'welcomecreation' => '== جی آیاں نوں, $1! ==
-تواڈا کھاتا بن گیا اے۔
-اپنیاں [[Special:Preferences|{{SITENAME}} تانگاں]] بدلنا نا پلنا۔',
 'yourname' => 'ورتن والہ:',
 'yourpassword' => 'کنجی:',
 'yourpasswordagain' => 'کنجی دوبارہ لکھو:',
@@ -1990,11 +1987,7 @@ $1",
 
 'enotif_mailer' => '{{سائٹ ناں}} نوٹینیکیشن میلر',
 'enotif_reset' => 'سارے ویکھے گۓ صفحیاں تے نشان لاؤ',
-'enotif_newpagetext' => 'اے نواں صفہ اے۔',
 'enotif_impersonal_salutation' => '{{SITENAME}} ورتن والا',
-'changed' => 'بدلیا',
-'created' => 'بن گیا',
-'enotif_subject' => '{{سائیٹتھاں}} صفہ $صفہ سرخی  $تبدیلی بنائی  $صفہ لکھاری',
 'enotif_lastvisited' => '$1 تبدیلیاں ویکھو اپنے آخری واری آن مکروں',
 'enotif_lastdiff' => '$1 ویکھو ایس تبدیلی نون ویکھن لئی۔',
 'enotif_anon_editor' => 'گم نام ورتن آلا $1',
index bb01925..f5a8c0c 100644 (file)
@@ -12,6 +12,8 @@
  * @author Umherirrender
  */
 
+$rtl = true;
+
 $namespaceNames = array(
        NS_MEDIA            => 'رسنۍ',
        NS_SPECIAL          => 'ځانګړی',
@@ -155,8 +157,6 @@ $magicWords = array(
        'protectionlevel'           => array( '1', 'ژغورکچه', 'PROTECTIONLEVEL' ),
 );
 
-$rtl = true;
-
 $messages = array(
 # User preference toggles
 'tog-underline' => 'کرښنې تړنې:',
@@ -269,7 +269,7 @@ $messages = array(
 'category_header' => 'د "$1" په وېشنيزه کې شته مخونه',
 'subcategories' => 'څېرمه وېشنيزې',
 'category-media-header' => 'د "$1" په وېشنيزه کې شته رسنۍ',
-'category-empty' => "''تر Ø§Ù\88سÙ\87 Ù¾Ù\88رÛ\90 Ù\87Ù\85دا Ù\88Û\90Ø´Ù\86Ù\8aزÙ\87 Ù\87Û\90Ú\85 Ú©Ù\88Ù\85 Ù\85Ø® Ù\8aا Ú©Ù\88Ù\85Ù\87 رسنيزه دوتنه نلري.''",
+'category-empty' => "''دا Ù\88Û\90Ø´Ù\86Ù\8aزÙ\87 ØªØ± Ø§Ù\88سÙ\87 Ù¾Ù\88رÛ\90 Ú©Ù\88Ù\85 Ù\85Ø® Ù\8aا رسنيزه دوتنه نلري.''",
 'hidden-categories' => '{{PLURAL:$1|پټه وېشنيزه|پټې وېشنيزې}}',
 'hidden-category-category' => 'پټې وېشنيزې',
 'category-subcat-count' => '{{PLURAL:$2|په دې وېشنيزه کې دا لاندې وړه وېشنيزه ده.|په دې وېشنيزه کې له ټولټال $2 نه {{PLURAL:$1|وړه وېشنيزه ده|$1 وړې وېشنيزې دي}}.}}',
@@ -288,9 +288,9 @@ $messages = array(
 'newwindow' => '(په نوې کړکۍ کې پرانيستل کېږي)',
 'cancel' => 'ناګارل',
 'moredotdotdot' => 'نور ...',
-'mypage' => 'زÙ\85ا Ù¾Ø§Ú¼Ù\87',
-'mytalk' => 'زÙ\85ا Ø®Ø¨Ø±Û\90 Ø§ØªØ±Û\90',
-'anontalk' => 'ددې IP لپاره خبرې اترې',
+'mypage' => 'زÙ\85ا Ù\85Ø®',
+'mytalk' => 'خبرې اترې',
+'anontalk' => 'ددې IP خبرې اترې',
 'navigation' => 'ګرځښت',
 'and' => '&#32;او',
 
@@ -331,7 +331,7 @@ $messages = array(
 'history' => 'د مخ پېښليک',
 'history_short' => 'پېښليک',
 'updatedmarker' => 'زما د وروستي راتګ نه راپدېخوا اوسمهاله شوی',
-'printableversion' => 'د چاپ بڼه',
+'printableversion' => 'چاپي بڼه',
 'permalink' => 'تلپاتې تړنه',
 'print' => 'چاپ',
 'view' => 'کتل',
@@ -340,7 +340,7 @@ $messages = array(
 'editthispage' => 'همدا مخ سمول',
 'create-this-page' => 'همدا مخ ليکل',
 'delete' => 'ړنګول',
-'deletethispage' => 'دا مخ ړنګ کړه',
+'deletethispage' => 'دا مخ ړنګول',
 'undelete_short' => '{{PLURAL:$1|يو سمون|$1 سمونې}} ناړنګول',
 'viewdeleted_short' => '{{PLURAL:$1|يو ړنګ شوی سمون|$1 ړنګ شوي سمونونه}} کتل',
 'protect' => 'ژغورل',
@@ -361,7 +361,7 @@ $messages = array(
 'userpage' => 'د کارن پاڼه کتل',
 'projectpage' => 'د پروژې مخ کتل',
 'imagepage' => 'د دوتنې مخ کتل',
-'mediawikipage' => 'د پيغامونو مخ کتل',
+'mediawikipage' => 'پيغام مخ کتل',
 'templatepage' => 'د کينډۍ مخ کتل',
 'viewhelppage' => 'د لارښود مخ کتل',
 'categorypage' => 'د وېشنيزې مخ کتل',
@@ -447,7 +447,7 @@ $1',
 'sort-ascending' => 'مخپورته اوډل',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Ù\84Ù\8aÚ©Ù\86Ù\87',
+'nstab-main' => 'Ù\85Ø®',
 'nstab-user' => 'کارن مخ',
 'nstab-media' => 'د رسنۍ مخ',
 'nstab-special' => 'ځانګړی مخ',
@@ -455,7 +455,7 @@ $1',
 'nstab-image' => 'دوتنه',
 'nstab-mediawiki' => 'پيغام',
 'nstab-template' => 'کينډۍ',
-'nstab-help' => 'لارښود',
+'nstab-help' => 'لارښود مخ',
 'nstab-category' => 'وېشنيزه',
 
 # Main script and global functions
@@ -532,9 +532,6 @@ $1',
 
 تاسې کولای شی چې د کارن-نوم نه پرته په ورکنومي توګه {{SITENAME}} وکاروی، او يا هم په همدې او يا کوم بل کارن-نوم، يو ځل <span class='plainlinks'>[$1 بيا غونډال ته ورننوځۍ]</span>.
 دا په پام کې وساتۍ چې تر څو تاسې د خپل کتنمل حافظه نه وي سپينه کړې، نو ځينې مخونو کې به لا تر اوسه پورې په غونډال کې ننوتي ښکارۍ.",
-'welcomecreation' => '==$1 ښه راغلۍ! ==
-
-ستاسې ګڼون جوړ شو. لطفاً د خپلو [[Special:Preferences|{{SITENAME}} غوره توبونو]] ټاکل مو مه هېروی.',
 'yourname' => 'کارن-نوم:',
 'yourpassword' => 'پټنوم:',
 'yourpasswordagain' => 'پټنوم بيا وليکه',
@@ -671,13 +668,13 @@ $1',
 # Edit page toolbar
 'bold_sample' => 'زغرد متن',
 'bold_tip' => 'زغرد متن',
-'italic_sample' => 'کوږ ليک',
-'italic_tip' => 'کوږ ليک',
+'italic_sample' => 'رېوند متن',
+'italic_tip' => 'رېوند متن',
 'link_sample' => 'د تړن سرليک',
 'link_tip' => 'کورنۍ تړنه',
 'extlink_sample' => 'http://www.example.com د تړنې سرليک',
 'extlink_tip' => 'باندنۍ تړنې (د http:// مختاړی مه هېروی)',
-'headline_sample' => 'سرÙ\84Ù\8aÚ©',
+'headline_sample' => 'د Ø³Ø±Ù\84Ù\8aÚ© Ù\85تÙ\86',
 'headline_tip' => 'د ۲ کچې سرليک',
 'nowiki_sample' => 'دلته دې بې بڼې متن ځای پر ځای شي',
 'nowiki_tip' => 'د ويکي بڼه نيونه بابېزه ګڼل',
@@ -762,18 +759,21 @@ $1',
 '''تر اوسه پورې لا ستاسې بدلونونه نه دي خوندي شوي!'''",
 'userjspreview' => "'''هېر مو نشي چې دا يوازې ستاسې د کارن د جاوا سکرېپټ آزمېيل/مخليدنه ده.'''
 '''تر اوسه پورې لا ستاسې بدلونونه نه دي خوندي شوي!'''",
+'sitecsspreview' => "'''په پام کې دې وي چې دا يوازې ستاسې د CSS مخليدنه ده.'''
+'''تر اوسه پورې لا ستاسې بدلونونه نه دي خوندي شوي!'''",
 'sitejspreview' => "'''په پام کې مو اوسه چې تاسې يوازې د دغه جاواسکرېپټ کوډ مخليدنه کوۍ.'''
 '''تر اوسه پورې دا نه دی خوندي شوی!'''",
 'updated' => '(تازه)',
 'note' => "'''يادونه:'''",
 'previewnote' => "'''هېر مو نه شي چې دا يواځې يوه مخليدنه ده.'''
 ستاسې لخوا ترسره شوي بدلونونه لا تر اوسه پورې نه دي خوندي شوي!!",
+'continue-editing' => 'د سمولو سيمې ته ورتلل',
 'editing' => 'د $1 سمونه',
 'creating' => '$1 جوړېدنې کې دی',
 'editingsection' => '$1 (برخه) په سمېدنې کې دی',
 'editingcomment' => 'د $1 سمون (نوې برخه)',
 'editconflict' => 'په سمادولو کې خنډ: $1',
-'yourtext' => 'ستاسو متن',
+'yourtext' => 'ستاسې متن',
 'storedversion' => 'زېرمه شوې مخکتنه',
 'yourdiff' => 'توپيرونه',
 'copyrightwarning' => "لطفاً په پام کې وساتۍ چې ټولې هغه ونډې چې تاسې يې {{SITENAME}} کې ترسره کوی هغه د $2 له مخې د خپرولو لپاره ګڼل کېږي (د لانورو تفصيلاتو لپاره $1 وګورۍ). که تاسې نه غواړۍ چې په ليکنو کې مو په بې رحمۍ سره لاسوهنې (سمونې) وشي او د نورو په غوښتنه پسې لانورې هم خپرې شي، نو دلته يې مه ځای پر ځای کوی..<br />
@@ -815,7 +815,7 @@ $1',
 'edit-no-change' => 'ستاسې سمون بابېزه وګڼل شو، دا ځکه چې تاسې په متن کې کوم بدلون نه دی راوستلی.',
 'edit-already-exists' => 'په دې نوم يو نوی مخ جوړ نه شو.
 پدې نوم د پخوا نه يو مخ شته.',
-'defaultmessagetext' => 'تلوالیزه پيغام متن',
+'defaultmessagetext' => 'تلواليزه پيغام متن',
 
 # Parser/template warnings
 'post-expand-template-inclusion-warning' => "'''ګواښنه:''' دا کينډۍ د خپل ټاکلي بريد نه ډېره لويه ده.
@@ -989,7 +989,7 @@ $1',
 
 # Preferences page
 'preferences' => 'غوره توبونه',
-'mypreferences' => 'زÙ\85ا ØºÙ\88رÙ\87 ØªÙ\88بÙ\88Ù\86Ù\87',
+'mypreferences' => 'غوره توبونه',
 'prefs-edits' => 'د سمونو شمېر:',
 'prefsnologin' => 'غونډال کې نه ياست ننوتي',
 'prefsnologintext' => 'د دې لپاره چې خپل غوره توبونه مو وټاکی، نو پکار ده چې لومړی تاسو غونډال کې <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ننوځی]</span>.',
@@ -1200,7 +1200,7 @@ $1',
 'recentchanges-label-unpatrolled' => 'دغه سمون تر اوسه پورې نه دی څارل شوی',
 'rcnote' => "دلته لاندې {{PLURAL:$1|وروستی '''1''' بدلون دی|وروستي '''$1''' بدلونونه دي}} چې په  {{PLURAL:$2| يوې ورځ|'''$2''' ورځو}} کې تر $4 نېټې او $5 بجو پېښ شوي.",
 'rcnotefrom' => "په همدې ځای کې لاندې هغه بدلونونه دي چې د '''$2''' نه راپدېخوا پېښ شوي (تر '''$1''' پورې ښکاره شوي).",
-'rclistfrom' => 'هغه بدلونونه ښکاره کړی چې له $1 نه پيلېږي',
+'rclistfrom' => 'هغه نوي بدلونونه ښکاره کول چې له $1 نه پيلېږي',
 'rcshowhideminor' => 'وړې سمونې $1',
 'rcshowhidebots' => 'روباټ $1',
 'rcshowhideliu' => 'غونډال کې ننوتي کارنان $1',
@@ -1350,7 +1350,7 @@ $1',
 'filehist' => 'د دوتنې پېښليک',
 'filehist-help' => 'په يوې نېټې/يوه وخت وټوکۍ چې د هماغه وخت او نېټې دوتنه چې په هماغه وخت کې څنګه ښکارېده هماغسې درښکاره شي.',
 'filehist-deleteall' => 'ټول ړنګول',
-'filehist-deleteone' => 'همدا ړنګول',
+'filehist-deleteone' => 'ړنګول',
 'filehist-revert' => 'په څټ ګرځول',
 'filehist-current' => 'اوسنی',
 'filehist-datetime' => 'نېټه/وخت',
@@ -1431,7 +1431,7 @@ $1',
 'statistics-users' => 'ثبت شوي [[Special:ListUsers|کارنان]]',
 'statistics-users-active' => 'فعاله کارنان',
 'statistics-users-active-desc' => 'هغه کارنان چې په {{PLURAL:$1|وروستۍ ورځ|وروستيو $1 ورځو}} کې فعاله ونډه لرلې',
-'statistics-mostpopular' => 'تر ټولو ډېر کتل شوي مخونه',
+'statistics-mostpopular' => 'ډېر کتل شوي مخونه',
 
 'disambiguations' => 'د مبهمو مخونو سره تړلي مخونه',
 'disambiguationspage' => 'Template:ناجوت',
@@ -1460,15 +1460,15 @@ $1',
 'ntransclusions' => 'په $1 {{PLURAL:$1|مخ|مخونو}} کارېدلی',
 'specialpage-empty' => 'د دې راپور لپاره کومې پايلې نشته.',
 'lonelypages' => 'يتيم مخونه',
-'uncategorizedpages' => 'Ù¾Ù\87 Ù\88Û\90Ø´Ù\86Ù\8aزÙ\88 Ù\86اÙ\88Û\90Ø´Ù\84Ù\8a Ù\85Ø®Ù\88Ù\86Ù\87',
-'uncategorizedcategories' => 'Ù¾Ù\87 Ù\88Û\90Ø´Ù\86Ù\8aزÙ\88 Ù\86اÙ\88Û\90Ø´Ù\84Û\90 Ù\88Û\90Ø´Ù\86Ù\8aزÛ\90',
-'uncategorizedimages' => 'Ù¾Ù\87 Ù\88Û\90Ø´Ù\86Ù\8aزÙ\88 Ù\86اÙ\88Û\90Ø´Ù\84Ù\8a Ø§Ù\86Ú\81Ù\88رÙ\86Ù\87',
-'uncategorizedtemplates' => 'Ù¾Ù\87 Ù\88Û\90Ø´Ù\86Ù\8aزÙ\88 Ù\86اÙ\88Û\90Ø´Ù\84Û\90 Ú©Ù\8aÙ\86Ú\89Û\8d',
+'uncategorizedpages' => 'ناوېشلي مخونه',
+'uncategorizedcategories' => 'ناوېشلې وېشنيزې',
+'uncategorizedimages' => 'ناوېشلي انځورنه',
+'uncategorizedtemplates' => 'ناوېشلې کينډۍ',
 'unusedcategories' => 'ناکارېدلې وېشنيزې',
 'unusedimages' => 'ناکارېدلې دوتنې',
 'popularpages' => 'نامتو مخونه',
 'wantedcategories' => 'غوښتلې وېشنيزې',
-'wantedpages' => 'غوښتل شوې پاڼې',
+'wantedpages' => 'غوښتلي مخونه',
 'wantedfiles' => 'غوښتلې دوتنې',
 'wantedtemplates' => 'غوښتلې کينډۍ',
 'mostlinked' => 'د ډېرو تړنو مخونه',
@@ -1506,7 +1506,7 @@ $1',
 
 # Book sources
 'booksources' => 'د کتاب سرچينې',
-'booksources-search-legend' => 'د Ú©ØªØ§Ø¨Ù\8a Ø³Ø±Ú\86Ù\8aÙ\86Ù\88 Ù\84Ù¼Ù\88Ù\86 Ù\88Ú©Ú\93Û\8d',
+'booksources-search-legend' => 'د Ú©ØªØ§Ø¨Ù\8a Ø³Ø±Ú\86Ù\8aÙ\86Ù\88 Ù¾Ù\84Ù¼Ù\86Ù\87',
 'booksources-go' => 'ورځه',
 'booksources-text' => 'دا لاندې د هغه وېبځايونو د تړنو لړليک دی چېرته چې نوي او زاړه کتابونه پلورل کېږي، او يا هم کېدای شي چې د هغه کتاب په هکله مالومات ولري کوم چې تاسو ورپسې لټېږۍ:',
 
@@ -1519,14 +1519,14 @@ $1',
 
 # Special:AllPages
 'allpages' => 'ټول مخونه',
-'alphaindexline' => '$1 نه تر $2 پورې',
+'alphaindexline' => '$1 تر $2',
 'nextpage' => 'بل مخ ($1)',
 'prevpage' => 'تېر مخ ($1)',
 'allpagesfrom' => 'هغه مخونه کتل چې پېلېږي په:',
 'allpagesto' => 'هغه مخونه کتل چې پای يې وي:',
 'allarticles' => 'ټول مخونه',
 'allinnamespace' => 'ټول مخونه ($1 نوم-تشيال)',
-'allnotinnamespace' => 'ټولې پاڼې (د $1 په نوم-تشيال کې نشته)',
+'allnotinnamespace' => 'ټول مخونه (د $1 نوم-تشيال پرته)',
 'allpagesprev' => 'پخواني',
 'allpagesnext' => 'راتلونکي',
 'allpagessubmit' => 'ورځه',
@@ -1623,7 +1623,7 @@ $1',
 
 # Watchlist
 'watchlist' => 'زما کتنلړ',
-'mywatchlist' => 'زما کتنلړ',
+'mywatchlist' => 'کتنلړ',
 'watchlistfor2' => 'د $1 لپاره $2',
 'nowatchlist' => 'ستاسې کتنلړ کې څه نه شته.',
 'watchlistanontext' => 'د خپل کتنلړ د توکو د سمولو او کتلو لپاره $1 ترسره کړۍ.',
@@ -1656,11 +1656,7 @@ $1',
 
 'enotif_mailer' => 'د {{SITENAME}} خبرتيايي برېښليک',
 'enotif_reset' => 'ټول مخونه کتل شوي نخښه کول',
-'enotif_newpagetext' => 'دا يوه نوې پاڼه ده.',
 'enotif_impersonal_salutation' => '{{SITENAME}} کارن',
-'changed' => 'بدلېدلی',
-'created' => 'جوړ شو',
-'enotif_subject' => 'د {{SITENAME}} مخ $PAGETITLE د  $PAGEEDITOR لخوا $CHANGEDORCREATED',
 'enotif_lastvisited' => 'د ټولو هغو بدلونونو د کتلو لپاره چې ستاسو د وروستي ځل راتګ نه وروسته پېښې شوي، $1 وګورۍ.',
 'enotif_lastdiff' => 'د همدغه بدلون د کتلو لپاره $1 وګورۍ.',
 'enotif_anon_editor' => 'ورکنومی کارن $1',
@@ -1695,11 +1691,11 @@ $UNWATCHURL  نه ليدنه وکړۍ
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
 
 # Delete
-'deletepage' => 'پاڼÙ\87 ړنګول',
+'deletepage' => 'Ù\85Ø® ړنګول',
 'confirm' => 'تاييد',
 'excontent' => 'د مخ مېنځپانګه دا وه: "$1"',
 'excontentauthor' => 'د مخ مېنځپانګه دا وه: "$1" (او يواځينی ونډه وال "[[Special:Contributions/$2|$2]]" وه)',
-'exblank' => 'دا مخ تش وه',
+'exblank' => 'مخ تش وه',
 'delete-confirm' => '"$1" ړنګوول',
 'delete-legend' => 'ړنګول',
 'historywarning' => "ګواښنه:''' تاسې چې د کوم مخ د ړنګېدو تکل لری، هغه د نژدې $1 {{PLURAL:$1|بڼې|بڼو}} يو پېښليک لري:",
@@ -1726,7 +1722,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 
 # Protect
 'protectlogpage' => 'د ژغورنې يادښت',
-'protectedarticle' => '"[[$1]]" وژغورلی شو',
+'protectedarticle' => '"[[$1]]" وژغورل شو',
 'modifiedarticleprotection' => 'د "[[$1]]" لپاره د ژغورنې کچه بدله شوه',
 'protect-title' => 'د "$1" لپاره د ژغورنې کچه بدلول',
 'prot_1movedto2' => '[[$1]]، [[$2]] ته ولېږدېده',
@@ -1805,7 +1801,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 # Contributions
 'contributions' => 'د کارن ونډې',
 'contributions-title' => 'د $1 کارن ونډې',
-'mycontris' => 'زما ونډې',
+'mycontris' => 'ونډې',
 'contribsub2' => 'د $1 لپاره ($2)',
 'uctop' => '(سرپاڼه)',
 'month' => 'له مياشتې د (او پخواني):',
@@ -1818,7 +1814,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'sp-contributions-uploads' => 'پورته کېدنې',
 'sp-contributions-logs' => 'يادښتونه',
 'sp-contributions-talk' => 'خبرې اترې',
-'sp-contributions-search' => 'د Ù\88Ù\86Ú\89Ù\88 Ù\84Ù¼Ù\88Ù\86',
+'sp-contributions-search' => 'د Ù\88Ù\86Ú\89Ù\88 Ù¾Ù\84Ù¼Ù\86Ù\87',
 'sp-contributions-username' => 'IP پته يا کارن-نوم:',
 'sp-contributions-toponly' => 'يوازې هغه سمونونه چې تر ټولو تازه بڼې لري ښکاره کول',
 'sp-contributions-submit' => 'پلټل',
@@ -1838,7 +1834,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'whatlinkshere-hideredirs' => 'مخ ګرځونې $1',
 'whatlinkshere-hidetrans' => 'پايلې $1',
 'whatlinkshere-hidelinks' => 'تړنې $1',
-'whatlinkshere-hideimages' => '$1 د انځور تړنې',
+'whatlinkshere-hideimages' => 'د دوتنې تړنې $1',
 'whatlinkshere-filters' => 'چاڼګرونه',
 
 # Block/unblock
@@ -1894,7 +1890,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'ipblocklist-submit' => 'پلټل',
 'ipblocklist-localblock' => 'سيمه ايز بنديز',
 'ipblocklist-otherblocks' => '{{PLURAL:$1|بل بنديز|نور بنديزونه}}',
-'infiniteblock' => 'Ù\84امحدوده',
+'infiniteblock' => 'Ù\86امحدوده',
 'expiringblock' => 'په $1 نېټه، $2 بجو پای ته رسېږي',
 'anononlyblock' => 'يواځې ورکنومی',
 'createaccountblock' => 'په ګڼون جوړولو بنديز لګېدلی',
@@ -1925,8 +1921,10 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'lockdb' => 'توکبنسټ تړل',
 'unlockdb' => 'توکبنسټ پرانيستل',
 'lockconfirm' => 'هو، زه د توکبنسټ تړل غواړم.',
+'unlockconfirm' => 'هو، زه د توکبنسټ پرانيستل غواړم.',
 'lockbtn' => 'توکبنسټ تړل',
 'unlockbtn' => 'توکبنسټ پرانيستل',
+'databasenotlocked' => 'توکبنسټ نه دی تړل شوی.',
 
 # Move page
 'move-page' => '$1 لېږدول',
@@ -2003,8 +2001,8 @@ $UNWATCHURL  نه ليدنه وکړۍ
 # Namespace 8 related
 'allmessages' => 'د غونډال پيغامونه',
 'allmessagesname' => 'نوم',
-'allmessagesdefault' => 'ټاکل شوی متن',
-'allmessagescurrent' => 'اوسنی متن',
+'allmessagesdefault' => 'تلواليزه پيغام متن',
+'allmessagescurrent' => 'اÙ\88سÙ\86Û\8c Ù¾Ù\8aغاÙ\85 Ù\85تÙ\86',
 'allmessagestext' => 'دا د مېډياويکي په نوم-تشيال کې د غونډال د پيغامونو لړليک دی.
 که چېرته تاسې د ميډياويکي په ځايتابه کې ونډې ترسره کول غواړۍ نو لطفاً [//www.mediawiki.org/wiki/Localisation د ويډياويکي ځايتابه] او [//translatewiki.net translatewiki.net] نه ليدنه وکړۍ.',
 'allmessagesnotsupportedDB' => "'''Special:Allmessages''' ترېنه کار نه اخيستل کېږي ځکه چې '''\$wgUseDatabaseMessages''' مړ دی.",
@@ -2028,9 +2026,11 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'import-interwiki-namespace' => 'د موخې نوم-تشيال:',
 'import-upload-filename' => 'د دوتنې نوم:',
 'import-comment' => 'تبصره:',
+'import-revision-count' => '$1 {{PLURAL:$1|بڼه|بڼې}}',
 
 # Import log
 'importlogpage' => 'د واردولو يادښت',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|بڼه|بڼې}}',
 
 # JavaScriptTest
 'javascripttest' => 'د جاوا سکرېپټ آزمېښت',
@@ -2058,7 +2058,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'tooltip-search' => '{{SITENAME}} پلټل',
 'tooltip-search-go' => 'په دې نوم د کټ مټ ورته مخ شتون په صورت کې، هماغه مخ ته ورځه',
 'tooltip-search-fulltext' => 'په مخونو کې دا متن وپلټه',
-'tooltip-p-logo' => 'لومړی مخ',
+'tooltip-p-logo' => 'لومړي مخ ته ورتلل',
 'tooltip-n-mainpage' => 'لومړي مخ ته ورتلل',
 'tooltip-n-mainpage-description' => 'آرنی مخ کتل',
 'tooltip-n-portal' => 'د پروژې په اړه، تاسې څه شيان او چېرته کولای شی چې وې مومۍ',
@@ -2082,7 +2082,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'tooltip-ca-nstab-special' => 'دا يو ځانګړی مخ دی، تاسې په دې مخ کې سمون نه شی کولای.',
 'tooltip-ca-nstab-project' => 'د پروژې مخ کتل',
 'tooltip-ca-nstab-image' => 'د دوتنې مخ کتل',
-'tooltip-ca-nstab-mediawiki' => 'د ØºÙ\88Ù\86Ú\89اÙ\84 Ù¾Ù\8aغاÙ\85Ù\88Ù\86Ù\87 Ú\9aکارÙ\87 Ú©Ù\88ل',
+'tooltip-ca-nstab-mediawiki' => 'د ØºÙ\88Ù\86Ú\89اÙ\84 Ù¾Ù\8aغاÙ\85Ù\88Ù\86Ù\87 Ú©Øªل',
 'tooltip-ca-nstab-template' => 'کينډۍ کتل',
 'tooltip-ca-nstab-help' => 'د لارښود مخ کتل',
 'tooltip-ca-nstab-category' => 'د وېشنيزې مخ ښکاره کول',
index e85ff8e..dd0772d 100644 (file)
@@ -717,9 +717,6 @@ O administrador que efetuou o bloqueio deu a seguinte explicação: "$3".',
 
 Pode continuar a utilizar a {{SITENAME}} anonimamente, ou pode <span class='plainlinks'>[$1 autenticar-se novamente]</span> com o mesmo nome de utilizador ou com um nome de utilizador diferente.
 Tenha em atenção que algumas páginas poderão continuar a ser apresentadas como se ainda estivesse autenticado até limpar a cache do seu browser.",
-'welcomecreation' => '== Bem-vindo, $1! ==
-A sua conta foi criada.
-Não se esqueça de personalizar as suas [[Special:Preferences|preferências na {{SITENAME}}]].',
 'yourname' => 'Nome de utilizador:',
 'yourpassword' => 'Palavra-chave:',
 'yourpasswordagain' => 'Repita a palavra-chave:',
@@ -1004,7 +1001,7 @@ Este ainda não foi gravado!",
 'note' => "'''Nota:'''",
 'previewnote' => "'''Lembre-se que esta é apenas uma antevisão do resultado.'''
 As modificações ainda não foram gravadas!",
-'continue-editing' => 'Continuar a editar',
+'continue-editing' => 'Ir para a área de edição',
 'previewconflict' => 'Esta antevisão do resultado apresenta o texto da caixa de edição acima tal como este aparecerá se escolher gravá-lo.',
 'session_fail_preview' => "'''Não foi possível processar a edição devido à perda dos dados da sua sessão.
 Tente novamente, por favor.
@@ -1090,6 +1087,10 @@ Ela parece ter sido eliminada.',
 Ela já existia.',
 'defaultmessagetext' => 'Texto da mensagem padrão',
 
+# Content models
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
+
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Aviso: Esta página contém demasiadas chamadas de funções exigentes do analisador sintáctico.
 
@@ -2300,6 +2301,7 @@ Encontram-se disponíveis [[{{MediaWiki:Listgrouprights-helppage}}|informações
 'mailnologin' => 'Não existe endereço de envio',
 'mailnologintext' => 'Precisa de estar [[Special:UserLogin|autenticado]] e possuir um endereço de correio válido nas suas [[Special:Preferences|preferências]], para poder enviar correio electrónico a outros utilizadores.',
 'emailuser' => 'Enviar correio electrónico a este utilizador',
+'emailuser-title-target' => 'Enviar correio eletrónico a {{GENDER:$1|este utilizador|esta utilizadora}}',
 'emailpage' => 'Enviar correio electrónico ao utilizador',
 'emailpagetext' => 'Pode usar o formulário abaixo para enviar uma mensagem por correio electrónico para este utilizador.
 O endereço de correio que introduziu nas suas [[Special:Preferences|preferências]] irá aparecer no campo do remetente da mensagem "De:", para que o destinatário lhe possa responder directamente.',
@@ -2370,11 +2372,7 @@ O nome desta página passará a aparecer a '''negrito''' na lista de [[Special:R
 
 'enotif_mailer' => 'Gerador de Notificações da {{SITENAME}}',
 'enotif_reset' => 'Marcar todas as páginas como visitadas',
-'enotif_newpagetext' => 'Esta é uma página nova.',
 'enotif_impersonal_salutation' => 'Utilizador da "{{SITENAME}}"',
-'changed' => 'alterada',
-'created' => 'criada',
-'enotif_subject' => '{{SITENAME}}: A página $PAGETITLE foi $CHANGEDORCREATED por $PAGEEDITOR',
 'enotif_lastvisited' => 'Consulte $1 para todas as alterações efectuadas desde a sua última visita.',
 'enotif_lastdiff' => 'Consulte $1 para ver esta alteração.',
 'enotif_anon_editor' => 'utilizador anónimo $1',
@@ -2635,7 +2633,7 @@ Para referência é apresentado abaixo o último registo de bloqueio:',
 'whatlinkshere-hideredirs' => '$1 redireccionamentos',
 'whatlinkshere-hidetrans' => '$1 transclusões',
 'whatlinkshere-hidelinks' => '$1 links',
-'whatlinkshere-hideimages' => '$1 links para imagens',
+'whatlinkshere-hideimages' => '$1 links para ficheiros',
 'whatlinkshere-filters' => 'Filtros',
 
 # Block/unblock
@@ -3147,6 +3145,8 @@ Este bloqueio foi provavelmente causado por um link para um site externo que con
 'pageinfo-magic-words' => '{{PLURAL:$1|Palavra mágica|Palavras mágicas}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Categoria oculta|Categorias ocultas}} ($1)',
 'pageinfo-toolboxlink' => 'Informações da página',
+'pageinfo-contentpage-yes' => 'Sim',
+'pageinfo-protect-cascading-yes' => 'Sim',
 
 # Skin names
 'skinname-standard' => 'Clássico',
index 0fbe91e..824de16 100644 (file)
@@ -721,9 +721,6 @@ O administrador que bloqueou ofereceu a seguinte explicação: "$3".',
 
 É possível continuar usando {{SITENAME}} anonimamente ou <span class='plainlinks'>[$1 autenticar-se novamente]</span> com o mesmo nome de usuário ou com um nome diferente.
 Note que algumas páginas podem continuar sendo exibidas como se você ainda estivesse autenticado até que você limpe a ''cache'' do seu navegador.",
-'welcomecreation' => '== Bem-vindo(a), $1! ==
-A sua conta foi criada.
-Não se esqueça de personalizar as suas [[Special:Preferences|preferências no wiki {{SITENAME}}]].',
 'yourname' => 'Nome de usuário:',
 'yourpassword' => 'Senha:',
 'yourpasswordagain' => 'Redigite sua senha',
@@ -2358,11 +2355,7 @@ Modificações futuras em tal página e páginas de discussão a ela associadas
 
 'enotif_mailer' => '{{SITENAME}} Email de Notificação',
 'enotif_reset' => 'Marcar todas páginas como visitadas',
-'enotif_newpagetext' => 'Esta é uma página nova.',
 'enotif_impersonal_salutation' => 'Usuário do projeto "{{SITENAME}}"',
-'changed' => 'alterada',
-'created' => 'criada',
-'enotif_subject' => '{{SITENAME}}: A página $PAGETITLE foi $CHANGEDORCREATED por $PAGEEDITOR',
 'enotif_lastvisited' => 'Consulte $1 para todas as alterações efetuadas desde a sua última visita.',
 'enotif_lastdiff' => 'Acesse $1 para ver esta alteração.',
 'enotif_anon_editor' => 'usuário anônimo $1',
index 14e3886..9dfe974 100644 (file)
@@ -365,7 +365,8 @@ This can also appear in the credits page if the credits feature is enabled,for e
 {{Identical|Find}}',
 'qbbrowse' => '{{Identical|Browse}}',
 'qbedit' => '{{Identical|Edit}}',
-'qbmyoptions' => '{{Identical|My pages}}',
+'qbmyoptions' => 'Heading in the Cologne Blue skin user menu containing links to user (talk) page, preferences, watchlist, etc.
+{{Identical|My pages}}',
 'qbspecialpages' => '{{Identical|Special pages}}',
 'faqpage' => "FAQ is short for ''frequently asked questions''. This page is only linked on some of the old skins, not in Monobook or Modern.
 
@@ -401,6 +402,7 @@ This can also appear in the credits page if the credits feature is enabled,for e
 'namespaces' => '{{Identical|Namespace}}',
 'variants' => 'Used by the Vector skin.',
 
+'navigation-heading' => 'Heading shown above the navigation menu (sidebar) for screen-readers (or in non-standard skins).',
 'errorpagetitle' => 'Message shown in browser title bar when encountering error operation.
 
 {{Identical|Error}}',
@@ -744,7 +746,8 @@ See also {{msg-mw|protectedinterface}}.',
 # Login and logout pages
 'logouttext' => 'Log out message
 * $1 is an URL to [[Special:Userlogin]] containing returnto and returntoquery parameters',
-'welcomecreation' => 'The welcome message users see after registering a user account. $1 is the username of the new user.',
+'welcomeuser' => 'Text for a welcome heading that users see after registering a user account. $1 is the username of the new user. See [[bugzilla:42215]]',
+'welcomecreation-msg' => 'A welcome message users see after registering a user account, following a welcomeuser heading. $1 is the username of the new user. Replaces welcomecreation in 1.21wmf5,see [[bugzilla:42215]]',
 'yourname' => "In user preferences
 
 <nowiki>{{</nowiki>[[Gender|GENDER]]<nowiki>}}</nowiki> is '''NOT''' supported.
@@ -1863,19 +1866,23 @@ Parameters:
 * $2 is a comma separated list of old user groups or {{msg-mw|Rightsnone}}
 * $3 is a comma separated list of new user groups',
 'logentry-rights-rights' => '*$1 - username
+*$2 - (see below)
 *$3 - username
 *$4 - list of user groups or {{msg-mw|Rightsnone}}
 *$5 - list of user groups or {{msg-mw|Rightsnone}}
-
+----
 {{Logentry}}',
 'logentry-rights-rights-legacy' => '*$1 - username
+*$2 - (see below)
 *$3 - username
-
+----
 {{Logentry}}',
 'logentry-rights-autopromote' => '*$1 - username
+*$2 - (see below)
+*$3 - (see below)
 *$4 - comma separated list of old user groups or {{msg-mw|Rightsnone}}
 *$5 - comma separated list of new user groups
-
+----
 {{Logentry}}',
 'rightsnone' => 'Default rights for registered users.
 
@@ -2101,6 +2108,8 @@ Extensions making use of it:
 * $1 is a storage path.',
 'backend-fail-delete' => 'Parameters:
 * $1 is a file path.',
+'backend-fail-describe' => 'Parameters:
+* $1 is a file path.',
 'backend-fail-alreadyexists' => 'Parameters:
 * $1 is a filename.',
 'backend-fail-store' => 'Parameters:
@@ -2768,10 +2777,16 @@ Similar to {{msg-mw|rcnote}} which is used on [[Special:RecentChanges]].
 'watcherrortext' => 'When a user clicked the watch/unwatch tab and the action did not succeed, this message is displayed. See also {{msg|addedwatchtext}}. and {{msg|addedwatchtext}}. This message is used raw and should not contain wikitext.',
 
 'enotif_reset' => "This should be translated as \"Mark all pages '''as''' visited\".",
-'enotif_newpagetext' => 'Part of text of a notification e-mail sent when a watched page has been created. See [[File:Screenshot_MediaWiki_e-mail_notifier.PNG|150px|right]]',
-'changed' => 'Possible value for $CHANGEDORCREATED in {{msg|enotif_subject}} and {{msg|enotif_body}}.',
-'created' => 'Possible value for $CHANGEDORCREATED in {{msg|enotif_subject}} and {{msg|enotif_body}}.',
-'enotif_subject' => '$CHANGEDORCREATED can be one of {{msg|changed}} and {{msg|created}}. Can also be {{msg-mw|blog-added}} or {{msg-mw|blog-edited}} from Wikia.',
+'enotif_subject_deleted' => 'Email notification subject for deleted pages, $1 is page title, $2 is page editor.',
+'enotif_subject_created' => 'Email notification subject for new pages, $1 is page title, $2 is page editor.',
+'enotif_subject_moved' => 'Email notification subject for pages that get moved, $1 is page title, $2 is page editor.',
+'enotif_subject_restored' => 'Email notification subject for pages that get restored, $1 is page title, $2 is page editor.',
+'enotif_subject_changed' => 'Email notification subject for pages that get changed, $1 is page title, $2 is page editor.',
+'enotif_body_intro_deleted' => 'Email notification body intro text for deleted pages, $1 is the page title, $2 is the page editor, $3 is page url.',
+'enotif_body_intro_created' => 'Email notification body intro text for new pages, $1 is the page title, $2 is the page editor, $3 is page url.',
+'enotif_body_intro_moved' => 'Email notification body intro for pages that get moved, $1 is the page title, $2 is the page editor, $3 is page url.',
+'enotif_body_intro_restored' => 'Email notification body intro for pages that get restored, $1 is the page title, $2 is the page editor, $3 is page url.',
+'enotif_body_intro_changed' => 'Email notification body intro for pages that get changed, $1 is the page title, $2 is the page editor, $3 is page url.',
 'enotif_lastvisited' => '$1 is a URL address.',
 'enotif_lastdiff' => 'E-mail notification text to the latest page differences. Parameters:
 * $1 is a link to a diff, shown as a plain link.',
@@ -3645,6 +3660,8 @@ Used as link text, linked to '{{int:Prefixindex}}' page ([[Special:PrefixIndex]]
 
 # Patrolling
 'markedaspatrolledtext' => '{{Identical|Markedaspatrolled}}',
+'markedaspatrollednotify' => 'Notification shown after a change has been marked as patrolled, $1 is the page title',
+'markedaspatrollederrornotify' => 'Notification shown after marking a change as patrolled failed',
 
 # Patrol log
 'patrol-log-page' => '{{doc-logpage}}',
@@ -3687,7 +3704,7 @@ Parameters:
 Start with a lowercase letter, unless the first word is “SVG”.',
 'svg-long-desc-animated' => 'Displayed under an SVG image at the image description page if the image is animated. Non-animated images use {{msg-mw|svg-long-desc}}.
 * $1 is the width in pixels
-* $2 is the height in pixels, and 
+* $2 is the height in pixels, and
 * $3 is the file size including a unit (for example "10 KB").
 
 Start with a lowercase letter, unless the first word is “SVG”.',
@@ -3771,6 +3788,7 @@ Part of variable $1 in {{msg-mw|Ago}}
 *{{msg-mw|Minutes}}
 *{{msg-mw|Hours}}
 *{{msg-mw|Days}}',
+'just-now' => 'Phrase for indicating something happened just now.',
 
 # Bad image list
 'bad_image_list' => 'This message only appears to guide administrators to add links with the right format. This will not appear anywhere else in MediaWiki.',
@@ -4952,6 +4970,9 @@ Parameter $4, the target page, is also not visible to parser functions.',
 $4 is the gender of the target user.',
 'logentry-newusers-create2' => '{{Logentry}}
 
+$4 is the name of the target user.',
+'logentry-newusers-autocreate' => '{{Logentry}}
+
 $4 is the gender of the target user.',
 
 # Feedback
@@ -5032,5 +5053,6 @@ $4 is the gender of the target user.',
 'api-error-verification-error' => 'The word "extension" refers to the part behind the last dot in a file name, that by convention gives a hint about the kind of data format which a files contents are in.',
 
 # Unknown messages
-'mytalk-parenthetical' => 'When user page and talk combined into single label, link title for talk label',
+'svg-long-error' => 'Displayed for invalid SVG file metadata.
+* $1 is the error message.',
 );
index 8f151eb..d61676f 100644 (file)
@@ -669,9 +669,6 @@ Amachaq kamachiqqa kayrayku amachani nispa nirqanmi: "$3".',
 'logouttext' => "'''Llamk'apuy tiyayniykiqa puchukasqañam.'''
 
 Sutinnaq kaspaykipas {{SITENAME}}pi wamp'uytam atinki. Mana hinataq munaspaykiqa, <span class='plainlinks'>[$1 musuqmanta yaykuy]</span> ñawpaq icha huk sutiwan. Huk p'anqakunaqa kaqllam rikch'akunqa, ''cache'' nisqa pakasqa hallch'ata mana ch'usaqchaptiykiqa.",
-'welcomecreation' => '== Allinmi hamusqayki $1! ==
-Rakiqunaykiqa kicharisqañam.
-Ama qunqaychu [[Special:Preferences|{{SITENAME}} allinkachinaykikunata]] kikinchayta.',
 'yourname' => 'Ruraq sutiyki:',
 'yourpassword' => 'Yaykuna rimayki',
 'yourpasswordagain' => 'Yaykuna rimaykita kutipayay',
@@ -2227,11 +2224,7 @@ Qampa [[Special:Preferences|allinkachinaykikunapi]] qillqakamachisqayki imamayta
 
 'enotif_mailer' => '{{SITENAME}}pa chaski musyachina sirwiqnin',
 'enotif_reset' => "Tukuy p'anqakunata watukusqakama sananchay",
-'enotif_newpagetext' => "Musuq p'anqam.",
 'enotif_impersonal_salutation' => '{{SITENAME}}pa ruraqnin',
-'changed' => 'hukchasqa',
-'created' => 'kamarirqan',
-'enotif_subject' => '{{SITENAME}}pi $PAGETITLE sutiyuq p\'anqaqa $PAGEEDITOR-pa $CHANGEDORCREATED-nñam',
 'enotif_lastvisited' => "$1 sutiyuq p'anqata qhaway qayna watukamusqaykimantapacha tukuy hukchasqakunata rikunaykipaq.",
 'enotif_lastdiff' => "$1 sutiyuq p'anqata qhaway kay hukchasqata rikunaykipaq.",
 'enotif_anon_editor' => 'sutinnaq ruraq $1',
index d992057..f6adcaa 100644 (file)
@@ -176,7 +176,7 @@ $messages = array(
 'cancel' => 'refusar las midadas',
 'moredotdotdot' => 'Dapli...',
 'mypage' => 'mia pagina',
-'mytalk' => 'Mia pagina da discussiun',
+'mytalk' => 'discussiun',
 'anontalk' => 'Pagina da discussiun da questa IP',
 'navigation' => 'Navigaziun',
 'and' => '&#32;e',
@@ -453,9 +453,6 @@ L\'administratur che ha bloccà l\'access da scriva ha dà suandanta explicaziun
 'logouttext' => "'''Sortì cun success.'''
 
 Ti pos cuntinuar cun utilisar {{SITENAME}} anonimamain, u che ti pos <span class='plainlinks'>[$1 t'annunziar]</span> sco medem u in'auter utilisader. Resguarda che entginas paginas pon anc vesair or tuttina sco sche ti eras annunzià enfin che ti has stizzà il cache da tes navigatur.",
-'welcomecreation' => '==Bainvegni, $1! ==
-Tes conto è vegni creà.
-Betg emblida da midar tias [[Special:Preferences|preferenzas da {{SITENAME}}]].',
 'yourname' => "Num d'utilisader",
 'yourpassword' => 'pled-clav',
 'yourpasswordagain' => 'repeter pled-clav',
@@ -470,7 +467,7 @@ Betg emblida da midar tias [[Special:Preferences|preferenzas da {{SITENAME}}]].'
 'userlogin' => "T'annunziar / registrar",
 'userloginnocreate' => "T'annunziar",
 'logout' => 'Sortir',
-'userlogout' => 'Sortir',
+'userlogout' => 'sortir',
 'notloggedin' => "Betg s'annunzià",
 'nologin' => "Anc nagin conto? '''$1'''.",
 'nologinlink' => "Crear in conto d'utilisader",
@@ -1104,7 +1101,7 @@ Considerescha che lur index da {{SITENAME}} po cuntegnair datas ch'èn betg pli
 
 # Preferences page
 'preferences' => 'Preferenzas',
-'mypreferences' => 'Mias preferenzas',
+'mypreferences' => 'preferenzas',
 'prefs-edits' => 'Dumber da las modificaziuns:',
 'prefsnologin' => "Betg t'annunzià",
 'prefsnologintext' => 'Ti stos esser <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} t\'annunzià]</span> per midar tias preferenzas.',
@@ -1907,8 +1904,8 @@ L'adressa dad e-mail che ti has endatà en [[Special:Preferences|tias preferenza
 'usermessage-editor' => 'Messenger dal sistem',
 
 # Watchlist
-'watchlist' => "Mia glista d'observaziun",
-'mywatchlist' => "Mia glista d'observaziun",
+'watchlist' => "glista d'observaziun",
+'mywatchlist' => "glista d'observaziun",
 'watchlistfor2' => 'Per $1 $2',
 'nowatchlist' => "Ti n'has nagins elements sin tia glista d'observaziun.",
 'watchlistanontext' => "Ti stos $1 per vesair u modifitgar elements sin tia glista d'observaziun",
@@ -1944,11 +1941,7 @@ Midadas futuras vid quai artitgel e la pagina da discussiun appertegnenta vegnan
 
 'enotif_mailer' => "Servetsch d'infurmaziun per e-mail da {{SITENAME}}",
 'enotif_reset' => 'Marcar tut las paginas sco visitadas.',
-'enotif_newpagetext' => 'Quaii è ina nova pagina.',
 'enotif_impersonal_salutation' => 'Utilisader da {{SITENAME}}',
-'changed' => 'midada',
-'created' => 'creada',
-'enotif_subject' => 'La pagina $PAGETITLE da {{SITENAME}} è vegnida $CHANGEDORCREATED da $PAGEEDITOR',
 'enotif_lastvisited' => 'Visita $1 per vesair tut las midadas dapi tia ultima visita.',
 'enotif_lastdiff' => 'Guarda $1 per vesair questa midada.',
 'enotif_anon_editor' => 'utilisader anonim $1',
@@ -2117,7 +2110,7 @@ Sch'ina nova pagina cun il medem num è vegnida creada dapi che la pagina è veg
 # Contributions
 'contributions' => "Contribuziuns da l'utilisader",
 'contributions-title' => "Contribuziuns d'utilisader da $1",
-'mycontris' => 'Mias contribuziuns',
+'mycontris' => 'contribuziuns',
 'contribsub2' => 'Per $1 ($2)',
 'nocontribs' => 'Chattà naginas modificaziuns che correspundan a quests criteris.',
 'uctop' => '(actual)',
index 6979782..6136f8e 100644 (file)
@@ -467,6 +467,7 @@ pe titlul secțiunii (JavaScript)',
 'namespaces' => 'Spații de nume',
 'variants' => 'Variante',
 
+'navigation-heading' => 'Meniu de navigare',
 'errorpagetitle' => 'Eroare',
 'returnto' => 'Înapoi la $1.',
 'tagline' => 'De la {{SITENAME}}',
@@ -712,9 +713,9 @@ Administratorul care a efectuat blocarea a furnizat explicația: „$3”.',
 
 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.",
-'welcomecreation' => '==Bun venit, $1!==
-
-Contul dumneavoatră a fost creat. Nu uitați să vă personalizați [[Special:Preferences|preferințele]] în {{SITENAME}}.',
+'welcomeuser' => 'Bun venit, $1!',
+'welcomecreation-msg' => 'Contul dumneavoastră a fost creat.
+Nu uitați să vă modificați [[Special:Preferences|preferințele]] în {{SITENAME}}.',
 'yourname' => 'Nume de utilizator:',
 'yourpassword' => 'Parolă:',
 'yourpasswordagain' => 'Repetați parola:',
@@ -1064,7 +1065,7 @@ Puteți edita o pagină deja existentă sau puteți să vă [[Special:UserLogin|
 Asigurați-vă că este oportună recrearea acestei pagini.
 Jurnalul ștergerilor și al mutărilor pentru această pagină este disponibil:",
 'moveddeleted-notice' => 'Această pagină a fost ștearsă.
-Jurnalul ștergerilor și al mutărilor este disponibil mai jos.',
+Jurnalul ștergerilor și al redenumirilor este disponibil mai jos.',
 'log-fulllog' => 'Vezi tot jurnalul',
 'edit-hook-aborted' => 'Modificarea a fost abandonată din cauza unui hook.
 Nicio explicație furnizată.',
@@ -1520,7 +1521,7 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 'group-bot' => 'Roboți',
 'group-sysop' => 'Administratori',
 'group-bureaucrat' => 'Birocrați',
-'group-suppress' => 'Oversights',
+'group-suppress' => 'Supervizori',
 'group-all' => '(toți)',
 
 'group-user-member' => '{{GENDER:$1|utilizator|utilizatoare|utilizator}}',
@@ -1528,14 +1529,14 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 'group-bot-member' => '{{GENDER:$1|robot}}',
 'group-sysop-member' => '{{GENDER:$1|administrator}}',
 'group-bureaucrat-member' => '{{GENDER:$1|birocrat}}',
-'group-suppress-member' => '{{GENDER:$1|supraveghetor}}',
+'group-suppress-member' => '{{GENDER:$1|supervizor}}',
 
 'grouppage-user' => '{{ns:project}}:Utilizatori',
 'grouppage-autoconfirmed' => '{{ns:project}}:Utilizator autoconfirmați',
 'grouppage-bot' => '{{ns:project}}:Boți',
 'grouppage-sysop' => '{{ns:project}}:Administratori',
 'grouppage-bureaucrat' => '{{ns:project}}:Birocrați',
-'grouppage-suppress' => '{{ns:project}}:Oversight',
+'grouppage-suppress' => '{{ns:project}}:Supervizori',
 
 # Rights
 'right-read' => 'Citește pagini',
@@ -1836,6 +1837,7 @@ Dacă problema persistă, contactați un [[Special:ListUsers/sysop|administrator
 'backend-fail-notsame' => 'Un fișier diferit există deja pentru $1.',
 'backend-fail-invalidpath' => '$1 nu este o cale validă de stocare.',
 'backend-fail-delete' => 'Imposibil de șters fișierul $1.',
+'backend-fail-describe' => 'Imposibil de modificat metadatele pentru fișierul „$1”.',
 'backend-fail-alreadyexists' => 'Fișierul $1 există deja.',
 'backend-fail-store' => 'Imposibil de stocat fișierul $1 în $2.',
 'backend-fail-copy' => 'Imposibil de copiat fișierul $1 în $2.',
@@ -2353,19 +2355,22 @@ Modificările viitoare efectuate asupra acestei pagini dar și asupra paginii de
 
 'enotif_mailer' => 'Sistemul de notificare {{SITENAME}}',
 'enotif_reset' => 'Marchează toate paginile vizitate',
-'enotif_newpagetext' => 'Aceasta este o pagină nouă.',
 'enotif_impersonal_salutation' => 'Utilizator {{SITENAME}}',
-'changed' => 'modificată',
-'created' => 'creată',
-'enotif_subject' => 'Pagina $PAGETITLE de la {{SITENAME}} a fost $CHANGEDORCREATED de $PAGEEDITOR',
+'enotif_subject_deleted' => 'Pagina $1 de la {{SITENAME}} a fost ștearsă de către {{gender:$2|$2}}',
+'enotif_subject_created' => 'Pagina $1 de la {{SITENAME}} a fost creată de către {{gender:$2|$2}}',
+'enotif_subject_moved' => 'Pagina $1 de la {{SITENAME}} a fost redenumită de către {{gender:$2|$2}}',
+'enotif_subject_restored' => 'Pagina $1 de la {{SITENAME}} a fost restaurată de către {{gender:$2|$2}}',
+'enotif_subject_changed' => 'Pagina $1 de la {{SITENAME}} a fost modificată de către {{gender:$2|$2}}',
+'enotif_body_intro_deleted' => 'Pagina $1 de la {{SITENAME}} a fost ștearsă la $PAGEEDITDATE de către {{gender:$2|$2}}; vedeți $3 pentru versiunea actuală.',
+'enotif_body_intro_created' => 'Pagina $1 de la {{SITENAME}} a fost creată la $PAGEEDITDATE de către {{gender:$2|$2}}; vedeți $3 pentru versiunea actuală.',
+'enotif_body_intro_moved' => 'Pagina $1 de la {{SITENAME}} a fost redenumită la $PAGEEDITDATE de către {{gender:$2|$2}}; vedeți $3 pentru versiunea actuală.',
+'enotif_body_intro_restored' => 'Pagina $1 de la {{SITENAME}} a fost restaurată la $PAGEEDITDATE de către {{gender:$2|$2}}; vedeți $3 pentru versiunea actuală.',
+'enotif_body_intro_changed' => 'Pagina $1 de la {{SITENAME}} a fost modificată la $PAGEEDITDATE de către {{gender:$2|$2}}; vedeți $3 pentru versiunea actuală.',
 'enotif_lastvisited' => 'Vedeți $1 pentru toate modificările de la ultima dvs. vizită.',
 'enotif_lastdiff' => 'Apasă $1 pentru a vedea această schimbare.',
 'enotif_anon_editor' => 'utilizator anonim $1',
 'enotif_body' => 'Domnule/Doamnă $WATCHINGUSERNAME,
-
-Pagina $PAGETITLE de la {{SITENAME}} a fost $CHANGEDORCREATED în data de $PAGEEDITDATE de către $PAGEEDITOR. Vedeți la $PAGETITLE_URL versiunea curentă.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Descrierea lăsată de utilizator: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2373,8 +2378,7 @@ Puteți contacta utilizatorul:
 e-mail: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Nu veți mai primi notificări în cazul unor viitoare modificări până când nu veți vizitați pagina. 
-Puteți de asemenea reseta notificările pentru toate pagini pe care le urmăriți.
+Nu veți mai primi notificări în cazul unor viitoare modificări până când nu veți vizitați pagina. Puteți de asemenea reseta notificările pentru toate pagini pe care le urmăriți.
 
              Al dumneavoastră amic, sistemul de notificare de la {{SITENAME}}
 
@@ -3155,6 +3159,8 @@ Permite adăugarea unui motiv în descrierea modificărilor',
 'markedaspatrollederror' => 'Nu se poate marca ca verificat',
 'markedaspatrollederrortext' => 'Trebuie să specificați o versiune care să fie marcată ca verificată.',
 'markedaspatrollederror-noautopatrol' => 'Nu puteți marca propriile modificări ca verificate.',
+'markedaspatrollednotify' => 'Această modificare la $1 a fost marcată ca patrulată.',
+'markedaspatrollederrornotify' => 'Marcarea ca patrulată a eșuat.',
 
 # Patrol log
 'patrol-log-page' => 'Jurnal verificări',
@@ -3219,6 +3225,7 @@ Executându-l, sistemul dvs. poate fi compromis.",
 'hours' => '{{PLURAL:$1|o oră|$1 ore|$1 de ore}}',
 'days' => '{{PLURAL:$1|o zi|$1 zile|$1 de zile}}',
 'ago' => '$1 în urmă',
+'just-now' => 'Chiar acum',
 
 # Bad image list
 'bad_image_list' => 'Formatul este următorul:
@@ -3772,15 +3779,15 @@ Vă rugăm să confirmați faptul că într-adevăr doriți să recreați acest
 # Watchlist editor
 'watchlistedit-numitems' => 'Lista ta de pagini urmărite conține {{PLURAL:$1|1 titlu|$1 titluri}}, excluzând paginile de discuții.',
 'watchlistedit-noitems' => 'Lista de pagini urmărite este goală.',
-'watchlistedit-normal-title' => 'Modificarea listei paginilor urmărite',
+'watchlistedit-normal-title' => 'Modificare listă pagini urmărite',
 'watchlistedit-normal-legend' => 'Ștergere titluri din lista de urmărire',
 'watchlistedit-normal-explain' => 'Lista de mai jos cuprinde paginile pe care le urmăriți.
 Pentru a elimina un titlu, bifați-l și apăsați „{{int:Watchlistedit-normal-submit}}”.
 Puteți modifica și direct [[Special:EditWatchlist/raw|lista brută]].',
 'watchlistedit-normal-submit' => 'Șterge titluri',
 'watchlistedit-normal-done' => '{{PLURAL:$1|1 titlu a fost șters|$1 titluri au fost șterse}} din lista de urmărire:',
-'watchlistedit-raw-title' => 'Modificarea listei brute a paginilor urmărite',
-'watchlistedit-raw-legend' => 'Modifică lista brută de pagini urmărite',
+'watchlistedit-raw-title' => 'Modificarea listă brută de pagini urmărite',
+'watchlistedit-raw-legend' => 'Modificare listă brută de pagini urmărite',
 'watchlistedit-raw-explain' => 'Lista de mai jos cuprinde paginile pe care le urmăriți. O puteți modifica adăugînd sau ștergînd titluri (cîte un titlu pe rînd).
 După ce terminați apăsați „{{int:Watchlistedit-raw-submit}}”.
 Puteți folosi în schimb [[Special:EditWatchlist|editorul standard]].',
@@ -3962,9 +3969,9 @@ Imaginile sunt afișate la rezoluția lor maximă, în timp ce alte tipuri de fi
 'logentry-move-move_redir-noredirect' => '$1 a redenumit pagina $3 în $4 înlocuind redirecționarea și fără a lăsa o redirecționare în loc',
 'logentry-patrol-patrol' => '$1 a marcat versiunea $4 a paginii $3 ca patrulată',
 'logentry-patrol-patrol-auto' => '$1 a marcat automat versiunea $4 a paginii $3 ca patrulată',
-'logentry-newusers-newusers' => '$1 a creat un cont de utilizator',
-'logentry-newusers-create' => '$1 a creat un cont de utilizator',
-'logentry-newusers-create2' => '$1 a creat un cont de utilizator $3',
+'logentry-newusers-newusers' => 'Contul de utilizator $1 a fost creat',
+'logentry-newusers-create' => 'Contul de utilizator $1 a fost creat',
+'logentry-newusers-create2' => 'Contul de utilizator $3 a fost creat de către $1',
 'logentry-newusers-autocreate' => 'Contul $1 a fost creat în mod automat',
 'newuserlog-byemail' => 'parola trimisă prin e-mail',
 
@@ -4041,5 +4048,5 @@ Imaginile sunt afișate la rezoluția lor maximă, în timp ce alte tipuri de fi
 'duration-millennia' => '$1 {{PLURAL:$1|mileniu|milenii|de milenii}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'discuție',
+'svg-long-error' => 'Fișier SVG invalid: $1',
 );
index c0628ab..b3fa376 100644 (file)
@@ -447,9 +447,6 @@ L\'amministratore ca l\'ha bloccate dèje sta spiegazione: "$3".',
 
 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.",
-'welcomecreation' => "== Bovegne, $1! ==
-'U cunde tue ha state ccrejete.
-No te sce scurdanne de cangià le [[Special:Preferences|{{SITENAME}} preferenze tue]].",
 'yourname' => 'Nome utende:',
 'yourpassword' => 'Passuord:',
 'yourpasswordagain' => "Scrive 'a passuord notra vote:",
@@ -2128,11 +2125,7 @@ Le cangiaminde future a sta pàgene e 'a pàgene de le 'ngazzaminde associete le
 
 'enotif_mailer' => '{{SITENAME}} Notificatore de email',
 'enotif_reset' => 'Signe tutte le pàggene cumme visitete',
-'enotif_newpagetext' => "Queste è 'na pàgena nove.",
 'enotif_impersonal_salutation' => 'Utende de {{SITENAME}}',
-'changed' => 'cangete',
-'created' => 'ccrejete',
-'enotif_subject' => '\'A pàgene de {{SITENAME}} $PAGETITLE ha state $CHANGEDORCREATED da $PAGEEDITOR',
 'enotif_lastvisited' => "Vide $1 pe tutte le cangiaminde da l'urtema visita toje.",
 'enotif_lastdiff' => 'Vide $1 pe vedè stu cangiamende.',
 'enotif_anon_editor' => 'Utende anonime $1',
index 95b5d9c..e7705ea 100644 (file)
@@ -17,6 +17,7 @@
  * @author Alexandr Efremov
  * @author Amikeco
  * @author Amire80
+ * @author Anonim.one
  * @author Askarmuk
  * @author Assele
  * @author Bouron
@@ -41,6 +42,7 @@
  * @author HalanTul
  * @author Huuchin
  * @author Illusion
+ * @author Iltever
  * @author Incnis Mrsi
  * @author Iniquity
  * @author Innv
@@ -516,11 +518,11 @@ $messages = array(
 'category-empty' => "''Эта категория в данный момент пуста.''",
 'hidden-categories' => '{{PLURAL:$1|Скрытая категория|Скрытые категории}}',
 'hidden-category-category' => 'Скрытые категории',
-'category-subcat-count' => '{{PLURAL:$2|Ð\94аннаÑ\8f ÐºÐ°Ñ\82егоÑ\80иÑ\8f Ñ\81одеÑ\80жиÑ\82 Ñ\82олÑ\8cко Ñ\81ледÑ\83Ñ\8eÑ\89Ñ\83Ñ\8e Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80иÑ\8e.|{{PLURAL:$1|Ð\9fоказана $1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80иÑ\8f\9fоказано $1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80ии|Ð\9fоказано $1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80ий}} Ð¸Ð· $2, Ð½Ð°Ñ\85одÑ\8fÑ\89иÑ\85Ñ\81Ñ\8f Ð² Ñ\8dÑ\82ой ÐºÐ°Ñ\82егоÑ\80ии.}}',
+'category-subcat-count' => '{{PLURAL:$2|ЭÑ\82а ÐºÐ°Ñ\82егоÑ\80иÑ\8f Ñ\81одеÑ\80жиÑ\82 Ñ\82олÑ\8cко Ñ\81ледÑ\83Ñ\8eÑ\89Ñ\83Ñ\8e Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80иÑ\8e.|{{PLURAL:$1|Ð\9fоказана $1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80иÑ\8f\9fоказано $1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80ии|Ð\9fоказано $1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80ий}} Ð¸Ð· $2 {{PLURAL:$2|имеÑ\8eÑ\89ейÑ\81Ñ\8f|имеÑ\8eÑ\89иÑ\85Ñ\81Ñ\8f}}.}}',
 'category-subcat-count-limited' => 'В этой категории {{PLURAL:$1|$1 подкатегория|$1 подкатегории|$1 подкатегорий}}.',
-'category-article-count' => '{{PLURAL:$2|Эта категория содержит только одну страницу.|{{PLURAL:$1|Показана $1 страница|Показано $1 страницы|Показано $1 страниц}} из $2, находящихся в этой категории.}}',
+'category-article-count' => '{{PLURAL:$2|Эта категория содержит только одну страницу.|{{PLURAL:$1|Показана $1 страница|Показано $1 страницы|Показано $1 страниц}} из $2 {{PLURAL:$2|имеющейся|имеющихся}}.}}',
 'category-article-count-limited' => 'В этой категории {{PLURAL:$1|$1 страница|$1 страницы|$1 страниц}}.',
-'category-file-count' => '{{PLURAL:$2|Эта категория содержит только один файл.|{{PLURAL:$1|Показан $1 файл|Показано $1 файла|Показано $1 файлов}} из $2, находящихся в этой категории.}}',
+'category-file-count' => '{{PLURAL:$2|Эта категория содержит только один файл.|В этой категории {{PLURAL:$1|показан $1 файл|показано $1 файла|показано $1 файлов}} из $2 {{PLURAL:$2|имеющейся|имеющихся}}.}}',
 'category-file-count-limited' => 'В этой категории {{PLURAL:$1|$1 файл|$1 файла|$1 файлов}}.',
 'listingcontinuesabbrev' => '(продолжение)',
 'index-category' => 'Индексируемые страницы',
@@ -532,8 +534,8 @@ $messages = array(
 'newwindow' => '(в новом окне)',
 'cancel' => 'Отменить',
 'moredotdotdot' => 'Далее…',
-'mypage' => 'Ð\9bиÑ\87наÑ\8f Ñ\81траница',
-'mytalk' => 'Обсуждения',
+'mypage' => 'Страница',
+'mytalk' => 'Обсуждение',
 'anontalk' => 'Обсуждение для этого IP-адреса',
 'navigation' => 'Навигация',
 'and' => '&#32;и',
@@ -565,6 +567,7 @@ $messages = array(
 'namespaces' => 'Пространства имён',
 'variants' => 'Варианты',
 
+'navigation-heading' => 'Навигация',
 'errorpagetitle' => 'Ошибка',
 'returnto' => 'Возврат к странице $1.',
 'tagline' => 'Материал из {{grammar:genitive|{{SITENAME}}}}',
@@ -633,7 +636,7 @@ $1',
 'aboutsite' => 'Описание {{grammar:genitive|{{SITENAME}}}}',
 'aboutpage' => 'Project:Описание',
 'copyright' => 'Содержимое доступно в соответствии с $1.',
-'copyrightpage' => '{{ns:project}}:Ð\90вÑ\82оÑ\80Ñ\81кое Ð¿Ñ\80аво',
+'copyrightpage' => '{{ns:project}}:Ð\90вÑ\82оÑ\80Ñ\81кие Ð¿Ñ\80ава',
 'currentevents' => 'Текущие события',
 'currentevents-url' => 'Project:Текущие события',
 'disclaimers' => 'Отказ от ответственности',
@@ -808,9 +811,9 @@ $2',
 
 Вы можете продолжить участие в {{grammar:genitive|{{SITENAME}}}} анонимно или <span class='plainlinks'>[$1 представиться заново]</span> под тем же или другим именем.
 Некоторые страницы могут продолжать отображаться в том виде, как будто вы всё ещё представлены системе. Для борьбы с этим явлением обновите кэш браузера.",
-'welcomecreation' => '== Добро пожаловать, $1! ==
-Ваша учётная запись создана.
-Не забудьте провести [[Special:Preferences|персональную настройку]] сайта.',
+'welcomeuser' => 'Добро пожаловать, $1!',
+'welcomecreation-msg' => 'Ваша учётная запись создана.
+Не забудьте провести [[Special:Preferences|персональную настройку]] сайта {{SITENAME}}.',
 'yourname' => 'Имя учётной записи:',
 'yourpassword' => 'Пароль:',
 'yourpasswordagain' => 'Повторный набор пароля:',
@@ -992,9 +995,9 @@ $2
 'nowiki_sample' => 'Вставьте сюда текст, который не нужно форматировать',
 'nowiki_tip' => 'Игнорировать вики-форматирование',
 'image_tip' => 'Встроенный файл',
-'media_tip' => 'Ссылка на медиа-файл',
+'media_tip' => 'Ссылка на файл',
 'sig_tip' => 'Ваша подпись и момент времени',
-'hr_tip' => 'Горизонтальная линия (не используйте часто)',
+'hr_tip' => 'Ð\93оÑ\80изонÑ\82алÑ\8cнаÑ\8f Ð»Ð¸Ð½Ð¸Ñ\8f (не Ð¸Ñ\81полÑ\8cзÑ\83йÑ\82е Ñ\81лиÑ\88ком Ñ\87аÑ\81Ñ\82о)',
 
 # Edit pages
 'summary' => 'Описание изменений:',
@@ -1061,7 +1064,7 @@ $2
 'newarticle' => '(Новая)',
 'newarticletext' => "Вы перешли по ссылке на страницу, которой пока не существует.
 Чтобы её создать, наберите текст в окне, расположенном ниже (подробнее см. [[{{MediaWiki:Helppage}}|справочную страницу]]).
-Если вы оказались здесь по ошибке, просто нажмите кнопку '''назад''' вашего браузера.",
+Если вы оказались здесь по ошибке, просто нажмите кнопку '''назад''' своего браузера.",
 'anontalkpagetext' => "----''Эта страница обсуждения принадлежит анонимному участнику, который ещё не создал учётной записи, или не использует её.
 Поэтому для идентификации используется цифровой IP-адрес.
 Этот же адрес может соответствовать нескольким другим участникам.
@@ -1713,7 +1716,7 @@ $1",
 'rightslogentry-autopromote' => 'был автоматически переведён из $2 в $3',
 'logentry-rights-rights' => '$1 {{GENDER:$1|изменил|изменила}} членство в группах для $3 с $4 на $5',
 'logentry-rights-rights-legacy' => '$1 {{GENDER:$1|изменил|изменила}} членство в группах для $3',
-'logentry-rights-autopromote' => '$1 {{GENDER:$1|был автоматически переведён|была автоматически переведена}} из $4 в $5',
+'logentry-rights-autopromote' => '$1 {{GENDER:$2|был автоматически переведён|была автоматически переведена}} из $4 в $5',
 'rightsnone' => '(нет)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1954,6 +1957,7 @@ $1',
 'backend-fail-notsame' => 'Уже есть неидентичный файл $1.',
 'backend-fail-invalidpath' => '$1 не является допустимым путём хранения.',
 'backend-fail-delete' => 'Не удалось удалить файл  $1.',
+'backend-fail-describe' => 'Не удалось изменить метаданные файла «$1».',
 'backend-fail-alreadyexists' => 'Файл $1 уже существует.',
 'backend-fail-store' => 'Не удалось сохранить файл $1 на $2 .',
 'backend-fail-copy' => 'Не удалось скопировать файл $1 в $2 .',
@@ -2341,7 +2345,7 @@ $1',
 'linksearch-ok' => 'Найти',
 'linksearch-text' => 'Можно использовать подстановочные символы, например, <code>*.wikipedia.org</code>.
 Необходим по крайней мере домен верхнего уровня, например <code>*.org</code><br />
\9fоддеÑ\80живаемÑ\8bе Ð¿Ñ\80оÑ\82околÑ\8b: <code>$1</code> (не Ð´Ð¾Ð±Ð°Ð²Ð»Ñ\8fÑ\82Ñ\8c Ð»Ñ\8eбой Ð¸Ð· Ð½Ð¸Ñ\85 Ð² Ð²Ð°Ñ\88ем Ð¿Ð¾Ð¸Ñ\81ке)',
\9fоддеÑ\80живаемÑ\8bе Ð¿Ñ\80оÑ\82околÑ\8b: <code>$1</code> (по Ñ\83молÑ\87аниÑ\8e Ð¿Ð¾Ð´Ñ\81Ñ\82авлÑ\8fеÑ\82Ñ\81Ñ\8f http://, ÐµÑ\81ли Ð¿Ñ\80оÑ\82окол Ñ\8fвно Ð½Ðµ Ð·Ð°Ð´Ð°Ð½).',
 'linksearch-line' => 'Ссылка на $1 из $2',
 'linksearch-error' => 'Подстановочные символы могут использоваться только в начале адресов.',
 
@@ -2460,19 +2464,23 @@ $1',
 
 'enotif_mailer' => '{{SITENAME}} Служба извещений по почте',
 'enotif_reset' => 'Отметить все страницы как просмотренные',
-'enotif_newpagetext' => 'Это новая страница.',
 'enotif_impersonal_salutation' => 'Участник {{grammar:genitive|{{SITENAME}}}}',
-'changed' => 'изменена',
-'created' => 'создана',
-'enotif_subject' => 'Страница проекта «{{SITENAME}}» $PAGETITLE была $CHANGEDORCREATED участником $PAGEEDITOR',
+'enotif_subject_deleted' => 'Страница проекта «{{SITENAME}}» с именем «$1» была удалена {{gender:$2|участником|участницей}} $2',
+'enotif_subject_created' => 'Страница проекта «{{SITENAME}}» с именем «$1» была создана {{gender:$2|участником|участницей}} $2',
+'enotif_subject_moved' => 'Страница проекта «{{SITENAME}}» с именем «$1» была переименована {{gender:$2|участником|участницей}} $2',
+'enotif_subject_restored' => 'Страница проекта «{{SITENAME}}» с именем «$1» была восстановлена {{gender:$2|участником|участницей}} $2',
+'enotif_subject_changed' => 'Страница проекта «{{SITENAME}}» с именем «$1» была изменена {{gender:$2|участником|участницей}} $2',
+'enotif_body_intro_deleted' => '$PAGEEDITDATE {{gender:$2|участником|участницей}} $2 была удалена страница проекта «{{SITENAME}}» с именем «$1», см. текущую версию по ссылке: $3',
+'enotif_body_intro_created' => '$PAGEEDITDATE {{gender:$2|участником|участницей}} $2 была создана страница проекта «{{SITENAME}}» с именем «$1», см. текущую версию по ссылке: $3',
+'enotif_body_intro_moved' => '$PAGEEDITDATE {{gender:$2|участником|участницей}} $2 была переименована страница проекта «{{SITENAME}}» с именем «$1», см. текущую версию по ссылке: $3',
+'enotif_body_intro_restored' => '$PAGEEDITDATE {{gender:$2|участником|участницей}} $2 была восстановлена страница проекта «{{SITENAME}}» с именем «$1», см. текущую версию по ссылке: $3',
+'enotif_body_intro_changed' => '$PAGEEDITDATE {{gender:$2|участником|участницей}} $2 была изменена страница проекта «{{SITENAME}}» с именем «$1», см. текущую версию по ссылке: $3',
 'enotif_lastvisited' => 'См. $1 для просмотра всех изменений, произошедших с вашего последнего посещения.',
 'enotif_lastdiff' => 'См. $1 для ознакомления с изменением.',
 'enotif_anon_editor' => 'анонимный участник $1',
 'enotif_body' => 'Здравствуйте, $WATCHINGUSERNAME!
 
-$PAGEEDITDATE страница проекта «{{SITENAME}}» $PAGETITLE была $CHANGEDORCREATED участником $PAGEEDITOR, см. $PAGETITLE_URL для просмотра текущей версии.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Краткое описание изменения: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2480,8 +2488,7 @@ $NEWPAGE
 эл. почта: $PAGEEDITOR_EMAIL
 вики: $PAGEEDITOR_WIKI
 
-Если вы не посетите эту страницу, то в случае её дальнейших изменений уведомлений больше не будет.
-Вы можете также отключить опцию уведомления для всех страниц в вашем списке наблюдения.
+Если вы не посетите эту страницу, то в случае её дальнейших изменений уведомлений больше не будет. Вы можете также отключить опцию уведомления для всех страниц в вашем списке наблюдения.
 
              Система оповещения {{grammar:genitive|{{SITENAME}}}}
 
@@ -3088,7 +3095,7 @@ $1',
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Ваша страница участника',
 'tooltip-pt-anonuserpage' => 'Страница участника для моего IP',
-'tooltip-pt-mytalk' => 'Ваша страница обсуждений',
+'tooltip-pt-mytalk' => 'Ваша страница обсуждения',
 'tooltip-pt-anontalk' => 'Страница обсуждений для моего IP',
 'tooltip-pt-preferences' => 'Ваши настройки',
 'tooltip-pt-watchlist' => 'Список страниц, изменения в которых вы отслеживаете',
@@ -3108,17 +3115,17 @@ $1',
 'tooltip-ca-move' => 'Переименовать страницу',
 'tooltip-ca-watch' => 'Добавить эту страницу в ваш список наблюдения',
 'tooltip-ca-unwatch' => 'Удалить эту страницу из вашего списка наблюдения',
-'tooltip-search' => 'Искать это слово',
+'tooltip-search' => 'Искать в {{grammar:genitive|{{SITENAME}}}}',
 'tooltip-search-go' => 'Перейти к странице, имеющей в точности такое название',
 'tooltip-search-fulltext' => 'Найти страницы, содержащие указанный текст',
-'tooltip-p-logo' => 'Ð\97аглавнаÑ\8f Ñ\81Ñ\82Ñ\80аниÑ\86а',
+'tooltip-p-logo' => 'Ð\9fеÑ\80ейÑ\82и Ð½Ð° Ð·Ð°Ð³Ð»Ð°Ð²Ð½Ñ\83Ñ\8e Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83',
 'tooltip-n-mainpage' => 'Перейти на заглавную страницу',
 'tooltip-n-mainpage-description' => 'Перейти на заглавную страницу',
-'tooltip-n-portal' => 'О проекте, о том, что вы можете сделать, где что находится',
+'tooltip-n-portal' => 'О проекте, о том, чем здесь можно заниматься, а также — где что находится',
 'tooltip-n-currentevents' => 'Информация о текущих событиях',
 'tooltip-n-recentchanges' => 'Список последних изменений',
-'tooltip-n-randompage' => 'Посмотреть случайную страницу',
-'tooltip-n-help' => 'СпÑ\80авоÑ\87ник Ð¿Ð¾ Ð¿Ñ\80оекÑ\82Ñ\83 Â«{{SITENAME}}»',
+'tooltip-n-randompage' => 'Посмотреть случайно выбранную страницу',
+'tooltip-n-help' => 'Ð\9cеÑ\81Ñ\82о, Ð³Ð´Ðµ Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ð¾Ð»Ñ\83Ñ\87иÑ\82Ñ\8c Ñ\81пÑ\80авкÑ\83',
 'tooltip-t-whatlinkshere' => 'Список всех страниц, ссылающихся на данную',
 'tooltip-t-recentchangeslinked' => 'Последние изменения в страницах, на которые ссылается эта страница',
 'tooltip-feed-rss' => 'Трансляция в RSS для этой страницы',
@@ -3141,7 +3148,7 @@ $1',
 'tooltip-ca-nstab-category' => 'Страница категории',
 'tooltip-minoredit' => 'Отметить это изменение как незначительное',
 'tooltip-save' => 'Сохранить ваши изменения',
-'tooltip-preview' => 'Предварительный просмотр страницы, пожалуйста, используйте перед сохранением!',
+'tooltip-preview' => 'Предварительный просмотр страницы; пожалуйста, используйте его перед сохранением!',
 'tooltip-diff' => 'Показать изменения, сделанные по отношению к исходному тексту.',
 'tooltip-compareselectedversions' => 'Посмотреть разницу между двумя выбранными версиями этой страницы.',
 'tooltip-watch' => 'Добавить эту страницу в свой список наблюдения',
@@ -3217,7 +3224,7 @@ The wiki server can't provide data in a format your client can read.",
 
 # Info page
 'pageinfo-title' => 'Сведения по «$1»',
-'pageinfo-not-current' => 'Ð\94аннÑ\8bе Ð¿Ñ\80едоÑ\81Ñ\82авлÑ\8fÑ\8eÑ\82Ñ\81Ñ\8f Ñ\82олÑ\8cко Ð´Ð»Ñ\8f Ñ\82екÑ\83Ñ\89ей Ð¿Ñ\80авки.',
+'pageinfo-not-current' => 'Ð\9a Ñ\81ожалениÑ\8e, Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ\80едоÑ\81Ñ\82авиÑ\82Ñ\8c Ñ\8dÑ\82Ñ\83 Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8e Ð´Ð»Ñ\8f Ñ\81Ñ\82аÑ\80Ñ\8bÑ\85 Ð²ÐµÑ\80Ñ\81ий.',
 'pageinfo-header-basic' => 'Основные сведения',
 'pageinfo-header-edits' => 'История изменений',
 'pageinfo-header-restrictions' => 'Защита страницы',
@@ -3250,8 +3257,11 @@ The wiki server can't provide data in a format your client can read.",
 'pageinfo-toolboxlink' => 'Сведения о странице',
 'pageinfo-redirectsto' => 'Перенаправление',
 'pageinfo-redirectsto-info' => 'сведения',
+'pageinfo-contentpage' => 'Учитывается счётчиком как содержательная страница',
 'pageinfo-contentpage-yes' => 'Да',
+'pageinfo-protect-cascading' => 'Каскадная защита отсюда',
 'pageinfo-protect-cascading-yes' => 'Да',
+'pageinfo-protect-cascading-from' => 'Каскадная защита от',
 
 # Skin names
 'skinname-standard' => 'Классическое',
@@ -3273,6 +3283,8 @@ The wiki server can't provide data in a format your client can read.",
 'markedaspatrollederror' => 'Невозможно отметить как проверенную',
 'markedaspatrollederrortext' => 'Вы должны указать версию, которая будет отмечена как проверенная.',
 'markedaspatrollederror-noautopatrol' => 'Вам не разрешено отмечать собственные правки как проверенные.',
+'markedaspatrollednotify' => 'Это изменение на странице «$1» было отмечено как проверенное.',
+'markedaspatrollederrornotify' => 'Отметить изменение как проверенное не удалось.',
 
 # Patrol log
 'patrol-log-page' => 'Журнал патрулирования',
@@ -3342,6 +3354,7 @@ $1',
 'hours' => '{{PLURAL:$1|$1 час|$1 часа|$1 часов}}',
 'days' => '{{PLURAL:$1|$1 день|$1 дня|$1 дней}}',
 'ago' => '$1 назад',
+'just-now' => 'только что',
 
 # Bad image list
 'bad_image_list' => 'Формат должен быть следующим:
@@ -4151,13 +4164,13 @@ MediaWiki распространяется в надежде, что она бу
 # New logging system
 'logentry-delete-delete' => '$1 {{GENDER:$2|удалил|удалила}} страницу $3',
 'logentry-delete-restore' => '$1 {{GENDER:$1|восстановил|восстановила}} страницу $3',
-'logentry-delete-event' => '$1 {{GENDER:$1|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей|$5 записей}} журнала на $3: $4',
-'logentry-delete-revision' => '$1 {{GENDER:$1|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий|$5 версий}} на странице $3: $4',
+'logentry-delete-event' => '$1 {{GENDER:$1|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей}} журнала на $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$1|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий}} на странице $3: $4',
 'logentry-delete-event-legacy' => '$1 {{GENDER:$1|изменил|изменила}} видимость записей журнала $3',
 'logentry-delete-revision-legacy' => '$1 {{GENDER:$1|изменил|изменила}} видимость версий на странице $3',
 'logentry-suppress-delete' => '$1 {{GENDER:$1|подавил|подавила}} страницу $3',
-'logentry-suppress-event' => '$1 скрытно {{GENDER:$1|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей|$5 записей}} журнала на $3: $4',
-'logentry-suppress-revision' => '$1 скрытно {{GENDER:$1|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий|$5 версий}} на странице $3: $4',
+'logentry-suppress-event' => '$1 скрытно {{GENDER:$1|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей}} журнала на $3: $4',
+'logentry-suppress-revision' => '$1 скрытно {{GENDER:$1|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий}} на странице $3: $4',
 'logentry-suppress-event-legacy' => '$1 скрытно {{GENDER:$1|изменил|изменила}} видимость записей журнала $3',
 'logentry-suppress-revision-legacy' => '$1 скрытно {{GENDER:$1|изменил|изменила}} видимость версий на странице $3',
 'revdelete-content-hid' => 'содержание скрыто',
@@ -4174,9 +4187,9 @@ MediaWiki распространяется в надежде, что она бу
 'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$1|переименовал|переименовала}} страницу $3 в $4 поверх перенаправления и без оставления перенаправления',
 'logentry-patrol-patrol' => '$1 {{GENDER:$1|отпатрулировал|отпатрулировала}} версию $4 страницы $3',
 'logentry-patrol-patrol-auto' => '$1 автоматически {{GENDER:$1|отпатрулировал|отпатрулировала}} версию $4 страницы $3',
-'logentry-newusers-newusers' => '$1 {{GENDER:$1|создал|создала}} учётную запись участника',
-'logentry-newusers-create' => '$1 {{GENDER:$1|создал|создала}} учётную запись',
-'logentry-newusers-create2' => '$1 {{GENDER:$1|создал|создала}} учётную запись участника $3',
+'logentry-newusers-newusers' => 'Создана учётная запись $1',
+'logentry-newusers-create' => 'Создана учётная запись $1',
+'logentry-newusers-create2' => '$1 {{GENDER:$2|создал|создала}} учётную запись для $3',
 'logentry-newusers-autocreate' => 'Автоматически создана учётная запись $1',
 'newuserlog-byemail' => 'пароль отправлен по эл. почте',
 
@@ -4252,4 +4265,6 @@ MediaWiki распространяется в надежде, что она бу
 'duration-centuries' => '$1 {{PLURAL:$1|век|века|веков}}',
 'duration-millennia' => '$1 {{PLURAL:$1|тысячелетие|тысячелетия|тысячелетий}}',
 
+# Unknown messages
+'svg-long-error' => 'неправильный SVG-файл: $1',
 );
index 0865153..e2dde4c 100644 (file)
@@ -522,9 +522,6 @@ $2',
 'logouttext' => "'''Нынї сьте одголошеный(а).'''
 
 Можете продовжовати в анонімнім перезераню і едітації {{grammar:2sg|{{SITENAME}}}}, або ся можете <span class='plainlinks'>[$1 зясь приголосити]</span> як тот самый або як іншый хоснователь. Даякы сторінкы ся можуть зображовати як кібы сьте были дотеперь приголошены, покы не змажете кеш переглядача.",
-'welcomecreation' => '== Вітаєме вас, $1! ==
-Ваше конто было вытворене.
-Не забудьте змінити свої [[Special:Preferences|наставлїня сайту]].',
 'yourname' => 'Імя хоснователя:',
 'yourpassword' => 'Гесло:',
 'yourpasswordagain' => 'Повторяйте гесло:',
@@ -2110,11 +2107,7 @@ $1',
 
 'enotif_mailer' => 'Засылач нотіфікацій {{grammar:2sg|{{SITENAME}}}}',
 'enotif_reset' => 'Означіти вшытко як навщівене',
-'enotif_newpagetext' => 'Тото є нова сторінка.',
 'enotif_impersonal_salutation' => 'Хоснователь {{grammar:genitive|{{SITENAME}}}}',
-'changed' => 'змінена',
-'created' => 'створена',
-'enotif_subject' => '$PAGEEDITOR змінив сторінку $PAGETITLE на {{grammar:6sg|{{SITENAME}}}}.',
 'enotif_lastvisited' => 'Видьте $1 про список вшыткых змін од минулой навщівы.',
 'enotif_lastdiff' => 'Тоту зміну видьте на $1',
 'enotif_anon_editor' => 'анонімный хоснователь $1',
index 8348886..1939488 100644 (file)
@@ -679,9 +679,6 @@ $2',
 
 भवान् {{SITENAME}} इत्येतत् अनामतया प्रयोक्तुं शक्नोति, अथवा भवान् तेनैव प्रयोक्तृनाम्ना, भिन्नप्रयोक्तृनाम्ना वा  <span class='plainlinks'>[$1 पुनः प्रवेष्टुं शक्नोति]</span>।
 इदानीमपि कानिचन पृष्ठानि पूर्ववदेव दृश्येरन् । अस्य वारणाय विचरकस्य स्मृतिसञ्चयः रिक्तीक्रियताम् ।",
-'welcomecreation' => '==स्वागतम्‌, $1!==
-भवता सदस्यता प्राप्ता अस्ति।
-भवतः [[Special:Preferences|{{SITENAME}} इष्टतमानि]]  इत्यस्य परिवर्तनं न विस्मर्यताम्।',
 'yourname' => 'योजकनामन्:',
 'yourpassword' => 'कूटशब्दः',
 'yourpasswordagain' => 'कूटशब्दः पुनः लिख्यताम् ।',
@@ -2272,11 +2269,7 @@ See https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 
 'enotif_mailer' => '{{SITENAME}} सूचितः विद्युन्मानपत्रप्रेषकः ।',
 'enotif_reset' => 'सन्दर्शितानि इति सर्वपुटानि अङ्कयतु ।',
-'enotif_newpagetext' => 'इदम् एकं नवीनपृष्ठम्',
 'enotif_impersonal_salutation' => '{{SITENAME}} योजक',
-'changed' => 'परिवर्तितम् ।',
-'created' => 'सृष्टम् ।',
-'enotif_subject' => '{{SITENAME}}  $ पुटशीर्षकं $ परिवर्तितम्$ इत्यनेन ।',
 'enotif_lastvisited' => 'भवतः पूवसन्दर्शनस्य पश्चात् सवृत्तपरिवर्तनार्थं $1 पश्यतु ।',
 'enotif_lastdiff' => 'एतत्परिवर्तनं दृष्टुं $1 पश्यतु ।',
 'enotif_anon_editor' => 'अनामकः योजकः $1',
index 4c07e55..ce0eeef 100644 (file)
@@ -449,9 +449,6 @@ $2',
 {{SITENAME}} ситим-сиргэ билигин урукку ааккынан буолбакка IP-аадырыһынан эрэ көстөҕүн.
 Салгыы ааккын ааттаабакка үлэлиэххин сөп, эбэтэр саҥаттан урукку ааккынан дуу, атын аатынан дуу <span class='plainlinks'>[$1 киириэххин]</span> сөп.
 Сорох сирэйдэр өссө даҕаны эйигин урукку ааккынан көрдөрүөхтэрин сөп, ону суох гыныаххын баҕардаххына интэриниэт көрдөрөөччүҥ кээһин ыраастаа.",
-'welcomecreation' => '== Нөрүөн нөргүй, $1! ==
-Эн манна бэлиэтэнниҥ.
-[[Special:Preferences|{{SITENAME}} туруорууларын]] бэйэҕэр сөп түбэһэр гына уларытаргын умнума.',
 'yourname' => 'Кыттааччы аатыҥ:',
 'yourpassword' => 'Киирии тыла:',
 'yourpasswordagain' => 'Киирии тылгын хатылаа:',
@@ -2057,11 +2054,7 @@ $1',
 
 'enotif_mailer' => '{{SITENAME}} Биллэрэр Сулууспата',
 'enotif_reset' => 'Бары сирэйдэри көрбүтүм курдук бэлиэтээ',
-'enotif_newpagetext' => 'Бу саҥа сирэй.',
 'enotif_impersonal_salutation' => '{{SITENAME}} кыттааччыта',
-'changed' => 'уларыппыт (уларытыллыбыт)',
-'created' => 'айыллыбыт',
-'enotif_subject' => '«{{SITENAME}}» $PAGETITLE кыттааччыга сыһыаннаах сирэйи $PAGEEDITOR кыттааччы $CHANGEDORCREATED',
 'enotif_lastvisited' => 'Бутэһик киирииҥ кэнниттэн оҥоһуллубут уларыйыылары барытын көрөргө манна киир: $1.',
 'enotif_lastdiff' => 'Уларытыыны манна көрүҥ: $1.',
 'enotif_anon_editor' => 'ааттамматах кыттааччы $1',
index ee0e3f7..6d5e693 100644 (file)
@@ -10,6 +10,7 @@
  * @author Aushulz
  * @author Gmelfi
  * @author Kaganer
+ * @author Markos90
  * @author Melos
  * @author Omnipaedista
  * @author Santu
@@ -306,7 +307,7 @@ $messages = array(
 'returnto' => 'Ritorna a $1.',
 'tagline' => 'Di {{SITENAME}}',
 'help' => 'Aiutu',
-'search' => 'Trova',
+'search' => 'Arriscedi',
 'searchbutton' => "Va' cerca",
 'go' => 'Trova',
 'searcharticle' => 'Vai',
@@ -521,9 +522,6 @@ La mutivazzioni è chista: ''$2''.",
 
 Poi cuntinuari a usari {{SITENAME}} di manera anònima, o poi <span class='plainlinks'>[$1 tràsiri n'àutra vota]</span> cu lu stissu o cu n'àutru nomu d'utenti.
 Accura chi quarchi pàggina pò cuntinuari a èssiri ammustrata comu si nun avissi nisciutu nzinu a quannu tu nun scancelli tutta la mimoria dû tò browser.",
-'welcomecreation' => "== Bonvinutu, $1! ==
-
-L'account hà statu criatu currettamenti. Nun ti scurdari di pirsunalizzari li [[Special:Preferences|prifirenzi di {{SITENAME}}]].",
 'yourname' => "Lu tò nomu d'utenti (''user name'')",
 'yourpassword' => "La tò ''password''",
 'yourpasswordagain' => "Scrivi la password n'àutra vota",
@@ -1796,11 +1794,7 @@ Protucolli suppurtati: <code>$1</code>',
 
 'enotif_mailer' => 'Sistema di nutìfica via e-mail di {{SITENAME}}',
 'enotif_reset' => 'Segna tutti li pàggini comu già visitati',
-'enotif_newpagetext' => 'Chista è na pàggina nova.',
 'enotif_impersonal_salutation' => 'Utenti di {{SITENAME}}',
-'changed' => 'canciatu',
-'created' => 'criatu',
-'enotif_subject' => 'La pàggina $PAGETITLE di {{SITENAME}} hà stata $CHANGEDORCREATED di $PAGEEDITOR',
 'enotif_lastvisited' => 'Cunzurta $1 pi vìdiri tutti li canciamenti dâ tò ùrtima vìsita.',
 'enotif_lastdiff' => 'Vìdiri $1 pi visualizzari lu canciamentu.',
 'enotif_anon_editor' => 'utenti anonimu $1',
@@ -2322,8 +2316,8 @@ Visita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//trans
 'tooltip-ca-watch' => 'Agghiunci sta pàggina â tò lista di ossirvati spiciali',
 'tooltip-ca-unwatch' => 'Elìmina sta pàggina dâ tò lista di ossirvati spiciali',
 'tooltip-search' => "Cerca 'n {{SITENAME}}",
-'tooltip-search-go' => 'Vai a na pàggina cu chistu nomu esattu si asisti',
-'tooltip-search-fulltext' => 'Attrova pàggini pi chistu testu',
+'tooltip-search-go' => 'Vai a na pàggina cu chistu nomu esattu siddu asisti',
+'tooltip-search-fulltext' => 'Arriscedi pàggini pi chistu testu',
 'tooltip-p-logo' => 'Pàggina principali',
 'tooltip-n-mainpage' => 'Vìsita la pàggina principali',
 'tooltip-n-mainpage-description' => 'Talìa la pàggina principali',
index 2037c5e..b63dd6b 100644 (file)
@@ -436,9 +436,6 @@ La rasgioni frunidda è ''$2''.",
 
 Si pò sighì a usà {{SITENAME}} cumenti utenti anònimu oppuru eseguì una noba intradda, cu' lu matessi innòmu utenti o un'innòmu dibessu.
 Zerthuni pàgini pudìani continuà a apparì cumenti si la iscidda nò fùssia avvinudda finaghì nò vèni puridda la mimória cache di lu propriu nabiggadori.",
-'welcomecreation' => '== Binvinuddu, $1! ==
-
-La registhrazioni è isthadda criadda currettamenti. No dimintiggà di passunarizzà li prifirenzi di {{SITENAME}}.',
 'yourname' => 'Innòmu utenti',
 'yourpassword' => "Paràura d'órdhini",
 'yourpasswordagain' => "Ripeti la paràura d'órdhini",
@@ -1307,11 +1304,7 @@ Si daboi s'à gana d'eliminà la pàgina da la listha di l'abbaidaddi ippiziarii
 
 'enotif_mailer' => 'Sisthema di nutìfica via postha erettrònica di {{SITENAME}}',
 'enotif_reset' => 'Signa tutti li pàgini cumenti già visitaddi',
-'enotif_newpagetext' => 'Chistha è una pàgina nóba.',
 'enotif_impersonal_salutation' => 'Utenti di {{SITENAME}}',
-'changed' => 'ciambadda',
-'created' => 'criadda',
-'enotif_subject' => 'La pàgina $PAGETITLE di {{SITENAME}} è isthadda $CHANGEDORCREATED da $PAGEEDITOR',
 'enotif_lastvisited' => "Cunsultha $1 pa vidé tutti li mudìfigghi da l'ulthima visita tóia.",
 'enotif_lastdiff' => 'Vidé $1 pa visuarizzà la mudìfigga.',
 'enotif_anon_editor' => 'utenti anònimu $1',
index 45e4e9b..6f8b233 100644 (file)
@@ -385,9 +385,6 @@ $messages = array(
 'logouttext' => "'''Don leat dál loggen olggos {{GRAMMAR:elative|{{SITENAME}}}}s.'''
 
 Sáhtát joatkit {{GRAMMAR:genitive|{{SITENAME}}}} geavaheami anonyman dahje logget ođđasit sisa",
-'welcomecreation' => '== Bures boahtin, $1! ==
-Du geavaheaddjidovddaldat lea dál anus.
-Ále vajáldahte rievdadit {{GRAMMAR:genitive|{{SITENAME}}}} iežat ásahusaid.',
 'yourname' => 'Geavaheaddjidovddaldat',
 'yourpassword' => 'Suollemassátni:',
 'yourpasswordagain' => 'Čále suollemassáni ođđasit:',
@@ -1044,11 +1041,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 'enotif_mailer' => '{{GRAMMAR:genitive|{{SITENAME}}}} siidu lea rievdaduvvon -almmuhus',
 'enotif_reset' => 'Merke buot siidduid gehččojuvvon',
-'enotif_newpagetext' => 'Dát lea ođđa siidu.',
 'enotif_impersonal_salutation' => '{{SITENAME}}-geavaheaddji',
-'changed' => 'rievdadan siiddu',
-'created' => 'álggahan siiddu',
-'enotif_subject' => '$PAGEEDITOR on $CHANGEDORCREATED $PAGETITLE',
 'enotif_lastvisited' => 'Čujuhusas $1 leat buot rievdadusat du maŋimus geavahangearddi maŋŋá.',
 'enotif_lastdiff' => 'Rievdadus lea čujuhusas $1.',
 'enotif_anon_editor' => 'registereretkeahtes geavaheaddji $1',
index a91db8d..bb9a485 100644 (file)
@@ -394,9 +394,6 @@ Ožklausėms: $2',
 
 Galat ė tuoliau nauduotė {{SITENAME}} anuonimėškā aba <span class='plainlinks'>[$1 prisėjonkat]</span> ėš naujė šėtuo patiu a kėto nauduotuojė vardu.
 Pastebiejims: katruos nekatruos poslapiuos ė tuoliau gal ruodītė būktā būtomiet prisėjongės lėgė tuol, kumet ėšvalīsėt sava naršīklės dietovė (''cache'').",
-'welcomecreation' => '== Svēkė, $1! ==
-
-Tamstas paskīra bova sokorta. Neožmėrškėt pakeistė sava [[Special:Preferences|{{SITENAME}} nustatīmu]].',
 'yourname' => 'Nauduotuojė vards:',
 'yourpassword' => 'Slaptažuodis:',
 'yourpasswordagain' => 'Pakartuoket slaptažuodė:',
@@ -1290,9 +1287,6 @@ Jēgo bikumet ožsėnuorietomiet liautėis keravuotė straipsnė, spauskat \"neb
 'unwatching' => 'Šalėnama ėš keravuojamu sāraša...',
 
 'enotif_reset' => 'Pažīmietė vėsus poslapius kāp aplonkītus',
-'enotif_newpagetext' => 'Tas īr naus poslapis.',
-'changed' => 'pakeitė',
-'created' => 'sokūrė',
 'enotif_anon_editor' => 'anuonėminis nauduotuos $1',
 
 # Delete
index fe51c7c..5241347 100644 (file)
@@ -616,9 +616,6 @@ Administrator koji ju je zaključao ponudio je sledeće objašnjenje: „$3“.'
 
 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.",
-'welcomecreation' => '== Dobro došli, $1! ==
-Vaš korisnički račun je napravljen.
-Ne zaboravite izmijeniti vlastite [[Special:Preferences|{{SITENAME}} postavke]].',
 'yourname' => 'Korisničko ime:',
 'yourpassword' => 'Lozinka/zaporka:',
 'yourpasswordagain' => 'Ponovno utipkajte lozinku/zaporku:',
@@ -2260,11 +2257,7 @@ Buduće promjene ove stranice i njoj pridružene stranice za razgovor će biti n
 
 'enotif_mailer' => '{{SITENAME}} obavještenje o pošti',
 'enotif_reset' => 'Označi sve strane kao posjećene',
-'enotif_newpagetext' => 'Ovo je nova stranica.',
 'enotif_impersonal_salutation' => '{{SITENAME}} korisnik',
-'changed' => 'promijenjena',
-'created' => 'napravljena',
-'enotif_subject' => '{{SITENAME}} strana $PAGETITLE je bila $CHANGEDORCREATED od strane $PAGEEDITOR',
 'enotif_lastvisited' => 'Pogledajte $1 za sve izmjene od vaše posljednje posjete.',
 'enotif_lastdiff' => 'Vidi $1 da pregledate ovu promjenu.',
 'enotif_anon_editor' => 'anonimni korisnik $1',
index 7b5ebc4..f03ef6e 100644 (file)
@@ -603,10 +603,6 @@ $2',
 
 ඔබට නිර්නාමිකව {{SITENAME}} කටයුතු කරගෙන යාහැක, නැතහොත් පෙර පරිශීලක ලෙස හෝ වෙනත් පරිශීලකයෙකු ලෙස <span class='plainlinks'>[$1 නැවත ගිණුමක‍ට පිවිසිය හැක]</span>.
 ඔබගේ බ්‍රවුසරයෙහි පූර්වාපේක්‍ෂී සංචිතය (කෑෂය) පිරිසිදුකරන තෙක්, සමහරක් පිටු විසින් ඔබ තවදුරටත් පිවිසී ඇති බවක් දිගටම පෙන්නුම් කිරීමට ඉඩ ඇත.",
-'welcomecreation' => '== ආයුබෝවන්, $1! ==
-
-ඔබ‍ගේ ගිණුම තනන ලදී.
-ඔබ‍ගේ [[Special:Preferences|{{SITENAME}} අභිරුචි ]] වෙනස් කිරීම අමතක නොකරන්න.',
 'yourname' => 'පරිශීලක නාමය:',
 'yourpassword' => 'මුරපදය:',
 'yourpasswordagain' => 'මුරපදය යළි ඇතුළු කරන්න:',
@@ -1242,7 +1238,7 @@ $1",
 
 # Preferences page
 'preferences' => 'අභිරුචි',
-'mypreferences' => 'à¶\85භà·\92රà·\94චà·\92',
+'mypreferences' => 'à¶\85භà·\92රà·\94චà·\93නà·\8a',
 'prefs-edits' => 'සංස්කරණයන් සංඛ්‍යාව:',
 'prefsnologin' => 'පිවිසී නැත (Not logged in)',
 'prefsnologintext' => 'පරිශීලක අභිරුචි සැකසීමට නම්, ඔබ  <span class="plainlinks">[{{fullurl:Special:Userlogin|returnto=$1}} ප්‍රවිෂ්ටවී]</span> සිටිය යුතුය.',
@@ -2202,11 +2198,7 @@ When filtered by user, only files where that user uploaded the most recent versi
 
 'enotif_mailer' => '{{SITENAME}}හි නිවේදන යවන්නා',
 'enotif_reset' => 'පිවිසුනු සියළු පිටු සලකුණු කරන්න',
-'enotif_newpagetext' => 'මෙය නව පිටුවකි.',
 'enotif_impersonal_salutation' => '{{SITENAME}} පරිශීලක',
-'changed' => 'වෙනස්කරන ලදි',
-'created' => 'තනන ලදි',
-'enotif_subject' => '{{SITENAME}}හි  $PAGETITLE යන පිටුව  $PAGEEDITOR විසින්  $CHANGEDORCREATED කෙරිණි',
 'enotif_lastvisited' => 'ඔබගේ අවසාන පිවිසුමට පසු සිදුවූ සියළු වෙනස්වීම් නැරඹුමට $1 බලන්න.',
 'enotif_lastdiff' => 'මෙම වෙනස නැරඹීම සඳහා $1 බලන්න.',
 'enotif_anon_editor' => 'නිර්නාමික පරිශීලක $1',
@@ -2429,7 +2421,7 @@ $1',
 # Contributions
 'contributions' => 'මෙම පරිශීලකගේ දායකත්වයන්',
 'contributions-title' => ' $1 සඳහා පරිශීලක දායකත්වයන්',
-'mycontris' => 'දායකත්වයන්',
+'mycontris' => 'දායකත්ව',
 'contribsub2' => '$1 සඳහා ($2)',
 'nocontribs' => 'මෙම උපමානයන් හා ගැලපෙන වෙනස්වීම් හමුනොවිණි.',
 'uctop' => '(ඉහලම)',
@@ -2972,7 +2964,7 @@ $1 ගේ වාරණයට හේතුව මෙය වේ: "$2"',
 'pageinfo-lastuser' => 'අවසන් සංස්කාරක',
 'pageinfo-lasttime' => 'අවසන් සංස්කරණය වූ දිනය',
 'pageinfo-edits' => 'මුළු සංස්කරණ සංඛ්‍යාව',
-'pageinfo-authors' => 'ප්‍රභින්න කර්තෘවරුන් මුළු  සංඛ්‍යාව',
+'pageinfo-authors' => 'ප්‍රභින්න කර්තෘවරුන් මුළු සංඛ්‍යාව',
 'pageinfo-recent-edits' => 'මෑත සංස්කරණ සංඛ්‍යාව (අවසන් $1 තුලදී)',
 'pageinfo-recent-authors' => 'මෑත ප්‍රභින්න කර්තෘවරුන් සංඛ්‍යාව',
 'pageinfo-magic-words' => 'මැජික් {{PLURAL:$1|වචනය|වචන}} ($1)',
index c7d4211..f89fbde 100644 (file)
@@ -325,12 +325,12 @@ $messages = array(
 'tog-ccmeonemails' => 'Posielať mi kópie mojich emailov, ktoré pošlem ostatným používateľom',
 'tog-diffonly' => 'Nezobrazovať obsah stránky pod rozdielmi',
 'tog-showhiddencats' => 'Zobraziť skryté kategórie',
-'tog-noconvertlink' => 'Vypnúť konverziu názvov',
+'tog-noconvertlink' => 'Vypnúť konverziu názvov odkazov',
 'tog-norollbackdiff' => 'Vynechať rozdiel po vykonaní rollbacku',
 
 'underline-always' => 'Vždy',
 'underline-never' => 'Nikdy',
-'underline-default' => 'Štandardné nastavenie prehliadača',
+'underline-default' => 'Podľa nastavení prehliadača alebo témy vzhľadu',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Štýl písma oblasti na úpravy:',
@@ -415,8 +415,8 @@ $messages = array(
 'newwindow' => '(otvorí v novom okne)',
 'cancel' => 'Zrušiť',
 'moredotdotdot' => 'Viac...',
-'mypage' => 'Moja stránka',
-'mytalk' => 'Moja diskusia',
+'mypage' => 'Stránka',
+'mytalk' => 'Diskusia',
 'anontalk' => 'Diskusia k tejto IP adrese',
 'navigation' => 'Navigácia',
 'and' => '&#32;a',
@@ -532,7 +532,7 @@ $1',
 'privacy' => 'Ochrana osobných údajov',
 'privacypage' => 'Project:Ochrana osobných údajov',
 
-'badaccess' => 'Chyba povolenia',
+'badaccess' => 'Chyba oprávnenia',
 'badaccess-group0' => 'Nemáte povolenie na vykonanie požadovanej operácie.',
 'badaccess-groups' => 'Činnosť, ktorú požadujete, môže vykonať iba člen {{PLURAL:$2|skupiny|jednej zo skupín}}: $1.',
 
@@ -546,7 +546,7 @@ $1',
 'newmessagesdifflink' => 'posledná zmena',
 'youhavenewmessagesfromusers' => 'Máte $1 od {{PLURAL:$3|iného používateľa|$3 iných používateľov}} ($2).',
 'youhavenewmessagesmanyusers' => 'Máte $1 od viacerých ďalších používateľov ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|novú správu|nové správy|nových správ}}',
+'newmessageslinkplural' => '{{PLURAL:$1|novú správu|nové správy}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|posledná zmena|posledné zmeny}}',
 'youhavenewmessagesmulti' => 'Máte nové správy na $1',
 'editsection' => 'upraviť',
@@ -640,7 +640,7 @@ Oznámte to prosím [[Special:ListUsers/sysop|správcovi]] a uveďte URL.',
 'badarticleerror' => 'Na tejto stránke túto činnosť nemožno vykonať.',
 'cannotdelete' => 'Nebolo možné zmazať stránku alebo súbor „$1“.
 Možno ju už zmazal nieto iný.',
-'cannotdelete-title' => 'Nemôžete zmazať stránku "$1"',
+'cannotdelete-title' => 'Nemôžete zmazať stránku „$1“',
 'delete-hook-aborted' => 'Zmazanie zrušila prídavná funkcia (prípojný bod syntaktického analyzátora).
 Neudala vysvetlenie.',
 'badtitle' => 'Neplatný nadpis',
@@ -669,7 +669,7 @@ $2',
 'namespaceprotected' => "Nemáte povolenie upravovať stránky v mennom priestore '''$1'''.",
 'customcssprotected' => 'Nemáte právo upravovať túto CSS stránku, pretože obsahuje osobné nastavenie iného používateľa.',
 'customjsprotected' => 'Nemáte právo upravovať túto JavaScript stránku, pretože obsahuje osobné nastavenie iného používateľa.',
-'ns-specialprotected' => 'Stránky v mennom pristore {{ns:special}} nie je možné upravovať.',
+'ns-specialprotected' => 'Stránky v mennom priestore {{ns:special}} nie je možné upravovať.',
 'titleprotected' => "Používateľ [[User:$1|$1]] zabránil vytváraniu stránky s týmto názvom.
 Udaný dôvod: ''$2''.",
 'filereadonlyerror' => 'Nebolo možné modifikovať súbor „$1“, pretože úložisko „$2“ je momentálne v režime len na čítanie.
@@ -690,10 +690,6 @@ Správca, ktorý ho zamkol ponúkol toto vysvetlenie: „$3“.',
 
 Odteraz môžete používať {{GRAMMAR:akuzatív|{{SITENAME}}}} ako anonymný používateľ alebo sa môžete opäť <span class='plainlinks'>[$1 prihlásiť]</span> pod rovnakým alebo odlišným používateľským menom.
 Uvedomte si, že niektoré stránky sa môžu naďalej zobrazovať ako keby ste boli prihlásený, až kým nevymažete vyrovnávaciu pamäť vášho prehliadača.",
-'welcomecreation' => '== Vitaj, $1! ==
-
-Vaše konto je vytvorené.
-Nezabudnite si nastaviť svoje [[Special:Preferences|používateľské nastavenia]].',
 'yourname' => 'Používateľské meno:',
 'yourpassword' => 'Heslo:',
 'yourpasswordagain' => 'Zopakujte heslo:',
@@ -703,9 +699,9 @@ Nezabudnite si nastaviť svoje [[Special:Preferences|používateľské nastaveni
 'password-change-forbidden' => 'Na tejto wiki si nemôžete zmeniť heslo.',
 'externaldberror' => 'Buď nastala chyba externej autentifikačnej databázy alebo vám nie je povolené aktualizovať váš externý účet.',
 'login' => 'Prihlásiť',
-'nav-login-createaccount' => 'Vytvorenie konta / prihlásenie',
+'nav-login-createaccount' => 'Prihlásenie / vytvorenie účtu',
 'loginprompt' => 'Na prihlásenie do {{GRAMMAR:genitív|{{SITENAME}}}} musíte mať zapnuté koláčiky (cookies).',
-'userlogin' => 'Vytvorenie konta / prihlásenie',
+'userlogin' => 'Prihlásenie / vytvorenie účtu',
 'userloginnocreate' => 'Prihlásiť',
 'logout' => 'Odhlásiť',
 'userlogout' => 'Odhlásiť',
@@ -720,7 +716,7 @@ Nezabudnite si nastaviť svoje [[Special:Preferences|používateľské nastaveni
 'createaccountreason' => 'Dôvod:',
 'badretype' => 'Zadané heslá nie sú rovnaké.',
 'userexists' => 'Zadané používateľské meno sa už používa.
-Zvoľte si prosím iné meno.',
+Prosím, zvoľte si iné meno.',
 'loginerror' => 'Chyba pri prihlasovaní',
 'createaccounterror' => 'Nepodarilo sa vytvoriť účet: $1',
 'nocookiesnew' => 'Používateľské konto bolo vytvorené, ale nie ste prihlásený. {{SITENAME}} používa cookies na prihlásenie. Máte cookies vypnuté. Zapnite ich a potom sa prihláste pomocou vášho nového používateľského mena a hesla.',
@@ -736,8 +732,8 @@ Skontrolujte preklepy alebo sa [[Special:UserLogin/signup|zaregistrujte ako nov
 'nosuchusershort' => 'V súčasnosti neexistuje používateľ s menom „$1“. Skontrolujte preklepy.',
 'nouserspecified' => 'Musíte uviesť meno používateľa.',
 'login-userblocked' => 'Tento používateľ je zablokovaný. Nie je mu dovolené prihlásiť sa.',
-'wrongpassword' => 'Zadané heslo je nesprávne. Skúste  znovu.',
-'wrongpasswordempty' => 'Zadané heslo bolo prázdne. Skúste prosím znova.',
+'wrongpassword' => 'Zadané heslo je nesprávne. Prosím, skúste to znova.',
+'wrongpasswordempty' => 'Zadané heslo bolo prázdne. Prosím, skúste to znova.',
 'passwordtooshort' => 'Heslo musí mať dĺžku aspoň $1 {{PLURAL:$1|znak|znaky|znakov}}.',
 'password-name-match' => 'Vaše heslo musí byť iné ako vaše používateľské meno.',
 'password-login-forbidden' => 'Použitie tohto používateľského mena a hesla bolo zakázané.',
@@ -767,9 +763,9 @@ Z tohto dôvodu nemôžu návštevníci z tejto IP adresy momentálne vytvoriť
 'emailauthenticated' => 'Vaša emailová adresa bola overená $2 $3.',
 'emailnotauthenticated' => 'Vaša e-mailová adresa ešte nebola overená. Preto nemôžete prijať emaily pre žiadnu z nasledovných funkcií.',
 'noemailprefs' => 'Tieto nástroje budú prístupné po vyplnení emailovej adresy vo vašich nastaveniach.',
-'emailconfirmlink' => 'Potvrďte vašu e-mailovú adresu',
+'emailconfirmlink' => 'Potvrďte svoju e-mailovú adresu',
 'invalidemailaddress' => 'Emailovú adresu nemožno akceptovať, pretože sa zdá, že má neplatný formát. Zadajte adresu v správnom tvare alebo nechajte príslušné políčko prázdne.',
-'cannotchangeemail' => 'Na tejto wiki nie je možné meniť e-mailové adresy používateľského konta.',
+'cannotchangeemail' => 'Na tejto wiki nie je možné meniť e-mailové adresy používateľského účtu.',
 'emaildisabled' => 'Táto lokalita nedokáže posielať emaily.',
 'accountcreated' => 'Účet vytvorený',
 'accountcreatedtext' => 'Používateľský účet $1 bol vytvorený.',
@@ -846,7 +842,7 @@ Dočasné heslo:$2',
 'passwordreset-emailerror-capture' => 'Bol vytvorený pripomienkový e-mail, ktorý je zobrazený nižšie, ale nepodarilo sa ho odoslať používateľovi: $1',
 
 # Special:ChangeEmail
-'changeemail' => 'Zmena e-mailovej adresy',
+'changeemail' => 'Zmeniť emailovú adresu',
 'changeemail-header' => 'Zmena e-mailovej adresy pre účet',
 'changeemail-text' => 'Vyplňte tento formulár na zmenu e-mailovej adresy. Zmenu budete musieť potvrdiť zadaním svojho hesla.',
 'changeemail-no-info' => 'Na prístup k tejto stránke musíte byť prihlásený.',
@@ -1585,6 +1581,9 @@ Musí obsahovať menej ako $1 {{PLURAL:$1|znak|znaky|znakov}}.',
 'rightslogtext' => 'Toto je záznam zmien práv používateľa.',
 'rightslogentry' => 'členstvo v skupine zmenené pre $1 z $2 na $3',
 'rightslogentry-autopromote' => 'bol automaticky povýšený z $2 na $3',
+'logentry-rights-rights' => '$1 {{GENDER:$2|zmenil|zmenila}} členstvo $3 v skupinách z $4 na $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|zmenil|zmenila}} členstvo $3 v skupinách',
+'logentry-rights-autopromote' => '$1 {{GENDER:$2|bol automaticky povýšený|bola automaticky povýšená}} z $4 na $5',
 'rightsnone' => '(žiadne)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1971,7 +1970,7 @@ Možno chcete upraviť popis na jeho [$2 popisnej stránke súboru] tam.',
 'uploadnewversion-linktext' => 'Nahrať novú verziu tohto súboru',
 'shared-repo-from' => 'z $1',
 'shared-repo' => 'zdieľané úložisko',
-'upload-disallowed-here' => 'Tento súbor nie je možné prepísať.',
+'upload-disallowed-here' => 'Tento súbor nemôžete prepísať.',
 
 # File reversion
 'filerevert' => 'Obnoviť $1',
@@ -2208,7 +2207,7 @@ Pozri aj [[Special:WantedCategories|žiadané kategórie]].',
 'linksearch-ok' => 'Hľadať',
 'linksearch-text' => 'Je možné používať zástupné znaky, napr. „*.wikipedia.org“.
 Povinná je minimálne doména najvyššej úrovne, napr.. „*.org“.<br />
-Podporované protokoly: <code>$1</code> (nepridávajte ich do hľadania).',
+Podporované protokoly: <code>$1</code> (ak protokol nie je uvedený, použije sa <code>http://</code>).',
 'linksearch-line' => 'Na $1 odkazuje $2',
 'linksearch-error' => 'Zástupné znaky je možné použiť iba na začiatku názvu domény.',
 
@@ -2257,9 +2256,8 @@ Môžete si prečítať [[{{MediaWiki:Listgrouprights-helppage}}|ďalšie inform
 'emailuser-title-target' => 'E-mail {{GENDER:$1|tomuto používateľovi|tejto používateľke}}',
 'emailuser-title-notarget' => 'E-mail používateľovi',
 'emailpage' => 'E-mail používateľovi',
-'emailpagetext' => 'Ak tento používateľ zadal platnú emailovú adresu vo svojich nastaveniach,
-môžete mu pomocou nasledovného formulára poslať email.
-Emailová adresa, ktorú ste zadali vo svojich [[Special:Preferences|nastaveniach]] sa zobrazí ako adresa odosielateľa emailu, aby vám mohol príjemca priamo odpovedať.',
+'emailpagetext' => 'Pomocou nasledovného formulára môžete {{GENDER:$1|tomuto používateľovi|tejto používateľke}} poslať e-mailovú správu.
+Mailová adresa, ktorú ste zadali vo svojich [[Special:Preferences|nastaveniach]] sa zobrazí ako adresa odosielateľa mailu, aby vám mohol príjemca priamo odpovedať.',
 'usermailererror' => 'Emailový program vrátil chybu:',
 'defemailsubject' => 'email {{GRAMMAR:genitív|{{SITENAME}}}} od používateľa „$1“',
 'usermaildisabled' => 'Používateľ má vypnuté používanie emailu',
@@ -2327,11 +2325,7 @@ Ak budete chcieť neskôr stránku odstrániť zo sledovaných stránok, kliknit
 
 'enotif_mailer' => 'Upozorňovač {{GRAMMAR:genitív|{{SITENAME}}}}',
 'enotif_reset' => 'Označiť všetky stránky ako „navštívené“',
-'enotif_newpagetext' => 'Toto je nová stránka.',
 'enotif_impersonal_salutation' => 'používateľ {{GRAMMAR:genitív|{{SITENAME}}}}',
-'changed' => 'zmene',
-'created' => 'vytvorení',
-'enotif_subject' => '{{SITENAME}} - stránka $PAGETITLE bola $CHANGEDORCREATED $PAGEEDITOR',
 'enotif_lastvisited' => 'Všetky zmeny od vašej poslednej návštevy uvidíte na $1.',
 'enotif_lastdiff' => 'Zmenu uvidíte v $1.',
 'enotif_anon_editor' => 'anonymný používateľ $1',
@@ -2541,7 +2535,7 @@ $1',
 # Contributions
 'contributions' => 'Príspevky používateľa',
 'contributions-title' => 'Príspevky používateľa pre $1',
-'mycontris' => 'Moje príspevky',
+'mycontris' => 'Príspevky',
 'contribsub2' => 'Príspevky $1 ($2)',
 'nocontribs' => 'Neboli nájdené úpravy, ktoré by zodpovedali týmto kritériám.',
 'uctop' => '(posledná úprava)',
@@ -2581,7 +2575,7 @@ Nižšie si môžete pozrieť najnovšiu položku záznamu blokovaní:',
 'whatlinkshere-hideredirs' => '$1 presmerovania',
 'whatlinkshere-hidetrans' => '$1 transklúzie',
 'whatlinkshere-hidelinks' => '$1 odkazy',
-'whatlinkshere-hideimages' => '$1 odkazov na obrázok',
+'whatlinkshere-hideimages' => '$1 odkazov na súbor',
 'whatlinkshere-filters' => 'Filtre',
 
 # Block/unblock
@@ -3088,6 +3082,7 @@ Pravdepodobne to spôsobil odkaz na externú internetovú lokalitu, ktorá sa na
 
 # Info page
 'pageinfo-title' => 'Informácie o „$1“',
+'pageinfo-not-current' => 'Ospravedlňujeme sa, túto informáciu nie je možné poskytnúť pre staré revízie.',
 'pageinfo-header-basic' => 'Základné údaje',
 'pageinfo-header-edits' => 'História úprav',
 'pageinfo-header-restrictions' => 'Ochrana stránky',
@@ -3096,6 +3091,7 @@ Pravdepodobne to spôsobil odkaz na externú internetovú lokalitu, ktorá sa na
 'pageinfo-default-sort' => 'Predvolený kľúč zoraďovania:',
 'pageinfo-length' => 'Dĺžka stránky (v bajtoch)',
 'pageinfo-article-id' => 'ID stránky',
+'pageinfo-language' => 'Jazyk obsahu stránok',
 'pageinfo-robot-policy' => 'Stav vyhľadávača',
 'pageinfo-robot-index' => 'Indexovať stránku',
 'pageinfo-robot-noindex' => 'Neindexovať stránku',
@@ -3116,6 +3112,13 @@ Pravdepodobne to spôsobil odkaz na externú internetovú lokalitu, ktorá sa na
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Skrytá kategória|Skryté kategórie}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Vložená šablóna|Vložené šablóny}} ($1)',
 'pageinfo-toolboxlink' => 'Informácie o stránke',
+'pageinfo-redirectsto' => 'Presmerovanie na',
+'pageinfo-redirectsto-info' => 'info',
+'pageinfo-contentpage' => 'Počíta sa ako obsah stránky',
+'pageinfo-contentpage-yes' => 'Áno',
+'pageinfo-protect-cascading' => 'Kaskádové zamknutie',
+'pageinfo-protect-cascading-yes' => 'Áno',
+'pageinfo-protect-cascading-from' => 'Zámky pochádzajú z kaskádových zamknutí',
 
 # Skin names
 'skinname-standard' => 'Klasický',
@@ -3138,6 +3141,8 @@ Pravdepodobne to spôsobil odkaz na externú internetovú lokalitu, ktorá sa na
 'markedaspatrollederror' => 'Nie je možné označiť ako strážené',
 'markedaspatrollederrortext' => 'Pre označenie ako strážený je potrebné uviesť revíziu, ktorá sa má označiť ako strážená.',
 'markedaspatrollederror-noautopatrol' => 'Nie je vám umožnené označiť vlastné zmeny za strážené.',
+'markedaspatrollednotify' => 'Táto zmena stránky $1 bola označená ako strážená.',
+'markedaspatrollederrornotify' => 'Označenie ako strážená zlyhalo.',
 
 # Patrol log
 'patrol-log-page' => 'Záznam strážení',
@@ -3201,6 +3206,7 @@ Jeho spustením môžete kompromitovať svoj systém.",
 'hours' => '{{PLURAL:$1|$1 hodina|$1 hodiny|$1 hodín}}',
 'days' => '{{PLURAL:$1|$1 deň|$1 dni|$1 dní}}',
 'ago' => 'pred: $1',
+'just-now' => 'Pred chvíľkou',
 
 # Bad image list
 'bad_image_list' => 'Formát je nasledovný:
@@ -3757,8 +3763,8 @@ Skúste obyčajný náhľad.',
 Skúste obyčajný náhľad.',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'Zmeny novšie ako $1 {{PLURAL:$1|sekunda|sekundy|sekúnd}} nemožno v tomto zozname zobraziť.',
-'lag-warn-high' => 'Z dôvodu dlhej odozvy databázového servera zmeny novšie ako $1 {{PLURAL:$1|sekunda|sekundy|sekúnd}} nemožno v tomto zozname zobraziť.',
+'lag-warn-normal' => 'Úpravy za {{PLURAL:$1|poslednú sekundu|posledné $1 sekundy|posledných $1 sekúnd}} nemusia byť v tomto zozname zobrazené.',
+'lag-warn-high' => 'Kvôli dlhšej odozve databázového servera nemusia byť úpravy za {{PLURAL:$1|poslednú sekundu|posledné $1 sekundy|posledných $1 sekúnd}} v tomto zozname zobrazené.',
 
 # Watchlist editor
 'watchlistedit-numitems' => 'Váš zoznam sledovaných stránok obsahuje {{PLURAL:$1|jednu stránku|$1 stránky|$1 stránok}} nepočítajúc diskusné stránky.',
@@ -3816,6 +3822,7 @@ Tiež môžete [[Special:EditWatchlist|použiť štandardný editor]].',
 'version-license' => 'Licencia',
 'version-poweredby-credits' => "Táto wiki beží na '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'ďalší',
+'version-credits-summary' => 'Nasledujúcim osobám by sme radi poďakovali za ich príspevky k vývoju [[Special:Version|MediaWiki]].',
 'version-license-info' => 'MediaWiki je slobodný softvér; môžete ho šíriť a / alebo modifikovať podľa podmienok GNU General Public License, ktorú vydala Free Software Foundation; a to buď verzie 2 tejto licencie alebo (podľa vášho uváženia) ktorejkoľvek neskoršej verzie. 
 
 MediaWiki je šírený v nádeji, že bude užitočný, avšak BEZ AKEJKOĽVEK ZÁRUKY; neposkytujú sa ani implicitné záruky PREDAJNOSTI alebo VHODNOSTI NA URČITÝ ÚČEL. Ďalšie informácie nájdete v GNU General Public License.
index 2a06b3b..7a2ecaf 100644 (file)
@@ -351,6 +351,7 @@ $messages = array(
 'namespaces' => 'Imenski prostori',
 'variants' => 'Različice',
 
+'navigation-heading' => 'Navigacijski meni',
 'errorpagetitle' => 'Napaka',
 'returnto' => 'Vrnite se na $1.',
 'tagline' => 'Iz {{GRAMMAR:rodilnik|{{SITENAME}}}}',
@@ -597,9 +598,7 @@ Administrator, ki ga je zaklenil, je podal naslednje pojasnilo: »$3«.',
 
 {{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.",
-'welcomecreation' => '== Dobrodošli, $1! ==
-Ustvarili ste račun.
-Ne pozabite si prilagoditi vaših [[Special:Preferences|nastavitev {{GRAMMAR:rodilnik|{{SITENAME}}}}]].',
+'welcomeuser' => '$1, dobrodošli!',
 'yourname' => 'Uporabniško ime:',
 'yourpassword' => 'Geslo:',
 'yourpasswordagain' => 'Ponovno vpišite geslo',
@@ -1757,6 +1756,7 @@ Prosimo, preverite veljavnost in dostopnost naslova URL ter poskusite ponovno.
 'backend-fail-notsame' => 'Različna datoteka že obstaja na $1.',
 'backend-fail-invalidpath' => '$1 ni veljavna skladiščna pot.',
 'backend-fail-delete' => 'Ne morem izbrisati datoteke $1.',
+'backend-fail-describe' => 'Nisem mogel spremeniti metapodatkov datoteke »$1«.',
 'backend-fail-alreadyexists' => 'Datoteka $1 že obstaja.',
 'backend-fail-store' => 'Ne morem shraniti datoteke $1 na $2.',
 'backend-fail-copy' => 'Ne morem kopirati datoteke $1 na $2.',
@@ -2265,20 +2265,23 @@ Morebitne spremembe te strani in pripadajoče pogovorne strani bodo navedene tuk
 
 'enotif_mailer' => 'Obvestilni poštar {{GRAMMAR:rodilnik|{{SITENAME}}}}',
 'enotif_reset' => 'Označi vse strani kot prebrane',
-'enotif_newpagetext' => 'To je nova stran.',
 'enotif_impersonal_salutation' => 'Uporabnik {{GRAMMAR:rodilnik|{{SITENAME}}}}',
-'changed' => 'spremenil',
-'created' => 'ustvaril',
-'enotif_subject' => 'Stran {{GRAMMAR:rodilnik|{{SITENAME}}}} $PAGETITLE je $CHANGEDORCREATED $PAGEEDITOR',
+'enotif_subject_deleted' => '{{GENDER:$2|Uporabnik|Uporabnica}} $2 je {{GENDER:$2|izbrisal|izbrisala}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}',
+'enotif_subject_created' => '{{GENDER:$2|Uporabnik|Uporabnica}} $2 je {{GENDER:$2|ustvaril|ustvarila}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}',
+'enotif_subject_moved' => '{{GENDER:$2|Uporabnik|Uporabnica}} $2 je {{GENDER:$2|prestavil|prestavila}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}',
+'enotif_subject_restored' => '{{GENDER:$2|Uporabnik|Uporabnica}} $2 je {{GENDER:$2|obnovil|obnovila}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}',
+'enotif_subject_changed' => '{{GENDER:$2|Uporabnik|Uporabnica}} $2 je {{GENDER:$2|spremenil|spremenila}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}',
+'enotif_body_intro_deleted' => '{{GENDER:$2|uporabnik|uporabnica}} $2 je dne $PAGEEDITDATE {{GENDER:$2|izbrisal|izbrisala}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}; za trenutno redakcijo glejte $3.',
+'enotif_body_intro_created' => '{{GENDER:$2|uporabnik|uporabnica}} $2 je dne $PAGEEDITDATE {{GENDER:$2|ustvaril|ustvarila}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}; za trenutno redakcijo glejte $3.',
+'enotif_body_intro_moved' => '{{GENDER:$2|uporabnik|uporabnica}} $2 je dne $PAGEEDITDATE {{GENDER:$2|spremenil|spremenila}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}; za trenutno redakcijo glejte $3.',
+'enotif_body_intro_restored' => '{{GENDER:$2|uporabnik|uporabnica}} $2 je dne $PAGEEDITDATE {{GENDER:$2|obnovil|obnovila}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}; za trenutno redakcijo glejte $3.',
+'enotif_body_intro_changed' => '{{GENDER:$2|uporabnik|uporabnica}} $2 je dne $PAGEEDITDATE {{GENDER:$2|spremenil|spremenila}} stran $1 v {{GRAMMAR:dajalnik|{{SITENAME}}}}; za trenutno redakcijo glejte $3.',
 'enotif_lastvisited' => 'Za spremembe po vašem zadnjem obisku glejte $1.',
 'enotif_lastdiff' => 'Glej $1 za to spremembo.',
 'enotif_anon_editor' => 'brezimni uporabnik $1',
 'enotif_body' => '$WATCHINGUSERNAME,
 
-stran v {{GRAMMAR:dajalnik|{{SITENAME}}}} $PAGETITLE je dne $PAGEEDITDATE $CHANGEDORCREATED uporabnik $PAGEEDITOR,
-za trenutno redakcijo glejte $PAGETITLE_URL.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Urejevalčev povzetek: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2286,8 +2289,7 @@ Navežite stik z urejevalcem:
 e-pošta: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Nadaljnjih obvestil do obiska strani ne boste prejemali.
-Na spisku nadzorov lahko tudi ponastavite zastavice obveščanj za vse spremljane strani.
+Nadaljnjih obvestil do obiska strani ne boste prejemali. Na spisku nadzorov lahko tudi ponastavite zastavice obveščanj za vse spremljane strani.
 
              Vaš opozorilni sistem {{GRAMMAR:rodilnik|{{SITENAME}}}}
 
@@ -3051,6 +3053,8 @@ Omogoča vnos pojasnila v povzetku urejanja.',
 'markedaspatrollederror' => 'Ni mogoče označiti kot pregledano',
 'markedaspatrollederrortext' => 'Določite redakcijo, ki jo želite označiti kot pregledano.',
 'markedaspatrollederror-noautopatrol' => 'Svojih urejanj vam ni dovoljeno označiti kot nadzorovanih.',
+'markedaspatrollednotify' => 'Ta sprememba $1 je bila označena kot nadzorovana.',
+'markedaspatrollederrornotify' => 'Označevanje kot nadzorovano ni uspelo.',
 
 # Patrol log
 'patrol-log-page' => 'Dnevnik patrulje',
@@ -3120,6 +3124,7 @@ Z njenim zagonom lahko ogrozite vaš sistem.",
 'hours' => '$1 {{PLURAL:$1|ura|uri|ure|ur}}',
 'days' => '$1 {{PLURAL:$1|dan|dneva|dnevi|dni}}',
 'ago' => 'pred $1',
+'just-now' => 'pravkar',
 
 # Bad image list
 'bad_image_list' => 'Oblika je naslednja:
@@ -3957,5 +3962,5 @@ V nasprotnem primeru lahko uporabite preprost obrazec spodaj. Vašo pripombo bom
 'duration-millennia' => '$1 {{PLURAL:$1|tisočletje|tisočletji|tisočletja|tisočletij}}',
 
 # Unknown messages
-'mytalk-parenthetical' => 'pogovor',
+'svg-long-error' => 'Neveljavna datoteka SVG: $1',
 );
index 55f3980..0fd3d94 100644 (file)
@@ -364,10 +364,6 @@ De Sperre wurde durch [[User:$1|$1]] miet der Begrindung ''„$2“'' eigerichte
 
 Du koast {{SITENAME}} jitz anonym wetter nutzen, oder diech erneut under damm selba oder a'm andern Nutzernoama <span class='plainlinks'>[$1 oamelda]</span>.
 Beachte, doas einige Seyta noo oazeiga kinna, doas du oagemeldet best, sulange du ne denn Browsercache gelaart host.",
-'welcomecreation' => '== Willkumma, $1! ==
-
-Dei Benutzerkonto wurde eigerichtet.
-Vergiss nä, denne [[Special:Preferences|{{SITENAME}}-Eistellunga]] oazupoassa.',
 'yourname' => 'Benutzernoame:',
 'yourpassword' => 'Passwort:',
 'yourpasswordagain' => 'Passwort wiederhola:',
@@ -1438,9 +1434,6 @@ Wenn du de Seite wieder vu denner Beobachtungsliste entferna mechtest, klicke uf
 
 'enotif_mailer' => '{{SITENAME}}-E-Mail-Benoachrichtigungsdienst',
 'enotif_reset' => 'Olle Seyta ols besucht markiern',
-'enotif_newpagetext' => 'Doas ies anne neue Seite.',
-'created' => 'erzeugt',
-'enotif_subject' => '[{{SITENAME}}] De Seite "$PAGETITLE" wurde vu $PAGEEDITOR $CHANGEDORCREATED',
 'enotif_lastvisited' => "Olle Änderunga uff a'n Blick: $1",
 'enotif_lastdiff' => 'Siehe $1 noach dieser Änderung.',
 'enotif_anon_editor' => 'Anonymer Nutzer $1',
index efd1cb5..12ab6bb 100644 (file)
@@ -481,11 +481,11 @@ $1",
 'youhavenewmessagesfromusers' => 'Ju keni $1 nga {{Shumës:$3|përdorues tjetër|përdoruesit $3}} ($2).',
 'youhavenewmessagesmanyusers' => 'Ju keni 1$ nga shumë përdorues (2$).',
 'newmessageslinkplural' => '{{SHUMËS:1$|një porosi e re|porosi të reja}}',
-'newmessagesdifflinkplural' => 'i fundit {{SHUMËS:$1|ndryshimi|ndryshimet}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|ndryshimi i|ndryshimet e}} fundit',
 'youhavenewmessagesmulti' => 'Ju keni mesazhe të reja në $1',
 'editsection' => 'redakto',
-'editold' => 'redaktoni',
-'viewsourceold' => 'Shiko tekstin',
+'editold' => 'redakto',
+'viewsourceold' => 'shiko tekstin',
 'editlink' => 'redakto',
 'viewsourcelink' => 'Shiko tekstin',
 'editsectionhint' => 'Redaktoni seksionin:
@@ -627,9 +627,6 @@ Administratori i cili e mbylli atë e dha këtë shpjegim: "$3".',
 
  Ju mund të vazhdoni të përdorni {{SITENAME}} në mënyrë anonime, ose mund të <span class='plainlinks'>[$1 identifikoheni përsëri]</span> si përdoruesi i mëparshëm ose si një përdorues tjetër. 
  Kini parasysh që disa faqe mund të shfaqen sikur të ishit i identifikuar derisa të fshini ''cache''-in e shfletuesit tuaj.",
-'welcomecreation' => '== Mirësevini, $1! == 
- Llogaria juaj është krijuar. 
- Mos harroni të ndryshoni [[Special:Preferences|{{SITENAME}} preferencat]] tuaja.',
 'yourname' => 'Fusni nofkën tuaj',
 'yourpassword' => 'Fusni fjalëkalimin tuaj',
 'yourpasswordagain' => 'Fusni fjalëkalimin përsëri',
@@ -2215,11 +2212,7 @@ Në qoftë se dëshironi të hiqni një faqe nga lista mbikqyrëse më vonë, sh
 
 'enotif_mailer' => 'Postieri Njoftues i {{SITENAME}}',
 'enotif_reset' => 'Shëno të gjitha faqet e vizituara',
-'enotif_newpagetext' => 'Kjo është një faqe e re.',
 'enotif_impersonal_salutation' => 'Përdorues i {{SITENAME}}',
-'changed' => 'ndryshuar',
-'created' => 'u krijua',
-'enotif_subject' => '{{SITENAME}} faqja $PAGETITLE u $CHANGEDORCREATED prej $PAGEEDITOR',
 'enotif_lastvisited' => 'Shikoni $1 për të gjitha ndryshimet që prej vizitës tuaj të fundit.',
 'enotif_lastdiff' => 'Shikoni $1 për ndryshime.',
 'enotif_anon_editor' => 'përdorues anonim $1',
index 8b3190b..f2bd271 100644 (file)
@@ -812,10 +812,6 @@ $2',
 
 Можете да наставите с коришћењем овог викија као гост, или се <span class='plainlinks'>[$1 поново пријавите]</span> као други корисник.
 Имајте на уму да неке странице могу наставити да се приказују као да сте још пријављени, све док не очистите привремену меморију свог прегледача.",
-'welcomecreation' => '== Добро дошли, $1! ==
-
-Ваш налог је отворен.
-Не заборавите да прилагодите своја [[Special:Preferences|подешавања]].',
 'yourname' => 'Корисничко име:',
 'yourpassword' => 'Лозинка:',
 'yourpasswordagain' => 'Потврда лозинке:',
@@ -1020,14 +1016,14 @@ $2
 'blockedtitle' => 'Корисник је блокиран',
 'blockedtext' => "'''Ваше корисничко име или ИП адреса је блокирана.'''
 
-Блокирање је {{GENDER:$1|извршио|извршила|извршио}} $1.
+Блокирање је {{GENDER:$4|извршио|извршила|извршио}} $1.
 Разлог: ''$2''.
 
 * Датум блокирања: $8
 * Блокирање истиче: $6
 * Име корисника: $7
 
-Обратите се {{GENDER:$1|кориснику|корисници|кориснику}} $1 или [[{{MediaWiki:Grouppage-sysop}}|администратору]] да разјасните ствар.
+Обратите се {{GENDER:$4|кориснику|корисници|кориснику}} $1 или [[{{MediaWiki:Grouppage-sysop}}|администратору]] да разјасните ствар.
 Не можете користити могућност „Пошаљи поруку овом кориснику“ ако нисте унели исправну е-адресу у [[Special:Preferences|подешавањима]].
 Ваша блокирана ИП адреса је $3, а ИБ $5.
 Наведите све податке изнад при стварања било каквих упита.",
@@ -2498,11 +2494,7 @@ $1',
 
 'enotif_mailer' => '{{SITENAME}} е-обавештење',
 'enotif_reset' => 'Означи све странице као посећене',
-'enotif_newpagetext' => 'Ово је нова страница.',
 'enotif_impersonal_salutation' => '{{SITENAME}} корисник',
-'changed' => 'измењена',
-'created' => 'направљена',
-'enotif_subject' => '{{SITENAME}} страница $PAGETITLE је $CHANGEDORCREATED од стране $PAGEEDITOR',
 'enotif_lastvisited' => 'Погледајте $1 за све измене од ваше последње посете.',
 'enotif_lastdiff' => 'Погледајте $1 да видите ову измену.',
 'enotif_anon_editor' => 'анониман корисник $1',
index 9bd7e25..f81fac2 100644 (file)
@@ -722,10 +722,6 @@ Administrator koji ju je zaključao ponudio je sledeće objašnjenje: „$3“.'
 
 Možete da nastavite s korišćenjem ovog vikija kao gost, ili se <span class='plainlinks'>[$1 ponovo prijavite]</span> kao drugi korisnik.
 Imajte na umu da neke stranice mogu nastaviti da se prikazuju kao da ste još prijavljeni, sve dok ne očistite privremenu memoriju svog pregledača.",
-'welcomecreation' => '== Dobro došli, $1! ==
-
-Vaš nalog je otvoren.
-Ne zaboravite da prilagodite svoja [[Special:Preferences|podešavanja]].',
 'yourname' => 'Korisničko ime:',
 'yourpassword' => 'Lozinka:',
 'yourpasswordagain' => 'Potvrda lozinke:',
@@ -930,14 +926,14 @@ Ako ponovo kliknete na „{{int:savearticle}}“, vaša izmena će biti sačuvan
 'blockedtitle' => 'Korisnik je blokiran',
 'blockedtext' => "'''Vaše korisničko ime ili IP adresa je blokirana.'''
 
-Blokiranje je {{GENDER:$1|izvršio|izvršila|izvršio}} $1.
+Blokiranje je {{GENDER:$4|izvršio|izvršila|izvršio}} $1.
 Razlog: ''$2''.
 
 * Datum blokiranja: $8
 * Blokiranje ističe: $6
 * Ime korisnika: $7
 
-Obratite se {{GENDER:$1|korisniku|korisnici|korisniku}} $1 ili [[{{MediaWiki:Grouppage-sysop}}|administratoru]] da razjasnite stvar.
+Obratite se {{GENDER:$4|korisniku|korisnici|korisniku}} $1 ili [[{{MediaWiki:Grouppage-sysop}}|administratoru]] da razjasnite stvar.
 Ne možete koristiti mogućnost „Pošalji poruku ovom korisniku“ ako niste uneli ispravnu e-adresu u [[Special:Preferences|podešavanjima]].
 Vaša blokirana IP adresa je $3, a IB $5.
 Navedite sve podatke iznad pri stvaranja bilo kakvih upita.",
@@ -2408,11 +2404,7 @@ Ukoliko budete želeli da uklonite stranicu sa spiska nadgledanja, kliknite opet
 
 'enotif_mailer' => '{{SITENAME}} e-obaveštenje',
 'enotif_reset' => 'Označi sve stranice kao posećene',
-'enotif_newpagetext' => 'Ovo je nova stranica.',
 'enotif_impersonal_salutation' => '{{SITENAME}} korisnik',
-'changed' => 'izmenjena',
-'created' => 'napravljena',
-'enotif_subject' => '{{SITENAME}} stranica $PAGETITLE je $CHANGEDORCREATED od strane $PAGEEDITOR',
 'enotif_lastvisited' => 'Pogledajte $1 za sve izmene od vaše poslednje posete.',
 'enotif_lastdiff' => 'Pogledajte $1 da vidite ovu izmenu.',
 'enotif_anon_editor' => 'anoniman korisnik $1',
index 59d01a1..1b312e5 100644 (file)
@@ -444,10 +444,6 @@ Die Administrator, die dän Skrieuwtougriep speerde, roate foulgjenden Gruund an
 
 Du koast {{SITENAME}} nu anonym fääre benutsje, of die fonnäien unner dänsälge of n uur Benutsernoome wier <span class='plainlinks'>[$1 anmäldje]</span>.
 Beoachtje, dät eenige Sieden noch anwiese konnen, dät du oumälded bäst, soloange du nit din Browsercache loosmoaked hääst.",
-'welcomecreation' => '== Wäilkuumen, $1 ==
-
-Dien Benutserkonto wuude iengjucht.
-Ferjeet nit, dien [[Special:Preferences|{{SITENAME}}-Ienstaalengen]] antoupaasjen.',
 'yourname' => 'Benutsernoome:',
 'yourpassword' => 'Paaswoud:',
 'yourpasswordagain' => 'Paaswoud wierhoalje:',
@@ -1932,11 +1928,7 @@ Wan du die Artikkel wier fon ju Foulgelieste ou hoalje moatest, klik ap ju Siede
 
 'enotif_mailer' => '{{SITENAME}} tält Beskeed uur Email',
 'enotif_reset' => 'Markier aal besoachte Sieden',
-'enotif_newpagetext' => 'Dit is ne näie Siede.',
 'enotif_impersonal_salutation' => '{{SITENAME}} Benutser',
-'changed' => 'annerd',
-'created' => 'näi anlaid',
-'enotif_subject' => '{{SITENAME}} Siede $PAGETITLE wuude $CHANGEDORCREATED fon $PAGEEDITOR',
 'enotif_lastvisited' => 'Aal Annerengen ap aan Blik: $1',
 'enotif_lastdiff' => '$1 wiest alle Annerengen mäd aan Glap.',
 'enotif_anon_editor' => 'Anonyme Benutser $1',
index dd44a09..5f3c0dc 100644 (file)
@@ -264,7 +264,7 @@ $messages = array(
 'cancel' => 'Bolay',
 'moredotdotdot' => 'Deui...',
 'mypage' => 'Kaca kuring',
-'mytalk' => 'Obrolan kuring',
+'mytalk' => 'Obrolan',
 'anontalk' => 'Obrolan pikeun IP ieu',
 'navigation' => 'Pituduh',
 'and' => '&#32;jeung',
@@ -519,9 +519,6 @@ Pikeun alihbasa, mangga sumping ka [//translatewiki.net/wiki/Main_Page?setlang=e
 
 Anjeun bisa tetep migunakeun {{SITENAME}} bari anonim, atawa bisa <span class='plainlinks'>[$1 asup log deui]</span> salaku pamaké nu sarua atawa nu séjén deui.
 Mangkahadé, sababaraha kaca bakal tetep némbongkeun saolah-olah anjeun asup log kénéh nepi ka anjeun ngosongkeun ''cache'' panyungsi anjeun.",
-'welcomecreation' => '==Wilujeng sumping, $1!==
-Rekening anjeun geus dijieun.
-Tong hilap ngarobih [[Special:Preferences|{{SITENAME}} préferénsi]] anjeun.',
 'yourname' => 'Sandiasma:',
 'yourpassword' => 'Sandi anjeun',
 'yourpasswordagain' => 'Ketik deui sandi anjeun',
@@ -758,9 +755,8 @@ Mun anjeun ka dieu teu ngahaja, klik baé tombol '''back''' na panyungsi anjeun.
 Anjeun bisa [[Special:Search/{{PAGENAME}}|nyusud judul ieu kaca]] dina kaca séjén,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nyusud log nu tumali],
 atawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} ngédit ieu kaca]</span>.',
-'noarticletext-nopermission' => 'Kiwari ieu kaca euweuh eusian.
-Anjeun bisa [[Special:Search/{{PAGENAME}}|milari judul ieu kaca]] di kaca séjén,
-atawa <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pilari log nu tumali]</span>.',
+'noarticletext-nopermission' => 'Kiwari can aya téks dina ieu kaca.
+Anjeun bisa [[Special:Search/{{PAGENAME}}|nyusud judul ieu kaca]] dina kaca séjén,atawa <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nyusud log nu tumali]</span>, tapi teu wenang pikeun nyieun ieu kaca.',
 'userpage-userdoesnotexist' => 'Rekening pamaké "<nowiki>$1</nowiki>" tacan kadaptar. Mangga tilikan lamun anjeun hoyong ngadamel/ngédit kaca ieu.',
 'userpage-userdoesnotexist-view' => 'Rekening pamaké "$1" teu aya dina daptar.',
 'blocked-notice-logextract' => 'Ieu pamaké keur dipeungpeuk.
@@ -1104,7 +1100,7 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
 
 # Preferences page
 'preferences' => 'Préferénsi',
-'mypreferences' => 'Préferénsi',
+'mypreferences' => 'Préferéns',
 'prefs-edits' => 'Jumlah éditan:',
 'prefsnologin' => 'Can asup log',
 'prefsnologintext' => 'Anjeun kudu <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} asup log]</span> pikeun ngatur préferénsi pamaké.',
@@ -1907,11 +1903,7 @@ Jaga, parobahan na kaca ieu katut kaca obrolanana bakal dibéréndélkeun di din
 
 'enotif_mailer' => 'Surat Émbaran {{SITENAME}}',
 'enotif_reset' => 'Tandaan sadaya kaca nu geus dilongok',
-'enotif_newpagetext' => 'Kaca ieu anyar.',
 'enotif_impersonal_salutation' => 'Pamaké {{SITENAME}}',
-'changed' => 'geus robah',
-'created' => 'geus dijieun',
-'enotif_subject' => 'Kaca $PAGETITLE {{SITENAME}} geus $CHANGEDORCREATED ku $PAGEEDITOR',
 'enotif_lastvisited' => 'Tempo $1 pikeun sadaya parobahan ti saprak anjeun ninggalkeun ieu kaca.',
 'enotif_lastdiff' => 'Buka $1 pikeun nempo ieu parobahan.',
 'enotif_anon_editor' => 'pamaké anonim $1',
@@ -2085,7 +2077,7 @@ $1',
 # Contributions
 'contributions' => 'Kontribusi ti kontributor',
 'contributions-title' => 'Sumbangan tulisan ti $1',
-'mycontris' => 'Tulisan kuring',
+'mycontris' => 'Kontribusi',
 'contribsub2' => 'Pikeun $1 ($2)',
 'nocontribs' => 'Taya robahan nu kapanggih cocog jeung patokan ieu.',
 'uctop' => '(pangluhurna)',
@@ -2123,7 +2115,7 @@ Pikeun rujukan, éntri log panungtung dipidangkeun di handap:',
 'whatlinkshere-hideredirs' => '$1 alihan',
 'whatlinkshere-hidetrans' => '$1 transklusi',
 'whatlinkshere-hidelinks' => '$1 tutumbu',
-'whatlinkshere-hideimages' => '$1 tutumbu gambar',
+'whatlinkshere-hideimages' => '$1 tutumbu berkas',
 'whatlinkshere-filters' => 'Saringan',
 
 # Block/unblock
index 776fa81..fc08e7e 100644 (file)
@@ -487,6 +487,7 @@ $messages = array(
 'namespaces' => 'Namnrymder',
 'variants' => 'Varianter',
 
+'navigation-heading' => 'Navigeringsmeny',
 'errorpagetitle' => 'Fel',
 'returnto' => 'Tillbaka till $1.',
 'tagline' => 'Från {{SITENAME}}',
@@ -728,8 +729,8 @@ Den administratören som låste den gav denna anledning: "\'\'$3\'\'".',
 
 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.",
-'welcomecreation' => '== Välkommen, $1! ==
-Ditt konto har skapats.
+'welcomeuser' => 'Välkommen, $1!',
+'welcomecreation-msg' => 'Ditt konto har skapats.
 Glöm inte att justera dina [[Special:Preferences|{{SITENAME}}-inställningar]].',
 'yourname' => 'Användarnamn:',
 'yourpassword' => 'Lösenord:',
@@ -1861,6 +1862,7 @@ Om problemet kvarstår, kontakta en [[Special:ListUsers/sysop|administratör]].'
 'backend-fail-notsame' => 'En icke-identisk fil redan finns på $1.',
 'backend-fail-invalidpath' => '$1 är inte en giltig sökväg för att spara.',
 'backend-fail-delete' => 'Kunde inte radera filen $1.',
+'backend-fail-describe' => 'Kunde inte att ändra metadata för filen "$1".',
 'backend-fail-alreadyexists' => 'Filen $1 finns redan.',
 'backend-fail-store' => 'Kunde inte spara filen $1 vid $2.',
 'backend-fail-copy' => 'Det gick inte att kopiera filen $1 till $2.',
@@ -2246,7 +2248,7 @@ Se även [[Special:WantedCategories|önskade kategorier]].',
 'linksearch-ok' => 'Sök',
 'linksearch-text' => 'Jokertecken (wildcards) som t.ex. "*.wikipedia.org" kan användas.
 Det krävs åtminstone en toppdomän, t.ex. "*.org".<br />
-Protokoll som stöds: <code>$1</code> (lägg inte till någon av dessa i din sökning).',
+Protokoll som stöds: <code>$1</code> (sätts till http:// om inget protokoll anges).',
 'linksearch-line' => '$1 länkas från $2',
 'linksearch-error' => 'Jokertecken kan bara användas i början av domännamnet.',
 
@@ -2363,11 +2365,7 @@ Framtida ändringar av den här sidan och dess diskussionssida kommer att listas
 
 'enotif_mailer' => '{{SITENAME}}s system för att få meddelanden om förändringar per e-post',
 'enotif_reset' => 'Markera alla sidor som besökta',
-'enotif_newpagetext' => 'Detta är en ny sida.',
 'enotif_impersonal_salutation' => '{{SITENAME}}användare',
-'changed' => 'ändrad',
-'created' => 'skapad',
-'enotif_subject' => '{{SITENAME}}-sidan $PAGETITLE har blivit $CHANGEDORCREATED av $PAGEEDITOR',
 'enotif_lastvisited' => 'På $1 återfinner du alla ändringar sedan ditt senaste besök.',
 'enotif_lastdiff' => 'Se denna ändring på $1',
 'enotif_anon_editor' => 'anonym användare $1',
@@ -2659,7 +2657,7 @@ Ange orsak nedan (exempelvis genom att nämna sidor som blivit vandaliserade).',
 'ipbotherreason' => 'Annan/ytterligare anledning:',
 'ipbhidename' => 'Dölj användarnamnet från redigeringar och listor',
 'ipbwatchuser' => 'Bevaka användarens användarsida och diskussionssida',
-'ipb-disableusertalk' => 'Hindra denne användare från att redigera sina egna diskussionssida under blockeringen',
+'ipb-disableusertalk' => 'Hindra användaren från att redigera sina egna diskussionssida under blockeringen',
 'ipb-change-block' => 'Återblockera användaren med de här inställningarna',
 'ipb-confirm' => 'Bekräfta blockering',
 'badipaddress' => 'Du har inte skrivit IP-adressen korrekt.',
@@ -3129,6 +3127,7 @@ Detta orsakades troligen av en länk till en svartlistad webbplats.',
 'pageinfo-default-sort' => 'Standardsorteringsnyckel',
 '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',
@@ -3176,6 +3175,8 @@ Detta orsakades troligen av en länk till en svartlistad webbplats.',
 'markedaspatrollederror' => 'Kan inte markera som patrullerad',
 'markedaspatrollederrortext' => 'Det går inte att markera som patrullerad utan att ange version.',
 'markedaspatrollederror-noautopatrol' => 'Du har inte tillåtelse att markera dina egna redigeringar som patrullerade.',
+'markedaspatrollednotify' => 'Denna ändring till $1 har markerats som patrullerad.',
+'markedaspatrollederrornotify' => 'Markering som patrullerad misslyckades.',
 
 # Patrol log
 'patrol-log-page' => 'Patrulleringslogg',
@@ -3991,9 +3992,9 @@ Bilder visas i full upplösning, andra filtyper öppnas direkt i de program som
 'logentry-move-move_redir-noredirect' => '$1 flyttade sidan $3 till $4 över en omdirigering utan att lämna en omdirigering',
 'logentry-patrol-patrol' => '$1 markerade versionen $4 av sidan $3 som patrullerad',
 'logentry-patrol-patrol-auto' => '$1 markerade automatiskt versionen $4 av sidan $3 som patrullerad',
-'logentry-newusers-newusers' => '$1 skapade ett användarkonto',
-'logentry-newusers-create' => '$1 skapade ett användarkonto',
-'logentry-newusers-create2' => '$1 skapade ett användarkonto $3',
+'logentry-newusers-newusers' => 'Användarkonto $1 skapades',
+'logentry-newusers-create' => 'Användarkonto $1 skapades',
+'logentry-newusers-create2' => 'Användarkonto $3 skapades av $1',
 'logentry-newusers-autocreate' => 'Kontot $1 skapades automatiskt',
 'newuserlog-byemail' => 'lösenord skickat med e-post',
 
@@ -4069,6 +4070,4 @@ Annars kan du använda det enkla formuläret nedan. Din kommentar kommer att lä
 'duration-centuries' => '$1 {{PLURAL:$1|sekel|sekel}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennium|millennier}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'diskussion',
 );
index e4daa5e..c3b74fe 100644 (file)
@@ -291,6 +291,7 @@ $messages = array(
 'namespaces' => 'Maeneo ya wiki',
 'variants' => 'Vibadala',
 
+'navigation-heading' => 'Urambazaji',
 'errorpagetitle' => 'Hitilafu',
 'returnto' => 'Rudia $1.',
 'tagline' => 'Kutoka {{SITENAME}}',
@@ -527,9 +528,7 @@ Sababu zilizotolewa ni "\'\'$2\'\'".',
 'logouttext' => "'''Umetoka kwenye akaunti yako.'''
 
 Unaweza kuendelea kutumia {{SITENAME}} bila kutaja jina lako, au unaweza <span class='plainlinks'>[$1 kuingia tena]</span> kwenye akaunti yako. Kumbuka kwamba kurasa nyingine zitaendelea kuonekana kana kwamba bado hujatoka kwenye akaunti yako, hadi utakaposafisha kache ya kivinjari.",
-'welcomecreation' => '== Karibu, $1! ==
-Ushafunguliwa akaunti yako tayari.
-Usisahau kubadilisha mapendekezo yako ya [[Special:Preferences|{{SITENAME}}]].',
+'welcomeuser' => 'Karibu, $1!',
 'yourname' => 'Jina la mtumiaji:',
 'yourpassword' => 'Neno la siri:',
 'yourpasswordagain' => 'Andika tena neno la siri',
@@ -632,7 +631,7 @@ Tafadhali subiri kwanza kabla ya kujaribu tena.',
 
 # Change password dialog
 'resetpass' => 'Kubadilisha neno la siri',
-'resetpass_announce' => 'Umeingia na kodi za barua pepe za muda tu.
+'resetpass_announce' => 'Umeingia na msimbo wa barua pepe wa muda tu.
 Kumalizia kuingia ndani, ni lazima urekebishe neno la siri jipya hapa:',
 'resetpass_header' => 'Kubadilisha neno la siri la akaunti',
 'oldpassword' => 'Neno la siri la zamani',
@@ -2020,11 +2019,7 @@ Ukitaka kufuta ukurasa huo kutoka maangalizi yako baadaye, bonyeza \"Acha kufuat
 
 'enotif_mailer' => 'Huduma ya taarifa ya barua pepe kutoka kwa {{SITENAME}}',
 'enotif_reset' => 'Weka alama kwa kurasa zote zilizotembelewa',
-'enotif_newpagetext' => 'Ukurasa huu ni mpya.',
 'enotif_impersonal_salutation' => 'Kwa mtumiaji wa {{SITENAME}}',
-'changed' => 'alibadilisha',
-'created' => 'alianzisha',
-'enotif_subject' => '$PAGEEDITOR $CHANGEDORCREATED ukurasa wa $PAGETITLE kwenye {{SITENAME}}',
 'enotif_lastvisited' => 'Tazama $1 kwa mabadiliko yote tangu ziara yako ya mwisho.',
 'enotif_lastdiff' => 'Tazama badiliko hili hapo $1.',
 'enotif_anon_editor' => 'mtumiaji bila jina $1',
@@ -2693,7 +2688,7 @@ likifupishwa. Nyuga zingine zitafichwa kama chaguo-msingi.
 'exif-keywords' => 'Maneno yahusika',
 'exif-worldregioncreated' => 'Eneo la dunia palipopigwa picha',
 'exif-countrycreated' => 'Nchi palipopigwa picha',
-'exif-countrycodecreated' => 'Kodi ya nchi picha palipopigwa',
+'exif-countrycodecreated' => 'Msimbo wa nchi picha palipopigwa',
 'exif-countrydest' => 'Nchi inayoonyeshwa',
 'exif-citydest' => 'Mji umeonyeshwa',
 'exif-objectname' => 'Jina fupi',
@@ -3180,6 +3175,4 @@ Tovuti hii inapata matatatizo wakati huu.',
 'duration-years' => '$1 {{PLURAL:$1|year|miaka}}',
 'duration-centuries' => '$1 {{PLURAL:$1|century|karne}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'majadiliano',
 );
index 350ba98..38e810f 100644 (file)
@@ -452,9 +452,6 @@ Administrator kery zawarł wćepał kůmyntorz: "$3".',
 
 Možeš dali sam sprowjać zajty we {{SITENAME}} kej ńyzalůgowany užytkowńik, abo <span class='plainlinks'>[$1 zalůgować śe nazod]</span> kej tyn som abo inkšy užytkowńik.
 Dej pozůr, co na ńykerych zajtach přeglůndarka može dali pokozywać co ježeś zalůgowany, a bydźe tak aže uodśwjyžyš jeij cache.",
-'welcomecreation' => '== Witej, $1! ==
-Uotwarli my sam lo Ćebje kůnto.
-Ńy zapomńij poštalować [[Special:Preferences|preferencyji lo {{GRAMMAR:D.lp|{{SITENAME}}}}]].',
 'yourname' => 'Mjano użytkowńika:',
 'yourpassword' => 'Hasło:',
 'yourpasswordagain' => 'Naszkryflej ausdruk zaś',
@@ -1715,11 +1712,7 @@ Na tyi liśće bydźeš mjou rejer přišuych sprowjyń tyi zajty i jeji zajty g
 
 'enotif_mailer' => 'Powjadomjyńe s {{GRAMMAR:D.lp|{{SITENAME}}}}',
 'enotif_reset' => 'Uoznoč wšyjstke zajty kej uodwjydzůne',
-'enotif_newpagetext' => 'To je nowo zajta.',
 'enotif_impersonal_salutation' => 'užytkowńik {{GRAMMAR:D.lp|{{SITENAME}}}}',
-'changed' => 'pomjyńono',
-'created' => 'utwořono',
-'enotif_subject' => 'Zajta $PAGETITLE we {{GRAMMAR:MS.lp|{{SITENAME}}}} zostoua $CHANGEDORCREATED bez užytkowńika $PAGEEDITOR',
 'enotif_lastvisited' => 'Uobejřij na zajće $1 wšyjstke půmjyńańo uod Twojej uostatńij wizyty.',
 'enotif_lastdiff' => 'Uobejřij na zajće $1 te pomjyńeńe.',
 'enotif_anon_editor' => 'užytkowńik anůnimowy $1',
index ef91008..05cc29c 100644 (file)
@@ -480,8 +480,6 @@ MySQL returned error "$3: $4".',
 'logouttext' => "'''நீங்கள் இப்பொழுது விடுபதிகையில் உள்ளீர்கள்.'''
 
 நீங்கள் தொடர்ந்து {{SITENAME}} தளத்தை அனானியாகப் பயன்படுத்தலாம், அல்லது அதே பயனராகவோ வேறு பயனராகவோ <span class='plainlinks'>[$1 மீண்டும் புகுபதிகை]</span> செய்யலாம். உங்கள் உலாவியின் இடைமாற்று நீக்கப்படும் வரை சில பக்கங்கள் தொடர்ந்தும் புகுபதிகையில் உள்ளது போன்றே காட்சி தரும் என்பதைக் கவனிக்கவும்.",
-'welcomecreation' => '==நல்வரவு, $1!==
-உங்களுக்கான பயனர் கணக்கு உருவாக்கப்பட்டுள்ளது. உங்களுக்கேற்றவாறு [[Special:Preferences|{{SITENAME}} விருப்பத்தேர்வுகளை]] மாற்றிக் கொள்ள மறவாதீர்கள்.',
 'yourname' => 'பயனர் பெயர்:',
 'yourpassword' => 'கடவுச்சொல்:',
 'yourpasswordagain' => 'கடவுச்சொல்லைத் திரும்ப தட்டச்சிடுக:',
@@ -2029,11 +2027,7 @@ $1',
 
 'enotif_mailer' => '{{SITENAME}} தளத்தின் அறிவித்தல் அஞ்சல்காரர்',
 'enotif_reset' => 'எல்லாப் பக்கங்களையும் பார்வையிட்டதாக குறித்துக்கொள்',
-'enotif_newpagetext' => 'இது ஒரு புதிய பக்கமாகும்.',
 'enotif_impersonal_salutation' => '{{SITENAME}} பயனர்',
-'changed' => 'மாற்றப்பட்டது',
-'created' => 'தொடக்கப்பட்டது',
-'enotif_subject' => '{{SITENAME}} தளத்தின் $PAGETITLE என்றத் தலைப்புடையப் பக்கம் $PAGEEDITOR பயனரால் $CHANGEDORCREATED',
 'enotif_lastvisited' => 'உங்கள் கடைசி வருகைக்குப் பின்னர் நடைபெற்றுள்ள மாற்றங்களைக் காண $1 பக்கத்தைப் பார்க்கவும்.',
 'enotif_lastdiff' => 'மாற்றங்களைக் காண  $1 பக்கத்தைப் பார்.',
 'enotif_anon_editor' => 'அடையாளம் காட்டாத பயனர் $1',
@@ -3615,6 +3609,4 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|நூற்றாண்டு|நூற்றாண்டுகள்}}',
 'duration-millennia' => '$1 {{PLURAL:$1|ஆயிரம் ஆண்டு|ஆயிரம் ஆண்டுகள்}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'பேச்சு',
 );
index 365db41..fbb6c94 100644 (file)
@@ -544,10 +544,6 @@ $2',
 
 మీరు {{SITENAME}}ని అజ్ఞాతంగా వాడుతూండొచ్చు, లేదా ఇదే వాడుకరిగా కానీ లేదా వేరే వాడుకరిగా కానీ <span class='plainlinks'>[$1 మళ్ళీ ప్రవేశించవచ్చు]</span>.
 అయితే, మీ విహారిణిలోని కోశాన్ని శుభ్రపరిచే వరకు కొన్ని పేజీలు మీరింకా ప్రవేశించి ఉన్నట్లుగానే చూపించవచ్చని గమనించండి.",
-'welcomecreation' => '== స్వాగతం, $1! ==
-
-మీ ఖాతాని సృష్టించాం.
-మీ [[Special:Preferences|{{SITENAME}} అభిరుచులను]] మార్చుకోవడం మరువకండి.',
 'yourname' => 'వాడుకరి పేరు:',
 'yourpassword' => 'సంకేతపదం:',
 'yourpasswordagain' => 'సంకేతపదాన్ని మళ్ళీ ఇవ్వండి:',
@@ -884,11 +880,13 @@ $2
 'edit-already-exists' => 'కొత్త పేజీని సృష్టించలేము.
 అది ఇప్పటికే ఉంది.',
 'defaultmessagetext' => 'అప్రమేయ సందేశపు పాఠ్యం',
+'invalid-content-data' => 'తప్పుడు విషయం',
 
 # Content models
 'content-model-wikitext' => 'వికీపాఠ్యం',
 'content-model-text' => 'సాదా పాఠ్యం',
 'content-model-javascript' => 'జావాస్క్రిప్ట్',
+'content-model-css' => 'CSS',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'హెచ్చరిక: ఈ పేజీలో ఖరీదైన పార్సరు పిలుపులు చాలా ఉన్నాయి.
@@ -1163,7 +1161,7 @@ $1",
 
 # Preferences page
 'preferences' => 'అభిరుచులు',
-'mypreferences' => 'నా à°\85à°­à°¿à°°à±\81à°\9aà±\81à°²à±\81',
+'mypreferences' => 'అభిరుచులు',
 'prefs-edits' => 'దిద్దుబాట్ల సంఖ్య:',
 'prefsnologin' => 'లాగిన్‌ అయిలేరు',
 'prefsnologintext' => 'వాడుకరి అభిరుచులను మార్చుకోడానికి, మీరు <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} లోనికి ప్రవేశించి]</span> ఉండాలి.',
@@ -1385,6 +1383,7 @@ $1",
 'right-siteadmin' => 'డేటాబేసును లాక్, అన్‌లాక్ చెయ్యి',
 'right-override-export-depth' => '5 లింకుల లోతు వరకు ఉన్న పేజీలతో సహా, పేజీలను ఎగుమతి చెయ్యి',
 'right-sendemail' => 'ఇతర వాడుకరులకు ఈ-మెయిలు పంపించగలగడం',
+'right-passwordreset' => 'సంకేతపదాన్ని పునరుద్ధరించిన ఈ-మెయిళ్ళు',
 
 # User rights log
 'rightslog' => 'వాడుకరుల హక్కుల మార్పుల చిట్టా',
@@ -1609,6 +1608,7 @@ $1',
 'backend-fail-opentemp' => 'తాత్కాలిక దస్త్రాన్ని తెరవలేకపోతున్నాం.',
 'backend-fail-closetemp' => 'తాత్కాలిక దస్త్రాన్ని మూసివేయలేకపోయాం.',
 'backend-fail-read' => '$1 దస్త్రము చదువలేకపోతిమి.',
+'backend-fail-create' => '$1 ఫైలులో రాయలేకున్నాం.',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'ఈ ఫైలును ZIP పరీక్ష కోసం తెరవబోతే, ఏదో తెలియని లోపం ఎదురైంది.',
@@ -1990,6 +1990,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'mailnologintext' => 'ఇతరులకు ఈ-మెయిలు పంపించాలంటే, మీరు [[Special:UserLogin|లాగిన్‌]] అయి ఉండాలి, మరియు మీ [[Special:Preferences|అభిరుచుల]]లో సరైన ఈ-మెయిలు చిరునామా ఇచ్చి ఉండాలి.',
 'emailuser' => 'ఈ వాడుకరికి ఈ-మెయిలుని పంపించండి',
 'emailuser-title-target' => 'ఈ {{GENDER:$1|వాడుకరికి}} ఈమెయిలు పంపించండి',
+'emailuser-title-notarget' => 'ఈ-మెయిలు వాడుకరి',
 'emailpage' => 'వాడుకరికి ఈ-మెయిలుని పంపించు',
 'emailpagetext' => 'వాడుకరికి ఈమెయిలు సందేశము పంపించుటకు క్రింది ఫారంను ఉపయోగించవచ్చు. [[Special:Preferences|మీ వాడుకరి అభిరుచుల]]లో మీరిచ్చిన ఈ-మెయిలు చిరునామా "నుండి" ఆ సందేశం వచ్చినట్లుగా ఉంటుంది, కనుక వేగుని అందుకునేవారు నేరుగా మీకు జవాబివ్వగలుగుతారు.',
 'usermailererror' => 'మెయిలు ఆబ్జెక్టు ఈ లోపాన్ని చూపింది:',
@@ -2056,11 +2057,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 
 'enotif_mailer' => '{{SITENAME}} ప్రకటన మెయిలు పంపునది',
 'enotif_reset' => 'అన్ని పేజీలను చూసినట్లుగా గుర్తించు',
-'enotif_newpagetext' => 'ఇది ఒక కొత్త పేజీ.',
 'enotif_impersonal_salutation' => '{{SITENAME}} వాడుకరి',
-'changed' => 'మార్చారు',
-'created' => 'సృష్టించారు',
-'enotif_subject' => '{{SITENAME}}లో $PAGETITLE అనే పేజీని $PAGEEDITOR $CHANGEDORCREATED',
 'enotif_lastvisited' => 'మీ గత సందర్శన తరువాత జరిగిన మార్పుల కొరకు $1 చూడండి.',
 'enotif_lastdiff' => 'ఈ మార్పు చూసేందుకు  $1 కు వెళ్ళండి.',
 'enotif_anon_editor' => 'అజ్ఞాత వాడుకరి $1',
@@ -3570,6 +3567,4 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|శతాబ్దం|శతాబ్దాలు}}',
 'duration-millennia' => '$1 {{PLURAL:$1|సహస్రాబ్దం|సహస్రాబ్దాలు}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'చర్చ',
 );
index 0cd2c9b..65246ac 100644 (file)
@@ -445,10 +445,6 @@ $1',
 
 Шумо метавонед гумном аз {{SITENAME}} истифодабариро идома диҳед, ё метавонед бо ҳамин номи корбариатон ва ё номи корбарии дигаре <span class='plainlinks'>[$1 боз вуруд кунед]</span>.
 Тавваҷӯҳ кунед, ки баъзе аз саҳифаҳо қаблан чи тавре намоиш шуда будан ҳамин тавр намоиш дода мешаванд, то даме ки шумо ҳофизаи мурургаратонро пок кунед.",
-'welcomecreation' => '== Хуш омадед, $1! ==
-
-Ҳисоби шумо эҷод шуд.
-Танзим кардани [[Special:Preferences|тарҷиҳоти {{SITENAME}}]] худро фаромӯш накунед.',
 'yourname' => 'Номи корбар',
 'yourpassword' => 'Калимаи убур\\пароль',
 'yourpasswordagain' => 'Калимаи убурро боз нависед',
@@ -1451,11 +1447,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 'enotif_mailer' => '{{SITENAME}} Иттилорасонӣ почтаи электронӣ',
 'enotif_reset' => 'Аломатрасони ҳамаи саҳифаҳо ба унвони боздидшуда',
-'enotif_newpagetext' => 'Ин саҳифаи нав аст',
 'enotif_impersonal_salutation' => 'Корбари {{SITENAME}}',
-'changed' => 'тағйирёфта',
-'created' => 'эҷод шуд',
-'enotif_subject' => 'Саҳифаи {{SITENAME}} $PAGETITLE аз тарафи $PAGEEDITOR $CHANGEDORCREATED шуд',
 'enotif_lastvisited' => 'Барои дидани ҳамаи тағйирот аз охирин боре, ки сар задаед $1ро бубинед.',
 'enotif_lastdiff' => 'Барои намоиши ин тағйир $1ро бубинед.',
 'enotif_anon_editor' => 'корбари ношинос $1',
index 0314e0d..9d83285 100644 (file)
@@ -328,8 +328,8 @@ $messages = array(
 'newwindow' => '(เปิดหน้าต่างใหม่)',
 'cancel' => 'ยกเลิก',
 'moredotdotdot' => 'ดูเพิ่ม...',
-'mypage' => 'หน้าของฉัน',
-'mytalk' => 'หà¸\99à¹\89าà¸\9eูà¸\94à¸\84ุยà¸\82อà¸\87à¸\89ัà¸\99',
+'mypage' => 'หน้า',
+'mytalk' => 'à¸\9eูà¸\94à¸\84ุย',
 'anontalk' => 'พูดคุยกับไอพีนี้',
 'navigation' => 'ป้ายบอกทาง',
 'and' => '&#32;และ',
@@ -518,7 +518,7 @@ $1',
 การค้นฐานข้อมูลล่าสุดกระทำเมื่อ:
 <blockquote><tt>$1</tt></blockquote>
 จากฟังก์ชัน "<tt>$2</tt>"
-ฐานข้อมูลแจ้งข้อผิดพลาดว่า "<tt>$3: $4</tt>"',
+ฐานข้อมูลแจ้งข้อผิดพลาดว่า "<samp>$3: $4</samp>"',
 'dberrortextcl' => 'ไวยากรณ์ในการค้นฐานข้อมูลผิดพลาด
 การค้นฐานข้อมูลล่าสุดกระทำเมื่อ:
 "$1"
@@ -554,6 +554,8 @@ $1',
 'cannotdelete' => 'ไม่สามารถลบหน้าหรือไฟล์ "$1" 
 อาจมีผู้อื่นลบไปแล้ว',
 'cannotdelete-title' => "ไม่สามารถลบหน้า ''$1''",
+'delete-hook-aborted' => 'การลบถูกยกเลิกโดยฮุก
+ไม่มีคำอธิบายสำหรับการยกเลิกนี้',
 'badtitle' => 'ชื่อหน้าไม่เหมาะสม',
 'badtitletext' => 'ชื่อหน้าที่ร้องขอไม่ถูกต้อง เป็นชื่อว่าง หรือชื่อที่ผิดพลาดเนื่องจากลิงก์ข้ามมาจากภาษาอื่น ชื่อที่ใช้อาจจะมีตัวอักษรที่ไม่สามารถถูกใช้เป็นชื่อได้',
 'perfcached' => 'ข้อมูลต่อไปนี้อาจเป็นข้อมูลเก่า ที่เก็บไว้ในแคชของระบบ A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
@@ -592,10 +594,6 @@ $1',
 
 คุณสามารถใช้งาน {{SITENAME}} ได้ต่อในฐานะผู้ใช้นิรนาม หรือคุณสามารถ<span class='plainlinks'>[$1 ล็อกอินกลับเข้าไป]</span>ด้วยชื่อผู้ใช้เดิมหรือชื่อผู้ใช้อื่นๆ
 อย่างไรก็ตามอาจจะมีบางหน้าที่ยังแสดงข้อความว่าคุณกำลังล็อกอินอยู่ จนกว่าคุณจะล้างแคชออกจากเว็บเบราว์เซอร์",
-'welcomecreation' => '== ยินดีต้อนรับ $1! ==
-
-ชื่อบัญชีผู้ใช้ของคุณถูกสร้างขึ้นแล้ว
-อย่าลืมเข้าไป[[Special:Preferences|ตั้งค่าผู้ใช้สำหรับ {{SITENAME}}]]',
 'yourname' => 'ชื่อผู้ใช้',
 'yourpassword' => 'รหัสผ่าน',
 'yourpasswordagain' => 'พิมพ์รหัสผ่านอีกครั้ง:',
@@ -688,6 +686,7 @@ $1',
 # Change password dialog
 'resetpass' => 'เปลี่ยนรหัสผ่าน',
 'resetpass_announce' => 'คุณล็อกอินผ่านรหัสอีเมลชั่วคราว คุณต้องใส่ค่ารหัสผ่านใหม่เพื่อเสร็จสิ้นขั้นตอนการล็อกอิน:',
+'resetpass_text' => '<!-- เพิ่มข้อความที่นี่ -->',
 'resetpass_header' => 'เปลี่ยนรหัสผ่าน',
 'oldpassword' => 'รหัสผ่านเดิม:',
 'newpassword' => 'รหัสผ่านใหม่:',
@@ -888,7 +887,7 @@ $1 เป็นผู้ดำเนินการบล็อกในคร
 'template-protected' => '(ล็อก)',
 'template-semiprotected' => '(กึ่งล็อก)',
 'hiddencategories' => 'หน้านี้มี {{PLURAL:$1|1 หมวดหมู่ที่ซ่อนอยู่|$1 หมวดหมู่ที่ซ่อนอยู่}} :',
-'edittools' => '<!-- à¸\82à¹\89อà¸\84วามà¸\99ีà¹\89à¸\88ะà¹\81สà¸\94à¸\87à¸\9cลà¸\94à¹\89าà¸\99à¹\83à¸\95à¹\89à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¹\81ละà¸\9fอรà¹\8cมสำหรัà¸\9aอัปโหลด -->',
+'edittools' => '<!-- à¸\82à¹\89อà¸\84วามà¸\99ีà¹\89à¸\88ะà¹\81สà¸\94à¸\87à¸\9cลà¹\83à¸\95à¹\89à¸\9fอรà¹\8cมสำหรัà¸\9aà¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¹\81ละอัปโหลด -->',
 'nocreatetitle' => 'จำกัดการสร้างหน้าใหม่',
 'nocreatetext' => '{{SITENAME}} จำกัดการสร้างหน้าใหม่
 คุณสามารถย้อนกลับไปแก้ไขหน้าที่มีอยู่เดิม หรือ[[Special:UserLogin|ล็อกอินหรือสร้างบัญชีผู้ใช้]]',
@@ -1737,6 +1736,8 @@ $1',
 'uploadnewversion-linktext' => 'อัปโหลดรุ่นใหม่ของไฟล์นี้',
 'shared-repo-from' => 'จาก $1',
 'shared-repo' => 'คลังที่ใช้ร่วมกัน',
+'shared-repo-name-wikimediacommons' => 'วิกิมีเดียคอมมอนส์',
+'filepage.css' => '/* สไตล์ชีตในหน้านี้ถูกรวมในหน้าคำอธิบายไฟล์ และถูกรวมในวิกิผู้รับบริการต่างถิ่นด้วย */',
 
 # File reversion
 'filerevert' => 'ย้อน $1',
@@ -2074,11 +2075,7 @@ $1',
 
 'enotif_mailer' => 'แจ้งการแก้ไขจาก {{SITENAME}}',
 'enotif_reset' => 'กำหนดทุกหน้าว่าผ่านตาแล้ว',
-'enotif_newpagetext' => 'นี่คือหน้าใหม่',
 'enotif_impersonal_salutation' => 'ผู้ใช้งาน {{SITENAME}}',
-'changed' => 'ถูกเปลี่ยนแปลง',
-'created' => 'ถูกสร้าง',
-'enotif_subject' => '{{SITENAME}} หน้า $PAGETITLE ได้ $CHANGEDORCREATED โดย $PAGEEDITOR',
 'enotif_lastvisited' => 'ดู $1 สำหรับการเปลี่ยนแปลงตั้งแต่ครั้งล่าสุดที่แวะมา',
 'enotif_lastdiff' => 'ดู $1 สำหรับดูการเปลี่ยนแปลง',
 'enotif_anon_editor' => 'ผู้ใช้นิรนาม $1',
@@ -2738,6 +2735,11 @@ $1',
 'vector.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ใช้สกินเวกเตอร์ */',
 'print.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ข้อมูลส่งออกเป็นสิ่งพิมพ์ */',
 'handheld.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่อุปกรณ์เคลื่อนที่ โดยขึ้นอยู่กับสกินที่ตั้งค่าไว้ใน $wgHandheldStyle */',
+'noscript.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ที่ปิดการใช้งานจาวาสคริปต์ */',
+'group-autoconfirmed.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ใช้ทั่วไปเท่านั้น */',
+'group-bot.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่บอตเท่านั้น */',
+'group-sysop.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ดูแลเท่านั้น */',
+'group-bureaucrat.css' => '/* สไตล์ชีตในหน้านี้จะส่งผลแก่ผู้ดูแลสิทธิแต่งตั้งเท่านั้น */',
 
 # Scripts
 'common.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ทุกคนในทุกหน้า */',
@@ -2750,6 +2752,10 @@ $1',
 'simple.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินซิมเปิล */',
 'modern.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินโมเดิร์น */',
 'vector.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ที่ใช้สกินเวกเตอร์ */',
+'group-autoconfirmed.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ใช้ทั่วไปเท่านั้น */',
+'group-bot.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่บอตเท่านั้น */',
+'group-sysop.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ดูแลเท่านั้น */',
+'group-bureaucrat.js' => '/* จาวาสคริปต์ใด ๆ ในหน้านี้จะถูกโหลดให้แก่ผู้ดูแลสิทธิแต่งตั้งเท่านั้น */',
 
 # Metadata
 'notacceptable' => 'เซิร์ฟเวอร์ของวิกิไม่สามารถให้ข้อมูลในรูปแบบที่ไคลเอนต์สามารถอ่านได้',
@@ -2856,6 +2862,10 @@ $1',
 'sp-newimages-showfrom' => 'แสดงภาพใหม่เริ่มต้นจาก $2, $1',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'seconds-abbrev' => '$1 วินาที',
+'minutes-abbrev' => '$1 นาที',
+'hours-abbrev' => '$1 ชั่วโมง',
+'days-abbrev' => '$1 วัน',
 'ago' => '$1 มาแล้ว',
 
 # Bad image list
@@ -2943,6 +2953,7 @@ $1',
 'exif-lightsource' => 'แสง',
 'exif-flash' => 'แฟลช',
 'exif-focallength' => 'ระยะโฟกัส',
+'exif-focallength-format' => '$1 มม.',
 'exif-subjectarea' => 'จุดวัตถุ',
 'exif-flashenergy' => 'พลังงานแฟลช',
 'exif-focalplanexresolution' => 'ความละเอียระนาบโฟกัส X',
@@ -3289,7 +3300,23 @@ $5
 'size-bytes' => '$1 ไบต์',
 'size-kilobytes' => '$1 กิโลไบต์',
 'size-megabytes' => '$1 เมกะไบต์',
-'size-gigabytes' => '$1 กิกะไบต์',
+'size-gigabytes' => '$1 จิกะไบต์',
+'size-terabytes' => '$1 เทระไบต์',
+'size-petabytes' => '$1 เพตะไบต์',
+'size-exabytes' => '$1 เอกซะไบต์',
+'size-zetabytes' => '$1 เซตตะไบต์',
+'size-yottabytes' => '$1 ยอตตะไบต์',
+
+# Bitrate units
+'bitrate-bits' => '$1 บิตต่อวินาที',
+'bitrate-kilobits' => '$1 กิโลบิตต่อวินาที',
+'bitrate-megabits' => '$1 เมกะบิตต่อวินาที',
+'bitrate-gigabits' => '$1 จิกะบิตต่อวินาที',
+'bitrate-terabits' => '$1 เทระบิตต่อวินาที',
+'bitrate-petabits' => '$1 เพตะบิตต่อวินาที',
+'bitrate-exabits' => '$1 เอกซะบิตต่อวินาที',
+'bitrate-zetabits' => '$1 เซตตะบิตต่อวินาที',
+'bitrate-yottabits' => '$1 ยอตตะบิตต่อวินาที',
 
 # Live preview
 'livepreview-loading' => 'กำลังโหลด…',
@@ -3362,6 +3389,8 @@ $5
 'version-software' => 'ซอฟต์แวร์ที่ติดตั้ง',
 'version-software-product' => 'ชื่อ',
 'version-software-version' => 'รุ่น',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath เส้นทางบทความ]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath เส้นทางสคริปต์]',
 
 # Special:FilePath
 'filepath' => 'พาธของไฟล์',
index 1ed97e9..a1aa29f 100644 (file)
@@ -171,8 +171,8 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
 'newwindow' => '(täze penjirede açylýar)',
 'cancel' => 'Goýbolsun et',
 'moredotdotdot' => 'Has köp...',
-'mypage' => 'Sahypam',
-'mytalk' => 'Pikir alyşma sahypam',
+'mypage' => 'Sahypa',
+'mytalk' => 'Pikir alyşma',
 'anontalk' => 'Bu IP-niň habarlaşyklary',
 'navigation' => 'Nawigasiýa',
 'and' => '&#32;we',
@@ -193,7 +193,7 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
 'vector-action-move' => 'Adyny üýtget',
 'vector-action-protect' => 'Goraga al',
 'vector-action-undelete' => 'Öçürmäni yzyna al',
-'vector-action-unprotect' => 'Goragy aýyr',
+'vector-action-unprotect' => 'Goragy üýtget',
 'vector-simplesearch-preference' => 'Giňeldilen gözleg tekliplerini aç (Diňe Vector bezegi üçin)',
 'vector-view-create' => 'Döret',
 'vector-view-edit' => 'Redaktirle',
@@ -204,6 +204,7 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
 'namespaces' => 'At giňişlikleri',
 'variants' => 'Wariantlar',
 
+'navigation-heading' => 'Nawigasiýa menýusy',
 'errorpagetitle' => 'Säwlik',
 'returnto' => '$1.',
 'tagline' => '{{SITENAME}} saýtyndan',
@@ -229,7 +230,7 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
 'protect' => 'Goraga al',
 'protect_change' => 'üýtget',
 'protectthispage' => 'Sahypany gorag astyna al',
-'unprotect' => 'Goragy aýyr',
+'unprotect' => 'Goragy üýtget',
 'unprotectthispage' => 'Sahypanyň goragyny aýyr',
 'newpage' => 'Täze sahypa',
 'talkpage' => 'Sahypany ara alyp maslahatlaş',
@@ -311,6 +312,8 @@ Bu sahypany ulanmak üçin MediaWikiniň $1 wersiýasy talap edilýär. [[Specia
 'toc' => 'Mazmuny',
 'showtoc' => 'görkez',
 'hidetoc' => 'gizle',
+'collapsible-collapse' => 'Ýygna',
+'collapsible-expand' => 'Giňelt',
 'thisisdeleted' => '$1 görmek ýa-da dikeltmek isleýärsiňizmi?',
 'viewdeleted' => '$1 gör?',
 'restorelink' => '{{PLURAL:$1|bir öçürilen özgerdişi|$1 öçürilen özgerdişi}}',
@@ -423,10 +426,7 @@ Görkezilen sebäp: ''$2''.",
 
 Indi anonim ýagdaýda {{SITENAME}} saýtyny ulanyp bilersiňiz, ýa-da şol bir ýa-da başga bir at bilen <span class='plainlinks'>[$1 sessiýany ýaňadan]</span> açyp bilersiňiz.
 Web brauzeriňiziň keşini arassalaýançaňyz käbir sahypalar sessiýaňyzyň açyk wagtkysy ýaly görünip biler.",
-'welcomecreation' => '== Hoş geldiňiz, $1! ==
-
-Hasabyňyz açyldy.
-[[Special:Preferences|{{SITENAME}} saýtyndaky ileri tutmalaryňyzy]] üýtgetmegi ýatdan çykarmaň.',
+'welcomeuser' => 'Hoş geldiňiz, $1!',
 'yourname' => 'Ulanyjy adyňyz:',
 'yourpassword' => 'Parolyňyz:',
 'yourpasswordagain' => 'Paroly gaýtadan ýaz:',
@@ -530,10 +530,19 @@ Parolyňyzy eýýäm şowlulyk bilen üýtgeden ýa-da täze wagtlaýyn parol ta
 'resetpass-temp-password' => 'Wagtlaýyn parol:',
 
 # Special:PasswordReset
+'passwordreset' => 'Paroly nol et',
+'passwordreset-legend' => 'Paroly nol et',
 'passwordreset-username' => 'Ulanyjy ady:',
+'passwordreset-domain' => 'Domen:',
+'passwordreset-emailelement' => 'Ulanyjy ady: $1
+Wagtlaýyn parol: $2',
 
 # Special:ChangeEmail
+'changeemail' => 'E-poçta adresini üýtget',
+'changeemail-oldemail' => 'Häzirki e-poçta adresi:',
+'changeemail-newemail' => 'Täze e-poçta adresi:',
 'changeemail-none' => '(hiç biri)',
+'changeemail-submit' => 'E-poçtany üýtget',
 'changeemail-cancel' => 'Goýbolsun et',
 
 # Edit page toolbar
@@ -627,7 +636,7 @@ Bu ady başga sahypalarda [[Special:Search/{{PAGENAME}}|gözläp bilersiňiz]],
 ýa-da bu sahypany [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktirläp bilersiňiz]</span>.',
 'noarticletext-nopermission' => 'Häzirki wagtda bu sahypada tekst ýok.
 Bu sahypa adyny [[Special:Search/{{PAGENAME}}|başga sahypalarda gözläp]]
-ýa-da <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} degişli gündeliklerde gözleg geçirip bilersiňiz].</span>',
+ýa-da <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} degişli gündeliklerde gözleg geçirip bilersiňiz]</span>, ýöne bu sahypany döretmäge rugsadyňyz ýok.',
 'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" ulanyjy hasaby hasaba alynmandyr.
 Bu sahypany döretmek/redaktirlemek isleýän bolsaňyz, onda esewan boluň.',
 'userpage-userdoesnotexist-view' => '"$1" ulanyjy hasaby hasaba alynmandyr.',
@@ -664,6 +673,7 @@ Eger şonda-da bolmasa, onda [[Special:UserLogout|sessiýany ýapyň-da]] gaýta
 Sahypanyň tekstine zeper ýetmeginiň öňüni almak maksady bilen özgerdişiňiz ret edildi.
 Bu ýagdaý kämahal içi ýalňyşly anonim web proksileri ulanylanda ýüze çykýar.",
 'editing' => '$1 sahypasyny redaktirleýärsiňiz',
+'creating' => '"$1" sahypasy döredilýär',
 'editingsection' => '"$1" sahypasynda bölüm redaktirleýärsiňiz',
 'editingcomment' => '$1 redaktirlenýär (täze bölüm)',
 'editconflict' => 'Özgerdiş çaknyşmasy: $1',
@@ -731,6 +741,11 @@ Düşündiriş berilmedi.',
 'edit-already-exists' => 'Täze sahypa döredip bolanok.
 Ol eýýäm bar.',
 
+# Content models
+'content-model-wikitext' => 'wikitekst',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
+
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Duýduryş:''' Bu sahypada resurs talap ediji funksiýalara çakdanaşa köp çagyryş bar.
 
@@ -793,7 +808,7 @@ Wikiden öçürilen ýa-da adynyň üýtgedilen bolmagy ahmal.
 Baglanyşykly täze sahypalar üçin [[Special:Search|wikide gözleg geçirip]] görüň.',
 
 # Revision deletion
-'rev-deleted-comment' => '(teswir aýyryldy)',
+'rev-deleted-comment' => '(özgerdişiň gysgaça düşündirişi aýryldy)',
 'rev-deleted-user' => '(ulanyjy ady aýyryldy)',
 'rev-deleted-event' => '(gündelik işi aýyryldy)',
 'rev-deleted-user-contribs' => '[ulanyjy ady ýa-da IP adresi aýrylypdyr - özgerdiş goşantlardan gizlenildi]',
@@ -924,7 +939,7 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
 'mergelogpagetext' => 'Aşakdaky sanaw sahypalaryň geçmişleriniň iň soňky birleşdirmelerini görkezýär.',
 
 # Diffs
-'history-title' => '"$1" sahypasynyň geçmişi',
+'history-title' => '"$1" — sahypa geçmişi',
 'difference-multipage' => '(Sahypalaryň arasyndaky tapawut)',
 'lineno' => 'Setir $1:',
 'compareselectedversions' => 'Saýlanan wersiýalary deňeşdir',
@@ -1008,7 +1023,7 @@ Emma olaryň {{SITENAME}} indeksleriniň möwriti geçen bolmagy mümkindir.',
 
 # Preferences page
 'preferences' => 'Ileri tutmalar',
-'mypreferences' => 'Ileri tutmalarym',
+'mypreferences' => 'Ileri tutmalar',
 'prefs-edits' => 'Özgerdiş sany:',
 'prefsnologin' => 'Sessiýa açmansyňyz',
 'prefsnologintext' => 'Ulanyjy ileri tutmalaryny üýtgetmek üçin <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} sessiýa açmagyňyz gerek]</span>.',
@@ -1023,12 +1038,13 @@ Emma olaryň {{SITENAME}} indeksleriniň möwriti geçen bolmagy mümkindir.',
 'prefs-rc' => 'Soňky üýtgeşmeler',
 'prefs-watchlist' => 'Gözegçilik sanawy',
 'prefs-watchlist-days' => 'Gözegçilik sanawynda görkeziljek gün sany:',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Mmaksimum $1 {{PLURAL:$1|gün}}',
 'prefs-watchlist-edits' => 'Giňeldilen gözegçilik sanawynda görkeziljek üýtgeşmeleriň maksimum sany:',
 'prefs-watchlist-edits-max' => 'Maksimum san: 1000',
 'prefs-watchlist-token' => 'Gözegçilik sanawynyň alamaty:',
 'prefs-misc' => 'Başga',
 'prefs-resetpass' => 'Paroly üýtget',
+'prefs-changeemail' => 'E-poçta adresini üýtget',
 'prefs-email' => 'E-poçta opsiýalary',
 'prefs-rendering' => 'Daşky görnüş',
 'saveprefs' => 'Ýazdyr',
@@ -1068,7 +1084,7 @@ Gabat gelşine görä döredilen şu bahany ulanyp bilersiňiz: $1',
 'timezoneregion-indian' => 'Hindi okeany',
 'timezoneregion-pacific' => 'Ýuwaş okean',
 'allowemail' => 'Başga ulanyjylar maňa e-poçta iberip bilsin',
-'prefs-searchoptions' => 'Gözleg opsiýalary',
+'prefs-searchoptions' => 'Gözleg',
 'prefs-namespaces' => 'At giňişlikleri',
 'defaultns' => 'Bolmasa şu at giňişliklerinde gözleg geçiriň:',
 'default' => 'gaýybana',
@@ -1148,9 +1164,9 @@ $1 {{PLURAL:$1|simwoldan|simwoldan}} köp bolmaly däl.',
 'group-suppress' => 'Esewançylar',
 'group-all' => '(ählisi)',
 
-'group-user-member' => 'Ulanyjy',
+'group-user-member' => '{{GENDER:$1|ulanyjy}}',
 'group-autoconfirmed-member' => 'Awtomatik tassyklanan ulanyjy',
-'group-bot-member' => 'Bot',
+'group-bot-member' => '{{GENDER:$1|bot}}',
 'group-sysop-member' => 'Administrator',
 'group-bureaucrat-member' => 'Býurokrat',
 'group-suppress-member' => 'Esewançy',
@@ -1828,7 +1844,7 @@ Goldanylýan protokollar: <code>$1</code>',
 
 # Watchlist
 'watchlist' => 'Gözegçilik sanawym',
-'mywatchlist' => 'Gözegçilik sanawym',
+'mywatchlist' => 'Gözegçilik sanawy',
 'watchlistfor2' => '$1 üçin  $2',
 'nowatchlist' => 'Gözegçilik sanawyňyzda hiçhili sahypa ýok.',
 'watchlistanontext' => 'Gözegçilik sanawyňyzdaky sahypalary görmek ýa-da redaktirlemek üçin $1.',
@@ -1864,11 +1880,7 @@ Aňsatlyk bilen saýlap almak üçin bolsa, [[Special:RecentChanges|soňky üýt
 
 'enotif_mailer' => '{{SITENAME}} Poçta Gullugy',
 'enotif_reset' => 'Ähli sahypalary barylyp görülen diýip belle',
-'enotif_newpagetext' => 'Bu täze sahypa.',
 'enotif_impersonal_salutation' => '{{SITENAME}} ulanyjysy',
-'changed' => 'üýtgedildi',
-'created' => 'döredildi',
-'enotif_subject' => '{{SITENAME}} sahypasy $PAGETITLE, $PAGEEDITOR tarapyndan $CHANGEDORCREATED',
 'enotif_lastvisited' => 'Iň soňky gezek baryp göreliňiz bäri bolan ähli üýtgeşmeleri görmek üçin serediň: $1',
 'enotif_lastdiff' => 'Bu üýtgeşmäni görmek üçin serediň: $1',
 'enotif_anon_editor' => 'anonim ulanyjy $1',
@@ -2081,7 +2093,7 @@ $1',
 # Contributions
 'contributions' => 'Ulanyjynyň goşantlary',
 'contributions-title' => '$1 üçin ulanyjy goşantlary',
-'mycontris' => 'Goşantlarym',
+'mycontris' => 'Goşantlar',
 'contribsub2' => '$1 ($2)',
 'nocontribs' => 'Bu kriteriýlere gabat gelýän üýtgeşme ýok.',
 'uctop' => '(iň soňky)',
@@ -2122,7 +2134,7 @@ Salgylanmak üçin iň soňky blokirleme gündeligi ýazgysy aşakda berilýär:
 'whatlinkshere-hideredirs' => 'gönükdirmeleri $1',
 'whatlinkshere-hidetrans' => 'Atanaklaýyn girizmeleri $1',
 'whatlinkshere-hidelinks' => 'çykgytlary $1',
-'whatlinkshere-hideimages' => 'surat çykgytlaryny $1',
+'whatlinkshere-hideimages' => 'Faýl çykgytlaryny $1',
 'whatlinkshere-filters' => 'Filtrler',
 
 # Block/unblock
index 2d932e3..7f4e780 100644 (file)
@@ -567,9 +567,6 @@ Ang tagapangasiwang nagkandado nito ay nag-alok ng ganitong paliwanag: "$3".',
 
 Maaari kang tumuloy sa paggamit ng {{SITENAME}} nang hindi nakikilala (anonimo), o maaaring kang <span class='plainlinks'>[$1 lumagda/tumala muli]</span> bilang kapareho o ibang tagagamit.
 Tandaan na may ilang pahinang maaaring magpatuloy na nagpapakitang parang nakalagda ka pa rin, hanggang sa linisin mo ang iyong baunang pambasa-basa (''browser cache'').",
-'welcomecreation' => '== Maligayang pagdating, $1! ==
-Nilikha na ang iyong kuwenta.
-Huwag kalimutang baguhin ang iyong [[Special:Preferences|mga kagustuhan sa {{SITENAME}}]].',
 'yourname' => 'Bansag:',
 'yourpassword' => 'Hudyat:',
 'yourpasswordagain' => 'Hudyat mo uli:',
@@ -2222,11 +2219,7 @@ Makikita doon ang lahat ng mga susunod na pagbabago sa pahinang ito pati na ang
 
 'enotif_mailer' => 'Tagapagpadala ng mga Pahayag ng {{SITENAME}}',
 'enotif_reset' => 'Tatakan ang lahat ng pahina bilang nadalaw na',
-'enotif_newpagetext' => 'Isa itong bagong pahina.',
 'enotif_impersonal_salutation' => 'Tagagamit ng {{SITENAME}}',
-'changed' => 'binago',
-'created' => 'nilikha',
-'enotif_subject' => 'Ang pahinang $PAGETITLE sa {{SITENAME}} ay $CHANGEDORCREATED ni $PAGEEDITOR',
 'enotif_lastvisited' => 'Tingnan ang $1 para sa lahat ng mga pagbabago magmula noong huling pagdalaw mo.',
 'enotif_lastdiff' => 'Tingnan ang $1 para makita ang pagbabagong ito.',
 'enotif_anon_editor' => 'hindi nakikilalang tagagamit $1',
@@ -4041,9 +4034,9 @@ Ipinapakita ang mga larawan sa buong kalinawan, tuwirang sinisimulan ang ibang u
 'logentry-move-move_redir-noredirect' => 'Inilipat ni $1 ang pahinang $3 papunta sa $4 sa ibabaw ng isang pagpapunta sa iba na hindi nag-iiwan ng isang pagpapapunta sa iba',
 'logentry-patrol-patrol' => 'Minarkahan ni $1 ang rebisyong $4 ng pahinang $3 bilang napatrolya na',
 'logentry-patrol-patrol-auto' => 'Kusang minarkahan ni $1 ang rebisyong $4 ng pahinang $3 bilang napatrolya na',
-'logentry-newusers-newusers' => 'Lumikha si $1 ng isang akawnt ng tagagamit',
-'logentry-newusers-create' => 'Lumikha si $1 ng isang akawnt ng tagagamit',
-'logentry-newusers-create2' => 'Lumikha si $1 ng isang akawnt ng tagagamit na $3',
+'logentry-newusers-newusers' => 'Nilikha ang kuwenta ng tagagamit na $1',
+'logentry-newusers-create' => 'Lumikha si $1 ng isang kuwenta ng tagagamit',
+'logentry-newusers-create2' => 'Lumikha si $1 ng isang kuwenta ng tagagamit na $3',
 'logentry-newusers-autocreate' => 'Kusang nalikha ang akawnt na $1',
 'newuserlog-byemail' => 'Ipinadala ang hudyat sa pamamagitan ng e-liham',
 
index c405f16..c56158e 100644 (file)
@@ -253,7 +253,7 @@ $messages = array(
 'cancel' => 'Ләғв кардеј',
 'moredotdotdot' => 'Веј...',
 'mypage' => 'Чымы сәһифә',
-'mytalk' => 'ЧÑ\8bмÑ\8b Ð¼Ñ\8bзокиÑ\80Ó\99 Ñ\81Ó\99һиÑ\84Ó\99',
+'mytalk' => 'Ð\9cÑ\8bзокиÑ\80он',
 'anontalk' => 'Бо ын IP-унвони мызокирә',
 'navigation' => 'Навигасијә',
 'and' => '&#32;ијән',
@@ -486,6 +486,7 @@ $messages = array(
 'savearticle' => 'Сәһифә огәтеј',
 'preview' => 'Сыфтәнә нишо дој',
 'showpreview' => 'Сыфтәнә нишо дој',
+'showlivepreview' => 'Товинә сыфтәнә нишо дој',
 'showdiff' => 'Дәғандә быә дәгишон',
 'anoneditwarning' => "'''Дығғәт.''' Шымә ыштәни едәштәнијоне системәдә.
 Шымә IP-унвон бә ым сәһифә дәгишон тарых ғејд бәбе.",
@@ -777,7 +778,7 @@ $messages = array(
 
 # Watchlist
 'watchlist' => 'Чымы ноғо доә сијоһи',
-'mywatchlist' => 'Чымы ноғо доә сијоһи',
+'mywatchlist' => 'Чәшәвәно кардә сијоһи',
 'watchlistfor2' => 'Бо $1 $2',
 'watch' => 'Думотоно егыниеј',
 'unwatch' => 'Думотоно ныегыниеј',
@@ -814,7 +815,7 @@ $messages = array(
 # Contributions
 'contributions' => 'Иштирокәкә гәнҹ',
 'contributions-title' => 'Иштирокәкә гәнҹ $1',
-'mycontris' => 'ЧÑ\8bмÑ\8b Ð³әнҹ',
+'mycontris' => 'Ð\93әнҹ',
 'contribsub2' => 'Гәнҹ $1 ($2)',
 'uctop' => '(охонәни)',
 'month' => 'Че мангику (һәнијән рә):',
@@ -845,7 +846,7 @@ $messages = array(
 'whatlinkshere-hideredirs' => '$1 бә тожә унвон вығандеј',
 'whatlinkshere-hidetrans' => '$1 әловон',
 'whatlinkshere-hidelinks' => '$1 сәбонон',
-'whatlinkshere-hideimages' => '$1 Ñ\81Ó\99бонон Ð±Ð¾ Ñ\88икилон',
+'whatlinkshere-hideimages' => '$1 Ñ\84аÑ\98линÓ\99 Ñ\81Ó\99бонон',
 'whatlinkshere-filters' => 'Филтрон',
 
 # Block/unblock
index 69778c2..471d70e 100644 (file)
@@ -396,7 +396,7 @@ $messages = array(
 
 'underline-always' => 'Daima',
 'underline-never' => 'Asla',
-'underline-default' => 'Tarayıcı varsayılanı',
+'underline-default' => 'Tema veya Tarayıcı varsayılanı',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Düzenleme alanının yazı tipi:',
@@ -514,6 +514,7 @@ $messages = array(
 'namespaces' => 'Ad alanları',
 'variants' => 'Türevler',
 
+'navigation-heading' => 'Navigasyon menüsü',
 'errorpagetitle' => 'Hata',
 'returnto' => '$1 sayfasına geri dön.',
 'tagline' => '{{SITENAME}} sitesinden',
@@ -750,10 +751,6 @@ Verilen sebep: ''$2''.",
 
 Şimdi anonim olarak {{SITENAME}} sitesini kullanmaya devam edebilirsiniz ya da aynı kullanıcı adıyla ya da ister başka bir kullanıcı adıyla <span class='plainlinks'>[$1 yeniden oturum açabilirsiniz]</span>.
 Tarayıcınızın önbelleğini temizleyene kadar bazı sayfalar sanki hâlâ oturumunuz açıkmış gibi görünebilir.",
-'welcomecreation' => '== Hoş geldin, $1! ==
-
-Hesabınız açıldı.
-[[Special:Preferences|{{SITENAME}} tercihlerinizi]] değiştirmeyi unutmayın.',
 'yourname' => 'Kullanıcı adı:',
 'yourpassword' => 'Parola:',
 'yourpasswordagain' => 'Parolayı yeniden yaz:',
@@ -2326,11 +2323,7 @@ Sayfayı izleme listenizden çıkarmak istediğinizde "sayfayı izlemeyi durdur"
 
 'enotif_mailer' => '{{SITENAME}} Bildirim Postası',
 'enotif_reset' => 'Tüm sayfaları ziyaret edilmiş olarak işaretle',
-'enotif_newpagetext' => 'Yeni bir sayfa.',
 'enotif_impersonal_salutation' => '{{SITENAME}} kullanıcı',
-'changed' => 'değiştirildi',
-'created' => 'oluşturuldu',
-'enotif_subject' => '{{SITENAME}} sayfası $PAGETITLE, $PAGEEDITOR tarafından $CHANGEDORCREATED',
 'enotif_lastvisited' => "Son ziyaretinizden bu yana olan tüm değişiklikleri görmek için $1'e bakın.",
 'enotif_lastdiff' => 'Bu değişikliği görmek için, $1 sayfasına bakınız.',
 'enotif_anon_editor' => 'anonim kullanıcı $1',
@@ -2582,7 +2575,7 @@ Son engelleme günlüğü girdisi kaynak amacıyla aşağıda verilmiştir:',
 'whatlinkshere-hideredirs' => 'Yönlendirmeleri $1',
 'whatlinkshere-hidetrans' => 'Dönüştürmeleri $1',
 'whatlinkshere-hidelinks' => 'Bağlantıları $1',
-'whatlinkshere-hideimages' => 'Resim bağlantılarını $1',
+'whatlinkshere-hideimages' => 'Dosya bağlantılarını $1',
 'whatlinkshere-filters' => 'Süzgeçler',
 
 # Block/unblock
@@ -3140,6 +3133,7 @@ Bunu çalıştırmak, sisteminizi tehlikeye atabilir.",
 'hours' => '{{PLURAL:$1|$1 saat|$1 saat}}',
 'days' => '{{PLURAL:$1|$1 gün|$1 gün}}',
 'ago' => '$1 önce',
+'just-now' => 'Hemen şimdi',
 
 # Bad image list
 'bad_image_list' => 'Biçim aşağıdaki gibidir:
index 8c36d23..fcf2b51 100644 (file)
@@ -345,7 +345,7 @@ $messages = array(
 'cancel' => 'Баш тарту',
 'moredotdotdot' => 'Дәвамы…',
 'mypage' => 'Шәхси битем',
-'mytalk' => 'Бәхәсем',
+'mytalk' => 'Бәхәс',
 'anontalk' => 'Бу IP адресы өчен бәхәс бите',
 'navigation' => 'Күчү',
 'and' => '&#32;һәм',
@@ -607,9 +607,6 @@ $2',
 
 Сез {{SITENAME}} проектында аноним рәвештә кала яисә шул ук яки башка исем белән яңадан <span class='plainlinks'>[$1 керә]</span> аласыз.
 Кайбер битләр Сез кергән кебек күрсәтелергә мөмкин. Моны бетерү өчен браузер кэшын чистартыгыз.",
-'welcomecreation' => '== Рәхим итегез, $1! ==
-Сез теркәлдегез.
-Сайтның шәхси [[Special:Preferences|көйләнмәләрен]] карарга онытмагыз.',
 'yourname' => 'Кулланучы исеме:',
 'yourpassword' => 'Серсүз:',
 'yourpasswordagain' => 'Серсүзне кабат кертү:',
@@ -850,8 +847,8 @@ $2
 <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={{FULLPAGENAMEE}}}} көндәлекләрдәге язмаларны] таба аласыз.</span>',
+Сез [[Special:Search/{{PAGENAME}}|бу исем кергән башка мәкаләләрне]] башка битләрдә,
+яисә <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} көндәлекләрдәге язмаларны] таба аласыз.</span> Сезнең бу битне ясарга хакыгыз юк.',
 'userpage-userdoesnotexist' => '«<nowiki>$1</nowiki>» исемле хисап язмасы юк. Сез чынлап та бу битне ясарга яисә үзгәртергә телисезме?',
 'userpage-userdoesnotexist-view' => '"$1" исемле хисап язмасы юк.',
 'blocked-notice-logextract' => 'Бу кулланучы хәзергә тыелды.
@@ -1180,7 +1177,7 @@ $1",
 
 # Preferences page
 'preferences' => 'Көйләнмәләр',
-'mypreferences' => 'Көйләнмәләрем',
+'mypreferences' => 'Көйләнмәләр',
 'prefs-edits' => 'Үзгәртүләр исәбе:',
 'prefsnologin' => 'Кермәгәнсез',
 'prefsnologintext' => 'Кулланучы көйләнмәләрене үзгәртү өчен, сез <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} керергә]</span> тиешсез.',
@@ -1742,7 +1739,7 @@ PICT # төрле
 
 # Watchlist
 'watchlist' => 'Күзәтү исемлегем',
-'mywatchlist' => 'Күзәтү исемлегем',
+'mywatchlist' => 'Күзәтү исемлеге',
 'watchlistfor2' => '$1 $2 өчен',
 'nowatchlist' => 'Күзәтү исемлегегездә битләр юк.',
 'watchnologin' => 'Кермәдегез',
@@ -1763,11 +1760,7 @@ PICT # төрле
 'watching' => 'Күзәтү исемлегемә өстәүе…',
 'unwatching' => 'Күзәтү исемлегемнән чыгаруы…',
 
-'enotif_newpagetext' => 'Бу яңа бит.',
 'enotif_impersonal_salutation' => '{{SITENAME}} кулланучы',
-'changed' => 'үзгәртелде',
-'created' => 'төзергән',
-'enotif_subject' => '{{SITENAME}} проектының $PAGETITLE бите $PAGEEDITOR тарафыннан $CHANGEDORCREATED',
 'enotif_lastvisited' => 'Соңгы керүегездән соң булган барлык үзгәртүләрне күрер өчен, бу сылтама аша узыгыз: $1',
 'enotif_body' => 'Хөрмәтле $WATCHINGUSERNAME,
 
@@ -1914,7 +1907,7 @@ $1',
 # Contributions
 'contributions' => 'Кулланучының кертеме',
 'contributions-title' => '$1 исемле кулланучының кертеме',
-'mycontris' => 'Кертемем',
+'mycontris' => 'Кертем',
 'contribsub2' => '$1 ($2) өчен',
 'uctop' => '(ахыргы)',
 'month' => 'Айдан башлап (һәм элегрәк):',
@@ -1946,7 +1939,7 @@ $1',
 'whatlinkshere-hideredirs' => 'юнәлтүләрне $1',
 'whatlinkshere-hidetrans' => 'кертүләрне $1',
 'whatlinkshere-hidelinks' => 'сылтамаларны $1',
-'whatlinkshere-hideimages' => 'рәсем сылтамаларын $1',
+'whatlinkshere-hideimages' => '$1 файл сылтамалары',
 'whatlinkshere-filters' => 'Фильтрлар',
 
 # Block/unblock
index 5967e94..dbb8b1f 100644 (file)
@@ -478,9 +478,6 @@ Ul kürsätkän säbäp: ''$2''.",
 
 Sez {{SITENAME}} proyektında anonim räweştä qala yäisä şul uq yäki başqa isem belän yañadan <span class='plainlinks'>[$1 kerä]</span> alasız.
 Qayber bitlär Sez kergän kebek kürsätelergä mömkin. Monı beterü öçen brauzer keşın çistartığız.",
-'welcomecreation' => '== Räxim itegez, $1! ==
-Sez terkäldegez.
-Saytnıñ şäxsi [[Special:Preferences|köylänmälären]] qararğa onıtmağız.',
 'yourname' => 'Qullanuçı iseme:',
 'yourpassword' => 'Sersüz:',
 'yourpasswordagain' => 'Sersüzne qabat kertü:',
@@ -1514,11 +1511,7 @@ Bu bittä häm anıñ bäxäslegendä barlıq bulaçaq üzgärtülär şunda kü
 'watching' => 'Küzätü isemlegemä östäwe…',
 'unwatching' => 'Küzätü isemlegemnän çığaruı…',
 
-'enotif_newpagetext' => 'Bu yaña bit.',
 'enotif_impersonal_salutation' => '{{SITENAME}} qullanuçı',
-'changed' => 'üzgärtelde',
-'created' => 'tözergän',
-'enotif_subject' => '{{SITENAME}} proyektınıñ $PAGETITLE bite $PAGEEDITOR tarafınnan $CHANGEDORCREATED',
 'enotif_lastvisited' => 'Soñğı kerüegezdän soñ bulğan barlıq üzgärtülärne kürer öçen, bu sıltama aşa uzığız: $1',
 'enotif_body' => 'Xörmätle $WATCHINGUSERNAME,
 
index 9866885..7ebbfb3 100644 (file)
@@ -148,7 +148,10 @@ $messages = array(
 'category-empty' => "''Амгы бо бөлүкте медиа база арыннар чок.''",
 'hidden-categories' => '{{PLURAL:$1|Чажыт бөлүк|Чажыт бөлүктер}}',
 'hidden-category-category' => 'Чажыт бөлүктер',
+'category-subcat-count' => '{{PLURAL:$2|Бо бөлүк чүгле дараазында адыр-бөлүклүг.|Бо бөлүктүң шупту $2 адыр-бөлүүнүң аразындан дараазында $1 адыр-бөлүктү көргүскен.}}',
 'category-subcat-count-limited' => 'Бо бөлүк {{PLURAL:$1|бир|$1}} адаккы бөлүктүү.',
+'category-article-count' => '{{PLURAL:$2|Бо бөлүк чүгле дараазында арыннарлыг.|Бо бөлүктүң шупту $2 арыннарының аразындан дараазында $1 арынын көргүскен.}}',
+'category-file-count' => '{{PLURAL:$2|Бо бөлүк чүгле чаңгыс файлдыг.|Бо бөлүктүң ниити $2 файлының $1 файлын көргүскен.}}',
 'listingcontinuesabbrev' => '(уланчы)',
 'noindex-category' => 'Индекстелбес арынар',
 'broken-file-category' => 'Ажылдавайн турар файл-шөлүлгелиг арыннар',
@@ -328,15 +331,14 @@ $messages = array(
 'internalerror' => 'Иштики алдаг',
 'internalerror_info' => 'Иштики алдаг: $1',
 'badtitle' => 'Багай ат',
+'badtitletext' => 'Негеттинип турар арын ады меге, куруг, чок болза дылдар аразында азы интервики ады шын эвес.
+Адында таарышпас демдектер бары чадапчок.',
 'viewsource' => 'Дөзүн көөрү',
 'actionthrottled' => 'Шеглээн дүрген',
 'sqlhidden' => '(SQL айтырыгны чажырган)',
 'exception-nologin' => 'Кирбес',
 
 # Login and logout pages
-'welcomecreation' => '== Кирип моорлаңар, $1! ==
-Силер бүрүткел бижик has been created.
-Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'yourname' => 'Aжыглакчының ады',
 'yourpassword' => 'Чажыт сөс',
 'yourpasswordagain' => 'Чажыт сөзүңерни катап бижиңер:',
@@ -421,6 +423,7 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'image_tip' => 'Киир туткан файл',
 'media_sample' => 'Чижек.ogg',
 'media_tip' => 'Файлдың холбаазы',
+'sig_tip' => 'Шак-биле хол үжүңер',
 'hr_tip' => 'Доора шугум (көвей ажыглаваңар)',
 
 # Edit pages
@@ -432,6 +435,8 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'preview' => 'Чижеглей көөрү',
 'showpreview' => 'Чижеглей көөрү',
 'showdiff' => 'Өскерлиишкиннерни көргүзери',
+'anoneditwarning' => "'''Кичээңгейлиг!''' Силер сайтче авторжуттунмаан силер.
+Бо арынның өскертилге төөгүзүнче Силерниң IP-адрезиңер бижитинип каар.",
 'missingcommenttext' => 'Тайылбырни адаанда чогаадыңар.',
 'summary-preview' => 'Түңнелдү чижеглей көөрү:',
 'subject-preview' => 'Кол сөс чижеглей көөрү:',
@@ -457,6 +462,7 @@ Please check if you want to create/edit this page.',
 'templatesused' => 'Бо арында {{PLURAL:$1|Майык|Майыктар}} ажыглаттырган:',
 'template-protected' => '(камгалаан)',
 'template-semiprotected' => '(четпес камгалаан)',
+'hiddencategories' => 'Бо арын {{PLURAL:$1|$1 чажыт бөлүкке}} хамааржыр:',
 'permissionserrorstext-withaction' => "Мында «'''$2'''» силерниң эргеңер чок, {{PLURAL:$1|чылдагааны|чылдагааннары}}:",
 'moveddeleted-notice' => 'Бо арын ап каавыткан.
 Адаанда ап каавыткан биле өскээр адаан бижиктер шынзылгазын көргүскен.',
@@ -465,6 +471,8 @@ Please check if you want to create/edit this page.',
 'post-expand-template-inclusion-warning' => 'Сагындырыг: Кошкан майыктарның ниити хемчээли дендии улуг.
 Чамдык майыктар коштунмаан боор.',
 'post-expand-template-inclusion-category' => 'Кожар майыктарга чөшпээрээн хемчээлин ашкан арыннар',
+'post-expand-template-argument-warning' => "'''Кичээнгейлиг:''' бо арында тоң дора дээрге (по крайней мере) чаңгыс майыктыг, а ооң аргументизи эмин эрттир улуг калбаяр хемчээлдиг.
+Ындыг чергелиг аргументилерни эрттирип каан.",
 'post-expand-template-argument-category' => "Аргументилери салдынмаан майыктарлыг '''арыннар'''",
 
 # History pages
@@ -557,6 +565,7 @@ Please check if you want to create/edit this page.',
 'searcheverything-enable' => 'Шупту аттар делгемнеринден дилээри',
 'searchrelated' => 'холбаалыг',
 'searchall' => 'шупту',
+'showingresultsheader' => "«'''$4'''» дилээниниң {{PLURAL:$5|'''$3''' одуругдан '''$1''' түңнели|'''$3''' одуругдан '''$1—$2''' түңнелдери}}",
 'search-nonefound' => 'Айыткан негелдениң түңнели чок',
 'powersearch' => 'Advanced search',
 'powersearch-ns' => 'Аттар делгемнеринден дилээри:',
@@ -615,6 +624,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'gender-female' => 'Кыс',
 'email' => 'Э-чагаа',
 'prefs-help-email' => 'Э-шуудаң адрезин айтыры албан эвес, ынчалза-даа, уруңуңар (парольуңар) чиде бээрге, ол херек апаар.',
+'prefs-help-email-others' => 'Ол харылзаа медээлели база өске киржикчилерге хуу азы чугаалажылга арныңарга э-шуудаңыңар (e-mail) таварыштыр Силерниң-биле харылзажырынга ажыктыг. Ооң кадында Силерниң э-шуудаң адрезиңер кымга-даа көзүлбес.',
 'prefs-info' => 'Кол медээлер',
 'prefs-signature' => 'Хол үжүү',
 'prefs-diffs' => 'Ылгалдар',
@@ -709,6 +719,9 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'recentchangeslinked' => 'Хамааржыр өскерлиишкиннер',
 'recentchangeslinked-toolbox' => 'Хамааржыр өскерлиишкиннер',
 'recentchangeslinked-title' => '«$1» деп арынга хамаарыштырган өскерлиишкиннер',
+'recentchangeslinked-noresult' => 'Холбаштырган арыннарда айыткан үе иштинде кандыг-даа өскертилге турбаан.',
+'recentchangeslinked-summary' => "Айыткан арынның (азы айыткан бөлүкке хамаарышкан) шөлүлүглериниң чедер арыннарнының чаа өскерилгер даңзызы.
+[[Special:Watchlist|Силерниң хайгаарал даңзызынче]] кирип турар арыннарны '''ылгап каан'''.",
 'recentchangeslinked-page' => 'Арынның ады:',
 'recentchangeslinked-to' => 'Айыткан арынче шөлүп турар арыннарга өскерилгелерни көргүзер',
 
@@ -749,6 +762,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 # File description page
 'file-anchor-link' => 'Файл',
 'filehist' => 'Файлдың төөгүзү',
+'filehist-help' => 'Ол үеде файлдың көстүрүн көөрде, дата/үеже базыптыңар.',
 'filehist-deleteall' => 'шуптуну ырадыры',
 'filehist-deleteone' => 'ырадыры',
 'filehist-revert' => 'эгидип тургузары',
@@ -761,7 +775,10 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'filehist-filesize' => 'Файл хемчээли',
 'filehist-comment' => 'Тайылбыр',
 'imagelinks' => 'Файлдың ажыглаашкыны',
+'linkstoimage' => 'Бердинген файлче дараазында {{PLURAL:$1|арын шөлүдүп тур|$1 арын шөлүдүп тур}}:',
 'nolinkstoimage' => 'Бердинген файлче шөлүп турар арыннар чок.',
+'sharedupload-desc-here' => 'Моон $1 алган файл өске төлевилелдерге ажыглаттынып болур.
+Ооң [$2 допчу тайылбыр арынындан] медеглели адаанда бердинген.',
 
 # File reversion
 'filerevert' => '$1 эгидип тургузары',
@@ -917,9 +934,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'watching' => 'Хайгаарап турар...',
 'unwatching' => 'Хайгааравайн турар...',
 
-'enotif_newpagetext' => 'Бо чаа арын-дыр.',
 'enotif_impersonal_salutation' => '{{grammar:genitive|{{SITENAME}}}} ажыглакчызы',
-'changed' => 'өскертти',
 'enotif_anon_editor' => 'ат эвес ажыглакчы $1',
 
 # Delete
@@ -963,6 +978,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 
 # Namespace form on various pages
 'namespace' => 'Аттар делгеми:',
+'invert' => 'Шилээнин аңдарар. (Обратить выбранное)',
 'blanknamespace' => '(Кол)',
 
 # Contributions
@@ -1074,6 +1090,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'tooltip-pt-userpage' => 'Силерниң ажыглакчы арыныңнар',
 'tooltip-pt-mytalk' => 'Силерниң чугаалажыр арыныңар',
 'tooltip-pt-preferences' => 'Силерниң шилилгеңер',
+'tooltip-pt-watchlist' => 'Карактап (хынап) турар өскертилгелерге хамааржыр арыннарның даңзызы',
 'tooltip-pt-mycontris' => 'Силерниң салыышкыннарыңарның даңзызы',
 'tooltip-pt-login' => 'Маңаа системаже киир бүрүткенип болур, ынчалза-даа ол албан эвес.',
 'tooltip-pt-logout' => 'Үнери',
@@ -1089,6 +1106,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'tooltip-ca-watch' => 'Силерниң хайгаарал даңзызынга бо арынны немерелээри',
 'tooltip-ca-unwatch' => 'Силерниң хайгаарал даңзызындан бо арынны ырадыры',
 'tooltip-search' => '{{grammar:locative|{{SITENAME}}}} дилээри',
+'tooltip-search-go' => 'Шак ындыг аттыг арынче щилчиир',
 'tooltip-search-fulltext' => 'Бо бижике арыннардан дилээри',
 'tooltip-p-logo' => 'Кол Арын',
 'tooltip-n-mainpage' => 'Кол Арынны баары',
@@ -1120,9 +1138,11 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'tooltip-minoredit' => 'Бо өскертилгени "биче" деп демдеглээр',
 'tooltip-save' => 'Силерниң өскерлиишкиннериңерни шыгжаары',
 'tooltip-preview' => 'Шыгжаар мурнунда силерниң өскерлиишкиннерин чижеглеп көрем!',
+'tooltip-diff' => 'Бо сөзүглелге хамаарыштыр кандыг өскертилгелерни кылган Силер - ону көргүзер.',
 'tooltip-compareselectedversions' => 'Бо арынның шилиттинген ийи хевиринниң ылгалын көөр.',
 'tooltip-watch' => 'Силерниң хайгаарал даңзызынга бо арынны немерелээри',
 'tooltip-rollback' => 'Сөөлгү киржикчиниң өскерилгелерин чаңгыс баскаш, ойталаар',
+'tooltip-undo' => 'Киирген эдигни казааш, ойталалдың чылдагаанын айтыр аргалыг мурнай көргүзүүн көргүзер.',
 'tooltip-summary' => 'Кысказы-биле бижиңер',
 
 # Attribution
@@ -1170,8 +1190,16 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'days' => '{{PLURAL:$1|$1 хүн|$1 хүн}}',
 'ago' => '$1 бурунгаар',
 
+# Bad image list
+'bad_image_list' => 'Формады мындыг боор ужурлуг:
+
+Чүгле даңзының идегеттери (элементилери) санатынар боор (* деп демдектен эгелээн одуруглар).
+Одуругнуң бирги шөлүдүү салдынмас чурумалче шөлүдүг болуру албан.
+Ол-ла одуругнуң арткан шөлүдүглери онзагай кылдыр азы чурумал капсырып болур чүүлдер кылдыр санаттынар.',
+
 # Metadata
 'metadata' => 'Чурумал дугайында медээлер',
+'metadata-help' => 'Бо файл немелде данныйларлыг:санныг камералар азы сканнерлер дугайында медеглел. Файл чаяанының соонда эдидип турган болза, чамдык параметрлери амгы чурумалга меге кылдыр хамааржып болур.',
 'metadata-fields' => 'Бо даңзыда айыткан чурумалдар метаданныйларның кезектери чурумалдың арынынга көстүп кээр, метаданныйлар таблицазын дүрүп каан болур. 
 Арткан кезектер аайлаан ёзугаар чажыт көстүр.
 * make
@@ -1211,6 +1239,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 
 # External editor support
 'edit-externally' => 'Бо файлды даштыкы капсырылга-биле эдер',
+'edit-externally-help' => '(Улаштыр тодарадырда бо [//www.mediawiki.org/wiki/Manual:External_editors кыстып алыр саавырны] көрүңер)',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'шупту',
@@ -1316,6 +1345,4 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'duration-decades' => '$1 {{PLURAL:$1|он хонук|он хонук}}',
 'duration-centuries' => '$1 {{PLURAL:$1|чүс чыл|чүс чыл}}',
 
-# Unknown messages
-'mytalk-parenthetical' => 'чугаалажыры',
 );
index 9cd4547..736b311 100644 (file)
@@ -472,11 +472,6 @@ $2',
 
 سىز نامسىز ھالەتتە {{SITENAME}} نى ئىشلىتەلەيسىز ياكى ئوخشاش ۋە ياكى ئوخشاش بولمىغان ئىشلەتكۈچى سالاھىيىتىدە <span class='plainlinks'>[$1 تىزىمغا كىر]</span>ەلەيسىز.
 دىققەت، بەزى بەتلەر توركۆرگۈنىڭ غەملىكى تازىلانمىغۇچە يەنىلا سىزنى تىزىمغا كىرگەن ھالەتتە كۆرسىتىشى مۇمكىن.",
-'welcomecreation' => '==  $1! خۇش كەپسىز ==
-
-ھېساباتىڭىز قۇرۇلدى.
-
-[[Special:Preferences|{{SITENAME}} تەڭشىكىڭىزنى تەڭشەشنى ئۇنتۇپ قالماڭ]].',
 'yourname' => 'ئىشلەتكۈچى ئاتى:',
 'yourpassword' => 'ئىم:',
 'yourpasswordagain' => 'ئاچقۇچنى قايتا بەسىڭ:',
@@ -2062,11 +2057,7 @@ URL نىڭ توغرىلىقى ۋە تور بېكەتنى زىيارەت قىلى
 
 'enotif_mailer' => '{{SITENAME}} ئېلخەت ئۇقتۇرغۇچ',
 'enotif_reset' => 'ھەممە بەتكە ئوقۇلدى بەلگىسى سال',
-'enotif_newpagetext' => 'بۇ يېڭى بەت.',
 'enotif_impersonal_salutation' => '{{SITENAME}} ئىشلەتكۈچى',
-'changed' => 'ئۆزگەردى',
-'created' => 'قۇرغان',
-'enotif_subject' => '{{SITENAME}} نىڭ $PAGETITLE بېتىنى $CHANGEDORCREATED ئۆزگەرتكۈچى$PAGEEDITOR',
 'enotif_lastvisited' => 'ئالدىنقى قېتىملىق زىيارەتتىن كېيىنكى ھەممە ئۆزگەرتىشنى $1 كۆرۈڭ.',
 'enotif_lastdiff' => 'بۇ ئۆزگەرتىشنى كۆرمەكچى بولسىڭىز $1 كۆرۈڭ.',
 'enotif_anon_editor' => '$1 ئاتسىز ئىشلەتكۈچى',
index 2f35284..d6ac761 100644 (file)
@@ -378,7 +378,7 @@ $messages = array(
 'tog-enotifusertalkpages' => 'Повідомляти електронною поштою про зміну моєї сторінки обговорення',
 'tog-enotifminoredits' => 'Надсилати мені електронного листа навіть при незначних редагуваннях сторінок та файлів',
 'tog-enotifrevealaddr' => 'Показувати мою поштову адресу в повідомленнях',
-'tog-shownumberswatching' => 'Показувати кількість користувачів, які додали сторінку до свого списку спостереження',
+'tog-shownumberswatching' => 'Показувати число користувачів, які додали сторінку до свого списку спостереження',
 'tog-oldsig' => 'Існуючий підпис:',
 'tog-fancysig' => 'Власна вікі-розмітка підпису (без автоматичного посилання)',
 'tog-externaleditor' => "Використовувати зовнішній редактор за умовчанням (тільки для досвідчених користувачів, вимагає спеціальних налаштувань вашого комп'ютера [//www.mediawiki.org/wiki/Manual:External_editors Детальніше.])",
@@ -520,6 +520,7 @@ $messages = array(
 'namespaces' => 'Простори назв',
 'variants' => 'Варіанти',
 
+'navigation-heading' => 'Навігаційне меню',
 'errorpagetitle' => 'Помилка',
 'returnto' => 'Повернення до сторінки «$1».',
 'tagline' => 'Матеріал з {{grammar:genitive|{{SITENAME}}}}',
@@ -762,9 +763,9 @@ $1',
 'logouttext' => "'''Тепер ви працюєте в тому ж режимі, який був до вашого входу до системи.'''
 
 Ви можете продовжувати використовувати {{grammar:accusative|{{SITENAME}}}} анонімно або знову <span class='plainlinks'>[$1 ввійти до системи]</span> як той самий або інший користувач. Деякі сторінки можуть відображатися, ніби ви ще представлені системі під іменем, щоб уникнути цього, оновіть кеш браузера.",
-'welcomecreation' => '== Вітаємо вас, $1! ==
-Ваш обліковий запис створено.
-Не забудьте змінити свої [[Special:Preferences|налаштування для сайту]].',
+'welcomeuser' => 'Вітаємо, $1!',
+'welcomecreation-msg' => 'Ваш акаунт було створено.
+Не забудьте змінити свої [[Special:Preferences|налаштування у {{GRAMMAR:genitive|{{SITENAME}}}}]].',
 'yourname' => "Ім'я користувача:",
 'yourpassword' => 'Пароль:',
 'yourpasswordagain' => 'Повторний набір пароля:',
@@ -1434,7 +1435,7 @@ $1",
 # Preferences page
 'preferences' => 'Налаштування',
 'mypreferences' => 'Налаштування',
-'prefs-edits' => 'ЧиÑ\81ло редагувань:',
+'prefs-edits' => 'Ð\9aÑ\96лÑ\8cкÑ\96Ñ\81Ñ\82Ñ\8c редагувань:',
 'prefsnologin' => 'Ви не ввійшли в систему',
 'prefsnologintext' => 'Щоб змінити налаштування користувача, ви повинні <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ввійти до системи]</span>.',
 'changepassword' => 'Змінити пароль',
@@ -1921,6 +1922,7 @@ $1',
 'backend-fail-notsame' => 'Неідентичний файл $1 вже існує.',
 'backend-fail-invalidpath' => 'Шлях для збереження $1 є недійсним.',
 'backend-fail-delete' => 'Не вдалося вилучити файл $1.',
+'backend-fail-describe' => 'Не вдалося змінити метадані для файлу «$1».',
 'backend-fail-alreadyexists' => 'Файл $1 вже існує.',
 'backend-fail-store' => 'Не вдалося зберегти файл $1 у $2.',
 'backend-fail-copy' => 'Не вдалося скопіювати файл $1 в $2.',
@@ -2143,7 +2145,7 @@ $1',
 'statistics-pages-desc' => 'Усі сторінки у вікі, включаючи сторінки обговорень, перенаправлення тощо.',
 'statistics-files' => 'Завантажено файлів',
 'statistics-edits' => 'Кількість редагувань з моменту установки {{grammar:genitive|{{SITENAME}}}}',
-'statistics-edits-average' => 'СеÑ\80еднÑ\8f ÐºÑ\96лÑ\8cкÑ\96Ñ\81Ñ\82Ñ\8c редагувань на сторінку',
+'statistics-edits-average' => 'СеÑ\80еднÑ\94 Ñ\87иÑ\81ло редагувань на сторінку',
 'statistics-views-total' => 'Усього переглядів',
 'statistics-views-total-desc' => 'Перегляди неіснуючих та спеціальних сторінок не враховані',
 'statistics-views-peredit' => 'Переглядів на редагування',
@@ -2431,20 +2433,13 @@ $1',
 
 'enotif_mailer' => '{{SITENAME}} Служба сповіщення поштою',
 'enotif_reset' => 'Позначити всі сторінки як переглянуті',
-'enotif_newpagetext' => 'Це нова сторінка.',
 'enotif_impersonal_salutation' => 'Користувач {{grammar:genitive|{{SITENAME}}}}',
-'changed' => 'змінена',
-'created' => 'створена',
-'enotif_subject' => 'Сторінка проекту «{{SITENAME}}» $PAGETITLE була $CHANGEDORCREATED користувачем $PAGEEDITOR',
 'enotif_lastvisited' => 'Див. $1 для перегляду всіх змін, що відбулися після вашого останнього перегляду.',
 'enotif_lastdiff' => 'Див. $1 для ознайомлення з цією зміною.',
 'enotif_anon_editor' => 'анонімний користувач $1',
 'enotif_body' => 'Шановний $WATCHINGUSERNAME,
 
-
-$PAGEEDITDATE сторінка проекту «{{SITENAME}}» $PAGETITLE була $CHANGEDORCREATED користувачем $PAGEEDITOR, дивіться $PAGETITLE_URL як поточну версію.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Короткий опис змін: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -3058,7 +3053,7 @@ $1',
 'tooltip-pt-mytalk' => 'Ваша сторінка обговорення',
 'tooltip-pt-anontalk' => 'Обговорення редагувань з цієї IP-адреси',
 'tooltip-pt-preferences' => 'Ваші налаштування',
-'tooltip-pt-watchlist' => 'Список сторінок, за якими я спостерігаю',
+'tooltip-pt-watchlist' => 'Список сторінок, за змінами в яких Ви спостерігаєте',
 'tooltip-pt-mycontris' => 'Ваш внесок',
 'tooltip-pt-login' => "Тут можна зареєструватися в системі, але це не обов'язково.",
 'tooltip-pt-anonlogin' => "Тут можна зареєструватися в системі, але це не обов'язково.",
@@ -3075,10 +3070,10 @@ $1',
 'tooltip-ca-move' => 'Перейменувати цю сторінку',
 'tooltip-ca-watch' => 'Додати цю сторінку до вашого списку спостереження',
 'tooltip-ca-unwatch' => 'Вилучити цю сторінку з вашого списку спостереження',
-'tooltip-search' => 'Шукати',
+'tooltip-search' => 'Шукати у {{GRAMMAR:genitive|{{SITENAME}}}}',
 'tooltip-search-go' => 'Перейти до сторінки, що має точно таку назву (якщо вона існує)',
 'tooltip-search-fulltext' => 'Знайти сторінки, що містять зазначений текст',
-'tooltip-p-logo' => 'Ð\93оловна Ñ\81Ñ\82оÑ\80Ñ\96нка',
+'tooltip-p-logo' => 'Ð\9fеÑ\80ейÑ\82и Ð½Ð° Ð³Ð¾Ð»Ð¾Ð²Ð½Ñ\83 Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83',
 'tooltip-n-mainpage' => 'Перейти на Головну сторінку',
 'tooltip-n-mainpage-description' => 'Перейти на головну сторінку',
 'tooltip-n-portal' => 'Про проект, про те, що ви можете зробити, і що де знаходиться',
@@ -3255,6 +3250,8 @@ The wiki server can't provide data in a format your client can read.",
 'markedaspatrollederror' => 'Неможливо позначити як перевірену',
 'markedaspatrollederrortext' => 'Ви повинні зазначити версію, яка буде позначена як перевірена.',
 'markedaspatrollederror-noautopatrol' => 'Вам не дозволено позначати власні редагування як перевірені.',
+'markedaspatrollednotify' => 'Цю зміну у «$1» було позначено як відпатрульовану.',
+'markedaspatrollederrornotify' => 'Не вдалося поставити позначку про патрулювання.',
 
 # Patrol log
 'patrol-log-page' => 'Журнал патрулювання',
@@ -4237,9 +4234,9 @@ MediaWiki поширюється в надії, що вона буде кори
 'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|перейменував|перейменувала}} сторінку з $3 на $4 поверх перенаправлення без залишення самого перенаправлення',
 'logentry-patrol-patrol' => '$1 відпатрулював версію $4 сторінки $3',
 'logentry-patrol-patrol-auto' => '$1 автоматично відпатрулював версію $4 сторінки $3',
-'logentry-newusers-newusers' => '$1 створив обліковий запис користувача',
-'logentry-newusers-create' => '$1 — створений обліковий запис',
-'logentry-newusers-create2' => '$1 створив обліковий запис користувача $3',
+'logentry-newusers-newusers' => 'Створено обліковий запис $1',
+'logentry-newusers-create' => 'Створено обліковий запис $1',
+'logentry-newusers-create2' => '$1 {{GENDER:$2|створив|створила}} обліковий запис {{GENDER:$4|користувача|користувачки}} $3',
 'logentry-newusers-autocreate' => '$1 — автоматично створений обліковий запис',
 'newuserlog-byemail' => 'пароль надісланий електронною поштою',
 
index c81646e..abd15bf 100644 (file)
@@ -373,9 +373,6 @@ Ushbu xabar tarjimasini qo'shish yoki o'zgartirish uchun, iltimos, MediaWikining
 
 {{SITENAME}} saytidan anonim holda foydalanishda davom etishindiz mumkin. Yoki siz yana hozirgi yoki boshqa foydalanuvchi nomi bilan qaytadan tizimga kirishingiz mumkin.
 Shuni e'tiborga olingki, ayrim sahifalar siz brauzeringiz keshini tozalamaguningizga qadar xuddi tizimga kirganingizdagidek ko'rinishda davom etaverishi mumkin.",
-'welcomecreation' => '== Xush kelibsiz, $1! ==
-Siz yangi hisob yaratdingiz.
-[[Special:Preferences|{{SITENAME}}dagi shaxsiy moslamalaringizni]] oʻzgartirish yodingizdan chiqmasin.',
 'yourname' => 'Foydalanuvchi nomi',
 'yourpassword' => 'Maxfiy soʻz',
 'yourpasswordagain' => 'Maxfiy so‘zni qayta kiriting:',
@@ -1087,11 +1084,7 @@ Agar siz bu sahifani kuzatuv ro'yxatingizdan o'chirmoqchi bo'lsangiz \"Kuzatmasl
 
 'enotif_mailer' => "{{SITENAME}} Pochta orqali e'lon qilish xizmati",
 'enotif_reset' => "Hamma sahifalarni ko'rib chiqilgan deb belgilash",
-'enotif_newpagetext' => 'Bu yangi sahifa',
 'enotif_impersonal_salutation' => '{{SITENAME}} ishtirokchisi',
-'changed' => 'o‘zgartirildi',
-'created' => 'yaratildi',
-'enotif_subject' => '"{{SITENAME}}" loyihasining $PAGETITLE sahifasi $PAGEEDITOR tomonidan $CHANGEDORCREATED',
 'enotif_lastvisited' => "Oxirgi tashrifingizdan buyon sodir bo'lgan barcha o'zgarishlarni ko'rish uchun $1 ga qarang.",
 'enotif_lastdiff' => "O'zgarishlar bilan tanishish uchun $1 ga qarang.",
 'enotif_anon_editor' => 'anonim ishtirokchi $1',
index 966eabb..cd0dc6c 100644 (file)
@@ -548,10 +548,6 @@ L\'aministradore che ło ga blocà ga fornìo sta spiegasion: "$3".',
 
 Te poli 'ndar vanti doparando {{SITENAME}} come utente anonimo o se nò <span class='plainlinks'>[$1 entrar da novo]</span>, col stesso nome utente o uno difarente.
 Ocio che serte pagine podarìa èssar che ti 'e vedi come se te fussi 'ncora drento col to nome de prima, fin che no te neti la ''cache'' del to browser.",
-'welcomecreation' => '== Benvegnù, $1! ==
-
-El to nome utente el xe stà creà.
-Te poli sistemarte come te vol le to [[Special:Preferences|prefarense de {{SITENAME}}]].',
 'yourname' => 'Nome utente:',
 'yourpassword' => 'Password:',
 'yourpasswordagain' => 'De novo la password:',
@@ -2056,11 +2052,7 @@ I futuri canbiamenti a sta pagina e a la so pagina de discussion i se vedarà fo
 
 'enotif_mailer' => 'Sistema de notifica via e-mail de {{SITENAME}}',
 'enotif_reset' => 'Segna tute le pagine come zà viste',
-'enotif_newpagetext' => 'Sta qua la xe na nova pàxena.',
 'enotif_impersonal_salutation' => 'Utente de {{SITENAME}}',
-'changed' => 'canbià',
-'created' => 'creà',
-'enotif_subject' => 'La pagina $PAGETITLE de {{SITENAME}} la xe stà $CHANGEDORCREATED da $PAGEEDITOR',
 'enotif_lastvisited' => 'Varda $1 par tute le modifiche da la to ultima visita.',
 'enotif_lastdiff' => 'Varda $1 par visualizar la modifica.',
 'enotif_anon_editor' => 'utente anonimo $1',
index 362f233..ed1f390 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Aig mest ei varasta
  * @author Andrijko Z.
  * @author Kaganer
  * @author Sura
@@ -221,7 +222,7 @@ $messages = array(
 'cancel' => 'Heitta pätand',
 'moredotdotdot' => 'Edeleze...',
 'mypage' => "Minun lehtpol'",
-'mytalk' => 'Minun lodud',
+'mytalk' => 'Lodud',
 'anontalk' => 'Lodud neciš IP-adresas',
 'navigation' => 'Navigacii',
 'and' => '&#32;da',
@@ -472,9 +473,6 @@ Sü om "\'\'$2\'\'".',
 
 Sab jatkta rad {{SITENAME}}-saital anonimižikš, vai <span class='plainlinks'>[$1 kirjutagatoiš udes]</span> sil-žo vai toižel kävutajan nimel.
 Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel teiden lähtendad sistemaspäi. Miše vajehtada niiden nägu, puhtastagat teiden kaclimen keš.",
-'welcomecreation' => '== Tulgat tervhen, $1! ==
-Teiden registracii om loptud.
-Algat unohtagoi [[Special:Preferences|järgeta personaližikš]] sait.',
 'yourname' => 'Kävutajan nimi:',
 'yourpassword' => 'Peitsana:',
 'yourpasswordagain' => 'Kirjutagat peitsana udes:',
@@ -987,7 +985,7 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 
 # Preferences page
 'preferences' => 'Järgendused',
-'mypreferences' => 'Minun järgendused',
+'mypreferences' => 'Järgendused',
 'prefs-edits' => 'Redaktiruindoiden lugu:',
 'prefsnologin' => 'Tö et olgoi kirjutanus sistemha.',
 'prefsnologintext' => 'Teile pidab <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} kirjutadas sistemha]</span>, miše toižetada järgendusid.',
@@ -1385,7 +1383,7 @@ Ku problem jäb jäl'ghepäi-ki, säkat pagin [[Special:ListUsers/sysop|sistemad
 'backend-fail-writetemp' => 'Ei voi toižetada pordaigašt failad.',
 'backend-fail-closetemp' => 'Ei voi saubata pordaigašt failad.',
 'backend-fail-read' => 'Ei voi lugeda "$1"-failad.',
-'backend-fail-create' => 'Ei voi säta "$1"-failad.',
+'backend-fail-create' => 'Ei voi kirjutada "$1"-failad.',
 
 # ZipDirectoryReader
 'zip-wrong-format' => 'Valitud fail ei ole ZIP-fail.',
@@ -1739,7 +1737,7 @@ Kc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].',
 
 # Watchlist
 'watchlist' => 'Kaclendnimikirjutez',
-'mywatchlist' => 'Minun kaclendnimikirjutez',
+'mywatchlist' => 'Kaclendnimikirjutez',
 'watchlistfor2' => 'Kävutajale $1 $2',
 'nowatchlist' => "Teiden kaclendnimikirjutez om pall'az.",
 'watchlistanontext' => 'Olgat hüväd, $1, miše lugeda vai redaktiruida teiden kaclendnimikirjutez.',
@@ -1768,11 +1766,7 @@ Kc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].',
 
 'enotif_mailer' => "{{SITENAME}}-saitan lehtpol' om toižetadud - tedotuz",
 'enotif_reset' => 'Znamoita kaik lehtpoled kut kactud',
-'enotif_newpagetext' => 'Nece om uz’ lehtpol’',
 'enotif_impersonal_salutation' => '{{SITENAME}}-saitan kävutai',
-'changed' => 'om toižetadud',
-'created' => 'om sätud',
-'enotif_subject' => '$PAGEEDITOR om $CHANGEDORCREATED $PAGETITLE',
 'enotif_lastvisited' => "Kc. $1, miše nähta kaik teiden jäl'gmäižen vizitan jäl'ghe tehtud toižetused.",
 'enotif_lastdiff' => 'Kc. $1, miše kacelta toižetusid.',
 'enotif_anon_editor' => 'anonimine kävutai $1',
@@ -2370,9 +2364,10 @@ Voib olda, necil lehtpolel om kosketuz irdsaitale, kudamb om mustas nimikirjutes
 'spambot_username' => 'MediaWikid puhtastadas spamaspäi',
 
 # Info page
-'pageinfo-header-edits' => 'Redakcijad',
+'pageinfo-header-edits' => 'Redakcijoiden istorii',
+'pageinfo-article-id' => 'Lehtpolen ID',
 'pageinfo-views' => 'Kacundoiden lugu',
-'pageinfo-watchers' => 'Kaclijoiden lugu',
+'pageinfo-watchers' => 'Lehtpolen kaclijoiden lugu',
 'pageinfo-edits' => 'Redakcijoiden lugumär',
 'pageinfo-authors' => 'Erazvuiččiden avtoroiden lugu',
 
@@ -2781,17 +2776,26 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdl
 'exif-dc-publisher' => 'Pästai',
 'exif-dc-rights' => 'Oiktused',
 
+'exif-iimcategory-clj' => 'Ogerantegend da käskuz',
+'exif-iimcategory-dis' => 'Katastrofad da avarijad',
+'exif-iimcategory-fin' => 'Ekonomik da biznes',
 'exif-iimcategory-edu' => 'Openduzmär',
+'exif-iimcategory-evn' => 'Ümbrišt',
 'exif-iimcategory-hth' => 'Tervhuz',
+'exif-iimcategory-hum' => "Mel'hetartujad istorijad",
 'exif-iimcategory-lab' => 'Tö',
+'exif-iimcategory-lif' => 'Elonmahtuz da joudai aig',
 'exif-iimcategory-pol' => 'Politik',
 'exif-iimcategory-rel' => 'Religii da uskonduz',
 'exif-iimcategory-sci' => 'Tedo da tehnologii',
 'exif-iimcategory-soi' => 'Socialižed küzundad',
 'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Voinad, konfliktad da kundanholdundad',
 'exif-iimcategory-wea' => 'Sä',
 
 'exif-urgency-normal' => 'Normaline ($1)',
+'exif-urgency-low' => 'Madal ($1)',
+'exif-urgency-high' => 'Korged ($1)',
 
 # External editor support
 'edit-externally' => 'Redaktiruida nece fail irdprogrammal',
@@ -2934,6 +2938,7 @@ Kävutagat normaline ezikacund.',
 'version-specialpages' => 'Specialižed lehtpoled',
 'version-parserhooks' => 'Sintaksižen analizatoran sabustajad',
 'version-variables' => 'Vajehtujad lugud',
+'version-antispam' => 'Antispam',
 'version-skins' => 'Nägutemad',
 'version-other' => 'Toine',
 'version-mediahandlers' => 'Median radimed',
index 878c82e..1a4ebc1 100644 (file)
@@ -462,6 +462,7 @@ $messages = array(
 'namespaces' => 'Không gian tên',
 'variants' => 'Biến thể',
 
+'navigation-heading' => 'Trình đơn chuyển hướng',
 'errorpagetitle' => 'Lỗi',
 'returnto' => 'Quay lại $1.',
 'tagline' => 'Từ {{SITENAME}}',
@@ -700,9 +701,9 @@ Bảo quản viên khóa nó đưa lý do là: “$3”.',
 'logouttext' => "'''Bạn đã đăng xuất.'''
 
 Bạn có thể tiếp tục dùng {{SITENAME}} một cách vô danh, hoặc bạn có thể <span class='plainlinks'>[$1 đăng nhập lại]</span> dưới cùng tên người dùng này hoặc một tên người dùng khác. Xin lưu ý rằng một vài trang có thể vẫn hiển thị như khi bạn còn đăng nhập, cho đến khi bạn xóa vùng nhớ đệm (''cache'') của trình duyệt.",
-'welcomecreation' => '== Chào mừng, $1! ==
-Tài khoản của bạn đã mở.
-Đừng quên thay đổi [[Special:Preferences|tùy chọn cá nhân của bạn tại {{SITENAME}}]].',
+'welcomeuser' => 'Hoan nghênh, $1!',
+'welcomecreation-msg' => 'Tài khoản của bạn đã được mở.
+Hãy nhớ thay đổi [[Special:Preferences|tùy chọn cá nhân {{SITENAME}}]] của bạn.',
 'yourname' => 'Tên người dùng:',
 'yourpassword' => 'Mật khẩu:',
 'yourpasswordagain' => 'Gõ lại mật khẩu',
@@ -1650,8 +1651,8 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'rclinks' => 'Xem $1 sửa đổi gần đây nhất trong $2 ngày qua; $3.',
 'diff' => 'khác',
 'hist' => 'sử',
-'hide' => 'ẩn',
-'show' => 'hiện',
+'hide' => 'Ẩn',
+'show' => 'Hiện',
 'minoreditletter' => 'n',
 'newpageletter' => 'M',
 'boteditletter' => 'b',
@@ -1830,6 +1831,7 @@ Nếu vẫn còn bị lỗi, xin hãy liên hệ với một [[Special:ListUsers
 'backend-fail-notsame' => 'Một tập tin khác biệt đã tồn tại ở $1.',
 'backend-fail-invalidpath' => '$1 không phải đường dẫn lưu giữ hợp lệ.',
 'backend-fail-delete' => 'Không thể xóa tập tin $1.',
+'backend-fail-describe' => 'Không thể thay đổi siêu dữ liệu của tập tin “$1”.',
 'backend-fail-alreadyexists' => 'Tập tin $1 đã tồn tại.',
 'backend-fail-store' => 'Không thể lưu tập tin $1 tại $2.',
 'backend-fail-copy' => 'Không thể chép tập tin $1 đến $2.',
@@ -2330,20 +2332,23 @@ Những sửa đổi đối với trang này và trang thảo luận của nó s
 
 'enotif_mailer' => 'Thông báo của {{SITENAME}}',
 'enotif_reset' => 'Đánh dấu đã xem mọi trang',
-'enotif_newpagetext' => 'Trang này mới',
 'enotif_impersonal_salutation' => 'thành viên {{SITENAME}}',
-'changed' => 'thay đổi',
-'created' => 'viết mới',
-'enotif_subject' => '$PAGETITLE tại {{SITENAME}} đã được $CHANGEDORCREATED bởi $PAGEEDITOR',
+'enotif_subject_deleted' => 'Trang $1 tại {{SITENAME}} đã được xóa bởi $2.',
+'enotif_subject_created' => 'Trang $1 tại {{SITENAME}} đã được tạo ra bởi $2.',
+'enotif_subject_moved' => 'Trang $1 tại {{SITENAME}} đã được di chuyển bởi $2.',
+'enotif_subject_restored' => 'Trang $1 tại {{SITENAME}} đã được phục hồi bởi $2.',
+'enotif_subject_changed' => 'Trang $1 tại {{SITENAME}} đã được thay đổi bởi $2.',
+'enotif_body_intro_deleted' => 'Trang $1 tại {{SITENAME}} đã được $2 xóa vào $PAGEEDITDATE. Xem phiên bản hiện hành tại $3 .',
+'enotif_body_intro_created' => 'Trang $1 tại {{SITENAME}} đã được $2 tạo ra vào $PAGEEDITDATE. Xem phiên bản hiện hành tại $3 .',
+'enotif_body_intro_moved' => 'Trang $1 tại {{SITENAME}} đã được $2 di chuyển vào $PAGEEDITDATE. Xem phiên bản hiện hành tại $3 .',
+'enotif_body_intro_restored' => 'Trang $1 tại {{SITENAME}} đã được $2 phục hồi vào $PAGEEDITDATE. Xem phiên bản hiện hành tại $3 .',
+'enotif_body_intro_changed' => 'Trang $1 tại {{SITENAME}} đã được $2 thay đổi vào $PAGEEDITDATE. Xem phiên bản hiện hành tại $3 .',
 'enotif_lastvisited' => 'Xem $1 để biết các thay đổi diễn ra từ lần xem cuối cùng của bạn.',
 'enotif_lastdiff' => 'Vào $1 để xem sự thay đổi này.',
 'enotif_anon_editor' => 'người dùng vô danh $1',
 'enotif_body' => 'Xin chào $WATCHINGUSERNAME,
 
-
-Trang $PAGETITLE tại {{SITENAME}} đã được $PAGEEDITOR $CHANGEDORCREATED vào $PAGEEDITDATE, xem phiên bản hiện hành tại $PAGETITLE_URL.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Tóm lược sửa đổi: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2351,8 +2356,7 @@ Liên lạc với người viết trang qua:
 thư: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Sẽ không có thông báo nào khác nếu có sự thay đổi tiếp theo trừ khi bạn xem trang đó.
-Bạn cũng có thể thiết lập lại việc nhắc nhở cho tất cả các trang nằm trong danh sách theo dõi của bạn.
+Sẽ không có thông báo nào khác nếu có sự thay đổi tiếp theo trừ khi bạn xem trang đó. Bạn cũng có thể thiết lập lại việc nhắc nhở cho tất cả các trang nằm trong danh sách theo dõi của bạn.
 
               Hệ thống báo tin {{SITENAME}} thân thiện của bạn
 
@@ -3144,6 +3148,8 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
 'markedaspatrollederror' => 'Không thể đánh dấu tuần tra',
 'markedaspatrollederrortext' => 'Bạn phải chọn phiên bản để đánh dấu tuần tra.',
 'markedaspatrollederror-noautopatrol' => 'Bạn không được đánh dấu tuần tra vào sửa đổi của bạn.',
+'markedaspatrollednotify' => 'Đã được đánh dấu tuần tra vào thay đổi tại $1.',
+'markedaspatrollederrornotify' => 'Đánh dấu tuần tra bị thất bại.',
 
 # Patrol log
 'patrol-log-page' => 'Nhật ký tuần tra',
@@ -3213,6 +3219,7 @@ Nếu thực thi nó máy tính của bạn có thể bị tiếm quyền.",
 'hours' => '$1 giờ',
 'days' => '$1 ngày',
 'ago' => 'cách đây $1',
+'just-now' => 'vừa mới xong',
 
 # Bad image list
 'bad_image_list' => 'Định dạng như sau:
@@ -4020,8 +4027,8 @@ Các hình ảnh được hiển thị ở kích thước tối đa, còn các l
 'compare-rev1' => 'Phiên bản 1',
 'compare-rev2' => 'Phiên bản 2',
 'compare-submit' => 'So sánh',
-'compare-invalid-title' => 'Tựa trang chỉ định không hợp lệ.',
-'compare-title-not-exists' => 'Tựa trang chỉ định không tồn tại.',
+'compare-invalid-title' => 'Tên trang chỉ định không hợp lệ.',
+'compare-title-not-exists' => 'Tên trang chỉ định không tồn tại.',
 'compare-revision-not-exists' => 'Phiên bản chỉ định không tồn tại.',
 
 # Database error messages
@@ -4075,8 +4082,8 @@ Các hình ảnh được hiển thị ở kích thước tối đa, còn các l
 'logentry-move-move_redir-noredirect' => '$1 đã đổi $3 thành $4 qua đổi hướng (đã tắt đổi hướng)',
 'logentry-patrol-patrol' => '$1 đã đánh dấu tuần tra phiên bản $4 của trang $3',
 'logentry-patrol-patrol-auto' => '$1 đã tự động đánh dấu tuần tra phiên bản $4 của trang $3',
-'logentry-newusers-newusers' => '$1 đã mở tài khoản mới',
-'logentry-newusers-create' => '$1 đã mở tài khoản mới',
+'logentry-newusers-newusers' => 'Đã mở tài khoản người dùng $1',
+'logentry-newusers-create' => 'Đã mở tài khoản người dùng $1',
 'logentry-newusers-create2' => '$1 đã mở tài khoản người dùng $3',
 'logentry-newusers-autocreate' => 'Tài khoản $1 đã được mở tự động',
 'newuserlog-byemail' => 'gửi mật khẩu qua thư điện tử',
@@ -4154,5 +4161,5 @@ Nếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới.
 'duration-millennia' => '$1 thiên niên kỷ',
 
 # Unknown messages
-'mytalk-parenthetical' => 'thảo luận',
+'svg-long-error' => 'Tập tin SVG có lỗi: $1',
 );
index cb66929..3126bef 100644 (file)
@@ -475,9 +475,6 @@ Kod binon: ''$2''.",
 
 Kanol laigebön {{SITENAME}} nennemiko, u kanol <span class='plainlinks'>[$1 nunädön oli dönu]</span> me gebananem ot u gebenanem votik.
 Küpälolös, das pads anik ba nog pojenons äsva no esenunädol oli, jüs uklinükol memi no laidüpik bevüresodanaföma olik.",
-'welcomecreation' => '== Benokömö, o $1! ==
-Kal olik pejafon.
-No glömolöd ad votükön [[Special:Preferences|buükamis olik in {{SITENAME}}]].',
 'yourname' => 'Gebananem:',
 'yourpassword' => 'Letavöd:',
 'yourpasswordagain' => 'Klavolös dönu letavödi:',
@@ -1692,11 +1689,7 @@ If vilol poso moükön padi de galädalised olik, välolös lä on knopi: „neg
 
 'enotif_mailer' => 'Nunamasit ela {{SITENAME}}',
 'enotif_reset' => 'Malön padis pevisitöl valik',
-'enotif_newpagetext' => 'Atos binon pad nulik.',
 'enotif_impersonal_salutation' => 'Geban {{SITENAME}}-a',
-'changed' => 'pevotüköl',
-'created' => 'pejafon',
-'enotif_subject' => 'In {{SITENAME}}, pad: $PAGETITLE $CHANGEDORCREATED fa el $PAGEEDITOR',
 'enotif_lastvisited' => 'Logolös eli $1 ad tuvön lisedi votükamas valik pos visit lätik ola.',
 'enotif_lastdiff' => 'Logolös eli $1 ad tuvön votükami at.',
 'enotif_anon_editor' => 'geban nennemik: $1',
index 89fda5b..5067968 100644 (file)
@@ -87,6 +87,7 @@ $messages = array(
 'category-article-count' => '{{PLURAL:$2|Senez gruppaz on ainult vahtiaava cülci.|{{PLURAL:$1|Vahtiaava alagruppa kuulub|Vahtiaava $1 cülciä kuuluvad}} sihee gruppaa. Cülcije cisla gruppaza on $2.}}',
 'category-file-count' => '{{PLURAL:$2|Senez gruppaz on ainult vahtiaava faili.|{{PLURAL:$1|Vahtiaava alagruppa kuulub|Vahtiaava $1 failid kuuluvad}} sihee gruppaa. Cülcije cisla gruppaza on $2.}}',
 'listingcontinuesabbrev' => 'ladvaub',
+'noindex-category' => 'Ebäindekseeritettäväd lehocülled',
 
 'about' => 'Täätühsed',
 'newwindow' => '(avaub uuvvõza akkunaza)',
@@ -221,9 +222,11 @@ Kui cüsümüssessä ebõõ roocittu cülci, võib õlla õlõttõ löütännü
 # Login and logout pages
 'yourname' => 'Cäüttijänimi:',
 'yourpassword' => 'Salasõna',
+'yourpasswordagain' => 'Tõissaga salain-sõna:',
 'remembermypassword' => 'Mäleht minuu (enintään $1 {{PLURAL:$1|päivä|päivää}})',
 'login' => 'Cirjut süäme',
 'nav-login-createaccount' => 'Cirjut süäme vai registriiroit cäüttijässi',
+'loginprompt' => 'Tüü piättä «cookies» võttamin luvata, štobõ entä sisteema ete esitellä.',
 'userlogin' => 'Cirjut süäme',
 'userloginnocreate' => 'Cirjut süäme',
 'logout' => 'Cirjut uloz',
@@ -231,7 +234,9 @@ Kui cüsümüssessä ebõõ roocittu cülci, võib õlla õlõttõ löütännü
 'nologin' => "Kui Teille veel ebõõ cäüttijänimi, '''$1'''.",
 'nologinlink' => 'võitta loovva luguu',
 'createaccount' => 'Uusi cäüttijää',
+'gotaccount' => 'Tüü õõttõ jo registreerittu? $1.',
 'gotaccountlink' => 'Cirjut süäme',
+'userlogin-resetlink' => 'Vai unõhtittõ õma loginass?',
 'createaccountreason' => 'Süü:',
 'mailmypassword' => 'Lähet uusi salasõna elektropoštiikaa',
 'loginlanguagelabel' => 'Ceeli: $1',
@@ -294,12 +299,16 @@ Tüü võittõ [[Special:Search/{{PAGENAME}}|kaze nime nimettamizõ löütä]] m
 'template-semiprotected' => '(varjõttu anonüümeilt ja uusilt cäüttijilt)',
 'hiddencategories' => 'Kase cülci kuulub {{PLURAL:$1|vahtiaavaa salautõttuu gruppaa|vahtiaavii salautõttuisõõ gruppoisõõ}}:',
 'permissionserrorstext-withaction' => 'Teill ebõõ luppa $2 {{PLURAL:$1|vahtiaavass süüss|vahtiaaviss süiss}} peräss:',
+'recreate-moveddeleted-warn' => "'''Tähele-pano. Tüü loottõ taaz lehocülce, kumpa õli eespäi poisõttu.'''
+
+Tarkassaga, vai tarviz teile sitä tehä. Alapallõ õlla kaze lehocülle poissamizije ja nimije muuttamizije žurnaalad esitettü.",
 'moveddeleted-notice' => "Kase cülci on pühittü. Alla on sene cüľľee pühi'istori.",
 
 # Parser/template warnings
 'post-expand-template-inclusion-warning' => "'''Etetäätämin:''' lizettävije šabloonije summaarin koko on liiga suuri.
 Mõnõd šabloonad eväd lee lizettü.",
 'post-expand-template-inclusion-category' => 'Lehocülled, jõgõit vart lizettävije šabloonije sallittu koko on ületettü',
+'post-expand-template-argument-warning' => "'''Tähele-pano''': kase lehocülci sisältäb vähepält ühs šabloona, kumma argumental on liiga suuri avvamizõ koko. Mokomad argumentad eväd õltu näütettü",
 'post-expand-template-argument-category' => 'Lehocülled, jõgad sisälletä väl’l’ä-jätettü šabloonije argumentad.',
 
 # History pages
@@ -307,6 +316,7 @@ Mõnõd šabloonad eväd lee lizettü.",
 'currentrev' => 'Nücüin verzija',
 'currentrev-asof' => 'Nücüin verzija $1',
 'revisionasof' => 'Verzija $1',
+'revision-info' => '41. Verssija $1-ss; $2',
 'previousrevision' => '← Vanõpi verzija',
 'nextrevision' => 'Uuvvõpi verzija →',
 'currentrevisionlink' => 'Nücüin verzija',
@@ -345,6 +355,7 @@ Mõnõd šabloonad eväd lee lizettü.",
 'lineno' => 'Viiru $1:',
 'compareselectedversions' => 'Võrrõõ valitsõttuit verzijoit',
 'editundo' => 'kummut',
+'diff-multi' => 'Eb õõ näütettü {{PLURAL:$1|õsa-võttaja|õsa-võttajije}} {{PLURAL:$2|$2 väli-verssija $1|väli-verssijad $1}}',
 
 # Search results
 'searchresults' => 'Etsüü tulõmuhsõd',
@@ -373,6 +384,7 @@ Mõnõd šabloonad eväd lee lizettü.",
 'searchprofile-everything-tooltip' => 'Õttsigo kõikill lehocüllill (ceskussõõmizõ lehocülled siällhulgaz)',
 'searchprofile-advanced-tooltip' => 'Annõttu nimije tiloiz õttsia',
 'search-result-size' => '$1 ({{PLURAL:$2|1 sõna|$2 sõna}})',
+'search-result-category-size' => '$1 {{PLURAL:$1|jäse|$1 jäsentä}} ({{PLURAL:$2|1 all-kategoorija|$2 all-kategoorijad}}, {{PLURAL:$3|1 faili|$3 faila}})',
 'search-redirect' => '(mešaituz $1)',
 'search-section' => '(alajako $1)',
 'search-suggest' => 'Tähetidko: $1',
@@ -416,6 +428,8 @@ Proovvi lizät etsün alkuu ''all:'', nii ettsü etsib kõikkõõ sisältoo (taa
 'gender-male' => 'Mehin',
 'gender-female' => 'Naisin',
 'email' => 'E-mail',
+'prefs-help-email' => 'E-mail eb õõ pakollin, ain se leeb vajallin, kui tüü unõhtattõ salain-sõnass.',
+'prefs-help-email-others' => 'Se lupabci muilõ õsa-võttajilõ võtta ühteüttä tejjeka tejje personaaliss lehocülless viittau kautta, ilma tejje e-mail’a tääotusõ vajaussa.',
 
 # User rights
 'userrights-reason' => 'Süü:',
@@ -447,11 +461,13 @@ Proovvi lizät etsün alkuu ''all:'', nii ettsü etsib kõikkõõ sisältoo (taa
 'recentchanges-label-bot' => 'Kase kõrjauz on robotaka lootu',
 'recentchanges-label-unpatrolled' => 'Kasta kõrjaussa eb tarkisõtti veel',
 'rcnote' => 'Alla on {{PLURAL:$1|ühsi muutuz|viimeiziit $1 muutussiit}} viimeize {{PLURAL:$2|ühee päivää|$2 päivää}}, $4 $5.',
+'rcnotefrom' => 'Alapallõ õlla lugõtõltu muuttamizõd $2-lt ($1-lõssaa)',
 'rclistfrom' => 'Näüt uuvvõd muutuhsõd $1 alguss',
 'rcshowhideminor' => '$1 peened muutussõd',
 'rcshowhidebots' => '$1 botid',
 'rcshowhideliu' => '$1 süäme cirjutõnnud cäüttijäd',
 'rcshowhideanons' => '$1 anonüümid cäüttijäd',
+'rcshowhidepatr' => 'Tarkasõttu kõrjausije $1',
 'rcshowhidemine' => '$1 õmad muutussõd',
 'rclinks' => 'Näüt viimõiss $1 muutuhsõiss viimõizõ $2 päivää ajalt.<br />$3',
 'diff' => 'vahõ',
@@ -541,6 +557,7 @@ Seness [$2 kuvauhsõ lehocülless] informaattsija on alapallõ annõttu.',
 'nbytes' => '$1 {{PLURAL:$1|baitti|baittia}}',
 'nmembers' => '$1 {{PLURAL:$1|selttsilain|selttsilaizõd}}',
 'prefixindex' => 'Kõik cüľľed prefiksiikaa',
+'usercreated' => '33. $3 on entä cirjannu $1 $2-na',
 'newpages' => 'Uuvvõd cüľľed',
 'newpages-username' => 'Cäüttijänimi:',
 'move' => 'Liikut',
@@ -610,8 +627,6 @@ Cülci leeb cirjutõttu '''pimmiässi''' [[Special:RecentChanges|spiizgall viime
 'watching' => 'Kattsõõn…',
 'unwatching' => 'Kattsõõmizõõ lõpõttõmin…',
 
-'enotif_newpagetext' => 'Kase on vassõn cülci.',
-
 # Delete
 'deletepage' => 'Pühi cülci',
 'delete-legend' => 'Pühi',
@@ -683,10 +698,12 @@ Cüľľellä $2 on spiiska viimeiziss pühcimühsiiss.',
 
 'sp-contributions-newbies' => 'Näüt uusijõõ cäüttijee muutuhsõd',
 'sp-contributions-blocklog' => 'piättelemized',
+'sp-contributions-uploads' => 'lassausõd',
 'sp-contributions-logs' => 'logid',
 'sp-contributions-talk' => 'Juttu',
 'sp-contributions-search' => 'Etsi avittamisiit',
 'sp-contributions-username' => 'IP-adressi vai cäüttijänimi',
+'sp-contributions-toponly' => 'Viimeized verssijad näüttä',
 'sp-contributions-submit' => 'Etsi',
 
 # What links here
@@ -694,6 +711,7 @@ Cüľľellä $2 on spiiska viimeiziss pühcimühsiiss.',
 'whatlinkshere-title' => 'Cüľľed, kummad näütellä cüľľelle "$1"',
 'whatlinkshere-page' => 'Cülci:',
 'linkshere' => "Vahtiaavilt cülciilt on linkki cüľľelle '''[[:$1]]''':",
+'nolinkshere' => "Mitäid eb viitata '''[[:$1]]-sõ'''",
 'isredirect' => 'mešaituzcülci',
 'istemplate' => 'sisällütüz šabloonii',
 'isimage' => 'kuvalinkki',
@@ -760,6 +778,7 @@ Neill kõhtoill piättä liikuttaa vai ühissää cüľľee cäzi.",
 
 # Namespace 8 related
 'allmessagesname' => 'Nimi',
+'allmessagesdefault' => 'Standartin teksta',
 'allmessages-language' => 'Ceeli:',
 'allmessages-filter-submit' => 'Mee',
 
@@ -926,6 +945,16 @@ Kui faili on muutõttu, siiz detaaľid võivad õlla kahõllaizõd muutõtull fa
 # Special:SpecialPages
 'specialpages' => 'Osoobenoid cüľľed',
 
+# External image whitelist
+'external_image_whitelist' => '# Jättägä kase rivi mokomassi, minenä-mokomana se on õõmaz.<pre>
+# Sijottaga tänne säännollizije ilmaud’d’e fragmentad (se õsa, kumpa on // väliz)
+# ned leevät võrrõttu ulko-kuvije URL-sõ.
+# Sopivad leeväd näütettü kuvijna, muud leeväd näütettü kuvijsõ viitauina.
+# Rivid, kummad alguta //-ss, pietä kommentaarijina. Rivid eväd õlla tunnuttu registra suhtõsõ.
+# Sijottaga säännollizije ilmaud’d’e fragmentad kaze rivi ülez.
+
+# Jättägä kase rivi mokomassi, minenä-mokomana se on õõmaz.',
+
 # Special:Tags
 'tag-filter' => "[[Special:Tags|Deskriptorije]] fil'tra:",
 'tags-edit' => 'muuttaa',
index d177635..a7ee7e7 100644 (file)
@@ -175,7 +175,7 @@ $messages = array(
 'cancel' => 'Jätäq katski',
 'moredotdotdot' => 'Viil...',
 'mypage' => 'Muq lehekülg',
-'mytalk' => 'Mu arotus',
+'mytalk' => 'Arotus',
 'anontalk' => 'Seo puutri võrgoaadrõsi arotus',
 'navigation' => 'Juhtminõ',
 'and' => '&#32;ja',
@@ -424,7 +424,6 @@ $2',
 
 Võit {{SITENAME}}t ilma nimeldä edesi toimõndaq vai <span class='plainlinks'>[$1 vahtsõst sama vai tõõsõ nimega sisse minnäq]</span>.
 Tähelepandmisõs: niikavva, ku sa olõ-i tühäs tennüq uma võrgokaeja vaihõmällo, võivaq mõnõq leheküleq iks viil näüdädäq, nigu sa olõsi nimega seen.",
-'welcomecreation' => '<h2>Tereq, $1!</h2><p>Su konto om valmis. Võit taa hindä perrä sisse säädäq.',
 'yourname' => 'Pruukjanimi',
 'yourpassword' => 'Salasõna',
 'yourpasswordagain' => 'Kirodaq viilkõrd salasõna',
@@ -659,6 +658,11 @@ Võit toimõndaq olõmanolõvit lehti vai [[Special:UserLogin|minnäq nimega sis
 Kas tahat taad lehte tõtõstõ toimõndaq? Kaeq ka sissekirotust seo lehe ärqkistutamisõ kotsilõ:",
 'edit-conflict' => 'Samaaignõ toimõndus.',
 
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''Hoiatus:''' Pruugitavidõ näüdüsside maht om pall'o suur.
+Tuuperäst ossa näüdüssit näüdädä-äi.",
+'post-expand-template-inclusion-category' => 'Leheküleq, mil om näüdüsside mahupiir ületet',
+
 # "Undo" feature
 'undo-success' => "Tagasivõtminõ läts' kõrda. Kaeq üle, kas taa om tuu, midä sa tetäq tahtsõt ja pästäq muutusõq.",
 'undo-failure' => 'Tagasivõtminõ lää-s kõrda samal aol tettüide muutmiisi vastaolo peräst. Võit muutusõq käsilde tagasi võttaq.',
@@ -801,6 +805,7 @@ Lisateedüst või ollaq [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME
 'nonefound' => "'''Hoiatus''':  Otsitas õnnõ üten jaon nimeruumõn.
 Ku tahat otsiq kõrraga kõigist nimeruumidest (ka arotuskülgi päält, näüdüssist jne) pruugiq
 otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq edejakus tuu nimeruumi nimme.",
+'search-nonefound' => 'Perräküsümisele löüdä-äs vastust.',
 'powersearch' => 'Otsminõ',
 'powersearch-legend' => 'Laendõt otsminõ',
 'powersearch-ns' => 'Otsminõ nimeruumõst:',
@@ -819,7 +824,7 @@ otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq e
 
 # Preferences page
 'preferences' => 'Säädmine',
-'mypreferences' => 'Mu säädmiseq',
+'mypreferences' => 'Säädmiseq',
 'prefs-edits' => 'Tõimõndamiisi arv:',
 'prefsnologin' => 'Sa olõ-i nimega sisse lännüq',
 'prefsnologintext' => 'Et säädmiisi tetäq, tulõ sul [[Special:UserLogin|nimega sisse minnäq]].',
@@ -1069,7 +1074,7 @@ Ku ülekaet teedüstü om sama pilt alguperälidsen suurusõn, sis olõ-i vaia e
 'upload-curl-error28-text' => 'Taa aadrõsi päält saa-s ao pääle vastust. Oodaq vähä ja prooviq vahtsõst.',
 
 'license' => 'Litsents:',
-'license-header' => 'Litsents:',
+'license-header' => 'Litsents',
 'nolicense' => 'Olõ-i litsentsi valit',
 'license-nopreview' => '(Saa-i kaiaq)',
 'upload_source_url' => ' (avalik tüütäv võrgoaadrõs)',
@@ -1100,10 +1105,11 @@ Ku ülekaet teedüstü om sama pilt alguperälidsen suurusõn, sis olõ-i vaia e
 'filehist-dimensions' => 'Suurus',
 'filehist-filesize' => 'Teedüstü suurus',
 'filehist-comment' => 'Seletüs:',
-'imagelinks' => 'Teedüstülingiq',
+'imagelinks' => 'Teedüstüpruukminõ',
 'linkstoimage' => 'Taa pildi pääle {{PLURAL:$1|näütäs lehekülg|näütäseq leheküleq}}:',
 'nolinkstoimage' => 'Taa pildi pääle näütä-i ütski lehekülg.',
 'sharedupload' => 'Seo teedüstü om peri lättest $1 ni taad võivaq pruukiq ka tõõsõq vikiq.',
+'sharedupload-desc-here' => 'Seo om jaet teedüstü lättest $1 ja seod saa pruukiq ka tõisin projekten. Teedüstü [$2 seletüs] om ant allpuul.',
 'uploadnewversion-linktext' => 'Laadiq taa teedüstü vahtsõnõ kujo',
 
 # File reversion
@@ -1307,7 +1313,7 @@ ja sul piät umin [[Special:Preferences|säädmiisin]] olõma e-postiaadrõs, et
 
 # Watchlist
 'watchlist' => 'Perräkaemisnimekiri',
-'mywatchlist' => 'mu perräkaemisnimekiri',
+'mywatchlist' => 'Perräkaemisnimekiri',
 'nowatchlist' => 'Perräkaemisnimekiri om tühi.',
 'watchlistanontext' => 'Perräkaemisnimekirä pruukmisõs $1.',
 'watchnologin' => 'Olõ-i nimega sisse mint',
@@ -1337,11 +1343,7 @@ ja sul piät umin [[Special:Preferences|säädmiisin]] olõma e-postiaadrõs, et
 
 'enotif_mailer' => '{{SITENAME}} lehe muutumisteedüs',
 'enotif_reset' => 'Märgiq kõik leheq ülekaetuis',
-'enotif_newpagetext' => 'Taa om vahtsõnõ leht.',
 'enotif_impersonal_salutation' => '{{SITENAME}} pruukja',
-'changed' => 'lehte muutnuq',
-'created' => 'lehe loonuq',
-'enotif_subject' => '$PAGEEDITOR om $CHANGEDORCREATED $PAGETITLE',
 'enotif_lastvisited' => 'Lehel $1 ommaq kõik päält suq perämäst käümist tettüq muutmisõq.',
 'enotif_lastdiff' => 'Taa muutusõ nägemises kaeq: $1.',
 'enotif_anon_editor' => 'nimeldä pruukja $1',
@@ -1485,7 +1487,7 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
 # Contributions
 'contributions' => 'Pruukja kirotusõq',
 'contributions-title' => 'Pruukja $1 toimõndusõq',
-'mycontris' => 'Mu kirotusõq',
+'mycontris' => 'Hindä kirotusõq',
 'contribsub2' => 'Pruukja "$1 ($2)" kirotusõq',
 'nocontribs' => 'Sääntsit muutmiisi es lövväq.',
 'uctop' => '(kõgõ vahtsõmb)',
@@ -1556,7 +1558,7 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
 'ipusubmit' => 'Lõpõdaq kinniqpidämine ärq',
 'unblocked' => 'Pruukja [[User:$1|$1]] kinniqpidämine om ärq lõpõtõt',
 'unblocked-id' => '$1 kinniqpidämine võeti maaha',
-'ipblocklist' => 'Kinniqpeetüisi IP-aadrõssidõ ja pruukjanimmi nimekiri',
+'ipblocklist' => 'Kinniqpeetüq pruukjaq',
 'ipblocklist-legend' => 'Otsiq kinniqpeetüt pruukjat',
 'ipblocklist-submit' => 'Otsiq',
 'infiniteblock' => 'igäveste',
index 9b1c150..48e1aee 100644 (file)
@@ -424,10 +424,6 @@ $2",
 
 Vos ploz continouwer a naivyî so {{SITENAME}} anonimmint, oudonbén <span class='plainlinks'>[$1 vos relodjî]</span>, dizo l' minme uzeu ou dizo èn uzeu diferin.
 Notez ki des pådjes k' i gn a si pôrént continowuer a vey come si vos estîz elodjî, disk' a tant ki vos vudrîz l' muchete di vosse betchteu waibe.",
-'welcomecreation' => '== Bénvnowe, $1! ==
-
-Vosse conte a stî ahivé.
-Èn rovyîz nén di candjî les [[Special:Preferences|preferinces di {{SITENAME}}]] a vosse môde.',
 'yourname' => "Vosse no d' elodjaedje:",
 'yourpassword' => 'Vosse sicret',
 'yourpasswordagain' => 'Ritapez vosse sicret',
@@ -1492,10 +1488,6 @@ Si vos vloz bodjî l' pådje foû di vosse djivêye des shuvous, clitchîz so «
 
 'enotif_mailer' => 'Notifiaedje pa emile di {{SITENAME}}',
 'enotif_reset' => 'Mårker totes les pådjes come vizitêyes',
-'enotif_newpagetext' => "C' est ene nouve pådje.",
-'changed' => 'candjeye',
-'created' => 'ahivêye',
-'enotif_subject' => 'Li pådje «$PAGETITLE» so {{SITENAME}} a stî $CHANGEDORCREATED pa $PAGEEDITOR',
 'enotif_lastvisited' => 'Loukîz $1 po tos les candjmints dispoy vosse dierinne vizite.',
 'enotif_body' => 'Binamé $WATCHINGUSERNAME,
 
index 3100c9b..8aa3e50 100644 (file)
@@ -11,6 +11,7 @@
  * @author Harvzsf
  * @author JinJian
  * @author Kaganer
+ * @author Wiki indio
  * @author לערי ריינהארט
  */
 
@@ -350,6 +351,7 @@ $1',
 'viewdeleted' => '¿Kitaa in $1?',
 'restorelink' => '{{PLURAL:$1|usa nga ginpara nga pagliwat|$1 ka ginpara nga mga pagliwat}}',
 'feedlinks' => 'Igsulod:',
+'feed-invalid' => 'Inbalido nga pagpapaabot',
 'site-rss-feed' => '$1 RSS nga feed',
 'site-atom-feed' => '$1 Atom nga feed',
 'page-rss-feed' => '"$1" RSS nga feed',
@@ -453,6 +455,7 @@ An katadungan nga ginhatag amo in "\'\'$2\'\'".',
 'filereadonlyerror' => 'Diri maliliwat ini nga paypay "$1" tungod an ginsusudlan han paypay nga "$2" in aada la ha pagbasa-la nga kahimtang.
 
 An magdudurmara nga nagtrangka hini in naghatag hini nga eksplenasyon: "$3".',
+'invalidtitle-knownnamespace' => 'Titulo nga inbalido nga may pan-ngaran "$2 ngan teksto nga "$3"',
 'exception-nologin' => 'Diri nakalog-in',
 'exception-nologin-text' => 'Ini nga pakli o pagbuhat in nagkikinahanglan nga ikaw in mag-log-in ha dinhi nga wiki.',
 
@@ -461,9 +464,6 @@ An magdudurmara nga nagtrangka hini in naghatag hini nga eksplenasyon: "$3".',
 'virus-unknownscanner' => 'diri-nasasabtan nga antivirus:',
 
 # Login and logout pages
-'welcomecreation' => '== ¡Uswag ngan Dayon, $1! ==
-Ginhimo an imo akawnt.
-Ayaw paghingalimot hin pagbalyo han imo [[Special:Preferences|{{SITENAME}} mga ginpipili]].',
 'yourname' => 'Agnay hit gumaramit:',
 'yourpassword' => 'Tigaman-pagsulod:',
 'yourpasswordagain' => 'Utroha pagbutang an tigaman-han-pagsakob:',
@@ -1403,10 +1403,7 @@ An paglaladawan han iya [$2 fayl han paglaladawan nga pakli] didto in ginpapakit
 'wlshowlast' => 'Igpakita an katapusan nga $1 nga mga oras $2 nga mga adlaw $3',
 'watchlist-options' => 'Mga pirilian han talaan han binabantayan',
 
-'enotif_newpagetext' => 'Ini in bag-o nga pakli.',
 'enotif_impersonal_salutation' => 'gumaramit han {{SITENAME}}',
-'changed' => 'naliwanan',
-'created' => 'nahimo',
 'enotif_anon_editor' => 'waray magpakilala nga gumaramit $1',
 
 # Delete
index 1af4da6..69b64d2 100644 (file)
@@ -398,9 +398,6 @@ $1',
 
 Та {{SITENAME}} гидг ормиг нертә уга олзлҗ чаднат, аль та <span class='plainlinks'>[$1 дәкәд орҗ]</span> цацу аль талдан нертә чаднат.
 Зәрм халхс цааранднь та ода чигн орсн мет үзүлҗ чаддг тускар темдглтн (та хәләчин санлиг цеврлтл).",
-'welcomecreation' => '== Ирхитн эрҗәнәвидн, $1! ==
-Таднар шин бичгдлһн бүтв.
-Тадна [[Special:Preferences|{{SITENAME}} preferences]] сольҗ бичә мартн.',
 'yourname' => 'Демнчна нернь:',
 'yourpassword' => 'Нууц үг:',
 'yourpasswordagain' => 'Нууц үгиг давтн:',
@@ -882,8 +879,6 @@ $1',
 'watching' => 'Шинҗллһнә бүтлклд немлһн...',
 'unwatching' => 'Шинҗлһнә бүрткләс һарһлһн...',
 
-'changed' => 'сольв',
-'created' => 'бүтәв',
 'enotif_body' => 'Мендвт, күндтә $WATCHINGUSERNAME,
 
 $PAGEEDITDATE цагт {{SITENAME}} төсвин $PAGETITLE халхиг $PAGEEDITOR $CHANGEDORCREATED. Ода болсн халхна янз үзҗ седхлә, $PAGETITLE_URL хәләтн.
index e68ad03..6615d45 100644 (file)
@@ -594,8 +594,6 @@ $2',
 'logouttext' => "'''איר האָט זיך ארויסלאָגירט.'''
 
 איר קענט ממשיך זיין ניצן {{SITENAME}} אַנאנים, אדער איר קענט  <span class='plainlinks'>[$1 צוריק אריינלאגירן]</span> מיט דעם זעלבן אדער אן אנדער באַניצער נאָמען. באמערקט אז געוויסע בלעטער קענען זיך ווייטער ארויסשטעלן אזוי ווי ווען איר זענט אריינלאגירט, ביז איר וועט אויסליידיגן דעם בלעטערער זאפאס.",
-'welcomecreation' => '== ברוך הבא, $1! ==
-אייער קאנטע איז באשאפן געווארן. נישט פארגעסן צו ענדערן אייערע [[Special:Preferences|{{SITENAME}} פרעפֿערענצן]].',
 'yourname' => 'באַניצער נאָמען:',
 'yourpassword' => 'פאסווארט',
 'yourpasswordagain' => 'ווידער אריינקלאפן פאסווארט',
@@ -967,7 +965,15 @@ $2
 'edit-already-exists' => 'נישט מעגליך צו שאַפֿן נייע בלאט.
 ער עקזיסטירט שוין.',
 'defaultmessagetext' => 'גרונטלעכער מעלדונג טעקסט',
+'content-failed-to-parse' => 'פארזן $2 אינהאלט פאר $1 מאדעל דורכגעפאלן: $3',
 'invalid-content-data' => 'אומגילטיקע אינהאלט דאטן',
+'content-not-allowed-here' => '"$1" אינהאלט נישט דערלויבט אויף בלאט [[$2]]',
+
+# Content models
+'content-model-wikitext' => 'וויקיטעקסט',
+'content-model-text' => 'פשוטער טעקסט',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''אזהרה:''' דער בלאט אנטהאלט צופיל טייערע פארזירער רופן.
@@ -982,6 +988,8 @@ $2
 'parser-template-loop-warning' => 'מוסטער שלייף געטראפן: [[$1]]',
 'parser-template-recursion-depth-warning' => 'מוסטער רעקורסיע טיף מאקסימום איבערגעשטיגן ($1)',
 'language-converter-depth-warning' => 'אַריבער דעם שפּראַך קאַנווערטער טיף לימיט ($1)',
+'node-count-exceeded-category' => 'בלעטער וואו קנופצאל איז צו פיל',
+'node-count-exceeded-warning' => 'קנופנצאל אויפן בלאט צו הויך',
 'converter-manual-rule-error' => 'געטראפן א גרײַז אין האנטלעכן שפראך־קאנווערטירן כלל',
 
 # "Undo" feature
@@ -2140,19 +2148,17 @@ $1",
 
 'enotif_mailer' => 'נאטיפאקאציע שיקער {{SITENAME}}',
 'enotif_reset' => 'באַצייכענען אלע בלעטער שוין געזען',
-'enotif_newpagetext' => 'דאס איז א נייער בלאט.',
 'enotif_impersonal_salutation' => '{{SITENAME}} באַניצער',
-'changed' => 'געטוישט',
-'created' => 'געשאַפֿן',
-'enotif_subject' => 'דער בלאט $PAGETITLE אין {{SITENAME}} $CHANGEDORCREATED דורך $PAGEEDITOR',
+'enotif_subject_deleted' => '{{SITENAME}} בלאט $1 איז אויסגעמעקט געווארן דורך {{gender:$2|$2}}',
+'enotif_subject_created' => '{{SITENAME}} בלאט $1 איז געשאפן געווארן דורך {{gender:$2|$2}}',
+'enotif_subject_moved' => '{{SITENAME}} בלאט $1 איז בגאוועגט געווארן דורך {{gender:$2|$2}}',
+'enotif_subject_changed' => '{{SITENAME}} בלאט $1 איז געענדערט געווארן דורך {{gender:$2|$2}}',
 'enotif_lastvisited' => 'זעט $1 פֿאַר אלע ענדערונגען זינט אײַער לעצטן וויזיט.',
 'enotif_lastdiff' => 'זעט $1 פאר דער ענדערונג.',
 'enotif_anon_editor' => 'אַנאנימער באַניצער $1',
 'enotif_body' => 'טײַערער $WATCHINGUSERNAME,
 
-דער {{SITENAME}} בלאט $PAGETITLE איז געווארן $CHANGEDORCREATED אום $PAGEEDITDATE דורך $PAGEEDITOR, זעט $PAGETITLE_URL פאר דער איצטיגער ווערסיע.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 ענדערערס קורץ ווארט: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2166,6 +2172,9 @@ $NEWPAGE
 אייער פֿריינטליכע  {{SITENAME}} מעלדונגען סיסטעם
 
 --
+צו ענדערן אייער ע־פאסט נאטיפיקאציע שטעלונגען, באזוכט
+{{canonicalurl:{{#special:Preferences}}}}
+
 צו ענדערן אייער אויפֿפאסונג ליסטע, באזוכט
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
@@ -2752,6 +2761,7 @@ $1',
 # JavaScriptTest
 'javascripttest' => 'JavaScript טעסט',
 'javascripttest-title' => 'דורכפירנדיק $1 בדיקות',
+'javascripttest-pagetext-noframework' => ' דער בלאט איז רעזערווירט פאר JavaScript. פרואוון.',
 'javascripttest-pagetext-skins' => 'קלויבט א באניצער־אייבערפלאך מיט וואס דורכצופירן די בדיקות:',
 'javascripttest-qunit-intro' => 'זעט [$1 דאקומענטאציע פאר טעסטן] בײַ mediawiki.org.',
 'javascripttest-qunit-heading' => 'מעדיעוויקי JavaScript QUnit קאנטראל־פראגראם',
@@ -2871,6 +2881,7 @@ $1',
 'pageinfo-default-sort' => 'גרונט סארטירן שליסל',
 'pageinfo-length' => 'בלאט לענג (אין בייטן)',
 'pageinfo-article-id' => 'בלאט נומער',
+'pageinfo-language' => 'בלאט אינהאלט שפראך',
 'pageinfo-robot-policy' => 'זוכמאשין סטאטוס',
 'pageinfo-robot-index' => 'אינדעקסירבאר',
 'pageinfo-robot-noindex' => 'נישט אינדעקסירבאר',
@@ -3090,6 +3101,7 @@ $1',
 'exif-gpsaltitude' => 'הייך',
 'exif-gpstimestamp' => 'GPS צייט (אטאם־זייגער)',
 'exif-gpssatellites' => 'סאטעליטן געניצט פאר מעסטן',
+'exif-gpsstatus' => 'אויפנעמער סטאטוס',
 'exif-gpsdop' => 'מאס פוקנטליכקייט',
 'exif-gpsspeedref' => 'גיך איינהייט',
 'exif-gpsspeed' => 'גיך פון GPS־אויפֿנעמער',
@@ -3502,6 +3514,9 @@ $5
 'hebrew-calendar-m11-gen' => 'אב',
 'hebrew-calendar-m12-gen' => 'אלול',
 
+# Signatures
+'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|רעדן]])',
+
 # Core parser functions
 'duplicate-defaultsort' => '\'\'\'ווארענונג:\'\'\' גרונט סארטשליסל "$2" פֿאָרט איבערן פֿריערדיגן גרונט סארטשליסל "$1".',
 
@@ -3648,9 +3663,9 @@ $5
 'logentry-move-move_redir-noredirect' => '$1 האט באוועגט $3 צו $4 אריבער א ווייטערפירונג אן לאזן א  ווייטערפירונג',
 'logentry-patrol-patrol' => '$1 האט מארקירט רעוויזיע $4 פון בלאט $3 ווי קאנטראלירט',
 'logentry-patrol-patrol-auto' => '$1 האט אויטאמאטיש מארקירט רעוויזיע $4 פון בלאט $3 ווי קאנטראלירט',
-'logentry-newusers-newusers' => '$1 האט געשאפן א באניצער קאנטע',
-'logentry-newusers-create' => '$1 האט געשאפן א באניצער קאנטע',
-'logentry-newusers-create2' => '$1 האט געשאפן א באניצער קאנטע $3',
+'logentry-newusers-newusers' => 'באניצער קאנטע $1 געשאפן געווארן',
+'logentry-newusers-create' => 'באניצער קאנטע $1 געשאפן געווארן',
+'logentry-newusers-create2' => 'באניצער קאנטע $1 געשאפן געווארן דורך $3',
 'logentry-newusers-autocreate' => 'קאנטע $1 באשאפן אויטאמאטיש',
 'newuserlog-byemail' => 'פאַסווארט געשיקט דורך ע-פאסט',
 
index 925b787..df1bcb2 100644 (file)
@@ -449,10 +449,6 @@ Láti ṣ'àfikún tàbí ṣ'àyípadà àwọn ìyédèpadà fún gbogbo àw
 
 Ẹ le tẹ̀síwájú sí ní lo {{SITENAME}} láìmorúkọ yín, tàbí kí ẹ <span class='plainlinks'>[$1 padà wọlé]</span> bí ẹnikanan tàbí ẹlòmíràn.
 Àkíyèsí wípé àwọn ojúewé kan le hàn b'ígbà tójẹ́pé ẹ sì wọlé títí tí ẹ ó fi jọ̀wọ́ cache browser yín.",
-'welcomecreation' => "== Ẹ kú àbọ̀, $1! ==
-
-A ti ṣ'èdá àpamọ́ yín.
-Ẹ mọ́ gbàgbé l'áti ṣ'àtúnṣe àwọn [[Special:Preferences|{{SITENAME}} ìfẹ́ràn]] yín.",
 'yourname' => 'Orúkọ oníṣe:',
 'yourpassword' => 'Ọ̀rọ̀ìpamọ́:',
 'yourpasswordagain' => 'Kọ ọ̀rọ̀ìpamọ́ lẹ́ẹ̀kansí:',
@@ -2021,11 +2017,7 @@ A óò ṣ'àkójọ àwọn àtúnṣe ọjọ́wajú sí ojúewé yìí àti o
 
 'enotif_mailer' => 'Olùránṣẹ́ ìfitọ́nilétí {{SITENAME}}',
 'enotif_reset' => 'Fàlà sí gbogbo àwọn ojúewé bíi bíbẹ̀wò',
-'enotif_newpagetext' => 'Ojúewé tuntun nìyí.',
 'enotif_impersonal_salutation' => 'Oníṣe {{SITENAME}}',
-'changed' => 'títúnṣẹ',
-'created' => 'dídá',
-'enotif_subject' => '$PAGEEDITOR $CHANGEDORCREATED ojúewé $PAGETITLE lórí {{SITENAME}}',
 'enotif_lastvisited' => 'Ẹ wo $1 fún gbogbo àwọn àtúnṣe látìgbà ìbẹ̀wò yín gbẹ̀yìn.',
 'enotif_lastdiff' => 'Ẹ wo $1 láti wo àtúnṣe yìí.',
 'enotif_anon_editor' => 'oníṣe aláìlórúkọ $1',
index bbb69e1..c161856 100644 (file)
@@ -613,9 +613,6 @@ $1',
 
 你重可以用匿名身份用{{SITENAME}},又或者<span class='plainlinks'>[$1 重新登入]</span>。
 但係留意某啲頁面可能會繼續話你未登入,除非等你清除瀏覽器嘅快取儲存。",
-'welcomecreation' => '== 歡迎, $1! ==
-
-你個戶口已經起好。唔好唔記得去改改你嘅[[Special:Preferences|{{SITENAME}}喜好設定]]喎。',
 'yourname' => '用戶名:',
 'yourpassword' => '密碼:',
 'yourpasswordagain' => '再輸入密碼:',
@@ -2039,11 +2036,7 @@ Template:搞清楚',
 
 'enotif_mailer' => '{{SITENAME}}通知郵遞員',
 'enotif_reset' => '將所有頁面標成已視察',
-'enotif_newpagetext' => '呢個係一個新頁面。',
 'enotif_impersonal_salutation' => '{{SITENAME}}用戶',
-'changed' => '修改過',
-'created' => '建立過',
-'enotif_subject' => '{{SITENAME}}嘅頁面$PAGETITLE已由$PAGEEDITOR$CHANGEDORCREATED',
 'enotif_lastvisited' => '你上次視察以嚟嘅修改請睇$1。',
 'enotif_lastdiff' => '睇$1去睇吓呢一次更改。',
 'enotif_anon_editor' => '匿名用戶$1',
index 4911b5c..346b0ee 100644 (file)
@@ -469,7 +469,7 @@ $messages = array(
 'listingcontinuesabbrev' => '续',
 'index-category' => '允许索引的页面',
 'noindex-category' => '禁止索引的页面',
-'broken-file-category' => '损坏的文件的链接的页面',
+'broken-file-category' => '包含损坏的文件链接的页面',
 
 'about' => '关于',
 'article' => '内容页面',
@@ -704,7 +704,8 @@ $1',
 'badtitletext' => '所请求页面的标题是无效的、不存在,跨语言或跨wiki链接的标题错误。它可能包含一个或更多的不能用于标题的字符。',
 'perfcached' => '下列数据已缓存,但可能已过时。最高{{PLURAL:$1|一个结果|$1个结果}}在缓存中可用。',
 'perfcachedts' => '下列数据已缓存,最后更新于$1。缓存中最多可有{{PLURAL:$4|1个结果|$4个结果}}。',
-'querypage-no-updates' => '当前禁止对此页面进行更新。此处的数据将不能被立即刷新。',
+'querypage-no-updates' => '当前禁止对此页面进行更新。
+此处的数据将不能被立即刷新。',
 'wrong_wfQuery_params' => '错误的参数被传递到 wfQuery()<br />
 函数:$1<br />
 查询:$2',
@@ -745,8 +746,6 @@ $2',
 'logouttext' => "'''您现在已经退出。'''
 
 您可以继续以匿名方式使用{{SITENAME}},或再次以相同或不同用户身份<span class='plainlinks'>[$1 登录]</span>。请注意一些页面可能仍然显示您为登录状态,直到您清空您的浏览器缓存为止。",
-'welcomecreation' => '== 欢迎,$1! ==
-你的账户已创建。请别忘记更改你的[[Special:Preferences|{{SITENAME}}系统设置]]。',
 'yourname' => '用户名:',
 'yourpassword' => '密码:',
 'yourpasswordagain' => '再次输入密码:',
@@ -1570,6 +1569,9 @@ $1",
 'rightslogtext' => '这是用户权限更改的日志。',
 'rightslogentry' => '将$1的用户组由$2更改为$3',
 'rightslogentry-autopromote' => '被自动提升自$2至$3',
+'logentry-rights-rights' => '$1将$3的用户组从$4改为$5',
+'logentry-rights-rights-legacy' => '$1更改$3的用户组',
+'logentry-rights-autopromote' => '$1的用户组已自动从$4改为$5',
 'rightsnone' => '(无)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -2067,7 +2069,7 @@ $1',
 'mostlinkedtemplates' => '最多链接模板',
 'mostcategories' => '最多分类页面',
 'mostimages' => '最多链接文件',
-'mostinterwikis' => '跨语言链接最多的页面',
+'mostinterwikis' => '最多跨语言链接页面',
 'mostrevisions' => '最多版本页面',
 'prefixindex' => '所有有前缀的页面',
 'prefixindex-namespace' => '所有有前缀的页面($1名字空间)',
@@ -2174,7 +2176,7 @@ $1',
 'listusersfrom' => '给定显示用户条件:',
 'listusers-submit' => '显示',
 'listusers-noresult' => '找不到用户。',
-'listusers-blocked' => '(已封é\94\81ï¼\89',
+'listusers-blocked' => '(已封ç¦\81ï¼\89',
 
 # Special:ActiveUsers
 'activeusers' => '活跃用户列表',
@@ -2215,7 +2217,7 @@ $1',
 'emailuser-title-target' => '电邮联系该{{GENDER:$1|用户}}',
 'emailuser-title-notarget' => '电邮联系',
 'emailpage' => '电邮联系',
-'emailpagetext' => '你可以使用下面的表格向该用户发送电子邮件信息。你在[[Special:Preferences|你的系统设置]]中输入的电子邮件地址将显示为邮件的“发件人”地址,所以该用户将可以直接回复你。',
+'emailpagetext' => '你可以使用下面的表单向该用户发送电子邮件消息。你在[[Special:Preferences|你的系统设置]]中输入的电子邮件地址将显示为该邮件的“发件人”地址,所以该用户将可以直接回复你。',
 'usermailererror' => 'Mail 对象返回错误:',
 'defemailsubject' => '{{SITENAME}}来自用户“$1”的电子邮件',
 'usermaildisabled' => '用户电邮已停用',
@@ -2281,11 +2283,7 @@ $1',
 
 'enotif_mailer' => '{{SITENAME}}通知发送器',
 'enotif_reset' => '标记所有页面为已访问',
-'enotif_newpagetext' => '该页面为新页面。',
 'enotif_impersonal_salutation' => '{{SITENAME}}用户',
-'changed' => '更改',
-'created' => '创建',
-'enotif_subject' => '{{SITENAME}}页面“$PAGETITLE”已被$PAGEEDITOR$CHANGEDORCREATED',
 'enotif_lastvisited' => '请浏览 $1 查看你上次访问后的所有更改。',
 'enotif_lastdiff' => '请浏览 $1 查看该更改。',
 'enotif_anon_editor' => '匿名用户$1',
@@ -2455,7 +2453,8 @@ $UNWATCHURL
 'undeletedrevisions' => '$1个版本已恢复',
 'undeletedrevisions-files' => '$1个版本和$2个文件已恢复',
 'undeletedfiles' => '$1个文件已经被恢复',
-'cannotundelete' => '恢复删除失败;可能已有其他人先行恢复了此页面。',
+'cannotundelete' => '恢复删除失败:
+$1',
 'undeletedpage' => "'''$1已经被恢复'''
 
 参考[[Special:Log/delete|删除日志]]查看删除及恢复记录。",
@@ -2488,7 +2487,7 @@ $1',
 # Contributions
 'contributions' => '用户贡献',
 'contributions-title' => '$1的用户贡献',
-'mycontris' => '贡献记录',
+'mycontris' => '贡献',
 'contribsub2' => '$1的贡献($2)',
 'nocontribs' => '没有找到符合特征的更改。',
 'uctop' => '(最后更改)',
@@ -2755,6 +2754,7 @@ $1被封禁的理由是:“$2”',
 'immobile-target-namespace-iw' => '在移动页面时,跨wiki链接不是有效的目标。',
 'immobile-source-page' => '此页面不能移动。',
 'immobile-target-page' => '无法移动至该目标标题。',
+'bad-target-model' => '要求的目标使用不同的内容模式。无法从$1转换到$2。',
 'imagenocrossnamespace' => '无法将文件移动到非文件名字空间',
 'nonfile-cannot-move-to-file' => '无法将非文件移动到文件名字空间',
 'imagetypemismatch' => '该新扩展名与其类型不匹配',
@@ -3017,7 +3017,7 @@ $1被封禁的理由是:“$2”',
 'pageinfo-header-restrictions' => '页面保护',
 'pageinfo-header-properties' => '页面属性',
 'pageinfo-display-title' => '显示的标题',
-'pageinfo-default-sort' => '默认排序',
+'pageinfo-default-sort' => '默认排序',
 'pageinfo-length' => '页面长度(字节)',
 'pageinfo-article-id' => '页面ID',
 'pageinfo-language' => '页面内容语言',
@@ -3066,6 +3066,8 @@ $1被封禁的理由是:“$2”',
 'markedaspatrollederror' => '不能标志为已检查',
 'markedaspatrollederrortext' => '你需要指定某个版本才能标志为已检查。',
 'markedaspatrollederror-noautopatrol' => '您无法将你自己所作的更改标记为已检查。',
+'markedaspatrollednotify' => '$1的更改已被标记为已巡查。',
+'markedaspatrollederrornotify' => '标记为已巡查失败。',
 
 # Patrol log
 'patrol-log-page' => '巡查日志',
index d256ff5..1da4ae8 100644 (file)
@@ -42,6 +42,7 @@
  * @author Wong128hk
  * @author Wrightbus
  * @author Xiaomingyan
+ * @author Yfdyh000
  * @author Yuyu
  */
 
@@ -336,7 +337,7 @@ $messages = array(
 'listingcontinuesabbrev' => '續',
 'index-category' => '已做索引的頁面',
 'noindex-category' => '未做索引的頁面',
-'broken-file-category' => '有連結至已損壞檔案頁的連結之頁面',
+'broken-file-category' => '包含損壞的檔案連結的頁面',
 
 'about' => '關於',
 'article' => '內容頁面',
@@ -376,6 +377,7 @@ $messages = array(
 'namespaces' => '名字空間',
 'variants' => '變換',
 
+'navigation-heading' => '導航',
 'errorpagetitle' => '錯誤',
 'returnto' => '返回到$1。',
 'tagline' => '出自{{SITENAME}}',
@@ -576,7 +578,8 @@ $1',
 'badtitletext' => '所請求頁面的標題是無效的、不存在,跨語言或跨wiki連結的標題錯誤。它可能包含一個或更多的不能用於標題的字符。',
 'perfcached' => '下列是快取資料,因此可能不是最新的。最多{{PLURAL:$1|只有1個結果|$1個結果}}可用。',
 'perfcachedts' => '下列是快取資料,其最後更新時間是$1。只有{{PLURAL:$4|一個結果|$4個結果}}會被顯示。 A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
-'querypage-no-updates' => '目前禁止對此頁面進行更新。此處的資料將不能被立即重新整理。',
+'querypage-no-updates' => '目前禁止對此頁面進行更新。
+此處的資料將不能被立即重新整理。',
 'wrong_wfQuery_params' => '錯誤的參數被傳遞到 wfQuery()<br />
 函數:$1<br />
 查詢:$2',
@@ -617,10 +620,10 @@ $2',
 
 您可以以匿名方式繼續使用{{SITENAME}},或以相同或不同用戶身份<span class='plainlinks'>[$1 登入]</span>。
 請注意,如果你再次登入,此頁或會繼續顯示,直到您清除瀏覽器緩存。",
-'welcomecreation' => '== 歡迎,$1! ==
-您的賬號已經建立。
+'welcomeuser' => '歡迎,$1!',
+'welcomecreation-msg' => '您的賬號已經建立。
 不要忘記設置[[Special:Preferences|{{SITENAME}}的個人參數]]。',
-'yourname' => '您的使用者名稱:',
+'yourname' => '用戶名:',
 'yourpassword' => '您的密碼:',
 'yourpasswordagain' => '再次輸入密碼:',
 'remembermypassword' => '在這個瀏覽器上記住我的登入資訊(可維持 $1 {{PLURAL:$1|天|天}})',
@@ -734,7 +737,7 @@ $2',
 'passwordreset-legend' => '重設密碼',
 'passwordreset-disabled' => '此維基上已禁止了重設密碼。',
 'passwordreset-pretext' => '{{PLURAL:$1||輸入下列其中一個}}',
-'passwordreset-username' => '使用者名稱:',
+'passwordreset-username' => '用戶名:',
 'passwordreset-domain' => '域名:',
 'passwordreset-capture' => '查看生成的電子郵件嗎?',
 'passwordreset-capture-help' => '如果您選中此框,電子郵件(包括臨時密碼)將顯示,並發送給用戶。',
@@ -1243,7 +1246,7 @@ $1",
 # Preferences page
 'preferences' => '偏好設定',
 'mypreferences' => '偏好設定',
-'prefs-edits' => '編輯æ\95¸é\87\8f:',
+'prefs-edits' => '編輯次æ\95¸:',
 'prefsnologin' => '還未登入',
 'prefsnologintext' => '您必須先<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登入]</span>才能設置個人參數。',
 'changepassword' => '更改密碼',
@@ -1273,13 +1276,13 @@ $1",
 'restoreprefs' => '恢復所有預設設定',
 'prefs-editing' => '編輯',
 'prefs-edit-boxsize' => '編輯框尺寸',
-'rows' => '列:',
-'columns' => '欄:',
+'rows' => '行:',
+'columns' => '列:',
 'searchresultshead' => '搜尋',
-'resultsperpage' => '每頁顯示連結數',
+'resultsperpage' => '每頁顯示連結數',
 'stub-threshold' => '<a href="#" class="stub">短頁面連結</a>格式門檻值 (位元組):',
 'stub-threshold-disabled' => '已停用',
-'recentchangesdays' => '最近更改中的顯示日數:',
+'recentchangesdays' => '最近更改中的顯示日數',
 'recentchangesdays-max' => '最多$1{{PLURAL:$1|天}}',
 'recentchangescount' => '預設顯示的編輯數:',
 'prefs-help-recentchangescount' => '這個包括最近更改、頁面歷史以及日誌。',
@@ -1288,11 +1291,11 @@ $1",
 這裡有一個任意生成的值,供您選擇:$1',
 'savedprefs' => '您的個人偏好設定已經儲存。',
 'timezonelegend' => '時區:',
-'localtime' => '當地時間:',
+'localtime' => '當地時間',
 'timezoneuseserverdefault' => '使用預設($1)',
 'timezoneuseoffset' => '其他 (指定偏移)',
 'timezoneoffset' => '時差¹:',
-'servertime' => '伺服器時間:',
+'servertime' => '伺服器時間',
 'guesstimezone' => '從瀏覽器填寫',
 'timezoneregion-africa' => '非洲',
 'timezoneregion-america' => '美洲',
@@ -1316,16 +1319,16 @@ $1",
 'prefs-reset-intro' => '您可以利用這個頁面去重設您的參數設置到網站預設值。這個動作無法復原。',
 'prefs-emailconfirm-label' => '電子郵件確認:',
 'prefs-textboxsize' => '編輯框大小',
-'youremail' => '電子郵件:',
-'username' => '用戶名:',
-'uid' => '用戶ID:',
-'prefs-memberingroups' => '{{PLURAL:$1|群組}}:',
-'prefs-registration' => '註冊時間:',
+'youremail' => '電子郵件',
+'username' => '用戶名',
+'uid' => '用戶ID',
+'prefs-memberingroups' => '{{PLURAL:$1|群組}}',
+'prefs-registration' => '註冊時間',
 'yourrealname' => '真實姓名:',
 'yourlanguage' => '語言:',
 'yourvariant' => '內容語言變體:',
 'prefs-help-variant' => '您希望用於顯示本站內容的語種或拼寫語系。',
-'yournick' => '新簽名:',
+'yournick' => '新簽名',
 'prefs-help-signature' => '在討論頁面上的評論應該要用「<nowiki>~~~~</nowiki>」簽名,這樣便會轉換成{{GENDER:|你|妳|你}}的簽名以及一個時間截記。',
 'badsig' => '錯誤的原始簽名。請檢查HTML標籤。',
 'badsiglength' => '您的簽名過長。
@@ -1696,6 +1699,7 @@ $1',
 'backend-fail-notsame' => '$1已存在不同的文件。',
 'backend-fail-invalidpath' => '$1不是有效的存儲路徑。',
 'backend-fail-delete' => '無法刪除「$1」檔案。',
+'backend-fail-describe' => '無法修改檔案「$1」的元數據。',
 'backend-fail-alreadyexists' => '“$1”頁面已存在',
 'backend-fail-store' => '無法在$2存儲文件$1。',
 'backend-fail-copy' => '無法複製文件$1到$2。',
@@ -2007,7 +2011,7 @@ Template:消除歧義',
 'usereditcount' => '$1 次編輯',
 'usercreated' => '$1 $2{{GENDER:$3|創建}}',
 'newpages' => '最新頁面',
-'newpages-username' => '用戶名:',
+'newpages-username' => '用戶名',
 'ancientpages' => '最舊頁面',
 'move' => '移動',
 'movethispage' => '移動本頁',
@@ -2092,7 +2096,7 @@ Template:消除歧義',
 'listusersfrom' => '給定顯示用戶條件:',
 'listusers-submit' => '顯示',
 'listusers-noresult' => '找不到用戶。',
-'listusers-blocked' => '(已封)',
+'listusers-blocked' => '(已封)',
 
 # Special:ActiveUsers
 'activeusers' => '活躍用戶列表',
@@ -2203,20 +2207,23 @@ Template:消除歧義',
 
 'enotif_mailer' => '{{SITENAME}}郵件通知器',
 'enotif_reset' => '將所有頁面標為已閱讀',
-'enotif_newpagetext' => '這是新建頁面。',
 'enotif_impersonal_salutation' => '{{SITENAME}}用戶',
-'changed' => '更改',
-'created' => '建立了',
-'enotif_subject' => '{{SITENAME}}頁面“$PAGETITLE”已被$PAGEEDITOR$CHANGEDORCREATED',
+'enotif_subject_deleted' => '{{SITENAME}}的「$1」頁面被$2刪除',
+'enotif_subject_created' => '{{SITENAME}}的「$1」頁面被$2建立',
+'enotif_subject_moved' => '{{SITENAME}}的「$1」頁面被$2移動',
+'enotif_subject_restored' => '{{SITENAME}}的「$1」頁面被$2恢復',
+'enotif_subject_changed' => '{{SITENAME}}的「$1」頁面被$2修改',
+'enotif_body_intro_deleted' => '{{SITENAME}}的「$1」頁面於$PAGEEDITDATE被$2刪除,請見$3瀏覽當前版本。',
+'enotif_body_intro_created' => '{{SITENAME}}的「$1」頁面於$PAGEEDITDATE被$2建立,請見$3瀏覽當前版本。。',
+'enotif_body_intro_moved' => '{{SITENAME}}的「$1」頁面於$PAGEEDITDATE被$2移動,請見$3瀏覽當前版本。',
+'enotif_body_intro_restored' => '{{SITENAME}}的「$1」頁面於$PAGEEDITDATE被$2恢復,請見$3瀏覽當前版本。',
+'enotif_body_intro_changed' => '{{SITENAME}}的「$1」頁面於$PAGEEDITDATE被$2修改,請見$3瀏覽當前版本。',
 'enotif_lastvisited' => '請參閱 $1 檢視你上次訪問後的所有更改。',
 'enotif_lastdiff' => '請參閱 $1 檢視該更改。',
 'enotif_anon_editor' => '匿名用戶$1',
-'enotif_body' => '親愛的$WATCHINGUSERNAME:
+'enotif_body' => '$WATCHINGUSERNAME:
 
-
-{{SITENAME}}的頁面$PAGETITLE已經於$PAGEEDITDATE由$PAGEEDITOR$CHANGEDORCREATED,請見 $PAGETITLE_URL 瀏覽現在的版本。
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 編輯摘要:$PAGESUMMARY $PAGEMINOREDIT
 
@@ -2225,22 +2232,21 @@ $NEWPAGE
 郵件:$PAGEEDITOR_EMAIL
 本站:$PAGEEDITOR_WIKI
 
-在您訪問此頁之前,將來的更改將不會向您發通知。
-您也可以在監視列表中重設您所有監視頁面的通知標記。
+在您訪問此頁之前,將來的更改將不會向您發出通知。您也可以在監視列表中重設您所有監視頁面的通知標記。
 
-                        友好的{{SITENAME}}通知系統
+{{SITENAME}}通知系統啟
 
 --
-要改變您的電郵設定,請參閱
+更改電郵通知設定:
 {{canonicalurl:{{#special:Preferences}}}}
 
-要改變您的監視列表設定,請參閱
+更改監視列表設定:
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-要刪除您監視清單中的該頁面,請參閱
+從監視列表中刪除此頁面:
 $UNWATCHURL
 
-回饋和進一步的幫助:
+回饋和其他幫助:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
 
 # Delete
@@ -2421,7 +2427,7 @@ $1',
 # Contributions
 'contributions' => '用戶貢獻',
 'contributions-title' => '$1的用戶貢獻',
-'mycontris' => '貢獻',
+'mycontris' => '我的貢獻',
 'contribsub2' => '$1的貢獻 ($2)',
 'nocontribs' => '沒有找到符合特徵的更改。',
 'uctop' => '(最新修改)',
@@ -3009,6 +3015,8 @@ $1被封禁的理由是“$2”',
 'markedaspatrollederror' => '不能標誌為已檢查',
 'markedaspatrollederrortext' => '{{GENDER:|你|妳|你}}需要指定某個版本才能標誌為已檢查。',
 'markedaspatrollederror-noautopatrol' => '您無法將{{GENDER:|你|妳|你}}自己所作的更改標記為已檢查。',
+'markedaspatrollednotify' => '$1的更改已標記為已巡查。',
+'markedaspatrollederrornotify' => '標記為巡查失敗。',
 
 # Patrol log
 'patrol-log-page' => '巡查日誌',
@@ -3072,6 +3080,7 @@ $1',
 'hours' => '$1小時',
 'days' => '$1天',
 'ago' => '$1前',
+'just-now' => '剛才',
 
 # Bad image list
 'bad_image_list' => '請按照下列格式編寫:
@@ -3087,7 +3096,7 @@ To disable showing a particular link, set it to 'disable', e.g.
 Variants for Chinese language
 */
 'variantname-zh-hans' => '‪中文(简体)',
-'variantname-zh-hant' => '‪中文(繁體)',
+'variantname-zh-hant' => '‪繁體中文',
 'variantname-zh-cn' => '大陸簡體',
 'variantname-zh-tw' => '台灣正體',
 'variantname-zh-hk' => '香港繁體',
@@ -3842,9 +3851,9 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'logentry-move-move_redir-noredirect' => '$1通過重定向移動$3頁面至$4,不留重定向',
 'logentry-patrol-patrol' => '$1標記頁面$3的版本$4為已巡查',
 'logentry-patrol-patrol-auto' => '$1自動標記頁面$3的版本$4為已巡查',
-'logentry-newusers-newusers' => '$1建立新帳號',
-'logentry-newusers-create' => '$1創建賬戶',
-'logentry-newusers-create2' => '$1創建賬戶$3',
+'logentry-newusers-newusers' => '已建立用戶「$1」',
+'logentry-newusers-create' => '已建立用戶「$1」',
+'logentry-newusers-create2' => '用戶「$1」建立用戶「$3」',
 'logentry-newusers-autocreate' => '帳戶$1被自動創建',
 'newuserlog-byemail' => '密碼已由電子郵件寄出',
 
@@ -3920,5 +3929,5 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'duration-millennia' => '$1千年',
 
 # Unknown messages
-'mytalk-parenthetical' => '對話頁',
+'svg-long-error' => '無效的SVG檔案:$1',
 );
index be2b8c3..56627f7 100644 (file)
@@ -7,7 +7,25 @@
  * @author Niklas Laxstrom, Tim Starling
  *
  * @copyright Copyright © 2010-2012, Niklas Laxström
- * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0
+ * or later
+ *
+ * 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
  * @since 1.20
  */
index ea649a6..b0371c0 100644 (file)
@@ -108,6 +108,12 @@ abstract class Maintenance {
         */
        private $mDb = null;
 
+       /**
+        * Used when creating separate schema files.
+        * @var resource
+        */
+       public $fileHandle;
+
        /**
         * List of all the core maintenance scripts. This is added
         * to scripts added by extensions in $wgMaintenanceScripts
diff --git a/maintenance/archives/patch-job_attempts.sql b/maintenance/archives/patch-job_attempts.sql
new file mode 100644 (file)
index 0000000..47b73e8
--- /dev/null
@@ -0,0 +1,4 @@
+ALTER TABLE /*_*/job
+    ADD COLUMN job_attempts integer unsigned NOT NULL default 0;
+
+CREATE INDEX /*i*/job_cmd_token_id ON /*_*/job (job_cmd,job_token,job_id);
old mode 100755 (executable)
new mode 100644 (file)
index f37af77..3539689
@@ -1,52 +1,52 @@
-<?php\r
-/**\r
- * Remove hidden preferences from the database.\r
- *\r
- * This program is free software; you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License along\r
- * with this program; if not, write to the Free Software Foundation, Inc.,\r
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
- * http://www.gnu.org/copyleft/gpl.html\r
- *\r
- * @file\r
- * @author TyA <tya.wiki@gmail.com>\r
- * @see [[bugzilla:30976]]\r
- * @ingroup Maintenance\r
- */\r
-\r
-require_once( __DIR__ . '/Maintenance.php' );\r
-\r
-/**\r
- * Maintenance script that removes hidden preferences from the database.\r
- *\r
- * @ingroup Maintenance\r
- */\r
-class CleanupPreferences extends Maintenance {\r
-       public function execute() {\r
-               global $wgHiddenPrefs;\r
-\r
-               $dbw = wfGetDB( DB_MASTER );\r
-               $dbw->begin();\r
-               foreach( $wgHiddenPrefs as $item ) {\r
-                       $dbw->delete(\r
-                               'user_properties',\r
-                               array( 'up_property' => $item ),\r
-                               __METHOD__\r
-                       );\r
-               };\r
-               $dbw->commit();\r
-               $this->output( "Finished!\n" );\r
-       }\r
-}\r
-\r
-$maintClass = 'CleanupPreferences'; // Tells it to run the class\r
-require_once( RUN_MAINTENANCE_IF_MAIN );\r
+<?php
+/**
+ * Remove hidden preferences from the database.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author TyA <tya.wiki@gmail.com>
+ * @see [[bugzilla:30976]]
+ * @ingroup Maintenance
+ */
+
+require_once( __DIR__ . '/Maintenance.php' );
+
+/**
+ * Maintenance script that removes hidden preferences from the database.
+ *
+ * @ingroup Maintenance
+ */
+class CleanupPreferences extends Maintenance {
+       public function execute() {
+               global $wgHiddenPrefs;
+
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->begin();
+               foreach( $wgHiddenPrefs as $item ) {
+                       $dbw->delete(
+                               'user_properties',
+                               array( 'up_property' => $item ),
+                               __METHOD__
+                       );
+               };
+               $dbw->commit();
+               $this->output( "Finished!\n" );
+       }
+}
+
+$maintClass = 'CleanupPreferences'; // Tells it to run the class
+require_once( RUN_MAINTENANCE_IF_MAIN );
index d77029e..20fb477 100644 (file)
@@ -60,7 +60,7 @@ class wikiStatsOutput extends statsOutput {
                        echo ', as well as the following languages that are not intended for system message translations, usually because they redirect to other language codes: ' . implode( ', ', $dummyCodes );
                }
                echo ".\n\n"; # dot to end sentence
-               echo '{| class="sortable wikitable" border="2" cellpadding="4" cellspacing="0" style="background-color: #F9F9F9; border: 1px #AAAAAA solid; border-collapse: collapse; clear:both;" width="100%"' . "\n";
+               echo '{| class="sortable wikitable" border="2" style="background-color: #F9F9F9; border: 1px #AAAAAA solid; border-collapse: collapse; clear:both; width:100%;"' . "\n";
        }
        function footer() {
                echo "|}\n";
@@ -96,7 +96,7 @@ class wikiStatsOutput extends statsOutput {
                $color = $red . $green . $blue;
 
                $percent = parent::formatPercent( $subset, $total, $revert, $accuracy );
-               return 'bgcolor="#' . $color . '"|' . $percent;
+               return 'style="background-color:#' . $color . ';"|' . $percent;
        }
 }
 
index eee9799..2e9ebc2 100644 (file)
@@ -203,6 +203,7 @@ $wgMessageStructure = array(
                'variants',
        ),
        'miscellaneous2' => array(
+               'navigation-heading',
                'errorpagetitle',
                'returnto',
                'tagline',
@@ -425,7 +426,8 @@ $wgMessageStructure = array(
        ),
        'login' => array(
                'logouttext',
-               'welcomecreation',
+               'welcomeuser',
+               'welcomecreation-msg',
                'yourname',
                'yourpassword',
                'yourpasswordagain',
@@ -1399,6 +1401,7 @@ $wgMessageStructure = array(
                'backend-fail-notsame',
                'backend-fail-invalidpath',
                'backend-fail-delete',
+               'backend-fail-describe',
                'backend-fail-alreadyexists',
                'backend-fail-store',
                'backend-fail-copy',
@@ -1946,11 +1949,17 @@ $wgMessageStructure = array(
        'enotif' => array(
                'enotif_mailer',
                'enotif_reset',
-               'enotif_newpagetext',
                'enotif_impersonal_salutation',
-               'changed',
-               'created',
-               'enotif_subject',
+               'enotif_subject_deleted',
+               'enotif_subject_created',
+               'enotif_subject_moved',
+               'enotif_subject_restored',
+               'enotif_subject_changed',
+               'enotif_body_intro_deleted',
+               'enotif_body_intro_created',
+               'enotif_body_intro_moved',
+               'enotif_body_intro_restored',
+               'enotif_body_intro_changed',
                'enotif_lastvisited',
                'enotif_lastdiff',
                'enotif_anon_editor',
@@ -2738,6 +2747,8 @@ $wgMessageStructure = array(
                'markedaspatrollederror',
                'markedaspatrollederrortext',
                'markedaspatrollederror-noautopatrol',
+               'markedaspatrollednotify',
+               'markedaspatrollederrornotify',
        ),
        'patrol-log' => array(
                'patrol-log-page',
@@ -2804,6 +2815,7 @@ $wgMessageStructure = array(
                'hours',
                'days',
                'ago',
+               'just-now',
        ),
        'badimagelist' => array(
                'bad_image_list',
index c591665..4358989 100644 (file)
@@ -242,7 +242,9 @@ class LockServerDaemon {
                $m = explode( ':', $data ); // <session, key, command, type, values>
                if ( count( $m ) == 5 ) {
                        list( $session, $key, $command, $type, $values ) = $m;
-                       if ( sha1( $session . $command . $type . $values . $this->authKey ) !== $key ) {
+                       $goodKey = hash_hmac( 'sha1',
+                               "{$session}\n{$command}\n{$type}\n{$values}", $this->authKey );
+                       if ( $goodKey !== $key ) {
                                return 'BAD_KEY';
                        } elseif ( strlen( $session ) !== 32 ) {
                                return 'BAD_SESSION';
index 875b93d..17a3f2e 100644 (file)
@@ -44,26 +44,34 @@ class nextJobDB extends Maintenance {
                $memcKey = 'jobqueue:dbs:v3';
                $pendingDbInfo = $wgMemc->get( $memcKey );
 
-               // If the cache entry wasn't present, or in 1% of cases otherwise,
-               // regenerate the cache. Use any available stale cache if another
-               // process is currently regenerating the pending DB information.
-               if ( !$pendingDbInfo || mt_rand( 0, 100 ) == 0 ) {
-                       $lock = $wgMemc->add( 'jobqueue:dbs:v3:lock', 1, 1800 ); // lock
-                       if ( $lock ) {
+               // If the cache entry wasn't present, is stale, or in .1% of cases otherwise,
+               // regenerate the cache. Use any available stale cache if another process is
+               // currently regenerating the pending DB information.
+               if ( !is_array( $pendingDbInfo )
+                       || ( time() - $pendingDbInfo['timestamp'] ) > 300 // 5 minutes
+                       || mt_rand( 0, 999 ) == 0
+               ) {
+                       if ( $wgMemc->add( "$memcKey:rebuild", 1, 1800 ) ) { // lock
                                $pendingDbInfo = array(
                                        'pendingDBs' => $this->getPendingDbs(),
                                        'timestamp'  => time()
                                );
-                               $wgMemc->set( $memcKey, $pendingDbInfo );
-                               $wgMemc->delete( 'jobqueue:dbs:v3:lock' ); // unlock
+                               for ( $attempts=1; $attempts <= 25; ++$attempts ) {
+                                       if ( $wgMemc->add( "$memcKey:lock", 1, 60 ) ) { // lock
+                                               $wgMemc->set( $memcKey, $pendingDbInfo );
+                                               $wgMemc->delete( "$memcKey:lock" ); // unlock
+                                               break;
+                                       }
+                               }
+                               $wgMemc->delete( "$memcKey:rebuild" ); // unlock
                        }
                }
 
-               if ( !$pendingDbInfo || !$pendingDbInfo['pendingDBs'] ) {
+               if ( !is_array( $pendingDbInfo ) || !$pendingDbInfo['pendingDBs'] ) {
                        return; // no DBs with jobs or cache is both empty and locked
                }
-               $pendingDBs = $pendingDbInfo['pendingDBs'];
 
+               $pendingDBs = $pendingDbInfo['pendingDBs']; // convenience
                do {
                        $again = false;
 
@@ -81,17 +89,25 @@ class nextJobDB extends Maintenance {
                        $candidates = array_values( $candidates );
                        $db = $candidates[ mt_rand( 0, count( $candidates ) - 1 ) ];
                        if ( !$this->checkJob( $type, $db ) ) {
-                               // This job is not available in the current database. Remove it from
-                               // the cache.
                                if ( $type === false ) {
+                                       // There are no jobs available in the current database
                                        foreach ( $pendingDBs as $type2 => $dbs ) {
                                                $pendingDBs[$type2] = array_diff( $pendingDBs[$type2], array( $db ) );
                                        }
                                } else {
+                                       // There are no jobs of this type available in the current database
                                        $pendingDBs[$type] = array_diff( $pendingDBs[$type], array( $db ) );
                                }
-
-                               $wgMemc->set( $memcKey, $pendingDBs, 300 );
+                               // Update the cache to remove the outdated information.
+                               // Make sure that this does not race (especially with full rebuilds).
+                               $pendingDbInfo['pendingDBs'] = $pendingDBs;
+                               if ( $wgMemc->add( "$memcKey:lock", 1, 60 ) ) { // lock
+                                       $curInfo = $wgMemc->get( $memcKey );
+                                       if ( $curInfo && $curInfo['timestamp'] === $pendingDbInfo['timestamp'] ) {
+                                               $wgMemc->set( $memcKey, $pendingDbInfo );
+                                       }
+                                       $wgMemc->delete( "$memcKey:lock" ); // unlock
+                               }
                                $again = true;
                        }
                } while ( $again );
index 6c57fde..27e692d 100644 (file)
@@ -48,6 +48,12 @@ class PopulateFilearchiveSha1 extends LoggedUpdateMaintenance {
                $dbw = wfGetDB( DB_MASTER );
                $table = 'filearchive';
                $conds = array( 'fa_sha1' => '', 'fa_storage_key IS NOT NULL' );
+
+               if ( !$dbw->fieldExists( $table, 'fa_sha1', __METHOD__ ) ) {
+                       $this->output( "fa_sha1 column does not exist\n\n", true );
+                       return false;
+               }
+
                $this->output( "Populating fa_sha1 field from fa_storage_key\n" );
                $endId = $dbw->selectField( $table, 'MAX(fa_id)', false, __METHOD__ );
 
index 07c395f..4827642 100644 (file)
@@ -48,7 +48,11 @@ class PopulateRevisionLength extends LoggedUpdateMaintenance {
                $db = $this->getDB( DB_MASTER );
                if ( !$db->tableExists( 'revision' ) ) {
                        $this->error( "revision table does not exist", true );
+               } else if ( !$db->fieldExists( 'revision', 'rev_sha1', __METHOD__ ) ) {
+                       $this->output( "rev_sha1 column does not exist\n\n", true );
+                       return false;
                }
+
                $this->output( "Populating rev_len column\n" );
 
                $start = $db->selectField( 'revision', 'MIN(rev_id)', false, __METHOD__ );
index 382b7be..113eef4 100644 (file)
@@ -48,6 +48,9 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance {
                        $this->error( "revision table does not exist", true );
                } elseif ( !$db->tableExists( 'archive' ) ) {
                        $this->error( "archive table does not exist", true );
+               } else if ( !$db->fieldExists( 'revision', 'rev_sha1', __METHOD__ ) ) {
+                       $this->output( "rev_sha1 column does not exist\n\n", true );
+                       return false;
                }
 
                $this->output( "Populating rev_sha1 column\n" );
diff --git a/maintenance/postgres/archives/patch-ipb_address_unique.sql b/maintenance/postgres/archives/patch-ipb_address_unique.sql
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/maintenance/refreshFileHeaders.php b/maintenance/refreshFileHeaders.php
new file mode 100644 (file)
index 0000000..74f0f35
--- /dev/null
@@ -0,0 +1,93 @@
+<?php
+/**
+ * Refresh file headers from metadata.
+ *
+ * Usage: php refreshFileHeaders.php
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Aaron Schulz
+ * @ingroup Maintenance
+ */
+
+require_once( __DIR__ . '/Maintenance.php' );
+
+/**
+ * Maintenance script to refresh file headers from metadata
+ *
+ * @ingroup Maintenance
+ */
+class RefreshFileHeaders extends Maintenance {
+       function __construct() {
+               parent::__construct();
+               $this->mDescription = 'Script to update file HTTP headers';
+               $this->addOption( 'verbose', 'Output information about each file.', false, false, 'v' );
+               $this->addOption( 'start', 'Name of file to start with', false, true );
+               $this->addOption( 'end', 'Name of file to end with', false, true );
+               $this->setBatchSize( 200 );
+       }
+
+       public function execute() {
+               $repo = RepoGroup::singleton()->getLocalRepo();
+               $start = str_replace( ' ', '_', $this->getOption( 'start', '' ) ); // page on img_name
+               $end = str_replace( ' ', '_', $this->getOption( 'end', '' ) ); // page on img_name
+
+               $count = 0;
+               $dbr = wfGetDB( DB_SLAVE );
+               do {
+                       $conds = array( "img_name > {$dbr->addQuotes( $start )}" );
+                       if ( strlen( $end ) ) {
+                               $conds[] = "img_name <= {$dbr->addQuotes( $end )}";
+                       }
+                       $res = $dbr->select( 'image', '*', $conds,
+                               __METHOD__, array( 'LIMIT' => $this->mBatchSize, 'ORDER BY' => 'img_name ASC' ) );
+                       foreach ( $res as $row ) {
+                               $file = $repo->newFileFromRow( $row );
+                               $headers = $file->getStreamHeaders();
+                               if ( count( $headers ) ) {
+                                       $this->updateFileHeaders( $file, $headers );
+                               }
+                               // Do all of the older file versions...
+                               foreach ( $file->getHistory() as $oldFile ) {
+                                       $headers = $oldFile->getStreamHeaders();
+                                       if ( count( $headers ) ) {
+                                               $this->updateFileHeaders( $oldFile, $headers );
+                                       }
+                               }
+                               if ( $this->hasOption( 'verbose' ) ) {
+                                       $this->output( "Updated headers for file '{$row->img_name}'.\n" );
+                               }
+                               ++$count;
+                               $start = $row->img_name; // advance
+                       }
+               } while ( $res->numRows() > 0 );
+
+               $this->output( "Done. Updated headers for $count file(s).\n" );
+       }
+
+       protected function updateFileHeaders( File $file, array $headers ) {
+               $status = $file->getRepo()->getBackend()->describe( array(
+                       'src' => $file->getPath(), 'headers' => $headers
+               ) );
+               if ( !$status->isGood() ) {
+                       $this->error( "Encountered error: " . print_r( $status, true ) );
+               }
+       }
+}
+
+$maintClass = 'RefreshFileHeaders';
+require_once( RUN_MAINTENANCE_IF_MAIN );
index ad9a380..2ba2b3d 100644 (file)
@@ -80,8 +80,6 @@ class DumpRenderer extends Maintenance {
         * @param $rev Revision
         */
        public function handleRevision( $rev ) {
-               global $wgParserConf;
-
                $title = $rev->getTitle();
                if ( !$title ) {
                        $this->error( "Got bogus revision with null title!" );
diff --git a/maintenance/sqlite/archives/patch-profiling.sql b/maintenance/sqlite/archives/patch-profiling.sql
new file mode 100644 (file)
index 0000000..4a07283
--- /dev/null
@@ -0,0 +1,12 @@
+-- profiling table
+-- This is optional
+
+CREATE TABLE /*_*/profiling (
+  pf_count int NOT NULL default 0,
+  pf_time float NOT NULL default 0,
+  pf_memory float NOT NULL default 0,
+  pf_name varchar(255) NOT NULL default '',
+  pf_server varchar(30) NOT NULL default ''
+);
+
+CREATE UNIQUE INDEX /*i*/pf_name_server ON /*_*/profiling (pf_name, pf_server);
index bdcd66e..aae5042 100644 (file)
@@ -1291,10 +1291,12 @@ CREATE TABLE /*_*/job (
   -- Stored as a PHP serialized array, or an empty string if there are no parameters
   job_params blob NOT NULL,
 
-  -- Random, non-unique, number used for job acquisition
-  -- Either a simple timestamp or a totally random number (for lock concurrency)
+  -- Random, non-unique, number used for job acquisition (for lock concurrency)
   job_random integer unsigned NOT NULL default 0,
 
+  -- The number of times this job has been locked
+  job_attempts integer unsigned NOT NULL default 0,
+
   -- Field that conveys process locks on rows via process UUIDs
   job_token varbinary(32) NOT NULL default '',
 
@@ -1307,6 +1309,7 @@ CREATE TABLE /*_*/job (
 
 CREATE INDEX /*i*/job_sha1 ON /*_*/job (job_sha1);
 CREATE INDEX /*i*/job_cmd_token ON /*_*/job (job_cmd,job_token,job_random);
+CREATE INDEX /*i*/job_cmd_token_id ON /*_*/job (job_cmd,job_token,job_id);
 CREATE INDEX /*i*/job_cmd ON /*_*/job (job_cmd, job_namespace, job_title, job_params(128));
 CREATE INDEX /*i*/job_timestamp ON /*_*/job (job_timestamp);
 
index cb6f06b..ba1d8cd 100644 (file)
@@ -40,7 +40,6 @@ require_once( __DIR__ . '/Maintenance.php' );
  * @ingroup Maintenance
  */
 class UpdateMediaWiki extends Maintenance {
-
        function __construct() {
                parent::__construct();
                $this->mDescription = "MediaWiki database updater";
@@ -48,6 +47,8 @@ class UpdateMediaWiki extends Maintenance {
                $this->addOption( 'quick', 'Skip 5 second countdown before starting' );
                $this->addOption( 'doshared', 'Also update shared tables' );
                $this->addOption( 'nopurge', 'Do not purge the objectcache table after updates' );
+               $this->addOption( 'noschema', 'Only do the updates that are not done during schema updates' );
+               $this->addOption( 'schema', 'Output SQL to do the schema updates instead of doing them.  Works even when $wgAllowSchemaUpdates is false', false, true );
                $this->addOption( 'force', 'Override when $wgAllowSchemaUpdates disables this script' );
        }
 
@@ -83,10 +84,24 @@ class UpdateMediaWiki extends Maintenance {
        function execute() {
                global $wgVersion, $wgTitle, $wgLang, $wgAllowSchemaUpdates;
 
-               if( !$wgAllowSchemaUpdates && !$this->hasOption( 'force' ) ) {
+               if( !$wgAllowSchemaUpdates && !( $this->hasOption( 'force' ) || $this->hasOption( 'schema' ) || $this->hasOption( 'noschema' ) ) ) {
                        $this->error( "Do not run update.php on this wiki. If you're seeing this you should\n"
-                               . "probably ask for some help in performing your schema updates.\n\n"
-                               . "If you know what you are doing, you can continue with --force", true );
+                               . "probably ask for some help in performing your schema updates or use\n"
+                               . "the --noschema and --schema options to get an SQL file for someone\n"
+                               . "else to inspect and run.\n\n"
+                               . "If you know what you are doing, you can continue with --force\n", true );
+               }
+
+               $this->fileHandle = null;
+               if( substr( $this->getOption( 'schema' ), 0, 2 ) === "--" ) {
+                       $this->error( "The --schema option requires a file as an argument.\n", true );
+               } else if( $this->hasOption( 'schema' ) ) {
+                       $file = $this->getOption( 'schema' );
+                       $this->fileHandle = fopen( $file, "w" );
+                       if( $this->fileHandle === false ) {
+                               $err = error_get_last();
+                               $this->error( "Problem opening the schema file for writing: $file\n\t{$err['message']}", true );
+                       }
                }
 
                $wgLang = Language::factory( 'en' );
@@ -108,6 +123,9 @@ class UpdateMediaWiki extends Maintenance {
                $db = wfGetDB( DB_MASTER );
 
                $this->output( "Going to run database updates for " . wfWikiID() . "\n" );
+               if( $db->getType() === 'sqlite' ) {
+                       $this->output( "Using SQLite file: '{$db->mDatabaseFile}'\n" );
+               }
                $this->output( "Depending on the size of your database this may take a while!\n" );
 
                if ( !$this->hasOption( 'quick' ) ) {
@@ -117,7 +135,17 @@ class UpdateMediaWiki extends Maintenance {
 
                $shared = $this->hasOption( 'doshared' );
 
-               $updates = array( 'core', 'extensions', 'stats' );
+               $updates = array( 'core', 'extensions' );
+               if( !$this->hasOption('schema') ) {
+                       if( $this->hasOption('noschema') ) {
+                               $updates[] = 'noschema';
+                       }
+                       $updates[] = 'stats';
+
+                       if( !$this->hasOption('nopurge') ) {
+                               $updates[] = 'purge';
+                       }
+               }
 
                $updater = DatabaseUpdater::newForDb( $db, $shared, $this );
                $updater->doUpdates( $updates );
@@ -131,6 +159,8 @@ class UpdateMediaWiki extends Maintenance {
                        if ( !$isLoggedUpdate && $updater->updateRowExists( $maint ) ) {
                                continue;
                        }
+
+                       $child = $this->runChild( $maint );
                        $child->execute();
                        if ( !$isLoggedUpdate ) {
                                $updater->insertUpdateRow( $maint );
index 3f1a90b..f92f67a 100644 (file)
@@ -47,10 +47,10 @@ class UpdateSpecialPages extends Maintenance {
                                $this->error( "Uncallable function $call!" );
                                continue;
                        }
+                       $this->output( sprintf( '%-30s ', $special ) );
                        $t1 = explode( ' ', microtime() );
                        call_user_func( $call, $dbw );
                        $t2 = explode( ' ', microtime() );
-                       $this->output( sprintf( '%-30s ', $special ) );
                        $elapsed = ( $t2[0] - $t1[0] ) + ( $t2[1] - $t1[1] );
                        $hours = intval( $elapsed / 3600 );
                        $minutes = intval( $elapsed % 3600 / 60 );
index 068c58b..4787594 100644 (file)
@@ -95,8 +95,7 @@ header( 'Content-Type: text/html; charset=utf-8' );
 
        .table th,
        .table td {
-               padding: 8px;
-               line-height: 20px;
+               padding: 0.1em;
                text-align: left;
                vertical-align: top;
                border-top: 1px solid #ddd;
@@ -156,9 +155,9 @@ $dbr = wfGetDB( DB_SLAVE );
 
 if( !$dbr->tableExists( 'profiling' ) ) {
        echo '<p>No <code>profiling</code> table exists, so we can\'t show you anything.</p>'
-               . '<p>If you want to log profiling data, create the table using '
-               . '<code>maintenance/archives/patch-profiling.sql</code> and enable '
-               . '<code>$wgProfileToDatabase</code>.</p>'
+               . '<p>If you want to log profiling data, enable <code>$wgProfileToDatabase</code>'
+               . ' in your LocalSettings.php and run <code>maintenance/update.php</code> to'
+               . ' create the profiling table.'
                . '</body></html>';
        exit( 1 );
 }
@@ -193,10 +192,12 @@ class profile_point {
 
                $ex = isset( $expand[$this->name()] );
 
+               $anchor = str_replace( '"', '', $this->name() );
+
                if ( !$ex ) {
                        if ( count( $this->children ) ) {
                                $url = getEscapedProfileUrl( false, false, $expand + array( $this->name() => true ) );
-                               $extet = ' <a href="' . $url . '">[+]</a>';
+                               $extet = " <a id=\"{$anchor}\" href=\"{$url}#{$anchor}\">[+]</a>";
                        } else {
                                $extet = '';
                        }
@@ -207,8 +208,8 @@ class profile_point {
                                        $e += array( $name => $ep );
                                }
                        }
-
-                       $extet = ' <a href="' . getEscapedProfileUrl( false, false, $e ) . '">[–]</a>';
+                       $url = getEscapedProfileUrl( false, false, $e );
+                       $extet = " <a id=\"{$anchor}\" href=\"{$url}#{$anchor}\">[–]</a>";
                }
                ?>
                <tr>
index afa9bb2..80b9a76 100644 (file)
@@ -810,6 +810,23 @@ return array(
                ),
                'position' => 'top',
        ),
+       'mediawiki.page.patrol.ajax' => array(
+               'scripts' => 'resources/mediawiki.page/mediawiki.page.patrol.ajax.js',
+               'dependencies' => array(
+                       'mediawiki.page.startup',
+                       'mediawiki.api',
+                       'mediawiki.util',
+                       'mediawiki.Title',
+                       'mediawiki.notify',
+                       'jquery.spinner',
+                       'user.tokens'
+               ),
+               'messages' => array(
+                       'markedaspatrollednotify',
+                       'markedaspatrollederrornotify',
+                       'markedaspatrollederror-noautopatrol'
+               ),
+       ),
        'mediawiki.page.watch.ajax' => array(
                'scripts' => 'resources/mediawiki.page/mediawiki.page.watch.ajax.js',
                'dependencies' => array(
index 75dc2b9..f2b98f0 100644 (file)
                                // This is a side-effect of limiting after the fact.
                                if ( res.trimmed === true ) {
                                        this.value = res.newVal;
-                                       prevSafeVal = res.newVal;
                                }
+                               // Always adjust prevSafeVal to reflect the input value. Not doing this could cause
+                               // trimValForByteLength to compare the new value to an empty string instead of the
+                               // old value, resulting in trimming always from the end (bug 40850).
+                               prevSafeVal = res.newVal;
                        } );
                } );
        };
index d4f3bb3..a86bf79 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery JavaScript Library v1.8.2
+ * jQuery JavaScript Library v1.8.3
  * http://jquery.com/
  *
  * Includes Sizzle.js
@@ -9,7 +9,7 @@
  * Released under the MIT license
  * http://jquery.org/license
  *
- * Date: Thu Sep 20 2012 21:13:05 GMT-0400 (Eastern Daylight Time)
+ * Date: Tue Nov 13 2012 08:20:33 GMT-0500 (Eastern Standard Time)
  */
 (function( window, undefined ) {
 var
@@ -186,7 +186,7 @@ jQuery.fn = jQuery.prototype = {
        selector: "",
 
        // The current version of jQuery being used
-       jquery: "1.8.2",
+       jquery: "1.8.3",
 
        // The default length of a jQuery object is 0
        length: 0,
@@ -999,8 +999,10 @@ jQuery.Callbacks = function( options ) {
                                        (function add( args ) {
                                                jQuery.each( args, function( _, arg ) {
                                                        var type = jQuery.type( arg );
-                                                       if ( type === "function" && ( !options.unique || !self.has( arg ) ) ) {
-                                                               list.push( arg );
+                                                       if ( type === "function" ) {
+                                                               if ( !options.unique || !self.has( arg ) ) {
+                                                                       list.push( arg );
+                                                               }
                                                        } else if ( arg && arg.length && type !== "string" ) {
                                                                // Inspect recursively
                                                                add( arg );
@@ -1253,24 +1255,23 @@ jQuery.support = (function() {
                clickFn,
                div = document.createElement("div");
 
-       // Preliminary tests
+       // Setup
        div.setAttribute( "className", "t" );
        div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
 
+       // Support tests won't run in some limited or non-browser environments
        all = div.getElementsByTagName("*");
        a = div.getElementsByTagName("a")[ 0 ];
-       a.style.cssText = "top:1px;float:left;opacity:.5";
-
-       // Can't get basic test support
-       if ( !all || !all.length ) {
+       if ( !all || !a || !all.length ) {
                return {};
        }
 
-       // First batch of supports tests
+       // First batch of tests
        select = document.createElement("select");
        opt = select.appendChild( document.createElement("option") );
        input = div.getElementsByTagName("input")[ 0 ];
 
+       a.style.cssText = "top:1px;float:left;opacity:.5";
        support = {
                // IE strips leading whitespace when .innerHTML is used
                leadingWhitespace: ( div.firstChild.nodeType === 3 ),
@@ -1312,7 +1313,7 @@ jQuery.support = (function() {
                // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
                getSetAttribute: div.className !== "t",
 
-               // Tests for enctype support on a form(#6743)
+               // Tests for enctype support on a form (#6743)
                enctype: !!document.createElement("form").enctype,
 
                // Makes sure cloning an html5 element does not cause problems
@@ -2217,26 +2218,25 @@ jQuery.extend({
                },
                select: {
                        get: function( elem ) {
-                               var value, i, max, option,
-                                       index = elem.selectedIndex,
-                                       values = [],
+                               var value, option,
                                        options = elem.options,
-                                       one = elem.type === "select-one";
-
-                               // Nothing was selected
-                               if ( index < 0 ) {
-                                       return null;
-                               }
+                                       index = elem.selectedIndex,
+                                       one = elem.type === "select-one" || index < 0,
+                                       values = one ? null : [],
+                                       max = one ? index + 1 : options.length,
+                                       i = index < 0 ?
+                                               max :
+                                               one ? index : 0;
 
                                // Loop through all the selected options
-                               i = one ? index : 0;
-                               max = one ? index + 1 : options.length;
                                for ( ; i < max; i++ ) {
                                        option = options[ i ];
 
-                                       // Don't return options that are disabled or in a disabled optgroup
-                                       if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
-                                                       (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+                                       // oldIE doesn't update selected after form reset (#2551)
+                                       if ( ( option.selected || i === index ) &&
+                                                       // Don't return options that are disabled or in a disabled optgroup
+                                                       ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
+                                                       ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
 
                                                // Get the specific value for the option
                                                value = jQuery( option ).val();
@@ -2251,11 +2251,6 @@ jQuery.extend({
                                        }
                                }
 
-                               // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
-                               if ( one && !values.length && options.length ) {
-                                       return jQuery( options[ index ] ).val();
-                               }
-
                                return values;
                        },
 
@@ -3233,7 +3228,7 @@ jQuery.removeEvent = document.removeEventListener ?
 
                if ( elem.detachEvent ) {
 
-                       // #8545, #7054, preventing memory leaks for custom events in IE6-8 –
+                       // #8545, #7054, preventing memory leaks for custom events in IE6-8
                        // detachEvent needed property on element, by name of that event, to properly expose it to GC
                        if ( typeof elem[ name ] === "undefined" ) {
                                elem[ name ] = null;
@@ -3725,7 +3720,8 @@ var cachedruns,
                                delete cache[ keys.shift() ];\r
                        }\r
 \r
-                       return (cache[ key ] = value);\r
+                       // Retrieve with (key + " ") to avoid collision with native Object.prototype properties (see Issue #157)\r
+                       return (cache[ key + " " ] = value);\r
                }, cache );\r
        },\r
 \r
@@ -4259,13 +4255,13 @@ Expr = Sizzle.selectors = {
                },\r
 \r
                "CLASS": function( className ) {\r
-                       var pattern = classCache[ expando ][ className ];\r
-                       if ( !pattern ) {\r
-                               pattern = classCache( className, new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)") );\r
-                       }\r
-                       return function( elem ) {\r
-                               return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );\r
-                       };\r
+                       var pattern = classCache[ expando ][ className + " " ];\r
+\r
+                       return pattern ||\r
+                               (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&\r
+                               classCache( className, function( elem ) {\r
+                                       return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );\r
+                               });\r
                },\r
 \r
                "ATTR": function( name, operator, check ) {\r
@@ -4511,7 +4507,7 @@ Expr = Sizzle.selectors = {
 \r
                "focus": function( elem ) {\r
                        var doc = elem.ownerDocument;\r
-                       return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href);\r
+                       return elem === doc.activeElement && (!doc.hasFocus || doc.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\r
                },\r
 \r
                "active": function( elem ) {\r
@@ -4519,11 +4515,11 @@ Expr = Sizzle.selectors = {
                },\r
 \r
                // Positional types\r
-               "first": createPositionalPseudo(function( matchIndexes, length, argument ) {\r
+               "first": createPositionalPseudo(function() {\r
                        return [ 0 ];\r
                }),\r
 \r
-               "last": createPositionalPseudo(function( matchIndexes, length, argument ) {\r
+               "last": createPositionalPseudo(function( matchIndexes, length ) {\r
                        return [ length - 1 ];\r
                }),\r
 \r
@@ -4531,14 +4527,14 @@ Expr = Sizzle.selectors = {
                        return [ argument < 0 ? argument + length : argument ];\r
                }),\r
 \r
-               "even": createPositionalPseudo(function( matchIndexes, length, argument ) {\r
+               "even": createPositionalPseudo(function( matchIndexes, length ) {\r
                        for ( var i = 0; i < length; i += 2 ) {\r
                                matchIndexes.push( i );\r
                        }\r
                        return matchIndexes;\r
                }),\r
 \r
-               "odd": createPositionalPseudo(function( matchIndexes, length, argument ) {\r
+               "odd": createPositionalPseudo(function( matchIndexes, length ) {\r
                        for ( var i = 1; i < length; i += 2 ) {\r
                                matchIndexes.push( i );\r
                        }\r
@@ -4659,7 +4655,9 @@ baseHasDuplicate = !hasDuplicate;
 // Document sorting and removing duplicates\r
 Sizzle.uniqueSort = function( results ) {\r
        var elem,\r
-               i = 1;\r
+               duplicates = [],\r
+               i = 1,\r
+               j = 0;\r
 \r
        hasDuplicate = baseHasDuplicate;\r
        results.sort( sortOrder );\r
@@ -4667,9 +4665,12 @@ Sizzle.uniqueSort = function( results ) {
        if ( hasDuplicate ) {\r
                for ( ; (elem = results[i]); i++ ) {\r
                        if ( elem === results[ i - 1 ] ) {\r
-                               results.splice( i--, 1 );\r
+                               j = duplicates.push( i );\r
                        }\r
                }\r
+               while ( j-- ) {\r
+                       results.splice( duplicates[ j ], 1 );\r
+               }\r
        }\r
 \r
        return results;\r
@@ -4680,8 +4681,9 @@ Sizzle.error = function( msg ) {
 };\r
 \r
 function tokenize( selector, parseOnly ) {\r
-       var matched, match, tokens, type, soFar, groups, preFilters,\r
-               cached = tokenCache[ expando ][ selector ];\r
+       var matched, match, tokens, type,\r
+               soFar, groups, preFilters,\r
+               cached = tokenCache[ expando ][ selector + " " ];\r
 \r
        if ( cached ) {\r
                return parseOnly ? 0 : cached.slice( 0 );\r
@@ -4696,7 +4698,8 @@ function tokenize( selector, parseOnly ) {
                // Comma and first run\r
                if ( !matched || (match = rcomma.exec( soFar )) ) {\r
                        if ( match ) {\r
-                               soFar = soFar.slice( match[0].length );\r
+                               // Don't consume trailing commas as valid\r
+                               soFar = soFar.slice( match[0].length ) || soFar;\r
                        }\r
                        groups.push( tokens = [] );\r
                }\r
@@ -4715,8 +4718,7 @@ function tokenize( selector, parseOnly ) {
                // Filters\r
                for ( type in Expr.filter ) {\r
                        if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\r
-                               // The last two arguments here are (context, xml) for backCompat\r
-                               (match = preFilters[ type ]( match, document, true ))) ) {\r
+                               (match = preFilters[ type ]( match ))) ) {\r
 \r
                                tokens.push( matched = new Token( match.shift() ) );\r
                                soFar = soFar.slice( matched.length );\r
@@ -4836,18 +4838,13 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
                postFinder = setMatcher( postFinder, postSelector );\r
        }\r
        return markFunction(function( seed, results, context, xml ) {\r
-               // Positional selectors apply to seed elements, so it is invalid to follow them with relative ones\r
-               if ( seed && postFinder ) {\r
-                       return;\r
-               }\r
-\r
-               var i, elem, postFilterIn,\r
+               var temp, i, elem,\r
                        preMap = [],\r
                        postMap = [],\r
                        preexisting = results.length,\r
 \r
                        // Get initial elements from seed or context\r
-                       elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [], seed ),\r
+                       elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),\r
 \r
                        // Prefilter to get matcher input, preserving a map for seed-results synchronization\r
                        matcherIn = preFilter && ( seed || !selector ) ?\r
@@ -4872,27 +4869,45 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS
 \r
                // Apply postFilter\r
                if ( postFilter ) {\r
-                       postFilterIn = condense( matcherOut, postMap );\r
-                       postFilter( postFilterIn, [], context, xml );\r
+                       temp = condense( matcherOut, postMap );\r
+                       postFilter( temp, [], context, xml );\r
 \r
                        // Un-match failing elements by moving them back to matcherIn\r
-                       i = postFilterIn.length;\r
+                       i = temp.length;\r
                        while ( i-- ) {\r
-                               if ( (elem = postFilterIn[i]) ) {\r
+                               if ( (elem = temp[i]) ) {\r
                                        matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\r
                                }\r
                        }\r
                }\r
 \r
-               // Keep seed and results synchronized\r
                if ( seed ) {\r
-                       // Ignore postFinder because it can't coexist with seed\r
-                       i = preFilter && matcherOut.length;\r
-                       while ( i-- ) {\r
-                               if ( (elem = matcherOut[i]) ) {\r
-                                       seed[ preMap[i] ] = !(results[ preMap[i] ] = elem);\r
+                       if ( postFinder || preFilter ) {\r
+                               if ( postFinder ) {\r
+                                       // Get the final matcherOut by condensing this intermediate into postFinder contexts\r
+                                       temp = [];\r
+                                       i = matcherOut.length;\r
+                                       while ( i-- ) {\r
+                                               if ( (elem = matcherOut[i]) ) {\r
+                                                       // Restore matcherIn since elem is not yet a final match\r
+                                                       temp.push( (matcherIn[i] = elem) );\r
+                                               }\r
+                                       }\r
+                                       postFinder( null, (matcherOut = []), temp, xml );\r
+                               }\r
+\r
+                               // Move matched elements from seed to results to keep them synchronized\r
+                               i = matcherOut.length;\r
+                               while ( i-- ) {\r
+                                       if ( (elem = matcherOut[i]) &&\r
+                                               (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {\r
+\r
+                                               seed[temp] = !(results[temp] = elem);\r
+                                       }\r
                                }\r
                        }\r
+\r
+               // Add elements to results, through postFinder if defined\r
                } else {\r
                        matcherOut = condense(\r
                                matcherOut === results ?\r
@@ -4933,7 +4948,6 @@ function matcherFromTokens( tokens ) {
                if ( (matcher = Expr.relative[ tokens[i].type ]) ) {\r
                        matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\r
                } else {\r
-                       // The concatenated values are (context, xml) for backCompat\r
                        matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\r
 \r
                        // Return special upon seeing a positional matcher\r
@@ -5062,7 +5076,7 @@ compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
        var i,\r
                setMatchers = [],\r
                elementMatchers = [],\r
-               cached = compilerCache[ expando ][ selector ];\r
+               cached = compilerCache[ expando ][ selector + " " ];\r
 \r
        if ( !cached ) {\r
                // Generate a function of recursive functions that can be used to check each element\r
@@ -5085,11 +5099,11 @@ compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
        return cached;\r
 };\r
 \r
-function multipleContexts( selector, contexts, results, seed ) {\r
+function multipleContexts( selector, contexts, results ) {\r
        var i = 0,\r
                len = contexts.length;\r
        for ( ; i < len; i++ ) {\r
-               Sizzle( selector, contexts[i], results, seed );\r
+               Sizzle( selector, contexts[i], results );\r
        }\r
        return results;\r
 }\r
@@ -5167,15 +5181,14 @@ if ( document.querySelectorAll ) {
                        rescape = /'|\\/g,\r
                        rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,\r
 \r
-                       // qSa(:focus) reports false when true (Chrome 21),\r
+                       // qSa(:focus) reports false when true (Chrome 21), no need to also add to buggyMatches since matches checks buggyQSA\r
                        // A support test would require too much code (would include document ready)\r
-                       rbuggyQSA = [":focus"],\r
+                       rbuggyQSA = [ ":focus" ],\r
 \r
-                       // matchesSelector(:focus) reports false when true (Chrome 21),\r
                        // matchesSelector(:active) reports false when true (IE9/Opera 11.5)\r
                        // A support test would require too much code (would include document ready)\r
                        // just skip matchesSelector for :active\r
-                       rbuggyMatches = [ ":active", ":focus" ],\r
+                       rbuggyMatches = [ ":active" ],\r
                        matches = docElem.matchesSelector ||\r
                                docElem.mozMatchesSelector ||\r
                                docElem.webkitMatchesSelector ||\r
@@ -5229,7 +5242,7 @@ if ( document.querySelectorAll ) {
                        // Only use querySelectorAll when not filtering,\r
                        // when this is not xml,\r
                        // and when no QSA bugs apply\r
-                       if ( !seed && !xml && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\r
+                       if ( !seed && !xml && !rbuggyQSA.test( selector ) ) {\r
                                var groups, i,\r
                                        old = true,\r
                                        nid = expando,\r
@@ -5298,7 +5311,7 @@ if ( document.querySelectorAll ) {
                                expr = expr.replace( rattributeQuotes, "='$1']" );\r
 \r
                                // rbuggyMatches always contains :active, so no need for an existence check\r
-                               if ( !isXML( elem ) && !rbuggyMatches.test( expr ) && (!rbuggyQSA || !rbuggyQSA.test( expr )) ) {\r
+                               if ( !isXML( elem ) && !rbuggyMatches.test( expr ) && !rbuggyQSA.test( expr ) ) {\r
                                        try {\r
                                                var ret = matches.call( elem, expr );\r
 \r
@@ -6533,7 +6546,7 @@ var curCSS, iframe, iframeDoc,
        rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
        rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
        rrelNum = new RegExp( "^([-+])=(" + core_pnum + ")", "i" ),
-       elemdisplay = {},
+       elemdisplay = { BODY: "block" },
 
        cssShow = { position: "absolute", visibility: "hidden", display: "block" },
        cssNormalTransform = {
@@ -6814,7 +6827,9 @@ if ( window.getComputedStyle ) {
 
                if ( computed ) {
 
-                       ret = computed[ name ];
+                       // getPropertyValue is only needed for .css('filter') in IE9, see #12537
+                       ret = computed.getPropertyValue( name ) || computed[ name ];
+
                        if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
                                ret = jQuery.style( elem, name );
                        }
@@ -7843,9 +7858,12 @@ jQuery.extend({
 
                // A cross-domain request is in order when we have a protocol:host:port mismatch
                if ( s.crossDomain == null ) {
-                       parts = rurl.exec( s.url.toLowerCase() ) || false;
-                       s.crossDomain = parts && ( parts.join(":") + ( parts[ 3 ] ? "" : parts[ 1 ] === "http:" ? 80 : 443 ) ) !==
-                               ( ajaxLocParts.join(":") + ( ajaxLocParts[ 3 ] ? "" : ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) );
+                       parts = rurl.exec( s.url.toLowerCase() );
+                       s.crossDomain = !!( parts &&
+                               ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
+                                       ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
+                                               ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
+                       );
                }
 
                // Convert data if not already a string
@@ -8464,7 +8482,7 @@ if ( jQuery.support.ajax ) {
                                                                        // on any attempt to access responseText (#11426)
                                                                        try {
                                                                                responses.text = xhr.responseText;
-                                                                       } catch( _ ) {
+                                                                       } catch( e ) {
                                                                        }
 
                                                                        // Firefox throws an exception when accessing
@@ -8617,7 +8635,9 @@ function Animation( elem, properties, options ) {
                tick = function() {
                        var currentTime = fxNow || createFxNow(),
                                remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
-                               percent = 1 - ( remaining / animation.duration || 0 ),
+                               // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
+                               temp = remaining / animation.duration || 0,
+                               percent = 1 - temp,
                                index = 0,
                                length = animation.tweens.length;
 
@@ -8769,7 +8789,7 @@ jQuery.Animation = jQuery.extend( Animation, {
 });
 
 function defaultPrefilter( elem, props, opts ) {
-       var index, prop, value, length, dataShow, tween, hooks, oldfire,
+       var index, prop, value, length, dataShow, toggle, tween, hooks, oldfire,
                anim = this,
                style = elem.style,
                orig = {},
@@ -8843,6 +8863,7 @@ function defaultPrefilter( elem, props, opts ) {
                value = props[ index ];
                if ( rfxtypes.exec( value ) ) {
                        delete props[ index ];
+                       toggle = toggle || value === "toggle";
                        if ( value === ( hidden ? "hide" : "show" ) ) {
                                continue;
                        }
@@ -8853,6 +8874,14 @@ function defaultPrefilter( elem, props, opts ) {
        length = handled.length;
        if ( length ) {
                dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} );
+               if ( "hidden" in dataShow ) {
+                       hidden = dataShow.hidden;
+               }
+
+               // store state if its toggle - enables .stop().toggle() to "reverse"
+               if ( toggle ) {
+                       dataShow.hidden = !hidden;
+               }
                if ( hidden ) {
                        jQuery( elem ).show();
                } else {
@@ -9149,6 +9178,8 @@ jQuery.fx.tick = function() {
                timers = jQuery.timers,
                i = 0;
 
+       fxNow = jQuery.now();
+
        for ( ; i < timers.length; i++ ) {
                timer = timers[ i ];
                // Checks the timer has not already been removed
@@ -9160,6 +9191,7 @@ jQuery.fx.tick = function() {
        if ( !timers.length ) {
                jQuery.fx.stop();
        }
+       fxNow = undefined;
 };
 
 jQuery.fx.timer = function( timer ) {
index 75dd2f1..6297f9a 100644 (file)
@@ -67,6 +67,7 @@
  */
 
 ( function ( $, mw ) {
+       /*jshint onevar:false */
 
        /* Local scope */
 
                        }
 
                        if ( !this.sortDisabled ) {
-                               var $th = $( this ).addClass( table.config.cssHeader ).attr( 'title', msg[1] );
+                               $( this ).addClass( table.config.cssHeader ).attr( 'title', msg[1] );
                        }
 
                        // add cell to headerList
                return false;
        }
 
-       function setHeadersCss( table, $headers, list, css, msg ) {
+       function setHeadersCss( table, $headers, list, css, msg, columnToHeader ) {
                // Remove all header information and reset titles to default message
                $headers.removeClass( css[0] ).removeClass( css[1] ).attr( 'title', msg[1] );
 
-               var h = [];
-               $headers.each( function ( offset ) {
-                       if ( !this.sortDisabled ) {
-                               h[this.column] = $( this );
-                       }
-               } );
-
-               var l = list.length;
-               for ( var i = 0; i < l; i++ ) {
-                       h[ list[i][0] ].addClass( css[ list[i][1] ] ).attr( 'title', msg[ list[i][1] ] );
+               for ( var i = 0; i < list.length; i++ ) {
+                       $headers.eq( columnToHeader[ list[i][0] ] )
+                               .addClass( css[ list[i][1] ] )
+                               .attr( 'title', msg[ list[i][1] ] );
                }
        }
 
                        ts.transformTable = {};
 
                        // Unpack the transform table
-                       var ascii = separatorTransformTable[0].split( "\t" ).concat( digitTransformTable[0].split( "\t" ) );
-                       var localised = separatorTransformTable[1].split( "\t" ).concat( digitTransformTable[1].split( "\t" ) );
+                       var ascii = separatorTransformTable[0].split( '\t' ).concat( digitTransformTable[0].split( '\t' ) );
+                       var localised = separatorTransformTable[1].split( '\t' ).concat( digitTransformTable[1].split( '\t' ) );
 
                        // Construct regex for number identification
                        for ( var i = 0; i < ascii.length; i++ ) {
 
                // We allow a trailing percent sign, which we just strip. This works fine
                // if percents and regular numbers aren't being mixed.
-               ts.numberRegex = new RegExp("^(" + "[-+\u2212]?[0-9][0-9,]*(\\.[0-9,]*)?(E[-+\u2212]?[0-9][0-9,]*)?" + // Fortran-style scientific
-               "|" + "[-+\u2212]?" + digitClass + "+[\\s\\xa0]*%?" + // Generic localised
-               ")$", "i");
+               ts.numberRegex = new RegExp('^(' + '[-+\u2212]?[0-9][0-9,]*(\\.[0-9,]*)?(E[-+\u2212]?[0-9][0-9,]*)?' + // Fortran-style scientific
+               '|' + '[-+\u2212]?' + digitClass + '+[\\s\\xa0]*%?' + // Generic localised
+               ')$', 'i');
        }
 
        function buildDateTable() {
                        construct: function ( $tables, settings ) {
                                return $tables.each( function ( i, table ) {
                                        // Declare and cache.
-                                       var $document, $headers, cache, config, sortOrder,
+                                       var $headers, cache, config,
+                                               headerToColumns, columnToHeader, colspanOffset,
                                                $table = $( table ),
-                                               shiftDown = 0;
+                                               firstTime = true;
 
                                        // Quit if no tbody
                                        if ( !table.tBodies ) {
                                                        return;
                                                }
                                        }
-                                       $table.addClass( "jquery-tablesorter" );
+                                       $table.addClass( 'jquery-tablesorter' );
 
                                        // FIXME config should probably not be stored in the plain table node
                                        // New config object.
                                        // performance improvements in some browsers.
                                        cacheRegexs();
 
-                                       // 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>
-                                       var $sortbottoms = $table.find( '> tbody > tr.sortbottom' );
-                                       if ( $sortbottoms.length ) {
-                                               var $tfoot = $table.children( 'tfoot' );
-                                               if ( $tfoot.length ) {
-                                                       $tfoot.eq(0).prepend( $sortbottoms );
-                                               } else {
-                                                       $table.append( $( '<tfoot>' ).append( $sortbottoms ) );
+                                       function setupForFirstSort() {
+                                               firstTime = false;
+
+                                               // 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>
+                                               var $sortbottoms = $table.find( '> tbody > tr.sortbottom' );
+                                               if ( $sortbottoms.length ) {
+                                                       var $tfoot = $table.children( 'tfoot' );
+                                                       if ( $tfoot.length ) {
+                                                               $tfoot.eq(0).prepend( $sortbottoms );
+                                                       } else {
+                                                               $table.append( $( '<tfoot>' ).append( $sortbottoms ) );
+                                                       }
                                                }
-                                       }
 
-                                       explodeRowspans( $table );
+                                               explodeRowspans( $table );
+
+                                               // try to auto detect column type, and store in tables config
+                                               table.config.parsers = buildParserCache( table, $headers );
+                                       }
 
-                                       // try to auto detect column type, and store in tables config
-                                       table.config.parsers = buildParserCache( table, $headers );
+                                       // as each header can span over multiple columns (using colspan=N),
+                                       // we have to bidirectionally map headers to their columns and columns to their headers
+                                       headerToColumns = [];
+                                       columnToHeader = [];
+                                       colspanOffset = 0;
+                                       $headers.each( function ( headerIndex ) {
+                                               var columns = [];
+                                               for ( var i = 0; i < this.colSpan; i++ ) {
+                                                       columnToHeader[ colspanOffset + i ] = headerIndex;
+                                                       columns.push( colspanOffset + i );
+                                               }
 
-                                       // initially build the cache for the tbody cells (to be able to sort initially)
-                                       cache = buildCache( table );
+                                               headerToColumns[ headerIndex ] = columns;
+                                               colspanOffset += this.colSpan;
+                                       } );
 
                                        // Apply event handling to headers
                                        // this is too big, perhaps break it out?
                                                        return true;
                                                }
 
+                                               if ( firstTime ) {
+                                                       setupForFirstSort();
+                                               }
+
                                                // Build the cache for the tbody cells
                                                // to share between calculations for this sort action.
                                                // Re-calculated each time a sort action is performed due to possiblity
 
                                                var totalRows = ( $table[0].tBodies[0] && $table[0].tBodies[0].rows.length ) || 0;
                                                if ( !table.sortDisabled && totalRows > 0 ) {
-
-                                                       // Cache jQuery object
-                                                       var $cell = $( this );
-
-                                                       // Get current column index
-                                                       var i = this.column;
-
                                                        // Get current column sort order
                                                        this.order = this.count % 2;
                                                        this.count++;
 
-                                                       // User only wants to sort on one column
-                                                       if ( !e[config.sortMultiSortKey] ) {
-                                                               // Flush the sort list
-                                                               config.sortList = [];
-                                                               // Add column to sort list
-                                                               config.sortList.push( [i, this.order] );
+                                                       var cell = this;
+                                                       // Get current column index
+                                                       var columns = headerToColumns[this.column];
+                                                       var newSortList = $.map( columns, function (c) {
+                                                               // jQuery "helpfully" flattens the arrays...
+                                                               return [[c, cell.order]];
+                                                       });
+                                                       // Index of first column belonging to this header
+                                                       var i = columns[0];
 
-                                                       // Multi column sorting
+                                                       if ( !e[config.sortMultiSortKey] ) {
+                                                               // User only wants to sort on one column set
+                                                               // Flush the sort list and add new columns
+                                                               config.sortList = newSortList;
                                                        } else {
-                                                               // The user has clicked on an already sorted column.
+                                                               // Multi column sorting
+                                                               // It is not possible for one column to belong to multiple headers,
+                                                               // so this is okay - we don't need to check for every value in the columns array
                                                                if ( isValueInArray( i, config.sortList ) ) {
+                                                                       // The user has clicked on an already sorted column.
                                                                        // Reverse the sorting direction for all tables.
                                                                        for ( var j = 0; j < config.sortList.length; j++ ) {
                                                                                var s = config.sortList[j],
                                                                                        o = config.headerList[s[0]];
-                                                                               if ( s[0] === i ) {
+                                                                               if ( isValueInArray( s[0], newSortList ) ) {
                                                                                        o.count = s[1];
                                                                                        o.count++;
                                                                                        s[1] = o.count % 2;
                                                                                }
                                                                        }
                                                                } else {
-                                                                       // Add column to sort list array
-                                                                       config.sortList.push( [i, this.order] );
+                                                                       // Add columns to sort list array
+                                                                       config.sortList = config.sortList.concat( newSortList );
                                                                }
                                                        }
 
                                                        // Set CSS for headers
-                                                       setHeadersCss( $table[0], $headers, config.sortList, sortCSS, sortMsg );
+                                                       setHeadersCss( $table[0], $headers, config.sortList, sortCSS, sortMsg, columnToHeader );
                                                        appendToTable(
                                                                $table[0], multisort( $table[0], config.sortList, cache )
                                                        );
                                         */
                                        $table.data( 'tablesorter' ).sort = function( sortList ) {
 
+                                               if ( firstTime ) {
+                                                       setupForFirstSort();
+                                               }
+
                                                if ( sortList === undefined ) {
                                                        sortList = config.sortList;
                                                } else if ( sortList.length > 0 ) {
                                                cache = buildCache( table );
 
                                                // set css for headers
-                                               setHeadersCss( table, $headers, sortList, sortCSS, sortMsg );
+                                               setHeadersCss( table, $headers, sortList, sortCSS, sortMsg, columnToHeader );
 
                                                // sort the table and append it to the dom
                                                appendToTable( table, multisort( table, sortList, cache ) );
 
                                        // sort initially
                                        if ( config.sortList.length > 0 ) {
-                                               explodeRowspans( $table );
+                                               setupForFirstSort();
                                                config.sortList = convertSortList( config.sortList );
                                                $table.data( 'tablesorter' ).sort();
                                        }
                        },
 
                        formatDigit: function ( s ) {
+                               var out, c, p, i;
                                if ( ts.transformTable !== false ) {
-                                       var out = '',
-                                               c;
-                                       for ( var p = 0; p < s.length; p++ ) {
+                                       out = '';
+                                       for ( p = 0; p < s.length; p++ ) {
                                                c = s.charAt(p);
                                                if ( c in ts.transformTable ) {
                                                        out += ts.transformTable[c];
                                        }
                                        s = out;
                                }
-                               var i = parseFloat( s.replace( /[, ]/g, '' ).replace( "\u2212", '-' ) );
-                               return ( isNaN(i)) ? 0 : i;
+                               i = parseFloat( s.replace( /[, ]/g, '' ).replace( '\u2212', '-' ) );
+                               return isNaN( i ) ? 0 : i;
                        },
 
                        formatFloat: function ( s ) {
                                var i = parseFloat(s);
-                               return ( isNaN(i)) ? 0 : i;
+                               return isNaN( i ) ? 0 : i;
                        },
 
                        formatInt: function ( s ) {
                                var i = parseInt( s, 10 );
-                               return ( isNaN(i)) ? 0 : i;
+                               return isNaN( i ) ? 0 : i;
                        },
 
                        clearTableBody: function ( table ) {
-                               if ( $.browser.msie ) {
-                                       var empty = function ( el ) {
-                                               while ( el.firstChild ) {
-                                                       el.removeChild( el.firstChild );
-                                               }
-                                       };
-                                       empty( table.tBodies[0] );
-                               } else {
-                                       table.tBodies[0].innerHTML = '';
-                               }
+                               $( table.tBodies[0] ).empty();
                        }
                };
 
        // Add default parsers
        ts.addParser( {
                id: 'text',
-               is: function ( s ) {
+               is: function () {
                        return true;
                },
                format: function ( s ) {
                is: function ( s ) {
                        return ( ts.dateRegex[0].test(s) || ts.dateRegex[1].test(s) || ts.dateRegex[2].test(s ));
                },
-               format: function ( s, table ) {
+               format: function ( s ) {
                        var match;
                        s = $.trim( s.toLowerCase() );
 
                                        s = [ match[3], match[1], match[2] ];
                                } else if ( mw.config.get( 'wgDefaultDateFormat' ) === 'dmy' ) {
                                        s = [ match[3], match[2], match[1] ];
+                               } else {
+                                       // If we get here, we don't know which order the dd-dd-dddd
+                                       // date is in. So return something not entirely invalid.
+                                       return '99999999';
                                }
                        } else if ( ( match = s.match( ts.dateRegex[1] ) ) !== null ) {
                                s = [ match[3], '' + ts.monthNames[match[2]], match[1] ];
 
        ts.addParser( {
                id: 'number',
-               is: function ( s, table ) {
+               is: function ( s ) {
                        return $.tablesorter.numberRegex.test( $.trim( s ));
                },
                format: function ( s ) {
index d323442..6cbccbf 100644 (file)
@@ -25,7 +25,7 @@
 
        $.extend( mw.Api.prototype, {
                /**
-                * Convinience method for 'action=watch'.
+                * Convenience method for 'action=watch'.
                 *
                 * @param page {String|mw.Title} Full page name or instance of mw.Title
                 * @param success {Function} Callback to which the watch object will be passed.
@@ -38,7 +38,7 @@
                        return doWatchInternal.call( this, page, success, err );
                },
                /**
-                * Convinience method for 'action=watch&unwatch=1'.
+                * Convenience method for 'action=watch&unwatch=1'.
                 *
                 * @param page {String|mw.Title} Full page name or instance of mw.Title
                 * @param success {Function} Callback to which the watch object will be passed.
index c0c77aa..65eb5a6 100644 (file)
@@ -2,10 +2,10 @@
  * Bosnian (bosanski) language functions
  */
 
-mediaWiki.language.convertGrammar = function( word, form ) {
-       var grammarForms = mw.language.getData( 'bs', 'grammarForms' );
+mediaWiki.language.convertGrammar = function ( word, form ) {
+       var grammarForms = mediaWiki.language.getData( 'bs', 'grammarForms' );
        if ( grammarForms && grammarForms[form] ) {
-               return grammarForms[form][word] ;
+               return grammarForms[form][word];
        }
        switch ( form ) {
                case 'instrumental': // instrumental
index a42a8f7..b2c9c08 100644 (file)
@@ -2,10 +2,10 @@
  * Lower Sorbian (Dolnoserbski) language functions
  */
 
-mediaWiki.language.convertGrammar = function( word, form ) {
-       var grammarForms = mw.language.getData( 'dsb', 'grammarForms' );
+mediaWiki.language.convertGrammar = function ( word, form ) {
+       var grammarForms = mediaWiki.language.getData( 'dsb', 'grammarForms' );
        if ( grammarForms && grammarForms[form] ) {
-               return grammarForms[form][word] ;
+               return grammarForms[form][word];
        }
        switch ( form ) {
                case 'instrumental': // instrumental
index 374698d..61c6c10 100644 (file)
@@ -3,21 +3,24 @@
  *  @author Santhosh Thottingal
  */
 
-mediaWiki.language.convertGrammar = function( word, form ) {
-       var grammarForms = mw.language.getData( 'fi', 'grammarForms' );
+mediaWiki.language.convertGrammar = function ( word, form ) {
+       var grammarForms, aou, origWord;
+
+       grammarForms = mediaWiki.language.getData( 'fi', 'grammarForms' );
        if ( grammarForms && grammarForms[form] ) {
-               return grammarForms[form][word] ;
+               return grammarForms[form][word];
        }
 
        // vowel harmony flag
-       var aou = word.match( /[aou][^äöy]*$/i );
-       var origWord = word;
+       aou = word.match( /[aou][^äöy]*$/i );
+       origWord = word;
        if ( word.match( /wiki$/i ) ) {
                aou = false;
        }
        //append i after final consonant
-       if ( word.match( /[bcdfghjklmnpqrstvwxz]$/i ) )
+       if ( word.match( /[bcdfghjklmnpqrstvwxz]$/i ) ) {
                word += 'i';
+       }
 
        switch ( form ) {
                case 'genitive':
index a27b489..c13e832 100644 (file)
@@ -2,10 +2,11 @@
  * Irish (Gaeilge) language functions
  */
 
-mediaWiki.language.convertGrammar = function( word, form ) {
-       var grammarForms = mw.language.getData( 'ga', 'grammarForms' );
+mediaWiki.language.convertGrammar = function ( word, form ) {
+       /*jshint onecase:true */
+       var grammarForms = mediaWiki.language.getData( 'ga', 'grammarForms' );
        if ( grammarForms && grammarForms[form] ) {
-               return grammarForms[form][word] ;
+               return grammarForms[form][word];
        }
        switch ( form ) {
                case 'ainmlae':
index d35f77e..13d457b 100644 (file)
@@ -3,26 +3,26 @@
  */
 
 mediaWiki.language.convertGrammar = function( word, form ) {
-       var grammarForms = mw.language.getData( 'he', 'grammarForms' );
+       var grammarForms = mediaWiki.language.getData( 'he', 'grammarForms' );
        if ( grammarForms && grammarForms[form] ) {
-               return grammarForms[form][word] ;
+               return grammarForms[form][word];
        }
        switch ( form ) {
                case 'prefixed':
                case 'תחילית': // the same word in Hebrew
                        // Duplicate prefixed "Waw", but only if it's not already double
-                       if ( word.substr( 0, 1 ) === "ו" && word.substr( 0, 2 ) !== "וו" ) {
-                               word = "ו" + word;
+                       if ( word.substr( 0, 1 ) === 'ו' && word.substr( 0, 2 ) !== 'וו' ) {
+                               word = 'ו' + word;
                        }
 
                        // Remove the "He" if prefixed
-                       if ( word.substr( 0, 1 ) === "ה" ) {
+                       if ( word.substr( 0, 1 ) === 'ה' ) {
                                word = word.substr( 1, word.length );
                        }
 
                        // Add a hyphen (maqaf) before numbers and non-Hebrew letters
-                       if (  word.substr( 0, 1 ) < "א" ||  word.substr( 0, 1 ) > "ת" ) {
-                               word = "־" + word;
+                       if (  word.substr( 0, 1 ) < 'א' ||  word.substr( 0, 1 ) > 'ת' ) {
+                               word = '־' + word;
                        }
        }
        return word;
index 211d67b..77dca75 100644 (file)
@@ -2,10 +2,10 @@
  * Upper Sorbian (Hornjoserbsce) language functions
  */
 
-mediaWiki.language.convertGrammar = function( word, form ) {
-       var grammarForms =mw.language.getData( 'hsb', 'grammarForms' );
+mediaWiki.language.convertGrammar = function ( word, form ) {
+       var grammarForms = mediaWiki.language.getData( 'hsb', 'grammarForms' );
        if ( grammarForms && grammarForms[form] ) {
-               return grammarForms[form][word] ;
+               return grammarForms[form][word];
        }
        switch ( form ) {
                case 'instrumental': // instrumental
index eb3f1f3..23b0c12 100644 (file)
@@ -3,10 +3,10 @@
  *  @author Santhosh Thottingal
  */
 
-mediaWiki.language.convertGrammar = function( word, form ) {
-       var grammarForms = mw.language.getData( 'hu', 'grammarForms' );
+mediaWiki.language.convertGrammar = function ( word, form ) {
+       var grammarForms = mediaWiki.language.getData( 'hu', 'grammarForms' );
        if ( grammarForms && grammarForms[form] ) {
-               return grammarForms[form][word] ;
+               return grammarForms[form][word];
        }
        switch ( form ) {
                case 'rol':
index 215e750..65081bd 100644 (file)
@@ -2,10 +2,11 @@
  * Armenian (Հայերեն) language functions
  */
 
-mediaWiki.language.convertGrammar = function( word, form ) {
-       var grammarForms = mw.language.getData( 'hy', 'grammarForms' );
+mediaWiki.language.convertGrammar = function ( word, form ) {
+       /*jshint onecase:true */
+       var grammarForms = mediaWiki.language.getData( 'hy', 'grammarForms' );
        if ( grammarForms && grammarForms[form] ) {
-               return grammarForms[form][word] ;
+               return grammarForms[form][word];
        }
 
        // These rules are not perfect, but they are currently only used for site names so it doesn't
@@ -13,14 +14,15 @@ mediaWiki.language.convertGrammar = function( word, form ) {
 
        switch ( form ) {
                case 'genitive': // սեռական հոլով
-                       if ( word.substr( -1 ) === 'ա' )
+                       if ( word.substr( -1 ) === 'ա' ) {
                                word = word.substr( 0, word.length -1 )  + 'այի';
-                       else if ( word.substr( -1 ) === 'ո' )
+                       } else if ( word.substr( -1 ) === 'ո' ) {
                                word = word.substr( 0, word.length - 1 ) + 'ոյի';
-                       else if ( word.substr( -4 ) === 'գիրք' )
+                       } else if ( word.substr( -4 ) === 'գիրք' ) {
                                word = word.substr( 0, word.length - 4 ) + 'գրքի';
-                       else
+                       } else {
                                word = word + 'ի';
+                       }
                        break;
                }
        return word;
index 313bb1c..2711024 100644 (file)
@@ -3,10 +3,10 @@
  * @author Santhosh Thottingal
  */
 
-mediaWiki.language.convertGrammar = function( word, form ) {
-       var grammarForms = mw.language.getData( 'la', 'grammarForms' );
+mediaWiki.language.convertGrammar = function ( word, form ) {
+       var grammarForms = mediaWiki.language.getData( 'la', 'grammarForms' );
        if ( grammarForms && grammarForms[form] ) {
-               return grammarForms[form][word] ;
+               return grammarForms[form][word];
        }
        switch ( form ) {
                case 'genitive':
index 431e38c..682b390 100644 (file)
@@ -4,23 +4,24 @@
  */
 
 
-mediaWiki.language.convertGrammar = function( word, form ) {
-       var grammarForms = mw.language.getData( 'os', 'grammarForms' );
+mediaWiki.language.convertGrammar = function ( word, form ) {
+       var grammarForms = mediaWiki.language.getData( 'os', 'grammarForms' ),
+               // Ending for allative case
+               endAllative = 'мæ',
+               // Variable for 'j' beetwen vowels
+               jot = '',
+               // Variable for "-" for not Ossetic words
+               hyphen = '',
+               // Variable for ending
+               ending = '';
+
        if ( grammarForms && grammarForms[form] ) {
-               return grammarForms[form][word] ;
+               return grammarForms[form][word];
        }
-       // Ending for allative case
-       var end_allative = 'мæ';
-       // Variable for 'j' beetwen vowels
-       var jot = '';
-       // Variable for "-" for not Ossetic words
-       var hyphen = '';
-       // Variable for ending
-       var ending = '';
        // Checking if the $word is in plural form
        if ( word.match( /тæ$/i ) ) {
                word = word.substring( 0, word.length - 1 );
-               end_allative = 'æм';
+               endAllative = 'æм';
        }
        // Works if word is in singular form.
        // Checking if word ends on one of the vowels: е, ё, и, о, ы, э, ю, я.
@@ -45,10 +46,10 @@ mediaWiki.language.convertGrammar = function( word, form ) {
                        ending = hyphen + jot + 'æн';
                        break;
                case 'allative':
-                       ending = hyphen + end_allative;
+                       ending = hyphen + endAllative;
                        break;
                case 'ablative':
-                       if ( jot == 'й' ) {
+                       if ( jot === 'й' ) {
                                ending = hyphen + jot + 'æ';
                        }
                        else {
index cfdbfc3..b27dea4 100644 (file)
@@ -2,27 +2,28 @@
  * Russian (Русский) language functions
  */
 
-mediaWiki.language.convertGrammar = function( word, form ) {
-       var grammarForms = mw.language.getData( 'ru', 'grammarForms' );
+mediaWiki.language.convertGrammar = function ( word, form ) {
+       /*jshint noempty:false, onecase:true */
+       var grammarForms = mediaWiki.language.getData( 'ru', 'grammarForms' );
        if ( grammarForms && grammarForms[form] ) {
-               return grammarForms[form][word] ;
+               return grammarForms[form][word];
        }
        switch ( form ) {
                case 'genitive': // родительный падеж
-                       if ( (  word.substr( word.length - 4 )  == 'вики' ) || (  word.substr( word.length - 4 ) == 'Вики' ) ) {
-                       }
-                       else if ( word.substr( word.length - 1 ) == 'ь' )
+                       if ( (  word.substr( word.length - 4 ) === 'вики' ) || (  word.substr( word.length - 4 ) === 'Вики' ) ) {
+                       } else if ( word.substr( word.length - 1 ) === 'ь' ) {
                                word = word.substr(0, word.length - 1 ) + 'я';
-                       else if ( word.substr( word.length - 2 ) == 'ия' )
+                       } else if ( word.substr( word.length - 2 ) === 'ия' ) {
                                word = word.substr(0, word.length - 2 ) + 'ии';
-                       else if ( word.substr( word.length - 2 ) == 'ка' )
+                       } else if ( word.substr( word.length - 2 ) === 'ка' ) {
                                word = word.substr(0, word.length - 2 ) + 'ки';
-                       else if ( word.substr( word.length - 2 )  == 'ти' )
+                       } else if ( word.substr( word.length - 2 )  === 'ти' ) {
                                word = word.substr(0, word.length - 2 ) + 'тей';
-                       else if ( word.substr( word.length - 2 ) == 'ды' )
+                       } else if ( word.substr( word.length - 2 ) === 'ды' ) {
                                word = word.substr(0, word.length - 2 ) + 'дов';
-                       else if ( word.substr( word.length - 3 ) == 'ник' )
+                       } else if ( word.substr( word.length - 3 ) === 'ник' ) {
                                word = word.substr(0, word.length - 3 ) + 'ника';
+                       }
                        break;
        }
        return word;
index acd00bf..fb335b6 100644 (file)
@@ -2,10 +2,10 @@
  * Slovenian (Slovenščina) language functions
  */
 
-mediaWiki.language.convertGrammar = function( word, form ) {
-       var grammarForms = mw.language.getData( 'sl', 'grammarForms' );
+mediaWiki.language.convertGrammar = function ( word, form ) {
+       var grammarForms = mediaWiki.language.getData( 'sl', 'grammarForms' );
        if ( grammarForms && grammarForms[form] ) {
-               return grammarForms[form][word] ;
+               return grammarForms[form][word];
        }
        switch ( form ) {
                case 'mestnik': // locative
index ee110b0..5e56b66 100644 (file)
@@ -2,33 +2,35 @@
  * Ukrainian (Українська) language functions
  */
 
-mediaWiki.language.convertGrammar = function( word, form ) {
-       var grammarForms = mw.language.getData( 'uk', 'grammarForms' );
+mediaWiki.language.convertGrammar = function ( word, form ) {
+       /*jshint noempty:false */
+       var grammarForms = mediaWiki.language.getData( 'uk', 'grammarForms' );
        if ( grammarForms && grammarForms[form] ) {
-               return grammarForms[form][word] ;
+               return grammarForms[form][word];
        }
        switch ( form ) {
                case 'genitive': // родовий відмінок
-                       if ( ( word.substr( word.length - 4 ) == 'вікі' ) || ( word.substr( word.length - 4 ) == 'Вікі' ) ) {
-                       }
-                       else if ( word.substr( word.length - 1 ) == 'ь' )
+                       if ( ( word.substr( word.length - 4 ) === 'вікі' ) || ( word.substr( word.length - 4 ) === 'Вікі' ) ) {
+                       } else if ( word.substr( word.length - 1 ) === 'ь' ) {
                                word = word.substr(0, word.length - 1 ) + 'я';
-                       else if ( word.substr( word.length - 2 ) == 'ія' )
+                       } else if ( word.substr( word.length - 2 ) === 'ія' ) {
                                word = word.substr(0, word.length - 2 ) + 'ії';
-                       else if ( word.substr( word.length - 2 ) == 'ка' )
+                       } else if ( word.substr( word.length - 2 ) === 'ка' ) {
                                word = word.substr(0, word.length - 2 ) + 'ки';
-                       else if ( word.substr( word.length - 2 ) == 'ти' )
+                       } else if ( word.substr( word.length - 2 ) === 'ти' ) {
                                word = word.substr(0, word.length - 2 ) + 'тей';
-                       else if ( word.substr( word.length - 2 ) == 'ды' )
+                       } else if ( word.substr( word.length - 2 ) === 'ды' ) {
                                word = word.substr(0, word.length - 2 ) + 'дов';
-                       else if ( word.substr( word.length - 3 ) == 'ник' )
+                       } else if ( word.substr( word.length - 3 ) === 'ник' ) {
                                word = word.substr(0, word.length - 3 ) + 'ника';
+                       }
                        break;
                case 'accusative': // знахідний відмінок
-                       if ( ( word.substr( word.length - 4 ) == 'вікі' ) || ( word.substr( word.length - 4 ) == 'Вікі' ) ) {
+                       if ( ( word.substr( word.length - 4 ) === 'вікі' ) || ( word.substr( word.length - 4 ) === 'Вікі' ) ) {
                        }
-                       else if ( word.substr( word.length - 2 ) == 'ія' )
+                       else if ( word.substr( word.length - 2 ) === 'ія' ) {
                                word = word.substr(0, word.length - 2 ) + 'ію';
+                       }
                        break;
        }
        return word;
diff --git a/resources/mediawiki.page/mediawiki.page.patrol.ajax.js b/resources/mediawiki.page/mediawiki.page.patrol.ajax.js
new file mode 100644 (file)
index 0000000..d7a07d7
--- /dev/null
@@ -0,0 +1,63 @@
+/**
+ * Animate patrol links to use asynchronous API requests to
+ * patrol pages, rather than navigating to a different URI.
+ *
+ * @since 1.21
+ * @author Marius Hoch <hoo@online.de>
+ */
+( function ( mw, $ ) {
+       if ( !mw.user.tokens.exists( 'patrolToken' ) ) {
+               // Current user has no patrol right, or an old cached version of user.tokens
+               // that didn't have patrolToken yet.
+               return;
+       }
+       $( document ).ready( function () {
+               var $patrolLinks = $( '.patrollink a' );
+               $patrolLinks.on( 'click', function ( e ) {
+                       var $spinner, href, rcid, apiRequest;
+
+                       // Hide the link and create a spinner to show it inside the brackets.
+                       $spinner = $.createSpinner( {
+                               size: 'small',
+                               type: 'inline'
+                       } );
+                       $( this ).hide().after( $spinner );
+
+                       href = $( this ).attr( 'href' );
+                       rcid = mw.util.getParamValue( 'rcid', href );
+                       apiRequest = new mw.Api();
+
+                       apiRequest.post( {
+                               action: 'patrol',
+                               token: mw.user.tokens.get( 'patrolToken' ),
+                               rcid: rcid
+                       } )
+                       .done( function ( data ) {
+                               // Remove all patrollinks from the page (including any spinners inside).
+                               $patrolLinks.closest( '.patrollink' ).remove();
+                               if ( data.patrol !== undefined ) {
+                                       // Success
+                                       var title = new mw.Title( data.patrol.title );
+                                       mw.notify( mw.msg( 'markedaspatrollednotify', title.toText() ) );
+                               } else {
+                                       // This should never happen as errors should trigger fail
+                                       mw.notify( mw.msg( 'markedaspatrollederrornotify' ) );
+                               }
+                       } )
+                       .fail( function ( error ) {
+                               $spinner.remove();
+                               // Restore the patrol link. This allows the user to try again
+                               // (or open it in a new window, bypassing this ajax module).
+                               $patrolLinks.show();
+                               if ( error === 'noautopatrol' ) {
+                                       // Can't patrol own
+                                       mw.notify( mw.msg( 'markedaspatrollederror-noautopatrol' ) );
+                               } else {
+                                       mw.notify( mw.msg( 'markedaspatrollederrornotify' ) );
+                               }
+                       } );
+
+                       e.preventDefault();
+               } );
+       } );
+}( mediaWiki, jQuery ) );
index 989a986..d8d092b 100644 (file)
@@ -79,7 +79,10 @@ jQuery( document ).ready( function ( $ ) {
        // <a href="#.."> will naturally set the hash, handled by onhashchange.
        // But other things that change the hash will also be catched (e.g. using
        // the Back and Forward browser navigation).
-       if ( 'onhashchange' in window ) {
+       // Note the special check for IE "compatibility" mode.
+       if ( 'onhashchange' in window &&
+               ( document.documentMode === undefined || document.documentMode >= 8 )
+       ) {
                $(window).on( 'hashchange' , function () {
                        var hash = window.location.hash;
                        if ( hash.match( /^#mw-prefsection-[\w\-]+/ ) ) {
index b81b1aa..0423f8e 100644 (file)
@@ -285,10 +285,6 @@ class CologneBlueTemplate extends BaseTemplate {
                        </a>
                </p>
                <p id="sitesub"><?php echo wfMessage( 'sitesubtitle' )->escaped() ?></p>
-               <div id="toplinks" role="navigation">
-                       <p id="syslinks"><?php echo $this->sysLinks() ?></p>
-                       <p id="variantlinks"><?php echo $this->variantLinks() ?></p>
-               </div>
                <div id="linkcollection" role="navigation">
                        <div id="langlinks"><?php echo str_replace( '<br />', '', $this->otherLanguages() ) ?></div>
                        <?php echo $this->getSkin()->getCategories() ?>
@@ -302,7 +298,10 @@ class CologneBlueTemplate extends BaseTemplate {
                <?php if ( $this->getSkin()->getSiteNotice() ) { ?>
                <div id="siteNotice"><?php echo $this->getSkin()->getSiteNotice() ?></div>
                <?php } ?>
-               <h1 id="firstHeading"><span dir="auto"><?php echo $this->data['title'] ?></span></h1>
+               <h1 id="firstHeading" lang="<?php
+                       $this->data['pageLanguage'] = $this->getSkin()->getTitle()->getPageLanguage()->getCode();
+                       $this->html( 'pageLanguage' );
+               ?>"><span dir="auto"><?php echo $this->data['title'] ?></span></h1>
                <?php if ( $this->translator->translate( 'tagline' ) ) { ?>
                <p class="tagline"><?php echo htmlspecialchars( $this->translator->translate( 'tagline' ) ) ?></p>
                <?php } ?>
@@ -352,7 +351,14 @@ class CologneBlueTemplate extends BaseTemplate {
 ?>
        </div>
 </div>
-<?php echo $this->quickBar() ?>
+<div id="mw-navigation">
+       <h2><?php echo wfMessage( 'navigation-heading' )->escaped() ?></h2>
+       <div id="toplinks" role="navigation">
+               <p id="syslinks"><?php echo $this->sysLinks() ?></p>
+               <p id="variantlinks"><?php echo $this->variantLinks() ?></p>
+       </div>
+       <?php echo $this->quickBar() ?>
+</div>
 <?php
                $s = ob_get_contents();
                ob_end_clean();
@@ -505,7 +511,7 @@ class CologneBlueTemplate extends BaseTemplate {
                foreach ( $bar as $heading => $data ) {
                        $portletId = Sanitizer::escapeId( "p-$heading" );
                        $headingMsg = wfMessage( $idToMessage[$heading] ? $idToMessage[$heading] : $heading );
-                       $headingHTML = "<h6>" . ( $headingMsg->exists() ? $headingMsg->escaped() : htmlspecialchars( $heading ) ) . "</h6>";
+                       $headingHTML = "<h3>" . ( $headingMsg->exists() ? $headingMsg->escaped() : htmlspecialchars( $heading ) ) . "</h3>";
                        $listHTML = "";
 
                        if ( is_array( $data ) ) {
index 1987c1c..900bdd8 100644 (file)
@@ -65,7 +65,10 @@ class ModernTemplate extends MonoBookTemplate {
 ?>
 
        <!-- heading -->
-       <div id="mw_header"><h1 id="firstHeading"><span dir="auto"><?php $this->html('title') ?></span></h1></div>
+       <div id="mw_header"><h1 id="firstHeading" lang="<?php
+               $this->data['pageLanguage'] = $this->getSkin()->getTitle()->getPageLanguage()->getCode();
+               $this->html( 'pageLanguage' );
+       ?>"><span dir="auto"><?php $this->html('title') ?></span></h1></div>
 
        <div id="mw_main">
        <div id="mw_contentwrapper">
@@ -103,6 +106,7 @@ class ModernTemplate extends MonoBookTemplate {
        </div><!-- mw_contentwrapper -->
 
        <div id="mw_portlets"<?php $this->html("userlangattributes") ?>>
+       <h2><?php $this->msg( 'navigation-heading' ) ?></h2>
 
        <!-- portlets -->
        <?php $this->renderPortals( $this->data['sidebar'] ); ?>
@@ -116,7 +120,7 @@ class ModernTemplate extends MonoBookTemplate {
 
        <!-- personal portlet -->
        <div class="portlet" id="p-personal" role="navigation">
-               <h5><?php $this->msg('personaltools') ?></h5>
+               <h3><?php $this->msg('personaltools') ?></h3>
                <div class="pBody">
                        <ul>
 <?php          foreach($this->getPersonalTools() as $key => $item) { ?>
index 6f74273..1b262a6 100644 (file)
@@ -84,7 +84,10 @@ class MonoBookTemplate extends BaseTemplate {
        <a id="top"></a>
        <?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
 
-       <h1 id="firstHeading" class="firstHeading"><span dir="auto"><?php $this->html('title') ?></span></h1>
+       <h1 id="firstHeading" class="firstHeading" lang="<?php
+               $this->data['pageLanguage'] = $this->getSkin()->getTitle()->getPageLanguage()->getCode();
+               $this->html( 'pageLanguage' );
+       ?>"><span dir="auto"><?php $this->html('title') ?></span></h1>
        <div id="bodyContent" class="mw-body">
                <div id="siteSub"><?php $this->msg('tagline') ?></div>
                <div id="contentSub"<?php $this->html('userlangattributes') ?>><?php $this->html('subtitle') ?></div>
@@ -104,9 +107,10 @@ class MonoBookTemplate extends BaseTemplate {
        </div>
 </div></div>
 <div id="column-one"<?php $this->html('userlangattributes')  ?>>
+       <h2><?php $this->msg( 'navigation-heading' ) ?></h2>
 <?php $this->cactions(); ?>
        <div class="portlet" id="p-personal" role="navigation">
-               <h5><?php $this->msg('personaltools') ?></h5>
+               <h3><?php $this->msg('personaltools') ?></h3>
                <div class="pBody">
                        <ul<?php $this->html('userlangattributes') ?>>
 <?php          foreach($this->getPersonalTools() as $key => $item) { ?>
@@ -201,7 +205,7 @@ echo $footerEnd;
                global $wgUseTwoButtonsSearchForm;
 ?>
        <div id="p-search" class="portlet" role="search">
-               <h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
+               <h3><label for="searchInput"><?php $this->msg('search') ?></label></h3>
                <div id="searchBody" class="pBody">
                        <form action="<?php $this->text('wgScript') ?>" id="searchform">
                                <input type='hidden' name="title" value="<?php $this->text('searchtitle') ?>"/>
@@ -228,7 +232,7 @@ echo $footerEnd;
        function cactions() {
 ?>
        <div id="p-cactions" class="portlet" role="navigation">
-               <h5><?php $this->msg('views') ?></h5>
+               <h3><?php $this->msg('views') ?></h3>
                <div class="pBody">
                        <ul><?php
                                foreach($this->data['content_actions'] as $key => $tab) {
@@ -245,7 +249,7 @@ echo $footerEnd;
        function toolbox() {
 ?>
        <div class="portlet" id="p-tb" role="navigation">
-               <h5><?php $this->msg('toolbox') ?></h5>
+               <h3><?php $this->msg('toolbox') ?></h3>
                <div class="pBody">
                        <ul>
 <?php
@@ -268,7 +272,7 @@ echo $footerEnd;
                if( $this->data['language_urls'] ) {
 ?>
        <div id="p-lang" class="portlet" role="navigation">
-               <h5<?php $this->html('userlangattributes') ?>><?php $this->msg('otherlanguages') ?></h5>
+               <h3<?php $this->html('userlangattributes') ?>><?php $this->msg('otherlanguages') ?></h3>
                <div class="pBody">
                        <ul>
 <?php          foreach($this->data['language_urls'] as $key => $langlink) { ?>
@@ -296,7 +300,7 @@ echo $footerEnd;
                echo '  ' . Html::openElement( 'div', $portletAttribs );
 ?>
 
-               <h5><?php $msg = wfMessage( $bar ); echo htmlspecialchars( $msg->exists() ? $msg->text() : $bar ); ?></h5>
+               <h3><?php $msg = wfMessage( $bar ); echo htmlspecialchars( $msg->exists() ? $msg->text() : $bar ); ?></h3>
                <div class='pBody'>
 <?php   if ( is_array( $cont ) ) { ?>
                        <ul>
index de11639..49a0ad5 100644 (file)
@@ -2,6 +2,22 @@
 /**
  * Standard (a.k.a. Classic) skin: old MediaWiki default skin
  *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ *
  * @file
  * @ingroup Skins
  */
index 104cdde..8d685bd 100644 (file)
@@ -165,7 +165,10 @@ class VectorTemplate extends BaseTemplate {
                        <!-- /sitenotice -->
                        <?php endif; ?>
                        <!-- firstHeading -->
-                       <h1 id="firstHeading" class="firstHeading"><span dir="auto"><?php $this->html( 'title' ) ?></span></h1>
+                       <h1 id="firstHeading" class="firstHeading" lang="<?php
+                               $this->data['pageLanguage'] = $this->getSkin()->getTitle()->getPageLanguage()->getCode();
+                               $this->html( 'pageLanguage' );
+                       ?>"><span dir="auto"><?php $this->html( 'title' ) ?></span></h1>
                        <!-- /firstHeading -->
                        <!-- bodyContent -->
                        <div id="bodyContent">
@@ -224,25 +227,28 @@ class VectorTemplate extends BaseTemplate {
                        <!-- /bodyContent -->
                </div>
                <!-- /content -->
-               <!-- header -->
-               <div id="mw-head" class="noprint">
-                       <?php $this->renderNavigation( 'PERSONAL' ); ?>
-                       <div id="left-navigation">
-                               <?php $this->renderNavigation( array( 'NAMESPACES', 'VARIANTS' ) ); ?>
-                       </div>
-                       <div id="right-navigation">
-                               <?php $this->renderNavigation( array( 'VIEWS', 'ACTIONS', 'SEARCH' ) ); ?>
+               <div id="mw-navigation">
+                       <h2><?php $this->msg( 'navigation-heading' ) ?></h2>
+                       <!-- header -->
+                       <div id="mw-head" class="noprint">
+                               <?php $this->renderNavigation( 'PERSONAL' ); ?>
+                               <div id="left-navigation">
+                                       <?php $this->renderNavigation( array( 'NAMESPACES', 'VARIANTS' ) ); ?>
+                               </div>
+                               <div id="right-navigation">
+                                       <?php $this->renderNavigation( array( 'VIEWS', 'ACTIONS', 'SEARCH' ) ); ?>
+                               </div>
                        </div>
-               </div>
-               <!-- /header -->
-               <!-- panel -->
+                       <!-- /header -->
+                       <!-- panel -->
                        <div id="mw-panel" class="noprint">
                                <!-- logo -->
                                        <div id="p-logo" role="banner"><a style="background-image: url(<?php $this->text( 'logopath' ) ?>);" href="<?php echo htmlspecialchars( $this->data['nav_urls']['mainpage']['href'] ) ?>" <?php echo Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) ) ?>></a></div>
                                <!-- /logo -->
                                <?php $this->renderPortals( $this->data['sidebar'] ); ?>
                        </div>
-               <!-- /panel -->
+                       <!-- /panel -->
+               </div>
                <!-- footer -->
                <div id="footer" role="contentinfo"<?php $this->html( 'userlangattributes' ) ?>>
                        <?php foreach( $this->getFooterLinks() as $category => $links ): ?>
@@ -328,7 +334,7 @@ class VectorTemplate extends BaseTemplate {
                }
                ?>
 <div class="portal" role="navigation" id='<?php echo Sanitizer::escapeId( "p-$name" ) ?>'<?php echo Linker::tooltip( 'p-' . $name ) ?>>
-       <h5<?php $this->html( 'userlangattributes' ) ?>><?php $msgObj = wfMessage( $msg ); echo htmlspecialchars( $msgObj->exists() ? $msgObj->text() : $msg ); ?></h5>
+       <h3<?php $this->html( 'userlangattributes' ) ?>><?php $msgObj = wfMessage( $msg ); echo htmlspecialchars( $msgObj->exists() ? $msgObj->text() : $msg ); ?></h3>
        <div class="body">
 <?php
                if ( is_array( $content ) ): ?>
@@ -361,7 +367,7 @@ class VectorTemplate extends BaseTemplate {
         * @param $elements array
         */
        protected function renderNavigation( $elements ) {
-               global $wgVectorUseSimpleSearch, $wgVectorCombineUserTalk;
+               global $wgVectorUseSimpleSearch;
 
                // If only one element was given, wrap it in an array, allowing more
                // flexible arguments
@@ -378,7 +384,7 @@ class VectorTemplate extends BaseTemplate {
                                case 'NAMESPACES':
 ?>
 <div id="p-namespaces" role="navigation" class="vectorTabs<?php if ( count( $this->data['namespace_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
-       <h5><?php $this->msg( 'namespaces' ) ?></h5>
+       <h3><?php $this->msg( 'namespaces' ) ?></h3>
        <ul<?php $this->html( 'userlangattributes' ) ?>>
                <?php foreach ( $this->data['namespace_urls'] as $link ): ?>
                        <li <?php echo $link['attributes'] ?>><span><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></span></li>
@@ -390,14 +396,14 @@ class VectorTemplate extends BaseTemplate {
                                case 'VARIANTS':
 ?>
 <div id="p-variants" role="navigation" class="vectorMenu<?php if ( count( $this->data['variant_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
-       <h4>
+       <h3 id="mw-vector-current-variant">
        <?php foreach ( $this->data['variant_urls'] as $link ): ?>
                <?php if ( stripos( $link['attributes'], 'selected' ) !== false ): ?>
                        <?php echo htmlspecialchars( $link['text'] ) ?>
                <?php endif; ?>
        <?php endforeach; ?>
-       </h4>
-       <h5><span><?php $this->msg( 'variants' ) ?></span><a href="#"></a></h5>
+       </h3>
+       <h3><span><?php $this->msg( 'variants' ) ?></span><a href="#"></a></h3>
        <div class="menu">
                <ul>
                        <?php foreach ( $this->data['variant_urls'] as $link ): ?>
@@ -411,7 +417,7 @@ class VectorTemplate extends BaseTemplate {
                                case 'VIEWS':
 ?>
 <div id="p-views" role="navigation" class="vectorTabs<?php if ( count( $this->data['view_urls'] ) == 0 ) { echo ' emptyPortlet'; } ?>">
-       <h5><?php $this->msg('views') ?></h5>
+       <h3><?php $this->msg('views') ?></h3>
        <ul<?php $this->html('userlangattributes') ?>>
                <?php foreach ( $this->data['view_urls'] as $link ): ?>
                        <li<?php echo $link['attributes'] ?>><span><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php
@@ -428,7 +434,7 @@ class VectorTemplate extends BaseTemplate {
                                case 'ACTIONS':
 ?>
 <div id="p-cactions" role="navigation" class="vectorMenu<?php if ( count( $this->data['action_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
-       <h5><span><?php $this->msg( 'actions' ) ?></span><a href="#"></a></h5>
+       <h3><span><?php $this->msg( 'actions' ) ?></span><a href="#"></a></h3>
        <div class="menu">
                <ul<?php $this->html( 'userlangattributes' ) ?>>
                        <?php foreach ( $this->data['action_urls'] as $link ): ?>
@@ -442,24 +448,10 @@ class VectorTemplate extends BaseTemplate {
                                case 'PERSONAL':
 ?>
 <div id="p-personal" role="navigation" class="<?php if ( count( $this->data['personal_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
-       <h5><?php $this->msg( 'personaltools' ) ?></h5>
+       <h3><?php $this->msg( 'personaltools' ) ?></h3>
        <ul<?php $this->html( 'userlangattributes' ) ?>>
 <?php
                                        $personalTools = $this->getPersonalTools();
-                                       if ( $wgVectorCombineUserTalk && isset( $personalTools['userpage'] ) ) {
-?>
-               <li>
-<?php
-                                               echo $this->makeListItem( 'userpage', $personalTools['userpage'], array( 'tag' => 'span' ) );
-?> <?php
-                                               $personalTools['mytalk']['links'][0]['text'] = $this->getMsg( 'mytalk-parenthetical' )->text();
-                                               $talkItem = $this->makeListItem( 'mytalk', $personalTools['mytalk'], array( 'tag' => 'span' ) );
-                                               echo $this->getMsg( 'parentheses' )->rawParams( $talkItem )->escaped();
-                                               unset( $personalTools['userpage'], $personalTools['mytalk'] );
-?>
-               </li>
-<?php
-                                       }
                                        foreach ( $personalTools as $key => $item ) {
                                                echo $this->makeListItem( $key, $item );
                                        }
@@ -471,7 +463,7 @@ class VectorTemplate extends BaseTemplate {
                                case 'SEARCH':
 ?>
 <div id="p-search" role="search">
-       <h5<?php $this->html( 'userlangattributes' ) ?>><label for="searchInput"><?php $this->msg( 'search' ) ?></label></h5>
+       <h3<?php $this->html( 'userlangattributes' ) ?>><label for="searchInput"><?php $this->msg( 'search' ) ?></label></h3>
        <form action="<?php $this->text( 'wgScript' ) ?>" id="searchform">
                <?php if ( $wgVectorUseSimpleSearch && $this->getSkin()->getUser()->getOption( 'vector-simplesearch' ) ): ?>
                <div id="simpleSearch">
index 0d9615f..349638a 100644 (file)
@@ -97,7 +97,13 @@ textarea {
        color: #446688;
 }
 
-#quickbar h6 {
+/* Hide, but keep accessible for screen-readers */
+#mw-navigation h2 {
+       position: absolute;
+       top: -9999px;
+}
+
+#quickbar h3 {
        font-family: Verdana, Arial, sans-serif;
        font-size: 10pt;
        font-weight: bold;
index ed4e8c5..34d3357 100644 (file)
        direction: rtl;
 }
 
+/* User-Agent styles for new HTML5 elements */
+mark {
+       background-color: yellow;
+       color: black;
+}
+
 /* Input types that should follow user direction, like buttons */
 /* TODO: What about buttons in wikipage content ? */
 input[type="submit"],
index 80cdcda..f201209 100644 (file)
@@ -58,6 +58,7 @@ body {
        font-variant: small-caps;
 }
 
+#p-personal h3,
 #p-personal h5 {
        display: none;
 }
@@ -125,6 +126,12 @@ body {
        background-color: #f0f0f0;
 }
 
+/* Hide, but keep accessible for screen-readers */
+#mw_portlets h2 {
+       position: absolute;
+       top: -9999px;
+}
+
 #mw_main {
        padding: 0 0 0 0;
        margin: 0 0 0 0;
@@ -170,11 +177,13 @@ textarea {
        margin-top: .4em;
 }
 
+.portlet h3,
 .portlet h5 {
        padding: 0.1em 0 0.3em 1em;
        margin: 0 0 0 0;
        background-color: #dddddd;
        font-weight: bold;
+       font-size: 0.83em;
        border-bottom: solid 1px #3c78b5;
        height: 1.1em;
 }
@@ -243,6 +252,7 @@ ul {
        color: white;
 }
 
+#p-cactions h3,
 #p-cactions h5 {
        display: none;
 }
index 5866d97..4cbc093 100644 (file)
@@ -24,6 +24,11 @@ div#content {
 div#column-one {
        padding-top: 160px;
 }
+/* Hide, but keep accessible for screen-readers */
+#column-one h2 {
+       position: absolute;
+       top: -9999px;
+}
 div#content {
        background: white;
        color: black;
@@ -71,6 +76,7 @@ a.new,
 }
 
 ul {
+       list-style-type: square;
        /* @embed */
        list-style-image: url(bullet.gif);
 }
@@ -224,12 +230,7 @@ table.rimage {
        width: 11.6em;
        overflow: hidden;
 }
-.portlet h4 {
-       font-size: 95%;
-       font-weight: normal;
-       white-space: nowrap;
-}
-.portlet h5 {
+.portlet h3 {
        background: transparent;
        padding: 0 1em 0 .5em;
        display: inline;
@@ -239,18 +240,6 @@ table.rimage {
        font-weight: normal;
        white-space: nowrap;
 }
-.portlet h6 {
-       background: #ffae2e;
-       border: 1px solid #2f6fab;
-       border-style: solid solid none solid;
-       padding: 0 1em 0 1em;
-       text-transform: lowercase;
-       display: block;
-       font-size: 1em;
-       height: 1.2em;
-       font-weight: normal;
-       white-space: nowrap;
-}
 .pBody {
        font-size: 95%;
        background-color: white;
@@ -259,18 +248,8 @@ table.rimage {
        border: 1px solid #aaa;
        padding: 0 .8em .3em .5em;
 }
-.portlet h1,
-.portlet h2,
-.portlet h3,
-.portlet h4 {
-       margin: 0;
-       padding: 0;
-}
 .portlet ul {
        line-height: 1.5em;
-       list-style-type: square;
-       /* @embed */
-       list-style-image: url(bullet.gif);
        font-size: 95%;
 }
 .portlet li {
@@ -291,7 +270,7 @@ table.rimage {
        width: 12em;
        overflow: visible;
 }
-#p-logo h5 {
+#p-logo h3 {
        display: none;
 }
 #p-logo a,
@@ -352,7 +331,7 @@ input.searchButton {
        overflow: visible;
        line-height: 1.2em;
 }
-#p-personal h5 {
+#p-personal h3 {
        display: none;
 }
 #p-personal .portlet,
@@ -372,7 +351,8 @@ input.searchButton {
        padding: 0 2em 0 3em;
        margin: 0;
        text-align: right;
-       list-style: none;
+       list-style-type: none;
+       list-style-image: none;
        z-index: 0;
        background: none;
        cursor: default;
@@ -432,11 +412,11 @@ li#pt-login {
        background: none;
        border-collapse: collapse;
        padding-left: 1em;
-       list-style: none;
        font-size: 95%;
 }
 #p-cactions ul {
-       list-style: none;
+       list-style-type: none;
+       list-style-image: none;
 }
 #p-cactions li {
        display: inline;
@@ -474,7 +454,7 @@ li#pt-login {
        text-decoration: none;
        background-color: white;
 }
-#p-cactions h5 {
+#p-cactions h3 {
        display: none;
 }
 #p-cactions li.istalk {
@@ -515,8 +495,7 @@ li#ca-print {
 }
 
 /* Override text-transform on languages where capitalization is significant */
-.capitalize-all-nouns .portlet h5,
-.capitalize-all-nouns .portlet h6,
+.capitalize-all-nouns .portlet h3,
 .capitalize-all-nouns #p-personal ul,
 .capitalize-all-nouns #p-cactions ul li a {
        text-transform: none;
@@ -824,7 +803,8 @@ div#searchTarget {
 }
 
 div#searchTarget ul li {
-       list-style: none;
+       list-style-type: none;
+       list-style-image: none;
 }
 
 div#searchTarget ul li:before {
index 7b4f2ae..edb1d7d 100644 (file)
@@ -84,6 +84,12 @@ a:hover {
        left: 0;
 }
 
+/* Hide, but keep accessible for screen-readers */
+#column-one h2 {
+       position: absolute;
+       top: -9999px;
+}
+
 body {
        margin: 0;
        padding: 0;
index 9042ff7..26967a5 100644 (file)
@@ -37,6 +37,11 @@ div#content {
        color: black;
        direction: ltr;
 }
+/* Hide, but keep accessible for screen-readers */
+#mw-navigation h2 {
+       position: absolute;
+       top: -9999px;
+}
 /* Head */
 #mw-page-base {
        height: 5em;
@@ -61,6 +66,7 @@ div#mw-head {
        right: 0;
        width: 100%;
 }
+div#mw-head h3,
 div#mw-head h5 {
        margin: 0;
        padding: 0;
@@ -74,12 +80,16 @@ div.emptyPortlet {
        position: absolute;
        top: 0.33em;
        right: 0.75em;
+       /* Display on top of page tabs - bug 37158 */
+       z-index: 1;
 }
+#p-personal h3,
 #p-personal h5 {
        display: none;
 }
 #p-personal ul {
-       list-style: none;
+       list-style-type: none;
+       list-style-image: none;
        margin: 0;
        padding-left: 10em; /* Keep from overlapping logo */
 }
@@ -106,7 +116,9 @@ div.emptyPortlet {
        margin-top: 2.5em;
 }
 /* Navigation Labels */
+div.vectorTabs h3,
 div.vectorTabs h5,
+div.vectorMenu h3 span,
 div.vectorMenu h5 span {
        display: none;
 }
@@ -129,7 +141,8 @@ div.vectorTabs ul {
 }
 div.vectorTabs ul {
        height: 100%;
-       list-style: none;
+       list-style-type: none;
+       list-style-image: none;
        margin: 0;
        padding: 0;
 }
@@ -226,6 +239,7 @@ body.rtl div.vectorMenu {
 }
 /* OVERRIDDEN BY COMPLIANT BROWSERS */
 /* @noflip */
+div#mw-head div.vectorMenu h3,
 div#mw-head div.vectorMenu h5 {
        float: left;
        /* @embed */
@@ -233,15 +247,18 @@ div#mw-head div.vectorMenu h5 {
        background-repeat: no-repeat;
 }
 /* This will be flipped - unlike the one above it */
+div#mw-head div.vectorMenu h3,
 div#mw-head div.vectorMenu h5 {
        background-position: bottom left;
        margin-left: -1px;
 }
 /* IGNORED BY IE6 */
+div#mw-head div.vectorMenu > h3,
 div#mw-head div.vectorMenu > h5 {
        background-image: none;
 }
-div#mw-head div.vectorMenu h4 {
+div#mw-head div.vectorMenu h4,
+div.vectorMenu#p-variants #mw-vector-current-variant {
        display: inline-block;
        float: left;
        font-size: 0.8em;
@@ -252,20 +269,23 @@ div#mw-head div.vectorMenu h4 {
 }
 /* OVERRIDDEN BY COMPLIANT BROWSERS */
 /* @noflip */
+div.vectorMenu h3 a,
 div.vectorMenu h5 a {
        display: inline-block;
        width: 24px;
-       height: 2.5em;
+       height: 1.9em;
        text-decoration: none;
        /* @embed */
        background-image: url(images/tab-break.png);
        background-repeat: no-repeat;
 }
 /* This will be flipped - unlike the one above it */
+div.vectorMenu h3 a,
 div.vectorMenu h5 a {
        background-position: bottom right;
 }
 /* IGNORED BY IE6 */
+div.vectorMenu h3 > a,
 div.vectorMenu h5 > a {
        display: block;
 }
@@ -302,9 +322,8 @@ div.vectorMenu ul {
        background-color: white;
        border: solid 1px silver;
        border-top-width: 0;
-       list-style: none;
-       list-style-image: none;
        list-style-type: none;
+       list-style-image: none;
        padding: 0;
        margin: 0;
        margin-left: -1px;
@@ -346,6 +365,7 @@ div.vectorMenu li.selected a:visited {
        text-decoration: none;
 }
 /* Search */
+#p-search h3,
 #p-search h5 {
        display: none;
 }
@@ -463,6 +483,7 @@ div#mw-panel div.portal {
        padding-bottom: 1.5em;
        direction: ltr;
 }
+div#mw-panel div.portal h3,
 div#mw-panel div.portal h5 {
        font-weight: normal;
        color: #444;
@@ -483,9 +504,8 @@ div#mw-panel div.portal div.body {
        background-position: top left;
 }
 div#mw-panel div.portal div.body ul {
-       list-style: none;
-       list-style-image: none;
        list-style-type: none;
+       list-style-image: none;
        padding: 0;
        margin: 0;
 }
@@ -515,9 +535,8 @@ div#footer {
        direction: ltr;
 }
 div#footer ul {
-       list-style: none;
-       list-style-image: none;
        list-style-type: none;
+       list-style-image: none;
        margin: 0;
        padding: 0;
 }
@@ -685,6 +704,7 @@ div#content {
 }
 
 ul {
+       list-style-type: disc;
        /* @embed */
        list-style-image: url(images/bullet-icon.png);
 }
index 8b719e5..4427d9a 100644 (file)
@@ -4,7 +4,7 @@
 jQuery( function ( $ ) {
        $( 'div.vectorMenu' ).each( function () {
                var $el = $( this );
-               $el.find( 'h5:first a:first' )
+               $el.find( 'h3:first a:first' )
                        // For accessibility, show the menu when the hidden link in the menu is clicked (bug 24298)
                        .click( function ( e ) {
                                $el.find( '.menu:first' ).toggleClass( 'menuForceShow' );
index b9f1817..ea1b290 100644 (file)
@@ -692,7 +692,6 @@ class ParserTest {
                        'wgExternalLinkTarget' => false,
                        'wgAlwaysUseTidy' => false,
                        'wgHtml5' => true,
-                       'wgCleanupPresentationalAttributes' => true,
                        'wgWellFormedXml' => true,
                        'wgAllowMicrodataAttributes' => true,
                        'wgAdaptiveMessageCache' => true,
index 4690e1a..bc24236 100644 (file)
@@ -102,6 +102,12 @@ Template:table_attribs
 |</noinclude>style="color: red"| Foo
 !! endarticle
 
+!! article
+A?b
+!! text
+Weirdo titles!
+!! endarticle
+
 ###
 ### Basic tests
 ###
@@ -787,6 +793,17 @@ And a <a href="/wiki/Main_Page" title="Main Page">link</a>
 </pre>
 !! end
 
+!! test
+Ident preformatting with inline content
+!! input
+ a
+ ''b''
+!! result
+<pre>a
+<i>b</i>
+</pre>
+!! end
+
 !! test
 <pre> with <nowiki> inside (compatibility with 1.6 and earlier)
 !! input
@@ -1555,6 +1572,33 @@ should be left alone
 ## See also: https://bugzilla.wikimedia.org/show_bug.cgi?id=6569
 ## and http://lists.wikimedia.org/pipermail/wikitext-l/2011-November/000483.html
 
+!! test
+Table / list interaction: indented table with lists in table contents
+!! input
+:{|
+|-
+| a
+* b
+|-
+| c
+* d
+|}
+!! result
+<dl><dd><table>
+
+<tr>
+<td> a
+<ul><li> b
+</li></ul>
+</td></tr>
+<tr>
+<td> c
+<ul><li> d
+</li></ul>
+</td></tr></table></dd></dl>
+
+!! end
+
 !! test
 Definition Lists: Nesting: Multi-level (Parsoid only)
 !! options
@@ -2449,6 +2493,33 @@ http://[2404:130:0:1000::187:2]/index.php
 </p>
 !! end
 
+!! test
+Non-extlinks in brackets
+!! input
+[foo]
+[foo bar]
+[foo ''bar'']
+[fool's] errand
+[fool's errand]
+[{{echo|foo}}]
+[{{echo|foo}} bar]
+[{{echo|foo}} ''bar'']
+[{{echo|foo}}l's] errand
+[{{echo|foo}}l's errand]
+!! result
+<p>[foo]
+[foo bar]
+[foo <i>bar</i>]
+[fool's] errand
+[fool's errand]
+[foo]
+[foo bar]
+[foo <i>bar</i>]
+[fool's] errand
+[fool's errand]
+</p>
+!! end
+
 ###
 ### Quotes
 ###
@@ -2534,6 +2605,31 @@ A table with nothing but a caption
 
 !! end
 
+!! test
+Table td-cell syntax variations
+!! input
+{|
+| foo bar foo | baz
+| foo bar foo || baz
+| style='color:red;' | baz
+| style='color:red;' || baz
+|}
+!! result
+<table>
+<tr>
+<td> baz
+</td>
+<td> foo bar foo </td>
+<td> baz
+</td>
+<td style="color:red;"> baz
+</td>
+<td> style='color:red;' </td>
+<td> baz
+</td></tr></table>
+
+!! end
+
 !! test
 Simple table
 !! input
@@ -2644,25 +2740,88 @@ Multiplication table
 
 !! end
 
+!! test
+Accept "||" in table headings
+!! input
+{|
+!h1 || h2
+|}
+!! result
+<table>
+<tr>
+<th>h1 </th>
+<th> h2
+</th></tr></table>
+
+!! end
+
+!! test
+Accept "||" in indented table headings
+!! input
+:{|
+!h1 || h2
+|}
+!! result
+<dl><dd><table>
+<tr>
+<th>h1 </th>
+<th> h2
+</th></tr></table></dd></dl>
+
+!! end
+
+!! test
+Accept empty attributes in td/th cells (td/th cells starting with leading ||)
+!! input
+{|
+!| h1
+|| a
+|}
+!! result
+<table>
+<tr>
+<th> h1
+</th>
+<td> a
+</td></tr></table>
+
+!! end
+
 !!test
-Allow +/- in 2nd and later cells in a row
+Allow +/- in 2nd and later cells in a row, in 1st cell when td-attrs are present, or in 1st cell when there is a space between "|" and +/- 
 !!input
 {|
+|-
+|style='color:red;'|+1
+|style='color:blue;'|-1
+|-
 | 1 || 2 || 3
+| 1 ||+2 ||-3
 |-
-| 1 || +2 || -3
+| +1
+| -1
 |}
 !!result
 <table>
+
+<tr>
+<td style="color:red;">+1
+</td>
+<td style="color:blue;">-1
+</td></tr>
 <tr>
 <td> 1 </td>
 <td> 2 </td>
 <td> 3
+</td>
+<td> 1 </td>
+<td>+2 </td>
+<td>-3
 </td></tr>
 <tr>
-<td> 1 </td>
-<td> +2 </td>
-<td> -3
+<td> +1
+</td>
+<td> -1
 </td></tr></table>
 
 !!end
@@ -2795,6 +2954,42 @@ Template-generated table cell attributes and cell content
 
 !! end
 
+!! test
+Table with row followed by newlines and table heading
+!! input
+{|
+|-
+
+! foo
+|}
+!! result
+<table>
+
+
+<tr>
+<th> foo
+</th></tr></table>
+
+!! end
+
+# FIXME: Preserve the attribute properly (with an empty string as value) in
+# the PHP parser. Parsoid implements the behavior below.
+!! test
+Table attributes with empty value
+!! options
+disabled
+!! input
+{|
+| style=| hello
+|}
+!! result
+<table>
+<tr>
+<td style=""> hello
+</td></tr></table>
+
+!! end
+
 ###
 ### Internal links
 ###
@@ -2879,6 +3074,15 @@ Link with suffix
 </p>
 !! end
 
+!! test
+Link with HTML entity in suffix / tail
+!! input
+[[Main Page]]&quot;, [[Main Page]]&#97;
+!! result
+<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>&quot;, <a href="/wiki/Main_Page" title="Main Page">Main Page</a>&#97;
+</p>
+!! end
+
 !! test
 Link with 3 brackets
 !! input
@@ -3075,6 +3279,18 @@ Plain link to protocol-relative URL with link text
 </p>
 !! end
 
+!! test
+Plain link to page with question mark in title
+!! input
+[[A?b]]
+
+[[A?b|Baz]]
+!! result
+<p><a href="/wiki/A%3Fb" title="A?b">A?b</a>
+</p><p><a href="/wiki/A%3Fb" title="A?b">Baz</a>
+</p>
+!! end
+
 
 # I'm fairly sure the expected result here is wrong.
 # We want these to be URL links, not pseudo-pages with URLs for titles....
@@ -3465,6 +3681,15 @@ Horizontal ruler -- <4 dashes render as plain text
 </p>
 !! end
 
+!! test
+Horizontal ruler -- Supports content following dashes on same line
+!! input
+---- Foo
+!! result
+<hr /> Foo
+
+!! end
+
 ###
 ### Block-level elements
 ###
@@ -4191,6 +4416,24 @@ Nonexistent template
 </p>
 !! end
 
+!! test
+Template with invalid target containing tags
+!! input
+{{a<b>b</b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a = b}}
+!! result
+<p>{{a<b>b</b>|foo|a=b|a = b}}
+</p>
+!! end
+
+!! test
+Template with invalid target containing unclosed tag
+!! input
+{{a<b>|{{echo|foo}}|{{echo|a}}={{echo|b}}|a = b}}
+!! result
+<p>{{a<b>|foo|a=b|a = b}}</b>
+</p>
+!! end
+
 !! article
 Template:test
 !! text
@@ -4557,6 +4800,20 @@ BUG 41: Template parameters shown as broken links
 </p>
 !! end
 
+!! test
+Template with targets containing wikilinks
+!! input
+{{[[foo]]}}
+
+{{[[{{echo|foo}}]]}}
+
+{{{{echo|[[foo}}]]}}
+!! result
+<p>{{<a href="/index.php?title=Foo&amp;action=edit&amp;redlink=1" class="new" title="Foo (page does not exist)">foo</a>}}
+</p><p>{{<a href="/index.php?title=Foo&amp;action=edit&amp;redlink=1" class="new" title="Foo (page does not exist)">foo</a>}}
+</p><p>{{[[foo}}]]
+</p>
+!! end
 
 !! article
 Template:MSGNW test
@@ -4646,6 +4903,13 @@ Foo<noinclude>zar</noinclude><includeonly>bar</includeonly>
 </p>
 !! end
 
+!! test
+Un-closed <noinclude>
+!! input
+<noinclude>
+!! result
+!! end
+
 !! test
 <onlyinclude> on a page
 !! input
@@ -4655,6 +4919,13 @@ Foo<noinclude>zar</noinclude><includeonly>bar</includeonly>
 </p>
 !! end
 
+!! test
+Un-closed <onlyinclude>
+!! input
+<onlyinclude>
+!! result
+!! end
+
 !! article
 Template:Includeonly section
 !! text
@@ -4713,6 +4984,13 @@ section=1
 ==Section 1==
 !! end
 
+!! test
+Un-closed <includeonly>
+!! input
+<includeonly>
+!! result
+!! end
+
 ###
 ### <includeonly> and <noinclude> in attributes
 ###
@@ -5957,6 +6235,19 @@ Image with multiple captions -- only last one is accepted
 
 !! end
 
+!! test
+Image with width attribute at different positions
+!! input
+[[Image:foobar.jpg|200px|right|Caption]]
+[[Image:foobar.jpg|right|200px|Caption]]
+[[Image: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>
+<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>
+
+!! end
+
 !! test
 Image with link parameter, wiki target
 !! input
@@ -7037,6 +7328,37 @@ div with illegal double attributes
 
 !!end
 
+# FIXME: produce empty string instead of "class" in the PHP parser, following
+# the HTML5 spec.
+!! test
+div with empty attribute value, space before equals
+!! options
+disabled
+!! input
+<div class =>HTML rocks</div>
+!! result
+<div class="">HTML rocks</div>
+
+!! end
+
+# This it very inconsistent in the PHP parser: it returns 
+# class="class" if there is a space between the name and the equal sign (see
+# 'div with empty attribute value, space before equals'), but strips the
+# attribute completely if the space is missing. We hope that not much content
+# depends on this, so are implementing the behavior below in Parsoid for
+# consistencies' sake. Disabled for the PHP parser. 
+# FIXME: fix this behavior in the PHP parser?
+!! test
+div with empty attribute value, no space before equals
+!! options
+disabled
+!! input
+<div class=>HTML rocks</div>
+!! result
+<div class="">HTML rocks</div>
+
+!! end
+
 !! test
 HTML multiple attributes correction
 !! input
@@ -7069,6 +7391,23 @@ DIV IN UPPERCASE
 
 !!end
 
+!! test
+Non-ASCII pseudo-tags are rendered as text
+!! input
+<khyô>
+!! result
+<p>&lt;khyô&gt;
+</p>
+!! end
+
+!! test
+Pseudo-tag with URL 'name' renders as url link
+!! input
+<http://example.com/>
+!! result
+<p>&lt;<a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a>&gt;
+</p>
+!! end
 
 !! test
 text with amp in the middle of nowhere
@@ -7855,6 +8194,30 @@ disabled
 Something need to be done. foo-2 ? 
 !! end
 
+!! test
+Sanitizer: Validating that <meta> and <link> work, but only for Microdata
+!! input
+<div itemscope>
+       <meta itemprop="hello" content="world">
+       <meta http-equiv="refresh" content="5">
+       <meta itemprop="hello" http-equiv="refresh" content="5">
+       <link itemprop="hello" href="{{SERVER}}">
+       <link rel="stylesheet" href="{{SERVER}}">
+       <link rel="stylesheet" itemprop="hello" href="{{SERVER}}">
+</div>
+!! result
+<div itemscope="itemscope">
+<p>    <meta itemprop="hello" content="world" />
+       &lt;meta http-equiv="refresh" content="5"&gt;
+       <meta itemprop="hello" content="5" />
+</p>
+       <link itemprop="hello" href="http&#58;//Britney-Spears" />
+       &lt;link rel="stylesheet" href="<a rel="nofollow" class="external free" href="http://Britney-Spears">http://Britney-Spears</a>"&gt;
+       <link itemprop="hello" href="http&#58;//Britney-Spears" />
+</div>
+
+!! end
+
 !! test
 Language converter: output gets cut off unexpectedly (bug 5757)
 !! options
@@ -10377,6 +10740,29 @@ Nested: -{zh-hans:Hi -{zh-cn:China;zh-sg:Singapore;}-;zh-hant:Hello -{zh-tw:Taiw
 </p>
 !! end
 
+!! test
+Proper conversion of text in external links
+!! options
+language=sr variant=sr-ec
+!! input
+http://www.google.com
+gopher://www.google.com
+[http://www.google.com http://www.google.com]
+[gopher://www.google.com gopher://www.google.com]
+[https://www.google.com irc://www.google.com]
+[ftp://www.google.com www.google.com/ftp://dir]
+[//www.google.com www.google.com]
+!! result
+<p><a rel="nofollow" class="external free" href="http://www.google.com">http://www.google.com</a>
+<a rel="nofollow" class="external free" href="gopher://www.google.com">gopher://www.google.com</a>
+<a rel="nofollow" class="external free" href="http://www.google.com">http://www.google.com</a>
+<a rel="nofollow" class="external free" href="gopher://www.google.com">gopher://www.google.com</a>
+<a rel="nofollow" class="external text" href="https://www.google.com">irc://www.google.com</a>
+<a rel="nofollow" class="external text" href="ftp://www.google.com">www.гоогле.цом/фтп://дир</a>
+<a rel="nofollow" class="external text" href="//www.google.com">www.гоогле.цом</a>
+</p>
+!! end
+
 !! test
 Do not convert roman numbers to language variants
 !! options
@@ -11345,22 +11731,6 @@ Bug 31098 Template which includes system messages which includes the template
 </p>
 !! end
 
-!! test
-Deprecated presentational attributes are converted to css
-!! input
-{|
-| valign=top align=left width=100 height=25% | Asdf
-|}
-<ul type="disc"></ul>
-!! result
-<table>
-<tr>
-<td style="text-align: left; height: 25%; vertical-align: top; width: 100px;"> Asdf
-</td></tr></table>
-<ul style="list-style-type: disc;"></ul>
-
-!! end
-
 !! test
 Bug31490 Turkish: ucfirst 'blah'
 !! options
@@ -12565,6 +12935,48 @@ Escaping nowikis
 </p>
 !! end
 
+!! test
+Tag-like HTML structures are passed through as text
+!! input
+<x y>
+
+<x.y>
+
+<x-y>
+
+1>2
+
+x<y
+
+a>b
+
+1<d e>f
+!! result
+<p>&lt;x y&gt;
+</p><p>&lt;x.y&gt;
+</p><p>&lt;x-y&gt;
+</p><p>1&gt;2
+</p><p>x&lt;y
+</p><p>a&gt;b
+</p><p>1&lt;d e&gt;f
+</p>
+!! end
+
+
+# This fails in the PHP parser (see bug 40670,
+# https://bugzilla.wikimedia.org/show_bug.cgi?id=40670), so disabled for it.
+!! test
+Tag names followed by punctuation should not be recognized as tags
+!! options
+disabled
+!! input
+<s.ome> text
+!! result
+<p>&lt;s.ome&gt text
+</p>
+!! end
+
+
 TODO:
 more images
 more tables
index 4df9a61..1ef6473 100644 (file)
@@ -28,6 +28,7 @@ $otions = array( 'quick', 'color', 'quiet', 'help', 'show-output', 'record', 'ru
 $optionsWithArgs = array( 'regex', 'filter', 'seed', 'setversion' );
 
 require_once( __DIR__ . '/../maintenance/commandLine.inc' );
+require_once( __DIR__ . '/TestsAutoLoader.php' );
 
 if ( isset( $options['help'] ) ) {
        echo <<<ENDS
index fca3251..2745c6a 100644 (file)
@@ -53,6 +53,26 @@ class MediaWikiPHPUnitCommand extends PHPUnit_TextUI_Command {
                }
        }
 
+       public function run( array $argv, $exit = true ) {
+               wfProfileIn( __METHOD__ );
+
+               $ret = parent::run( $argv, false );
+
+               wfProfileOut( __METHOD__ );
+
+               // Return to real wiki db, so profiling data is preserved
+               MediaWikiTestCase::teardownTestDB();
+
+               // Log profiling data, e.g. in the database or UDP
+               wfLogProfilingData();
+
+               if ( $exit ) {
+                       exit( $ret );
+               } else {
+                       return $ret;
+               }
+       }
+
        public function showHelp() {
                parent::showHelp();
 
index db41a4d..a594202 100644 (file)
@@ -14,12 +14,12 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         * @var DatabaseBase
         */
        protected $db;
-       protected $oldTablePrefix;
-       protected $useTemporaryTables = true;
-       protected $reuseDB = false;
        protected $tablesUsed = array(); // tables with data
 
+       private static $useTemporaryTables = true;
+       private static $reuseDB = false;
        private static $dbSetup = false;
+       private static $oldTablePrefix = false;
 
        /**
         * Holds the paths of temporary files/directories created through getNewTempFile,
@@ -64,31 +64,48 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                 */
                ObjectCache::$instances[CACHE_DB] = new HashBagOStuff;
 
+               $needsResetDB = false;
+               $logName = get_class( $this ) . '::' . $this->getName( false );
+
                if( $this->needsDB() ) {
-                       global $wgDBprefix;
-                       
-                       $this->useTemporaryTables = !$this->getCliArg( 'use-normal-tables' );
-                       $this->reuseDB = $this->getCliArg('reuse-db');
+                       // set up a DB connection for this test to use
+
+                       self::$useTemporaryTables = !$this->getCliArg( 'use-normal-tables' );
+                       self::$reuseDB = $this->getCliArg('reuse-db');
 
                        $this->db = wfGetDB( DB_MASTER );
 
                        $this->checkDbIsSupported();
 
-                       $this->oldTablePrefix = $wgDBprefix;
-
                        if( !self::$dbSetup ) {
-                               $this->initDB();
-                               self::$dbSetup = true;
+                               wfProfileIn( $logName . ' (clone-db)' );
+
+                               // switch to a temporary clone of the database
+                               self::setupTestDB( $this->db, $this->dbPrefix() );
+
+                               if ( ( $this->db->getType() == 'oracle' || !self::$useTemporaryTables ) && self::$reuseDB ) {
+                                       $this->resetDB();
+                               }
+
+                               wfProfileOut( $logName . ' (clone-db)' );
                        }
 
+                       wfProfileIn( $logName . ' (prepare-db)' );
                        $this->addCoreDBData();
                        $this->addDBData();
+                       wfProfileOut( $logName . ' (prepare-db)' );
 
-                       parent::run( $result );
+                       $needsResetDB = true;
+               }
 
+               wfProfileIn( $logName );
+               parent::run( $result );
+               wfProfileOut( $logName );
+
+               if( $needsResetDB ) {
+                       wfProfileIn( $logName . ' (reset-db)' );
                        $this->resetDB();
-               } else {
-                       parent::run( $result );
+                       wfProfileOut( $logName . ' (reset-db)' );
                }
        }
 
@@ -131,6 +148,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         * happen in reverse order.
         */
        protected function setUp() {
+               wfProfileIn( __METHOD__ );
                parent::setUp();
 
                /*
@@ -159,9 +177,13 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                                $this->db->rollback();
                        }
                }
+
+               wfProfileOut( __METHOD__ );
        }
 
        protected function tearDown() {
+               wfProfileIn( __METHOD__ );
+
                // Cleaning up temporary files
                foreach ( $this->tmpfiles as $fname ) {
                        if ( is_file( $fname ) || ( is_link( $fname ) ) ) {
@@ -185,6 +207,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                $this->mwGlobals = array();
 
                parent::tearDown();
+               wfProfileOut( __METHOD__ );
        }
 
        /**
@@ -349,26 +372,67 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                }
        }
 
-       private function initDB() {
+       /**
+        * Restores MediaWiki to using the table set (table prefix) it was using before
+        * setupTestDB() was called. Useful if we need to perform database operations
+        * after the test run has finished (such as saving logs or profiling info).
+        */
+       public static function teardownTestDB() {
+               if ( !self::$dbSetup ) {
+                       return;
+               }
+
+               CloneDatabase::changePrefix( self::$oldTablePrefix );
+
+               self::$oldTablePrefix = false;
+               self::$dbSetup = false;
+       }
+
+       /**
+        * Creates an empty skeleton of the wiki database by cloning its structure
+        * to equivalent tables using the given $prefix. Then sets MediaWiki to
+        * use the new set of tables (aka schema) instead of the original set.
+        *
+        * This is used to generate a dummy table set, typically consisting of temporary
+        * tables, that will be used by tests instead of the original wiki database tables.
+        *
+        * @note: the original table prefix is stored in self::$oldTablePrefix. This is used
+        * by teardownTestDB() to return the wiki to using the original table set.
+        *
+        * @note: this method only works when first called. Subsequent calls have no effect,
+        * even if using different parameters.
+        *
+        * @param DatabaseBase $db The database connection
+        * @param String  $prefix The prefix to use for the new table set (aka schema).
+        *
+        * @throws MWException if the database table prefix is already $prefix
+        */
+       public static function setupTestDB( DatabaseBase $db, $prefix ) {
                global $wgDBprefix;
-               if ( $wgDBprefix === $this->dbPrefix() ) {
-                       throw new MWException( 'Cannot run unit tests, the database prefix is already "unittest_"' );
+               if ( $wgDBprefix === $prefix ) {
+                       throw new MWException( 'Cannot run unit tests, the database prefix is already "' . $prefix . '"' );
                }
 
-               $tablesCloned = $this->listTables();
-               $dbClone = new CloneDatabase( $this->db, $tablesCloned, $this->dbPrefix() );
-               $dbClone->useTemporaryTables( $this->useTemporaryTables );
+               if ( self::$dbSetup ) {
+                       return;
+               }
 
-               if ( ( $this->db->getType() == 'oracle' || !$this->useTemporaryTables ) && $this->reuseDB ) {
-                       CloneDatabase::changePrefix( $this->dbPrefix() );
-                       $this->resetDB();
+               $tablesCloned = self::listTables( $db );
+               $dbClone = new CloneDatabase( $db, $tablesCloned, $prefix );
+               $dbClone->useTemporaryTables( self::$useTemporaryTables );
+
+               self::$dbSetup = true;
+               self::$oldTablePrefix = $wgDBprefix;
+
+               if ( ( $db->getType() == 'oracle' || !self::$useTemporaryTables ) && self::$reuseDB ) {
+                       CloneDatabase::changePrefix( $prefix );
                        return;
                } else {
                        $dbClone->cloneTableStructure();
                }
 
-               if ( $this->db->getType() == 'oracle' ) {
-                       $this->db->query( 'BEGIN FILL_WIKI_INFO; END;' );
+               if ( $db->getType() == 'oracle' ) {
+                       $db->query( 'BEGIN FILL_WIKI_INFO; END;' );
                }
        }
 
@@ -378,7 +442,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
        private function resetDB() {
                if( $this->db ) {
                        if ( $this->db->getType() == 'oracle' )  {
-                               if ( $this->useTemporaryTables ) {
+                               if ( self::$useTemporaryTables ) {
                                        wfGetLB()->closeAll();
                                        $this->db = wfGetDB( DB_MASTER );
                                } else {
@@ -427,16 +491,16 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                return strpos( $table, 'unittest_' ) !== 0;
        }
 
-       protected function listTables() {
+       public static function listTables( $db ) {
                global $wgDBprefix;
 
-               $tables = $this->db->listTables( $wgDBprefix, __METHOD__ );
+               $tables = $db->listTables( $wgDBprefix, __METHOD__ );
                $tables = array_map( array( __CLASS__, 'unprefixTable' ), $tables );
 
                // Don't duplicate test tables from the previous fataled run
                $tables = array_filter( $tables, array( __CLASS__, 'isNotUnittest' ) );
 
-               if ( $this->db->getType() == 'sqlite' ) {
+               if ( $db->getType() == 'sqlite' ) {
                        $tables = array_flip( $tables );
                        // these are subtables of searchindex and don't need to be duped/dropped separately
                        unset( $tables['searchindex_content'] );
@@ -746,4 +810,52 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                //        But frequently, this is used in fixture setup.
                throw new MWException( "No namespace defaults to wikitext!" );
        }
+
+       /**
+        * Check, if $wgDiff3 is set and ready to merge
+        * Will mark the calling test as skipped, if not ready
+        *
+        * @since 1.21
+        */
+       protected function checkHasDiff3() {
+               global $wgDiff3;
+
+               # This check may also protect against code injection in
+               # case of broken installations.
+               wfSuppressWarnings();
+               $haveDiff3 = $wgDiff3 && file_exists( $wgDiff3 );
+               wfRestoreWarnings();
+
+               if( !$haveDiff3 ) {
+                       $this->markTestSkipped( "Skip test, since diff3 is not configured" );
+               }
+       }
+
+       /**
+        * Asserts that an exception of the specified type occurs when running
+        * the provided code.
+        *
+        * @since 1.21
+        *
+        * @param callable $code
+        * @param string $expected
+        * @param string $message
+        */
+       protected function assertException( $code, $expected = 'Exception', $message = '' ) {
+               $pokemons = null;
+
+               try {
+                       call_user_func( $code );
+               }
+               catch ( Exception $pokemons ) {
+                       // Gotta Catch 'Em All!
+               }
+
+               if ( $message === '' ) {
+                       $message = 'An exception of type "' . $expected . '" should have been thrown';
+               }
+
+               $this->assertInstanceOf( $expected, $pokemons, $message );
+       }
+
 }
index b02b08a..36fde85 100644 (file)
@@ -356,25 +356,13 @@ hello
                return array_merge( $tests, $testsWithAdam, $testsWithBerta );
        }
 
-       function testHasValidDiff3() {
-               global $wgDiff3;
-
-               if ( !$wgDiff3 ) {
-                       $this->markTestSkipped( "Can't test conflict resolution because \$wgDiff3 is not configured" );
-               } elseif ( !file_exists( $wgDiff3 ) ) {
-                       #XXX: this sucks, since it uses arcane internal knowledge about TextContentHandler::merge3 and wfMerge.
-                       $this->markTestSkipped( "Can't test conflict resolution because \$wgDiff3 is misconfigured: can't find $wgDiff3" );
-               }
-               $this->assertTrue( true );
-       }
-
        /**
-        * @depend testHasValidDiff3
         * @dataProvider provideAutoMerge
         */
        public function testAutoMerge( $baseUser, $text, $adamsEdit, $bertasEdit,
                                $expectedCode, $expectedText, $message = null
        ) {
+               $this->checkHasDiff3();
 
                //create page
                $ns = $this->getDefaultWikitextNS();
index 7304bd9..0dc18a2 100644 (file)
@@ -498,6 +498,8 @@ class GlobalTest extends MediaWikiTestCase {
         * @dataProvider provideMerge()
         */
        public function testMerge( $old, $mine, $yours, $expectedMergeResult, $expectedText ) {
+               $this->checkHasDiff3();
+
                $mergedText = null;
                $isMerged = wfMerge( $old, $mine, $yours, $mergedText );
 
index 95a6cb0..65dd924 100644 (file)
@@ -73,7 +73,7 @@ class HtmlTest extends MediaWikiTestCase {
        }
 
        public function testExpandAttributesSkipsNullAndFalse() {
-               
+
                ### EMPTY ########
                $this->assertEmpty(
                        Html::expandAttributes( array( 'foo' => null ) ),
@@ -442,7 +442,7 @@ class HtmlTest extends MediaWikiTestCase {
        }
 
        /**
-        * Test out Html::element drops default value
+        * Test out Html::element drops or enforces default value
         * @cover Html::dropDefaults
         * @dataProvider provideElementsWithAttributesHavingDefaultValues
         */
@@ -461,15 +461,12 @@ class HtmlTest extends MediaWikiTestCase {
                        'area', array( 'shape' => 'rect' )
                );
 
-               $cases[] = array( '<button></button>',
+               $cases[] = array( '<button type=submit></button>',
                        'button', array( 'formaction' => 'GET' )
                );
-               $cases[] = array( '<button></button>',
+               $cases[] = array( '<button type=submit></button>',
                        'button', array( 'formenctype' => 'application/x-www-form-urlencoded' )
                );
-               $cases[] = array( '<button></button>',
-                       'button', array( 'type' => 'submit' )
-               );
 
                $cases[] = array( '<canvas></canvas>',
                        'canvas', array( 'height' => '150' )
@@ -560,6 +557,13 @@ class HtmlTest extends MediaWikiTestCase {
                        'input', array( 'type' => 'range', 'value' => '' ),
                );
 
+               # <button> specific handling
+               # see remarks on http://msdn.microsoft.com/en-us/library/ie/ms535211%28v=vs.85%29.aspx
+               $cases[] = array( '<button type=submit></button>',
+                       'button', array( 'type' => 'submit' ),
+                       'According to standard the default type is "submit". Depending on compatibility mode IE might use "button", instead.',
+               );
+
                # <select> specifc handling
                $cases[] = array( '<select multiple></select>',
                        'select', array( 'size' => '4', 'multiple' => true ),
index 9fc6f4d..eb8912d 100644 (file)
@@ -9,6 +9,7 @@ class LanguageConverterTest extends MediaWikiLangTestCase {
 
                $this->setMwGlobals( array(
                        'wgContLang' => Language::factory( 'tg' ),
+                       'wgLanguageCode' => 'tg',
                        'wgDefaultLanguageVariant' => false,
                        'wgMemc' => new EmptyBagOStuff,
                        'wgRequest' => new FauxRequest( array() ),
diff --git a/tests/phpunit/includes/LinkerTest.php b/tests/phpunit/includes/LinkerTest.php
new file mode 100644 (file)
index 0000000..4799dc0
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+
+class LinkerTest extends MediaWikiTestCase {
+
+       /**
+        * @dataProvider provideCasesForUserLink
+        * @cover Linker::userLink
+        */
+       function testUserLink( $expected, $userId, $userName, $altUserName = false, $msg='' ) {
+               $this->setMwGlobals( array(
+                       'wgArticlePath' => '/wiki/$1',
+               ) );
+
+               $this->assertEquals( $expected,
+                       Linker::userLink( $userId, $userName, $altUserName, $msg )
+               );
+       }
+
+       function provideCasesForUserLink() {
+               # Format:
+               # - expected
+               # - userid
+               # - username
+               # - optional altUserName
+               # - optional message
+               return array(
+
+                       ### ANONYMOUS USER ########################################
+                       array(
+                               '<a href="/wiki/Special:Contributions/JohnDoe" title="Special:Contributions/JohnDoe" class="mw-userlink">JohnDoe</a>',
+                               0, 'JohnDoe', false,
+                       ),
+                       array(
+                               '<a href="/wiki/Special:Contributions/::1" title="Special:Contributions/::1" class="mw-userlink">::1</a>',
+                               0, '::1', false,
+                               'Anonymous with pretty IPv6'
+                       ),
+                       array(
+                               '<a href="/wiki/Special:Contributions/0:0:0:0:0:0:0:1" title="Special:Contributions/0:0:0:0:0:0:0:1" class="mw-userlink">::1</a>',
+                               0, '0:0:0:0:0:0:0:1', false,
+                               'Anonymous with almost pretty IPv6'
+                       ),
+                       array(
+                               '<a href="/wiki/Special:Contributions/0000:0000:0000:0000:0000:0000:0000:0001" title="Special:Contributions/0000:0000:0000:0000:0000:0000:0000:0001" class="mw-userlink">::1</a>',
+                               0, '0000:0000:0000:0000:0000:0000:0000:0001', false,
+                               'Anonymous with full IPv6'
+                       ),
+                       array(
+                               '<a href="/wiki/Special:Contributions/::1" title="Special:Contributions/::1" class="mw-userlink">AlternativeUsername</a>',
+                               0, '::1', 'AlternativeUsername',
+                               'Anonymous with pretty IPv6 and an alternative username'
+                       ),
+
+                       # IPV4
+                       array(
+                               '<a href="/wiki/Special:Contributions/127.0.0.1" title="Special:Contributions/127.0.0.1" class="mw-userlink">127.0.0.1</a>',
+                               0, '127.0.0.1', false,
+                               'Anonymous with IPv4'
+                       ),
+                       array(
+                               '<a href="/wiki/Special:Contributions/127.0.0.1" title="Special:Contributions/127.0.0.1" class="mw-userlink">AlternativeUsername</a>',
+                               0, '127.0.0.1', 'AlternativeUsername',
+                               'Anonymous with IPv4 and an alternative username'
+                       ),
+
+                       ### Regular user ##########################################
+                       # TODO!
+               );
+       }
+}
index a1f808c..5b99628 100644 (file)
@@ -57,16 +57,18 @@ class RecentChangeTest extends MediaWikiTestCase {
         * @covers LogFormatter::getIRCActionText
         */
        function testIrcMsgForLogTypeBlock() {
+               $sep = $this->context->msg( 'colon-separator' )->text();
+
                # block/block
                $this->assertIRCComment(
-                       $this->context->msg( 'blocklogentry', 'SomeTitle' )->plain() . ': ' .  $this->user_comment,
+                       $this->context->msg( 'blocklogentry', 'SomeTitle' )->plain() . $sep .  $this->user_comment,
                        'block', 'block',
                        array(),
                        $this->user_comment
                );
                # block/unblock
                $this->assertIRCComment(
-                       $this->context->msg( 'unblocklogentry', 'SomeTitle' )->plain() . ': ' .  $this->user_comment,
+                       $this->context->msg( 'unblocklogentry', 'SomeTitle' )->plain() . $sep .  $this->user_comment,
                        'block', 'unblock',
                        array(),
                        $this->user_comment
@@ -77,9 +79,11 @@ class RecentChangeTest extends MediaWikiTestCase {
         * @covers LogFormatter::getIRCActionText
         */
        function testIrcMsgForLogTypeDelete() {
+               $sep = $this->context->msg( 'colon-separator' )->text();
+
                # delete/delete
                $this->assertIRCComment(
-                       $this->context->msg( 'deletedarticle', 'SomeTitle' )->plain() . ': ' .  $this->user_comment,
+                       $this->context->msg( 'deletedarticle', 'SomeTitle' )->plain() . $sep .  $this->user_comment,
                        'delete', 'delete',
                        array(),
                        $this->user_comment
@@ -87,7 +91,7 @@ class RecentChangeTest extends MediaWikiTestCase {
 
                # delete/restore
                $this->assertIRCComment(
-                       $this->context->msg( 'undeletedarticle', 'SomeTitle' )->plain() . ': ' .  $this->user_comment,
+                       $this->context->msg( 'undeletedarticle', 'SomeTitle' )->plain() . $sep .  $this->user_comment,
                        'delete', 'restore',
                        array(),
                        $this->user_comment
@@ -128,10 +132,11 @@ class RecentChangeTest extends MediaWikiTestCase {
                        '4::target'  => $this->target->getPrefixedText(),
                        '5::noredir' => 0,
                );
+               $sep = $this->context->msg( 'colon-separator' )->text();
 
                # move/move
                $this->assertIRCComment(
-                       $this->context->msg( '1movedto2', 'SomeTitle', 'TestTarget' )->plain() . ': ' .  $this->user_comment,
+                       $this->context->msg( '1movedto2', 'SomeTitle', 'TestTarget' )->plain() . $sep .  $this->user_comment,
                        'move', 'move',
                        $move_params,
                        $this->user_comment
@@ -139,7 +144,7 @@ class RecentChangeTest extends MediaWikiTestCase {
 
                # move/move_redir
                $this->assertIRCComment(
-                       $this->context->msg( '1movedto2_redir', 'SomeTitle', 'TestTarget' )->plain() . ': ' .  $this->user_comment,
+                       $this->context->msg( '1movedto2_redir', 'SomeTitle', 'TestTarget' )->plain() . $sep .  $this->user_comment,
                        'move', 'move_redir',
                        $move_params,
                        $this->user_comment
@@ -169,10 +174,11 @@ class RecentChangeTest extends MediaWikiTestCase {
                $protectParams = array(
                        '[edit=sysop] (indefinite) ‎[move=sysop] (indefinite)'
                );
+               $sep = $this->context->msg( 'colon-separator' )->text();
 
                # protect/protect
                $this->assertIRCComment(
-                       $this->context->msg( 'protectedarticle', 'SomeTitle ' . $protectParams[0] )->plain() . ': ' .  $this->user_comment,
+                       $this->context->msg( 'protectedarticle', 'SomeTitle ' . $protectParams[0] )->plain() . $sep .  $this->user_comment,
                        'protect', 'protect',
                        $protectParams,
                        $this->user_comment
@@ -180,7 +186,7 @@ class RecentChangeTest extends MediaWikiTestCase {
 
                # protect/unprotect
                $this->assertIRCComment(
-                       $this->context->msg( 'unprotectedarticle', 'SomeTitle' )->plain() . ': ' .  $this->user_comment,
+                       $this->context->msg( 'unprotectedarticle', 'SomeTitle' )->plain() . $sep .  $this->user_comment,
                        'protect', 'unprotect',
                        array(),
                        $this->user_comment
@@ -188,7 +194,7 @@ class RecentChangeTest extends MediaWikiTestCase {
 
                # protect/modify
                $this->assertIRCComment(
-                       $this->context->msg( 'modifiedarticleprotection', 'SomeTitle ' . $protectParams[0] )->plain() . ': ' .  $this->user_comment,
+                       $this->context->msg( 'modifiedarticleprotection', 'SomeTitle ' . $protectParams[0] )->plain() . $sep .  $this->user_comment,
                        'protect', 'modify',
                        $protectParams,
                        $this->user_comment
@@ -199,9 +205,11 @@ class RecentChangeTest extends MediaWikiTestCase {
         * @covers LogFormatter::getIRCActionText
         */
        function testIrcMsgForLogTypeUpload() {
+               $sep = $this->context->msg( 'colon-separator' )->text();
+
                # upload/upload
                $this->assertIRCComment(
-                       $this->context->msg( 'uploadedimage', 'SomeTitle' )->plain() . ': ' .  $this->user_comment,
+                       $this->context->msg( 'uploadedimage', 'SomeTitle' )->plain() . $sep .  $this->user_comment,
                        'upload', 'upload',
                        array(),
                        $this->user_comment
@@ -209,7 +217,7 @@ class RecentChangeTest extends MediaWikiTestCase {
 
                # upload/overwrite
                $this->assertIRCComment(
-                       $this->context->msg( 'overwroteimage', 'SomeTitle' )->plain() . ': ' .  $this->user_comment,
+                       $this->context->msg( 'overwroteimage', 'SomeTitle' )->plain() . $sep .  $this->user_comment,
                        'upload', 'overwrite',
                        array(),
                        $this->user_comment
index 00e7119..9cddbe8 100644 (file)
@@ -11,6 +11,7 @@ class RevisionTest extends MediaWikiTestCase {
 
                $this->setMwGlobals( array(
                        'wgContLang' => Language::factory( 'en' ),
+                       'wgLanguageCode' => 'en',
                        'wgLegacyEncoding' => false,
                        'wgCompressRevisions' => false,
 
index 2f55de4..45ea555 100644 (file)
@@ -15,6 +15,7 @@ class TestSample extends MediaWikiLangTestCase {
                // after each test.
                $this->setMwGlobals( array(
                        'wgContLang' => Language::factory( 'en' ),
+                       'wgLanguageCode' => 'en',
                ) );
        }
 
@@ -26,7 +27,7 @@ class TestSample extends MediaWikiLangTestCase {
        }
 
        /**
-        * Name tests so that PHPUnit can turn them into sentances when
+        * Name tests so that PHPUnit can turn them into sentences when
         * they run.  While MediaWiki isn't strictly an Agile Programming
         * project, you are encouraged to use the naming described under
         * "Agile Documentation" at
index dc672ba..012c49d 100644 (file)
@@ -5,8 +5,6 @@ class SanitizerTest extends MediaWikiTestCase {
        protected function setUp() {
                parent::setUp();
 
-               $this->setMwGlobals( 'wgCleanupPresentationalAttributes', true );
-
                AutoLoader::loadClass( 'Sanitizer' );
        }
 
@@ -64,6 +62,46 @@ class SanitizerTest extends MediaWikiTestCase {
                $this->assertEquals( UTF8_REPLACEMENT, Sanitizer::decodeCharReferences( "&#88888888888888;" ), 'Invalid numbered entity' );
        }
 
+       /**
+        * @cover Sanitizer::removeHTMLtags
+        * @dataProvider provideHtml5Tags
+        *
+        * @param String $tag Name of an HTML5 element (ie: 'video')
+        * @param Boolean $escaped Wheter sanitizer let the tag in or escape it (ie: '&lt;video&gt;')
+        */
+       function testRemovehtmltagsOnHtml5Tags( $tag, $escaped ) {
+               global $wgHtml5;
+
+               # Enable HTML5 mode
+               $save = $wgHtml5;
+               $wgHtml5 = true;
+
+               if( $escaped ) {
+                       $this->assertEquals( "&lt;$tag&gt;",
+                               Sanitizer::removeHTMLtags( "<$tag>" )
+                       );
+               } else {
+                       $this->assertEquals( "<$tag></$tag>\n",
+                               Sanitizer::removeHTMLtags( "<$tag>" )
+                       );
+               }
+               $wgHtml5 = $save;
+       }
+
+       /**
+        * Provide HTML5 tags
+        */
+       function provideHtml5Tags() {
+               $ESCAPED  = true; # We want tag to be escaped
+               $VERBATIM = false;  # We want to keep the tag
+               return array(
+                       array( 'data', $VERBATIM ),
+                       array( 'mark', $VERBATIM ),
+                       array( 'time', $VERBATIM ),
+                       array( 'video', $ESCAPED ),
+               );
+       }
+
        function testSelfClosingTag() {
                $GLOBALS['wgUseTidy'] = false;
                $this->assertEquals(
@@ -117,51 +155,24 @@ class SanitizerTest extends MediaWikiTestCase {
        /**
         * @dataProvider provideDeprecatedAttributes
         */
-       function testDeprecatedAttributes( $input, $tag, $expected, $message = null ) {
-               $this->assertEquals( $expected, Sanitizer::fixTagAttributes( $input, $tag ), $message );
-       }
-
-       function testDeprecatedAttributesDisabled() {
-               global $wgCleanupPresentationalAttributes;
-
-               $wgCleanupPresentationalAttributes = false;
+       function testDeprecatedAttributesUnaltered( $inputAttr, $inputEl ) {
 
-               $this->assertEquals( ' clear="left"', Sanitizer::fixTagAttributes( 'clear="left"', 'br' ), 'Deprecated attributes are not converted to styles when enabled.' );
+               $this->assertEquals( " $inputAttr", Sanitizer::fixTagAttributes( $inputAttr, $inputEl ) );
        }
 
        public static function provideDeprecatedAttributes() {
                return array(
-                       array( 'clear="left"', 'br', ' style="clear: left;"', 'Deprecated attributes are converted to styles when enabled.' ),
-                       array( 'clear="all"', 'br', ' style="clear: both;"', 'clear=all is converted to clear: both; not clear: all;' ),
-                       array( 'CLEAR="ALL"', 'br', ' style="clear: both;"', 'clear=ALL is not treated differently from clear=all' ),
-                       array( 'width="100"', 'td', ' style="width: 100px;"', 'Numeric sizes use pixels instead of numbers.' ),
-                       array( 'width="100%"', 'td', ' style="width: 100%;"', 'Units are allowed in sizes.' ),
-                       array( 'WIDTH="100%"', 'td', ' style="width: 100%;"', 'Uppercase WIDTH is treated as lowercase width.' ),
-                       array( 'WiDTh="100%"', 'td', ' style="width: 100%;"', 'Mixed case does not break WiDTh.' ),
-                       array( 'nowrap="true"', 'td', ' style="white-space: nowrap;"', 'nowrap attribute is output as white-space: nowrap; not something else.' ),
-                       array( 'nowrap=""', 'td', ' style="white-space: nowrap;"', 'nowrap="" is considered true, not false' ),
-                       array( 'NOWRAP="true"', 'td', ' style="white-space: nowrap;"', 'nowrap attribute works when uppercase.' ),
-                       array( 'NoWrAp="true"', 'td', ' style="white-space: nowrap;"', 'nowrap attribute works when mixed-case.' ),
-                       array( 'align="right"', 'td', ' style="text-align: right;"'   , 'align on table cells gets converted to text-align' ),
-                       array( 'align="center"', 'td', ' style="text-align: center;"' , 'align on table cells gets converted to text-align' ),
-                       array( 'align="left"'  , 'div', ' style="text-align: left;"'  , 'align=(left|right) on div elements gets converted to text-align' ),
-                       array( 'align="center"', 'div', ' style="text-align: center;"', 'align="center" on div elements gets converted to text-align' ),
-                       array( 'align="left"'  , 'p',   ' style="text-align: left;"'  , 'align on p elements gets converted to text-align' ),
-                       array( 'align="left"'  , 'h1',  ' style="text-align: left;"'  , 'align on h1 elements gets converted to text-align' ),
-                       array( 'align="left"'  , 'h1',  ' style="text-align: left;"'  , 'align on h1 elements gets converted to text-align' ),
-                       array( 'align="left"'  , 'caption',' style="text-align: left;"','align on caption elements gets converted to text-align' ),
-                       array( 'align="left"'  , 'tfoot',' style="text-align: left;"' , 'align on tfoot elements gets converted to text-align' ),
-                       array( 'align="left"'  , 'tbody',' style="text-align: left;"' , 'align on tbody elements gets converted to text-align' ),
-
-                       # <tr>
-                       array( 'align="right"' , 'tr', ' style="text-align: right;"' , 'align on table row get converted to text-align' ),
-                       array( 'align="center"', 'tr', ' style="text-align: center;"', 'align on table row get converted to text-align' ),
-                       array( 'align="left"'  , 'tr', ' style="text-align: left;"'  , 'align on table row get converted to text-align' ),
-
-                       #table
-                       array( 'align="left"'  , 'table', ' style="float: left;"'    , 'align on table converted to float' ),
-                       array( 'align="center"', 'table', ' style="margin-left: auto; margin-right: auto;"', 'align center on table converted to margins' ),
-                       array( 'align="right"' , 'table', ' style="float: right;"'   , 'align on table converted to float' ),
+                       array( 'clear="left"', 'br' ),
+                       array( 'clear="all"', 'br' ),
+                       array( 'width="100"', 'td' ),
+                       array( 'nowrap="true"', 'td' ),
+                       array( 'nowrap=""', 'td' ),
+                       array( 'align="right"', 'td' ),
+                       array( 'align="center"', 'table' ),
+                       array( 'align="left"', 'tr' ),
+                       array( 'align="center"', 'div' ),
+                       array( 'align="left"', 'h1' ),
+                       array( 'align="left"', 'span' ),
                );
        }
 
index db4162f..07ce84b 100644 (file)
@@ -7,6 +7,7 @@ class TimeAdjustTest extends MediaWikiLangTestCase {
                $this->setMwGlobals( array(
                        'wgLocalTZoffset' => null,
                        'wgContLang' => Language::factory( 'en' ),
+                       'wgLanguageCode' => 'en',
                ) );
 
                $this->iniSet( 'precision', 15 );
index c12fb22..d430827 100644 (file)
@@ -10,7 +10,7 @@
 class TitleMethodsTest extends MediaWikiTestCase {
 
        public function setup() {
-               global $wgExtraNamespaces, $wgNamespaceContentModels, $wgContLang;
+               global $wgContLang;
 
                parent::setUp();
 
index 55c5610..3a30b12 100644 (file)
@@ -30,6 +30,7 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
                $this->setMwGlobals( array(
                        'wgMemc' => new EmptyBagOStuff,
                        'wgContLang' => $langObj,
+                       'wgLanguageCode' => 'en',
                        'wgLang' => $langObj,
                        'wgLocaltimezone' => $localZone,
                        'wgLocalTZoffset' => $localOffset,
index fb20ce6..cc23d6d 100644 (file)
@@ -704,16 +704,7 @@ more stuff
 
        /* @todo FIXME: fix this!
        public function testGetUndoText() {
-               global $wgDiff3;
-
-               wfSuppressWarnings();
-               $haveDiff3 = $wgDiff3 && file_exists( $wgDiff3 );
-               wfRestoreWarnings();
-
-               if( !$haveDiff3 ) {
-                       $this->markTestSkipped( "diff3 not installed or not found" );
-                       return;
-               }
+               $this->checkHasDiff3();
 
                $text = "one";
                $page = $this->createPage( "WikiPageTest_testGetUndoText", $text );
index 624cf49..eaab300 100644 (file)
@@ -7,6 +7,7 @@
  *
  * @group API
  * @group Database
+ * @group medium
  */
 class ApiEditPageTest extends ApiTestCase {
 
@@ -196,4 +197,153 @@ class ApiEditPageTest extends ApiTestCase {
        function testUndo() {
                $this->markTestIncomplete( "not yet implemented" );
        }
+
+       function testEditConflict() {
+               static $count = 0;
+               $count++;
+
+               // assume NS_HELP defaults to wikitext
+               $name = "Help:ApiEditPageTest_testEditConflict_$count";
+               $title = Title::newFromText( $name );
+
+               $page = WikiPage::factory( $title );
+
+               // base edit
+               $page->doEditContent( new WikitextContent( "Foo" ),
+                       "testing 1", EDIT_NEW, false, self::$users['sysop']->user );
+               $this->forceRevisionDate( $page, '20120101000000' );
+               $baseTime = $page->getRevision()->getTimestamp();
+
+               // conflicting edit
+               $page->doEditContent( new WikitextContent( "Foo bar" ),
+                       "testing 2", EDIT_UPDATE, $page->getLatest(), self::$users['uploader']->user );
+               $this->forceRevisionDate( $page, '20120101020202' );
+
+               // try to save edit, expect conflict
+               try {
+                       list( $re,, ) = $this->doApiRequestWithToken( array(
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'nix bar!',
+                               'basetimestamp' => $baseTime,
+                               ), null, self::$users['sysop']->user );
+
+                       $this->fail( 'edit conflict expected' );
+               } catch ( UsageException $ex ) {
+                       $this->assertEquals( 'editconflict', $ex->getCodeString() );
+               }
+       }
+
+       function testEditConflict_redirect() {
+               static $count = 0;
+               $count++;
+
+               // assume NS_HELP defaults to wikitext
+               $name = "Help:ApiEditPageTest_testEditConflict_redirect_$count";
+               $title = Title::newFromText( $name );
+               $page = WikiPage::factory( $title );
+
+               $rname = "Help:ApiEditPageTest_testEditConflict_redirect_r$count";
+               $rtitle = Title::newFromText( $rname );
+               $rpage = WikiPage::factory( $rtitle );
+
+               // base edit for content
+               $page->doEditContent( new WikitextContent( "Foo" ),
+                       "testing 1", EDIT_NEW, false, self::$users['sysop']->user );
+               $this->forceRevisionDate( $page, '20120101000000' );
+               $baseTime = $page->getRevision()->getTimestamp();
+
+               // base edit for redirect
+               $rpage->doEditContent( new WikitextContent( "#REDIRECT [[$name]]" ),
+                       "testing 1", EDIT_NEW, false, self::$users['sysop']->user );
+               $this->forceRevisionDate( $rpage, '20120101000000' );
+
+               // conflicting edit to redirect
+               $rpage->doEditContent( new WikitextContent( "#REDIRECT [[$name]]\n\n[[Category:Test]]" ),
+                       "testing 2", EDIT_UPDATE, $page->getLatest(), self::$users['uploader']->user );
+               $this->forceRevisionDate( $rpage, '20120101020202' );
+
+               // try to save edit; should work, because we follow the redirect
+               list( $re,, ) = $this->doApiRequestWithToken( array(
+                       'action' => 'edit',
+                       'title' => $rname,
+                       'text' => 'nix bar!',
+                       'basetimestamp' => $baseTime,
+                       'redirect' => true,
+               ), null, self::$users['sysop']->user );
+
+               $this->assertEquals( 'Success', $re['edit']['result'],
+                       "no edit conflict expected when following redirect" );
+
+               // try again, without following the redirect. Should fail.
+               try {
+                       list( $re,, ) = $this->doApiRequestWithToken( array(
+                               'action' => 'edit',
+                               'title' => $rname,
+                               'text' => 'nix bar!',
+                               'basetimestamp' => $baseTime,
+                       ), null, self::$users['sysop']->user );
+
+                       $this->fail( 'edit conflict expected' );
+               } catch ( UsageException $ex ) {
+                       $this->assertEquals( 'editconflict', $ex->getCodeString() );
+               }
+       }
+
+       function testEditConflict_bug41990() {
+               static $count = 0;
+               $count++;
+
+               /*
+               * bug 41990: if the target page has a newer revision than the redirect, then editing the
+               * redirect while specifying 'redirect' and *not* specifying 'basetimestamp' erronously
+               * caused an edit conflict to be detected.
+               */
+
+               // assume NS_HELP defaults to wikitext
+               $name = "Help:ApiEditPageTest_testEditConflict_redirect_bug41990_$count";
+               $title = Title::newFromText( $name );
+               $page = WikiPage::factory( $title );
+
+               $rname = "Help:ApiEditPageTest_testEditConflict_redirect_bug41990_r$count";
+               $rtitle = Title::newFromText( $rname );
+               $rpage = WikiPage::factory( $rtitle );
+
+               // base edit for content
+               $page->doEditContent( new WikitextContent( "Foo" ),
+                       "testing 1", EDIT_NEW, false, self::$users['sysop']->user );
+               $this->forceRevisionDate( $page, '20120101000000' );
+
+               // base edit for redirect
+               $rpage->doEditContent( new WikitextContent( "#REDIRECT [[$name]]" ),
+                       "testing 1", EDIT_NEW, false, self::$users['sysop']->user );
+               $this->forceRevisionDate( $rpage, '20120101000000' );
+               $baseTime = $rpage->getRevision()->getTimestamp();
+
+               // new edit to content
+               $page->doEditContent( new WikitextContent( "Foo bar" ),
+                       "testing 2", EDIT_UPDATE, $page->getLatest(), self::$users['uploader']->user );
+               $this->forceRevisionDate( $rpage, '20120101020202' );
+
+               // try to save edit; should work, following the redirect.
+               list( $re,, ) = $this->doApiRequestWithToken( array(
+                       'action' => 'edit',
+                       'title' => $rname,
+                       'text' => 'nix bar!',
+                       'redirect' => true,
+               ), null, self::$users['sysop']->user );
+
+               $this->assertEquals( 'Success', $re['edit']['result'],
+                       "no edit conflict expected here" );
+       }
+
+       protected function forceRevisionDate( WikiPage $page, $timestamp ) {
+               $dbw = wfGetDB( DB_MASTER );
+
+               $dbw->update( 'revision',
+                       array( 'rev_timestamp' => $timestamp ),
+                       array( 'rev_id' => $page->getLatest() ) );
+
+               $page->clear();
+       }
 }
index 4684c55..5469ccf 100644 (file)
@@ -105,6 +105,9 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
                $this->fail( "UsageException was not thrown" );
        }
 
+       /**
+        * @group Broken
+        */
        public function testReset() {
                $this->mUserMock->expects( $this->once() )
                        ->method( 'resetOptions' );
@@ -122,6 +125,9 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
                $this->assertEquals( self::$Success, $response );
        }
 
+       /**
+        * @group Broken
+        */
        public function testOptionWithValue() {
                $this->mUserMock->expects( $this->never() )
                        ->method( 'resetOptions' );
@@ -140,6 +146,9 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
                $this->assertEquals( self::$Success, $response );
        }
 
+       /**
+        * @group Broken
+        */
        public function testOptionResetValue() {
                $this->mUserMock->expects( $this->never() )
                        ->method( 'resetOptions' );
@@ -157,6 +166,9 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
                $this->assertEquals( self::$Success, $response );
        }
 
+       /**
+        * @group Broken
+        */
        public function testChange() {
                $this->mUserMock->expects( $this->never() )
                        ->method( 'resetOptions' );
@@ -183,6 +195,9 @@ class ApiOptionsTest extends MediaWikiLangTestCase {
                $this->assertEquals( self::$Success, $response );
        }
 
+       /**
+        * @group Broken
+        */
        public function testResetChangeOption() {
                $this->mUserMock->expects( $this->once() )
                        ->method( 'resetOptions' );
diff --git a/tests/phpunit/includes/api/ApiQueryRevisionsTest.php b/tests/phpunit/includes/api/ApiQueryRevisionsTest.php
new file mode 100644 (file)
index 0000000..28dcb97
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @group API
+ * @group Database
+ */
+class ApiQueryRevisionsTest extends ApiTestCase {
+
+       /**
+        * @group medium
+        */
+       function testContentComesWithContentModelAndFormat() {
+
+               $pageName = 'Help:' . __METHOD__ ;
+               $title = Title::newFromText( $pageName );
+               $page = WikiPage::factory( $title );
+               $page->doEdit( 'Some text', 'inserting content' );
+
+               $apiResult = $this->doApiRequest( array(
+                       'action' => 'query',
+                       'prop' => 'revisions',
+                       'titles' => $pageName,
+                       'rvprop' => 'content',
+               ) );
+               $this->assertArrayHasKey( 'query', $apiResult[0] );
+               $this->assertArrayHasKey( 'pages', $apiResult[0]['query'] );
+               foreach( $apiResult[0]['query']['pages'] as $page ) {
+                       $this->assertArrayHasKey( 'revisions', $page );
+                       foreach( $page['revisions'] as $revision ) {
+                               $this->assertArrayHasKey( 'contentformat', $revision,
+                                       'contentformat should be included when asking content so'
+                                       . ' client knows how to interpretate it'
+                               );
+                               $this->assertArrayHasKey( 'contentmodel', $revision,
+                                       'contentmodel should be included when asking content so'
+                                       . ' client knows how to interpretate it'
+                               );
+                       }
+               }
+       }
+}
index 60baedc..73d0012 100644 (file)
@@ -233,8 +233,6 @@ class ContentHandlerTest extends MediaWikiTestCase {
         * @dataProvider dataMakeContent
         */
        public function testMakeContent( $data, $title, $modelId, $format, $expectedModelId, $expectedNativeData, $shouldFail ) {
-               global $wgExtraNamespaces, $wgNamespaceContentModels, $wgContentHandlers;
-
                $title = Title::newFromText( $title );
 
                try {
index 52e168b..dd03340 100644 (file)
@@ -5,7 +5,7 @@
  * @group Database
  *        ^--- needed, because we do need the database to test link updates
  */
-class TextContentTest extends MediaWikiTestCase {
+class TextContentTest extends MediaWikiLangTestCase {
        protected $context;
 
        protected function setUp() {
index d68c3e5..8121099 100644 (file)
@@ -103,16 +103,7 @@ class WikitextContentHandlerTest extends MediaWikiLangTestCase {
         * @dataProvider dataMerge3
         */
        public function testMerge3( $old, $mine, $yours, $expected ) {
-               global $wgDiff3;
-
-               if ( !$wgDiff3 ) {
-                       $this->markTestSkipped( "Can't test merge3(), since \$wgDiff3 is not configured" );
-               }
-
-               if ( !file_exists( $wgDiff3 ) ) {
-                       #XXX: this sucks, since it uses arcane internal knowledge about TextContentHandler::merge3 and wfMerge.
-                       $this->markTestSkipped( "Can't test merge3(), since \$wgDiff3 is misconfigured: can't find $wgDiff3" );
-               }
+               $this->checkHasDiff3();
 
                // test merge
                $oldContent = new WikitextContent( $old );
@@ -169,8 +160,6 @@ class WikitextContentHandlerTest extends MediaWikiLangTestCase {
         * @dataProvider dataGetAutosummary
         */
        public function testGetAutosummary( $old, $new, $flags, $expected ) {
-               global $wgLanguageCode, $wgContLang;
-
                $oldContent = is_null( $old ) ? null : new WikitextContent( $old );
                $newContent = is_null( $new ) ? null : new WikitextContent( $new );
 
index e33ae01..9739f4c 100644 (file)
@@ -78,10 +78,18 @@ class TestORMRowTest extends ORMRowTest {
                                test_stuff                 BLOB                NOT NULL,
                                test_moarstuff             BLOB                NOT NULL,
                                test_time                  varbinary(14)       NOT NULL
-                       );'
+                       );',
+                       __METHOD__
                );
        }
 
+       protected function tearDown() {
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->dropTable( 'orm_test', __METHOD__ );
+
+               parent::tearDown();
+       }
+
        public function constructorTestProvider() {
                return array(
                        array(
@@ -156,7 +164,7 @@ class TestORMTable extends ORMTable {
                        'awesome' => 'bool',
                        'stuff' => 'array',
                        'moarstuff' => 'blob',
-                       'time' => 'int', // TS_MW
+                       'time' => 'str', // TS_MW
                );
        }
 
index b6d44fd..7beb4fe 100644 (file)
@@ -585,6 +585,73 @@ class FileBackendTest extends MediaWikiTestCase {
                return $cases;
        }
 
+       /**
+        * @dataProvider provider_testDescribe
+        */
+       public function testDescribe( $op, $withSource, $okStatus ) {
+               $this->backend = $this->singleBackend;
+               $this->tearDownFiles();
+               $this->doTestDescribe( $op, $withSource, $okStatus );
+               $this->tearDownFiles();
+
+               $this->backend = $this->multiBackend;
+               $this->tearDownFiles();
+               $this->doTestDescribe( $op, $withSource, $okStatus );
+               $this->tearDownFiles();
+       }
+
+       private function doTestDescribe( $op, $withSource, $okStatus ) {
+               $backendName = $this->backendClass();
+
+               $source = $op['src'];
+               $this->prepare( array( 'dir' => dirname( $source ) ) );
+
+               if ( $withSource ) {
+                       $status = $this->backend->doOperation(
+                               array( 'op' => 'create', 'content' => 'blahblah', 'dst' => $source ) );
+                       $this->assertGoodStatus( $status,
+                               "Creation of file at $source succeeded ($backendName)." );
+               }
+
+               $status = $this->backend->doOperation( $op );
+               if ( $okStatus ) {
+                       $this->assertGoodStatus( $status,
+                               "Describe of file at $source succeeded without warnings ($backendName)." );
+                       $this->assertEquals( true, $status->isOK(),
+                               "Describe of file at $source succeeded ($backendName)." );
+                       $this->assertEquals( array( 0 => true ), $status->success,
+                               "Describe of file at $source has proper 'success' field in Status ($backendName)." );
+               } else {
+                       $this->assertEquals( false, $status->isOK(),
+                               "Describe of file at $source failed ($backendName)." );
+               }
+
+               $this->assertBackendPathsConsistent( array( $source ) );
+       }
+
+       public static function provider_testDescribe() {
+               $cases = array();
+
+               $source = self::baseStorePath() . '/unittest-cont1/e/myfacefile.txt';
+
+               $op = array( 'op' => 'describe', 'src' => $source,
+                       'headers' => array( 'X-Content-Length' => '91.3', 'Content-Old-Header' => '' ),
+                       'disposition' => 'inline' );
+               $cases[] = array(
+                       $op, // operation
+                       true, // with source
+                       true // succeeds
+               );
+
+               $cases[] = array(
+                       $op, // operation
+                       false, // without source
+                       false // fails
+               );
+
+               return $cases;
+       }
+
        /**
         * @dataProvider provider_testCreate
         */
@@ -1289,6 +1356,8 @@ class FileBackendTest extends MediaWikiTestCase {
 
                $base = self::baseStorePath();
                $dirs = array(
+                       "$base/unittest-cont1",
+                       "$base/unittest-cont1/e",
                        "$base/unittest-cont1/e/a",
                        "$base/unittest-cont1/e/a/b",
                        "$base/unittest-cont1/e/a/b/c",
@@ -1360,6 +1429,8 @@ class FileBackendTest extends MediaWikiTestCase {
                $this->prepare( array( 'dir' => dirname( $fileD ) ) );
 
                $status = $this->backend->doOperations( array(
+                       array( 'op' => 'describe', 'src' => $fileA,
+                               'headers' => array( 'X-Content-Length' => '91.3' ), 'disposition' => 'inline' ),
                        array( 'op' => 'copy', 'src' => $fileA, 'dst' => $fileC, 'overwrite' => 1 ),
                        // Now: A:<A>, B:<B>, C:<A>, D:<empty> (file:<orginal contents>)
                        array( 'op' => 'copy', 'src' => $fileC, 'dst' => $fileA, 'overwriteSame' => 1 ),
@@ -1390,7 +1461,7 @@ class FileBackendTest extends MediaWikiTestCase {
 
                $this->assertGoodStatus( $status, "Operation batch succeeded" );
                $this->assertEquals( true, $status->isOK(), "Operation batch succeeded" );
-               $this->assertEquals( 13, count( $status->success ),
+               $this->assertEquals( 14, count( $status->success ),
                        "Operation batch has correct success array" );
 
                $this->assertEquals( false, $this->backend->fileExists( array( 'src' => $fileA ) ),
@@ -2022,6 +2093,8 @@ class FileBackendTest extends MediaWikiTestCase {
                        foreach ( $iter as $file ) {
                                $this->backend->quickDelete( array( 'src' => "$base/$container/$file" ) );
                        }
+                       // free the directory, to avoid Permission denied under windows on rmdir
+                       unset( $iter );
                }
                $this->backend->clean( array( 'dir' => "$base/$container", 'recursive' => 1 ) );
        }
diff --git a/tests/phpunit/includes/mobile/DeviceDetectionTest.php b/tests/phpunit/includes/mobile/DeviceDetectionTest.php
deleted file mode 100644 (file)
index 2588691..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?php
-
-/**
- * @group Mobile
- */
- class DeviceDetectionTest extends MediaWikiTestCase {
-
-       /**
-        * @dataProvider provideTestFormatName
-        */
-       public function testFormatName( $format, $userAgent ) {
-               $detector = new DeviceDetection();
-               $this->assertEquals( $format, $detector->detectFormatName( $userAgent ) );
-       }
-
-       public static function provideTestFormatName() {
-               return array(
-                       array( 'android',   'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' ),
-                       array( 'iphone2',   'Mozilla/5.0 (ipod: U;CPU iPhone OS 2_2 like Mac OS X: es_es) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3' ),
-                       array( 'iphone',    'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3' ),
-                       array( 'nokia',     'Mozilla/5.0 (SymbianOS/9.1; U; [en]; SymbianOS/91 Series60/3.0) AppleWebKit/413 (KHTML, like Gecko) Safari/413' ),
-                       array( 'palm_pre',  'Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0' ),
-                       array( 'wii',       'Opera/9.00 (Nintendo Wii; U; ; 1309-9; en)' ),
-                       array( 'operamini', 'Opera/9.50 (J2ME/MIDP; Opera Mini/4.0.10031/298; U; en)' ),
-                       array( 'operamobile',    'Opera/9.51 Beta (Microsoft Windows; PPC; Opera Mobi/1718; U; en)' ),
-                       array( 'kindle',    'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)' ),
-                       array( 'kindle2',   'Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 824x1200; rotate)' ),
-                       array( 'capable',   'Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1' ),
-                       array( 'netfront',  'Mozilla/4.08 (Windows; Mobile Content Viewer/1.0) NetFront/3.2' ),
-                       array( 'wap2',      'SonyEricssonK608i/R2L/SN356841000828910 Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1' ),
-                       array( 'wap2',      'NokiaN73-2/3.0-630.0.2 Series60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' ),
-                       array( 'psp',       'Mozilla/4.0 (PSP (PlayStation Portable); 2.00)' ),
-                       array( 'ps3',       'Mozilla/5.0 (PLAYSTATION 3; 1.00)' ),
-                       array( 'ie', 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)' ),
-                       array( 'ie', 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)' ),
-                       array( 'blackberry', 'BlackBerry9300/5.0.0.716 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/133' ),
-                       array( 'blackberry-lt5', 'BlackBerry7250/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1' ),
-               );
-       }
-}
index 611a45a..5f670fc 100644 (file)
@@ -33,7 +33,10 @@ class MagicVariableTest extends MediaWikiTestCase {
                parent::setUp();
 
                $contLang = Language::factory( 'en' );
-               $this->setMwGlobals( 'wgContLang', $contLang );
+               $this->setMwGlobals( array(
+                       'wgLanguageCode' => 'en',
+                       'wgContLang' => $contLang,
+               ) );
 
                $this->testParser = new Parser();
                $this->testParser->Options( ParserOptions::newFromUserAndLang( new User, $contLang ) );
@@ -78,7 +81,7 @@ class MagicVariableTest extends MediaWikiTestCase {
        function testLocaldaytwoIsZeroPadded( $day ) {
                $this->assertZeroPadded( 'localday2', $day );
        }
-       
+
        # month
 
        /** @dataProvider MediaWikiProvide::Months */
@@ -109,7 +112,7 @@ class MagicVariableTest extends MediaWikiTestCase {
        function testRevisiondaytwoIsZeroPadded( $day ) {
                $this->assertZeroPadded( 'revisionday2', $day );
        }
-       
+
        # revision month
 
        /** @dataProvider MediaWikiProvide::Months */
@@ -153,26 +156,26 @@ class MagicVariableTest extends MediaWikiTestCase {
 
        /**
         * Main assertion helper for magic variables padding
-        * @param $magic string Magic variable name 
+        * @param $magic string Magic variable name
         * @param $value mixed Month or day
-        * @param $format string sprintf format for $value 
+        * @param $format string sprintf format for $value
         */
        private function assertMagicPadding( $magic, $value, $format ) {
                # Initialize parser timestamp as year 2010 at 12h34 56s.
                # month and day are given by the caller ($value). Month < 12!
                if( $value > 12 ) { $month = $value % 12; }
                else { $month = $value; }
-       
+
                $this->setParserTS(
                        sprintf( '2010%02d%02d123456', $month, $value )
                );
 
-               # please keep the following commented line of code. It helps debugging. 
+               # please keep the following commented line of code. It helps debugging.
                //print "\nDEBUG (value $value):" . sprintf( '2010%02d%02d123456', $value, $value ) . "\n";
 
                # format expectation and test it
                $expected = sprintf( $format, $value );
-               $this->assertMagic( $expected, $magic ); 
+               $this->assertMagic( $expected, $magic );
        }
 
        /** helper to set the parser timestamp and revision timestamp */
index 804726b..3476ce3 100644 (file)
@@ -32,8 +32,11 @@ class NewParserTest extends MediaWikiTestCase {
        protected $file = false;
 
        protected function setUp() {
-               global $wgContLang, $wgNamespaceProtection, $wgNamespaceAliases;
+               global $wgContLang, $wgLanguageCode;
+               global $wgNamespaceProtection, $wgNamespaceAliases;
                global $wgHooks, $IP;
+
+               $wgLanguageCode = 'en';
                $wgContLang = Language::factory( 'en' );
 
                //Setup CLI arguments
@@ -326,7 +329,6 @@ class NewParserTest extends MediaWikiTestCase {
                        'wgExternalLinkTarget' => false,
                        'wgAlwaysUseTidy' => false,
                        'wgHtml5' => true,
-                       'wgCleanupPresentationalAttributes' => true,
                        'wgWellFormedXml' => true,
                        'wgAllowMicrodataAttributes' => true,
                        'wgAdaptiveMessageCache' => true,
@@ -466,6 +468,16 @@ class NewParserTest extends MediaWikiTestCase {
                                "$base/local-thumb/3/3a/Foobar.jpg/200px-Foobar.jpg",
                                "$base/local-thumb/3/3a/Foobar.jpg/640px-Foobar.jpg",
                                "$base/local-thumb/3/3a/Foobar.jpg/120px-Foobar.jpg",
+                               "$base/local-thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg",
+                               "$base/local-thumb/3/3a/Foobar.jpg/20px-Foobar.jpg",
+                               "$base/local-thumb/3/3a/Foobar.jpg/270px-Foobar.jpg",
+                               "$base/local-thumb/3/3a/Foobar.jpg/300px-Foobar.jpg",
+                               "$base/local-thumb/3/3a/Foobar.jpg/30px-Foobar.jpg",
+                               "$base/local-thumb/3/3a/Foobar.jpg/360px-Foobar.jpg",
+                               "$base/local-thumb/3/3a/Foobar.jpg/400px-Foobar.jpg",
+                               "$base/local-thumb/3/3a/Foobar.jpg/40px-Foobar.jpg",
+                               "$base/local-thumb/3/3a/Foobar.jpg/70px-Foobar.jpg",
+                               "$base/local-thumb/3/3a/Foobar.jpg/960px-Foobar.jpg",
 
                                "$base/local-public/0/09/Bad.jpg",
                                "$base/local-thumb/0/09/Bad.jpg",
index 395e1a0..511166a 100644 (file)
@@ -4,7 +4,7 @@
  * @group Search
  * @group Database
  */
-class SearchEngineTest extends MediaWikiTestCase {
+class SearchEngineTest extends MediaWikiLangTestCase {
        protected $search, $pageList;
 
        /**
@@ -13,6 +13,7 @@ class SearchEngineTest extends MediaWikiTestCase {
         */
        protected function setUp() {
                parent::setUp();
+
                // Search tests require MySQL or SQLite with FTS
                # Get database type and version
                $dbType = $this->db->getType();
index c66df69..94ccfd0 100644 (file)
@@ -1078,5 +1078,37 @@ class LanguageTest extends LanguageClassesTestCase {
                        ) ),
                );
        }
+
+       /**
+        * @covers Language::translateBlockExpiry()
+        * @dataProvider provideTranslateBlockExpiry
+        */
+       function testTranslateBlockExpiry( $expectedData, $str, $desc ) {
+               $lang = $this->getLang();
+               if ( is_array( $expectedData ) ) {
+                       list( $func, $arg ) = $expectedData;
+                       $expected = $lang->$func( $arg );
+               } else {
+                       $expected = $expectedData;
+               }
+               $this->assertEquals( $expected, $lang->translateBlockExpiry( $str ), $desc );
+       }
+
+       function provideTranslateBlockExpiry() {
+               return array(
+                       array( '2 hours', '2 hours', 'simple data from ipboptions' ),
+                       array( 'indefinite', 'infinite', 'infinite from ipboptions' ),
+                       array( 'indefinite', 'infinity', 'alternative infinite from ipboptions' ),
+                       array( 'indefinite', 'indefinite', 'another alternative infinite from ipboptions' ),
+                       array( array( 'formatDuration', 1023 * 60 * 60 ), '1023 hours', 'relative' ),
+                       array( array( 'formatDuration', -1023 ), '-1023 seconds', 'negative relative' ),
+                       array( array( 'formatDuration', 0 ), 'now', 'now' ),
+                       array( array( 'timeanddate', '20120102070000' ), '2012-1-1 7:00 +1 day', 'mixed, handled as absolute' ),
+                       array( array( 'timeanddate', '19910203040506' ), '1991-2-3 4:05:06', 'absolute' ),
+                       array( array( 'timeanddate', '19700101000000' ), '1970-1-1 0:00:00', 'absolute at epoch' ),
+                       array( array( 'timeanddate', '19691231235959' ), '1969-12-31 23:59:59', 'time before epoch' ),
+                       array( 'dummy', 'dummy', 'return garbage as is' ),
+               );
+       }
 }
 
index 4fe6770..2990de2 100644 (file)
                $el.byteLimit();
        });
 
+       QUnit.test( 'Trim from insertion when limit exceeded', 2, function ( assert ) {
+               var $el;
+
+               // Use a new <input /> because the bug only occurs on the first time
+               // the limit it reached (bug 40850)
+               $el = $( '<input type="text"/>' )
+                       .appendTo( '#qunit-fixture' )
+                       .byteLimit( 3 )
+                       .val( 'abc' ).trigger( 'change' )
+                       .val( 'zabc' ).trigger( 'change' );
+
+               assert.strictEqual( $el.val(), 'abc', 'Trim from the insertion point (at 0), not the end' );
+
+               $el = $( '<input type="text"/>' )
+                       .appendTo( '#qunit-fixture' )
+                       .byteLimit( 3 )
+                       .val( 'abc' ).trigger( 'change' )
+                       .val( 'azbc' ).trigger( 'change' );
+
+               assert.strictEqual( $el.val(), 'abc', 'Trim from the insertion point (at 1), not the end' );
+       });
+
 }( jQuery, mediaWiki ) );
index b04a213..0000f0c 100644 (file)
                );
        } );
 
+       // Sorting with colspans
+       header = [ 'column1a' , 'column1b', 'column1c', 'column2' ];
+       var
+               aaa1 = [ 'A', 'A', 'A', '1' ],
+               aab5 = [ 'A', 'A', 'B', '5' ],
+               abc3 = [ 'A', 'B', 'C', '3' ],
+               bbc2 = [ 'B', 'B', 'C', '2' ],
+               caa4 = [ 'C', 'A', 'A', '4' ];
+       // initial is already declared above
+       initial = [ aab5, aaa1, abc3, bbc2, caa4 ];
+       tableTest( 'Sorting with colspanned headers: spanned column',
+               header,
+               initial,
+               [ aaa1, aab5, abc3, bbc2, caa4 ],
+               function ( $table ) {
+                       // Make colspanned header for test
+                       $table.find( 'tr:eq(0) th:eq(1), tr:eq(0) th:eq(2)' ).remove();
+                       $table.find( 'tr:eq(0) th:eq(0)' ).prop( 'colspan', '3' );
+
+                       $table.tablesorter();
+                       $table.find( '.headerSort:eq(0)' ).click();
+               }
+       );
+       tableTest( 'Sorting with colspanned headers: subsequent column',
+               header,
+               initial,
+               [ aaa1, bbc2, abc3, caa4, aab5 ],
+               function ( $table ) {
+                       // Make colspanned header for test
+                       $table.find( 'tr:eq(0) th:eq(1), tr:eq(0) th:eq(2)' ).remove();
+                       $table.find( 'tr:eq(0) th:eq(0)' ).prop( 'colspan', '3' );
+
+                       $table.tablesorter();
+                       $table.find( '.headerSort:eq(1)' ).click();
+               }
+       );
+
        // Regression tests!
        tableTest(
                'Bug 28775: German-style (dmy) short numeric dates',
                }
        );
 
+       QUnit.test( 'Rowspan not exploded on init', 1, function ( assert ) {
+               var $table = tableCreate( header, planets );
+
+               // Modify the table to have a multiple-row-spanning cell:
+               // - Remove 2nd cell of 4th row, and, 2nd cell or 5th row.
+               $table.find( 'tr:eq(3) td:eq(1), tr:eq(4) td:eq(1)' ).remove();
+               // - Set rowspan for 2nd cell of 3rd row to 3.
+               //   This covers the removed cell in the 4th and 5th row.
+               $table.find( 'tr:eq(2) td:eq(1)' ).prop( 'rowspan', '3' );
+
+               $table.tablesorter();
+
+               assert.equal(
+                       $table.find( 'tr:eq(2) td:eq(1)' ).prop( 'rowspan' ),
+                       3,
+                       'Rowspan not exploded'
+               );
+       });
+
        var planetsRowspan = [ [ 'Earth', '6051.8' ], jupiter, [ 'Mars', '6051.8' ], mercury, saturn, venus ];
        var planetsRowspanII = [ jupiter, mercury, saturn, venus, [ 'Venus', '6371.0' ], [ 'Venus', '3390.0' ] ];
 
                        '</table>'
                );
                $table.tablesorter();
+               $table.find( '.headerSort:eq(0)' ).click();
 
                assert.equal(
                        $table.data( 'tablesorter' ).config.parsers[0].id,
index 9286558..dc7bd0a 100644 (file)
@@ -277,15 +277,25 @@ QUnit.asyncTest( 'mw.loader.implement( styles={ "url": { <media>: [url, ..] } }
        mw.loader.implement(
                'test.implement.b',
                function () {
+                       // Note: QUnit.start() must only be called when the entire test is
+                       // complete. So, make sure that we don't start until *both*
+                       // assertStyleAsync calls have completed.
+                       var pending = 2;
                        assertStyleAsync( assert, $element2, 'float', 'left', function () {
                                assert.notEqual( $element1.css( 'text-align' ), 'center', 'print style is not applied' );
 
-                               QUnit.start();
+                               pending--;
+                               if ( pending === 0 ) {
+                                       QUnit.start();
+                               }
                        } );
                        assertStyleAsync( assert, $element3, 'float', 'right', function () {
                                assert.notEqual( $element1.css( 'text-align' ), 'center', 'print style is not applied' );
 
-                               QUnit.start();
+                               pending--;
+                               if ( pending === 0 ) {
+                                       QUnit.start();
+                               }
                        } );
                },
                {
index 15fbf07..f59ee0f 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -35,7 +35,7 @@ if ( defined( 'THUMB_HANDLER' ) ) {
        // Called from thumb_handler.php via 404; extract params from the URI...
        wfThumbHandle404();
 } else {
-       // Called directly, use $_REQUEST params
+       // Called directly, use $_GET params
        wfThumbHandleRequest();
 }
 
@@ -50,8 +50,8 @@ wfLogProfilingData();
  */
 function wfThumbHandleRequest() {
        $params = get_magic_quotes_gpc()
-               ? array_map( 'stripslashes', $_REQUEST )
-               : $_REQUEST;
+               ? array_map( 'stripslashes', $_GET )
+               : $_GET;
 
        wfStreamThumb( $params ); // stream the thumbnail
 }
@@ -91,6 +91,7 @@ function wfThumbHandle404() {
  */
 function wfStreamThumb( array $params ) {
        global $wgVaryOnXFP;
+
        wfProfileIn( __METHOD__ );
 
        $headers = array(); // HTTP headers to send
@@ -172,9 +173,7 @@ function wfStreamThumb( array $params ) {
                wfThumbError( 404, 'The source file for the specified thumbnail does not exist.' );
                wfProfileOut( __METHOD__ );
                return;
-       }
-       $sourcePath = $img->getPath();
-       if ( $sourcePath === false ) {
+       } elseif ( $img->getPath() === false ) {
                wfThumbError( 500, 'The source file is not locally accessible.' );
                wfProfileOut( __METHOD__ );
                return;
@@ -189,74 +188,75 @@ function wfStreamThumb( array $params ) {
                wfSuppressWarnings();
                $imsUnix = strtotime( $imsString );
                wfRestoreWarnings();
-               $sourceTsUnix = wfTimestamp( TS_UNIX, $img->getTimestamp() );
-               if ( $sourceTsUnix <= $imsUnix ) {
+               if ( wfTimestamp( TS_UNIX, $img->getTimestamp() ) <= $imsUnix ) {
                        header( 'HTTP/1.1 304 Not Modified' );
                        wfProfileOut( __METHOD__ );
                        return;
                }
        }
 
-       $thumbName = $img->thumbName( $params );
-       if ( !strlen( $thumbName ) ) { // invalid params?
-               wfThumbError( 400, 'The specified thumbnail parameters are not valid.' );
+       // Get the normalized thumbnail name from the parameters...
+       try {
+               $thumbName = $img->thumbName( $params );
+               if ( !strlen( $thumbName ) ) { // invalid params?
+                       wfThumbError( 400, 'The specified thumbnail parameters are not valid.' );
+                       wfProfileOut( __METHOD__ );
+                       return;
+               }
+               $thumbName2 = $img->thumbName( $params, File::THUMB_FULL_NAME ); // b/c; "long" style
+       } catch ( MWException $e ) {
+               wfThumbError( 500, $e->getHTML() );
                wfProfileOut( __METHOD__ );
                return;
        }
 
-       $disposition = $img->getThumbDisposition( $thumbName );
-       $headers[] = "Content-Disposition: $disposition";
-
-       // Stream the file if it exists already...
-       try {
-               $thumbName2 = $img->thumbName( $params, File::THUMB_FULL_NAME ); // b/c; "long" style
-               // For 404 handled thumbnails, we only use the the base name of the URI
-               // for the thumb params and the parent directory for the source file name.
-               // Check that the zone relative path matches up so squid caches won't pick
-               // up thumbs that would not be purged on source file deletion (bug 34231).
-               if ( isset( $params['rel404'] ) ) { // thumbnail was handled via 404
-                       if ( urldecode( $params['rel404'] ) === $img->getThumbRel( $thumbName ) ) {
-                               // Request for the canonical thumbnail name
-                       } elseif ( urldecode( $params['rel404'] ) === $img->getThumbRel( $thumbName2 ) ) {
-                               // Request for the "long" thumbnail name; redirect to canonical name
-                               $response = RequestContext::getMain()->getRequest()->response();
-                               $response->header( "HTTP/1.1 301 " . HttpStatus::getMessage( 301 ) );
-                               $response->header( 'Location: ' . wfExpandUrl( $img->getThumbUrl( $thumbName ), PROTO_CURRENT ) );
-                               $response->header( 'Expires: ' .
-                                       gmdate( 'D, d M Y H:i:s', time() + 7*86400 ) . ' GMT' );
-                               if ( $wgVaryOnXFP ) {
-                                       $varyHeader[] = 'X-Forwarded-Proto';
-                               }
-                               if ( count( $varyHeader ) ) {
-                                       $response->header( 'Vary: ' . implode( ', ', $varyHeader ) );
-                               }
-                               wfProfileOut( __METHOD__ );
-                               return;
-                       } else {
-                               wfThumbError( 404, 'The given path of the specified thumbnail is incorrect.' );
-                               wfProfileOut( __METHOD__ );
-                               return;
+       // For 404 handled thumbnails, we only use the the base name of the URI
+       // for the thumb params and the parent directory for the source file name.
+       // Check that the zone relative path matches up so squid caches won't pick
+       // up thumbs that would not be purged on source file deletion (bug 34231).
+       if ( isset( $params['rel404'] ) ) { // thumbnail was handled via 404
+               if ( rawurldecode( $params['rel404'] ) === $img->getThumbRel( $thumbName ) ) {
+                       // Request for the canonical thumbnail name
+               } elseif ( rawurldecode( $params['rel404'] ) === $img->getThumbRel( $thumbName2 ) ) {
+                       // Request for the "long" thumbnail name; redirect to canonical name
+                       $response = RequestContext::getMain()->getRequest()->response();
+                       $response->header( "HTTP/1.1 301 " . HttpStatus::getMessage( 301 ) );
+                       $response->header( 'Location: ' .
+                               wfExpandUrl( $img->getThumbUrl( $thumbName ), PROTO_CURRENT ) );
+                       $response->header( 'Expires: ' .
+                               gmdate( 'D, d M Y H:i:s', time() + 7*86400 ) . ' GMT' );
+                       if ( $wgVaryOnXFP ) {
+                               $varyHeader[] = 'X-Forwarded-Proto';
                        }
-               }
-               $thumbPath = $img->getThumbPath( $thumbName );
-               if ( $img->getRepo()->fileExists( $thumbPath ) ) {
                        if ( count( $varyHeader ) ) {
-                               $headers[] = 'Vary: ' . implode( ', ', $varyHeader );
+                               $response->header( 'Vary: ' . implode( ', ', $varyHeader ) );
                        }
-                       $img->getRepo()->streamFile( $thumbPath, $headers );
+                       wfProfileOut( __METHOD__ );
+                       return;
+               } else {
+                       wfThumbError( 404, "The given path of the specified thumbnail is incorrect;
+                               expected '" . $img->getThumbRel( $thumbName ) . "' but got '" .
+                               rawurldecode( $params['rel404'] ) . "'." );
                        wfProfileOut( __METHOD__ );
                        return;
                }
-       } catch ( MWException $e ) {
-               wfThumbError( 500, $e->getHTML() );
-               wfProfileOut( __METHOD__ );
-               return;
        }
 
+       // Suggest a good name for users downloading this thumbnail
+       $headers[] = "Content-Disposition: {$img->getThumbDisposition( $thumbName )}";
+
        if ( count( $varyHeader ) ) {
                $headers[] = 'Vary: ' . implode( ', ', $varyHeader );
        }
 
+       // Stream the file if it exists already...
+       $thumbPath = $img->getThumbPath( $thumbName );
+       if ( $img->getRepo()->fileExists( $thumbPath ) ) {
+               $img->getRepo()->streamFile( $thumbPath, $headers );
+               wfProfileOut( __METHOD__ );
+               return;
+       }
+
        // Thumbnail isn't already there, so create the new thumbnail...
        try {
                $thumb = $img->transform( $params, File::RENDER_NOW );